@coveo/atomic 3.64.1 → 3.65.1

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.
Files changed (97) hide show
  1. package/custom-elements.json +307 -173
  2. package/dist/assets/education.svg +0 -0
  3. package/dist/assets/events.svg +0 -0
  4. package/dist/assets/fulfillment_order.svg +0 -0
  5. package/dist/assets/opportunity_contact_role.svg +0 -0
  6. package/dist/assets/order_item.svg +0 -0
  7. package/dist/assets/recycle_bin.svg +0 -0
  8. package/dist/assets/store.svg +0 -0
  9. package/dist/cjs/components/commerce/atomic-commerce-search-box/atomic-commerce-search-box.cjs +108 -13
  10. package/dist/cjs/components/commerce/product-list/product-template-provider.cjs +2 -0
  11. package/dist/cjs/components/common/atomic-modal/atomic-modal.cjs +8 -1
  12. package/dist/cjs/components/common/atomic-tab-popover/atomic-tab-popover.cjs +1 -0
  13. package/dist/cjs/components/common/facets/timeframe-facet-common.cjs +2 -2
  14. package/dist/cjs/components/common/generated-answer/answer-announcement.cjs +8 -5
  15. package/dist/cjs/components/common/generated-answer/generated-answer-controller.cjs +6 -3
  16. package/dist/cjs/components/common/generated-answer/generated-content/markdown-utils.cjs +1 -0
  17. package/dist/cjs/components/common/generated-answer/render-disclaimer.cjs +6 -2
  18. package/dist/cjs/components/common/item-list/result-template-provider.cjs +1 -0
  19. package/dist/cjs/components/common/result-templates/result-template-controller.cjs +1 -0
  20. package/dist/cjs/components/common/suggestions/suggestion-manager.cjs +3 -0
  21. package/dist/cjs/components/insight/atomic-insight-facet/atomic-insight-facet.cjs +2 -2
  22. package/dist/cjs/components/insight/atomic-insight-generated-answer/atomic-insight-generated-answer.cjs +1 -0
  23. package/dist/cjs/components/insight/atomic-insight-result-attach-to-case-indicator/atomic-insight-result-attach-to-case-indicator.cjs +1 -0
  24. package/dist/cjs/components/insight/atomic-insight-user-actions-session/atomic-insight-user-actions-session.cjs +1 -0
  25. package/dist/cjs/components/insight/atomic-insight-user-actions-session/user-action.cjs +1 -0
  26. package/dist/cjs/components/search/atomic-generated-answer/atomic-generated-answer.cjs +2 -0
  27. package/dist/cjs/components/search/atomic-rating-range-facet/atomic-rating-range-facet.cjs +3 -4
  28. package/dist/cjs/components/search/atomic-search-box/atomic-search-box.cjs +107 -13
  29. package/dist/cjs/components/search/atomic-search-box-instant-results/atomic-search-box-instant-results.cjs +1 -0
  30. package/dist/cjs/global/environment.cjs +1 -1
  31. package/dist/cjs/utils/tailwind.global.tw.css.cjs +1 -1
  32. package/dist/cjs/versions.cjs +1 -1
  33. package/dist/esm/components/commerce/atomic-commerce-search-box/atomic-commerce-search-box.js +109 -14
  34. package/dist/esm/components/commerce/product-list/product-template-provider.js +2 -0
  35. package/dist/esm/components/common/atomic-modal/atomic-modal.js +9 -2
  36. package/dist/esm/components/common/atomic-tab-popover/atomic-tab-popover.js +1 -0
  37. package/dist/esm/components/common/facets/timeframe-facet-common.js +2 -2
  38. package/dist/esm/components/common/generated-answer/answer-announcement.js +8 -5
  39. package/dist/esm/components/common/generated-answer/generated-answer-controller.js +6 -3
  40. package/dist/esm/components/common/generated-answer/generated-content/markdown-utils.js +1 -0
  41. package/dist/esm/components/common/generated-answer/render-disclaimer.js +4 -3
  42. package/dist/esm/components/common/item-list/result-template-provider.js +1 -0
  43. package/dist/esm/components/common/result-templates/result-template-controller.js +1 -0
  44. package/dist/esm/components/common/suggestions/suggestion-manager.js +3 -0
  45. package/dist/esm/components/insight/atomic-insight-facet/atomic-insight-facet.js +2 -2
  46. package/dist/esm/components/insight/atomic-insight-generated-answer/atomic-insight-generated-answer.js +2 -1
  47. package/dist/esm/components/insight/atomic-insight-result-attach-to-case-indicator/atomic-insight-result-attach-to-case-indicator.js +1 -0
  48. package/dist/esm/components/insight/atomic-insight-user-actions-session/atomic-insight-user-actions-session.js +1 -0
  49. package/dist/esm/components/insight/atomic-insight-user-actions-session/user-action.js +1 -0
  50. package/dist/esm/components/search/atomic-generated-answer/atomic-generated-answer.js +3 -1
  51. package/dist/esm/components/search/atomic-rating-range-facet/atomic-rating-range-facet.js +3 -4
  52. package/dist/esm/components/search/atomic-search-box/atomic-search-box.js +109 -15
  53. package/dist/esm/components/search/atomic-search-box-instant-results/atomic-search-box-instant-results.js +1 -0
  54. package/dist/esm/global/environment.js +1 -1
  55. package/dist/esm/utils/tailwind.global.tw.css.js +1 -1
  56. package/dist/esm/versions.js +1 -1
  57. package/dist/lang/cs.json +1 -1
  58. package/dist/lang/da.json +1 -1
  59. package/dist/lang/de.json +1 -1
  60. package/dist/lang/dev.json +1 -1
  61. package/dist/lang/el.json +1 -1
  62. package/dist/lang/en.json +1 -1
  63. package/dist/lang/es.json +1 -1
  64. package/dist/lang/fi.json +1 -1
  65. package/dist/lang/fr.json +1 -1
  66. package/dist/lang/hu.json +1 -1
  67. package/dist/lang/id.json +1 -1
  68. package/dist/lang/it.json +1 -1
  69. package/dist/lang/ja.json +1 -1
  70. package/dist/lang/ko.json +1 -1
  71. package/dist/lang/nl.json +1 -1
  72. package/dist/lang/no.json +1 -1
  73. package/dist/lang/pl.json +1 -1
  74. package/dist/lang/pt-BR.json +1 -1
  75. package/dist/lang/pt.json +1 -1
  76. package/dist/lang/ru.json +1 -1
  77. package/dist/lang/sv.json +1 -1
  78. package/dist/lang/th.json +1 -1
  79. package/dist/lang/tr.json +1 -1
  80. package/dist/lang/zh-CN.json +1 -1
  81. package/dist/lang/zh-TW.json +1 -1
  82. package/dist/lang/zh.json +1 -1
  83. package/dist/types/components/commerce/atomic-commerce-search-box/atomic-commerce-search-box.d.ts +23 -6
  84. package/dist/types/components/commerce/product-list/product-template-provider.d.ts +2 -0
  85. package/dist/types/components/common/atomic-modal/atomic-modal.d.ts +6 -0
  86. package/dist/types/components/common/atomic-tab-popover/atomic-tab-popover.d.ts +1 -0
  87. package/dist/types/components/common/generated-answer/generated-content/markdown-utils.d.ts +1 -0
  88. package/dist/types/components/common/generated-answer/render-disclaimer.d.ts +3 -0
  89. package/dist/types/components/common/item-list/result-template-provider.d.ts +1 -0
  90. package/dist/types/components/common/layout/item-layout-sections.d.ts +1 -1
  91. package/dist/types/components/common/result-templates/result-template-controller.d.ts +1 -0
  92. package/dist/types/components/insight/atomic-insight-result-attach-to-case-indicator/atomic-insight-result-attach-to-case-indicator.d.ts +1 -0
  93. package/dist/types/components/insight/atomic-insight-user-actions-session/atomic-insight-user-actions-session.d.ts +1 -0
  94. package/dist/types/components/insight/atomic-insight-user-actions-session/user-action.d.ts +1 -0
  95. package/dist/types/components/search/atomic-search-box/atomic-search-box.d.ts +23 -6
  96. package/dist/types/components/search/atomic-search-box-instant-results/atomic-search-box-instant-results.d.ts +1 -0
  97. package/package.json +28 -27
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -30,11 +30,15 @@ __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
31
  AtomicCommerceSearchBox: ()=>AtomicCommerceSearchBox
32
32
  });
33
+ const bueno_namespaceObject = require("@coveo/bueno");
33
34
  const commerce_namespaceObject = require("@coveo/headless/commerce");
34
35
  const external_lit_namespaceObject = require("lit");
35
36
  const decorators_js_namespaceObject = require("lit/decorators.js");
36
37
  const class_map_js_namespaceObject = require("lit/directives/class-map.js");
37
38
  const ref_js_namespaceObject = require("lit/directives/ref.js");
39
+ const when_js_namespaceObject = require("lit/directives/when.js");
40
+ const button_cjs_namespaceObject = require("../../common/button.cjs");
41
+ const validate_props_controller_cjs_namespaceObject = require("../../common/validate-props-controller/validate-props-controller.cjs");
38
42
  const boolean_converter_cjs_namespaceObject = require("../../../converters/boolean-converter.cjs");
39
43
  const bind_state_cjs_namespaceObject = require("../../../decorators/bind-state.cjs");
40
44
  const binding_guard_cjs_namespaceObject = require("../../../decorators/binding-guard.cjs");
@@ -258,7 +262,7 @@ class AtomicCommerceSearchBox extends external_lit_namespaceObject.LitElement {
258
262
  }
259
263
  break;
260
264
  case 'Tab':
261
- this.suggestionManager.clearSuggestions();
265
+ if ('bottom' !== this.clearRecentButtonPosition || !this.clearRecentQueriesElement) this.suggestionManager.clearSuggestions();
262
266
  break;
263
267
  default:
264
268
  if (this.suggestionManager.keyboardActiveDescendant) this.suggestionManager.updateKeyboardActiveDescendant();
@@ -323,11 +327,59 @@ class AtomicCommerceSearchBox extends external_lit_namespaceObject.LitElement {
323
327
  }
324
328
  })}`;
325
329
  }
330
+ get clearRecentQueriesElement() {
331
+ const { leftSuggestionElements, rightSuggestionElements } = this.suggestionManager;
332
+ return [
333
+ leftSuggestionElements,
334
+ rightSuggestionElements
335
+ ].flatMap((elements)=>elements.slice(0, -1)).find((element)=>'recent-query-clear' === element.key);
336
+ }
337
+ renderRecentQueriesTitle() {
338
+ return (0, external_lit_namespaceObject.html)`<div
339
+ part="recent-query-title"
340
+ class="text-neutral-dark flex min-h-10 items-center px-4 font-bold"
341
+ @mousedown=${(e)=>e.preventDefault()}
342
+ >
343
+ ${this.bindings.i18n.t('recent-searches')}
344
+ </div>`;
345
+ }
346
+ renderClearRecentQueriesButton(element) {
347
+ const deselectSuggestion = ()=>{
348
+ this.suggestionManager.updateKeyboardActiveDescendant();
349
+ this.suggestionManager.updateActiveDescendant();
350
+ };
351
+ return (0, external_lit_namespaceObject.html)`<div
352
+ class="border-neutral flex border-t"
353
+ @mousedown=${(e)=>e.preventDefault()}
354
+ @mouseenter=${deselectSuggestion}
355
+ @focusin=${deselectSuggestion}
356
+ @keydown=${(e)=>{
357
+ if ('Escape' !== e.key) return;
358
+ this.textAreaRef.value?.focus();
359
+ this.isExpanded = false;
360
+ this.suggestionManager.clearSuggestions();
361
+ }}
362
+ >
363
+ ${(0, button_cjs_namespaceObject.renderButton)({
364
+ props: {
365
+ style: 'text-primary',
366
+ text: this.bindings.i18n.t('clear-recent-searches'),
367
+ part: 'recent-query-clear-button',
368
+ class: 'focus-visible:ring-ring-primary flex min-h-12 w-full items-center justify-center rounded-none px-4 focus-visible:ring-2 focus-visible:ring-inset',
369
+ onClick: (e)=>{
370
+ element.onSelect?.(e);
371
+ this.textAreaRef.value?.focus();
372
+ }
373
+ }
374
+ })(external_lit_namespaceObject.nothing)}
375
+ </div>`;
376
+ }
326
377
  renderSuggestions() {
327
378
  const part = `suggestions-wrapper ${this.suggestionManager.isDoubleList ? 'suggestions-double-list' : 'suggestions-single-list'}`;
328
379
  const isVisible = this.suggestionManager.hasSuggestions && this.isExpanded && !this.isSearchDisabledForEndUser;
329
380
  const classes = {
330
381
  'bg-background border-neutral absolute top-full left-0 z-10 flex w-full rounded-md border': true,
382
+ 'overflow-hidden': 'bottom' === this.clearRecentButtonPosition,
331
383
  hidden: !isVisible
332
384
  };
333
385
  return (0, external_lit_namespaceObject.html)`<div
@@ -338,25 +390,43 @@ class AtomicCommerceSearchBox extends external_lit_namespaceObject.LitElement {
338
390
  aria-label=${this.bindings.i18n.t(this.suggestionManager.isDoubleList ? 'search-suggestions-double-list' : 'search-suggestions-single-list')}
339
391
  aria-activedescendant=${this.suggestionManager.activeDescendant}
340
392
  >
341
- ${this.renderPanel('left', this.suggestionManager.leftSuggestionElements, (el)=>{
342
- this.suggestionManager.leftPanel = el;
343
- }, ()=>this.suggestionManager.leftPanel)}
344
- ${this.renderPanel('right', this.suggestionManager.rightSuggestionElements, (el)=>{
345
- this.suggestionManager.rightPanel = el;
346
- }, ()=>this.suggestionManager.rightPanel)}
393
+ ${this.renderPanel('left', this.suggestionManager.leftSuggestionElements, this.setLeftPanel, ()=>this.suggestionManager.leftPanel)}
394
+ ${this.renderPanel('right', this.suggestionManager.rightSuggestionElements, this.setRightPanel, ()=>this.suggestionManager.rightPanel)}
347
395
  </div>`;
348
396
  }
349
397
  renderPanel(side, elements, setRef, getRef) {
350
- if (!elements.length) return null;
398
+ let listElements = elements;
399
+ let isListNested = false;
400
+ let recentQueriesTitle;
401
+ let clearRecentQueriesButton;
402
+ switch(this.clearRecentButtonPosition){
403
+ case 'bottom':
404
+ {
405
+ isListNested = true;
406
+ const clearElement = this.clearRecentQueriesElement;
407
+ if (clearElement && elements.includes(clearElement)) {
408
+ listElements = elements.filter((element)=>element !== clearElement);
409
+ clearRecentQueriesButton = this.renderClearRecentQueriesButton(clearElement);
410
+ if (elements[0] === clearElement) recentQueriesTitle = this.renderRecentQueriesTitle();
411
+ }
412
+ break;
413
+ }
414
+ }
415
+ if (!listElements.length) return null;
416
+ const suggestions = listElements.map((suggestion, index)=>this.renderSuggestion(suggestion, index, listElements.length - 1, side));
351
417
  return (0, external_lit_namespaceObject.html)`<div
352
418
  part="suggestions suggestions-${side}"
353
- ${(0, ref_js_namespaceObject.ref)(setRef)}
419
+ ${(0, ref_js_namespaceObject.ref)(isListNested ? void 0 : setRef)}
354
420
  class="flex grow basis-1/2 flex-col"
355
421
  @mousedown=${(e)=>{
356
422
  if (e.target === getRef()) e.preventDefault();
357
423
  }}
358
424
  >
359
- ${elements.map((suggestion, index)=>this.renderSuggestion(suggestion, index, elements.length - 1, side))}
425
+ ${recentQueriesTitle}
426
+ ${(0, when_js_namespaceObject.when)(isListNested, ()=>(0, external_lit_namespaceObject.html)`<div class="flex grow flex-col" ${(0, ref_js_namespaceObject.ref)(setRef)}>
427
+ ${suggestions}
428
+ </div>`, ()=>suggestions)}
429
+ ${clearRecentQueriesButton}
360
430
  </div>`;
361
431
  }
362
432
  renderSuggestion(item, index, lastIndex, side) {
@@ -422,10 +492,25 @@ class AtomicCommerceSearchBox extends external_lit_namespaceObject.LitElement {
422
492
  announceClearSearchBoxToScreenReader() {
423
493
  this.searchBoxAriaMessage.message = this.bindings.i18n.t('search-box-cleared');
424
494
  }
425
- constructor(...args){
426
- super(...args), this.isExpanded = false, this.textAreaRef = (0, ref_js_namespaceObject.createRef)(), this.searchBoxSuggestionEventsQueue = [], this.searchBoxAriaMessage = new accessibility_utils_cjs_namespaceObject.AriaLiveRegionController(this, 'search-box'), this.suggestionsAriaMessage = new accessibility_utils_cjs_namespaceObject.AriaLiveRegionController(this, 'search-suggestions', true), this.numberOfQueries = 8, this.suggestionTimeout = 400, this.suggestionDelay = 0, this.disableSearch = false, this.minimumQueryLength = 0, this.clearFilters = true, this.updateBreakpoints = (0, utils_cjs_namespaceObject.once)(()=>(0, replace_breakpoint_utils_cjs_namespaceObject.updateBreakpoints)(this));
495
+ constructor(){
496
+ super(), this.isExpanded = false, this.textAreaRef = (0, ref_js_namespaceObject.createRef)(), this.setLeftPanel = (el)=>{
497
+ this.suggestionManager.leftPanel = el;
498
+ }, this.setRightPanel = (el)=>{
499
+ this.suggestionManager.rightPanel = el;
500
+ }, this.searchBoxSuggestionEventsQueue = [], this.searchBoxAriaMessage = new accessibility_utils_cjs_namespaceObject.AriaLiveRegionController(this, 'search-box'), this.suggestionsAriaMessage = new accessibility_utils_cjs_namespaceObject.AriaLiveRegionController(this, 'search-suggestions', true), this.numberOfQueries = 8, this.suggestionTimeout = 400, this.suggestionDelay = 0, this.disableSearch = false, this.minimumQueryLength = 0, this.clearFilters = true, this.clearRecentButtonPosition = 'top', this.updateBreakpoints = (0, utils_cjs_namespaceObject.once)(()=>(0, replace_breakpoint_utils_cjs_namespaceObject.updateBreakpoints)(this));
501
+ new validate_props_controller_cjs_namespaceObject.ValidatePropsController(this, ()=>({
502
+ clearRecentButtonPosition: this.clearRecentButtonPosition
503
+ }), AtomicCommerceSearchBox.propsSchema);
427
504
  }
428
505
  }
506
+ AtomicCommerceSearchBox.propsSchema = new bueno_namespaceObject.Schema({
507
+ clearRecentButtonPosition: new bueno_namespaceObject.StringValue({
508
+ constrainTo: [
509
+ 'top',
510
+ 'bottom'
511
+ ]
512
+ })
513
+ });
429
514
  AtomicCommerceSearchBox.shadowRootOptions = {
430
515
  ...external_lit_namespaceObject.LitElement.shadowRootOptions,
431
516
  delegatesFocus: true
@@ -499,6 +584,14 @@ _ts_decorate([
499
584
  converter: boolean_converter_cjs_namespaceObject.booleanConverter
500
585
  })
501
586
  ], AtomicCommerceSearchBox.prototype, "clearFilters", void 0);
587
+ _ts_decorate([
588
+ (0, decorators_js_namespaceObject.property)({
589
+ type: String,
590
+ attribute: 'clear-recent-button-position',
591
+ reflect: true
592
+ }),
593
+ _ts_metadata("design:type", String)
594
+ ], AtomicCommerceSearchBox.prototype, "clearRecentButtonPosition", void 0);
502
595
  _ts_decorate([
503
596
  (0, watch_cjs_namespaceObject.watch)('redirectionUrl'),
504
597
  _ts_metadata("design:type", Function),
@@ -515,7 +608,9 @@ _ts_decorate([
515
608
  AtomicCommerceSearchBox = _ts_decorate([
516
609
  (0, decorators_js_namespaceObject.customElement)('atomic-commerce-search-box'),
517
610
  (0, bindings_cjs_namespaceObject.bindings)(),
518
- with_tailwind_styles_cjs_namespaceObject.withTailwindStyles
611
+ with_tailwind_styles_cjs_namespaceObject.withTailwindStyles,
612
+ _ts_metadata("design:type", Function),
613
+ _ts_metadata("design:paramtypes", [])
519
614
  ], AtomicCommerceSearchBox);
520
615
  exports.AtomicCommerceSearchBox = __webpack_exports__.AtomicCommerceSearchBox;
521
616
  for(var __rspack_i in __webpack_exports__)if (-1 === [
@@ -33,6 +33,8 @@ __webpack_require__.d(__webpack_exports__, {
33
33
  const commerce_namespaceObject = require("@coveo/headless/commerce");
34
34
  const template_provider_cjs_namespaceObject = require("../../common/template-provider/template-provider.cjs");
35
35
  require("../atomic-product-template/atomic-product-template.cjs");
36
+ require("../atomic-product-section-name/atomic-product-section-name.cjs");
37
+ require("../atomic-product-section-visual/atomic-product-section-visual.cjs");
36
38
  class ProductTemplateProvider extends template_provider_cjs_namespaceObject.TemplateProvider {
37
39
  makeDefaultTemplate() {
38
40
  const content = document.createDocumentFragment();
@@ -44,6 +44,7 @@ const bindings_mixin_cjs_namespaceObject = require("../../../mixins/bindings-mix
44
44
  const event_utils_cjs_namespaceObject = require("../../../utils/event-utils.cjs");
45
45
  const replace_breakpoint_utils_cjs_namespaceObject = require("../../../utils/replace-breakpoint-utils.cjs");
46
46
  const utils_cjs_namespaceObject = require("../../../utils/utils.cjs");
47
+ require("../atomic-focus-trap/atomic-focus-trap.cjs");
47
48
  function _ts_decorate(decorators, target, key, desc) {
48
49
  var c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
49
50
  if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc);
@@ -84,7 +85,7 @@ class AtomicModal extends (0, bindings_mixin_cjs_namespaceObject.InitializeBindi
84
85
  role="dialog"
85
86
  aria-modal=${this.isOpen ? 'true' : 'false'}
86
87
  aria-labelledby=${this.headerId}
87
- .source=${this.source}
88
+ .source=${this.source ?? this.focusedElementBeforeOpen}
88
89
  .container=${this.container ?? this}
89
90
  ${(0, ref_js_namespaceObject.ref)(this.focusTrap)}
90
91
  .scope=${this.scope ?? this.bindings?.interfaceElement ?? document.body}
@@ -128,6 +129,8 @@ class AtomicModal extends (0, bindings_mixin_cjs_namespaceObject.InitializeBindi
128
129
  }
129
130
  async handleModalOpen() {
130
131
  const executionId = this.createExecutionTracker();
132
+ const focusedElement = (0, utils_cjs_namespaceObject.getFocusedElement)();
133
+ this.focusedElementBeforeOpen = focusedElement instanceof HTMLElement && !(0, utils_cjs_namespaceObject.isAncestorOf)(this, focusedElement) ? focusedElement : void 0;
131
134
  if (!this.shouldRender) {
132
135
  this.shouldRender = true;
133
136
  await this.updateComplete;
@@ -345,6 +348,10 @@ _ts_decorate([
345
348
  }),
346
349
  _ts_metadata("design:type", "u" < typeof HTMLElement ? Object : HTMLElement)
347
350
  ], AtomicModal.prototype, "source", void 0);
351
+ _ts_decorate([
352
+ (0, decorators_js_namespaceObject.state)(),
353
+ _ts_metadata("design:type", "u" < typeof HTMLElement ? Object : HTMLElement)
354
+ ], AtomicModal.prototype, "focusedElementBeforeOpen", void 0);
348
355
  _ts_decorate([
349
356
  (0, error_guard_cjs_namespaceObject.errorGuard)(),
350
357
  _ts_metadata("design:type", Function),
@@ -51,6 +51,7 @@ const error_guard_cjs_namespaceObject = require("../../../decorators/error-guard
51
51
  const with_tailwind_styles_cjs_namespaceObject = require("../../../decorators/with-tailwind-styles.cjs");
52
52
  const arrow_bottom_rounded_cjs_namespaceObject = require("../../../images/arrow-bottom-rounded.cjs");
53
53
  var arrow_bottom_rounded_cjs_default = /*#__PURE__*/ __webpack_require__.n(arrow_bottom_rounded_cjs_namespaceObject);
54
+ require("../atomic-icon/atomic-icon.cjs");
54
55
  function _ts_decorate(decorators, target, key, desc) {
55
56
  var c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
56
57
  if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc);
@@ -188,8 +188,8 @@ class TimeframeFacetCommon {
188
188
  label: this.props.label
189
189
  }
190
190
  })((0, external_lit_namespaceObject.html)`<ul class="mt-3" part="values">
191
- ${children}
192
- </ul>`);
191
+ ${children}
192
+ </ul>`);
193
193
  }
194
194
  renderHeader(isCollapsed, headerFocus, onToggleCollapse) {
195
195
  return (0, facet_header_cjs_namespaceObject.renderFacetHeader)({
@@ -53,12 +53,15 @@ const getAnswerAnnouncement = (answer, i18n)=>{
53
53
  message: i18n.t('generating-answer'),
54
54
  assertive: false
55
55
  };
56
- if (answer.answer?.trim()) return {
57
- message: i18n.t('answer-generated', {
56
+ if (answer.answer?.trim()) {
57
+ const answerGenerated = i18n.t('answer-generated', {
58
58
  answer: (0, markdown_utils_cjs_namespaceObject.markdownToPlainText)(answer.answer)
59
- }),
60
- assertive: false
61
- };
59
+ });
60
+ return {
61
+ message: `${answerGenerated} ${i18n.t('generated-answer-disclaimer-announcement')}`,
62
+ assertive: false
63
+ };
64
+ }
62
65
  return SILENT;
63
66
  };
64
67
  const isSettledAnswer = (answer)=>Boolean(answer && !answer.isStreaming && !answer.isLoading && !answer.error && !answer.cannotAnswer && answer.answer?.trim());
@@ -71,9 +71,12 @@ class GeneratedAnswerController {
71
71
  if (isHidden) return bindings.i18n.t('generated-answer-hidden');
72
72
  if (isGenerating) return bindings.i18n.t('generating-answer');
73
73
  if (hasError || cannotAnswer) return bindings.i18n.t('answer-could-not-be-generated');
74
- if (hasNonEmptyAnswer) return bindings.i18n.t('answer-generated', {
75
- answer: (0, markdown_utils_cjs_namespaceObject.markdownToPlainText)(state.answer)
76
- });
74
+ if (hasNonEmptyAnswer) {
75
+ const answerGenerated = bindings.i18n.t('answer-generated', {
76
+ answer: (0, markdown_utils_cjs_namespaceObject.markdownToPlainText)(state.answer)
77
+ });
78
+ return `${answerGenerated} ${bindings.i18n.t('generated-answer-disclaimer-announcement')}`;
79
+ }
77
80
  return '';
78
81
  }
79
82
  isStatusAssertive() {
@@ -33,6 +33,7 @@ __webpack_require__.d(__webpack_exports__, {
33
33
  });
34
34
  const external_marked_namespaceObject = require("marked");
35
35
  const utils_cjs_namespaceObject = require("../../../../utils/utils.cjs");
36
+ require("../../atomic-generated-answer-inline-link/atomic-generated-answer-inline-link.cjs");
36
37
  const toInlinePlainText = (textWithHtml)=>{
37
38
  const withoutHtmlTags = textWithHtml.replace(/<[^>]*>/g, ' ');
38
39
  const withCollapsedWhitespaces = withoutHtmlTags.replace(/\s{2,}/g, ' ');
@@ -28,19 +28,23 @@ var __webpack_require__ = {};
28
28
  var __webpack_exports__ = {};
29
29
  __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
+ DISCLAIMER_ID: ()=>DISCLAIMER_ID,
31
32
  renderDisclaimer: ()=>renderDisclaimer
32
33
  });
33
34
  const external_lit_namespaceObject = require("lit");
35
+ const DISCLAIMER_ID = 'generated-answer-disclaimer';
34
36
  const renderDisclaimer = ({ props })=>{
35
37
  const { i18n } = props;
36
38
  return (0, external_lit_namespaceObject.html)`
37
- <div class="flex justify-end text-neutral-dark text-xs/[1rem]">
39
+ <small id=${DISCLAIMER_ID} class="flex justify-end text-neutral-dark text-xs/[1rem]">
38
40
  <slot name="disclaimer">${i18n.t('generated-answer-disclaimer')}</slot>
39
- </div>
41
+ </small>
40
42
  `;
41
43
  };
44
+ exports.DISCLAIMER_ID = __webpack_exports__.DISCLAIMER_ID;
42
45
  exports.renderDisclaimer = __webpack_exports__.renderDisclaimer;
43
46
  for(var __rspack_i in __webpack_exports__)if (-1 === [
47
+ "DISCLAIMER_ID",
44
48
  "renderDisclaimer"
45
49
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
46
50
  Object.defineProperty(exports, '__esModule', {
@@ -32,6 +32,7 @@ __webpack_require__.d(__webpack_exports__, {
32
32
  });
33
33
  const headless_namespaceObject = require("@coveo/headless");
34
34
  const template_provider_cjs_namespaceObject = require("../template-provider/template-provider.cjs");
35
+ require("../../search/atomic-result-link/atomic-result-link.cjs");
35
36
  class ResultTemplateProvider extends template_provider_cjs_namespaceObject.TemplateProvider {
36
37
  makeDefaultTemplate() {
37
38
  const content = document.createDocumentFragment();
@@ -31,6 +31,7 @@ __webpack_require__.d(__webpack_exports__, {
31
31
  ResultTemplateController: ()=>ResultTemplateController
32
32
  });
33
33
  const base_template_controller_cjs_namespaceObject = require("../template-controller/base-template-controller.cjs");
34
+ require("../../search/atomic-result-link/atomic-result-link.cjs");
34
35
  class ResultTemplateController extends base_template_controller_cjs_namespaceObject.BaseTemplateController {
35
36
  getTemplate(conditions) {
36
37
  const baseTemplate = this.getBaseTemplate(conditions);
@@ -100,11 +100,13 @@ class SuggestionManager {
100
100
  const panelHasActiveDescendant = this.previousActiveDescendantElement && panel.contains(this.previousActiveDescendantElement);
101
101
  const newValue = panelHasActiveDescendant ? this.previousActiveDescendantElement : panel.firstElementChild;
102
102
  this.updateDescendants(newValue.id);
103
+ this.updateKeyboardActiveDescendant(newValue.id);
103
104
  }
104
105
  }
105
106
  clearSuggestions() {
106
107
  this.clearSuggestionElements();
107
108
  this.updateActiveDescendant();
109
+ this.updateKeyboardActiveDescendant();
108
110
  }
109
111
  async focusNextValue() {
110
112
  if (!this.hasSuggestions || !this.nextOrFirstValue) return;
@@ -153,6 +155,7 @@ class SuggestionManager {
153
155
  }
154
156
  async executeQuerySuggestion() {
155
157
  this.updateActiveDescendant();
158
+ this.updateKeyboardActiveDescendant();
156
159
  const settled = await Promise.allSettled(this.suggestions.map((suggestion)=>(0, promise_utils_cjs_namespaceObject.promiseTimeout)(suggestion.onInput ? suggestion.onInput() : Promise.resolve(), this.ownerSearchBoxProps.getSuggestionTimeout())));
157
160
  const fulfilledSuggestions = [];
158
161
  settled.forEach((prom, j)=>{
@@ -155,8 +155,8 @@ class AtomicInsightFacet extends external_lit_namespaceObject.LitElement {
155
155
  label: this.label
156
156
  }
157
157
  })((0, external_lit_namespaceObject.html)`<ul class="mt-3 ${'box' === this.displayValuesAs ? 'box-container' : ''}" part="values">
158
- ${children}
159
- </ul>`);
158
+ ${children}
159
+ </ul>`);
160
160
  }
161
161
  renderValues() {
162
162
  const firstNewValueIndex = (0, facet_common_cjs_namespaceObject.getFirstNewFacetValueIndex)(this.facet.state.values, this.valuesBeforeShowMore);
@@ -143,6 +143,7 @@ class AtomicInsightGeneratedAnswer extends external_lit_namespaceObject.LitEleme
143
143
  class=${contentClasses}
144
144
  part="container"
145
145
  aria-label=${this.bindings.i18n.t('generated-answer-title')}
146
+ aria-describedby=${this.isAnswerVisible ? render_disclaimer_cjs_namespaceObject.DISCLAIMER_ID : external_lit_namespaceObject.nothing}
146
147
  >
147
148
  <div part="generated-content">
148
149
  ${this.renderCardHeaderWrapper()}
@@ -50,6 +50,7 @@ const error_guard_cjs_namespaceObject = require("../../../decorators/error-guard
50
50
  const with_tailwind_styles_cjs_namespaceObject = require("../../../decorators/with-tailwind-styles.cjs");
51
51
  const attach_cjs_namespaceObject = require("../../../images/attach.cjs");
52
52
  var attach_cjs_default = /*#__PURE__*/ __webpack_require__.n(attach_cjs_namespaceObject);
53
+ require("../../common/atomic-icon/atomic-icon.cjs");
53
54
  function _ts_decorate(decorators, target, key, desc) {
54
55
  var c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
55
56
  if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc);
@@ -53,6 +53,7 @@ var flag_cjs_default = /*#__PURE__*/ __webpack_require__.n(flag_cjs_namespaceObj
53
53
  const three_dots_cjs_namespaceObject = require("../../../images/three-dots.cjs");
54
54
  var three_dots_cjs_default = /*#__PURE__*/ __webpack_require__.n(three_dots_cjs_namespaceObject);
55
55
  const external_user_action_cjs_namespaceObject = require("./user-action.cjs");
56
+ require("../../common/atomic-icon/atomic-icon.cjs");
56
57
  function _ts_decorate(decorators, target, key, desc) {
57
58
  var c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
58
59
  if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc);
@@ -52,6 +52,7 @@ const quickview_cjs_namespaceObject = require("../../../images/quickview.cjs");
52
52
  var quickview_cjs_default = /*#__PURE__*/ __webpack_require__.n(quickview_cjs_namespaceObject);
53
53
  const search_cjs_namespaceObject = require("../../../images/search.cjs");
54
54
  var search_cjs_default = /*#__PURE__*/ __webpack_require__.n(search_cjs_namespaceObject);
55
+ require("../../common/atomic-icon/atomic-icon.cjs");
55
56
  const icons = {
56
57
  SEARCH: search_cjs_default(),
57
58
  CLICK: document_cjs_default(),
@@ -163,6 +163,7 @@ class AtomicGeneratedAnswer extends external_lit_namespaceObject.LitElement {
163
163
  class=${contentClasses}
164
164
  part="container"
165
165
  aria-label=${this.bindings.i18n.t('generated-answer-title')}
166
+ aria-describedby=${this.isAnswerVisible ? render_disclaimer_cjs_namespaceObject.DISCLAIMER_ID : external_lit_namespaceObject.nothing}
166
167
  >
167
168
  <div part="generated-content">
168
169
  ${this.renderCardHeaderWrapper()}
@@ -175,6 +176,7 @@ class AtomicGeneratedAnswer extends external_lit_namespaceObject.LitElement {
175
176
  'agent-scrollable': this.areFollowUpsEnabled
176
177
  })}
177
178
  tabindex=${this.areFollowUpsEnabled ? '0' : external_lit_namespaceObject.nothing}
179
+ aria-describedby=${this.areFollowUpsEnabled ? render_disclaimer_cjs_namespaceObject.DISCLAIMER_ID : external_lit_namespaceObject.nothing}
178
180
  >
179
181
  <article>${this.renderAnswerContent()}</article>
180
182
  </div>
@@ -239,8 +239,8 @@ class AtomicRatingRangeFacet extends external_lit_namespaceObject.LitElement {
239
239
  label: this.label
240
240
  }
241
241
  })((0, external_lit_namespaceObject.html)`<ul class="mt-3" part="values">
242
- ${children}
243
- </ul>`);
242
+ ${children}
243
+ </ul>`);
244
244
  }
245
245
  renderValues() {
246
246
  return this.renderValuesContainer(this.valuesToRender.map((value)=>this.renderValue(value, ()=>this.facet.toggleSingleSelect(value))));
@@ -257,8 +257,7 @@ class AtomicRatingRangeFacet extends external_lit_namespaceObject.LitElement {
257
257
  }
258
258
  });
259
259
  if (!this.valuesToRender.length) return external_lit_namespaceObject.nothing;
260
- return (0, facet_container_cjs_namespaceObject.renderFacetContainer)()((0, external_lit_namespaceObject.html)`${this.renderHeader()}
261
- ${(0, when_js_namespaceObject.when)(!this.isCollapsed, ()=>this.renderValues())}`);
260
+ return (0, facet_container_cjs_namespaceObject.renderFacetContainer)()((0, external_lit_namespaceObject.html)`${this.renderHeader()} ${(0, when_js_namespaceObject.when)(!this.isCollapsed, ()=>this.renderValues())}`);
262
261
  })}`;
263
262
  }
264
263
  constructor(){