@searchspring/snap-preact-components 0.41.2 → 0.42.1
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.
- package/dist/cjs/components/Atoms/Button/Button.d.ts +1 -0
- package/dist/cjs/components/Atoms/Button/Button.d.ts.map +1 -1
- package/dist/cjs/components/Atoms/Button/Button.js +9 -3
- package/dist/cjs/components/Atoms/Button/Button.stories.d.ts +14 -0
- package/dist/cjs/components/Atoms/Button/Button.stories.d.ts.map +1 -1
- package/dist/cjs/components/Atoms/Button/Button.stories.js +9 -0
- package/dist/cjs/components/Atoms/Dropdown/Dropdown.d.ts +1 -0
- package/dist/cjs/components/Atoms/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/cjs/components/Atoms/Dropdown/Dropdown.js +4 -3
- package/dist/cjs/components/Atoms/Dropdown/Dropdown.stories.d.ts +14 -0
- package/dist/cjs/components/Atoms/Dropdown/Dropdown.stories.d.ts.map +1 -1
- package/dist/cjs/components/Atoms/Dropdown/Dropdown.stories.js +9 -0
- package/dist/cjs/components/Molecules/Carousel/Carousel.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/Carousel/Carousel.js +5 -1
- package/dist/cjs/components/Molecules/Checkbox/Checkbox.d.ts +1 -0
- package/dist/cjs/components/Molecules/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/Checkbox/Checkbox.js +4 -3
- package/dist/cjs/components/Molecules/Checkbox/Checkbox.stories.d.ts +14 -0
- package/dist/cjs/components/Molecules/Checkbox/Checkbox.stories.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/Checkbox/Checkbox.stories.js +9 -0
- package/dist/cjs/components/Molecules/FacetGridOptions/FacetGridOptions.d.ts +3 -2
- package/dist/cjs/components/Molecules/FacetGridOptions/FacetGridOptions.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/FacetGridOptions/FacetGridOptions.js +9 -4
- package/dist/cjs/components/Molecules/FacetGridOptions/FacetGridOptions.stories.d.ts +14 -0
- package/dist/cjs/components/Molecules/FacetGridOptions/FacetGridOptions.stories.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/FacetGridOptions/FacetGridOptions.stories.js +10 -1
- package/dist/cjs/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.d.ts +3 -2
- package/dist/cjs/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.js +10 -5
- package/dist/cjs/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.stories.d.ts +14 -0
- package/dist/cjs/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.stories.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.stories.js +10 -1
- package/dist/cjs/components/Molecules/FacetListOptions/FacetListOptions.d.ts +3 -2
- package/dist/cjs/components/Molecules/FacetListOptions/FacetListOptions.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/FacetListOptions/FacetListOptions.js +10 -5
- package/dist/cjs/components/Molecules/FacetListOptions/FacetListOptions.stories.d.ts +14 -0
- package/dist/cjs/components/Molecules/FacetListOptions/FacetListOptions.stories.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/FacetListOptions/FacetListOptions.stories.js +10 -1
- package/dist/cjs/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.d.ts +3 -2
- package/dist/cjs/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.js +9 -4
- package/dist/cjs/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.stories.d.ts +14 -0
- package/dist/cjs/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.stories.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.stories.js +10 -1
- package/dist/cjs/components/Molecules/FacetSlider/FacetSlider.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/FacetSlider/FacetSlider.js +4 -3
- package/dist/cjs/components/Molecules/Filter/Filter.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/Filter/Filter.js +2 -2
- package/dist/cjs/components/Molecules/Pagination/Pagination.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/Pagination/Pagination.js +6 -6
- package/dist/cjs/components/Molecules/Select/Select.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/Select/Select.js +5 -3
- package/dist/cjs/components/Molecules/Slideout/Slideout.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/Slideout/Slideout.js +10 -1
- package/dist/cjs/components/Organisms/Autocomplete/Autocomplete.d.ts.map +1 -1
- package/dist/cjs/components/Organisms/Autocomplete/Autocomplete.js +18 -19
- package/dist/cjs/components/Organisms/Facet/Facet.d.ts.map +1 -1
- package/dist/cjs/components/Organisms/Facet/Facet.js +10 -9
- package/dist/cjs/hooks/index.d.ts +1 -0
- package/dist/cjs/hooks/index.d.ts.map +1 -1
- package/dist/cjs/hooks/index.js +1 -0
- package/dist/cjs/hooks/useA11y.d.ts +2 -0
- package/dist/cjs/hooks/useA11y.d.ts.map +1 -0
- package/dist/cjs/hooks/useA11y.js +26 -0
- package/dist/esm/components/Atoms/Button/Button.d.ts +1 -0
- package/dist/esm/components/Atoms/Button/Button.d.ts.map +1 -1
- package/dist/esm/components/Atoms/Button/Button.js +7 -2
- package/dist/esm/components/Atoms/Button/Button.stories.d.ts +14 -0
- package/dist/esm/components/Atoms/Button/Button.stories.d.ts.map +1 -1
- package/dist/esm/components/Atoms/Button/Button.stories.js +10 -0
- package/dist/esm/components/Atoms/Dropdown/Dropdown.d.ts +1 -0
- package/dist/esm/components/Atoms/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/esm/components/Atoms/Dropdown/Dropdown.js +4 -2
- package/dist/esm/components/Atoms/Dropdown/Dropdown.stories.d.ts +14 -0
- package/dist/esm/components/Atoms/Dropdown/Dropdown.stories.d.ts.map +1 -1
- package/dist/esm/components/Atoms/Dropdown/Dropdown.stories.js +10 -0
- package/dist/esm/components/Molecules/Carousel/Carousel.d.ts.map +1 -1
- package/dist/esm/components/Molecules/Carousel/Carousel.js +6 -2
- package/dist/esm/components/Molecules/Checkbox/Checkbox.d.ts +1 -0
- package/dist/esm/components/Molecules/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/esm/components/Molecules/Checkbox/Checkbox.js +4 -2
- package/dist/esm/components/Molecules/Checkbox/Checkbox.stories.d.ts +14 -0
- package/dist/esm/components/Molecules/Checkbox/Checkbox.stories.d.ts.map +1 -1
- package/dist/esm/components/Molecules/Checkbox/Checkbox.stories.js +10 -0
- package/dist/esm/components/Molecules/FacetGridOptions/FacetGridOptions.d.ts +3 -2
- package/dist/esm/components/Molecules/FacetGridOptions/FacetGridOptions.d.ts.map +1 -1
- package/dist/esm/components/Molecules/FacetGridOptions/FacetGridOptions.js +8 -3
- package/dist/esm/components/Molecules/FacetGridOptions/FacetGridOptions.stories.d.ts +14 -0
- package/dist/esm/components/Molecules/FacetGridOptions/FacetGridOptions.stories.d.ts.map +1 -1
- package/dist/esm/components/Molecules/FacetGridOptions/FacetGridOptions.stories.js +11 -1
- package/dist/esm/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.d.ts +3 -2
- package/dist/esm/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.d.ts.map +1 -1
- package/dist/esm/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.js +9 -4
- package/dist/esm/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.stories.d.ts +14 -0
- package/dist/esm/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.stories.d.ts.map +1 -1
- package/dist/esm/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.stories.js +11 -1
- package/dist/esm/components/Molecules/FacetListOptions/FacetListOptions.d.ts +3 -2
- package/dist/esm/components/Molecules/FacetListOptions/FacetListOptions.d.ts.map +1 -1
- package/dist/esm/components/Molecules/FacetListOptions/FacetListOptions.js +9 -4
- package/dist/esm/components/Molecules/FacetListOptions/FacetListOptions.stories.d.ts +14 -0
- package/dist/esm/components/Molecules/FacetListOptions/FacetListOptions.stories.d.ts.map +1 -1
- package/dist/esm/components/Molecules/FacetListOptions/FacetListOptions.stories.js +11 -1
- package/dist/esm/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.d.ts +3 -2
- package/dist/esm/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.d.ts.map +1 -1
- package/dist/esm/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.js +8 -3
- package/dist/esm/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.stories.d.ts +14 -0
- package/dist/esm/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.stories.d.ts.map +1 -1
- package/dist/esm/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.stories.js +11 -1
- package/dist/esm/components/Molecules/FacetSlider/FacetSlider.d.ts.map +1 -1
- package/dist/esm/components/Molecules/FacetSlider/FacetSlider.js +2 -1
- package/dist/esm/components/Molecules/Filter/Filter.d.ts.map +1 -1
- package/dist/esm/components/Molecules/Filter/Filter.js +2 -2
- package/dist/esm/components/Molecules/Pagination/Pagination.d.ts.map +1 -1
- package/dist/esm/components/Molecules/Pagination/Pagination.js +6 -6
- package/dist/esm/components/Molecules/Select/Select.d.ts.map +1 -1
- package/dist/esm/components/Molecules/Select/Select.js +5 -3
- package/dist/esm/components/Molecules/Slideout/Slideout.d.ts.map +1 -1
- package/dist/esm/components/Molecules/Slideout/Slideout.js +10 -1
- package/dist/esm/components/Organisms/Autocomplete/Autocomplete.d.ts.map +1 -1
- package/dist/esm/components/Organisms/Autocomplete/Autocomplete.js +18 -19
- package/dist/esm/components/Organisms/Facet/Facet.d.ts.map +1 -1
- package/dist/esm/components/Organisms/Facet/Facet.js +7 -6
- package/dist/esm/hooks/index.d.ts +1 -0
- package/dist/esm/hooks/index.d.ts.map +1 -1
- package/dist/esm/hooks/index.js +1 -0
- package/dist/esm/hooks/useA11y.d.ts +2 -0
- package/dist/esm/hooks/useA11y.d.ts.map +1 -0
- package/dist/esm/hooks/useA11y.js +21 -0
- 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:
|
|
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
|
|
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+
|
|
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
|
-
|
|
121
|
-
|
|
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;
|
package/dist/esm/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.stories.d.ts.map
CHANGED
|
@@ -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
|
|
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:
|
|
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;
|
|
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;;
|
|
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;;
|
|
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(
|
|
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":
|
|
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;
|
|
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;
|
|
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;;
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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;
|
|
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
|
});
|
|
@@ -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"}
|
package/dist/esm/hooks/index.js
CHANGED
|
@@ -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.
|
|
3
|
+
"version": "0.42.1",
|
|
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.
|
|
29
|
+
"@searchspring/snap-toolbox": "^0.42.1",
|
|
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
|
-
"@searchspring/snap-controller": "^0.
|
|
42
|
-
"@searchspring/snap-event-manager": "^0.
|
|
43
|
-
"@searchspring/snap-logger": "^0.
|
|
44
|
-
"@searchspring/snap-profiler": "^0.
|
|
45
|
-
"@searchspring/snap-store-mobx": "^0.
|
|
46
|
-
"@searchspring/snap-tracker": "^0.
|
|
47
|
-
"@searchspring/snap-url-manager": "^0.
|
|
40
|
+
"@searchspring/snap-client": "^0.42.1",
|
|
41
|
+
"@searchspring/snap-controller": "^0.42.1",
|
|
42
|
+
"@searchspring/snap-event-manager": "^0.42.1",
|
|
43
|
+
"@searchspring/snap-logger": "^0.42.1",
|
|
44
|
+
"@searchspring/snap-profiler": "^0.42.1",
|
|
45
|
+
"@searchspring/snap-store-mobx": "^0.42.1",
|
|
46
|
+
"@searchspring/snap-tracker": "^0.42.1",
|
|
47
|
+
"@searchspring/snap-url-manager": "^0.42.1",
|
|
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": "
|
|
69
|
+
"gitHead": "1f3abdf844a08fbeb2e8b96aa0f83e88b1fc9aac"
|
|
70
70
|
}
|