Skip to content

Commit

Permalink
Remove uneeded code and ARIA attributes.
Browse files Browse the repository at this point in the history
  • Loading branch information
ADmad committed Nov 16, 2024
1 parent c73af02 commit ffcf743
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 170 deletions.
106 changes: 3 additions & 103 deletions src/View/Helper/FormHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -146,15 +146,6 @@ class FormHelper extends CoreFormHelper
'<span data-bs-toggle="tooltip" title="{{content}}" class="bi bi-info-circle-fill"></span>',
'formGroupFloatingLabel' =>
'{{input}}{{label}}',
'datetimeContainer' =>
'<div{{containerAttrs}} ' .
'class="{{containerClass}}form-group {{type}}{{required}}">{{content}}{{help}}</div>',
'datetimeContainerError' =>
'<div{{containerAttrs}} ' .
'class="{{containerClass}}form-group {{formGroupPosition}}{{type}}{{required}} is-invalid">' .
'{{content}}{{error}}{{help}}</div>',
'datetimeLabel' =>
'<label{{attrs}}>{{text}}{{tooltip}}</label>',
'inputContainer' =>
'<div{{containerAttrs}} ' .
'class="{{containerClass}}form-group {{type}}{{required}}">{{content}}{{help}}</div>',
Expand Down Expand Up @@ -242,16 +233,6 @@ class FormHelper extends CoreFormHelper
'<div{{containerAttrs}} ' .
'class="{{containerClass}}form-check{{variant}} ' .
'{{formGroupPosition}}{{type}}{{required}} is-invalid">{{content}}{{error}}{{help}}</div>',
'datetimeContainer' =>
'<div{{containerAttrs}} ' .
'class="{{containerClass}}form-group {{formGroupPosition}}{{type}}{{required}}">' .
'{{content}}{{help}}</div>',
'datetimeContainerError' =>
'<div{{containerAttrs}} ' .
'class="{{containerClass}}form-group {{formGroupPosition}}{{type}}{{required}} is-invalid">' .
'{{content}}{{error}}{{help}}</div>',
'datetimeLabel' =>
'<label{{attrs}}>{{text}}{{tooltip}}</label>',
'radioContainer' =>
'<div{{containerAttrs}} ' .
'class="{{containerClass}}form-group {{formGroupPosition}}{{type}}{{required}}" role="group" ' .
Expand Down Expand Up @@ -287,15 +268,6 @@ class FormHelper extends CoreFormHelper
'<div class="%s form-floating">{{input}}{{label}}{{error}}{{help}}</div>',
'checkboxFormGroup' =>
'<div class="%s"><div class="form-check{{variant}}">{{input}}{{label}}{{error}}{{help}}</div></div>',
'datetimeContainer' =>
'<div{{containerAttrs}} ' .
'class="{{containerClass}}form-group row {{type}}{{required}}">{{content}}</div>',
'datetimeContainerError' =>
'<div{{containerAttrs}} ' .
'class="{{containerClass}}form-group row {{formGroupPosition}}{{type}}{{required}} is-invalid">' .
'{{content}}</div>',
'datetimeLabel' =>
'<label{{attrs}}>{{text}}{{tooltip}}</label>',
'checkboxInlineFormGroup' =>
'<div class="%s"><div class="form-check{{variant}} form-check-inline">{{input}}{{label}}</div></div>',
'submitContainer' =>
Expand Down Expand Up @@ -426,28 +398,6 @@ public function error(string $field, array|string|null $text = null, array $opti
return $error;
}

/**
* @inheritDoc
*/
public function formatTemplate(string $name, array $data): string
{
// Injects the `id` attribute value for the error template.
// This is done for backwards compatibility reasons, as the
// core form helper only introduced this behavior with
// CakePHP 4.3. This can be removed once the required minimum
// CakePHP version is bumped accordingly.

if (
$name === 'error' &&
!isset($data['id']) &&
$this->_errorFieldName !== null
) {
$data['id'] = $this->_domId($this->_errorFieldName . '-error');
}

return parent::formatTemplate($name, $data);
}

/**
* @inheritDoc
*/
Expand Down Expand Up @@ -548,13 +498,6 @@ public function control(string $fieldName, array $options = []): string
}

switch ($options['type']) {
case 'datetime-local':
case 'datetime':
case 'date':
case 'time':
$options = $this->_dateTimeOptions($fieldName, $options);
break;

case 'checkbox':
case 'radio':
case 'select':
Expand Down Expand Up @@ -676,35 +619,6 @@ protected function _containerOptions(?string $fieldName, array $options): array
return $options;
}

/**
* Modify options for date time controls.
*
* @param string $fieldName Field name.
* @param array $options Options. See `$options` argument of `control()` method.
* @return array
*/
protected function _dateTimeOptions(string $fieldName, array $options): array
{
$options = $this->_labelOptions($fieldName, $options);

// group IDs are no longer required for date/time controls,
// this is just kept for backwards compatibility

$groupId =
$options['templateVars']['groupId'] =
$this->_domId($fieldName . '-group-label');

if ($options['label'] !== false) {
$options['label']['templateVars']['groupId'] = $groupId;
}

$options['templates']['label'] = $this->templater()->get('datetimeLabel');
$options['templates']['inputContainer'] = $this->templater()->get('datetimeContainer');
$options['templates']['inputContainerError'] = $this->templater()->get('datetimeContainerError');

return $options;
}

/**
* Modify options for checkbox controls.
*
Expand Down Expand Up @@ -985,6 +899,7 @@ protected function _ariaOptions(string $fieldName, array $options): array
{
if (
$options['type'] === 'hidden' ||
($options['type'] === 'select' && isset($options['multiple']) && $options['multiple'] === 'checkbox') ||
(
isset($options['aria-required']) &&
isset($options['aria-describedby']) &&
Expand All @@ -998,26 +913,15 @@ protected function _ariaOptions(string $fieldName, array $options): array
$options['error'] !== false &&
$this->isFieldError($fieldName);

// `aria-invalid` and `aria-required` are injected for backwards
// compatibility reasons, as support for this has only been
// introduced in the core form helper with CakePHP 4.3. This can
// be removed once the required minimum CakePHP version is bumped
// accordingly.

// This is required because of a bug in CakePHP 5 due to which
// `aria-invalid` is not applied for `select` tags.
if (
$isError &&
!isset($options['aria-invalid'])
) {
$options['aria-invalid'] = 'true';
}

if (
$options['required'] &&
!isset($options['aria-required'])
) {
$options['aria-required'] = 'true';
}

if (isset($options['aria-describedby'])) {
return $options;
}
Expand Down Expand Up @@ -1435,10 +1339,6 @@ protected function _processFormOptions(array $options): array
$templates['label'],
$this->_gridClass(static::GRID_COLUMN_ONE)
);
$templates['datetimeLabel'] = sprintf(
$templates['datetimeLabel'],
$this->_gridClass(static::GRID_COLUMN_ONE)
);
$templates['radioLabel'] = sprintf(
$templates['radioLabel'],
$this->_gridClass(static::GRID_COLUMN_ONE)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -559,24 +559,24 @@ public function testDefaultAlignDateTimeControlCustomContainerTemplateViaTemplat
$this->assertStringContainsString('<div class="mb-3 form-group time">', $result);

$this->Form->setTemplates([
'datetimeContainer' => '<div class="custom datetimeContainer {{type}}{{required}}" role="group" aria-labelledby="{{groupId}}">{{content}}</div>',
'dateContainer' => '<div class="custom dateContainer {{type}}{{required}}" role="group" aria-labelledby="{{groupId}}">{{content}}</div>',
'timeContainer' => '<div class="custom timeContainer {{type}}{{required}}" role="group" aria-labelledby="{{groupId}}">{{content}}</div>',
'datetimeContainer' => '<div class="custom datetimeContainer {{type}}{{required}}">{{content}}</div>',
'dateContainer' => '<div class="custom dateContainer {{type}}{{required}}">{{content}}</div>',
'timeContainer' => '<div class="custom timeContainer {{type}}{{required}}">{{content}}</div>',
]);
$result = $this->Form->control('created', [
'type' => 'datetime',
]);
$this->assertStringContainsString('<div class="custom datetimeContainer datetime" role="group" aria-labelledby="created-group-label">', $result);
$this->assertStringContainsString('<div class="custom datetimeContainer datetime">', $result);

$result = $this->Form->control('created', [
'type' => 'date',
]);
$this->assertStringContainsString('<div class="custom dateContainer date" role="group" aria-labelledby="created-group-label">', $result);
$this->assertStringContainsString('<div class="custom dateContainer date">', $result);

$result = $this->Form->control('created', [
'type' => 'time',
]);
$this->assertStringContainsString('<div class="custom timeContainer time" role="group" aria-labelledby="created-group-label">', $result);
$this->assertStringContainsString('<div class="custom timeContainer time">', $result);
}

public function testDefaultAlignDateTimeControlCustomContainerErrorTemplateViaOptions()
Expand Down Expand Up @@ -606,25 +606,25 @@ public function testDefaultAlignDateTimeControlCustomContainerErrorTemplateViaOp
$result = $this->Form->control('created', [
'type' => 'datetime',
'templates' => [
'datetimeContainerError' => '<div class="custom datetimeContainerError {{type}}{{required}}" role="group" aria-labelledby="{{groupId}}">{{content}}</div>',
'datetimeContainerError' => '<div class="custom datetimeContainerError {{type}}{{required}}">{{content}}</div>',
],
]);
$this->assertStringContainsString('<div class="custom datetimeContainerError datetime" role="group" aria-labelledby="created-group-label">', $result);
$this->assertStringContainsString('<div class="custom datetimeContainerError datetime">', $result);

$result = $this->Form->control('created', [
'type' => 'date',
'templates' => [
'dateContainerError' => '<div class="custom dateContainerError {{type}}{{required}}" role="group" aria-labelledby="{{groupId}}">{{content}}</div>',
'dateContainerError' => '<div class="custom dateContainerError {{type}}{{required}}">{{content}}</div>',
],
]);
$this->assertStringContainsString('<div class="custom dateContainerError date" role="group" aria-labelledby="created-group-label">', $result);
$this->assertStringContainsString('<div class="custom dateContainerError date">', $result);

$result = $this->Form->control('created', [
'type' => 'time',
'templates' => [
'timeContainerError' => '<div class="custom timeContainerError {{type}}{{required}}" role="group" aria-labelledby="{{groupId}}">{{content}}</div>',
'timeContainerError' => '<div class="custom timeContainerError {{type}}{{required}}">{{content}}</div>',
],
]);
$this->assertStringContainsString('<div class="custom timeContainerError time" role="group" aria-labelledby="created-group-label">', $result);
$this->assertStringContainsString('<div class="custom timeContainerError time">', $result);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -682,24 +682,24 @@ public function testHorizontalAlignDateTimeControlCustomContainerTemplateViaTemp
$this->assertStringContainsString('<div class="mb-3 form-group row time">', $result);

$this->Form->setTemplates([
'datetimeContainer' => '<div class="custom datetimeContainer {{type}}{{required}}" role="group" aria-labelledby="{{groupId}}">{{content}}</div>',
'dateContainer' => '<div class="custom dateContainer {{type}}{{required}}" role="group" aria-labelledby="{{groupId}}">{{content}}</div>',
'timeContainer' => '<div class="custom timeContainer {{type}}{{required}}" role="group" aria-labelledby="{{groupId}}">{{content}}</div>',
'datetimeContainer' => '<div class="custom datetimeContainer {{type}}{{required}}">{{content}}</div>',
'dateContainer' => '<div class="custom dateContainer {{type}}{{required}}">{{content}}</div>',
'timeContainer' => '<div class="custom timeContainer {{type}}{{required}}">{{content}}</div>',
]);
$result = $this->Form->control('created', [
'type' => 'datetime',
]);
$this->assertStringContainsString('<div class="custom datetimeContainer datetime" role="group" aria-labelledby="created-group-label">', $result);
$this->assertStringContainsString('<div class="custom datetimeContainer datetime">', $result);

$result = $this->Form->control('created', [
'type' => 'date',
]);
$this->assertStringContainsString('<div class="custom dateContainer date" role="group" aria-labelledby="created-group-label">', $result);
$this->assertStringContainsString('<div class="custom dateContainer date">', $result);

$result = $this->Form->control('created', [
'type' => 'time',
]);
$this->assertStringContainsString('<div class="custom timeContainer time" role="group" aria-labelledby="created-group-label">', $result);
$this->assertStringContainsString('<div class="custom timeContainer time">', $result);
}

public function testHorizontalAlignDateTimeControlCustomContainerErrorTemplateViaOptions()
Expand Down Expand Up @@ -736,25 +736,25 @@ public function testHorizontalAlignDateTimeControlCustomContainerErrorTemplateVi
$result = $this->Form->control('created', [
'type' => 'datetime',
'templates' => [
'datetimeContainerError' => '<div class="custom datetimeContainerError {{type}}{{required}}" role="group" aria-labelledby="{{groupId}}">{{content}}</div>',
'datetimeContainerError' => '<div class="custom datetimeContainerError {{type}}{{required}}">{{content}}</div>',
],
]);
$this->assertStringContainsString('<div class="custom datetimeContainerError datetime" role="group" aria-labelledby="created-group-label">', $result);
$this->assertStringContainsString('<div class="custom datetimeContainerError datetime">', $result);

$result = $this->Form->control('created', [
'type' => 'date',
'templates' => [
'dateContainerError' => '<div class="custom dateContainerError {{type}}{{required}}" role="group" aria-labelledby="{{groupId}}">{{content}}</div>',
'dateContainerError' => '<div class="custom dateContainerError {{type}}{{required}}">{{content}}</div>',
],
]);
$this->assertStringContainsString('<div class="custom dateContainerError date" role="group" aria-labelledby="created-group-label">', $result);
$this->assertStringContainsString('<div class="custom dateContainerError date">', $result);

$result = $this->Form->control('created', [
'type' => 'time',
'templates' => [
'timeContainerError' => '<div class="custom timeContainerError {{type}}{{required}}" role="group" aria-labelledby="{{groupId}}">{{content}}</div>',
'timeContainerError' => '<div class="custom timeContainerError {{type}}{{required}}">{{content}}</div>',
],
]);
$this->assertStringContainsString('<div class="custom timeContainerError time" role="group" aria-labelledby="created-group-label">', $result);
$this->assertStringContainsString('<div class="custom timeContainerError time">', $result);
}
}
Loading

0 comments on commit ffcf743

Please sign in to comment.