@coveo/atomic 3.31.2-pre.1c8be76f9e → 3.31.2-pre.214bb00aea
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 +4 -0
- package/dist/atomic/components/_index.js +2 -0
- package/dist/atomic/components/analytics-config.js +1 -1
- package/dist/atomic/components/atomic-aria-live.d.ts +11 -0
- package/dist/atomic/components/atomic-aria-live.js +8 -0
- package/dist/atomic/components/atomic-aria-live.js.map +1 -0
- package/dist/atomic/components/atomic-aria-live2.js +87 -0
- package/dist/atomic/components/atomic-aria-live2.js.map +1 -0
- package/dist/atomic/components/atomic-category-facet.js +1 -1
- package/dist/atomic/components/atomic-facet.js +1 -1
- package/dist/atomic/components/atomic-format-currency.js +1 -1
- package/dist/atomic/components/atomic-format-number.js +1 -1
- package/dist/atomic/components/atomic-format-unit.js +1 -1
- package/dist/atomic/components/atomic-numeric-facet.js +1 -1
- package/dist/atomic/components/atomic-product-field-condition.d.ts +11 -0
- package/dist/atomic/components/atomic-product-field-condition.js +131 -0
- package/dist/atomic/components/atomic-product-field-condition.js.map +1 -0
- package/dist/atomic/components/atomic-quickview-modal2.js +1 -1
- package/dist/atomic/components/atomic-quickview.js +1 -1
- package/dist/atomic/components/atomic-result-children.js +1 -1
- package/dist/atomic/components/atomic-result-fields-list.js +1 -1
- package/dist/atomic/components/atomic-result-link.js +1 -1
- package/dist/atomic/components/atomic-result-list.js +1 -1
- package/dist/atomic/components/atomic-search-box-query-suggestions2.js +1 -1
- package/dist/atomic/components/atomic-search-box-recent-queries2.js +1 -1
- package/dist/atomic/components/atomic-search-interface.js +7 -1
- package/dist/atomic/components/atomic-search-interface.js.map +1 -1
- package/dist/atomic/components/atomic-smart-snippet-feedback-modal2.js +2 -2
- package/dist/atomic/components/atomic-sort-dropdown.js +2 -2
- package/dist/atomic/components/atomic-sort-expression.js +1 -1
- package/dist/atomic/components/atomic-tab-manager.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-commerce-breadbox/atomic-commerce-breadbox.tw.css.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-commerce-interface/atomic-commerce-interface.js +26 -15
- package/dist/atomic/components/components/commerce/atomic-commerce-interface/atomic-commerce-interface.tw.css.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-commerce-layout/atomic-commerce-layout.tw.css.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-commerce-load-more-products/atomic-commerce-load-more-products.tw.css.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-commerce-product-list/atomic-commerce-product-list.tw.css.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-commerce-query-summary/atomic-commerce-query-summary.tw.css.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-commerce-recommendation-interface/atomic-commerce-recommendation-interface.js +35 -16
- package/dist/atomic/components/components/commerce/atomic-commerce-recommendation-interface/atomic-commerce-recommendation-interface.tw.css.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-commerce-recommendation-list/atomic-commerce-recommendation-list.tw.css.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-commerce-refine-modal/atomic-commerce-refine-modal.tw.css.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-commerce-refine-toggle/atomic-commerce-refine-toggle.tw.css.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-commerce-search-box/atomic-commerce-search-box.js +0 -3
- package/dist/atomic/components/components/commerce/atomic-commerce-search-box/atomic-commerce-search-box.tw.css.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-commerce-sort-dropdown/atomic-commerce-sort-dropdown.tw.css.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-product/atomic-product.tw.css.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-product-children/atomic-product-children.tw.css.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-product-description/atomic-product-description.tw.css.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-product-excerpt/atomic-product-excerpt.tw.css.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-product-link/atomic-product-link.tw.css.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-product-multi-value-text/atomic-product-multi-value-text.tw.css.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-product-price/atomic-product-price.tw.css.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-product-template/atomic-product-template.js +0 -1
- package/dist/atomic/components/components/commerce/index.js +0 -1
- package/dist/atomic/components/components/commerce/lazy-index.js +0 -1
- package/dist/atomic/components/components/common/atomic-icon/atomic-icon.tw.css.js +1 -1
- package/dist/atomic/components/components/common/facets/facet-common.tw.css.js +1 -1
- package/dist/atomic/components/components/common/facets/facet-search/facet-search.tw.css.js +1 -1
- package/dist/atomic/components/components/common/facets/facet-value-box/facet-value-box.tw.css.js +1 -1
- package/dist/atomic/components/components/common/facets/facet-value-checkbox/facet-value-checkbox.tw.css.js +1 -1
- package/dist/atomic/components/components/common/facets/facet-value-exclude/facet-value-exclude.tw.css.js +1 -1
- package/dist/atomic/components/components/common/index.js +0 -1
- package/dist/atomic/components/components/common/interface/interface-common.js +95 -0
- package/dist/atomic/components/components/common/lazy-index.js +0 -1
- package/dist/atomic/components/components/common/refine-modal/refine-modal-common.tw.css.js +1 -1
- package/dist/atomic/components/debounce-utils.js +34 -1
- package/dist/atomic/components/debounce-utils.js.map +1 -1
- package/dist/atomic/components/global/environment.js +1 -1
- package/dist/atomic/components/global/tailwind.default.css.js +1 -1
- package/dist/atomic/components/index.js.map +1 -1
- package/dist/atomic/components/stencil-accessibility-utils.js.map +1 -1
- package/dist/atomic/components/themes/accessible.css.js +1 -1
- package/dist/atomic/components/themes/coveo.css.js +1 -1
- package/dist/atomic/components/utils/coveo.tw.css.js +1 -1
- package/dist/atomic/components/utils/tailwind-utilities/aspect-square.tw.css.js +1 -1
- package/dist/atomic/components/utils/tailwind-utilities/components.tw.css.js +1 -1
- package/dist/atomic/components/utils/tailwind-utilities/hide-scrollbar.tw.css.js +1 -1
- package/dist/atomic/components/utils/tailwind-utilities/link-style.tw.css.js +1 -1
- package/dist/atomic/components/utils/tailwind-utilities/set-font-size.tw.css.js +1 -1
- package/dist/atomic/components/utils/tailwind-utilities/utilities.tw.css.js +1 -1
- package/dist/atomic/components/utils/tailwind.global.tw.css.js +1 -1
- package/dist/atomic/{p-1b329f85.entry.js → p-0674783d.entry.js} +2 -2
- package/dist/atomic/{p-731f82ed.entry.js → p-0ed0e8b8.entry.js} +2 -2
- package/dist/atomic/{p-6f8ae3d2.entry.js → p-1176959c.entry.js} +2 -2
- package/dist/atomic/{p-b1f7ac63.entry.js → p-11dd759c.entry.js} +2 -2
- package/dist/atomic/{p-0af927f0.entry.js → p-1b491649.entry.js} +2 -2
- package/dist/atomic/{p-8434625a.entry.js → p-1e0f2e91.entry.js} +2 -2
- package/dist/atomic/{p-7a07530d.entry.js → p-25f8b8d8.entry.js} +2 -2
- package/dist/atomic/{p-91d52cad.entry.js → p-29c272bb.entry.js} +2 -2
- package/dist/atomic/p-37b7705c.js +2 -0
- package/dist/atomic/p-37b7705c.js.map +1 -0
- package/dist/atomic/{p-f9bfd18b.entry.js → p-391c26ba.entry.js} +2 -2
- package/dist/atomic/{p-b573855a.entry.js → p-39aaf514.entry.js} +2 -2
- package/dist/atomic/p-3f2442d3.entry.js +2 -0
- package/dist/atomic/p-3f2442d3.entry.js.map +1 -0
- package/dist/atomic/{p-e406cacd.entry.js → p-494c57a0.entry.js} +2 -2
- package/dist/atomic/{p-89721f11.entry.js → p-5b888121.entry.js} +2 -2
- package/dist/atomic/{p-bf5d5c79.entry.js → p-5fc9f751.entry.js} +2 -2
- package/dist/atomic/{p-16aba904.entry.js → p-68026af1.entry.js} +2 -2
- package/dist/atomic/{p-c0025d4c.entry.js → p-716e9e1d.entry.js} +2 -2
- package/dist/atomic/p-96a6f84f.js.map +1 -1
- package/dist/atomic/{p-4c5702ba.entry.js → p-a0445771.entry.js} +2 -2
- package/dist/atomic/p-a0b3c6e2.entry.js +2 -0
- package/dist/atomic/p-a0b3c6e2.entry.js.map +1 -0
- package/dist/atomic/{p-53bcc515.js → p-acc4d5de.js} +2 -2
- package/dist/atomic/{p-0b9cd281.entry.js → p-b043958c.entry.js} +2 -2
- package/dist/atomic/{p-5cb01552.js → p-beb5a809.js} +2 -2
- package/dist/atomic/{p-7a5d346b.entry.js → p-c8d47706.entry.js} +2 -2
- package/dist/atomic/{p-5f64bbe0.entry.js → p-e2560da8.entry.js} +2 -2
- package/dist/atomic/{p-0f5ae66e.entry.js → p-e44ba87e.entry.js} +2 -2
- package/dist/atomic/p-e790d557.entry.js +2 -0
- package/dist/atomic/p-efd2bb5f.entry.js +2 -0
- package/dist/atomic/{p-9e77e09f.entry.js → p-f8fbac35.entry.js} +2 -2
- package/dist/atomic/{p-6638ca39.entry.js → p-fc73190d.entry.js} +2 -2
- package/dist/cjs/_loader.cjs.js +1 -1
- package/dist/cjs/{analytics-config-aabaf235.js → analytics-config-0d371fdf.js} +2 -2
- package/dist/cjs/{analytics-config-aabaf235.js.map → analytics-config-0d371fdf.js.map} +1 -1
- package/dist/cjs/{atomic-relevance-inspector.cjs.entry.js → atomic-aria-live_2.cjs.entry.js} +68 -1
- package/dist/cjs/atomic-aria-live_2.cjs.entry.js.map +1 -0
- package/dist/cjs/atomic-category-facet.cjs.entry.js +1 -1
- package/dist/cjs/atomic-facet.cjs.entry.js +1 -1
- package/dist/cjs/atomic-format-currency.cjs.entry.js +1 -1
- package/dist/cjs/atomic-format-number.cjs.entry.js +1 -1
- package/dist/cjs/atomic-format-unit.cjs.entry.js +1 -1
- package/dist/cjs/atomic-generated-answer.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-generated-answer.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-interface.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-search-box.cjs.entry.js +2 -2
- package/dist/cjs/atomic-numeric-facet.cjs.entry.js +1 -1
- package/dist/cjs/atomic-product-field-condition.cjs.entry.js +119 -0
- package/dist/cjs/atomic-product-field-condition.cjs.entry.js.map +1 -0
- package/dist/cjs/atomic-quickview-modal.cjs.entry.js +1 -1
- package/dist/cjs/atomic-quickview.cjs.entry.js +1 -1
- package/dist/cjs/atomic-recs-interface.cjs.entry.js +1 -1
- package/dist/cjs/atomic-result-children.cjs.entry.js +1 -1
- package/dist/cjs/atomic-result-fields-list.cjs.entry.js +1 -1
- package/dist/cjs/atomic-result-link.cjs.entry.js +1 -1
- package/dist/cjs/atomic-result-list.cjs.entry.js +1 -1
- package/dist/cjs/atomic-search-box-query-suggestions_2.cjs.entry.js +2 -2
- package/dist/cjs/atomic-search-box.cjs.entry.js +2 -2
- package/dist/cjs/atomic-search-interface.cjs.entry.js +1 -1
- package/dist/cjs/atomic-smart-snippet-feedback-modal.cjs.entry.js +2 -2
- package/dist/cjs/atomic-sort-dropdown.cjs.entry.js +2 -2
- package/dist/cjs/atomic-sort-expression.cjs.entry.js +1 -1
- package/dist/cjs/atomic-tab-manager.cjs.entry.js +1 -1
- package/dist/cjs/atomic.cjs.js +1 -1
- package/dist/cjs/debounce-utils-e014935f.js +49 -0
- package/dist/cjs/debounce-utils-e014935f.js.map +1 -0
- package/dist/cjs/index-757bc886.js +8 -4
- package/dist/cjs/stencil-accessibility-utils-aa4c9f6c.js.map +1 -1
- package/dist/cjs/{stencil-suggestion-manager-5fa3ac70.js → stencil-suggestion-manager-6f778cf0.js} +2 -2
- package/dist/cjs/{stencil-suggestion-manager-5fa3ac70.js.map → stencil-suggestion-manager-6f778cf0.js.map} +1 -1
- package/dist/cjs/version.cjs.js +2 -2
- package/dist/esm/_loader.js +1 -1
- package/dist/esm/{analytics-config-8adc1641.js → analytics-config-1f342b1e.js} +2 -2
- package/dist/esm/{analytics-config-8adc1641.js.map → analytics-config-1f342b1e.js.map} +1 -1
- package/dist/esm/{atomic-relevance-inspector.entry.js → atomic-aria-live_2.entry.js} +69 -3
- package/dist/esm/atomic-aria-live_2.entry.js.map +1 -0
- package/dist/esm/atomic-category-facet.entry.js +1 -1
- package/dist/esm/atomic-facet.entry.js +1 -1
- package/dist/esm/atomic-format-currency.entry.js +1 -1
- package/dist/esm/atomic-format-number.entry.js +1 -1
- package/dist/esm/atomic-format-unit.entry.js +1 -1
- package/dist/esm/atomic-generated-answer.entry.js +1 -1
- package/dist/esm/atomic-insight-generated-answer.entry.js +1 -1
- package/dist/esm/atomic-insight-interface.entry.js +1 -1
- package/dist/esm/atomic-insight-search-box.entry.js +2 -2
- package/dist/esm/atomic-numeric-facet.entry.js +1 -1
- package/dist/esm/atomic-product-field-condition.entry.js +115 -0
- package/dist/esm/atomic-product-field-condition.entry.js.map +1 -0
- package/dist/esm/atomic-quickview-modal.entry.js +1 -1
- package/dist/esm/atomic-quickview.entry.js +1 -1
- package/dist/esm/atomic-recs-interface.entry.js +1 -1
- package/dist/esm/atomic-result-children.entry.js +1 -1
- package/dist/esm/atomic-result-fields-list.entry.js +1 -1
- package/dist/esm/atomic-result-link.entry.js +1 -1
- package/dist/esm/atomic-result-list.entry.js +1 -1
- package/dist/esm/atomic-search-box-query-suggestions_2.entry.js +2 -2
- package/dist/esm/atomic-search-box.entry.js +2 -2
- package/dist/esm/atomic-search-interface.entry.js +1 -1
- package/dist/esm/atomic-smart-snippet-feedback-modal.entry.js +2 -2
- package/dist/esm/atomic-sort-dropdown.entry.js +2 -2
- package/dist/esm/atomic-sort-expression.entry.js +1 -1
- package/dist/esm/atomic-tab-manager.entry.js +1 -1
- package/dist/esm/atomic.js +1 -1
- package/dist/esm/debounce-utils-efa015c0.js +46 -0
- package/dist/esm/{debounce-utils-8619dece.js.map → debounce-utils-efa015c0.js.map} +1 -1
- package/dist/esm/index-3f35faca.js +8 -4
- package/dist/esm/stencil-accessibility-utils-bc273be5.js.map +1 -1
- package/dist/esm/{stencil-suggestion-manager-f52c6e39.js → stencil-suggestion-manager-91706623.js} +2 -2
- package/dist/esm/{stencil-suggestion-manager-f52c6e39.js.map → stencil-suggestion-manager-91706623.js.map} +1 -1
- package/dist/esm/version.js +2 -2
- package/dist/types/components/commerce/atomic-commerce-interface/atomic-commerce-interface.d.ts +4 -3
- package/dist/types/components/commerce/atomic-commerce-recommendation-interface/atomic-commerce-recommendation-interface.d.ts +6 -5
- package/dist/types/components/commerce/atomic-commerce-search-box/atomic-commerce-search-box.d.ts +0 -3
- package/dist/types/components/commerce/atomic-product-field-condition/atomic-product-field-condition.d.ts +13 -24
- package/dist/types/components/commerce/atomic-product-template/atomic-product-template.d.ts +0 -1
- package/dist/types/components/commerce/index.d.ts +0 -1
- package/dist/types/components/common/index.d.ts +0 -1
- package/dist/types/components/common/interface/i18n.d.ts +1 -1
- package/dist/types/components/common/interface/{interface-controller.d.ts → interface-common.d.ts} +11 -14
- package/dist/types/components/search/atomic-search-interface/atomic-aria-live.d.ts +23 -0
- package/dist/types/components.d.ts +96 -0
- package/dist/types/utils/accessibility-utils.d.ts +1 -2
- package/dist/types/utils/stencil-accessibility-utils.d.ts +1 -2
- package/docs/atomic-docs.json +197 -31
- package/package.json +3 -3
- package/dist/atomic/components/components/commerce/atomic-product-field-condition/atomic-product-field-condition.js +0 -70
- package/dist/atomic/components/components/common/atomic-aria-live/atomic-aria-live.js +0 -102
- package/dist/atomic/components/components/common/interface/interface-controller.js +0 -89
- package/dist/atomic/p-01c91b69.js +0 -2
- package/dist/atomic/p-01c91b69.js.map +0 -1
- package/dist/atomic/p-271cf67e.entry.js +0 -2
- package/dist/atomic/p-271cf67e.entry.js.map +0 -1
- package/dist/atomic/p-306161d1.entry.js +0 -2
- package/dist/atomic/p-f0e861c5.entry.js +0 -2
- package/dist/cjs/atomic-relevance-inspector.cjs.entry.js.map +0 -1
- package/dist/cjs/debounce-utils-d26bcad4.js +0 -15
- package/dist/cjs/debounce-utils-d26bcad4.js.map +0 -1
- package/dist/esm/atomic-relevance-inspector.entry.js.map +0 -1
- package/dist/esm/debounce-utils-8619dece.js +0 -13
- package/dist/types/components/common/atomic-aria-live/atomic-aria-live.d.ts +0 -38
- /package/dist/atomic/{p-1b329f85.entry.js.map → p-0674783d.entry.js.map} +0 -0
- /package/dist/atomic/{p-731f82ed.entry.js.map → p-0ed0e8b8.entry.js.map} +0 -0
- /package/dist/atomic/{p-6f8ae3d2.entry.js.map → p-1176959c.entry.js.map} +0 -0
- /package/dist/atomic/{p-b1f7ac63.entry.js.map → p-11dd759c.entry.js.map} +0 -0
- /package/dist/atomic/{p-0af927f0.entry.js.map → p-1b491649.entry.js.map} +0 -0
- /package/dist/atomic/{p-8434625a.entry.js.map → p-1e0f2e91.entry.js.map} +0 -0
- /package/dist/atomic/{p-7a07530d.entry.js.map → p-25f8b8d8.entry.js.map} +0 -0
- /package/dist/atomic/{p-91d52cad.entry.js.map → p-29c272bb.entry.js.map} +0 -0
- /package/dist/atomic/{p-f9bfd18b.entry.js.map → p-391c26ba.entry.js.map} +0 -0
- /package/dist/atomic/{p-b573855a.entry.js.map → p-39aaf514.entry.js.map} +0 -0
- /package/dist/atomic/{p-e406cacd.entry.js.map → p-494c57a0.entry.js.map} +0 -0
- /package/dist/atomic/{p-89721f11.entry.js.map → p-5b888121.entry.js.map} +0 -0
- /package/dist/atomic/{p-bf5d5c79.entry.js.map → p-5fc9f751.entry.js.map} +0 -0
- /package/dist/atomic/{p-16aba904.entry.js.map → p-68026af1.entry.js.map} +0 -0
- /package/dist/atomic/{p-c0025d4c.entry.js.map → p-716e9e1d.entry.js.map} +0 -0
- /package/dist/atomic/{p-4c5702ba.entry.js.map → p-a0445771.entry.js.map} +0 -0
- /package/dist/atomic/{p-53bcc515.js.map → p-acc4d5de.js.map} +0 -0
- /package/dist/atomic/{p-0b9cd281.entry.js.map → p-b043958c.entry.js.map} +0 -0
- /package/dist/atomic/{p-5cb01552.js.map → p-beb5a809.js.map} +0 -0
- /package/dist/atomic/{p-7a5d346b.entry.js.map → p-c8d47706.entry.js.map} +0 -0
- /package/dist/atomic/{p-5f64bbe0.entry.js.map → p-e2560da8.entry.js.map} +0 -0
- /package/dist/atomic/{p-0f5ae66e.entry.js.map → p-e44ba87e.entry.js.map} +0 -0
- /package/dist/atomic/{p-f0e861c5.entry.js.map → p-e790d557.entry.js.map} +0 -0
- /package/dist/atomic/{p-306161d1.entry.js.map → p-efd2bb5f.entry.js.map} +0 -0
- /package/dist/atomic/{p-9e77e09f.entry.js.map → p-f8fbac35.entry.js.map} +0 -0
- /package/dist/atomic/{p-6638ca39.entry.js.map → p-fc73190d.entry.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"stencil-suggestion-manager-f52c6e39.js","mappings":"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","names":[],"sources":["src/components/common/search-box/stencil-search-box-wrapper.tsx","src/components/common/search-box/stencil-text-area-clear-button.tsx","src/components/common/search-box/stencil-search-text-area.tsx","src/utils/promise-utils.ts","src/components/common/suggestions/stencil-suggestion-manager.ts"],"sourcesContent":["import {FunctionalComponent, h} from '@stencil/core';\n\ninterface Props {\n disabled: boolean;\n onFocusout?: (event: FocusEvent) => void;\n}\n\nexport const SearchBoxWrapper: FunctionalComponent<Props> = (\n props,\n children\n) => {\n const getClasses = () => {\n const baseClasses =\n 'flex bg-background w-full border border-neutral rounded-md focus-within:ring-3 absolute top-0 left-0';\n const focusClasses = props.disabled\n ? 'focus-within:border-disabled focus-within:ring-neutral'\n : 'focus-within:border-primary focus-within:ring-ring-primary';\n\n return [baseClasses, focusClasses].join(' ');\n };\n\n return (\n <div part=\"wrapper\" class={getClasses()} onFocusout={props.onFocusout}>\n {children}\n </div>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\nimport ClearSlim from '../../../images/clear-slim.svg';\nimport {AnyBindings} from '../interface/bindings';\nimport {Button, StencilButtonProps} from '../stencil-button';\n\ninterface Props extends Partial<StencilButtonProps> {\n bindings: AnyBindings;\n inputRef: HTMLInputElement | HTMLTextAreaElement | null;\n}\n\nexport const TextAreaClearButton: FunctionalComponent<Props> = ({\n inputRef,\n bindings,\n onClick,\n ...defaultButtonProps\n}) => (\n <div\n part=\"clear-button-wrapper\"\n class=\"ml-2 flex items-center justify-center py-2\"\n >\n <Button\n style=\"text-transparent\"\n part=\"clear-button\"\n class=\"text-neutral-dark flex h-8 w-8 shrink-0 items-center justify-center\"\n onClick={() => {\n onClick?.();\n inputRef?.focus();\n }}\n ariaLabel={bindings.i18n.t('clear')}\n {...defaultButtonProps}\n >\n <atomic-icon\n part=\"clear-icon\"\n icon={ClearSlim}\n class=\"h-4 w-4\"\n ></atomic-icon>\n </Button>\n </div>\n);\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {JSXBase} from '@stencil/core/internal';\nimport {AnyBindings} from '../interface/bindings';\nimport {TextAreaClearButton} from './stencil-text-area-clear-button';\n\ninterface Props extends JSXBase.TextareaHTMLAttributes<HTMLTextAreaElement> {\n textAreaRef: HTMLTextAreaElement;\n loading: boolean;\n bindings: AnyBindings;\n value: string;\n ariaLabel: string;\n onClear(): void;\n popup?: {\n id: string;\n activeDescendant: string;\n expanded: boolean;\n hasSuggestions: boolean;\n };\n}\n\nfunction getPopupAttributes(props: Required<Props>['popup']) {\n return {\n autocomplete: 'off',\n autocapitalize: 'off',\n autocorrect: 'off',\n ...(props.activeDescendant && {\n 'aria-activedescendant': props.activeDescendant,\n }),\n 'aria-autocomplete': 'both',\n 'aria-haspopup': 'true',\n 'aria-controls': props.id,\n };\n}\n\nfunction syncTextWithReplica(elem: HTMLTextAreaElement, value?: string) {\n const parent = elem?.parentNode as HTMLElement;\n if (!parent) {\n return;\n }\n if (elem.value === '\\n') {\n return;\n }\n parent.dataset.replicatedValue = value ?? elem.value;\n}\n\nfunction resetReplicaText(elem: HTMLTextAreaElement) {\n const parent = elem?.parentNode as HTMLElement;\n if (parent) {\n delete parent.dataset.replicatedValue;\n }\n}\n\nfunction collapseTextArea(elem: HTMLTextAreaElement) {\n const parent = elem?.parentNode as HTMLElement;\n if (parent) {\n parent.classList.remove('expanded');\n }\n}\n\nfunction expandTextArea(elem: HTMLTextAreaElement) {\n const parent = elem?.parentNode as HTMLElement;\n if (parent) {\n parent.classList.add('expanded');\n }\n}\n\nexport const SearchTextArea: FunctionalComponent<Props> = ({\n textAreaRef,\n loading,\n bindings,\n onInput,\n onFocus,\n onBlur,\n onChange,\n onKeyDown,\n onKeyUp,\n value,\n ariaLabel,\n onClear,\n popup,\n ...defaultInputProps\n}) => (\n <div class=\"flex grow overflow-hidden\">\n <div part=\"textarea-expander\" class=\"grid grow overflow-hidden\">\n <textarea\n part=\"textarea\"\n aria-label={ariaLabel}\n placeholder={bindings.i18n.t('search')}\n class=\"placeholder-neutral-dark\"\n rows={1}\n onInput={(e) => {\n onInput?.(e);\n syncTextWithReplica(textAreaRef);\n }}\n onKeyDown={(e) => {\n syncTextWithReplica(textAreaRef);\n if (e.key === 'Enter') {\n if (e.shiftKey) {\n return;\n }\n e.preventDefault();\n }\n onKeyDown?.(e);\n }}\n onKeyUp={(e) => {\n onKeyUp?.(e);\n if (e.key === 'Enter') {\n e.preventDefault();\n return;\n }\n syncTextWithReplica(textAreaRef);\n }}\n onBlur={(e) => {\n onBlur?.(e);\n collapseTextArea(textAreaRef);\n syncTextWithReplica(textAreaRef);\n }}\n onChange={(e) => {\n onChange?.(e);\n syncTextWithReplica(textAreaRef);\n }}\n onFocus={(e) => {\n onFocus?.(e);\n const target = e.target as HTMLTextAreaElement;\n syncTextWithReplica(textAreaRef ?? target);\n expandTextArea(textAreaRef ?? target);\n }}\n autocomplete=\"off\"\n {...(popup && getPopupAttributes(popup))}\n {...defaultInputProps}\n value={value}\n />\n </div>\n\n {loading && (\n <div class=\"searchbox-button-wrapper ml-2 flex items-center justify-center\">\n <span\n part=\"loading\"\n class=\"loading mr-2 grid h-5 w-5 animate-spin place-items-center rounded-full bg-linear-to-r\"\n ></span>\n </div>\n )}\n {!loading && value && (\n <TextAreaClearButton\n inputRef={textAreaRef}\n bindings={bindings}\n onClick={() => {\n onClear();\n resetReplicaText(textAreaRef);\n }}\n />\n )}\n </div>\n);\n","export function promiseTimeout<T>(prom: T | Promise<T>, ms: number) {\n let id: NodeJS.Timeout;\n const timeout = new Promise((_, reject) => {\n id = setTimeout(() => {\n reject(new Error('Promise timed out.'));\n }, ms);\n });\n return Promise.race([prom, timeout]).then(() => {\n clearTimeout(id);\n });\n}\n","import {isNullOrUndefined} from '@coveo/bueno';\nimport {forceUpdate} from '@stencil/core';\nimport DOMPurify from 'dompurify';\nimport {debounce} from '../../../utils/debounce-utils';\nimport {promiseTimeout} from '../../../utils/promise-utils';\nimport {\n elementHasNoQuery,\n elementHasQuery,\n type SearchBoxSuggestionElement,\n type SearchBoxSuggestionsBindings,\n type SearchBoxSuggestionsEvent,\n} from './suggestions-common';\n\n/**\n * List of suggestions that will be displayed along other lists (e.g recent queries) when the search box's input is selected.\n */\nexport interface SearchBoxSuggestions {\n /**\n * The search box will sort the position of suggestions using this value, the lowest value being first.\n * By default, the DOM position will be used.\n */\n position: number;\n /**\n * Whether the suggestions should be listed in the right or left panel. By default, the suggestions are listed in the right panel.\n */\n panel?: 'left' | 'right';\n /**\n * Method that returns the list of elements which will be rendered in the list of suggestions.\n */\n renderItems(): SearchBoxSuggestionElement[];\n /**\n * Hook called when the user changes the search box's input value. This can lead to all the query suggestions being updated.\n */\n onInput?(): Promise<unknown>;\n /**\n * Hook called when the current suggested query changes as the user navigates the list of suggestions.\n * This is used for instant results, which are rendered based on the current suggested query.\n * @param q The new current suggested query.\n */\n onSuggestedQueryChange?(q: string): Promise<unknown>;\n}\n\ninterface SearchBoxProps {\n getSearchBoxValue: () => string;\n updateQuery: (suggestedQuery: string) => void;\n getSuggestionTimeout: () => number;\n getNumberOfSuggestionsToDisplay: () => number;\n getSuggestionDelay: () => number;\n getLogger: () => Pick<typeof console, 'warn'>;\n getHost: () => HTMLElement;\n}\n\nexport class SuggestionManager<SearchBoxController> {\n public suggestions: SearchBoxSuggestions[] = [];\n public leftSuggestionElements: SearchBoxSuggestionElement[] = [];\n public rightSuggestionElements: SearchBoxSuggestionElement[] = [];\n public leftPanel: HTMLElement | undefined = undefined;\n public rightPanel: HTMLElement | undefined = undefined;\n public triggerSuggestions: () => Promise<void>;\n public activeDescendant = '';\n public suggestedQuery = '';\n public keyboardActiveDescendant = '';\n\n private queryDataAttribute = 'data-query';\n private suggestionEvents: SearchBoxSuggestionsEvent<SearchBoxController>[] =\n [];\n\n private previousActiveDescendantElement: HTMLElement | null = null;\n private leftSuggestions: SearchBoxSuggestions[] = [];\n private rightSuggestions: SearchBoxSuggestions[] = [];\n\n constructor(private ownerSearchBoxProps: SearchBoxProps) {\n this.triggerSuggestions = debounce(\n () => this.executeQuerySuggestion(),\n this.ownerSearchBoxProps.getSuggestionDelay()\n );\n }\n\n public get partialSuggestionBindings(): Pick<\n SearchBoxSuggestionsBindings<SearchBoxController>,\n | 'suggestedQuery'\n | 'clearSuggestions'\n | 'triggerSuggestions'\n | 'getSuggestions'\n | 'getSuggestionElements'\n > {\n return {\n suggestedQuery: () => this.suggestedQuery,\n clearSuggestions: () => this.clearSuggestions(),\n triggerSuggestions: () => this.triggerSuggestions(),\n getSuggestions: () => this.suggestions,\n getSuggestionElements: () => this.allSuggestionElements,\n };\n }\n\n public get activeDescendantElement(): HTMLElement | null {\n if (!this.hasActiveDescendant) {\n return null;\n }\n\n return (\n this.leftPanel?.querySelector(`#${this.activeDescendant}`) ||\n this.rightPanel?.querySelector(`#${this.activeDescendant}`) ||\n null\n );\n }\n\n public onSubmit() {\n this.clickOnActiveElement();\n this.clearSuggestions();\n }\n\n public updateActiveDescendant(id = '') {\n this.activeDescendant = id;\n forceUpdate(this.ownerSearchBoxProps.getHost());\n }\n\n public updateKeyboardActiveDescendant(id = '') {\n this.keyboardActiveDescendant = id;\n }\n\n public clickOnActiveElement() {\n this.activeDescendantElement?.click();\n this.updateActiveDescendant();\n }\n\n public isRightPanelInFocus() {\n if (\n isNullOrUndefined(this.panelInFocus) ||\n isNullOrUndefined(this.rightPanel)\n ) {\n return false;\n }\n\n return this.panelInFocus === this.rightPanel;\n }\n\n public initializeSuggestions(\n bindings: SearchBoxSuggestionsBindings<SearchBoxController>\n ) {\n this.suggestions = this.suggestionEvents.map((event) => event(bindings));\n }\n\n public registerSuggestionsFromEvent(\n event: CustomEvent<SearchBoxSuggestionsEvent<SearchBoxController>>,\n bindings: SearchBoxSuggestionsBindings<SearchBoxController>\n ) {\n event.preventDefault();\n event.stopPropagation();\n this.suggestionEvents.push(event.detail);\n this.suggestions.push(event.detail(bindings));\n }\n\n public registerSuggestions(suggestions: SearchBoxSuggestions) {\n this.suggestions.push(suggestions);\n }\n\n public get isDoubleList() {\n return Boolean(\n this.leftSuggestionElements.length && this.rightSuggestionElements.length\n );\n }\n\n public focusPanel(side: 'left' | 'right') {\n const panel = side === 'left' ? this.leftPanel : this.rightPanel;\n\n if (this.panelInFocus === panel) {\n return;\n }\n if (panel?.firstElementChild) {\n const panelHasActiveDescendant =\n this.previousActiveDescendantElement &&\n panel.contains(this.previousActiveDescendantElement);\n const newValue = panelHasActiveDescendant\n ? this.previousActiveDescendantElement!\n : (panel.firstElementChild as HTMLElement);\n this.updateDescendants(newValue.id);\n }\n }\n\n public clearSuggestions() {\n this.clearSuggestionElements();\n this.updateActiveDescendant();\n }\n\n public async focusNextValue() {\n if (!this.hasSuggestions || !this.nextOrFirstValue) {\n return;\n }\n\n await this.focusValue(this.nextOrFirstValue as HTMLElement);\n }\n\n public async focusValue(value: HTMLElement) {\n this.updateKeyboardActiveDescendant(value.id);\n this.updateActiveDescendant(value.id);\n this.scrollActiveDescendantIntoView();\n await this.updateQueryFromSuggestion();\n }\n\n public async onSuggestionMouseOver(\n item: SearchBoxSuggestionElement,\n side: 'left' | 'right',\n id: string\n ) {\n const thisPanel = side === 'left' ? this.leftPanel : this.rightPanel;\n // When hovering, always reset the keyboard active descendant\n this.updateKeyboardActiveDescendant();\n if (this.panelInFocus === thisPanel) {\n this.updateActiveDescendant(id);\n } else {\n this.updateDescendants(id);\n }\n if (item.query) {\n await this.updateSuggestedQuery(item.query);\n }\n }\n\n public async onSuggestionClick(item: SearchBoxSuggestionElement, e: Event) {\n if (item.query) {\n this.clearSuggestions();\n await this.updateOwnerSearchboxQuery(item.query);\n }\n item.onSelect?.(e);\n }\n\n public get hasSuggestions() {\n return !!this.allSuggestionElements.length;\n }\n\n public get allSuggestionElements() {\n return [...this.leftSuggestionElements, ...this.rightSuggestionElements];\n }\n\n public async focusPreviousValue() {\n if (this.firstValue === this.activeDescendantElement) {\n this.updateKeyboardActiveDescendant();\n this.updateActiveDescendant();\n return;\n }\n\n if (!this.hasSuggestions || !this.previousOrLastValue) {\n return;\n }\n\n await this.focusValue(this.previousOrLastValue as HTMLElement);\n }\n\n public get hasActiveDescendant() {\n return this.activeDescendant !== '';\n }\n\n private async executeQuerySuggestion() {\n this.updateActiveDescendant();\n const settled = await Promise.allSettled(\n this.suggestions.map((suggestion) =>\n promiseTimeout(\n suggestion.onInput ? suggestion.onInput() : Promise.resolve(),\n this.ownerSearchBoxProps.getSuggestionTimeout()\n )\n )\n );\n\n const fulfilledSuggestions: SearchBoxSuggestions[] = [];\n\n settled.forEach((prom, j) => {\n if (prom.status === 'fulfilled') {\n fulfilledSuggestions.push(this.suggestions[j]);\n } else {\n this.ownerSearchBoxProps\n .getLogger()\n .warn(\n 'Some query suggestions are not being shown because the promise timed out.'\n );\n }\n });\n\n const splitSuggestions = (side: 'left' | 'right', isDefault = false) =>\n fulfilledSuggestions\n .filter(\n (suggestion) =>\n suggestion.panel === side || (!suggestion.panel && isDefault)\n )\n .sort(this.sortSuggestions);\n\n this.leftSuggestions = splitSuggestions('left', true);\n this.leftSuggestionElements = this.getAndFilterLeftSuggestionElements();\n\n this.rightSuggestions = splitSuggestions('right');\n this.rightSuggestionElements = this.getSuggestionElements(\n this.rightSuggestions\n );\n\n const defaultSuggestedQuery =\n this.allSuggestionElements.find(elementHasQuery)?.query || '';\n\n await this.updateSuggestedQuery(defaultSuggestedQuery);\n }\n\n private get lastValue() {\n return this.panelInFocus?.lastElementChild;\n }\n\n private get previousOrLastValue() {\n if (!this.hasActiveDescendant) {\n return this.lastValue?.firstChild;\n }\n\n const parentOfActiveDescendant =\n this.activeDescendantElement?.parentElement;\n return (\n parentOfActiveDescendant?.previousElementSibling?.firstChild ||\n this.firstValue?.firstChild\n );\n }\n\n private sortSuggestions(a: SearchBoxSuggestions, b: SearchBoxSuggestions) {\n return a.position - b.position;\n }\n\n private get nextOrFirstValue() {\n if (!this.hasActiveDescendant) {\n return this.firstValue?.firstChild;\n }\n\n const parentOfActiveDescendant =\n this.activeDescendantElement?.parentElement;\n return (\n parentOfActiveDescendant?.nextElementSibling?.firstChild ||\n this.firstValue?.firstChild\n );\n }\n\n private get firstValue() {\n return this.panelInFocus?.firstElementChild;\n }\n\n private get panelInFocus() {\n if (this.leftPanel?.contains(this.activeDescendantElement)) {\n return this.leftPanel;\n }\n if (this.rightPanel?.contains(this.activeDescendantElement)) {\n return this.rightPanel;\n }\n return this.leftPanel || this.rightPanel;\n }\n\n private scrollActiveDescendantIntoView() {\n this.activeDescendantElement?.scrollIntoView({\n block: 'nearest',\n });\n }\n\n private async updateQueryFromSuggestion() {\n const suggestedQuery = this.activeDescendantElement?.getAttribute(\n this.queryDataAttribute\n );\n await this.updateOwnerSearchboxQuery(suggestedQuery || '');\n }\n\n private async updateOwnerSearchboxQuery(query: string) {\n if (query && this.ownerSearchBoxProps.getSearchBoxValue() !== query) {\n this.ownerSearchBoxProps.updateQuery(query);\n await this.updateSuggestedQuery(query);\n }\n }\n\n private async updateSuggestedQuery(suggestedQuery: string) {\n await Promise.allSettled(\n this.suggestions.map((suggestion) =>\n promiseTimeout(\n suggestion.onSuggestedQueryChange\n ? suggestion.onSuggestedQueryChange(suggestedQuery)\n : Promise.resolve(),\n this.ownerSearchBoxProps.getSuggestionTimeout()\n )\n )\n );\n this.suggestedQuery = suggestedQuery;\n this.updateSuggestionElements(suggestedQuery);\n forceUpdate(this.ownerSearchBoxProps.getHost());\n }\n\n private updateSuggestionElements(query: string) {\n if (!this.isPanelInFocus(this.leftPanel, query)) {\n this.leftSuggestionElements = this.getAndFilterLeftSuggestionElements();\n }\n\n if (!this.isPanelInFocus(this.rightPanel, query)) {\n this.rightSuggestionElements = this.getSuggestionElements(\n this.rightSuggestions\n );\n }\n }\n\n public forceUpdate() {\n this.updateSuggestionElements(this.suggestedQuery);\n forceUpdate(this.ownerSearchBoxProps.getHost());\n }\n\n private isPanelInFocus(\n panel: HTMLElement | undefined,\n query: string\n ): boolean {\n if (!this.activeDescendantElement) {\n return false;\n }\n\n if (query) {\n const escaped = DOMPurify.sanitize(query);\n return !!panel?.querySelector(\n `[${this.queryDataAttribute}=\"${CSS.escape(escaped)}\"]`\n );\n }\n\n return this.activeDescendantElement?.closest('ul') === panel;\n }\n\n private getAndFilterLeftSuggestionElements() {\n const suggestionElements = this.getSuggestionElements(this.leftSuggestions);\n const filterOnDuplicate = new Set();\n\n const out = suggestionElements.filter((suggestionElement) => {\n if (isNullOrUndefined(suggestionElement.query)) {\n return true;\n }\n if (filterOnDuplicate.has(suggestionElement.query)) {\n return false;\n } else {\n filterOnDuplicate.add(suggestionElement.query);\n return true;\n }\n });\n\n return out;\n }\n\n private getSuggestionElements(suggestions: SearchBoxSuggestions[]) {\n const elements = suggestions.flatMap((suggestion) =>\n suggestion.renderItems()\n );\n\n const max =\n this.ownerSearchBoxProps.getNumberOfSuggestionsToDisplay() +\n elements.filter(elementHasNoQuery).length;\n\n return elements.slice(0, max);\n }\n\n private updateDescendants(activeDescendant = '') {\n const newPrevDescendantElement = this.activeDescendantElement;\n this.previousActiveDescendantElement = newPrevDescendantElement;\n this.updateActiveDescendant(activeDescendant);\n }\n\n private clearSuggestionElements() {\n this.leftSuggestionElements = [];\n this.rightSuggestionElements = [];\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"stencil-suggestion-manager-91706623.js","mappings":"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","names":[],"sources":["src/components/common/search-box/stencil-search-box-wrapper.tsx","src/components/common/search-box/stencil-text-area-clear-button.tsx","src/components/common/search-box/stencil-search-text-area.tsx","src/utils/promise-utils.ts","src/components/common/suggestions/stencil-suggestion-manager.ts"],"sourcesContent":["import {FunctionalComponent, h} from '@stencil/core';\n\ninterface Props {\n disabled: boolean;\n onFocusout?: (event: FocusEvent) => void;\n}\n\nexport const SearchBoxWrapper: FunctionalComponent<Props> = (\n props,\n children\n) => {\n const getClasses = () => {\n const baseClasses =\n 'flex bg-background w-full border border-neutral rounded-md focus-within:ring-3 absolute top-0 left-0';\n const focusClasses = props.disabled\n ? 'focus-within:border-disabled focus-within:ring-neutral'\n : 'focus-within:border-primary focus-within:ring-ring-primary';\n\n return [baseClasses, focusClasses].join(' ');\n };\n\n return (\n <div part=\"wrapper\" class={getClasses()} onFocusout={props.onFocusout}>\n {children}\n </div>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\nimport ClearSlim from '../../../images/clear-slim.svg';\nimport {AnyBindings} from '../interface/bindings';\nimport {Button, StencilButtonProps} from '../stencil-button';\n\ninterface Props extends Partial<StencilButtonProps> {\n bindings: AnyBindings;\n inputRef: HTMLInputElement | HTMLTextAreaElement | null;\n}\n\nexport const TextAreaClearButton: FunctionalComponent<Props> = ({\n inputRef,\n bindings,\n onClick,\n ...defaultButtonProps\n}) => (\n <div\n part=\"clear-button-wrapper\"\n class=\"ml-2 flex items-center justify-center py-2\"\n >\n <Button\n style=\"text-transparent\"\n part=\"clear-button\"\n class=\"text-neutral-dark flex h-8 w-8 shrink-0 items-center justify-center\"\n onClick={() => {\n onClick?.();\n inputRef?.focus();\n }}\n ariaLabel={bindings.i18n.t('clear')}\n {...defaultButtonProps}\n >\n <atomic-icon\n part=\"clear-icon\"\n icon={ClearSlim}\n class=\"h-4 w-4\"\n ></atomic-icon>\n </Button>\n </div>\n);\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {JSXBase} from '@stencil/core/internal';\nimport {AnyBindings} from '../interface/bindings';\nimport {TextAreaClearButton} from './stencil-text-area-clear-button';\n\ninterface Props extends JSXBase.TextareaHTMLAttributes<HTMLTextAreaElement> {\n textAreaRef: HTMLTextAreaElement;\n loading: boolean;\n bindings: AnyBindings;\n value: string;\n ariaLabel: string;\n onClear(): void;\n popup?: {\n id: string;\n activeDescendant: string;\n expanded: boolean;\n hasSuggestions: boolean;\n };\n}\n\nfunction getPopupAttributes(props: Required<Props>['popup']) {\n return {\n autocomplete: 'off',\n autocapitalize: 'off',\n autocorrect: 'off',\n ...(props.activeDescendant && {\n 'aria-activedescendant': props.activeDescendant,\n }),\n 'aria-autocomplete': 'both',\n 'aria-haspopup': 'true',\n 'aria-controls': props.id,\n };\n}\n\nfunction syncTextWithReplica(elem: HTMLTextAreaElement, value?: string) {\n const parent = elem?.parentNode as HTMLElement;\n if (!parent) {\n return;\n }\n if (elem.value === '\\n') {\n return;\n }\n parent.dataset.replicatedValue = value ?? elem.value;\n}\n\nfunction resetReplicaText(elem: HTMLTextAreaElement) {\n const parent = elem?.parentNode as HTMLElement;\n if (parent) {\n delete parent.dataset.replicatedValue;\n }\n}\n\nfunction collapseTextArea(elem: HTMLTextAreaElement) {\n const parent = elem?.parentNode as HTMLElement;\n if (parent) {\n parent.classList.remove('expanded');\n }\n}\n\nfunction expandTextArea(elem: HTMLTextAreaElement) {\n const parent = elem?.parentNode as HTMLElement;\n if (parent) {\n parent.classList.add('expanded');\n }\n}\n\nexport const SearchTextArea: FunctionalComponent<Props> = ({\n textAreaRef,\n loading,\n bindings,\n onInput,\n onFocus,\n onBlur,\n onChange,\n onKeyDown,\n onKeyUp,\n value,\n ariaLabel,\n onClear,\n popup,\n ...defaultInputProps\n}) => (\n <div class=\"flex grow overflow-hidden\">\n <div part=\"textarea-expander\" class=\"grid grow overflow-hidden\">\n <textarea\n part=\"textarea\"\n aria-label={ariaLabel}\n placeholder={bindings.i18n.t('search')}\n class=\"placeholder-neutral-dark\"\n rows={1}\n onInput={(e) => {\n onInput?.(e);\n syncTextWithReplica(textAreaRef);\n }}\n onKeyDown={(e) => {\n syncTextWithReplica(textAreaRef);\n if (e.key === 'Enter') {\n if (e.shiftKey) {\n return;\n }\n e.preventDefault();\n }\n onKeyDown?.(e);\n }}\n onKeyUp={(e) => {\n onKeyUp?.(e);\n if (e.key === 'Enter') {\n e.preventDefault();\n return;\n }\n syncTextWithReplica(textAreaRef);\n }}\n onBlur={(e) => {\n onBlur?.(e);\n collapseTextArea(textAreaRef);\n syncTextWithReplica(textAreaRef);\n }}\n onChange={(e) => {\n onChange?.(e);\n syncTextWithReplica(textAreaRef);\n }}\n onFocus={(e) => {\n onFocus?.(e);\n const target = e.target as HTMLTextAreaElement;\n syncTextWithReplica(textAreaRef ?? target);\n expandTextArea(textAreaRef ?? target);\n }}\n autocomplete=\"off\"\n {...(popup && getPopupAttributes(popup))}\n {...defaultInputProps}\n value={value}\n />\n </div>\n\n {loading && (\n <div class=\"searchbox-button-wrapper ml-2 flex items-center justify-center\">\n <span\n part=\"loading\"\n class=\"loading mr-2 grid h-5 w-5 animate-spin place-items-center rounded-full bg-linear-to-r\"\n ></span>\n </div>\n )}\n {!loading && value && (\n <TextAreaClearButton\n inputRef={textAreaRef}\n bindings={bindings}\n onClick={() => {\n onClear();\n resetReplicaText(textAreaRef);\n }}\n />\n )}\n </div>\n);\n","export function promiseTimeout<T>(prom: T | Promise<T>, ms: number) {\n let id: NodeJS.Timeout;\n const timeout = new Promise((_, reject) => {\n id = setTimeout(() => {\n reject(new Error('Promise timed out.'));\n }, ms);\n });\n return Promise.race([prom, timeout]).then(() => {\n clearTimeout(id);\n });\n}\n","import {isNullOrUndefined} from '@coveo/bueno';\nimport {forceUpdate} from '@stencil/core';\nimport DOMPurify from 'dompurify';\nimport {debounce} from '../../../utils/debounce-utils';\nimport {promiseTimeout} from '../../../utils/promise-utils';\nimport {\n elementHasNoQuery,\n elementHasQuery,\n type SearchBoxSuggestionElement,\n type SearchBoxSuggestionsBindings,\n type SearchBoxSuggestionsEvent,\n} from './suggestions-common';\n\n/**\n * List of suggestions that will be displayed along other lists (e.g recent queries) when the search box's input is selected.\n */\nexport interface SearchBoxSuggestions {\n /**\n * The search box will sort the position of suggestions using this value, the lowest value being first.\n * By default, the DOM position will be used.\n */\n position: number;\n /**\n * Whether the suggestions should be listed in the right or left panel. By default, the suggestions are listed in the right panel.\n */\n panel?: 'left' | 'right';\n /**\n * Method that returns the list of elements which will be rendered in the list of suggestions.\n */\n renderItems(): SearchBoxSuggestionElement[];\n /**\n * Hook called when the user changes the search box's input value. This can lead to all the query suggestions being updated.\n */\n onInput?(): Promise<unknown>;\n /**\n * Hook called when the current suggested query changes as the user navigates the list of suggestions.\n * This is used for instant results, which are rendered based on the current suggested query.\n * @param q The new current suggested query.\n */\n onSuggestedQueryChange?(q: string): Promise<unknown>;\n}\n\ninterface SearchBoxProps {\n getSearchBoxValue: () => string;\n updateQuery: (suggestedQuery: string) => void;\n getSuggestionTimeout: () => number;\n getNumberOfSuggestionsToDisplay: () => number;\n getSuggestionDelay: () => number;\n getLogger: () => Pick<typeof console, 'warn'>;\n getHost: () => HTMLElement;\n}\n\nexport class SuggestionManager<SearchBoxController> {\n public suggestions: SearchBoxSuggestions[] = [];\n public leftSuggestionElements: SearchBoxSuggestionElement[] = [];\n public rightSuggestionElements: SearchBoxSuggestionElement[] = [];\n public leftPanel: HTMLElement | undefined = undefined;\n public rightPanel: HTMLElement | undefined = undefined;\n public triggerSuggestions: () => Promise<void>;\n public activeDescendant = '';\n public suggestedQuery = '';\n public keyboardActiveDescendant = '';\n\n private queryDataAttribute = 'data-query';\n private suggestionEvents: SearchBoxSuggestionsEvent<SearchBoxController>[] =\n [];\n\n private previousActiveDescendantElement: HTMLElement | null = null;\n private leftSuggestions: SearchBoxSuggestions[] = [];\n private rightSuggestions: SearchBoxSuggestions[] = [];\n\n constructor(private ownerSearchBoxProps: SearchBoxProps) {\n this.triggerSuggestions = debounce(\n () => this.executeQuerySuggestion(),\n this.ownerSearchBoxProps.getSuggestionDelay()\n );\n }\n\n public get partialSuggestionBindings(): Pick<\n SearchBoxSuggestionsBindings<SearchBoxController>,\n | 'suggestedQuery'\n | 'clearSuggestions'\n | 'triggerSuggestions'\n | 'getSuggestions'\n | 'getSuggestionElements'\n > {\n return {\n suggestedQuery: () => this.suggestedQuery,\n clearSuggestions: () => this.clearSuggestions(),\n triggerSuggestions: () => this.triggerSuggestions(),\n getSuggestions: () => this.suggestions,\n getSuggestionElements: () => this.allSuggestionElements,\n };\n }\n\n public get activeDescendantElement(): HTMLElement | null {\n if (!this.hasActiveDescendant) {\n return null;\n }\n\n return (\n this.leftPanel?.querySelector(`#${this.activeDescendant}`) ||\n this.rightPanel?.querySelector(`#${this.activeDescendant}`) ||\n null\n );\n }\n\n public onSubmit() {\n this.clickOnActiveElement();\n this.clearSuggestions();\n }\n\n public updateActiveDescendant(id = '') {\n this.activeDescendant = id;\n forceUpdate(this.ownerSearchBoxProps.getHost());\n }\n\n public updateKeyboardActiveDescendant(id = '') {\n this.keyboardActiveDescendant = id;\n }\n\n public clickOnActiveElement() {\n this.activeDescendantElement?.click();\n this.updateActiveDescendant();\n }\n\n public isRightPanelInFocus() {\n if (\n isNullOrUndefined(this.panelInFocus) ||\n isNullOrUndefined(this.rightPanel)\n ) {\n return false;\n }\n\n return this.panelInFocus === this.rightPanel;\n }\n\n public initializeSuggestions(\n bindings: SearchBoxSuggestionsBindings<SearchBoxController>\n ) {\n this.suggestions = this.suggestionEvents.map((event) => event(bindings));\n }\n\n public registerSuggestionsFromEvent(\n event: CustomEvent<SearchBoxSuggestionsEvent<SearchBoxController>>,\n bindings: SearchBoxSuggestionsBindings<SearchBoxController>\n ) {\n event.preventDefault();\n event.stopPropagation();\n this.suggestionEvents.push(event.detail);\n this.suggestions.push(event.detail(bindings));\n }\n\n public registerSuggestions(suggestions: SearchBoxSuggestions) {\n this.suggestions.push(suggestions);\n }\n\n public get isDoubleList() {\n return Boolean(\n this.leftSuggestionElements.length && this.rightSuggestionElements.length\n );\n }\n\n public focusPanel(side: 'left' | 'right') {\n const panel = side === 'left' ? this.leftPanel : this.rightPanel;\n\n if (this.panelInFocus === panel) {\n return;\n }\n if (panel?.firstElementChild) {\n const panelHasActiveDescendant =\n this.previousActiveDescendantElement &&\n panel.contains(this.previousActiveDescendantElement);\n const newValue = panelHasActiveDescendant\n ? this.previousActiveDescendantElement!\n : (panel.firstElementChild as HTMLElement);\n this.updateDescendants(newValue.id);\n }\n }\n\n public clearSuggestions() {\n this.clearSuggestionElements();\n this.updateActiveDescendant();\n }\n\n public async focusNextValue() {\n if (!this.hasSuggestions || !this.nextOrFirstValue) {\n return;\n }\n\n await this.focusValue(this.nextOrFirstValue as HTMLElement);\n }\n\n public async focusValue(value: HTMLElement) {\n this.updateKeyboardActiveDescendant(value.id);\n this.updateActiveDescendant(value.id);\n this.scrollActiveDescendantIntoView();\n await this.updateQueryFromSuggestion();\n }\n\n public async onSuggestionMouseOver(\n item: SearchBoxSuggestionElement,\n side: 'left' | 'right',\n id: string\n ) {\n const thisPanel = side === 'left' ? this.leftPanel : this.rightPanel;\n // When hovering, always reset the keyboard active descendant\n this.updateKeyboardActiveDescendant();\n if (this.panelInFocus === thisPanel) {\n this.updateActiveDescendant(id);\n } else {\n this.updateDescendants(id);\n }\n if (item.query) {\n await this.updateSuggestedQuery(item.query);\n }\n }\n\n public async onSuggestionClick(item: SearchBoxSuggestionElement, e: Event) {\n if (item.query) {\n this.clearSuggestions();\n await this.updateOwnerSearchboxQuery(item.query);\n }\n item.onSelect?.(e);\n }\n\n public get hasSuggestions() {\n return !!this.allSuggestionElements.length;\n }\n\n public get allSuggestionElements() {\n return [...this.leftSuggestionElements, ...this.rightSuggestionElements];\n }\n\n public async focusPreviousValue() {\n if (this.firstValue === this.activeDescendantElement) {\n this.updateKeyboardActiveDescendant();\n this.updateActiveDescendant();\n return;\n }\n\n if (!this.hasSuggestions || !this.previousOrLastValue) {\n return;\n }\n\n await this.focusValue(this.previousOrLastValue as HTMLElement);\n }\n\n public get hasActiveDescendant() {\n return this.activeDescendant !== '';\n }\n\n private async executeQuerySuggestion() {\n this.updateActiveDescendant();\n const settled = await Promise.allSettled(\n this.suggestions.map((suggestion) =>\n promiseTimeout(\n suggestion.onInput ? suggestion.onInput() : Promise.resolve(),\n this.ownerSearchBoxProps.getSuggestionTimeout()\n )\n )\n );\n\n const fulfilledSuggestions: SearchBoxSuggestions[] = [];\n\n settled.forEach((prom, j) => {\n if (prom.status === 'fulfilled') {\n fulfilledSuggestions.push(this.suggestions[j]);\n } else {\n this.ownerSearchBoxProps\n .getLogger()\n .warn(\n 'Some query suggestions are not being shown because the promise timed out.'\n );\n }\n });\n\n const splitSuggestions = (side: 'left' | 'right', isDefault = false) =>\n fulfilledSuggestions\n .filter(\n (suggestion) =>\n suggestion.panel === side || (!suggestion.panel && isDefault)\n )\n .sort(this.sortSuggestions);\n\n this.leftSuggestions = splitSuggestions('left', true);\n this.leftSuggestionElements = this.getAndFilterLeftSuggestionElements();\n\n this.rightSuggestions = splitSuggestions('right');\n this.rightSuggestionElements = this.getSuggestionElements(\n this.rightSuggestions\n );\n\n const defaultSuggestedQuery =\n this.allSuggestionElements.find(elementHasQuery)?.query || '';\n\n await this.updateSuggestedQuery(defaultSuggestedQuery);\n }\n\n private get lastValue() {\n return this.panelInFocus?.lastElementChild;\n }\n\n private get previousOrLastValue() {\n if (!this.hasActiveDescendant) {\n return this.lastValue?.firstChild;\n }\n\n const parentOfActiveDescendant =\n this.activeDescendantElement?.parentElement;\n return (\n parentOfActiveDescendant?.previousElementSibling?.firstChild ||\n this.firstValue?.firstChild\n );\n }\n\n private sortSuggestions(a: SearchBoxSuggestions, b: SearchBoxSuggestions) {\n return a.position - b.position;\n }\n\n private get nextOrFirstValue() {\n if (!this.hasActiveDescendant) {\n return this.firstValue?.firstChild;\n }\n\n const parentOfActiveDescendant =\n this.activeDescendantElement?.parentElement;\n return (\n parentOfActiveDescendant?.nextElementSibling?.firstChild ||\n this.firstValue?.firstChild\n );\n }\n\n private get firstValue() {\n return this.panelInFocus?.firstElementChild;\n }\n\n private get panelInFocus() {\n if (this.leftPanel?.contains(this.activeDescendantElement)) {\n return this.leftPanel;\n }\n if (this.rightPanel?.contains(this.activeDescendantElement)) {\n return this.rightPanel;\n }\n return this.leftPanel || this.rightPanel;\n }\n\n private scrollActiveDescendantIntoView() {\n this.activeDescendantElement?.scrollIntoView({\n block: 'nearest',\n });\n }\n\n private async updateQueryFromSuggestion() {\n const suggestedQuery = this.activeDescendantElement?.getAttribute(\n this.queryDataAttribute\n );\n await this.updateOwnerSearchboxQuery(suggestedQuery || '');\n }\n\n private async updateOwnerSearchboxQuery(query: string) {\n if (query && this.ownerSearchBoxProps.getSearchBoxValue() !== query) {\n this.ownerSearchBoxProps.updateQuery(query);\n await this.updateSuggestedQuery(query);\n }\n }\n\n private async updateSuggestedQuery(suggestedQuery: string) {\n await Promise.allSettled(\n this.suggestions.map((suggestion) =>\n promiseTimeout(\n suggestion.onSuggestedQueryChange\n ? suggestion.onSuggestedQueryChange(suggestedQuery)\n : Promise.resolve(),\n this.ownerSearchBoxProps.getSuggestionTimeout()\n )\n )\n );\n this.suggestedQuery = suggestedQuery;\n this.updateSuggestionElements(suggestedQuery);\n forceUpdate(this.ownerSearchBoxProps.getHost());\n }\n\n private updateSuggestionElements(query: string) {\n if (!this.isPanelInFocus(this.leftPanel, query)) {\n this.leftSuggestionElements = this.getAndFilterLeftSuggestionElements();\n }\n\n if (!this.isPanelInFocus(this.rightPanel, query)) {\n this.rightSuggestionElements = this.getSuggestionElements(\n this.rightSuggestions\n );\n }\n }\n\n public forceUpdate() {\n this.updateSuggestionElements(this.suggestedQuery);\n forceUpdate(this.ownerSearchBoxProps.getHost());\n }\n\n private isPanelInFocus(\n panel: HTMLElement | undefined,\n query: string\n ): boolean {\n if (!this.activeDescendantElement) {\n return false;\n }\n\n if (query) {\n const escaped = DOMPurify.sanitize(query);\n return !!panel?.querySelector(\n `[${this.queryDataAttribute}=\"${CSS.escape(escaped)}\"]`\n );\n }\n\n return this.activeDescendantElement?.closest('ul') === panel;\n }\n\n private getAndFilterLeftSuggestionElements() {\n const suggestionElements = this.getSuggestionElements(this.leftSuggestions);\n const filterOnDuplicate = new Set();\n\n const out = suggestionElements.filter((suggestionElement) => {\n if (isNullOrUndefined(suggestionElement.query)) {\n return true;\n }\n if (filterOnDuplicate.has(suggestionElement.query)) {\n return false;\n } else {\n filterOnDuplicate.add(suggestionElement.query);\n return true;\n }\n });\n\n return out;\n }\n\n private getSuggestionElements(suggestions: SearchBoxSuggestions[]) {\n const elements = suggestions.flatMap((suggestion) =>\n suggestion.renderItems()\n );\n\n const max =\n this.ownerSearchBoxProps.getNumberOfSuggestionsToDisplay() +\n elements.filter(elementHasNoQuery).length;\n\n return elements.slice(0, max);\n }\n\n private updateDescendants(activeDescendant = '') {\n const newPrevDescendantElement = this.activeDescendantElement;\n this.previousActiveDescendantElement = newPrevDescendantElement;\n this.updateActiveDescendant(activeDescendant);\n }\n\n private clearSuggestionElements() {\n this.leftSuggestionElements = [];\n this.rightSuggestionElements = [];\n }\n}\n"],"version":3}
|
package/dist/esm/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const headlessVersion = '3.27.8-pre.
|
|
2
|
-
export const atomicVersion = '3.31.2-pre.
|
|
1
|
+
export const headlessVersion = '3.27.8-pre.214bb00aea';
|
|
2
|
+
export const atomicVersion = '3.31.2-pre.214bb00aea';
|
package/dist/types/components/commerce/atomic-commerce-interface/atomic-commerce-interface.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { type CommerceEngine, type CommerceEngineConfiguration, type Context, ty
|
|
|
2
2
|
import { type i18n } from 'i18next';
|
|
3
3
|
import { type CSSResultGroup, LitElement } from 'lit';
|
|
4
4
|
import type { CommonBindings } from '../../common/interface/bindings';
|
|
5
|
-
import { type BaseAtomicInterface } from '../../common/interface/interface-
|
|
5
|
+
import { type BaseAtomicInterface } from '../../common/interface/interface-common';
|
|
6
6
|
import { type CommerceStore } from '../atomic-commerce-interface/store';
|
|
7
7
|
export type CommerceInitializationOptions = CommerceEngineConfiguration;
|
|
8
8
|
export type CommerceBindings = CommonBindings<CommerceEngine, CommerceStore, AtomicCommerceInterface>;
|
|
@@ -25,8 +25,8 @@ export declare class AtomicCommerceInterface extends AtomicCommerceInterface_bas
|
|
|
25
25
|
private unsubscribeSummary?;
|
|
26
26
|
private initialized;
|
|
27
27
|
store: CommerceStore;
|
|
28
|
-
private
|
|
29
|
-
error
|
|
28
|
+
private commonInterfaceHelper;
|
|
29
|
+
error?: Error;
|
|
30
30
|
static styles: CSSResultGroup;
|
|
31
31
|
/**
|
|
32
32
|
* The type of the interface.
|
|
@@ -107,6 +107,7 @@ export declare class AtomicCommerceInterface extends AtomicCommerceInterface_bas
|
|
|
107
107
|
private getBindings;
|
|
108
108
|
private initEngine;
|
|
109
109
|
private get fragment();
|
|
110
|
+
private initAriaLive;
|
|
110
111
|
private initUrlManager;
|
|
111
112
|
private initRequestStatus;
|
|
112
113
|
private initSummary;
|
|
@@ -2,11 +2,11 @@ import { type CommerceEngine, type CommerceEngineConfiguration, type Context } f
|
|
|
2
2
|
import type { CurrencyCodeISO4217 } from '@coveo/relay-event-types';
|
|
3
3
|
import { type i18n } from 'i18next';
|
|
4
4
|
import { type CSSResultGroup, LitElement } from 'lit';
|
|
5
|
-
import type { CommonBindings } from '../../common/interface/bindings.js';
|
|
6
|
-
import { type BaseAtomicInterface } from '../../common/interface/interface-
|
|
5
|
+
import type { AdoptedStylesBindings, CommonBindings } from '../../common/interface/bindings.js';
|
|
6
|
+
import { type BaseAtomicInterface } from '../../common/interface/interface-common.js';
|
|
7
7
|
import { type CommerceRecommendationStore } from './store.js';
|
|
8
8
|
export type CommerceInitializationOptions = CommerceEngineConfiguration;
|
|
9
|
-
export type CommerceBindings = CommonBindings<CommerceEngine, CommerceRecommendationStore, AtomicCommerceRecommendationInterface
|
|
9
|
+
export type CommerceBindings = CommonBindings<CommerceEngine, CommerceRecommendationStore, AtomicCommerceRecommendationInterface> & AdoptedStylesBindings;
|
|
10
10
|
declare const AtomicCommerceRecommendationInterface_base: typeof LitElement;
|
|
11
11
|
/**
|
|
12
12
|
* The `atomic-commerce-recommendation-interface` component is meant to be used
|
|
@@ -16,10 +16,10 @@ declare const AtomicCommerceRecommendationInterface_base: typeof LitElement;
|
|
|
16
16
|
*/
|
|
17
17
|
export declare class AtomicCommerceRecommendationInterface extends AtomicCommerceRecommendationInterface_base implements BaseAtomicInterface<CommerceEngine> {
|
|
18
18
|
bindings: CommerceBindings;
|
|
19
|
-
error
|
|
19
|
+
error?: Error;
|
|
20
20
|
context: Context;
|
|
21
21
|
store: CommerceRecommendationStore;
|
|
22
|
-
private
|
|
22
|
+
private commonInterfaceHelper;
|
|
23
23
|
static styles: CSSResultGroup;
|
|
24
24
|
/**
|
|
25
25
|
* The commerce interface i18next instance.
|
|
@@ -98,6 +98,7 @@ export declare class AtomicCommerceRecommendationInterface extends AtomicCommerc
|
|
|
98
98
|
private handleInitialization;
|
|
99
99
|
private scrollToTop;
|
|
100
100
|
private internalInitialization;
|
|
101
|
+
private initAriaLive;
|
|
101
102
|
private initContext;
|
|
102
103
|
private getBindings;
|
|
103
104
|
private initLanguage;
|
package/dist/types/components/commerce/atomic-commerce-search-box/atomic-commerce-search-box.d.ts
CHANGED
|
@@ -3,9 +3,6 @@ import { type CSSResultGroup, LitElement } from 'lit';
|
|
|
3
3
|
import type { InitializableComponent } from "../../../decorators/types";
|
|
4
4
|
import { AriaLiveRegionController } from "../../../utils/accessibility-utils";
|
|
5
5
|
import type { CommerceBindings } from '../atomic-commerce-interface/atomic-commerce-interface';
|
|
6
|
-
import '../atomic-commerce-search-box-instant-products/atomic-commerce-search-box-instant-products';
|
|
7
|
-
import '../atomic-commerce-search-box-query-suggestions/atomic-commerce-search-box-query-suggestions';
|
|
8
|
-
import '../atomic-commerce-search-box-recent-queries/atomic-commerce-search-box-recent-queries';
|
|
9
6
|
/**
|
|
10
7
|
* The `atomic-commerce-search-box` component enables users to perform product searches with built-in query suggestions and optional redirection to a search results page.
|
|
11
8
|
*
|
|
@@ -1,43 +1,32 @@
|
|
|
1
|
-
import { LitElement } from 'lit';
|
|
2
|
-
import type { InitializableComponent } from "../../../decorators/types";
|
|
3
|
-
import type { CommerceBindings } from '../atomic-commerce-interface/atomic-commerce-interface';
|
|
4
1
|
/**
|
|
5
|
-
* The `atomic-product-field-condition` component
|
|
2
|
+
* The `atomic-product-field-condition` component takes a list of conditions that, if fulfilled, apply the template in which it's defined.
|
|
6
3
|
* The condition properties can be based on any top-level product property of the `product` object, not restricted to fields (e.g., `ec_name`).
|
|
7
|
-
*
|
|
8
|
-
* @slot default - The content to render if the conditions are met.
|
|
9
|
-
*
|
|
10
4
|
* @alpha
|
|
11
5
|
*/
|
|
12
|
-
export declare class AtomicProductFieldCondition
|
|
13
|
-
|
|
14
|
-
bindings: CommerceBindings;
|
|
15
|
-
error: Error;
|
|
16
|
-
private productController;
|
|
6
|
+
export declare class AtomicProductFieldCondition {
|
|
7
|
+
host: HTMLElement;
|
|
17
8
|
/**
|
|
18
|
-
*
|
|
9
|
+
* Verifies whether the specified fields are defined.
|
|
19
10
|
*/
|
|
20
11
|
ifDefined?: string;
|
|
21
12
|
/**
|
|
22
|
-
*
|
|
13
|
+
* Verifies whether the specified fields are not defined.
|
|
23
14
|
*/
|
|
24
15
|
ifNotDefined?: string;
|
|
25
16
|
/**
|
|
26
|
-
*
|
|
17
|
+
* Verifies whether the specified fields match the specified values.
|
|
27
18
|
* @type {Record<string, string[]>}
|
|
28
19
|
*/
|
|
29
20
|
mustMatch: Record<string, string[]>;
|
|
30
21
|
/**
|
|
31
|
-
*
|
|
22
|
+
* Verifies whether the specified fields do not match the specified values.
|
|
32
23
|
* @type {Record<string, string[]>}
|
|
33
24
|
*/
|
|
34
25
|
mustNotMatch: Record<string, string[]>;
|
|
35
|
-
|
|
36
|
-
private
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
'atomic-product-field-condition': AtomicProductFieldCondition;
|
|
42
|
-
}
|
|
26
|
+
private conditions;
|
|
27
|
+
private shouldBeRemoved;
|
|
28
|
+
private product;
|
|
29
|
+
componentWillLoad(): void;
|
|
30
|
+
render(): any;
|
|
31
|
+
componentDidLoad(): void;
|
|
43
32
|
}
|
|
@@ -7,7 +7,6 @@ import '../atomic-product-link/atomic-product-link';
|
|
|
7
7
|
import '../atomic-product/atomic-product';
|
|
8
8
|
import '../atomic-product-excerpt/atomic-product-excerpt';
|
|
9
9
|
import '../atomic-product-children/atomic-product-children';
|
|
10
|
-
import '../atomic-product-field-condition/atomic-product-field-condition';
|
|
11
10
|
import '../atomic-product-multi-value-text/atomic-product-multi-value-text';
|
|
12
11
|
import '../atomic-product-price/atomic-product-price';
|
|
13
12
|
import '../atomic-product-numeric-field-value/atomic-product-numeric-field-value';
|
|
@@ -23,7 +23,6 @@ export { AtomicProduct } from './atomic-product/atomic-product.js';
|
|
|
23
23
|
export { AtomicProductChildren } from './atomic-product-children/atomic-product-children.js';
|
|
24
24
|
export { AtomicProductDescription } from './atomic-product-description/atomic-product-description.js';
|
|
25
25
|
export { AtomicProductExcerpt } from './atomic-product-excerpt/atomic-product-excerpt.js';
|
|
26
|
-
export { AtomicProductFieldCondition } from './atomic-product-field-condition/atomic-product-field-condition.js';
|
|
27
26
|
export { AtomicProductLink } from './atomic-product-link/atomic-product-link.js';
|
|
28
27
|
export { AtomicProductMultiValueText } from './atomic-product-multi-value-text/atomic-product-multi-value-text.js';
|
|
29
28
|
export { AtomicProductNumericFieldValue } from './atomic-product-numeric-field-value/atomic-product-numeric-field-value.js';
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export { AtomicAriaLive } from './atomic-aria-live/atomic-aria-live.js';
|
|
2
1
|
export { AtomicComponentError } from './atomic-component-error/atomic-component-error.js';
|
|
3
2
|
export { AtomicIcon } from './atomic-icon/atomic-icon.js';
|
|
4
3
|
export { AtomicLayoutSection } from './atomic-layout-section/atomic-layout-section.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type HttpBackendOptions } from 'i18next-http-backend';
|
|
2
2
|
import type { AnyEngineType } from './bindings';
|
|
3
|
-
import type { BaseAtomicInterface } from './interface-
|
|
3
|
+
import type { BaseAtomicInterface } from './interface-common';
|
|
4
4
|
export declare const i18nTranslationNamespace = "translation";
|
|
5
5
|
export declare function i18nBackendOptions(atomicInterface: BaseAtomicInterface<AnyEngineType>): HttpBackendOptions;
|
|
6
6
|
export declare function init18n(atomicInterface: BaseAtomicInterface<AnyEngineType>): Promise<import("i18next").TFunction<"translation", undefined>>;
|
package/dist/types/components/common/interface/{interface-controller.d.ts → interface-common.d.ts}
RENAMED
|
@@ -1,36 +1,33 @@
|
|
|
1
|
+
import "../atomic-component-error/atomic-component-error.js";
|
|
1
2
|
import type { LogLevel } from '@coveo/headless';
|
|
2
3
|
import type { i18n } from 'i18next';
|
|
3
|
-
import type {
|
|
4
|
-
import type { AnyBindings, AnyEngineType } from './bindings';
|
|
4
|
+
import type { AnyBindings, AnyEngineType } from "./bindings.js";
|
|
5
5
|
export type InitializeEventHandler = (bindings: AnyBindings) => void;
|
|
6
6
|
export type InitializeEvent = CustomEvent<InitializeEventHandler>;
|
|
7
7
|
export interface BaseAtomicInterface<EngineType extends AnyEngineType> {
|
|
8
8
|
analytics: boolean;
|
|
9
9
|
i18n: i18n;
|
|
10
|
+
engine?: EngineType;
|
|
10
11
|
languageAssetsPath: string;
|
|
11
12
|
iconAssetsPath: string;
|
|
12
|
-
bindings: AnyBindings;
|
|
13
|
-
updateIconAssetsPath(): void;
|
|
14
|
-
error: Error;
|
|
15
|
-
engine?: EngineType;
|
|
16
13
|
logLevel?: LogLevel;
|
|
17
14
|
language?: string;
|
|
15
|
+
bindings: AnyBindings;
|
|
16
|
+
error?: Error;
|
|
17
|
+
updateIconAssetsPath(): void;
|
|
18
18
|
registerFieldsToInclude?: () => void;
|
|
19
19
|
}
|
|
20
|
-
export declare
|
|
21
|
-
|
|
20
|
+
export declare const mismatchedInterfaceAndEnginePropError: (interfaceKind: "search" | "recommendation", configurationName: "query pipeline" | "search hub") => string;
|
|
21
|
+
export declare class CommonAtomicInterfaceHelper<Engine extends AnyEngineType> {
|
|
22
|
+
private atomicInterface;
|
|
22
23
|
private i18nPromise;
|
|
23
24
|
private hangingComponentsInitialization;
|
|
24
|
-
constructor(
|
|
25
|
-
hostConnected(): void;
|
|
26
|
-
hostDisconnected(): void;
|
|
25
|
+
constructor(atomicInterface: BaseAtomicInterface<Engine> & HTMLElement, globalVariableName: string);
|
|
27
26
|
onComponentInitializing(event: InitializeEvent): void;
|
|
28
27
|
onInitialization(initEngine: () => void): Promise<void>;
|
|
29
28
|
onAnalyticsChange(): void;
|
|
30
29
|
onLanguageChange(newLanguage?: string): void;
|
|
31
|
-
engineIsCreated(engine?:
|
|
30
|
+
engineIsCreated(engine?: Engine): engine is Engine;
|
|
32
31
|
private get interfaceTagname();
|
|
33
32
|
private initComponents;
|
|
34
|
-
private initAriaLive;
|
|
35
|
-
private removeAriaLive;
|
|
36
33
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { FindAriaLiveEventArgs } from '../../../utils/stencil-accessibility-utils';
|
|
2
|
+
/**
|
|
3
|
+
* The `atomic-aria-live` component notifies screen readers of changes in the search interface.
|
|
4
|
+
*/
|
|
5
|
+
export declare class AtomicAriaLive {
|
|
6
|
+
private host;
|
|
7
|
+
private regions;
|
|
8
|
+
private messagesQueue;
|
|
9
|
+
private id;
|
|
10
|
+
protected onFindAriaLive({ detail: args }: CustomEvent<FindAriaLiveEventArgs>): void;
|
|
11
|
+
private get isInSearchInterface();
|
|
12
|
+
connectedCallback(): void;
|
|
13
|
+
/**
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
16
|
+
updateMessage(region: string, message: string, assertive: boolean): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
registerRegion(region: string, assertive: boolean): Promise<void>;
|
|
21
|
+
disconnectedCallback(): void;
|
|
22
|
+
render(): any;
|
|
23
|
+
}
|
|
@@ -58,6 +58,13 @@ export { InitializationOptions } from "./components/search/atomic-search-interfa
|
|
|
58
58
|
export { StandaloneSearchBoxData } from "./utils/local-storage-utils";
|
|
59
59
|
export { SearchBoxSuggestionElement } from "./components/common/suggestions/suggestions-common";
|
|
60
60
|
export namespace Components {
|
|
61
|
+
/**
|
|
62
|
+
* The `atomic-aria-live` component notifies screen readers of changes in the search interface.
|
|
63
|
+
*/
|
|
64
|
+
interface AtomicAriaLive {
|
|
65
|
+
"registerRegion": (region: string, assertive: boolean) => Promise<void>;
|
|
66
|
+
"updateMessage": (region: string, message: string, assertive: boolean) => Promise<void>;
|
|
67
|
+
}
|
|
61
68
|
/**
|
|
62
69
|
* An automatic facet is a special type of facet generated by the automatic facets feature.
|
|
63
70
|
* Unlike regular facets, which need to be explicitly defined and requested in the query,
|
|
@@ -1584,6 +1591,31 @@ export namespace Components {
|
|
|
1584
1591
|
*/
|
|
1585
1592
|
interface AtomicPopover {
|
|
1586
1593
|
}
|
|
1594
|
+
/**
|
|
1595
|
+
* The `atomic-product-field-condition` component takes a list of conditions that, if fulfilled, apply the template in which it's defined.
|
|
1596
|
+
* The condition properties can be based on any top-level product property of the `product` object, not restricted to fields (e.g., `ec_name`).
|
|
1597
|
+
* @alpha
|
|
1598
|
+
*/
|
|
1599
|
+
interface AtomicProductFieldCondition {
|
|
1600
|
+
/**
|
|
1601
|
+
* Verifies whether the specified fields are defined.
|
|
1602
|
+
*/
|
|
1603
|
+
"ifDefined"?: string;
|
|
1604
|
+
/**
|
|
1605
|
+
* Verifies whether the specified fields are not defined.
|
|
1606
|
+
*/
|
|
1607
|
+
"ifNotDefined"?: string;
|
|
1608
|
+
/**
|
|
1609
|
+
* Verifies whether the specified fields match the specified values.
|
|
1610
|
+
* @type {Record<string, string[]>}
|
|
1611
|
+
*/
|
|
1612
|
+
"mustMatch": Record<string, string[]>;
|
|
1613
|
+
/**
|
|
1614
|
+
* Verifies whether the specified fields do not match the specified values.
|
|
1615
|
+
* @type {Record<string, string[]>}
|
|
1616
|
+
*/
|
|
1617
|
+
"mustNotMatch": Record<string, string[]>;
|
|
1618
|
+
}
|
|
1587
1619
|
/**
|
|
1588
1620
|
* The `atomic-product-image` component renders an image from a product field.
|
|
1589
1621
|
* @alpha
|
|
@@ -3283,6 +3315,15 @@ export interface AtomicSmartSnippetSourceCustomEvent<T> extends CustomEvent<T> {
|
|
|
3283
3315
|
target: HTMLAtomicSmartSnippetSourceElement;
|
|
3284
3316
|
}
|
|
3285
3317
|
declare global {
|
|
3318
|
+
/**
|
|
3319
|
+
* The `atomic-aria-live` component notifies screen readers of changes in the search interface.
|
|
3320
|
+
*/
|
|
3321
|
+
interface HTMLAtomicAriaLiveElement extends Components.AtomicAriaLive, HTMLStencilElement {
|
|
3322
|
+
}
|
|
3323
|
+
var HTMLAtomicAriaLiveElement: {
|
|
3324
|
+
prototype: HTMLAtomicAriaLiveElement;
|
|
3325
|
+
new (): HTMLAtomicAriaLiveElement;
|
|
3326
|
+
};
|
|
3286
3327
|
/**
|
|
3287
3328
|
* An automatic facet is a special type of facet generated by the automatic facets feature.
|
|
3288
3329
|
* Unlike regular facets, which need to be explicitly defined and requested in the query,
|
|
@@ -4055,6 +4096,17 @@ declare global {
|
|
|
4055
4096
|
prototype: HTMLAtomicPopoverElement;
|
|
4056
4097
|
new (): HTMLAtomicPopoverElement;
|
|
4057
4098
|
};
|
|
4099
|
+
/**
|
|
4100
|
+
* The `atomic-product-field-condition` component takes a list of conditions that, if fulfilled, apply the template in which it's defined.
|
|
4101
|
+
* The condition properties can be based on any top-level product property of the `product` object, not restricted to fields (e.g., `ec_name`).
|
|
4102
|
+
* @alpha
|
|
4103
|
+
*/
|
|
4104
|
+
interface HTMLAtomicProductFieldConditionElement extends Components.AtomicProductFieldCondition, HTMLStencilElement {
|
|
4105
|
+
}
|
|
4106
|
+
var HTMLAtomicProductFieldConditionElement: {
|
|
4107
|
+
prototype: HTMLAtomicProductFieldConditionElement;
|
|
4108
|
+
new (): HTMLAtomicProductFieldConditionElement;
|
|
4109
|
+
};
|
|
4058
4110
|
/**
|
|
4059
4111
|
* The `atomic-product-image` component renders an image from a product field.
|
|
4060
4112
|
* @alpha
|
|
@@ -5063,6 +5115,7 @@ declare global {
|
|
|
5063
5115
|
new (): HTMLAtomicTimeframeFacetElement;
|
|
5064
5116
|
};
|
|
5065
5117
|
interface HTMLElementTagNameMap {
|
|
5118
|
+
"atomic-aria-live": HTMLAtomicAriaLiveElement;
|
|
5066
5119
|
"atomic-automatic-facet": HTMLAtomicAutomaticFacetElement;
|
|
5067
5120
|
"atomic-automatic-facet-generator": HTMLAtomicAutomaticFacetGeneratorElement;
|
|
5068
5121
|
"atomic-breadbox": HTMLAtomicBreadboxElement;
|
|
@@ -5144,6 +5197,7 @@ declare global {
|
|
|
5144
5197
|
"atomic-numeric-range": HTMLAtomicNumericRangeElement;
|
|
5145
5198
|
"atomic-pager": HTMLAtomicPagerElement;
|
|
5146
5199
|
"atomic-popover": HTMLAtomicPopoverElement;
|
|
5200
|
+
"atomic-product-field-condition": HTMLAtomicProductFieldConditionElement;
|
|
5147
5201
|
"atomic-product-image": HTMLAtomicProductImageElement;
|
|
5148
5202
|
"atomic-product-rating": HTMLAtomicProductRatingElement;
|
|
5149
5203
|
"atomic-product-section-actions": HTMLAtomicProductSectionActionsElement;
|
|
@@ -5230,6 +5284,11 @@ declare global {
|
|
|
5230
5284
|
}
|
|
5231
5285
|
}
|
|
5232
5286
|
declare namespace LocalJSX {
|
|
5287
|
+
/**
|
|
5288
|
+
* The `atomic-aria-live` component notifies screen readers of changes in the search interface.
|
|
5289
|
+
*/
|
|
5290
|
+
interface AtomicAriaLive {
|
|
5291
|
+
}
|
|
5233
5292
|
/**
|
|
5234
5293
|
* An automatic facet is a special type of facet generated by the automatic facets feature.
|
|
5235
5294
|
* Unlike regular facets, which need to be explicitly defined and requested in the query,
|
|
@@ -6700,6 +6759,31 @@ declare namespace LocalJSX {
|
|
|
6700
6759
|
*/
|
|
6701
6760
|
interface AtomicPopover {
|
|
6702
6761
|
}
|
|
6762
|
+
/**
|
|
6763
|
+
* The `atomic-product-field-condition` component takes a list of conditions that, if fulfilled, apply the template in which it's defined.
|
|
6764
|
+
* The condition properties can be based on any top-level product property of the `product` object, not restricted to fields (e.g., `ec_name`).
|
|
6765
|
+
* @alpha
|
|
6766
|
+
*/
|
|
6767
|
+
interface AtomicProductFieldCondition {
|
|
6768
|
+
/**
|
|
6769
|
+
* Verifies whether the specified fields are defined.
|
|
6770
|
+
*/
|
|
6771
|
+
"ifDefined"?: string;
|
|
6772
|
+
/**
|
|
6773
|
+
* Verifies whether the specified fields are not defined.
|
|
6774
|
+
*/
|
|
6775
|
+
"ifNotDefined"?: string;
|
|
6776
|
+
/**
|
|
6777
|
+
* Verifies whether the specified fields match the specified values.
|
|
6778
|
+
* @type {Record<string, string[]>}
|
|
6779
|
+
*/
|
|
6780
|
+
"mustMatch"?: Record<string, string[]>;
|
|
6781
|
+
/**
|
|
6782
|
+
* Verifies whether the specified fields do not match the specified values.
|
|
6783
|
+
* @type {Record<string, string[]>}
|
|
6784
|
+
*/
|
|
6785
|
+
"mustNotMatch"?: Record<string, string[]>;
|
|
6786
|
+
}
|
|
6703
6787
|
/**
|
|
6704
6788
|
* The `atomic-product-image` component renders an image from a product field.
|
|
6705
6789
|
* @alpha
|
|
@@ -8233,6 +8317,7 @@ declare namespace LocalJSX {
|
|
|
8233
8317
|
"withDatePicker"?: boolean;
|
|
8234
8318
|
}
|
|
8235
8319
|
interface IntrinsicElements {
|
|
8320
|
+
"atomic-aria-live": AtomicAriaLive;
|
|
8236
8321
|
"atomic-automatic-facet": AtomicAutomaticFacet;
|
|
8237
8322
|
"atomic-automatic-facet-generator": AtomicAutomaticFacetGenerator;
|
|
8238
8323
|
"atomic-breadbox": AtomicBreadbox;
|
|
@@ -8314,6 +8399,7 @@ declare namespace LocalJSX {
|
|
|
8314
8399
|
"atomic-numeric-range": AtomicNumericRange;
|
|
8315
8400
|
"atomic-pager": AtomicPager;
|
|
8316
8401
|
"atomic-popover": AtomicPopover;
|
|
8402
|
+
"atomic-product-field-condition": AtomicProductFieldCondition;
|
|
8317
8403
|
"atomic-product-image": AtomicProductImage;
|
|
8318
8404
|
"atomic-product-rating": AtomicProductRating;
|
|
8319
8405
|
"atomic-product-section-actions": AtomicProductSectionActions;
|
|
@@ -8403,6 +8489,10 @@ export { LocalJSX as JSX };
|
|
|
8403
8489
|
declare module "@stencil/core" {
|
|
8404
8490
|
export namespace JSX {
|
|
8405
8491
|
interface IntrinsicElements {
|
|
8492
|
+
/**
|
|
8493
|
+
* The `atomic-aria-live` component notifies screen readers of changes in the search interface.
|
|
8494
|
+
*/
|
|
8495
|
+
"atomic-aria-live": LocalJSX.AtomicAriaLive & JSXBase.HTMLAttributes<HTMLAtomicAriaLiveElement>;
|
|
8406
8496
|
/**
|
|
8407
8497
|
* An automatic facet is a special type of facet generated by the automatic facets feature.
|
|
8408
8498
|
* Unlike regular facets, which need to be explicitly defined and requested in the query,
|
|
@@ -8626,6 +8716,12 @@ declare module "@stencil/core" {
|
|
|
8626
8716
|
* The `atomic-popover` component displays any facet as a popover menu.
|
|
8627
8717
|
*/
|
|
8628
8718
|
"atomic-popover": LocalJSX.AtomicPopover & JSXBase.HTMLAttributes<HTMLAtomicPopoverElement>;
|
|
8719
|
+
/**
|
|
8720
|
+
* The `atomic-product-field-condition` component takes a list of conditions that, if fulfilled, apply the template in which it's defined.
|
|
8721
|
+
* The condition properties can be based on any top-level product property of the `product` object, not restricted to fields (e.g., `ec_name`).
|
|
8722
|
+
* @alpha
|
|
8723
|
+
*/
|
|
8724
|
+
"atomic-product-field-condition": LocalJSX.AtomicProductFieldCondition & JSXBase.HTMLAttributes<HTMLAtomicProductFieldConditionElement>;
|
|
8629
8725
|
/**
|
|
8630
8726
|
* The `atomic-product-image` component renders an image from a product field.
|
|
8631
8727
|
* @alpha
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type { ReactiveController, ReactiveControllerHost } from 'lit';
|
|
2
2
|
import type { AnyBindings } from '../components';
|
|
3
|
-
import type { AtomicAriaLive } from '../components/common/atomic-aria-live/atomic-aria-live';
|
|
4
3
|
export interface FindAriaLiveEventArgs {
|
|
5
|
-
element?:
|
|
4
|
+
element?: HTMLAtomicAriaLiveElement;
|
|
6
5
|
}
|
|
7
6
|
export declare class AriaLiveRegionController implements ReactiveController {
|
|
8
7
|
private host;
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { AtomicAriaLive } from '../components/common/atomic-aria-live/atomic-aria-live';
|
|
2
1
|
import { AnyBindings } from '../components/common/interface/bindings';
|
|
3
2
|
import { InitializableComponent } from './initialization-utils';
|
|
4
3
|
/**
|
|
5
4
|
* @deprecated use Lit equivalent
|
|
6
5
|
*/
|
|
7
6
|
export interface FindAriaLiveEventArgs {
|
|
8
|
-
element?:
|
|
7
|
+
element?: HTMLAtomicAriaLiveElement;
|
|
9
8
|
}
|
|
10
9
|
/**
|
|
11
10
|
* @deprecated use Lit equivalent
|