@coveo/atomic 3.33.8-pre.f790c888d3 → 3.33.8-pre.f7fa88e058
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/atomic/_atomic.esm.js +1 -1
- package/dist/atomic/atomic.esm.js.map +1 -1
- package/dist/atomic/components/_index.d.ts +2 -2
- package/dist/atomic/components/_index.js +1 -1
- package/dist/atomic/components/analytics-config.js +1 -1
- package/dist/atomic/components/atomic-insight-history-toggle.js +2 -2
- package/dist/atomic/components/atomic-insight-history-toggle.js.map +1 -1
- package/dist/atomic/components/atomic-insight-search-box.js +2 -29
- package/dist/atomic/components/atomic-insight-search-box.js.map +1 -1
- package/dist/atomic/components/atomic-insight-user-actions-toggle.js +2 -2
- package/dist/atomic/components/atomic-insight-user-actions-toggle.js.map +1 -1
- package/dist/atomic/components/atomic-search-box-query-suggestions.d.ts +11 -0
- package/dist/atomic/components/atomic-search-box-query-suggestions.js +8 -0
- package/dist/atomic/components/atomic-search-box-query-suggestions.js.map +1 -0
- package/dist/atomic/components/atomic-search-box-query-suggestions2.js +89 -0
- package/dist/atomic/components/atomic-search-box-query-suggestions2.js.map +1 -0
- package/dist/atomic/components/atomic-search-box.js +3 -3
- package/dist/atomic/components/clock.js +2 -2
- package/dist/atomic/components/components/commerce/atomic-commerce-query-summary/atomic-commerce-query-summary.js +2 -2
- package/dist/atomic/components/components/search/atomic-search-box-recent-queries/atomic-search-box-recent-queries.js +137 -0
- package/dist/atomic/components/components/search/index.js +1 -1
- package/dist/atomic/components/components/search/lazy-index.js +1 -1
- package/dist/atomic/components/global/environment.js +1 -1
- package/dist/atomic/components/stencil-query-suggestions.js +33 -0
- package/dist/atomic/components/stencil-query-suggestions.js.map +1 -0
- package/dist/atomic/{p-e670c0cd.entry.js → p-1ea14b8b.entry.js} +2 -2
- package/dist/atomic/p-26a51a77.entry.js +2 -0
- package/dist/atomic/p-26a51a77.entry.js.map +1 -0
- package/dist/atomic/p-2e9db4ca.entry.js +2 -0
- package/dist/atomic/p-2e9db4ca.entry.js.map +1 -0
- package/dist/atomic/{p-aef7574d.entry.js → p-4b97f491.entry.js} +2 -2
- package/dist/atomic/{p-2d07cd77.entry.js → p-5f2e8b83.entry.js} +2 -2
- package/dist/atomic/{p-6e6d686e.entry.js → p-7383fd32.entry.js} +2 -2
- package/dist/atomic/{p-015cd25d.js → p-7a69a983.js} +2 -2
- package/dist/atomic/p-af93b44c.js +2 -0
- package/dist/atomic/p-af93b44c.js.map +1 -0
- package/dist/atomic/{p-6329ff94.entry.js → p-ba4bf29f.entry.js} +2 -2
- package/dist/atomic/{p-c280cd05.js → p-e1cc5150.js} +1 -1
- package/dist/cjs/_loader.cjs.js +1 -1
- package/dist/cjs/{analytics-config-822477c4.js → analytics-config-f82ce3da.js} +2 -2
- package/dist/cjs/{analytics-config-822477c4.js.map → analytics-config-f82ce3da.js.map} +1 -1
- package/dist/cjs/atomic-insight-history-toggle.cjs.entry.js +2 -2
- package/dist/cjs/atomic-insight-history-toggle.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-insight-interface.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-search-box.cjs.entry.js +4 -30
- package/dist/cjs/atomic-insight-search-box.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-insight-user-actions-toggle.cjs.entry.js +2 -2
- package/dist/cjs/atomic-insight-user-actions-toggle.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-recs-interface.cjs.entry.js +1 -1
- package/dist/cjs/atomic-search-box-query-suggestions.cjs.entry.js +76 -0
- package/dist/cjs/atomic-search-box-query-suggestions.cjs.entry.js.map +1 -0
- package/dist/cjs/atomic-search-interface.cjs.entry.js +1 -1
- package/dist/cjs/atomic.cjs.js +1 -1
- package/dist/cjs/clock-7aeb19d0.js +7 -0
- package/dist/cjs/clock-7aeb19d0.js.map +1 -0
- package/dist/cjs/index-757bc886.js +2 -2
- package/dist/cjs/stencil-query-suggestions-03268ecc.js +38 -0
- package/dist/cjs/stencil-query-suggestions-03268ecc.js.map +1 -0
- package/dist/cjs/version.cjs.js +2 -2
- package/dist/esm/_loader.js +1 -1
- package/dist/esm/{analytics-config-3703007d.js → analytics-config-d7026e3b.js} +2 -2
- package/dist/esm/{analytics-config-3703007d.js.map → analytics-config-d7026e3b.js.map} +1 -1
- package/dist/esm/atomic-insight-history-toggle.entry.js +2 -2
- package/dist/esm/atomic-insight-history-toggle.entry.js.map +1 -1
- package/dist/esm/atomic-insight-interface.entry.js +1 -1
- package/dist/esm/atomic-insight-search-box.entry.js +3 -29
- package/dist/esm/atomic-insight-search-box.entry.js.map +1 -1
- package/dist/esm/atomic-insight-user-actions-toggle.entry.js +2 -2
- package/dist/esm/atomic-insight-user-actions-toggle.entry.js.map +1 -1
- package/dist/esm/atomic-recs-interface.entry.js +1 -1
- package/dist/esm/atomic-search-box-query-suggestions.entry.js +72 -0
- package/dist/esm/atomic-search-box-query-suggestions.entry.js.map +1 -0
- package/dist/esm/atomic-search-interface.entry.js +1 -1
- package/dist/esm/atomic.js +1 -1
- package/dist/esm/clock-b1f5d7f7.js +5 -0
- package/dist/esm/clock-b1f5d7f7.js.map +1 -0
- package/dist/esm/index-3f35faca.js +2 -2
- package/dist/esm/stencil-query-suggestions-5d6a46d7.js +33 -0
- package/dist/esm/stencil-query-suggestions-5d6a46d7.js.map +1 -0
- package/dist/esm/version.js +2 -2
- package/dist/types/components/search/{atomic-search-box-query-suggestions/atomic-search-box-query-suggestions.d.ts → atomic-search-box-recent-queries/atomic-search-box-recent-queries.d.ts} +16 -9
- package/dist/types/components/search/index.d.ts +1 -1
- package/dist/types/components/search/search-box-suggestions/{atomic-search-box-recent-queries/atomic-search-box-recent-queries.d.ts → atomic-search-box-query-suggestions/atomic-search-box-query-suggestions.d.ts} +3 -11
- package/dist/types/components.d.ts +14 -14
- package/docs/atomic-docs.json +13 -11
- package/package.json +3 -3
- package/dist/atomic/components/atomic-search-box-recent-queries.d.ts +0 -11
- package/dist/atomic/components/atomic-search-box-recent-queries.js +0 -8
- package/dist/atomic/components/atomic-search-box-recent-queries.js.map +0 -1
- package/dist/atomic/components/atomic-search-box-recent-queries2.js +0 -183
- package/dist/atomic/components/atomic-search-box-recent-queries2.js.map +0 -1
- package/dist/atomic/components/components/search/atomic-search-box-query-suggestions/atomic-search-box-query-suggestions.js +0 -119
- package/dist/atomic/p-7a06a356.entry.js +0 -2
- package/dist/atomic/p-7a06a356.entry.js.map +0 -1
- package/dist/atomic/p-d2b14ff1.entry.js +0 -2
- package/dist/atomic/p-d2b14ff1.entry.js.map +0 -1
- package/dist/cjs/atomic-search-box-recent-queries.cjs.entry.js +0 -171
- package/dist/cjs/atomic-search-box-recent-queries.cjs.entry.js.map +0 -1
- package/dist/cjs/clock-f03ff827.js +0 -7
- package/dist/cjs/clock-f03ff827.js.map +0 -1
- package/dist/esm/atomic-search-box-recent-queries.entry.js +0 -167
- package/dist/esm/atomic-search-box-recent-queries.entry.js.map +0 -1
- package/dist/esm/clock-add3e9a5.js +0 -5
- package/dist/esm/clock-add3e9a5.js.map +0 -1
- /package/dist/atomic/{p-e670c0cd.entry.js.map → p-1ea14b8b.entry.js.map} +0 -0
- /package/dist/atomic/{p-aef7574d.entry.js.map → p-4b97f491.entry.js.map} +0 -0
- /package/dist/atomic/{p-2d07cd77.entry.js.map → p-5f2e8b83.entry.js.map} +0 -0
- /package/dist/atomic/{p-6e6d686e.entry.js.map → p-7383fd32.entry.js.map} +0 -0
- /package/dist/atomic/{p-015cd25d.js.map → p-7a69a983.js.map} +0 -0
- /package/dist/atomic/{p-6329ff94.entry.js.map → p-ba4bf29f.entry.js.map} +0 -0
- /package/dist/atomic/{p-c280cd05.js.map → p-e1cc5150.js.map} +0 -0
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["getPartialSearchBoxSuggestionElement","suggestion","i18n","part","key","encodeForDomAttribute","rawValue","query","ariaLabel","t","interpolation","escapeValue","QuerySuggestionContainer","_","children","h","class","QuerySuggestionIcon","icon","hasSuggestion","QuerySuggestionText","hasQuery","innerHTML","highlightedValue","atomicInsightSearchBoxCss","AtomicInsightSearchBoxStyle0","AtomicInsightSearchBox","this","isExpanded","disableSearch","numberOfSuggestions","initialize","id","randomID","searchBoxOptions","highlightOptions","notMatchDelimiters","open","close","correctionDelimiters","fetchQuerySuggestions","registerQuerySuggest","loadInsightSearchActions","bindings","engine","searchBox","buildInsightSearchBox","options","dispatch","count","suggestionManager","SuggestionManager","getNumberOfSuggestionsToDisplay","updateQuery","updateText","getSearchBoxValue","searchBoxState","value","getSuggestionTimeout","getSuggestionDelay","getHost","host","getLogger","logger","registerSuggestions","position","renderItems","state","suggestions","map","renderSuggestionItem","onInput","panel","onSubmit","activeDescendantElement","clickOnActiveElement","submit","clearSuggestions","onKeyDown","e","preventDefault","focusNextValue","announceNewActiveSuggestionToScreenReader","focusPreviousValue","triggerTextAreaChange","textAreaRef","dispatchEvent","window","Event","renderSuggestion","item","index","lastIndex","isSelected","activeDescendant","suggestedQuery","hideIfLast","side","isDoubleList","onClick","onSuggestionClick","onMouseOver","onSuggestionMouseOver","partialItem","content","SearchSlimIcon","length","onSelect","selectSuggestion","renderPanel","elements","setRef","getRef","ref","onMouseDown","target","renderSuggestions","hasSuggestions","updateActiveDescendant","role","allSuggestionElements","el","leftPanel","getSearchInputLabel","isMacOS","hasKeyboard","onFocus","triggerSuggestions","announceNewSuggestionsToScreenReader","suggestionsAriaMessage","numberOfSuggestionsToAnnounce","filter","elementHasQuery","searchBoxAriaMessage","render","SearchBoxWrapper","disabled","onFocusout","event","isFocusingOut","SearchTextArea","loading","isLoading","placeholder","onClear","clear","__decorate","InitializeBindings","BindStateToController","AriaLiveRegion"],"sources":["src/components/common/suggestions/stencil-query-suggestions.tsx","src/components/insight/atomic-insight-search-box/atomic-insight-search-box.pcss?tag=atomic-insight-search-box&encapsulation=shadow","src/components/insight/atomic-insight-search-box/atomic-insight-search-box.tsx"],"sourcesContent":["import {FunctionalComponent, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport {encodeForDomAttribute} from '../../../utils/string-utils.js';\nimport {SearchBoxSuggestionElement} from './suggestions-types.js';\n\ninterface Suggestion {\n highlightedValue: string;\n rawValue: string;\n}\n\nexport const getPartialSearchBoxSuggestionElement = (\n suggestion: Suggestion,\n i18n: i18n\n): Pick<SearchBoxSuggestionElement, 'ariaLabel' | 'key' | 'query' | 'part'> => {\n return {\n part: 'query-suggestion-item',\n key: `qs-${encodeForDomAttribute(suggestion.rawValue)}`,\n query: suggestion.rawValue,\n ariaLabel: i18n.t('query-suggestion-label', {\n query: suggestion.rawValue,\n interpolation: {escapeValue: false},\n }),\n };\n};\n\nexport const QuerySuggestionContainer: FunctionalComponent = (_, children) => {\n return (\n <div part=\"query-suggestion-content\" class=\"flex items-center\">\n {children}\n </div>\n );\n};\n\ninterface QuerySuggestionIconProps {\n icon: string;\n hasSuggestion: boolean;\n}\n\nexport const QuerySuggestionIcon: FunctionalComponent<\n QuerySuggestionIconProps\n> = ({icon, hasSuggestion}) => {\n if (!hasSuggestion) {\n return;\n }\n\n return (\n <atomic-icon\n part=\"query-suggestion-icon\"\n icon={icon}\n class=\"mr-2 h-4 w-4 shrink-0\"\n ></atomic-icon>\n );\n};\n\ninterface QuerySuggestionTextProps {\n suggestion: Suggestion;\n hasQuery: boolean;\n}\n\nexport const QuerySuggestionText: FunctionalComponent<\n QuerySuggestionTextProps\n> = ({suggestion, hasQuery}) => {\n if (hasQuery) {\n return (\n <span\n part=\"query-suggestion-text\"\n class=\"line-clamp-2 break-all\"\n innerHTML={suggestion.highlightedValue}\n ></span>\n );\n }\n\n return (\n <span part=\"query-suggestion-text\" class=\"line-clamp-2 break-all\">\n {suggestion.rawValue}\n </span>\n );\n};\n","@import '../../../global/global.pcss';\n@import '../../common/search-box/search-box.pcss';\n\n[part='wrapper'] {\n @apply z-10;\n}\n\n:host {\n position: relative;\n}\n\n[part='input'] {\n padding-top: 0.675rem;\n padding-bottom: 0.675rem;\n}\n\n[part='submit-icon'] {\n @apply text-on-background;\n}\n\n[part='submit-button'] {\n @apply flex w-10 items-center justify-center;\n}\n\n.loading::after {\n content: '';\n @apply bg-background absolute h-5/6 w-5/6 rounded-full;\n}\n\n[part='clear-button-wrapper'] {\n @apply mr-2 py-0;\n}\n\n[part='clear-icon'] {\n @apply h-3 w-3;\n}\n\n[part='textarea-expander'] {\n &::after {\n @apply p-2 px-4;\n }\n}\n\n[part='textarea-expander'] {\n [part='textarea'] {\n @apply p-2 px-4;\n }\n}\n","import {loadInsightSearchActions} from '@coveo/headless/insight';\nimport {\n buildSearchBox as buildInsightSearchBox,\n SearchBox as InsightSearchBox,\n SearchBoxState as InsightSearchBoxState,\n Suggestion as InsightSuggestion,\n} from '@coveo/headless/insight';\nimport {Component, Element, h, Prop, State} from '@stencil/core';\nimport SearchSlimIcon from '../../../images/search-slim.svg';\nimport {hasKeyboard, isMacOS} from '../../../utils/device-utils';\nimport {\n BindStateToController,\n InitializeBindings,\n} from '../../../utils/initialization-utils';\nimport {AriaLiveRegion} from '../../../utils/stencil-accessibility-utils';\nimport {isFocusingOut, randomID} from '../../../utils/utils';\nimport {SearchBoxWrapper} from '../../common/search-box/stencil-search-box-wrapper';\nimport {SearchTextArea} from '../../common/search-box/stencil-search-text-area';\nimport {\n getPartialSearchBoxSuggestionElement,\n QuerySuggestionContainer,\n QuerySuggestionIcon,\n QuerySuggestionText,\n} from '../../common/suggestions/stencil-query-suggestions';\nimport {SuggestionManager} from '../../common/suggestions/stencil-suggestion-manager';\nimport {\n elementHasQuery,\n} from '../../common/suggestions/suggestions-utils';\nimport {\n SearchBoxSuggestionElement,\n} from '../../common/suggestions/suggestions-types';\nimport {InsightBindings} from '../atomic-insight-interface/atomic-insight-interface';\n\n/**\n * @internal\n */\n@Component({\n tag: 'atomic-insight-search-box',\n styleUrl: 'atomic-insight-search-box.pcss',\n shadow: true,\n})\nexport class AtomicInsightSearchBox {\n @InitializeBindings() public bindings!: InsightBindings;\n\n private searchBox!: InsightSearchBox;\n private id!: string;\n private textAreaRef!: HTMLTextAreaElement;\n private suggestionManager!: SuggestionManager<InsightSearchBox>;\n\n @Element() private host!: HTMLElement;\n\n @BindStateToController('searchBox')\n @State()\n private searchBoxState!: InsightSearchBoxState;\n @State() public error!: Error;\n @State() private isExpanded = false;\n\n /**\n * Whether to prevent the user from triggering a search from the component.\n * Perfect for use cases where you need to disable the search conditionally, like when the input is empty.\n */\n @Prop({reflect: true}) public disableSearch = false;\n /**\n * The number of query suggestions to display when interacting with the search box.\n */\n @Prop({reflect: true}) public numberOfSuggestions = 5;\n\n @AriaLiveRegion('search-box')\n protected searchBoxAriaMessage!: string;\n\n @AriaLiveRegion('search-suggestions', true)\n protected suggestionsAriaMessage!: string;\n\n public initialize() {\n this.id = randomID('atomic-search-box-');\n\n const searchBoxOptions = {\n id: this.id,\n numberOfSuggestions: 0,\n highlightOptions: {\n notMatchDelimiters: {\n open: '<span class=\"font-bold\">',\n close: '</span>',\n },\n correctionDelimiters: {\n open: '<span class=\"font-normal\">',\n close: '</span>',\n },\n },\n };\n\n const {fetchQuerySuggestions, registerQuerySuggest} =\n loadInsightSearchActions(this.bindings.engine);\n\n this.searchBox = buildInsightSearchBox(this.bindings.engine, {\n options: searchBoxOptions,\n });\n\n this.bindings.engine.dispatch(\n registerQuerySuggest({id: this.id, count: this.numberOfSuggestions})\n );\n\n this.suggestionManager = new SuggestionManager({\n getNumberOfSuggestionsToDisplay: () => this.numberOfSuggestions,\n updateQuery: (query) => this.searchBox.updateText(query),\n getSearchBoxValue: () => this.searchBoxState.value,\n getSuggestionTimeout: () => 500,\n getSuggestionDelay: () => 0,\n getHost: () => this.host,\n getLogger: () => this.bindings.engine.logger,\n });\n\n this.suggestionManager.registerSuggestions({\n position: 0,\n renderItems: () =>\n this.searchBox.state.suggestions.map((suggestion) =>\n this.renderSuggestionItem(suggestion)\n ),\n onInput: () => this.bindings.engine.dispatch(fetchQuerySuggestions({id: this.id})),\n panel: 'left',\n });\n }\n\n private onSubmit() {\n if (this.suggestionManager.activeDescendantElement) {\n this.suggestionManager.clickOnActiveElement();\n return;\n }\n\n this.searchBox.submit();\n this.suggestionManager.clearSuggestions();\n }\n\n private async onKeyDown(e: KeyboardEvent) {\n if (this.disableSearch) {\n return;\n }\n\n switch (e.key) {\n case 'Enter':\n this.onSubmit();\n break;\n case 'Escape':\n this.suggestionManager.clearSuggestions();\n break;\n case 'ArrowDown':\n e.preventDefault();\n await this.suggestionManager.focusNextValue();\n this.announceNewActiveSuggestionToScreenReader();\n break;\n case 'ArrowUp':\n e.preventDefault();\n await this.suggestionManager.focusPreviousValue();\n this.announceNewActiveSuggestionToScreenReader();\n break;\n case 'Tab':\n this.suggestionManager.clearSuggestions();\n break;\n }\n }\n\n private triggerTextAreaChange(value: string) {\n this.textAreaRef.value = value;\n this.textAreaRef.dispatchEvent(new window.Event('change'));\n }\n\n private renderSuggestion(\n item: SearchBoxSuggestionElement,\n index: number,\n lastIndex: number\n ) {\n const id = `${this.id}-suggestion-${item.key}`;\n\n const isSelected =\n id === this.suggestionManager.activeDescendant ||\n this.suggestionManager.suggestedQuery === item.query;\n\n if (index === lastIndex && item.hideIfLast) {\n return null;\n }\n\n return (\n <atomic-suggestion-renderer\n i18n={this.bindings.i18n}\n id={id}\n suggestion={item}\n isSelected={isSelected}\n side={'left'}\n index={index}\n lastIndex={lastIndex}\n isDoubleList={false}\n onClick={(e: Event) => {\n this.suggestionManager.onSuggestionClick(item, e);\n }}\n onMouseOver={() => {\n this.suggestionManager.onSuggestionMouseOver(item, 'left', id);\n }}\n ></atomic-suggestion-renderer>\n );\n }\n\n private renderSuggestionItem(\n suggestion: InsightSuggestion\n ): SearchBoxSuggestionElement {\n const hasQuery = this.searchBox.state.value !== '';\n const partialItem = getPartialSearchBoxSuggestionElement(\n suggestion,\n this.bindings.i18n\n );\n\n return {\n ...partialItem,\n content: (\n <QuerySuggestionContainer>\n <QuerySuggestionIcon\n icon={SearchSlimIcon}\n hasSuggestion={this.searchBoxState.suggestions.length > 1}\n />\n\n <QuerySuggestionText suggestion={suggestion} hasQuery={hasQuery} />\n </QuerySuggestionContainer>\n ),\n onSelect: () => {\n this.searchBox.selectSuggestion(suggestion.rawValue);\n },\n };\n }\n\n private renderPanel(\n elements: SearchBoxSuggestionElement[],\n setRef: (el: HTMLElement | undefined) => void,\n getRef: () => HTMLElement | undefined\n ) {\n if (!elements.length) {\n return null;\n }\n\n return (\n <div\n part={'suggestions'}\n ref={setRef}\n class=\"flex grow basis-1/2 flex-col\"\n onMouseDown={(e) => {\n if (e.target === getRef()) {\n e.preventDefault();\n }\n }}\n >\n {elements.map((suggestion, index) =>\n this.renderSuggestion(suggestion, index, elements.length - 1)\n )}\n </div>\n );\n }\n\n private renderSuggestions() {\n if (!this.suggestionManager.hasSuggestions) {\n this.suggestionManager.updateActiveDescendant();\n return null;\n }\n\n return (\n <div\n id={`${this.id}-popup`}\n part=\"suggestions-wrapper\"\n class={`bg-background border-neutral absolute top-full left-0 z-10 flex w-full rounded-md border ${\n this.suggestionManager.hasSuggestions && this.isExpanded\n ? ''\n : 'hidden'\n }`}\n role=\"application\"\n aria-label={this.bindings.i18n.t('search-suggestions-single-list')}\n {...(this.suggestionManager.activeDescendant && {\n 'aria-activedescendant': this.suggestionManager.activeDescendant,\n })}\n >\n {this.renderPanel(\n this.suggestionManager.allSuggestionElements,\n (el) => (this.suggestionManager.leftPanel = el),\n () => this.suggestionManager.leftPanel\n )}\n </div>\n );\n }\n\n private getSearchInputLabel() {\n if (isMacOS()) {\n return this.bindings.i18n.t('search-box-with-suggestions-macos');\n }\n if (!hasKeyboard()) {\n return this.bindings.i18n.t('search-box-with-suggestions-keyboardless');\n }\n return this.bindings.i18n.t('search-box-with-suggestions');\n }\n\n private async onFocus() {\n if (this.isExpanded) {\n return;\n }\n this.isExpanded = true;\n await this.suggestionManager.triggerSuggestions();\n this.announceNewSuggestionsToScreenReader();\n }\n\n private async onInput(value: string) {\n this.searchBox.updateText(value);\n this.isExpanded = true;\n await this.suggestionManager.triggerSuggestions();\n this.announceNewSuggestionsToScreenReader();\n }\n\n private announceNewActiveSuggestionToScreenReader() {\n const ariaLabel = this.suggestionManager.activeDescendantElement?.ariaLabel;\n if (isMacOS() && ariaLabel) {\n this.suggestionsAriaMessage = ariaLabel;\n }\n }\n\n private announceNewSuggestionsToScreenReader() {\n const numberOfSuggestionsToAnnounce =\n this.suggestionManager.allSuggestionElements.filter(\n elementHasQuery\n ).length;\n this.searchBoxAriaMessage = numberOfSuggestionsToAnnounce\n ? this.bindings.i18n.t(\n this.searchBoxState.value\n ? 'query-suggestions-available'\n : 'query-suggestions-available-no-query',\n {\n count: numberOfSuggestionsToAnnounce,\n query: this.searchBoxState.value,\n }\n )\n : this.bindings.i18n.t('query-suggestions-unavailable');\n }\n\n public render() {\n return (\n <SearchBoxWrapper\n disabled={this.disableSearch}\n onFocusout={(event) => {\n if (!isFocusingOut(event)) {\n return;\n }\n this.suggestionManager.clearSuggestions();\n this.isExpanded = false;\n }}\n >\n <atomic-icon\n part=\"submit-icon\"\n icon={SearchSlimIcon}\n class=\"my-auto mr-0 ml-4 h-4 w-4\"\n />\n <SearchTextArea\n textAreaRef={this.textAreaRef}\n loading={this.searchBoxState.isLoading}\n ref={(el) => el && (this.textAreaRef = el)}\n bindings={this.bindings}\n value={this.searchBoxState.value}\n ariaLabel={this.getSearchInputLabel()}\n placeholder={this.bindings.i18n.t('search-ellipsis')}\n onFocus={() => this.onFocus()}\n onKeyDown={(e) => this.onKeyDown(e)}\n onClear={() => {\n this.searchBox.clear();\n this.triggerTextAreaChange('');\n }}\n onInput={(e) => this.onInput((e.target as HTMLInputElement).value)}\n />\n {this.renderSuggestions()}\n </SearchBoxWrapper>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -1,171 +0,0 @@
|
|
1
|
-
'use strict';
|
2
|
-
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
4
|
-
|
5
|
-
const index = require('./index-757bc886.js');
|
6
|
-
const headless = require('@coveo/headless');
|
7
|
-
const clock = require('./clock-f03ff827.js');
|
8
|
-
const localStorageUtils = require('./local-storage-utils-380ce22b.js');
|
9
|
-
const utils = require('./utils-7153ae6b.js');
|
10
|
-
const stringUtils = require('./string-utils-bdf08f8c.js');
|
11
|
-
const suggestionsEvents = require('./suggestions-events-63dd0640.js');
|
12
|
-
require('./purify-85b542e2.js');
|
13
|
-
require('./_commonjsHelpers-b3309d7b.js');
|
14
|
-
require('./dom-utils-d4790328.js');
|
15
|
-
require('./event-utils-9bfcf3c5.js');
|
16
|
-
|
17
|
-
const getPartialRecentQueryElement = (value, i18n) => {
|
18
|
-
return {
|
19
|
-
part: 'recent-query-item',
|
20
|
-
query: value,
|
21
|
-
key: `recent-${stringUtils.encodeForDomAttribute(value)}`,
|
22
|
-
ariaLabel: i18n.t('recent-query-suggestion-label', {
|
23
|
-
query: value,
|
24
|
-
interpolation: { escapeValue: false },
|
25
|
-
}),
|
26
|
-
};
|
27
|
-
};
|
28
|
-
const getPartialRecentQueryClearElement = (i18n) => {
|
29
|
-
return {
|
30
|
-
key: 'recent-query-clear',
|
31
|
-
ariaLabel: i18n.t('clear-recent-searches', {
|
32
|
-
interpolation: { escapeValue: false },
|
33
|
-
}),
|
34
|
-
part: 'recent-query-title-item suggestion-divider',
|
35
|
-
hideIfLast: true,
|
36
|
-
};
|
37
|
-
};
|
38
|
-
const RecentQueriesContainer = (_, children) => {
|
39
|
-
return (index.h("div", { part: "recent-query-content", class: "flex items-center text-left break-all" }, children));
|
40
|
-
};
|
41
|
-
const RecentQueryIcon = ({ icon, }) => {
|
42
|
-
return (index.h("atomic-icon", { part: "recent-query-icon", icon: icon, class: "mr-2 h-4 w-4 shrink-0" }));
|
43
|
-
};
|
44
|
-
const RecentQueryText = ({ query, value, }) => {
|
45
|
-
if (query === '') {
|
46
|
-
return (index.h("span", { part: "recent-query-text", class: "line-clamp-2 break-all" }, value));
|
47
|
-
}
|
48
|
-
return (index.h("span", { part: "recent-query-text", class: "line-clamp-2 break-all", innerHTML: headless.HighlightUtils.highlightString({
|
49
|
-
content: value,
|
50
|
-
openingDelimiter: '<span part="recent-query-text-highlight" class="font-bold">',
|
51
|
-
closingDelimiter: '</span>',
|
52
|
-
highlights: [
|
53
|
-
{
|
54
|
-
offset: query.length,
|
55
|
-
length: value.length - query.length,
|
56
|
-
},
|
57
|
-
],
|
58
|
-
}) }));
|
59
|
-
};
|
60
|
-
const RecentQueryClear = ({ i18n, }) => {
|
61
|
-
return (index.h("div", { part: "recent-query-title-content", class: "flex w-full justify-between" },
|
62
|
-
index.h("span", { class: "font-bold", part: "recent-query-title" }, i18n.t('recent-searches')),
|
63
|
-
index.h("span", { part: "recent-query-clear" }, i18n.t('clear'))));
|
64
|
-
};
|
65
|
-
|
66
|
-
const AtomicSearchBoxRecentQueries = class {
|
67
|
-
constructor(hostRef) {
|
68
|
-
index.registerInstance(this, hostRef);
|
69
|
-
/**
|
70
|
-
* The maximum number of suggestions that will be displayed if the user has typed something into the input field.
|
71
|
-
*/
|
72
|
-
this.maxWithQuery = 3;
|
73
|
-
this.warnUser = utils.once(() => this.bindings.engine.logger.warn('Because analytics are disabled, the recent queries feature is deactivated.'));
|
74
|
-
this.error = undefined;
|
75
|
-
this.icon = undefined;
|
76
|
-
this.maxWithQuery = 3;
|
77
|
-
this.maxWithoutQuery = undefined;
|
78
|
-
}
|
79
|
-
componentWillLoad() {
|
80
|
-
try {
|
81
|
-
suggestionsEvents.dispatchSearchBoxSuggestionsEvent((bindings) => {
|
82
|
-
this.bindings = bindings;
|
83
|
-
return this.initialize();
|
84
|
-
}, this.host, ['atomic-search-box']);
|
85
|
-
}
|
86
|
-
catch (error) {
|
87
|
-
this.error = error;
|
88
|
-
}
|
89
|
-
}
|
90
|
-
renderIcon() {
|
91
|
-
return this.icon || clock.Clock;
|
92
|
-
}
|
93
|
-
initialize() {
|
94
|
-
this.storage = new localStorageUtils.SafeStorage();
|
95
|
-
this.recentQueriesList = headless.buildRecentQueriesList(this.bindings.engine, {
|
96
|
-
initialState: { queries: this.retrieveLocalStorage() },
|
97
|
-
options: { maxLength: 1000, clearFilters: this.bindings.clearFilters },
|
98
|
-
});
|
99
|
-
this.recentQueriesList.subscribe(() => this.updateLocalStorage());
|
100
|
-
return {
|
101
|
-
position: Array.from(this.host.parentNode.children).indexOf(this.host),
|
102
|
-
renderItems: () => this.renderItems(),
|
103
|
-
};
|
104
|
-
}
|
105
|
-
retrieveLocalStorage() {
|
106
|
-
return this.storage.getParsedJSON(localStorageUtils.StorageItems.RECENT_QUERIES, []);
|
107
|
-
}
|
108
|
-
updateLocalStorage() {
|
109
|
-
if (!this.recentQueriesList.state.analyticsEnabled) {
|
110
|
-
return this.disableFeature();
|
111
|
-
}
|
112
|
-
return this.storage.setJSON(localStorageUtils.StorageItems.RECENT_QUERIES, this.recentQueriesList.state.queries);
|
113
|
-
}
|
114
|
-
disableFeature() {
|
115
|
-
this.warnUser();
|
116
|
-
this.storage.removeItem(localStorageUtils.StorageItems.RECENT_QUERIES);
|
117
|
-
}
|
118
|
-
renderItems() {
|
119
|
-
if (!this.recentQueriesList.state.analyticsEnabled) {
|
120
|
-
return [];
|
121
|
-
}
|
122
|
-
const query = this.bindings.searchBoxController.state.value;
|
123
|
-
const hasQuery = query !== '';
|
124
|
-
const max = hasQuery ? this.maxWithQuery : this.maxWithoutQuery;
|
125
|
-
const filteredQueries = this.recentQueriesList.state.queries
|
126
|
-
.filter((recentQuery) => recentQuery.toLowerCase().startsWith(query.toLowerCase()))
|
127
|
-
.slice(0, max);
|
128
|
-
const suggestionElements = filteredQueries.map((value) => this.renderItem(value));
|
129
|
-
if (suggestionElements.length) {
|
130
|
-
suggestionElements.unshift(this.renderClear());
|
131
|
-
}
|
132
|
-
return suggestionElements;
|
133
|
-
}
|
134
|
-
renderClear() {
|
135
|
-
const partialItem = getPartialRecentQueryClearElement(this.bindings.i18n);
|
136
|
-
return {
|
137
|
-
...partialItem,
|
138
|
-
content: index.h(RecentQueryClear, { i18n: this.bindings.i18n }),
|
139
|
-
onSelect: () => {
|
140
|
-
this.recentQueriesList.clear();
|
141
|
-
this.bindings.triggerSuggestions();
|
142
|
-
},
|
143
|
-
};
|
144
|
-
}
|
145
|
-
renderItem(value) {
|
146
|
-
const query = this.bindings.searchBoxController.state.value;
|
147
|
-
const partialItem = getPartialRecentQueryElement(value, this.bindings.i18n);
|
148
|
-
return {
|
149
|
-
...partialItem,
|
150
|
-
content: (index.h(RecentQueriesContainer, null, index.h(RecentQueryIcon, { icon: this.renderIcon() }), index.h(RecentQueryText, { query: query, value: value }))),
|
151
|
-
onSelect: () => {
|
152
|
-
if (this.bindings.isStandalone) {
|
153
|
-
this.bindings.searchBoxController.updateText(value);
|
154
|
-
this.bindings.searchBoxController.submit();
|
155
|
-
return;
|
156
|
-
}
|
157
|
-
this.recentQueriesList.executeRecentQuery(this.recentQueriesList.state.queries.indexOf(value));
|
158
|
-
},
|
159
|
-
};
|
160
|
-
}
|
161
|
-
render() {
|
162
|
-
if (this.error) {
|
163
|
-
return (index.h("atomic-component-error", { key: 'e240230fed71d8dac541882bfc8efaf87405c966', element: this.host, error: this.error }));
|
164
|
-
}
|
165
|
-
}
|
166
|
-
get host() { return index.getElement(this); }
|
167
|
-
};
|
168
|
-
|
169
|
-
exports.atomic_search_box_recent_queries = AtomicSearchBoxRecentQueries;
|
170
|
-
|
171
|
-
//# sourceMappingURL=atomic-search-box-recent-queries.cjs.entry.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"file":"atomic-search-box-recent-queries.entry.cjs.js","mappings":"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","names":["encodeForDomAttribute","h","HighlightUtils","once","dispatchSearchBoxSuggestionsEvent","Clock","SafeStorage","buildRecentQueriesList","StorageItems"],"sources":["src/components/common/suggestions/stencil-recent-queries.tsx","src/components/search/search-box-suggestions/atomic-search-box-recent-queries/atomic-search-box-recent-queries.tsx"],"sourcesContent":["import {HighlightUtils} from '@coveo/headless';\nimport {FunctionalComponent, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport {encodeForDomAttribute} from '../../../utils/string-utils';\nimport {SearchBoxSuggestionElement} from './suggestions-types';\n\nexport const getPartialRecentQueryElement = (\n value: string,\n i18n: i18n\n): Pick<SearchBoxSuggestionElement, 'ariaLabel' | 'key' | 'query' | 'part'> => {\n return {\n part: 'recent-query-item',\n query: value,\n key: `recent-${encodeForDomAttribute(value)}`,\n ariaLabel: i18n.t('recent-query-suggestion-label', {\n query: value,\n interpolation: {escapeValue: false},\n }),\n };\n};\n\nexport const getPartialRecentQueryClearElement = (\n i18n: i18n\n): Pick<\n SearchBoxSuggestionElement,\n 'ariaLabel' | 'key' | 'part' | 'hideIfLast'\n> => {\n return {\n key: 'recent-query-clear',\n ariaLabel: i18n.t('clear-recent-searches', {\n interpolation: {escapeValue: false},\n }),\n part: 'recent-query-title-item suggestion-divider',\n hideIfLast: true,\n };\n};\n\nexport const RecentQueriesContainer: FunctionalComponent = (_, children) => {\n return (\n <div\n part=\"recent-query-content\"\n class=\"flex items-center text-left break-all\"\n >\n {children}\n </div>\n );\n};\n\ninterface RecentQueryIconProps {\n icon: string;\n}\n\nexport const RecentQueryIcon: FunctionalComponent<RecentQueryIconProps> = ({\n icon,\n}) => {\n return (\n <atomic-icon\n part=\"recent-query-icon\"\n icon={icon}\n class=\"mr-2 h-4 w-4 shrink-0\"\n ></atomic-icon>\n );\n};\n\ninterface RecentQueryTextProps {\n query: string;\n value: string;\n}\n\nexport const RecentQueryText: FunctionalComponent<RecentQueryTextProps> = ({\n query,\n value,\n}) => {\n if (query === '') {\n return (\n <span part=\"recent-query-text\" class=\"line-clamp-2 break-all\">\n {value}\n </span>\n );\n }\n return (\n <span\n part=\"recent-query-text\"\n class=\"line-clamp-2 break-all\"\n innerHTML={HighlightUtils.highlightString({\n content: value,\n openingDelimiter:\n '<span part=\"recent-query-text-highlight\" class=\"font-bold\">',\n closingDelimiter: '</span>',\n highlights: [\n {\n offset: query.length,\n length: value.length - query.length,\n },\n ],\n })}\n ></span>\n );\n};\n\ninterface RecentQueryClearProps {\n i18n: i18n;\n}\n\nexport const RecentQueryClear: FunctionalComponent<RecentQueryClearProps> = ({\n i18n,\n}) => {\n return (\n <div part=\"recent-query-title-content\" class=\"flex w-full justify-between\">\n <span class=\"font-bold\" part=\"recent-query-title\">\n {i18n.t('recent-searches')}\n </span>\n <span part=\"recent-query-clear\">{i18n.t('clear')}</span>\n </div>\n );\n};\n","import {\n buildRecentQueriesList,\n RecentQueriesList,\n SearchBox,\n} from '@coveo/headless';\nimport {Component, Element, Prop, State, h} from '@stencil/core';\nimport Clock from '../../../../images/clock.svg';\nimport {SafeStorage, StorageItems} from '../../../../utils/local-storage-utils';\nimport {once} from '../../../../utils/utils';\nimport {\n getPartialRecentQueryClearElement,\n getPartialRecentQueryElement,\n RecentQueriesContainer,\n RecentQueryClear,\n RecentQueryIcon,\n RecentQueryText,\n} from '../../../common/suggestions/stencil-recent-queries';\nimport {\n dispatchSearchBoxSuggestionsEvent,\n} from '../../../common/suggestions/suggestions-events';\nimport type {\n SearchBoxSuggestionElement,\n SearchBoxSuggestions,\n SearchBoxSuggestionsBindings,\n} from '../../../common/suggestions/suggestions-types';\nimport {Bindings} from '../../atomic-search-interface/atomic-search-interface';\n\n/**\n * The `atomic-search-box-recent-queries` component can be added as a child of an `atomic-search-box` component, allowing for the configuration of recent query suggestions.\n */\n@Component({\n tag: 'atomic-search-box-recent-queries',\n shadow: true,\n})\nexport class AtomicSearchBoxRecentQueries {\n private bindings!: SearchBoxSuggestionsBindings<SearchBox, Bindings>;\n private recentQueriesList!: RecentQueriesList;\n private storage!: SafeStorage;\n\n @Element() private host!: HTMLElement;\n\n @State() public error!: Error;\n\n /**\n * The SVG icon to display.\n *\n * - Use a value that starts with `http://`, `https://`, `./`, or `../`, to fetch and display an icon from a given location.\n * - Use a value that starts with `assets://`, to display an icon from the Atomic package.\n * - Use a stringified SVG to display it directly.\n */\n @Prop() public icon?: string;\n\n /**\n * The maximum number of suggestions that will be displayed if the user has typed something into the input field.\n */\n @Prop({reflect: true}) public maxWithQuery = 3;\n /**\n * The maximum number of suggestions that will be displayed initially when the input field is empty.\n */\n @Prop({reflect: true}) public maxWithoutQuery?: number;\n\n componentWillLoad() {\n try {\n dispatchSearchBoxSuggestionsEvent<SearchBox, Bindings>(\n (bindings) => {\n this.bindings = bindings;\n return this.initialize();\n },\n this.host,\n ['atomic-search-box']\n );\n } catch (error) {\n this.error = error as Error;\n }\n }\n\n private renderIcon() {\n return this.icon || Clock;\n }\n\n private initialize(): SearchBoxSuggestions {\n this.storage = new SafeStorage();\n this.recentQueriesList = buildRecentQueriesList(this.bindings.engine, {\n initialState: {queries: this.retrieveLocalStorage()},\n options: {maxLength: 1000, clearFilters: this.bindings.clearFilters},\n });\n\n this.recentQueriesList.subscribe(() => this.updateLocalStorage());\n\n return {\n position: Array.from(this.host.parentNode!.children).indexOf(this.host),\n renderItems: () => this.renderItems(),\n };\n }\n\n private retrieveLocalStorage() {\n return this.storage.getParsedJSON(StorageItems.RECENT_QUERIES, []);\n }\n\n private updateLocalStorage() {\n if (!this.recentQueriesList.state.analyticsEnabled) {\n return this.disableFeature();\n }\n\n return this.storage.setJSON(\n StorageItems.RECENT_QUERIES,\n this.recentQueriesList.state.queries\n );\n }\n\n private warnUser = once(() =>\n this.bindings.engine.logger.warn(\n 'Because analytics are disabled, the recent queries feature is deactivated.'\n )\n );\n\n private disableFeature() {\n this.warnUser();\n this.storage.removeItem(StorageItems.RECENT_QUERIES);\n }\n\n private renderItems(): SearchBoxSuggestionElement[] {\n if (!this.recentQueriesList.state.analyticsEnabled) {\n return [];\n }\n\n const query = this.bindings.searchBoxController.state.value;\n const hasQuery = query !== '';\n const max = hasQuery ? this.maxWithQuery : this.maxWithoutQuery;\n const filteredQueries = this.recentQueriesList.state.queries\n .filter((recentQuery) =>\n recentQuery.toLowerCase().startsWith(query.toLowerCase())\n )\n .slice(0, max);\n\n const suggestionElements: SearchBoxSuggestionElement[] =\n filteredQueries.map((value) => this.renderItem(value));\n if (suggestionElements.length) {\n suggestionElements.unshift(this.renderClear());\n }\n\n return suggestionElements;\n }\n\n private renderClear(): SearchBoxSuggestionElement {\n const partialItem = getPartialRecentQueryClearElement(this.bindings.i18n);\n\n return {\n ...partialItem,\n content: <RecentQueryClear i18n={this.bindings.i18n} />,\n onSelect: () => {\n this.recentQueriesList.clear();\n this.bindings.triggerSuggestions();\n },\n };\n }\n\n private renderItem(value: string): SearchBoxSuggestionElement {\n const query = this.bindings.searchBoxController.state.value;\n const partialItem = getPartialRecentQueryElement(value, this.bindings.i18n);\n return {\n ...partialItem,\n content: (\n <RecentQueriesContainer>\n <RecentQueryIcon icon={this.renderIcon()} />\n <RecentQueryText query={query} value={value} />\n </RecentQueriesContainer>\n ),\n\n onSelect: () => {\n if (this.bindings.isStandalone) {\n this.bindings.searchBoxController.updateText(value);\n this.bindings.searchBoxController.submit();\n return;\n }\n\n this.recentQueriesList.executeRecentQuery(\n this.recentQueriesList.state.queries.indexOf(value)\n );\n },\n };\n }\n\n public render() {\n if (this.error) {\n return (\n <atomic-component-error\n element={this.host}\n error={this.error}\n ></atomic-component-error>\n );\n }\n }\n}\n"],"version":3}
|
@@ -1,7 +0,0 @@
|
|
1
|
-
'use strict';
|
2
|
-
|
3
|
-
const Clock = `<svg fill="none" stroke="currentColor" stroke-linejoin="round" stroke-linecap="round" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><circle cx="8" cy="8" r="7.5"/><path d="m8.5 4.5v4"/><path d="m10.3066 10.1387-1.80932-1.5768"/></svg>`;
|
4
|
-
|
5
|
-
exports.Clock = Clock;
|
6
|
-
|
7
|
-
//# sourceMappingURL=clock-f03ff827.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"file":"clock-f03ff827.js","mappings":";;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
|
@@ -1,167 +0,0 @@
|
|
1
|
-
import { h, r as registerInstance, g as getElement } from './index-3f35faca.js';
|
2
|
-
import { HighlightUtils, buildRecentQueriesList } from '@coveo/headless';
|
3
|
-
import { C as Clock } from './clock-add3e9a5.js';
|
4
|
-
import { S as SafeStorage, a as StorageItems } from './local-storage-utils-410269e6.js';
|
5
|
-
import { o as once } from './utils-7161486d.js';
|
6
|
-
import { e as encodeForDomAttribute } from './string-utils-5f5a23a8.js';
|
7
|
-
import { d as dispatchSearchBoxSuggestionsEvent } from './suggestions-events-b7a6f007.js';
|
8
|
-
import './purify-c7ebd240.js';
|
9
|
-
import './_commonjsHelpers-1789f0cf.js';
|
10
|
-
import './dom-utils-f6086cd3.js';
|
11
|
-
import './event-utils-8de63ec3.js';
|
12
|
-
|
13
|
-
const getPartialRecentQueryElement = (value, i18n) => {
|
14
|
-
return {
|
15
|
-
part: 'recent-query-item',
|
16
|
-
query: value,
|
17
|
-
key: `recent-${encodeForDomAttribute(value)}`,
|
18
|
-
ariaLabel: i18n.t('recent-query-suggestion-label', {
|
19
|
-
query: value,
|
20
|
-
interpolation: { escapeValue: false },
|
21
|
-
}),
|
22
|
-
};
|
23
|
-
};
|
24
|
-
const getPartialRecentQueryClearElement = (i18n) => {
|
25
|
-
return {
|
26
|
-
key: 'recent-query-clear',
|
27
|
-
ariaLabel: i18n.t('clear-recent-searches', {
|
28
|
-
interpolation: { escapeValue: false },
|
29
|
-
}),
|
30
|
-
part: 'recent-query-title-item suggestion-divider',
|
31
|
-
hideIfLast: true,
|
32
|
-
};
|
33
|
-
};
|
34
|
-
const RecentQueriesContainer = (_, children) => {
|
35
|
-
return (h("div", { part: "recent-query-content", class: "flex items-center text-left break-all" }, children));
|
36
|
-
};
|
37
|
-
const RecentQueryIcon = ({ icon, }) => {
|
38
|
-
return (h("atomic-icon", { part: "recent-query-icon", icon: icon, class: "mr-2 h-4 w-4 shrink-0" }));
|
39
|
-
};
|
40
|
-
const RecentQueryText = ({ query, value, }) => {
|
41
|
-
if (query === '') {
|
42
|
-
return (h("span", { part: "recent-query-text", class: "line-clamp-2 break-all" }, value));
|
43
|
-
}
|
44
|
-
return (h("span", { part: "recent-query-text", class: "line-clamp-2 break-all", innerHTML: HighlightUtils.highlightString({
|
45
|
-
content: value,
|
46
|
-
openingDelimiter: '<span part="recent-query-text-highlight" class="font-bold">',
|
47
|
-
closingDelimiter: '</span>',
|
48
|
-
highlights: [
|
49
|
-
{
|
50
|
-
offset: query.length,
|
51
|
-
length: value.length - query.length,
|
52
|
-
},
|
53
|
-
],
|
54
|
-
}) }));
|
55
|
-
};
|
56
|
-
const RecentQueryClear = ({ i18n, }) => {
|
57
|
-
return (h("div", { part: "recent-query-title-content", class: "flex w-full justify-between" },
|
58
|
-
h("span", { class: "font-bold", part: "recent-query-title" }, i18n.t('recent-searches')),
|
59
|
-
h("span", { part: "recent-query-clear" }, i18n.t('clear'))));
|
60
|
-
};
|
61
|
-
|
62
|
-
const AtomicSearchBoxRecentQueries = class {
|
63
|
-
constructor(hostRef) {
|
64
|
-
registerInstance(this, hostRef);
|
65
|
-
/**
|
66
|
-
* The maximum number of suggestions that will be displayed if the user has typed something into the input field.
|
67
|
-
*/
|
68
|
-
this.maxWithQuery = 3;
|
69
|
-
this.warnUser = once(() => this.bindings.engine.logger.warn('Because analytics are disabled, the recent queries feature is deactivated.'));
|
70
|
-
this.error = undefined;
|
71
|
-
this.icon = undefined;
|
72
|
-
this.maxWithQuery = 3;
|
73
|
-
this.maxWithoutQuery = undefined;
|
74
|
-
}
|
75
|
-
componentWillLoad() {
|
76
|
-
try {
|
77
|
-
dispatchSearchBoxSuggestionsEvent((bindings) => {
|
78
|
-
this.bindings = bindings;
|
79
|
-
return this.initialize();
|
80
|
-
}, this.host, ['atomic-search-box']);
|
81
|
-
}
|
82
|
-
catch (error) {
|
83
|
-
this.error = error;
|
84
|
-
}
|
85
|
-
}
|
86
|
-
renderIcon() {
|
87
|
-
return this.icon || Clock;
|
88
|
-
}
|
89
|
-
initialize() {
|
90
|
-
this.storage = new SafeStorage();
|
91
|
-
this.recentQueriesList = buildRecentQueriesList(this.bindings.engine, {
|
92
|
-
initialState: { queries: this.retrieveLocalStorage() },
|
93
|
-
options: { maxLength: 1000, clearFilters: this.bindings.clearFilters },
|
94
|
-
});
|
95
|
-
this.recentQueriesList.subscribe(() => this.updateLocalStorage());
|
96
|
-
return {
|
97
|
-
position: Array.from(this.host.parentNode.children).indexOf(this.host),
|
98
|
-
renderItems: () => this.renderItems(),
|
99
|
-
};
|
100
|
-
}
|
101
|
-
retrieveLocalStorage() {
|
102
|
-
return this.storage.getParsedJSON(StorageItems.RECENT_QUERIES, []);
|
103
|
-
}
|
104
|
-
updateLocalStorage() {
|
105
|
-
if (!this.recentQueriesList.state.analyticsEnabled) {
|
106
|
-
return this.disableFeature();
|
107
|
-
}
|
108
|
-
return this.storage.setJSON(StorageItems.RECENT_QUERIES, this.recentQueriesList.state.queries);
|
109
|
-
}
|
110
|
-
disableFeature() {
|
111
|
-
this.warnUser();
|
112
|
-
this.storage.removeItem(StorageItems.RECENT_QUERIES);
|
113
|
-
}
|
114
|
-
renderItems() {
|
115
|
-
if (!this.recentQueriesList.state.analyticsEnabled) {
|
116
|
-
return [];
|
117
|
-
}
|
118
|
-
const query = this.bindings.searchBoxController.state.value;
|
119
|
-
const hasQuery = query !== '';
|
120
|
-
const max = hasQuery ? this.maxWithQuery : this.maxWithoutQuery;
|
121
|
-
const filteredQueries = this.recentQueriesList.state.queries
|
122
|
-
.filter((recentQuery) => recentQuery.toLowerCase().startsWith(query.toLowerCase()))
|
123
|
-
.slice(0, max);
|
124
|
-
const suggestionElements = filteredQueries.map((value) => this.renderItem(value));
|
125
|
-
if (suggestionElements.length) {
|
126
|
-
suggestionElements.unshift(this.renderClear());
|
127
|
-
}
|
128
|
-
return suggestionElements;
|
129
|
-
}
|
130
|
-
renderClear() {
|
131
|
-
const partialItem = getPartialRecentQueryClearElement(this.bindings.i18n);
|
132
|
-
return {
|
133
|
-
...partialItem,
|
134
|
-
content: h(RecentQueryClear, { i18n: this.bindings.i18n }),
|
135
|
-
onSelect: () => {
|
136
|
-
this.recentQueriesList.clear();
|
137
|
-
this.bindings.triggerSuggestions();
|
138
|
-
},
|
139
|
-
};
|
140
|
-
}
|
141
|
-
renderItem(value) {
|
142
|
-
const query = this.bindings.searchBoxController.state.value;
|
143
|
-
const partialItem = getPartialRecentQueryElement(value, this.bindings.i18n);
|
144
|
-
return {
|
145
|
-
...partialItem,
|
146
|
-
content: (h(RecentQueriesContainer, null, h(RecentQueryIcon, { icon: this.renderIcon() }), h(RecentQueryText, { query: query, value: value }))),
|
147
|
-
onSelect: () => {
|
148
|
-
if (this.bindings.isStandalone) {
|
149
|
-
this.bindings.searchBoxController.updateText(value);
|
150
|
-
this.bindings.searchBoxController.submit();
|
151
|
-
return;
|
152
|
-
}
|
153
|
-
this.recentQueriesList.executeRecentQuery(this.recentQueriesList.state.queries.indexOf(value));
|
154
|
-
},
|
155
|
-
};
|
156
|
-
}
|
157
|
-
render() {
|
158
|
-
if (this.error) {
|
159
|
-
return (h("atomic-component-error", { key: 'e240230fed71d8dac541882bfc8efaf87405c966', element: this.host, error: this.error }));
|
160
|
-
}
|
161
|
-
}
|
162
|
-
get host() { return getElement(this); }
|
163
|
-
};
|
164
|
-
|
165
|
-
export { AtomicSearchBoxRecentQueries as atomic_search_box_recent_queries };
|
166
|
-
|
167
|
-
//# sourceMappingURL=atomic-search-box-recent-queries.entry.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"file":"atomic-search-box-recent-queries.entry.js","mappings":"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","names":[],"sources":["src/components/common/suggestions/stencil-recent-queries.tsx","src/components/search/search-box-suggestions/atomic-search-box-recent-queries/atomic-search-box-recent-queries.tsx"],"sourcesContent":["import {HighlightUtils} from '@coveo/headless';\nimport {FunctionalComponent, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport {encodeForDomAttribute} from '../../../utils/string-utils';\nimport {SearchBoxSuggestionElement} from './suggestions-types';\n\nexport const getPartialRecentQueryElement = (\n value: string,\n i18n: i18n\n): Pick<SearchBoxSuggestionElement, 'ariaLabel' | 'key' | 'query' | 'part'> => {\n return {\n part: 'recent-query-item',\n query: value,\n key: `recent-${encodeForDomAttribute(value)}`,\n ariaLabel: i18n.t('recent-query-suggestion-label', {\n query: value,\n interpolation: {escapeValue: false},\n }),\n };\n};\n\nexport const getPartialRecentQueryClearElement = (\n i18n: i18n\n): Pick<\n SearchBoxSuggestionElement,\n 'ariaLabel' | 'key' | 'part' | 'hideIfLast'\n> => {\n return {\n key: 'recent-query-clear',\n ariaLabel: i18n.t('clear-recent-searches', {\n interpolation: {escapeValue: false},\n }),\n part: 'recent-query-title-item suggestion-divider',\n hideIfLast: true,\n };\n};\n\nexport const RecentQueriesContainer: FunctionalComponent = (_, children) => {\n return (\n <div\n part=\"recent-query-content\"\n class=\"flex items-center text-left break-all\"\n >\n {children}\n </div>\n );\n};\n\ninterface RecentQueryIconProps {\n icon: string;\n}\n\nexport const RecentQueryIcon: FunctionalComponent<RecentQueryIconProps> = ({\n icon,\n}) => {\n return (\n <atomic-icon\n part=\"recent-query-icon\"\n icon={icon}\n class=\"mr-2 h-4 w-4 shrink-0\"\n ></atomic-icon>\n );\n};\n\ninterface RecentQueryTextProps {\n query: string;\n value: string;\n}\n\nexport const RecentQueryText: FunctionalComponent<RecentQueryTextProps> = ({\n query,\n value,\n}) => {\n if (query === '') {\n return (\n <span part=\"recent-query-text\" class=\"line-clamp-2 break-all\">\n {value}\n </span>\n );\n }\n return (\n <span\n part=\"recent-query-text\"\n class=\"line-clamp-2 break-all\"\n innerHTML={HighlightUtils.highlightString({\n content: value,\n openingDelimiter:\n '<span part=\"recent-query-text-highlight\" class=\"font-bold\">',\n closingDelimiter: '</span>',\n highlights: [\n {\n offset: query.length,\n length: value.length - query.length,\n },\n ],\n })}\n ></span>\n );\n};\n\ninterface RecentQueryClearProps {\n i18n: i18n;\n}\n\nexport const RecentQueryClear: FunctionalComponent<RecentQueryClearProps> = ({\n i18n,\n}) => {\n return (\n <div part=\"recent-query-title-content\" class=\"flex w-full justify-between\">\n <span class=\"font-bold\" part=\"recent-query-title\">\n {i18n.t('recent-searches')}\n </span>\n <span part=\"recent-query-clear\">{i18n.t('clear')}</span>\n </div>\n );\n};\n","import {\n buildRecentQueriesList,\n RecentQueriesList,\n SearchBox,\n} from '@coveo/headless';\nimport {Component, Element, Prop, State, h} from '@stencil/core';\nimport Clock from '../../../../images/clock.svg';\nimport {SafeStorage, StorageItems} from '../../../../utils/local-storage-utils';\nimport {once} from '../../../../utils/utils';\nimport {\n getPartialRecentQueryClearElement,\n getPartialRecentQueryElement,\n RecentQueriesContainer,\n RecentQueryClear,\n RecentQueryIcon,\n RecentQueryText,\n} from '../../../common/suggestions/stencil-recent-queries';\nimport {\n dispatchSearchBoxSuggestionsEvent,\n} from '../../../common/suggestions/suggestions-events';\nimport type {\n SearchBoxSuggestionElement,\n SearchBoxSuggestions,\n SearchBoxSuggestionsBindings,\n} from '../../../common/suggestions/suggestions-types';\nimport {Bindings} from '../../atomic-search-interface/atomic-search-interface';\n\n/**\n * The `atomic-search-box-recent-queries` component can be added as a child of an `atomic-search-box` component, allowing for the configuration of recent query suggestions.\n */\n@Component({\n tag: 'atomic-search-box-recent-queries',\n shadow: true,\n})\nexport class AtomicSearchBoxRecentQueries {\n private bindings!: SearchBoxSuggestionsBindings<SearchBox, Bindings>;\n private recentQueriesList!: RecentQueriesList;\n private storage!: SafeStorage;\n\n @Element() private host!: HTMLElement;\n\n @State() public error!: Error;\n\n /**\n * The SVG icon to display.\n *\n * - Use a value that starts with `http://`, `https://`, `./`, or `../`, to fetch and display an icon from a given location.\n * - Use a value that starts with `assets://`, to display an icon from the Atomic package.\n * - Use a stringified SVG to display it directly.\n */\n @Prop() public icon?: string;\n\n /**\n * The maximum number of suggestions that will be displayed if the user has typed something into the input field.\n */\n @Prop({reflect: true}) public maxWithQuery = 3;\n /**\n * The maximum number of suggestions that will be displayed initially when the input field is empty.\n */\n @Prop({reflect: true}) public maxWithoutQuery?: number;\n\n componentWillLoad() {\n try {\n dispatchSearchBoxSuggestionsEvent<SearchBox, Bindings>(\n (bindings) => {\n this.bindings = bindings;\n return this.initialize();\n },\n this.host,\n ['atomic-search-box']\n );\n } catch (error) {\n this.error = error as Error;\n }\n }\n\n private renderIcon() {\n return this.icon || Clock;\n }\n\n private initialize(): SearchBoxSuggestions {\n this.storage = new SafeStorage();\n this.recentQueriesList = buildRecentQueriesList(this.bindings.engine, {\n initialState: {queries: this.retrieveLocalStorage()},\n options: {maxLength: 1000, clearFilters: this.bindings.clearFilters},\n });\n\n this.recentQueriesList.subscribe(() => this.updateLocalStorage());\n\n return {\n position: Array.from(this.host.parentNode!.children).indexOf(this.host),\n renderItems: () => this.renderItems(),\n };\n }\n\n private retrieveLocalStorage() {\n return this.storage.getParsedJSON(StorageItems.RECENT_QUERIES, []);\n }\n\n private updateLocalStorage() {\n if (!this.recentQueriesList.state.analyticsEnabled) {\n return this.disableFeature();\n }\n\n return this.storage.setJSON(\n StorageItems.RECENT_QUERIES,\n this.recentQueriesList.state.queries\n );\n }\n\n private warnUser = once(() =>\n this.bindings.engine.logger.warn(\n 'Because analytics are disabled, the recent queries feature is deactivated.'\n )\n );\n\n private disableFeature() {\n this.warnUser();\n this.storage.removeItem(StorageItems.RECENT_QUERIES);\n }\n\n private renderItems(): SearchBoxSuggestionElement[] {\n if (!this.recentQueriesList.state.analyticsEnabled) {\n return [];\n }\n\n const query = this.bindings.searchBoxController.state.value;\n const hasQuery = query !== '';\n const max = hasQuery ? this.maxWithQuery : this.maxWithoutQuery;\n const filteredQueries = this.recentQueriesList.state.queries\n .filter((recentQuery) =>\n recentQuery.toLowerCase().startsWith(query.toLowerCase())\n )\n .slice(0, max);\n\n const suggestionElements: SearchBoxSuggestionElement[] =\n filteredQueries.map((value) => this.renderItem(value));\n if (suggestionElements.length) {\n suggestionElements.unshift(this.renderClear());\n }\n\n return suggestionElements;\n }\n\n private renderClear(): SearchBoxSuggestionElement {\n const partialItem = getPartialRecentQueryClearElement(this.bindings.i18n);\n\n return {\n ...partialItem,\n content: <RecentQueryClear i18n={this.bindings.i18n} />,\n onSelect: () => {\n this.recentQueriesList.clear();\n this.bindings.triggerSuggestions();\n },\n };\n }\n\n private renderItem(value: string): SearchBoxSuggestionElement {\n const query = this.bindings.searchBoxController.state.value;\n const partialItem = getPartialRecentQueryElement(value, this.bindings.i18n);\n return {\n ...partialItem,\n content: (\n <RecentQueriesContainer>\n <RecentQueryIcon icon={this.renderIcon()} />\n <RecentQueryText query={query} value={value} />\n </RecentQueriesContainer>\n ),\n\n onSelect: () => {\n if (this.bindings.isStandalone) {\n this.bindings.searchBoxController.updateText(value);\n this.bindings.searchBoxController.submit();\n return;\n }\n\n this.recentQueriesList.executeRecentQuery(\n this.recentQueriesList.state.queries.indexOf(value)\n );\n },\n };\n }\n\n public render() {\n if (this.error) {\n return (\n <atomic-component-error\n element={this.host}\n error={this.error}\n ></atomic-component-error>\n );\n }\n }\n}\n"],"version":3}
|
@@ -1,5 +0,0 @@
|
|
1
|
-
const Clock = `<svg fill="none" stroke="currentColor" stroke-linejoin="round" stroke-linecap="round" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><circle cx="8" cy="8" r="7.5"/><path d="m8.5 4.5v4"/><path d="m10.3066 10.1387-1.80932-1.5768"/></svg>`;
|
2
|
-
|
3
|
-
export { Clock as C };
|
4
|
-
|
5
|
-
//# sourceMappingURL=clock-add3e9a5.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"file":"clock-add3e9a5.js","mappings":";;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|