@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.
Files changed (91) hide show
  1. package/dist/cjs/components/Atoms/Merchandising/InlineBanner.d.ts +1 -0
  2. package/dist/cjs/components/Atoms/Merchandising/InlineBanner.d.ts.map +1 -1
  3. package/dist/cjs/components/Atoms/Merchandising/InlineBanner.js +5 -3
  4. package/dist/cjs/components/Atoms/Merchandising/InlineBanner.stories.d.ts +9 -0
  5. package/dist/cjs/components/Atoms/Merchandising/InlineBanner.stories.d.ts.map +1 -1
  6. package/dist/cjs/components/Atoms/Merchandising/InlineBanner.stories.js +8 -0
  7. package/dist/cjs/components/Molecules/Carousel/Carousel.d.ts +37 -2
  8. package/dist/cjs/components/Molecules/Carousel/Carousel.d.ts.map +1 -1
  9. package/dist/cjs/components/Molecules/Carousel/Carousel.js +26 -11
  10. package/dist/cjs/components/Molecules/Carousel/Carousel.stories.d.ts +15 -0
  11. package/dist/cjs/components/Molecules/Carousel/Carousel.stories.d.ts.map +1 -1
  12. package/dist/cjs/components/Molecules/Carousel/Carousel.stories.js +10 -0
  13. package/dist/cjs/components/Molecules/FacetGridOptions/FacetGridOptions.d.ts +2 -1
  14. package/dist/cjs/components/Molecules/FacetGridOptions/FacetGridOptions.d.ts.map +1 -1
  15. package/dist/cjs/components/Molecules/FacetGridOptions/FacetGridOptions.js +6 -2
  16. package/dist/cjs/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.d.ts +2 -1
  17. package/dist/cjs/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.d.ts.map +1 -1
  18. package/dist/cjs/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.js +6 -2
  19. package/dist/cjs/components/Molecules/FacetListOptions/FacetListOptions.d.ts +2 -1
  20. package/dist/cjs/components/Molecules/FacetListOptions/FacetListOptions.d.ts.map +1 -1
  21. package/dist/cjs/components/Molecules/FacetListOptions/FacetListOptions.js +6 -2
  22. package/dist/cjs/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.d.ts +2 -1
  23. package/dist/cjs/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.d.ts.map +1 -1
  24. package/dist/cjs/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.js +6 -2
  25. package/dist/cjs/components/Molecules/Result/Result.d.ts +1 -0
  26. package/dist/cjs/components/Molecules/Result/Result.d.ts.map +1 -1
  27. package/dist/cjs/components/Molecules/Result/Result.js +5 -3
  28. package/dist/cjs/components/Molecules/Result/Result.stories.d.ts +9 -0
  29. package/dist/cjs/components/Molecules/Result/Result.stories.d.ts.map +1 -1
  30. package/dist/cjs/components/Molecules/Result/Result.stories.js +8 -0
  31. package/dist/cjs/components/Organisms/Autocomplete/Autocomplete.d.ts +3 -2
  32. package/dist/cjs/components/Organisms/Autocomplete/Autocomplete.d.ts.map +1 -1
  33. package/dist/cjs/components/Organisms/Autocomplete/Autocomplete.js +50 -53
  34. package/dist/cjs/components/Organisms/Autocomplete/Autocomplete.stories.d.ts +18 -0
  35. package/dist/cjs/components/Organisms/Autocomplete/Autocomplete.stories.d.ts.map +1 -1
  36. package/dist/cjs/components/Organisms/Autocomplete/Autocomplete.stories.js +16 -0
  37. package/dist/cjs/components/Organisms/Recommendation/Recommendation.d.ts +2 -2
  38. package/dist/cjs/components/Organisms/Recommendation/Recommendation.d.ts.map +1 -1
  39. package/dist/cjs/components/Organisms/Recommendation/Recommendation.js +9 -36
  40. package/dist/cjs/components/Organisms/Results/Results.d.ts +1 -7
  41. package/dist/cjs/components/Organisms/Results/Results.d.ts.map +1 -1
  42. package/dist/cjs/hooks/useDisplaySettings.d.ts +1 -1
  43. package/dist/cjs/hooks/useDisplaySettings.d.ts.map +1 -1
  44. package/dist/cjs/types.d.ts +6 -0
  45. package/dist/cjs/types.d.ts.map +1 -1
  46. package/dist/esm/components/Atoms/Merchandising/InlineBanner.d.ts +1 -0
  47. package/dist/esm/components/Atoms/Merchandising/InlineBanner.d.ts.map +1 -1
  48. package/dist/esm/components/Atoms/Merchandising/InlineBanner.js +6 -4
  49. package/dist/esm/components/Atoms/Merchandising/InlineBanner.stories.d.ts +9 -0
  50. package/dist/esm/components/Atoms/Merchandising/InlineBanner.stories.d.ts.map +1 -1
  51. package/dist/esm/components/Atoms/Merchandising/InlineBanner.stories.js +9 -0
  52. package/dist/esm/components/Molecules/Carousel/Carousel.d.ts +37 -2
  53. package/dist/esm/components/Molecules/Carousel/Carousel.d.ts.map +1 -1
  54. package/dist/esm/components/Molecules/Carousel/Carousel.js +30 -10
  55. package/dist/esm/components/Molecules/Carousel/Carousel.stories.d.ts +15 -0
  56. package/dist/esm/components/Molecules/Carousel/Carousel.stories.d.ts.map +1 -1
  57. package/dist/esm/components/Molecules/Carousel/Carousel.stories.js +11 -0
  58. package/dist/esm/components/Molecules/FacetGridOptions/FacetGridOptions.d.ts +2 -1
  59. package/dist/esm/components/Molecules/FacetGridOptions/FacetGridOptions.d.ts.map +1 -1
  60. package/dist/esm/components/Molecules/FacetGridOptions/FacetGridOptions.js +4 -1
  61. package/dist/esm/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.d.ts +2 -1
  62. package/dist/esm/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.d.ts.map +1 -1
  63. package/dist/esm/components/Molecules/FacetHierarchyOptions/FacetHierarchyOptions.js +4 -1
  64. package/dist/esm/components/Molecules/FacetListOptions/FacetListOptions.d.ts +2 -1
  65. package/dist/esm/components/Molecules/FacetListOptions/FacetListOptions.d.ts.map +1 -1
  66. package/dist/esm/components/Molecules/FacetListOptions/FacetListOptions.js +4 -1
  67. package/dist/esm/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.d.ts +2 -1
  68. package/dist/esm/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.d.ts.map +1 -1
  69. package/dist/esm/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.js +4 -1
  70. package/dist/esm/components/Molecules/Result/Result.d.ts +1 -0
  71. package/dist/esm/components/Molecules/Result/Result.d.ts.map +1 -1
  72. package/dist/esm/components/Molecules/Result/Result.js +5 -3
  73. package/dist/esm/components/Molecules/Result/Result.stories.d.ts +9 -0
  74. package/dist/esm/components/Molecules/Result/Result.stories.d.ts.map +1 -1
  75. package/dist/esm/components/Molecules/Result/Result.stories.js +9 -0
  76. package/dist/esm/components/Organisms/Autocomplete/Autocomplete.d.ts +3 -2
  77. package/dist/esm/components/Organisms/Autocomplete/Autocomplete.d.ts.map +1 -1
  78. package/dist/esm/components/Organisms/Autocomplete/Autocomplete.js +54 -56
  79. package/dist/esm/components/Organisms/Autocomplete/Autocomplete.stories.d.ts +18 -0
  80. package/dist/esm/components/Organisms/Autocomplete/Autocomplete.stories.d.ts.map +1 -1
  81. package/dist/esm/components/Organisms/Autocomplete/Autocomplete.stories.js +18 -0
  82. package/dist/esm/components/Organisms/Recommendation/Recommendation.d.ts +2 -2
  83. package/dist/esm/components/Organisms/Recommendation/Recommendation.d.ts.map +1 -1
  84. package/dist/esm/components/Organisms/Recommendation/Recommendation.js +15 -38
  85. package/dist/esm/components/Organisms/Results/Results.d.ts +1 -7
  86. package/dist/esm/components/Organisms/Results/Results.d.ts.map +1 -1
  87. package/dist/esm/hooks/useDisplaySettings.d.ts +1 -1
  88. package/dist/esm/hooks/useDisplaySettings.d.ts.map +1 -1
  89. package/dist/esm/types.d.ts +6 -0
  90. package/dist/esm/types.d.ts.map +1 -1
  91. 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
- const props = {
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 { children, breakpoints, loop, pagination, nextButton, prevButton, hideButtons, vertical, onInit, onNextButtonClick, onPrevButtonClick, onClick, disableStyles, style, className, ...additionalProps } = props;
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
- !hideButtons && (jsx("div", { className: "ss__carousel__prev-wrapper" },
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, breakpoints: breakpoints, pagination: pagination
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
- !hideButtons && (jsx("div", { className: "ss__carousel__next-wrapper" },
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASrC,wBAyIE;AAGF,eAAO,MAAM,MAAM;;;;;;;CAQlB,CAAC;AAOF,eAAO,MAAM,KAAK,+BAajB,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: Event) => void;
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;;CAiDvF,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,KAAK,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,GAAG,CAAC;CACjB"}
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 }), onClick: onClick, onFocus: () => previewOnFocus && value.preview && value.preview(), ...valueProps, ...value.url?.link },
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: Event) => void;
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;;CAkDjG,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,KAAK,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,GAAG,CAAC;CACjB"}
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 }), onClick: onClick, ...value.url?.link, onFocus: () => previewOnFocus && value.preview && value.preview(), ...valueProps },
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: any) => void;
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;;CA2DvF,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,GAAG,KAAK,IAAI,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,GAAG,CAAC;CACjB"}
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 }), onClick: onClick, onFocus: () => previewOnFocus && value.preview && value.preview(), ...valueProps, ...value.url?.link },
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: Event) => void;
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;;CA0E7F,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,KAAK,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,GAAG,CAAC;CACjB"}
1
+ {"version":3,"file":"FacetPaletteOptions.d.ts","sourceRoot":"","sources":["../../../../../src/components/Molecules/FacetPaletteOptions/FacetPaletteOptions.tsx"],"names":[],"mappings":";AAUA,OAAO,EAAE,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 }), onClick: onClick, "aria-label": value.value, onFocus: () => previewOnFocus && value.preview && value.preview(), ...valueProps, ...value.url?.link },
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;;CAwHnE,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,UAAU,CAAC,EAAE,gBAAgB,GAAG,sBAAsB,GAAG,wBAAwB,CAAC;CAClF"}
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, onMouseDown: (e) => {
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, onMouseDown: (e) => {
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAExC,wBA+HE;AAKF,eAAO,MAAM,OAAO,KAAoB,CAAC;AAUzC,eAAO,MAAM,YAAY,KAAoB,CAAC;AAe9C,eAAO,MAAM,aAAa,KAAoB,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 '../../Organisms/Results';
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;AAG5E,OAAO,EAAwB,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAKjF,OAAO,EAAc,cAAc,EAAgB,MAAM,gBAAgB,CAAC;AA2J1E,eAAO,MAAM,YAAY,gBAAyB,iBAAiB,KAAG,WAAW;;CAkX/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;CACf"}
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
- // component theme overrides
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: deepmerge({
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKjE,wBA4OE;AAuBF,eAAO,MAAM,OAAO,KAAoB,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
  };