@coveo/atomic 3.33.8-pre.a63ab7ef87 → 3.33.8-pre.a6ca64b34f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/atomic/_atomic.esm.js +1 -1
- package/dist/atomic/atomic.esm.js.map +1 -1
- package/dist/atomic/components/_index.d.ts +0 -2
- package/dist/atomic/components/_index.js +2 -2
- 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 +3 -4
- 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-instant-results.js +2 -2
- package/dist/atomic/components/atomic-search-box-instant-results.js.map +1 -1
- package/dist/atomic/components/atomic-search-box-query-suggestions2.js +2 -2
- package/dist/atomic/components/atomic-search-box-query-suggestions2.js.map +1 -1
- package/dist/atomic/components/atomic-search-box.js +7 -14
- package/dist/atomic/components/atomic-search-box.js.map +1 -1
- package/dist/atomic/components/atomic-smart-snippet-feedback-modal2.js +2 -2
- package/dist/atomic/components/atomic-suggestion-renderer2.js +1 -1
- package/dist/atomic/components/atomic-suggestion-renderer2.js.map +1 -1
- package/dist/atomic/components/atomic-tab-manager.js +1 -1
- package/dist/atomic/components/clock.js +2 -2
- package/dist/atomic/components/components/commerce/atomic-commerce-search-box/atomic-commerce-search-box.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-commerce-search-box-instant-products/atomic-commerce-search-box-instant-products.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-commerce-search-box-query-suggestions/atomic-commerce-search-box-query-suggestions.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-commerce-search-box-recent-queries/atomic-commerce-search-box-recent-queries.js +1 -1
- package/dist/atomic/components/components/common/atomic-modal/atomic-modal.js +0 -2
- package/dist/atomic/components/components/common/suggestions/suggestion-manager.js +1 -1
- package/dist/atomic/components/components/common/suggestions/{suggestions-common.js → suggestions-events.js} +16 -18
- package/dist/atomic/components/components/common/suggestions/suggestions-types.js +1 -0
- package/dist/atomic/components/components/common/suggestions/suggestions-utils.js +18 -0
- package/dist/atomic/components/components/search/atomic-search-box-recent-queries/atomic-search-box-recent-queries.js +144 -0
- package/dist/atomic/components/components/search/index.js +1 -0
- package/dist/atomic/components/components/search/lazy-index.js +1 -0
- package/dist/atomic/components/global/environment.js +1 -1
- package/dist/atomic/components/stencil-query-suggestions.js.map +1 -1
- package/dist/atomic/components/stencil-suggestion-manager.js +20 -2
- package/dist/atomic/components/stencil-suggestion-manager.js.map +1 -1
- package/dist/atomic/components/{suggestions-common.js → suggestions-events.js} +18 -20
- package/dist/atomic/components/suggestions-events.js.map +1 -0
- package/dist/atomic/index.esm.js +1 -1
- package/dist/atomic/index.esm.js.map +1 -1
- package/dist/atomic/p-0a051b8d.js +2 -0
- package/dist/atomic/p-0a051b8d.js.map +1 -0
- package/dist/atomic/p-16f4ce98.js +2 -0
- package/dist/atomic/p-16f4ce98.js.map +1 -0
- package/dist/atomic/{p-8867af82.entry.js → p-26a51a77.entry.js} +2 -2
- 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-aa2a81fd.entry.js → p-39e63678.entry.js} +2 -2
- package/dist/atomic/{p-bf41fa4b.entry.js → p-3a5257b5.entry.js} +2 -2
- package/dist/atomic/p-4b7a19db.js +2 -0
- package/dist/atomic/p-4b7a19db.js.map +1 -0
- package/dist/atomic/{p-6e6d686e.entry.js → p-7383fd32.entry.js} +2 -2
- package/dist/atomic/{p-ac6028fa.js → p-82cda72d.js} +2 -2
- package/dist/atomic/{p-187c3a74.entry.js → p-9187a339.entry.js} +2 -2
- package/dist/atomic/{p-b7cfb454.entry.js → p-ad0f197a.entry.js} +2 -2
- package/dist/atomic/{p-7a625c7e.entry.js → p-ae98c582.entry.js} +2 -2
- package/dist/atomic/p-af93b44c.js.map +1 -1
- package/dist/atomic/{p-6329ff94.entry.js → p-ba4bf29f.entry.js} +2 -2
- package/dist/atomic/{p-3d847e45.entry.js → p-c88a3d2d.entry.js} +2 -2
- package/dist/atomic/p-c88a3d2d.entry.js.map +1 -0
- package/dist/atomic/{p-36e71b99.entry.js → p-d0f47b33.entry.js} +2 -2
- package/dist/atomic/p-d0f47b33.entry.js.map +1 -0
- package/dist/atomic/{p-c280cd05.js → p-e1cc5150.js} +1 -1
- package/dist/atomic/{p-aa4224ea.entry.js → p-fbfe913d.entry.js} +2 -2
- package/dist/atomic/p-fbfe913d.entry.js.map +1 -0
- package/dist/cjs/_index.cjs.js +5 -2
- package/dist/cjs/_loader.cjs.js +1 -1
- package/dist/cjs/{analytics-config-1d91a49a.js → analytics-config-4c6d87cf.js} +2 -2
- package/dist/cjs/{analytics-config-1d91a49a.js.map → analytics-config-4c6d87cf.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 +5 -5
- 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-instant-results.cjs.entry.js +3 -3
- package/dist/cjs/atomic-search-box-instant-results.cjs.entry.js.map +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-box.cjs.entry.js +7 -7
- package/dist/cjs/atomic-search-box.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-search-interface.cjs.entry.js +1 -1
- package/dist/cjs/atomic-smart-snippet-feedback-modal.cjs.entry.js +2 -2
- package/dist/cjs/atomic-suggestion-renderer.cjs.entry.js +1 -1
- package/dist/cjs/atomic-suggestion-renderer.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-tab-manager.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/index.cjs.js.map +1 -1
- package/dist/cjs/stencil-query-suggestions-03268ecc.js.map +1 -1
- package/dist/cjs/{stencil-suggestion-manager-c0878ef2.js → stencil-suggestion-manager-2cba6d69.js} +4 -4
- package/dist/cjs/{stencil-suggestion-manager-c0878ef2.js.map → stencil-suggestion-manager-2cba6d69.js.map} +1 -1
- package/dist/cjs/{suggestions-common-5097a362.js → suggestions-events-63dd0640.js} +17 -21
- package/dist/cjs/suggestions-events-63dd0640.js.map +1 -0
- package/dist/cjs/suggestions-utils-61000808.js +25 -0
- package/dist/cjs/suggestions-utils-61000808.js.map +1 -0
- package/dist/cjs/version.cjs.js +2 -2
- package/dist/esm/_index.js +2 -1
- package/dist/esm/_loader.js +1 -1
- package/dist/esm/{analytics-config-4fd089ca.js → analytics-config-46d030a5.js} +2 -2
- package/dist/esm/{analytics-config-4fd089ca.js.map → analytics-config-46d030a5.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 +4 -4
- 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-instant-results.entry.js +2 -2
- package/dist/esm/atomic-search-box-instant-results.entry.js.map +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-box.entry.js +6 -6
- package/dist/esm/atomic-search-box.entry.js.map +1 -1
- package/dist/esm/atomic-search-interface.entry.js +1 -1
- package/dist/esm/atomic-smart-snippet-feedback-modal.entry.js +2 -2
- package/dist/esm/atomic-suggestion-renderer.entry.js +1 -1
- package/dist/esm/atomic-suggestion-renderer.entry.js.map +1 -1
- package/dist/esm/atomic-tab-manager.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/index.js.map +1 -1
- package/dist/esm/stencil-query-suggestions-5d6a46d7.js.map +1 -1
- package/dist/esm/{stencil-suggestion-manager-486094dd.js → stencil-suggestion-manager-376f83e8.js} +2 -2
- package/dist/esm/{stencil-suggestion-manager-486094dd.js.map → stencil-suggestion-manager-376f83e8.js.map} +1 -1
- package/dist/esm/{suggestions-common-2b20db26.js → suggestions-events-b7a6f007.js} +18 -20
- package/dist/esm/suggestions-events-b7a6f007.js.map +1 -0
- package/dist/esm/suggestions-utils-591559a0.js +22 -0
- package/dist/esm/suggestions-utils-591559a0.js.map +1 -0
- package/dist/esm/version.js +2 -2
- package/dist/types/components/commerce/atomic-commerce-search-box-instant-products/atomic-commerce-search-box-instant-products.d.ts +1 -1
- package/dist/types/components/commerce/atomic-commerce-search-box-query-suggestions/atomic-commerce-search-box-query-suggestions.d.ts +1 -1
- package/dist/types/components/commerce/atomic-commerce-search-box-recent-queries/atomic-commerce-search-box-recent-queries.d.ts +1 -1
- package/dist/types/components/common/atomic-suggestion-renderer/atomic-suggestion-renderer.d.ts +1 -1
- package/dist/types/components/common/suggestions/instant-item.d.ts +1 -1
- package/dist/types/components/common/suggestions/query-suggestions.d.ts +1 -1
- package/dist/types/components/common/suggestions/recent-queries.d.ts +1 -1
- package/dist/types/components/common/suggestions/stencil-instant-item.d.ts +1 -1
- package/dist/types/components/common/suggestions/stencil-query-suggestions.d.ts +1 -1
- package/dist/types/components/common/suggestions/stencil-recent-queries.d.ts +1 -1
- package/dist/types/components/common/suggestions/stencil-suggestion-manager.d.ts +1 -1
- package/dist/types/components/common/suggestions/suggestion-manager.d.ts +1 -1
- package/dist/types/components/common/suggestions/suggestions-events.d.ts +14 -0
- package/dist/types/components/common/suggestions/{suggestions-common.d.ts → suggestions-types.d.ts} +6 -16
- package/dist/types/components/common/suggestions/suggestions-utils.d.ts +15 -0
- package/dist/types/components/search/atomic-search-box/atomic-search-box.d.ts +1 -1
- package/dist/types/components/search/{search-box-suggestions/atomic-search-box-recent-queries → atomic-search-box-recent-queries}/atomic-search-box-recent-queries.d.ts +10 -6
- package/dist/types/components/search/index.d.ts +1 -0
- package/dist/types/components/search/search-box-suggestions/atomic-search-box-instant-results/atomic-search-box-instant-results.d.ts +1 -1
- package/dist/types/components.d.ts +2 -51
- package/dist/types/decorators/types.d.ts +1 -1
- package/dist/types/index.d.ts +3 -1
- package/docs/atomic-docs.json +3 -100
- 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/suggestions-common.js.map +0 -1
- package/dist/atomic/p-29fd6768.js +0 -2
- package/dist/atomic/p-29fd6768.js.map +0 -1
- package/dist/atomic/p-36e71b99.entry.js.map +0 -1
- package/dist/atomic/p-3d847e45.entry.js.map +0 -1
- package/dist/atomic/p-7601c3de.js +0 -2
- package/dist/atomic/p-7601c3de.js.map +0 -1
- package/dist/atomic/p-8867af82.entry.js.map +0 -1
- package/dist/atomic/p-aa4224ea.entry.js.map +0 -1
- package/dist/atomic/p-c1bf43cf.entry.js +0 -2
- package/dist/atomic/p-c1bf43cf.entry.js.map +0 -1
- package/dist/cjs/atomic-search-box-query-suggestions_2.cjs.entry.js +0 -234
- package/dist/cjs/atomic-search-box-query-suggestions_2.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/cjs/suggestions-common-5097a362.js.map +0 -1
- package/dist/esm/atomic-search-box-query-suggestions_2.entry.js +0 -229
- package/dist/esm/atomic-search-box-query-suggestions_2.entry.js.map +0 -1
- package/dist/esm/clock-add3e9a5.js +0 -5
- package/dist/esm/clock-add3e9a5.js.map +0 -1
- package/dist/esm/suggestions-common-2b20db26.js.map +0 -1
- /package/dist/atomic/{p-aa2a81fd.entry.js.map → p-39e63678.entry.js.map} +0 -0
- /package/dist/atomic/{p-bf41fa4b.entry.js.map → p-3a5257b5.entry.js.map} +0 -0
- /package/dist/atomic/{p-6e6d686e.entry.js.map → p-7383fd32.entry.js.map} +0 -0
- /package/dist/atomic/{p-ac6028fa.js.map → p-82cda72d.js.map} +0 -0
- /package/dist/atomic/{p-187c3a74.entry.js.map → p-9187a339.entry.js.map} +0 -0
- /package/dist/atomic/{p-b7cfb454.entry.js.map → p-ad0f197a.entry.js.map} +0 -0
- /package/dist/atomic/{p-7a625c7e.entry.js.map → p-ae98c582.entry.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,5 +1,5 @@
|
|
1
1
|
import { r as registerInstance, h } from './index-3f35faca.js';
|
2
|
-
import { C as
|
2
|
+
import { C as Clockicon } from './clock-b1f5d7f7.js';
|
3
3
|
import { I as IconButton } from './stencil-iconButton-ba40899c.js';
|
4
4
|
import './stencil-button-1a29a5df.js';
|
5
5
|
import './event-utils-8de63ec3.js';
|
@@ -17,7 +17,7 @@ const AtomicInsightHistoryToggle = class {
|
|
17
17
|
this.tooltip = '';
|
18
18
|
}
|
19
19
|
render() {
|
20
|
-
return (h(IconButton, { key: '83098c524b4d1197222a045b7da60d10ced398bf', partPrefix: "insight-history-toggle", style: "outline-neutral", icon:
|
20
|
+
return (h(IconButton, { key: '83098c524b4d1197222a045b7da60d10ced398bf', partPrefix: "insight-history-toggle", style: "outline-neutral", icon: Clockicon, ariaLabel: "history", onClick: this.clickCallback, title: this.tooltip }));
|
21
21
|
}
|
22
22
|
};
|
23
23
|
AtomicInsightHistoryToggle.style = AtomicInsightHistoryToggleStyle0;
|
@@ -1 +1 @@
|
|
1
|
-
{"file":"atomic-insight-history-toggle.entry.js","mappings":";;;;;;;AAAA,MAAM,6BAA6B,GAAG,yqjEAAyqjE,CAAC;AAChtjE,yCAAe,6BAA6B;;MCW/B,0BAA0B;;;QACP,kBAAa,GAAe,SAAQ,CAAC;QAErC,YAAO,GAAG,EAAE,CAAC;6BAFe,SAAQ;uBAE1B,EAAE;;IAEnC,MAAM;QACX,QACE,EAAC,UAAU,qDACT,UAAU,EAAC,wBAAwB,EACnC,KAAK,EAAC,iBAAiB,EACvB,IAAI,
|
1
|
+
{"file":"atomic-insight-history-toggle.entry.js","mappings":";;;;;;;AAAA,MAAM,6BAA6B,GAAG,yqjEAAyqjE,CAAC;AAChtjE,yCAAe,6BAA6B;;MCW/B,0BAA0B;;;QACP,kBAAa,GAAe,SAAQ,CAAC;QAErC,YAAO,GAAG,EAAE,CAAC;6BAFe,SAAQ;uBAE1B,EAAE;;IAEnC,MAAM;QACX,QACE,EAAC,UAAU,qDACT,UAAU,EAAC,wBAAwB,EACnC,KAAK,EAAC,iBAAiB,EACvB,IAAI,EAAE,SAAS,EACf,SAAS,EAAC,SAAS,EACnB,OAAO,EAAE,IAAI,CAAC,aAAa,EAC3B,KAAK,EAAE,IAAI,CAAC,OAAO,GACnB,EACF;KACH;;;;;;","names":[],"sources":["src/components/insight/atomic-insight-history-toggle/atomic-insight-history-toggle.pcss?tag=atomic-insight-history-toggle&encapsulation=shadow","src/components/insight/atomic-insight-history-toggle/atomic-insight-history-toggle.tsx"],"sourcesContent":["@import '../../../global/global.pcss';\n","import {Component, h, Prop} from '@stencil/core';\nimport Clockicon from '../../../images/clock.svg';\nimport {IconButton} from '../../common/stencil-iconButton';\n\n/**\n * @internal\n */\n@Component({\n tag: 'atomic-insight-history-toggle',\n styleUrl: 'atomic-insight-history-toggle.pcss',\n shadow: true,\n})\nexport class AtomicInsightHistoryToggle {\n @Prop({mutable: true}) public clickCallback: () => void = () => {};\n\n @Prop({mutable: true}) public tooltip = '';\n\n public render() {\n return (\n <IconButton\n partPrefix=\"insight-history-toggle\"\n style=\"outline-neutral\"\n icon={Clockicon}\n ariaLabel=\"history\"\n onClick={this.clickCallback}\n title={this.tooltip}\n />\n );\n }\n}\n"],"version":3}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { r as registerInstance, s as setNonce, h, H as Host, g as getElement } from './index-3f35faca.js';
|
2
2
|
import { m as markParentAsReady } from './init-queue-fbe942c3.js';
|
3
3
|
import { buildResultsPerPage, loadFieldActions, buildInsightEngine } from '@coveo/headless/insight';
|
4
|
-
import { g as getNextAnalyticsConfig, a as augmentWithExternalMiddleware, b as augmentAnalyticsWithAtomicVersion, C as CommonAtomicInterfaceHelper, i as instance } from './analytics-config-
|
4
|
+
import { g as getNextAnalyticsConfig, a as augmentWithExternalMiddleware, b as augmentAnalyticsWithAtomicVersion, C as CommonAtomicInterfaceHelper, i as instance } from './analytics-config-46d030a5.js';
|
5
5
|
import { A as ArrayProp } from './props-utils-e97ad6bd.js';
|
6
6
|
import { D as DEFAULT_MOBILE_BREAKPOINT } from './replace-breakpoint-utils-7a336631.js';
|
7
7
|
import { u as unsetLoadingFlag, s as setLoadingFlag, r as registerFacet, g as getFacetElements, w as waitUntilAppLoaded, a as createBaseStore } from './store-015afa83.js';
|
@@ -1,12 +1,12 @@
|
|
1
1
|
import { r as registerInstance, h, 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-376f83e8.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-196a08f3.js';
|
7
7
|
import { r as randomID, h as isFocusingOut } from './utils-7161486d.js';
|
8
8
|
import { g as getPartialSearchBoxSuggestionElement, Q as QuerySuggestionText, a as QuerySuggestionIcon, b as QuerySuggestionContainer } from './stencil-query-suggestions-5d6a46d7.js';
|
9
|
-
import {
|
9
|
+
import { a as elementHasQuery } from './suggestions-utils-591559a0.js';
|
10
10
|
import './stencil-button-1a29a5df.js';
|
11
11
|
import './event-utils-8de63ec3.js';
|
12
12
|
import './stencil-button-style-0bc80040.js';
|
@@ -212,13 +212,13 @@ const AtomicInsightSearchBox = class {
|
|
212
212
|
: this.bindings.i18n.t('query-suggestions-unavailable');
|
213
213
|
}
|
214
214
|
render() {
|
215
|
-
return (h(SearchBoxWrapper, { key: '
|
215
|
+
return (h(SearchBoxWrapper, { key: '12f64d65feaa873b2ac0db08f604053dc66534e5', disabled: this.disableSearch, onFocusout: (event) => {
|
216
216
|
if (!isFocusingOut(event)) {
|
217
217
|
return;
|
218
218
|
}
|
219
219
|
this.suggestionManager.clearSuggestions();
|
220
220
|
this.isExpanded = false;
|
221
|
-
} }, h("atomic-icon", { key: '
|
221
|
+
} }, h("atomic-icon", { key: 'a29f3004b5aef3eb4bd09fc492bfb5852a55ec33', part: "submit-icon", icon: SearchSlimIcon, class: "my-auto mr-0 ml-4 h-4 w-4" }), h(SearchTextArea, { key: '1be4ab720b97fa0f4bcd26830a68bbd831bc059d', textAreaRef: this.textAreaRef, loading: this.searchBoxState.isLoading, ref: (el) => el && (this.textAreaRef = el), bindings: this.bindings, value: this.searchBoxState.value, ariaLabel: this.getSearchInputLabel(), placeholder: this.bindings.i18n.t('search-ellipsis'), onFocus: () => this.onFocus(), onKeyDown: (e) => this.onKeyDown(e), onClear: () => {
|
222
222
|
this.searchBox.clear();
|
223
223
|
this.triggerTextAreaChange('');
|
224
224
|
}, onInput: (e) => this.onInput(e.target.value) }), this.renderSuggestions()));
|
@@ -1 +1 @@
|
|
1
|
-
{"file":"atomic-insight-search-box.entry.js","mappings":"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","names":["buildInsightSearchBox"],"sources":["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 '../../../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 SearchBoxSuggestionElement,\n} from '../../common/suggestions/suggestions-common';\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"],"version":3}
|
1
|
+
{"file":"atomic-insight-search-box.entry.js","mappings":"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","names":["buildInsightSearchBox"],"sources":["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 '../../../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"],"version":3}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { r as registerInstance, h, g as getElement } from './index-3f35faca.js';
|
2
2
|
import { buildUserActions } from '@coveo/headless/insight';
|
3
|
-
import { C as
|
3
|
+
import { C as Clockicon } from './clock-b1f5d7f7.js';
|
4
4
|
import { I as InitializeBindings, B as BindStateToController } from './initialization-utils-ffbc4136.js';
|
5
5
|
import { I as IconButton } from './stencil-iconButton-ba40899c.js';
|
6
6
|
import './dom-utils-f6086cd3.js';
|
@@ -60,7 +60,7 @@ const AtomicInsightUserActionsToggle = class {
|
|
60
60
|
this.modalRef.excludedCustomActions = this.excludedCustomActions;
|
61
61
|
}
|
62
62
|
render() {
|
63
|
-
return (h(IconButton, { key: 'e146b9c160034349da8ffc4d416cc37547576bde', partPrefix: "insight-user-actions-toggle", style: "outline-neutral", icon:
|
63
|
+
return (h(IconButton, { key: 'e146b9c160034349da8ffc4d416cc37547576bde', partPrefix: "insight-user-actions-toggle", style: "outline-neutral", icon: Clockicon, ariaLabel: this.bindings.i18n.t('user-actions'), onClick: () => {
|
64
64
|
this.enableModal();
|
65
65
|
}, title: this.bindings.i18n.t('user-actions'), buttonRef: (button) => {
|
66
66
|
if (!button) {
|
@@ -1 +1 @@
|
|
1
|
-
{"file":"atomic-insight-user-actions-toggle.entry.js","mappings":";;;;;;;;;;;;AAAA,MAAM,iCAAiC,GAAG,yqjEAAyqjE,CAAC;AACptjE,6CAAe,iCAAiC;;;;;;;;;;;;MCuBnC,8BAA8B;;;;;;QAsB1B,0BAAqB,GAAa,EAAE,CAAC;;;;;qCAAH,EAAE;;IAE5C,UAAU;QACf,IAAI,CAAC,WAAW,GAAGA,gBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC/D,OAAO,EAAE;gBACP,kBAAkB,EAAE,IAAI,CAAC,sBAAsB;gBAC/C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;aAClD;SACF,CAAC,CAAC;KACJ;IAKO,WAAW;QACjB,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;KACvC;IAEO,SAAS;QACf,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;SACR;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,mCAAmC,CAAC,CAAC;QAE5E,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;KAClE;IAEM,MAAM;QACX,QACE,EAAC,UAAU,qDACT,UAAU,EAAC,6BAA6B,EACxC,KAAK,EAAC,iBAAiB,EACvB,IAAI,
|
1
|
+
{"file":"atomic-insight-user-actions-toggle.entry.js","mappings":";;;;;;;;;;;;AAAA,MAAM,iCAAiC,GAAG,yqjEAAyqjE,CAAC;AACptjE,6CAAe,iCAAiC;;;;;;;;;;;;MCuBnC,8BAA8B;;;;;;QAsB1B,0BAAqB,GAAa,EAAE,CAAC;;;;;qCAAH,EAAE;;IAE5C,UAAU;QACf,IAAI,CAAC,WAAW,GAAGA,gBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC/D,OAAO,EAAE;gBACP,kBAAkB,EAAE,IAAI,CAAC,sBAAsB;gBAC/C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;aAClD;SACF,CAAC,CAAC;KACJ;IAKO,WAAW;QACjB,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;KACvC;IAEO,SAAS;QACf,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;SACR;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,mCAAmC,CAAC,CAAC;QAE5E,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;KAClE;IAEM,MAAM;QACX,QACE,EAAC,UAAU,qDACT,UAAU,EAAC,6BAA6B,EACxC,KAAK,EAAC,iBAAiB,EACvB,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,EAC/C,OAAO,EAAE;gBACP,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB,EACD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,EAC3C,SAAS,EAAE,CAAC,MAA0B;gBACpC,IAAI,CAAC,MAAM,EAAE;oBACX,OAAO;iBACR;gBACD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;gBACxB,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB,GACD,EACF;KACH;;;AAvE4B;IAA5B,kBAAkB,EAAE;gEAAmC;AAIjD;IAFN,qBAAqB,CAAC,aAAa,CAAC;wEAEa;;;;;","names":["buildInsightUserActions"],"sources":["src/components/insight/user-actions/atomic-insight-user-actions-toggle/atomic-insight-user-actions-toggle.pcss?tag=atomic-insight-user-actions-toggle&encapsulation=shadow","src/components/insight/user-actions/atomic-insight-user-actions-toggle/atomic-insight-user-actions-toggle.tsx"],"sourcesContent":["@import '../../../../global/global.pcss';\n","import {\n buildUserActions as buildInsightUserActions,\n UserActions as InsightUserActions,\n UserActionsState as InsightUserActionsState,\n} from '@coveo/headless/insight';\nimport {Component, h, Prop, Element, State} from '@stencil/core';\nimport Clockicon from '../../../../images/clock.svg';\nimport {\n BindStateToController,\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {IconButton} from '../../../common/stencil-iconButton';\nimport {InsightBindings} from '../../atomic-insight-interface/atomic-insight-interface';\n\n/**\n * Internal component of the atomic-insight-interface\n * The `atomic-insight-user-actions-toggle` component displays a button that opens a modal containing the user actions timeline component.\n */\n@Component({\n tag: 'atomic-insight-user-actions-toggle',\n styleUrl: 'atomic-insight-user-actions-toggle.pcss',\n shadow: true,\n})\nexport class AtomicInsightUserActionsToggle\n implements InitializableComponent<InsightBindings>\n{\n @Element() public host!: HTMLElement;\n @InitializeBindings() public bindings!: InsightBindings;\n public userActions!: InsightUserActions;\n @BindStateToController('userActions')\n @State()\n public userActionsState!: InsightUserActionsState;\n @State() public error!: Error;\n\n /**\n * The ID of the user whose actions are being displayed.\n */\n @Prop() public userId!: string;\n /**\n * The date and time when the case was created. For example \"2024-01-01T00:00:00Z\"\n */\n @Prop() public ticketCreationDateTime!: string;\n /**\n * The names of custom events to exclude.\n */\n @Prop() public excludedCustomActions: string[] = [];\n\n public initialize() {\n this.userActions = buildInsightUserActions(this.bindings.engine, {\n options: {\n ticketCreationDate: this.ticketCreationDateTime,\n excludedCustomActions: this.excludedCustomActions,\n },\n });\n }\n\n private buttonRef?: HTMLButtonElement;\n private modalRef?: HTMLAtomicInsightUserActionsModalElement;\n\n private enableModal() {\n this.modalRef && (this.modalRef.isOpen = true);\n this.userActions.logOpenUserActions();\n }\n\n private loadModal() {\n if (this.modalRef) {\n return;\n }\n\n this.modalRef = document.createElement('atomic-insight-user-actions-modal');\n\n this.host.insertAdjacentElement('beforebegin', this.modalRef);\n this.modalRef.openButton = this.buttonRef;\n this.modalRef.userId = this.userId;\n this.modalRef.ticketCreationDateTime = this.ticketCreationDateTime;\n this.modalRef.excludedCustomActions = this.excludedCustomActions;\n }\n\n public render() {\n return (\n <IconButton\n partPrefix=\"insight-user-actions-toggle\"\n style=\"outline-neutral\"\n icon={Clockicon}\n ariaLabel={this.bindings.i18n.t('user-actions')}\n onClick={() => {\n this.enableModal();\n }}\n title={this.bindings.i18n.t('user-actions')}\n buttonRef={(button?: HTMLButtonElement) => {\n if (!button) {\n return;\n }\n this.buttonRef = button;\n this.loadModal();\n }}\n />\n );\n }\n}\n"],"version":3}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { r as registerInstance, s as setNonce, h, g as getElement } from './index-3f35faca.js';
|
2
2
|
import { m as markParentAsReady } from './init-queue-fbe942c3.js';
|
3
3
|
import { loadRecommendationActions, loadSearchConfigurationActions, EcommerceDefaultFieldsToInclude, loadFieldActions, buildRecommendationEngine } from '@coveo/headless/recommendation';
|
4
|
-
import { g as getNextAnalyticsConfig, c as augmentAnalyticsConfigWithDocument, d as augmentAnalyticsConfigWithAtomicVersion, a as augmentWithExternalMiddleware, b as augmentAnalyticsWithAtomicVersion, C as CommonAtomicInterfaceHelper, i as instance, m as mismatchedInterfaceAndEnginePropError } from './analytics-config-
|
4
|
+
import { g as getNextAnalyticsConfig, c as augmentAnalyticsConfigWithDocument, d as augmentAnalyticsConfigWithAtomicVersion, a as augmentWithExternalMiddleware, b as augmentAnalyticsWithAtomicVersion, C as CommonAtomicInterfaceHelper, i as instance, m as mismatchedInterfaceAndEnginePropError } from './analytics-config-46d030a5.js';
|
5
5
|
import { A as ArrayProp } from './props-utils-e97ad6bd.js';
|
6
6
|
import { u as unsetLoadingFlag, s as setLoadingFlag, a as createBaseStore } from './store-015afa83.js';
|
7
7
|
import './dayjs.min-d04628c6.js';
|
@@ -3,7 +3,7 @@ import { buildInteractiveInstantResult, buildInstantResults } from '@coveo/headl
|
|
3
3
|
import { e as encodeForDomAttribute } from './string-utils-5f5a23a8.js';
|
4
4
|
import { I as ItemTemplateProvider } from './item-template-provider-35bf0685.js';
|
5
5
|
import { a as getClassNameForButtonStyle } from './stencil-button-style-0bc80040.js';
|
6
|
-
import { d as dispatchSearchBoxSuggestionsEvent } from './suggestions-
|
6
|
+
import { d as dispatchSearchBoxSuggestionsEvent } from './suggestions-events-b7a6f007.js';
|
7
7
|
import './dom-utils-f6086cd3.js';
|
8
8
|
import './event-utils-8de63ec3.js';
|
9
9
|
|
@@ -171,7 +171,7 @@ const AtomicSearchBoxInstantResults = class {
|
|
171
171
|
}
|
172
172
|
render() {
|
173
173
|
if (this.error) {
|
174
|
-
return (h("atomic-component-error", { key: '
|
174
|
+
return (h("atomic-component-error", { key: '3ab4ee0f7ae26ac27bf62e580dae9856eec0849e', element: this.host, error: this.error }));
|
175
175
|
}
|
176
176
|
}
|
177
177
|
get host() { return getElement(this); }
|
@@ -1 +1 @@
|
|
1
|
-
{"file":"atomic-search-box-instant-results.entry.js","mappings":";;;;;;;;;AAMO,MAAM,4BAA4B,GAAG,CAC1C,IAAU,EACV,SAAiB,EACjB,YAAoB;IAEpB,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,kCAAkC,EAAE;YACpD,KAAK,EAAE,SAAS;YAChB,aAAa,EAAE,EAAC,WAAW,EAAE,KAAK,EAAC;SACpC,CAAC;QACF,GAAG,EAAE,kBAAkB,qBAAqB,CAAC,YAAY,CAAC,EAAE;QAC5D,IAAI,EAAE,sBAAsB;KAC7B,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,mCAAmC,GAAG,CACjD,IAAU;IAEV,OAAO;QACL,GAAG,EAAE,iCAAiC;QACtC,IAAI,EAAE,0BAA0B;QAChC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC;KACtC,CAAC;AACJ,CAAC,CAAC;AAKK,MAAM,wBAAwB,GAEjC,CAAC,EAAC,IAAI,EAAC;IACT,QACE,WACE,IAAI,EAAC,iCAAiC,EACtC,KAAK,EAAE,0BAA0B,CAAC,cAAc,CAAC,IAEhD,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CACvB,EACN;AACJ,CAAC;;MCGY,6BAA6B;;;QAGhC,YAAO,GAAa,EAAE,CAAC;QAGvB,YAAO,GAAsB,MAAM,CAAC;QAK3B,qBAAgB,GAAG,KAAK,CAAC;;;;QAkBZ,uBAAkB,GAAG,CAAC,CAAC;;;;QAIvB,YAAO,GAAuB,QAAQ,CAAC;;;;QAIvC,cAAS,GAAyB,MAAM,CAAC;;gCA1BnC,KAAK;kCAkBU,CAAC;uBAIQ,QAAQ;yBAIJ,MAAM;;;;;;;;;;;IAhBrD,MAAM,iBAAiB,CACtC,uBAA8C;QAE9C,IAAI,CAAC,qBAAqB,GAAG,uBAAuB,CAAC;KACtD;IAoBM,iBAAiB;QACtB,IAAI;YACF,iCAAiC,CAC/B,CAAC,QAAQ;gBACP,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACzB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;aAC1B,EACD,IAAI,CAAC,IAAI,EACT,CAAC,mBAAmB,CAAC,CACtB,CAAC;SACH;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,GAAG,KAAc,CAAC;SAC7B;KACF;IAEO,OAAO,CAAC,EAAe;QAC7B,MAAM,YAAY,GAChB,EAAE,CAAC,OAAO,KAAK,eAAe,GAAG,EAAE,GAAG,EAAE,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QAE3E,QACE,YAAY,EAAE,UAAU,EAAE,aAAa,CACrC,kCAAkC,CACnC,IAAI,IAAI,EACT;KACH;IAEO,eAAe,CAAC,EAAe,EAAE,WAAoB;QAC3D,MAAM,SAAS,GAAG,CAAC,KAAa,KAAK,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACtE,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEhD,WAAW,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC;QACnC,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,WAAW,IAAI,SAAS,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;QAE9C,OAAO,IAAI,CAAC;KACb;IAEO,WAAW;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE;YACrE,OAAO,EAAE,CAAC;SACX;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM;cACpD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO;cACjC,IAAI,CAAC,OAAO,CAAC;QAEjB,MAAM,QAAQ,GAAiC,OAAO,CAAC,GAAG,CACxD,CAAC,MAAc;YACb,MAAM,WAAW,GAAG,4BAA4B,CAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAClB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,EAChE,MAAM,CAAC,QAAQ,CAChB,CAAC;YACF,OAAO;gBACL,GAAG,WAAW;gBACd,OAAO,GACL,qBACE,GAAG,EAAE,kBAAkB,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAC/D,IAAI,EAAC,SAAS,EACd,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,6BAA6B,CAC9C,IAAI,CAAC,QAAQ,CAAC,MAAM,EACpB;wBACE,OAAO,EAAE,EAAC,MAAM,EAAC;qBAClB,CACF,EACD,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAC7D,eAAe,EAAE,KAAK,EACtB,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,GAC9B,CAClB;gBACD,QAAQ,EAAE,CAAC,CAAa;oBACtB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAqB,CAAC,CAAC;oBAEnD,IAAI,CAAC,IAAI,EAAE;wBACT,OAAO;qBACR;oBACD,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;iBACpD;aACF,CAAC;SACH,CACF,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnB,MAAM,WAAW,GAAG,mCAAmC,CACrD,IAAI,CAAC,QAAQ,CAAC,IAAI,CACnB,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC;gBACZ,GAAG,WAAW;gBACd,OAAO,EAAE,EAAC,wBAAwB,IAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAI;gBAC/D,QAAQ,EAAE;oBACR,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;oBACjC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,UAAU,CAC1C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAC5B,CAAC;oBACF,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC;iBAC5C;aACF,CAAC,CAAC;SACJ;QACD,OAAO,QAAQ,CAAC;KACjB;IAEM,UAAU;QACf,IAAI,CAAC,cAAc,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC9D,OAAO,EAAE;gBACP,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;aAC5C;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,GAAG,IAAI,oBAAoB,CAAC;YACnD,sBAAsB,EAAE,IAAI;YAC5B,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAC1B,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CACrD;YACD,2BAA2B,EAAE,MAAM,IAAI;YACvC,2BAA2B,EAAE,SAAQ;YACrC,mBAAmB,EAAE,MAAM,IAAI,CAAC,gBAAgB;YAChD,mBAAmB,EAAE,CAAC,KAAc;gBAClC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;aAC/B;YACD,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;QAEH,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YACvE,KAAK,EAAE,OAAO;YACd,sBAAsB,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACnC,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;aACtC;YACD,WAAW,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE;SACtC,CAAC;KACH;IAEO,sBAAsB;QAC5B,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC,MAAM;YAC7C,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAC9C;YACA,OAAO,CAAC,IAAI,CACV,4NAA4N,CAC7N,CAAC;SACH;QAED,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO;YAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;gBAChD,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;gBACxC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;oBACpB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;wBACxB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;qBAC9B;oBACD,WAAW,EAAE,CAAC;oBACd,OAAO,EAAE,CAAC;iBACX;aACF,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ;IAEM,MAAM;QACX,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,QACE,+EACE,OAAO,EAAE,IAAI,CAAC,IAAI,EAClB,KAAK,EAAE,IAAI,CAAC,KAAK,GACO,EAC1B;SACH;KACF;;;;;;","names":[],"sources":["src/components/common/suggestions/stencil-instant-item.tsx","src/components/search/search-box-suggestions/atomic-search-box-instant-results/atomic-search-box-instant-results.tsx"],"sourcesContent":["import {FunctionalComponent, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport {encodeForDomAttribute} from '../../../utils/string-utils';\nimport {getClassNameForButtonStyle} from '../stencil-button-style';\nimport {SearchBoxSuggestionElement} from './suggestions-common';\n\nexport const getPartialInstantItemElement = (\n i18n: i18n,\n itemTitle: string,\n itemUniqueId: string\n): Pick<SearchBoxSuggestionElement, 'ariaLabel' | 'key' | 'part'> => {\n return {\n ariaLabel: i18n.t('instant-results-suggestion-label', {\n title: itemTitle,\n interpolation: {escapeValue: false},\n }),\n key: `instant-result-${encodeForDomAttribute(itemUniqueId)}`,\n part: 'instant-results-item',\n };\n};\n\nexport const getPartialInstantItemShowAllElement = (\n i18n: i18n\n): Pick<SearchBoxSuggestionElement, 'key' | 'part' | 'ariaLabel'> => {\n return {\n key: 'instant-results-show-all-button',\n part: 'instant-results-show-all',\n ariaLabel: i18n.t('show-all-results'),\n };\n};\n\ninterface InstantItemShowAllButtonProps {\n i18n: i18n;\n}\nexport const InstantItemShowAllButton: FunctionalComponent<\n InstantItemShowAllButtonProps\n> = ({i18n}) => {\n return (\n <div\n part=\"instant-results-show-all-button\"\n class={getClassNameForButtonStyle('text-primary')}\n >\n {i18n.t('show-all-results')}\n </div>\n );\n};\n","import {\n buildInstantResults,\n buildInteractiveInstantResult,\n InstantResults,\n Result,\n SearchBox,\n} from '@coveo/headless';\nimport {Component, Element, State, h, Prop, Method} from '@stencil/core';\nimport {InitializableComponent} from '../../../../utils/initialization-utils';\nimport {encodeForDomAttribute} from '../../../../utils/string-utils';\nimport {ItemTemplateProvider} from '../../../common/item-list/item-template-provider';\nimport {ItemRenderingFunction} from '../../../common/item-list/stencil-item-list-common';\nimport {\n ItemDisplayDensity,\n ItemDisplayImageSize,\n ItemDisplayLayout,\n} from '../../../common/layout/display-options';\nimport {\n getPartialInstantItemElement,\n getPartialInstantItemShowAllElement,\n InstantItemShowAllButton,\n} from '../../../common/suggestions/stencil-instant-item';\nimport {\n dispatchSearchBoxSuggestionsEvent,\n SearchBoxSuggestionElement,\n SearchBoxSuggestions,\n SearchBoxSuggestionsBindings,\n} from '../../../common/suggestions/suggestions-common';\nimport {Bindings} from '../../atomic-search-interface/atomic-search-interface';\n\nexport type AriaLabelGenerator = (\n bindings: Bindings,\n result: Result\n) => string | undefined;\n\n/**\n * The `atomic-search-box-instant-results` component can be added as a child of an `atomic-search-box` component, allowing for the configuration of instant results behavior.\n *\n * This component does not support accessibility out-of-the-box. To do so, see [Instant Results Accessibility](https://docs.coveo.com/en/atomic/latest/usage/accessibility/#instant-results-accessibility).\n *\n * This component is not supported on mobile.\n *\n * @slot default - The default slot where the instant results are rendered.\n */\n@Component({\n tag: 'atomic-search-box-instant-results',\n shadow: true,\n})\nexport class AtomicSearchBoxInstantResults implements InitializableComponent {\n public bindings!: SearchBoxSuggestionsBindings<SearchBox, Bindings>;\n private itemRenderingFunction: ItemRenderingFunction;\n private results: Result[] = [];\n private itemTemplateProvider!: ItemTemplateProvider;\n private instantResults!: InstantResults;\n private display: ItemDisplayLayout = 'list';\n\n @Element() public host!: HTMLElement;\n\n @State() public error!: Error;\n @State() private templateHasError = false;\n\n /**\n * Sets a rendering function to bypass the standard HTML template mechanism for rendering results.\n * You can use this function while working with web frameworks that don't use plain HTML syntax, e.g., React, Angular or Vue.\n *\n * Do not use this method if you integrate Atomic in a plain HTML deployment.\n *\n * @param resultRenderingFunction\n */\n @Method() public async setRenderFunction(\n resultRenderingFunction: ItemRenderingFunction\n ) {\n this.itemRenderingFunction = resultRenderingFunction;\n }\n /**\n * The maximum number of results to show.\n */\n @Prop({reflect: true}) public maxResultsPerQuery = 4;\n /**\n * The spacing of various elements in the result list, including the gap between results, the gap between parts of a result, and the font sizes of different parts in a result.\n */\n @Prop({reflect: true}) public density: ItemDisplayDensity = 'normal';\n /**\n * The expected size of the image displayed in the results.\n */\n @Prop({reflect: true}) public imageSize: ItemDisplayImageSize = 'icon';\n /**\n * The callback to generate an [`aria-label`](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-label) for a given result so that accessibility tools can fully describe what's visually rendered by a result.\n *\n * By default, or if an empty string is returned, `result.title` is used.\n */\n @Prop() public ariaLabelGenerator?: AriaLabelGenerator;\n\n public 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 getLink(el: HTMLElement): HTMLElement | null {\n const atomicResult =\n el.tagName === 'ATOMIC-RESULT' ? el : el?.querySelector('atomic-result');\n\n return (\n atomicResult?.shadowRoot?.querySelector(\n 'atomic-result-link a:not([slot])'\n ) || null\n );\n }\n\n private handleLinkClick(el: HTMLElement, hasModifier: boolean) {\n const setTarget = (value: string) => el.setAttribute('target', value);\n const initialTarget = el.getAttribute('target');\n\n hasModifier && setTarget('_blank');\n el.click();\n hasModifier && setTarget(initialTarget || '');\n\n return true;\n }\n\n private renderItems(): SearchBoxSuggestionElement[] {\n if (!this.bindings.suggestedQuery() || this.bindings.store.isMobile()) {\n return [];\n }\n const results = this.instantResults.state.results.length\n ? this.instantResults.state.results\n : this.results;\n\n const elements: SearchBoxSuggestionElement[] = results.map(\n (result: Result) => {\n const partialItem = getPartialInstantItemElement(\n this.bindings.i18n,\n this.ariaLabelGenerator?.(this.bindings, result) || result.title,\n result.uniqueId\n );\n return {\n ...partialItem,\n content: (\n <atomic-result\n key={`instant-result-${encodeForDomAttribute(result.uniqueId)}`}\n part=\"outline\"\n result={result}\n interactiveResult={buildInteractiveInstantResult(\n this.bindings.engine,\n {\n options: {result},\n }\n )}\n display={this.display}\n density={this.density}\n imageSize={this.imageSize}\n content={this.itemTemplateProvider.getTemplateContent(result)}\n stopPropagation={false}\n renderingFunction={this.itemRenderingFunction}\n ></atomic-result>\n ),\n onSelect: (e: MouseEvent) => {\n const link = this.getLink(e.target as HTMLElement);\n\n if (!link) {\n return;\n }\n this.handleLinkClick(link, e.ctrlKey || e.metaKey);\n },\n };\n }\n );\n if (elements.length) {\n const partialItem = getPartialInstantItemShowAllElement(\n this.bindings.i18n\n );\n elements.push({\n ...partialItem,\n content: <InstantItemShowAllButton i18n={this.bindings.i18n} />,\n onSelect: () => {\n this.bindings.clearSuggestions();\n this.bindings.searchBoxController.updateText(\n this.instantResults.state.q\n );\n this.bindings.searchBoxController.submit();\n },\n });\n }\n return elements;\n }\n\n public initialize(): SearchBoxSuggestions {\n this.instantResults = buildInstantResults(this.bindings.engine, {\n options: {\n maxResultsPerQuery: this.maxResultsPerQuery,\n },\n });\n\n this.itemTemplateProvider = new ItemTemplateProvider({\n includeDefaultTemplate: true,\n templateElements: Array.from(\n this.host.querySelectorAll('atomic-result-template')\n ),\n getResultTemplateRegistered: () => true,\n setResultTemplateRegistered: () => {},\n getTemplateHasError: () => this.templateHasError,\n setTemplateHasError: (value: boolean) => {\n this.templateHasError = value;\n },\n bindings: this.bindings,\n });\n\n return {\n position: Array.from(this.host.parentNode!.children).indexOf(this.host),\n panel: 'right',\n onSuggestedQueryChange: (q) => {\n this.instantResults.updateQuery(q);\n return this.onSuggestedQueryChange();\n },\n renderItems: () => this.renderItems(),\n };\n }\n\n private onSuggestedQueryChange() {\n if (\n !this.bindings.getSuggestionElements().length &&\n !this.bindings.searchBoxController.state.value\n ) {\n console.warn(\n \"There doesn't seem to be any query suggestions configured. Make sure to include either an atomic-search-box-query-suggestions or atomic-search-box-recent-queries in your search box in order to see some instant results.\"\n );\n }\n\n return new Promise<void>((resolve) => {\n const unsubscribe = this.instantResults.subscribe(() => {\n const state = this.instantResults.state;\n if (!state.isLoading) {\n if (state.results.length) {\n this.results = state.results;\n }\n unsubscribe();\n resolve();\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
|
+
{"file":"atomic-search-box-instant-results.entry.js","mappings":"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","names":[],"sources":["src/components/common/suggestions/stencil-instant-item.tsx","src/components/search/search-box-suggestions/atomic-search-box-instant-results/atomic-search-box-instant-results.tsx"],"sourcesContent":["import {FunctionalComponent, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport {encodeForDomAttribute} from '../../../utils/string-utils';\nimport {getClassNameForButtonStyle} from '../stencil-button-style';\nimport {SearchBoxSuggestionElement} from './suggestions-types';\n\nexport const getPartialInstantItemElement = (\n i18n: i18n,\n itemTitle: string,\n itemUniqueId: string\n): Pick<SearchBoxSuggestionElement, 'ariaLabel' | 'key' | 'part'> => {\n return {\n ariaLabel: i18n.t('instant-results-suggestion-label', {\n title: itemTitle,\n interpolation: {escapeValue: false},\n }),\n key: `instant-result-${encodeForDomAttribute(itemUniqueId)}`,\n part: 'instant-results-item',\n };\n};\n\nexport const getPartialInstantItemShowAllElement = (\n i18n: i18n\n): Pick<SearchBoxSuggestionElement, 'key' | 'part' | 'ariaLabel'> => {\n return {\n key: 'instant-results-show-all-button',\n part: 'instant-results-show-all',\n ariaLabel: i18n.t('show-all-results'),\n };\n};\n\ninterface InstantItemShowAllButtonProps {\n i18n: i18n;\n}\nexport const InstantItemShowAllButton: FunctionalComponent<\n InstantItemShowAllButtonProps\n> = ({i18n}) => {\n return (\n <div\n part=\"instant-results-show-all-button\"\n class={getClassNameForButtonStyle('text-primary')}\n >\n {i18n.t('show-all-results')}\n </div>\n );\n};\n","import {\n buildInstantResults,\n buildInteractiveInstantResult,\n InstantResults,\n Result,\n SearchBox,\n} from '@coveo/headless';\nimport {Component, Element, State, h, Prop, Method} from '@stencil/core';\nimport {InitializableComponent} from '../../../../utils/initialization-utils';\nimport {encodeForDomAttribute} from '../../../../utils/string-utils';\nimport {ItemTemplateProvider} from '../../../common/item-list/item-template-provider';\nimport {ItemRenderingFunction} from '../../../common/item-list/stencil-item-list-common';\nimport {\n ItemDisplayDensity,\n ItemDisplayImageSize,\n ItemDisplayLayout,\n} from '../../../common/layout/display-options';\nimport {\n getPartialInstantItemElement,\n getPartialInstantItemShowAllElement,\n InstantItemShowAllButton,\n} from '../../../common/suggestions/stencil-instant-item';\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\nexport type AriaLabelGenerator = (\n bindings: Bindings,\n result: Result\n) => string | undefined;\n\n/**\n * The `atomic-search-box-instant-results` component can be added as a child of an `atomic-search-box` component, allowing for the configuration of instant results behavior.\n *\n * This component does not support accessibility out-of-the-box. To do so, see [Instant Results Accessibility](https://docs.coveo.com/en/atomic/latest/usage/accessibility/#instant-results-accessibility).\n *\n * This component is not supported on mobile.\n *\n * @slot default - The default slot where the instant results are rendered.\n */\n@Component({\n tag: 'atomic-search-box-instant-results',\n shadow: true,\n})\nexport class AtomicSearchBoxInstantResults implements InitializableComponent {\n public bindings!: SearchBoxSuggestionsBindings<SearchBox, Bindings>;\n private itemRenderingFunction: ItemRenderingFunction;\n private results: Result[] = [];\n private itemTemplateProvider!: ItemTemplateProvider;\n private instantResults!: InstantResults;\n private display: ItemDisplayLayout = 'list';\n\n @Element() public host!: HTMLElement;\n\n @State() public error!: Error;\n @State() private templateHasError = false;\n\n /**\n * Sets a rendering function to bypass the standard HTML template mechanism for rendering results.\n * You can use this function while working with web frameworks that don't use plain HTML syntax, e.g., React, Angular or Vue.\n *\n * Do not use this method if you integrate Atomic in a plain HTML deployment.\n *\n * @param resultRenderingFunction\n */\n @Method() public async setRenderFunction(\n resultRenderingFunction: ItemRenderingFunction\n ) {\n this.itemRenderingFunction = resultRenderingFunction;\n }\n /**\n * The maximum number of results to show.\n */\n @Prop({reflect: true}) public maxResultsPerQuery = 4;\n /**\n * The spacing of various elements in the result list, including the gap between results, the gap between parts of a result, and the font sizes of different parts in a result.\n */\n @Prop({reflect: true}) public density: ItemDisplayDensity = 'normal';\n /**\n * The expected size of the image displayed in the results.\n */\n @Prop({reflect: true}) public imageSize: ItemDisplayImageSize = 'icon';\n /**\n * The callback to generate an [`aria-label`](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-label) for a given result so that accessibility tools can fully describe what's visually rendered by a result.\n *\n * By default, or if an empty string is returned, `result.title` is used.\n */\n @Prop() public ariaLabelGenerator?: AriaLabelGenerator;\n\n public 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 getLink(el: HTMLElement): HTMLElement | null {\n const atomicResult =\n el.tagName === 'ATOMIC-RESULT' ? el : el?.querySelector('atomic-result');\n\n return (\n atomicResult?.shadowRoot?.querySelector(\n 'atomic-result-link a:not([slot])'\n ) || null\n );\n }\n\n private handleLinkClick(el: HTMLElement, hasModifier: boolean) {\n const setTarget = (value: string) => el.setAttribute('target', value);\n const initialTarget = el.getAttribute('target');\n\n hasModifier && setTarget('_blank');\n el.click();\n hasModifier && setTarget(initialTarget || '');\n\n return true;\n }\n\n private renderItems(): SearchBoxSuggestionElement[] {\n if (!this.bindings.suggestedQuery() || this.bindings.store.isMobile()) {\n return [];\n }\n const results = this.instantResults.state.results.length\n ? this.instantResults.state.results\n : this.results;\n\n const elements: SearchBoxSuggestionElement[] = results.map(\n (result: Result) => {\n const partialItem = getPartialInstantItemElement(\n this.bindings.i18n,\n this.ariaLabelGenerator?.(this.bindings, result) || result.title,\n result.uniqueId\n );\n return {\n ...partialItem,\n content: (\n <atomic-result\n key={`instant-result-${encodeForDomAttribute(result.uniqueId)}`}\n part=\"outline\"\n result={result}\n interactiveResult={buildInteractiveInstantResult(\n this.bindings.engine,\n {\n options: {result},\n }\n )}\n display={this.display}\n density={this.density}\n imageSize={this.imageSize}\n content={this.itemTemplateProvider.getTemplateContent(result)}\n stopPropagation={false}\n renderingFunction={this.itemRenderingFunction}\n ></atomic-result>\n ),\n onSelect: (e: MouseEvent) => {\n const link = this.getLink(e.target as HTMLElement);\n\n if (!link) {\n return;\n }\n this.handleLinkClick(link, e.ctrlKey || e.metaKey);\n },\n };\n }\n );\n if (elements.length) {\n const partialItem = getPartialInstantItemShowAllElement(\n this.bindings.i18n\n );\n elements.push({\n ...partialItem,\n content: <InstantItemShowAllButton i18n={this.bindings.i18n} />,\n onSelect: () => {\n this.bindings.clearSuggestions();\n this.bindings.searchBoxController.updateText(\n this.instantResults.state.q\n );\n this.bindings.searchBoxController.submit();\n },\n });\n }\n return elements;\n }\n\n public initialize(): SearchBoxSuggestions {\n this.instantResults = buildInstantResults(this.bindings.engine, {\n options: {\n maxResultsPerQuery: this.maxResultsPerQuery,\n },\n });\n\n this.itemTemplateProvider = new ItemTemplateProvider({\n includeDefaultTemplate: true,\n templateElements: Array.from(\n this.host.querySelectorAll('atomic-result-template')\n ),\n getResultTemplateRegistered: () => true,\n setResultTemplateRegistered: () => {},\n getTemplateHasError: () => this.templateHasError,\n setTemplateHasError: (value: boolean) => {\n this.templateHasError = value;\n },\n bindings: this.bindings,\n });\n\n return {\n position: Array.from(this.host.parentNode!.children).indexOf(this.host),\n panel: 'right',\n onSuggestedQueryChange: (q) => {\n this.instantResults.updateQuery(q);\n return this.onSuggestedQueryChange();\n },\n renderItems: () => this.renderItems(),\n };\n }\n\n private onSuggestedQueryChange() {\n if (\n !this.bindings.getSuggestionElements().length &&\n !this.bindings.searchBoxController.state.value\n ) {\n console.warn(\n \"There doesn't seem to be any query suggestions configured. Make sure to include either an atomic-search-box-query-suggestions or atomic-search-box-recent-queries in your search box in order to see some instant results.\"\n );\n }\n\n return new Promise<void>((resolve) => {\n const unsubscribe = this.instantResults.subscribe(() => {\n const state = this.instantResults.state;\n if (!state.isLoading) {\n if (state.results.length) {\n this.results = state.results;\n }\n unsubscribe();\n resolve();\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}
|
@@ -0,0 +1,72 @@
|
|
1
|
+
import { r as registerInstance, h, g as getElement } from './index-3f35faca.js';
|
2
|
+
import { loadQuerySuggestActions } from '@coveo/headless';
|
3
|
+
import { S as SearchIcon } from './search-64cc84a9.js';
|
4
|
+
import { g as getPartialSearchBoxSuggestionElement, Q as QuerySuggestionText, a as QuerySuggestionIcon, b as QuerySuggestionContainer } from './stencil-query-suggestions-5d6a46d7.js';
|
5
|
+
import { d as dispatchSearchBoxSuggestionsEvent } from './suggestions-events-b7a6f007.js';
|
6
|
+
import './string-utils-5f5a23a8.js';
|
7
|
+
import './dom-utils-f6086cd3.js';
|
8
|
+
import './event-utils-8de63ec3.js';
|
9
|
+
|
10
|
+
const AtomicSearchBoxQuerySuggestions = class {
|
11
|
+
constructor(hostRef) {
|
12
|
+
registerInstance(this, hostRef);
|
13
|
+
this.error = undefined;
|
14
|
+
this.icon = undefined;
|
15
|
+
this.maxWithQuery = undefined;
|
16
|
+
this.maxWithoutQuery = undefined;
|
17
|
+
}
|
18
|
+
componentWillLoad() {
|
19
|
+
try {
|
20
|
+
dispatchSearchBoxSuggestionsEvent((bindings) => {
|
21
|
+
this.bindings = bindings;
|
22
|
+
return this.initialize();
|
23
|
+
}, this.host, ['atomic-search-box']);
|
24
|
+
}
|
25
|
+
catch (error) {
|
26
|
+
this.error = error;
|
27
|
+
}
|
28
|
+
}
|
29
|
+
initialize() {
|
30
|
+
const engine = this.bindings.engine;
|
31
|
+
const { registerQuerySuggest, fetchQuerySuggestions } = loadQuerySuggestActions(engine);
|
32
|
+
engine.dispatch(registerQuerySuggest({
|
33
|
+
id: this.bindings.id,
|
34
|
+
count: this.bindings.numberOfQueries,
|
35
|
+
}));
|
36
|
+
return {
|
37
|
+
position: Array.from(this.host.parentNode.children).indexOf(this.host),
|
38
|
+
onInput: () => engine.dispatch(fetchQuerySuggestions({
|
39
|
+
id: this.bindings.id,
|
40
|
+
})),
|
41
|
+
renderItems: () => this.renderItems(),
|
42
|
+
};
|
43
|
+
}
|
44
|
+
renderItems() {
|
45
|
+
const hasQuery = this.bindings.searchBoxController.state.value !== '';
|
46
|
+
const max = hasQuery ? this.maxWithQuery : this.maxWithoutQuery;
|
47
|
+
return this.bindings.searchBoxController.state.suggestions
|
48
|
+
.slice(0, max)
|
49
|
+
.map((suggestion) => this.renderItem(suggestion));
|
50
|
+
}
|
51
|
+
renderItem(suggestion) {
|
52
|
+
const hasQuery = this.bindings.searchBoxController.state.value !== '';
|
53
|
+
const partialItem = getPartialSearchBoxSuggestionElement(suggestion, this.bindings.i18n);
|
54
|
+
return {
|
55
|
+
...partialItem,
|
56
|
+
content: (h(QuerySuggestionContainer, null, h(QuerySuggestionIcon, { icon: this.icon || SearchIcon, hasSuggestion: this.bindings.getSuggestions().length > 1 }), h(QuerySuggestionText, { suggestion: suggestion, hasQuery: hasQuery }))),
|
57
|
+
onSelect: () => {
|
58
|
+
this.bindings.searchBoxController.selectSuggestion(suggestion.rawValue);
|
59
|
+
},
|
60
|
+
};
|
61
|
+
}
|
62
|
+
render() {
|
63
|
+
if (this.error) {
|
64
|
+
return (h("atomic-component-error", { key: '818ed7b1734a6f2cbf721b1eb3fd03d020791e9e', element: this.host, error: this.error }));
|
65
|
+
}
|
66
|
+
}
|
67
|
+
get host() { return getElement(this); }
|
68
|
+
};
|
69
|
+
|
70
|
+
export { AtomicSearchBoxQuerySuggestions as atomic_search_box_query_suggestions };
|
71
|
+
|
72
|
+
//# sourceMappingURL=atomic-search-box-query-suggestions.entry.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"file":"atomic-search-box-query-suggestions.entry.js","mappings":";;;;;;;;;MA8Ba,+BAA+B;;;;;;;;IAwB1C,iBAAiB;QACf,IAAI;YACF,iCAAiC,CAC/B,CAAC,QAAQ;gBACP,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACzB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;aAC1B,EACD,IAAI,CAAC,IAAI,EACT,CAAC,mBAAmB,CAAC,CACtB,CAAC;SACH;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,GAAG,KAAc,CAAC;SAC7B;KACF;IAEO,UAAU;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAG3B,CAAC;QACH,MAAM,EAAC,oBAAoB,EAAE,qBAAqB,EAAC,GACjD,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAElC,MAAM,CAAC,QAAQ,CACb,oBAAoB,CAAC;YACnB,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;YACpB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe;SACrC,CAAC,CACH,CAAC;QAEF,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YACvE,OAAO,EAAE,MACP,MAAM,CAAC,QAAQ,CACb,qBAAqB,CAAC;gBACpB,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;aACrB,CAAC,CACH;YACH,WAAW,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE;SACtC,CAAC;KACH;IAEO,WAAW;QACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;QACtE,MAAM,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC;QAChE,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,WAAW;aACvD,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;aACb,GAAG,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;KACrD;IAEO,UAAU,CAAC,UAAsB;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;QACtE,MAAM,WAAW,GAAG,oCAAoC,CACtD,UAAU,EACV,IAAI,CAAC,QAAQ,CAAC,IAAI,CACnB,CAAC;QAEF,OAAO;YACL,GAAG,WAAW;YACd,OAAO,GACL,EAAC,wBAAwB,QACvB,EAAC,mBAAmB,IAClB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,UAAU,EAC7B,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,GACxD,EAEF,EAAC,mBAAmB,IAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAC1C,CAC5B;YACD,QAAQ,EAAE;gBACR,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;aACzE;SACF,CAAC;KACH;IAEM,MAAM;QACX,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,QACE,+EACE,OAAO,EAAE,IAAI,CAAC,IAAI,EAClB,KAAK,EAAE,IAAI,CAAC,KAAK,GACO,EAC1B;SACH;KACF;;;;;;","names":[],"sources":["src/components/search/search-box-suggestions/atomic-search-box-query-suggestions/atomic-search-box-query-suggestions.tsx"],"sourcesContent":["import {\n loadQuerySuggestActions,\n SearchBox,\n SearchEngine,\n Suggestion,\n} from '@coveo/headless';\nimport {Component, Element, Prop, State, h} from '@stencil/core';\nimport SearchIcon from '../../../../images/search.svg';\nimport {\n getPartialSearchBoxSuggestionElement,\n QuerySuggestionContainer,\n QuerySuggestionIcon,\n QuerySuggestionText,\n} from '../../../common/suggestions/stencil-query-suggestions';\nimport {\n dispatchSearchBoxSuggestionsEvent,\n} from '../../../common/suggestions/suggestions-events';\nimport type {\n SearchBoxSuggestionElement,\n SearchBoxSuggestions,\n SearchBoxSuggestionsBindings,\n} from '../../../common/suggestions/suggestions-types';\n\n/**\n * The `atomic-search-box-query-suggestions` component can be added as a child of an `atomic-search-box` component, allowing for the configuration of query suggestion behavior.\n */\n@Component({\n tag: 'atomic-search-box-query-suggestions',\n shadow: true,\n})\nexport class AtomicSearchBoxQuerySuggestions {\n private bindings!: SearchBoxSuggestionsBindings<SearchBox>;\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?: number;\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>(\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 initialize(): SearchBoxSuggestions {\n const engine = this.bindings.engine as SearchEngine<{\n querySet: string;\n querySuggest: string;\n }>;\n const {registerQuerySuggest, fetchQuerySuggestions} =\n loadQuerySuggestActions(engine);\n\n engine.dispatch(\n registerQuerySuggest({\n id: this.bindings.id,\n count: this.bindings.numberOfQueries,\n })\n );\n\n return {\n position: Array.from(this.host.parentNode!.children).indexOf(this.host),\n onInput: () =>\n engine.dispatch(\n fetchQuerySuggestions({\n id: this.bindings.id,\n })\n ),\n renderItems: () => this.renderItems(),\n };\n }\n\n private renderItems(): SearchBoxSuggestionElement[] {\n const hasQuery = this.bindings.searchBoxController.state.value !== '';\n const max = hasQuery ? this.maxWithQuery : this.maxWithoutQuery;\n return this.bindings.searchBoxController.state.suggestions\n .slice(0, max)\n .map((suggestion) => this.renderItem(suggestion));\n }\n\n private renderItem(suggestion: Suggestion) {\n const hasQuery = this.bindings.searchBoxController.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={this.icon || SearchIcon}\n hasSuggestion={this.bindings.getSuggestions().length > 1}\n />\n\n <QuerySuggestionText suggestion={suggestion} hasQuery={hasQuery} />\n </QuerySuggestionContainer>\n ),\n onSelect: () => {\n this.bindings.searchBoxController.selectSuggestion(suggestion.rawValue);\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}
|
@@ -7,9 +7,9 @@ import { a as StorageItems, S as SafeStorage } from './local-storage-utils-41026
|
|
7
7
|
import { u as updateBreakpoints } from './replace-breakpoint-utils-7a336631.js';
|
8
8
|
import { A as AriaLiveRegion } from './stencil-accessibility-utils-196a08f3.js';
|
9
9
|
import { o as once, r as randomID, j as spreadProperties, h as isFocusingOut } from './utils-7161486d.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-376f83e8.js';
|
11
11
|
import { B as Button } from './stencil-button-1a29a5df.js';
|
12
|
-
import {
|
12
|
+
import { a as elementHasQuery } from './suggestions-utils-591559a0.js';
|
13
13
|
import './dom-utils-f6086cd3.js';
|
14
14
|
import './event-utils-8de63ec3.js';
|
15
15
|
import './init-queue-fbe942c3.js';
|
@@ -430,18 +430,18 @@ const AtomicSearchBox = class {
|
|
430
430
|
if (!this.suggestionManager.suggestions.length) {
|
431
431
|
this.registerSearchboxSuggestionEvents();
|
432
432
|
}
|
433
|
-
return (h(Host, { key: '
|
434
|
-
h(SearchBoxWrapper, { key: '
|
433
|
+
return (h(Host, { key: 'e3ed5e9633d8f37158974ae3f1b21cedf5f7de01' }, this.renderAbsolutePositionSpacer(), [
|
434
|
+
h(SearchBoxWrapper, { key: 'b5f0da61b7ac4f1fee156de7027945040dbbf500', disabled: isDisabled, onFocusout: (event) => {
|
435
435
|
if (!isFocusingOut(event)) {
|
436
436
|
return;
|
437
437
|
}
|
438
438
|
this.suggestionManager.clearSuggestions();
|
439
439
|
this.isExpanded = false;
|
440
|
-
} }, this.renderTextBox(searchLabel), h(SubmitButton, { key: '
|
440
|
+
} }, this.renderTextBox(searchLabel), h(SubmitButton, { key: 'c8c6083671167dac6c211c7b456dcfe87ca1cfaa', bindings: this.bindings, disabled: isDisabled, onClick: () => {
|
441
441
|
this.searchBox.submit();
|
442
442
|
this.suggestionManager.clearSuggestions();
|
443
443
|
} }), this.renderSuggestions()),
|
444
|
-
!this.suggestionManager.suggestions.length && (h("slot", { key: '
|
444
|
+
!this.suggestionManager.suggestions.length && (h("slot", { key: 'd6c0f1ff47370f794d0dc81782ced70baa04db91' }, h("atomic-search-box-recent-queries", { key: 'e599e83ae1f15386e310d1e03b8111144d452a8e' }), h("atomic-search-box-query-suggestions", { key: '6d446202f6722a66714ac067ad78afcf853a5dbe' }))),
|
445
445
|
]));
|
446
446
|
}
|
447
447
|
get host() { return getElement(this); }
|