@searchspring/snap-preact-components 0.41.2 → 0.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/dist/cjs/components/Atoms/Button/Button.d.ts +1 -0
  2. package/dist/cjs/components/Atoms/Button/Button.d.ts.map +1 -1
  3. package/dist/cjs/components/Atoms/Button/Button.js +9 -3
  4. package/dist/cjs/components/Atoms/Button/Button.stories.d.ts +14 -0
  5. package/dist/cjs/components/Atoms/Button/Button.stories.d.ts.map +1 -1
  6. package/dist/cjs/components/Atoms/Button/Button.stories.js +9 -0
  7. package/dist/cjs/components/Atoms/Dropdown/Dropdown.d.ts +1 -0
  8. package/dist/cjs/components/Atoms/Dropdown/Dropdown.d.ts.map +1 -1
  9. package/dist/cjs/components/Atoms/Dropdown/Dropdown.js +4 -3
  10. package/dist/cjs/components/Atoms/Dropdown/Dropdown.stories.d.ts +14 -0
  11. package/dist/cjs/components/Atoms/Dropdown/Dropdown.stories.d.ts.map +1 -1
  12. package/dist/cjs/components/Atoms/Dropdown/Dropdown.stories.js +9 -0
  13. package/dist/cjs/components/Molecules/Carousel/Carousel.d.ts.map +1 -1
  14. package/dist/cjs/components/Molecules/Carousel/Carousel.js +5 -1
  15. package/dist/cjs/components/Molecules/Checkbox/Checkbox.d.ts +1 -0
  16. package/dist/cjs/components/Molecules/Checkbox/Checkbox.d.ts.map +1 -1
  17. package/dist/cjs/components/Molecules/Checkbox/Checkbox.js +4 -3
  18. package/dist/cjs/components/Molecules/Checkbox/Checkbox.stories.d.ts +14 -0
  19. package/dist/cjs/components/Molecules/Checkbox/Checkbox.stories.d.ts.map +1 -1
  20. package/dist/cjs/components/Molecules/Checkbox/Checkbox.stories.js +9 -0
  21. package/dist/cjs/components/Molecules/FacetGridOptions/FacetGridOptions.d.ts +3 -2
  22. package/dist/cjs/components/Molecules/FacetGridOptions/FacetGridOptions.d.ts.map +1 -1
  23. package/dist/cjs/components/Molecules/FacetGridOptions/FacetGridOptions.js +9 -4
  24. package/dist/cjs/components/Molecules/FacetGridOptions/FacetGridOptions.stories.d.ts +14 -0
  25. package/dist/cjs/components/Molecules/FacetGridOptions/FacetGridOptions.stories.d.ts.map +1 -1
  26. package/dist/cjs/components/Molecules/FacetGridOptions/FacetGridOptions.stories.js +10 -1
  27. package/dist/cjs/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.d.ts +3 -2
  28. package/dist/cjs/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.d.ts.map +1 -1
  29. package/dist/cjs/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.js +10 -5
  30. package/dist/cjs/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.stories.d.ts +14 -0
  31. package/dist/cjs/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.stories.d.ts.map +1 -1
  32. package/dist/cjs/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.stories.js +10 -1
  33. package/dist/cjs/components/Molecules/FacetListOptions/FacetListOptions.d.ts +3 -2
  34. package/dist/cjs/components/Molecules/FacetListOptions/FacetListOptions.d.ts.map +1 -1
  35. package/dist/cjs/components/Molecules/FacetListOptions/FacetListOptions.js +10 -5
  36. package/dist/cjs/components/Molecules/FacetListOptions/FacetListOptions.stories.d.ts +14 -0
  37. package/dist/cjs/components/Molecules/FacetListOptions/FacetListOptions.stories.d.ts.map +1 -1
  38. package/dist/cjs/components/Molecules/FacetListOptions/FacetListOptions.stories.js +10 -1
  39. package/dist/cjs/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.d.ts +3 -2
  40. package/dist/cjs/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.d.ts.map +1 -1
  41. package/dist/cjs/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.js +9 -4
  42. package/dist/cjs/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.stories.d.ts +14 -0
  43. package/dist/cjs/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.stories.d.ts.map +1 -1
  44. package/dist/cjs/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.stories.js +10 -1
  45. package/dist/cjs/components/Molecules/FacetSlider/FacetSlider.d.ts.map +1 -1
  46. package/dist/cjs/components/Molecules/FacetSlider/FacetSlider.js +4 -3
  47. package/dist/cjs/components/Molecules/Filter/Filter.d.ts.map +1 -1
  48. package/dist/cjs/components/Molecules/Filter/Filter.js +2 -2
  49. package/dist/cjs/components/Molecules/Pagination/Pagination.d.ts.map +1 -1
  50. package/dist/cjs/components/Molecules/Pagination/Pagination.js +6 -6
  51. package/dist/cjs/components/Molecules/Select/Select.d.ts.map +1 -1
  52. package/dist/cjs/components/Molecules/Select/Select.js +5 -3
  53. package/dist/cjs/components/Molecules/Slideout/Slideout.d.ts.map +1 -1
  54. package/dist/cjs/components/Molecules/Slideout/Slideout.js +10 -1
  55. package/dist/cjs/components/Organisms/Autocomplete/Autocomplete.d.ts.map +1 -1
  56. package/dist/cjs/components/Organisms/Autocomplete/Autocomplete.js +18 -19
  57. package/dist/cjs/components/Organisms/Facet/Facet.d.ts.map +1 -1
  58. package/dist/cjs/components/Organisms/Facet/Facet.js +10 -9
  59. package/dist/cjs/hooks/index.d.ts +1 -0
  60. package/dist/cjs/hooks/index.d.ts.map +1 -1
  61. package/dist/cjs/hooks/index.js +1 -0
  62. package/dist/cjs/hooks/useA11y.d.ts +2 -0
  63. package/dist/cjs/hooks/useA11y.d.ts.map +1 -0
  64. package/dist/cjs/hooks/useA11y.js +26 -0
  65. package/dist/esm/components/Atoms/Button/Button.d.ts +1 -0
  66. package/dist/esm/components/Atoms/Button/Button.d.ts.map +1 -1
  67. package/dist/esm/components/Atoms/Button/Button.js +7 -2
  68. package/dist/esm/components/Atoms/Button/Button.stories.d.ts +14 -0
  69. package/dist/esm/components/Atoms/Button/Button.stories.d.ts.map +1 -1
  70. package/dist/esm/components/Atoms/Button/Button.stories.js +10 -0
  71. package/dist/esm/components/Atoms/Dropdown/Dropdown.d.ts +1 -0
  72. package/dist/esm/components/Atoms/Dropdown/Dropdown.d.ts.map +1 -1
  73. package/dist/esm/components/Atoms/Dropdown/Dropdown.js +4 -2
  74. package/dist/esm/components/Atoms/Dropdown/Dropdown.stories.d.ts +14 -0
  75. package/dist/esm/components/Atoms/Dropdown/Dropdown.stories.d.ts.map +1 -1
  76. package/dist/esm/components/Atoms/Dropdown/Dropdown.stories.js +10 -0
  77. package/dist/esm/components/Molecules/Carousel/Carousel.d.ts.map +1 -1
  78. package/dist/esm/components/Molecules/Carousel/Carousel.js +6 -2
  79. package/dist/esm/components/Molecules/Checkbox/Checkbox.d.ts +1 -0
  80. package/dist/esm/components/Molecules/Checkbox/Checkbox.d.ts.map +1 -1
  81. package/dist/esm/components/Molecules/Checkbox/Checkbox.js +4 -2
  82. package/dist/esm/components/Molecules/Checkbox/Checkbox.stories.d.ts +14 -0
  83. package/dist/esm/components/Molecules/Checkbox/Checkbox.stories.d.ts.map +1 -1
  84. package/dist/esm/components/Molecules/Checkbox/Checkbox.stories.js +10 -0
  85. package/dist/esm/components/Molecules/FacetGridOptions/FacetGridOptions.d.ts +3 -2
  86. package/dist/esm/components/Molecules/FacetGridOptions/FacetGridOptions.d.ts.map +1 -1
  87. package/dist/esm/components/Molecules/FacetGridOptions/FacetGridOptions.js +8 -3
  88. package/dist/esm/components/Molecules/FacetGridOptions/FacetGridOptions.stories.d.ts +14 -0
  89. package/dist/esm/components/Molecules/FacetGridOptions/FacetGridOptions.stories.d.ts.map +1 -1
  90. package/dist/esm/components/Molecules/FacetGridOptions/FacetGridOptions.stories.js +11 -1
  91. package/dist/esm/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.d.ts +3 -2
  92. package/dist/esm/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.d.ts.map +1 -1
  93. package/dist/esm/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.js +9 -4
  94. package/dist/esm/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.stories.d.ts +14 -0
  95. package/dist/esm/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.stories.d.ts.map +1 -1
  96. package/dist/esm/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.stories.js +11 -1
  97. package/dist/esm/components/Molecules/FacetListOptions/FacetListOptions.d.ts +3 -2
  98. package/dist/esm/components/Molecules/FacetListOptions/FacetListOptions.d.ts.map +1 -1
  99. package/dist/esm/components/Molecules/FacetListOptions/FacetListOptions.js +9 -4
  100. package/dist/esm/components/Molecules/FacetListOptions/FacetListOptions.stories.d.ts +14 -0
  101. package/dist/esm/components/Molecules/FacetListOptions/FacetListOptions.stories.d.ts.map +1 -1
  102. package/dist/esm/components/Molecules/FacetListOptions/FacetListOptions.stories.js +11 -1
  103. package/dist/esm/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.d.ts +3 -2
  104. package/dist/esm/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.d.ts.map +1 -1
  105. package/dist/esm/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.js +8 -3
  106. package/dist/esm/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.stories.d.ts +14 -0
  107. package/dist/esm/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.stories.d.ts.map +1 -1
  108. package/dist/esm/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.stories.js +11 -1
  109. package/dist/esm/components/Molecules/FacetSlider/FacetSlider.d.ts.map +1 -1
  110. package/dist/esm/components/Molecules/FacetSlider/FacetSlider.js +2 -1
  111. package/dist/esm/components/Molecules/Filter/Filter.d.ts.map +1 -1
  112. package/dist/esm/components/Molecules/Filter/Filter.js +2 -2
  113. package/dist/esm/components/Molecules/Pagination/Pagination.d.ts.map +1 -1
  114. package/dist/esm/components/Molecules/Pagination/Pagination.js +6 -6
  115. package/dist/esm/components/Molecules/Select/Select.d.ts.map +1 -1
  116. package/dist/esm/components/Molecules/Select/Select.js +5 -3
  117. package/dist/esm/components/Molecules/Slideout/Slideout.d.ts.map +1 -1
  118. package/dist/esm/components/Molecules/Slideout/Slideout.js +10 -1
  119. package/dist/esm/components/Organisms/Autocomplete/Autocomplete.d.ts.map +1 -1
  120. package/dist/esm/components/Organisms/Autocomplete/Autocomplete.js +18 -19
  121. package/dist/esm/components/Organisms/Facet/Facet.d.ts.map +1 -1
  122. package/dist/esm/components/Organisms/Facet/Facet.js +7 -6
  123. package/dist/esm/hooks/index.d.ts +1 -0
  124. package/dist/esm/hooks/index.d.ts.map +1 -1
  125. package/dist/esm/hooks/index.js +1 -0
  126. package/dist/esm/hooks/useA11y.d.ts +2 -0
  127. package/dist/esm/hooks/useA11y.d.ts.map +1 -0
  128. package/dist/esm/hooks/useA11y.js +21 -0
  129. package/package.json +11 -11
@@ -22,7 +22,7 @@ export default {
22
22
  argTypes: {
23
23
  values: {
24
24
  description: 'Facet.values store reference',
25
- type: { required: true },
25
+ type: { required: false },
26
26
  table: {
27
27
  type: {
28
28
  summary: 'facet values store array',
@@ -30,6 +30,16 @@ export default {
30
30
  },
31
31
  control: { type: 'none' },
32
32
  },
33
+ facet: {
34
+ description: 'Facet store reference',
35
+ type: { required: false },
36
+ table: {
37
+ type: {
38
+ summary: 'facet store object',
39
+ },
40
+ },
41
+ control: { type: 'none' },
42
+ },
33
43
  hideCheckbox: {
34
44
  defaultValue: false,
35
45
  description: 'Hide facet option checkbox',
@@ -1,15 +1,16 @@
1
1
  /// <reference types="react" />
2
2
  import { ComponentProps } from '../../../types';
3
- import type { FacetValue } from '@searchspring/snap-store-mobx';
3
+ import type { FacetValue, ValueFacet } from '@searchspring/snap-store-mobx';
4
4
  export declare const FacetPaletteOptions: ((properties: FacetPaletteOptionsProps) => JSX.Element) & {
5
5
  displayName: string;
6
6
  };
7
7
  export interface FacetPaletteOptionsProps extends ComponentProps {
8
- values: FacetValue[];
8
+ values?: FacetValue[];
9
9
  hideLabel?: boolean;
10
10
  columns?: number;
11
11
  gapSize?: string;
12
12
  hideIcon?: boolean;
13
+ facet?: ValueFacet;
13
14
  onClick?: (e: React.MouseEvent) => void;
14
15
  previewOnFocus?: boolean;
15
16
  valueProps?: any;
@@ -1 +1 @@
1
- {"version":3,"file":"FacetPaletteOptions.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.tsx"],"names":[],"mappings":";AAUA,OAAO,EAAE,cAAc,EAAc,MAAM,gBAAgB,CAAC;AAG5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AA+EhE,eAAO,MAAM,mBAAmB,gBAAyB,wBAAwB,KAAG,WAAW;;CA4E7F,CAAC;AAEH,MAAM,WAAW,wBAAyB,SAAQ,cAAc;IAC/D,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACxC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,GAAG,CAAC;CACjB"}
1
+ {"version":3,"file":"FacetPaletteOptions.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.tsx"],"names":[],"mappings":";AAUA,OAAO,EAAE,cAAc,EAAc,MAAM,gBAAgB,CAAC;AAG5D,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AA+E5E,eAAO,MAAM,mBAAmB,gBAAyB,wBAAwB,KAAG,WAAW;;CAoF7F,CAAC;AAEH,MAAM,WAAW,wBAAyB,SAAQ,cAAc;IAC/D,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACxC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,GAAG,CAAC;CACjB"}
@@ -92,7 +92,7 @@ export const FacetPaletteOptions = observer((properties) => {
92
92
  ...properties,
93
93
  ...properties.theme?.components?.facetPaletteOptions,
94
94
  };
95
- const { values, hideLabel, columns, gapSize, hideIcon, onClick, previewOnFocus, valueProps, disableStyles, className, style } = props;
95
+ const { values, hideLabel, columns, gapSize, hideIcon, onClick, previewOnFocus, valueProps, facet, disableStyles, className, style } = props;
96
96
  const subProps = {
97
97
  icon: {
98
98
  // default props
@@ -117,8 +117,13 @@ export const FacetPaletteOptions = observer((properties) => {
117
117
  else if (style) {
118
118
  styling.css = [style];
119
119
  }
120
- return values?.length ? (jsx(CacheProvider, null,
121
- jsx("div", { ...styling, className: classnames('ss__facet-palette-options', className) }, values.map((value) => (jsx("a", { className: classnames('ss__facet-palette-options__option', { 'ss__facet-palette-options__option--filtered': value.filtered }), "aria-label": value.value, onFocus: () => previewOnFocus && value.preview && value.preview(), ...valueProps, href: value.url?.link?.href, onClick: (e) => {
120
+ const facetValues = values || facet?.values;
121
+ return facetValues?.length ? (jsx(CacheProvider, null,
122
+ jsx("div", { ...styling, className: classnames('ss__facet-palette-options', className) }, facetValues.map((value) => (jsx("a", { className: classnames('ss__facet-palette-options__option', { 'ss__facet-palette-options__option--filtered': value.filtered }), "aria-label": value.filtered
123
+ ? `remove selected filter ${facet?.label || ''} - ${value.label}`
124
+ : facet?.label
125
+ ? `filter by ${facet?.label} - ${value.label}`
126
+ : `filter by ${value.label}`, ...valueProps, onMouseEnter: (e) => previewOnFocus && valueProps.onMouseEnter(e, value), href: value.url?.link?.href, onClick: (e) => {
122
127
  value.url?.link?.onClick(e);
123
128
  onClick && onClick(e);
124
129
  } },
@@ -79,6 +79,20 @@ declare const _default: {
79
79
  type: string;
80
80
  };
81
81
  };
82
+ facet: {
83
+ description: string;
84
+ type: {
85
+ required: boolean;
86
+ };
87
+ table: {
88
+ type: {
89
+ summary: string;
90
+ };
91
+ };
92
+ control: {
93
+ type: string;
94
+ };
95
+ };
82
96
  columns: {
83
97
  defaultValue: number;
84
98
  description: string;
@@ -1 +1 @@
1
- {"version":3,"file":"FacetPaletteOptions.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.stories.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAK3B,OAAO,EAAuB,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAItF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;;;;;;;;;;;yBAgB5D,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAdb,wBAwGE;AAUF,eAAO,MAAM,OAAO;WAAU,wBAAwB;;wBAAsD,gBAAgB;;;;;;CAE3H,CAAC"}
1
+ {"version":3,"file":"FacetPaletteOptions.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.stories.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAK3B,OAAO,EAAuB,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAItF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;;;;;;;;;;;yBAgB5D,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAdb,wBAkHE;AAUF,eAAO,MAAM,OAAO;WAAU,wBAAwB;;wBAAsD,gBAAgB;;;;;;CAE3H,CAAC"}
@@ -22,7 +22,7 @@ export default {
22
22
  argTypes: {
23
23
  values: {
24
24
  description: 'Facet.values store reference',
25
- type: { required: true },
25
+ type: { required: false },
26
26
  table: {
27
27
  type: {
28
28
  summary: 'facet values store array',
@@ -30,6 +30,16 @@ export default {
30
30
  },
31
31
  control: { type: 'none' },
32
32
  },
33
+ facet: {
34
+ description: 'Facet store reference',
35
+ type: { required: false },
36
+ table: {
37
+ type: {
38
+ summary: 'facet store object',
39
+ },
40
+ },
41
+ control: { type: 'none' },
42
+ },
33
43
  columns: {
34
44
  defaultValue: 4,
35
45
  description: 'Number of columns in palette',
@@ -1 +1 @@
1
- {"version":3,"file":"FacetSlider.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/FacetSlider/FacetSlider.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAc,MAAM,gBAAgB,CAAC;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAwIhE,eAAO,MAAM,WAAW,gBAAyB,gBAAgB,KAAG,WAAW;;CAoJ7E,CAAC;AAEH,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACtC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACpC"}
1
+ {"version":3,"file":"FacetSlider.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/FacetSlider/FacetSlider.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAc,MAAM,gBAAgB,CAAC;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAyIhE,eAAO,MAAM,WAAW,gBAAyB,gBAAgB,KAAG,WAAW;;CAyJ7E,CAAC;AAEH,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACtC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACpC"}
@@ -7,6 +7,7 @@ import classnames from 'classnames';
7
7
  import { useRanger } from 'react-ranger';
8
8
  import { useTheme, CacheProvider } from '../../../providers';
9
9
  import { sprintf } from '../../../utilities';
10
+ import { useA11y } from '../../../hooks';
10
11
  const CSS = {
11
12
  facetSlider: ({ railColor, trackColor, handleColor, valueTextColor, handleDraggingColor, showTicks, stickyHandleLabel, tickTextColor, theme, }) => css({
12
13
  display: 'flex',
@@ -205,7 +206,7 @@ export const FacetSlider = observer((properties) => {
205
206
  background: 'transparent',
206
207
  outline: 'none',
207
208
  },
208
- }) },
209
+ }), "aria-label": `${facet.label} slider button`, "aria-valuetext": `${facet.label} slider button, current value ${value}, ${facet.range?.low ? `min value ${facet.range?.low},` : ``} ${facet.range?.high ? `max value ${facet.range?.high}` : ``}`, ref: (e) => useA11y(e) },
209
210
  jsx("div", { className: classnames('ss__facet-slider__handle', { 'ss__facet-slider__handle--active': active }) }, stickyHandleLabel && (jsx("label", { className: classnames('ss__facet-slider__handle__label', 'ss__facet-slider__handle__label--sticky', `ss__facet-slider__handle__label--${idx}`, { 'ss__facet-slider__handle__label--pinleft': idx == 0 && value == facet?.range?.low }, { 'ss__facet-slider__handle__label--pinright': idx == 1 && value == facet?.range?.high }) }, sprintf(facet.formatValue, value))))))))),
210
211
  !stickyHandleLabel && (jsx("div", { className: 'ss__facet-slider__labels' }, handles.map(({ value }, idx) => (jsx("label", { className: classnames('ss__facet-slider__label', `ss__facet-slider__label--${idx}`) }, sprintf(facet.formatValue, value))))))))) : (jsx(Fragment, null));
211
212
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Filter.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/Filter/Filter.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,cAAc,EAAc,MAAM,gBAAgB,CAAC;AAG5D,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAqBjE,eAAO,MAAM,MAAM,gBAAyB,WAAW,KAAG,WAAW;;CAgFnE,CAAC;AAEH,MAAM,WAAW,WAAY,SAAQ,cAAc;IAClD,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"Filter.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/Filter/Filter.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,cAAc,EAAc,MAAM,gBAAgB,CAAC;AAG5D,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAqBjE,eAAO,MAAM,MAAM,gBAAyB,WAAW,KAAG,WAAW;;CAiFnE,CAAC;AAEH,MAAM,WAAW,WAAY,SAAQ,cAAc;IAClD,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -75,11 +75,11 @@ export const Filter = observer((properties) => {
75
75
  styling.css = [style];
76
76
  }
77
77
  return value ? (jsx(CacheProvider, null,
78
- jsx("a", { ...styling, className: classnames('ss__filter', className), onClick: (e) => {
78
+ jsx("a", { ...styling, className: classnames('ss__filter', className), "aria-label": !label ? value : `remove selected ${label} filter ${value}`, onClick: (e) => {
79
79
  link?.onClick && link.onClick(e);
80
80
  onClick && onClick(e);
81
81
  }, href: link?.href },
82
- jsx(Button, { ...subProps.button },
82
+ jsx(Button, { ...subProps.button, disableA11y: true },
83
83
  jsx(Icon, { ...subProps.icon }),
84
84
  !hideFacetLabel && (jsx("span", { className: "ss__filter__label" },
85
85
  label,
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/Pagination/Pagination.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,cAAc,EAAc,MAAM,gBAAgB,CAAC;AAE5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAqB3E,eAAO,MAAM,UAAU,gBAAyB,eAAe,KAAG,WAAW;;CAwH3E,CAAC;AAMH,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACtD,UAAU,EAAE,qBAAqB,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;CAClC"}
1
+ {"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/Pagination/Pagination.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,cAAc,EAAc,MAAM,gBAAgB,CAAC;AAE5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAqB3E,eAAO,MAAM,UAAU,gBAAyB,eAAe,KAAG,WAAW;;CAsI3E,CAAC;AAMH,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACtD,UAAU,EAAE,qBAAqB,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;CAClC"}
@@ -64,15 +64,15 @@ export const Pagination = observer((properties) => {
64
64
  }
65
65
  return store?.totalResults ? (jsx(CacheProvider, null,
66
66
  jsx("div", { ...styling, className: classnames('ss__pagination', className) },
67
- jsx(Fragment, null,
68
- store.previous && !hidePrev && (jsx("a", { ...store.previous.url.link, className: classnames('ss__pagination__page', 'ss__pagination__page--previous'), "aria-label": 'previous page' }, prevButton ? prevButton : jsx(Icon, { ...subProps.icon, icon: 'angle-left' }))),
67
+ jsx("nav", { role: "navigation", "aria-label": "Pagination" },
68
+ store.previous && !hidePrev && (jsx("a", { ...store.previous.url.link, className: classnames('ss__pagination__page', 'ss__pagination__page--previous'), "aria-label": 'go to previous page' }, prevButton ? prevButton : jsx(Icon, { ...subProps.icon, icon: 'angle-left' }))),
69
69
  !pageNumbers.includes(store.first.number) && !hideFirst && (jsx(Fragment, null,
70
- jsx("a", { ...store.first.url.link, className: classnames('ss__pagination__page', 'ss__pagination__page--first'), "aria-label": 'first page' }, firstButton ? firstButton : store.first.number),
70
+ jsx("a", { ...store.first.url.link, className: classnames('ss__pagination__page', 'ss__pagination__page--first'), "aria-label": 'go to first page' }, firstButton ? firstButton : store.first.number),
71
71
  !pageNumbers.includes(2) && !hideEllipsis && jsx("span", null, "\u2026"))),
72
72
  _pages &&
73
- _pages.map((page) => page.active ? (jsx("span", { className: classnames('ss__pagination__page', 'ss__pagination__page--active') }, page.number)) : (jsx("a", { ...page.url.link, className: "ss__pagination__page", "aria-label": `page ${page.number}` }, page.number))),
73
+ _pages.map((page) => page.active ? (jsx("span", { className: classnames('ss__pagination__page', 'ss__pagination__page--active'), "aria-label": `go to page ${page.number}`, "aria-current": "true" }, page.number)) : (jsx("a", { ...page.url.link, className: "ss__pagination__page", "aria-label": `go to page ${page.number}` }, page.number))),
74
74
  !pageNumbers.includes(store.last.number) && !hideLast && (jsx(Fragment, null,
75
75
  !pageNumbers.includes(store.totalPages - 1) && !hideEllipsis && jsx("span", null, "\u2026"),
76
- jsx("a", { ...store.last.url.link, className: classnames('ss__pagination__page', 'ss__pagination__page--last'), "aria-label": 'last page' }, lastButton ? lastButton : store.last.number))),
77
- store.next && !hideNext && (jsx("a", { ...store.next.url.link, className: classnames('ss__pagination__page', 'ss__pagination__page--next'), "aria-label": 'next page' }, nextButton ? nextButton : jsx(Icon, { ...subProps.icon, icon: 'angle-right' }))))))) : (jsx(Fragment, null));
76
+ jsx("a", { ...store.last.url.link, className: classnames('ss__pagination__page', 'ss__pagination__page--last'), "aria-label": `go to last page ${store.last.number}` }, lastButton ? lastButton : store.last.number))),
77
+ store.next && !hideNext && (jsx("a", { ...store.next.url.link, className: classnames('ss__pagination__page', 'ss__pagination__page--next'), "aria-label": 'go to next page' }, nextButton ? nextButton : jsx(Icon, { ...subProps.icon, icon: 'angle-right' }))))))) : (jsx(Fragment, null));
78
78
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/Select/Select.tsx"],"names":[],"mappings":";AAUA,OAAO,EAAE,cAAc,EAAc,MAAM,gBAAgB,CAAC;AAG5D,OAAO,EAAmB,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAwC7D,eAAO,MAAM,MAAM,gBAAyB,WAAW,KAAG,WAAW;;CAyMnE,CAAC;AAQH,oBAAY,MAAM,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC,YAAY,EAAE,MAAM,GAAG,GAAG,CAAC;CAC5B,CAAC;AACF,MAAM,WAAW,WAAY,SAAQ,cAAc;IAClD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC9B,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACzF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC9B"}
1
+ {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/Select/Select.tsx"],"names":[],"mappings":";AAUA,OAAO,EAAE,cAAc,EAAc,MAAM,gBAAgB,CAAC;AAG5D,OAAO,EAAmB,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAyC7D,eAAO,MAAM,MAAM,gBAAyB,WAAW,KAAG,WAAW;;CAyNnE,CAAC;AAQH,oBAAY,MAAM,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC,YAAY,EAAE,MAAM,GAAG,GAAG,CAAC;CAC5B,CAAC;AACF,MAAM,WAAW,WAAY,SAAQ,cAAc;IAClD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC9B,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACzF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC9B"}
@@ -9,6 +9,7 @@ import { defined } from '../../../utilities';
9
9
  import { Dropdown } from '../../Atoms/Dropdown';
10
10
  import { Button } from '../../Atoms/Button';
11
11
  import { Icon } from '../../Atoms/Icon';
12
+ import { useA11y } from '../../../hooks/useA11y';
12
13
  const CSS = {
13
14
  select: ({ color, backgroundColor, borderColor, theme }) => css({
14
15
  display: 'inline-flex',
@@ -138,6 +139,7 @@ export const Select = observer((properties) => {
138
139
  else if (style) {
139
140
  styling.css = [style];
140
141
  }
142
+ const selectedOptions = options.filter((option) => selection?.value === option.value);
141
143
  // options can be an Array or ObservableArray - but should have length
142
144
  return typeof options == 'object' && options?.length ? (jsx(CacheProvider, null,
143
145
  jsx("div", { ...styling, className: classnames('ss__select', { 'ss__select--disabled': disabled }, className) }, native ? (jsx(Fragment, null,
@@ -155,13 +157,13 @@ export const Select = observer((properties) => {
155
157
  !disabled && makeSelection(e, selectedOption);
156
158
  } },
157
159
  !selection && clearSelection && (jsx("option", { className: "ss__select__select__option", selected: true, value: "" }, clearSelection)),
158
- options.map((option, index) => (jsx("option", { className: "ss__select__select__option", selected: selection?.value === option.value, value: option.value ?? index }, option.label)))))) : (jsx(Dropdown, { ...subProps.dropdown, disableClickOutside: disableClickOutside, open: open, onToggle: (e, state) => setOpen((prev) => state ?? !prev), onClick: (e) => setOpen((prev) => !prev), button: jsx(Button, { ...subProps.button },
159
- label && !hideLabelOnSelection && (jsx("span", { className: "ss__select__label" },
160
+ options.map((option, index) => (jsx("option", { className: "ss__select__select__option", selected: selection?.value === option.value, value: option.value ?? index }, option.label)))))) : (jsx(Dropdown, { ...subProps.dropdown, disableClickOutside: disableClickOutside, open: open, onToggle: (e, state) => setOpen((prev) => state ?? !prev), onClick: (e) => setOpen((prev) => !prev), disableA11y: true, button: jsx(Button, { ...subProps.button, disableA11y: true },
161
+ label && !hideLabelOnSelection && (jsx("span", { className: "ss__select__label", ref: (e) => useA11y(e), "aria-label": `${label} dropdown, ${options.length} options ${selectedOptions.length ? `, Currently selected option is ${selectedOptions[0].label}` : ''}`, "aria-expanded": open, role: "button" },
160
162
  label,
161
163
  separator && selection && jsx("span", { className: "ss__select__label__separator" }, separator))),
162
164
  selection && jsx("span", { className: "ss__select__selection" }, selection?.label),
163
165
  jsx(Icon, { ...subProps.icon, icon: open ? iconClose : iconOpen })) },
164
- jsx("ul", { className: "ss__select__select" }, options.map((option) => (jsx("li", { className: classnames('ss__select__select__option', {
166
+ jsx("ul", { className: "ss__select__select" }, options.map((option, idx) => (jsx("li", { ref: (e) => useA11y(e), role: 'link', "aria-label": `${selection?.value === option.value ? 'selected option,' : ''} option ${idx + 1} of ${options.length}, ${option.label}`, className: classnames('ss__select__select__option', {
165
167
  'ss__select__select__option--selected': selection?.value === option.value,
166
168
  }), onClick: (e) => !disabled && makeSelection(e, option) },
167
169
  jsx("span", null, option.label)))))))))) : (jsx(Fragment, null));
@@ -1 +1 @@
1
- {"version":3,"file":"Slideout.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/Slideout/Slideout.tsx"],"names":[],"mappings":";AAAA,eAAe;AACf,OAAO,EAAe,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAQxD,OAAO,EAAE,cAAc,EAAc,MAAM,gBAAgB,CAAC;AAyB5D,wBAAgB,QAAQ,CAAC,UAAU,EAAE,aAAa,GAAG,GAAG,CAAC,OAAO,CA0F/D;AAED,MAAM,WAAW,aAAc,SAAQ,cAAc;IACpD,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACrC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACpC;AAED,oBAAY,kBAAkB,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC"}
1
+ {"version":3,"file":"Slideout.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/Slideout/Slideout.tsx"],"names":[],"mappings":";AAAA,eAAe;AACf,OAAO,EAAe,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAQxD,OAAO,EAAE,cAAc,EAAc,MAAM,gBAAgB,CAAC;AA0B5D,wBAAgB,QAAQ,CAAC,UAAU,EAAE,aAAa,GAAG,GAAG,CAAC,OAAO,CAoG/D;AAED,MAAM,WAAW,aAAc,SAAQ,cAAc;IACpD,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACrC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACpC;AAED,oBAAY,kBAAkB,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC"}
@@ -62,7 +62,16 @@ export function Slideout(properties) {
62
62
  };
63
63
  // state
64
64
  const [isActive, setActive] = useState(Boolean(active));
65
+ const [renderContent, setRenderContent] = useState(Boolean(active));
65
66
  const toggleActive = () => {
67
+ if (isActive) {
68
+ setTimeout(() => {
69
+ setRenderContent(!renderContent);
70
+ }, 250);
71
+ }
72
+ else {
73
+ setRenderContent(!isActive);
74
+ }
66
75
  setActive(!isActive);
67
76
  document.body.style.overflow = isActive ? 'hidden' : '';
68
77
  };
@@ -80,6 +89,6 @@ export function Slideout(properties) {
80
89
  return isVisible ? (jsx(CacheProvider, null,
81
90
  buttonContent &&
82
91
  (noButtonWrapper ? (cloneWithProps(buttonContent, { toggleActive, active: isActive })) : (jsx("div", { className: "ss__slideout__button", onClick: () => toggleActive() }, cloneWithProps(buttonContent, { active: isActive })))),
83
- jsx("div", { className: classnames('ss__slideout', className, { 'ss__slideout--active': isActive }), ...styling }, cloneWithProps(children, { toggleActive, active: isActive })),
92
+ jsx("div", { className: classnames('ss__slideout', className, { 'ss__slideout--active': isActive }), ...styling }, renderContent && cloneWithProps(children, { toggleActive, active: isActive })),
84
93
  jsx(Overlay, { ...subProps.overlay, active: isActive, onClick: toggleActive }))) : (jsx(Fragment, null));
85
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Autocomplete.d.ts","sourceRoot":"","sources":["../../../../../src/components/Organisms/Autocomplete/Autocomplete.tsx"],"names":[],"mappings":";AASA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAS5E,OAAO,EAAE,cAAc,EAAgB,gBAAgB,EAAc,MAAM,gBAAgB,CAAC;AAqJ5F,eAAO,MAAM,YAAY,gBAAyB,iBAAiB,KAAG,WAAW;;CAqd/E,CAAC;AAoCH,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACxD,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,UAAU,EAAE,sBAAsB,CAAC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;IACxE,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;CACjE"}
1
+ {"version":3,"file":"Autocomplete.d.ts","sourceRoot":"","sources":["../../../../../src/components/Organisms/Autocomplete/Autocomplete.tsx"],"names":[],"mappings":";AASA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAS5E,OAAO,EAAE,cAAc,EAAgB,gBAAgB,EAAc,MAAM,gBAAgB,CAAC;AAqJ5F,eAAO,MAAM,YAAY,gBAAyB,iBAAiB,KAAG,WAAW;;CAge/E,CAAC;AAoCH,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACxD,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,UAAU,EAAE,sBAAsB,CAAC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;IACxE,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;CACjE"}
@@ -173,10 +173,13 @@ export const Autocomplete = observer((properties) => {
173
173
  let delayTimeout;
174
174
  const delayTime = 333;
175
175
  const valueProps = {
176
- onMouseEnter: (e) => {
176
+ onMouseEnter: (e, activeTerm) => {
177
177
  clearTimeout(delayTimeout);
178
178
  delayTimeout = window.setTimeout(() => {
179
179
  e.target.focus();
180
+ if (activeTerm && activeTerm.preview) {
181
+ activeTerm.preview();
182
+ }
180
183
  }, delayTime);
181
184
  },
182
185
  onMouseLeave: () => {
@@ -294,7 +297,7 @@ export const Autocomplete = observer((properties) => {
294
297
  theme: props.theme,
295
298
  },
296
299
  };
297
- const { search, terms, trending, results, merchandising, pagination, loaded, filters, facets, state } = controller.store;
300
+ const { search, terms, trending, results, merchandising, pagination, loaded, filters, facets, state, loading } = controller.store;
298
301
  const history = controller.store.history || [];
299
302
  // you can pass in a selector or the actual input element,
300
303
  // if its the selector, we need to bind it to the controller here.
@@ -307,28 +310,24 @@ export const Autocomplete = observer((properties) => {
307
310
  }
308
311
  const visible = Boolean(input === state.focusedInput) &&
309
312
  (terms.length > 0 || trending?.length > 0 || history?.length > 0 || (state.input && controller.store.loaded));
313
+ const trendingActive = trending?.filter((term) => term.active).pop();
314
+ const historyActive = history?.filter((term) => term.active).pop();
310
315
  let showTrending = false;
311
- if (trending?.length && (retainTrending || (!results.length && !state.input))) {
312
- showTrending = true;
313
- }
314
- else if (trending?.length && !terms.length) {
315
- // has results and trending -> show trending terms while term load
316
+ if (trending?.length && ((retainTrending && controller.store.loaded) || (!results.length && !state.input))) {
316
317
  showTrending = true;
317
318
  }
318
319
  let showHistory = false;
319
- if (history?.length && (retainHistory || (!results.length && !state.input))) {
320
+ if (history?.length && ((retainHistory && controller.store.loaded) || (!results.length && !state.input))) {
320
321
  showHistory = true;
321
322
  }
322
- else if (history?.length && !terms.length) {
323
- // has results and trending -> show trending terms while term load
323
+ if (!state.input && (historyActive || trendingActive)) {
324
324
  showHistory = true;
325
+ showTrending = true;
325
326
  }
326
327
  const facetsToShow = facets.length ? facets.filter((facet) => facet.display !== FacetDisplay.SLIDER) : [];
327
- const onlyTerms = (trending?.length || history.length) && !loaded;
328
+ const onlyTerms = (trending?.length || history.length) && !loaded && !loading;
328
329
  // results logic
329
330
  let showResults = Boolean(results.length > 0 || Object.keys(merchandising.content).length > 0 || search?.query?.string);
330
- const trendingActive = trending?.filter((term) => term.active).pop();
331
- const historyActive = history?.filter((term) => term.active).pop();
332
331
  if ((hideTrending && trendingActive) || (hideHistory && historyActive)) {
333
332
  showResults = false;
334
333
  }
@@ -370,24 +369,24 @@ export const Autocomplete = observer((properties) => {
370
369
  terms.length > 0 ? (jsx("div", { className: "ss__autocomplete__terms__suggestions" },
371
370
  termsTitle ? (jsx("div", { className: "ss__autocomplete__title ss__autocomplete__title--terms ss__autocomplete__title--suggestions" },
372
371
  jsx("h5", null, termsTitle))) : null,
373
- jsx("div", { className: "ss__autocomplete__terms__options" }, terms.map((term) => (jsx("div", { className: classnames('ss__autocomplete__terms__option', {
372
+ jsx("div", { className: "ss__autocomplete__terms__options", role: 'list', "aria-label": termsTitle }, terms.map((term, idx) => (jsx("div", { className: classnames('ss__autocomplete__terms__option', {
374
373
  'ss__autocomplete__terms__option--active': term.active,
375
374
  }) },
376
- jsx("a", { onClick: (e) => termClickEvent(e), href: term.url.href, ...valueProps, onFocus: () => term.preview() }, emIfy(term.value, state.input || '')))))))) : null,
375
+ jsx("a", { onClick: (e) => termClickEvent(e), href: term.url.href, ...valueProps, onMouseEnter: (e) => valueProps.onMouseEnter(e, term), role: "link", "aria-label": `item ${idx + 1} of ${terms.length}, ${term.value}` }, emIfy(term.value, state.input || '')))))))) : null,
377
376
  showTrending && !hideTrending ? (jsx("div", { className: "ss__autocomplete__terms__trending" },
378
377
  trendingTitle ? (jsx("div", { className: "ss__autocomplete__title ss__autocomplete__title--trending" },
379
378
  jsx("h5", null, trendingTitle))) : null,
380
- jsx("div", { className: "ss__autocomplete__terms__options" }, trending.map((term) => (jsx("div", { className: classnames('ss__autocomplete__terms__option', {
379
+ jsx("div", { className: "ss__autocomplete__terms__options", role: 'list', "aria-label": trendingTitle }, trending.map((term, idx) => (jsx("div", { className: classnames('ss__autocomplete__terms__option', {
381
380
  'ss__autocomplete__terms__option--active': term.active,
382
381
  }) },
383
- jsx("a", { onClick: (e) => termClickEvent(e), href: term.url.href, ...valueProps, onFocus: () => term.preview() }, emIfy(term.value, state.input || '')))))))) : null,
382
+ jsx("a", { onClick: (e) => termClickEvent(e), href: term.url.href, ...valueProps, onMouseEnter: (e) => valueProps.onMouseEnter(e, term), role: "link", "aria-label": `item ${idx + 1} of ${trending.length}, ${term.value}` }, emIfy(term.value, state.input || '')))))))) : null,
384
383
  showHistory && !hideHistory ? (jsx("div", { className: "ss__autocomplete__terms__history" },
385
384
  historyTitle ? (jsx("div", { className: "ss__autocomplete__title ss__autocomplete__title--history" },
386
385
  jsx("h5", null, historyTitle))) : null,
387
- jsx("div", { className: "ss__autocomplete__terms__options" }, history.map((term) => (jsx("div", { className: classnames('ss__autocomplete__terms__option', {
386
+ jsx("div", { className: "ss__autocomplete__terms__options", role: 'list', "aria-label": historyTitle }, history.map((term, idx) => (jsx("div", { className: classnames('ss__autocomplete__terms__option', {
388
387
  'ss__autocomplete__terms__option--active': term.active,
389
388
  }) },
390
- jsx("a", { onClick: (e) => termClickEvent(e), href: term.url.href, ...valueProps, onFocus: () => term.preview() }, emIfy(term.value, state.input || '')))))))) : null)))),
389
+ jsx("a", { onClick: (e) => termClickEvent(e), href: term.url.href, ...valueProps, onMouseEnter: () => term.preview(), role: "link", "aria-label": `item ${idx + 1} of ${history.length}, ${term.value}` }, emIfy(term.value, state.input || '')))))))) : null)))),
391
390
  !hideFacets &&
392
391
  (facetsSlot ? (jsx("div", { className: "ss__autocomplete__facets" }, cloneWithProps(facetsSlot, { facets: facetsToShow, merchandising, facetsTitle, hideBanners, controller, valueProps }))) : (facetsToShow.length > 0 && (jsx(Fragment, null,
393
392
  facetsTitle && vertical ? (jsx("div", { className: classnames('ss__autocomplete__title', 'ss__autocomplete__title--facets') },
@@ -1 +1 @@
1
- {"version":3,"file":"Facet.d.ts","sourceRoot":"","sources":["../../../../../src/components/Organisms/Facet/Facet.tsx"],"names":[],"mappings":";AAaA,OAAO,EAAmB,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,cAAc,EAA4B,MAAM,gBAAgB,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAoD,MAAM,+BAA+B,CAAC;AAuC9H,eAAO,MAAM,KAAK,gBAAyB,UAAU,KAAG,WAAW;;CAwQjE,CAAC;AAcH,MAAM,WAAW,UAAW,SAAQ,kBAAkB;IACrD,KAAK,EAAE,UAAU,GAAG,UAAU,CAAC;CAC/B;AAED,UAAU,kBAAmB,SAAQ,cAAc;IAClD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,aAAK,UAAU,GAAG;IACjB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC;CAC/B,CAAC"}
1
+ {"version":3,"file":"Facet.d.ts","sourceRoot":"","sources":["../../../../../src/components/Organisms/Facet/Facet.tsx"],"names":[],"mappings":";AAaA,OAAO,EAAmB,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,cAAc,EAA4B,MAAM,gBAAgB,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAoD,MAAM,+BAA+B,CAAC;AAwC9H,eAAO,MAAM,KAAK,gBAAyB,UAAU,KAAG,WAAW;;CAyRjE,CAAC;AAcH,MAAM,WAAW,UAAW,SAAQ,kBAAkB;IACrD,KAAK,EAAE,UAAU,GAAG,UAAU,CAAC;CAC/B;AAED,UAAU,kBAAmB,SAAQ,cAAc;IAClD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,aAAK,UAAU,GAAG;IACjB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC;CAC/B,CAAC"}
@@ -14,6 +14,7 @@ import { Dropdown } from '../../Atoms/Dropdown';
14
14
  import { FacetDisplay } from '../../../types';
15
15
  import { defined, cloneWithProps } from '../../../utilities';
16
16
  import { useTheme, CacheProvider } from '../../../providers';
17
+ import { useA11y } from '../../../hooks/useA11y';
17
18
  const CSS = {
18
19
  facet: ({ color, theme }) => css({
19
20
  width: '100%',
@@ -227,7 +228,7 @@ export const Facet = observer((properties) => {
227
228
  };
228
229
  return (facet && (jsx(CacheProvider, null,
229
230
  jsx("div", { ...styling, className: classnames('ss__facet', `ss__facet--${facet.display}`, `ss__facet--${facet.field}`, className) },
230
- jsx(Dropdown, { ...subProps.dropdown, open: disableCollapse || !facet?.collapsed, onClick: (e) => !disableCollapse && facet.toggleCollapse && facet?.toggleCollapse(), button: jsx("div", { className: "ss__facet__header" },
231
+ jsx(Dropdown, { ...subProps.dropdown, open: disableCollapse || !facet?.collapsed, onClick: (e) => !disableCollapse && facet.toggleCollapse && facet?.toggleCollapse(), disableA11y: true, button: jsx("div", { className: "ss__facet__header", ref: (e) => useA11y(e, disableCollapse ? -1 : 0), role: "heading", "aria-level": 3, "aria-label": `currently ${facet?.collapsed ? 'collapsed' : 'open'} ${facet.label} facet dropdown ${facet.values?.length ? facet.values?.length + ' options' : ''}` },
231
232
  facet?.label,
232
233
  !disableCollapse && jsx(Icon, { ...subProps.icon, icon: facet?.collapsed ? iconExpand : iconCollapse })) },
233
234
  searchable && searchableFacet.allowableTypes.includes(facet.display) && (jsx(SearchInput, { ...subProps.searchInput, onChange: searchableFacet.searchFilter, placeholder: `Search ${facet.label}` })),
@@ -241,17 +242,17 @@ export const Facet = observer((properties) => {
241
242
  case FacetDisplay.SLIDER:
242
243
  return jsx(FacetSlider, { ...subProps.facetSlider, facet: facet });
243
244
  case FacetDisplay.GRID:
244
- return jsx(FacetGridOptions, { ...subProps.facetGridOptions, values: limitedValues });
245
+ return jsx(FacetGridOptions, { ...subProps.facetGridOptions, values: limitedValues, facet: facet });
245
246
  case FacetDisplay.PALETTE:
246
- return jsx(FacetPaletteOptions, { ...subProps.facetPaletteOptions, values: limitedValues });
247
+ return (jsx(FacetPaletteOptions, { ...subProps.facetPaletteOptions, values: limitedValues, facet: facet }));
247
248
  case FacetDisplay.HIERARCHY:
248
- return jsx(FacetHierarchyOptions, { ...subProps.facetHierarchyOptions, values: limitedValues });
249
+ return (jsx(FacetHierarchyOptions, { ...subProps.facetHierarchyOptions, values: limitedValues, facet: facet }));
249
250
  default:
250
- return jsx(FacetListOptions, { ...subProps.facetListOptions, values: limitedValues });
251
+ return jsx(FacetListOptions, { ...subProps.facetListOptions, values: limitedValues, facet: facet });
251
252
  }
252
253
  }
253
254
  })()),
254
- !disableOverflow && facet?.overflow?.enabled && (jsx("div", { className: "ss__facet__show-more-less", onClick: () => facet.overflow?.toggle() }, overflowSlot ? (cloneWithProps(overflowSlot, { facet })) : (jsx(Fragment, null,
255
+ !disableOverflow && facet?.overflow?.enabled && (jsx("div", { className: "ss__facet__show-more-less", onClick: () => facet.overflow?.toggle(), ref: (e) => useA11y(e) }, overflowSlot ? (cloneWithProps(overflowSlot, { facet })) : (jsx(Fragment, null,
255
256
  jsx(Icon, { ...subProps.showMoreLessIcon, icon: (facet.overflow?.remaining || 0) > 0 ? iconOverflowMore : iconOverflowLess }),
256
257
  jsx("span", null, (facet?.overflow?.remaining || 0) > 0 ? showMoreText : showLessText))))))))));
257
258
  });
@@ -3,4 +3,5 @@ export * from './useConstructor';
3
3
  export * from './useMediaQuery';
4
4
  export * from './useIntersection';
5
5
  export * from './useDisplaySettings';
6
+ export * from './useA11y';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC"}
@@ -3,3 +3,4 @@ export * from './useConstructor';
3
3
  export * from './useMediaQuery';
4
4
  export * from './useIntersection';
5
5
  export * from './useDisplaySettings';
6
+ export * from './useA11y';
@@ -0,0 +1,2 @@
1
+ export declare function useA11y(elem: any, tabIndex?: number): void;
2
+ //# sourceMappingURL=useA11y.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useA11y.d.ts","sourceRoot":"","sources":["../../../src/hooks/useA11y.tsx"],"names":[],"mappings":"AAEA,wBAAgB,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,QAuBnD"}
@@ -0,0 +1,21 @@
1
+ export function useA11y(elem, tabIndex) {
2
+ const styleId = 'ssA11yFocusStyle';
3
+ if (!document.querySelector(`#${styleId}`)) {
4
+ var style = document.createElement('style');
5
+ style.type = 'text/css';
6
+ style.id = styleId;
7
+ style.innerHTML = `[ssA11y]:focus-visible { outline: -webkit-focus-ring-color auto 1px !important; }`;
8
+ document.getElementsByTagName('head')[0].appendChild(style);
9
+ }
10
+ if (elem && !elem.attributes?.ssA11y) {
11
+ //A11y attribute is for debouncing on rerenders
12
+ elem.setAttribute('ssA11y', true);
13
+ //tab index 0 is default and used for actionable elements.
14
+ elem.setAttribute('tabIndex', `${tabIndex || 0}`);
15
+ elem.addEventListener('keydown', (event) => {
16
+ if (event.code === 'Space' || event.code === 'Enter') {
17
+ elem.click();
18
+ }
19
+ });
20
+ }
21
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@searchspring/snap-preact-components",
3
- "version": "0.41.2",
3
+ "version": "0.42.0",
4
4
  "description": "Snap Preact Component Library",
5
5
  "author": "Searchspring",
6
6
  "license": "MIT",
@@ -26,7 +26,7 @@
26
26
  },
27
27
  "dependencies": {
28
28
  "@emotion/react": "11.9.0",
29
- "@searchspring/snap-toolbox": "^0.41.2",
29
+ "@searchspring/snap-toolbox": "^0.42.0",
30
30
  "classnames": "^2.3.2",
31
31
  "deepmerge": "4.2.2",
32
32
  "mobx-react-lite": "3.4.0",
@@ -37,14 +37,14 @@
37
37
  "preact": "10.9.0"
38
38
  },
39
39
  "devDependencies": {
40
- "@searchspring/snap-client": "^0.41.2",
41
- "@searchspring/snap-controller": "^0.41.2",
42
- "@searchspring/snap-event-manager": "^0.41.2",
43
- "@searchspring/snap-logger": "^0.41.2",
44
- "@searchspring/snap-profiler": "^0.41.2",
45
- "@searchspring/snap-store-mobx": "^0.41.2",
46
- "@searchspring/snap-tracker": "^0.41.2",
47
- "@searchspring/snap-url-manager": "^0.41.2",
40
+ "@searchspring/snap-client": "^0.42.0",
41
+ "@searchspring/snap-controller": "^0.42.0",
42
+ "@searchspring/snap-event-manager": "^0.42.0",
43
+ "@searchspring/snap-logger": "^0.42.0",
44
+ "@searchspring/snap-profiler": "^0.42.0",
45
+ "@searchspring/snap-store-mobx": "^0.42.0",
46
+ "@searchspring/snap-tracker": "^0.42.0",
47
+ "@searchspring/snap-url-manager": "^0.42.0",
48
48
  "@storybook/addon-actions": "6.4.22",
49
49
  "@storybook/addon-controls": "6.4.22",
50
50
  "@storybook/addon-docs": "6.4.22",
@@ -66,5 +66,5 @@
66
66
  "ts-loader": "9.3.0"
67
67
  },
68
68
  "sideEffects": false,
69
- "gitHead": "1a66d26b086734f724109f3d5c1f4977dfc16627"
69
+ "gitHead": "383a7dae4f04af4b60cc9d9c8aae8932c9df4685"
70
70
  }