Skip to content

Commit 2883966

Browse files
committed
feat: review
1 parent ada51ce commit 2883966

2 files changed

Lines changed: 21 additions & 15 deletions

File tree

src/js/accessibility/product.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,15 @@ export default () => {
5656
const focusMap = new Map<'quickview' | 'main', { id: string }>();
5757

5858
// Save the element before the update
59-
prestashop.on(events.updateProduct, ({ event }: { event: Event }) => {
59+
prestashop.on(events.updateProduct, ({event}: { event: Event }) => {
6060
const target = event?.target as HTMLElement;
61+
6162
if (!target || !target.id) return;
6263

6364
const isInQuickView = !!target.closest(SelectorsMap.quickviewModal);
6465
const context: 'quickview' | 'main' = isInQuickView ? 'quickview' : 'main';
6566

66-
focusMap.set(context, { id: target.id });
67+
focusMap.set(context, {id: target.id});
6768
});
6869

6970
// Restore focus after update
@@ -76,9 +77,9 @@ export default () => {
7677
} else {
7778
container = document.querySelector(SelectorsMap.product.container);
7879
}
79-
80+
8081
if (!container) return;
81-
82+
8283
const elementToFocus = container.querySelector<HTMLElement>(`#${focusData.id}`);
8384

8485
if (elementToFocus) {
@@ -87,7 +88,7 @@ export default () => {
8788
// Emit event to when the focus is restored
8889
prestashop.emit(events.combinationFocusRestored, {
8990
context,
90-
elementId: focusData.id
91+
elementId: focusData.id,
9192
});
9293
}
9394

@@ -96,7 +97,7 @@ export default () => {
9697
});
9798

9899
// Product availability messages announcement
99-
prestashop.on(events.combinationFocusRestored, ({ context }: { context: 'quickview' | 'main' }) => {
100+
prestashop.on(events.combinationFocusRestored, ({context}: { context: 'quickview' | 'main' }) => {
100101
let container: HTMLElement | null = null;
101102

102103
// Get the container of the context

templates/catalog/_partials/product-variants.tpl

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@
66
<div class="product__variants js-product-variants">
77
{foreach from=$groups key=id_attribute_group item=group}
88
{if !empty($group.attributes)}
9+
{assign var=groupId value="group_{$id_attribute_group}_{$product.id}"}
10+
{assign var=legendId value="legend_{$id_attribute_group}_{$product.id}"}
11+
912
<fieldset class="product-variant">
1013
<div class="product-variant__label">
11-
<legend class="form-label product-variant__legend" id="legend_{$product.id}_{$id_attribute_group}">{$group.name}</legend>
14+
<legend class="form-label product-variant__legend" id="{$legendId}">{$group.name}</legend>
1215
<span class="selected-value product-variant__selected" aria-hidden="true">
1316
{l s=': ' d='Shop.Theme.Catalog'}
1417
{foreach from=$group.attributes key=id_attribute item=group_attribute}
@@ -20,19 +23,20 @@
2023
{if $group.group_type == 'select'}
2124
<select
2225
class="form-select"
23-
id="group_{$product.id}_{$id_attribute_group}"
24-
aria-labelledby="legend_{$product.id}_{$id_attribute_group}"
26+
id="{$groupId}"
27+
aria-labelledby="{$legendId}"
2528
data-product-attribute="{$id_attribute_group}"
2629
name="group[{$id_attribute_group}]">
2730
{foreach from=$group.attributes key=id_attribute item=group_attribute}
2831
<option value="{$id_attribute}" {if $group_attribute.selected} selected="selected"{/if}>{$group_attribute.name}</option>
2932
{/foreach}
3033
</select>
3134
{elseif $group.group_type == 'color'}
32-
<div id="group_{$product.id}_{$id_attribute_group}" class="product-variant__colors" role="radiogroup" aria-labelledby="legend_{$product.id}_{$id_attribute_group}">
35+
<div id="{$groupId}" class="product-variant__colors" role="radiogroup" aria-labelledby="{$legendId}">
3336
{foreach from=$group.attributes key=id_attribute item=group_attribute}
34-
{assign var=optionId value="group_{$product.id}_{$id_attribute_group}_{$id_attribute}"}
35-
{assign var=labelId value="label_{$product.id}_{$id_attribute_group}_{$id_attribute}"}
37+
{assign var=optionId value="group_{$id_attribute_group}_{$id_attribute}_{$product.id}"}
38+
{assign var=labelId value="label_{$id_attribute_group}_{$id_attribute}_{$product.id}"}
39+
3640
<div class="product-variant__color input-color">
3741
<input
3842
class="input-color__input"
@@ -62,10 +66,11 @@
6266
{/foreach}
6367
</div>
6468
{elseif $group.group_type == 'radio'}
65-
<div id="group_{$product.id}_{$id_attribute_group}" class="product-variant__radios" role="radiogroup" aria-labelledby="legend_{$product.id}_{$id_attribute_group}">
69+
<div id="{$groupId}" class="product-variant__radios" role="radiogroup" aria-labelledby="{$legendId}">
6670
{foreach from=$group.attributes key=id_attribute item=group_attribute}
67-
{assign var=optionId value="group_{$product.id}_{$id_attribute_group}_{$id_attribute}"}
68-
{assign var=labelId value="label_{$product.id}_{$id_attribute_group}_{$id_attribute}"}
71+
{assign var=optionId value="group_{$id_attribute_group}_{$id_attribute}_{$product.id}"}
72+
{assign var=labelId value="label_{$id_attribute_group}_{$id_attribute}_{$product.id}"}
73+
6974
<div class="product-variant__radio form-check">
7075
<input
7176
class="form-check-input"

0 commit comments

Comments
 (0)