@coveo/atomic 3.33.8-pre.f82c4ba7d3 → 3.33.8-pre.fb042f4f0e
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 -0
- package/dist/atomic/components/_index.js +1 -0
- package/dist/atomic/components/analytics-config.js +1 -1
- package/dist/atomic/components/atomic-category-facet.js +1 -1
- package/dist/atomic/components/atomic-facet.js +1 -1
- package/dist/atomic/components/atomic-format-currency.js +1 -1
- package/dist/atomic/components/atomic-format-number.js +1 -1
- package/dist/atomic/components/atomic-format-unit.js +1 -1
- package/dist/atomic/components/atomic-insight-history-toggle.js +2 -2
- package/dist/atomic/components/atomic-insight-history-toggle.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-numeric-facet.js +1 -1
- package/dist/atomic/components/atomic-quickview-modal2.js +1 -1
- package/dist/atomic/components/atomic-quickview.js +1 -1
- package/dist/atomic/components/atomic-result-children.js +1 -1
- package/dist/atomic/components/atomic-result-fields-list.js +1 -1
- package/dist/atomic/components/atomic-result-link.js +1 -1
- package/dist/atomic/components/atomic-result-list.js +1 -1
- package/dist/atomic/components/atomic-search-box-query-suggestions2.js +1 -1
- package/dist/atomic/components/atomic-search-box-recent-queries.d.ts +11 -0
- package/dist/atomic/components/atomic-search-box-recent-queries.js +8 -0
- package/dist/atomic/components/atomic-search-box-recent-queries.js.map +1 -0
- package/dist/atomic/components/atomic-search-box-recent-queries2.js +183 -0
- package/dist/atomic/components/atomic-search-box-recent-queries2.js.map +1 -0
- package/dist/atomic/components/atomic-search-box.js +23 -6
- 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-sort-dropdown.js +2 -2
- package/dist/atomic/components/atomic-sort-expression.js +1 -1
- package/dist/atomic/components/atomic-tab-manager.js +1 -1
- package/dist/atomic/components/clock.js +2 -2
- package/dist/atomic/components/components/commerce/atomic-commerce-interface/atomic-commerce-interface.js +49 -7
- package/dist/atomic/components/components/commerce/atomic-commerce-query-summary/atomic-commerce-query-summary.js +2 -2
- package/dist/atomic/components/components/commerce/atomic-commerce-recommendation-interface/atomic-commerce-recommendation-interface.js +25 -10
- package/dist/atomic/components/components/commerce/atomic-commerce-search-box/atomic-commerce-search-box.js +12 -5
- package/dist/atomic/components/components/common/atomic-modal/atomic-modal.js +2 -0
- package/dist/atomic/components/components/search/index.js +0 -1
- package/dist/atomic/components/components/search/lazy-index.js +0 -1
- package/dist/atomic/components/global/environment.js +1 -1
- package/dist/atomic/components/index.js.map +1 -1
- package/dist/atomic/{p-75e00690.entry.js → p-089be992.entry.js} +2 -2
- package/dist/atomic/{p-4b3d253b.entry.js → p-09a3a067.entry.js} +2 -2
- package/dist/atomic/{p-7b899b57.entry.js → p-1d1f54a5.entry.js} +2 -2
- package/dist/atomic/{p-ae98c582.entry.js → p-2ce8220a.entry.js} +2 -2
- package/dist/atomic/{p-877d35b1.entry.js → p-3b023e83.entry.js} +2 -2
- package/dist/atomic/{p-52ba404c.entry.js → p-49c38b27.entry.js} +2 -2
- package/dist/atomic/p-4c2f230f.entry.js +2 -0
- package/dist/atomic/p-4c2f230f.entry.js.map +1 -0
- package/dist/atomic/{p-299555fb.entry.js → p-4c41abd0.entry.js} +2 -2
- package/dist/atomic/{p-88d5e178.entry.js → p-51a4606d.entry.js} +2 -2
- package/dist/atomic/{p-0ce38b0d.entry.js → p-5528d006.entry.js} +2 -2
- package/dist/atomic/{p-d00a12e9.entry.js → p-5f1fa581.entry.js} +2 -2
- package/dist/atomic/{p-ba4bf29f.entry.js → p-6329ff94.entry.js} +2 -2
- package/dist/atomic/{p-7383fd32.entry.js → p-6e6d686e.entry.js} +2 -2
- package/dist/atomic/p-744da781.entry.js +2 -0
- package/dist/atomic/{p-c88a3d2d.entry.js.map → p-744da781.entry.js.map} +1 -1
- package/dist/atomic/{p-a760d9f9.entry.js → p-7e2109e9.entry.js} +2 -2
- package/dist/atomic/{p-b28011e6.entry.js → p-89085429.entry.js} +2 -2
- package/dist/atomic/{p-39e63678.entry.js → p-89ab44de.entry.js} +2 -2
- package/dist/atomic/{p-330e6e7c.entry.js → p-9c9b1965.entry.js} +2 -2
- package/dist/atomic/{p-78b70622.entry.js → p-a8882a2a.entry.js} +2 -2
- package/dist/atomic/{p-f22bcb8c.entry.js → p-b6963bae.entry.js} +2 -2
- package/dist/atomic/{p-3c8d109e.entry.js → p-b7063a0d.entry.js} +2 -2
- package/dist/atomic/{p-e1cc5150.js → p-c280cd05.js} +1 -1
- package/dist/atomic/{p-5bc31a30.js → p-dd761b10.js} +2 -2
- package/dist/atomic/{p-7b0b9e9b.entry.js → p-f289269f.entry.js} +2 -2
- package/dist/atomic/{p-c49cfa0c.entry.js → p-fda26113.entry.js} +2 -2
- package/dist/cjs/_loader.cjs.js +1 -1
- package/dist/cjs/{analytics-config-68dbae8e.js → analytics-config-fa9c8790.js} +2 -2
- package/dist/cjs/{analytics-config-68dbae8e.js.map → analytics-config-fa9c8790.js.map} +1 -1
- package/dist/cjs/atomic-category-facet.cjs.entry.js +1 -1
- package/dist/cjs/atomic-facet.cjs.entry.js +1 -1
- package/dist/cjs/atomic-format-currency.cjs.entry.js +1 -1
- package/dist/cjs/atomic-format-number.cjs.entry.js +1 -1
- package/dist/cjs/atomic-format-unit.cjs.entry.js +1 -1
- package/dist/cjs/atomic-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-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-numeric-facet.cjs.entry.js +1 -1
- package/dist/cjs/atomic-quickview-modal.cjs.entry.js +1 -1
- package/dist/cjs/atomic-quickview.cjs.entry.js +1 -1
- package/dist/cjs/atomic-recs-interface.cjs.entry.js +1 -1
- package/dist/cjs/atomic-result-children.cjs.entry.js +1 -1
- package/dist/cjs/atomic-result-fields-list.cjs.entry.js +1 -1
- package/dist/cjs/atomic-result-link.cjs.entry.js +1 -1
- package/dist/cjs/atomic-result-list.cjs.entry.js +1 -1
- package/dist/cjs/atomic-search-box-query-suggestions_2.cjs.entry.js +234 -0
- package/dist/cjs/atomic-search-box-query-suggestions_2.cjs.entry.js.map +1 -0
- package/dist/cjs/atomic-search-box.cjs.entry.js +15 -4
- 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-sort-dropdown.cjs.entry.js +2 -2
- package/dist/cjs/atomic-sort-expression.cjs.entry.js +1 -1
- package/dist/cjs/atomic-tab-manager.cjs.entry.js +1 -1
- package/dist/cjs/atomic.cjs.js +1 -1
- package/dist/cjs/clock-f03ff827.js +7 -0
- package/dist/cjs/clock-f03ff827.js.map +1 -0
- package/dist/cjs/index-757bc886.js +2 -2
- package/dist/cjs/version.cjs.js +2 -2
- package/dist/esm/_loader.js +1 -1
- package/dist/esm/{analytics-config-18d42f83.js → analytics-config-c51d0bc9.js} +2 -2
- package/dist/esm/{analytics-config-18d42f83.js.map → analytics-config-c51d0bc9.js.map} +1 -1
- package/dist/esm/atomic-category-facet.entry.js +1 -1
- package/dist/esm/atomic-facet.entry.js +1 -1
- package/dist/esm/atomic-format-currency.entry.js +1 -1
- package/dist/esm/atomic-format-number.entry.js +1 -1
- package/dist/esm/atomic-format-unit.entry.js +1 -1
- package/dist/esm/atomic-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-user-actions-toggle.entry.js +2 -2
- package/dist/esm/atomic-insight-user-actions-toggle.entry.js.map +1 -1
- package/dist/esm/atomic-numeric-facet.entry.js +1 -1
- package/dist/esm/atomic-quickview-modal.entry.js +1 -1
- package/dist/esm/atomic-quickview.entry.js +1 -1
- package/dist/esm/atomic-recs-interface.entry.js +1 -1
- package/dist/esm/atomic-result-children.entry.js +1 -1
- package/dist/esm/atomic-result-fields-list.entry.js +1 -1
- package/dist/esm/atomic-result-link.entry.js +1 -1
- package/dist/esm/atomic-result-list.entry.js +1 -1
- package/dist/esm/atomic-search-box-query-suggestions_2.entry.js +229 -0
- package/dist/esm/atomic-search-box-query-suggestions_2.entry.js.map +1 -0
- package/dist/esm/atomic-search-box.entry.js +15 -4
- 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-sort-dropdown.entry.js +2 -2
- package/dist/esm/atomic-sort-expression.entry.js +1 -1
- package/dist/esm/atomic-tab-manager.entry.js +1 -1
- package/dist/esm/atomic.js +1 -1
- package/dist/esm/clock-add3e9a5.js +5 -0
- package/dist/esm/clock-add3e9a5.js.map +1 -0
- package/dist/esm/index-3f35faca.js +2 -2
- package/dist/esm/version.js +2 -2
- package/dist/types/components/commerce/atomic-commerce-interface/atomic-commerce-interface.d.ts +29 -1
- package/dist/types/components/commerce/atomic-commerce-recommendation-interface/atomic-commerce-recommendation-interface.d.ts +1 -0
- package/dist/types/components/commerce/atomic-commerce-search-box/atomic-commerce-search-box.d.ts +1 -0
- package/dist/types/components/search/atomic-search-box/atomic-search-box.d.ts +1 -0
- package/dist/types/components/search/index.d.ts +0 -1
- package/dist/types/components/search/{atomic-search-box-recent-queries → search-box-suggestions/atomic-search-box-recent-queries}/atomic-search-box-recent-queries.d.ts +7 -15
- package/dist/types/components.d.ts +49 -0
- package/docs/atomic-docs.json +98 -1
- package/package.json +3 -3
- package/dist/atomic/components/components/search/atomic-search-box-recent-queries/atomic-search-box-recent-queries.js +0 -137
- package/dist/atomic/p-2e9db4ca.entry.js +0 -2
- package/dist/atomic/p-2e9db4ca.entry.js.map +0 -1
- package/dist/atomic/p-c88a3d2d.entry.js +0 -2
- package/dist/cjs/atomic-search-box-query-suggestions.cjs.entry.js +0 -76
- package/dist/cjs/atomic-search-box-query-suggestions.cjs.entry.js.map +0 -1
- package/dist/cjs/clock-7aeb19d0.js +0 -7
- package/dist/cjs/clock-7aeb19d0.js.map +0 -1
- package/dist/esm/atomic-search-box-query-suggestions.entry.js +0 -72
- package/dist/esm/atomic-search-box-query-suggestions.entry.js.map +0 -1
- package/dist/esm/clock-b1f5d7f7.js +0 -5
- package/dist/esm/clock-b1f5d7f7.js.map +0 -1
- /package/dist/atomic/{p-75e00690.entry.js.map → p-089be992.entry.js.map} +0 -0
- /package/dist/atomic/{p-4b3d253b.entry.js.map → p-09a3a067.entry.js.map} +0 -0
- /package/dist/atomic/{p-7b899b57.entry.js.map → p-1d1f54a5.entry.js.map} +0 -0
- /package/dist/atomic/{p-ae98c582.entry.js.map → p-2ce8220a.entry.js.map} +0 -0
- /package/dist/atomic/{p-877d35b1.entry.js.map → p-3b023e83.entry.js.map} +0 -0
- /package/dist/atomic/{p-52ba404c.entry.js.map → p-49c38b27.entry.js.map} +0 -0
- /package/dist/atomic/{p-299555fb.entry.js.map → p-4c41abd0.entry.js.map} +0 -0
- /package/dist/atomic/{p-88d5e178.entry.js.map → p-51a4606d.entry.js.map} +0 -0
- /package/dist/atomic/{p-0ce38b0d.entry.js.map → p-5528d006.entry.js.map} +0 -0
- /package/dist/atomic/{p-d00a12e9.entry.js.map → p-5f1fa581.entry.js.map} +0 -0
- /package/dist/atomic/{p-ba4bf29f.entry.js.map → p-6329ff94.entry.js.map} +0 -0
- /package/dist/atomic/{p-7383fd32.entry.js.map → p-6e6d686e.entry.js.map} +0 -0
- /package/dist/atomic/{p-a760d9f9.entry.js.map → p-7e2109e9.entry.js.map} +0 -0
- /package/dist/atomic/{p-b28011e6.entry.js.map → p-89085429.entry.js.map} +0 -0
- /package/dist/atomic/{p-39e63678.entry.js.map → p-89ab44de.entry.js.map} +0 -0
- /package/dist/atomic/{p-330e6e7c.entry.js.map → p-9c9b1965.entry.js.map} +0 -0
- /package/dist/atomic/{p-78b70622.entry.js.map → p-a8882a2a.entry.js.map} +0 -0
- /package/dist/atomic/{p-f22bcb8c.entry.js.map → p-b6963bae.entry.js.map} +0 -0
- /package/dist/atomic/{p-3c8d109e.entry.js.map → p-b7063a0d.entry.js.map} +0 -0
- /package/dist/atomic/{p-e1cc5150.js.map → p-c280cd05.js.map} +0 -0
- /package/dist/atomic/{p-5bc31a30.js.map → p-dd761b10.js.map} +0 -0
- /package/dist/atomic/{p-7b0b9e9b.entry.js.map → p-f289269f.entry.js.map} +0 -0
- /package/dist/atomic/{p-c49cfa0c.entry.js.map → p-fda26113.entry.js.map} +0 -0
@@ -485,7 +485,7 @@ const AtomicCategoryFacet = class {
|
|
485
485
|
}
|
486
486
|
render() {
|
487
487
|
const { bindings: { i18n }, label, facetState: { facetSearch, enabled, valuesAsTrees, selectedValueAncestry }, searchStatusState: { hasError, firstSearchExecuted }, } = this;
|
488
|
-
return (index.h(facetGuard.FacetGuard, { key: '
|
488
|
+
return (index.h(facetGuard.FacetGuard, { key: '01bc9546504e065411c474121d53c5191d57d2e9', enabled: enabled, firstSearchExecuted: firstSearchExecuted, hasError: hasError, hasResults: valuesAsTrees.length > 0 }, firstSearchExecuted ? (index.h(facetPlaceholder.FacetContainer, null, this.renderHeader(), !this.isCollapsed && [
|
489
489
|
this.renderSearchInput(),
|
490
490
|
stencilFacetValueLabelHighlight.shouldDisplaySearchResults(facetSearch) ? (index.h(index.Fragment, null, facetSearch.values.length ? (index.h(stencilFacetValuesGroup.FacetValuesGroup, { i18n: i18n, label: label, query: facetSearch.query }, this.renderSearchResults())) : (index.h("div", { class: "mt-3" })), this.renderMatches())) : (index.h(index.Fragment, null, index.h(stencilFacetValuesGroup.FacetValuesGroup, { i18n: i18n, label: label }, this.hasParents ? (index.h(CategoryFacetParentAsTreeContainer, { isTopLevel: true, className: "mt-3" }, this.renderValuesTree(selectedValueAncestry, true))) : (index.h(CategoryFacetChildrenAsTreeContainer, { className: "mt-3" }, this.renderChildren()))), this.renderShowMoreLess())),
|
491
491
|
])) : (index.h(facetPlaceholder.FacetPlaceholder, { isCollapsed: this.isCollapsed, numberOfValues: this.numberOfValues }))));
|
@@ -266,7 +266,7 @@ const AtomicFacet = class {
|
|
266
266
|
return true;
|
267
267
|
}
|
268
268
|
render() {
|
269
|
-
return (index.h(facetGuard.FacetGuard, { key: '
|
269
|
+
return (index.h(facetGuard.FacetGuard, { key: 'b2df11b285b166854e378fb05f48dc5b8b4bd503', enabled: this.facetState.enabled, hasError: this.searchStatusState.hasError, firstSearchExecuted: this.searchStatusState.firstSearchExecuted, hasResults: this.facetState.values.length > 0 }, this.searchStatusState.firstSearchExecuted ? (index.h(facetPlaceholder.FacetContainer, null, index.h(facetPlaceholder.FacetHeader, { i18n: this.bindings.i18n, label: this.definedLabel, onClearFilters: () => {
|
270
270
|
this.focusTargets.header.focusAfterSearch();
|
271
271
|
this.facet.deselectAll();
|
272
272
|
}, numberOfActiveValues: this.activeValues.length, isCollapsed: this.isCollapsed, headingLevel: this.headingLevel, onToggleCollapse: () => (this.isCollapsed = !this.isCollapsed), headerRef: (el) => this.focusTargets.header.setTarget(el) }), this.renderBody())) : (index.h(facetPlaceholder.FacetPlaceholder, { numberOfValues: this.numberOfValues, isCollapsed: this.isCollapsed }))));
|
@@ -23,7 +23,7 @@ const AtomicFormatCurrency = class {
|
|
23
23
|
}
|
24
24
|
render() {
|
25
25
|
if (this.error) {
|
26
|
-
return (index.h("atomic-component-error", { key: '
|
26
|
+
return (index.h("atomic-component-error", { key: 'c649c16618fac96b694c3f6cb378e822e2321a0a', element: this.host, error: this.error }));
|
27
27
|
}
|
28
28
|
}
|
29
29
|
get host() { return index.getElement(this); }
|
@@ -35,7 +35,7 @@ const AtomicFormatNumber = class {
|
|
35
35
|
}
|
36
36
|
render() {
|
37
37
|
if (this.error) {
|
38
|
-
return (index.h("atomic-component-error", { key: '
|
38
|
+
return (index.h("atomic-component-error", { key: 'b8db0749ee8aed93331c5a6385aa07f732ec03e9', element: this.host, error: this.error }));
|
39
39
|
}
|
40
40
|
}
|
41
41
|
get host() { return index.getElement(this); }
|
@@ -38,7 +38,7 @@ const AtomicFormatUnit = class {
|
|
38
38
|
}
|
39
39
|
render() {
|
40
40
|
if (this.error) {
|
41
|
-
return (index.h("atomic-component-error", { key: '
|
41
|
+
return (index.h("atomic-component-error", { key: '5e34407ff07142c4765f234c4b9227727e0ff89a', element: this.host, error: this.error }));
|
42
42
|
}
|
43
43
|
}
|
44
44
|
get host() { return index.getElement(this); }
|
@@ -3,7 +3,7 @@
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
4
4
|
|
5
5
|
const index = require('./index-757bc886.js');
|
6
|
-
const clock = require('./clock-
|
6
|
+
const clock = require('./clock-f03ff827.js');
|
7
7
|
const stencilIconButton = require('./stencil-iconButton-738b1548.js');
|
8
8
|
require('./stencil-button-94b89acc.js');
|
9
9
|
require('./event-utils-9bfcf3c5.js');
|
@@ -21,7 +21,7 @@ const AtomicInsightHistoryToggle = class {
|
|
21
21
|
this.tooltip = '';
|
22
22
|
}
|
23
23
|
render() {
|
24
|
-
return (index.h(stencilIconButton.IconButton, { key: '83098c524b4d1197222a045b7da60d10ced398bf', partPrefix: "insight-history-toggle", style: "outline-neutral", icon: clock.
|
24
|
+
return (index.h(stencilIconButton.IconButton, { key: '83098c524b4d1197222a045b7da60d10ced398bf', partPrefix: "insight-history-toggle", style: "outline-neutral", icon: clock.Clock, ariaLabel: "history", onClick: this.clickCallback, title: this.tooltip }));
|
25
25
|
}
|
26
26
|
};
|
27
27
|
AtomicInsightHistoryToggle.style = AtomicInsightHistoryToggleStyle0;
|
@@ -1 +1 @@
|
|
1
|
-
{"file":"atomic-insight-history-toggle.entry.cjs.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,QACEA,QAACC,4BAAU,qDACT,UAAU,EAAC,wBAAwB,EACnC,KAAK,EAAC,iBAAiB,EACvB,IAAI,EAAEC,
|
1
|
+
{"file":"atomic-insight-history-toggle.entry.cjs.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,QACEA,QAACC,4BAAU,qDACT,UAAU,EAAC,wBAAwB,EACnC,KAAK,EAAC,iBAAiB,EACvB,IAAI,EAAEC,WAAS,EACf,SAAS,EAAC,SAAS,EACnB,OAAO,EAAE,IAAI,CAAC,aAAa,EAC3B,KAAK,EAAE,IAAI,CAAC,OAAO,GACnB,EACF;KACH;;;;;;","names":["h","IconButton","Clockicon"],"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}
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
5
|
const index = require('./index-757bc886.js');
|
6
6
|
const initQueue = require('./init-queue-a18aa323.js');
|
7
7
|
const insight = require('@coveo/headless/insight');
|
8
|
-
const analyticsConfig = require('./analytics-config-
|
8
|
+
const analyticsConfig = require('./analytics-config-fa9c8790.js');
|
9
9
|
const propsUtils = require('./props-utils-1e4ba1b0.js');
|
10
10
|
const replaceBreakpointUtils = require('./replace-breakpoint-utils-7a084f54.js');
|
11
11
|
const store = require('./store-82abd941.js');
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
5
5
|
const index = require('./index-757bc886.js');
|
6
6
|
const insight = require('@coveo/headless/insight');
|
7
|
-
const clock = require('./clock-
|
7
|
+
const clock = require('./clock-f03ff827.js');
|
8
8
|
const initializationUtils = require('./initialization-utils-92f1b080.js');
|
9
9
|
const stencilIconButton = require('./stencil-iconButton-738b1548.js');
|
10
10
|
require('./dom-utils-d4790328.js');
|
@@ -64,7 +64,7 @@ const AtomicInsightUserActionsToggle = class {
|
|
64
64
|
this.modalRef.excludedCustomActions = this.excludedCustomActions;
|
65
65
|
}
|
66
66
|
render() {
|
67
|
-
return (index.h(stencilIconButton.IconButton, { key: 'e146b9c160034349da8ffc4d416cc37547576bde', partPrefix: "insight-user-actions-toggle", style: "outline-neutral", icon: clock.
|
67
|
+
return (index.h(stencilIconButton.IconButton, { key: 'e146b9c160034349da8ffc4d416cc37547576bde', partPrefix: "insight-user-actions-toggle", style: "outline-neutral", icon: clock.Clock, ariaLabel: this.bindings.i18n.t('user-actions'), onClick: () => {
|
68
68
|
this.enableModal();
|
69
69
|
}, title: this.bindings.i18n.t('user-actions'), buttonRef: (button) => {
|
70
70
|
if (!button) {
|
@@ -1 +1 @@
|
|
1
|
-
{"file":"atomic-insight-user-actions-toggle.entry.cjs.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,wBAAuB,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,QACEC,QAACC,4BAAU,qDACT,UAAU,EAAC,6BAA6B,EACxC,KAAK,EAAC,iBAAiB,EACvB,IAAI,EAAEC,
|
1
|
+
{"file":"atomic-insight-user-actions-toggle.entry.cjs.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,wBAAuB,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,QACEC,QAACC,4BAAU,qDACT,UAAU,EAAC,6BAA6B,EACxC,KAAK,EAAC,iBAAiB,EACvB,IAAI,EAAEC,WAAS,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;IAA5BC,sCAAkB,EAAE;gEAAmC;AAIjD;IAFNC,yCAAqB,CAAC,aAAa,CAAC;wEAEa;;;;;","names":["buildInsightUserActions","h","IconButton","Clockicon","InitializeBindings","BindStateToController"],"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}
|
@@ -309,7 +309,7 @@ const AtomicNumericFacet = class {
|
|
309
309
|
}
|
310
310
|
render() {
|
311
311
|
const { searchStatusState: { firstSearchExecuted, hasError }, bindings: { i18n }, } = this;
|
312
|
-
return (index.h(facetGuard.FacetGuard, { key: '
|
312
|
+
return (index.h(facetGuard.FacetGuard, { key: '4ae7f2c657012459dadc76b6c2f8215a19341e9e', enabled: this.enabled, firstSearchExecuted: firstSearchExecuted, hasError: hasError, hasResults: this.shouldRenderFacet }, firstSearchExecuted ? (index.h(facetPlaceholder.FacetContainer, null, index.h(facetPlaceholder.FacetHeader, { i18n: i18n, label: this.label, onClearFilters: () => {
|
313
313
|
this.focusTarget.focusAfterSearch();
|
314
314
|
if (this.filterState?.range) {
|
315
315
|
this.filter?.clear();
|
@@ -590,7 +590,7 @@ const AtomicQuickviewModal = class {
|
|
590
590
|
});
|
591
591
|
}
|
592
592
|
render() {
|
593
|
-
return (index.h("atomic-modal", { key: '
|
593
|
+
return (index.h("atomic-modal", { key: '561499630f5da5df55933332f8c9567d57d0e22e', fullscreen: this.bindings.store.isMobile(), class: 'atomic-quickview-modal', isOpen: this.isOpen, close: () => this.onClose(), exportparts: exportParts.ATOMIC_MODAL_EXPORT_PARTS }, this.renderHeader(), this.renderBody(), this.renderFooter()));
|
594
594
|
}
|
595
595
|
static get watchers() { return {
|
596
596
|
"highlightKeywords": ["watchHighlightKeywords"]
|
@@ -116,7 +116,7 @@ const AtomicQuickview = class {
|
|
116
116
|
}
|
117
117
|
render() {
|
118
118
|
if (this.quickviewState.resultHasPreview) {
|
119
|
-
return (index.h(stencilButton.Button, { key: '
|
119
|
+
return (index.h(stencilButton.Button, { key: '14fe117eb06409f41f2ec124669944fea2b710fc', part: "button", title: this.bindings.i18n.t('quickview'), style: "outline-primary", class: "p-2", onClick: (event) => this.onClick(event), ref: this.focusTarget.setTarget }, index.h("atomic-icon", { key: '4048bf25642bf6548716557132e62996ac5dda96', part: "icon", class: "flex w-5 justify-center", icon: quickview.QuickviewIcon })));
|
120
120
|
}
|
121
121
|
}
|
122
122
|
};
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
5
|
const index = require('./index-757bc886.js');
|
6
6
|
const initQueue = require('./init-queue-a18aa323.js');
|
7
7
|
const recommendation = require('@coveo/headless/recommendation');
|
8
|
-
const analyticsConfig = require('./analytics-config-
|
8
|
+
const analyticsConfig = require('./analytics-config-fa9c8790.js');
|
9
9
|
const propsUtils = require('./props-utils-1e4ba1b0.js');
|
10
10
|
const store = require('./store-82abd941.js');
|
11
11
|
require('./dayjs.min-8b80e6d1.js');
|
@@ -139,7 +139,7 @@ const AtomicResultChildren = class {
|
|
139
139
|
return (index.h(showHideButton.ChildrenWrapper, { hasChildren: children.length > 0 }, children.map((child, i) => this.renderChild(child, i === children.length - 1))));
|
140
140
|
}
|
141
141
|
render() {
|
142
|
-
return (index.h(showHideButton.ResultChildrenGuard, { key: '
|
142
|
+
return (index.h(showHideButton.ResultChildrenGuard, { key: '2150e9417d88508b82af66754c3ae89c000f934a', inheritTemplates: this.inheritTemplates, resultTemplateRegistered: this.resultTemplateRegistered, templateHasError: this.templateHasError }, this.collection ? this.renderCollection() : this.renderFoldedResult()));
|
143
143
|
}
|
144
144
|
get host() { return index.getElement(this); }
|
145
145
|
};
|
@@ -104,7 +104,7 @@ const AtomicResultFieldsList = class {
|
|
104
104
|
}
|
105
105
|
}
|
106
106
|
render() {
|
107
|
-
return index.h(index.Host, { key: '
|
107
|
+
return index.h(index.Host, { key: 'f4108a4cdb1f7e0bf7d8658268f68bab2b0e4311' });
|
108
108
|
}
|
109
109
|
get host() { return index.getElement(this); }
|
110
110
|
};
|
@@ -50,7 +50,7 @@ const AtomicResultLink = class {
|
|
50
50
|
const href = bueno.isUndefined(this.hrefTemplate)
|
51
51
|
? this.result.clickUri
|
52
52
|
: resultUtils.buildStringTemplateFromResult(this.hrefTemplate, this.result, this.bindings);
|
53
|
-
return (index.h(stencilItemLink.LinkWithItemAnalytics, { key: '
|
53
|
+
return (index.h(stencilItemLink.LinkWithItemAnalytics, { key: 'f8ab6cddf502983ab1563fbff477cb3c3aaa2db2', href: href, onSelect: () => this.interactiveResult.select(), onBeginDelayedSelect: () => this.interactiveResult.beginDelayedSelect(), onCancelPendingSelect: () => this.interactiveResult.cancelPendingSelect(), attributes: this.linkAttributes, stopPropagation: this.stopPropagation }, this.hasDefaultSlot ? (index.h("slot", null)) : (index.h("atomic-result-text", { field: "title", default: "no-title" }))));
|
54
54
|
}
|
55
55
|
get host() { return index.getElement(this); }
|
56
56
|
};
|
@@ -195,7 +195,7 @@ const AtomicResultList = class {
|
|
195
195
|
render() {
|
196
196
|
this.resultListCommon.updateBreakpoints();
|
197
197
|
const listClasses = this.computeListDisplayClasses();
|
198
|
-
return (index.h(TabGuard, { key: '
|
198
|
+
return (index.h(TabGuard, { key: '84e905bc447448b3ae9701cc63b6b36ea2d8a0fd', tabsIncluded: this.tabsIncluded, tabsExcluded: this.tabsExcluded, activeTab: this.tabManagerState.activeTab }, index.h(itemListGuard.ItemListGuard, { key: '8a1fe0484e410fceaa0815e61630478fc3a7112a', hasError: this.resultListState.hasError, hasTemplate: this.resultTemplateRegistered, templateHasError: this.itemTemplateProvider.hasError, firstRequestExecuted: this.resultListState.firstSearchExecuted, hasItems: this.resultListState.hasResults }, index.h(stencilDisplayWrapper.DisplayWrapper, { key: '2c7bd5851175b7414ff588c2c53d9a561e68c33a', display: this.display, listClasses: listClasses }, index.h(stencilPlaceholders.ResultsPlaceholdersGuard, { key: '92540528744f9fb632dadc7d048b817905380440', density: this.density, display: this.display, imageSize: this.imageSize, displayPlaceholders: !this.isAppLoaded, numberOfPlaceholders: this.resultsPerPageState.numberOfResults }), index.h(stencilDisplayWrapper.ItemDisplayGuard, { key: '246eafcd94c68ff9fe662f8efc2f9faee2cbe8dc', firstRequestExecuted: this.resultListState.firstSearchExecuted, hasItems: this.resultListState.hasResults }, this.display === 'table'
|
199
199
|
? this.renderAsTable()
|
200
200
|
: this.display === 'grid'
|
201
201
|
? this.renderAsGrid()
|
@@ -0,0 +1,234 @@
|
|
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 search = require('./search-a4774f02.js');
|
8
|
+
const stencilQuerySuggestions = require('./stencil-query-suggestions-03268ecc.js');
|
9
|
+
const suggestionsEvents = require('./suggestions-events-63dd0640.js');
|
10
|
+
const clock = require('./clock-f03ff827.js');
|
11
|
+
const localStorageUtils = require('./local-storage-utils-380ce22b.js');
|
12
|
+
const utils = require('./utils-7153ae6b.js');
|
13
|
+
const stringUtils = require('./string-utils-bdf08f8c.js');
|
14
|
+
require('./dom-utils-d4790328.js');
|
15
|
+
require('./event-utils-9bfcf3c5.js');
|
16
|
+
require('./purify-85b542e2.js');
|
17
|
+
require('./_commonjsHelpers-b3309d7b.js');
|
18
|
+
|
19
|
+
const AtomicSearchBoxQuerySuggestions = class {
|
20
|
+
constructor(hostRef) {
|
21
|
+
index.registerInstance(this, hostRef);
|
22
|
+
this.error = undefined;
|
23
|
+
this.icon = undefined;
|
24
|
+
this.maxWithQuery = undefined;
|
25
|
+
this.maxWithoutQuery = undefined;
|
26
|
+
}
|
27
|
+
componentWillLoad() {
|
28
|
+
try {
|
29
|
+
suggestionsEvents.dispatchSearchBoxSuggestionsEvent((bindings) => {
|
30
|
+
this.bindings = bindings;
|
31
|
+
return this.initialize();
|
32
|
+
}, this.host, ['atomic-search-box']);
|
33
|
+
}
|
34
|
+
catch (error) {
|
35
|
+
this.error = error;
|
36
|
+
}
|
37
|
+
}
|
38
|
+
initialize() {
|
39
|
+
const engine = this.bindings.engine;
|
40
|
+
const { registerQuerySuggest, fetchQuerySuggestions } = headless.loadQuerySuggestActions(engine);
|
41
|
+
engine.dispatch(registerQuerySuggest({
|
42
|
+
id: this.bindings.id,
|
43
|
+
count: this.bindings.numberOfQueries,
|
44
|
+
}));
|
45
|
+
return {
|
46
|
+
position: Array.from(this.host.parentNode.children).indexOf(this.host),
|
47
|
+
onInput: () => engine.dispatch(fetchQuerySuggestions({
|
48
|
+
id: this.bindings.id,
|
49
|
+
})),
|
50
|
+
renderItems: () => this.renderItems(),
|
51
|
+
};
|
52
|
+
}
|
53
|
+
renderItems() {
|
54
|
+
const hasQuery = this.bindings.searchBoxController.state.value !== '';
|
55
|
+
const max = hasQuery ? this.maxWithQuery : this.maxWithoutQuery;
|
56
|
+
return this.bindings.searchBoxController.state.suggestions
|
57
|
+
.slice(0, max)
|
58
|
+
.map((suggestion) => this.renderItem(suggestion));
|
59
|
+
}
|
60
|
+
renderItem(suggestion) {
|
61
|
+
const hasQuery = this.bindings.searchBoxController.state.value !== '';
|
62
|
+
const partialItem = stencilQuerySuggestions.getPartialSearchBoxSuggestionElement(suggestion, this.bindings.i18n);
|
63
|
+
return {
|
64
|
+
...partialItem,
|
65
|
+
content: (index.h(stencilQuerySuggestions.QuerySuggestionContainer, null, index.h(stencilQuerySuggestions.QuerySuggestionIcon, { icon: this.icon || search.SearchIcon, hasSuggestion: this.bindings.getSuggestions().length > 1 }), index.h(stencilQuerySuggestions.QuerySuggestionText, { suggestion: suggestion, hasQuery: hasQuery }))),
|
66
|
+
onSelect: () => {
|
67
|
+
this.bindings.searchBoxController.selectSuggestion(suggestion.rawValue);
|
68
|
+
},
|
69
|
+
};
|
70
|
+
}
|
71
|
+
render() {
|
72
|
+
if (this.error) {
|
73
|
+
return (index.h("atomic-component-error", { key: '215a9db1f42f1688a334a727efa99767ecc7cfa1', element: this.host, error: this.error }));
|
74
|
+
}
|
75
|
+
}
|
76
|
+
get host() { return index.getElement(this); }
|
77
|
+
};
|
78
|
+
|
79
|
+
const getPartialRecentQueryElement = (value, i18n) => {
|
80
|
+
return {
|
81
|
+
part: 'recent-query-item',
|
82
|
+
query: value,
|
83
|
+
key: `recent-${stringUtils.encodeForDomAttribute(value)}`,
|
84
|
+
ariaLabel: i18n.t('recent-query-suggestion-label', {
|
85
|
+
query: value,
|
86
|
+
interpolation: { escapeValue: false },
|
87
|
+
}),
|
88
|
+
};
|
89
|
+
};
|
90
|
+
const getPartialRecentQueryClearElement = (i18n) => {
|
91
|
+
return {
|
92
|
+
key: 'recent-query-clear',
|
93
|
+
ariaLabel: i18n.t('clear-recent-searches', {
|
94
|
+
interpolation: { escapeValue: false },
|
95
|
+
}),
|
96
|
+
part: 'recent-query-title-item suggestion-divider',
|
97
|
+
hideIfLast: true,
|
98
|
+
};
|
99
|
+
};
|
100
|
+
const RecentQueriesContainer = (_, children) => {
|
101
|
+
return (index.h("div", { part: "recent-query-content", class: "flex items-center text-left break-all" }, children));
|
102
|
+
};
|
103
|
+
const RecentQueryIcon = ({ icon, }) => {
|
104
|
+
return (index.h("atomic-icon", { part: "recent-query-icon", icon: icon, class: "mr-2 h-4 w-4 shrink-0" }));
|
105
|
+
};
|
106
|
+
const RecentQueryText = ({ query, value, }) => {
|
107
|
+
if (query === '') {
|
108
|
+
return (index.h("span", { part: "recent-query-text", class: "line-clamp-2 break-all" }, value));
|
109
|
+
}
|
110
|
+
return (index.h("span", { part: "recent-query-text", class: "line-clamp-2 break-all", innerHTML: headless.HighlightUtils.highlightString({
|
111
|
+
content: value,
|
112
|
+
openingDelimiter: '<span part="recent-query-text-highlight" class="font-bold">',
|
113
|
+
closingDelimiter: '</span>',
|
114
|
+
highlights: [
|
115
|
+
{
|
116
|
+
offset: query.length,
|
117
|
+
length: value.length - query.length,
|
118
|
+
},
|
119
|
+
],
|
120
|
+
}) }));
|
121
|
+
};
|
122
|
+
const RecentQueryClear = ({ i18n, }) => {
|
123
|
+
return (index.h("div", { part: "recent-query-title-content", class: "flex w-full justify-between" },
|
124
|
+
index.h("span", { class: "font-bold", part: "recent-query-title" }, i18n.t('recent-searches')),
|
125
|
+
index.h("span", { part: "recent-query-clear" }, i18n.t('clear'))));
|
126
|
+
};
|
127
|
+
|
128
|
+
const AtomicSearchBoxRecentQueries = class {
|
129
|
+
constructor(hostRef) {
|
130
|
+
index.registerInstance(this, hostRef);
|
131
|
+
/**
|
132
|
+
* The maximum number of suggestions that will be displayed if the user has typed something into the input field.
|
133
|
+
*/
|
134
|
+
this.maxWithQuery = 3;
|
135
|
+
this.warnUser = utils.once(() => this.bindings.engine.logger.warn('Because analytics are disabled, the recent queries feature is deactivated.'));
|
136
|
+
this.error = undefined;
|
137
|
+
this.icon = undefined;
|
138
|
+
this.maxWithQuery = 3;
|
139
|
+
this.maxWithoutQuery = undefined;
|
140
|
+
}
|
141
|
+
componentWillLoad() {
|
142
|
+
try {
|
143
|
+
suggestionsEvents.dispatchSearchBoxSuggestionsEvent((bindings) => {
|
144
|
+
this.bindings = bindings;
|
145
|
+
return this.initialize();
|
146
|
+
}, this.host, ['atomic-search-box']);
|
147
|
+
}
|
148
|
+
catch (error) {
|
149
|
+
this.error = error;
|
150
|
+
}
|
151
|
+
}
|
152
|
+
renderIcon() {
|
153
|
+
return this.icon || clock.Clock;
|
154
|
+
}
|
155
|
+
initialize() {
|
156
|
+
this.storage = new localStorageUtils.SafeStorage();
|
157
|
+
this.recentQueriesList = headless.buildRecentQueriesList(this.bindings.engine, {
|
158
|
+
initialState: { queries: this.retrieveLocalStorage() },
|
159
|
+
options: { maxLength: 1000, clearFilters: this.bindings.clearFilters },
|
160
|
+
});
|
161
|
+
this.recentQueriesList.subscribe(() => this.updateLocalStorage());
|
162
|
+
return {
|
163
|
+
position: Array.from(this.host.parentNode.children).indexOf(this.host),
|
164
|
+
renderItems: () => this.renderItems(),
|
165
|
+
};
|
166
|
+
}
|
167
|
+
retrieveLocalStorage() {
|
168
|
+
return this.storage.getParsedJSON(localStorageUtils.StorageItems.RECENT_QUERIES, []);
|
169
|
+
}
|
170
|
+
updateLocalStorage() {
|
171
|
+
if (!this.recentQueriesList.state.analyticsEnabled) {
|
172
|
+
return this.disableFeature();
|
173
|
+
}
|
174
|
+
return this.storage.setJSON(localStorageUtils.StorageItems.RECENT_QUERIES, this.recentQueriesList.state.queries);
|
175
|
+
}
|
176
|
+
disableFeature() {
|
177
|
+
this.warnUser();
|
178
|
+
this.storage.removeItem(localStorageUtils.StorageItems.RECENT_QUERIES);
|
179
|
+
}
|
180
|
+
renderItems() {
|
181
|
+
if (!this.recentQueriesList.state.analyticsEnabled) {
|
182
|
+
return [];
|
183
|
+
}
|
184
|
+
const query = this.bindings.searchBoxController.state.value;
|
185
|
+
const hasQuery = query !== '';
|
186
|
+
const max = hasQuery ? this.maxWithQuery : this.maxWithoutQuery;
|
187
|
+
const filteredQueries = this.recentQueriesList.state.queries
|
188
|
+
.filter((recentQuery) => recentQuery.toLowerCase().startsWith(query.toLowerCase()))
|
189
|
+
.slice(0, max);
|
190
|
+
const suggestionElements = filteredQueries.map((value) => this.renderItem(value));
|
191
|
+
if (suggestionElements.length) {
|
192
|
+
suggestionElements.unshift(this.renderClear());
|
193
|
+
}
|
194
|
+
return suggestionElements;
|
195
|
+
}
|
196
|
+
renderClear() {
|
197
|
+
const partialItem = getPartialRecentQueryClearElement(this.bindings.i18n);
|
198
|
+
return {
|
199
|
+
...partialItem,
|
200
|
+
content: index.h(RecentQueryClear, { i18n: this.bindings.i18n }),
|
201
|
+
onSelect: () => {
|
202
|
+
this.recentQueriesList.clear();
|
203
|
+
this.bindings.triggerSuggestions();
|
204
|
+
},
|
205
|
+
};
|
206
|
+
}
|
207
|
+
renderItem(value) {
|
208
|
+
const query = this.bindings.searchBoxController.state.value;
|
209
|
+
const partialItem = getPartialRecentQueryElement(value, this.bindings.i18n);
|
210
|
+
return {
|
211
|
+
...partialItem,
|
212
|
+
content: (index.h(RecentQueriesContainer, null, index.h(RecentQueryIcon, { icon: this.renderIcon() }), index.h(RecentQueryText, { query: query, value: value }))),
|
213
|
+
onSelect: () => {
|
214
|
+
if (this.bindings.isStandalone) {
|
215
|
+
this.bindings.searchBoxController.updateText(value);
|
216
|
+
this.bindings.searchBoxController.submit();
|
217
|
+
return;
|
218
|
+
}
|
219
|
+
this.recentQueriesList.executeRecentQuery(this.recentQueriesList.state.queries.indexOf(value));
|
220
|
+
},
|
221
|
+
};
|
222
|
+
}
|
223
|
+
render() {
|
224
|
+
if (this.error) {
|
225
|
+
return (index.h("atomic-component-error", { key: 'a02dad03f81cece33429bdf45b2f1b8997dfb499', element: this.host, error: this.error }));
|
226
|
+
}
|
227
|
+
}
|
228
|
+
get host() { return index.getElement(this); }
|
229
|
+
};
|
230
|
+
|
231
|
+
exports.atomic_search_box_query_suggestions = AtomicSearchBoxQuerySuggestions;
|
232
|
+
exports.atomic_search_box_recent_queries = AtomicSearchBoxRecentQueries;
|
233
|
+
|
234
|
+
//# sourceMappingURL=atomic-search-box-query-suggestions_2.cjs.entry.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"file":"atomic-search-box-query-suggestions.atomic-search-box-recent-queries.entry.cjs.js","mappings":"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","names":["dispatchSearchBoxSuggestionsEvent","loadQuerySuggestActions","getPartialSearchBoxSuggestionElement","h","QuerySuggestionContainer","QuerySuggestionIcon","SearchIcon","QuerySuggestionText","encodeForDomAttribute","HighlightUtils","once","Clock","SafeStorage","buildRecentQueriesList","StorageItems"],"sources":["src/components/search/search-box-suggestions/atomic-search-box-query-suggestions/atomic-search-box-query-suggestions.tsx","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 {\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","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}
|
@@ -14,6 +14,7 @@ const utils = require('./utils-7153ae6b.js');
|
|
14
14
|
const stencilSuggestionManager = require('./stencil-suggestion-manager-2cba6d69.js');
|
15
15
|
const stencilButton = require('./stencil-button-94b89acc.js');
|
16
16
|
const suggestionsUtils = require('./suggestions-utils-61000808.js');
|
17
|
+
const slotUtils = require('./slot-utils-a30cb814.js');
|
17
18
|
require('./dom-utils-d4790328.js');
|
18
19
|
require('./event-utils-9bfcf3c5.js');
|
19
20
|
require('./init-queue-a18aa323.js');
|
@@ -427,6 +428,16 @@ const AtomicSearchBox = class {
|
|
427
428
|
})
|
428
429
|
: this.bindings.i18n.t('query-suggestions-unavailable');
|
429
430
|
}
|
431
|
+
renderSlotContent() {
|
432
|
+
const hasDefaultSlot = !!slotUtils.getDefaultSlotFromHost(this.host);
|
433
|
+
if (hasDefaultSlot) {
|
434
|
+
return index.h("slot", null);
|
435
|
+
}
|
436
|
+
return [
|
437
|
+
index.h("atomic-search-box-recent-queries", null),
|
438
|
+
index.h("atomic-search-box-query-suggestions", null),
|
439
|
+
];
|
440
|
+
}
|
430
441
|
render() {
|
431
442
|
this.updateBreakpoints();
|
432
443
|
const searchLabel = this.getSearchInputLabel(this.minimumQueryLength);
|
@@ -434,18 +445,18 @@ const AtomicSearchBox = class {
|
|
434
445
|
if (!this.suggestionManager.suggestions.length) {
|
435
446
|
this.registerSearchboxSuggestionEvents();
|
436
447
|
}
|
437
|
-
return (index.h(index.Host, { key: '
|
438
|
-
index.h(stencilSuggestionManager.SearchBoxWrapper, { key: '
|
448
|
+
return (index.h(index.Host, { key: '58faa4cda9561d97a09018d88071992175d330d3' }, this.renderAbsolutePositionSpacer(), [
|
449
|
+
index.h(stencilSuggestionManager.SearchBoxWrapper, { key: '9bb8cd4336c51d4ea2aa3a7f41b55dadaeed2eee', disabled: isDisabled, onFocusout: (event) => {
|
439
450
|
if (!utils.isFocusingOut(event)) {
|
440
451
|
return;
|
441
452
|
}
|
442
453
|
this.suggestionManager.clearSuggestions();
|
443
454
|
this.isExpanded = false;
|
444
|
-
} }, this.renderTextBox(searchLabel), index.h(SubmitButton, { key: '
|
455
|
+
} }, this.renderTextBox(searchLabel), index.h(SubmitButton, { key: 'acf07db6d58c8e2341970ca3ea4071e913494aa3', bindings: this.bindings, disabled: isDisabled, onClick: () => {
|
445
456
|
this.searchBox.submit();
|
446
457
|
this.suggestionManager.clearSuggestions();
|
447
458
|
} }), this.renderSuggestions()),
|
448
|
-
|
459
|
+
this.renderSlotContent(),
|
449
460
|
]));
|
450
461
|
}
|
451
462
|
get host() { return index.getElement(this); }
|