@searchspring/snap-preact-components 0.20.4 → 0.21.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/Merchandising/InlineBanner.d.ts +1 -0
- package/dist/cjs/components/Atoms/Merchandising/InlineBanner.d.ts.map +1 -1
- package/dist/cjs/components/Atoms/Merchandising/InlineBanner.js +5 -3
- package/dist/cjs/components/Atoms/Merchandising/InlineBanner.stories.d.ts +9 -0
- package/dist/cjs/components/Atoms/Merchandising/InlineBanner.stories.d.ts.map +1 -1
- package/dist/cjs/components/Atoms/Merchandising/InlineBanner.stories.js +8 -0
- package/dist/cjs/components/Molecules/Carousel/Carousel.d.ts +37 -2
- package/dist/cjs/components/Molecules/Carousel/Carousel.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/Carousel/Carousel.js +26 -11
- package/dist/cjs/components/Molecules/Carousel/Carousel.stories.d.ts +15 -0
- package/dist/cjs/components/Molecules/Carousel/Carousel.stories.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/Carousel/Carousel.stories.js +10 -0
- package/dist/cjs/components/Molecules/FacetGridOptions/FacetGridOptions.d.ts +2 -1
- package/dist/cjs/components/Molecules/FacetGridOptions/FacetGridOptions.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/FacetGridOptions/FacetGridOptions.js +6 -2
- package/dist/cjs/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.d.ts +2 -1
- package/dist/cjs/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.js +6 -2
- package/dist/cjs/components/Molecules/FacetListOptions/FacetListOptions.d.ts +2 -1
- package/dist/cjs/components/Molecules/FacetListOptions/FacetListOptions.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/FacetListOptions/FacetListOptions.js +6 -2
- package/dist/cjs/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.d.ts +2 -1
- package/dist/cjs/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.js +6 -2
- package/dist/cjs/components/Molecules/Result/Result.d.ts +1 -0
- package/dist/cjs/components/Molecules/Result/Result.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/Result/Result.js +5 -3
- package/dist/cjs/components/Molecules/Result/Result.stories.d.ts +9 -0
- package/dist/cjs/components/Molecules/Result/Result.stories.d.ts.map +1 -1
- package/dist/cjs/components/Molecules/Result/Result.stories.js +8 -0
- package/dist/cjs/components/Organisms/Autocomplete/Autocomplete.d.ts +3 -2
- package/dist/cjs/components/Organisms/Autocomplete/Autocomplete.d.ts.map +1 -1
- package/dist/cjs/components/Organisms/Autocomplete/Autocomplete.js +50 -53
- package/dist/cjs/components/Organisms/Autocomplete/Autocomplete.stories.d.ts +18 -0
- package/dist/cjs/components/Organisms/Autocomplete/Autocomplete.stories.d.ts.map +1 -1
- package/dist/cjs/components/Organisms/Autocomplete/Autocomplete.stories.js +16 -0
- package/dist/cjs/components/Organisms/Recommendation/Recommendation.d.ts +2 -2
- package/dist/cjs/components/Organisms/Recommendation/Recommendation.d.ts.map +1 -1
- package/dist/cjs/components/Organisms/Recommendation/Recommendation.js +9 -36
- package/dist/cjs/components/Organisms/Results/Results.d.ts +1 -7
- package/dist/cjs/components/Organisms/Results/Results.d.ts.map +1 -1
- package/dist/cjs/hooks/useDisplaySettings.d.ts +1 -1
- package/dist/cjs/hooks/useDisplaySettings.d.ts.map +1 -1
- package/dist/cjs/types.d.ts +6 -0
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/esm/components/Atoms/Merchandising/InlineBanner.d.ts +1 -0
- package/dist/esm/components/Atoms/Merchandising/InlineBanner.d.ts.map +1 -1
- package/dist/esm/components/Atoms/Merchandising/InlineBanner.js +6 -4
- package/dist/esm/components/Atoms/Merchandising/InlineBanner.stories.d.ts +9 -0
- package/dist/esm/components/Atoms/Merchandising/InlineBanner.stories.d.ts.map +1 -1
- package/dist/esm/components/Atoms/Merchandising/InlineBanner.stories.js +9 -0
- package/dist/esm/components/Molecules/Carousel/Carousel.d.ts +37 -2
- package/dist/esm/components/Molecules/Carousel/Carousel.d.ts.map +1 -1
- package/dist/esm/components/Molecules/Carousel/Carousel.js +30 -10
- package/dist/esm/components/Molecules/Carousel/Carousel.stories.d.ts +15 -0
- package/dist/esm/components/Molecules/Carousel/Carousel.stories.d.ts.map +1 -1
- package/dist/esm/components/Molecules/Carousel/Carousel.stories.js +11 -0
- package/dist/esm/components/Molecules/FacetGridOptions/FacetGridOptions.d.ts +2 -1
- package/dist/esm/components/Molecules/FacetGridOptions/FacetGridOptions.d.ts.map +1 -1
- package/dist/esm/components/Molecules/FacetGridOptions/FacetGridOptions.js +4 -1
- package/dist/esm/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.d.ts +2 -1
- package/dist/esm/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.d.ts.map +1 -1
- package/dist/esm/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.js +4 -1
- package/dist/esm/components/Molecules/FacetListOptions/FacetListOptions.d.ts +2 -1
- package/dist/esm/components/Molecules/FacetListOptions/FacetListOptions.d.ts.map +1 -1
- package/dist/esm/components/Molecules/FacetListOptions/FacetListOptions.js +4 -1
- package/dist/esm/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.d.ts +2 -1
- package/dist/esm/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.d.ts.map +1 -1
- package/dist/esm/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.js +4 -1
- package/dist/esm/components/Molecules/Result/Result.d.ts +1 -0
- package/dist/esm/components/Molecules/Result/Result.d.ts.map +1 -1
- package/dist/esm/components/Molecules/Result/Result.js +5 -3
- package/dist/esm/components/Molecules/Result/Result.stories.d.ts +9 -0
- package/dist/esm/components/Molecules/Result/Result.stories.d.ts.map +1 -1
- package/dist/esm/components/Molecules/Result/Result.stories.js +9 -0
- package/dist/esm/components/Organisms/Autocomplete/Autocomplete.d.ts +3 -2
- package/dist/esm/components/Organisms/Autocomplete/Autocomplete.d.ts.map +1 -1
- package/dist/esm/components/Organisms/Autocomplete/Autocomplete.js +54 -56
- package/dist/esm/components/Organisms/Autocomplete/Autocomplete.stories.d.ts +18 -0
- package/dist/esm/components/Organisms/Autocomplete/Autocomplete.stories.d.ts.map +1 -1
- package/dist/esm/components/Organisms/Autocomplete/Autocomplete.stories.js +18 -0
- package/dist/esm/components/Organisms/Recommendation/Recommendation.d.ts +2 -2
- package/dist/esm/components/Organisms/Recommendation/Recommendation.d.ts.map +1 -1
- package/dist/esm/components/Organisms/Recommendation/Recommendation.js +15 -38
- package/dist/esm/components/Organisms/Results/Results.d.ts +1 -7
- package/dist/esm/components/Organisms/Results/Results.d.ts.map +1 -1
- package/dist/esm/hooks/useDisplaySettings.d.ts +1 -1
- package/dist/esm/hooks/useDisplaySettings.d.ts.map +1 -1
- package/dist/esm/types.d.ts +6 -0
- package/dist/esm/types.d.ts.map +1 -1
- package/package.json +11 -11
|
@@ -2,12 +2,14 @@ import { useRef } from 'preact/hooks';
|
|
|
2
2
|
import { jsx, css } from '@emotion/react';
|
|
3
3
|
import classnames from 'classnames';
|
|
4
4
|
import { observer } from 'mobx-react-lite';
|
|
5
|
+
import deepmerge from 'deepmerge';
|
|
5
6
|
import SwiperCore, { Pagination, Navigation } from 'swiper/core';
|
|
6
7
|
import 'swiper/swiper.min.css';
|
|
7
8
|
import { Icon } from '../../Atoms/Icon/Icon';
|
|
8
9
|
import { Swiper, SwiperSlide } from 'swiper/react';
|
|
9
10
|
import { defined } from '../../../utilities';
|
|
10
11
|
import { useTheme, CacheProvider } from '../../../providers';
|
|
12
|
+
import { useDisplaySettings } from '../../../hooks/useDisplaySettings';
|
|
11
13
|
const CSS = {
|
|
12
14
|
carousel: ({ theme, vertical }) => css({
|
|
13
15
|
display: 'flex',
|
|
@@ -45,6 +47,9 @@ const CSS = {
|
|
|
45
47
|
display: 'flex',
|
|
46
48
|
justifyContent: 'center',
|
|
47
49
|
alignItems: 'center',
|
|
50
|
+
'&.ss__carousel__next-wrapper--hidden, &.ss__carousel__prev-wrapper--hidden': {
|
|
51
|
+
display: 'none',
|
|
52
|
+
},
|
|
48
53
|
},
|
|
49
54
|
'.ss__carousel__next, .ss__carousel__prev': {
|
|
50
55
|
padding: '5px',
|
|
@@ -86,7 +91,7 @@ const CSS = {
|
|
|
86
91
|
},
|
|
87
92
|
}),
|
|
88
93
|
};
|
|
89
|
-
const defaultCarouselBreakpoints = {
|
|
94
|
+
export const defaultCarouselBreakpoints = {
|
|
90
95
|
0: {
|
|
91
96
|
slidesPerView: 1,
|
|
92
97
|
slidesPerGroup: 1,
|
|
@@ -113,7 +118,7 @@ const defaultCarouselBreakpoints = {
|
|
|
113
118
|
spaceBetween: 10,
|
|
114
119
|
},
|
|
115
120
|
};
|
|
116
|
-
const defaultVerticalCarouselBreakpoints = {
|
|
121
|
+
export const defaultVerticalCarouselBreakpoints = {
|
|
117
122
|
0: {
|
|
118
123
|
slidesPerView: 1,
|
|
119
124
|
slidesPerGroup: 1,
|
|
@@ -123,18 +128,33 @@ const defaultVerticalCarouselBreakpoints = {
|
|
|
123
128
|
export const Carousel = observer((properties) => {
|
|
124
129
|
const globalTheme = useTheme();
|
|
125
130
|
const theme = { ...globalTheme, ...properties.theme };
|
|
126
|
-
|
|
131
|
+
let props = {
|
|
127
132
|
// default props
|
|
128
133
|
breakpoints: properties.vertical ? defaultVerticalCarouselBreakpoints : defaultCarouselBreakpoints,
|
|
129
134
|
pagination: false,
|
|
130
135
|
loop: true,
|
|
136
|
+
autoAdjustSlides: true,
|
|
131
137
|
// global theme
|
|
132
138
|
...globalTheme?.components?.carousel,
|
|
133
139
|
//props
|
|
134
140
|
...properties,
|
|
135
141
|
...properties.theme?.components?.carousel,
|
|
136
142
|
};
|
|
137
|
-
const
|
|
143
|
+
const displaySettings = useDisplaySettings(props.breakpoints);
|
|
144
|
+
if (displaySettings && Object.keys(displaySettings).length) {
|
|
145
|
+
const theme = deepmerge(props?.theme || {}, displaySettings?.theme || {});
|
|
146
|
+
if (props.autoAdjustSlides && props.children.length < displaySettings.slidesPerView) {
|
|
147
|
+
displaySettings.slidesPerView = props.children.length;
|
|
148
|
+
displaySettings.slidesPerGroup = props.children.length;
|
|
149
|
+
displaySettings.loop = false;
|
|
150
|
+
}
|
|
151
|
+
props = {
|
|
152
|
+
...props,
|
|
153
|
+
...displaySettings,
|
|
154
|
+
theme,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
const { children, breakpoints, loop, pagination, nextButton, prevButton, hideButtons, vertical, autoAdjustSlides, onInit, onNextButtonClick, onPrevButtonClick, onClick, disableStyles, style, className, ...additionalProps } = props;
|
|
138
158
|
const subProps = {
|
|
139
159
|
icon: {
|
|
140
160
|
// default props
|
|
@@ -162,8 +182,8 @@ export const Carousel = observer((properties) => {
|
|
|
162
182
|
}
|
|
163
183
|
return (children && (jsx(CacheProvider, null,
|
|
164
184
|
jsx("div", { ref: rootComponentRef, ...styling, className: classnames('ss__carousel', vertical ? 'ss__carousel-vertical' : '', className) },
|
|
165
|
-
|
|
166
|
-
jsx("div", { className: "ss__carousel__prev", ref: navigationPrevRef, onClick: onPrevButtonClick && ((e) => onPrevButtonClick(e)) }, prevButton || jsx(Icon, { icon: vertical ? 'angle-up' : 'angle-left', ...subProps.icon })))
|
|
185
|
+
jsx("div", { className: classnames('ss__carousel__prev-wrapper', { 'ss__carousel__prev-wrapper--hidden': hideButtons }) },
|
|
186
|
+
jsx("div", { className: "ss__carousel__prev", ref: navigationPrevRef, onClick: onPrevButtonClick && ((e) => onPrevButtonClick(e)) }, prevButton || jsx(Icon, { icon: vertical ? 'angle-up' : 'angle-left', ...subProps.icon }))),
|
|
167
187
|
jsx(Swiper, { centerInsufficientSlides: true, onInit: (swiper) => {
|
|
168
188
|
//@ts-ignore
|
|
169
189
|
swiper.params.navigation.prevEl = navigationPrevRef.current ? navigationPrevRef.current : undefined;
|
|
@@ -174,13 +194,13 @@ export const Carousel = observer((properties) => {
|
|
|
174
194
|
}
|
|
175
195
|
}, onClick: (swiper, e) => {
|
|
176
196
|
onClick && onClick(swiper, e);
|
|
177
|
-
}, direction: vertical ? 'vertical' : 'horizontal', loop: loop,
|
|
197
|
+
}, direction: vertical ? 'vertical' : 'horizontal', loop: loop, pagination: pagination
|
|
178
198
|
? {
|
|
179
199
|
clickable: true,
|
|
180
200
|
}
|
|
181
|
-
: false, ...additionalProps }, children.map((child) => {
|
|
201
|
+
: false, ...additionalProps, ...displaySettings }, children.map((child) => {
|
|
182
202
|
return jsx(SwiperSlide, null, child);
|
|
183
203
|
})),
|
|
184
|
-
|
|
185
|
-
jsx("div", { className: "ss__carousel__next", ref: navigationNextRef, onClick: onNextButtonClick && ((e) => onNextButtonClick(e)) }, nextButton || jsx(Icon, { icon: vertical ? 'angle-down' : 'angle-right', ...subProps.icon })))))))
|
|
204
|
+
jsx("div", { className: classnames('ss__carousel__next-wrapper', { 'ss__carousel__next-wrapper--hidden': hideButtons }) },
|
|
205
|
+
jsx("div", { className: "ss__carousel__next", ref: navigationNextRef, onClick: onNextButtonClick && ((e) => onNextButtonClick(e)) }, nextButton || jsx(Icon, { icon: vertical ? 'angle-down' : 'angle-right', ...subProps.icon })))))));
|
|
186
206
|
});
|
|
@@ -160,6 +160,21 @@ declare const _default: {
|
|
|
160
160
|
type: string;
|
|
161
161
|
};
|
|
162
162
|
};
|
|
163
|
+
autoAdjustSlides: {
|
|
164
|
+
defaultValue: boolean;
|
|
165
|
+
description: string;
|
|
166
|
+
table: {
|
|
167
|
+
type: {
|
|
168
|
+
summary: string;
|
|
169
|
+
};
|
|
170
|
+
defaultValue: {
|
|
171
|
+
summary: boolean;
|
|
172
|
+
};
|
|
173
|
+
};
|
|
174
|
+
control: {
|
|
175
|
+
type: string;
|
|
176
|
+
};
|
|
177
|
+
};
|
|
163
178
|
onNextButtonClick: {
|
|
164
179
|
description: string;
|
|
165
180
|
table: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Carousel.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/Carousel/Carousel.stories.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAY,CAAC,EAAE,MAAM,QAAQ,CAAC
|
|
1
|
+
{"version":3,"file":"Carousel.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/Carousel/Carousel.stories.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAY,CAAC,EAAE,MAAM,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASrC,wBAqJE;AAGF,eAAO,MAAM,MAAM;;;;;;;CAQlB,CAAC;AAOF,eAAO,MAAM,KAAK,+BAajB,CAAC"}
|
|
@@ -95,6 +95,17 @@ export default {
|
|
|
95
95
|
},
|
|
96
96
|
control: { type: 'object' },
|
|
97
97
|
},
|
|
98
|
+
autoAdjustSlides: {
|
|
99
|
+
defaultValue: true,
|
|
100
|
+
description: 'If true and children length is less than the current breakpoint slidesPerView value, slidesPerView and slidesPerGroup will be set to the children length and loop to false',
|
|
101
|
+
table: {
|
|
102
|
+
type: {
|
|
103
|
+
summary: 'boolean',
|
|
104
|
+
},
|
|
105
|
+
defaultValue: { summary: true },
|
|
106
|
+
},
|
|
107
|
+
control: { type: 'boolean' },
|
|
108
|
+
},
|
|
98
109
|
onNextButtonClick: {
|
|
99
110
|
description: 'Carousel next button click event handler',
|
|
100
111
|
table: {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import { ComponentProps, ValueFacetValue } from '../../../types';
|
|
2
3
|
export declare const FacetGridOptions: ((properties: FacetGridOptionsProps) => JSX.Element) & {
|
|
3
4
|
displayName: string;
|
|
@@ -6,7 +7,7 @@ export interface FacetGridOptionsProps extends ComponentProps {
|
|
|
6
7
|
values: ValueFacetValue[];
|
|
7
8
|
columns?: number;
|
|
8
9
|
gapSize?: string;
|
|
9
|
-
onClick?: (e:
|
|
10
|
+
onClick?: (e: React.MouseEvent) => void;
|
|
10
11
|
previewOnFocus?: boolean;
|
|
11
12
|
valueProps?: any;
|
|
12
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FacetGridOptions.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/FacetGridOptions/FacetGridOptions.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAiEjE,eAAO,MAAM,gBAAgB,gBAAyB,qBAAqB,KAAG,WAAW;;
|
|
1
|
+
{"version":3,"file":"FacetGridOptions.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/FacetGridOptions/FacetGridOptions.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAiEjE,eAAO,MAAM,gBAAgB,gBAAyB,qBAAqB,KAAG,WAAW;;CAoDvF,CAAC;AAEH,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC5D,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,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"}
|
|
@@ -81,7 +81,10 @@ export const FacetGridOptions = observer((properties) => {
|
|
|
81
81
|
styling.css = [style];
|
|
82
82
|
}
|
|
83
83
|
return (values?.length && (jsx(CacheProvider, null,
|
|
84
|
-
jsx("div", { ...styling, className: classnames('ss__facet-grid-options', className) }, values.map((value) => (jsx("a", { className: classnames('ss__facet-grid-options__option', { 'ss__facet-grid-options__option--filtered': value.filtered }),
|
|
84
|
+
jsx("div", { ...styling, className: classnames('ss__facet-grid-options', className) }, values.map((value) => (jsx("a", { className: classnames('ss__facet-grid-options__option', { 'ss__facet-grid-options__option--filtered': value.filtered }), onFocus: () => previewOnFocus && value.preview && value.preview(), ...valueProps, href: value.url?.link?.href, onClick: (e) => {
|
|
85
|
+
value.url?.link?.onClick(e);
|
|
86
|
+
onClick && onClick(e);
|
|
87
|
+
} },
|
|
85
88
|
jsx("span", { className: classnames('ss__facet-grid-options__option__value', {
|
|
86
89
|
'ss__facet-grid-options__option__value--smaller': value.label.length > 3,
|
|
87
90
|
}) }, value.label))))))));
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import { ComponentProps, HierarchyFacetValue } from '../../../types';
|
|
2
3
|
export declare const FacetHierarchyOptions: ((properties: FacetHierarchyOptionsProps) => JSX.Element) & {
|
|
3
4
|
displayName: string;
|
|
@@ -5,7 +6,7 @@ export declare const FacetHierarchyOptions: ((properties: FacetHierarchyOptionsP
|
|
|
5
6
|
export interface FacetHierarchyOptionsProps extends ComponentProps {
|
|
6
7
|
values: HierarchyFacetValue[];
|
|
7
8
|
hideCount?: boolean;
|
|
8
|
-
onClick?: (e:
|
|
9
|
+
onClick?: (e: React.MouseEvent) => void;
|
|
9
10
|
previewOnFocus?: boolean;
|
|
10
11
|
valueProps?: any;
|
|
11
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FacetHierarchyOptions.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AA2CrE,eAAO,MAAM,qBAAqB,gBAAyB,0BAA0B,KAAG,WAAW;;
|
|
1
|
+
{"version":3,"file":"FacetHierarchyOptions.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AA2CrE,eAAO,MAAM,qBAAqB,gBAAyB,0BAA0B,KAAG,WAAW;;CAqDjG,CAAC;AACH,MAAM,WAAW,0BAA2B,SAAQ,cAAc;IACjE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,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"}
|
|
@@ -61,7 +61,10 @@ export const FacetHierarchyOptions = observer((properties) => {
|
|
|
61
61
|
styling.css = [style];
|
|
62
62
|
}
|
|
63
63
|
return (values?.length && (jsx(CacheProvider, null,
|
|
64
|
-
jsx("div", { ...styling, className: classnames('ss__facet-hierarchy-options', className) }, values.map((value) => (jsx("a", { className: classnames('ss__facet-hierarchy-options__option', { 'ss__facet-hierarchy-options__option--filtered': value.filtered }, { 'ss__facet-hierarchy-options__option--return': value.history && !value.filtered }),
|
|
64
|
+
jsx("div", { ...styling, className: classnames('ss__facet-hierarchy-options', className) }, values.map((value) => (jsx("a", { className: classnames('ss__facet-hierarchy-options__option', { 'ss__facet-hierarchy-options__option--filtered': value.filtered }, { 'ss__facet-hierarchy-options__option--return': value.history && !value.filtered }), href: value.url?.link?.href, onClick: (e) => {
|
|
65
|
+
value.url?.link?.onClick(e);
|
|
66
|
+
onClick && onClick(e);
|
|
67
|
+
}, onFocus: () => previewOnFocus && value.preview && value.preview(), ...valueProps },
|
|
65
68
|
jsx("span", { className: "ss__facet-hierarchy-options__option__value" },
|
|
66
69
|
value.label,
|
|
67
70
|
!hideCount && value.count > 0 && !value.filtered && (jsx("span", { className: "ss__facet-hierarchy-options__option__value__count" },
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import { ComponentProps, ValueFacetValue } from '../../../types';
|
|
2
3
|
export declare const FacetListOptions: ((properties: FacetListOptionsProps) => JSX.Element) & {
|
|
3
4
|
displayName: string;
|
|
@@ -6,7 +7,7 @@ export interface FacetListOptionsProps extends ComponentProps {
|
|
|
6
7
|
values: ValueFacetValue[];
|
|
7
8
|
hideCheckbox?: boolean;
|
|
8
9
|
hideCount?: boolean;
|
|
9
|
-
onClick?: (e:
|
|
10
|
+
onClick?: (e: React.MouseEvent) => void;
|
|
10
11
|
previewOnFocus?: boolean;
|
|
11
12
|
valueProps?: any;
|
|
12
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FacetListOptions.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/FacetListOptions/FacetListOptions.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AA+BjE,eAAO,MAAM,gBAAgB,gBAAyB,qBAAqB,KAAG,WAAW;;
|
|
1
|
+
{"version":3,"file":"FacetListOptions.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/FacetListOptions/FacetListOptions.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AA+BjE,eAAO,MAAM,gBAAgB,gBAAyB,qBAAqB,KAAG,WAAW;;CA+DvF,CAAC;AAEH,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC5D,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,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"}
|
|
@@ -63,7 +63,10 @@ export const FacetListOptions = observer((properties) => {
|
|
|
63
63
|
styling.css = [style];
|
|
64
64
|
}
|
|
65
65
|
return (values?.length && (jsx(CacheProvider, null,
|
|
66
|
-
jsx("div", { ...styling, className: classnames('ss__facet-list-options', className) }, values.map((value) => (jsx("a", { className: classnames('ss__facet-list-options__option', { 'ss__facet-list-options__option--filtered': value.filtered }),
|
|
66
|
+
jsx("div", { ...styling, className: classnames('ss__facet-list-options', className) }, values.map((value) => (jsx("a", { className: classnames('ss__facet-list-options__option', { 'ss__facet-list-options__option--filtered': value.filtered }), onFocus: () => previewOnFocus && value.preview && value.preview(), ...valueProps, href: value.url?.link?.href, onClick: (e) => {
|
|
67
|
+
value.url?.link?.onClick(e);
|
|
68
|
+
onClick && onClick(e);
|
|
69
|
+
} },
|
|
67
70
|
!hideCheckbox && jsx(Checkbox, { ...subProps.checkbox, checked: value.filtered }),
|
|
68
71
|
jsx("span", { className: "ss__facet-list-options__option__value" },
|
|
69
72
|
value.label,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import { ValueFacetValue, ComponentProps } from '../../../types';
|
|
2
3
|
export declare const FacetPaletteOptions: ((properties: FacetPaletteOptionsProps) => JSX.Element) & {
|
|
3
4
|
displayName: string;
|
|
@@ -8,7 +9,7 @@ export interface FacetPaletteOptionsProps extends ComponentProps {
|
|
|
8
9
|
columns?: number;
|
|
9
10
|
gapSize?: string;
|
|
10
11
|
hideIcon?: boolean;
|
|
11
|
-
onClick?: (e:
|
|
12
|
+
onClick?: (e: React.MouseEvent) => void;
|
|
12
13
|
previewOnFocus?: boolean;
|
|
13
14
|
valueProps?: any;
|
|
14
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FacetPaletteOptions.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAiFjE,eAAO,MAAM,mBAAmB,gBAAyB,wBAAwB,KAAG,WAAW;;
|
|
1
|
+
{"version":3,"file":"FacetPaletteOptions.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.tsx"],"names":[],"mappings":";AAUA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAiFjE,eAAO,MAAM,mBAAmB,gBAAyB,wBAAwB,KAAG,WAAW;;CA6E7F,CAAC;AAEH,MAAM,WAAW,wBAAyB,SAAQ,cAAc;IAC/D,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,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"}
|
|
@@ -117,7 +117,10 @@ export const FacetPaletteOptions = observer((properties) => {
|
|
|
117
117
|
styling.css = [style];
|
|
118
118
|
}
|
|
119
119
|
return (values?.length && (jsx(CacheProvider, null,
|
|
120
|
-
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 }),
|
|
120
|
+
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) => {
|
|
121
|
+
value.url?.link?.onClick(e);
|
|
122
|
+
onClick && onClick(e);
|
|
123
|
+
} },
|
|
121
124
|
jsx("div", { className: "ss__facet-palette-options__option__wrapper" },
|
|
122
125
|
jsx("div", { className: classnames('ss__facet-palette-options__option__palette', `ss__facet-palette-options__option__palette--${filters.handleize(value.value)}`), css: { background: value.value } }, !hideIcon && value.filtered && jsx(Icon, { ...subProps.icon }))),
|
|
123
126
|
!hideLabel && jsx("span", { className: "ss__facet-palette-options__option__value" }, value.label))))))));
|
|
@@ -18,6 +18,7 @@ export interface ResultProps extends ComponentProps {
|
|
|
18
18
|
fallback?: string;
|
|
19
19
|
layout?: LayoutType;
|
|
20
20
|
truncateTitle?: TruncateTitleProps;
|
|
21
|
+
onClick?: (e: React.MouseEvent<HTMLAnchorElement, Event>) => void;
|
|
21
22
|
controller?: SearchController | AutocompleteController | RecommendationController;
|
|
22
23
|
}
|
|
23
24
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Result.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/Result/Result.tsx"],"names":[],"mappings":";AAaA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAU,MAAM,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AA4DxH,eAAO,MAAM,MAAM,gBAAyB,WAAW,KAAG,WAAW;;
|
|
1
|
+
{"version":3,"file":"Result.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/Result/Result.tsx"],"names":[],"mappings":";AAaA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAU,MAAM,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AA4DxH,eAAO,MAAM,MAAM,gBAAyB,WAAW,KAAG,WAAW;;CA2HnE,CAAC;AAOH,UAAU,kBAAkB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAY,SAAQ,cAAc;IAClD,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;IAClE,UAAU,CAAC,EAAE,gBAAgB,GAAG,sBAAsB,GAAG,wBAAwB,CAAC;CAClF"}
|
|
@@ -73,7 +73,7 @@ export const Result = observer((properties) => {
|
|
|
73
73
|
...properties,
|
|
74
74
|
...properties.theme?.components?.result,
|
|
75
75
|
};
|
|
76
|
-
const { result, hideBadge, hideTitle, hidePricing, hideImage, detailSlot, fallback, disableStyles, className, layout, style, controller } = props;
|
|
76
|
+
const { result, hideBadge, hideTitle, hidePricing, hideImage, detailSlot, fallback, disableStyles, className, layout, onClick, style, controller } = props;
|
|
77
77
|
const core = result?.mappings?.core;
|
|
78
78
|
const subProps = {
|
|
79
79
|
price: {
|
|
@@ -131,14 +131,16 @@ export const Result = observer((properties) => {
|
|
|
131
131
|
return (core && (jsx(CacheProvider, null,
|
|
132
132
|
jsx("article", { ...styling, className: classnames('ss__result', `ss__result--${layout}`, className) },
|
|
133
133
|
jsx("div", { className: "ss__result__image-wrapper" },
|
|
134
|
-
jsx("a", { href: core.url,
|
|
134
|
+
jsx("a", { href: core.url, onClick: (e) => {
|
|
135
|
+
onClick && onClick(e);
|
|
135
136
|
controller?.track?.product?.click(e, result);
|
|
136
137
|
} },
|
|
137
138
|
!hideBadge && onSale && jsx(Badge, { ...subProps.badge }),
|
|
138
139
|
!hideImage && jsx(Image, { ...subProps.image }))),
|
|
139
140
|
jsx("div", { className: "ss__result__details" },
|
|
140
141
|
!hideTitle && (jsx("div", { className: "ss__result__details__title" },
|
|
141
|
-
jsx("a", { href: core.url,
|
|
142
|
+
jsx("a", { href: core.url, onClick: (e) => {
|
|
143
|
+
onClick && onClick(e);
|
|
142
144
|
controller?.track?.product?.click(e, result);
|
|
143
145
|
}, dangerouslySetInnerHTML: {
|
|
144
146
|
__html: displayName,
|
|
@@ -186,6 +186,15 @@ declare const _default: {
|
|
|
186
186
|
options: Layout[];
|
|
187
187
|
};
|
|
188
188
|
};
|
|
189
|
+
onClick: {
|
|
190
|
+
description: string;
|
|
191
|
+
table: {
|
|
192
|
+
type: {
|
|
193
|
+
summary: string;
|
|
194
|
+
};
|
|
195
|
+
};
|
|
196
|
+
action: string;
|
|
197
|
+
};
|
|
189
198
|
controller: {
|
|
190
199
|
description: string;
|
|
191
200
|
table: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Result.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/Result/Result.stories.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAI3B,OAAO,EAAU,WAAW,EAAE,MAAM,UAAU,CAAC;AAK/C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC
|
|
1
|
+
{"version":3,"file":"Result.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/Result/Result.stories.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAI3B,OAAO,EAAU,WAAW,EAAE,MAAM,UAAU,CAAC;AAK/C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAExC,wBAwIE;AAKF,eAAO,MAAM,OAAO,KAAoB,CAAC;AAUzC,eAAO,MAAM,YAAY,KAAoB,CAAC;AAe9C,eAAO,MAAM,aAAa,KAAoB,CAAC"}
|
|
@@ -116,6 +116,15 @@ export default {
|
|
|
116
116
|
options: [Layout.GRID, Layout.LIST],
|
|
117
117
|
},
|
|
118
118
|
},
|
|
119
|
+
onClick: {
|
|
120
|
+
description: 'Custom onClick event handler',
|
|
121
|
+
table: {
|
|
122
|
+
type: {
|
|
123
|
+
summary: 'function',
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
action: 'onClick',
|
|
127
|
+
},
|
|
119
128
|
controller: {
|
|
120
129
|
description: 'Controller reference',
|
|
121
130
|
table: {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import type { AutocompleteController } from '@searchspring/snap-controller';
|
|
3
|
-
import { BreakpointsProps } from '
|
|
4
|
-
import { ComponentProps } from '../../../types';
|
|
3
|
+
import { ComponentProps, BreakpointsProps } from '../../../types';
|
|
5
4
|
export declare const Autocomplete: ((properties: AutocompleteProps) => JSX.Element) & {
|
|
6
5
|
displayName: string;
|
|
7
6
|
};
|
|
@@ -28,5 +27,7 @@ export interface AutocompleteProps extends ComponentProps {
|
|
|
28
27
|
breakpoints?: BreakpointsProps;
|
|
29
28
|
controller: AutocompleteController;
|
|
30
29
|
width?: string;
|
|
30
|
+
onFacetOptionClick?: (e: any) => void;
|
|
31
|
+
onTermClick?: (e: any) => void;
|
|
31
32
|
}
|
|
32
33
|
//# sourceMappingURL=Autocomplete.d.ts.map
|
|
@@ -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;
|
|
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;AAQ5E,OAAO,EAAc,cAAc,EAAgB,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AA2J5F,eAAO,MAAM,YAAY,gBAAyB,iBAAiB,KAAG,WAAW;;CAyX/E,CAAC;AAkCH,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACxD,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,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,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,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,UAAU,EAAE,sBAAsB,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,CAAC,CAAC,KAAA,KAAK,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAA,KAAK,IAAI,CAAC;CAC1B"}
|
|
@@ -137,7 +137,6 @@ const CSS = {
|
|
|
137
137
|
};
|
|
138
138
|
export const Autocomplete = observer((properties) => {
|
|
139
139
|
const globalTheme = useTheme();
|
|
140
|
-
const theme = { ...globalTheme, ...properties.theme };
|
|
141
140
|
let props = {
|
|
142
141
|
// default props
|
|
143
142
|
termsTitle: '',
|
|
@@ -169,25 +168,6 @@ export const Autocomplete = observer((properties) => {
|
|
|
169
168
|
rows: 3,
|
|
170
169
|
},
|
|
171
170
|
};
|
|
172
|
-
const displaySettings = useDisplaySettings(breakpoints);
|
|
173
|
-
if (displaySettings && Object.keys(displaySettings).length) {
|
|
174
|
-
const theme = deepmerge(props?.theme || {}, displaySettings?.theme || {});
|
|
175
|
-
props = {
|
|
176
|
-
...props,
|
|
177
|
-
...displaySettings,
|
|
178
|
-
theme,
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
const { hideTerms, hideFacets, hideContent, hideBanners, hideLink, horizontalTerms, vertical, termsTitle, trendingTitle, facetsTitle, contentTitle, viewportMaxHeight, termsSlot, facetsSlot, contentSlot, resultsSlot, noResultsSlot, linkSlot, disableStyles, className, width, style, controller, } = props;
|
|
182
|
-
let { input } = props;
|
|
183
|
-
let inputViewportOffsetBottom;
|
|
184
|
-
if (input) {
|
|
185
|
-
if (typeof input === 'string') {
|
|
186
|
-
input = document.querySelector(input);
|
|
187
|
-
}
|
|
188
|
-
const rect = input?.getBoundingClientRect();
|
|
189
|
-
inputViewportOffsetBottom = rect?.bottom || 0;
|
|
190
|
-
}
|
|
191
171
|
let delayTimeout;
|
|
192
172
|
const delayTime = 333;
|
|
193
173
|
const valueProps = {
|
|
@@ -201,6 +181,55 @@ export const Autocomplete = observer((properties) => {
|
|
|
201
181
|
clearTimeout(delayTimeout);
|
|
202
182
|
},
|
|
203
183
|
};
|
|
184
|
+
const themeOverride = {
|
|
185
|
+
components: {
|
|
186
|
+
facet: {
|
|
187
|
+
limit: 6,
|
|
188
|
+
disableOverflow: true,
|
|
189
|
+
disableCollapse: true,
|
|
190
|
+
previewOnFocus: true,
|
|
191
|
+
valueProps,
|
|
192
|
+
},
|
|
193
|
+
facetGridOptions: {
|
|
194
|
+
columns: 3,
|
|
195
|
+
onClick: properties.onFacetOptionClick,
|
|
196
|
+
},
|
|
197
|
+
facetHierarchyOptions: {
|
|
198
|
+
hideCount: true,
|
|
199
|
+
onClick: properties.onFacetOptionClick,
|
|
200
|
+
},
|
|
201
|
+
facetListOptions: {
|
|
202
|
+
hideCheckbox: true,
|
|
203
|
+
hideCount: true,
|
|
204
|
+
onClick: properties.onFacetOptionClick,
|
|
205
|
+
},
|
|
206
|
+
facetPaletteOptions: {
|
|
207
|
+
hideLabel: true,
|
|
208
|
+
columns: 3,
|
|
209
|
+
onClick: properties.onFacetOptionClick,
|
|
210
|
+
},
|
|
211
|
+
result: {
|
|
212
|
+
hideBadge: true,
|
|
213
|
+
},
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
const displaySettings = useDisplaySettings(breakpoints) || {};
|
|
217
|
+
const theme = deepmerge(themeOverride, deepmerge(props?.theme || {}, displaySettings?.theme || {}));
|
|
218
|
+
props = {
|
|
219
|
+
...props,
|
|
220
|
+
...displaySettings,
|
|
221
|
+
theme,
|
|
222
|
+
};
|
|
223
|
+
let { input } = props;
|
|
224
|
+
let inputViewportOffsetBottom;
|
|
225
|
+
if (input) {
|
|
226
|
+
if (typeof input === 'string') {
|
|
227
|
+
input = document.querySelector(input);
|
|
228
|
+
}
|
|
229
|
+
const rect = input?.getBoundingClientRect();
|
|
230
|
+
inputViewportOffsetBottom = rect?.bottom || 0;
|
|
231
|
+
}
|
|
232
|
+
const { hideTerms, hideFacets, hideContent, hideBanners, hideLink, horizontalTerms, vertical, termsTitle, trendingTitle, facetsTitle, contentTitle, viewportMaxHeight, termsSlot, facetsSlot, contentSlot, resultsSlot, noResultsSlot, linkSlot, onTermClick, disableStyles, className, width, style, controller, } = props;
|
|
204
233
|
const subProps = {
|
|
205
234
|
facets: {
|
|
206
235
|
// default props
|
|
@@ -211,32 +240,7 @@ export const Autocomplete = observer((properties) => {
|
|
|
211
240
|
...defined({
|
|
212
241
|
disableStyles,
|
|
213
242
|
}),
|
|
214
|
-
|
|
215
|
-
theme: deepmerge({
|
|
216
|
-
components: {
|
|
217
|
-
facet: {
|
|
218
|
-
limit: 6,
|
|
219
|
-
disableOverflow: true,
|
|
220
|
-
disableCollapse: true,
|
|
221
|
-
previewOnFocus: true,
|
|
222
|
-
valueProps,
|
|
223
|
-
},
|
|
224
|
-
facetGridOptions: {
|
|
225
|
-
columns: 3,
|
|
226
|
-
},
|
|
227
|
-
facetHierarchyOptions: {
|
|
228
|
-
hideCount: true,
|
|
229
|
-
},
|
|
230
|
-
facetListOptions: {
|
|
231
|
-
hideCheckbox: true,
|
|
232
|
-
hideCount: true,
|
|
233
|
-
},
|
|
234
|
-
facetPaletteOptions: {
|
|
235
|
-
hideLabel: true,
|
|
236
|
-
columns: 3,
|
|
237
|
-
},
|
|
238
|
-
},
|
|
239
|
-
}, { ...props.theme }),
|
|
243
|
+
theme: props.theme,
|
|
240
244
|
},
|
|
241
245
|
banner: {
|
|
242
246
|
// default props
|
|
@@ -261,13 +265,7 @@ export const Autocomplete = observer((properties) => {
|
|
|
261
265
|
disableStyles,
|
|
262
266
|
}),
|
|
263
267
|
// component theme overrides
|
|
264
|
-
theme:
|
|
265
|
-
components: {
|
|
266
|
-
result: {
|
|
267
|
-
hideBadge: true,
|
|
268
|
-
},
|
|
269
|
-
},
|
|
270
|
-
}, { ...props.theme }),
|
|
268
|
+
theme: props.theme,
|
|
271
269
|
},
|
|
272
270
|
icon: {
|
|
273
271
|
// default props
|
|
@@ -321,21 +319,21 @@ export const Autocomplete = observer((properties) => {
|
|
|
321
319
|
}
|
|
322
320
|
return (visible && (jsx(CacheProvider, null,
|
|
323
321
|
jsx("div", { ...styling, className: classnames('ss__autocomplete', className, { 'ss__autocomplete--only-terms': onlyTerms }), onClick: (e) => e.stopPropagation() },
|
|
324
|
-
!hideTerms && (jsx("div", { className: classnames('ss__autocomplete__terms', { 'ss__autocomplete__terms-trending': showTrending }) }, termsSlot ? (cloneWithProps(termsSlot, { terms, trending, termsTitle, trendingTitle, showTrending, valueProps, emIfy, controller })) : (jsx(Fragment, null,
|
|
322
|
+
!hideTerms && (jsx("div", { className: classnames('ss__autocomplete__terms', { 'ss__autocomplete__terms-trending': showTrending }) }, termsSlot ? (cloneWithProps(termsSlot, { terms, trending, termsTitle, trendingTitle, showTrending, valueProps, emIfy, onTermClick, controller })) : (jsx(Fragment, null,
|
|
325
323
|
terms.length > 0 ? (jsx(Fragment, null,
|
|
326
324
|
termsTitle ? (jsx("div", { className: "ss__autocomplete__title ss__autocomplete__title--terms" },
|
|
327
325
|
jsx("h5", null, termsTitle))) : null,
|
|
328
326
|
jsx("div", { className: "ss__autocomplete__terms__options" }, terms.map((term) => (jsx("div", { className: classnames('ss__autocomplete__terms__option', {
|
|
329
327
|
'ss__autocomplete__terms__option--active': term.active,
|
|
330
328
|
}) },
|
|
331
|
-
jsx("a", { href: term.url.href, ...valueProps, onFocus: () => term.preview() }, emIfy(term.value, state.input)))))))) : null,
|
|
329
|
+
jsx("a", { onClick: (e) => onTermClick && onTermClick(e), href: term.url.href, ...valueProps, onFocus: () => term.preview() }, emIfy(term.value, state.input)))))))) : null,
|
|
332
330
|
showTrending ? (jsx(Fragment, null,
|
|
333
331
|
trendingTitle ? (jsx("div", { className: "ss__autocomplete__title ss__autocomplete__title--trending" },
|
|
334
332
|
jsx("h5", null, trendingTitle))) : null,
|
|
335
333
|
jsx("div", { className: "ss__autocomplete__terms__options" }, trending.map((term) => (jsx("div", { className: classnames('ss__autocomplete__terms__option', {
|
|
336
334
|
'ss__autocomplete__terms__option--active': term.active,
|
|
337
335
|
}) },
|
|
338
|
-
jsx("a", { href: term.url.href, ...valueProps, onFocus: () => term.preview() }, emIfy(term.value, state.input)))))))) : null)))),
|
|
336
|
+
jsx("a", { onClick: (e) => onTermClick && onTermClick(e), href: term.url.href, ...valueProps, onFocus: () => term.preview() }, emIfy(term.value, state.input)))))))) : null)))),
|
|
339
337
|
!hideFacets &&
|
|
340
338
|
(facetsSlot ? (jsx("div", { className: "ss__autocomplete__facets" }, cloneWithProps(facetsSlot, { facets: facetsToShow, merchandising, facetsTitle, hideBanners, controller, valueProps }))) : (facetsToShow.length > 0 && (jsx(Fragment, null,
|
|
341
339
|
facetsTitle && vertical ? (jsx("div", { className: classnames('ss__autocomplete__title', 'ss__autocomplete__title--facets') },
|
|
@@ -316,6 +316,24 @@ declare const _default: {
|
|
|
316
316
|
type: string;
|
|
317
317
|
};
|
|
318
318
|
};
|
|
319
|
+
onFacetOptionClick: {
|
|
320
|
+
description: string;
|
|
321
|
+
table: {
|
|
322
|
+
type: {
|
|
323
|
+
summary: string;
|
|
324
|
+
};
|
|
325
|
+
};
|
|
326
|
+
action: string;
|
|
327
|
+
};
|
|
328
|
+
onTermClick: {
|
|
329
|
+
description: string;
|
|
330
|
+
table: {
|
|
331
|
+
type: {
|
|
332
|
+
summary: string;
|
|
333
|
+
};
|
|
334
|
+
};
|
|
335
|
+
action: string;
|
|
336
|
+
};
|
|
319
337
|
};
|
|
320
338
|
};
|
|
321
339
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Autocomplete.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Organisms/Autocomplete/Autocomplete.stories.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,CAAC,EAAY,MAAM,QAAQ,CAAC;AAIrC,OAAO,EAAgB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC
|
|
1
|
+
{"version":3,"file":"Autocomplete.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Organisms/Autocomplete/Autocomplete.stories.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,CAAC,EAAY,MAAM,QAAQ,CAAC;AAIrC,OAAO,EAAgB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKjE,wBA8PE;AAuBF,eAAO,MAAM,OAAO,KAAoB,CAAC"}
|
|
@@ -224,6 +224,24 @@ export default {
|
|
|
224
224
|
type: 'object',
|
|
225
225
|
},
|
|
226
226
|
},
|
|
227
|
+
onFacetOptionClick: {
|
|
228
|
+
description: 'Custom onClick event handler for facet options.',
|
|
229
|
+
table: {
|
|
230
|
+
type: {
|
|
231
|
+
summary: 'function',
|
|
232
|
+
},
|
|
233
|
+
},
|
|
234
|
+
action: 'onFacetOptionClick',
|
|
235
|
+
},
|
|
236
|
+
onTermClick: {
|
|
237
|
+
description: 'Custom onClick event handler for Suggested & Trending Terms',
|
|
238
|
+
table: {
|
|
239
|
+
type: {
|
|
240
|
+
summary: 'function',
|
|
241
|
+
},
|
|
242
|
+
},
|
|
243
|
+
action: 'onTermClick',
|
|
244
|
+
},
|
|
227
245
|
...componentArgs,
|
|
228
246
|
},
|
|
229
247
|
};
|