@coveo/atomic 3.33.8-pre.fbe332fd49 → 3.33.9-pre.03115d69df
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/atomic/_atomic.esm.js +1 -1
- package/dist/atomic/atomic.esm.js.map +1 -1
- package/dist/atomic/autoloader/index.cjs.js +2 -2
- package/dist/atomic/autoloader/index.esm.js +2 -2
- package/dist/atomic/components/_index.d.ts +2 -2
- package/dist/atomic/components/_index.js +1 -1
- package/dist/atomic/components/analytics-config.js +1 -1
- package/dist/atomic/components/atomic-citation.js +1 -1
- package/dist/atomic/components/atomic-facet-manager.js +1 -1
- package/dist/atomic/components/atomic-generated-answer-feedback-modal.js +1 -1
- package/dist/atomic/components/atomic-html2.js +1 -1
- package/dist/atomic/components/atomic-insight-edit-toggle.js +1 -1
- package/dist/atomic/components/atomic-insight-facet.js +1 -1
- package/dist/atomic/components/atomic-insight-folded-result-list.js +1 -1
- package/dist/atomic/components/atomic-insight-full-search-button.js +1 -1
- package/dist/atomic/components/atomic-insight-history-toggle.js +1 -1
- package/dist/atomic/components/atomic-insight-interface.js +1 -1
- package/dist/atomic/components/atomic-insight-no-results.js +1 -1
- package/dist/atomic/components/atomic-insight-numeric-facet.js +1 -1
- package/dist/atomic/components/atomic-insight-pager.js +5 -41
- package/dist/atomic/components/atomic-insight-pager.js.map +1 -1
- package/dist/atomic/components/atomic-insight-query-error.js +1 -1
- package/dist/atomic/components/atomic-insight-refine-modal2.js +2 -2
- package/dist/atomic/components/atomic-insight-refine-toggle.js +1 -1
- package/dist/atomic/components/atomic-insight-result-action.js +1 -1
- package/dist/atomic/components/atomic-insight-result-attach-to-case-action.js +1 -1
- package/dist/atomic/components/atomic-insight-result-attach-to-case-indicator.js +1 -1
- package/dist/atomic/components/atomic-insight-result-children.js +1 -1
- package/dist/atomic/components/atomic-insight-result-list.js +1 -1
- package/dist/atomic/components/atomic-insight-result-quickview-action.js +1 -1
- package/dist/atomic/components/atomic-insight-result2.js +1 -1
- package/dist/atomic/components/atomic-insight-search-box.js +2 -2
- package/dist/atomic/components/atomic-insight-smart-snippet-feedback-modal2.js +2 -2
- package/dist/atomic/components/atomic-insight-tabs.js +1 -1
- package/dist/atomic/components/atomic-insight-user-actions-session2.js +1 -1
- package/dist/atomic/components/atomic-insight-user-actions-toggle.js +1 -1
- package/dist/atomic/components/atomic-ipx-body2.js +2 -2
- package/dist/atomic/components/atomic-ipx-button.js +2 -2
- package/dist/atomic/components/atomic-ipx-embedded.js +1 -1
- package/dist/atomic/components/atomic-ipx-modal.js +2 -2
- package/dist/atomic/components/atomic-ipx-recs-list.js +1 -1
- package/dist/atomic/components/atomic-ipx-refine-modal2.js +1 -1
- package/dist/atomic/components/atomic-ipx-refine-toggle.js +1 -1
- package/dist/atomic/components/atomic-ipx-result-link.js +1 -1
- package/dist/atomic/components/atomic-ipx-tabs.js +1 -1
- package/dist/atomic/components/atomic-load-more-results.js +1 -1
- package/dist/atomic/components/atomic-no-results.js +1 -1
- package/dist/atomic/components/atomic-numeric-facet.js +1 -0
- package/dist/atomic/components/atomic-numeric-facet.js.map +1 -1
- package/dist/atomic/components/atomic-pager.d.ts +11 -0
- package/dist/atomic/components/atomic-pager.js +134 -0
- package/dist/atomic/components/atomic-pager.js.map +1 -0
- package/dist/atomic/components/atomic-query-error.js +1 -1
- package/dist/atomic/components/atomic-recs-error.js +1 -1
- package/dist/atomic/components/atomic-recs-interface.js +1 -1
- package/dist/atomic/components/atomic-recs-list.js +1 -1
- package/dist/atomic/components/atomic-refine-modal2.js +1 -1
- package/dist/atomic/components/atomic-refine-toggle.js +1 -1
- package/dist/atomic/components/atomic-relevance-inspector.js +46 -1
- package/dist/atomic/components/atomic-relevance-inspector.js.map +1 -1
- package/dist/atomic/components/atomic-result-placeholder2.js +2 -2
- package/dist/atomic/components/atomic-result-table-placeholder2.js +1 -1
- package/dist/atomic/components/atomic-search-box-instant-results.js +1 -1
- package/dist/atomic/components/atomic-search-box.js +15 -4
- package/dist/atomic/components/atomic-search-box.js.map +1 -1
- package/dist/atomic/components/atomic-smart-snippet-answer2.js +1 -1
- package/dist/atomic/components/atomic-smart-snippet-collapse-wrapper2.js +2 -2
- package/dist/atomic/components/atomic-smart-snippet-expandable-answer2.js +1 -1
- package/dist/atomic/components/atomic-smart-snippet-source2.js +1 -1
- package/dist/atomic/components/atomic-stencil-facet-date-input.js +3 -3
- package/dist/atomic/components/atomic-suggestion-renderer2.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-commerce-interface/atomic-commerce-interface.js +50 -8
- package/dist/atomic/components/components/commerce/atomic-commerce-query-summary/atomic-commerce-query-summary.js +2 -2
- package/dist/atomic/components/components/commerce/atomic-commerce-recommendation-interface/atomic-commerce-recommendation-interface.js +25 -10
- package/dist/atomic/components/components/commerce/atomic-commerce-search-box/atomic-commerce-search-box.js +12 -5
- package/dist/atomic/components/components/common/atomic-modal/atomic-modal.js +2 -0
- package/dist/atomic/components/components/common/formats/format-common.js +1 -1
- package/dist/atomic/components/components/search/atomic-search-interface/analytics-config.js +57 -0
- package/dist/atomic/components/components/search/atomic-search-interface/atomic-search-interface.js +496 -0
- package/dist/atomic/components/components/search/atomic-search-layout/atomic-search-layout.js +20 -9
- package/dist/atomic/components/components/search/index.js +1 -1
- package/dist/atomic/components/components/search/lazy-index.js +1 -1
- package/dist/atomic/components/depends-on.js +28 -28
- package/dist/atomic/components/depends-on.js.map +1 -1
- package/dist/atomic/components/facet-number-input.js +2 -2
- package/dist/atomic/components/format-common.js.map +1 -1
- package/dist/atomic/components/global/environment.js +1 -1
- package/dist/atomic/components/stencil-pager-navigation.js +42 -0
- package/dist/atomic/components/stencil-pager-navigation.js.map +1 -0
- package/dist/atomic/components/tab-button.js +1 -1
- package/dist/atomic/components/tab-popover.js +1 -1
- package/dist/atomic/{p-6329ff94.entry.js → p-004adbb8.entry.js} +2 -2
- package/dist/atomic/{p-d0f47b33.entry.js → p-00a6ab8c.entry.js} +2 -2
- package/dist/atomic/{p-3b20b011.entry.js → p-0610b3e7.entry.js} +2 -2
- package/dist/atomic/{p-ee6771f1.entry.js → p-07b6424c.entry.js} +2 -2
- package/dist/atomic/{p-2f8de0b9.entry.js → p-07fbb49a.entry.js} +2 -2
- package/dist/atomic/{p-811d6dcb.entry.js → p-0b3f6994.entry.js} +2 -2
- package/dist/atomic/{p-83c9244a.entry.js → p-0e27d4f2.entry.js} +2 -2
- package/dist/atomic/{p-c126ee6b.entry.js → p-0e5dc57f.entry.js} +2 -2
- package/dist/atomic/p-0edea6f9.entry.js +2 -0
- package/dist/atomic/{p-20341936.entry.js → p-10b5e0f3.entry.js} +2 -2
- package/dist/atomic/{p-2ca352f4.entry.js → p-15406648.entry.js} +2 -2
- package/dist/atomic/{p-a3efa89e.entry.js → p-160553ce.entry.js} +2 -2
- package/dist/atomic/p-211d7d6a.js +2 -0
- package/dist/atomic/p-211d7d6a.js.map +1 -0
- package/dist/atomic/p-25a96534.js.map +1 -1
- package/dist/atomic/{p-757de797.entry.js → p-2a4e9425.entry.js} +2 -2
- package/dist/atomic/{p-26a51a77.entry.js → p-3213225f.entry.js} +2 -2
- package/dist/atomic/{p-d11b2b24.entry.js → p-383f66dc.entry.js} +2 -2
- package/dist/atomic/{p-e8d5e852.entry.js → p-41c5d5fa.entry.js} +2 -2
- package/dist/atomic/{p-e23b3334.entry.js → p-441b1a7b.entry.js} +2 -2
- package/dist/atomic/{p-e514cdb2.entry.js → p-4a74f4a3.entry.js} +2 -2
- package/dist/atomic/p-6de44060.entry.js +2 -0
- package/dist/atomic/p-6de44060.entry.js.map +1 -0
- package/dist/atomic/{p-c1999888.entry.js → p-754909fe.entry.js} +2 -2
- package/dist/atomic/p-79a9a372.entry.js +2 -0
- package/dist/atomic/{p-fb7ad34b.entry.js.map → p-79a9a372.entry.js.map} +1 -1
- package/dist/atomic/{p-36fab158.entry.js → p-7a6468a7.entry.js} +2 -2
- package/dist/atomic/{p-3a2c900c.entry.js → p-7b1a3cab.entry.js} +2 -2
- package/dist/atomic/{p-d93adf52.entry.js → p-7d63bf7b.entry.js} +2 -2
- package/dist/atomic/{p-d364064c.entry.js → p-7f40e57d.entry.js} +2 -2
- package/dist/atomic/{p-d785121d.entry.js → p-856e858c.entry.js} +2 -2
- package/dist/atomic/{p-e162805d.entry.js → p-8a7a23b7.entry.js} +2 -2
- package/dist/atomic/{p-604c4085.entry.js → p-8df7270f.entry.js} +2 -2
- package/dist/atomic/{p-8256cd44.entry.js → p-9147b0db.entry.js} +2 -2
- package/dist/atomic/{p-37374964.entry.js → p-9727f36b.entry.js} +2 -2
- package/dist/atomic/p-97829295.entry.js +2 -0
- package/dist/atomic/{p-31aa052e.entry.js → p-97e42c43.entry.js} +2 -2
- package/dist/atomic/{p-e1865f9f.entry.js → p-9a5d8fbf.entry.js} +2 -2
- package/dist/atomic/{p-9883415e.entry.js → p-9b92b4e2.entry.js} +2 -2
- package/dist/atomic/{p-1ef658d8.entry.js → p-9d023f0b.entry.js} +2 -2
- package/dist/atomic/{p-40635c2d.entry.js → p-9e771351.entry.js} +2 -2
- package/dist/atomic/{p-035f8dc8.entry.js → p-a3fa6695.entry.js} +2 -2
- package/dist/atomic/{p-f0c2dfe8.entry.js → p-abb14108.entry.js} +2 -2
- package/dist/atomic/{p-48f57fd8.entry.js → p-b0c50194.entry.js} +2 -2
- package/dist/atomic/{p-b0b17e21.entry.js → p-b4c34553.entry.js} +2 -2
- package/dist/atomic/{p-98c5b9b8.entry.js → p-b6377fb6.entry.js} +2 -2
- package/dist/atomic/{p-08794435.entry.js → p-ba650801.entry.js} +2 -2
- package/dist/atomic/{p-ea446721.entry.js → p-bd32625e.entry.js} +2 -2
- package/dist/atomic/{p-939eaaac.entry.js → p-bd99fcc1.entry.js} +2 -2
- package/dist/atomic/{p-534b6a0a.entry.js → p-bf1dff76.entry.js} +2 -2
- package/dist/atomic/{p-99b8d52d.entry.js → p-bf49fed3.entry.js} +2 -2
- package/dist/atomic/{p-031670fe.js → p-c0194bd3.js} +2 -2
- package/dist/atomic/{p-3f912e98.entry.js → p-c08f4ee6.entry.js} +2 -2
- package/dist/atomic/p-c2b4b401.entry.js +2 -0
- package/dist/atomic/{p-a53c7821.entry.js → p-c538c8ac.entry.js} +2 -2
- package/dist/atomic/{p-ca762513.entry.js → p-c889adbd.entry.js} +2 -2
- package/dist/atomic/{p-43d708cb.entry.js → p-c9fe4f77.entry.js} +2 -2
- package/dist/atomic/{p-00e5bb15.entry.js → p-ce41c447.entry.js} +2 -2
- package/dist/atomic/{p-6f988841.entry.js → p-d282e943.entry.js} +2 -2
- package/dist/atomic/{p-6f988841.entry.js.map → p-d282e943.entry.js.map} +1 -1
- package/dist/atomic/p-d4ad7336.entry.js +2 -0
- package/dist/atomic/p-d4ad7336.entry.js.map +1 -0
- package/dist/atomic/{p-627e1265.entry.js → p-d50c96c2.entry.js} +2 -2
- package/dist/atomic/p-dafbe2ef.js +2 -0
- package/dist/atomic/p-dafbe2ef.js.map +1 -0
- package/dist/atomic/{p-bc0d6d3d.entry.js → p-dee60597.entry.js} +2 -2
- package/dist/atomic/{p-b2ff1330.entry.js → p-e1c99e2e.entry.js} +2 -2
- package/dist/atomic/{p-6e6d686e.entry.js → p-e3af1bb4.entry.js} +2 -2
- package/dist/atomic/{p-bf50b64d.entry.js → p-e6a7e7b2.entry.js} +2 -2
- package/dist/atomic/{p-594488f2.entry.js → p-f0012580.entry.js} +2 -2
- package/dist/atomic/{p-470f88ed.entry.js → p-f17b8ac4.entry.js} +2 -2
- package/dist/atomic/{p-fbe37f4b.entry.js → p-f8d62605.entry.js} +2 -2
- package/dist/atomic/{p-bdbbb47b.entry.js → p-f8ded37c.entry.js} +2 -2
- package/dist/atomic/{p-fea7bf3b.entry.js → p-f936f55e.entry.js} +2 -2
- package/dist/atomic/{p-fbfe913d.entry.js → p-fb1a1e2e.entry.js} +2 -2
- package/dist/atomic/{p-3af5c567.entry.js → p-fd1326ad.entry.js} +2 -2
- package/dist/cjs/_loader.cjs.js +1 -1
- package/dist/cjs/{analytics-config-e3890e2c.js → analytics-config-53ad6002.js} +2 -2
- package/dist/cjs/{analytics-config-e3890e2c.js.map → analytics-config-53ad6002.js.map} +1 -1
- package/dist/cjs/atomic-category-facet.cjs.entry.js +1 -1
- package/dist/cjs/atomic-citation.cjs.entry.js +1 -1
- package/dist/cjs/atomic-color-facet.cjs.entry.js +1 -1
- package/dist/cjs/atomic-facet-manager.cjs.entry.js +1 -1
- package/dist/cjs/atomic-facet-number-input.cjs.entry.js +2 -2
- package/dist/cjs/atomic-facet.cjs.entry.js +1 -1
- package/dist/cjs/atomic-generated-answer-feedback-modal.cjs.entry.js +1 -1
- package/dist/cjs/atomic-html.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-edit-toggle.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-facet.cjs.entry.js +2 -2
- package/dist/cjs/atomic-insight-folded-result-list.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-full-search-button.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-history-toggle.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-interface.cjs.entry.js +2 -2
- package/dist/cjs/atomic-insight-no-results.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-numeric-facet.cjs.entry.js +2 -2
- package/dist/cjs/atomic-insight-pager.cjs.entry.js +7 -41
- package/dist/cjs/atomic-insight-pager.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-insight-query-error.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-refine-modal.cjs.entry.js +2 -2
- package/dist/cjs/atomic-insight-refine-toggle.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-result-action.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-result-attach-to-case-action.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-result-attach-to-case-indicator.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-result-children.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-result-list.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-result-quickview-action.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-result.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-search-box.cjs.entry.js +2 -2
- package/dist/cjs/atomic-insight-smart-snippet-feedback-modal.cjs.entry.js +2 -2
- package/dist/cjs/atomic-insight-tabs.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-timeframe-facet.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-user-actions-session_2.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-user-actions-toggle.cjs.entry.js +1 -1
- package/dist/cjs/atomic-ipx-body.cjs.entry.js +2 -2
- package/dist/cjs/atomic-ipx-button.cjs.entry.js +2 -2
- package/dist/cjs/atomic-ipx-embedded.cjs.entry.js +1 -1
- package/dist/cjs/atomic-ipx-modal.cjs.entry.js +2 -2
- package/dist/cjs/atomic-ipx-recs-list.cjs.entry.js +1 -1
- package/dist/cjs/atomic-ipx-refine-modal.cjs.entry.js +1 -1
- package/dist/cjs/atomic-ipx-refine-toggle.cjs.entry.js +1 -1
- package/dist/cjs/atomic-ipx-result-link.cjs.entry.js +1 -1
- package/dist/cjs/atomic-ipx-tabs.cjs.entry.js +1 -1
- package/dist/cjs/atomic-load-more-results.cjs.entry.js +1 -1
- package/dist/cjs/atomic-no-results.cjs.entry.js +1 -1
- package/dist/cjs/atomic-numeric-facet.cjs.entry.js +2 -1
- package/dist/cjs/atomic-numeric-facet.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-pager.cjs.entry.js +121 -0
- package/dist/cjs/atomic-pager.cjs.entry.js.map +1 -0
- package/dist/cjs/atomic-query-error.cjs.entry.js +1 -1
- package/dist/cjs/atomic-rating-facet.cjs.entry.js +1 -1
- package/dist/cjs/atomic-rating-range-facet.cjs.entry.js +1 -1
- package/dist/cjs/atomic-recs-error.cjs.entry.js +1 -1
- package/dist/cjs/atomic-recs-interface.cjs.entry.js +2 -2
- package/dist/cjs/atomic-recs-list.cjs.entry.js +1 -1
- package/dist/cjs/atomic-refine-modal.cjs.entry.js +1 -1
- package/dist/cjs/atomic-refine-toggle.cjs.entry.js +1 -1
- package/dist/cjs/atomic-relevance-inspector.cjs.entry.js +2 -2
- package/dist/cjs/atomic-result-placeholder_8.cjs.entry.js +3 -3
- package/dist/cjs/atomic-search-box-instant-results.cjs.entry.js +1 -1
- package/dist/cjs/atomic-search-box.cjs.entry.js +15 -4
- package/dist/cjs/atomic-search-box.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-segmented-facet.cjs.entry.js +1 -1
- package/dist/cjs/atomic-smart-snippet-answer_2.cjs.entry.js +2 -2
- package/dist/cjs/atomic-smart-snippet-collapse-wrapper_2.cjs.entry.js +3 -3
- package/dist/cjs/atomic-stencil-facet-date-input.cjs.entry.js +3 -3
- package/dist/cjs/atomic-suggestion-renderer.cjs.entry.js +1 -1
- package/dist/cjs/atomic-tab-bar_2.cjs.entry.js +1 -1
- package/dist/cjs/atomic-tab-button.cjs.entry.js +1 -1
- package/dist/cjs/atomic-timeframe-facet.cjs.entry.js +1 -1
- package/dist/cjs/atomic.cjs.js +1 -1
- package/dist/cjs/depends-on-f0cf3617.js +68 -0
- package/dist/cjs/depends-on-f0cf3617.js.map +1 -0
- package/dist/cjs/format-common-4aa8aa88.js.map +1 -1
- package/dist/cjs/index-757bc886.js +8 -8
- package/dist/cjs/stencil-pager-navigation-c20b8a95.js +48 -0
- package/dist/cjs/stencil-pager-navigation-c20b8a95.js.map +1 -0
- package/dist/cjs/version.cjs.js +2 -2
- package/dist/esm/_loader.js +1 -1
- package/dist/esm/{analytics-config-76f4b38f.js → analytics-config-10b150fe.js} +2 -2
- package/dist/esm/{analytics-config-76f4b38f.js.map → analytics-config-10b150fe.js.map} +1 -1
- package/dist/esm/atomic-category-facet.entry.js +1 -1
- package/dist/esm/atomic-citation.entry.js +1 -1
- package/dist/esm/atomic-color-facet.entry.js +1 -1
- package/dist/esm/atomic-facet-manager.entry.js +1 -1
- package/dist/esm/atomic-facet-number-input.entry.js +2 -2
- package/dist/esm/atomic-facet.entry.js +1 -1
- package/dist/esm/atomic-generated-answer-feedback-modal.entry.js +1 -1
- package/dist/esm/atomic-html.entry.js +1 -1
- package/dist/esm/atomic-insight-edit-toggle.entry.js +1 -1
- package/dist/esm/atomic-insight-facet.entry.js +2 -2
- package/dist/esm/atomic-insight-folded-result-list.entry.js +1 -1
- package/dist/esm/atomic-insight-full-search-button.entry.js +1 -1
- package/dist/esm/atomic-insight-history-toggle.entry.js +1 -1
- package/dist/esm/atomic-insight-interface.entry.js +2 -2
- package/dist/esm/atomic-insight-no-results.entry.js +1 -1
- package/dist/esm/atomic-insight-numeric-facet.entry.js +2 -2
- package/dist/esm/atomic-insight-pager.entry.js +7 -41
- package/dist/esm/atomic-insight-pager.entry.js.map +1 -1
- package/dist/esm/atomic-insight-query-error.entry.js +1 -1
- package/dist/esm/atomic-insight-refine-modal.entry.js +2 -2
- package/dist/esm/atomic-insight-refine-toggle.entry.js +1 -1
- package/dist/esm/atomic-insight-result-action.entry.js +1 -1
- package/dist/esm/atomic-insight-result-attach-to-case-action.entry.js +1 -1
- package/dist/esm/atomic-insight-result-attach-to-case-indicator.entry.js +1 -1
- package/dist/esm/atomic-insight-result-children.entry.js +1 -1
- package/dist/esm/atomic-insight-result-list.entry.js +1 -1
- package/dist/esm/atomic-insight-result-quickview-action.entry.js +1 -1
- package/dist/esm/atomic-insight-result.entry.js +1 -1
- package/dist/esm/atomic-insight-search-box.entry.js +2 -2
- package/dist/esm/atomic-insight-smart-snippet-feedback-modal.entry.js +2 -2
- package/dist/esm/atomic-insight-tabs.entry.js +1 -1
- package/dist/esm/atomic-insight-timeframe-facet.entry.js +1 -1
- package/dist/esm/atomic-insight-user-actions-session_2.entry.js +1 -1
- package/dist/esm/atomic-insight-user-actions-toggle.entry.js +1 -1
- package/dist/esm/atomic-ipx-body.entry.js +2 -2
- package/dist/esm/atomic-ipx-button.entry.js +2 -2
- package/dist/esm/atomic-ipx-embedded.entry.js +1 -1
- package/dist/esm/atomic-ipx-modal.entry.js +2 -2
- package/dist/esm/atomic-ipx-recs-list.entry.js +1 -1
- package/dist/esm/atomic-ipx-refine-modal.entry.js +1 -1
- package/dist/esm/atomic-ipx-refine-toggle.entry.js +1 -1
- package/dist/esm/atomic-ipx-result-link.entry.js +1 -1
- package/dist/esm/atomic-ipx-tabs.entry.js +1 -1
- package/dist/esm/atomic-load-more-results.entry.js +1 -1
- package/dist/esm/atomic-no-results.entry.js +1 -1
- package/dist/esm/atomic-numeric-facet.entry.js +2 -1
- package/dist/esm/atomic-numeric-facet.entry.js.map +1 -1
- package/dist/esm/atomic-pager.entry.js +117 -0
- package/dist/esm/atomic-pager.entry.js.map +1 -0
- package/dist/esm/atomic-query-error.entry.js +1 -1
- package/dist/esm/atomic-rating-facet.entry.js +1 -1
- package/dist/esm/atomic-rating-range-facet.entry.js +1 -1
- package/dist/esm/atomic-recs-error.entry.js +1 -1
- package/dist/esm/atomic-recs-interface.entry.js +2 -2
- package/dist/esm/atomic-recs-list.entry.js +1 -1
- package/dist/esm/atomic-refine-modal.entry.js +1 -1
- package/dist/esm/atomic-refine-toggle.entry.js +1 -1
- package/dist/esm/atomic-relevance-inspector.entry.js +2 -2
- package/dist/esm/atomic-result-placeholder_8.entry.js +3 -3
- package/dist/esm/atomic-search-box-instant-results.entry.js +1 -1
- package/dist/esm/atomic-search-box.entry.js +15 -4
- package/dist/esm/atomic-search-box.entry.js.map +1 -1
- package/dist/esm/atomic-segmented-facet.entry.js +1 -1
- package/dist/esm/atomic-smart-snippet-answer_2.entry.js +2 -2
- package/dist/esm/atomic-smart-snippet-collapse-wrapper_2.entry.js +3 -3
- package/dist/esm/atomic-stencil-facet-date-input.entry.js +3 -3
- package/dist/esm/atomic-suggestion-renderer.entry.js +1 -1
- package/dist/esm/atomic-tab-bar_2.entry.js +1 -1
- package/dist/esm/atomic-tab-button.entry.js +1 -1
- package/dist/esm/atomic-timeframe-facet.entry.js +1 -1
- package/dist/esm/atomic.js +1 -1
- package/dist/esm/depends-on-20dabb86.js +66 -0
- package/dist/esm/depends-on-20dabb86.js.map +1 -0
- package/dist/esm/format-common-274e0f7c.js.map +1 -1
- package/dist/esm/index-3f35faca.js +8 -8
- package/dist/esm/stencil-pager-navigation-7261a834.js +42 -0
- package/dist/esm/stencil-pager-navigation-7261a834.js.map +1 -0
- package/dist/esm/version.js +2 -2
- package/dist/types/components/commerce/atomic-commerce-interface/atomic-commerce-interface.d.ts +30 -2
- package/dist/types/components/commerce/atomic-commerce-recommendation-interface/atomic-commerce-recommendation-interface.d.ts +1 -0
- package/dist/types/components/commerce/atomic-commerce-search-box/atomic-commerce-search-box.d.ts +1 -0
- package/dist/types/components/search/atomic-pager/atomic-pager.d.ts +16 -26
- package/dist/types/components/search/atomic-search-box/atomic-search-box.d.ts +1 -0
- package/dist/types/components/search/atomic-search-interface/atomic-search-interface.d.ts +46 -44
- package/dist/types/components/search/atomic-search-interface/interfaces.d.ts +2 -1
- package/dist/types/components/search/atomic-search-layout/atomic-search-layout.d.ts +3 -1
- package/dist/types/components/search/index.d.ts +1 -1
- package/dist/types/components.d.ts +67 -165
- package/dist/types/types/open-api.d.ts +3 -0
- package/docs/atomic-docs.json +251 -648
- package/package.json +13 -4
- package/dist/atomic/components/atomic-relevance-inspector2.js +0 -50
- package/dist/atomic/components/atomic-relevance-inspector2.js.map +0 -1
- package/dist/atomic/components/atomic-search-interface.d.ts +0 -11
- package/dist/atomic/components/atomic-search-interface.js +0 -552
- package/dist/atomic/components/atomic-search-interface.js.map +0 -1
- package/dist/atomic/components/components/search/atomic-pager/atomic-pager.js +0 -175
- package/dist/atomic/p-0f13077e.js +0 -2
- package/dist/atomic/p-0f13077e.js.map +0 -1
- package/dist/atomic/p-1992b245.entry.js +0 -2
- package/dist/atomic/p-43c16eeb.entry.js +0 -2
- package/dist/atomic/p-43c16eeb.entry.js.map +0 -1
- package/dist/atomic/p-593903ec.entry.js +0 -2
- package/dist/atomic/p-593903ec.entry.js.map +0 -1
- package/dist/atomic/p-d24d34a7.entry.js +0 -2
- package/dist/atomic/p-e2afb475.entry.js +0 -2
- package/dist/atomic/p-fb7ad34b.entry.js +0 -2
- package/dist/cjs/atomic-search-interface.cjs.entry.js +0 -511
- package/dist/cjs/atomic-search-interface.cjs.entry.js.map +0 -1
- package/dist/cjs/depends-on-0d4e4f15.js +0 -68
- package/dist/cjs/depends-on-0d4e4f15.js.map +0 -1
- package/dist/esm/atomic-search-interface.entry.js +0 -507
- package/dist/esm/atomic-search-interface.entry.js.map +0 -1
- package/dist/esm/depends-on-d73b0ce3.js +0 -66
- package/dist/esm/depends-on-d73b0ce3.js.map +0 -1
- /package/dist/atomic/{p-6329ff94.entry.js.map → p-004adbb8.entry.js.map} +0 -0
- /package/dist/atomic/{p-d0f47b33.entry.js.map → p-00a6ab8c.entry.js.map} +0 -0
- /package/dist/atomic/{p-3b20b011.entry.js.map → p-0610b3e7.entry.js.map} +0 -0
- /package/dist/atomic/{p-ee6771f1.entry.js.map → p-07b6424c.entry.js.map} +0 -0
- /package/dist/atomic/{p-2f8de0b9.entry.js.map → p-07fbb49a.entry.js.map} +0 -0
- /package/dist/atomic/{p-811d6dcb.entry.js.map → p-0b3f6994.entry.js.map} +0 -0
- /package/dist/atomic/{p-83c9244a.entry.js.map → p-0e27d4f2.entry.js.map} +0 -0
- /package/dist/atomic/{p-c126ee6b.entry.js.map → p-0e5dc57f.entry.js.map} +0 -0
- /package/dist/atomic/{p-1992b245.entry.js.map → p-0edea6f9.entry.js.map} +0 -0
- /package/dist/atomic/{p-20341936.entry.js.map → p-10b5e0f3.entry.js.map} +0 -0
- /package/dist/atomic/{p-2ca352f4.entry.js.map → p-15406648.entry.js.map} +0 -0
- /package/dist/atomic/{p-a3efa89e.entry.js.map → p-160553ce.entry.js.map} +0 -0
- /package/dist/atomic/{p-757de797.entry.js.map → p-2a4e9425.entry.js.map} +0 -0
- /package/dist/atomic/{p-26a51a77.entry.js.map → p-3213225f.entry.js.map} +0 -0
- /package/dist/atomic/{p-d11b2b24.entry.js.map → p-383f66dc.entry.js.map} +0 -0
- /package/dist/atomic/{p-e8d5e852.entry.js.map → p-41c5d5fa.entry.js.map} +0 -0
- /package/dist/atomic/{p-e23b3334.entry.js.map → p-441b1a7b.entry.js.map} +0 -0
- /package/dist/atomic/{p-e514cdb2.entry.js.map → p-4a74f4a3.entry.js.map} +0 -0
- /package/dist/atomic/{p-c1999888.entry.js.map → p-754909fe.entry.js.map} +0 -0
- /package/dist/atomic/{p-36fab158.entry.js.map → p-7a6468a7.entry.js.map} +0 -0
- /package/dist/atomic/{p-3a2c900c.entry.js.map → p-7b1a3cab.entry.js.map} +0 -0
- /package/dist/atomic/{p-d93adf52.entry.js.map → p-7d63bf7b.entry.js.map} +0 -0
- /package/dist/atomic/{p-d364064c.entry.js.map → p-7f40e57d.entry.js.map} +0 -0
- /package/dist/atomic/{p-d785121d.entry.js.map → p-856e858c.entry.js.map} +0 -0
- /package/dist/atomic/{p-e162805d.entry.js.map → p-8a7a23b7.entry.js.map} +0 -0
- /package/dist/atomic/{p-604c4085.entry.js.map → p-8df7270f.entry.js.map} +0 -0
- /package/dist/atomic/{p-8256cd44.entry.js.map → p-9147b0db.entry.js.map} +0 -0
- /package/dist/atomic/{p-37374964.entry.js.map → p-9727f36b.entry.js.map} +0 -0
- /package/dist/atomic/{p-d24d34a7.entry.js.map → p-97829295.entry.js.map} +0 -0
- /package/dist/atomic/{p-31aa052e.entry.js.map → p-97e42c43.entry.js.map} +0 -0
- /package/dist/atomic/{p-e1865f9f.entry.js.map → p-9a5d8fbf.entry.js.map} +0 -0
- /package/dist/atomic/{p-9883415e.entry.js.map → p-9b92b4e2.entry.js.map} +0 -0
- /package/dist/atomic/{p-1ef658d8.entry.js.map → p-9d023f0b.entry.js.map} +0 -0
- /package/dist/atomic/{p-40635c2d.entry.js.map → p-9e771351.entry.js.map} +0 -0
- /package/dist/atomic/{p-035f8dc8.entry.js.map → p-a3fa6695.entry.js.map} +0 -0
- /package/dist/atomic/{p-f0c2dfe8.entry.js.map → p-abb14108.entry.js.map} +0 -0
- /package/dist/atomic/{p-48f57fd8.entry.js.map → p-b0c50194.entry.js.map} +0 -0
- /package/dist/atomic/{p-b0b17e21.entry.js.map → p-b4c34553.entry.js.map} +0 -0
- /package/dist/atomic/{p-98c5b9b8.entry.js.map → p-b6377fb6.entry.js.map} +0 -0
- /package/dist/atomic/{p-08794435.entry.js.map → p-ba650801.entry.js.map} +0 -0
- /package/dist/atomic/{p-ea446721.entry.js.map → p-bd32625e.entry.js.map} +0 -0
- /package/dist/atomic/{p-939eaaac.entry.js.map → p-bd99fcc1.entry.js.map} +0 -0
- /package/dist/atomic/{p-534b6a0a.entry.js.map → p-bf1dff76.entry.js.map} +0 -0
- /package/dist/atomic/{p-99b8d52d.entry.js.map → p-bf49fed3.entry.js.map} +0 -0
- /package/dist/atomic/{p-031670fe.js.map → p-c0194bd3.js.map} +0 -0
- /package/dist/atomic/{p-3f912e98.entry.js.map → p-c08f4ee6.entry.js.map} +0 -0
- /package/dist/atomic/{p-e2afb475.entry.js.map → p-c2b4b401.entry.js.map} +0 -0
- /package/dist/atomic/{p-a53c7821.entry.js.map → p-c538c8ac.entry.js.map} +0 -0
- /package/dist/atomic/{p-ca762513.entry.js.map → p-c889adbd.entry.js.map} +0 -0
- /package/dist/atomic/{p-43d708cb.entry.js.map → p-c9fe4f77.entry.js.map} +0 -0
- /package/dist/atomic/{p-00e5bb15.entry.js.map → p-ce41c447.entry.js.map} +0 -0
- /package/dist/atomic/{p-627e1265.entry.js.map → p-d50c96c2.entry.js.map} +0 -0
- /package/dist/atomic/{p-bc0d6d3d.entry.js.map → p-dee60597.entry.js.map} +0 -0
- /package/dist/atomic/{p-b2ff1330.entry.js.map → p-e1c99e2e.entry.js.map} +0 -0
- /package/dist/atomic/{p-6e6d686e.entry.js.map → p-e3af1bb4.entry.js.map} +0 -0
- /package/dist/atomic/{p-bf50b64d.entry.js.map → p-e6a7e7b2.entry.js.map} +0 -0
- /package/dist/atomic/{p-594488f2.entry.js.map → p-f0012580.entry.js.map} +0 -0
- /package/dist/atomic/{p-470f88ed.entry.js.map → p-f17b8ac4.entry.js.map} +0 -0
- /package/dist/atomic/{p-fbe37f4b.entry.js.map → p-f8d62605.entry.js.map} +0 -0
- /package/dist/atomic/{p-bdbbb47b.entry.js.map → p-f8ded37c.entry.js.map} +0 -0
- /package/dist/atomic/{p-fea7bf3b.entry.js.map → p-f936f55e.entry.js.map} +0 -0
- /package/dist/atomic/{p-fbfe913d.entry.js.map → p-fb1a1e2e.entry.js.map} +0 -0
- /package/dist/atomic/{p-3af5c567.entry.js.map → p-fd1326ad.entry.js.map} +0 -0
package/dist/atomic/components/components/search/atomic-search-interface/atomic-search-interface.js
ADDED
@@ -0,0 +1,496 @@
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
6
|
+
};
|
7
|
+
import { buildSearchEngine, buildSearchStatus, buildUrlManager, EcommerceDefaultFieldsToInclude, VERSION as HEADLESS_VERSION, loadFieldActions, loadQueryActions, loadSearchConfigurationActions, } from '@coveo/headless';
|
8
|
+
import { provide } from '@lit/context';
|
9
|
+
import i18next from 'i18next';
|
10
|
+
import { css, html, LitElement } from 'lit';
|
11
|
+
import { customElement, property, state } from 'lit/decorators.js';
|
12
|
+
import { when } from 'lit/directives/when.js';
|
13
|
+
import { InterfaceController, } from "../../common/interface/interface-controller";
|
14
|
+
import { MobileBreakpointController } from "../../common/layout/mobile-breakpoint-controller";
|
15
|
+
import { bindingsContext } from "../../context/bindings-context";
|
16
|
+
import { errorSelector, firstSearchExecutedSelector, noResultsSelector, } from "../atomic-search-layout/search-layout";
|
17
|
+
import { booleanConverter } from "../../../converters/boolean-converter";
|
18
|
+
import { errorGuard } from "../../../decorators/error-guard";
|
19
|
+
import { watch } from "../../../decorators/watch";
|
20
|
+
import { withTailwindStyles } from "../../../decorators/with-tailwind-styles.js";
|
21
|
+
import { ChildrenUpdateCompleteMixin } from "../../../mixins/children-update-complete-mixin";
|
22
|
+
import { markParentAsReady } from "../../../utils/init-queue";
|
23
|
+
import { SafeStorage, StorageItems, } from "../../../utils/local-storage-utils";
|
24
|
+
import { getAnalyticsConfig } from './analytics-config';
|
25
|
+
import { createSearchStore } from './store';
|
26
|
+
// TODO - Remove once all components that use atomic-modal have been migrated.
|
27
|
+
import "../../common/atomic-modal/atomic-modal";
|
28
|
+
const FirstSearchExecutedFlag = 'firstSearchExecuted';
|
29
|
+
/**
|
30
|
+
* The `atomic-search-interface` component is the parent to all other atomic components in a search page. It handles the headless search engine and localization configurations.
|
31
|
+
*
|
32
|
+
* @slot default - The default slot where you can add child components to the interface.
|
33
|
+
*/
|
34
|
+
let AtomicSearchInterface = class AtomicSearchInterface extends ChildrenUpdateCompleteMixin(LitElement) {
|
35
|
+
constructor() {
|
36
|
+
super();
|
37
|
+
this.bindings = {};
|
38
|
+
this.relevanceInspectorIsOpen = false;
|
39
|
+
this.unsubscribeUrlManager = () => { };
|
40
|
+
this.unsubscribeSearchStatus = () => { };
|
41
|
+
this.initialized = false;
|
42
|
+
this.interfaceController = new InterfaceController(this, 'CoveoAtomic', HEADLESS_VERSION);
|
43
|
+
/**
|
44
|
+
* A list of non-default fields to include in the query results.
|
45
|
+
*
|
46
|
+
* Specify the property as an array using a JSON string representation:
|
47
|
+
* ```html
|
48
|
+
* <atomic-search-interface fields-to-include='["fieldA", "fieldB"]'></atomic-search-interface>
|
49
|
+
* ```
|
50
|
+
*/
|
51
|
+
this.fieldsToInclude = [];
|
52
|
+
// TODO - KIT-4994: Add disableAnalytics property that defaults to false.
|
53
|
+
// TODO - KIT-4994: Deprecate in favor of disableAnalytics property.
|
54
|
+
// TODO - (v4) KIT-4990: Remove.
|
55
|
+
/**
|
56
|
+
* Whether analytics should be enabled.
|
57
|
+
*/
|
58
|
+
this.analytics = true;
|
59
|
+
/**
|
60
|
+
* The search interface language.
|
61
|
+
*/
|
62
|
+
this.language = 'en';
|
63
|
+
// TODO - (v4) KIT-4823: Remove.
|
64
|
+
/**
|
65
|
+
* Whether the state should be reflected in the URL parameters.
|
66
|
+
* @deprecated - replaced by `disable-state-reflection-in-url` (this defaults to `true`, while the replacement defaults to `false`).
|
67
|
+
*/
|
68
|
+
this.reflectStateInUrl = true;
|
69
|
+
/**
|
70
|
+
* Whether to disable state reflection in the URL parameters.
|
71
|
+
*/
|
72
|
+
this.disableStateReflectionInUrl = false;
|
73
|
+
/**
|
74
|
+
* The CSS selector for the container where the interface will scroll back to.
|
75
|
+
*/
|
76
|
+
this.scrollContainer = 'atomic-search-interface';
|
77
|
+
/**
|
78
|
+
* The language assets path. By default, this will be a relative URL pointing to `./lang`.
|
79
|
+
*
|
80
|
+
* Example: "/mypublicpath/languages"
|
81
|
+
*
|
82
|
+
*/
|
83
|
+
this.languageAssetsPath = './lang';
|
84
|
+
/**
|
85
|
+
* The icon assets path. By default, this will be a relative URL pointing to `./assets`.
|
86
|
+
*
|
87
|
+
* Example: "/mypublicpath/icons"
|
88
|
+
*
|
89
|
+
*/
|
90
|
+
this.iconAssetsPath = './assets';
|
91
|
+
// TODO - (v4) KIT-5004: Remove.
|
92
|
+
/**
|
93
|
+
* Whether the relevance inspector shortcut should be enabled for this interface.
|
94
|
+
*
|
95
|
+
* The relevance inspector can be opened by holding the Alt key (Option on Mac) while over the interface, and performing a double click.
|
96
|
+
*
|
97
|
+
* The relevance inspector allows to troubleshoot and debug queries.
|
98
|
+
* @deprecated - replaced by `disable-relevance-inspector` (this defaults to `true`, while the replacement defaults to `false`).
|
99
|
+
*/
|
100
|
+
this.enableRelevanceInspector = true;
|
101
|
+
/**
|
102
|
+
* Whether to disable the relevance inspector shortcut for this interface.
|
103
|
+
*/
|
104
|
+
this.disableRelevanceInspector = false;
|
105
|
+
this.handleInitialization = (event) => {
|
106
|
+
this.interfaceController.onComponentInitializing(event);
|
107
|
+
};
|
108
|
+
this.handleRelevanceInspectorDoubleClick = (e) => {
|
109
|
+
if (e.altKey) {
|
110
|
+
this.relevanceInspectorIsOpen = !this.relevanceInspectorIsOpen;
|
111
|
+
}
|
112
|
+
};
|
113
|
+
this.onHashChange = () => {
|
114
|
+
this.urlManager.synchronize(this.fragment);
|
115
|
+
};
|
116
|
+
this.store = createSearchStore();
|
117
|
+
new MobileBreakpointController(this, this.store);
|
118
|
+
const { promise, resolve } = Promise.withResolvers();
|
119
|
+
this.i18Initialized = promise;
|
120
|
+
this.i18n = i18next.createInstance(undefined, resolve);
|
121
|
+
}
|
122
|
+
connectedCallback() {
|
123
|
+
super.connectedCallback();
|
124
|
+
this.store.setLoadingFlag(FirstSearchExecutedFlag);
|
125
|
+
this.initRelevanceInspector();
|
126
|
+
this.addEventListener('atomic/initializeComponent', this.handleInitialization);
|
127
|
+
this.addEventListener('atomic/scrollToTop', this.scrollToTop);
|
128
|
+
this.addEventListener('atomic/relevanceInspector/close', this.closeRelevanceInspector);
|
129
|
+
}
|
130
|
+
willUpdate(changedProperties) {
|
131
|
+
super.willUpdate(changedProperties);
|
132
|
+
if (changedProperties.has('fieldsToInclude')) {
|
133
|
+
this.initFieldsToInclude();
|
134
|
+
}
|
135
|
+
}
|
136
|
+
disconnectedCallback() {
|
137
|
+
super.disconnectedCallback();
|
138
|
+
if (typeof this.unsubscribeUrlManager === 'function') {
|
139
|
+
this.unsubscribeUrlManager();
|
140
|
+
}
|
141
|
+
if (typeof this.unsubscribeSearchStatus === 'function') {
|
142
|
+
this.unsubscribeSearchStatus();
|
143
|
+
}
|
144
|
+
window.removeEventListener('hashchange', this.onHashChange);
|
145
|
+
this.removeEventListener('atomic/initializeComponent', this.handleInitialization);
|
146
|
+
this.removeEventListener('atomic/scrollToTop', this.scrollToTop);
|
147
|
+
this.removeEventListener('atomic/relevanceInspector/close', this.closeRelevanceInspector);
|
148
|
+
this.removeEventListener('dblclick', this.handleRelevanceInspectorDoubleClick);
|
149
|
+
}
|
150
|
+
// TODO - (v4) KIT-4991: Make private.
|
151
|
+
scrollToTop() {
|
152
|
+
const scrollContainerElement = document.querySelector(this.scrollContainer);
|
153
|
+
if (!scrollContainerElement) {
|
154
|
+
this.bindings.engine.logger.warn(`Could not find the scroll container with the selector "${this.scrollContainer}". This will prevent UX interactions that require a scroll from working correctly. Please review the CSS selector in the scrollContainer option`);
|
155
|
+
return;
|
156
|
+
}
|
157
|
+
scrollContainerElement.scrollIntoView({ behavior: 'smooth' });
|
158
|
+
}
|
159
|
+
closeRelevanceInspector() {
|
160
|
+
this.relevanceInspectorIsOpen = false;
|
161
|
+
}
|
162
|
+
/**
|
163
|
+
* Initializes the connection with the headless search engine using options for `accessToken` (required), `organizationId` (required), `environment` (defaults to `prod`), and `renewAccessToken`.
|
164
|
+
*/
|
165
|
+
initialize(options) {
|
166
|
+
return this.internalInitialization(() => this.initEngine(options));
|
167
|
+
}
|
168
|
+
/**
|
169
|
+
* Initializes the interface using the provided [headless search engine](https://docs.coveo.com/en/headless/latest/reference/modules/Search.html, as opposed to the `initialize` method which internally builds a search engine instance.
|
170
|
+
* This bypasses the properties set on the component, such as analytics, searchHub, pipeline, language, timezone & logLevel.
|
171
|
+
*/
|
172
|
+
initializeWithSearchEngine(engine) {
|
173
|
+
if (this.pipeline && this.pipeline !== engine.state.pipeline) {
|
174
|
+
console.warn('Mismatch between search interface pipeline and engine pipeline. The engine pipeline will be used.');
|
175
|
+
}
|
176
|
+
if (this.searchHub && this.searchHub !== engine.state.searchHub) {
|
177
|
+
console.warn('Mismatch between search interface search hub and engine search hub. The engine search hub will be used.');
|
178
|
+
}
|
179
|
+
return this.internalInitialization(() => {
|
180
|
+
this.engine = engine;
|
181
|
+
});
|
182
|
+
}
|
183
|
+
/**
|
184
|
+
*
|
185
|
+
* Executes the first search and logs the interface load event to analytics, after initializing connection to the headless search engine.
|
186
|
+
*/
|
187
|
+
async executeFirstSearch() {
|
188
|
+
if (!this.interfaceController.engineIsCreated(this.engine)) {
|
189
|
+
return;
|
190
|
+
}
|
191
|
+
if (!this.initialized) {
|
192
|
+
console.error('You have to wait until the "initialize" promise is fulfilled before executing a search.', this);
|
193
|
+
return;
|
194
|
+
}
|
195
|
+
const safeStorage = new SafeStorage();
|
196
|
+
const standaloneSearchBoxData = safeStorage.getParsedJSON(StorageItems.STANDALONE_SEARCH_BOX_DATA, null);
|
197
|
+
if (!standaloneSearchBoxData) {
|
198
|
+
this.engine.executeFirstSearch();
|
199
|
+
return;
|
200
|
+
}
|
201
|
+
safeStorage.removeItem(StorageItems.STANDALONE_SEARCH_BOX_DATA);
|
202
|
+
const { updateQuery } = loadQueryActions(this.engine);
|
203
|
+
const { value, enableQuerySyntax, analytics } = standaloneSearchBoxData;
|
204
|
+
this.engine.dispatch(updateQuery({ q: value, enableQuerySyntax }));
|
205
|
+
this.engine.executeFirstSearchAfterStandaloneSearchBoxRedirect(analytics);
|
206
|
+
}
|
207
|
+
updateSearchConfiguration(updatedProp, newValue) {
|
208
|
+
if (!this.interfaceController.engineIsCreated(this.engine)) {
|
209
|
+
return;
|
210
|
+
}
|
211
|
+
if (this.engine.state[updatedProp] === newValue) {
|
212
|
+
return;
|
213
|
+
}
|
214
|
+
const { updateSearchConfiguration } = loadSearchConfigurationActions(this.engine);
|
215
|
+
this.engine.dispatch(updateSearchConfiguration({
|
216
|
+
[updatedProp]: newValue,
|
217
|
+
}));
|
218
|
+
}
|
219
|
+
updateSearchHub() {
|
220
|
+
this.updateSearchConfiguration('searchHub', this.searchHub ?? 'default');
|
221
|
+
}
|
222
|
+
updatePipeline() {
|
223
|
+
this.updateSearchConfiguration('pipeline', this.pipeline);
|
224
|
+
}
|
225
|
+
toggleAnalytics() {
|
226
|
+
this.interfaceController.onAnalyticsChange();
|
227
|
+
}
|
228
|
+
updateLanguage() {
|
229
|
+
if (!this.interfaceController.engineIsCreated(this.engine) ||
|
230
|
+
!this.language) {
|
231
|
+
return;
|
232
|
+
}
|
233
|
+
const { updateSearchConfiguration } = loadSearchConfigurationActions(this.engine);
|
234
|
+
this.engine.dispatch(updateSearchConfiguration({
|
235
|
+
locale: this.language,
|
236
|
+
}));
|
237
|
+
return this.interfaceController.onLanguageChange();
|
238
|
+
}
|
239
|
+
updateIconAssetsPath() {
|
240
|
+
this.store.state.iconAssetsPath = this.iconAssetsPath;
|
241
|
+
}
|
242
|
+
getBindings() {
|
243
|
+
return {
|
244
|
+
engine: this.engine,
|
245
|
+
i18n: this.i18n,
|
246
|
+
store: this.store,
|
247
|
+
interfaceElement: this,
|
248
|
+
createStyleElement: () => {
|
249
|
+
const styleTag = document.createElement('style');
|
250
|
+
return styleTag;
|
251
|
+
},
|
252
|
+
// TODO - KIT-4893: Remove once atomic-quickview-modal migration is complete.
|
253
|
+
createScriptElement: () => {
|
254
|
+
const scriptTag = document.createElement('script');
|
255
|
+
return scriptTag;
|
256
|
+
},
|
257
|
+
};
|
258
|
+
}
|
259
|
+
initFieldsToInclude() {
|
260
|
+
const fields = EcommerceDefaultFieldsToInclude.concat(this.fieldsToInclude);
|
261
|
+
this.store.addFieldsToInclude(fields);
|
262
|
+
}
|
263
|
+
registerFieldsToInclude() {
|
264
|
+
this.engine?.dispatch(loadFieldActions(this.engine).registerFieldsToInclude(this.store.state.fieldsToInclude));
|
265
|
+
}
|
266
|
+
initEngine(options) {
|
267
|
+
const searchConfig = this.getSearchConfiguration(options);
|
268
|
+
const analyticsConfig = getAnalyticsConfig(options, this.analytics, this.store);
|
269
|
+
try {
|
270
|
+
this.engine = buildSearchEngine({
|
271
|
+
configuration: {
|
272
|
+
...options,
|
273
|
+
search: searchConfig,
|
274
|
+
analytics: analyticsConfig,
|
275
|
+
},
|
276
|
+
loggerOptions: {
|
277
|
+
level: this.logLevel,
|
278
|
+
},
|
279
|
+
});
|
280
|
+
}
|
281
|
+
catch (error) {
|
282
|
+
this.error = error;
|
283
|
+
throw error;
|
284
|
+
}
|
285
|
+
}
|
286
|
+
getSearchConfiguration(options) {
|
287
|
+
const searchConfigFromProps = {
|
288
|
+
searchHub: this.searchHub ?? 'default',
|
289
|
+
pipeline: this.pipeline,
|
290
|
+
locale: this.language,
|
291
|
+
timezone: this.timezone,
|
292
|
+
};
|
293
|
+
if (options.search) {
|
294
|
+
return {
|
295
|
+
...searchConfigFromProps,
|
296
|
+
...options.search,
|
297
|
+
};
|
298
|
+
}
|
299
|
+
return searchConfigFromProps;
|
300
|
+
}
|
301
|
+
get fragment() {
|
302
|
+
return window.location.hash.slice(1);
|
303
|
+
}
|
304
|
+
initUrlManager() {
|
305
|
+
if (this.disableStateReflectionInUrl) {
|
306
|
+
return;
|
307
|
+
}
|
308
|
+
if (!this.reflectStateInUrl) {
|
309
|
+
return;
|
310
|
+
}
|
311
|
+
this.urlManager = buildUrlManager(this.engine, {
|
312
|
+
initialState: { fragment: this.fragment },
|
313
|
+
});
|
314
|
+
this.unsubscribeUrlManager = this.urlManager.subscribe(() => this.updateHash());
|
315
|
+
window.addEventListener('hashchange', this.onHashChange);
|
316
|
+
}
|
317
|
+
initRelevanceInspector() {
|
318
|
+
if (this.enableRelevanceInspector && !this.disableRelevanceInspector) {
|
319
|
+
this.addEventListener('dblclick', this.handleRelevanceInspectorDoubleClick);
|
320
|
+
}
|
321
|
+
}
|
322
|
+
initSearchStatus() {
|
323
|
+
this.searchStatus = buildSearchStatus(this.engine);
|
324
|
+
this.unsubscribeSearchStatus = this.searchStatus.subscribe(() => {
|
325
|
+
const hasNoResultsAfterInitialSearch = !this.searchStatus.state.hasResults &&
|
326
|
+
this.searchStatus.state.firstSearchExecuted &&
|
327
|
+
!this.searchStatus.state.hasError;
|
328
|
+
this.classList.toggle(noResultsSelector, hasNoResultsAfterInitialSearch);
|
329
|
+
this.classList.toggle(errorSelector, this.searchStatus.state.hasError);
|
330
|
+
this.classList.toggle(firstSearchExecutedSelector, this.searchStatus.state.firstSearchExecuted);
|
331
|
+
if (this.searchStatus.state.firstSearchExecuted &&
|
332
|
+
this.store.hasLoadingFlag(FirstSearchExecutedFlag)) {
|
333
|
+
this.store.unsetLoadingFlag(FirstSearchExecutedFlag);
|
334
|
+
}
|
335
|
+
});
|
336
|
+
}
|
337
|
+
updateHash() {
|
338
|
+
const newFragment = this.urlManager.state.fragment;
|
339
|
+
if (!this.searchStatus.state.firstSearchExecuted) {
|
340
|
+
history.replaceState(null, document.title, `#${newFragment}`);
|
341
|
+
this.bindings.engine.logger.info(`History replaceState #${newFragment}`);
|
342
|
+
return;
|
343
|
+
}
|
344
|
+
history.pushState(null, document.title, `#${newFragment}`);
|
345
|
+
this.bindings.engine.logger.info(`History pushState #${newFragment}`);
|
346
|
+
}
|
347
|
+
async internalInitialization(initEngine) {
|
348
|
+
await Promise.all([
|
349
|
+
this.interfaceController.onInitialization(initEngine),
|
350
|
+
this.i18Initialized,
|
351
|
+
]);
|
352
|
+
this.updateLanguage();
|
353
|
+
this.bindings = this.getBindings();
|
354
|
+
markParentAsReady(this);
|
355
|
+
this.pipeline = this.engine.state.pipeline;
|
356
|
+
this.searchHub = this.engine.state.searchHub;
|
357
|
+
this.initSearchStatus();
|
358
|
+
await this.getUpdateComplete();
|
359
|
+
this.initUrlManager();
|
360
|
+
this.initialized = true;
|
361
|
+
}
|
362
|
+
render() {
|
363
|
+
return html `
|
364
|
+
${when(this.bindings?.engine &&
|
365
|
+
this.enableRelevanceInspector &&
|
366
|
+
!this.disableRelevanceInspector, () => html `<atomic-relevance-inspector
|
367
|
+
?open=${this.relevanceInspectorIsOpen}
|
368
|
+
.bindings=${this.bindings}
|
369
|
+
></atomic-relevance-inspector>`)}
|
370
|
+
<slot></slot>
|
371
|
+
`;
|
372
|
+
}
|
373
|
+
};
|
374
|
+
AtomicSearchInterface.styles = [
|
375
|
+
css`:host{height:inherit;width:inherit;&>slot{height:inherit}}`,
|
376
|
+
];
|
377
|
+
__decorate([
|
378
|
+
state(),
|
379
|
+
provide({ context: bindingsContext })
|
380
|
+
], AtomicSearchInterface.prototype, "bindings", void 0);
|
381
|
+
__decorate([
|
382
|
+
state()
|
383
|
+
], AtomicSearchInterface.prototype, "error", void 0);
|
384
|
+
__decorate([
|
385
|
+
state()
|
386
|
+
], AtomicSearchInterface.prototype, "relevanceInspectorIsOpen", void 0);
|
387
|
+
__decorate([
|
388
|
+
property({
|
389
|
+
type: Array,
|
390
|
+
attribute: 'fields-to-include',
|
391
|
+
converter: {
|
392
|
+
fromAttribute: (value) => {
|
393
|
+
if (!value)
|
394
|
+
return [];
|
395
|
+
try {
|
396
|
+
const parsed = JSON.parse(value);
|
397
|
+
return Array.isArray(parsed) ? parsed : [];
|
398
|
+
}
|
399
|
+
catch {
|
400
|
+
return [];
|
401
|
+
}
|
402
|
+
},
|
403
|
+
toAttribute: (value) => JSON.stringify(value),
|
404
|
+
},
|
405
|
+
})
|
406
|
+
], AtomicSearchInterface.prototype, "fieldsToInclude", void 0);
|
407
|
+
__decorate([
|
408
|
+
property({ type: String, reflect: true })
|
409
|
+
], AtomicSearchInterface.prototype, "pipeline", void 0);
|
410
|
+
__decorate([
|
411
|
+
property({ type: String, attribute: 'search-hub', reflect: true })
|
412
|
+
], AtomicSearchInterface.prototype, "searchHub", void 0);
|
413
|
+
__decorate([
|
414
|
+
property({
|
415
|
+
type: Boolean,
|
416
|
+
converter: booleanConverter,
|
417
|
+
reflect: true,
|
418
|
+
})
|
419
|
+
], AtomicSearchInterface.prototype, "analytics", void 0);
|
420
|
+
__decorate([
|
421
|
+
property({ type: String, reflect: true })
|
422
|
+
], AtomicSearchInterface.prototype, "timezone", void 0);
|
423
|
+
__decorate([
|
424
|
+
property({ type: String, attribute: 'log-level', reflect: true })
|
425
|
+
], AtomicSearchInterface.prototype, "logLevel", void 0);
|
426
|
+
__decorate([
|
427
|
+
property({ type: Object, attribute: false })
|
428
|
+
], AtomicSearchInterface.prototype, "i18n", void 0);
|
429
|
+
__decorate([
|
430
|
+
property({ type: String, reflect: true })
|
431
|
+
], AtomicSearchInterface.prototype, "language", void 0);
|
432
|
+
__decorate([
|
433
|
+
property({ type: Object, attribute: false })
|
434
|
+
], AtomicSearchInterface.prototype, "engine", void 0);
|
435
|
+
__decorate([
|
436
|
+
property({
|
437
|
+
type: Boolean,
|
438
|
+
attribute: 'reflect-state-in-url',
|
439
|
+
reflect: true,
|
440
|
+
converter: booleanConverter,
|
441
|
+
})
|
442
|
+
], AtomicSearchInterface.prototype, "reflectStateInUrl", void 0);
|
443
|
+
__decorate([
|
444
|
+
property({
|
445
|
+
type: Boolean,
|
446
|
+
attribute: 'disable-state-reflection-in-url',
|
447
|
+
reflect: true,
|
448
|
+
})
|
449
|
+
], AtomicSearchInterface.prototype, "disableStateReflectionInUrl", void 0);
|
450
|
+
__decorate([
|
451
|
+
property({ type: String, attribute: 'scroll-container', reflect: true })
|
452
|
+
], AtomicSearchInterface.prototype, "scrollContainer", void 0);
|
453
|
+
__decorate([
|
454
|
+
property({ type: String, attribute: 'language-assets-path', reflect: true })
|
455
|
+
], AtomicSearchInterface.prototype, "languageAssetsPath", void 0);
|
456
|
+
__decorate([
|
457
|
+
property({ type: String, attribute: 'icon-assets-path', reflect: true })
|
458
|
+
], AtomicSearchInterface.prototype, "iconAssetsPath", void 0);
|
459
|
+
__decorate([
|
460
|
+
property({
|
461
|
+
type: Boolean,
|
462
|
+
attribute: 'enable-relevance-inspector',
|
463
|
+
reflect: true,
|
464
|
+
converter: booleanConverter,
|
465
|
+
})
|
466
|
+
], AtomicSearchInterface.prototype, "enableRelevanceInspector", void 0);
|
467
|
+
__decorate([
|
468
|
+
property({
|
469
|
+
type: Boolean,
|
470
|
+
attribute: 'disable-relevance-inspector',
|
471
|
+
reflect: true,
|
472
|
+
})
|
473
|
+
], AtomicSearchInterface.prototype, "disableRelevanceInspector", void 0);
|
474
|
+
__decorate([
|
475
|
+
watch('searchHub')
|
476
|
+
], AtomicSearchInterface.prototype, "updateSearchHub", null);
|
477
|
+
__decorate([
|
478
|
+
watch('pipeline')
|
479
|
+
], AtomicSearchInterface.prototype, "updatePipeline", null);
|
480
|
+
__decorate([
|
481
|
+
watch('analytics')
|
482
|
+
], AtomicSearchInterface.prototype, "toggleAnalytics", null);
|
483
|
+
__decorate([
|
484
|
+
watch('language')
|
485
|
+
], AtomicSearchInterface.prototype, "updateLanguage", null);
|
486
|
+
__decorate([
|
487
|
+
watch('iconAssetsPath')
|
488
|
+
], AtomicSearchInterface.prototype, "updateIconAssetsPath", null);
|
489
|
+
__decorate([
|
490
|
+
errorGuard()
|
491
|
+
], AtomicSearchInterface.prototype, "render", null);
|
492
|
+
AtomicSearchInterface = __decorate([
|
493
|
+
customElement('atomic-search-interface'),
|
494
|
+
withTailwindStyles
|
495
|
+
], AtomicSearchInterface);
|
496
|
+
export { AtomicSearchInterface };
|
package/dist/atomic/components/components/search/atomic-search-layout/atomic-search-layout.js
CHANGED
@@ -4,12 +4,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
6
6
|
};
|
7
|
-
import { LitElement
|
7
|
+
import { LitElement } from 'lit';
|
8
8
|
import { customElement, property, state } from 'lit/decorators.js';
|
9
|
+
import { LayoutStylesController } from "../../common/layout/layout-styles-controller";
|
10
|
+
import { watch } from "../../../decorators/watch";
|
9
11
|
import { ChildrenUpdateCompleteMixin } from "../../../mixins/children-update-complete-mixin";
|
10
12
|
import { LightDomMixin } from "../../../mixins/light-dom";
|
11
|
-
import {
|
12
|
-
import { DEFAULT_MOBILE_BREAKPOINT } from '../../../utils/replace-breakpoint-utils';
|
13
|
+
import { DEFAULT_MOBILE_BREAKPOINT } from "../../../utils/replace-breakpoint-utils";
|
13
14
|
import styles from './atomic-search-layout.tw.css';
|
14
15
|
import { buildSearchLayout } from './search-layout';
|
15
16
|
/**
|
@@ -27,15 +28,22 @@ let AtomicSearchLayout = class AtomicSearchLayout extends LightDomMixin(Children
|
|
27
28
|
* E.g., 800px, 65rem.
|
28
29
|
*/
|
29
30
|
this.mobileBreakpoint = DEFAULT_MOBILE_BREAKPOINT;
|
30
|
-
|
31
|
-
async addStyles() {
|
32
|
-
await this.getUpdateComplete();
|
33
|
-
this.injectStyles(unsafeCSS(buildSearchLayout(this, this.mobileBreakpoint)));
|
31
|
+
this.layoutStylesController = new LayoutStylesController(this, buildSearchLayout, 'atomic-search-layout-');
|
34
32
|
}
|
35
33
|
connectedCallback() {
|
36
34
|
super.connectedCallback();
|
37
|
-
this.
|
38
|
-
|
35
|
+
this.emitBreakpointChangeEvent();
|
36
|
+
}
|
37
|
+
emitBreakpointChangeEvent() {
|
38
|
+
this.dispatchEvent(new CustomEvent('atomic-layout-breakpoint-change', {
|
39
|
+
detail: { breakpoint: this.mobileBreakpoint },
|
40
|
+
bubbles: true,
|
41
|
+
composed: true,
|
42
|
+
}));
|
43
|
+
}
|
44
|
+
onMobileBreakpointChange() {
|
45
|
+
this.layoutStylesController.updateStyles();
|
46
|
+
this.emitBreakpointChangeEvent();
|
39
47
|
}
|
40
48
|
};
|
41
49
|
AtomicSearchLayout.styles = [styles];
|
@@ -45,6 +53,9 @@ __decorate([
|
|
45
53
|
__decorate([
|
46
54
|
property({ type: String, reflect: true, attribute: 'mobile-breakpoint' })
|
47
55
|
], AtomicSearchLayout.prototype, "mobileBreakpoint", void 0);
|
56
|
+
__decorate([
|
57
|
+
watch('mobileBreakpoint')
|
58
|
+
], AtomicSearchLayout.prototype, "onMobileBreakpointChange", null);
|
48
59
|
AtomicSearchLayout = __decorate([
|
49
60
|
customElement('atomic-search-layout')
|
50
61
|
], AtomicSearchLayout);
|
@@ -1,5 +1,5 @@
|
|
1
1
|
// Auto-generated file
|
2
|
-
export { AtomicPager } from './atomic-pager/atomic-pager.js';
|
3
2
|
export { AtomicQuerySummary } from './atomic-query-summary/atomic-query-summary.js';
|
4
3
|
export { AtomicResultsPerPage } from './atomic-results-per-page/atomic-results-per-page.js';
|
4
|
+
export { AtomicSearchInterface } from './atomic-search-interface/atomic-search-interface.js';
|
5
5
|
export { AtomicSearchLayout } from './atomic-search-layout/atomic-search-layout.js';
|
@@ -1,7 +1,7 @@
|
|
1
1
|
// Auto-generated file
|
2
2
|
export default {
|
3
|
-
'atomic-pager': async () => await import('./atomic-pager/atomic-pager.js'),
|
4
3
|
'atomic-query-summary': async () => await import('./atomic-query-summary/atomic-query-summary.js'),
|
5
4
|
'atomic-results-per-page': async () => await import('./atomic-results-per-page/atomic-results-per-page.js'),
|
5
|
+
'atomic-search-interface': async () => await import('./atomic-search-interface/atomic-search-interface.js'),
|
6
6
|
'atomic-search-layout': async () => await import('./atomic-search-layout/atomic-search-layout.js'),
|
7
7
|
};
|
@@ -2,36 +2,36 @@ function parseDependsOn(dependsOn) {
|
|
2
2
|
if (Object.keys(dependsOn).length > 1) {
|
3
3
|
throw "Depending on multiple facets isn't supported";
|
4
4
|
}
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
if (isSimpleFacetValue(value)) {
|
21
|
-
if (value.state !== 'selected') {
|
22
|
-
return false;
|
23
|
-
}
|
24
|
-
if (!expectedValue) {
|
25
|
-
return true;
|
26
|
-
}
|
27
|
-
return value.value === expectedValue;
|
28
|
-
}
|
29
|
-
return false;
|
30
|
-
});
|
31
|
-
},
|
32
|
-
};
|
5
|
+
const entries = Object.entries(dependsOn);
|
6
|
+
return entries.map(([parentFacetId, expectedValue]) => ({
|
7
|
+
parentFacetId,
|
8
|
+
condition: buildDependsOnCondition(expectedValue),
|
9
|
+
}));
|
10
|
+
}
|
11
|
+
function buildDependsOnCondition(expectedValue) {
|
12
|
+
return (values) => values.some((value) => {
|
13
|
+
if (isCategoryFacetValue(value)) {
|
14
|
+
return matchesCategoryFacetValue(value, expectedValue);
|
15
|
+
}
|
16
|
+
if (isSimpleFacetValue(value)) {
|
17
|
+
return matchesSimpleFacetValue(value, expectedValue);
|
18
|
+
}
|
19
|
+
return false;
|
33
20
|
});
|
34
21
|
}
|
22
|
+
function matchesCategoryFacetValue(value, expectedValue) {
|
23
|
+
const selectedValue = getSelectedCategoryFacetValueRequest(value);
|
24
|
+
if (!selectedValue) {
|
25
|
+
return false;
|
26
|
+
}
|
27
|
+
return !expectedValue || selectedValue.value === expectedValue;
|
28
|
+
}
|
29
|
+
function matchesSimpleFacetValue(value, expectedValue) {
|
30
|
+
if (value.state !== 'selected') {
|
31
|
+
return false;
|
32
|
+
}
|
33
|
+
return !expectedValue || value.value === expectedValue;
|
34
|
+
}
|
35
35
|
function isCategoryFacetValue(request) {
|
36
36
|
const requestAsRecord = request;
|
37
37
|
return ((requestAsRecord?.children &&
|
@@ -1 +1 @@
|
|
1
|
-
{"file":"depends-on.js","mappings":"SAcgB,cAAc,CAE5B,SAAiC;IACjC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QACrC,MAAM,8CAA8C,CAAC;KACtD;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,aAAa,CAAC
|
1
|
+
{"file":"depends-on.js","mappings":"SAcgB,cAAc,CAE5B,SAAiC;IACjC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QACrC,MAAM,8CAA8C,CAAC;KACtD;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM;QACtD,aAAa;QACb,SAAS,EAAE,uBAAuB,CAAa,aAAa,CAAC;KAC9D,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,uBAAuB,CAE9B,aAAqB;IACrB,OAAO,CAAC,MAAoB,KAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK;QAChB,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE;YAC/B,OAAO,yBAAyB,CAC9B,KAA2B,EAC3B,aAAa,CACd,CAAC;SACH;QACD,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE;YAC7B,OAAO,uBAAuB,CAC5B,KAAyB,EACzB,aAAa,CACd,CAAC;SACH;QACD,OAAO,KAAK,CAAC;KACd,CAAC,CAAC;AACP,CAAC;AAED,SAAS,yBAAyB,CAChC,KAAiB,EACjB,aAAqB;IAErB,MAAM,aAAa,GAAG,oCAAoC,CAAC,KAAK,CAAC,CAAC;IAClE,IAAI,CAAC,aAAa,EAAE;QAClB,OAAO,KAAK,CAAC;KACd;IACD,OAAO,CAAC,aAAa,IAAI,aAAa,CAAC,KAAK,KAAK,aAAa,CAAC;AACjE,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAuB,EACvB,aAAqB;IAErB,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE;QAC9B,OAAO,KAAK,CAAC;KACd;IACD,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,KAAK,aAAa,CAAC;AACzD,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAgB;IAC5C,MAAM,eAAe,GAAG,OAAkC,CAAC;IAC3D,QACE,CAAC,eAAe,EAAE,QAAQ;QACxB,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC;QACvC,eAAe,EAAE,KAAK;QACtB,OAAO,eAAe,CAAC,KAAK,KAAK,QAAQ,MAAM,IAAI,EACrD;AACJ,CAAC;AAED,SAAS,oCAAoC,CAC3C,KAAc;IAEd,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE;QAChC,OAAO,IAAI,CAAC;KACb;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE;QAC9B,OAAO,KAAK,CAAC;KACd;IACD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE;QAClC,MAAM,aAAa,GAAG,oCAAoC,CAAC,KAAK,CAAC,CAAC;QAClE,IAAI,aAAa,KAAK,IAAI,EAAE;YAC1B,OAAO,aAAa,CAAC;SACtB;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,MAAM,QAAQ,GAAG,KAAgC,CAAC;IAClD,QACE,OAAO,IAAI,QAAQ;QACnB,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ;QAClC,EAAE,UAAU,IAAI,QAAQ,CAAC,EACzB;AACJ;;;;","names":[],"sources":["src/components/common/facets/depends-on.ts"],"sourcesContent":["type GenericCondition<AnyFacetValueRequest> = {\n parentFacetId: string;\n condition(parentValues: AnyFacetValueRequest[]): boolean;\n};\n\ninterface SimpleFacetValue {\n value: string;\n state: string;\n}\n\ninterface CategoryFacetValue extends SimpleFacetValue {\n children: SimpleFacetValue[];\n}\n\nexport function parseDependsOn<\n FacetValue extends SimpleFacetValue | CategoryFacetValue,\n>(dependsOn: Record<string, string>): GenericCondition<FacetValue>[] {\n if (Object.keys(dependsOn).length > 1) {\n throw \"Depending on multiple facets isn't supported\";\n }\n\n const entries = Object.entries(dependsOn);\n return entries.map(([parentFacetId, expectedValue]) => ({\n parentFacetId,\n condition: buildDependsOnCondition<FacetValue>(expectedValue),\n }));\n}\n\nfunction buildDependsOnCondition<\n FacetValue extends SimpleFacetValue | CategoryFacetValue,\n>(expectedValue: string): (values: FacetValue[]) => boolean {\n return (values: FacetValue[]) =>\n values.some((value) => {\n if (isCategoryFacetValue(value)) {\n return matchesCategoryFacetValue(\n value as CategoryFacetValue,\n expectedValue\n );\n }\n if (isSimpleFacetValue(value)) {\n return matchesSimpleFacetValue(\n value as SimpleFacetValue,\n expectedValue\n );\n }\n return false;\n });\n}\n\nfunction matchesCategoryFacetValue<FacetValue extends CategoryFacetValue>(\n value: FacetValue,\n expectedValue: string\n): boolean {\n const selectedValue = getSelectedCategoryFacetValueRequest(value);\n if (!selectedValue) {\n return false;\n }\n return !expectedValue || selectedValue.value === expectedValue;\n}\n\nfunction matchesSimpleFacetValue(\n value: SimpleFacetValue,\n expectedValue: string\n): boolean {\n if (value.state !== 'selected') {\n return false;\n }\n return !expectedValue || value.value === expectedValue;\n}\n\nfunction isCategoryFacetValue(request: unknown): request is CategoryFacetValue {\n const requestAsRecord = request as Record<string, unknown>;\n return (\n (requestAsRecord?.children &&\n Array.isArray(requestAsRecord.children) &&\n requestAsRecord?.state &&\n typeof requestAsRecord.state === 'string') === true\n );\n}\n\nfunction getSelectedCategoryFacetValueRequest(\n value: unknown\n): CategoryFacetValue | null {\n if (!isCategoryFacetValue(value)) {\n return null;\n }\n if (value.state === 'selected') {\n return value;\n }\n for (const child of value.children) {\n const selectedValue = getSelectedCategoryFacetValueRequest(child);\n if (selectedValue !== null) {\n return selectedValue;\n }\n }\n return null;\n}\n\nfunction isSimpleFacetValue(value: unknown): value is SimpleFacetValue {\n const asRecord = value as Record<string, unknown>;\n return (\n 'value' in asRecord &&\n typeof asRecord.value === 'string' &&\n !('children' in asRecord)\n );\n}\n"],"version":3}
|