@coveo/atomic 3.35.0-pre.ff63a360d9 → 3.35.0-pre.ffc3d9f986
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/components/atomic-category-facet.js +17 -7
- package/dist/atomic/components/atomic-category-facet.js.map +1 -1
- package/dist/atomic/components/atomic-recs-interface.js +1 -1
- package/dist/atomic/components/atomic-search-box.js +7 -3
- package/dist/atomic/components/atomic-search-box.js.map +1 -1
- package/dist/atomic/components/components/commerce/atomic-commerce-breadbox/atomic-commerce-breadbox.js +3 -1
- package/dist/atomic/components/components/commerce/atomic-commerce-category-facet/atomic-commerce-category-facet.js +3 -0
- package/dist/atomic/components/components/commerce/atomic-commerce-search-box/atomic-commerce-search-box.js +5 -0
- package/dist/atomic/components/components/commerce/atomic-commerce-search-box-recent-queries/atomic-commerce-search-box-recent-queries.js +3 -0
- package/dist/atomic/components/components/common/breadbox/breadcrumb-button.js +6 -1
- package/dist/atomic/components/components/common/facets/category-facet/all-categories-button.js +3 -2
- package/dist/atomic/components/components/common/facets/category-facet/all-categories-localized-label.js +9 -0
- package/dist/atomic/components/components/common/facets/category-facet/search-value.js +6 -1
- package/dist/atomic/components/components/common/search-box/text-area-clear-button.js +1 -1
- package/dist/atomic/components/global/environment.js +1 -1
- package/dist/atomic/components/stencil-suggestion-manager.js +1 -1
- package/dist/atomic/components/stencil-suggestion-manager.js.map +1 -1
- package/dist/atomic/lang/cs.json +1 -1
- package/dist/atomic/lang/da.json +1 -1
- package/dist/atomic/lang/de.json +1 -1
- package/dist/atomic/lang/dev.json +1 -1
- package/dist/atomic/lang/el.json +1 -1
- package/dist/atomic/lang/en.json +1 -1
- package/dist/atomic/lang/es.json +1 -1
- package/dist/atomic/lang/fi.json +1 -1
- package/dist/atomic/lang/fr.json +1 -1
- package/dist/atomic/lang/hu.json +1 -1
- package/dist/atomic/lang/id.json +1 -1
- package/dist/atomic/lang/it.json +1 -1
- package/dist/atomic/lang/ja.json +1 -1
- package/dist/atomic/lang/ko.json +1 -1
- package/dist/atomic/lang/nl.json +1 -1
- package/dist/atomic/lang/no.json +1 -1
- package/dist/atomic/lang/pl.json +1 -1
- package/dist/atomic/lang/pt-BR.json +1 -1
- package/dist/atomic/lang/pt.json +1 -1
- package/dist/atomic/lang/ru.json +1 -1
- package/dist/atomic/lang/sv.json +1 -1
- package/dist/atomic/lang/th.json +1 -1
- package/dist/atomic/lang/tr.json +1 -1
- package/dist/atomic/lang/zh-CN.json +1 -1
- package/dist/atomic/lang/zh-TW.json +1 -1
- package/dist/atomic/lang/zh.json +1 -1
- package/dist/atomic/{p-bf850977.entry.js → p-0e5bb49d.entry.js} +2 -2
- package/dist/atomic/{p-ff23598b.entry.js → p-2c8d8e83.entry.js} +2 -2
- package/dist/atomic/p-2c8d8e83.entry.js.map +1 -0
- package/dist/atomic/p-2c94b87e.js +2 -0
- package/dist/atomic/p-2c94b87e.js.map +1 -0
- package/dist/atomic/{p-72cdb9d8.entry.js → p-4ba1eb36.entry.js} +2 -2
- package/dist/atomic/p-4ba1eb36.entry.js.map +1 -0
- package/dist/atomic/{p-87eafe2f.entry.js → p-77727995.entry.js} +2 -2
- package/dist/cjs/atomic-category-facet.cjs.entry.js +17 -7
- package/dist/cjs/atomic-category-facet.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-insight-search-box.cjs.entry.js +1 -1
- package/dist/cjs/atomic-recs-interface.cjs.entry.js +1 -1
- package/dist/cjs/atomic-search-box.cjs.entry.js +8 -4
- package/dist/cjs/atomic-search-box.cjs.entry.js.map +1 -1
- package/dist/cjs/{stencil-suggestion-manager-83efa596.js → stencil-suggestion-manager-62c42aa3.js} +2 -2
- package/dist/cjs/stencil-suggestion-manager-62c42aa3.js.map +1 -0
- package/dist/cjs/version.cjs.js +2 -2
- package/dist/esm/atomic-category-facet.entry.js +17 -7
- package/dist/esm/atomic-category-facet.entry.js.map +1 -1
- package/dist/esm/atomic-insight-search-box.entry.js +1 -1
- package/dist/esm/atomic-recs-interface.entry.js +1 -1
- package/dist/esm/atomic-search-box.entry.js +8 -4
- package/dist/esm/atomic-search-box.entry.js.map +1 -1
- package/dist/esm/{stencil-suggestion-manager-c1c4298e.js → stencil-suggestion-manager-3d2eea75.js} +2 -2
- package/dist/esm/stencil-suggestion-manager-3d2eea75.js.map +1 -0
- package/dist/esm/version.js +2 -2
- package/dist/types/components/commerce/atomic-commerce-breadbox/atomic-commerce-breadbox.d.ts +1 -0
- package/dist/types/components/commerce/atomic-commerce-search-box/atomic-commerce-search-box.d.ts +1 -0
- package/dist/types/components/commerce/atomic-commerce-search-box-recent-queries/atomic-commerce-search-box-recent-queries.d.ts +1 -0
- package/dist/types/components/common/breadbox/breadcrumb-button.d.ts +2 -0
- package/dist/types/components/common/facets/category-facet/all-categories-button.d.ts +2 -0
- package/dist/types/components/common/facets/category-facet/all-categories-localized-label.d.ts +6 -0
- package/dist/types/components/common/facets/category-facet/search-value.d.ts +1 -0
- package/dist/types/components/common/facets/category-facet/stencil-all-categories-button.d.ts +2 -0
- package/dist/types/components/common/facets/category-facet/stencil-search-value.d.ts +1 -0
- package/dist/types/components/search/atomic-search-box/atomic-search-box.d.ts +1 -0
- package/dist/types/directives/hierarchical-path.d.ts +1 -1
- package/docs/atomic-docs.json +1 -1
- package/package.json +5 -8
- package/dist/atomic/p-72cdb9d8.entry.js.map +0 -1
- package/dist/atomic/p-aa290a01.js +0 -2
- package/dist/atomic/p-aa290a01.js.map +0 -1
- package/dist/atomic/p-ff23598b.entry.js.map +0 -1
- package/dist/cjs/stencil-suggestion-manager-83efa596.js.map +0 -1
- package/dist/esm/stencil-suggestion-manager-c1c4298e.js.map +0 -1
- /package/dist/atomic/{p-bf850977.entry.js.map → p-0e5bb49d.entry.js.map} +0 -0
- /package/dist/atomic/{p-87eafe2f.entry.js.map → p-77727995.entry.js.map} +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"file":"stencil-suggestion-manager-62c42aa3.js","mappings":"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","names":["h","Button","debounce","forceUpdate","isNullOrUndefined","elementHasQuery","DOMPurify","elementHasNoQuery"],"sources":["src/components/common/search-box/stencil-search-box-wrapper.tsx","src/components/common/search-box/stencil-text-area-clear-button.tsx","src/components/common/search-box/stencil-search-text-area.tsx","src/utils/promise-utils.ts","src/components/common/suggestions/stencil-suggestion-manager.ts"],"sourcesContent":["import {FunctionalComponent, h} from '@stencil/core';\n\ninterface Props {\n disabled: boolean;\n onFocusout?: (event: FocusEvent) => void;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const SearchBoxWrapper: FunctionalComponent<Props> = (\n props,\n children\n) => {\n const getClasses = () => {\n const baseClasses =\n 'flex bg-background w-full border border-neutral rounded-md focus-within:ring-3 absolute top-0 left-0';\n const focusClasses = props.disabled\n ? 'focus-within:border-disabled focus-within:ring-neutral'\n : 'focus-within:border-primary focus-within:ring-ring-primary';\n\n return [baseClasses, focusClasses].join(' ');\n };\n\n return (\n <div part=\"wrapper\" class={getClasses()} onFocusout={props.onFocusout}>\n {children}\n </div>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\nimport ClearSlim from '../../../images/clear-slim.svg';\nimport {AnyBindings} from '../interface/bindings';\nimport {Button, StencilButtonProps} from '../stencil-button';\n\ninterface Props extends Partial<StencilButtonProps> {\n bindings: AnyBindings;\n inputRef: HTMLInputElement | HTMLTextAreaElement | null;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const TextAreaClearButton: FunctionalComponent<Props> = ({\n inputRef,\n bindings,\n onClick,\n ...defaultButtonProps\n}) => (\n <div\n part=\"clear-button-wrapper\"\n class=\"ml-2 flex items-center justify-center py-2\"\n >\n <Button\n style=\"text-transparent\"\n part=\"clear-button\"\n class=\"text-neutral-dark flex h-8 w-8 shrink-0 items-center justify-center\"\n onClick={() => {\n onClick?.();\n inputRef?.focus();\n }}\n ariaLabel={bindings.i18n.t('clear-searchbox')}\n {...defaultButtonProps}\n >\n <atomic-icon\n part=\"clear-icon\"\n icon={ClearSlim}\n class=\"h-4 w-4\"\n ></atomic-icon>\n </Button>\n </div>\n);\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {JSXBase} from '@stencil/core/internal';\nimport {AnyBindings} from '../interface/bindings';\nimport {TextAreaClearButton} from './stencil-text-area-clear-button';\n\ninterface Props extends JSXBase.TextareaHTMLAttributes<HTMLTextAreaElement> {\n textAreaRef: HTMLTextAreaElement;\n loading: boolean;\n bindings: AnyBindings;\n value: string;\n ariaLabel: string;\n onClear(): void;\n popup?: {\n id: string;\n activeDescendant: string;\n expanded: boolean;\n hasSuggestions: boolean;\n };\n}\n\nfunction getPopupAttributes(props: Required<Props>['popup']) {\n return {\n autocomplete: 'off',\n autocapitalize: 'off',\n autocorrect: 'off',\n ...(props.activeDescendant && {\n 'aria-activedescendant': props.activeDescendant,\n }),\n 'aria-autocomplete': 'both',\n 'aria-haspopup': 'true',\n 'aria-controls': props.id,\n };\n}\n\nfunction syncTextWithReplica(elem: HTMLTextAreaElement, value?: string) {\n const parent = elem?.parentNode as HTMLElement;\n if (!parent) {\n return;\n }\n if (elem.value === '\\n') {\n return;\n }\n parent.dataset.replicatedValue = value ?? elem.value;\n}\n\nfunction resetReplicaText(elem: HTMLTextAreaElement) {\n const parent = elem?.parentNode as HTMLElement;\n if (parent) {\n delete parent.dataset.replicatedValue;\n }\n}\n\nfunction collapseTextArea(elem: HTMLTextAreaElement) {\n const parent = elem?.parentNode as HTMLElement;\n if (parent) {\n parent.classList.remove('expanded');\n }\n}\n\nfunction expandTextArea(elem: HTMLTextAreaElement) {\n const parent = elem?.parentNode as HTMLElement;\n if (parent) {\n parent.classList.add('expanded');\n }\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const SearchTextArea: FunctionalComponent<Props> = ({\n textAreaRef,\n loading,\n bindings,\n onInput,\n onFocus,\n onBlur,\n onChange,\n onKeyDown,\n onKeyUp,\n value,\n ariaLabel,\n onClear,\n popup,\n ...defaultInputProps\n}) => (\n <div class=\"flex grow overflow-hidden\">\n <div part=\"textarea-expander\" class=\"grid grow overflow-hidden\">\n <textarea\n part=\"textarea\"\n aria-label={ariaLabel}\n placeholder={bindings.i18n.t('search')}\n class=\"placeholder-neutral-dark\"\n rows={1}\n onInput={(e) => {\n onInput?.(e);\n syncTextWithReplica(textAreaRef);\n }}\n onKeyDown={(e) => {\n syncTextWithReplica(textAreaRef);\n if (e.key === 'Enter') {\n if (e.shiftKey) {\n return;\n }\n e.preventDefault();\n }\n onKeyDown?.(e);\n }}\n onKeyUp={(e) => {\n onKeyUp?.(e);\n if (e.key === 'Enter') {\n e.preventDefault();\n return;\n }\n syncTextWithReplica(textAreaRef);\n }}\n onBlur={(e) => {\n onBlur?.(e);\n collapseTextArea(textAreaRef);\n syncTextWithReplica(textAreaRef);\n }}\n onChange={(e) => {\n onChange?.(e);\n syncTextWithReplica(textAreaRef);\n }}\n onFocus={(e) => {\n onFocus?.(e);\n const target = e.target as HTMLTextAreaElement;\n syncTextWithReplica(textAreaRef ?? target);\n expandTextArea(textAreaRef ?? target);\n }}\n autocomplete=\"off\"\n {...(popup && getPopupAttributes(popup))}\n {...defaultInputProps}\n value={value}\n />\n </div>\n\n {loading && (\n <div class=\"searchbox-button-wrapper ml-2 flex items-center justify-center\">\n <span\n part=\"loading\"\n class=\"loading mr-2 grid h-5 w-5 animate-spin place-items-center rounded-full bg-linear-to-r\"\n ></span>\n </div>\n )}\n {!loading && value && (\n <TextAreaClearButton\n inputRef={textAreaRef}\n bindings={bindings}\n onClick={() => {\n onClear();\n resetReplicaText(textAreaRef);\n }}\n />\n )}\n </div>\n);\n","export function promiseTimeout<T>(prom: T | Promise<T>, ms: number) {\n let id: NodeJS.Timeout;\n const timeout = new Promise((_, reject) => {\n id = setTimeout(() => {\n reject(new Error('Promise timed out.'));\n }, ms);\n });\n return Promise.race([prom, timeout]).then(() => {\n clearTimeout(id);\n });\n}\n","import {isNullOrUndefined} from '@coveo/bueno';\nimport {forceUpdate} from '@stencil/core';\nimport DOMPurify from 'dompurify';\nimport {debounce} from '../../../utils/debounce-utils';\nimport {promiseTimeout} from '../../../utils/promise-utils';\nimport type {\n SearchBoxSuggestionElement,\n SearchBoxSuggestionsBindings,\n SearchBoxSuggestionsEvent,\n} from './suggestions-types';\nimport {elementHasNoQuery, elementHasQuery} from './suggestions-utils';\n\n/**\n * List of suggestions that will be displayed along other lists (e.g recent queries) when the search box's input is selected.\n */\nexport interface SearchBoxSuggestions {\n /**\n * The search box will sort the position of suggestions using this value, the lowest value being first.\n * By default, the DOM position will be used.\n */\n position: number;\n /**\n * Whether the suggestions should be listed in the right or left panel. By default, the suggestions are listed in the right panel.\n */\n panel?: 'left' | 'right';\n /**\n * Method that returns the list of elements which will be rendered in the list of suggestions.\n */\n renderItems(): SearchBoxSuggestionElement[];\n /**\n * Hook called when the user changes the search box's input value. This can lead to all the query suggestions being updated.\n */\n onInput?(): Promise<unknown>;\n /**\n * Hook called when the current suggested query changes as the user navigates the list of suggestions.\n * This is used for instant results, which are rendered based on the current suggested query.\n * @param q The new current suggested query.\n */\n onSuggestedQueryChange?(q: string): Promise<unknown>;\n}\n\ninterface SearchBoxProps {\n getSearchBoxValue: () => string;\n updateQuery: (suggestedQuery: string) => void;\n getSuggestionTimeout: () => number;\n getNumberOfSuggestionsToDisplay: () => number;\n getSuggestionDelay: () => number;\n getLogger: () => Pick<typeof console, 'warn'>;\n getHost: () => HTMLElement;\n}\n\nexport class SuggestionManager<SearchBoxController> {\n public suggestions: SearchBoxSuggestions[] = [];\n public leftSuggestionElements: SearchBoxSuggestionElement[] = [];\n public rightSuggestionElements: SearchBoxSuggestionElement[] = [];\n public leftPanel: HTMLElement | undefined = undefined;\n public rightPanel: HTMLElement | undefined = undefined;\n public triggerSuggestions: () => Promise<void>;\n public activeDescendant = '';\n public suggestedQuery = '';\n public keyboardActiveDescendant = '';\n\n private queryDataAttribute = 'data-query';\n private suggestionEvents: SearchBoxSuggestionsEvent<SearchBoxController>[] =\n [];\n\n private previousActiveDescendantElement: HTMLElement | null = null;\n private leftSuggestions: SearchBoxSuggestions[] = [];\n private rightSuggestions: SearchBoxSuggestions[] = [];\n\n constructor(private ownerSearchBoxProps: SearchBoxProps) {\n this.triggerSuggestions = debounce(\n () => this.executeQuerySuggestion(),\n this.ownerSearchBoxProps.getSuggestionDelay()\n );\n }\n\n public get partialSuggestionBindings(): Pick<\n SearchBoxSuggestionsBindings<SearchBoxController>,\n | 'suggestedQuery'\n | 'clearSuggestions'\n | 'triggerSuggestions'\n | 'getSuggestions'\n | 'getSuggestionElements'\n > {\n return {\n suggestedQuery: () => this.suggestedQuery,\n clearSuggestions: () => this.clearSuggestions(),\n triggerSuggestions: () => this.triggerSuggestions(),\n getSuggestions: () => this.suggestions,\n getSuggestionElements: () => this.allSuggestionElements,\n };\n }\n\n public get activeDescendantElement(): HTMLElement | null {\n if (!this.hasActiveDescendant) {\n return null;\n }\n\n return (\n this.leftPanel?.querySelector(`#${this.activeDescendant}`) ||\n this.rightPanel?.querySelector(`#${this.activeDescendant}`) ||\n null\n );\n }\n\n public onSubmit() {\n this.clickOnActiveElement();\n this.clearSuggestions();\n }\n\n public updateActiveDescendant(id = '') {\n this.activeDescendant = id;\n forceUpdate(this.ownerSearchBoxProps.getHost());\n }\n\n public updateKeyboardActiveDescendant(id = '') {\n this.keyboardActiveDescendant = id;\n }\n\n public clickOnActiveElement() {\n this.activeDescendantElement?.click();\n this.updateActiveDescendant();\n }\n\n public isRightPanelInFocus() {\n if (\n isNullOrUndefined(this.panelInFocus) ||\n isNullOrUndefined(this.rightPanel)\n ) {\n return false;\n }\n\n return this.panelInFocus === this.rightPanel;\n }\n\n public initializeSuggestions(\n bindings: SearchBoxSuggestionsBindings<SearchBoxController>\n ) {\n this.suggestions = this.suggestionEvents.map((event) => event(bindings));\n }\n\n public registerSuggestionsFromEvent(\n event: CustomEvent<SearchBoxSuggestionsEvent<SearchBoxController>>,\n bindings: SearchBoxSuggestionsBindings<SearchBoxController>\n ) {\n event.preventDefault();\n event.stopPropagation();\n this.suggestionEvents.push(event.detail);\n this.suggestions.push(event.detail(bindings));\n }\n\n public registerSuggestions(suggestions: SearchBoxSuggestions) {\n this.suggestions.push(suggestions);\n }\n\n public get isDoubleList() {\n return Boolean(\n this.leftSuggestionElements.length && this.rightSuggestionElements.length\n );\n }\n\n public focusPanel(side: 'left' | 'right') {\n const panel = side === 'left' ? this.leftPanel : this.rightPanel;\n\n if (this.panelInFocus === panel) {\n return;\n }\n if (panel?.firstElementChild) {\n const panelHasActiveDescendant =\n this.previousActiveDescendantElement &&\n panel.contains(this.previousActiveDescendantElement);\n const newValue = panelHasActiveDescendant\n ? this.previousActiveDescendantElement!\n : (panel.firstElementChild as HTMLElement);\n this.updateDescendants(newValue.id);\n }\n }\n\n public clearSuggestions() {\n this.clearSuggestionElements();\n this.updateActiveDescendant();\n }\n\n public async focusNextValue() {\n if (!this.hasSuggestions || !this.nextOrFirstValue) {\n return;\n }\n\n await this.focusValue(this.nextOrFirstValue as HTMLElement);\n }\n\n public async focusValue(value: HTMLElement) {\n this.updateKeyboardActiveDescendant(value.id);\n this.updateActiveDescendant(value.id);\n this.scrollActiveDescendantIntoView();\n await this.updateQueryFromSuggestion();\n }\n\n public async onSuggestionMouseOver(\n item: SearchBoxSuggestionElement,\n side: 'left' | 'right',\n id: string\n ) {\n const thisPanel = side === 'left' ? this.leftPanel : this.rightPanel;\n // When hovering, always reset the keyboard active descendant\n this.updateKeyboardActiveDescendant();\n if (this.panelInFocus === thisPanel) {\n this.updateActiveDescendant(id);\n } else {\n this.updateDescendants(id);\n }\n if (item.query) {\n await this.updateSuggestedQuery(item.query);\n }\n }\n\n public async onSuggestionClick(item: SearchBoxSuggestionElement, e: Event) {\n if (item.query) {\n this.clearSuggestions();\n await this.updateOwnerSearchboxQuery(item.query);\n }\n item.onSelect?.(e);\n }\n\n public get hasSuggestions() {\n return !!this.allSuggestionElements.length;\n }\n\n public get allSuggestionElements() {\n return [...this.leftSuggestionElements, ...this.rightSuggestionElements];\n }\n\n public async focusPreviousValue() {\n if (this.firstValue === this.activeDescendantElement) {\n this.updateKeyboardActiveDescendant();\n this.updateActiveDescendant();\n return;\n }\n\n if (!this.hasSuggestions || !this.previousOrLastValue) {\n return;\n }\n\n await this.focusValue(this.previousOrLastValue as HTMLElement);\n }\n\n public get hasActiveDescendant() {\n return this.activeDescendant !== '';\n }\n\n private async executeQuerySuggestion() {\n this.updateActiveDescendant();\n const settled = await Promise.allSettled(\n this.suggestions.map((suggestion) =>\n promiseTimeout(\n suggestion.onInput ? suggestion.onInput() : Promise.resolve(),\n this.ownerSearchBoxProps.getSuggestionTimeout()\n )\n )\n );\n\n const fulfilledSuggestions: SearchBoxSuggestions[] = [];\n\n settled.forEach((prom, j) => {\n if (prom.status === 'fulfilled') {\n fulfilledSuggestions.push(this.suggestions[j]);\n } else {\n this.ownerSearchBoxProps\n .getLogger()\n .warn(\n 'Some query suggestions are not being shown because the promise timed out.'\n );\n }\n });\n\n const splitSuggestions = (side: 'left' | 'right', isDefault = false) =>\n fulfilledSuggestions\n .filter(\n (suggestion) =>\n suggestion.panel === side || (!suggestion.panel && isDefault)\n )\n .sort(this.sortSuggestions);\n\n this.leftSuggestions = splitSuggestions('left', true);\n this.leftSuggestionElements = this.getAndFilterLeftSuggestionElements();\n\n this.rightSuggestions = splitSuggestions('right');\n this.rightSuggestionElements = this.getSuggestionElements(\n this.rightSuggestions\n );\n\n const defaultSuggestedQuery =\n this.allSuggestionElements.find(elementHasQuery)?.query || '';\n\n await this.updateSuggestedQuery(defaultSuggestedQuery);\n }\n\n private get lastValue() {\n return this.panelInFocus?.lastElementChild;\n }\n\n private get previousOrLastValue() {\n if (!this.hasActiveDescendant) {\n return this.lastValue?.firstChild;\n }\n\n const parentOfActiveDescendant =\n this.activeDescendantElement?.parentElement;\n return (\n parentOfActiveDescendant?.previousElementSibling?.firstChild ||\n this.firstValue?.firstChild\n );\n }\n\n private sortSuggestions(a: SearchBoxSuggestions, b: SearchBoxSuggestions) {\n return a.position - b.position;\n }\n\n private get nextOrFirstValue() {\n if (!this.hasActiveDescendant) {\n return this.firstValue?.firstChild;\n }\n\n const parentOfActiveDescendant =\n this.activeDescendantElement?.parentElement;\n return (\n parentOfActiveDescendant?.nextElementSibling?.firstChild ||\n this.firstValue?.firstChild\n );\n }\n\n private get firstValue() {\n return this.panelInFocus?.firstElementChild;\n }\n\n private get panelInFocus() {\n if (this.leftPanel?.contains(this.activeDescendantElement)) {\n return this.leftPanel;\n }\n if (this.rightPanel?.contains(this.activeDescendantElement)) {\n return this.rightPanel;\n }\n return this.leftPanel || this.rightPanel;\n }\n\n private scrollActiveDescendantIntoView() {\n this.activeDescendantElement?.scrollIntoView({\n block: 'nearest',\n });\n }\n\n private async updateQueryFromSuggestion() {\n const suggestedQuery = this.activeDescendantElement?.getAttribute(\n this.queryDataAttribute\n );\n await this.updateOwnerSearchboxQuery(suggestedQuery || '');\n }\n\n private async updateOwnerSearchboxQuery(query: string) {\n if (query && this.ownerSearchBoxProps.getSearchBoxValue() !== query) {\n this.ownerSearchBoxProps.updateQuery(query);\n await this.updateSuggestedQuery(query);\n }\n }\n\n private async updateSuggestedQuery(suggestedQuery: string) {\n await Promise.allSettled(\n this.suggestions.map((suggestion) =>\n promiseTimeout(\n suggestion.onSuggestedQueryChange\n ? suggestion.onSuggestedQueryChange(suggestedQuery)\n : Promise.resolve(),\n this.ownerSearchBoxProps.getSuggestionTimeout()\n )\n )\n );\n this.suggestedQuery = suggestedQuery;\n this.updateSuggestionElements(suggestedQuery);\n forceUpdate(this.ownerSearchBoxProps.getHost());\n }\n\n private updateSuggestionElements(query: string) {\n if (!this.isPanelInFocus(this.leftPanel, query)) {\n this.leftSuggestionElements = this.getAndFilterLeftSuggestionElements();\n }\n\n if (!this.isPanelInFocus(this.rightPanel, query)) {\n this.rightSuggestionElements = this.getSuggestionElements(\n this.rightSuggestions\n );\n }\n }\n\n public forceUpdate() {\n this.updateSuggestionElements(this.suggestedQuery);\n forceUpdate(this.ownerSearchBoxProps.getHost());\n }\n\n private isPanelInFocus(\n panel: HTMLElement | undefined,\n query: string\n ): boolean {\n if (!this.activeDescendantElement) {\n return false;\n }\n\n if (query) {\n const escaped = DOMPurify.sanitize(query);\n return !!panel?.querySelector(\n `[${this.queryDataAttribute}=\"${CSS.escape(escaped)}\"]`\n );\n }\n\n return this.activeDescendantElement?.closest('ul') === panel;\n }\n\n private getAndFilterLeftSuggestionElements() {\n const suggestionElements = this.getSuggestionElements(this.leftSuggestions);\n const filterOnDuplicate = new Set();\n\n const out = suggestionElements.filter((suggestionElement) => {\n if (isNullOrUndefined(suggestionElement.query)) {\n return true;\n }\n if (filterOnDuplicate.has(suggestionElement.query)) {\n return false;\n } else {\n filterOnDuplicate.add(suggestionElement.query);\n return true;\n }\n });\n\n return out;\n }\n\n private getSuggestionElements(suggestions: SearchBoxSuggestions[]) {\n const elements = suggestions.flatMap((suggestion) =>\n suggestion.renderItems()\n );\n\n const max =\n this.ownerSearchBoxProps.getNumberOfSuggestionsToDisplay() +\n elements.filter(elementHasNoQuery).length;\n\n return elements.slice(0, max);\n }\n\n private updateDescendants(activeDescendant = '') {\n const newPrevDescendantElement = this.activeDescendantElement;\n this.previousActiveDescendantElement = newPrevDescendantElement;\n this.updateActiveDescendant(activeDescendant);\n }\n\n private clearSuggestionElements() {\n this.leftSuggestionElements = [];\n this.rightSuggestionElements = [];\n }\n}\n"],"version":3}
|
package/dist/cjs/version.cjs.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
module.exports.headlessVersion = '3.31.3-pre.
|
2
|
-
module.exports.atomicVersion = '3.35.0-pre.
|
1
|
+
module.exports.headlessVersion = '3.31.3-pre.ffc3d9f986';
|
2
|
+
module.exports.atomicVersion = '3.35.0-pre.ffc3d9f986';
|
@@ -31,11 +31,21 @@ import './stencil-heading-c701a05a.js';
|
|
31
31
|
import './search-64cc84a9.js';
|
32
32
|
import './stencil-fieldset-group-e02988dc.js';
|
33
33
|
|
34
|
+
const getAllCategoriesLocalizedLabel = ({ facetId, field, i18n, }) => {
|
35
|
+
if (facetId && i18n.exists(`all-categories-${facetId}`)) {
|
36
|
+
return i18n.t(`all-categories-${facetId}`);
|
37
|
+
}
|
38
|
+
if (i18n.exists(`all-categories-${field}`)) {
|
39
|
+
return i18n.t(`all-categories-${field}`);
|
40
|
+
}
|
41
|
+
return i18n.t('all-categories');
|
42
|
+
};
|
43
|
+
|
34
44
|
/**
|
35
45
|
* @deprecated should only be used for Stencil components.
|
36
46
|
*/
|
37
|
-
const CategoryFacetAllCategoryButton = ({ i18n, onClick }) => {
|
38
|
-
const allCategories = i18n
|
47
|
+
const CategoryFacetAllCategoryButton = ({ i18n, onClick, facetId, field }) => {
|
48
|
+
const allCategories = getAllCategoriesLocalizedLabel({ facetId, field, i18n });
|
39
49
|
return (h(Button, { style: "text-neutral", part: "all-categories-button", onClick: () => {
|
40
50
|
onClick();
|
41
51
|
} },
|
@@ -124,10 +134,10 @@ const PATH_MAX_LENGTH = 3;
|
|
124
134
|
/**
|
125
135
|
* @deprecated should only be used for Stencil components.
|
126
136
|
*/
|
127
|
-
const CategoryFacetSearchValue = ({ value, field, i18n, onClick, searchQuery }) => {
|
137
|
+
const CategoryFacetSearchValue = ({ value, facetId, field, i18n, onClick, searchQuery }) => {
|
128
138
|
const count = value.count.toLocaleString(i18n.language);
|
129
139
|
const inLabel = i18n.t('in');
|
130
|
-
const allCategories = i18n
|
140
|
+
const allCategories = getAllCategoriesLocalizedLabel({ facetId, field, i18n });
|
131
141
|
const localizedPath = value.path.length
|
132
142
|
? value.path.map((value) => getFieldValueCaption(field, value, i18n))
|
133
143
|
: [allCategories];
|
@@ -438,7 +448,7 @@ const AtomicCategoryFacet = class {
|
|
438
448
|
return this.renderChildren();
|
439
449
|
}
|
440
450
|
if (isRoot) {
|
441
|
-
return (h(CategoryFacetTreeValueContainer, null, h(CategoryFacetAllCategoryButton, { i18n: this.bindings.i18n, onClick: () => {
|
451
|
+
return (h(CategoryFacetTreeValueContainer, null, h(CategoryFacetAllCategoryButton, { i18n: this.bindings.i18n, facetId: this.facet.state.facetId, field: this.field, onClick: () => {
|
442
452
|
this.focusTargets.activeValueFocus.focusAfterSearch();
|
443
453
|
this.facet.deselectAll();
|
444
454
|
} }), h(CategoryFacetParentAsTreeContainer, { isTopLevel: false }, this.renderValuesTree(valuesAsTrees, false))));
|
@@ -482,7 +492,7 @@ const AtomicCategoryFacet = class {
|
|
482
492
|
return this.facetState.valuesAsTrees.map((value, i) => this.renderChild(value, i === 0, i === this.resultIndexToFocusOnShowMore));
|
483
493
|
}
|
484
494
|
renderSearchResults() {
|
485
|
-
return (h(CategoryFacetSearchResultsContainer, null, this.facetState.facetSearch.values.map((value) => (h(CategoryFacetSearchValue, { value: value, field: this.field, i18n: this.bindings.i18n, searchQuery: this.facetState.facetSearch.query, onClick: () => {
|
495
|
+
return (h(CategoryFacetSearchResultsContainer, null, this.facetState.facetSearch.values.map((value) => (h(CategoryFacetSearchValue, { value: value, field: this.field, facetId: this.facetId, i18n: this.bindings.i18n, searchQuery: this.facetState.facetSearch.query, onClick: () => {
|
486
496
|
this.focusTargets.activeValueFocus.focusAfterSearch();
|
487
497
|
this.facet.facetSearch.select(value);
|
488
498
|
} })))));
|
@@ -507,7 +517,7 @@ const AtomicCategoryFacet = class {
|
|
507
517
|
}
|
508
518
|
render() {
|
509
519
|
const { bindings: { i18n }, label, facetState: { facetSearch, enabled, valuesAsTrees, selectedValueAncestry }, searchStatusState: { hasError, firstSearchExecuted }, } = this;
|
510
|
-
return (h(FacetGuard, { key: '
|
520
|
+
return (h(FacetGuard, { key: '799d01fcae226afa1ccd178b73b020cd2f2cf794', enabled: enabled, firstSearchExecuted: firstSearchExecuted, hasError: hasError, hasResults: valuesAsTrees.length > 0 }, firstSearchExecuted ? (h(FacetContainer, null, this.renderHeader(), !this.isCollapsed && [
|
511
521
|
this.renderSearchInput(),
|
512
522
|
shouldDisplaySearchResults(facetSearch) ? (h(Fragment, null, facetSearch.values.length ? (h(FacetValuesGroup, { i18n: i18n, label: label, query: facetSearch.query }, this.renderSearchResults())) : (h("div", { class: "mt-3" })), this.renderMatches())) : (h(Fragment, null, h(FacetValuesGroup, { i18n: i18n, label: label }, this.hasParents ? (h(CategoryFacetParentAsTreeContainer, { isTopLevel: true, className: "mt-3" }, this.renderValuesTree(selectedValueAncestry, true))) : (h(CategoryFacetChildrenAsTreeContainer, { className: "mt-3" }, this.renderChildren()))), this.renderShowMoreLess())),
|
513
523
|
])) : (h(FacetPlaceholder, { isCollapsed: this.isCollapsed, numberOfValues: this.numberOfValues }))));
|
@@ -1 +1 @@
|
|
1
|
-
{"file":"atomic-category-facet.entry.js","mappings":"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","names":["LeftArrow"],"sources":["src/components/common/facets/category-facet/stencil-all-categories-button.tsx","src/components/common/facets/category-facet/stencil-value-link.tsx","src/components/common/facets/category-facet/stencil-child-value-link.tsx","src/components/common/facets/category-facet/stencil-children-as-tree-container.tsx","src/components/common/facets/category-facet/stencil-parent-as-tree-container.tsx","src/components/common/facets/category-facet/stencil-parent-button.tsx","src/components/common/facets/category-facet/stencil-parent-value-link.tsx","src/components/common/facets/category-facet/stencil-search-results-container.tsx","src/components/common/facets/category-facet/stencil-search-value.tsx","src/components/common/facets/category-facet/stencil-value-as-tree-container.tsx","src/components/search/facets/atomic-category-facet/atomic-category-facet.pcss?tag=atomic-category-facet&encapsulation=shadow","src/components/search/facets/atomic-category-facet/atomic-category-facet.tsx"],"sourcesContent":["import {FunctionalComponent, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport LeftArrow from '../../../../images/arrow-left-rounded.svg';\nimport {Button} from '../../stencil-button';\n\ninterface CategoryFacetAllCategoryButtonProps {\n i18n: i18n;\n onClick(): void;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const CategoryFacetAllCategoryButton: FunctionalComponent<\n CategoryFacetAllCategoryButtonProps\n> = ({i18n, onClick}) => {\n const allCategories = i18n.t('all-categories');\n return (\n <Button\n style=\"text-neutral\"\n part=\"all-categories-button\"\n onClick={() => {\n onClick();\n }}\n >\n <atomic-icon\n aria-hidden=\"true\"\n icon={LeftArrow}\n part=\"back-arrow\"\n ></atomic-icon>\n <span class=\"truncate\">{allCategories}</span>\n </Button>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport {FacetValueLabelHighlight} from '../facet-value-label-highlight/stencil-facet-value-label-highlight';\nimport {FacetValueLink} from '../facet-value-link/stencil-facet-value-link';\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport interface CategoryFacetValueLinkProps {\n displayValue: string;\n numberOfResults: number;\n i18n: i18n;\n onClick: () => void;\n isParent: boolean;\n isSelected: boolean;\n searchQuery: string;\n isLeafValue: boolean;\n setRef: (el?: HTMLButtonElement) => void;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const CategoryFacetValueLink: FunctionalComponent<\n CategoryFacetValueLinkProps\n> = (\n {\n displayValue,\n numberOfResults,\n i18n,\n onClick,\n isParent,\n isSelected,\n searchQuery,\n isLeafValue,\n setRef,\n },\n children\n) => {\n const partNames = [];\n if (isParent) {\n partNames.push('active-parent');\n } else {\n partNames.push(`value-link${isSelected ? ' value-link-selected' : ''}`);\n }\n\n if (isLeafValue) {\n partNames.push('leaf-value');\n } else {\n partNames.push('node-value');\n }\n\n return (\n <FacetValueLink\n displayValue={displayValue}\n numberOfResults={numberOfResults}\n isSelected={isSelected}\n i18n={i18n}\n onClick={() => {\n onClick();\n }}\n searchQuery={searchQuery}\n part={partNames.join(' ')}\n class=\"contents\"\n buttonRef={(btn) => setRef(btn)}\n subList={children}\n >\n <FacetValueLabelHighlight\n displayValue={displayValue}\n isSelected={isSelected}\n ></FacetValueLabelHighlight>\n </FacetValueLink>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {\n CategoryFacetValueLink,\n CategoryFacetValueLinkProps,\n} from './stencil-value-link';\n\ninterface CategoryFacetChildValueLinkProps\n extends Omit<CategoryFacetValueLinkProps, 'isParent'> {}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const CategoryFacetChildValueLink: FunctionalComponent<\n CategoryFacetChildValueLinkProps\n> = (props, children) => {\n return (\n <CategoryFacetValueLink {...props} isParent={false}>\n {children}\n </CategoryFacetValueLink>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\n\ninterface CategoryFacetChildrenAsTreeContainerProps {\n className?: string;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const CategoryFacetChildrenAsTreeContainer: FunctionalComponent<\n CategoryFacetChildrenAsTreeContainerProps\n> = ({className}, children) => {\n return (\n <ul part=\"values\" class={className ?? ''}>\n {children}\n </ul>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\n\ninterface CategoryFacetParentAsTreeContainerProps {\n isTopLevel: boolean;\n className?: string;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const CategoryFacetParentAsTreeContainer: FunctionalComponent<\n CategoryFacetParentAsTreeContainerProps\n> = ({isTopLevel, className}, children) => {\n return (\n <ul class={className ?? ''} part={`${isTopLevel ? '' : 'sub-'}parents`}>\n {children}\n </ul>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport LeftArrow from '../../../../images/arrow-left-rounded.svg';\nimport {getFieldValueCaption} from '../../../../utils/field-utils';\nimport {Button} from '../../stencil-button';\n\ninterface CategoryFacetParentButtonProps {\n i18n: i18n;\n field: string;\n facetValue: {value: string; numberOfResults: number};\n onClick: () => void;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const CategoryFacetParentButton: FunctionalComponent<\n CategoryFacetParentButtonProps\n> = ({field, facetValue, i18n, onClick}) => {\n const displayValue = getFieldValueCaption(field, facetValue.value, i18n);\n const ariaLabel = i18n.t('facet-value', {\n value: displayValue,\n count: facetValue.numberOfResults,\n formattedCount: facetValue.numberOfResults.toLocaleString(i18n.language),\n });\n\n return (\n <Button\n style=\"text-neutral\"\n part=\"parent-button\"\n ariaPressed=\"false\"\n onClick={() => {\n onClick();\n }}\n ariaLabel={ariaLabel}\n >\n <atomic-icon\n icon={LeftArrow}\n part=\"back-arrow\"\n class=\"back-arrow\"\n ></atomic-icon>\n <span class=\"truncate\">{displayValue}</span>\n </Button>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {\n CategoryFacetValueLink,\n CategoryFacetValueLinkProps,\n} from './stencil-value-link';\n\ninterface CategoryFacetParentValueLinkProps\n extends Omit<CategoryFacetValueLinkProps, 'isParent' | 'isSelected'> {}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const CategoryFacetParentValueLink: FunctionalComponent<\n CategoryFacetParentValueLinkProps\n> = (props, children) => {\n return (\n <CategoryFacetValueLink {...props} isParent isSelected>\n {children}\n </CategoryFacetValueLink>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const CategoryFacetSearchResultsContainer: FunctionalComponent = (\n _,\n children\n) => {\n return (\n <ul part=\"search-results\" class=\"mt-3\">\n {children}\n </ul>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport {getFieldValueCaption} from '../../../../utils/field-utils';\nimport {Button} from '../../stencil-button';\nimport {FacetValueLabelHighlight} from '../facet-value-label-highlight/stencil-facet-value-label-highlight';\n\ninterface CategoryFacetSearchValueProps {\n value: {count: number; path: string[]; displayValue: string};\n i18n: i18n;\n field: string;\n onClick(): void;\n searchQuery: string;\n}\n\nconst SEPARATOR = '/';\nconst ELLIPSIS = '...';\nconst PATH_MAX_LENGTH = 3;\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const CategoryFacetSearchValue: FunctionalComponent<\n CategoryFacetSearchValueProps\n> = ({value, field, i18n, onClick, searchQuery}) => {\n const count = value.count.toLocaleString(i18n.language);\n const inLabel = i18n.t('in');\n const allCategories = i18n.t('all-categories');\n const localizedPath = value.path.length\n ? value.path.map((value) => getFieldValueCaption(field, value, i18n))\n : [allCategories];\n const ariaLabel = i18n.t('under', {\n child: i18n.t('facet-value', {\n count: value.count,\n formattedCount: count,\n value: value.displayValue,\n }),\n parent: localizedPath.join(', '),\n });\n\n function ellipsedPath(path: string[]) {\n if (path.length <= PATH_MAX_LENGTH) {\n return path;\n }\n const firstPart = path.slice(0, 1);\n const lastParts = path.slice(-PATH_MAX_LENGTH + 1);\n return firstPart.concat(ELLIPSIS, ...lastParts);\n }\n\n function renderPath(path: string[]) {\n if (!path.length) {\n return <span class=\"truncate\">{`${inLabel} ${allCategories}`}</span>;\n }\n\n return [\n <span class=\"mr-0.5\">{inLabel}</span>,\n ellipsedPath(path).map((value, index) => [\n index > 0 && <span class=\"mx-0.5\">{SEPARATOR}</span>,\n <span class={value === ELLIPSIS ? '' : 'max-w-max flex-1 truncate'}>\n {value}\n </span>,\n ]),\n ];\n }\n\n return (\n <li key={value.displayValue}>\n <Button\n style=\"text-neutral\"\n part=\"search-result\"\n onClick={() => onClick()}\n class=\"group flex w-full flex-col truncate px-2 py-2.5 focus-visible:outline-none\"\n aria-label={ariaLabel}\n >\n <div class=\"flex w-full\">\n <FacetValueLabelHighlight\n displayValue={value.displayValue}\n isSelected={false}\n searchQuery={searchQuery}\n ></FacetValueLabelHighlight>\n <span part=\"value-count\" class=\"value-count\">\n {i18n.t('between-parentheses', {\n text: count,\n })}\n </span>\n </div>\n <div\n part=\"search-result-path\"\n class=\"text-neutral-dark group-focus:text-primary group-hover:text-primary mt-1 flex w-full\"\n >\n {renderPath(localizedPath)}\n </div>\n </Button>\n </li>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const CategoryFacetTreeValueContainer: FunctionalComponent = (\n _,\n children\n) => {\n return <li class=\"contents\">{children}</li>;\n};\n","@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 CategoryFacet,\n buildCategoryFacet,\n CategoryFacetState,\n CategoryFacetOptions,\n CategoryFacetSortCriterion,\n SearchStatus,\n SearchStatusState,\n buildSearchStatus,\n CategoryFacetValue,\n buildFacetConditionsManager,\n FacetConditionsManager,\n FacetValueRequest,\n CategoryFacetValueRequest,\n TabManagerState,\n TabManager,\n buildTabManager,\n} from '@coveo/headless';\nimport {Component, h, State, Prop, Element, Fragment} from '@stencil/core';\nimport {\n getFieldCaptions,\n getFieldValueCaption,\n} from '../../../../utils/field-utils';\nimport {\n BindStateToController,\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {ArrayProp, MapProp} from '../../../../utils/props-utils';\nimport {\n AriaLiveRegion,\n FocusTargetController,\n} from '../../../../utils/stencil-accessibility-utils';\nimport {CategoryFacetAllCategoryButton} from '../../../common/facets/category-facet/stencil-all-categories-button';\nimport {CategoryFacetChildValueLink} from '../../../common/facets/category-facet/stencil-child-value-link';\nimport {CategoryFacetChildrenAsTreeContainer} from '../../../common/facets/category-facet/stencil-children-as-tree-container';\nimport {CategoryFacetParentAsTreeContainer} from '../../../common/facets/category-facet/stencil-parent-as-tree-container';\nimport {CategoryFacetParentButton} from '../../../common/facets/category-facet/stencil-parent-button';\nimport {CategoryFacetParentValueLink} from '../../../common/facets/category-facet/stencil-parent-value-link';\nimport {CategoryFacetSearchResultsContainer} from '../../../common/facets/category-facet/stencil-search-results-container';\nimport {CategoryFacetSearchValue} from '../../../common/facets/category-facet/stencil-search-value';\nimport {CategoryFacetTreeValueContainer} from '../../../common/facets/category-facet/stencil-value-as-tree-container';\nimport {parseDependsOn} from '../../../common/facets/depends-on';\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 {FacetPlaceholder} from '../../../common/facets/facet-placeholder/facet-placeholder';\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 {Bindings} from '../../atomic-search-interface/atomic-search-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-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@Component({\n tag: 'atomic-category-facet',\n styleUrl: 'atomic-category-facet.pcss',\n shadow: true,\n})\nexport class AtomicCategoryFacet implements InitializableComponent {\n @InitializeBindings() public bindings!: Bindings;\n public facet!: CategoryFacet;\n private dependenciesManager?: FacetConditionsManager;\n private resultIndexToFocusOnShowMore = 0;\n public searchStatus!: SearchStatus;\n public tabManager!: TabManager;\n @Element() private host!: HTMLElement;\n\n @BindStateToController('facet')\n @State()\n public facetState!: CategoryFacetState;\n @BindStateToController('searchStatus')\n @State()\n public searchStatusState!: SearchStatusState;\n @BindStateToController('tabManager')\n @State()\n public tabManagerState!: TabManagerState;\n @State() public error!: Error;\n\n /**\n * Specifies a unique identifier for the facet.\n */\n @Prop({mutable: true, reflect: true}) public facetId?: string;\n /**\n * The non-localized label for the facet.\n * Used in the `atomic-breadbox` component through the bindings store.\n */\n @Prop({reflect: true}) public label = 'no-label';\n /**\n * The field whose values you want to display in the facet.\n */\n @Prop({reflect: true}) public field!: string;\n /**\n * The tabs on which the facet can be displayed. This property should not be used at the same time as `tabs-excluded`.\n *\n * Set this property as a stringified JSON array, e.g.,\n * ```html\n * <atomic-timeframe-facet tabs-included='[\"tabIDA\", \"tabIDB\"]'></atomic-timeframe-facet>\n * ```\n * If you don't set this property, the facet can be displayed on any tab. Otherwise, the facet can only be displayed on the specified tabs.\n */\n @ArrayProp()\n @Prop({reflect: true, mutable: true})\n public tabsIncluded: string[] | string = '[]';\n\n /**\n * The tabs on which this facet must not be displayed. This property should not be used at the same time as `tabs-included`.\n *\n * Set this property as a stringified JSON array, e.g.,\n * ```html\n * <atomic-timeframe-facet tabs-excluded='[\"tabIDA\", \"tabIDB\"]'></atomic-timeframe-facet>\n * ```\n * If you don't set this property, the facet can be displayed on any tab. Otherwise, the facet won't be displayed on any of the specified tabs.\n */\n @ArrayProp()\n @Prop({reflect: true, mutable: true})\n public tabsExcluded: string[] | string = '[]';\n\n /**\n * The number of values to request for this facet.\n * Also determines the number of additional values to request each time more values are shown.\n */\n @Prop({reflect: true}) public numberOfValues = 8;\n /**\n * Whether this facet should contain a search box.\n *\n */\n @Prop({reflect: true}) public withSearch = false;\n /**\n * The sort criterion to apply to the returned facet values.\n * Possible values are 'alphanumeric' and 'occurrences'.\n * For this criterion to apply to the top-layer facet values, disable\n * [facet value ordering](https://docs.coveo.com/en/l1qf4156/#facet-value-ordering)\n * in your Dynamic Navigation Experience configuration.\n */\n // TODO: add automatic (occurrences when not expanded, alphanumeric when expanded)\n @Prop({reflect: true}) public sortCriteria: CategoryFacetSortCriterion =\n 'occurrences';\n /**\n * The character that separates values of a multi-value field.\n *\n * *Note:* If you use the [example formatting](https://docs.coveo.com/en/atomic/latest/reference/components/atomic-category-facet/#usage-notes) for the associated multi-value field, you must set this value to `|` or the facet won't display properly.\n */\n @Prop({reflect: true}) public delimitingCharacter = ';';\n /**\n * The base path shared by all values for the facet.\n *\n * Specify the property as an array using a JSON string representation:\n * ```html\n * <atomic-category-facet base-path='[\"first value\", \"second value\"]' ></atomic-category-facet>\n * ```\n */\n @ArrayProp()\n @Prop({reflect: true, mutable: true})\n public basePath: string[] | string = '[]';\n\n /**\n * Whether to use basePath as a filter for the results.\n */\n @Prop({reflect: true}) public filterByBasePath = true;\n /**\n * Specifies whether the facet is collapsed. When the facet is the child of an `atomic-facet-manager` component, the facet manager controls this property.\n */\n @Prop({reflect: true, mutable: true}) public isCollapsed = false;\n /**\n * The [heading level](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements) to use for the heading over the facet, from 1 to 6.\n */\n @Prop({reflect: true}) public headingLevel = 0;\n /**\n * Whether to exclude the parents of folded results when estimating the result count for each facet value.\n *\n *\n * Note: Resulting count is only an estimation, in some cases this value could be incorrect.\n */\n @Prop({reflect: true}) public filterFacetCount = true;\n /**\n * The maximum number of results to scan in the index to ensure that the facet lists all potential facet values.\n * Note: A high injectionDepth may negatively impact the facet request performance.\n * Minimum: `0`\n * Default: `1000`\n */\n @Prop({reflect: true}) public injectionDepth = 1000;\n // @Prop() public customSort?: string; TODO: KIT-753 Add customSort option for facet\n\n /**\n * The required facets and values for this facet to be displayed.\n * Examples:\n * ```html\n * <atomic-facet facet-id=\"abc\" field=\"objecttype\" ...></atomic-facet>\n *\n * <!-- To show the facet when any value is selected in the facet with id \"abc\": -->\n * <atomic-category-facet\n * depends-on-abc\n * ...\n * ></atomic-category-facet>\n *\n * <!-- To show the facet when value \"doc\" is selected in the facet with id \"abc\": -->\n * <atomic-category-facet\n * depends-on-abc=\"doc\"\n * ...\n * ></atomic-category-facet>\n * ```\n */\n @MapProp() @Prop() public dependsOn: Record<string, string> = {};\n\n private showLessFocus?: FocusTargetController;\n\n private showMoreFocus?: FocusTargetController;\n\n private headerFocus?: FocusTargetController;\n\n private activeValueFocus?: FocusTargetController;\n\n @AriaLiveRegion('facet-search')\n protected facetSearchAriaMessage!: string;\n\n public initialize() {\n if (\n [...this.tabsIncluded].length > 0 &&\n [...this.tabsExcluded].length > 0\n ) {\n console.warn(\n 'Values for both \"tabs-included\" and \"tabs-excluded\" have been provided. This is could lead to unexpected behaviors.'\n );\n }\n this.searchStatus = buildSearchStatus(this.bindings.engine);\n this.tabManager = buildTabManager(this.bindings.engine);\n const options: CategoryFacetOptions = {\n facetId: this.facetId,\n field: this.field,\n numberOfValues: this.numberOfValues,\n sortCriteria: this.sortCriteria,\n facetSearch: {numberOfValues: this.numberOfValues},\n basePath: [...this.basePath],\n delimitingCharacter: this.delimitingCharacter,\n filterByBasePath: this.filterByBasePath,\n injectionDepth: this.injectionDepth,\n filterFacetCount: this.filterFacetCount,\n tabs: {\n included: [...this.tabsIncluded],\n excluded: [...this.tabsExcluded],\n },\n };\n this.facet = buildCategoryFacet(this.bindings.engine, {options});\n announceFacetSearchResultsWithAriaLive(\n this.facet,\n this.label,\n (msg) => (this.facetSearchAriaMessage = msg),\n this.bindings.i18n\n );\n this.facetId = this.facet.state.facetId;\n const facetInfo: FacetInfo = {\n label: () => this.bindings.i18n.t(this.label),\n facetId: this.facetId!,\n element: this.host,\n isHidden: () => this.isHidden,\n };\n this.bindings.store.registerFacet('categoryFacets', facetInfo);\n initializePopover(this.host, {\n ...facetInfo,\n hasValues: () => !!this.facet.state.valuesAsTrees.length,\n numberOfActiveValues: () => (this.facetState.hasActiveValues ? 1 : 0),\n });\n this.initializeDependenciesManager();\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.dependenciesManager?.stopWatching();\n }\n\n private get isHidden() {\n return (\n this.searchStatusState.hasError ||\n !this.facet.state.enabled ||\n (!this.facet.state.selectedValueAncestry.length &&\n !this.facet.state.valuesAsTrees.length)\n );\n }\n\n public componentShouldUpdate(\n next: unknown,\n prev: unknown,\n propName: keyof AtomicCategoryFacet\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 initializeDependenciesManager() {\n this.dependenciesManager = buildFacetConditionsManager(\n this.bindings.engine,\n {\n facetId: this.facetId!,\n conditions: parseDependsOn<\n FacetValueRequest | CategoryFacetValueRequest\n >(this.dependsOn),\n }\n );\n }\n\n private renderHeader() {\n return (\n <FacetHeader\n i18n={this.bindings.i18n}\n label={this.label}\n numberOfActiveValues={\n this.facetState.hasActiveValues && this.isCollapsed ? 1 : 0\n }\n isCollapsed={this.isCollapsed}\n headingLevel={this.headingLevel}\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 if (!this.withSearch) {\n return;\n }\n\n return (\n <FacetSearchInput\n i18n={this.bindings.i18n}\n label={this.label}\n query={this.facetState.facetSearch.query}\n onChange={(value) => {\n if (value === '') {\n this.facet.facetSearch.clear();\n return;\n }\n this.facet.facetSearch.updateCaptions(\n getFieldCaptions(this.field, this.bindings.i18n)\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(\n valuesAsTrees: CategoryFacetValue[],\n isRoot: boolean\n ) {\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(valuesAsTrees, false)}\n </CategoryFacetParentAsTreeContainer>\n </CategoryFacetTreeValueContainer>\n );\n }\n\n if (valuesAsTrees.length > 1) {\n const parentValue = valuesAsTrees[0];\n\n return (\n <CategoryFacetTreeValueContainer>\n <CategoryFacetParentButton\n facetValue={parentValue}\n field={this.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(valuesAsTrees.slice(1), false)}\n </CategoryFacetParentAsTreeContainer>\n </CategoryFacetTreeValueContainer>\n );\n }\n\n const activeParent = valuesAsTrees[0];\n const activeParentDisplayValue = getFieldValueCaption(\n this.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.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 if (!this.facetState.valuesAsTrees.length) {\n return;\n }\n if (this.facetState.selectedValueAncestry.length > 0) {\n return this.facetState.selectedValueAncestry\n .find((value) => value.state === 'selected')\n ?.children.map((value, i) =>\n this.renderChild(\n value,\n i === 0,\n i === this.resultIndexToFocusOnShowMore\n )\n );\n }\n\n return this.facetState.valuesAsTrees.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.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 showMoreMatches={() => this.facet.facetSearch.showMoreResults()}\n ></FacetSearchMatches>\n );\n }\n\n private renderShowMoreLess() {\n return (\n <div class={this.hasParents ? 'pl-9' : ''}>\n <FacetShowMoreLess\n label={this.label}\n i18n={this.bindings.i18n}\n onShowMore={() => {\n this.resultIndexToFocusOnShowMore =\n this.facetState.valuesAsTrees[0].children.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 label,\n facetState: {facetSearch, enabled, valuesAsTrees, selectedValueAncestry},\n searchStatusState: {hasError, firstSearchExecuted},\n } = this;\n\n return (\n <FacetGuard\n enabled={enabled}\n firstSearchExecuted={firstSearchExecuted}\n hasError={hasError}\n hasResults={valuesAsTrees.length > 0}\n >\n {firstSearchExecuted ? (\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={label}\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={label}>\n {this.hasParents ? (\n <CategoryFacetParentAsTreeContainer\n isTopLevel={true}\n className=\"mt-3\"\n >\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 <FacetPlaceholder\n isCollapsed={this.isCollapsed}\n numberOfValues={this.numberOfValues}\n />\n )}\n </FacetGuard>\n );\n }\n}\n"],"version":3}
|
1
|
+
{"file":"atomic-category-facet.entry.js","mappings":"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","names":["LeftArrow"],"sources":["src/components/common/facets/category-facet/all-categories-localized-label.ts","src/components/common/facets/category-facet/stencil-all-categories-button.tsx","src/components/common/facets/category-facet/stencil-value-link.tsx","src/components/common/facets/category-facet/stencil-child-value-link.tsx","src/components/common/facets/category-facet/stencil-children-as-tree-container.tsx","src/components/common/facets/category-facet/stencil-parent-as-tree-container.tsx","src/components/common/facets/category-facet/stencil-parent-button.tsx","src/components/common/facets/category-facet/stencil-parent-value-link.tsx","src/components/common/facets/category-facet/stencil-search-results-container.tsx","src/components/common/facets/category-facet/stencil-search-value.tsx","src/components/common/facets/category-facet/stencil-value-as-tree-container.tsx","src/components/search/facets/atomic-category-facet/atomic-category-facet.pcss?tag=atomic-category-facet&encapsulation=shadow","src/components/search/facets/atomic-category-facet/atomic-category-facet.tsx"],"sourcesContent":["import type {i18n} from 'i18next';\n\nexport const getAllCategoriesLocalizedLabel = ({\n facetId,\n field,\n i18n,\n}: {\n facetId?: string;\n field: string;\n i18n: i18n;\n}) => {\n if (facetId && i18n.exists(`all-categories-${facetId}`)) {\n return i18n.t(`all-categories-${facetId}`);\n }\n if (i18n.exists(`all-categories-${field}`)) {\n return i18n.t(`all-categories-${field}`);\n }\n return i18n.t('all-categories');\n};\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport LeftArrow from '../../../../images/arrow-left-rounded.svg';\nimport {Button} from '../../stencil-button';\nimport { getAllCategoriesLocalizedLabel } from './all-categories-localized-label';\n\ninterface CategoryFacetAllCategoryButtonProps {\n i18n: i18n;\n onClick(): void;\n facetId?: string;\n field: string;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const CategoryFacetAllCategoryButton: FunctionalComponent<\n CategoryFacetAllCategoryButtonProps\n> = ({i18n, onClick, facetId, field}) => {\n const allCategories = getAllCategoriesLocalizedLabel({facetId, field, i18n});\n return (\n <Button\n style=\"text-neutral\"\n part=\"all-categories-button\"\n onClick={() => {\n onClick();\n }}\n >\n <atomic-icon\n aria-hidden=\"true\"\n icon={LeftArrow}\n part=\"back-arrow\"\n ></atomic-icon>\n <span class=\"truncate\">{allCategories}</span>\n </Button>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport {FacetValueLabelHighlight} from '../facet-value-label-highlight/stencil-facet-value-label-highlight';\nimport {FacetValueLink} from '../facet-value-link/stencil-facet-value-link';\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport interface CategoryFacetValueLinkProps {\n displayValue: string;\n numberOfResults: number;\n i18n: i18n;\n onClick: () => void;\n isParent: boolean;\n isSelected: boolean;\n searchQuery: string;\n isLeafValue: boolean;\n setRef: (el?: HTMLButtonElement) => void;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const CategoryFacetValueLink: FunctionalComponent<\n CategoryFacetValueLinkProps\n> = (\n {\n displayValue,\n numberOfResults,\n i18n,\n onClick,\n isParent,\n isSelected,\n searchQuery,\n isLeafValue,\n setRef,\n },\n children\n) => {\n const partNames = [];\n if (isParent) {\n partNames.push('active-parent');\n } else {\n partNames.push(`value-link${isSelected ? ' value-link-selected' : ''}`);\n }\n\n if (isLeafValue) {\n partNames.push('leaf-value');\n } else {\n partNames.push('node-value');\n }\n\n return (\n <FacetValueLink\n displayValue={displayValue}\n numberOfResults={numberOfResults}\n isSelected={isSelected}\n i18n={i18n}\n onClick={() => {\n onClick();\n }}\n searchQuery={searchQuery}\n part={partNames.join(' ')}\n class=\"contents\"\n buttonRef={(btn) => setRef(btn)}\n subList={children}\n >\n <FacetValueLabelHighlight\n displayValue={displayValue}\n isSelected={isSelected}\n ></FacetValueLabelHighlight>\n </FacetValueLink>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {\n CategoryFacetValueLink,\n CategoryFacetValueLinkProps,\n} from './stencil-value-link';\n\ninterface CategoryFacetChildValueLinkProps\n extends Omit<CategoryFacetValueLinkProps, 'isParent'> {}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const CategoryFacetChildValueLink: FunctionalComponent<\n CategoryFacetChildValueLinkProps\n> = (props, children) => {\n return (\n <CategoryFacetValueLink {...props} isParent={false}>\n {children}\n </CategoryFacetValueLink>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\n\ninterface CategoryFacetChildrenAsTreeContainerProps {\n className?: string;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const CategoryFacetChildrenAsTreeContainer: FunctionalComponent<\n CategoryFacetChildrenAsTreeContainerProps\n> = ({className}, children) => {\n return (\n <ul part=\"values\" class={className ?? ''}>\n {children}\n </ul>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\n\ninterface CategoryFacetParentAsTreeContainerProps {\n isTopLevel: boolean;\n className?: string;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const CategoryFacetParentAsTreeContainer: FunctionalComponent<\n CategoryFacetParentAsTreeContainerProps\n> = ({isTopLevel, className}, children) => {\n return (\n <ul class={className ?? ''} part={`${isTopLevel ? '' : 'sub-'}parents`}>\n {children}\n </ul>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport LeftArrow from '../../../../images/arrow-left-rounded.svg';\nimport {getFieldValueCaption} from '../../../../utils/field-utils';\nimport {Button} from '../../stencil-button';\n\ninterface CategoryFacetParentButtonProps {\n i18n: i18n;\n field: string;\n facetValue: {value: string; numberOfResults: number};\n onClick: () => void;\n}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const CategoryFacetParentButton: FunctionalComponent<\n CategoryFacetParentButtonProps\n> = ({field, facetValue, i18n, onClick}) => {\n const displayValue = getFieldValueCaption(field, facetValue.value, i18n);\n const ariaLabel = i18n.t('facet-value', {\n value: displayValue,\n count: facetValue.numberOfResults,\n formattedCount: facetValue.numberOfResults.toLocaleString(i18n.language),\n });\n\n return (\n <Button\n style=\"text-neutral\"\n part=\"parent-button\"\n ariaPressed=\"false\"\n onClick={() => {\n onClick();\n }}\n ariaLabel={ariaLabel}\n >\n <atomic-icon\n icon={LeftArrow}\n part=\"back-arrow\"\n class=\"back-arrow\"\n ></atomic-icon>\n <span class=\"truncate\">{displayValue}</span>\n </Button>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {\n CategoryFacetValueLink,\n CategoryFacetValueLinkProps,\n} from './stencil-value-link';\n\ninterface CategoryFacetParentValueLinkProps\n extends Omit<CategoryFacetValueLinkProps, 'isParent' | 'isSelected'> {}\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const CategoryFacetParentValueLink: FunctionalComponent<\n CategoryFacetParentValueLinkProps\n> = (props, children) => {\n return (\n <CategoryFacetValueLink {...props} isParent isSelected>\n {children}\n </CategoryFacetValueLink>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const CategoryFacetSearchResultsContainer: FunctionalComponent = (\n _,\n children\n) => {\n return (\n <ul part=\"search-results\" class=\"mt-3\">\n {children}\n </ul>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport {getFieldValueCaption} from '../../../../utils/field-utils';\nimport {Button} from '../../stencil-button';\nimport {FacetValueLabelHighlight} from '../facet-value-label-highlight/stencil-facet-value-label-highlight';\nimport { getAllCategoriesLocalizedLabel } from './all-categories-localized-label';\ninterface CategoryFacetSearchValueProps {\n value: {count: number; path: string[]; displayValue: string};\n i18n: i18n;\n field: string;\n facetId?: string;\n onClick(): void;\n searchQuery: string;\n}\n\nconst SEPARATOR = '/';\nconst ELLIPSIS = '...';\nconst PATH_MAX_LENGTH = 3;\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const CategoryFacetSearchValue: FunctionalComponent<\n CategoryFacetSearchValueProps\n> = ({value, facetId, field, i18n, onClick, searchQuery}) => {\n const count = value.count.toLocaleString(i18n.language);\n const inLabel = i18n.t('in');\n const allCategories = getAllCategoriesLocalizedLabel({facetId, field, i18n});\n const localizedPath = value.path.length\n ? value.path.map((value) => getFieldValueCaption(field, value, i18n))\n : [allCategories];\n const ariaLabel = i18n.t('under', {\n child: i18n.t('facet-value', {\n count: value.count,\n formattedCount: count,\n value: value.displayValue,\n }),\n parent: localizedPath.join(', '),\n });\n\n function ellipsedPath(path: string[]) {\n if (path.length <= PATH_MAX_LENGTH) {\n return path;\n }\n const firstPart = path.slice(0, 1);\n const lastParts = path.slice(-PATH_MAX_LENGTH + 1);\n return firstPart.concat(ELLIPSIS, ...lastParts);\n }\n\n function renderPath(path: string[]) {\n if (!path.length) {\n return <span class=\"truncate\">{`${inLabel} ${allCategories}`}</span>;\n }\n\n return [\n <span class=\"mr-0.5\">{inLabel}</span>,\n ellipsedPath(path).map((value, index) => [\n index > 0 && <span class=\"mx-0.5\">{SEPARATOR}</span>,\n <span class={value === ELLIPSIS ? '' : 'max-w-max flex-1 truncate'}>\n {value}\n </span>,\n ]),\n ];\n }\n\n return (\n <li key={value.displayValue}>\n <Button\n style=\"text-neutral\"\n part=\"search-result\"\n onClick={() => onClick()}\n class=\"group flex w-full flex-col truncate px-2 py-2.5 focus-visible:outline-none\"\n aria-label={ariaLabel}\n >\n <div class=\"flex w-full\">\n <FacetValueLabelHighlight\n displayValue={value.displayValue}\n isSelected={false}\n searchQuery={searchQuery}\n ></FacetValueLabelHighlight>\n <span part=\"value-count\" class=\"value-count\">\n {i18n.t('between-parentheses', {\n text: count,\n })}\n </span>\n </div>\n <div\n part=\"search-result-path\"\n class=\"text-neutral-dark group-focus:text-primary group-hover:text-primary mt-1 flex w-full\"\n >\n {renderPath(localizedPath)}\n </div>\n </Button>\n </li>\n );\n};\n","import {FunctionalComponent, h} from '@stencil/core';\n\n/**\n * @deprecated should only be used for Stencil components.\n */\nexport const CategoryFacetTreeValueContainer: FunctionalComponent = (\n _,\n children\n) => {\n return <li class=\"contents\">{children}</li>;\n};\n","@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 CategoryFacet,\n buildCategoryFacet,\n CategoryFacetState,\n CategoryFacetOptions,\n CategoryFacetSortCriterion,\n SearchStatus,\n SearchStatusState,\n buildSearchStatus,\n CategoryFacetValue,\n buildFacetConditionsManager,\n FacetConditionsManager,\n FacetValueRequest,\n CategoryFacetValueRequest,\n TabManagerState,\n TabManager,\n buildTabManager,\n} from '@coveo/headless';\nimport {Component, h, State, Prop, Element, Fragment} from '@stencil/core';\nimport {\n getFieldCaptions,\n getFieldValueCaption,\n} from '../../../../utils/field-utils';\nimport {\n BindStateToController,\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {ArrayProp, MapProp} from '../../../../utils/props-utils';\nimport {\n AriaLiveRegion,\n FocusTargetController,\n} from '../../../../utils/stencil-accessibility-utils';\nimport {CategoryFacetAllCategoryButton} from '../../../common/facets/category-facet/stencil-all-categories-button';\nimport {CategoryFacetChildValueLink} from '../../../common/facets/category-facet/stencil-child-value-link';\nimport {CategoryFacetChildrenAsTreeContainer} from '../../../common/facets/category-facet/stencil-children-as-tree-container';\nimport {CategoryFacetParentAsTreeContainer} from '../../../common/facets/category-facet/stencil-parent-as-tree-container';\nimport {CategoryFacetParentButton} from '../../../common/facets/category-facet/stencil-parent-button';\nimport {CategoryFacetParentValueLink} from '../../../common/facets/category-facet/stencil-parent-value-link';\nimport {CategoryFacetSearchResultsContainer} from '../../../common/facets/category-facet/stencil-search-results-container';\nimport {CategoryFacetSearchValue} from '../../../common/facets/category-facet/stencil-search-value';\nimport {CategoryFacetTreeValueContainer} from '../../../common/facets/category-facet/stencil-value-as-tree-container';\nimport {parseDependsOn} from '../../../common/facets/depends-on';\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 {FacetPlaceholder} from '../../../common/facets/facet-placeholder/facet-placeholder';\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 {Bindings} from '../../atomic-search-interface/atomic-search-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-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@Component({\n tag: 'atomic-category-facet',\n styleUrl: 'atomic-category-facet.pcss',\n shadow: true,\n})\nexport class AtomicCategoryFacet implements InitializableComponent {\n @InitializeBindings() public bindings!: Bindings;\n public facet!: CategoryFacet;\n private dependenciesManager?: FacetConditionsManager;\n private resultIndexToFocusOnShowMore = 0;\n public searchStatus!: SearchStatus;\n public tabManager!: TabManager;\n @Element() private host!: HTMLElement;\n\n @BindStateToController('facet')\n @State()\n public facetState!: CategoryFacetState;\n @BindStateToController('searchStatus')\n @State()\n public searchStatusState!: SearchStatusState;\n @BindStateToController('tabManager')\n @State()\n public tabManagerState!: TabManagerState;\n @State() public error!: Error;\n\n /**\n * Specifies a unique identifier for the facet.\n */\n @Prop({mutable: true, reflect: true}) public facetId?: string;\n /**\n * The non-localized label for the facet.\n * Used in the `atomic-breadbox` component through the bindings store.\n */\n @Prop({reflect: true}) public label = 'no-label';\n /**\n * The field whose values you want to display in the facet.\n */\n @Prop({reflect: true}) public field!: string;\n /**\n * The tabs on which the facet can be displayed. This property should not be used at the same time as `tabs-excluded`.\n *\n * Set this property as a stringified JSON array, e.g.,\n * ```html\n * <atomic-timeframe-facet tabs-included='[\"tabIDA\", \"tabIDB\"]'></atomic-timeframe-facet>\n * ```\n * If you don't set this property, the facet can be displayed on any tab. Otherwise, the facet can only be displayed on the specified tabs.\n */\n @ArrayProp()\n @Prop({reflect: true, mutable: true})\n public tabsIncluded: string[] | string = '[]';\n\n /**\n * The tabs on which this facet must not be displayed. This property should not be used at the same time as `tabs-included`.\n *\n * Set this property as a stringified JSON array, e.g.,\n * ```html\n * <atomic-timeframe-facet tabs-excluded='[\"tabIDA\", \"tabIDB\"]'></atomic-timeframe-facet>\n * ```\n * If you don't set this property, the facet can be displayed on any tab. Otherwise, the facet won't be displayed on any of the specified tabs.\n */\n @ArrayProp()\n @Prop({reflect: true, mutable: true})\n public tabsExcluded: string[] | string = '[]';\n\n /**\n * The number of values to request for this facet.\n * Also determines the number of additional values to request each time more values are shown.\n */\n @Prop({reflect: true}) public numberOfValues = 8;\n /**\n * Whether this facet should contain a search box.\n *\n */\n @Prop({reflect: true}) public withSearch = false;\n /**\n * The sort criterion to apply to the returned facet values.\n * Possible values are 'alphanumeric' and 'occurrences'.\n * For this criterion to apply to the top-layer facet values, disable\n * [facet value ordering](https://docs.coveo.com/en/l1qf4156/#facet-value-ordering)\n * in your Dynamic Navigation Experience configuration.\n */\n // TODO: add automatic (occurrences when not expanded, alphanumeric when expanded)\n @Prop({reflect: true}) public sortCriteria: CategoryFacetSortCriterion =\n 'occurrences';\n /**\n * The character that separates values of a multi-value field.\n *\n * *Note:* If you use the [example formatting](https://docs.coveo.com/en/atomic/latest/reference/components/atomic-category-facet/#usage-notes) for the associated multi-value field, you must set this value to `|` or the facet won't display properly.\n */\n @Prop({reflect: true}) public delimitingCharacter = ';';\n /**\n * The base path shared by all values for the facet.\n *\n * Specify the property as an array using a JSON string representation:\n * ```html\n * <atomic-category-facet base-path='[\"first value\", \"second value\"]' ></atomic-category-facet>\n * ```\n */\n @ArrayProp()\n @Prop({reflect: true, mutable: true})\n public basePath: string[] | string = '[]';\n\n /**\n * Whether to use basePath as a filter for the results.\n */\n @Prop({reflect: true}) public filterByBasePath = true;\n /**\n * Specifies whether the facet is collapsed. When the facet is the child of an `atomic-facet-manager` component, the facet manager controls this property.\n */\n @Prop({reflect: true, mutable: true}) public isCollapsed = false;\n /**\n * The [heading level](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements) to use for the heading over the facet, from 1 to 6.\n */\n @Prop({reflect: true}) public headingLevel = 0;\n /**\n * Whether to exclude the parents of folded results when estimating the result count for each facet value.\n *\n *\n * Note: Resulting count is only an estimation, in some cases this value could be incorrect.\n */\n @Prop({reflect: true}) public filterFacetCount = true;\n /**\n * The maximum number of results to scan in the index to ensure that the facet lists all potential facet values.\n * Note: A high injectionDepth may negatively impact the facet request performance.\n * Minimum: `0`\n * Default: `1000`\n */\n @Prop({reflect: true}) public injectionDepth = 1000;\n // @Prop() public customSort?: string; TODO: KIT-753 Add customSort option for facet\n\n /**\n * The required facets and values for this facet to be displayed.\n * Examples:\n * ```html\n * <atomic-facet facet-id=\"abc\" field=\"objecttype\" ...></atomic-facet>\n *\n * <!-- To show the facet when any value is selected in the facet with id \"abc\": -->\n * <atomic-category-facet\n * depends-on-abc\n * ...\n * ></atomic-category-facet>\n *\n * <!-- To show the facet when value \"doc\" is selected in the facet with id \"abc\": -->\n * <atomic-category-facet\n * depends-on-abc=\"doc\"\n * ...\n * ></atomic-category-facet>\n * ```\n */\n @MapProp() @Prop() public dependsOn: Record<string, string> = {};\n\n private showLessFocus?: FocusTargetController;\n\n private showMoreFocus?: FocusTargetController;\n\n private headerFocus?: FocusTargetController;\n\n private activeValueFocus?: FocusTargetController;\n\n @AriaLiveRegion('facet-search')\n protected facetSearchAriaMessage!: string;\n\n public initialize() {\n if (\n [...this.tabsIncluded].length > 0 &&\n [...this.tabsExcluded].length > 0\n ) {\n console.warn(\n 'Values for both \"tabs-included\" and \"tabs-excluded\" have been provided. This is could lead to unexpected behaviors.'\n );\n }\n this.searchStatus = buildSearchStatus(this.bindings.engine);\n this.tabManager = buildTabManager(this.bindings.engine);\n const options: CategoryFacetOptions = {\n facetId: this.facetId,\n field: this.field,\n numberOfValues: this.numberOfValues,\n sortCriteria: this.sortCriteria,\n facetSearch: {numberOfValues: this.numberOfValues},\n basePath: [...this.basePath],\n delimitingCharacter: this.delimitingCharacter,\n filterByBasePath: this.filterByBasePath,\n injectionDepth: this.injectionDepth,\n filterFacetCount: this.filterFacetCount,\n tabs: {\n included: [...this.tabsIncluded],\n excluded: [...this.tabsExcluded],\n },\n };\n this.facet = buildCategoryFacet(this.bindings.engine, {options});\n announceFacetSearchResultsWithAriaLive(\n this.facet,\n this.label,\n (msg) => (this.facetSearchAriaMessage = msg),\n this.bindings.i18n\n );\n this.facetId = this.facet.state.facetId;\n const facetInfo: FacetInfo = {\n label: () => this.bindings.i18n.t(this.label),\n facetId: this.facetId!,\n element: this.host,\n isHidden: () => this.isHidden,\n };\n this.bindings.store.registerFacet('categoryFacets', facetInfo);\n initializePopover(this.host, {\n ...facetInfo,\n hasValues: () => !!this.facet.state.valuesAsTrees.length,\n numberOfActiveValues: () => (this.facetState.hasActiveValues ? 1 : 0),\n });\n this.initializeDependenciesManager();\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.dependenciesManager?.stopWatching();\n }\n\n private get isHidden() {\n return (\n this.searchStatusState.hasError ||\n !this.facet.state.enabled ||\n (!this.facet.state.selectedValueAncestry.length &&\n !this.facet.state.valuesAsTrees.length)\n );\n }\n\n public componentShouldUpdate(\n next: unknown,\n prev: unknown,\n propName: keyof AtomicCategoryFacet\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 initializeDependenciesManager() {\n this.dependenciesManager = buildFacetConditionsManager(\n this.bindings.engine,\n {\n facetId: this.facetId!,\n conditions: parseDependsOn<\n FacetValueRequest | CategoryFacetValueRequest\n >(this.dependsOn),\n }\n );\n }\n\n private renderHeader() {\n return (\n <FacetHeader\n i18n={this.bindings.i18n}\n label={this.label}\n numberOfActiveValues={\n this.facetState.hasActiveValues && this.isCollapsed ? 1 : 0\n }\n isCollapsed={this.isCollapsed}\n headingLevel={this.headingLevel}\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 if (!this.withSearch) {\n return;\n }\n\n return (\n <FacetSearchInput\n i18n={this.bindings.i18n}\n label={this.label}\n query={this.facetState.facetSearch.query}\n onChange={(value) => {\n if (value === '') {\n this.facet.facetSearch.clear();\n return;\n }\n this.facet.facetSearch.updateCaptions(\n getFieldCaptions(this.field, this.bindings.i18n)\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(\n valuesAsTrees: CategoryFacetValue[],\n isRoot: boolean\n ) {\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 facetId={this.facet.state.facetId}\n field={this.field}\n onClick={() => {\n this.focusTargets.activeValueFocus.focusAfterSearch();\n this.facet.deselectAll();\n }}\n />\n <CategoryFacetParentAsTreeContainer isTopLevel={false}>\n {this.renderValuesTree(valuesAsTrees, false)}\n </CategoryFacetParentAsTreeContainer>\n </CategoryFacetTreeValueContainer>\n );\n }\n\n if (valuesAsTrees.length > 1) {\n const parentValue = valuesAsTrees[0];\n\n return (\n <CategoryFacetTreeValueContainer>\n <CategoryFacetParentButton\n facetValue={parentValue}\n field={this.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(valuesAsTrees.slice(1), false)}\n </CategoryFacetParentAsTreeContainer>\n </CategoryFacetTreeValueContainer>\n );\n }\n\n const activeParent = valuesAsTrees[0];\n const activeParentDisplayValue = getFieldValueCaption(\n this.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.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 if (!this.facetState.valuesAsTrees.length) {\n return;\n }\n if (this.facetState.selectedValueAncestry.length > 0) {\n return this.facetState.selectedValueAncestry\n .find((value) => value.state === 'selected')\n ?.children.map((value, i) =>\n this.renderChild(\n value,\n i === 0,\n i === this.resultIndexToFocusOnShowMore\n )\n );\n }\n\n return this.facetState.valuesAsTrees.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.field}\n facetId={this.facetId}\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 showMoreMatches={() => this.facet.facetSearch.showMoreResults()}\n ></FacetSearchMatches>\n );\n }\n\n private renderShowMoreLess() {\n return (\n <div class={this.hasParents ? 'pl-9' : ''}>\n <FacetShowMoreLess\n label={this.label}\n i18n={this.bindings.i18n}\n onShowMore={() => {\n this.resultIndexToFocusOnShowMore =\n this.facetState.valuesAsTrees[0].children.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 label,\n facetState: {facetSearch, enabled, valuesAsTrees, selectedValueAncestry},\n searchStatusState: {hasError, firstSearchExecuted},\n } = this;\n\n return (\n <FacetGuard\n enabled={enabled}\n firstSearchExecuted={firstSearchExecuted}\n hasError={hasError}\n hasResults={valuesAsTrees.length > 0}\n >\n {firstSearchExecuted ? (\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={label}\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={label}>\n {this.hasParents ? (\n <CategoryFacetParentAsTreeContainer\n isTopLevel={true}\n className=\"mt-3\"\n >\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 <FacetPlaceholder\n isCollapsed={this.isCollapsed}\n numberOfValues={this.numberOfValues}\n />\n )}\n </FacetGuard>\n );\n }\n}\n"],"version":3}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { h, r as registerInstance, g as getElement } from './index-3f35faca.js';
|
2
2
|
import { loadInsightSearchActions, buildSearchBox } from '@coveo/headless/insight';
|
3
|
-
import { S as SuggestionManager, a as SearchSlimIcon, b as SearchTextArea, c as SearchBoxWrapper } from './stencil-suggestion-manager-
|
3
|
+
import { S as SuggestionManager, a as SearchSlimIcon, b as SearchTextArea, c as SearchBoxWrapper } from './stencil-suggestion-manager-3d2eea75.js';
|
4
4
|
import { i as isMacOS, h as hasKeyboard } from './device-utils-58c97096.js';
|
5
5
|
import { I as InitializeBindings, B as BindStateToController } from './initialization-utils-ffbc4136.js';
|
6
6
|
import { A as AriaLiveRegion } from './stencil-accessibility-utils-ae75044b.js';
|
@@ -7,7 +7,7 @@ import { a as StorageItems, S as SafeStorage } from './local-storage-utils-41026
|
|
7
7
|
import { u as updateBreakpoints } from './replace-breakpoint-utils-13ff9ca5.js';
|
8
8
|
import { A as AriaLiveRegion } from './stencil-accessibility-utils-ae75044b.js';
|
9
9
|
import { o as once, r as randomID, h as spreadProperties, g as isFocusingOut } from './utils-6400ebde.js';
|
10
|
-
import { a as SearchSlimIcon, b as SearchTextArea, S as SuggestionManager, c as SearchBoxWrapper } from './stencil-suggestion-manager-
|
10
|
+
import { a as SearchSlimIcon, b as SearchTextArea, S as SuggestionManager, c as SearchBoxWrapper } from './stencil-suggestion-manager-3d2eea75.js';
|
11
11
|
import { B as Button } from './stencil-button-49254c75.js';
|
12
12
|
import { a as elementHasQuery } from './suggestions-utils-591559a0.js';
|
13
13
|
import { a as getDefaultSlotFromHost } from './slot-utils-dcf4fc27.js';
|
@@ -107,6 +107,7 @@ const AtomicSearchBox = class {
|
|
107
107
|
onInput: (e) => this.onInput(e.target.value),
|
108
108
|
onKeyDown: (e) => this.onKeyDown(e),
|
109
109
|
onClear: () => {
|
110
|
+
this.announceClearSearchBoxToScreenReader();
|
110
111
|
this.searchBox.clear();
|
111
112
|
this.suggestionManager.clearSuggestions();
|
112
113
|
},
|
@@ -415,6 +416,9 @@ const AtomicSearchBox = class {
|
|
415
416
|
this.suggestionsAriaMessage = ariaLabel;
|
416
417
|
}
|
417
418
|
}
|
419
|
+
announceClearSearchBoxToScreenReader() {
|
420
|
+
this.suggestionsAriaMessage = this.bindings.i18n.t("search-box-cleared");
|
421
|
+
}
|
418
422
|
announceNewSuggestionsToScreenReader() {
|
419
423
|
const elsLength = this.suggestionManager.allSuggestionElements.filter(elementHasQuery).length;
|
420
424
|
this.searchBoxAriaMessage = elsLength
|
@@ -443,14 +447,14 @@ const AtomicSearchBox = class {
|
|
443
447
|
if (!this.suggestionManager.suggestions.length) {
|
444
448
|
this.registerSearchboxSuggestionEvents();
|
445
449
|
}
|
446
|
-
return (h(Host, { key: '
|
447
|
-
h(SearchBoxWrapper, { key: '
|
450
|
+
return (h(Host, { key: '7a6ca58c4ba74f3341764b03cc9225f5ffb622fb' }, this.renderAbsolutePositionSpacer(), [
|
451
|
+
h(SearchBoxWrapper, { key: '19a9f5de9d141ced356c421f6b41dfcd86c786af', disabled: isDisabled, onFocusout: (event) => {
|
448
452
|
if (!isFocusingOut(event)) {
|
449
453
|
return;
|
450
454
|
}
|
451
455
|
this.suggestionManager.clearSuggestions();
|
452
456
|
this.isExpanded = false;
|
453
|
-
} }, this.renderTextBox(searchLabel), h(SubmitButton, { key: '
|
457
|
+
} }, this.renderTextBox(searchLabel), h(SubmitButton, { key: '52c707d8fe1eeb8c31f30ba39638fc78a9796179', bindings: this.bindings, disabled: isDisabled, onClick: () => {
|
454
458
|
this.searchBox.submit();
|
455
459
|
this.suggestionManager.clearSuggestions();
|
456
460
|
} }), this.renderSuggestions()),
|