@coveo/atomic 3.46.0 → 3.47.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.
- package/dist/atomic/_atomic.esm.js +1 -1
- package/dist/atomic/atomic.esm.js.map +1 -1
- package/dist/atomic/components/_index.d.ts +0 -4
- package/dist/atomic/components/_index.js +1 -3
- package/dist/atomic/components/atomic-generated-answer-feedback-modal.js +1 -1
- package/dist/atomic/components/atomic-generated-answer-feedback-modal.js.map +1 -1
- package/dist/atomic/components/atomic-insight-folded-result-list.js +5 -3
- package/dist/atomic/components/atomic-insight-folded-result-list.js.map +1 -1
- package/dist/atomic/components/atomic-insight-result-action.js +1 -1
- package/dist/atomic/components/atomic-insight-result-action.js.map +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-action.js.map +1 -1
- package/dist/atomic/components/atomic-insight-result-list.js +1 -2
- package/dist/atomic/components/atomic-insight-result-list.js.map +1 -1
- package/dist/atomic/components/atomic-insight-user-actions-session2.js +1 -1
- package/dist/atomic/components/atomic-ipx-body2.js +2 -2
- package/dist/atomic/components/atomic-ipx-body2.js.map +1 -1
- package/dist/atomic/components/atomic-ipx-modal.js +2 -2
- package/dist/atomic/components/atomic-ipx-modal.js.map +1 -1
- package/dist/atomic/components/atomic-ipx-recs-list.js +2 -3
- package/dist/atomic/components/atomic-ipx-recs-list.js.map +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-recs-list.js +2 -3
- package/dist/atomic/components/atomic-recs-list.js.map +1 -1
- package/dist/atomic/components/atomic-stencil-facet-date-input.js +3 -3
- package/dist/atomic/components/atomic-stencil-facet-date-input.js.map +1 -1
- package/dist/atomic/components/atomic-suggestion-renderer.js +3 -3
- package/dist/atomic/components/atomic-suggestion-renderer.js.map +1 -1
- package/dist/atomic/components/components/commerce/atomic-commerce-facet-number-input/atomic-commerce-facet-number-input.js +4 -7
- package/dist/atomic/components/components/commerce/atomic-commerce-layout/atomic-commerce-layout.js +3 -4
- package/dist/atomic/components/components/commerce/atomic-commerce-pager/atomic-commerce-pager.js +2 -1
- package/dist/atomic/components/components/commerce/atomic-commerce-products-per-page/atomic-commerce-products-per-page.js +2 -4
- package/dist/atomic/components/components/commerce/atomic-commerce-search-box/atomic-commerce-search-box.js +9 -2
- package/dist/atomic/components/components/commerce/atomic-product-children/atomic-product-children.js +3 -4
- package/dist/atomic/components/components/common/atomic-facet-date-input/atomic-facet-date-input.js +2 -0
- package/dist/atomic/components/components/common/atomic-facet-number-input/atomic-facet-number-input.js +5 -4
- package/dist/atomic/components/components/common/atomic-modal/atomic-modal.js +4 -2
- package/dist/atomic/components/components/common/atomic-smart-snippet-expandable-answer/atomic-smart-snippet-expandable-answer.js +14 -25
- package/dist/atomic/components/components/common/atomic-smart-snippet-source/atomic-smart-snippet-source.js +1 -1
- package/dist/atomic/components/components/common/generated-answer/render-citations.js +1 -1
- package/dist/atomic/components/components/common/radio-button.js +1 -0
- package/dist/atomic/components/components/insight/atomic-insight-pager/atomic-insight-pager.js +2 -1
- package/dist/atomic/components/components/insight/atomic-insight-result-children/atomic-insight-result-children.js +280 -0
- package/dist/atomic/components/components/insight/atomic-insight-search-box/atomic-insight-search-box.js +1 -1
- package/dist/atomic/components/components/insight/index.js +1 -0
- package/dist/atomic/components/components/insight/lazy-index.js +1 -0
- package/dist/atomic/components/components/ipx/atomic-ipx-embedded/atomic-ipx-embedded.js +75 -0
- package/dist/atomic/components/components/ipx/index.js +1 -0
- package/dist/atomic/components/components/ipx/lazy-index.js +1 -0
- package/dist/atomic/components/components/search/atomic-pager/atomic-pager.js +2 -1
- package/dist/atomic/components/components/search/atomic-quickview-modal/atomic-quickview-modal.js +3 -2
- package/dist/atomic/components/components/search/atomic-results-per-page/atomic-results-per-page.js +4 -4
- package/dist/atomic/components/components/search/atomic-search-box/atomic-search-box.js +8 -3
- package/dist/atomic/components/components/search/atomic-search-layout/atomic-search-layout.js +5 -4
- package/dist/atomic/components/display-options.js +95 -1
- package/dist/atomic/components/display-options.js.map +1 -1
- package/dist/atomic/components/event-utils.js.map +1 -1
- package/dist/atomic/components/global/environment.js +1 -1
- package/dist/atomic/components/index.js.map +1 -1
- package/dist/atomic/components/props-utils.js +1 -1
- package/dist/atomic/components/stencil-result-template-decorators.js +94 -2
- package/dist/atomic/components/stencil-result-template-decorators.js.map +1 -1
- package/dist/atomic/components/utils/custom-element-tags.js +2 -0
- package/dist/atomic/components/utils.js +1 -11
- package/dist/atomic/components/utils.js.map +1 -1
- package/dist/atomic/index.esm.js +1 -1
- package/dist/atomic/p-01e5fdc1.entry.js +2 -0
- package/dist/atomic/p-01e5fdc1.entry.js.map +1 -0
- package/dist/atomic/p-02089c14.js +2 -0
- package/dist/atomic/{p-9748e9a8.js → p-0454df94.js} +2 -2
- package/dist/atomic/{p-7c732c9b.entry.js → p-0d58f131.entry.js} +2 -2
- package/dist/atomic/p-0f466ffb.js +2 -0
- package/dist/atomic/p-1580513b.js.map +1 -1
- package/dist/atomic/p-1da0ec8c.entry.js +2 -0
- package/dist/atomic/p-1da0ec8c.entry.js.map +1 -0
- package/dist/atomic/{p-608ea23b.entry.js → p-2ad5f46e.entry.js} +2 -2
- package/dist/atomic/p-2ad5f46e.entry.js.map +1 -0
- package/dist/atomic/{p-fb755797.entry.js → p-3b46c4c2.entry.js} +2 -2
- package/dist/atomic/p-42d7acb3.js +2 -0
- package/dist/atomic/{p-fa7ff7aa.entry.js → p-44eda272.entry.js} +2 -2
- package/dist/atomic/p-44eda272.entry.js.map +1 -0
- package/dist/atomic/{p-3930eb33.js → p-4a2e7926.js} +2 -2
- package/dist/atomic/{p-5b83e1aa.entry.js → p-519b3517.entry.js} +2 -2
- package/dist/atomic/{p-b8fb8a69.js → p-66d84fd8.js} +2 -2
- package/dist/atomic/{p-f82d4e71.entry.js → p-6b66c9da.entry.js} +2 -2
- package/dist/atomic/{p-7ca2dce5.entry.js → p-6bb72ce5.entry.js} +2 -2
- package/dist/atomic/p-6bbff681.entry.js +2 -0
- package/dist/atomic/p-6bbff681.entry.js.map +1 -0
- package/dist/atomic/{p-f647fb7b.entry.js → p-6e706321.entry.js} +2 -2
- package/dist/atomic/{p-a97247c4.entry.js → p-7a4bad93.entry.js} +2 -2
- package/dist/atomic/p-7ac9072b.js +2 -0
- package/dist/atomic/p-7ac9072b.js.map +1 -0
- package/dist/atomic/p-898fd613.js +3 -0
- package/dist/atomic/p-898fd613.js.map +1 -0
- package/dist/atomic/p-8b9982db.entry.js +2 -0
- package/dist/atomic/{p-a998340c.entry.js.map → p-8b9982db.entry.js.map} +1 -1
- package/dist/atomic/p-90f23fb3.entry.js +2 -0
- package/dist/atomic/p-90f23fb3.entry.js.map +1 -0
- package/dist/atomic/p-92156d1b.entry.js +2 -0
- package/dist/atomic/{p-a9719330.entry.js.map → p-92156d1b.entry.js.map} +1 -1
- package/dist/atomic/{p-8ab3a3e3.js → p-94976bed.js} +2 -2
- package/dist/atomic/p-a3edbb0a.entry.js +2 -0
- package/dist/atomic/p-a3edbb0a.entry.js.map +1 -0
- package/dist/atomic/{p-ec88de2b.entry.js → p-b01312d5.entry.js} +2 -2
- package/dist/atomic/{p-fb6a5b80.entry.js.map → p-b01312d5.entry.js.map} +1 -1
- package/dist/atomic/{p-abbf4a31.entry.js → p-b56e0b21.entry.js} +2 -2
- package/dist/atomic/p-b56e0b21.entry.js.map +1 -0
- package/dist/atomic/p-b9caa130.entry.js +2 -0
- package/dist/atomic/{p-4a8bb5ea.entry.js.map → p-b9caa130.entry.js.map} +1 -1
- package/dist/atomic/{p-8f9590f0.js → p-be8cc132.js} +2 -2
- package/dist/atomic/{p-ae079ccf.js → p-bedd6d62.js} +2 -2
- package/dist/atomic/p-c785d72d.entry.js +2 -0
- package/dist/atomic/{p-ec88de2b.entry.js.map → p-c785d72d.entry.js.map} +1 -1
- package/dist/atomic/{p-e041c13c.entry.js → p-ce30fcf5.entry.js} +2 -2
- package/dist/atomic/{p-95ad29f3.entry.js → p-d03289b0.entry.js} +2 -2
- package/dist/atomic/{p-5aadf2ae.entry.js → p-d0ec450e.entry.js} +2 -2
- package/dist/atomic/p-d637dcbe.js +2 -0
- package/dist/atomic/p-d637dcbe.js.map +1 -0
- package/dist/atomic/p-e283bb5a.js +2 -0
- package/dist/atomic/p-e283bb5a.js.map +1 -0
- package/dist/atomic/{p-4a1636ae.entry.js → p-e2e4d4f3.entry.js} +2 -2
- package/dist/atomic/{p-e6eee594.js → p-e9fff991.js} +2 -2
- package/dist/atomic/{p-d609547d.js → p-f2243b33.js} +2 -2
- package/dist/atomic/p-f2b42434.entry.js +2 -0
- package/dist/atomic/{p-3f48ff91.entry.js.map → p-f2b42434.entry.js.map} +1 -1
- package/dist/atomic/{p-af37130c.entry.js → p-f3a9a28b.entry.js} +2 -2
- package/dist/cjs/_index.cjs.js +3 -4
- package/dist/cjs/_loader.cjs.js +2 -2
- package/dist/cjs/atomic-generated-answer-feedback-modal.cjs.entry.js +8 -8
- package/dist/cjs/atomic-generated-answer-feedback-modal.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-insight-folded-result-list.cjs.entry.js +13 -11
- package/dist/cjs/atomic-insight-folded-result-list.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-insight-generated-answer.cjs.entry.js +6 -6
- package/dist/cjs/atomic-insight-refine-modal.cjs.entry.js +4 -4
- package/dist/cjs/atomic-insight-result-action-bar.cjs.entry.js +2 -2
- package/dist/cjs/atomic-insight-result-action.cjs.entry.js +6 -7
- package/dist/cjs/atomic-insight-result-action.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-insight-result-attach-to-case-action.cjs.entry.js +6 -7
- package/dist/cjs/atomic-insight-result-attach-to-case-action.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-insight-result-attach-to-case-indicator.cjs.entry.js +3 -4
- package/dist/cjs/atomic-insight-result-attach-to-case-indicator.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-insight-result-children-template.cjs.entry.js +3 -3
- package/dist/cjs/atomic-insight-result-list.cjs.entry.js +8 -9
- package/dist/cjs/atomic-insight-result-list.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-insight-result-quickview-action.cjs.entry.js +7 -8
- package/dist/cjs/atomic-insight-result-quickview-action.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-insight-smart-snippet-suggestions.cjs.entry.js +5 -5
- package/dist/cjs/atomic-insight-smart-snippet.cjs.entry.js +6 -6
- package/dist/cjs/atomic-insight-timeframe-facet.cjs.entry.js +8 -8
- package/dist/cjs/atomic-insight-user-actions-modal.cjs.entry.js +3 -3
- package/dist/cjs/atomic-insight-user-actions-session.cjs.entry.js +4 -4
- package/dist/cjs/atomic-insight-user-actions-timeline.cjs.entry.js +3 -3
- package/dist/cjs/atomic-ipx-body.cjs.entry.js +5 -5
- package/dist/cjs/atomic-ipx-body.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-ipx-modal.cjs.entry.js +5 -5
- package/dist/cjs/atomic-ipx-modal.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-ipx-recs-list.cjs.entry.js +11 -12
- package/dist/cjs/atomic-ipx-recs-list.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-ipx-refine-modal.cjs.entry.js +5 -5
- package/dist/cjs/atomic-ipx-refine-toggle.cjs.entry.js +5 -5
- package/dist/cjs/atomic-ipx-result-link.cjs.entry.js +4 -5
- package/dist/cjs/atomic-ipx-result-link.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-recs-list.cjs.entry.js +11 -12
- package/dist/cjs/atomic-recs-list.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-stencil-facet-date-input.cjs.entry.js +5 -5
- package/dist/cjs/atomic-stencil-facet-date-input.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-suggestion-renderer.cjs.entry.js +3 -3
- package/dist/cjs/atomic-suggestion-renderer.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic.cjs.js +2 -2
- package/dist/cjs/{display-options-d5c02917.js → display-options-dad31135.js} +100 -4
- package/dist/cjs/display-options-dad31135.js.map +1 -0
- package/dist/cjs/event-utils-9bfcf3c5.js.map +1 -1
- package/dist/cjs/{index-0a91838f.js → index-515ca559.js} +6 -17
- package/dist/cjs/index-515ca559.js.map +1 -0
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/{initialization-utils-68064e3c.js → initialization-utils-3a62b483.js} +2 -2
- package/dist/cjs/{initialization-utils-68064e3c.js.map → initialization-utils-3a62b483.js.map} +1 -1
- package/dist/cjs/{props-utils-81f782bd.js → props-utils-4cc79d26.js} +3 -3
- package/dist/cjs/{props-utils-81f782bd.js.map → props-utils-4cc79d26.js.map} +1 -1
- package/dist/cjs/{stencil-accessibility-utils-8396dad2.js → stencil-accessibility-utils-1dcfe64c.js} +2 -2
- package/dist/cjs/{stencil-accessibility-utils-8396dad2.js.map → stencil-accessibility-utils-1dcfe64c.js.map} +1 -1
- package/dist/cjs/{stencil-button-de162ca7.js → stencil-button-580d6869.js} +2 -2
- package/dist/cjs/{stencil-button-de162ca7.js.map → stencil-button-580d6869.js.map} +1 -1
- package/dist/cjs/{stencil-carousel-587ae361.js → stencil-carousel-27149c5b.js} +3 -3
- package/dist/cjs/{stencil-carousel-587ae361.js.map → stencil-carousel-27149c5b.js.map} +1 -1
- package/dist/cjs/{stencil-fieldset-group-ad14759c.js → stencil-fieldset-group-c1b075b6.js} +2 -2
- package/dist/cjs/{stencil-fieldset-group-ad14759c.js.map → stencil-fieldset-group-c1b075b6.js.map} +1 -1
- package/dist/cjs/{stencil-heading-e59e3fdd.js → stencil-heading-41ec283d.js} +2 -2
- package/dist/cjs/{stencil-heading-e59e3fdd.js.map → stencil-heading-41ec283d.js.map} +1 -1
- package/dist/cjs/{stencil-iconButton-3d7f4317.js → stencil-iconButton-8e927184.js} +3 -3
- package/dist/cjs/{stencil-iconButton-3d7f4317.js.map → stencil-iconButton-8e927184.js.map} +1 -1
- package/dist/cjs/{stencil-item-list-guard-a338ea08.js → stencil-item-list-guard-4dfa8e37.js} +2 -2
- package/dist/cjs/{stencil-item-list-guard-a338ea08.js.map → stencil-item-list-guard-4dfa8e37.js.map} +1 -1
- package/dist/cjs/{stencil-modal-9bafc681.js → stencil-modal-9035d38e.js} +3 -3
- package/dist/cjs/{stencil-modal-9bafc681.js.map → stencil-modal-9035d38e.js.map} +1 -1
- package/dist/cjs/{stencil-radio-button-3b87d6da.js → stencil-radio-button-6a4181f4.js} +3 -3
- package/dist/cjs/{stencil-radio-button-3b87d6da.js.map → stencil-radio-button-6a4181f4.js.map} +1 -1
- package/dist/cjs/{stencil-item-decorators-d2daa144.js → stencil-result-template-decorators-df459ee3.js} +32 -45
- package/dist/cjs/stencil-result-template-decorators-df459ee3.js.map +1 -0
- package/dist/cjs/{utils-b455e068.js → utils-ba796684.js} +1 -12
- package/dist/cjs/utils-ba796684.js.map +1 -0
- package/dist/cjs/version.cjs.js +2 -2
- package/dist/esm/_index.js +3 -3
- package/dist/esm/_loader.js +3 -3
- package/dist/esm/atomic-generated-answer-feedback-modal.entry.js +8 -8
- package/dist/esm/atomic-generated-answer-feedback-modal.entry.js.map +1 -1
- package/dist/esm/atomic-insight-folded-result-list.entry.js +10 -8
- package/dist/esm/atomic-insight-folded-result-list.entry.js.map +1 -1
- package/dist/esm/atomic-insight-generated-answer.entry.js +6 -6
- package/dist/esm/atomic-insight-refine-modal.entry.js +4 -4
- package/dist/esm/atomic-insight-result-action-bar.entry.js +2 -2
- package/dist/esm/atomic-insight-result-action.entry.js +6 -7
- package/dist/esm/atomic-insight-result-action.entry.js.map +1 -1
- package/dist/esm/atomic-insight-result-attach-to-case-action.entry.js +6 -7
- package/dist/esm/atomic-insight-result-attach-to-case-action.entry.js.map +1 -1
- package/dist/esm/atomic-insight-result-attach-to-case-indicator.entry.js +3 -4
- package/dist/esm/atomic-insight-result-attach-to-case-indicator.entry.js.map +1 -1
- package/dist/esm/atomic-insight-result-children-template.entry.js +3 -3
- package/dist/esm/atomic-insight-result-list.entry.js +6 -7
- package/dist/esm/atomic-insight-result-list.entry.js.map +1 -1
- package/dist/esm/atomic-insight-result-quickview-action.entry.js +7 -8
- package/dist/esm/atomic-insight-result-quickview-action.entry.js.map +1 -1
- package/dist/esm/atomic-insight-smart-snippet-suggestions.entry.js +5 -5
- package/dist/esm/atomic-insight-smart-snippet.entry.js +6 -6
- package/dist/esm/atomic-insight-timeframe-facet.entry.js +8 -8
- package/dist/esm/atomic-insight-user-actions-modal.entry.js +3 -3
- package/dist/esm/atomic-insight-user-actions-session.entry.js +4 -4
- package/dist/esm/atomic-insight-user-actions-timeline.entry.js +3 -3
- package/dist/esm/atomic-ipx-body.entry.js +5 -5
- package/dist/esm/atomic-ipx-body.entry.js.map +1 -1
- package/dist/esm/atomic-ipx-modal.entry.js +5 -5
- package/dist/esm/atomic-ipx-modal.entry.js.map +1 -1
- package/dist/esm/atomic-ipx-recs-list.entry.js +9 -10
- package/dist/esm/atomic-ipx-recs-list.entry.js.map +1 -1
- package/dist/esm/atomic-ipx-refine-modal.entry.js +5 -5
- package/dist/esm/atomic-ipx-refine-toggle.entry.js +5 -5
- package/dist/esm/atomic-ipx-result-link.entry.js +4 -5
- package/dist/esm/atomic-ipx-result-link.entry.js.map +1 -1
- package/dist/esm/atomic-recs-list.entry.js +9 -10
- package/dist/esm/atomic-recs-list.entry.js.map +1 -1
- package/dist/esm/atomic-stencil-facet-date-input.entry.js +5 -5
- package/dist/esm/atomic-stencil-facet-date-input.entry.js.map +1 -1
- package/dist/esm/atomic-suggestion-renderer.entry.js +3 -3
- package/dist/esm/atomic-suggestion-renderer.entry.js.map +1 -1
- package/dist/esm/atomic.js +3 -3
- package/dist/esm/{display-options-60387cd9.js → display-options-63f2ec3c.js} +99 -5
- package/dist/esm/display-options-63f2ec3c.js.map +1 -0
- package/dist/esm/event-utils-8de63ec3.js.map +1 -1
- package/dist/esm/{index-d03d85cb.js → index-0bcc50f8.js} +6 -17
- package/dist/esm/index-0bcc50f8.js.map +1 -0
- package/dist/esm/{initialization-utils-ed3a5274.js → initialization-utils-958635e9.js} +2 -2
- package/dist/esm/{initialization-utils-ed3a5274.js.map → initialization-utils-958635e9.js.map} +1 -1
- package/dist/esm/{props-utils-d064c27d.js → props-utils-a6744ec8.js} +3 -3
- package/dist/esm/{props-utils-d064c27d.js.map → props-utils-a6744ec8.js.map} +1 -1
- package/dist/esm/{stencil-accessibility-utils-a11075f9.js → stencil-accessibility-utils-2253e89c.js} +2 -2
- package/dist/esm/{stencil-accessibility-utils-a11075f9.js.map → stencil-accessibility-utils-2253e89c.js.map} +1 -1
- package/dist/esm/{stencil-button-8276f33f.js → stencil-button-f96c2b81.js} +2 -2
- package/dist/esm/{stencil-button-8276f33f.js.map → stencil-button-f96c2b81.js.map} +1 -1
- package/dist/esm/{stencil-carousel-1f4e780c.js → stencil-carousel-bb5606d8.js} +3 -3
- package/dist/esm/{stencil-carousel-1f4e780c.js.map → stencil-carousel-bb5606d8.js.map} +1 -1
- package/dist/esm/{stencil-fieldset-group-cde54e3a.js → stencil-fieldset-group-6a9a867f.js} +2 -2
- package/dist/esm/{stencil-fieldset-group-cde54e3a.js.map → stencil-fieldset-group-6a9a867f.js.map} +1 -1
- package/dist/esm/{stencil-heading-b835c763.js → stencil-heading-5ac0f5ff.js} +2 -2
- package/dist/esm/{stencil-heading-b835c763.js.map → stencil-heading-5ac0f5ff.js.map} +1 -1
- package/dist/esm/{stencil-iconButton-95ce8b69.js → stencil-iconButton-16be999d.js} +3 -3
- package/dist/esm/{stencil-iconButton-95ce8b69.js.map → stencil-iconButton-16be999d.js.map} +1 -1
- package/dist/esm/{stencil-item-list-guard-4aeeeea5.js → stencil-item-list-guard-7eaabe92.js} +2 -2
- package/dist/esm/{stencil-item-list-guard-4aeeeea5.js.map → stencil-item-list-guard-7eaabe92.js.map} +1 -1
- package/dist/esm/{stencil-modal-da3e4eaa.js → stencil-modal-0471908f.js} +3 -3
- package/dist/esm/{stencil-modal-da3e4eaa.js.map → stencil-modal-0471908f.js.map} +1 -1
- package/dist/esm/{stencil-radio-button-360a55b4.js → stencil-radio-button-647a8428.js} +3 -3
- package/dist/esm/{stencil-radio-button-360a55b4.js.map → stencil-radio-button-647a8428.js.map} +1 -1
- package/dist/esm/{stencil-item-decorators-97a4c6a1.js → stencil-result-template-decorators-e758f409.js} +30 -42
- package/dist/esm/stencil-result-template-decorators-e758f409.js.map +1 -0
- package/dist/esm/{utils-58ed73e4.js → utils-4b7a065d.js} +2 -12
- package/dist/esm/utils-4b7a065d.js.map +1 -0
- package/dist/esm/version.js +2 -2
- package/dist/types/components/common/atomic-facet-number-input/atomic-facet-number-input.d.ts +3 -0
- package/dist/types/components/common/atomic-modal/atomic-modal.d.ts +2 -0
- package/dist/types/components/common/atomic-smart-snippet-expandable-answer/atomic-smart-snippet-expandable-answer.d.ts +8 -1
- package/dist/types/components/common/atomic-suggestion-renderer/atomic-suggestion-renderer.d.ts +1 -1
- package/dist/types/components/common/facets/stencil-facet-date-input/stencil-facet-date-input.d.ts +6 -0
- package/dist/types/components/common/generated-answer/atomic-generated-answer-feedback/atomic-generated-answer-feedback-modal.d.ts +6 -0
- package/dist/types/components/insight/atomic-insight-result-action/atomic-insight-result-action.d.ts +6 -0
- package/dist/types/components/insight/atomic-insight-result-attach-to-case-action/atomic-insight-result-attach-to-case-action.d.ts +7 -0
- package/dist/types/components/insight/atomic-insight-result-children/atomic-insight-result-children.d.ts +70 -0
- package/dist/types/components/insight/index.d.ts +1 -0
- package/dist/types/components/ipx/atomic-ipx-body/atomic-ipx-body.d.ts +6 -0
- package/dist/types/components/ipx/atomic-ipx-embedded/atomic-ipx-embedded.d.ts +22 -10
- package/dist/types/components/ipx/atomic-ipx-modal/atomic-ipx-modal.d.ts +6 -0
- package/dist/types/components/ipx/index.d.ts +1 -0
- package/dist/types/components/search/atomic-results-per-page/atomic-results-per-page.d.ts +2 -0
- package/dist/types/components/search/atomic-search-layout/atomic-search-layout.d.ts +2 -0
- package/dist/types/components.d.ts +25 -75
- package/dist/types/utils/event-utils.d.ts +1 -1
- package/docs/atomic-docs.json +11 -2
- package/package.json +5 -5
- package/dist/atomic/components/atomic-insight-result-children.d.ts +0 -11
- package/dist/atomic/components/atomic-insight-result-children.js +0 -275
- package/dist/atomic/components/atomic-insight-result-children.js.map +0 -1
- package/dist/atomic/components/atomic-ipx-embedded.d.ts +0 -11
- package/dist/atomic/components/atomic-ipx-embedded.js +0 -77
- package/dist/atomic/components/atomic-ipx-embedded.js.map +0 -1
- package/dist/atomic/components/result-template-provider.js +0 -99
- package/dist/atomic/components/result-template-provider.js.map +0 -1
- package/dist/atomic/components/stencil-item-decorators.js +0 -142
- package/dist/atomic/components/stencil-item-decorators.js.map +0 -1
- package/dist/atomic/components/unfolded-item.js +0 -7
- package/dist/atomic/components/unfolded-item.js.map +0 -1
- package/dist/atomic/p-087c0db1.js +0 -3
- package/dist/atomic/p-087c0db1.js.map +0 -1
- package/dist/atomic/p-0f046687.js +0 -2
- package/dist/atomic/p-0f046687.js.map +0 -1
- package/dist/atomic/p-1fd38149.entry.js +0 -2
- package/dist/atomic/p-1fd38149.entry.js.map +0 -1
- package/dist/atomic/p-20231cc9.entry.js +0 -2
- package/dist/atomic/p-20231cc9.entry.js.map +0 -1
- package/dist/atomic/p-3f48ff91.entry.js +0 -2
- package/dist/atomic/p-4a8bb5ea.entry.js +0 -2
- package/dist/atomic/p-4c696ce2.js +0 -2
- package/dist/atomic/p-4c696ce2.js.map +0 -1
- package/dist/atomic/p-53e0a661.entry.js +0 -2
- package/dist/atomic/p-53e0a661.entry.js.map +0 -1
- package/dist/atomic/p-5e83a83d.js +0 -2
- package/dist/atomic/p-5e83a83d.js.map +0 -1
- package/dist/atomic/p-608ea23b.entry.js.map +0 -1
- package/dist/atomic/p-6d9dcfb7.js +0 -2
- package/dist/atomic/p-6d9dcfb7.js.map +0 -1
- package/dist/atomic/p-8202aa3e.js +0 -2
- package/dist/atomic/p-8f778162.js +0 -2
- package/dist/atomic/p-a9719330.entry.js +0 -2
- package/dist/atomic/p-a998340c.entry.js +0 -2
- package/dist/atomic/p-abbf4a31.entry.js.map +0 -1
- package/dist/atomic/p-b5ecd6c0.js +0 -2
- package/dist/atomic/p-b5ecd6c0.js.map +0 -1
- package/dist/atomic/p-c8b5575e.js +0 -2
- package/dist/atomic/p-e2720a78.entry.js +0 -2
- package/dist/atomic/p-e2720a78.entry.js.map +0 -1
- package/dist/atomic/p-e4c2823c.entry.js +0 -2
- package/dist/atomic/p-e4c2823c.entry.js.map +0 -1
- package/dist/atomic/p-efdb5e2b.entry.js +0 -2
- package/dist/atomic/p-efdb5e2b.entry.js.map +0 -1
- package/dist/atomic/p-f927a418.entry.js +0 -2
- package/dist/atomic/p-f927a418.entry.js.map +0 -1
- package/dist/atomic/p-f9e7ea97.js +0 -2
- package/dist/atomic/p-f9e7ea97.js.map +0 -1
- package/dist/atomic/p-fa7ff7aa.entry.js.map +0 -1
- package/dist/atomic/p-fb6a5b80.entry.js +0 -2
- package/dist/cjs/atomic-insight-result-children.cjs.entry.js +0 -256
- package/dist/cjs/atomic-insight-result-children.cjs.entry.js.map +0 -1
- package/dist/cjs/atomic-ipx-embedded.cjs.entry.js +0 -57
- package/dist/cjs/atomic-ipx-embedded.cjs.entry.js.map +0 -1
- package/dist/cjs/display-options-d5c02917.js.map +0 -1
- package/dist/cjs/index-0a91838f.js.map +0 -1
- package/dist/cjs/result-template-provider-3232c761.js +0 -103
- package/dist/cjs/result-template-provider-3232c761.js.map +0 -1
- package/dist/cjs/stencil-item-decorators-d2daa144.js.map +0 -1
- package/dist/cjs/stencil-result-template-decorators-c89c2f24.js +0 -42
- package/dist/cjs/stencil-result-template-decorators-c89c2f24.js.map +0 -1
- package/dist/cjs/unfolded-item-148d21d6.js +0 -9
- package/dist/cjs/unfolded-item-148d21d6.js.map +0 -1
- package/dist/cjs/utils-b455e068.js.map +0 -1
- package/dist/esm/atomic-insight-result-children.entry.js +0 -252
- package/dist/esm/atomic-insight-result-children.entry.js.map +0 -1
- package/dist/esm/atomic-ipx-embedded.entry.js +0 -53
- package/dist/esm/atomic-ipx-embedded.entry.js.map +0 -1
- package/dist/esm/display-options-60387cd9.js.map +0 -1
- package/dist/esm/index-d03d85cb.js.map +0 -1
- package/dist/esm/result-template-provider-d2f3b480.js +0 -99
- package/dist/esm/result-template-provider-d2f3b480.js.map +0 -1
- package/dist/esm/stencil-item-decorators-97a4c6a1.js.map +0 -1
- package/dist/esm/stencil-result-template-decorators-c244d674.js +0 -38
- package/dist/esm/stencil-result-template-decorators-c244d674.js.map +0 -1
- package/dist/esm/unfolded-item-c5795c0f.js +0 -7
- package/dist/esm/unfolded-item-c5795c0f.js.map +0 -1
- package/dist/esm/utils-58ed73e4.js.map +0 -1
- package/dist/types/components/insight/result-templates/atomic-insight-result-children/atomic-insight-result-children.d.ts +0 -44
- /package/dist/atomic/{p-c8b5575e.js.map → p-02089c14.js.map} +0 -0
- /package/dist/atomic/{p-9748e9a8.js.map → p-0454df94.js.map} +0 -0
- /package/dist/atomic/{p-7c732c9b.entry.js.map → p-0d58f131.entry.js.map} +0 -0
- /package/dist/atomic/{p-8f778162.js.map → p-0f466ffb.js.map} +0 -0
- /package/dist/atomic/{p-fb755797.entry.js.map → p-3b46c4c2.entry.js.map} +0 -0
- /package/dist/atomic/{p-8202aa3e.js.map → p-42d7acb3.js.map} +0 -0
- /package/dist/atomic/{p-3930eb33.js.map → p-4a2e7926.js.map} +0 -0
- /package/dist/atomic/{p-5b83e1aa.entry.js.map → p-519b3517.entry.js.map} +0 -0
- /package/dist/atomic/{p-b8fb8a69.js.map → p-66d84fd8.js.map} +0 -0
- /package/dist/atomic/{p-f82d4e71.entry.js.map → p-6b66c9da.entry.js.map} +0 -0
- /package/dist/atomic/{p-7ca2dce5.entry.js.map → p-6bb72ce5.entry.js.map} +0 -0
- /package/dist/atomic/{p-f647fb7b.entry.js.map → p-6e706321.entry.js.map} +0 -0
- /package/dist/atomic/{p-a97247c4.entry.js.map → p-7a4bad93.entry.js.map} +0 -0
- /package/dist/atomic/{p-8ab3a3e3.js.map → p-94976bed.js.map} +0 -0
- /package/dist/atomic/{p-8f9590f0.js.map → p-be8cc132.js.map} +0 -0
- /package/dist/atomic/{p-ae079ccf.js.map → p-bedd6d62.js.map} +0 -0
- /package/dist/atomic/{p-e041c13c.entry.js.map → p-ce30fcf5.entry.js.map} +0 -0
- /package/dist/atomic/{p-95ad29f3.entry.js.map → p-d03289b0.entry.js.map} +0 -0
- /package/dist/atomic/{p-5aadf2ae.entry.js.map → p-d0ec450e.entry.js.map} +0 -0
- /package/dist/atomic/{p-4a1636ae.entry.js.map → p-e2e4d4f3.entry.js.map} +0 -0
- /package/dist/atomic/{p-e6eee594.js.map → p-e9fff991.js.map} +0 -0
- /package/dist/atomic/{p-d609547d.js.map → p-f2243b33.js.map} +0 -0
- /package/dist/atomic/{p-af37130c.entry.js.map → p-f3a9a28b.entry.js.map} +0 -0
|
@@ -0,0 +1,75 @@
|
|
|
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 { css, html, LitElement } from 'lit';
|
|
8
|
+
import { customElement, property, state } from 'lit/decorators.js';
|
|
9
|
+
import { bindings } from "../../../decorators/bindings.js";
|
|
10
|
+
import { withTailwindStyles } from "../../../decorators/with-tailwind-styles.js";
|
|
11
|
+
import { updateBreakpoints } from "../../../utils/replace-breakpoint-utils.js";
|
|
12
|
+
import { once, randomID } from "../../../utils/utils.js";
|
|
13
|
+
/**
|
|
14
|
+
* The `atomic-ipx-embedded` component is used for IPX embedded interfaces.
|
|
15
|
+
*
|
|
16
|
+
* @slot header - Content to display in the header section.
|
|
17
|
+
* @slot body - Content to display in the body section.
|
|
18
|
+
* @slot footer - Content to display in the footer section.
|
|
19
|
+
*
|
|
20
|
+
* @part backdrop - The backdrop container element.
|
|
21
|
+
*/
|
|
22
|
+
let AtomicIpxEmbedded = class AtomicIpxEmbedded extends LitElement {
|
|
23
|
+
constructor() {
|
|
24
|
+
super(...arguments);
|
|
25
|
+
this.hasFooterSlotElements = true;
|
|
26
|
+
this.updateBreakpoints = once(() => updateBreakpoints(this));
|
|
27
|
+
}
|
|
28
|
+
initialize() { }
|
|
29
|
+
connectedCallback() {
|
|
30
|
+
super.connectedCallback();
|
|
31
|
+
this.checkFooterSlot();
|
|
32
|
+
this.ensureHostId();
|
|
33
|
+
}
|
|
34
|
+
checkFooterSlot() {
|
|
35
|
+
this.hasFooterSlotElements = !!this.querySelector('[slot="footer"]');
|
|
36
|
+
}
|
|
37
|
+
ensureHostId() {
|
|
38
|
+
if (!this.id) {
|
|
39
|
+
this.id = randomID('atomic-ipx-embedded-');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
render() {
|
|
43
|
+
this.updateBreakpoints();
|
|
44
|
+
return html `
|
|
45
|
+
<div part="backdrop">
|
|
46
|
+
<atomic-ipx-body .displayFooterSlot=${this.hasFooterSlotElements}>
|
|
47
|
+
<slot name="header" slot="header"></slot>
|
|
48
|
+
<slot name="body" slot="body"></slot>
|
|
49
|
+
<slot name="footer" slot="footer"></slot>
|
|
50
|
+
</atomic-ipx-body>
|
|
51
|
+
</div>
|
|
52
|
+
`;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
AtomicIpxEmbedded.styles = [
|
|
56
|
+
css`/*! tailwindcss v4.1.13 | MIT License | https://tailwindcss.com */:host{box-shadow:0 0 .5rem rgba(0,0,0,.5);height:inherit}[part=backdrop]{height:inherit;inset:auto 3rem 4.25rem auto;pointer-events:auto}`,
|
|
57
|
+
];
|
|
58
|
+
__decorate([
|
|
59
|
+
state()
|
|
60
|
+
], AtomicIpxEmbedded.prototype, "bindings", void 0);
|
|
61
|
+
__decorate([
|
|
62
|
+
state()
|
|
63
|
+
], AtomicIpxEmbedded.prototype, "error", void 0);
|
|
64
|
+
__decorate([
|
|
65
|
+
property({ type: Object })
|
|
66
|
+
], AtomicIpxEmbedded.prototype, "container", void 0);
|
|
67
|
+
__decorate([
|
|
68
|
+
state()
|
|
69
|
+
], AtomicIpxEmbedded.prototype, "hasFooterSlotElements", void 0);
|
|
70
|
+
AtomicIpxEmbedded = __decorate([
|
|
71
|
+
customElement('atomic-ipx-embedded'),
|
|
72
|
+
bindings(),
|
|
73
|
+
withTailwindStyles
|
|
74
|
+
], AtomicIpxEmbedded);
|
|
75
|
+
export { AtomicIpxEmbedded };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// Auto-generated file
|
|
2
2
|
export { AtomicIpxButton } from './atomic-ipx-button/atomic-ipx-button.js';
|
|
3
|
+
export { AtomicIpxEmbedded } from './atomic-ipx-embedded/atomic-ipx-embedded.js';
|
|
3
4
|
export { AtomicIpxTab } from './atomic-ipx-tab/atomic-ipx-tab.js';
|
|
4
5
|
export { AtomicIpxTabs } from './atomic-ipx-tabs/atomic-ipx-tabs.js';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Auto-generated file
|
|
2
2
|
export default {
|
|
3
3
|
'atomic-ipx-button': async () => await import('./atomic-ipx-button/atomic-ipx-button.js'),
|
|
4
|
+
'atomic-ipx-embedded': async () => await import('./atomic-ipx-embedded/atomic-ipx-embedded.js'),
|
|
4
5
|
'atomic-ipx-tab': async () => await import('./atomic-ipx-tab/atomic-ipx-tab.js'),
|
|
5
6
|
'atomic-ipx-tabs': async () => await import('./atomic-ipx-tabs/atomic-ipx-tabs.js'),
|
|
6
7
|
};
|
|
@@ -23,6 +23,7 @@ import { errorGuard } from "../../../decorators/error-guard";
|
|
|
23
23
|
import { withTailwindStyles } from "../../../decorators/with-tailwind-styles";
|
|
24
24
|
import { InitializeBindingsMixin } from "../../../mixins/bindings-mixin";
|
|
25
25
|
import { AriaLiveRegionController, FocusTargetController, } from "../../../utils/accessibility-utils";
|
|
26
|
+
import { buildCustomEvent } from "../../../utils/event-utils";
|
|
26
27
|
import { randomID } from "../../../utils/utils";
|
|
27
28
|
const ArrowLeftIcon = "<svg viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m11.5 4.8-4.3 4.5c-.3.4-.3.9 0 1.3l4.3 4.6c.3.4.9.4 1.2 0s.3-.9 0-1.3l-3.7-4 3.7-3.9c.3-.4.3-.9 0-1.3-.3-.3-.9-.3-1.2.1z\"/></svg>";
|
|
28
29
|
const ArrowRightIcon = "<svg viewBox=\"0 0 20 20\"><path d=\"m8.5 15.2 4.3-4.6c.3-.4.3-.9 0-1.3l-4.4-4.5c-.3-.4-.9-.4-1.2 0s-.3.9 0 1.3l3.7 4-3.7 3.9c-.3.4-.3.9 0 1.3.4.3 1 .3 1.3-.1z\"/></svg>";
|
|
@@ -159,7 +160,7 @@ let AtomicPager = AtomicPager_1 = class AtomicPager extends InitializeBindingsMi
|
|
|
159
160
|
}
|
|
160
161
|
async focusOnFirstResultAndScrollToTop() {
|
|
161
162
|
await this.bindings.store.state.resultList?.focusOnFirstResultAfterNextSearch();
|
|
162
|
-
this.dispatchEvent(
|
|
163
|
+
this.dispatchEvent(buildCustomEvent('atomic/scrollToTop'));
|
|
163
164
|
this.announcePageLoaded();
|
|
164
165
|
}
|
|
165
166
|
announcePageLoaded() {
|
package/dist/atomic/components/components/search/atomic-quickview-modal/atomic-quickview-modal.js
CHANGED
|
@@ -20,6 +20,7 @@ import { bindingGuard } from "../../../decorators/binding-guard";
|
|
|
20
20
|
import { bindings } from "../../../decorators/bindings";
|
|
21
21
|
import { errorGuard } from "../../../decorators/error-guard";
|
|
22
22
|
import { withTailwindStyles } from "../../../decorators/with-tailwind-styles";
|
|
23
|
+
import { buildCustomEvent } from "../../../utils/event-utils";
|
|
23
24
|
const CloseIcon = "<svg viewBox=\"0 0 22 22\"><g transform=\"matrix(.7071 -.7071 .7071 .7071 -3.142 11)\"><path d=\"m9-3.4h2v26.9h-2z\"/><path d=\"m-3.4 9h26.9v2h-26.9z\"/></g></svg>";
|
|
24
25
|
/**
|
|
25
26
|
* The `atomic-quickview-modal` component is the modal opened when clicking a quickview button.
|
|
@@ -162,7 +163,7 @@ let AtomicQuickviewModal = class AtomicQuickviewModal extends LitElement {
|
|
|
162
163
|
class: 'p-2',
|
|
163
164
|
style: 'square-neutral',
|
|
164
165
|
onClick: () => {
|
|
165
|
-
this.dispatchEvent(
|
|
166
|
+
this.dispatchEvent(buildCustomEvent('atomic/quickview/previous'));
|
|
166
167
|
},
|
|
167
168
|
disabled: this.current === 1,
|
|
168
169
|
text: this.bindings.i18n.t('quickview-previous'),
|
|
@@ -179,7 +180,7 @@ let AtomicQuickviewModal = class AtomicQuickviewModal extends LitElement {
|
|
|
179
180
|
class: 'p-2',
|
|
180
181
|
style: 'square-neutral',
|
|
181
182
|
onClick: () => {
|
|
182
|
-
this.dispatchEvent(
|
|
183
|
+
this.dispatchEvent(buildCustomEvent('atomic/quickview/next'));
|
|
183
184
|
},
|
|
184
185
|
disabled: this.current === this.total,
|
|
185
186
|
text: this.bindings.i18n.t('quickview-next'),
|
package/dist/atomic/components/components/search/atomic-results-per-page/atomic-results-per-page.js
CHANGED
|
@@ -20,6 +20,7 @@ import { bindings } from "../../../decorators/bindings.js";
|
|
|
20
20
|
import { errorGuard } from "../../../decorators/error-guard.js";
|
|
21
21
|
import { withTailwindStyles } from "../../../decorators/with-tailwind-styles.js";
|
|
22
22
|
import { InitializeBindingsMixin } from "../../../mixins/bindings-mixin.js";
|
|
23
|
+
import { buildCustomEvent } from "../../../utils/event-utils.js";
|
|
23
24
|
import { randomID } from "../../../utils/utils.js";
|
|
24
25
|
/**
|
|
25
26
|
* The `atomic-results-per-page` component determines how many results to display per page.
|
|
@@ -28,6 +29,8 @@ import { randomID } from "../../../utils/utils.js";
|
|
|
28
29
|
* @part buttons - The list of buttons.
|
|
29
30
|
* @part button - The result per page button.
|
|
30
31
|
* @part active-button - The active result per page button.
|
|
32
|
+
*
|
|
33
|
+
* @event atomic/scrollToTop - Emitted when the page should scroll to top after changing results per page.
|
|
31
34
|
*/
|
|
32
35
|
let AtomicResultsPerPage = class AtomicResultsPerPage extends InitializeBindingsMixin(LitElement) {
|
|
33
36
|
constructor() {
|
|
@@ -61,10 +64,7 @@ let AtomicResultsPerPage = class AtomicResultsPerPage extends InitializeBindings
|
|
|
61
64
|
});
|
|
62
65
|
}
|
|
63
66
|
scrollToTopEvent() {
|
|
64
|
-
this.dispatchEvent(
|
|
65
|
-
bubbles: true,
|
|
66
|
-
composed: true,
|
|
67
|
-
}));
|
|
67
|
+
this.dispatchEvent(buildCustomEvent('atomic/scrollToTop'));
|
|
68
68
|
}
|
|
69
69
|
get label() {
|
|
70
70
|
return this.bindings.i18n.t('results-per-page');
|
|
@@ -24,6 +24,7 @@ import { watch } from "../../../decorators/watch";
|
|
|
24
24
|
import { withTailwindStyles } from "../../../decorators/with-tailwind-styles.js";
|
|
25
25
|
import { AriaLiveRegionController } from "../../../utils/accessibility-utils";
|
|
26
26
|
import { hasKeyboard, isMacOS } from "../../../utils/device-utils";
|
|
27
|
+
import { buildCustomEvent } from "../../../utils/event-utils";
|
|
27
28
|
import { SafeStorage, StorageItems, } from "../../../utils/local-storage-utils";
|
|
28
29
|
import { updateBreakpoints } from "../../../utils/replace-breakpoint-utils";
|
|
29
30
|
import { getDefaultSlotContent } from "../../../utils/slot-utils";
|
|
@@ -166,8 +167,9 @@ let AtomicSearchBox = class AtomicSearchBox extends LitElement {
|
|
|
166
167
|
const storage = new SafeStorage();
|
|
167
168
|
storage.setJSON(StorageItems.STANDALONE_SEARCH_BOX_DATA, data);
|
|
168
169
|
this.searchBox.afterRedirection();
|
|
169
|
-
const event =
|
|
170
|
-
|
|
170
|
+
const event = buildCustomEvent('redirect', {
|
|
171
|
+
redirectTo,
|
|
172
|
+
value,
|
|
171
173
|
});
|
|
172
174
|
this.dispatchEvent(event);
|
|
173
175
|
if (!event.defaultPrevented) {
|
|
@@ -208,6 +210,9 @@ let AtomicSearchBox = class AtomicSearchBox extends LitElement {
|
|
|
208
210
|
this.suggestionManager.initializeSuggestions(this.suggestionBindings);
|
|
209
211
|
}
|
|
210
212
|
watchRedirectionUrl() {
|
|
213
|
+
if (!this.searchBox) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
211
216
|
if (this.isStandaloneSearchBox(this.searchBox) && this.redirectionUrl) {
|
|
212
217
|
this.searchBox.updateRedirectUrl(this.redirectionUrl);
|
|
213
218
|
}
|
|
@@ -502,7 +507,7 @@ let AtomicSearchBox = class AtomicSearchBox extends LitElement {
|
|
|
502
507
|
}
|
|
503
508
|
this.isExpanded = false;
|
|
504
509
|
}}
|
|
505
|
-
.
|
|
510
|
+
.onMouseEnter=${async () => {
|
|
506
511
|
await this.suggestionManager.onSuggestionMouseOver(item, side, id);
|
|
507
512
|
}}
|
|
508
513
|
></atomic-suggestion-renderer>
|
package/dist/atomic/components/components/search/atomic-search-layout/atomic-search-layout.js
CHANGED
|
@@ -10,6 +10,7 @@ import { LayoutStylesController } from "../../common/layout/layout-styles-contro
|
|
|
10
10
|
import { watch } from "../../../decorators/watch";
|
|
11
11
|
import { ChildrenUpdateCompleteMixin } from "../../../mixins/children-update-complete-mixin";
|
|
12
12
|
import { LightDomMixin } from "../../../mixins/light-dom";
|
|
13
|
+
import { buildCustomEvent } from "../../../utils/event-utils";
|
|
13
14
|
import { DEFAULT_MOBILE_BREAKPOINT } from "../../../utils/replace-breakpoint-utils";
|
|
14
15
|
import styles from './atomic-search-layout.tw.css';
|
|
15
16
|
import { buildSearchLayout } from './search-layout';
|
|
@@ -19,6 +20,8 @@ import { buildSearchLayout } from './search-layout';
|
|
|
19
20
|
* @cssprop --atomic-layout-max-search-box-input-width: The maximum width that the search box input will take.
|
|
20
21
|
* @cssprop --atomic-layout-max-search-box-double-suggestions-width: The maximum width that the search box suggestions will take when displaying a double list.
|
|
21
22
|
* @cssprop --atomic-layout-search-box-left-suggestions-width: The width of the left list when displaying a double list.
|
|
23
|
+
*
|
|
24
|
+
* @event atomic-layout-breakpoint-change - Emitted when the mobile breakpoint changes. The event detail contains `{ breakpoint: string }`.
|
|
22
25
|
*/
|
|
23
26
|
let AtomicSearchLayout = class AtomicSearchLayout extends LightDomMixin(ChildrenUpdateCompleteMixin(LitElement)) {
|
|
24
27
|
constructor() {
|
|
@@ -35,10 +38,8 @@ let AtomicSearchLayout = class AtomicSearchLayout extends LightDomMixin(Children
|
|
|
35
38
|
this.emitBreakpointChangeEvent();
|
|
36
39
|
}
|
|
37
40
|
emitBreakpointChangeEvent() {
|
|
38
|
-
this.dispatchEvent(
|
|
39
|
-
|
|
40
|
-
bubbles: true,
|
|
41
|
-
composed: true,
|
|
41
|
+
this.dispatchEvent(buildCustomEvent('atomic-layout-breakpoint-change', {
|
|
42
|
+
breakpoint: this.mobileBreakpoint,
|
|
42
43
|
}));
|
|
43
44
|
}
|
|
44
45
|
onMobileBreakpointChange() {
|
|
@@ -1,9 +1,35 @@
|
|
|
1
1
|
import { h, Fragment } from '@stencil/core/internal/client';
|
|
2
|
+
import { buildResultTemplatesManager } from '@coveo/headless';
|
|
2
3
|
import { u as updateBreakpoints } from './replace-breakpoint-utils.js';
|
|
3
4
|
import { g as getFirstFocusableDescendant } from './stencil-accessibility-utils.js';
|
|
4
5
|
import { o as once, d as defer } from './utils.js';
|
|
5
6
|
import './purify.js';
|
|
6
7
|
|
|
8
|
+
// The Lit equivalent of this file is item-placeholders.ts. The Lit version doesn't include the placeholder guard.
|
|
9
|
+
/**
|
|
10
|
+
* @deprecated should only be used for Stencil components.
|
|
11
|
+
*/
|
|
12
|
+
const ResultsPlaceholdersGuard = (props) => {
|
|
13
|
+
if (!props.displayPlaceholders) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
switch (props.display) {
|
|
17
|
+
case 'table':
|
|
18
|
+
return h(TableDisplayResultsPlaceholder, { ...props });
|
|
19
|
+
default:
|
|
20
|
+
return h(ResultsPlaceholder, { ...props });
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* @deprecated should only be used for Stencil components.
|
|
25
|
+
*/
|
|
26
|
+
const ResultsPlaceholder = (props) => {
|
|
27
|
+
return Array.from({ length: props.numberOfPlaceholders }, (_, i) => (h("atomic-result-placeholder", { key: `placeholder-${i}`, density: props.density, display: props.display || 'list', imageSize: props.imageSize })));
|
|
28
|
+
};
|
|
29
|
+
const TableDisplayResultsPlaceholder = (props) => {
|
|
30
|
+
return (h("atomic-result-table-placeholder", { density: props.density, imageSize: props.imageSize, rows: props.numberOfPlaceholders }));
|
|
31
|
+
};
|
|
32
|
+
|
|
7
33
|
/**
|
|
8
34
|
* @deprecated should only be used for Stencil components.
|
|
9
35
|
*/
|
|
@@ -14,6 +40,74 @@ const ItemDisplayGuard = (props, children) => {
|
|
|
14
40
|
return h(Fragment, null, ...children);
|
|
15
41
|
};
|
|
16
42
|
|
|
43
|
+
class TemplateProvider {
|
|
44
|
+
constructor(props, buildManager) {
|
|
45
|
+
this.props = props;
|
|
46
|
+
this.buildManager = buildManager;
|
|
47
|
+
this.templateManager = this.buildManager();
|
|
48
|
+
this.registerResultTemplates();
|
|
49
|
+
}
|
|
50
|
+
async registerResultTemplates() {
|
|
51
|
+
const customTemplates = await Promise.all(this.props.templateElements.map(async (resultTemplateElement) => {
|
|
52
|
+
if (!('getTemplate' in resultTemplateElement)) {
|
|
53
|
+
await customElements.whenDefined(resultTemplateElement.tagName.toLowerCase());
|
|
54
|
+
}
|
|
55
|
+
const template = await resultTemplateElement.getTemplate();
|
|
56
|
+
if (!template) {
|
|
57
|
+
this.props.setTemplateHasError(true);
|
|
58
|
+
}
|
|
59
|
+
return template;
|
|
60
|
+
}));
|
|
61
|
+
const templates = (!customTemplates.length && this.props.includeDefaultTemplate
|
|
62
|
+
? [this.makeDefaultTemplate()]
|
|
63
|
+
: []).concat(customTemplates.filter((template) => template));
|
|
64
|
+
this.templateManager.registerTemplates(...templates);
|
|
65
|
+
this.props.setResultTemplateRegistered(true);
|
|
66
|
+
}
|
|
67
|
+
getTemplateContent(item) {
|
|
68
|
+
return this.templateManager.selectTemplate(item);
|
|
69
|
+
}
|
|
70
|
+
getLinkTemplateContent(item) {
|
|
71
|
+
return this.templateManager.selectLinkTemplate(item);
|
|
72
|
+
}
|
|
73
|
+
getEmptyLinkTemplateContent() {
|
|
74
|
+
return document.createDocumentFragment();
|
|
75
|
+
}
|
|
76
|
+
get templatesRegistered() {
|
|
77
|
+
return this.props.getResultTemplateRegistered();
|
|
78
|
+
}
|
|
79
|
+
get hasError() {
|
|
80
|
+
return this.props.getTemplateHasError();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
class ResultTemplateProvider extends TemplateProvider {
|
|
85
|
+
constructor(props, gridCellLinkTarget) {
|
|
86
|
+
super(props, () => buildResultTemplatesManager(props.bindings.engine));
|
|
87
|
+
this.gridCellLinkTarget = gridCellLinkTarget;
|
|
88
|
+
}
|
|
89
|
+
// TODO: Add JSX support for default template
|
|
90
|
+
makeDefaultTemplate() {
|
|
91
|
+
const content = document.createDocumentFragment();
|
|
92
|
+
const linkEl = document.createElement('atomic-result-link');
|
|
93
|
+
content.appendChild(linkEl);
|
|
94
|
+
const linkContent = document.createDocumentFragment();
|
|
95
|
+
const linkMarkup = `
|
|
96
|
+
<atomic-result-link>
|
|
97
|
+
${this.gridCellLinkTarget ? `<a slot="attributes" target="${this.gridCellLinkTarget}"></a>` : ''}
|
|
98
|
+
</atomic-result-link>
|
|
99
|
+
`;
|
|
100
|
+
const linkTemplate = document.createElement('template');
|
|
101
|
+
linkTemplate.innerHTML = linkMarkup.trim();
|
|
102
|
+
linkContent.appendChild(linkTemplate.content);
|
|
103
|
+
return {
|
|
104
|
+
content,
|
|
105
|
+
linkContent,
|
|
106
|
+
conditions: [],
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
17
111
|
/**
|
|
18
112
|
* @deprecated should only be used for Stencil components.
|
|
19
113
|
*/
|
|
@@ -140,6 +234,6 @@ function getItemDisplayClasses(display, density, image) {
|
|
|
140
234
|
*/
|
|
141
235
|
const getItemListDisplayClasses = getItemListDisplayClasses$1;
|
|
142
236
|
|
|
143
|
-
export { DisplayWrapper as D, ItemListCommon as I,
|
|
237
|
+
export { DisplayWrapper as D, ItemListCommon as I, ResultTemplateProvider as R, ResultsPlaceholdersGuard as a, ItemDisplayGuard as b, getItemListDisplayClasses as g };
|
|
144
238
|
|
|
145
239
|
//# sourceMappingURL=display-options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"display-options.js","mappings":"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","names":["getItemListDisplayClasses","getItemListDisplayClassesImport"],"sources":["src/components/common/item-list/stencil-item-display-guard.tsx","src/components/common/item-list/stencil-display-wrapper.tsx","src/components/common/item-list/stencil-item-list-common.tsx","src/components/common/layout/item-layout-utils.ts","src/components/common/layout/display-options.ts"],"sourcesContent":["import {FunctionalComponent, h, Fragment} from '@stencil/core';\n\ninterface ItemDisplayGuardProps {\n firstRequestExecuted: boolean;\n hasItems: boolean;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const ItemDisplayGuard: FunctionalComponent<ItemDisplayGuardProps> = (\n props,\n children\n) => {\n if (!props.hasItems || !props.firstRequestExecuted) {\n return;\n }\n\n return <Fragment>{...children}</Fragment>;\n};\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {ItemDisplayLayout} from '../layout/display-options.js';\n\ninterface DisplayWrapperProps {\n display: ItemDisplayLayout;\n listClasses: string;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const DisplayWrapper: FunctionalComponent<DisplayWrapperProps> = (\n {display, listClasses},\n children\n) => {\n if (display === 'table') {\n return <ListWrapper listClasses={listClasses}>{...children}</ListWrapper>;\n }\n\n return (\n <ListWrapper listClasses={listClasses}>\n <div class={`list-root ${listClasses}`} part=\"result-list\">\n {children}\n </div>\n </ListWrapper>\n );\n};\n\nconst ListWrapper: FunctionalComponent<\n Pick<DisplayWrapperProps, 'listClasses'>\n> = ({listClasses}, children) => {\n return <div class={`list-wrapper ${listClasses}`}>{...children}</div>;\n};\n","import {updateBreakpoints} from '../../../utils/replace-breakpoint-utils';\nimport {\n FocusTargetController,\n getFirstFocusableDescendant,\n} from '../../../utils/stencil-accessibility-utils';\nimport {defer, once} from '../../../utils/utils';\nimport {CommerceStore} from '../../commerce/atomic-commerce-interface/store';\nimport {CommerceRecommendationStore} from '../../commerce/atomic-commerce-recommendation-interface/store';\nimport {InsightStore} from '../../insight/atomic-insight-interface/store';\nimport {RecsStore} from '../../recommendations/atomic-recs-interface/store';\nimport {SearchStore} from '../../search/atomic-search-interface/store';\nimport {AnyItem} from './unfolded-item';\nimport {\n ItemDisplayDensity,\n ItemDisplayImageSize,\n} from '../layout/display-options';\n\nexport const resultComponentClass = 'result-component';\n\nexport type ItemRenderingFunction<SpecificResult extends AnyItem = AnyItem> =\n | ((\n result: SpecificResult,\n root: HTMLElement,\n linkContainer?: HTMLElement\n ) => string)\n | undefined;\n\nexport interface ItemListCommonProps {\n store:\n | CommerceStore\n | CommerceRecommendationStore\n | RecsStore\n | InsightStore\n | SearchStore;\n loadingFlag: string;\n host: HTMLElement;\n nextNewItemTarget: FocusTargetController;\n getCurrentNumberOfItems: () => number;\n getIsLoading: () => boolean;\n engineSubscribe: (cb: () => void) => () => void;\n}\n\nexport class ItemListCommon {\n private indexOfResultToFocus?: number;\n private firstResultEl?: HTMLElement;\n private updateBreakpointsOnce: () => void;\n\n constructor(private props: ItemListCommonProps) {\n this.props.store.setLoadingFlag(this.props.loadingFlag);\n this.props.store.state.resultList = this;\n this.updateBreakpointsOnce = once(() => updateBreakpoints(this.props.host));\n this.props.nextNewItemTarget.registerFocusCallback(() => {\n this.indexOfResultToFocus = undefined;\n });\n }\n\n public updateBreakpoints() {\n this.updateBreakpointsOnce();\n }\n\n public getResultId(\n uniqueIdOnResult: string,\n searchResponseId: string,\n density: ItemDisplayDensity,\n imageSize: ItemDisplayImageSize\n ) {\n return `${uniqueIdOnResult}${searchResponseId}${density}${imageSize}`;\n }\n\n public setNewResultRef(element: HTMLElement, resultIndex: number) {\n if (resultIndex === 0) {\n this.firstResultEl = element;\n }\n if (resultIndex !== this.indexOfResultToFocus) {\n return;\n }\n\n if (!element.children.length && !element.shadowRoot?.children.length) {\n return;\n }\n\n this.indexOfResultToFocus = undefined;\n const elementToFocus = getFirstFocusableDescendant(element) ?? element;\n this.props.nextNewItemTarget.setTarget(elementToFocus);\n }\n\n public focusOnNextNewResult() {\n this.indexOfResultToFocus = this.props.getCurrentNumberOfItems();\n this.props.nextNewItemTarget.focusOnNextTarget();\n }\n\n public async focusOnFirstResultAfterNextSearch() {\n await defer();\n return new Promise<void>((resolve) => {\n if (this.props.getIsLoading()) {\n this.firstResultEl = undefined;\n }\n\n const unsub = this.props.engineSubscribe(async () => {\n await defer();\n if (!this.props.getIsLoading() && this.firstResultEl) {\n const elementToFocus =\n getFirstFocusableDescendant(this.firstResultEl) ??\n this.firstResultEl;\n this.props.nextNewItemTarget.setTarget(elementToFocus);\n this.props.nextNewItemTarget.focus();\n this.firstResultEl = undefined;\n unsub();\n resolve();\n }\n });\n });\n }\n}\n","import {\n containsSections,\n type ItemSectionTagName,\n} from './item-layout-sections';\n\nexport interface ItemLayoutConfig {\n children: HTMLCollection;\n display: ItemDisplayLayout;\n density: ItemDisplayDensity;\n imageSize: ItemDisplayImageSize;\n}\n\nexport type ItemDisplayBasicLayout = 'list' | 'grid';\nexport type ItemDisplayLayout = ItemDisplayBasicLayout | 'table';\nexport type ItemDisplayDensity = 'comfortable' | 'normal' | 'compact';\nexport type ItemDisplayImageSize = 'large' | 'small' | 'icon' | 'none';\nexport type ItemTarget = '_self' | '_blank' | '_parent' | '_top';\n\nfunction getDisplayClass(display: ItemDisplayLayout) {\n switch (display) {\n case 'grid':\n return 'display-grid';\n case 'table':\n return 'display-table';\n default:\n return 'display-list';\n }\n}\n\nfunction getDensityClass(density: ItemDisplayDensity) {\n switch (density) {\n case 'comfortable':\n return 'density-comfortable';\n case 'compact':\n return 'density-compact';\n default:\n return 'density-normal';\n }\n}\n\nfunction getImageClass(image: ItemDisplayImageSize) {\n switch (image) {\n case 'large':\n return 'image-large';\n case 'small':\n return 'image-small';\n case 'none':\n return 'image-none';\n default:\n return 'image-icon';\n }\n}\n\nexport function getItemListDisplayClasses(\n display: ItemDisplayLayout,\n density: ItemDisplayDensity,\n image: ItemDisplayImageSize,\n isLoading: boolean,\n isAppLoading: boolean\n) {\n const classes = getItemDisplayClasses(display, density, image);\n\n if (isLoading) {\n classes.push('loading');\n }\n\n if (isAppLoading) {\n classes.push('placeholder');\n }\n return classes.join(' ');\n}\n\nexport function getItemDisplayClasses(\n display: ItemDisplayLayout,\n density: ItemDisplayDensity,\n image: ItemDisplayImageSize\n) {\n const classes = [\n getDisplayClass(display),\n getDensityClass(density),\n getImageClass(image),\n ];\n return classes;\n}\n\nfunction getSection(\n children: HTMLCollection,\n section: ItemSectionTagName\n): Element | undefined {\n return Array.from(children).find(\n (element) => element.tagName.toLowerCase() === section\n );\n}\n\nfunction getImageSizeFromSections(\n children: HTMLCollection\n): ItemDisplayImageSize | undefined {\n const imageSize = getSection(\n children,\n 'atomic-result-section-visual'\n )?.getAttribute('image-size');\n if (!imageSize) {\n return undefined;\n }\n return imageSize as ItemDisplayImageSize;\n}\n\nexport function getItemLayoutClasses(\n config: ItemLayoutConfig,\n HTMLContent?: string\n): string[] {\n const classes = getItemDisplayClasses(\n config.display,\n config.density,\n getImageSizeFromSections(config.children) ?? config.imageSize\n );\n if (\n HTMLContent\n ? containsSections(HTMLContent)\n : containsSections(config.children)\n ) {\n classes.push('with-sections');\n }\n return classes;\n}\n","import {\n getItemDisplayClasses as getItemDisplayClassesImport,\n getItemLayoutClasses,\n getItemListDisplayClasses as getItemListDisplayClassesImport,\n type ItemDisplayBasicLayout as ItemDisplayBasicLayoutImport,\n type ItemDisplayDensity as ItemDisplayDensityImport,\n type ItemDisplayImageSize as ItemDisplayImageSizeImport,\n type ItemDisplayLayout as ItemDisplayLayoutImport,\n type ItemTarget as ItemTargetImport,\n} from './item-layout-utils';\n\n/**\n * @deprecated Use only for Stencil components. For Lit components, import from `item-layout-utils.ts` instead.\n */\nexport type ItemDisplayBasicLayout = ItemDisplayBasicLayoutImport;\n\n/**\n * @deprecated Use only for Stencil components. For Lit components, import from `item-layout-utils.ts` instead.\n */\nexport type ItemDisplayDensity = ItemDisplayDensityImport;\n\n/**\n * @deprecated Use only for Stencil components. For Lit components, import from `item-layout-utils.ts` instead.\n */\nexport type ItemDisplayImageSize = ItemDisplayImageSizeImport;\n\n/**\n * @deprecated Use only for Stencil components. For Lit components, import from `item-layout-utils.ts` instead.\n */\nexport type ItemDisplayLayout = ItemDisplayLayoutImport;\n\n/**\n * @deprecated Use only for Stencil components. For Lit components, import from `item-layout-utils.ts` instead.\n */\nexport type ItemTarget = ItemTargetImport;\n\n/**\n * @deprecated Use only for Stencil components. For Lit components, import from `item-layout-utils.ts` instead.\n */\nexport const getItemDisplayClasses: typeof getItemDisplayClassesImport =\n getItemDisplayClassesImport;\n\n/**\n * @deprecated Use only for Stencil components. For Lit components, import from `item-layout-utils.ts` instead.\n */\nexport const getItemListDisplayClasses: typeof getItemListDisplayClassesImport =\n getItemListDisplayClassesImport;\n\n/**\n * @deprecated Use only for Stencil components. For Lit components, use `getItemLayoutClasses` with `ItemLayoutConfig` from `packages/atomic/src/components/common/layout/item-layout-utils.ts` instead.\n */\nexport class ItemLayout {\n private children: HTMLCollection;\n private density: ItemDisplayDensity;\n private imageSize: ItemDisplayImageSize;\n private display: ItemDisplayLayout;\n\n constructor(\n children: HTMLCollection,\n display: ItemDisplayLayout,\n density: ItemDisplayDensity,\n imageSize: ItemDisplayImageSize\n ) {\n this.children = children;\n this.display = display;\n this.density = density;\n this.imageSize = imageSize;\n }\n\n public getClasses(HTMLContent?: string) {\n return getItemLayoutClasses(\n {\n children: this.children,\n display: this.display,\n density: this.density,\n imageSize: this.imageSize,\n },\n HTMLContent\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"display-options.js","mappings":"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","names":["getItemListDisplayClasses","getItemListDisplayClassesImport"],"sources":["src/components/common/atomic-result-placeholder/stencil-placeholders.tsx","src/components/common/item-list/stencil-item-display-guard.tsx","src/components/common/template-provider/template-provider.ts","src/components/common/item-list/result-template-provider.ts","src/components/common/item-list/stencil-display-wrapper.tsx","src/components/common/item-list/stencil-item-list-common.tsx","src/components/common/layout/item-layout-utils.ts","src/components/common/layout/display-options.ts"],"sourcesContent":["// The Lit equivalent of this file is item-placeholders.ts. The Lit version doesn't include the placeholder guard.\nimport {FunctionalComponent, h} from '@stencil/core';\nimport {\n ItemDisplayDensity,\n ItemDisplayImageSize,\n ItemDisplayLayout,\n} from '../layout/display-options.js';\n\ninterface ResultPlaceholderProps {\n density: ItemDisplayDensity;\n imageSize: ItemDisplayImageSize;\n display: ItemDisplayLayout;\n numberOfPlaceholders: number;\n}\n\ninterface ResultPlaceholderGuardProps extends ResultPlaceholderProps {\n displayPlaceholders: boolean;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const ResultsPlaceholdersGuard: FunctionalComponent<\n ResultPlaceholderGuardProps\n> = (props) => {\n if (!props.displayPlaceholders) {\n return;\n }\n switch (props.display) {\n case 'table':\n return <TableDisplayResultsPlaceholder {...props} />;\n default:\n return <ResultsPlaceholder {...props} />;\n }\n};\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const ResultsPlaceholder: FunctionalComponent<ResultPlaceholderProps> = (\n props\n) => {\n return Array.from({length: props.numberOfPlaceholders}, (_, i) => (\n <atomic-result-placeholder\n key={`placeholder-${i}`}\n density={props.density}\n display={props.display || 'list'}\n imageSize={props.imageSize}\n ></atomic-result-placeholder>\n ));\n};\n\nconst TableDisplayResultsPlaceholder: FunctionalComponent<\n ResultPlaceholderProps\n> = (props) => {\n return (\n <atomic-result-table-placeholder\n density={props.density}\n imageSize={props.imageSize}\n rows={props.numberOfPlaceholders}\n ></atomic-result-table-placeholder>\n );\n};\n","import {FunctionalComponent, h, Fragment} from '@stencil/core';\n\ninterface ItemDisplayGuardProps {\n firstRequestExecuted: boolean;\n hasItems: boolean;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const ItemDisplayGuard: FunctionalComponent<ItemDisplayGuardProps> = (\n props,\n children\n) => {\n if (!props.hasItems || !props.firstRequestExecuted) {\n return;\n }\n\n return <Fragment>{...children}</Fragment>;\n};\n","import type {Template, TemplatesManager} from '@coveo/headless';\n\nexport interface TemplateElement<ItemType> extends HTMLElement {\n getTemplate(): Promise<Template<ItemType, DocumentFragment> | null>;\n}\n\nexport interface TemplateProviderProps<ItemType> {\n getResultTemplateRegistered(): boolean;\n setResultTemplateRegistered(value: boolean): void;\n getTemplateHasError(): boolean;\n setTemplateHasError(value: boolean): void;\n templateElements: TemplateElement<ItemType>[];\n includeDefaultTemplate: boolean;\n}\n\nexport abstract class TemplateProvider<ItemType> {\n private templateManager: TemplatesManager<\n ItemType,\n DocumentFragment,\n DocumentFragment\n >;\n\n protected abstract makeDefaultTemplate(): Template<\n ItemType,\n DocumentFragment,\n DocumentFragment\n >;\n\n constructor(\n private props: TemplateProviderProps<ItemType>,\n private buildManager: () => TemplatesManager<\n ItemType,\n DocumentFragment,\n DocumentFragment\n >\n ) {\n this.templateManager = this.buildManager();\n this.registerResultTemplates();\n }\n\n private async registerResultTemplates() {\n const customTemplates = await Promise.all(\n this.props.templateElements.map(async (resultTemplateElement) => {\n if (!('getTemplate' in resultTemplateElement)) {\n await customElements.whenDefined(\n (resultTemplateElement as HTMLElement).tagName.toLowerCase()\n );\n }\n\n const template = await resultTemplateElement.getTemplate();\n if (!template) {\n this.props.setTemplateHasError(true);\n }\n return template;\n })\n );\n\n const templates = (\n !customTemplates.length && this.props.includeDefaultTemplate\n ? [this.makeDefaultTemplate()]\n : []\n ).concat(\n customTemplates.filter((template) => template) as Template<\n ItemType,\n DocumentFragment,\n DocumentFragment\n >[]\n );\n\n this.templateManager.registerTemplates(...templates);\n this.props.setResultTemplateRegistered(true);\n }\n\n public getTemplateContent(item: ItemType) {\n return this.templateManager.selectTemplate(item)!;\n }\n\n public getLinkTemplateContent(item: ItemType) {\n return this.templateManager.selectLinkTemplate(item)!;\n }\n\n public getEmptyLinkTemplateContent() {\n return document.createDocumentFragment();\n }\n\n public get templatesRegistered() {\n return this.props.getResultTemplateRegistered();\n }\n\n public get hasError() {\n return this.props.getTemplateHasError();\n }\n}\n","import {\n buildResultTemplatesManager,\n type Result,\n type Template,\n} from '@coveo/headless';\nimport type {ItemTarget} from '@/src/components/common/layout/item-layout-utils';\nimport type {AnyBindings} from '../interface/bindings';\nimport {\n TemplateProvider,\n type TemplateProviderProps,\n} from '../template-provider/template-provider';\n\nexport class ResultTemplateProvider extends TemplateProvider<Result> {\n constructor(\n props: TemplateProviderProps<Result> & {bindings: AnyBindings},\n private gridCellLinkTarget?: ItemTarget\n ) {\n super(props, () => buildResultTemplatesManager(props.bindings.engine));\n }\n\n // TODO: Add JSX support for default template\n protected makeDefaultTemplate(): Template<\n Result,\n DocumentFragment,\n DocumentFragment\n > {\n const content = document.createDocumentFragment();\n const linkEl = document.createElement('atomic-result-link');\n content.appendChild(linkEl);\n\n const linkContent = document.createDocumentFragment();\n const linkMarkup = `\n <atomic-result-link>\n ${this.gridCellLinkTarget ? `<a slot=\"attributes\" target=\"${this.gridCellLinkTarget}\"></a>` : ''}\n </atomic-result-link>\n `;\n const linkTemplate = document.createElement('template');\n linkTemplate.innerHTML = linkMarkup.trim();\n linkContent.appendChild(linkTemplate.content);\n return {\n content,\n linkContent,\n conditions: [],\n };\n }\n}\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {ItemDisplayLayout} from '../layout/display-options.js';\n\ninterface DisplayWrapperProps {\n display: ItemDisplayLayout;\n listClasses: string;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const DisplayWrapper: FunctionalComponent<DisplayWrapperProps> = (\n {display, listClasses},\n children\n) => {\n if (display === 'table') {\n return <ListWrapper listClasses={listClasses}>{...children}</ListWrapper>;\n }\n\n return (\n <ListWrapper listClasses={listClasses}>\n <div class={`list-root ${listClasses}`} part=\"result-list\">\n {children}\n </div>\n </ListWrapper>\n );\n};\n\nconst ListWrapper: FunctionalComponent<\n Pick<DisplayWrapperProps, 'listClasses'>\n> = ({listClasses}, children) => {\n return <div class={`list-wrapper ${listClasses}`}>{...children}</div>;\n};\n","import {updateBreakpoints} from '../../../utils/replace-breakpoint-utils';\nimport {\n FocusTargetController,\n getFirstFocusableDescendant,\n} from '../../../utils/stencil-accessibility-utils';\nimport {defer, once} from '../../../utils/utils';\nimport {CommerceStore} from '../../commerce/atomic-commerce-interface/store';\nimport {CommerceRecommendationStore} from '../../commerce/atomic-commerce-recommendation-interface/store';\nimport {InsightStore} from '../../insight/atomic-insight-interface/store';\nimport {RecsStore} from '../../recommendations/atomic-recs-interface/store';\nimport {SearchStore} from '../../search/atomic-search-interface/store';\nimport {AnyItem} from './unfolded-item';\nimport {\n ItemDisplayDensity,\n ItemDisplayImageSize,\n} from '../layout/display-options';\n\nexport const resultComponentClass = 'result-component';\n\nexport type ItemRenderingFunction<SpecificResult extends AnyItem = AnyItem> =\n | ((\n result: SpecificResult,\n root: HTMLElement,\n linkContainer?: HTMLElement\n ) => string)\n | undefined;\n\nexport interface ItemListCommonProps {\n store:\n | CommerceStore\n | CommerceRecommendationStore\n | RecsStore\n | InsightStore\n | SearchStore;\n loadingFlag: string;\n host: HTMLElement;\n nextNewItemTarget: FocusTargetController;\n getCurrentNumberOfItems: () => number;\n getIsLoading: () => boolean;\n engineSubscribe: (cb: () => void) => () => void;\n}\n\nexport class ItemListCommon {\n private indexOfResultToFocus?: number;\n private firstResultEl?: HTMLElement;\n private updateBreakpointsOnce: () => void;\n\n constructor(private props: ItemListCommonProps) {\n this.props.store.setLoadingFlag(this.props.loadingFlag);\n this.props.store.state.resultList = this;\n this.updateBreakpointsOnce = once(() => updateBreakpoints(this.props.host));\n this.props.nextNewItemTarget.registerFocusCallback(() => {\n this.indexOfResultToFocus = undefined;\n });\n }\n\n public updateBreakpoints() {\n this.updateBreakpointsOnce();\n }\n\n public getResultId(\n uniqueIdOnResult: string,\n searchResponseId: string,\n density: ItemDisplayDensity,\n imageSize: ItemDisplayImageSize\n ) {\n return `${uniqueIdOnResult}${searchResponseId}${density}${imageSize}`;\n }\n\n public setNewResultRef(element: HTMLElement, resultIndex: number) {\n if (resultIndex === 0) {\n this.firstResultEl = element;\n }\n if (resultIndex !== this.indexOfResultToFocus) {\n return;\n }\n\n if (!element.children.length && !element.shadowRoot?.children.length) {\n return;\n }\n\n this.indexOfResultToFocus = undefined;\n const elementToFocus = getFirstFocusableDescendant(element) ?? element;\n this.props.nextNewItemTarget.setTarget(elementToFocus);\n }\n\n public focusOnNextNewResult() {\n this.indexOfResultToFocus = this.props.getCurrentNumberOfItems();\n this.props.nextNewItemTarget.focusOnNextTarget();\n }\n\n public async focusOnFirstResultAfterNextSearch() {\n await defer();\n return new Promise<void>((resolve) => {\n if (this.props.getIsLoading()) {\n this.firstResultEl = undefined;\n }\n\n const unsub = this.props.engineSubscribe(async () => {\n await defer();\n if (!this.props.getIsLoading() && this.firstResultEl) {\n const elementToFocus =\n getFirstFocusableDescendant(this.firstResultEl) ??\n this.firstResultEl;\n this.props.nextNewItemTarget.setTarget(elementToFocus);\n this.props.nextNewItemTarget.focus();\n this.firstResultEl = undefined;\n unsub();\n resolve();\n }\n });\n });\n }\n}\n","import {\n containsSections,\n type ItemSectionTagName,\n} from './item-layout-sections';\n\nexport interface ItemLayoutConfig {\n children: HTMLCollection;\n display: ItemDisplayLayout;\n density: ItemDisplayDensity;\n imageSize: ItemDisplayImageSize;\n}\n\nexport type ItemDisplayBasicLayout = 'list' | 'grid';\nexport type ItemDisplayLayout = ItemDisplayBasicLayout | 'table';\nexport type ItemDisplayDensity = 'comfortable' | 'normal' | 'compact';\nexport type ItemDisplayImageSize = 'large' | 'small' | 'icon' | 'none';\nexport type ItemTarget = '_self' | '_blank' | '_parent' | '_top';\n\nfunction getDisplayClass(display: ItemDisplayLayout) {\n switch (display) {\n case 'grid':\n return 'display-grid';\n case 'table':\n return 'display-table';\n default:\n return 'display-list';\n }\n}\n\nfunction getDensityClass(density: ItemDisplayDensity) {\n switch (density) {\n case 'comfortable':\n return 'density-comfortable';\n case 'compact':\n return 'density-compact';\n default:\n return 'density-normal';\n }\n}\n\nfunction getImageClass(image: ItemDisplayImageSize) {\n switch (image) {\n case 'large':\n return 'image-large';\n case 'small':\n return 'image-small';\n case 'none':\n return 'image-none';\n default:\n return 'image-icon';\n }\n}\n\nexport function getItemListDisplayClasses(\n display: ItemDisplayLayout,\n density: ItemDisplayDensity,\n image: ItemDisplayImageSize,\n isLoading: boolean,\n isAppLoading: boolean\n) {\n const classes = getItemDisplayClasses(display, density, image);\n\n if (isLoading) {\n classes.push('loading');\n }\n\n if (isAppLoading) {\n classes.push('placeholder');\n }\n return classes.join(' ');\n}\n\nexport function getItemDisplayClasses(\n display: ItemDisplayLayout,\n density: ItemDisplayDensity,\n image: ItemDisplayImageSize\n) {\n const classes = [\n getDisplayClass(display),\n getDensityClass(density),\n getImageClass(image),\n ];\n return classes;\n}\n\nfunction getSection(\n children: HTMLCollection,\n section: ItemSectionTagName\n): Element | undefined {\n return Array.from(children).find(\n (element) => element.tagName.toLowerCase() === section\n );\n}\n\nfunction getImageSizeFromSections(\n children: HTMLCollection\n): ItemDisplayImageSize | undefined {\n const imageSize = getSection(\n children,\n 'atomic-result-section-visual'\n )?.getAttribute('image-size');\n if (!imageSize) {\n return undefined;\n }\n return imageSize as ItemDisplayImageSize;\n}\n\nexport function getItemLayoutClasses(\n config: ItemLayoutConfig,\n HTMLContent?: string\n): string[] {\n const classes = getItemDisplayClasses(\n config.display,\n config.density,\n getImageSizeFromSections(config.children) ?? config.imageSize\n );\n if (\n HTMLContent\n ? containsSections(HTMLContent)\n : containsSections(config.children)\n ) {\n classes.push('with-sections');\n }\n return classes;\n}\n","import {\n getItemDisplayClasses as getItemDisplayClassesImport,\n getItemLayoutClasses,\n getItemListDisplayClasses as getItemListDisplayClassesImport,\n type ItemDisplayBasicLayout as ItemDisplayBasicLayoutImport,\n type ItemDisplayDensity as ItemDisplayDensityImport,\n type ItemDisplayImageSize as ItemDisplayImageSizeImport,\n type ItemDisplayLayout as ItemDisplayLayoutImport,\n type ItemTarget as ItemTargetImport,\n} from './item-layout-utils';\n\n/**\n * @deprecated Use only for Stencil components. For Lit components, import from `item-layout-utils.ts` instead.\n */\nexport type ItemDisplayBasicLayout = ItemDisplayBasicLayoutImport;\n\n/**\n * @deprecated Use only for Stencil components. For Lit components, import from `item-layout-utils.ts` instead.\n */\nexport type ItemDisplayDensity = ItemDisplayDensityImport;\n\n/**\n * @deprecated Use only for Stencil components. For Lit components, import from `item-layout-utils.ts` instead.\n */\nexport type ItemDisplayImageSize = ItemDisplayImageSizeImport;\n\n/**\n * @deprecated Use only for Stencil components. For Lit components, import from `item-layout-utils.ts` instead.\n */\nexport type ItemDisplayLayout = ItemDisplayLayoutImport;\n\n/**\n * @deprecated Use only for Stencil components. For Lit components, import from `item-layout-utils.ts` instead.\n */\nexport type ItemTarget = ItemTargetImport;\n\n/**\n * @deprecated Use only for Stencil components. For Lit components, import from `item-layout-utils.ts` instead.\n */\nexport const getItemDisplayClasses: typeof getItemDisplayClassesImport =\n getItemDisplayClassesImport;\n\n/**\n * @deprecated Use only for Stencil components. For Lit components, import from `item-layout-utils.ts` instead.\n */\nexport const getItemListDisplayClasses: typeof getItemListDisplayClassesImport =\n getItemListDisplayClassesImport;\n\n/**\n * @deprecated Use only for Stencil components. For Lit components, use `getItemLayoutClasses` with `ItemLayoutConfig` from `packages/atomic/src/components/common/layout/item-layout-utils.ts` instead.\n */\nexport class ItemLayout {\n private children: HTMLCollection;\n private density: ItemDisplayDensity;\n private imageSize: ItemDisplayImageSize;\n private display: ItemDisplayLayout;\n\n constructor(\n children: HTMLCollection,\n display: ItemDisplayLayout,\n density: ItemDisplayDensity,\n imageSize: ItemDisplayImageSize\n ) {\n this.children = children;\n this.display = display;\n this.density = density;\n this.imageSize = imageSize;\n }\n\n public getClasses(HTMLContent?: string) {\n return getItemLayoutClasses(\n {\n children: this.children,\n display: this.display,\n density: this.density,\n imageSize: this.imageSize,\n },\n HTMLContent\n );\n }\n}\n"],"version":3}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"event-utils.js","mappings":"SAEgB,gBAAgB,
|
|
1
|
+
{"file":"event-utils.js","mappings":"SAEgB,gBAAgB,CAAgB,IAAY,EAAE,MAAU;IACtE,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE;QAC3B,MAAM;;QAEN,OAAO,EAAE,IAAI;;QAEb,UAAU,EAAE,IAAI;;QAEhB,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;AACL,CAAC;SAce,UAAU,CACxB,OAAoB,EACpB,IAAY,EACZ,QAA4C,EAC5C,OAA2C;IAE3C,MAAM,SAAS,GAAkB,CAAC,GAAU;QAC1C,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,QAAQ,KAAK,QAAQ;cACxB,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;cACvC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;KACjC,CAAC;IACF,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACrD;;;;","names":[],"sources":["src/utils/event-utils.ts"],"sourcesContent":["import {promiseTimeout} from './promise-utils';\n\nexport function buildCustomEvent<T = undefined>(name: string, detail?: T) {\n return new CustomEvent(name, {\n detail,\n // Event will bubble up the DOM until it is caught\n bubbles: true,\n // Allows to verify if event is caught (cancelled). If it's not caught, it won't be initialized.\n cancelable: true,\n // Allows to compose Atomic components inside one another, event will go across DOM/Shadow DOM\n composed: true,\n });\n}\n\nexport function listenOnce<K extends keyof HTMLElementEventMap>(\n element: HTMLElement,\n type: K,\n listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => void,\n options?: boolean | AddEventListenerOptions\n): void;\nexport function listenOnce(\n element: HTMLElement,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n): void;\nexport function listenOnce(\n element: HTMLElement,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n): void {\n const _listener: EventListener = (evt: Event) => {\n element.removeEventListener(type, _listener, options);\n typeof listener === 'object'\n ? listener.handleEvent.call(element, evt)\n : listener.call(element, evt);\n };\n element.addEventListener(type, _listener, options);\n}\n\nexport function eventPromise(\n element: HTMLElement,\n type: string,\n timeoutMs: number = 0\n): Promise<Event> {\n let promise = new Promise<Event>((resolve) => {\n listenOnce(element, type, (e) => {\n resolve(e);\n });\n });\n\n if (timeoutMs > 0) {\n promise = promiseTimeout(promise, timeoutMs);\n }\n\n return promise;\n}\n"],"version":3}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"index.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAca,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,WAAmB,EAAE,UAAkB;QACjD,KAAK,CACH,QAAQ,WAAW,sCAAsC,UAAU,YAAY,CAChF,CAAC;KACH;;;ACfH,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;SAIpC,gBAAgB,CAAI,OAAgB,EAAE,UAAkB;IACtE,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM;QACpC,MAAM,KAAK,GAAG,gBAAgB,CAC5B,oBAAoB,EACpB,CAAC,IAAO;YACN,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;SACtB,CACF,CAAC;QACF,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAE7B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE;YACjC,MAAM,CACJ,IAAI,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,CACnE,CAAC;SACH;KACF,CAAC,CAAC;AACL;;ACrBA;;;;;;;;;;SAUgB,mBAAmB,CAAoB,OAAgB;IACrE,OAAO,gBAAgB,CAAI,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACxD;;ACZA;;;;;;;;;;;;SAYgB,cAAc,CAAoB,OAAgB;IAChE,OAAO,WAAW,CAAI,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACnD;;ACVA;;;;;;;;;MASa,iCAAiC,GAAG,CAI/C,KAA+D,EAC/D,OAAoB,EACpB,2BAA0E,iBAAiB;IAE3F,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,IAAI,CAAC,gBAAgB,EAAE;QACrB,MAAM,IAAI,KAAK,CACb,QAAQ,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,gFAAgF,wBAAwB,CAAC,IAAI,CACjJ,IAAI,CACL,EAAE,CACJ,CAAC;KACH;IACD,KAAK,2CAA2C,CAC9C,gBAAgB,EAChB,OAAO,EACP,KAAK,CACN,CAAC;AACJ,EAAE;AAEF,MAAM,iBAAiB,GAAG;IACxB,mBAAmB;IACnB,2BAA2B;IAC3B,4BAA4B;CACpB,CAAC;AAEX,MAAM,mBAAmB,GAAG,CAAC,SAAkB,KAC7C,gBAAgB,IAAK,SAAwB;IAC5C,SAAwB,CAAC,cAAc,YAAY,OAAO,CAAC;AAE9D,MAAM,2CAA2C,GAAG,OAIlD,gBAAyB,EACzB,OAAoB,EACpB,KAA+D;IAE/D,MAAM,cAAc,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1E,IAAI,mBAAmB,CAAC,gBAAgB,CAAC,EAAE;QACzC,MAAM,gBAAgB,CAAC,cAAc,CAAC;KACvC;SAAM,IAAI,kBAAkB,IAAI,gBAAgB,EAAE;QACjD,MAAO,gBAAuC,CAAC,gBAAgB,EAAE,CAAC;KACnE;IACD,OAAO,CAAC,aAAa,CACnB,gBAAgB,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAC/D,CAAC;AACJ,CAAC;;AChED;;;;;;SAMgB,iBAAiB,CAAC,EAA8B;IAC9D,OAAO,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AAC7C,CAAC;AAED;;;;;;SAMgB,eAAe,CAAC,EAA8B;IAC5D,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AAC9C;;;;","names":[],"sources":["src/components/common/item-list/context/item-context-controller.ts","src/components/common/item-list/fetch-item-context.ts","src/components/commerce/product-template-component-utils/context/fetch-product-context.ts","src/components/commerce/product-template-component-utils/context/stencil-product-template-decorators.tsx","src/components/common/suggestions/suggestions-events.ts","src/components/common/suggestions/suggestions-utils.ts"],"sourcesContent":["import type {LitElement, ReactiveController, ReactiveControllerHost} from 'lit';\nimport type {InitializableComponent} from '@/src/decorators/types.js';\nimport {buildCustomEvent} from '@/src/utils/event-utils';\n\ntype LitElementWithError = Omit<\n Pick<InitializableComponent, 'error'>,\n 'error'\n> &\n LitElement & {\n error: Error | null;\n };\n\nconst itemContextEventName = 'atomic/resolveResult';\n\nexport class MissingParentError extends Error {\n constructor(elementName: string, parentName: string) {\n super(\n `The \"${elementName}\" element must be the child of an \"${parentName}\" element.`\n );\n }\n}\n\nfunction extractFolded<T = Record<string, unknown>>(\n item: Record<string, unknown>,\n returnFolded: boolean\n): T {\n if (returnFolded) {\n if ('children' in item) {\n return item as T;\n } else {\n return {children: [], result: item} as T;\n }\n }\n\n if ('children' in item && 'result' in item) {\n return item.result as T;\n }\n return item as T;\n}\n\n/**\n * A reactive controller that manages item context data from parent components.\n * Handles fetching item data via custom events and manages error states.\n */\nexport class ItemContextController<T = Record<string, unknown>>\n implements ReactiveController\n{\n private host: ReactiveControllerHost & LitElementWithError;\n private parentName: string;\n private folded: boolean;\n private _item: T | null = null;\n private _error: MissingParentError | null = null;\n\n constructor(\n host: ReactiveControllerHost & LitElementWithError,\n options: {parentName?: string; folded?: boolean} = {}\n ) {\n this.host = host;\n this.parentName = options.parentName ?? 'atomic-result';\n this.folded = options.folded ?? false;\n host.addController(this);\n }\n\n get item(): T | null {\n return this._error ? null : this._item;\n }\n\n get error(): MissingParentError | null {\n return this._error;\n }\n\n get hasError(): boolean {\n return this._error !== null;\n }\n\n hostConnected(): void {\n this._resolveItemContext();\n }\n\n private _resolveItemContext(): void {\n const event = buildCustomEvent(\n itemContextEventName,\n (item: Record<string, unknown>) => {\n this._item = extractFolded<T>(item, this.folded);\n this._error = null;\n this.host.error = null;\n this.host.requestUpdate();\n }\n );\n\n const canceled = this.host.dispatchEvent(event);\n if (canceled) {\n const elementName = (this.host as Element).nodeName.toLowerCase();\n this._error = new MissingParentError(elementName, this.parentName);\n this._item = null;\n this.host.error = this._error;\n this.host.requestUpdate();\n }\n }\n}\n\ntype ItemContextEventHandler<T> = (item: T) => void;\nexport type ItemContextEvent<T> = CustomEvent<ItemContextEventHandler<T>>;\n","import {closest} from '../../../utils/dom-utils.js';\nimport {buildCustomEvent} from '../../../utils/event-utils.js';\nimport {MissingParentError} from './context/item-context-controller.js';\n\nconst itemContextEventName = 'atomic/resolveResult';\n\ntype ItemContextEventHandler<T> = (item: T) => void;\n\nexport function fetchItemContext<T>(element: Element, parentName: string) {\n return new Promise<T>((resolve, reject) => {\n const event = buildCustomEvent<ItemContextEventHandler<T>>(\n itemContextEventName,\n (item: T) => {\n return resolve(item);\n }\n );\n element.dispatchEvent(event);\n\n if (!closest(element, parentName)) {\n reject(\n new MissingParentError(element.nodeName.toLowerCase(), parentName)\n );\n }\n });\n}\n","import type {Product} from '@coveo/headless/commerce';\nimport {fetchItemContext} from '@/src/components/common/item-list/fetch-item-context';\n\n/**\n * Retrieves `Product` on a rendered `atomic-product`.\n *\n * This utility function is useful for building custom product template elements, see [Create a Product List](https://docs.coveo.com/en/atomic/latest/cc-search/create-custom-components/native-components/#custom-product-template-component-example) for more information.\n *\n * You should use the utility function in the [`connectedCallback` lifecycle method](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements#using_the_lifecycle_callbacks).\n *\n * @param element - The element that the event is dispatched to, which must be the child of a rendered `atomic-product`.\n * @returns A promise that resolves on initialization of the parent `atomic-product` element, or rejects when there is no parent `atomic-product` element.\n */\nexport function fetchProductContext<T extends Product>(element: Element) {\n return fetchItemContext<T>(element, 'atomic-product');\n}\n","import {Product} from '@coveo/headless/commerce';\nimport {itemContext} from '@/src/components/common/item-list/stencil-item-decorators';\n\n/**\n * Retrieves `Product` on a rendered `atomic-product`.\n *\n * This method is useful for building custom product template elements, see [Create a Product List](https://docs.coveo.com/en/atomic/latest/cc-search/create-custom-components/native-components/#custom-product-template-component-example) for more information.\n *\n * You should use the method in the [`connectedCallback` lifecycle method](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements#using_the_lifecycle_callbacks).\n *\n * @param element - The element that the event is dispatched to, which must be the child of a rendered \"atomic-product\".\n * @returns A promise that resolves on initialization of the parent \"atomic-product\" element, or rejects when there is no parent \"atomic-product\" element.\n *\n * @deprecated should only be used for Stencil components. For Lit components, use `fetchProductContext` from \\@/src/components/commerce/product-template-component-utils/context/fetch-product-context.ts\n */\nexport function productContext<T extends Product>(element: Element) {\n return itemContext<T>(element, 'atomic-product');\n}\n","import type {HTMLStencilElement} from '@stencil/core/internal';\nimport type {LitElement} from 'lit';\nimport {closest} from '../../../utils/dom-utils';\nimport {buildCustomEvent} from '../../../utils/event-utils';\nimport type {AnyBindings} from '../interface/bindings';\nimport type {SearchBoxSuggestionsEvent} from './suggestions-types';\n\n/**\n * Dispatches an event which retrieves the `SearchBoxSuggestionsBindings` on a configured parent search box.\n *\n * @param event Event sent from the registered query suggestions to the parent search box\n * @param element Element on which to dispatch the event, which must be the child of a configured search box\n * @param allowedSearchBoxElements Optional array of allowed search box element selectors\n *\n * @throws Error if the element is not a child of an allowed search box element\n */\nexport const dispatchSearchBoxSuggestionsEvent = <\n SearchBoxController,\n Bindings = AnyBindings,\n>(\n event: SearchBoxSuggestionsEvent<SearchBoxController, Bindings>,\n element: HTMLElement,\n allowedSearchBoxElements: readonly (typeof searchBoxElements)[number][] = searchBoxElements\n) => {\n const interfaceElement = closest(element, searchBoxElements.join(', '));\n if (!interfaceElement) {\n throw new Error(\n `The \"${element.nodeName.toLowerCase()}\" component was not handled, as it is not a child of the following elements: ${allowedSearchBoxElements.join(\n ', '\n )}`\n );\n }\n void dispatchSearchBoxSuggestionsEventEventually(\n interfaceElement,\n element,\n event\n );\n};\n\nconst searchBoxElements = [\n 'atomic-search-box',\n 'atomic-insight-search-box',\n 'atomic-commerce-search-box',\n] as const;\n\nconst isLitElementLoosely = (candidate: unknown): candidate is LitElement =>\n 'updateComplete' in (candidate as LitElement) &&\n (candidate as LitElement).updateComplete instanceof Promise;\n\nconst dispatchSearchBoxSuggestionsEventEventually = async <\n SearchBoxController,\n Bindings = AnyBindings,\n>(\n interfaceElement: Element,\n element: HTMLElement,\n event: SearchBoxSuggestionsEvent<SearchBoxController, Bindings>\n) => {\n await customElements.whenDefined(interfaceElement.nodeName.toLowerCase());\n if (isLitElementLoosely(interfaceElement)) {\n await interfaceElement.updateComplete;\n } else if ('componentOnReady' in interfaceElement) {\n await (interfaceElement as HTMLStencilElement).componentOnReady();\n }\n element.dispatchEvent(\n buildCustomEvent('atomic/searchBoxSuggestion/register', event)\n );\n};\n","import type {SearchBoxSuggestionElement} from './suggestions-types';\n\n/**\n * Checks if a search box suggestion element has no query.\n *\n * @param el - The search box suggestion element to check\n * @returns True if the element has no query or the query is whitespace-only\n */\nexport function elementHasNoQuery(el: SearchBoxSuggestionElement): boolean {\n return !el.query || el.query.trim() === '';\n}\n\n/**\n * Checks if a search box suggestion element has a query.\n *\n * @param el - The search box suggestion element to check\n * @returns True if the element has a non-empty, non-whitespace query\n */\nexport function elementHasQuery(el: SearchBoxSuggestionElement): boolean {\n return !!el.query && el.query.trim() !== '';\n}\n"],"version":3}
|
|
1
|
+
{"file":"index.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAca,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,WAAmB,EAAE,UAAkB;QACjD,KAAK,CACH,QAAQ,WAAW,sCAAsC,UAAU,YAAY,CAChF,CAAC;KACH;;;ACfH,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;SAIpC,gBAAgB,CAAI,OAAgB,EAAE,UAAkB;IACtE,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM;QACpC,MAAM,KAAK,GAAG,gBAAgB,CAC5B,oBAAoB,EACpB,CAAC,IAAO;YACN,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;SACtB,CACF,CAAC;QACF,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAE7B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE;YACjC,MAAM,CACJ,IAAI,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,CACnE,CAAC;SACH;KACF,CAAC,CAAC;AACL;;ACrBA;;;;;;;;;;SAUgB,mBAAmB,CAAoB,OAAgB;IACrE,OAAO,gBAAgB,CAAI,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACxD;;ACZA;;;;;;;;;;;;SAYgB,cAAc,CAAoB,OAAgB;IAChE,OAAO,WAAW,CAAI,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACnD;;ACVA;;;;;;;;;MASa,iCAAiC,GAAG,CAI/C,KAA+D,EAC/D,OAAoB,EACpB,2BAA0E,iBAAiB;IAE3F,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,IAAI,CAAC,gBAAgB,EAAE;QACrB,MAAM,IAAI,KAAK,CACb,QAAQ,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,gFAAgF,wBAAwB,CAAC,IAAI,CACjJ,IAAI,CACL,EAAE,CACJ,CAAC;KACH;IACD,KAAK,2CAA2C,CAC9C,gBAAgB,EAChB,OAAO,EACP,KAAK,CACN,CAAC;AACJ,EAAE;AAEF,MAAM,iBAAiB,GAAG;IACxB,mBAAmB;IACnB,2BAA2B;IAC3B,4BAA4B;CACpB,CAAC;AAEX,MAAM,mBAAmB,GAAG,CAAC,SAAkB,KAC7C,gBAAgB,IAAK,SAAwB;IAC5C,SAAwB,CAAC,cAAc,YAAY,OAAO,CAAC;AAE9D,MAAM,2CAA2C,GAAG,OAIlD,gBAAyB,EACzB,OAAoB,EACpB,KAA+D;IAE/D,MAAM,cAAc,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1E,IAAI,mBAAmB,CAAC,gBAAgB,CAAC,EAAE;QACzC,MAAM,gBAAgB,CAAC,cAAc,CAAC;KACvC;SAAM,IAAI,kBAAkB,IAAI,gBAAgB,EAAE;QACjD,MAAO,gBAAuC,CAAC,gBAAgB,EAAE,CAAC;KACnE;IACD,OAAO,CAAC,aAAa,CACnB,gBAAgB,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAC/D,CAAC;AACJ,CAAC;;AChED;;;;;;SAMgB,iBAAiB,CAAC,EAA8B;IAC9D,OAAO,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AAC7C,CAAC;AAED;;;;;;SAMgB,eAAe,CAAC,EAA8B;IAC5D,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AAC9C;;;;","names":[],"sources":["src/components/common/item-list/context/item-context-controller.ts","src/components/common/item-list/fetch-item-context.ts","src/components/commerce/product-template-component-utils/context/fetch-product-context.ts","src/components/commerce/product-template-component-utils/context/stencil-product-template-decorators.tsx","src/components/common/suggestions/suggestions-events.ts","src/components/common/suggestions/suggestions-utils.ts"],"sourcesContent":["import type {LitElement, ReactiveController, ReactiveControllerHost} from 'lit';\nimport type {InitializableComponent} from '@/src/decorators/types.js';\nimport {buildCustomEvent} from '@/src/utils/event-utils';\n\ntype LitElementWithError = Omit<\n Pick<InitializableComponent, 'error'>,\n 'error'\n> &\n LitElement & {\n error: Error | null;\n };\n\nconst itemContextEventName = 'atomic/resolveResult';\n\nexport class MissingParentError extends Error {\n constructor(elementName: string, parentName: string) {\n super(\n `The \"${elementName}\" element must be the child of an \"${parentName}\" element.`\n );\n }\n}\n\nfunction extractFolded<T = Record<string, unknown>>(\n item: Record<string, unknown>,\n returnFolded: boolean\n): T {\n if (returnFolded) {\n if ('children' in item) {\n return item as T;\n } else {\n return {children: [], result: item} as T;\n }\n }\n\n if ('children' in item && 'result' in item) {\n return item.result as T;\n }\n return item as T;\n}\n\n/**\n * A reactive controller that manages item context data from parent components.\n * Handles fetching item data via custom events and manages error states.\n */\nexport class ItemContextController<T = Record<string, unknown>>\n implements ReactiveController\n{\n private host: ReactiveControllerHost & LitElementWithError;\n private parentName: string;\n private folded: boolean;\n private _item: T | null = null;\n private _error: MissingParentError | null = null;\n\n constructor(\n host: ReactiveControllerHost & LitElementWithError,\n options: {parentName?: string; folded?: boolean} = {}\n ) {\n this.host = host;\n this.parentName = options.parentName ?? 'atomic-result';\n this.folded = options.folded ?? false;\n host.addController(this);\n }\n\n get item(): T | null {\n return this._error ? null : this._item;\n }\n\n get error(): MissingParentError | null {\n return this._error;\n }\n\n get hasError(): boolean {\n return this._error !== null;\n }\n\n hostConnected(): void {\n this._resolveItemContext();\n }\n\n private _resolveItemContext(): void {\n const event = buildCustomEvent(\n itemContextEventName,\n (item: Record<string, unknown>) => {\n this._item = extractFolded<T>(item, this.folded);\n this._error = null;\n this.host.error = null;\n this.host.requestUpdate();\n }\n );\n\n const canceled = this.host.dispatchEvent(event);\n if (canceled) {\n const elementName = (this.host as Element).nodeName.toLowerCase();\n this._error = new MissingParentError(elementName, this.parentName);\n this._item = null;\n this.host.error = this._error;\n this.host.requestUpdate();\n }\n }\n}\n\ntype ItemContextEventHandler<T> = (item: T) => void;\nexport type ItemContextEvent<T> = CustomEvent<ItemContextEventHandler<T>>;\n","import {closest} from '../../../utils/dom-utils.js';\nimport {buildCustomEvent} from '../../../utils/event-utils.js';\nimport {MissingParentError} from './context/item-context-controller.js';\n\nconst itemContextEventName = 'atomic/resolveResult';\n\ntype ItemContextEventHandler<T> = (item: T) => void;\n\nexport function fetchItemContext<T>(element: Element, parentName: string) {\n return new Promise<T>((resolve, reject) => {\n const event = buildCustomEvent<ItemContextEventHandler<T>>(\n itemContextEventName,\n (item: T) => {\n return resolve(item);\n }\n );\n element.dispatchEvent(event);\n\n if (!closest(element, parentName)) {\n reject(\n new MissingParentError(element.nodeName.toLowerCase(), parentName)\n );\n }\n });\n}\n","import type {Product} from '@coveo/headless/commerce';\nimport {fetchItemContext} from '@/src/components/common/item-list/fetch-item-context';\n\n/**\n * Retrieves `Product` on a rendered `atomic-product`.\n *\n * This utility function is useful for building custom product template elements, see [Create a Product List](https://docs.coveo.com/en/atomic/latest/cc-search/create-custom-components/native-components/#custom-product-template-component-example) for more information.\n *\n * You should use the utility function in the [`connectedCallback` lifecycle method](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements#using_the_lifecycle_callbacks).\n *\n * @param element - The element that the event is dispatched to, which must be the child of a rendered `atomic-product`.\n * @returns A promise that resolves on initialization of the parent `atomic-product` element, or rejects when there is no parent `atomic-product` element.\n */\nexport function fetchProductContext<T extends Product>(element: Element) {\n return fetchItemContext<T>(element, 'atomic-product');\n}\n","import {Product} from '@coveo/headless/commerce';\nimport {itemContext} from '@/src/components/common/item-list/stencil-item-decorators';\n\n/**\n * Retrieves `Product` on a rendered `atomic-product`.\n *\n * This method is useful for building custom product template elements, see [Create a Product List](https://docs.coveo.com/en/atomic/latest/cc-search/create-custom-components/native-components/#custom-product-template-component-example) for more information.\n *\n * You should use the method in the [`connectedCallback` lifecycle method](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements#using_the_lifecycle_callbacks).\n *\n * @param element - The element that the event is dispatched to, which must be the child of a rendered \"atomic-product\".\n * @returns A promise that resolves on initialization of the parent \"atomic-product\" element, or rejects when there is no parent \"atomic-product\" element.\n *\n * @deprecated should only be used for Stencil components. For Lit components, use `fetchProductContext` from \\@/src/components/commerce/product-template-component-utils/context/fetch-product-context.ts\n */\nexport function productContext<T extends Product>(element: Element) {\n return itemContext<T>(element, 'atomic-product');\n}\n","import type {HTMLStencilElement} from '@stencil/core/internal';\nimport type {LitElement} from 'lit';\nimport {closest} from '../../../utils/dom-utils';\nimport {buildCustomEvent} from '../../../utils/event-utils';\nimport type {AnyBindings} from '../interface/bindings';\nimport type {SearchBoxSuggestionsEvent} from './suggestions-types';\n\n/**\n * Dispatches an event which retrieves the `SearchBoxSuggestionsBindings` on a configured parent search box.\n *\n * @param event Event sent from the registered query suggestions to the parent search box\n * @param element Element on which to dispatch the event, which must be the child of a configured search box\n * @param allowedSearchBoxElements Optional array of allowed search box element selectors\n *\n * @throws Error if the element is not a child of an allowed search box element\n */\nexport const dispatchSearchBoxSuggestionsEvent = <\n SearchBoxController,\n Bindings = AnyBindings,\n>(\n event: SearchBoxSuggestionsEvent<SearchBoxController, Bindings>,\n element: HTMLElement,\n allowedSearchBoxElements: readonly (typeof searchBoxElements)[number][] = searchBoxElements\n) => {\n const interfaceElement = closest(element, searchBoxElements.join(', '));\n if (!interfaceElement) {\n throw new Error(\n `The \"${element.nodeName.toLowerCase()}\" component was not handled, as it is not a child of the following elements: ${allowedSearchBoxElements.join(\n ', '\n )}`\n );\n }\n void dispatchSearchBoxSuggestionsEventEventually(\n interfaceElement,\n element,\n event\n );\n};\n\nconst searchBoxElements = [\n 'atomic-search-box',\n 'atomic-insight-search-box',\n 'atomic-commerce-search-box',\n] as const;\n\nconst isLitElementLoosely = (candidate: unknown): candidate is LitElement =>\n 'updateComplete' in (candidate as LitElement) &&\n (candidate as LitElement).updateComplete instanceof Promise;\n\nconst dispatchSearchBoxSuggestionsEventEventually = async <\n SearchBoxController,\n Bindings = AnyBindings,\n>(\n interfaceElement: Element,\n element: HTMLElement,\n event: SearchBoxSuggestionsEvent<SearchBoxController, Bindings>\n) => {\n await customElements.whenDefined(interfaceElement.nodeName.toLowerCase());\n if (isLitElementLoosely(interfaceElement)) {\n await interfaceElement.updateComplete;\n } else if ('componentOnReady' in interfaceElement) {\n await (interfaceElement as HTMLStencilElement).componentOnReady();\n }\n element.dispatchEvent(\n buildCustomEvent('atomic/searchBoxSuggestion/register', event)\n );\n};\n","import type {SearchBoxSuggestionElement} from './suggestions-types';\n\n/**\n * Checks if a search box suggestion element has no query.\n *\n * @param el - The search box suggestion element to check\n * @returns True if the element has no query or the query is whitespace-only\n */\nexport function elementHasNoQuery(el: SearchBoxSuggestionElement): boolean {\n return !el.query || el.query.trim() === '';\n}\n\n/**\n * Checks if a search box suggestion element has a query.\n *\n * @param el - The search box suggestion element to check\n * @returns True if the element has a non-empty, non-whitespace query\n */\nexport function elementHasQuery(el: SearchBoxSuggestionElement): boolean {\n return !!el.query && el.query.trim() !== '';\n}\n"],"version":3}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import '@coveo/bueno';
|
|
2
2
|
import { getElement } from '@stencil/core/internal/client';
|
|
3
|
-
import {
|
|
3
|
+
import { e as camelToKebab, k as kebabToCamel } from './utils.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @deprecated Use the `mapProperty` decorator instead.
|