@coveo/atomic 3.31.2-pre.bd810aa426 → 3.31.2-pre.e1fe65e6c6
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 +2 -2
- package/dist/atomic/components/_index.js +1 -1
- package/dist/atomic/components/analytics-config.js +1 -1
- 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-description.d.ts +11 -0
- package/dist/atomic/components/atomic-product-description.js +153 -0
- package/dist/atomic/components/atomic-product-description.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 +1 -7
- 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-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-aria-live/atomic-aria-live.js +102 -0
- package/dist/atomic/components/components/common/index.js +1 -0
- package/dist/atomic/components/components/common/lazy-index.js +1 -0
- package/dist/atomic/components/debounce-utils.js +1 -34
- package/dist/atomic/components/debounce-utils.js.map +1 -1
- package/dist/atomic/components/global/environment.js +1 -1
- package/dist/atomic/components/plus.js +10 -0
- package/dist/atomic/components/plus.js.map +1 -0
- package/dist/atomic/components/stencil-accessibility-utils.js.map +1 -1
- package/dist/atomic/components/stencil-facet-show-more-less.js +1 -7
- package/dist/atomic/components/stencil-facet-show-more-less.js.map +1 -1
- package/dist/atomic/p-01c91b69.js +2 -0
- package/dist/atomic/p-01c91b69.js.map +1 -0
- package/dist/atomic/p-0873c1b8.entry.js +2 -0
- package/dist/atomic/{p-e8ba8acd.entry.js.map → p-0873c1b8.entry.js.map} +1 -1
- package/dist/atomic/{p-1b491649.entry.js → p-0af927f0.entry.js} +2 -2
- package/dist/atomic/{p-b043958c.entry.js → p-0b9cd281.entry.js} +2 -2
- package/dist/atomic/{p-e44ba87e.entry.js → p-0f5ae66e.entry.js} +2 -2
- package/dist/atomic/{p-0674783d.entry.js → p-1b329f85.entry.js} +2 -2
- package/dist/atomic/p-271cf67e.entry.js +2 -0
- package/dist/atomic/p-271cf67e.entry.js.map +1 -0
- package/dist/atomic/p-306161d1.entry.js +2 -0
- package/dist/atomic/{p-8b3df33c.entry.js → p-35a5a531.entry.js} +2 -2
- package/dist/atomic/p-3f881919.entry.js +2 -0
- package/dist/atomic/{p-91477908.entry.js.map → p-3f881919.entry.js.map} +1 -1
- package/dist/atomic/{p-773dcc60.entry.js → p-4588f63b.entry.js} +2 -2
- package/dist/atomic/{p-a0445771.entry.js → p-4c5702ba.entry.js} +2 -2
- package/dist/atomic/{p-00c7c8bc.entry.js → p-516bc402.entry.js} +2 -2
- package/dist/atomic/{p-acc4d5de.js → p-53bcc515.js} +2 -2
- package/dist/atomic/p-5c55e3ea.entry.js +2 -0
- package/dist/atomic/{p-29c272bb.entry.js.map → p-5c55e3ea.entry.js.map} +1 -1
- package/dist/atomic/{p-e2560da8.entry.js → p-5f64bbe0.entry.js} +2 -2
- package/dist/atomic/{p-fc73190d.entry.js → p-6638ca39.entry.js} +2 -2
- package/dist/atomic/{p-1176959c.entry.js → p-6f8ae3d2.entry.js} +2 -2
- package/dist/atomic/{p-0ed0e8b8.entry.js → p-731f82ed.entry.js} +2 -2
- package/dist/atomic/{p-25f8b8d8.entry.js → p-7a07530d.entry.js} +2 -2
- package/dist/atomic/{p-c8d47706.entry.js → p-7a5d346b.entry.js} +2 -2
- package/dist/atomic/{p-5b888121.entry.js → p-89721f11.entry.js} +2 -2
- package/dist/atomic/p-8f20d930.js +2 -0
- package/dist/atomic/p-8f20d930.js.map +1 -0
- package/dist/atomic/p-96a6f84f.js.map +1 -1
- package/dist/atomic/p-998138e3.entry.js +2 -0
- package/dist/atomic/{p-1e0f2e91.entry.js.map → p-998138e3.entry.js.map} +1 -1
- package/dist/atomic/{p-11dd759c.entry.js → p-b1f7ac63.entry.js} +2 -2
- package/dist/atomic/{p-5fc9f751.entry.js → p-bf5d5c79.entry.js} +2 -2
- package/dist/atomic/{p-716e9e1d.entry.js → p-c0025d4c.entry.js} +2 -2
- package/dist/atomic/p-c100197d.js +2 -0
- package/dist/atomic/{p-417b1b64.js.map → p-c100197d.js.map} +1 -1
- package/dist/atomic/{p-1e118dbf.js → p-ca4d4bb9.js} +2 -2
- package/dist/atomic/p-e215ba76.entry.js +2 -0
- package/dist/atomic/{p-44a3c052.entry.js.map → p-e215ba76.entry.js.map} +1 -1
- package/dist/atomic/{p-494c57a0.entry.js → p-e406cacd.entry.js} +2 -2
- package/dist/atomic/p-f0e861c5.entry.js +2 -0
- package/dist/atomic/p-f2d31b97.entry.js +2 -0
- package/dist/atomic/p-f2d31b97.entry.js.map +1 -0
- package/dist/atomic/{p-391c26ba.entry.js → p-f9bfd18b.entry.js} +2 -2
- package/dist/cjs/_loader.cjs.js +1 -1
- package/dist/cjs/{analytics-config-edaf0d1e.js → analytics-config-ebbdfacc.js} +2 -2
- package/dist/cjs/{analytics-config-edaf0d1e.js.map → analytics-config-ebbdfacc.js.map} +1 -1
- package/dist/cjs/atomic-category-facet.cjs.entry.js +3 -2
- package/dist/cjs/atomic-category-facet.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-color-facet.cjs.entry.js +2 -1
- package/dist/cjs/atomic-color-facet.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-commerce-category-facet_4.cjs.entry.js +2 -1
- package/dist/cjs/atomic-commerce-category-facet_4.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-facet.cjs.entry.js +3 -2
- package/dist/cjs/atomic-facet.cjs.entry.js.map +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-facet.cjs.entry.js +2 -1
- package/dist/cjs/atomic-insight-facet.cjs.entry.js.map +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-description.cjs.entry.js +141 -0
- package/dist/cjs/atomic-product-description.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-aria-live_2.cjs.entry.js → atomic-relevance-inspector.cjs.entry.js} +1 -68
- package/dist/cjs/atomic-relevance-inspector.cjs.entry.js.map +1 -0
- 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-d26bcad4.js +15 -0
- package/dist/cjs/debounce-utils-d26bcad4.js.map +1 -0
- package/dist/cjs/index-757bc886.js +8 -4
- package/dist/cjs/plus-07843914.js +13 -0
- package/dist/cjs/plus-07843914.js.map +1 -0
- package/dist/cjs/stencil-accessibility-utils-aa4c9f6c.js.map +1 -1
- package/dist/cjs/{stencil-facet-show-more-less-541e1544.js → stencil-facet-show-more-less-21d22973.js} +4 -10
- package/dist/cjs/stencil-facet-show-more-less-21d22973.js.map +1 -0
- package/dist/cjs/{stencil-suggestion-manager-6f778cf0.js → stencil-suggestion-manager-5fa3ac70.js} +2 -2
- package/dist/cjs/{stencil-suggestion-manager-6f778cf0.js.map → stencil-suggestion-manager-5fa3ac70.js.map} +1 -1
- package/dist/cjs/version.cjs.js +1 -1
- package/dist/esm/_loader.js +1 -1
- package/dist/esm/{analytics-config-1fab55eb.js → analytics-config-a3369b26.js} +2 -2
- package/dist/esm/{analytics-config-1fab55eb.js.map → analytics-config-a3369b26.js.map} +1 -1
- package/dist/esm/atomic-category-facet.entry.js +3 -2
- package/dist/esm/atomic-category-facet.entry.js.map +1 -1
- package/dist/esm/atomic-color-facet.entry.js +2 -1
- package/dist/esm/atomic-color-facet.entry.js.map +1 -1
- package/dist/esm/atomic-commerce-category-facet_4.entry.js +2 -1
- package/dist/esm/atomic-commerce-category-facet_4.entry.js.map +1 -1
- package/dist/esm/atomic-facet.entry.js +3 -2
- package/dist/esm/atomic-facet.entry.js.map +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-facet.entry.js +2 -1
- package/dist/esm/atomic-insight-facet.entry.js.map +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-description.entry.js +137 -0
- package/dist/esm/atomic-product-description.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-aria-live_2.entry.js → atomic-relevance-inspector.entry.js} +3 -69
- package/dist/esm/atomic-relevance-inspector.entry.js.map +1 -0
- 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-8619dece.js +13 -0
- package/dist/esm/{debounce-utils-efa015c0.js.map → debounce-utils-8619dece.js.map} +1 -1
- package/dist/esm/index-3f35faca.js +8 -4
- package/dist/esm/plus-00840ff6.js +10 -0
- package/dist/esm/plus-00840ff6.js.map +1 -0
- package/dist/esm/stencil-accessibility-utils-bc273be5.js.map +1 -1
- package/dist/esm/{stencil-facet-show-more-less-1198472f.js → stencil-facet-show-more-less-4b023ee3.js} +2 -8
- package/dist/esm/stencil-facet-show-more-less-4b023ee3.js.map +1 -0
- package/dist/esm/{stencil-suggestion-manager-91706623.js → stencil-suggestion-manager-f52c6e39.js} +2 -2
- package/dist/esm/{stencil-suggestion-manager-91706623.js.map → stencil-suggestion-manager-f52c6e39.js.map} +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/types/components/commerce/atomic-product-description/atomic-product-description.d.ts +10 -21
- 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/atomic-aria-live/atomic-aria-live.d.ts +38 -0
- package/dist/types/components/common/index.d.ts +1 -0
- package/dist/types/components.d.ts +51 -27
- package/dist/types/utils/accessibility-utils.d.ts +2 -1
- package/dist/types/utils/stencil-accessibility-utils.d.ts +2 -1
- package/docs/atomic-docs.json +124 -34
- package/package.json +1 -1
- package/dist/atomic/components/atomic-aria-live.d.ts +0 -11
- package/dist/atomic/components/atomic-aria-live.js +0 -8
- package/dist/atomic/components/atomic-aria-live.js.map +0 -1
- package/dist/atomic/components/atomic-aria-live2.js +0 -87
- package/dist/atomic/components/atomic-aria-live2.js.map +0 -1
- package/dist/atomic/components/components/commerce/atomic-product-description/atomic-product-description.js +0 -149
- package/dist/atomic/components/components/commerce/atomic-product-description/atomic-product-description.tw.css.js +0 -3
- package/dist/atomic/p-1e0f2e91.entry.js +0 -2
- package/dist/atomic/p-29c272bb.entry.js +0 -2
- package/dist/atomic/p-37b7705c.js +0 -2
- package/dist/atomic/p-37b7705c.js.map +0 -1
- package/dist/atomic/p-3f2442d3.entry.js +0 -2
- package/dist/atomic/p-3f2442d3.entry.js.map +0 -1
- package/dist/atomic/p-417b1b64.js +0 -2
- package/dist/atomic/p-44a3c052.entry.js +0 -2
- package/dist/atomic/p-91477908.entry.js +0 -2
- package/dist/atomic/p-e790d557.entry.js +0 -2
- package/dist/atomic/p-e8ba8acd.entry.js +0 -2
- package/dist/atomic/p-efd2bb5f.entry.js +0 -2
- package/dist/cjs/atomic-aria-live_2.cjs.entry.js.map +0 -1
- package/dist/cjs/debounce-utils-e014935f.js +0 -49
- package/dist/cjs/debounce-utils-e014935f.js.map +0 -1
- package/dist/cjs/stencil-facet-show-more-less-541e1544.js.map +0 -1
- package/dist/esm/atomic-aria-live_2.entry.js.map +0 -1
- package/dist/esm/debounce-utils-efa015c0.js +0 -46
- package/dist/esm/stencil-facet-show-more-less-1198472f.js.map +0 -1
- package/dist/types/components/search/atomic-search-interface/atomic-aria-live.d.ts +0 -23
- /package/dist/atomic/{p-1b491649.entry.js.map → p-0af927f0.entry.js.map} +0 -0
- /package/dist/atomic/{p-b043958c.entry.js.map → p-0b9cd281.entry.js.map} +0 -0
- /package/dist/atomic/{p-e44ba87e.entry.js.map → p-0f5ae66e.entry.js.map} +0 -0
- /package/dist/atomic/{p-0674783d.entry.js.map → p-1b329f85.entry.js.map} +0 -0
- /package/dist/atomic/{p-efd2bb5f.entry.js.map → p-306161d1.entry.js.map} +0 -0
- /package/dist/atomic/{p-8b3df33c.entry.js.map → p-35a5a531.entry.js.map} +0 -0
- /package/dist/atomic/{p-773dcc60.entry.js.map → p-4588f63b.entry.js.map} +0 -0
- /package/dist/atomic/{p-a0445771.entry.js.map → p-4c5702ba.entry.js.map} +0 -0
- /package/dist/atomic/{p-00c7c8bc.entry.js.map → p-516bc402.entry.js.map} +0 -0
- /package/dist/atomic/{p-acc4d5de.js.map → p-53bcc515.js.map} +0 -0
- /package/dist/atomic/{p-e2560da8.entry.js.map → p-5f64bbe0.entry.js.map} +0 -0
- /package/dist/atomic/{p-fc73190d.entry.js.map → p-6638ca39.entry.js.map} +0 -0
- /package/dist/atomic/{p-1176959c.entry.js.map → p-6f8ae3d2.entry.js.map} +0 -0
- /package/dist/atomic/{p-0ed0e8b8.entry.js.map → p-731f82ed.entry.js.map} +0 -0
- /package/dist/atomic/{p-25f8b8d8.entry.js.map → p-7a07530d.entry.js.map} +0 -0
- /package/dist/atomic/{p-c8d47706.entry.js.map → p-7a5d346b.entry.js.map} +0 -0
- /package/dist/atomic/{p-5b888121.entry.js.map → p-89721f11.entry.js.map} +0 -0
- /package/dist/atomic/{p-11dd759c.entry.js.map → p-b1f7ac63.entry.js.map} +0 -0
- /package/dist/atomic/{p-5fc9f751.entry.js.map → p-bf5d5c79.entry.js.map} +0 -0
- /package/dist/atomic/{p-716e9e1d.entry.js.map → p-c0025d4c.entry.js.map} +0 -0
- /package/dist/atomic/{p-1e118dbf.js.map → p-ca4d4bb9.js.map} +0 -0
- /package/dist/atomic/{p-494c57a0.entry.js.map → p-e406cacd.entry.js.map} +0 -0
- /package/dist/atomic/{p-e790d557.entry.js.map → p-f0e861c5.entry.js.map} +0 -0
- /package/dist/atomic/{p-391c26ba.entry.js.map → p-f9bfd18b.entry.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["atomicCommerceCategoryFacetCss","AtomicCommerceCategoryFacetStyle0","AtomicCommerceCategoryFacet","this","isCollapsed","resultIndexToFocusOnShowMore","initialize","facet","ensureSubscribed","announceFacetSearchResultsWithAriaLive","displayName","msg","facetSearchAriaMessage","bindings","i18n","facetInfo","label","t","facetId","facetState","element","host","isHidden","initializePopover","hasValues","values","length","numberOfActiveValues","hasActiveValues","focusTargets","showLessFocus","FocusTargetController","showMoreFocus","headerFocus","activeValueFocus","disconnectedCallback","isConnected","unsubscribeFacetController","undefined","connectedCallback","summaryState","hasError","selectedValueAncestry","componentShouldUpdate","next","prev","propName","isCategoryFacetState","shouldUpdateFacetSearchComponent","facetSearch","hasParents","renderHeader","h","FacetHeader","headingLevel","onToggleCollapse","onClearFilters","focusAfterSearch","deselectAll","headerRef","header","setTarget","renderSearchInput","FacetSearchInput","query","onChange","value","clear","updateText","search","onClear","renderValuesTree","parents","isRoot","renderChildren","CategoryFacetTreeValueContainer","CategoryFacetAllCategoryButton","onClick","CategoryFacetParentAsTreeContainer","isTopLevel","parentValue","CategoryFacetParentButton","facetValue","field","toggleSelect","slice","activeParent","activeParentDisplayValue","getFieldValueCaption","CategoryFacetParentValueLink","displayValue","numberOfResults","isLeafValue","searchQuery","setRef","el","CategoryFacetChildrenAsTreeContainer","renderChild","isShowLessFocusTarget","isShowMoreFocusTarget","isSelected","state","CategoryFacetChildValueLink","nextValues","children","map","i","renderSearchResults","CategoryFacetSearchResultsContainer","CategoryFacetSearchValue","select","renderMatches","FacetSearchMatches","numberOfMatches","hasMoreMatches","moreValuesAvailable","renderShowMoreLess","class","FacetShowMoreLess","onShowMore","showMoreValues","onShowLess","showLessValues","canShowLessValues","canShowMoreValues","render","firstRequestExecuted","FacetGuard","key","enabled","firstSearchExecuted","hasResults","FacetContainer","shouldDisplaySearchResults","Fragment","FacetValuesGroup","className","subscribe","__decorate","InitializeBindings","BindStateToController","AriaLiveRegion","atomicCommerceFacetCss","AtomicCommerceFacetStyle0","AtomicCommerceFacet","initAriaLive","initPopover","isFacetState","activeValues","renderBody","FacetSearchInputGuard","numberOfDisplayedValues","withSearch","renderValues","renderValuesContainer","part","FacetSearchValue","facetValueProps","facetCount","count","onExclude","exclude","onSelect","rawValue","shouldFocusOnShowLessAfterInteraction","shouldFocusOnShowMoreAfterInteraction","FacetValue","toggleExclude","btn","showMore","showLess","filter","facetSearchQuery","displayValuesAs","enableExclusion","atomicCommerceNumericFacetCss","AtomicCommerceNumericFacetStyle0","AtomicCommerceNumericFacet","manualRanges","focusTarget","context","buildContext","engine","registerFacetToStore","formatter","defaultCurrencyFormatter","contextState","currency","defaultNumberFormatter","numberOfSelectedValues","applyNumberInput","detail","start","end","setRanges","endInclusive","shouldRenderFacet","shouldRenderValues","shouldRenderInput","range","manualRange","logger","NumericFacetValuesContainer","valuesToRender","NumericFacetValueLink","hasInputRange","isLoading","hasProducts","shouldDisplayInputForFacetRange","searchStatusState","facetValues","hasInput","atomicCommerceTimeframeFacetCss","AtomicCommerceTimeframeFacetStyle0","AtomicCommerceTimeframeFacet","applyDateInput","inputRange","resetRange","formatFacetValue","startDate","deserializeRelativeDate","relativeDate","period","unit","amount","error","parseDate","format","renderValue","isExcluded","FacetValueLink","toggleSingleSelect","FacetValueLabelHighlight","renderDateInput","rangeGetter","rangeSetter"],"sources":["src/components/commerce/facets/atomic-commerce-category-facet/atomic-commerce-category-facet.pcss?tag=atomic-commerce-category-facet&encapsulation=shadow","src/components/commerce/facets/atomic-commerce-category-facet/atomic-commerce-category-facet.tsx","src/components/commerce/facets/atomic-commerce-facet/atomic-commerce-facet.pcss?tag=atomic-commerce-facet&encapsulation=shadow","src/components/commerce/facets/atomic-commerce-facet/atomic-commerce-facet.tsx","src/components/commerce/facets/atomic-commerce-numeric-facet/atomic-commerce-numeric-facet.pcss?tag=atomic-commerce-numeric-facet&encapsulation=shadow","src/components/commerce/facets/atomic-commerce-numeric-facet/atomic-commerce-numeric-facet.tsx","src/components/commerce/facets/atomic-commerce-timeframe-facet/atomic-commerce-timeframe-facet.pcss?tag=atomic-commerce-timeframe-facet&encapsulation=shadow","src/components/commerce/facets/atomic-commerce-timeframe-facet/atomic-commerce-timeframe-facet.tsx"],"sourcesContent":["@import '../../../common/facets/facet-common.pcss';\n@import '../../../common/facets/facet-search/facet-search.pcss';\n\n[part~='active-parent'] {\n @apply pl-9;\n}\n\n[part~='parents'] [part~='values'] {\n @apply pl-9;\n}\n\n[part~='all-categories-button'],\n[part~='parent-button'] {\n @apply relative flex w-full items-center py-2.5 pr-2 pl-7 text-left;\n}\n\n[part~='back-arrow'] {\n @apply absolute left-1 h-5 w-5;\n}\n","import {\n CategoryFacetState,\n CategoryFacetValue,\n CategoryFacet,\n SearchSummaryState,\n ProductListingSummaryState,\n Summary,\n} from '@coveo/headless/commerce';\nimport {Component, h, State, Prop, Element, Fragment} from '@stencil/core';\nimport {getFieldValueCaption} from '../../../../utils/field-utils';\nimport {\n BindStateToController,\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {\n AriaLiveRegion,\n FocusTargetController,\n} from '../../../../utils/stencil-accessibility-utils';\nimport {CategoryFacetAllCategoryButton} from '../../../common/facets/category-facet/all-categories-button';\nimport {CategoryFacetChildValueLink} from '../../../common/facets/category-facet/child-value-link';\nimport {CategoryFacetChildrenAsTreeContainer} from '../../../common/facets/category-facet/children-as-tree-container';\nimport {CategoryFacetParentAsTreeContainer} from '../../../common/facets/category-facet/parent-as-tree-container';\nimport {CategoryFacetParentButton} from '../../../common/facets/category-facet/parent-button';\nimport {CategoryFacetParentValueLink} from '../../../common/facets/category-facet/parent-value-link';\nimport {CategoryFacetSearchResultsContainer} from '../../../common/facets/category-facet/search-results-container';\nimport {CategoryFacetSearchValue} from '../../../common/facets/category-facet/search-value';\nimport {CategoryFacetTreeValueContainer} from '../../../common/facets/category-facet/value-as-tree-container';\nimport {FacetInfo} from '../../../common/facets/facet-common-store';\nimport {FacetContainer} from '../../../common/facets/facet-container/stencil-facet-container';\nimport {FacetGuard} from '../../../common/facets/facet-guard';\nimport {FacetHeader} from '../../../common/facets/facet-header/stencil-facet-header';\nimport {announceFacetSearchResultsWithAriaLive} from '../../../common/facets/facet-search/facet-search-aria-live';\nimport {\n shouldUpdateFacetSearchComponent,\n shouldDisplaySearchResults,\n} from '../../../common/facets/facet-search/facet-search-utils';\nimport {FacetSearchInput} from '../../../common/facets/facet-search/stencil-facet-search-input';\nimport {FacetSearchMatches} from '../../../common/facets/facet-search/stencil-facet-search-matches';\nimport {FacetShowMoreLess} from '../../../common/facets/facet-show-more-less/stencil-facet-show-more-less';\nimport {FacetValuesGroup} from '../../../common/facets/facet-values-group/stencil-facet-values-group';\nimport {initializePopover} from '../../../common/facets/popover/popover-type';\nimport {CommerceBindings as Bindings} from '../../atomic-commerce-interface/atomic-commerce-interface';\n\n/**\n * A facet is a list of values for a certain field occurring in the results, ordered using a configurable criteria (e.g., number of occurrences).\n * An `atomic-commerce-category-facet` displays a facet of values in a browsable, hierarchical fashion.\n *\n * @part facet - The wrapper for the entire facet.\n * @part placeholder - The placeholder shown before the first search is executed.\n *\n * @part label-button - The button that displays the label and allows to expand/collapse the facet.\n * @part label-button-icon - The label button icon.\n *\n * @part search-wrapper - The search box wrapper.\n * @part search-input - The search box input.\n * @part search-icon - The search box submit button.\n * @part search-clear-button - The button to clear the search box of input.\n * @part more-matches - The label indicating there are more matches for the current facet search query.\n * @part no-matches - The label indicating there are no matches for the current facet search query.\n * @part matches-query - The highlighted query inside the matches labels.\n * @part search-results - The search results container.\n * @part search-result - The search result value.\n * @part search-result-path - The search result path.\n * @part search-highlight - The highlighted query inside the facet values.\n *\n * @part parents - The container surrounding the whole hierarchy of values.\n * @part sub-parents - The container surrounding a sub-hierarchy of values.\n * @part values - The container surrounding either the children of the active value or the values at the base.\n * @part all-categories-button - The \"View all\" button displayed first within the parents.\n * @part parent-button - The clickable parent button displayed first within sub-parents.\n * @part active-parent - The clickable active parent displayed first within the last sub-parents.\n * @part value-link - The clickable value displayed first within values.\n * @part back-arrow - The back arrow displayed before the clickable parents.\n * @part value-label - The facet value label within a value button.\n * @part value-count - The facet value count within a value button.\n * @part leaf-value - A facet value with no child value.\n * @part node-value - A facet value with child values.\n *\n * @part show-more - The show more results button.\n * @part show-less - The show less results button.\n * @part show-more-less-icon - The icons of the show more & show less buttons.\n *\n * @alpha\n */\n@Component({\n tag: 'atomic-commerce-category-facet',\n styleUrl: 'atomic-commerce-category-facet.pcss',\n shadow: true,\n})\nexport class AtomicCommerceCategoryFacet\n implements InitializableComponent<Bindings>\n{\n @InitializeBindings() public bindings!: Bindings;\n @Element() private host!: HTMLElement;\n\n /**\n * The summary controller instance.\n */\n @Prop() summary!: Summary<SearchSummaryState | ProductListingSummaryState>;\n /**\n * The category facet controller instance.\n */\n @Prop() public facet!: CategoryFacet;\n /**\n * Specifies whether the facet is collapsed.\n */\n @Prop({reflect: true, mutable: true}) public isCollapsed = false;\n /**\n * The field identifier for this facet.\n */\n @Prop({reflect: true}) field?: string;\n\n @State()\n public facetState!: CategoryFacetState;\n\n @BindStateToController('summary')\n @State()\n public summaryState!: SearchSummaryState | ProductListingSummaryState;\n\n @State() public error!: Error;\n\n private resultIndexToFocusOnShowMore = 0;\n private showLessFocus?: FocusTargetController;\n private showMoreFocus?: FocusTargetController;\n private headerFocus?: FocusTargetController;\n private activeValueFocus?: FocusTargetController;\n private unsubscribeFacetController?: () => void | undefined;\n\n @AriaLiveRegion('facet-search')\n protected facetSearchAriaMessage!: string;\n\n public initialize() {\n if (!this.facet) {\n return;\n }\n\n this.ensureSubscribed();\n announceFacetSearchResultsWithAriaLive(\n this.facet,\n this.displayName,\n (msg) => (this.facetSearchAriaMessage = msg),\n this.bindings.i18n\n );\n\n const facetInfo: FacetInfo = {\n label: () => this.bindings.i18n.t(this.displayName),\n facetId: this.facetState.facetId,\n element: this.host,\n isHidden: () => this.isHidden,\n };\n\n initializePopover(this.host, {\n ...facetInfo,\n hasValues: () => !!this.facetState.values.length,\n numberOfActiveValues: () => (this.facetState.hasActiveValues ? 1 : 0),\n });\n }\n\n private get displayName() {\n return this.facetState?.displayName || 'no-label';\n }\n\n private get focusTargets() {\n if (!this.showLessFocus) {\n this.showLessFocus = new FocusTargetController(this);\n }\n if (!this.showMoreFocus) {\n this.showMoreFocus = new FocusTargetController(this);\n }\n if (!this.headerFocus) {\n this.headerFocus = new FocusTargetController(this);\n }\n if (!this.activeValueFocus) {\n this.activeValueFocus = new FocusTargetController(this);\n }\n\n return {\n showLessFocus: this.showLessFocus,\n showMoreFocus: this.showMoreFocus,\n headerFocus: this.headerFocus,\n activeValueFocus: this.activeValueFocus,\n };\n }\n\n public disconnectedCallback() {\n if (this.host.isConnected) {\n return;\n }\n this.unsubscribeFacetController?.();\n this.unsubscribeFacetController = undefined;\n }\n\n public connectedCallback(): void {\n this.ensureSubscribed();\n }\n\n private get isHidden() {\n return (\n this.summaryState.hasError ||\n (!this.facetState.values.length &&\n !this.facetState.selectedValueAncestry?.length)\n );\n }\n\n public componentShouldUpdate(\n next: unknown,\n prev: unknown,\n propName: keyof AtomicCommerceCategoryFacet\n ) {\n if (\n this.isCategoryFacetState(prev, propName) &&\n this.isCategoryFacetState(next, propName)\n ) {\n return shouldUpdateFacetSearchComponent(\n next.facetSearch,\n prev.facetSearch\n );\n }\n return true;\n }\n\n private get hasParents() {\n return !!this.facetState.selectedValueAncestry?.length;\n }\n\n private renderHeader() {\n return (\n <FacetHeader\n i18n={this.bindings.i18n}\n label={this.displayName}\n numberOfActiveValues={\n this.facetState.hasActiveValues && this.isCollapsed ? 1 : 0\n }\n isCollapsed={this.isCollapsed}\n headingLevel={0}\n onToggleCollapse={() => (this.isCollapsed = !this.isCollapsed)}\n onClearFilters={() => {\n this.focusTargets.headerFocus.focusAfterSearch();\n this.facet.deselectAll();\n }}\n headerRef={(header) => {\n this.focusTargets.headerFocus.setTarget(header);\n if (!this.hasParents) {\n this.focusTargets.activeValueFocus.setTarget(header);\n }\n }}\n ></FacetHeader>\n );\n }\n\n private renderSearchInput() {\n return (\n <FacetSearchInput\n i18n={this.bindings.i18n}\n label={this.displayName}\n query={this.facetState.facetSearch.query}\n onChange={(value: string) => {\n if (value === '') {\n this.facet.facetSearch.clear();\n return;\n }\n this.facet.facetSearch.updateText(value);\n this.facet.facetSearch.search();\n }}\n onClear={() => this.facet.facetSearch.clear()}\n ></FacetSearchInput>\n );\n }\n\n private renderValuesTree(parents: CategoryFacetValue[], isRoot: boolean) {\n if (!this.hasParents) {\n return this.renderChildren();\n }\n\n if (isRoot) {\n return (\n <CategoryFacetTreeValueContainer>\n <CategoryFacetAllCategoryButton\n i18n={this.bindings.i18n}\n onClick={() => {\n this.focusTargets.activeValueFocus.focusAfterSearch();\n this.facet.deselectAll();\n }}\n />\n <CategoryFacetParentAsTreeContainer isTopLevel={false}>\n {this.renderValuesTree(parents, false)}\n </CategoryFacetParentAsTreeContainer>\n </CategoryFacetTreeValueContainer>\n );\n }\n\n if (parents.length > 1) {\n const parentValue = parents[0];\n\n return (\n <CategoryFacetTreeValueContainer>\n <CategoryFacetParentButton\n facetValue={parentValue}\n field={this.facetState?.field}\n i18n={this.bindings.i18n}\n onClick={() => {\n this.focusTargets.activeValueFocus.focusAfterSearch();\n this.facet.toggleSelect(parentValue);\n }}\n />\n <CategoryFacetParentAsTreeContainer isTopLevel={false}>\n {this.renderValuesTree(parents.slice(1), false)}\n </CategoryFacetParentAsTreeContainer>\n </CategoryFacetTreeValueContainer>\n );\n }\n\n const activeParent = parents[0];\n const activeParentDisplayValue = getFieldValueCaption(\n this.facetState?.field,\n activeParent.value,\n this.bindings.i18n\n );\n\n return (\n <CategoryFacetParentValueLink\n displayValue={activeParentDisplayValue}\n numberOfResults={activeParent.numberOfResults}\n i18n={this.bindings.i18n}\n isLeafValue={activeParent.isLeafValue}\n onClick={() => {\n this.focusTargets.activeValueFocus.focusAfterSearch();\n this.facet.deselectAll();\n }}\n searchQuery={this.facetState.facetSearch.query}\n setRef={(el) => this.focusTargets.activeValueFocus.setTarget(el)}\n >\n <CategoryFacetChildrenAsTreeContainer>\n {this.renderChildren()}\n </CategoryFacetChildrenAsTreeContainer>\n </CategoryFacetParentValueLink>\n );\n }\n\n private renderChild(\n facetValue: CategoryFacetValue,\n isShowLessFocusTarget: boolean,\n isShowMoreFocusTarget: boolean\n ) {\n const displayValue = getFieldValueCaption(\n this.facetState?.field,\n facetValue.value,\n this.bindings.i18n\n );\n const isSelected = facetValue.state === 'selected';\n return (\n <CategoryFacetChildValueLink\n displayValue={displayValue}\n i18n={this.bindings.i18n}\n isLeafValue={facetValue.isLeafValue}\n isSelected={isSelected}\n numberOfResults={facetValue.numberOfResults}\n onClick={() => {\n this.focusTargets.activeValueFocus.focusAfterSearch();\n this.facet.toggleSelect(facetValue);\n }}\n searchQuery={this.facetState.facetSearch.query}\n setRef={(element) => {\n isShowLessFocusTarget &&\n this.focusTargets.showLessFocus.setTarget(element);\n isShowMoreFocusTarget &&\n this.focusTargets.showMoreFocus.setTarget(element);\n }}\n ></CategoryFacetChildValueLink>\n );\n }\n\n private renderChildren() {\n const {values, selectedValueAncestry, hasActiveValues} = this.facetState;\n const nextValues = hasActiveValues ? selectedValueAncestry : values;\n\n const children = nextValues?.length\n ? hasActiveValues\n ? nextValues[nextValues.length - 1].children\n : nextValues\n : [];\n\n return children.map((value, i) =>\n this.renderChild(value, i === 0, i === this.resultIndexToFocusOnShowMore)\n );\n }\n\n private renderSearchResults() {\n return (\n <CategoryFacetSearchResultsContainer>\n {this.facetState.facetSearch.values.map((value) => (\n <CategoryFacetSearchValue\n value={value}\n field={this.facetState?.field}\n i18n={this.bindings.i18n}\n searchQuery={this.facetState.facetSearch.query}\n onClick={() => {\n this.focusTargets.activeValueFocus.focusAfterSearch();\n this.facet.facetSearch.select(value);\n }}\n ></CategoryFacetSearchValue>\n ))}\n </CategoryFacetSearchResultsContainer>\n );\n }\n\n private renderMatches() {\n return (\n <FacetSearchMatches\n i18n={this.bindings.i18n}\n query={this.facetState.facetSearch.query}\n numberOfMatches={this.facetState.facetSearch.values.length}\n hasMoreMatches={this.facetState.facetSearch.moreValuesAvailable}\n ></FacetSearchMatches>\n );\n }\n\n private renderShowMoreLess() {\n return (\n <div class={this.hasParents ? 'pl-9' : ''}>\n <FacetShowMoreLess\n label={this.displayName}\n i18n={this.bindings.i18n}\n onShowMore={() => {\n this.resultIndexToFocusOnShowMore = this.facetState.values.length;\n this.focusTargets.showMoreFocus.focusAfterSearch();\n this.facet.showMoreValues();\n }}\n onShowLess={() => {\n this.focusTargets.showLessFocus.focusAfterSearch();\n this.facet.showLessValues();\n }}\n canShowLessValues={this.facetState.canShowLessValues}\n canShowMoreValues={this.facetState.canShowMoreValues}\n ></FacetShowMoreLess>\n </div>\n );\n }\n\n private isCategoryFacetState(\n state: unknown,\n propName: string\n ): state is CategoryFacetState {\n return (\n propName === 'facetState' &&\n typeof (state as CategoryFacetState)?.facetId === 'string'\n );\n }\n\n public render() {\n const {\n bindings: {i18n},\n facetState: {facetSearch, selectedValueAncestry, values},\n } = this;\n\n const {hasError, firstRequestExecuted} = this.summaryState;\n\n return (\n <FacetGuard\n enabled={true}\n firstSearchExecuted={firstRequestExecuted}\n hasError={hasError}\n hasResults={values.length > 0}\n >\n {\n <FacetContainer>\n {this.renderHeader()}\n {!this.isCollapsed && [\n this.renderSearchInput(),\n shouldDisplaySearchResults(facetSearch) ? (\n <Fragment>\n {facetSearch.values.length ? (\n <FacetValuesGroup\n i18n={i18n}\n label={this.displayName}\n query={facetSearch.query}\n >\n {this.renderSearchResults()}\n </FacetValuesGroup>\n ) : (\n <div class=\"mt-3\"></div>\n )}\n {this.renderMatches()}\n </Fragment>\n ) : (\n <Fragment>\n <FacetValuesGroup i18n={i18n} label={this.displayName}>\n {this.hasParents ? (\n <CategoryFacetParentAsTreeContainer\n isTopLevel={true}\n className=\"mt-3\"\n >\n {selectedValueAncestry &&\n this.renderValuesTree(selectedValueAncestry, true)}\n </CategoryFacetParentAsTreeContainer>\n ) : (\n <CategoryFacetChildrenAsTreeContainer className=\"mt-3\">\n {this.renderChildren()}\n </CategoryFacetChildrenAsTreeContainer>\n )}\n </FacetValuesGroup>\n {this.renderShowMoreLess()}\n </Fragment>\n ),\n ]}\n </FacetContainer>\n }\n </FacetGuard>\n );\n }\n\n private ensureSubscribed() {\n if (this.unsubscribeFacetController) {\n return;\n }\n this.unsubscribeFacetController = this.facet.subscribe(\n () => (this.facetState = this.facet.state)\n );\n }\n}\n","@import '../../../../global/global.pcss';\n@import '../../../common/facets/facet-search/facet-search.pcss';\n@import '../../../common/facets/facet-common.pcss';\n@import '../../../common/facets/facet-value-checkbox/facet-value-checkbox.pcss';\n@import '../../../common/facets/facet-value-exclude/facet-value-exclude.pcss';\n@import '../../../common/facets/facet-value-box/facet-value-box.pcss';\n","import {\n ProductListingSummaryState,\n RegularFacet,\n RegularFacetState,\n SearchSummaryState,\n Summary,\n} from '@coveo/headless/commerce';\nimport {\n Component,\n h,\n State,\n Prop,\n Element,\n VNode,\n Fragment,\n} from '@stencil/core';\nimport {\n BindStateToController,\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {\n AriaLiveRegion,\n FocusTargetController,\n} from '../../../../utils/stencil-accessibility-utils';\nimport {FacetInfo} from '../../../common/facets/facet-common-store';\nimport {FacetContainer} from '../../../common/facets/facet-container/stencil-facet-container';\nimport {FacetGuard} from '../../../common/facets/facet-guard';\nimport {FacetHeader} from '../../../common/facets/facet-header/stencil-facet-header';\nimport {announceFacetSearchResultsWithAriaLive} from '../../../common/facets/facet-search/facet-search-aria-live';\nimport {\n shouldDisplaySearchResults,\n shouldUpdateFacetSearchComponent,\n} from '../../../common/facets/facet-search/facet-search-utils';\nimport {FacetSearchInput} from '../../../common/facets/facet-search/stencil-facet-search-input';\nimport {FacetSearchInputGuard} from '../../../common/facets/facet-search/stencil-facet-search-input-guard';\nimport {FacetSearchMatches} from '../../../common/facets/facet-search/stencil-facet-search-matches';\nimport {FacetSearchValue} from '../../../common/facets/facet-search/stencil-facet-search-value';\nimport {FacetShowMoreLess} from '../../../common/facets/facet-show-more-less/stencil-facet-show-more-less';\nimport {\n FacetValueProps,\n FacetValue,\n} from '../../../common/facets/facet-value/stencil-facet-value';\nimport {FacetValuesGroup} from '../../../common/facets/facet-values-group/stencil-facet-values-group';\nimport {initializePopover} from '../../../common/facets/popover/popover-type';\nimport {CommerceBindings as Bindings} from '../../atomic-commerce-interface/atomic-commerce-interface';\n\n/**\n * The `atomic-commerce-facet` component renders a commerce facet that the end user can interact with to filter products.\n *\n * @part facet - The wrapper for the entire facet.\n * @part placeholder - The placeholder shown before the first search is executed.\n *\n * @part label-button - The button that displays the label and allows to expand/collapse the facet.\n * @part label-button-icon - The label button icon.\n * @part clear-button - The button that resets the actively selected facet values.\n * @part clear-button-icon - The clear button icon.\n *\n * @part search-wrapper - The search box wrapper.\n * @part search-input - The search box input.\n * @part search-icon - The search box submit button.\n * @part search-clear-button - The button to clear the search box of input.\n * @part more-matches - The label indicating there are more matches for the current facet search query.\n * @part no-matches - The label indicating there are no matches for the current facet search query.\n * @part matches-query - The highlighted query inside the matches labels.\n * @part search-highlight - The highlighted query inside the facet values.\n *\n * @part values - The facet values container.\n * @part value-label - The facet value label, common for all displays.\n * @part value-count - The facet value count, common for all displays.\n *\n * @part value-checkbox - The facet value checkbox, available when display is 'checkbox'.\n * @part value-checkbox-checked - The checked facet value checkbox, available when display is 'checkbox'.\n * @part value-checkbox-label - The facet value checkbox clickable label, available when display is 'checkbox'.\n * @part value-checkbox-icon - The facet value checkbox icon, available when display is 'checkbox'.\n * @part value-link - The facet value when display is 'link'.\n * @part value-link-selected - The selected facet value when display is 'link'.\n * @part value-box - The facet value when display is 'box'.\n * @part value-box-selected - The selected facet value when display is 'box'.\n * @part value-exclude-button - The button to exclude a facet value, available when display is 'checkbox'.\n *\n * @part show-more - The show more results button.\n * @part show-less - The show less results button.\n * @part show-more-less-icon - The icons of the show more & show less buttons.\n *\n * @alpha\n */\n@Component({\n tag: 'atomic-commerce-facet',\n styleUrl: 'atomic-commerce-facet.pcss',\n shadow: true,\n})\nexport class AtomicCommerceFacet implements InitializableComponent<Bindings> {\n @InitializeBindings() public bindings!: Bindings;\n @Element() private host!: HTMLElement;\n\n /**\n * The Summary controller instance.\n */\n @Prop() summary!: Summary<SearchSummaryState | ProductListingSummaryState>;\n /**\n * The facet controller instance.\n */\n @Prop() public facet!: RegularFacet;\n /**\n * Specifies whether the facet is collapsed.\n */\n @Prop({reflect: true, mutable: true}) public isCollapsed = false;\n /**\n * The field identifier for this facet.\n */\n @Prop({reflect: true}) field?: string;\n\n @State()\n public facetState!: RegularFacetState;\n\n @BindStateToController('summary')\n @State()\n public summaryState!: SearchSummaryState | ProductListingSummaryState;\n\n @State() public error!: Error;\n\n private showLessFocus?: FocusTargetController;\n private showMoreFocus?: FocusTargetController;\n private headerFocus?: FocusTargetController;\n private unsubscribeFacetController?: () => void | undefined;\n\n @AriaLiveRegion('facet-search')\n protected facetSearchAriaMessage!: string;\n\n public initialize() {\n if (!this.facet) {\n return;\n }\n this.ensureSubscribed();\n this.initAriaLive();\n this.initPopover();\n }\n\n public connectedCallback(): void {\n this.ensureSubscribed();\n }\n\n public disconnectedCallback(): void {\n this.unsubscribeFacetController?.();\n this.unsubscribeFacetController = undefined;\n }\n\n public componentShouldUpdate(\n next: unknown,\n prev: unknown,\n propName: keyof AtomicCommerceFacet\n ) {\n if (\n this.isFacetState(prev, propName) &&\n this.isFacetState(next, propName)\n ) {\n return shouldUpdateFacetSearchComponent(\n next.facetSearch,\n prev.facetSearch\n );\n }\n return true;\n }\n\n public render() {\n if (!this.facet) {\n return;\n }\n const {hasError, firstRequestExecuted} = this.summaryState;\n return (\n <FacetGuard\n enabled={true}\n hasError={hasError}\n firstSearchExecuted={firstRequestExecuted}\n hasResults={this.facetState.values.length > 0}\n >\n {\n <FacetContainer>\n <FacetHeader\n i18n={this.bindings.i18n}\n label={this.displayName}\n onClearFilters={() => {\n this.focusTargets.header.focusAfterSearch();\n this.facet.deselectAll();\n }}\n numberOfActiveValues={this.activeValues.length}\n isCollapsed={this.isCollapsed}\n headingLevel={0}\n onToggleCollapse={() => (this.isCollapsed = !this.isCollapsed)}\n headerRef={(el) => this.focusTargets.header.setTarget(el)}\n ></FacetHeader>\n {this.renderBody()}\n </FacetContainer>\n }\n </FacetGuard>\n );\n }\n\n private renderBody() {\n if (this.isCollapsed) {\n return;\n }\n return (\n <Fragment>\n <FacetSearchInputGuard\n canShowMoreValues={this.facetState.canShowMoreValues}\n numberOfDisplayedValues={this.facetState.values.length}\n withSearch={true}\n >\n <FacetSearchInput\n i18n={this.bindings.i18n}\n label={this.displayName}\n onChange={(value) => {\n if (value === '') {\n this.facet.facetSearch.clear();\n return;\n }\n this.facet.facetSearch.updateText(value);\n this.facet.facetSearch.search();\n }}\n onClear={() => this.facet.facetSearch.clear()}\n query={this.facetState.facetSearch.query}\n />\n </FacetSearchInputGuard>\n {shouldDisplaySearchResults(this.facetState.facetSearch)\n ? [this.renderSearchResults(), this.renderMatches()]\n : [this.renderValues(), this.renderShowMoreLess()]}\n </Fragment>\n );\n }\n\n private renderValuesContainer(children: VNode[], query?: string) {\n return (\n <FacetValuesGroup\n i18n={this.bindings.i18n}\n label={this.displayName}\n query={query}\n >\n <ul part=\"values\" class=\"mt-3\">\n {children}\n </ul>\n </FacetValuesGroup>\n );\n }\n\n private renderSearchResults() {\n return this.renderValuesContainer(\n this.facetState.facetSearch.values.map((value) => (\n <FacetSearchValue\n {...this.facetValueProps}\n facetCount={value.count}\n onExclude={() => this.facet.facetSearch.exclude(value)}\n onSelect={() => this.facet.facetSearch.select(value)}\n facetValue={value.rawValue}\n />\n ))\n );\n }\n\n private renderValues() {\n return this.renderValuesContainer(\n this.facetState.values.map((value, i) => {\n const shouldFocusOnShowLessAfterInteraction = i === 0;\n const shouldFocusOnShowMoreAfterInteraction = i === 0;\n\n return (\n <FacetValue\n {...this.facetValueProps}\n facetCount={value.numberOfResults}\n onExclude={() => this.facet.toggleExclude(value)}\n onSelect={() => this.facet.toggleSelect(value)}\n facetValue={value.value}\n facetState={value.state}\n setRef={(btn) => {\n if (shouldFocusOnShowLessAfterInteraction) {\n this.showLessFocus?.setTarget(btn);\n }\n if (shouldFocusOnShowMoreAfterInteraction) {\n this.showMoreFocus?.setTarget(btn);\n }\n }}\n />\n );\n })\n );\n }\n\n private renderShowMoreLess() {\n return (\n <FacetShowMoreLess\n label={this.displayName}\n i18n={this.bindings.i18n}\n onShowMore={() => {\n this.focusTargets.showMore.focusAfterSearch();\n this.facet.showMoreValues();\n }}\n onShowLess={() => {\n this.focusTargets.showLess.focusAfterSearch();\n this.facet.showLessValues();\n }}\n canShowMoreValues={this.facetState.canShowMoreValues}\n canShowLessValues={this.facetState.canShowLessValues}\n ></FacetShowMoreLess>\n );\n }\n\n private renderMatches() {\n return (\n <FacetSearchMatches\n i18n={this.bindings.i18n}\n query={this.facetState.facetSearch.query}\n numberOfMatches={this.facetState.facetSearch.values.length}\n hasMoreMatches={this.facetState.facetSearch.moreValuesAvailable}\n ></FacetSearchMatches>\n );\n }\n\n private get activeValues() {\n return this.facetState.values.filter(({state}) => state !== 'idle');\n }\n\n private get displayName() {\n return this.facetState.displayName || 'no-label';\n }\n\n private get facetValueProps(): Pick<\n FacetValueProps,\n | 'facetSearchQuery'\n | 'enableExclusion'\n | 'field'\n | 'i18n'\n | 'displayValuesAs'\n > {\n return {\n facetSearchQuery: this.facetState.facetSearch.query,\n displayValuesAs: 'checkbox',\n enableExclusion: false,\n field: this.facetState.field,\n i18n: this.bindings.i18n,\n };\n }\n\n private get isHidden() {\n return !this.facetState.values.length;\n }\n\n private initPopover() {\n initializePopover(this.host, {\n ...this.facetInfo,\n hasValues: () => !!this.facetState.values.length,\n numberOfActiveValues: () => this.activeValues.length,\n });\n }\n\n private initAriaLive() {\n announceFacetSearchResultsWithAriaLive(\n this.facet,\n this.displayName,\n (msg) => (this.facetSearchAriaMessage = msg),\n this.bindings.i18n\n );\n }\n\n private get facetInfo(): FacetInfo {\n return {\n label: () => this.bindings.i18n.t(this.displayName),\n facetId: this.facetState.facetId,\n element: this.host,\n isHidden: () => this.isHidden,\n };\n }\n\n private get focusTargets(): {\n showLess: FocusTargetController;\n showMore: FocusTargetController;\n header: FocusTargetController;\n } {\n if (!this.showLessFocus) {\n this.showLessFocus = new FocusTargetController(this);\n }\n if (!this.showMoreFocus) {\n this.showMoreFocus = new FocusTargetController(this);\n }\n if (!this.headerFocus) {\n this.headerFocus = new FocusTargetController(this);\n }\n\n return {\n showLess: this.showLessFocus,\n showMore: this.showMoreFocus,\n header: this.headerFocus,\n };\n }\n\n private isFacetState(\n state: unknown,\n propName: string\n ): state is RegularFacetState {\n return (\n propName === 'facetState' &&\n typeof (state as RegularFacetState)?.facetId === 'string'\n );\n }\n\n private ensureSubscribed() {\n if (this.unsubscribeFacetController) {\n return;\n }\n this.unsubscribeFacetController = this.facet.subscribe(\n () => (this.facetState = this.facet.state)\n );\n }\n}\n","@import '../../../common/facets/numeric-facet-common.pcss';\n","import {\n NumericFacet,\n NumericFacetState,\n NumericRangeRequest,\n ProductListingSummaryState,\n SearchSummaryState,\n Summary,\n Context,\n ContextState,\n buildContext,\n} from '@coveo/headless/commerce';\nimport {Component, Element, h, Listen, Prop, State} from '@stencil/core';\nimport {\n BindStateToController,\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {FocusTargetController} from '../../../../utils/stencil-accessibility-utils';\nimport {FacetInfo} from '../../../common/facets/facet-common-store';\nimport {FacetContainer} from '../../../common/facets/facet-container/stencil-facet-container';\nimport {FacetGuard} from '../../../common/facets/facet-guard';\nimport {FacetHeader} from '../../../common/facets/facet-header/stencil-facet-header';\nimport {NumericFacetValueLink} from '../../../common/facets/numeric-facet/value-link';\nimport {NumericFacetValuesContainer} from '../../../common/facets/numeric-facet/values-container';\nimport {initializePopover} from '../../../common/facets/popover/popover-type';\nimport {shouldDisplayInputForFacetRange} from '../../../common/facets/stencil-facet-common';\nimport {\n defaultCurrencyFormatter,\n defaultNumberFormatter,\n} from '../../../common/formats/format-common';\nimport {CommerceBindings as Bindings} from '../../atomic-commerce-interface/atomic-commerce-interface';\nimport type {Range} from '../facet-number-input/atomic-commerce-facet-number-input';\n\n/**\n * The `atomic-commerce-numeric-facet` component is responsible for rendering a commerce facet that allows the user to filter products using numeric ranges.\n *\n * @alpha\n */\n@Component({\n tag: 'atomic-commerce-numeric-facet',\n styleUrl: './atomic-commerce-numeric-facet.pcss',\n shadow: true,\n})\nexport class AtomicCommerceNumericFacet\n implements InitializableComponent<Bindings>\n{\n @InitializeBindings() public bindings!: Bindings;\n @Element() private host!: HTMLElement;\n\n @BindStateToController('facet')\n @State()\n public facetState!: NumericFacetState;\n\n @BindStateToController('summary')\n @State()\n public summaryState!: SearchSummaryState | ProductListingSummaryState;\n\n public context!: Context;\n @BindStateToController('context') contextState!: ContextState;\n\n @State() public error!: Error;\n\n private manualRanges: (NumericRangeRequest & {label?: string})[] = [];\n\n /**\n * The Summary controller instance.\n */\n @Prop() summary!: Summary<SearchSummaryState | ProductListingSummaryState>;\n /**\n * The numeric facet controller instance.\n */\n @Prop({reflect: true}) public facet!: NumericFacet;\n /**\n * Specifies whether the facet is collapsed.\n */\n @Prop({reflect: true, mutable: true}) public isCollapsed = false;\n /**\n * The field identifier for this facet.\n */\n @Prop({reflect: true}) field?: string;\n\n private headerFocus?: FocusTargetController;\n\n private get focusTarget(): FocusTargetController {\n if (!this.headerFocus) {\n this.headerFocus = new FocusTargetController(this);\n }\n return this.headerFocus;\n }\n\n private unsubscribeFacetController?: () => void | undefined;\n\n public initialize() {\n if (!this.facet) {\n return;\n }\n\n this.context = buildContext(this.bindings.engine);\n this.ensureSubscribed();\n this.registerFacetToStore();\n }\n\n public connectedCallback() {\n this.ensureSubscribed();\n }\n\n public disconnectedCallback() {\n this.unsubscribeFacetController?.();\n this.unsubscribeFacetController = undefined;\n }\n\n private get formatter() {\n if (this.field === 'ec_price' || this.field === 'ec_promo_price') {\n return defaultCurrencyFormatter(this.contextState.currency);\n }\n return defaultNumberFormatter;\n }\n\n private registerFacetToStore() {\n const {facetId} = this.facetState;\n const facetInfo: FacetInfo = {\n label: () => this.bindings.i18n.t(this.displayName),\n facetId: facetId,\n element: this.host,\n isHidden: () => this.isHidden,\n };\n\n initializePopover(this.host, {\n ...facetInfo,\n hasValues: () => this.hasValues,\n numberOfActiveValues: () => this.numberOfSelectedValues,\n });\n }\n\n @Listen('atomic/numberInputApply')\n public applyNumberInput({detail}: CustomEvent<Range>) {\n const {start, end} = detail;\n this.facet.setRanges([\n {\n start,\n end,\n endInclusive: true,\n state: 'selected',\n },\n ]);\n }\n\n public render() {\n const {\n bindings: {i18n},\n } = this;\n const {firstRequestExecuted, hasError} = this.summaryState;\n return (\n <FacetGuard\n enabled={true}\n firstSearchExecuted={firstRequestExecuted}\n hasError={hasError}\n hasResults={this.shouldRenderFacet}\n >\n {\n <FacetContainer>\n <FacetHeader\n i18n={i18n}\n label={this.displayName}\n onClearFilters={() => {\n this.focusTarget.focusAfterSearch();\n this.facet.deselectAll();\n }}\n numberOfActiveValues={this.numberOfSelectedValues}\n isCollapsed={this.isCollapsed}\n headingLevel={0}\n onToggleCollapse={() => (this.isCollapsed = !this.isCollapsed)}\n headerRef={(el) => this.focusTarget.setTarget(el)}\n />\n {!this.isCollapsed && [\n this.shouldRenderValues && this.renderValues(),\n this.shouldRenderInput && (\n <atomic-commerce-facet-number-input\n bindings={this.bindings}\n label={this.displayName}\n facet={this.facet}\n range={this.facetState.manualRange}\n ></atomic-commerce-facet-number-input>\n ),\n ]}\n </FacetContainer>\n }\n </FacetGuard>\n );\n }\n\n private renderValues() {\n const {\n manualRanges,\n displayName,\n bindings: {\n i18n,\n engine: {logger},\n },\n formatter,\n } = this;\n\n return (\n <NumericFacetValuesContainer i18n={i18n} label={displayName}>\n {this.valuesToRender.map((value) => (\n <NumericFacetValueLink\n formatter={formatter}\n displayValuesAs={'checkbox'}\n facetValue={value}\n field={this.facetState.field}\n i18n={i18n}\n logger={logger}\n manualRanges={manualRanges}\n onClick={() => this.facet.toggleSelect(value)}\n />\n ))}\n </NumericFacetValuesContainer>\n );\n }\n\n private get displayName() {\n return this.facetState.displayName || 'no-label';\n }\n\n private get numberOfSelectedValues() {\n return (\n this.facetState.values.filter(({state}) => state === 'selected').length ||\n 0\n );\n }\n\n private get hasInputRange() {\n return !!this.facetState.manualRange || this.summaryState.isLoading;\n }\n\n private get shouldRenderValues() {\n return !this.hasInputRange && !!this.valuesToRender.length;\n }\n\n private get valuesToRender() {\n return (\n this.facetState.values.filter(\n (value) => value.numberOfResults || value.state !== 'idle'\n ) || []\n );\n }\n\n private get shouldRenderInput() {\n const {\n firstRequestExecuted: firstSearchExecuted,\n hasError,\n isLoading,\n hasProducts: hasResults,\n } = this.summaryState;\n return shouldDisplayInputForFacetRange({\n hasInputRange: this.hasInputRange,\n searchStatusState: {\n firstSearchExecuted,\n hasError,\n hasResults,\n isLoading,\n },\n facetValues: this.facetState.values,\n hasInput: true,\n });\n }\n\n private get isHidden() {\n return !this.shouldRenderFacet;\n }\n\n private get shouldRenderFacet() {\n return this.shouldRenderInput || this.shouldRenderValues;\n }\n\n private get hasValues() {\n if (this.facetState.values.length) {\n return true;\n }\n\n return !!this.valuesToRender.length;\n }\n\n private ensureSubscribed() {\n if (this.unsubscribeFacetController) {\n return;\n }\n this.unsubscribeFacetController = this.facet.subscribe(\n () => (this.facetState = this.facet.state)\n );\n }\n}\n","@import '../../../common/facets/facet-common.pcss';\n","import {\n DateFacet,\n DateFilterRange,\n deserializeRelativeDate,\n DateFacetValue,\n DateFacetState,\n DateRangeRequest,\n SearchSummaryState,\n ProductListingSummaryState,\n Summary,\n} from '@coveo/headless/commerce';\nimport {Component, Element, h, Listen, Prop, State, VNode} from '@stencil/core';\nimport {parseDate} from '../../../../utils/date-utils';\nimport {\n BindStateToController,\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {FocusTargetController} from '../../../../utils/stencil-accessibility-utils';\nimport {FacetInfo} from '../../../common/facets/facet-common-store';\nimport {FacetContainer} from '../../../common/facets/facet-container/stencil-facet-container';\nimport {FacetGuard} from '../../../common/facets/facet-guard';\nimport {FacetHeader} from '../../../common/facets/facet-header/stencil-facet-header';\nimport {FacetValueLabelHighlight} from '../../../common/facets/facet-value-label-highlight/stencil-facet-value-label-highlight';\nimport {FacetValueLink} from '../../../common/facets/facet-value-link/stencil-facet-value-link';\nimport {FacetValuesGroup} from '../../../common/facets/facet-values-group/stencil-facet-values-group';\nimport {initializePopover} from '../../../common/facets/popover/popover-type';\nimport {shouldDisplayInputForFacetRange} from '../../../common/facets/stencil-facet-common';\nimport {CommerceBindings as Bindings} from '../../atomic-commerce-interface/atomic-commerce-interface';\n\n/**\n * A facet is a list of values for a certain field occurring in the results.\n * An `atomic-commerce-timeframe-facet` displays a facet of the results for the current query as date intervals.\n *\n * @alpha\n */\n@Component({\n tag: 'atomic-commerce-timeframe-facet',\n styleUrl: './atomic-commerce-timeframe-facet.pcss',\n shadow: true,\n})\nexport class AtomicCommerceTimeframeFacet\n implements InitializableComponent<Bindings>\n{\n @InitializeBindings() public bindings!: Bindings;\n @Element() private host!: HTMLElement;\n\n /**\n * The summary controller instance.\n */\n @Prop() summary!: Summary<SearchSummaryState | ProductListingSummaryState>;\n /**\n * The date facet controller instance.\n */\n @Prop() public facet!: DateFacet;\n /**\n * Specifies whether the facet is collapsed.\n */\n @Prop({reflect: true, mutable: true}) public isCollapsed = false;\n /**\n * The field identifier for this facet.\n */\n @Prop({reflect: true}) field?: string;\n\n @State()\n public facetState!: DateFacetState;\n\n @BindStateToController('summary')\n @State()\n public summaryState!: SearchSummaryState | ProductListingSummaryState;\n\n @State() public error!: Error;\n\n @State() private inputRange?: DateFilterRange;\n\n private headerFocus?: FocusTargetController;\n\n private get displayName() {\n return this.facetState.displayName || 'no-label';\n }\n\n private get focusTarget(): FocusTargetController {\n if (!this.headerFocus) {\n this.headerFocus = new FocusTargetController(this);\n }\n return this.headerFocus;\n }\n\n private unsubscribeFacetController?: () => void | undefined;\n\n public initialize() {\n if (!this.facet) {\n return;\n }\n this.ensureSubscribed();\n this.registerFacetToStore();\n }\n\n public connectedCallback(): void {\n this.ensureSubscribed();\n }\n\n @Listen('atomic/dateInputApply')\n public applyDateInput({detail}: CustomEvent<DateFilterRange>) {\n this.inputRange = {start: detail.start, end: detail.end};\n }\n\n private get valuesToRender() {\n return (\n this.facetState.values.filter(\n (value) => value.numberOfResults || value.state !== 'idle'\n ) || []\n );\n }\n\n private get shouldRenderValues() {\n return !this.hasInputRange && !!this.valuesToRender.length;\n }\n\n private get shouldRenderFacet() {\n return this.shouldRenderInput || this.shouldRenderValues;\n }\n\n private get shouldRenderInput() {\n const {\n firstRequestExecuted: firstSearchExecuted,\n hasError,\n isLoading,\n hasProducts: hasResults,\n } = this.summaryState;\n return shouldDisplayInputForFacetRange({\n hasInputRange: this.hasInputRange,\n searchStatusState: {\n firstSearchExecuted,\n hasError,\n hasResults,\n isLoading,\n },\n facetValues: this.facetState.values || [],\n hasInput: true,\n });\n }\n\n private get hasValues() {\n if (this.facetState.values.length) {\n return true;\n }\n\n return !!this.valuesToRender.length;\n }\n\n private get numberOfSelectedValues() {\n if (this.hasInputRange) {\n return 1;\n }\n\n return (\n this.facetState.values.filter(({state}) => state === 'selected').length ||\n 0\n );\n }\n\n private get hasInputRange() {\n return !!this.inputRange;\n }\n\n public disconnectedCallback() {\n if (this.host.isConnected) {\n return;\n }\n this.unsubscribeFacetController?.();\n this.unsubscribeFacetController = undefined;\n }\n\n private get isHidden() {\n return !this.shouldRenderFacet;\n }\n\n private resetRange() {\n this.inputRange = undefined;\n this.facet.setRanges([]);\n }\n\n private registerFacetToStore() {\n const facetInfo: FacetInfo = {\n label: () => this.bindings.i18n.t(this.displayName),\n facetId: this.facetState.facetId,\n element: this.host,\n isHidden: () => this.isHidden,\n };\n\n initializePopover(this.host, {\n ...facetInfo,\n hasValues: () => this.hasValues,\n numberOfActiveValues: () => this.numberOfSelectedValues,\n });\n }\n\n private formatFacetValue(facetValue: DateFacetValue) {\n try {\n const startDate = deserializeRelativeDate(facetValue.start);\n const relativeDate =\n startDate.period === 'past'\n ? startDate\n : deserializeRelativeDate(facetValue.end);\n\n return this.bindings.i18n.t(\n `${relativeDate.period}-${relativeDate.unit}`,\n {\n count: relativeDate.amount,\n }\n );\n } catch (error) {\n return this.bindings.i18n.t('to', {\n start: parseDate(facetValue.start).format('YYYY-MM-DD'),\n end: parseDate(facetValue.end).format('YYYY-MM-DD'),\n });\n }\n }\n private renderValues() {\n return this.renderValuesContainer(\n this.valuesToRender.map((value) => this.renderValue(value))\n );\n }\n\n private renderValue(facetValue: DateFacetValue) {\n const displayValue = this.formatFacetValue(facetValue);\n const isSelected = facetValue.state === 'selected';\n const isExcluded = facetValue.state === 'excluded';\n return (\n <FacetValueLink\n displayValue={displayValue}\n isSelected={isSelected}\n numberOfResults={facetValue.numberOfResults}\n i18n={this.bindings.i18n}\n onClick={() => this.facet.toggleSingleSelect(facetValue)}\n >\n <FacetValueLabelHighlight\n displayValue={displayValue}\n isSelected={isSelected}\n isExcluded={isExcluded}\n ></FacetValueLabelHighlight>\n </FacetValueLink>\n );\n }\n\n private renderValuesContainer(children: VNode[]) {\n return (\n <FacetValuesGroup i18n={this.bindings.i18n} label={this.displayName}>\n <ul class=\"mt-3\" part=\"values\">\n {children}\n </ul>\n </FacetValuesGroup>\n );\n }\n\n private renderHeader() {\n return (\n <FacetHeader\n i18n={this.bindings.i18n}\n label={this.displayName}\n onClearFilters={() => {\n this.focusTarget.focusAfterSearch();\n if (this.hasInputRange) {\n this.resetRange();\n return;\n }\n this.facet.deselectAll();\n }}\n numberOfActiveValues={this.numberOfSelectedValues}\n isCollapsed={this.isCollapsed}\n headingLevel={0}\n onToggleCollapse={() => (this.isCollapsed = !this.isCollapsed)}\n headerRef={(el) => this.focusTarget.setTarget(el)}\n ></FacetHeader>\n );\n }\n\n private renderDateInput() {\n return (\n <atomic-facet-date-input\n bindings={this.bindings}\n label={this.displayName}\n rangeGetter={() => this.inputRange}\n facetId={this.facetState.facetId}\n rangeSetter={({start, end, endInclusive}: DateRangeRequest) => {\n this.facet.setRanges([\n {\n start,\n end,\n endInclusive,\n state: 'selected',\n },\n ]);\n }}\n ></atomic-facet-date-input>\n );\n }\n\n public render() {\n const {hasError, firstRequestExecuted} = this.summaryState;\n\n return (\n <FacetGuard\n enabled={true}\n firstSearchExecuted={firstRequestExecuted}\n hasError={hasError}\n hasResults={this.shouldRenderFacet}\n >\n {\n <FacetContainer>\n {this.renderHeader()}\n {!this.isCollapsed && [\n this.shouldRenderValues && this.renderValues(),\n this.shouldRenderInput && this.renderDateInput(),\n ]}\n </FacetContainer>\n }\n </FacetGuard>\n );\n }\n\n private ensureSubscribed() {\n if (this.unsubscribeFacetController) {\n return;\n }\n this.unsubscribeFacetController = this.facet.subscribe(\n () => (this.facetState = this.facet.state)\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["atomicCommerceCategoryFacetCss","AtomicCommerceCategoryFacetStyle0","AtomicCommerceCategoryFacet","this","isCollapsed","resultIndexToFocusOnShowMore","initialize","facet","ensureSubscribed","announceFacetSearchResultsWithAriaLive","displayName","msg","facetSearchAriaMessage","bindings","i18n","facetInfo","label","t","facetId","facetState","element","host","isHidden","initializePopover","hasValues","values","length","numberOfActiveValues","hasActiveValues","focusTargets","showLessFocus","FocusTargetController","showMoreFocus","headerFocus","activeValueFocus","disconnectedCallback","isConnected","unsubscribeFacetController","undefined","connectedCallback","summaryState","hasError","selectedValueAncestry","componentShouldUpdate","next","prev","propName","isCategoryFacetState","shouldUpdateFacetSearchComponent","facetSearch","hasParents","renderHeader","h","FacetHeader","headingLevel","onToggleCollapse","onClearFilters","focusAfterSearch","deselectAll","headerRef","header","setTarget","renderSearchInput","FacetSearchInput","query","onChange","value","clear","updateText","search","onClear","renderValuesTree","parents","isRoot","renderChildren","CategoryFacetTreeValueContainer","CategoryFacetAllCategoryButton","onClick","CategoryFacetParentAsTreeContainer","isTopLevel","parentValue","CategoryFacetParentButton","facetValue","field","toggleSelect","slice","activeParent","activeParentDisplayValue","getFieldValueCaption","CategoryFacetParentValueLink","displayValue","numberOfResults","isLeafValue","searchQuery","setRef","el","CategoryFacetChildrenAsTreeContainer","renderChild","isShowLessFocusTarget","isShowMoreFocusTarget","isSelected","state","CategoryFacetChildValueLink","nextValues","children","map","i","renderSearchResults","CategoryFacetSearchResultsContainer","CategoryFacetSearchValue","select","renderMatches","FacetSearchMatches","numberOfMatches","hasMoreMatches","moreValuesAvailable","renderShowMoreLess","class","FacetShowMoreLess","onShowMore","showMoreValues","onShowLess","showLessValues","canShowLessValues","canShowMoreValues","render","firstRequestExecuted","FacetGuard","key","enabled","firstSearchExecuted","hasResults","FacetContainer","shouldDisplaySearchResults","Fragment","FacetValuesGroup","className","subscribe","__decorate","InitializeBindings","BindStateToController","AriaLiveRegion","atomicCommerceFacetCss","AtomicCommerceFacetStyle0","AtomicCommerceFacet","initAriaLive","initPopover","isFacetState","activeValues","renderBody","FacetSearchInputGuard","numberOfDisplayedValues","withSearch","renderValues","renderValuesContainer","part","FacetSearchValue","facetValueProps","facetCount","count","onExclude","exclude","onSelect","rawValue","shouldFocusOnShowLessAfterInteraction","shouldFocusOnShowMoreAfterInteraction","FacetValue","toggleExclude","btn","showMore","showLess","filter","facetSearchQuery","displayValuesAs","enableExclusion","atomicCommerceNumericFacetCss","AtomicCommerceNumericFacetStyle0","AtomicCommerceNumericFacet","manualRanges","focusTarget","context","buildContext","engine","registerFacetToStore","formatter","defaultCurrencyFormatter","contextState","currency","defaultNumberFormatter","numberOfSelectedValues","applyNumberInput","detail","start","end","setRanges","endInclusive","shouldRenderFacet","shouldRenderValues","shouldRenderInput","range","manualRange","logger","NumericFacetValuesContainer","valuesToRender","NumericFacetValueLink","hasInputRange","isLoading","hasProducts","shouldDisplayInputForFacetRange","searchStatusState","facetValues","hasInput","atomicCommerceTimeframeFacetCss","AtomicCommerceTimeframeFacetStyle0","AtomicCommerceTimeframeFacet","applyDateInput","inputRange","resetRange","formatFacetValue","startDate","deserializeRelativeDate","relativeDate","period","unit","amount","error","parseDate","format","renderValue","isExcluded","FacetValueLink","toggleSingleSelect","FacetValueLabelHighlight","renderDateInput","rangeGetter","rangeSetter"],"sources":["src/components/commerce/facets/atomic-commerce-category-facet/atomic-commerce-category-facet.pcss?tag=atomic-commerce-category-facet&encapsulation=shadow","src/components/commerce/facets/atomic-commerce-category-facet/atomic-commerce-category-facet.tsx","src/components/commerce/facets/atomic-commerce-facet/atomic-commerce-facet.pcss?tag=atomic-commerce-facet&encapsulation=shadow","src/components/commerce/facets/atomic-commerce-facet/atomic-commerce-facet.tsx","src/components/commerce/facets/atomic-commerce-numeric-facet/atomic-commerce-numeric-facet.pcss?tag=atomic-commerce-numeric-facet&encapsulation=shadow","src/components/commerce/facets/atomic-commerce-numeric-facet/atomic-commerce-numeric-facet.tsx","src/components/commerce/facets/atomic-commerce-timeframe-facet/atomic-commerce-timeframe-facet.pcss?tag=atomic-commerce-timeframe-facet&encapsulation=shadow","src/components/commerce/facets/atomic-commerce-timeframe-facet/atomic-commerce-timeframe-facet.tsx"],"sourcesContent":["@import '../../../common/facets/facet-common.pcss';\n@import '../../../common/facets/facet-search/facet-search.pcss';\n\n[part~='active-parent'] {\n @apply pl-9;\n}\n\n[part~='parents'] [part~='values'] {\n @apply pl-9;\n}\n\n[part~='all-categories-button'],\n[part~='parent-button'] {\n @apply relative flex w-full items-center py-2.5 pr-2 pl-7 text-left;\n}\n\n[part~='back-arrow'] {\n @apply absolute left-1 h-5 w-5;\n}\n","import {\n CategoryFacetState,\n CategoryFacetValue,\n CategoryFacet,\n SearchSummaryState,\n ProductListingSummaryState,\n Summary,\n} from '@coveo/headless/commerce';\nimport {Component, h, State, Prop, Element, Fragment} from '@stencil/core';\nimport {getFieldValueCaption} from '../../../../utils/field-utils';\nimport {\n BindStateToController,\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {\n AriaLiveRegion,\n FocusTargetController,\n} from '../../../../utils/stencil-accessibility-utils';\nimport {CategoryFacetAllCategoryButton} from '../../../common/facets/category-facet/all-categories-button';\nimport {CategoryFacetChildValueLink} from '../../../common/facets/category-facet/child-value-link';\nimport {CategoryFacetChildrenAsTreeContainer} from '../../../common/facets/category-facet/children-as-tree-container';\nimport {CategoryFacetParentAsTreeContainer} from '../../../common/facets/category-facet/parent-as-tree-container';\nimport {CategoryFacetParentButton} from '../../../common/facets/category-facet/parent-button';\nimport {CategoryFacetParentValueLink} from '../../../common/facets/category-facet/parent-value-link';\nimport {CategoryFacetSearchResultsContainer} from '../../../common/facets/category-facet/search-results-container';\nimport {CategoryFacetSearchValue} from '../../../common/facets/category-facet/search-value';\nimport {CategoryFacetTreeValueContainer} from '../../../common/facets/category-facet/value-as-tree-container';\nimport {FacetInfo} from '../../../common/facets/facet-common-store';\nimport {FacetContainer} from '../../../common/facets/facet-container/stencil-facet-container';\nimport {FacetGuard} from '../../../common/facets/facet-guard';\nimport {FacetHeader} from '../../../common/facets/facet-header/stencil-facet-header';\nimport {announceFacetSearchResultsWithAriaLive} from '../../../common/facets/facet-search/facet-search-aria-live';\nimport {\n shouldUpdateFacetSearchComponent,\n shouldDisplaySearchResults,\n} from '../../../common/facets/facet-search/facet-search-utils';\nimport {FacetSearchInput} from '../../../common/facets/facet-search/stencil-facet-search-input';\nimport {FacetSearchMatches} from '../../../common/facets/facet-search/stencil-facet-search-matches';\nimport {FacetShowMoreLess} from '../../../common/facets/facet-show-more-less/stencil-facet-show-more-less';\nimport {FacetValuesGroup} from '../../../common/facets/facet-values-group/stencil-facet-values-group';\nimport {initializePopover} from '../../../common/facets/popover/popover-type';\nimport {CommerceBindings as Bindings} from '../../atomic-commerce-interface/atomic-commerce-interface';\n\n/**\n * A facet is a list of values for a certain field occurring in the results, ordered using a configurable criteria (e.g., number of occurrences).\n * An `atomic-commerce-category-facet` displays a facet of values in a browsable, hierarchical fashion.\n *\n * @part facet - The wrapper for the entire facet.\n * @part placeholder - The placeholder shown before the first search is executed.\n *\n * @part label-button - The button that displays the label and allows to expand/collapse the facet.\n * @part label-button-icon - The label button icon.\n *\n * @part search-wrapper - The search box wrapper.\n * @part search-input - The search box input.\n * @part search-icon - The search box submit button.\n * @part search-clear-button - The button to clear the search box of input.\n * @part more-matches - The label indicating there are more matches for the current facet search query.\n * @part no-matches - The label indicating there are no matches for the current facet search query.\n * @part matches-query - The highlighted query inside the matches labels.\n * @part search-results - The search results container.\n * @part search-result - The search result value.\n * @part search-result-path - The search result path.\n * @part search-highlight - The highlighted query inside the facet values.\n *\n * @part parents - The container surrounding the whole hierarchy of values.\n * @part sub-parents - The container surrounding a sub-hierarchy of values.\n * @part values - The container surrounding either the children of the active value or the values at the base.\n * @part all-categories-button - The \"View all\" button displayed first within the parents.\n * @part parent-button - The clickable parent button displayed first within sub-parents.\n * @part active-parent - The clickable active parent displayed first within the last sub-parents.\n * @part value-link - The clickable value displayed first within values.\n * @part back-arrow - The back arrow displayed before the clickable parents.\n * @part value-label - The facet value label within a value button.\n * @part value-count - The facet value count within a value button.\n * @part leaf-value - A facet value with no child value.\n * @part node-value - A facet value with child values.\n *\n * @part show-more - The show more results button.\n * @part show-less - The show less results button.\n * @part show-more-less-icon - The icons of the show more & show less buttons.\n *\n * @alpha\n */\n@Component({\n tag: 'atomic-commerce-category-facet',\n styleUrl: 'atomic-commerce-category-facet.pcss',\n shadow: true,\n})\nexport class AtomicCommerceCategoryFacet\n implements InitializableComponent<Bindings>\n{\n @InitializeBindings() public bindings!: Bindings;\n @Element() private host!: HTMLElement;\n\n /**\n * The summary controller instance.\n */\n @Prop() summary!: Summary<SearchSummaryState | ProductListingSummaryState>;\n /**\n * The category facet controller instance.\n */\n @Prop() public facet!: CategoryFacet;\n /**\n * Specifies whether the facet is collapsed.\n */\n @Prop({reflect: true, mutable: true}) public isCollapsed = false;\n /**\n * The field identifier for this facet.\n */\n @Prop({reflect: true}) field?: string;\n\n @State()\n public facetState!: CategoryFacetState;\n\n @BindStateToController('summary')\n @State()\n public summaryState!: SearchSummaryState | ProductListingSummaryState;\n\n @State() public error!: Error;\n\n private resultIndexToFocusOnShowMore = 0;\n private showLessFocus?: FocusTargetController;\n private showMoreFocus?: FocusTargetController;\n private headerFocus?: FocusTargetController;\n private activeValueFocus?: FocusTargetController;\n private unsubscribeFacetController?: () => void | undefined;\n\n @AriaLiveRegion('facet-search')\n protected facetSearchAriaMessage!: string;\n\n public initialize() {\n if (!this.facet) {\n return;\n }\n\n this.ensureSubscribed();\n announceFacetSearchResultsWithAriaLive(\n this.facet,\n this.displayName,\n (msg) => (this.facetSearchAriaMessage = msg),\n this.bindings.i18n\n );\n\n const facetInfo: FacetInfo = {\n label: () => this.bindings.i18n.t(this.displayName),\n facetId: this.facetState.facetId,\n element: this.host,\n isHidden: () => this.isHidden,\n };\n\n initializePopover(this.host, {\n ...facetInfo,\n hasValues: () => !!this.facetState.values.length,\n numberOfActiveValues: () => (this.facetState.hasActiveValues ? 1 : 0),\n });\n }\n\n private get displayName() {\n return this.facetState?.displayName || 'no-label';\n }\n\n private get focusTargets() {\n if (!this.showLessFocus) {\n this.showLessFocus = new FocusTargetController(this);\n }\n if (!this.showMoreFocus) {\n this.showMoreFocus = new FocusTargetController(this);\n }\n if (!this.headerFocus) {\n this.headerFocus = new FocusTargetController(this);\n }\n if (!this.activeValueFocus) {\n this.activeValueFocus = new FocusTargetController(this);\n }\n\n return {\n showLessFocus: this.showLessFocus,\n showMoreFocus: this.showMoreFocus,\n headerFocus: this.headerFocus,\n activeValueFocus: this.activeValueFocus,\n };\n }\n\n public disconnectedCallback() {\n if (this.host.isConnected) {\n return;\n }\n this.unsubscribeFacetController?.();\n this.unsubscribeFacetController = undefined;\n }\n\n public connectedCallback(): void {\n this.ensureSubscribed();\n }\n\n private get isHidden() {\n return (\n this.summaryState.hasError ||\n (!this.facetState.values.length &&\n !this.facetState.selectedValueAncestry?.length)\n );\n }\n\n public componentShouldUpdate(\n next: unknown,\n prev: unknown,\n propName: keyof AtomicCommerceCategoryFacet\n ) {\n if (\n this.isCategoryFacetState(prev, propName) &&\n this.isCategoryFacetState(next, propName)\n ) {\n return shouldUpdateFacetSearchComponent(\n next.facetSearch,\n prev.facetSearch\n );\n }\n return true;\n }\n\n private get hasParents() {\n return !!this.facetState.selectedValueAncestry?.length;\n }\n\n private renderHeader() {\n return (\n <FacetHeader\n i18n={this.bindings.i18n}\n label={this.displayName}\n numberOfActiveValues={\n this.facetState.hasActiveValues && this.isCollapsed ? 1 : 0\n }\n isCollapsed={this.isCollapsed}\n headingLevel={0}\n onToggleCollapse={() => (this.isCollapsed = !this.isCollapsed)}\n onClearFilters={() => {\n this.focusTargets.headerFocus.focusAfterSearch();\n this.facet.deselectAll();\n }}\n headerRef={(header) => {\n this.focusTargets.headerFocus.setTarget(header);\n if (!this.hasParents) {\n this.focusTargets.activeValueFocus.setTarget(header);\n }\n }}\n ></FacetHeader>\n );\n }\n\n private renderSearchInput() {\n return (\n <FacetSearchInput\n i18n={this.bindings.i18n}\n label={this.displayName}\n query={this.facetState.facetSearch.query}\n onChange={(value: string) => {\n if (value === '') {\n this.facet.facetSearch.clear();\n return;\n }\n this.facet.facetSearch.updateText(value);\n this.facet.facetSearch.search();\n }}\n onClear={() => this.facet.facetSearch.clear()}\n ></FacetSearchInput>\n );\n }\n\n private renderValuesTree(parents: CategoryFacetValue[], isRoot: boolean) {\n if (!this.hasParents) {\n return this.renderChildren();\n }\n\n if (isRoot) {\n return (\n <CategoryFacetTreeValueContainer>\n <CategoryFacetAllCategoryButton\n i18n={this.bindings.i18n}\n onClick={() => {\n this.focusTargets.activeValueFocus.focusAfterSearch();\n this.facet.deselectAll();\n }}\n />\n <CategoryFacetParentAsTreeContainer isTopLevel={false}>\n {this.renderValuesTree(parents, false)}\n </CategoryFacetParentAsTreeContainer>\n </CategoryFacetTreeValueContainer>\n );\n }\n\n if (parents.length > 1) {\n const parentValue = parents[0];\n\n return (\n <CategoryFacetTreeValueContainer>\n <CategoryFacetParentButton\n facetValue={parentValue}\n field={this.facetState?.field}\n i18n={this.bindings.i18n}\n onClick={() => {\n this.focusTargets.activeValueFocus.focusAfterSearch();\n this.facet.toggleSelect(parentValue);\n }}\n />\n <CategoryFacetParentAsTreeContainer isTopLevel={false}>\n {this.renderValuesTree(parents.slice(1), false)}\n </CategoryFacetParentAsTreeContainer>\n </CategoryFacetTreeValueContainer>\n );\n }\n\n const activeParent = parents[0];\n const activeParentDisplayValue = getFieldValueCaption(\n this.facetState?.field,\n activeParent.value,\n this.bindings.i18n\n );\n\n return (\n <CategoryFacetParentValueLink\n displayValue={activeParentDisplayValue}\n numberOfResults={activeParent.numberOfResults}\n i18n={this.bindings.i18n}\n isLeafValue={activeParent.isLeafValue}\n onClick={() => {\n this.focusTargets.activeValueFocus.focusAfterSearch();\n this.facet.deselectAll();\n }}\n searchQuery={this.facetState.facetSearch.query}\n setRef={(el) => this.focusTargets.activeValueFocus.setTarget(el)}\n >\n <CategoryFacetChildrenAsTreeContainer>\n {this.renderChildren()}\n </CategoryFacetChildrenAsTreeContainer>\n </CategoryFacetParentValueLink>\n );\n }\n\n private renderChild(\n facetValue: CategoryFacetValue,\n isShowLessFocusTarget: boolean,\n isShowMoreFocusTarget: boolean\n ) {\n const displayValue = getFieldValueCaption(\n this.facetState?.field,\n facetValue.value,\n this.bindings.i18n\n );\n const isSelected = facetValue.state === 'selected';\n return (\n <CategoryFacetChildValueLink\n displayValue={displayValue}\n i18n={this.bindings.i18n}\n isLeafValue={facetValue.isLeafValue}\n isSelected={isSelected}\n numberOfResults={facetValue.numberOfResults}\n onClick={() => {\n this.focusTargets.activeValueFocus.focusAfterSearch();\n this.facet.toggleSelect(facetValue);\n }}\n searchQuery={this.facetState.facetSearch.query}\n setRef={(element) => {\n isShowLessFocusTarget &&\n this.focusTargets.showLessFocus.setTarget(element);\n isShowMoreFocusTarget &&\n this.focusTargets.showMoreFocus.setTarget(element);\n }}\n ></CategoryFacetChildValueLink>\n );\n }\n\n private renderChildren() {\n const {values, selectedValueAncestry, hasActiveValues} = this.facetState;\n const nextValues = hasActiveValues ? selectedValueAncestry : values;\n\n const children = nextValues?.length\n ? hasActiveValues\n ? nextValues[nextValues.length - 1].children\n : nextValues\n : [];\n\n return children.map((value, i) =>\n this.renderChild(value, i === 0, i === this.resultIndexToFocusOnShowMore)\n );\n }\n\n private renderSearchResults() {\n return (\n <CategoryFacetSearchResultsContainer>\n {this.facetState.facetSearch.values.map((value) => (\n <CategoryFacetSearchValue\n value={value}\n field={this.facetState?.field}\n i18n={this.bindings.i18n}\n searchQuery={this.facetState.facetSearch.query}\n onClick={() => {\n this.focusTargets.activeValueFocus.focusAfterSearch();\n this.facet.facetSearch.select(value);\n }}\n ></CategoryFacetSearchValue>\n ))}\n </CategoryFacetSearchResultsContainer>\n );\n }\n\n private renderMatches() {\n return (\n <FacetSearchMatches\n i18n={this.bindings.i18n}\n query={this.facetState.facetSearch.query}\n numberOfMatches={this.facetState.facetSearch.values.length}\n hasMoreMatches={this.facetState.facetSearch.moreValuesAvailable}\n ></FacetSearchMatches>\n );\n }\n\n private renderShowMoreLess() {\n return (\n <div class={this.hasParents ? 'pl-9' : ''}>\n <FacetShowMoreLess\n label={this.displayName}\n i18n={this.bindings.i18n}\n onShowMore={() => {\n this.resultIndexToFocusOnShowMore = this.facetState.values.length;\n this.focusTargets.showMoreFocus.focusAfterSearch();\n this.facet.showMoreValues();\n }}\n onShowLess={() => {\n this.focusTargets.showLessFocus.focusAfterSearch();\n this.facet.showLessValues();\n }}\n canShowLessValues={this.facetState.canShowLessValues}\n canShowMoreValues={this.facetState.canShowMoreValues}\n ></FacetShowMoreLess>\n </div>\n );\n }\n\n private isCategoryFacetState(\n state: unknown,\n propName: string\n ): state is CategoryFacetState {\n return (\n propName === 'facetState' &&\n typeof (state as CategoryFacetState)?.facetId === 'string'\n );\n }\n\n public render() {\n const {\n bindings: {i18n},\n facetState: {facetSearch, selectedValueAncestry, values},\n } = this;\n\n const {hasError, firstRequestExecuted} = this.summaryState;\n\n return (\n <FacetGuard\n enabled={true}\n firstSearchExecuted={firstRequestExecuted}\n hasError={hasError}\n hasResults={values.length > 0}\n >\n {\n <FacetContainer>\n {this.renderHeader()}\n {!this.isCollapsed && [\n this.renderSearchInput(),\n shouldDisplaySearchResults(facetSearch) ? (\n <Fragment>\n {facetSearch.values.length ? (\n <FacetValuesGroup\n i18n={i18n}\n label={this.displayName}\n query={facetSearch.query}\n >\n {this.renderSearchResults()}\n </FacetValuesGroup>\n ) : (\n <div class=\"mt-3\"></div>\n )}\n {this.renderMatches()}\n </Fragment>\n ) : (\n <Fragment>\n <FacetValuesGroup i18n={i18n} label={this.displayName}>\n {this.hasParents ? (\n <CategoryFacetParentAsTreeContainer\n isTopLevel={true}\n className=\"mt-3\"\n >\n {selectedValueAncestry &&\n this.renderValuesTree(selectedValueAncestry, true)}\n </CategoryFacetParentAsTreeContainer>\n ) : (\n <CategoryFacetChildrenAsTreeContainer className=\"mt-3\">\n {this.renderChildren()}\n </CategoryFacetChildrenAsTreeContainer>\n )}\n </FacetValuesGroup>\n {this.renderShowMoreLess()}\n </Fragment>\n ),\n ]}\n </FacetContainer>\n }\n </FacetGuard>\n );\n }\n\n private ensureSubscribed() {\n if (this.unsubscribeFacetController) {\n return;\n }\n this.unsubscribeFacetController = this.facet.subscribe(\n () => (this.facetState = this.facet.state)\n );\n }\n}\n","@import '../../../../global/global.pcss';\n@import '../../../common/facets/facet-search/facet-search.pcss';\n@import '../../../common/facets/facet-common.pcss';\n@import '../../../common/facets/facet-value-checkbox/facet-value-checkbox.pcss';\n@import '../../../common/facets/facet-value-exclude/facet-value-exclude.pcss';\n@import '../../../common/facets/facet-value-box/facet-value-box.pcss';\n","import {\n ProductListingSummaryState,\n RegularFacet,\n RegularFacetState,\n SearchSummaryState,\n Summary,\n} from '@coveo/headless/commerce';\nimport {\n Component,\n h,\n State,\n Prop,\n Element,\n VNode,\n Fragment,\n} from '@stencil/core';\nimport {\n BindStateToController,\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {\n AriaLiveRegion,\n FocusTargetController,\n} from '../../../../utils/stencil-accessibility-utils';\nimport {FacetInfo} from '../../../common/facets/facet-common-store';\nimport {FacetContainer} from '../../../common/facets/facet-container/stencil-facet-container';\nimport {FacetGuard} from '../../../common/facets/facet-guard';\nimport {FacetHeader} from '../../../common/facets/facet-header/stencil-facet-header';\nimport {announceFacetSearchResultsWithAriaLive} from '../../../common/facets/facet-search/facet-search-aria-live';\nimport {\n shouldDisplaySearchResults,\n shouldUpdateFacetSearchComponent,\n} from '../../../common/facets/facet-search/facet-search-utils';\nimport {FacetSearchInput} from '../../../common/facets/facet-search/stencil-facet-search-input';\nimport {FacetSearchInputGuard} from '../../../common/facets/facet-search/stencil-facet-search-input-guard';\nimport {FacetSearchMatches} from '../../../common/facets/facet-search/stencil-facet-search-matches';\nimport {FacetSearchValue} from '../../../common/facets/facet-search/stencil-facet-search-value';\nimport {FacetShowMoreLess} from '../../../common/facets/facet-show-more-less/stencil-facet-show-more-less';\nimport {\n FacetValueProps,\n FacetValue,\n} from '../../../common/facets/facet-value/stencil-facet-value';\nimport {FacetValuesGroup} from '../../../common/facets/facet-values-group/stencil-facet-values-group';\nimport {initializePopover} from '../../../common/facets/popover/popover-type';\nimport {CommerceBindings as Bindings} from '../../atomic-commerce-interface/atomic-commerce-interface';\n\n/**\n * The `atomic-commerce-facet` component renders a commerce facet that the end user can interact with to filter products.\n *\n * @part facet - The wrapper for the entire facet.\n * @part placeholder - The placeholder shown before the first search is executed.\n *\n * @part label-button - The button that displays the label and allows to expand/collapse the facet.\n * @part label-button-icon - The label button icon.\n * @part clear-button - The button that resets the actively selected facet values.\n * @part clear-button-icon - The clear button icon.\n *\n * @part search-wrapper - The search box wrapper.\n * @part search-input - The search box input.\n * @part search-icon - The search box submit button.\n * @part search-clear-button - The button to clear the search box of input.\n * @part more-matches - The label indicating there are more matches for the current facet search query.\n * @part no-matches - The label indicating there are no matches for the current facet search query.\n * @part matches-query - The highlighted query inside the matches labels.\n * @part search-highlight - The highlighted query inside the facet values.\n *\n * @part values - The facet values container.\n * @part value-label - The facet value label, common for all displays.\n * @part value-count - The facet value count, common for all displays.\n *\n * @part value-checkbox - The facet value checkbox, available when display is 'checkbox'.\n * @part value-checkbox-checked - The checked facet value checkbox, available when display is 'checkbox'.\n * @part value-checkbox-label - The facet value checkbox clickable label, available when display is 'checkbox'.\n * @part value-checkbox-icon - The facet value checkbox icon, available when display is 'checkbox'.\n * @part value-link - The facet value when display is 'link'.\n * @part value-link-selected - The selected facet value when display is 'link'.\n * @part value-box - The facet value when display is 'box'.\n * @part value-box-selected - The selected facet value when display is 'box'.\n * @part value-exclude-button - The button to exclude a facet value, available when display is 'checkbox'.\n *\n * @part show-more - The show more results button.\n * @part show-less - The show less results button.\n * @part show-more-less-icon - The icons of the show more & show less buttons.\n *\n * @alpha\n */\n@Component({\n tag: 'atomic-commerce-facet',\n styleUrl: 'atomic-commerce-facet.pcss',\n shadow: true,\n})\nexport class AtomicCommerceFacet implements InitializableComponent<Bindings> {\n @InitializeBindings() public bindings!: Bindings;\n @Element() private host!: HTMLElement;\n\n /**\n * The Summary controller instance.\n */\n @Prop() summary!: Summary<SearchSummaryState | ProductListingSummaryState>;\n /**\n * The facet controller instance.\n */\n @Prop() public facet!: RegularFacet;\n /**\n * Specifies whether the facet is collapsed.\n */\n @Prop({reflect: true, mutable: true}) public isCollapsed = false;\n /**\n * The field identifier for this facet.\n */\n @Prop({reflect: true}) field?: string;\n\n @State()\n public facetState!: RegularFacetState;\n\n @BindStateToController('summary')\n @State()\n public summaryState!: SearchSummaryState | ProductListingSummaryState;\n\n @State() public error!: Error;\n\n private showLessFocus?: FocusTargetController;\n private showMoreFocus?: FocusTargetController;\n private headerFocus?: FocusTargetController;\n private unsubscribeFacetController?: () => void | undefined;\n\n @AriaLiveRegion('facet-search')\n protected facetSearchAriaMessage!: string;\n\n public initialize() {\n if (!this.facet) {\n return;\n }\n this.ensureSubscribed();\n this.initAriaLive();\n this.initPopover();\n }\n\n public connectedCallback(): void {\n this.ensureSubscribed();\n }\n\n public disconnectedCallback(): void {\n this.unsubscribeFacetController?.();\n this.unsubscribeFacetController = undefined;\n }\n\n public componentShouldUpdate(\n next: unknown,\n prev: unknown,\n propName: keyof AtomicCommerceFacet\n ) {\n if (\n this.isFacetState(prev, propName) &&\n this.isFacetState(next, propName)\n ) {\n return shouldUpdateFacetSearchComponent(\n next.facetSearch,\n prev.facetSearch\n );\n }\n return true;\n }\n\n public render() {\n if (!this.facet) {\n return;\n }\n const {hasError, firstRequestExecuted} = this.summaryState;\n return (\n <FacetGuard\n enabled={true}\n hasError={hasError}\n firstSearchExecuted={firstRequestExecuted}\n hasResults={this.facetState.values.length > 0}\n >\n {\n <FacetContainer>\n <FacetHeader\n i18n={this.bindings.i18n}\n label={this.displayName}\n onClearFilters={() => {\n this.focusTargets.header.focusAfterSearch();\n this.facet.deselectAll();\n }}\n numberOfActiveValues={this.activeValues.length}\n isCollapsed={this.isCollapsed}\n headingLevel={0}\n onToggleCollapse={() => (this.isCollapsed = !this.isCollapsed)}\n headerRef={(el) => this.focusTargets.header.setTarget(el)}\n ></FacetHeader>\n {this.renderBody()}\n </FacetContainer>\n }\n </FacetGuard>\n );\n }\n\n private renderBody() {\n if (this.isCollapsed) {\n return;\n }\n return (\n <Fragment>\n <FacetSearchInputGuard\n canShowMoreValues={this.facetState.canShowMoreValues}\n numberOfDisplayedValues={this.facetState.values.length}\n withSearch={true}\n >\n <FacetSearchInput\n i18n={this.bindings.i18n}\n label={this.displayName}\n onChange={(value) => {\n if (value === '') {\n this.facet.facetSearch.clear();\n return;\n }\n this.facet.facetSearch.updateText(value);\n this.facet.facetSearch.search();\n }}\n onClear={() => this.facet.facetSearch.clear()}\n query={this.facetState.facetSearch.query}\n />\n </FacetSearchInputGuard>\n {shouldDisplaySearchResults(this.facetState.facetSearch)\n ? [this.renderSearchResults(), this.renderMatches()]\n : [this.renderValues(), this.renderShowMoreLess()]}\n </Fragment>\n );\n }\n\n private renderValuesContainer(children: VNode[], query?: string) {\n return (\n <FacetValuesGroup\n i18n={this.bindings.i18n}\n label={this.displayName}\n query={query}\n >\n <ul part=\"values\" class=\"mt-3\">\n {children}\n </ul>\n </FacetValuesGroup>\n );\n }\n\n private renderSearchResults() {\n return this.renderValuesContainer(\n this.facetState.facetSearch.values.map((value) => (\n <FacetSearchValue\n {...this.facetValueProps}\n facetCount={value.count}\n onExclude={() => this.facet.facetSearch.exclude(value)}\n onSelect={() => this.facet.facetSearch.select(value)}\n facetValue={value.rawValue}\n />\n ))\n );\n }\n\n private renderValues() {\n return this.renderValuesContainer(\n this.facetState.values.map((value, i) => {\n const shouldFocusOnShowLessAfterInteraction = i === 0;\n const shouldFocusOnShowMoreAfterInteraction = i === 0;\n\n return (\n <FacetValue\n {...this.facetValueProps}\n facetCount={value.numberOfResults}\n onExclude={() => this.facet.toggleExclude(value)}\n onSelect={() => this.facet.toggleSelect(value)}\n facetValue={value.value}\n facetState={value.state}\n setRef={(btn) => {\n if (shouldFocusOnShowLessAfterInteraction) {\n this.showLessFocus?.setTarget(btn);\n }\n if (shouldFocusOnShowMoreAfterInteraction) {\n this.showMoreFocus?.setTarget(btn);\n }\n }}\n />\n );\n })\n );\n }\n\n private renderShowMoreLess() {\n return (\n <FacetShowMoreLess\n label={this.displayName}\n i18n={this.bindings.i18n}\n onShowMore={() => {\n this.focusTargets.showMore.focusAfterSearch();\n this.facet.showMoreValues();\n }}\n onShowLess={() => {\n this.focusTargets.showLess.focusAfterSearch();\n this.facet.showLessValues();\n }}\n canShowMoreValues={this.facetState.canShowMoreValues}\n canShowLessValues={this.facetState.canShowLessValues}\n ></FacetShowMoreLess>\n );\n }\n\n private renderMatches() {\n return (\n <FacetSearchMatches\n i18n={this.bindings.i18n}\n query={this.facetState.facetSearch.query}\n numberOfMatches={this.facetState.facetSearch.values.length}\n hasMoreMatches={this.facetState.facetSearch.moreValuesAvailable}\n ></FacetSearchMatches>\n );\n }\n\n private get activeValues() {\n return this.facetState.values.filter(({state}) => state !== 'idle');\n }\n\n private get displayName() {\n return this.facetState.displayName || 'no-label';\n }\n\n private get facetValueProps(): Pick<\n FacetValueProps,\n | 'facetSearchQuery'\n | 'enableExclusion'\n | 'field'\n | 'i18n'\n | 'displayValuesAs'\n > {\n return {\n facetSearchQuery: this.facetState.facetSearch.query,\n displayValuesAs: 'checkbox',\n enableExclusion: false,\n field: this.facetState.field,\n i18n: this.bindings.i18n,\n };\n }\n\n private get isHidden() {\n return !this.facetState.values.length;\n }\n\n private initPopover() {\n initializePopover(this.host, {\n ...this.facetInfo,\n hasValues: () => !!this.facetState.values.length,\n numberOfActiveValues: () => this.activeValues.length,\n });\n }\n\n private initAriaLive() {\n announceFacetSearchResultsWithAriaLive(\n this.facet,\n this.displayName,\n (msg) => (this.facetSearchAriaMessage = msg),\n this.bindings.i18n\n );\n }\n\n private get facetInfo(): FacetInfo {\n return {\n label: () => this.bindings.i18n.t(this.displayName),\n facetId: this.facetState.facetId,\n element: this.host,\n isHidden: () => this.isHidden,\n };\n }\n\n private get focusTargets(): {\n showLess: FocusTargetController;\n showMore: FocusTargetController;\n header: FocusTargetController;\n } {\n if (!this.showLessFocus) {\n this.showLessFocus = new FocusTargetController(this);\n }\n if (!this.showMoreFocus) {\n this.showMoreFocus = new FocusTargetController(this);\n }\n if (!this.headerFocus) {\n this.headerFocus = new FocusTargetController(this);\n }\n\n return {\n showLess: this.showLessFocus,\n showMore: this.showMoreFocus,\n header: this.headerFocus,\n };\n }\n\n private isFacetState(\n state: unknown,\n propName: string\n ): state is RegularFacetState {\n return (\n propName === 'facetState' &&\n typeof (state as RegularFacetState)?.facetId === 'string'\n );\n }\n\n private ensureSubscribed() {\n if (this.unsubscribeFacetController) {\n return;\n }\n this.unsubscribeFacetController = this.facet.subscribe(\n () => (this.facetState = this.facet.state)\n );\n }\n}\n","@import '../../../common/facets/numeric-facet-common.pcss';\n","import {\n NumericFacet,\n NumericFacetState,\n NumericRangeRequest,\n ProductListingSummaryState,\n SearchSummaryState,\n Summary,\n Context,\n ContextState,\n buildContext,\n} from '@coveo/headless/commerce';\nimport {Component, Element, h, Listen, Prop, State} from '@stencil/core';\nimport {\n BindStateToController,\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {FocusTargetController} from '../../../../utils/stencil-accessibility-utils';\nimport {FacetInfo} from '../../../common/facets/facet-common-store';\nimport {FacetContainer} from '../../../common/facets/facet-container/stencil-facet-container';\nimport {FacetGuard} from '../../../common/facets/facet-guard';\nimport {FacetHeader} from '../../../common/facets/facet-header/stencil-facet-header';\nimport {NumericFacetValueLink} from '../../../common/facets/numeric-facet/value-link';\nimport {NumericFacetValuesContainer} from '../../../common/facets/numeric-facet/values-container';\nimport {initializePopover} from '../../../common/facets/popover/popover-type';\nimport {shouldDisplayInputForFacetRange} from '../../../common/facets/stencil-facet-common';\nimport {\n defaultCurrencyFormatter,\n defaultNumberFormatter,\n} from '../../../common/formats/format-common';\nimport {CommerceBindings as Bindings} from '../../atomic-commerce-interface/atomic-commerce-interface';\nimport type {Range} from '../facet-number-input/atomic-commerce-facet-number-input';\n\n/**\n * The `atomic-commerce-numeric-facet` component is responsible for rendering a commerce facet that allows the user to filter products using numeric ranges.\n *\n * @alpha\n */\n@Component({\n tag: 'atomic-commerce-numeric-facet',\n styleUrl: './atomic-commerce-numeric-facet.pcss',\n shadow: true,\n})\nexport class AtomicCommerceNumericFacet\n implements InitializableComponent<Bindings>\n{\n @InitializeBindings() public bindings!: Bindings;\n @Element() private host!: HTMLElement;\n\n @BindStateToController('facet')\n @State()\n public facetState!: NumericFacetState;\n\n @BindStateToController('summary')\n @State()\n public summaryState!: SearchSummaryState | ProductListingSummaryState;\n\n public context!: Context;\n @BindStateToController('context') contextState!: ContextState;\n\n @State() public error!: Error;\n\n private manualRanges: (NumericRangeRequest & {label?: string})[] = [];\n\n /**\n * The Summary controller instance.\n */\n @Prop() summary!: Summary<SearchSummaryState | ProductListingSummaryState>;\n /**\n * The numeric facet controller instance.\n */\n @Prop({reflect: true}) public facet!: NumericFacet;\n /**\n * Specifies whether the facet is collapsed.\n */\n @Prop({reflect: true, mutable: true}) public isCollapsed = false;\n /**\n * The field identifier for this facet.\n */\n @Prop({reflect: true}) field?: string;\n\n private headerFocus?: FocusTargetController;\n\n private get focusTarget(): FocusTargetController {\n if (!this.headerFocus) {\n this.headerFocus = new FocusTargetController(this);\n }\n return this.headerFocus;\n }\n\n private unsubscribeFacetController?: () => void | undefined;\n\n public initialize() {\n if (!this.facet) {\n return;\n }\n\n this.context = buildContext(this.bindings.engine);\n this.ensureSubscribed();\n this.registerFacetToStore();\n }\n\n public connectedCallback() {\n this.ensureSubscribed();\n }\n\n public disconnectedCallback() {\n this.unsubscribeFacetController?.();\n this.unsubscribeFacetController = undefined;\n }\n\n private get formatter() {\n if (this.field === 'ec_price' || this.field === 'ec_promo_price') {\n return defaultCurrencyFormatter(this.contextState.currency);\n }\n return defaultNumberFormatter;\n }\n\n private registerFacetToStore() {\n const {facetId} = this.facetState;\n const facetInfo: FacetInfo = {\n label: () => this.bindings.i18n.t(this.displayName),\n facetId: facetId,\n element: this.host,\n isHidden: () => this.isHidden,\n };\n\n initializePopover(this.host, {\n ...facetInfo,\n hasValues: () => this.hasValues,\n numberOfActiveValues: () => this.numberOfSelectedValues,\n });\n }\n\n @Listen('atomic/numberInputApply')\n public applyNumberInput({detail}: CustomEvent<Range>) {\n const {start, end} = detail;\n this.facet.setRanges([\n {\n start,\n end,\n endInclusive: true,\n state: 'selected',\n },\n ]);\n }\n\n public render() {\n const {\n bindings: {i18n},\n } = this;\n const {firstRequestExecuted, hasError} = this.summaryState;\n return (\n <FacetGuard\n enabled={true}\n firstSearchExecuted={firstRequestExecuted}\n hasError={hasError}\n hasResults={this.shouldRenderFacet}\n >\n {\n <FacetContainer>\n <FacetHeader\n i18n={i18n}\n label={this.displayName}\n onClearFilters={() => {\n this.focusTarget.focusAfterSearch();\n this.facet.deselectAll();\n }}\n numberOfActiveValues={this.numberOfSelectedValues}\n isCollapsed={this.isCollapsed}\n headingLevel={0}\n onToggleCollapse={() => (this.isCollapsed = !this.isCollapsed)}\n headerRef={(el) => this.focusTarget.setTarget(el)}\n />\n {!this.isCollapsed && [\n this.shouldRenderValues && this.renderValues(),\n this.shouldRenderInput && (\n <atomic-commerce-facet-number-input\n bindings={this.bindings}\n label={this.displayName}\n facet={this.facet}\n range={this.facetState.manualRange}\n ></atomic-commerce-facet-number-input>\n ),\n ]}\n </FacetContainer>\n }\n </FacetGuard>\n );\n }\n\n private renderValues() {\n const {\n manualRanges,\n displayName,\n bindings: {\n i18n,\n engine: {logger},\n },\n formatter,\n } = this;\n\n return (\n <NumericFacetValuesContainer i18n={i18n} label={displayName}>\n {this.valuesToRender.map((value) => (\n <NumericFacetValueLink\n formatter={formatter}\n displayValuesAs={'checkbox'}\n facetValue={value}\n field={this.facetState.field}\n i18n={i18n}\n logger={logger}\n manualRanges={manualRanges}\n onClick={() => this.facet.toggleSelect(value)}\n />\n ))}\n </NumericFacetValuesContainer>\n );\n }\n\n private get displayName() {\n return this.facetState.displayName || 'no-label';\n }\n\n private get numberOfSelectedValues() {\n return (\n this.facetState.values.filter(({state}) => state === 'selected').length ||\n 0\n );\n }\n\n private get hasInputRange() {\n return !!this.facetState.manualRange || this.summaryState.isLoading;\n }\n\n private get shouldRenderValues() {\n return !this.hasInputRange && !!this.valuesToRender.length;\n }\n\n private get valuesToRender() {\n return (\n this.facetState.values.filter(\n (value) => value.numberOfResults || value.state !== 'idle'\n ) || []\n );\n }\n\n private get shouldRenderInput() {\n const {\n firstRequestExecuted: firstSearchExecuted,\n hasError,\n isLoading,\n hasProducts: hasResults,\n } = this.summaryState;\n return shouldDisplayInputForFacetRange({\n hasInputRange: this.hasInputRange,\n searchStatusState: {\n firstSearchExecuted,\n hasError,\n hasResults,\n isLoading,\n },\n facetValues: this.facetState.values,\n hasInput: true,\n });\n }\n\n private get isHidden() {\n return !this.shouldRenderFacet;\n }\n\n private get shouldRenderFacet() {\n return this.shouldRenderInput || this.shouldRenderValues;\n }\n\n private get hasValues() {\n if (this.facetState.values.length) {\n return true;\n }\n\n return !!this.valuesToRender.length;\n }\n\n private ensureSubscribed() {\n if (this.unsubscribeFacetController) {\n return;\n }\n this.unsubscribeFacetController = this.facet.subscribe(\n () => (this.facetState = this.facet.state)\n );\n }\n}\n","@import '../../../common/facets/facet-common.pcss';\n","import {\n DateFacet,\n DateFilterRange,\n deserializeRelativeDate,\n DateFacetValue,\n DateFacetState,\n DateRangeRequest,\n SearchSummaryState,\n ProductListingSummaryState,\n Summary,\n} from '@coveo/headless/commerce';\nimport {Component, Element, h, Listen, Prop, State, VNode} from '@stencil/core';\nimport {parseDate} from '../../../../utils/date-utils';\nimport {\n BindStateToController,\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {FocusTargetController} from '../../../../utils/stencil-accessibility-utils';\nimport {FacetInfo} from '../../../common/facets/facet-common-store';\nimport {FacetContainer} from '../../../common/facets/facet-container/stencil-facet-container';\nimport {FacetGuard} from '../../../common/facets/facet-guard';\nimport {FacetHeader} from '../../../common/facets/facet-header/stencil-facet-header';\nimport {FacetValueLabelHighlight} from '../../../common/facets/facet-value-label-highlight/stencil-facet-value-label-highlight';\nimport {FacetValueLink} from '../../../common/facets/facet-value-link/stencil-facet-value-link';\nimport {FacetValuesGroup} from '../../../common/facets/facet-values-group/stencil-facet-values-group';\nimport {initializePopover} from '../../../common/facets/popover/popover-type';\nimport {shouldDisplayInputForFacetRange} from '../../../common/facets/stencil-facet-common';\nimport {CommerceBindings as Bindings} from '../../atomic-commerce-interface/atomic-commerce-interface';\n\n/**\n * A facet is a list of values for a certain field occurring in the results.\n * An `atomic-commerce-timeframe-facet` displays a facet of the results for the current query as date intervals.\n *\n * @alpha\n */\n@Component({\n tag: 'atomic-commerce-timeframe-facet',\n styleUrl: './atomic-commerce-timeframe-facet.pcss',\n shadow: true,\n})\nexport class AtomicCommerceTimeframeFacet\n implements InitializableComponent<Bindings>\n{\n @InitializeBindings() public bindings!: Bindings;\n @Element() private host!: HTMLElement;\n\n /**\n * The summary controller instance.\n */\n @Prop() summary!: Summary<SearchSummaryState | ProductListingSummaryState>;\n /**\n * The date facet controller instance.\n */\n @Prop() public facet!: DateFacet;\n /**\n * Specifies whether the facet is collapsed.\n */\n @Prop({reflect: true, mutable: true}) public isCollapsed = false;\n /**\n * The field identifier for this facet.\n */\n @Prop({reflect: true}) field?: string;\n\n @State()\n public facetState!: DateFacetState;\n\n @BindStateToController('summary')\n @State()\n public summaryState!: SearchSummaryState | ProductListingSummaryState;\n\n @State() public error!: Error;\n\n @State() private inputRange?: DateFilterRange;\n\n private headerFocus?: FocusTargetController;\n\n private get displayName() {\n return this.facetState.displayName || 'no-label';\n }\n\n private get focusTarget(): FocusTargetController {\n if (!this.headerFocus) {\n this.headerFocus = new FocusTargetController(this);\n }\n return this.headerFocus;\n }\n\n private unsubscribeFacetController?: () => void | undefined;\n\n public initialize() {\n if (!this.facet) {\n return;\n }\n this.ensureSubscribed();\n this.registerFacetToStore();\n }\n\n public connectedCallback(): void {\n this.ensureSubscribed();\n }\n\n @Listen('atomic/dateInputApply')\n public applyDateInput({detail}: CustomEvent<DateFilterRange>) {\n this.inputRange = {start: detail.start, end: detail.end};\n }\n\n private get valuesToRender() {\n return (\n this.facetState.values.filter(\n (value) => value.numberOfResults || value.state !== 'idle'\n ) || []\n );\n }\n\n private get shouldRenderValues() {\n return !this.hasInputRange && !!this.valuesToRender.length;\n }\n\n private get shouldRenderFacet() {\n return this.shouldRenderInput || this.shouldRenderValues;\n }\n\n private get shouldRenderInput() {\n const {\n firstRequestExecuted: firstSearchExecuted,\n hasError,\n isLoading,\n hasProducts: hasResults,\n } = this.summaryState;\n return shouldDisplayInputForFacetRange({\n hasInputRange: this.hasInputRange,\n searchStatusState: {\n firstSearchExecuted,\n hasError,\n hasResults,\n isLoading,\n },\n facetValues: this.facetState.values || [],\n hasInput: true,\n });\n }\n\n private get hasValues() {\n if (this.facetState.values.length) {\n return true;\n }\n\n return !!this.valuesToRender.length;\n }\n\n private get numberOfSelectedValues() {\n if (this.hasInputRange) {\n return 1;\n }\n\n return (\n this.facetState.values.filter(({state}) => state === 'selected').length ||\n 0\n );\n }\n\n private get hasInputRange() {\n return !!this.inputRange;\n }\n\n public disconnectedCallback() {\n if (this.host.isConnected) {\n return;\n }\n this.unsubscribeFacetController?.();\n this.unsubscribeFacetController = undefined;\n }\n\n private get isHidden() {\n return !this.shouldRenderFacet;\n }\n\n private resetRange() {\n this.inputRange = undefined;\n this.facet.setRanges([]);\n }\n\n private registerFacetToStore() {\n const facetInfo: FacetInfo = {\n label: () => this.bindings.i18n.t(this.displayName),\n facetId: this.facetState.facetId,\n element: this.host,\n isHidden: () => this.isHidden,\n };\n\n initializePopover(this.host, {\n ...facetInfo,\n hasValues: () => this.hasValues,\n numberOfActiveValues: () => this.numberOfSelectedValues,\n });\n }\n\n private formatFacetValue(facetValue: DateFacetValue) {\n try {\n const startDate = deserializeRelativeDate(facetValue.start);\n const relativeDate =\n startDate.period === 'past'\n ? startDate\n : deserializeRelativeDate(facetValue.end);\n\n return this.bindings.i18n.t(\n `${relativeDate.period}-${relativeDate.unit}`,\n {\n count: relativeDate.amount,\n }\n );\n } catch (error) {\n return this.bindings.i18n.t('to', {\n start: parseDate(facetValue.start).format('YYYY-MM-DD'),\n end: parseDate(facetValue.end).format('YYYY-MM-DD'),\n });\n }\n }\n private renderValues() {\n return this.renderValuesContainer(\n this.valuesToRender.map((value) => this.renderValue(value))\n );\n }\n\n private renderValue(facetValue: DateFacetValue) {\n const displayValue = this.formatFacetValue(facetValue);\n const isSelected = facetValue.state === 'selected';\n const isExcluded = facetValue.state === 'excluded';\n return (\n <FacetValueLink\n displayValue={displayValue}\n isSelected={isSelected}\n numberOfResults={facetValue.numberOfResults}\n i18n={this.bindings.i18n}\n onClick={() => this.facet.toggleSingleSelect(facetValue)}\n >\n <FacetValueLabelHighlight\n displayValue={displayValue}\n isSelected={isSelected}\n isExcluded={isExcluded}\n ></FacetValueLabelHighlight>\n </FacetValueLink>\n );\n }\n\n private renderValuesContainer(children: VNode[]) {\n return (\n <FacetValuesGroup i18n={this.bindings.i18n} label={this.displayName}>\n <ul class=\"mt-3\" part=\"values\">\n {children}\n </ul>\n </FacetValuesGroup>\n );\n }\n\n private renderHeader() {\n return (\n <FacetHeader\n i18n={this.bindings.i18n}\n label={this.displayName}\n onClearFilters={() => {\n this.focusTarget.focusAfterSearch();\n if (this.hasInputRange) {\n this.resetRange();\n return;\n }\n this.facet.deselectAll();\n }}\n numberOfActiveValues={this.numberOfSelectedValues}\n isCollapsed={this.isCollapsed}\n headingLevel={0}\n onToggleCollapse={() => (this.isCollapsed = !this.isCollapsed)}\n headerRef={(el) => this.focusTarget.setTarget(el)}\n ></FacetHeader>\n );\n }\n\n private renderDateInput() {\n return (\n <atomic-facet-date-input\n bindings={this.bindings}\n label={this.displayName}\n rangeGetter={() => this.inputRange}\n facetId={this.facetState.facetId}\n rangeSetter={({start, end, endInclusive}: DateRangeRequest) => {\n this.facet.setRanges([\n {\n start,\n end,\n endInclusive,\n state: 'selected',\n },\n ]);\n }}\n ></atomic-facet-date-input>\n );\n }\n\n public render() {\n const {hasError, firstRequestExecuted} = this.summaryState;\n\n return (\n <FacetGuard\n enabled={true}\n firstSearchExecuted={firstRequestExecuted}\n hasError={hasError}\n hasResults={this.shouldRenderFacet}\n >\n {\n <FacetContainer>\n {this.renderHeader()}\n {!this.isCollapsed && [\n this.shouldRenderValues && this.renderValues(),\n this.shouldRenderInput && this.renderDateInput(),\n ]}\n </FacetContainer>\n }\n </FacetGuard>\n );\n }\n\n private ensureSubscribed() {\n if (this.unsubscribeFacetController) {\n return;\n }\n this.unsubscribeFacetController = this.facet.subscribe(\n () => (this.facetState = this.facet.state)\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|