@empathyco/x-components 8.5.0 → 8.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/docs/API-reference/api/x-components.banner.md +11 -1
  3. package/docs/API-reference/api/x-components.hierarchicalfilter.md +2 -0
  4. package/docs/API-reference/api/x-components.md +11 -0
  5. package/docs/API-reference/api/x-components.simplefilter.md +2 -0
  6. package/docs/API-reference/api/x-components.snippetcallbacks.md +2 -0
  7. package/docs/API-reference/api/x-components.vendorbanner.md +21 -2
  8. package/docs/API-reference/api/x-components.vendorbanner.tagging.md +11 -0
  9. package/docs/API-reference/api/x-components.vendorbannertagging.clickurl.md +11 -0
  10. package/docs/API-reference/api/x-components.vendorbannertagging.md +73 -0
  11. package/docs/API-reference/api/x-components.vendorbannertagging.viewurl.md +11 -0
  12. package/docs/API-reference/api/x-components.vendorxevents.md +38 -0
  13. package/docs/API-reference/api/x-components.vendorxevents.userclickedavendorbanner.md +13 -0
  14. package/docs/API-reference/api/x-components.vendorxevents.userviewedavendorbanner.md +13 -0
  15. package/docs/API-reference/api/x-types.banner.md +2 -2
  16. package/docs/API-reference/components/search/x-components.banner.md +8 -6
  17. package/js/x-modules/facets/wiring.js +1 -0
  18. package/js/x-modules/facets/wiring.js.map +1 -1
  19. package/js/x-modules/search/components/banner.vue.js.map +1 -1
  20. package/js/x-modules/search/components/banner.vue2.js +10 -1
  21. package/js/x-modules/search/components/banner.vue2.js.map +1 -1
  22. package/js/x-modules/search-box/wiring.js +1 -0
  23. package/js/x-modules/search-box/wiring.js.map +1 -1
  24. package/js/x-modules/vendor/wiring.js +8 -0
  25. package/js/x-modules/vendor/wiring.js.map +1 -1
  26. package/package.json +4 -4
  27. package/report/x-components.api.json +283 -10
  28. package/report/x-components.api.md +39 -3
  29. package/report/x-types.api.json +1 -1
  30. package/types/src/components/snippet-callbacks.vue.d.ts +2 -0
  31. package/types/src/components/snippet-callbacks.vue.d.ts.map +1 -1
  32. package/types/src/x-modules/facets/components/filters/hierarchical-filter.vue.d.ts +2 -0
  33. package/types/src/x-modules/facets/components/filters/hierarchical-filter.vue.d.ts.map +1 -1
  34. package/types/src/x-modules/facets/components/filters/simple-filter.vue.d.ts +2 -0
  35. package/types/src/x-modules/facets/components/filters/simple-filter.vue.d.ts.map +1 -1
  36. package/types/src/x-modules/facets/wiring.d.ts +1 -0
  37. package/types/src/x-modules/facets/wiring.d.ts.map +1 -1
  38. package/types/src/x-modules/related-prompts/components/related-prompts-tag-list.vue.d.ts.map +1 -1
  39. package/types/src/x-modules/search/components/banner.vue.d.ts +22 -1
  40. package/types/src/x-modules/search/components/banner.vue.d.ts.map +1 -1
  41. package/types/src/x-modules/search-box/wiring.d.ts +1 -0
  42. package/types/src/x-modules/search-box/wiring.d.ts.map +1 -1
  43. package/types/src/x-modules/vendor/events.types.d.ts +10 -0
  44. package/types/src/x-modules/vendor/events.types.d.ts.map +1 -1
  45. package/types/src/x-modules/vendor/types.d.ts +11 -1
  46. package/types/src/x-modules/vendor/types.d.ts.map +1 -1
  47. package/types/src/x-modules/vendor/wiring.d.ts +6 -0
  48. package/types/src/x-modules/vendor/wiring.d.ts.map +1 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,20 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [8.7.0](https://github.com/empathyco/x/compare/@empathyco/x-components@8.6.0...@empathyco/x-components@8.7.0) (2026-07-20)
7
+
8
+ ### Features
9
+
10
+ * reset searchbox query and facets when UserBrowsedToCategory (#2141)
11
+
12
+
13
+ ## [8.6.0](https://github.com/empathyco/x/compare/@empathyco/x-components@8.5.0...@empathyco/x-components@8.6.0) (2026-07-17)
14
+
15
+ ### Features
16
+
17
+ * **vendor:** vendor banner events (#2140)
18
+
19
+
6
20
  ## [8.5.0](https://github.com/empathyco/x/compare/@empathyco/x-components@8.4.0...@empathyco/x-components@8.5.0) (2026-07-16)
7
21
 
8
22
  ### Features
@@ -17,6 +17,10 @@ _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
17
17
  required: true;
18
18
  };
19
19
  titleClass: StringConstructor;
20
+ clickEvent: {
21
+ type: PropType<XEvent>;
22
+ default: string;
23
+ };
20
24
  }>, {
21
25
  imageFailed: import("vue").Ref<boolean, boolean>;
22
26
  anchorEvents: () => Partial<{ [key in keyof GlobalEventHandlersEventMap]: () => void; }>;
@@ -26,5 +30,11 @@ _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
26
30
  required: true;
27
31
  };
28
32
  titleClass: StringConstructor;
29
- }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>
33
+ clickEvent: {
34
+ type: PropType<XEvent>;
35
+ default: string;
36
+ };
37
+ }>> & Readonly<{}>, {
38
+ clickEvent: keyof import("../../../wiring").XEventsTypes;
39
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>
30
40
  ```
@@ -214,6 +214,8 @@ _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
214
214
  UserClickedAVendorResult?: import("../../../vendor").VendorResult | undefined;
215
215
  UserClickedVendorResultAddToCart?: import("../../../vendor").VendorResult | undefined;
216
216
  VendorBannersChanged?: Omit<import("../../../vendor").VendorBanner, "modelName">[] | undefined;
217
+ UserViewedAVendorBanner?: import("../../../vendor").VendorBanner | undefined;
218
+ UserClickedAVendorBanner?: import("../../../vendor").VendorBanner | undefined;
217
219
  }>;
218
220
  innerCssClasses: import("vue").ComputedRef<(string | Dictionary<boolean>)[]>;
219
221
  renderedChildrenFilters: import("vue").ComputedRef<HierarchicalFilterModel[]>;
@@ -3395,6 +3395,17 @@ Alias to facilitate retrieving the modules with status.
3395
3395
  The interface for a vendor banner, extending the base Banner interface. The optional position means: - If the position is defined, the banner will be displayed in that position inside the grid. - If the position is undefined, the banner will be displayed on top of the grid and full width.
3396
3396
 
3397
3397
 
3398
+ </td></tr>
3399
+ <tr><td>
3400
+
3401
+ [VendorBannerTagging](./x-components.vendorbannertagging.md)
3402
+
3403
+
3404
+ </td><td>
3405
+
3406
+ The tagging info for a vendor banner.
3407
+
3408
+
3398
3409
  </td></tr>
3399
3410
  <tr><td>
3400
3411
 
@@ -211,6 +211,8 @@ _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
211
211
  UserClickedAVendorResult?: import("../../../vendor").VendorResult | undefined;
212
212
  UserClickedVendorResultAddToCart?: import("../../../vendor").VendorResult | undefined;
213
213
  VendorBannersChanged?: Omit<import("../../../vendor").VendorBanner, "modelName">[] | undefined;
214
+ UserViewedAVendorBanner?: import("../../../vendor").VendorBanner | undefined;
215
+ UserClickedAVendorBanner?: import("../../../vendor").VendorBanner | undefined;
214
216
  }>;
215
217
  innerCssClasses: import("vue").ComputedRef<(string | Dictionary<boolean>)[]>;
216
218
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
@@ -201,6 +201,8 @@ _default: import("vue").DefineComponent<{}, {
201
201
  UserClickedAVendorResult: (payload: import("..").VendorResult, metadata: WireMetadata) => unknown;
202
202
  UserClickedVendorResultAddToCart: (payload: import("..").VendorResult, metadata: WireMetadata) => unknown;
203
203
  VendorBannersChanged: (payload: Omit<import("..").VendorBanner, "modelName">[], metadata: WireMetadata) => unknown;
204
+ UserViewedAVendorBanner: (payload: import("..").VendorBanner, metadata: WireMetadata) => unknown;
205
+ UserClickedAVendorBanner: (payload: import("..").VendorBanner, metadata: WireMetadata) => unknown;
204
206
  }>>;
205
207
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {
206
208
  GlobalXBus: import("vue").DefineComponent<{}, {}, any>;
@@ -9,9 +9,9 @@ The interface for a vendor banner, extending the base Banner interface. The opti
9
9
  **Signature:**
10
10
 
11
11
  ```typescript
12
- export interface VendorBanner extends Omit<Banner, 'modelName'>, NamedModel<'VendorBanner'>
12
+ export interface VendorBanner extends Omit<Banner, 'modelName' | 'tagging'>, NamedModel<'VendorBanner'>
13
13
  ```
14
- **Extends:** Omit&lt;Banner, 'modelName'&gt;, NamedModel&lt;'VendorBanner'&gt;
14
+ **Extends:** Omit&lt;Banner, 'modelName' \| 'tagging'&gt;, NamedModel&lt;'VendorBanner'&gt;
15
15
 
16
16
  ## Properties
17
17
 
@@ -54,6 +54,25 @@ number
54
54
  _(Optional)_
55
55
 
56
56
 
57
+ </td></tr>
58
+ <tr><td>
59
+
60
+ [tagging?](./x-components.vendorbanner.tagging.md)
61
+
62
+
63
+ </td><td>
64
+
65
+
66
+ </td><td>
67
+
68
+ [VendorBannerTagging](./x-components.vendorbannertagging.md)
69
+
70
+
71
+ </td><td>
72
+
73
+ _(Optional)_
74
+
75
+
57
76
  </td></tr>
58
77
  </tbody></table>
59
78
 
@@ -0,0 +1,11 @@
1
+ <!-- Do not edit this file. It is automatically generated by API Documenter. -->
2
+
3
+ [Home](./index.md) &gt; [@empathyco/x-components](./x-components.md) &gt; [VendorBanner](./x-components.vendorbanner.md) &gt; [tagging](./x-components.vendorbanner.tagging.md)
4
+
5
+ ## VendorBanner.tagging property
6
+
7
+ **Signature:**
8
+
9
+ ```typescript
10
+ tagging?: VendorBannerTagging;
11
+ ```
@@ -0,0 +1,11 @@
1
+ <!-- Do not edit this file. It is automatically generated by API Documenter. -->
2
+
3
+ [Home](./index.md) &gt; [@empathyco/x-components](./x-components.md) &gt; [VendorBannerTagging](./x-components.vendorbannertagging.md) &gt; [clickUrl](./x-components.vendorbannertagging.clickurl.md)
4
+
5
+ ## VendorBannerTagging.clickUrl property
6
+
7
+ **Signature:**
8
+
9
+ ```typescript
10
+ clickUrl: string;
11
+ ```
@@ -0,0 +1,73 @@
1
+ <!-- Do not edit this file. It is automatically generated by API Documenter. -->
2
+
3
+ [Home](./index.md) &gt; [@empathyco/x-components](./x-components.md) &gt; [VendorBannerTagging](./x-components.vendorbannertagging.md)
4
+
5
+ ## VendorBannerTagging interface
6
+
7
+ The tagging info for a vendor banner.
8
+
9
+ **Signature:**
10
+
11
+ ```typescript
12
+ export interface VendorBannerTagging
13
+ ```
14
+
15
+ ## Properties
16
+
17
+ <table><thead><tr><th>
18
+
19
+ Property
20
+
21
+
22
+ </th><th>
23
+
24
+ Modifiers
25
+
26
+
27
+ </th><th>
28
+
29
+ Type
30
+
31
+
32
+ </th><th>
33
+
34
+ Description
35
+
36
+
37
+ </th></tr></thead>
38
+ <tbody><tr><td>
39
+
40
+ [clickUrl](./x-components.vendorbannertagging.clickurl.md)
41
+
42
+
43
+ </td><td>
44
+
45
+
46
+ </td><td>
47
+
48
+ string
49
+
50
+
51
+ </td><td>
52
+
53
+
54
+ </td></tr>
55
+ <tr><td>
56
+
57
+ [viewUrl](./x-components.vendorbannertagging.viewurl.md)
58
+
59
+
60
+ </td><td>
61
+
62
+
63
+ </td><td>
64
+
65
+ string
66
+
67
+
68
+ </td><td>
69
+
70
+
71
+ </td></tr>
72
+ </tbody></table>
73
+
@@ -0,0 +1,11 @@
1
+ <!-- Do not edit this file. It is automatically generated by API Documenter. -->
2
+
3
+ [Home](./index.md) &gt; [@empathyco/x-components](./x-components.md) &gt; [VendorBannerTagging](./x-components.vendorbannertagging.md) &gt; [viewUrl](./x-components.vendorbannertagging.viewurl.md)
4
+
5
+ ## VendorBannerTagging.viewUrl property
6
+
7
+ **Signature:**
8
+
9
+ ```typescript
10
+ viewUrl: string;
11
+ ```
@@ -37,6 +37,25 @@ Description
37
37
  </th></tr></thead>
38
38
  <tbody><tr><td>
39
39
 
40
+ [UserClickedAVendorBanner](./x-components.vendorxevents.userclickedavendorbanner.md)
41
+
42
+
43
+ </td><td>
44
+
45
+
46
+ </td><td>
47
+
48
+ [VendorBanner](./x-components.vendorbanner.md)
49
+
50
+
51
+ </td><td>
52
+
53
+ The user clicked on a vendor banner. Payload: The [vendor banner](./x-components.vendorbanner.md) that was clicked.
54
+
55
+
56
+ </td></tr>
57
+ <tr><td>
58
+
40
59
  [UserClickedAVendorResult](./x-components.vendorxevents.userclickedavendorresult.md)
41
60
 
42
61
 
@@ -72,6 +91,25 @@ The user clicked on a vendor result. Payload: The [vendor result](./x-components
72
91
  The user clicked on the add to cart button of a vendor result. Payload: The [vendor result](./x-components.vendorresult.md) that was clicked.
73
92
 
74
93
 
94
+ </td></tr>
95
+ <tr><td>
96
+
97
+ [UserViewedAVendorBanner](./x-components.vendorxevents.userviewedavendorbanner.md)
98
+
99
+
100
+ </td><td>
101
+
102
+
103
+ </td><td>
104
+
105
+ [VendorBanner](./x-components.vendorbanner.md)
106
+
107
+
108
+ </td><td>
109
+
110
+ The user viewed a vendor banner. Payload: The [vendor banner](./x-components.vendorbanner.md) that was viewed.
111
+
112
+
75
113
  </td></tr>
76
114
  <tr><td>
77
115
 
@@ -0,0 +1,13 @@
1
+ <!-- Do not edit this file. It is automatically generated by API Documenter. -->
2
+
3
+ [Home](./index.md) &gt; [@empathyco/x-components](./x-components.md) &gt; [VendorXEvents](./x-components.vendorxevents.md) &gt; [UserClickedAVendorBanner](./x-components.vendorxevents.userclickedavendorbanner.md)
4
+
5
+ ## VendorXEvents.UserClickedAVendorBanner property
6
+
7
+ The user clicked on a vendor banner. Payload: The [vendor banner](./x-components.vendorbanner.md) that was clicked.
8
+
9
+ **Signature:**
10
+
11
+ ```typescript
12
+ UserClickedAVendorBanner: VendorBanner;
13
+ ```
@@ -0,0 +1,13 @@
1
+ <!-- Do not edit this file. It is automatically generated by API Documenter. -->
2
+
3
+ [Home](./index.md) &gt; [@empathyco/x-components](./x-components.md) &gt; [VendorXEvents](./x-components.vendorxevents.md) &gt; [UserViewedAVendorBanner](./x-components.vendorxevents.userviewedavendorbanner.md)
4
+
5
+ ## VendorXEvents.UserViewedAVendorBanner property
6
+
7
+ The user viewed a vendor banner. Payload: The [vendor banner](./x-components.vendorbanner.md) that was viewed.
8
+
9
+ **Signature:**
10
+
11
+ ```typescript
12
+ UserViewedAVendorBanner: VendorBanner;
13
+ ```
@@ -9,9 +9,9 @@ A banner is an image with a title, that when clicked redirect the user to an URL
9
9
  **Signature:**
10
10
 
11
11
  ```typescript
12
- export interface Banner extends NamedModel<'Banner'>, Identifiable, Taggable
12
+ export interface Banner extends NamedModel<'Banner' | 'VendorBanner'>, Identifiable, Taggable
13
13
  ```
14
- **Extends:** [NamedModel](./x-types.namedmodel.md)<!-- -->&lt;'Banner'&gt;, [Identifiable](./x-types.identifiable.md)<!-- -->, [Taggable](./x-types.taggable.md)
14
+ **Extends:** [NamedModel](./x-types.namedmodel.md)<!-- -->&lt;'Banner' \| 'VendorBanner'&gt;, [Identifiable](./x-types.identifiable.md)<!-- -->, [Taggable](./x-types.taggable.md)
15
15
 
16
16
  ## Properties
17
17
 
@@ -8,17 +8,19 @@ title: Banner
8
8
 
9
9
  ## Props
10
10
 
11
- | Name | Description | Type | Default |
12
- | ----------------------- | ---------------- | ------------------------ | ------------- |
13
- | <code>banner</code> | The banner data. | <code>BannerModel</code> | <code></code> |
14
- | <code>titleClass</code> | | <code>string</code> | <code></code> |
11
+ | Name | Description | Type | Default |
12
+ | ----------------------- | ----------------------------------------- | ------------------------ | --------------------------------- |
13
+ | <code>banner</code> | The banner data. | <code>BannerModel</code> | <code></code> |
14
+ | <code>titleClass</code> | | <code>string</code> | <code></code> |
15
+ | <code>clickEvent</code> | Event to emit when the banner is clicked. | <code>XEvent</code> | <code>'UserClickedABanner'</code> |
15
16
 
16
17
  ## Events
17
18
 
18
19
  This component emits the following event:
19
20
 
20
- - [`UserClickedABanner`](https://github.com/empathyco/x/blob/main/packages/x-components/src/wiring/events.types.ts):
21
- emitted when the user clicks the banner (if it has a URL).
21
+ - `clickEvent` (default `UserClickedABanner`):
22
+ emitted when the user clicks the banner (if it has a URL). The event name can be customized
23
+ via the `clickEvent` prop.
22
24
 
23
25
  ## See it in action
24
26
 
@@ -191,6 +191,7 @@ const facetsWiring = createWiring({
191
191
  setQuery,
192
192
  },
193
193
  UserBrowsedToCategory: {
194
+ clearAllFiltersButStickyWire,
194
195
  clearQuery,
195
196
  },
196
197
  UserClickedOpenX: {
@@ -1 +1 @@
1
- {"version":3,"file":"wiring.js","sources":["../../../../src/x-modules/facets/wiring.ts"],"sourcesContent":["import type { Facet } from '@empathyco/x-types'\nimport type { UrlParams } from '../../types/url-params'\nimport type { XEventPayload } from '../../wiring/index'\nimport { createRawFilters } from '../../utils/filters'\nimport { namespacedWireCommit, namespacedWireCommitWithoutPayload } from '../../wiring/index'\nimport { wireService, wireServiceWithoutPayload } from '../../wiring/wires.factory'\nimport { filter, mapWire } from '../../wiring/wires.operators'\nimport { createWiring } from '../../wiring/wiring.utils'\nimport { DefaultFacetsService } from './service/facets.service'\n\n/**\n * `facets` {@link XModuleName | XModule name}.\n *\n * @internal\n */\nconst moduleName = 'facets'\n\n/**\n * WireCommit for {@link FacetsXModule}.\n *\n * @internal\n */\nconst wireCommit = namespacedWireCommit(moduleName)\n\n/**\n * WireCommitWithoutPayload for {@link FacetsXModule}.\n *\n * @internal\n */\nconst wireCommitWithoutPayload = namespacedWireCommitWithoutPayload(moduleName)\n\n/**\n * Wires factory for {@link DefaultFacetsService}.\n */\nconst wireFacetsService = wireService(DefaultFacetsService.instance)\n\n/**\n * Wires without payload factory for {@link DefaultFacetsService}.\n */\nconst wireFacetsServiceWithoutPayload = wireServiceWithoutPayload(DefaultFacetsService.instance)\n\n/**\n * Saves the facets contained in the `search` group, removing the previous ones, and keeping the\n * previous filters selected state.\n *\n * @public\n */\nconst updateFacetsGroupWithSearchFacetsWire = mapWire(\n wireFacetsService('updateFacets'),\n (facets: Facet[]) => ({\n facets,\n id: 'search',\n }),\n)\n\n/**\n * Saves the facets contained in the group, removing the previous ones, and keeping the new filters\n * selected state.\n *\n * @public\n */\nconst setFacetsGroupWire = wireFacetsService('setFacets')\n\n/**\n * Toggles the selected state of a filter.\n *\n * @public\n */\nconst toggleFilterWire = wireFacetsService('toggle')\n\n/**\n * Deselects all the filters. Optionally, it can accept a list of facets ids as payload, and it will\n * only deselect the filters from those facets.\n *\n * @public\n */\nconst clearFiltersWire = wireFacetsService('clearFilters')\n\n/**\n * Deselects all selected filters.\n *\n * @public\n */\nconst clearAllFiltersWire = wireFacetsServiceWithoutPayload('clearFilters')\n\n/**\n * Deselects all selected filters but keep the sticky ones.\n *\n * @internal\n */\nconst clearAllFiltersButStickyWire = wireFacetsService('clearFiltersWithMetadata', {\n metadata: {\n keepSticky: true,\n },\n})\n\n/**\n * Deselects all selected filters only when oldValue is not empty.\n *\n * @public\n */\nconst clearAllFiltersOnSecondQuery = filter(\n clearAllFiltersButStickyWire,\n ({ metadata }) => !!metadata.oldValue,\n)\n\n/**\n * Selects the filter passed by payload.\n *\n * @public\n */\nconst selectFilterWire = wireFacetsService('select')\n\n/**\n * Saves the params from the url.\n *\n * @public\n */\nconst setFiltersFromUrl = mapWire(wireFacetsService('select'), ({ filter }: UrlParams) =>\n createRawFilters(filter),\n)\n\n/**\n * Saves the preselected filters.\n *\n * @public\n */\nconst updatePreselectedFilters = wireFacetsService('updatePreselectedFilters')\n\n/**\n * Selects the preselected filters stored in the state.\n *\n * @public\n */\nconst selectPreselectedFilterWire = wireFacetsService('selectPreselectedFilters')\n\n/**\n * Sets the facets state `query`.\n *\n * @public\n */\nconst setQuery = wireFacetsService('setQuery')\n\n/**\n * Clear the facets state `query` .\n *\n * @public\n */\nconst clearQuery = wireFacetsService('setQuery', '')\n\n/**\n * Removes all the sticky filters from the state.\n *\n * @internal\n */\nconst clearStickyFilters = filter<XEventPayload<'SearchResponseChanged'>>(\n wireCommitWithoutPayload('clearStickyFilters'),\n ({ eventPayload }) => {\n return eventPayload.totalResults === 0\n },\n)\n\n/**\n * Sets the filters of the facets module from a queryPreview's filters.\n *\n * @public\n */\nexport const setSelectedFiltersFromPreview = wireCommit(\n 'setFilters',\n ({ eventPayload: { filters } }) => (filters ? createRawFilters(filters) : []),\n)\n\n/**\n * Sets the filters of the facets module from a selectedHistoryQuery's filters.\n *\n * @public\n */\nexport const setFiltersFromHistoryQueries = wireCommit(\n 'setFilters',\n ({ eventPayload: { selectedFilters } }) => selectedFilters ?? [],\n)\n\n/**\n * Sets the query of the facets module from a queryPreview.\n *\n * @public\n */\nexport const setQueryFromPreview = wireCommit('setQuery', ({ eventPayload: { query } }) => query)\n\n/**\n * Wiring configuration for the {@link FacetsXModule | facets module}.\n *\n * @internal\n */\nexport const facetsWiring = createWiring({\n ParamsLoadedFromUrl: {\n // TODO: move this logic to Facets Service\n clearAllFiltersWire,\n setFiltersFromUrl,\n },\n PreselectedFiltersProvided: {\n updatePreselectedFilters,\n },\n FacetsChanged: {\n updateFacetsGroupWithSearchFacetsWire,\n },\n FacetsGroupProvided: {\n setFacetsGroupWire,\n },\n UserAcceptedAQuery: {\n setQuery,\n },\n FacetsQueryChanged: {\n clearAllFiltersOnSecondQuery,\n },\n UserChangedExtraParams: {\n clearAllFiltersButStickyWire,\n },\n UserClickedAFilter: {\n toggleFilterWire,\n },\n UserClickedClearAllFilters: {\n clearFiltersWire,\n },\n UserModifiedEditableNumberRangeFilter: {\n selectFilterWire,\n },\n UserClickedAllFilter: {\n clearFiltersWire,\n },\n UserClearedQuery: {\n clearAllFiltersButStickyWire,\n setQuery,\n },\n UserBrowsedToCategory: {\n clearQuery,\n },\n UserClickedOpenX: {\n selectPreselectedFilterWire,\n },\n SearchResponseChanged: {\n clearStickyFilters,\n },\n UserAcceptedAQueryPreview: {\n setQueryFromPreview,\n setSelectedFiltersFromPreview,\n },\n UserSelectedAHistoryQuery: {\n setFiltersFromHistoryQueries,\n },\n})\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wiring.js","sources":["../../../../src/x-modules/facets/wiring.ts"],"sourcesContent":["import type { Facet } from '@empathyco/x-types'\nimport type { UrlParams } from '../../types/url-params'\nimport type { XEventPayload } from '../../wiring/index'\nimport { createRawFilters } from '../../utils/filters'\nimport { namespacedWireCommit, namespacedWireCommitWithoutPayload } from '../../wiring/index'\nimport { wireService, wireServiceWithoutPayload } from '../../wiring/wires.factory'\nimport { filter, mapWire } from '../../wiring/wires.operators'\nimport { createWiring } from '../../wiring/wiring.utils'\nimport { DefaultFacetsService } from './service/facets.service'\n\n/**\n * `facets` {@link XModuleName | XModule name}.\n *\n * @internal\n */\nconst moduleName = 'facets'\n\n/**\n * WireCommit for {@link FacetsXModule}.\n *\n * @internal\n */\nconst wireCommit = namespacedWireCommit(moduleName)\n\n/**\n * WireCommitWithoutPayload for {@link FacetsXModule}.\n *\n * @internal\n */\nconst wireCommitWithoutPayload = namespacedWireCommitWithoutPayload(moduleName)\n\n/**\n * Wires factory for {@link DefaultFacetsService}.\n */\nconst wireFacetsService = wireService(DefaultFacetsService.instance)\n\n/**\n * Wires without payload factory for {@link DefaultFacetsService}.\n */\nconst wireFacetsServiceWithoutPayload = wireServiceWithoutPayload(DefaultFacetsService.instance)\n\n/**\n * Saves the facets contained in the `search` group, removing the previous ones, and keeping the\n * previous filters selected state.\n *\n * @public\n */\nconst updateFacetsGroupWithSearchFacetsWire = mapWire(\n wireFacetsService('updateFacets'),\n (facets: Facet[]) => ({\n facets,\n id: 'search',\n }),\n)\n\n/**\n * Saves the facets contained in the group, removing the previous ones, and keeping the new filters\n * selected state.\n *\n * @public\n */\nconst setFacetsGroupWire = wireFacetsService('setFacets')\n\n/**\n * Toggles the selected state of a filter.\n *\n * @public\n */\nconst toggleFilterWire = wireFacetsService('toggle')\n\n/**\n * Deselects all the filters. Optionally, it can accept a list of facets ids as payload, and it will\n * only deselect the filters from those facets.\n *\n * @public\n */\nconst clearFiltersWire = wireFacetsService('clearFilters')\n\n/**\n * Deselects all selected filters.\n *\n * @public\n */\nconst clearAllFiltersWire = wireFacetsServiceWithoutPayload('clearFilters')\n\n/**\n * Deselects all selected filters but keep the sticky ones.\n *\n * @internal\n */\nconst clearAllFiltersButStickyWire = wireFacetsService('clearFiltersWithMetadata', {\n metadata: {\n keepSticky: true,\n },\n})\n\n/**\n * Deselects all selected filters only when oldValue is not empty.\n *\n * @public\n */\nconst clearAllFiltersOnSecondQuery = filter(\n clearAllFiltersButStickyWire,\n ({ metadata }) => !!metadata.oldValue,\n)\n\n/**\n * Selects the filter passed by payload.\n *\n * @public\n */\nconst selectFilterWire = wireFacetsService('select')\n\n/**\n * Saves the params from the url.\n *\n * @public\n */\nconst setFiltersFromUrl = mapWire(wireFacetsService('select'), ({ filter }: UrlParams) =>\n createRawFilters(filter),\n)\n\n/**\n * Saves the preselected filters.\n *\n * @public\n */\nconst updatePreselectedFilters = wireFacetsService('updatePreselectedFilters')\n\n/**\n * Selects the preselected filters stored in the state.\n *\n * @public\n */\nconst selectPreselectedFilterWire = wireFacetsService('selectPreselectedFilters')\n\n/**\n * Sets the facets state `query`.\n *\n * @public\n */\nconst setQuery = wireFacetsService('setQuery')\n\n/**\n * Clear the facets state `query` .\n *\n * @public\n */\nconst clearQuery = wireFacetsService('setQuery', '')\n\n/**\n * Removes all the sticky filters from the state.\n *\n * @internal\n */\nconst clearStickyFilters = filter<XEventPayload<'SearchResponseChanged'>>(\n wireCommitWithoutPayload('clearStickyFilters'),\n ({ eventPayload }) => {\n return eventPayload.totalResults === 0\n },\n)\n\n/**\n * Sets the filters of the facets module from a queryPreview's filters.\n *\n * @public\n */\nexport const setSelectedFiltersFromPreview = wireCommit(\n 'setFilters',\n ({ eventPayload: { filters } }) => (filters ? createRawFilters(filters) : []),\n)\n\n/**\n * Sets the filters of the facets module from a selectedHistoryQuery's filters.\n *\n * @public\n */\nexport const setFiltersFromHistoryQueries = wireCommit(\n 'setFilters',\n ({ eventPayload: { selectedFilters } }) => selectedFilters ?? [],\n)\n\n/**\n * Sets the query of the facets module from a queryPreview.\n *\n * @public\n */\nexport const setQueryFromPreview = wireCommit('setQuery', ({ eventPayload: { query } }) => query)\n\n/**\n * Wiring configuration for the {@link FacetsXModule | facets module}.\n *\n * @internal\n */\nexport const facetsWiring = createWiring({\n ParamsLoadedFromUrl: {\n // TODO: move this logic to Facets Service\n clearAllFiltersWire,\n setFiltersFromUrl,\n },\n PreselectedFiltersProvided: {\n updatePreselectedFilters,\n },\n FacetsChanged: {\n updateFacetsGroupWithSearchFacetsWire,\n },\n FacetsGroupProvided: {\n setFacetsGroupWire,\n },\n UserAcceptedAQuery: {\n setQuery,\n },\n FacetsQueryChanged: {\n clearAllFiltersOnSecondQuery,\n },\n UserChangedExtraParams: {\n clearAllFiltersButStickyWire,\n },\n UserClickedAFilter: {\n toggleFilterWire,\n },\n UserClickedClearAllFilters: {\n clearFiltersWire,\n },\n UserModifiedEditableNumberRangeFilter: {\n selectFilterWire,\n },\n UserClickedAllFilter: {\n clearFiltersWire,\n },\n UserClearedQuery: {\n clearAllFiltersButStickyWire,\n setQuery,\n },\n UserBrowsedToCategory: {\n clearAllFiltersButStickyWire,\n clearQuery,\n },\n UserClickedOpenX: {\n selectPreselectedFilterWire,\n },\n SearchResponseChanged: {\n clearStickyFilters,\n },\n UserAcceptedAQueryPreview: {\n setQueryFromPreview,\n setSelectedFiltersFromPreview,\n },\n UserSelectedAHistoryQuery: {\n setFiltersFromHistoryQueries,\n },\n})\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"banner.vue.js","sources":["../../../../../src/x-modules/search/components/banner.vue"],"sourcesContent":["<template>\n <component\n :is=\"banner.url ? 'a' : 'figure'\"\n v-if=\"!imageFailed\"\n :href=\"banner.url\"\n class=\"x-banner\"\n data-test=\"banner\"\n v-on=\"banner.url ? anchorEvents() : {}\"\n >\n <img\n :src=\"banner.image\"\n :alt=\"banner.title ? banner.title : 'Banner'\"\n class=\"x-banner__image\"\n data-test=\"banner-image\"\n @error=\"imageFailed = true\"\n />\n <h2 v-if=\"banner.title\" class=\"x-banner__title\" :class=\"titleClass\" data-test=\"banner-title\">\n {{ banner.title }}\n </h2>\n </component>\n</template>\n\n<script lang=\"ts\">\nimport type { Banner as BannerModel } from '@empathyco/x-types'\nimport type { PropType } from 'vue'\nimport { defineComponent, ref } from 'vue'\nimport { useXBus } from '../../../composables/use-x-bus'\nimport { searchXModule } from '../x-module'\n\n/**.\n * A banner result is just an item that has been inserted into the search results to advertise\n * something. Usually it is the first item in the grid or it can be placed in the middle of them\n * and fill the whole row where appears.\n * The banner may be clickable or non-clickable depending on whether it has an associated URL\n * or not. It contains an image and, optionally, a title. In case the image does not\n * load due to an error the banner will not be rendered.\n *\n * Additionally, this component exposes the following props to modify the classes of the\n * elements: `titleClass`.\n *\n * @public\n */\nexport default defineComponent({\n name: 'Banner',\n xModule: searchXModule.name,\n props: {\n /**\n * The banner data.\n *\n * @public\n */\n banner: {\n type: Object as PropType<BannerModel>,\n required: true,\n },\n titleClass: String,\n },\n setup(props) {\n const xBus = useXBus()\n\n /**\n * Flag to handle banner image errors.\n *\n * @public\n */\n const imageFailed = ref(false)\n\n /**\n * Emits the banner click event.\n *\n * @internal\n */\n const emitClickEvent = (): void => {\n xBus.emit('UserClickedABanner', props.banner)\n }\n\n /**\n * Returns the events supported by the anchor.\n *\n * @returns Events supported by the anchor.\n *\n * @internal\n */\n const anchorEvents = (): Partial<{\n [key in keyof GlobalEventHandlersEventMap]: () => void\n }> => ({\n click: () => emitClickEvent(),\n auxclick: () => emitClickEvent(),\n contextmenu: () => emitClickEvent(),\n })\n\n return {\n imageFailed,\n anchorEvents,\n }\n },\n})\n</script>\n\n<style lang=\"css\" scoped>\n.x-banner {\n display: flex;\n flex-flow: column nowrap;\n text-decoration: none;\n}\n\n.x-banner__image {\n width: 100%;\n object-fit: contain;\n}\n</style>\n\n<docs lang=\"mdx\">\n## Events\n\nThis component emits the following event:\n\n- [`UserClickedABanner`](https://github.com/empathyco/x/blob/main/packages/x-components/src/wiring/events.types.ts):\n emitted when the user clicks the banner (if it has a URL).\n\n## See it in action\n\nIn this example, banner data is passed as a prop.\n\n_Here you can see how the `Banner` component is rendered._\n\n```vue\n<template>\n <Banner :banner=\"banner\" />\n</template>\n\n<script setup>\nimport { Banner } from '@empathyco/x-components/search'\nimport { ref } from 'vue'\n\nconst banner = ref({\n modelName: 'Banner',\n id: 'banner-example',\n url: 'https://my-website.com/summer-shirts',\n image: 'https://my-website.com/images/summer-shirts.jpg',\n title: 'Trendy summer shirts',\n position: 1,\n})\n</script>\n```\n\n### Customizing the items with classes\n\nThe `titleClass` prop can be used to add classes to the banner title.\n\n```vue\n<template>\n <Banner :banner=\"banner\" titleClass=\"x-bg-neutral-50\" />\n</template>\n\n<script setup>\nimport { Banner } from '@empathyco/x-components/search'\nimport { ref } from 'vue'\n\nconst banner = ref({\n modelName: 'Banner',\n id: 'banner-example',\n url: 'https://my-website.com/summer-shirts',\n image: 'https://my-website.com/images/summer-shirts.jpg',\n title: 'Trendy summer shirts',\n position: 1,\n})\n</script>\n```\n</docs>\n"],"names":["_openBlock","_createBlock","_resolveDynamicComponent","_mergeProps","_toHandlers","_withCtx","_createElementVNode","_createElementBlock","_normalizeClass","_toDisplayString","_createCommentVNode"],"mappings":";;;;;;;AAGW,EAAA,OAAA,CAAA,IAAA,CAAA,WAAA,IAAAA,SAAA,EAAA,EAFTC,WAAA,CAkBYC,uBAAA,CAjBL,IAAA,CAAA,MAAA,CAAO,GAAA,GAAG,iBADjBC,UAAA,CAkBY;AAAA,IAAA,GAAA,EAAA,CAAA;AAfT,IAAA,IAAA,EAAM,IAAA,CAAA,MAAA,CAAO,GAAA;AAAA,IACd,KAAA,EAAM,UAAA;AAAA,IACN,WAAA,EAAU;AAAA,GAAA,EACVC,UAAA,CAAuC,IAAA,CAAjC,MAAA,CAAO,GAAA,GAAM,IAAA,CAAA,YAAA,EAAY,GAAA,EAAA,CAAA,CAAA,EAAA;AAAA,IAAA,OAAA,EAAAC,OAAA,CAE/B,MAME;AAAA,MANFC,kBAAA,CAME,KAAA,EAAA;AAAA,QALC,KAAK,IAAA,CAAA,MAAA,CAAO,KAAA;AAAA,QACZ,GAAA,EAAK,IAAA,CAAA,MAAA,CAAO,KAAA,GAAQ,IAAA,CAAA,MAAA,CAAO,KAAA,GAAK,QAAA;AAAA,QACjC,KAAA,EAAM,iBAAA;AAAA,QACN,WAAA,EAAU,cAAA;AAAA,QACT,OAAA,EAAK,sCAAE,IAAA,CAAA,WAAA,GAAW,IAAA;AAAA,OAAA,EAAA,IAAA,EAAA,EAAA,EAAA,UAAA,CAAA;AAEX,MAAA,IAAA,CAAA,MAAA,CAAO,KAAA,IAAAN,SAAA,EAAA,EAAjBO,kBAAA;AAAA,QAEK,IAAA;AAAA,QAAA;AAAA,UAAA,GAAA,EAAA,CAAA;UAFmB,KAAA,EAAKC,cAAA,CAAA,CAAC,mBAA0B,IAAA,CAAA,UAAU,CAAA,CAAA;AAAA,UAAE,WAAA,EAAU;AAAA,SAAA;AACzE,QAAAC,eAAA,CAAA,IAAA,CAAA,MAAA,CAAO,KAAK,CAAA;AAAA,QAAA;AAAA;AAAA,OAAA,IAAAC,kBAAA,CAAA,MAAA,EAAA,IAAA;;;;;;;;;;"}
1
+ {"version":3,"file":"banner.vue.js","sources":["../../../../../src/x-modules/search/components/banner.vue"],"sourcesContent":["<template>\n <component\n :is=\"banner.url ? 'a' : 'figure'\"\n v-if=\"!imageFailed\"\n :href=\"banner.url\"\n class=\"x-banner\"\n data-test=\"banner\"\n v-on=\"banner.url ? anchorEvents() : {}\"\n >\n <img\n :src=\"banner.image\"\n :alt=\"banner.title ? banner.title : 'Banner'\"\n class=\"x-banner__image\"\n data-test=\"banner-image\"\n @error=\"imageFailed = true\"\n />\n <h2 v-if=\"banner.title\" class=\"x-banner__title\" :class=\"titleClass\" data-test=\"banner-title\">\n {{ banner.title }}\n </h2>\n </component>\n</template>\n\n<script lang=\"ts\">\nimport type { Banner as BannerModel } from '@empathyco/x-types'\nimport type { PropType } from 'vue'\nimport type { XEvent } from '../../../wiring'\nimport { defineComponent, ref } from 'vue'\nimport { useXBus } from '../../../composables/use-x-bus'\nimport { searchXModule } from '../x-module'\n\n/**.\n * A banner result is just an item that has been inserted into the search results to advertise\n * something. Usually it is the first item in the grid or it can be placed in the middle of them\n * and fill the whole row where appears.\n * The banner may be clickable or non-clickable depending on whether it has an associated URL\n * or not. It contains an image and, optionally, a title. In case the image does not\n * load due to an error the banner will not be rendered.\n *\n * Additionally, this component exposes the following props to modify the classes of the\n * elements: `titleClass`.\n *\n * @public\n */\nexport default defineComponent({\n name: 'Banner',\n xModule: searchXModule.name,\n props: {\n /**\n * The banner data.\n *\n * @public\n */\n banner: {\n type: Object as PropType<BannerModel>,\n required: true,\n },\n titleClass: String,\n /**\n * Event to emit when the banner is clicked.\n *\n * @public\n */\n clickEvent: {\n type: String as PropType<XEvent>,\n default: 'UserClickedABanner',\n },\n },\n setup(props) {\n const xBus = useXBus()\n\n /**\n * Flag to handle banner image errors.\n *\n * @public\n */\n const imageFailed = ref(false)\n\n /**\n * Emits the banner click event.\n *\n * @internal\n */\n const emitClickEvent = (): void => {\n xBus.emit(props.clickEvent, props.banner)\n }\n\n /**\n * Returns the events supported by the anchor.\n *\n * @returns Events supported by the anchor.\n *\n * @internal\n */\n const anchorEvents = (): Partial<{\n [key in keyof GlobalEventHandlersEventMap]: () => void\n }> => ({\n click: () => emitClickEvent(),\n auxclick: () => emitClickEvent(),\n contextmenu: () => emitClickEvent(),\n })\n\n return {\n imageFailed,\n anchorEvents,\n }\n },\n})\n</script>\n\n<style lang=\"css\" scoped>\n.x-banner {\n display: flex;\n flex-flow: column nowrap;\n text-decoration: none;\n}\n\n.x-banner__image {\n width: 100%;\n object-fit: contain;\n}\n</style>\n\n<docs lang=\"mdx\">\n## Events\n\nThis component emits the following event:\n\n- `clickEvent` (default `UserClickedABanner`):\n emitted when the user clicks the banner (if it has a URL). The event name can be customized\n via the `clickEvent` prop.\n\n## See it in action\n\nIn this example, banner data is passed as a prop.\n\n_Here you can see how the `Banner` component is rendered._\n\n```vue\n<template>\n <Banner :banner=\"banner\" />\n</template>\n\n<script setup>\nimport { Banner } from '@empathyco/x-components/search'\nimport { ref } from 'vue'\n\nconst banner = ref({\n modelName: 'Banner',\n id: 'banner-example',\n url: 'https://my-website.com/summer-shirts',\n image: 'https://my-website.com/images/summer-shirts.jpg',\n title: 'Trendy summer shirts',\n position: 1,\n})\n</script>\n```\n\n### Customizing the items with classes\n\nThe `titleClass` prop can be used to add classes to the banner title.\n\n```vue\n<template>\n <Banner :banner=\"banner\" titleClass=\"x-bg-neutral-50\" />\n</template>\n\n<script setup>\nimport { Banner } from '@empathyco/x-components/search'\nimport { ref } from 'vue'\n\nconst banner = ref({\n modelName: 'Banner',\n id: 'banner-example',\n url: 'https://my-website.com/summer-shirts',\n image: 'https://my-website.com/images/summer-shirts.jpg',\n title: 'Trendy summer shirts',\n position: 1,\n})\n</script>\n```\n</docs>\n"],"names":["_openBlock","_createBlock","_resolveDynamicComponent","_mergeProps","_toHandlers","_withCtx","_createElementVNode","_createElementBlock","_normalizeClass","_toDisplayString","_createCommentVNode"],"mappings":";;;;;;;AAGW,EAAA,OAAA,CAAA,IAAA,CAAA,WAAA,IAAAA,SAAA,EAAA,EAFTC,WAAA,CAkBYC,uBAAA,CAjBL,IAAA,CAAA,MAAA,CAAO,GAAA,GAAG,iBADjBC,UAAA,CAkBY;AAAA,IAAA,GAAA,EAAA,CAAA;AAfT,IAAA,IAAA,EAAM,IAAA,CAAA,MAAA,CAAO,GAAA;AAAA,IACd,KAAA,EAAM,UAAA;AAAA,IACN,WAAA,EAAU;AAAA,GAAA,EACVC,UAAA,CAAuC,IAAA,CAAjC,MAAA,CAAO,GAAA,GAAM,IAAA,CAAA,YAAA,EAAY,GAAA,EAAA,CAAA,CAAA,EAAA;AAAA,IAAA,OAAA,EAAAC,OAAA,CAE/B,MAME;AAAA,MANFC,kBAAA,CAME,KAAA,EAAA;AAAA,QALC,KAAK,IAAA,CAAA,MAAA,CAAO,KAAA;AAAA,QACZ,GAAA,EAAK,IAAA,CAAA,MAAA,CAAO,KAAA,GAAQ,IAAA,CAAA,MAAA,CAAO,KAAA,GAAK,QAAA;AAAA,QACjC,KAAA,EAAM,iBAAA;AAAA,QACN,WAAA,EAAU,cAAA;AAAA,QACT,OAAA,EAAK,sCAAE,IAAA,CAAA,WAAA,GAAW,IAAA;AAAA,OAAA,EAAA,IAAA,EAAA,EAAA,EAAA,UAAA,CAAA;AAEX,MAAA,IAAA,CAAA,MAAA,CAAO,KAAA,IAAAN,SAAA,EAAA,EAAjBO,kBAAA;AAAA,QAEK,IAAA;AAAA,QAAA;AAAA,UAAA,GAAA,EAAA,CAAA;UAFmB,KAAA,EAAKC,cAAA,CAAA,CAAC,mBAA0B,IAAA,CAAA,UAAU,CAAA,CAAA;AAAA,UAAE,WAAA,EAAU;AAAA,SAAA;AACzE,QAAAC,eAAA,CAAA,IAAA,CAAA,MAAA,CAAO,KAAK,CAAA;AAAA,QAAA;AAAA;AAAA,OAAA,IAAAC,kBAAA,CAAA,MAAA,EAAA,IAAA;;;;;;;;;;"}
@@ -29,6 +29,15 @@ var _sfc_main = defineComponent({
29
29
  required: true,
30
30
  },
31
31
  titleClass: String,
32
+ /**
33
+ * Event to emit when the banner is clicked.
34
+ *
35
+ * @public
36
+ */
37
+ clickEvent: {
38
+ type: String,
39
+ default: 'UserClickedABanner',
40
+ },
32
41
  },
33
42
  setup(props) {
34
43
  const xBus = useXBus();
@@ -44,7 +53,7 @@ var _sfc_main = defineComponent({
44
53
  * @internal
45
54
  */
46
55
  const emitClickEvent = () => {
47
- xBus.emit('UserClickedABanner', props.banner);
56
+ xBus.emit(props.clickEvent, props.banner);
48
57
  };
49
58
  /**
50
59
  * Returns the events supported by the anchor.
@@ -1 +1 @@
1
- {"version":3,"file":"banner.vue2.js","sources":["../../../../../src/x-modules/search/components/banner.vue"],"sourcesContent":["<template>\n <component\n :is=\"banner.url ? 'a' : 'figure'\"\n v-if=\"!imageFailed\"\n :href=\"banner.url\"\n class=\"x-banner\"\n data-test=\"banner\"\n v-on=\"banner.url ? anchorEvents() : {}\"\n >\n <img\n :src=\"banner.image\"\n :alt=\"banner.title ? banner.title : 'Banner'\"\n class=\"x-banner__image\"\n data-test=\"banner-image\"\n @error=\"imageFailed = true\"\n />\n <h2 v-if=\"banner.title\" class=\"x-banner__title\" :class=\"titleClass\" data-test=\"banner-title\">\n {{ banner.title }}\n </h2>\n </component>\n</template>\n\n<script lang=\"ts\">\nimport type { Banner as BannerModel } from '@empathyco/x-types'\nimport type { PropType } from 'vue'\nimport { defineComponent, ref } from 'vue'\nimport { useXBus } from '../../../composables/use-x-bus'\nimport { searchXModule } from '../x-module'\n\n/**.\n * A banner result is just an item that has been inserted into the search results to advertise\n * something. Usually it is the first item in the grid or it can be placed in the middle of them\n * and fill the whole row where appears.\n * The banner may be clickable or non-clickable depending on whether it has an associated URL\n * or not. It contains an image and, optionally, a title. In case the image does not\n * load due to an error the banner will not be rendered.\n *\n * Additionally, this component exposes the following props to modify the classes of the\n * elements: `titleClass`.\n *\n * @public\n */\nexport default defineComponent({\n name: 'Banner',\n xModule: searchXModule.name,\n props: {\n /**\n * The banner data.\n *\n * @public\n */\n banner: {\n type: Object as PropType<BannerModel>,\n required: true,\n },\n titleClass: String,\n },\n setup(props) {\n const xBus = useXBus()\n\n /**\n * Flag to handle banner image errors.\n *\n * @public\n */\n const imageFailed = ref(false)\n\n /**\n * Emits the banner click event.\n *\n * @internal\n */\n const emitClickEvent = (): void => {\n xBus.emit('UserClickedABanner', props.banner)\n }\n\n /**\n * Returns the events supported by the anchor.\n *\n * @returns Events supported by the anchor.\n *\n * @internal\n */\n const anchorEvents = (): Partial<{\n [key in keyof GlobalEventHandlersEventMap]: () => void\n }> => ({\n click: () => emitClickEvent(),\n auxclick: () => emitClickEvent(),\n contextmenu: () => emitClickEvent(),\n })\n\n return {\n imageFailed,\n anchorEvents,\n }\n },\n})\n</script>\n\n<style lang=\"css\" scoped>\n.x-banner {\n display: flex;\n flex-flow: column nowrap;\n text-decoration: none;\n}\n\n.x-banner__image {\n width: 100%;\n object-fit: contain;\n}\n</style>\n\n<docs lang=\"mdx\">\n## Events\n\nThis component emits the following event:\n\n- [`UserClickedABanner`](https://github.com/empathyco/x/blob/main/packages/x-components/src/wiring/events.types.ts):\n emitted when the user clicks the banner (if it has a URL).\n\n## See it in action\n\nIn this example, banner data is passed as a prop.\n\n_Here you can see how the `Banner` component is rendered._\n\n```vue\n<template>\n <Banner :banner=\"banner\" />\n</template>\n\n<script setup>\nimport { Banner } from '@empathyco/x-components/search'\nimport { ref } from 'vue'\n\nconst banner = ref({\n modelName: 'Banner',\n id: 'banner-example',\n url: 'https://my-website.com/summer-shirts',\n image: 'https://my-website.com/images/summer-shirts.jpg',\n title: 'Trendy summer shirts',\n position: 1,\n})\n</script>\n```\n\n### Customizing the items with classes\n\nThe `titleClass` prop can be used to add classes to the banner title.\n\n```vue\n<template>\n <Banner :banner=\"banner\" titleClass=\"x-bg-neutral-50\" />\n</template>\n\n<script setup>\nimport { Banner } from '@empathyco/x-components/search'\nimport { ref } from 'vue'\n\nconst banner = ref({\n modelName: 'Banner',\n id: 'banner-example',\n url: 'https://my-website.com/summer-shirts',\n image: 'https://my-website.com/images/summer-shirts.jpg',\n title: 'Trendy summer shirts',\n position: 1,\n})\n</script>\n```\n</docs>\n"],"names":[],"mappings":";;;;AA6BA;;;;;;;;;;;;AAYE;AACF,gBAAe,eAAe,CAAC;AAC7B,IAAA,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,aAAa,CAAC,IAAI;AAC3B,IAAA,KAAK,EAAE;AACL;;;;AAIE;AACF,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,MAA+B;AACrC,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA;AACD,QAAA,UAAU,EAAE,MAAM;AACnB,KAAA;AACD,IAAA,KAAK,CAAC,KAAK,EAAA;AACT,QAAA,MAAM,IAAG,GAAI,OAAO,EAAC;AAErB;;;;AAIE;AACF,QAAA,MAAM,WAAU,GAAI,GAAG,CAAC,KAAK,CAAA;AAE7B;;;;AAIE;QACF,MAAM,cAAa,GAAI,MAAU;YAC/B,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,MAAM,CAAA;AAC9C,QAAA,CAAA;AAEA;;;;;;AAME;AACF,QAAA,MAAM,YAAW,GAAI,OAEd;AACL,YAAA,KAAK,EAAE,MAAM,cAAc,EAAE;AAC7B,YAAA,QAAQ,EAAE,MAAM,cAAc,EAAE;AAChC,YAAA,WAAW,EAAE,MAAM,cAAc,EAAE;AACpC,SAAA,CAAA;QAED,OAAO;YACL,WAAW;YACX,YAAY;SACd;IACF,CAAC;AACF,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"banner.vue2.js","sources":["../../../../../src/x-modules/search/components/banner.vue"],"sourcesContent":["<template>\n <component\n :is=\"banner.url ? 'a' : 'figure'\"\n v-if=\"!imageFailed\"\n :href=\"banner.url\"\n class=\"x-banner\"\n data-test=\"banner\"\n v-on=\"banner.url ? anchorEvents() : {}\"\n >\n <img\n :src=\"banner.image\"\n :alt=\"banner.title ? banner.title : 'Banner'\"\n class=\"x-banner__image\"\n data-test=\"banner-image\"\n @error=\"imageFailed = true\"\n />\n <h2 v-if=\"banner.title\" class=\"x-banner__title\" :class=\"titleClass\" data-test=\"banner-title\">\n {{ banner.title }}\n </h2>\n </component>\n</template>\n\n<script lang=\"ts\">\nimport type { Banner as BannerModel } from '@empathyco/x-types'\nimport type { PropType } from 'vue'\nimport type { XEvent } from '../../../wiring'\nimport { defineComponent, ref } from 'vue'\nimport { useXBus } from '../../../composables/use-x-bus'\nimport { searchXModule } from '../x-module'\n\n/**.\n * A banner result is just an item that has been inserted into the search results to advertise\n * something. Usually it is the first item in the grid or it can be placed in the middle of them\n * and fill the whole row where appears.\n * The banner may be clickable or non-clickable depending on whether it has an associated URL\n * or not. It contains an image and, optionally, a title. In case the image does not\n * load due to an error the banner will not be rendered.\n *\n * Additionally, this component exposes the following props to modify the classes of the\n * elements: `titleClass`.\n *\n * @public\n */\nexport default defineComponent({\n name: 'Banner',\n xModule: searchXModule.name,\n props: {\n /**\n * The banner data.\n *\n * @public\n */\n banner: {\n type: Object as PropType<BannerModel>,\n required: true,\n },\n titleClass: String,\n /**\n * Event to emit when the banner is clicked.\n *\n * @public\n */\n clickEvent: {\n type: String as PropType<XEvent>,\n default: 'UserClickedABanner',\n },\n },\n setup(props) {\n const xBus = useXBus()\n\n /**\n * Flag to handle banner image errors.\n *\n * @public\n */\n const imageFailed = ref(false)\n\n /**\n * Emits the banner click event.\n *\n * @internal\n */\n const emitClickEvent = (): void => {\n xBus.emit(props.clickEvent, props.banner)\n }\n\n /**\n * Returns the events supported by the anchor.\n *\n * @returns Events supported by the anchor.\n *\n * @internal\n */\n const anchorEvents = (): Partial<{\n [key in keyof GlobalEventHandlersEventMap]: () => void\n }> => ({\n click: () => emitClickEvent(),\n auxclick: () => emitClickEvent(),\n contextmenu: () => emitClickEvent(),\n })\n\n return {\n imageFailed,\n anchorEvents,\n }\n },\n})\n</script>\n\n<style lang=\"css\" scoped>\n.x-banner {\n display: flex;\n flex-flow: column nowrap;\n text-decoration: none;\n}\n\n.x-banner__image {\n width: 100%;\n object-fit: contain;\n}\n</style>\n\n<docs lang=\"mdx\">\n## Events\n\nThis component emits the following event:\n\n- `clickEvent` (default `UserClickedABanner`):\n emitted when the user clicks the banner (if it has a URL). The event name can be customized\n via the `clickEvent` prop.\n\n## See it in action\n\nIn this example, banner data is passed as a prop.\n\n_Here you can see how the `Banner` component is rendered._\n\n```vue\n<template>\n <Banner :banner=\"banner\" />\n</template>\n\n<script setup>\nimport { Banner } from '@empathyco/x-components/search'\nimport { ref } from 'vue'\n\nconst banner = ref({\n modelName: 'Banner',\n id: 'banner-example',\n url: 'https://my-website.com/summer-shirts',\n image: 'https://my-website.com/images/summer-shirts.jpg',\n title: 'Trendy summer shirts',\n position: 1,\n})\n</script>\n```\n\n### Customizing the items with classes\n\nThe `titleClass` prop can be used to add classes to the banner title.\n\n```vue\n<template>\n <Banner :banner=\"banner\" titleClass=\"x-bg-neutral-50\" />\n</template>\n\n<script setup>\nimport { Banner } from '@empathyco/x-components/search'\nimport { ref } from 'vue'\n\nconst banner = ref({\n modelName: 'Banner',\n id: 'banner-example',\n url: 'https://my-website.com/summer-shirts',\n image: 'https://my-website.com/images/summer-shirts.jpg',\n title: 'Trendy summer shirts',\n position: 1,\n})\n</script>\n```\n</docs>\n"],"names":[],"mappings":";;;;AA8BA;;;;;;;;;;;;AAYE;AACF,gBAAe,eAAe,CAAC;AAC7B,IAAA,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,aAAa,CAAC,IAAI;AAC3B,IAAA,KAAK,EAAE;AACL;;;;AAIE;AACF,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,MAA+B;AACrC,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA;AACD,QAAA,UAAU,EAAE,MAAM;AAClB;;;;AAIE;AACF,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,MAA0B;AAChC,YAAA,OAAO,EAAE,oBAAoB;AAC9B,SAAA;AACF,KAAA;AACD,IAAA,KAAK,CAAC,KAAK,EAAA;AACT,QAAA,MAAM,IAAG,GAAI,OAAO,EAAC;AAErB;;;;AAIE;AACF,QAAA,MAAM,WAAU,GAAI,GAAG,CAAC,KAAK,CAAA;AAE7B;;;;AAIE;QACF,MAAM,cAAa,GAAI,MAAU;YAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAA;AAC1C,QAAA,CAAA;AAEA;;;;;;AAME;AACF,QAAA,MAAM,YAAW,GAAI,OAEd;AACL,YAAA,KAAK,EAAE,MAAM,cAAc,EAAE;AAC7B,YAAA,QAAQ,EAAE,MAAM,cAAc,EAAE;AAChC,YAAA,WAAW,EAAE,MAAM,cAAc,EAAE;AACpC,SAAA,CAAA;QAED,OAAO;YACL,WAAW;YACX,YAAY;SACd;IACF,CAAC;AACF,CAAA,CAAA;;;;"}
@@ -92,6 +92,7 @@ const searchBoxWiring = createWiring({
92
92
  transitionState: setInputStatus('UserClearedQuery'),
93
93
  },
94
94
  UserBrowsedToCategory: {
95
+ clearSearchBoxQuery,
95
96
  transitionState: setInputStatus('UserClearedQuery'),
96
97
  },
97
98
  UserFocusedSearchBox: {
@@ -1 +1 @@
1
- {"version":3,"file":"wiring.js","sources":["../../../../src/x-modules/search-box/wiring.ts"],"sourcesContent":["import type { XEvent } from '../../wiring/events.types'\nimport type { NamespacedWireCommit } from '../../wiring/namespaced-wiring.types'\nimport type { AnyWire } from '../../wiring/wiring.types'\nimport { filter } from '../../wiring/index'\nimport { namespacedWireCommit, namespacedWireDispatch } from '../../wiring/namespaced-wires.factory'\nimport { createWiring } from '../../wiring/wiring.utils'\n\n/**\n * `searchBox` {@link XModuleName | XModule name}.\n *\n * @internal\n */\nconst moduleName = 'searchBox'\n\n/**\n * WireCommit for {@link SearchBoxXModule}.\n *\n * @internal\n */\nconst wireCommit: NamespacedWireCommit<typeof moduleName> = namespacedWireCommit(moduleName)\n\n/**\n * WireDispatch for {@link SearchBoxXModule}.\n *\n * @internal\n */\nconst wireDispatch = namespacedWireDispatch(moduleName)\n\n/**\n * Sets the query of the search-box module.\n *\n * @public\n */\nconst setSearchBoxQuery = wireCommit('setQuery')\n\n/**\n * Sets the search state `query` with the selectedQueryPreview's query.\n *\n * @public\n */\nconst setSearchBoxQueryFromPreview = wireCommit('setQuery', ({ eventPayload: { query } }) => query)\n\n/**\n * Clears the query of the search-box module.\n *\n * @public\n */\nconst clearSearchBoxQuery = wireCommit('setQuery', '')\n\n/**\n * Sets the search state `query`.\n *\n * @public\n */\nconst setUrlParams = wireDispatch('setUrlParams')\n\n/**\n * Sets the search state `status`.\n *\n * @param event - The {@link XEvent} used to transition the status.\n *\n * @returns A wire.\n *\n * @public\n */\nconst setInputStatus = (event: XEvent): AnyWire => wireDispatch('setInputStatus', event)\n\n/**\n * SearchBox wiring.\n *\n * @internal\n */\nexport const searchBoxWiring = createWiring({\n ParamsLoadedFromUrl: {\n setUrlParams,\n transitionState: filter(setInputStatus('UserAcceptedAQuery'), ({ eventPayload: urlParams }) => {\n // eslint-disable-next-line ts/no-unsafe-member-access\n return !!urlParams.query\n }),\n },\n UserIsTypingAQuery: {\n setSearchBoxQuery,\n transitionState: setInputStatus('UserIsTypingAQuery'),\n },\n UserAcceptedAQuery: {\n setSearchBoxQuery,\n transitionState: setInputStatus('UserAcceptedAQuery'),\n },\n UserAcceptedAQueryPreview: {\n setSearchBoxQueryFromPreview,\n transitionState: setInputStatus('UserAcceptedAQuery'),\n },\n UserPressedClearSearchBoxButton: {\n clearSearchBoxQuery,\n },\n UserClickedCloseX: {\n clearSearchBoxQuery,\n },\n UserClickedOutOfMainModal: {\n clearSearchBoxQuery,\n },\n UserClearedQuery: {\n transitionState: setInputStatus('UserClearedQuery'),\n },\n UserBrowsedToCategory: {\n transitionState: setInputStatus('UserClearedQuery'),\n },\n UserFocusedSearchBox: {\n transitionState: setInputStatus('UserFocusedSearchBox'),\n },\n UserBlurredSearchBox: {\n transitionState: setInputStatus('UserBlurredSearchBox'),\n },\n})\n"],"names":[],"mappings":";;;;AAOA;;;;AAIG;AACH,MAAM,UAAU,GAAG,WAAW;AAE9B;;;;AAIG;AACH,MAAM,UAAU,GAA4C,oBAAoB,CAAC,UAAU,CAAC;AAE5F;;;;AAIG;AACH,MAAM,YAAY,GAAG,sBAAsB,CAAC,UAAU,CAAC;AAEvD;;;;AAIG;AACH,MAAM,iBAAiB,GAAG,UAAU,CAAC,UAAU,CAAC;AAEhD;;;;AAIG;AACH,MAAM,4BAA4B,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,KAAK,CAAC;AAEnG;;;;AAIG;AACH,MAAM,mBAAmB,GAAG,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC;AAEtD;;;;AAIG;AACH,MAAM,YAAY,GAAG,YAAY,CAAC,cAAc,CAAC;AAEjD;;;;;;;;AAQG;AACH,MAAM,cAAc,GAAG,CAAC,KAAa,KAAc,YAAY,CAAC,gBAAgB,EAAE,KAAK,CAAC;AAExF;;;;AAIG;AACI,MAAM,eAAe,GAAG,YAAY,CAAC;AAC1C,IAAA,mBAAmB,EAAE;QACnB,YAAY;AACZ,QAAA,eAAe,EAAE,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,KAAI;;AAE5F,YAAA,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK;AAC1B,QAAA,CAAC,CAAC;AACH,KAAA;AACD,IAAA,kBAAkB,EAAE;QAClB,iBAAiB;AACjB,QAAA,eAAe,EAAE,cAAc,CAAC,oBAAoB,CAAC;AACtD,KAAA;AACD,IAAA,kBAAkB,EAAE;QAClB,iBAAiB;AACjB,QAAA,eAAe,EAAE,cAAc,CAAC,oBAAoB,CAAC;AACtD,KAAA;AACD,IAAA,yBAAyB,EAAE;QACzB,4BAA4B;AAC5B,QAAA,eAAe,EAAE,cAAc,CAAC,oBAAoB,CAAC;AACtD,KAAA;AACD,IAAA,+BAA+B,EAAE;QAC/B,mBAAmB;AACpB,KAAA;AACD,IAAA,iBAAiB,EAAE;QACjB,mBAAmB;AACpB,KAAA;AACD,IAAA,yBAAyB,EAAE;QACzB,mBAAmB;AACpB,KAAA;AACD,IAAA,gBAAgB,EAAE;AAChB,QAAA,eAAe,EAAE,cAAc,CAAC,kBAAkB,CAAC;AACpD,KAAA;AACD,IAAA,qBAAqB,EAAE;AACrB,QAAA,eAAe,EAAE,cAAc,CAAC,kBAAkB,CAAC;AACpD,KAAA;AACD,IAAA,oBAAoB,EAAE;AACpB,QAAA,eAAe,EAAE,cAAc,CAAC,sBAAsB,CAAC;AACxD,KAAA;AACD,IAAA,oBAAoB,EAAE;AACpB,QAAA,eAAe,EAAE,cAAc,CAAC,sBAAsB,CAAC;AACxD,KAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"wiring.js","sources":["../../../../src/x-modules/search-box/wiring.ts"],"sourcesContent":["import type { XEvent } from '../../wiring/events.types'\nimport type { NamespacedWireCommit } from '../../wiring/namespaced-wiring.types'\nimport type { AnyWire } from '../../wiring/wiring.types'\nimport { filter } from '../../wiring/index'\nimport { namespacedWireCommit, namespacedWireDispatch } from '../../wiring/namespaced-wires.factory'\nimport { createWiring } from '../../wiring/wiring.utils'\n\n/**\n * `searchBox` {@link XModuleName | XModule name}.\n *\n * @internal\n */\nconst moduleName = 'searchBox'\n\n/**\n * WireCommit for {@link SearchBoxXModule}.\n *\n * @internal\n */\nconst wireCommit: NamespacedWireCommit<typeof moduleName> = namespacedWireCommit(moduleName)\n\n/**\n * WireDispatch for {@link SearchBoxXModule}.\n *\n * @internal\n */\nconst wireDispatch = namespacedWireDispatch(moduleName)\n\n/**\n * Sets the query of the search-box module.\n *\n * @public\n */\nconst setSearchBoxQuery = wireCommit('setQuery')\n\n/**\n * Sets the search state `query` with the selectedQueryPreview's query.\n *\n * @public\n */\nconst setSearchBoxQueryFromPreview = wireCommit('setQuery', ({ eventPayload: { query } }) => query)\n\n/**\n * Clears the query of the search-box module.\n *\n * @public\n */\nconst clearSearchBoxQuery = wireCommit('setQuery', '')\n\n/**\n * Sets the search state `query`.\n *\n * @public\n */\nconst setUrlParams = wireDispatch('setUrlParams')\n\n/**\n * Sets the search state `status`.\n *\n * @param event - The {@link XEvent} used to transition the status.\n *\n * @returns A wire.\n *\n * @public\n */\nconst setInputStatus = (event: XEvent): AnyWire => wireDispatch('setInputStatus', event)\n\n/**\n * SearchBox wiring.\n *\n * @internal\n */\nexport const searchBoxWiring = createWiring({\n ParamsLoadedFromUrl: {\n setUrlParams,\n transitionState: filter(setInputStatus('UserAcceptedAQuery'), ({ eventPayload: urlParams }) => {\n // eslint-disable-next-line ts/no-unsafe-member-access\n return !!urlParams.query\n }),\n },\n UserIsTypingAQuery: {\n setSearchBoxQuery,\n transitionState: setInputStatus('UserIsTypingAQuery'),\n },\n UserAcceptedAQuery: {\n setSearchBoxQuery,\n transitionState: setInputStatus('UserAcceptedAQuery'),\n },\n UserAcceptedAQueryPreview: {\n setSearchBoxQueryFromPreview,\n transitionState: setInputStatus('UserAcceptedAQuery'),\n },\n UserPressedClearSearchBoxButton: {\n clearSearchBoxQuery,\n },\n UserClickedCloseX: {\n clearSearchBoxQuery,\n },\n UserClickedOutOfMainModal: {\n clearSearchBoxQuery,\n },\n UserClearedQuery: {\n transitionState: setInputStatus('UserClearedQuery'),\n },\n UserBrowsedToCategory: {\n clearSearchBoxQuery,\n transitionState: setInputStatus('UserClearedQuery'),\n },\n UserFocusedSearchBox: {\n transitionState: setInputStatus('UserFocusedSearchBox'),\n },\n UserBlurredSearchBox: {\n transitionState: setInputStatus('UserBlurredSearchBox'),\n },\n})\n"],"names":[],"mappings":";;;;AAOA;;;;AAIG;AACH,MAAM,UAAU,GAAG,WAAW;AAE9B;;;;AAIG;AACH,MAAM,UAAU,GAA4C,oBAAoB,CAAC,UAAU,CAAC;AAE5F;;;;AAIG;AACH,MAAM,YAAY,GAAG,sBAAsB,CAAC,UAAU,CAAC;AAEvD;;;;AAIG;AACH,MAAM,iBAAiB,GAAG,UAAU,CAAC,UAAU,CAAC;AAEhD;;;;AAIG;AACH,MAAM,4BAA4B,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,KAAK,CAAC;AAEnG;;;;AAIG;AACH,MAAM,mBAAmB,GAAG,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC;AAEtD;;;;AAIG;AACH,MAAM,YAAY,GAAG,YAAY,CAAC,cAAc,CAAC;AAEjD;;;;;;;;AAQG;AACH,MAAM,cAAc,GAAG,CAAC,KAAa,KAAc,YAAY,CAAC,gBAAgB,EAAE,KAAK,CAAC;AAExF;;;;AAIG;AACI,MAAM,eAAe,GAAG,YAAY,CAAC;AAC1C,IAAA,mBAAmB,EAAE;QACnB,YAAY;AACZ,QAAA,eAAe,EAAE,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,KAAI;;AAE5F,YAAA,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK;AAC1B,QAAA,CAAC,CAAC;AACH,KAAA;AACD,IAAA,kBAAkB,EAAE;QAClB,iBAAiB;AACjB,QAAA,eAAe,EAAE,cAAc,CAAC,oBAAoB,CAAC;AACtD,KAAA;AACD,IAAA,kBAAkB,EAAE;QAClB,iBAAiB;AACjB,QAAA,eAAe,EAAE,cAAc,CAAC,oBAAoB,CAAC;AACtD,KAAA;AACD,IAAA,yBAAyB,EAAE;QACzB,4BAA4B;AAC5B,QAAA,eAAe,EAAE,cAAc,CAAC,oBAAoB,CAAC;AACtD,KAAA;AACD,IAAA,+BAA+B,EAAE;QAC/B,mBAAmB;AACpB,KAAA;AACD,IAAA,iBAAiB,EAAE;QACjB,mBAAmB;AACpB,KAAA;AACD,IAAA,yBAAyB,EAAE;QACzB,mBAAmB;AACpB,KAAA;AACD,IAAA,gBAAgB,EAAE;AAChB,QAAA,eAAe,EAAE,cAAc,CAAC,kBAAkB,CAAC;AACpD,KAAA;AACD,IAAA,qBAAqB,EAAE;QACrB,mBAAmB;AACnB,QAAA,eAAe,EAAE,cAAc,CAAC,kBAAkB,CAAC;AACpD,KAAA;AACD,IAAA,oBAAoB,EAAE;AACpB,QAAA,eAAe,EAAE,cAAc,CAAC,sBAAsB,CAAC;AACxD,KAAA;AACD,IAAA,oBAAoB,EAAE;AACpB,QAAA,eAAe,EAAE,cAAc,CAAC,sBAAsB,CAAC;AACxD,KAAA;AACF,CAAA;;;;"}
@@ -14,6 +14,8 @@ const fetchTagging = async (url) => fetch(url, { method: 'GET', keepalive: true
14
14
  const trackResultView = createWireFromFunction(({ eventPayload: { tagging } }) => tagging?.viewUrl && void fetchTagging(tagging.viewUrl));
15
15
  const trackResultClick = createWireFromFunction(({ eventPayload: { tagging } }) => tagging?.clickUrl && void fetchTagging(tagging.clickUrl));
16
16
  const trackResultAddToCart = createWireFromFunction(({ eventPayload: { tagging } }) => tagging?.add2cartUrl && void fetchTagging(tagging.add2cartUrl));
17
+ const trackBannerView = createWireFromFunction(({ eventPayload: { tagging } }) => tagging?.viewUrl && void fetchTagging(tagging.viewUrl));
18
+ const trackBannerClick = createWireFromFunction(({ eventPayload: { tagging } }) => tagging?.clickUrl && void fetchTagging(tagging.clickUrl));
17
19
  /**
18
20
  * Sets the vendor results of the {@link VendorXModule}.
19
21
  *
@@ -65,6 +67,12 @@ const vendorWiring = createWiring({
65
67
  VendorBannersChanged: {
66
68
  setBanners,
67
69
  },
70
+ UserViewedAVendorBanner: {
71
+ trackBannerView,
72
+ },
73
+ UserClickedAVendorBanner: {
74
+ trackBannerClick,
75
+ },
68
76
  SearchRequestChanged: {
69
77
  resetResults,
70
78
  resetBanners,
@@ -1 +1 @@
1
- {"version":3,"file":"wiring.js","sources":["../../../../src/x-modules/vendor/wiring.ts"],"sourcesContent":["import type { WirePayload, XEventPayload } from '../../wiring'\nimport { createWireFromFunction, createWiring, namespacedWireCommit } from '../../wiring'\n\n/**\n * WireCommit for {@link VendorXModule}.\n *\n * @internal\n */\nconst wireCommit = namespacedWireCommit('vendor')\n\nconst fetchTagging = async (url: string) => fetch(url, { method: 'GET', keepalive: true })\n\nconst trackResultView = createWireFromFunction<XEventPayload<'UserViewedAVendorResult'>>(\n ({ eventPayload: { tagging } }) => tagging?.viewUrl && void fetchTagging(tagging.viewUrl),\n)\nconst trackResultClick = createWireFromFunction<XEventPayload<'UserClickedAVendorResult'>>(\n ({ eventPayload: { tagging } }) => tagging?.clickUrl && void fetchTagging(tagging.clickUrl),\n)\nconst trackResultAddToCart = createWireFromFunction<\n XEventPayload<'UserClickedVendorResultAddToCart'>\n>(({ eventPayload: { tagging } }) => tagging?.add2cartUrl && void fetchTagging(tagging.add2cartUrl))\n/**\n * Sets the vendor results of the {@link VendorXModule}.\n *\n * @public\n */\nexport const setResults = wireCommit(\n 'setResults',\n ({ eventPayload }: WirePayload<XEventPayload<'VendorResultsChanged'>>) =>\n eventPayload.map(vendorResult => ({\n ...vendorResult,\n modelName: 'VendorResult' as const,\n })),\n)\n\n/**\n * Sets the vendor banners of the {@link VendorXModule}.\n *\n * @public\n */\nexport const setBanners = wireCommit(\n 'setBanners',\n ({ eventPayload }: WirePayload<XEventPayload<'VendorBannersChanged'>>) =>\n eventPayload.map(vendorBanner => ({\n ...vendorBanner,\n modelName: 'VendorBanner' as const,\n })),\n)\n\n/**\n * Resets the vendor results of the {@link VendorXModule}.\n *\n * @public\n */\nconst resetResults = wireCommit('setResults', [])\n\n/**\n * Resets the vendor banners of the {@link VendorXModule}.\n *\n * @public\n */\nconst resetBanners = wireCommit('setBanners', [])\n\n/**\n * Wiring configuration for the {@link VendorXModule | vendor module}.\n *\n * @internal\n */\nexport const vendorWiring = createWiring({\n VendorResultsChanged: {\n setResults,\n },\n UserViewedAVendorResult: {\n trackResultView,\n },\n UserClickedAVendorResult: {\n trackResultClick,\n },\n UserClickedVendorResultAddToCart: {\n trackResultAddToCart,\n },\n VendorBannersChanged: {\n setBanners,\n },\n SearchRequestChanged: {\n resetResults,\n resetBanners,\n },\n})\n"],"names":[],"mappings":";;;;;;AAGA;;;;AAIG;AACH,MAAM,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC;AAEjD,MAAM,YAAY,GAAG,OAAO,GAAW,KAAK,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAE1F,MAAM,eAAe,GAAG,sBAAsB,CAC5C,CAAC,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,OAAO,EAAE,OAAO,IAAI,KAAK,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAC1F;AACD,MAAM,gBAAgB,GAAG,sBAAsB,CAC7C,CAAC,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,OAAO,EAAE,QAAQ,IAAI,KAAK,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAC5F;AACD,MAAM,oBAAoB,GAAG,sBAAsB,CAEjD,CAAC,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,OAAO,EAAE,WAAW,IAAI,KAAK,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACpG;;;;AAIG;MACU,UAAU,GAAG,UAAU,CAClC,YAAY,EACZ,CAAC,EAAE,YAAY,EAAsD,KACnE,YAAY,CAAC,GAAG,CAAC,YAAY,KAAK;AAChC,IAAA,GAAG,YAAY;AACf,IAAA,SAAS,EAAE,cAAuB;CACnC,CAAC,CAAC;AAGP;;;;AAIG;MACU,UAAU,GAAG,UAAU,CAClC,YAAY,EACZ,CAAC,EAAE,YAAY,EAAsD,KACnE,YAAY,CAAC,GAAG,CAAC,YAAY,KAAK;AAChC,IAAA,GAAG,YAAY;AACf,IAAA,SAAS,EAAE,cAAuB;CACnC,CAAC,CAAC;AAGP;;;;AAIG;AACH,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,EAAE,EAAE,CAAC;AAEjD;;;;AAIG;AACH,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,EAAE,EAAE,CAAC;AAEjD;;;;AAIG;AACI,MAAM,YAAY,GAAG,YAAY,CAAC;AACvC,IAAA,oBAAoB,EAAE;QACpB,UAAU;AACX,KAAA;AACD,IAAA,uBAAuB,EAAE;QACvB,eAAe;AAChB,KAAA;AACD,IAAA,wBAAwB,EAAE;QACxB,gBAAgB;AACjB,KAAA;AACD,IAAA,gCAAgC,EAAE;QAChC,oBAAoB;AACrB,KAAA;AACD,IAAA,oBAAoB,EAAE;QACpB,UAAU;AACX,KAAA;AACD,IAAA,oBAAoB,EAAE;QACpB,YAAY;QACZ,YAAY;AACb,KAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"wiring.js","sources":["../../../../src/x-modules/vendor/wiring.ts"],"sourcesContent":["import type { WirePayload, XEventPayload } from '../../wiring'\nimport { createWireFromFunction, createWiring, namespacedWireCommit } from '../../wiring'\n\n/**\n * WireCommit for {@link VendorXModule}.\n *\n * @internal\n */\nconst wireCommit = namespacedWireCommit('vendor')\n\nconst fetchTagging = async (url: string) => fetch(url, { method: 'GET', keepalive: true })\n\nconst trackResultView = createWireFromFunction<XEventPayload<'UserViewedAVendorResult'>>(\n ({ eventPayload: { tagging } }) => tagging?.viewUrl && void fetchTagging(tagging.viewUrl),\n)\nconst trackResultClick = createWireFromFunction<XEventPayload<'UserClickedAVendorResult'>>(\n ({ eventPayload: { tagging } }) => tagging?.clickUrl && void fetchTagging(tagging.clickUrl),\n)\nconst trackResultAddToCart = createWireFromFunction<\n XEventPayload<'UserClickedVendorResultAddToCart'>\n>(({ eventPayload: { tagging } }) => tagging?.add2cartUrl && void fetchTagging(tagging.add2cartUrl))\nconst trackBannerView = createWireFromFunction<XEventPayload<'UserViewedAVendorBanner'>>(\n ({ eventPayload: { tagging } }) => tagging?.viewUrl && void fetchTagging(tagging.viewUrl),\n)\nconst trackBannerClick = createWireFromFunction<XEventPayload<'UserClickedAVendorBanner'>>(\n ({ eventPayload: { tagging } }) => tagging?.clickUrl && void fetchTagging(tagging.clickUrl),\n)\n/**\n * Sets the vendor results of the {@link VendorXModule}.\n *\n * @public\n */\nexport const setResults = wireCommit(\n 'setResults',\n ({ eventPayload }: WirePayload<XEventPayload<'VendorResultsChanged'>>) =>\n eventPayload.map(vendorResult => ({\n ...vendorResult,\n modelName: 'VendorResult' as const,\n })),\n)\n\n/**\n * Sets the vendor banners of the {@link VendorXModule}.\n *\n * @public\n */\nexport const setBanners = wireCommit(\n 'setBanners',\n ({ eventPayload }: WirePayload<XEventPayload<'VendorBannersChanged'>>) =>\n eventPayload.map(vendorBanner => ({\n ...vendorBanner,\n modelName: 'VendorBanner' as const,\n })),\n)\n\n/**\n * Resets the vendor results of the {@link VendorXModule}.\n *\n * @public\n */\nconst resetResults = wireCommit('setResults', [])\n\n/**\n * Resets the vendor banners of the {@link VendorXModule}.\n *\n * @public\n */\nconst resetBanners = wireCommit('setBanners', [])\n\n/**\n * Wiring configuration for the {@link VendorXModule | vendor module}.\n *\n * @internal\n */\nexport const vendorWiring = createWiring({\n VendorResultsChanged: {\n setResults,\n },\n UserViewedAVendorResult: {\n trackResultView,\n },\n UserClickedAVendorResult: {\n trackResultClick,\n },\n UserClickedVendorResultAddToCart: {\n trackResultAddToCart,\n },\n VendorBannersChanged: {\n setBanners,\n },\n UserViewedAVendorBanner: {\n trackBannerView,\n },\n UserClickedAVendorBanner: {\n trackBannerClick,\n },\n SearchRequestChanged: {\n resetResults,\n resetBanners,\n },\n})\n"],"names":[],"mappings":";;;;;;AAGA;;;;AAIG;AACH,MAAM,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC;AAEjD,MAAM,YAAY,GAAG,OAAO,GAAW,KAAK,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAE1F,MAAM,eAAe,GAAG,sBAAsB,CAC5C,CAAC,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,OAAO,EAAE,OAAO,IAAI,KAAK,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAC1F;AACD,MAAM,gBAAgB,GAAG,sBAAsB,CAC7C,CAAC,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,OAAO,EAAE,QAAQ,IAAI,KAAK,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAC5F;AACD,MAAM,oBAAoB,GAAG,sBAAsB,CAEjD,CAAC,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,OAAO,EAAE,WAAW,IAAI,KAAK,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACpG,MAAM,eAAe,GAAG,sBAAsB,CAC5C,CAAC,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,OAAO,EAAE,OAAO,IAAI,KAAK,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAC1F;AACD,MAAM,gBAAgB,GAAG,sBAAsB,CAC7C,CAAC,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,OAAO,EAAE,QAAQ,IAAI,KAAK,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAC5F;AACD;;;;AAIG;MACU,UAAU,GAAG,UAAU,CAClC,YAAY,EACZ,CAAC,EAAE,YAAY,EAAsD,KACnE,YAAY,CAAC,GAAG,CAAC,YAAY,KAAK;AAChC,IAAA,GAAG,YAAY;AACf,IAAA,SAAS,EAAE,cAAuB;CACnC,CAAC,CAAC;AAGP;;;;AAIG;MACU,UAAU,GAAG,UAAU,CAClC,YAAY,EACZ,CAAC,EAAE,YAAY,EAAsD,KACnE,YAAY,CAAC,GAAG,CAAC,YAAY,KAAK;AAChC,IAAA,GAAG,YAAY;AACf,IAAA,SAAS,EAAE,cAAuB;CACnC,CAAC,CAAC;AAGP;;;;AAIG;AACH,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,EAAE,EAAE,CAAC;AAEjD;;;;AAIG;AACH,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,EAAE,EAAE,CAAC;AAEjD;;;;AAIG;AACI,MAAM,YAAY,GAAG,YAAY,CAAC;AACvC,IAAA,oBAAoB,EAAE;QACpB,UAAU;AACX,KAAA;AACD,IAAA,uBAAuB,EAAE;QACvB,eAAe;AAChB,KAAA;AACD,IAAA,wBAAwB,EAAE;QACxB,gBAAgB;AACjB,KAAA;AACD,IAAA,gCAAgC,EAAE;QAChC,oBAAoB;AACrB,KAAA;AACD,IAAA,oBAAoB,EAAE;QACpB,UAAU;AACX,KAAA;AACD,IAAA,uBAAuB,EAAE;QACvB,eAAe;AAChB,KAAA;AACD,IAAA,wBAAwB,EAAE;QACxB,gBAAgB;AACjB,KAAA;AACD,IAAA,oBAAoB,EAAE;QACpB,YAAY;QACZ,YAAY;AACb,KAAA;AACF,CAAA;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@empathyco/x-components",
3
- "version": "8.5.0",
3
+ "version": "8.7.0",
4
4
  "description": "Empathy X Components",
5
5
  "author": "Empathy Systems Corporation S.L.",
6
6
  "license": "Apache-2.0",
@@ -68,8 +68,8 @@
68
68
  },
69
69
  "dependencies": {
70
70
  "@empathyco/x-adapter": "8.1.8",
71
- "@empathyco/x-adapter-platform": "1.7.1",
72
- "@empathyco/x-types": "10.6.0",
71
+ "@empathyco/x-adapter-platform": "1.7.2",
72
+ "@empathyco/x-types": "10.7.0",
73
73
  "@empathyco/x-utils": "1.0.9",
74
74
  "@vue/devtools-api": "~6.6.4",
75
75
  "@vueuse/core": "~12.8.2",
@@ -117,5 +117,5 @@
117
117
  "access": "public",
118
118
  "directory": "dist"
119
119
  },
120
- "gitHead": "23cadd3838c5517e15f0284e33c568f0faf82078"
120
+ "gitHead": "04e24ecd213c1586b0eed60e72014497fe9dc553"
121
121
  }