@coveo/atomic 3.61.4 → 3.62.0

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 (54) hide show
  1. package/custom-elements.json +886 -814
  2. package/dist/cjs/components/commerce/atomic-commerce-category-facet/atomic-commerce-category-facet.cjs +19 -7
  3. package/dist/cjs/components/common/atomic-generated-answer-content/atomic-generated-answer-content.cjs +23 -1
  4. package/dist/cjs/components/common/atomic-generated-answer-thread/atomic-generated-answer-thread.cjs +1 -1
  5. package/dist/cjs/components/common/atomic-generated-answer-thread-item/atomic-generated-answer-thread-item.cjs +3 -2
  6. package/dist/cjs/components/common/facets/category-facet/active-value.cjs +69 -0
  7. package/dist/cjs/components/common/facets/category-facet/selected-value.cjs +78 -0
  8. package/dist/cjs/components/common/facets/category-facet/value-link.cjs +5 -6
  9. package/dist/cjs/components/common/generated-answer/answer-announcement.cjs +73 -0
  10. package/dist/cjs/components/common/generated-answer/copy-button.cjs +2 -1
  11. package/dist/cjs/components/common/generated-answer/feedback-button.cjs +2 -1
  12. package/dist/cjs/components/common/generated-answer/generated-content/markdown-utils.cjs +1 -2
  13. package/dist/cjs/components/common/generated-answer/generated-content-container.cjs +6 -1
  14. package/dist/cjs/components/common/generated-answer/render-answer-content.cjs +5 -2
  15. package/dist/cjs/components/common/generated-answer/show-button.cjs +1 -0
  16. package/dist/cjs/components/insight/atomic-insight-generated-answer/atomic-insight-generated-answer.cjs +3 -1
  17. package/dist/cjs/components/search/atomic-category-facet/atomic-category-facet.cjs +19 -8
  18. package/dist/cjs/components/search/atomic-generated-answer/atomic-generated-answer.cjs +8 -1
  19. package/dist/cjs/global/environment.cjs +1 -1
  20. package/dist/cjs/versions.cjs +1 -1
  21. package/dist/esm/components/commerce/atomic-commerce-category-facet/atomic-commerce-category-facet.js +19 -7
  22. package/dist/esm/components/common/atomic-generated-answer-content/atomic-generated-answer-content.js +23 -1
  23. package/dist/esm/components/common/atomic-generated-answer-thread/atomic-generated-answer-thread.js +1 -1
  24. package/dist/esm/components/common/atomic-generated-answer-thread-item/atomic-generated-answer-thread-item.js +3 -2
  25. package/dist/esm/components/common/facets/category-facet/active-value.js +31 -0
  26. package/dist/esm/components/common/facets/category-facet/selected-value.js +30 -0
  27. package/dist/esm/components/common/facets/category-facet/value-link.js +5 -6
  28. package/dist/esm/components/common/generated-answer/answer-announcement.js +32 -0
  29. package/dist/esm/components/common/generated-answer/copy-button.js +2 -1
  30. package/dist/esm/components/common/generated-answer/feedback-button.js +2 -1
  31. package/dist/esm/components/common/generated-answer/generated-content/markdown-utils.js +1 -2
  32. package/dist/esm/components/common/generated-answer/generated-content-container.js +6 -1
  33. package/dist/esm/components/common/generated-answer/render-answer-content.js +5 -2
  34. package/dist/esm/components/common/generated-answer/show-button.js +1 -0
  35. package/dist/esm/components/insight/atomic-insight-generated-answer/atomic-insight-generated-answer.js +3 -1
  36. package/dist/esm/components/search/atomic-category-facet/atomic-category-facet.js +19 -8
  37. package/dist/esm/components/search/atomic-generated-answer/atomic-generated-answer.js +8 -1
  38. package/dist/esm/global/environment.js +1 -1
  39. package/dist/esm/versions.js +1 -1
  40. package/dist/types/components/commerce/atomic-commerce-category-facet/atomic-commerce-category-facet.d.ts +7 -1
  41. package/dist/types/components/common/atomic-generated-answer-content/atomic-generated-answer-content.d.ts +7 -0
  42. package/dist/types/components/common/facets/category-facet/active-value.d.ts +19 -0
  43. package/dist/types/components/common/facets/category-facet/selected-value.d.ts +22 -0
  44. package/dist/types/components/common/facets/category-facet/value-link.d.ts +0 -1
  45. package/dist/types/components/common/generated-answer/answer-announcement.d.ts +22 -0
  46. package/dist/types/components/common/generated-answer/generated-content-container.d.ts +1 -0
  47. package/dist/types/components/common/generated-answer/show-button.d.ts +1 -0
  48. package/dist/types/components/insight/atomic-insight-generated-answer/atomic-insight-generated-answer.d.ts +1 -0
  49. package/dist/types/components/search/atomic-category-facet/atomic-category-facet.d.ts +8 -2
  50. package/dist/types/components/search/atomic-generated-answer/atomic-generated-answer.d.ts +2 -0
  51. package/package.json +9 -9
  52. package/dist/cjs/components/common/facets/category-facet/parent-value-link.cjs +0 -47
  53. package/dist/esm/components/common/facets/category-facet/parent-value-link.js +0 -9
  54. package/dist/types/components/common/facets/category-facet/parent-value-link.d.ts +0 -6
@@ -59,13 +59,14 @@ const error_guard_cjs_namespaceObject = require("../../../decorators/error-guard
59
59
  const with_tailwind_styles_cjs_namespaceObject = require("../../../decorators/with-tailwind-styles.cjs");
60
60
  const accessibility_utils_cjs_namespaceObject = require("../../../utils/accessibility-utils.cjs");
61
61
  const field_utils_cjs_namespaceObject = require("../../../utils/field-utils.cjs");
62
+ const active_value_cjs_namespaceObject = require("../../common/facets/category-facet/active-value.cjs");
62
63
  const all_categories_button_cjs_namespaceObject = require("../../common/facets/category-facet/all-categories-button.cjs");
63
64
  const children_as_tree_container_cjs_namespaceObject = require("../../common/facets/category-facet/children-as-tree-container.cjs");
64
65
  const parent_as_tree_container_cjs_namespaceObject = require("../../common/facets/category-facet/parent-as-tree-container.cjs");
65
66
  const parent_button_cjs_namespaceObject = require("../../common/facets/category-facet/parent-button.cjs");
66
- const parent_value_link_cjs_namespaceObject = require("../../common/facets/category-facet/parent-value-link.cjs");
67
67
  const search_results_container_cjs_namespaceObject = require("../../common/facets/category-facet/search-results-container.cjs");
68
68
  const search_value_cjs_namespaceObject = require("../../common/facets/category-facet/search-value.cjs");
69
+ const selected_value_cjs_namespaceObject = require("../../common/facets/category-facet/selected-value.cjs");
69
70
  const value_as_tree_container_cjs_namespaceObject = require("../../common/facets/category-facet/value-as-tree-container.cjs");
70
71
  const value_link_cjs_namespaceObject = require("../../common/facets/category-facet/value-link.cjs");
71
72
  const facet_common_tw_css_cjs_namespaceObject = require("../../common/facets/facet-common.tw.css.cjs");
@@ -136,6 +137,21 @@ class AtomicCommerceCategoryFacet extends external_lit_namespaceObject.LitElemen
136
137
  }
137
138
  });
138
139
  }
140
+ renderSelectedValue() {
141
+ const activeValue = this.facetState.selectedValueAncestry?.at(-1);
142
+ if (!activeValue) return external_lit_namespaceObject.nothing;
143
+ return (0, selected_value_cjs_namespaceObject.renderCategoryFacetSelectedValue)({
144
+ props: {
145
+ displayValue: (0, field_utils_cjs_namespaceObject.getFieldValueCaption)(this.facetState.field, activeValue.value, this.bindings.i18n),
146
+ label: this.displayName,
147
+ i18n: this.bindings.i18n,
148
+ onClearFilters: ()=>{
149
+ this.focusTargets.activeValueFocus.focusAfterSearch();
150
+ this.facet.deselectAll();
151
+ }
152
+ }
153
+ });
154
+ }
139
155
  renderValuesTree(parents, isRoot) {
140
156
  if (!this.hasParents) return this.renderChildren();
141
157
  if (isRoot) return (0, value_as_tree_container_cjs_namespaceObject.renderCategoryFacetTreeValueContainer)()((0, external_lit_namespaceObject.html)`
@@ -180,16 +196,12 @@ class AtomicCommerceCategoryFacet extends external_lit_namespaceObject.LitElemen
180
196
  const activeParent = parents[0];
181
197
  const activeParentDisplayValue = (0, field_utils_cjs_namespaceObject.getFieldValueCaption)(this.facetState?.field, activeParent.value, this.bindings.i18n);
182
198
  return (0, external_lit_namespaceObject.html)`
183
- ${(0, parent_value_link_cjs_namespaceObject.renderCategoryFacetParentValueLink)({
199
+ ${(0, active_value_cjs_namespaceObject.renderCategoryFacetActiveValue)({
184
200
  props: {
185
201
  displayValue: activeParentDisplayValue,
186
202
  numberOfResults: activeParent.numberOfResults,
187
203
  i18n: this.bindings.i18n,
188
204
  isLeafValue: activeParent.isLeafValue,
189
- onClick: ()=>{
190
- this.focusTargets.activeValueFocus.focusAfterSearch();
191
- this.facet.deselectAll();
192
- },
193
205
  searchQuery: this.facetState.facetSearch.query,
194
206
  setRef: (el)=>{
195
207
  this.focusTargets.activeValueFocus.setTarget(el);
@@ -214,7 +226,6 @@ class AtomicCommerceCategoryFacet extends external_lit_namespaceObject.LitElemen
214
226
  this.focusTargets.activeValueFocus.focusAfterSearch();
215
227
  this.facet.toggleSelect(facetValue);
216
228
  },
217
- isParent: false,
218
229
  isSelected,
219
230
  searchQuery: this.facetState.facetSearch.query,
220
231
  isLeafValue: facetValue.isLeafValue,
@@ -289,6 +300,7 @@ class AtomicCommerceCategoryFacet extends external_lit_namespaceObject.LitElemen
289
300
  onClear: ()=>this.facet.facetSearch.clear()
290
301
  }
291
302
  })}
303
+ ${this.renderSelectedValue()}
292
304
  ${(0, when_js_namespaceObject.when)((0, facet_search_utils_cjs_namespaceObject.shouldDisplaySearchResults)(facetSearch), ()=>(0, external_lit_namespaceObject.html)`
293
305
  ${(0, when_js_namespaceObject.when)(facetSearch.values.length > 0, ()=>(0, facet_values_group_cjs_namespaceObject.renderFacetValuesGroup)({
294
306
  props: {
@@ -46,7 +46,9 @@ const when_js_namespaceObject = require("lit/directives/when.js");
46
46
  const atomic_generated_answer_tw_css_cjs_namespaceObject = require("../../search/atomic-generated-answer/atomic-generated-answer.tw.css.cjs");
47
47
  var atomic_generated_answer_tw_css_cjs_default = /*#__PURE__*/ __webpack_require__.n(atomic_generated_answer_tw_css_cjs_namespaceObject);
48
48
  const with_tailwind_styles_cjs_namespaceObject = require("../../../decorators/with-tailwind-styles.cjs");
49
+ const accessibility_utils_cjs_namespaceObject = require("../../../utils/accessibility-utils.cjs");
49
50
  require("../atomic-agent-stream-of-thought/atomic-agent-stream-of-thought.cjs");
51
+ const answer_announcement_cjs_namespaceObject = require("../generated-answer/answer-announcement.cjs");
50
52
  const generated_content_container_cjs_namespaceObject = require("../generated-answer/generated-content-container.cjs");
51
53
  const render_feedback_and_copy_buttons_cjs_namespaceObject = require("../generated-answer/render-feedback-and-copy-buttons.cjs");
52
54
  const source_citations_cjs_namespaceObject = require("../generated-answer/source-citations.cjs");
@@ -100,6 +102,24 @@ class AtomicGeneratedAnswerContent extends external_lit_namespaceObject.LitEleme
100
102
  </div>
101
103
  `;
102
104
  }
105
+ updated() {
106
+ this.announceAnswerStatus();
107
+ }
108
+ announceAnswerStatus() {
109
+ if (!this.i18n || !this.generatedAnswer) return;
110
+ const { message, assertive } = (0, answer_announcement_cjs_namespaceObject.getAnswerAnnouncement)(this.generatedAnswer, this.i18n);
111
+ if (!this.hasObservedAnswer) {
112
+ this.hasObservedAnswer = true;
113
+ if ((0, answer_announcement_cjs_namespaceObject.isSettledAnswer)(this.generatedAnswer)) {
114
+ this.lastAnnouncedMessage = message;
115
+ return;
116
+ }
117
+ }
118
+ if (message === this.lastAnnouncedMessage) return;
119
+ this.lastAnnouncedMessage = message;
120
+ if (assertive) this.ariaErrorMessage.message = message;
121
+ else this.ariaMessage.message = message;
122
+ }
103
123
  renderFeedbackAndCopyButtons(answerId) {
104
124
  return (0, external_lit_namespaceObject.html)`
105
125
  <div class="mt-4" part="feedback-and-copy-buttons">
@@ -130,9 +150,11 @@ class AtomicGeneratedAnswerContent extends external_lit_namespaceObject.LitEleme
130
150
  try {
131
151
  await navigator.clipboard.writeText(answer);
132
152
  this.copyState = 'success';
153
+ this.ariaCopyMessage.message = this.i18n.t('generated-answer-copied');
133
154
  this.onCopyToClipboard(answerId);
134
155
  } catch (error) {
135
156
  this.copyState = 'error';
157
+ this.ariaCopyMessage.message = this.i18n.t('failed-to-copy-generated-answer');
136
158
  console.error(`Failed to copy to clipboard: ${error}`);
137
159
  }
138
160
  this.scheduleCopyReset();
@@ -169,7 +191,7 @@ class AtomicGeneratedAnswerContent extends external_lit_namespaceObject.LitEleme
169
191
  `;
170
192
  }
171
193
  constructor(...args){
172
- super(...args), this.answerId = '', this.renderCitations = ()=>(0, external_lit_namespaceObject.html)``, this.onClickLike = ()=>{}, this.onClickDislike = ()=>{}, this.onCopyToClipboard = ()=>{}, this.copyState = 'idle';
194
+ super(...args), this.answerId = '', this.renderCitations = ()=>(0, external_lit_namespaceObject.html)``, this.onClickLike = ()=>{}, this.onClickDislike = ()=>{}, this.onCopyToClipboard = ()=>{}, this.copyState = 'idle', this.ariaMessage = new accessibility_utils_cjs_namespaceObject.AriaLiveRegionController(this, 'generated-answer', false, true), this.ariaErrorMessage = new accessibility_utils_cjs_namespaceObject.AriaLiveRegionController(this, 'generated-answer-error', true), this.ariaCopyMessage = new accessibility_utils_cjs_namespaceObject.AriaLiveRegionController(this, 'generated-answer-copy', true), this.hasObservedAnswer = false;
173
195
  }
174
196
  }
175
197
  AtomicGeneratedAnswerContent.styles = [
@@ -138,7 +138,7 @@ class AtomicGeneratedAnswerThread extends external_lit_namespaceObject.LitElemen
138
138
  `;
139
139
  return (0, external_lit_namespaceObject.html)`
140
140
  <li class="group/title grid min-w-0 grid-cols-[10px_1fr] gap-x-3">
141
- <div class="row-span-2 flex flex-col items-center">
141
+ <div class="row-span-2 flex flex-col items-center" aria-hidden="true">
142
142
  <div class="flex justify-center items-center text-base h-[1lh] my-1.5">
143
143
  <span class=${timelineDotClasses}></span>
144
144
  </div>
@@ -121,7 +121,7 @@ class AtomicGeneratedAnswerThreadItem extends external_lit_namespaceObject.LitEl
121
121
  const timelineConnectorClasses = "relative h-full w-px bg-neutral transition-colors duration-150 group-hover:bg-neutral-dark before:absolute before:left-0 before:top-[-8px] before:h-[8px] before:w-px before:bg-neutral before:transition-colors before:duration-150 group-hover:before:bg-neutral-dark before:content-[''] after:absolute after:bottom-[-8px] after:left-0 after:h-[8px] after:w-px after:bg-neutral after:transition-colors after:duration-150 group-hover:after:bg-neutral-dark after:content-['']";
122
122
  return (0, external_lit_namespaceObject.html)`
123
123
  <div class="group/title grid min-w-0 grid-cols-[10px_1fr] gap-x-3">
124
- <div class="row-span-2 flex flex-col items-center">
124
+ <div class="row-span-2 flex flex-col items-center" aria-hidden="true">
125
125
  <div class=${timelineDotToggleClasses}>
126
126
  ${(0, when_js_namespaceObject.when)(this.showTimelineDot, ()=>(0, external_lit_namespaceObject.html)`
127
127
  <span
@@ -155,8 +155,9 @@ class AtomicGeneratedAnswerThreadItem extends external_lit_namespaceObject.LitEl
155
155
  >${this.title}</span
156
156
  >`)}
157
157
  </div>
158
- <div id=${this.contentId} class="min-w-0 pl-2 py-1.5">
158
+ <div class="min-w-0 pl-2 py-1.5">
159
159
  <div
160
+ id=${this.contentId}
160
161
  class="mb-2"
161
162
  ?hidden=${!this.isExpanded}
162
163
  aria-hidden=${this.isExpanded ? 'false' : 'true'}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
13
+ };
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
+ })();
18
+ (()=>{
19
+ __webpack_require__.r = (exports1)=>{
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
+ value: 'Module'
22
+ });
23
+ Object.defineProperty(exports1, '__esModule', {
24
+ value: true
25
+ });
26
+ };
27
+ })();
28
+ var __webpack_exports__ = {};
29
+ __webpack_require__.r(__webpack_exports__);
30
+ __webpack_require__.d(__webpack_exports__, {
31
+ renderCategoryFacetActiveValue: ()=>renderCategoryFacetActiveValue
32
+ });
33
+ const external_lit_namespaceObject = require("lit");
34
+ const keyed_js_namespaceObject = require("lit/directives/keyed.js");
35
+ const ref_js_namespaceObject = require("lit/directives/ref.js");
36
+ const facet_value_label_highlight_cjs_namespaceObject = require("../facet-value-label-highlight/facet-value-label-highlight.cjs");
37
+ const renderCategoryFacetActiveValue = ({ props: { displayValue, numberOfResults, i18n, searchQuery, isLeafValue, setRef } })=>(children)=>{
38
+ const count = numberOfResults.toLocaleString(i18n.language);
39
+ return (0, external_lit_namespaceObject.html)`${(0, keyed_js_namespaceObject.keyed)(displayValue, (0, external_lit_namespaceObject.html)`<li class="contents">
40
+ <span
41
+ part="active-parent ${isLeafValue ? 'leaf-value' : 'node-value'}"
42
+ class="text-primary flex w-full items-center truncate px-2 py-2.5 text-left"
43
+ aria-current="true"
44
+ tabindex="-1"
45
+ ${(0, ref_js_namespaceObject.ref)(setRef)}
46
+ >
47
+ ${(0, facet_value_label_highlight_cjs_namespaceObject.renderFacetValueLabelHighlight)({
48
+ props: {
49
+ displayValue,
50
+ searchQuery,
51
+ isSelected: true
52
+ }
53
+ })}
54
+ <span part="value-count" class="value-count">
55
+ ${i18n.t('between-parentheses', {
56
+ text: count
57
+ })}
58
+ </span>
59
+ </span>
60
+ ${children}
61
+ </li>`)}`;
62
+ };
63
+ exports.renderCategoryFacetActiveValue = __webpack_exports__.renderCategoryFacetActiveValue;
64
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
65
+ "renderCategoryFacetActiveValue"
66
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
67
+ Object.defineProperty(exports, '__esModule', {
68
+ value: true
69
+ });
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.n = (module)=>{
5
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
6
+ __webpack_require__.d(getter, {
7
+ a: getter
8
+ });
9
+ return getter;
10
+ };
11
+ })();
12
+ (()=>{
13
+ __webpack_require__.d = (exports1, getters, values)=>{
14
+ var define = (defs, kind)=>{
15
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
16
+ enumerable: true,
17
+ [kind]: defs[key]
18
+ });
19
+ };
20
+ define(getters, "get");
21
+ define(values, "value");
22
+ };
23
+ })();
24
+ (()=>{
25
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
26
+ })();
27
+ (()=>{
28
+ __webpack_require__.r = (exports1)=>{
29
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
30
+ value: 'Module'
31
+ });
32
+ Object.defineProperty(exports1, '__esModule', {
33
+ value: true
34
+ });
35
+ };
36
+ })();
37
+ var __webpack_exports__ = {};
38
+ __webpack_require__.r(__webpack_exports__);
39
+ __webpack_require__.d(__webpack_exports__, {
40
+ renderCategoryFacetSelectedValue: ()=>renderCategoryFacetSelectedValue
41
+ });
42
+ const external_lit_namespaceObject = require("lit");
43
+ const close_cjs_namespaceObject = require("../../../../images/close.cjs");
44
+ var close_cjs_default = /*#__PURE__*/ __webpack_require__.n(close_cjs_namespaceObject);
45
+ require("../../atomic-icon/atomic-icon.cjs");
46
+ const external_button_cjs_namespaceObject = require("../../button.cjs");
47
+ const renderCategoryFacetSelectedValue = ({ props: { displayValue, label, i18n, onClearFilters } })=>(0, external_lit_namespaceObject.html)`<div part="selected-value" class="mt-3 flex items-center justify-between gap-2">
48
+ <span
49
+ part="selected-value-pill"
50
+ title=${displayValue}
51
+ class="bg-neutral-light truncate rounded-md px-2 py-1 text-sm"
52
+ >${displayValue}</span
53
+ >
54
+ ${(0, external_button_cjs_namespaceObject.renderButton)({
55
+ props: {
56
+ part: 'selected-value-clear-button',
57
+ style: 'text-primary',
58
+ class: 'flex shrink-0 items-center p-1 text-sm',
59
+ ariaLabel: i18n.t('clear-filters-for-facet', {
60
+ count: 1,
61
+ label: i18n.t(label)
62
+ }),
63
+ onClick: onClearFilters
64
+ }
65
+ })((0, external_lit_namespaceObject.html)`<atomic-icon
66
+ part="selected-value-clear-button-icon"
67
+ class="mr-1 h-2 w-2"
68
+ .icon=${close_cjs_default()}
69
+ ></atomic-icon>
70
+ <span>${i18n.t('clear')}</span>`)}
71
+ </div>`;
72
+ exports.renderCategoryFacetSelectedValue = __webpack_exports__.renderCategoryFacetSelectedValue;
73
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
74
+ "renderCategoryFacetSelectedValue"
75
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
76
+ Object.defineProperty(exports, '__esModule', {
77
+ value: true
78
+ });
@@ -33,12 +33,11 @@ __webpack_require__.d(__webpack_exports__, {
33
33
  const external_lit_namespaceObject = require("lit");
34
34
  const facet_value_label_highlight_cjs_namespaceObject = require("../facet-value-label-highlight/facet-value-label-highlight.cjs");
35
35
  const facet_value_link_cjs_namespaceObject = require("../facet-value-link/facet-value-link.cjs");
36
- const renderCategoryFacetValueLink = ({ props: { displayValue, numberOfResults, i18n, onClick, isParent, isSelected, searchQuery, isLeafValue, setRef } })=>(children)=>{
37
- const partNames = [];
38
- if (isParent) partNames.push('active-parent');
39
- else partNames.push(`value-link${isSelected ? ' value-link-selected' : ''}`);
40
- if (isLeafValue) partNames.push('leaf-value');
41
- else partNames.push('node-value');
36
+ const renderCategoryFacetValueLink = ({ props: { displayValue, numberOfResults, i18n, onClick, isSelected, searchQuery, isLeafValue, setRef } })=>(children)=>{
37
+ const partNames = [
38
+ `value-link${isSelected ? ' value-link-selected' : ''}`,
39
+ isLeafValue ? 'leaf-value' : 'node-value'
40
+ ];
42
41
  return (0, external_lit_namespaceObject.html)`${(0, facet_value_link_cjs_namespaceObject.renderFacetValueLink)({
43
42
  props: {
44
43
  displayValue,
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
13
+ };
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
+ })();
18
+ (()=>{
19
+ __webpack_require__.r = (exports1)=>{
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
+ value: 'Module'
22
+ });
23
+ Object.defineProperty(exports1, '__esModule', {
24
+ value: true
25
+ });
26
+ };
27
+ })();
28
+ var __webpack_exports__ = {};
29
+ __webpack_require__.r(__webpack_exports__);
30
+ __webpack_require__.d(__webpack_exports__, {
31
+ getAnswerAnnouncement: ()=>getAnswerAnnouncement,
32
+ isSettledAnswer: ()=>isSettledAnswer
33
+ });
34
+ const markdown_utils_cjs_namespaceObject = require("./generated-content/markdown-utils.cjs");
35
+ const SILENT = {
36
+ message: '',
37
+ assertive: false
38
+ };
39
+ const getAnswerAnnouncement = (answer, i18n)=>{
40
+ if (!answer) return SILENT;
41
+ if (answer.error) {
42
+ const errorMessageKey = answer.error.isSseTurnLimitReachedError?.() ? 'generated-answer-error-turn-limit-reached' : 'generated-answer-error-generic';
43
+ return {
44
+ message: i18n.t(errorMessageKey),
45
+ assertive: true
46
+ };
47
+ }
48
+ if (answer.cannotAnswer) return {
49
+ message: i18n.t('generated-answer-cannot-generate-answer'),
50
+ assertive: true
51
+ };
52
+ if (answer.isStreaming || answer.isLoading) return {
53
+ message: i18n.t('generating-answer'),
54
+ assertive: false
55
+ };
56
+ if (answer.answer?.trim()) return {
57
+ message: i18n.t('answer-generated', {
58
+ answer: (0, markdown_utils_cjs_namespaceObject.markdownToPlainText)(answer.answer)
59
+ }),
60
+ assertive: false
61
+ };
62
+ return SILENT;
63
+ };
64
+ const isSettledAnswer = (answer)=>Boolean(answer && !answer.isStreaming && !answer.isLoading && !answer.error && !answer.cannotAnswer && answer.answer?.trim());
65
+ exports.getAnswerAnnouncement = __webpack_exports__.getAnswerAnnouncement;
66
+ exports.isSettledAnswer = __webpack_exports__.isSettledAnswer;
67
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
68
+ "getAnswerAnnouncement",
69
+ "isSettledAnswer"
70
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
71
+ Object.defineProperty(exports, '__esModule', {
72
+ value: true
73
+ });
@@ -54,6 +54,7 @@ const renderCopyButton = ({ props })=>{
54
54
  return (0, external_button_cjs_namespaceObject.renderButton)({
55
55
  props: {
56
56
  title: props.title,
57
+ ariaLabel: props.title,
57
58
  part: 'copy-button',
58
59
  style: 'text-transparent',
59
60
  class: classes.join(' '),
@@ -61,7 +62,7 @@ const renderCopyButton = ({ props })=>{
61
62
  }
62
63
  })((0, external_lit_namespaceObject.html)`
63
64
  <div class="icon-container text-neutral-dark">
64
- <atomic-icon class="w-5" .icon=${copy_cjs_default()}></atomic-icon>
65
+ <atomic-icon class="w-5" .icon=${copy_cjs_default()} aria-hidden="true"></atomic-icon>
65
66
  </div>
66
67
  `);
67
68
  };
@@ -68,6 +68,7 @@ const renderFeedbackButton = ({ props })=>{
68
68
  return (0, external_lit_namespaceObject.html)`<button
69
69
  type="button"
70
70
  title=${props.title}
71
+ aria-label=${props.title}
71
72
  part="feedback-button"
72
73
  class=${classNames}
73
74
  aria-pressed=${props.active ? 'true' : 'false'}
@@ -76,7 +77,7 @@ const renderFeedbackButton = ({ props })=>{
76
77
  })}
77
78
  @click=${props.onClick}
78
79
  >
79
- <atomic-icon class=${iconClassNames} .icon=${thumbs_cjs_default()}></atomic-icon>
80
+ <atomic-icon class=${iconClassNames} .icon=${thumbs_cjs_default()} aria-hidden="true"></atomic-icon>
80
81
  </button>`;
81
82
  };
82
83
  exports.renderFeedbackButton = __webpack_exports__.renderFeedbackButton;
@@ -69,8 +69,7 @@ const customRenderer = {
69
69
  return `<em part="answer-emphasis">${text}</em>`;
70
70
  },
71
71
  heading (text, level) {
72
- const plainText = toInlinePlainText(text);
73
- return `<div part="answer-heading-${level}" aria-label="${plainText}">${text}</div>`;
72
+ return `<div part="answer-heading-${level}" role="heading" aria-level="${level}">${text}</div>`;
74
73
  },
75
74
  html (text) {
76
75
  return escapeHtml(text);
@@ -31,10 +31,15 @@ __webpack_require__.d(__webpack_exports__, {
31
31
  renderGeneratedContentContainer: ()=>renderGeneratedContentContainer
32
32
  });
33
33
  const external_lit_namespaceObject = require("lit");
34
+ const if_defined_js_namespaceObject = require("lit/directives/if-defined.js");
34
35
  const generated_markdown_content_cjs_namespaceObject = require("./generated-content/generated-markdown-content.cjs");
35
36
  const generated_text_content_cjs_namespaceObject = require("./generated-content/generated-text-content.cjs");
36
37
  const renderGeneratedContentContainer = ({ props })=>(children)=>(0, external_lit_namespaceObject.html)`
37
- <div part="generated-container">
38
+ <div
39
+ part="generated-container"
40
+ id=${(0, if_defined_js_namespaceObject.ifDefined)(props.id)}
41
+ aria-busy=${props.isStreaming ? 'true' : 'false'}
42
+ >
38
43
  ${'text/markdown' === props.answerContentFormat ? (0, generated_markdown_content_cjs_namespaceObject.renderGeneratedMarkdownContent)({
39
44
  props: {
40
45
  answer: props.answer,
@@ -38,6 +38,7 @@ const external_show_button_cjs_namespaceObject = require("./show-button.cjs");
38
38
  const external_source_citations_cjs_namespaceObject = require("./source-citations.cjs");
39
39
  const external_render_generating_answer_label_cjs_namespaceObject = require("./render-generating-answer-label.cjs");
40
40
  require("../atomic-icon/atomic-icon.cjs");
41
+ const GENERATED_CONTENT_ID = 'generated-answer-content';
41
42
  const renderAnswerContent = ({ props })=>{
42
43
  const { i18n, generatedAnswer, collapsible, renderFeedbackAndCopyButtonsSlot, renderCitationsSlot, onRetry, onClickShowButton } = props;
43
44
  const { answer, isStreaming, citations, answerContentFormat, expanded, error } = generatedAnswer;
@@ -55,7 +56,8 @@ const renderAnswerContent = ({ props })=>{
55
56
  props: {
56
57
  answer,
57
58
  answerContentFormat,
58
- isStreaming: !!isStreaming
59
+ isStreaming: !!isStreaming,
60
+ id: collapsible ? GENERATED_CONTENT_ID : void 0
59
61
  }
60
62
  })((0, external_lit_namespaceObject.html)`
61
63
  ${(0, external_source_citations_cjs_namespaceObject.renderSourceCitations)({
@@ -83,7 +85,8 @@ const renderAnswerContent = ({ props })=>{
83
85
  props: {
84
86
  i18n,
85
87
  onClick: onClickShowButton,
86
- isCollapsed: !expanded
88
+ isCollapsed: !expanded,
89
+ controlsId: GENERATED_CONTENT_ID
87
90
  }
88
91
  }) : external_lit_namespaceObject.nothing}
89
92
  </div>
@@ -53,6 +53,7 @@ const renderShowButton = ({ props })=>(0, external_lit_namespaceObject.html)`${(
53
53
  part: 'answer-show-button',
54
54
  class: 'hidden items-center hover:bg-transparent',
55
55
  ariaExpanded: props.isCollapsed ? 'false' : 'true',
56
+ ariaControls: props.controlsId,
56
57
  onClick: props.onClick
57
58
  }
58
59
  })((0, external_lit_namespaceObject.html)`
@@ -177,11 +177,13 @@ class AtomicInsightGeneratedAnswer extends external_lit_namespaceObject.LitEleme
177
177
  async copyToClipboard(answer) {
178
178
  await this.controller.copyToClipboard(answer, ()=>{
179
179
  this.copied = true;
180
+ this.ariaCopyMessage.message = this.bindings.i18n.t('generated-answer-copied');
180
181
  setTimeout(()=>{
181
182
  this.copied = false;
182
183
  }, 2000);
183
184
  }, ()=>{
184
185
  this.copyError = true;
186
+ this.ariaCopyMessage.message = this.bindings.i18n.t('failed-to-copy-generated-answer');
185
187
  setTimeout(()=>{
186
188
  this.copyError = false;
187
189
  }, 2000);
@@ -318,7 +320,7 @@ class AtomicInsightGeneratedAnswer extends external_lit_namespaceObject.LitEleme
318
320
  constructor(){
319
321
  super(), this.DEFAULT_COLLAPSED_HEIGHT = 16, this.MAX_COLLAPSED_HEIGHT = 32, this.MIN_COLLAPSED_HEIGHT = 9, this.REQUIRED_FIELDS_TO_INCLUDE_IN_CITATIONS = [
320
322
  'filetype'
321
- ], this.withToggle = false, this.collapsible = false, this.maxCollapsedHeight = this.DEFAULT_COLLAPSED_HEIGHT, this.disableCitationAnchoring = false, this.copied = false, this.copyError = false, this.ariaMessage = new accessibility_utils_cjs_namespaceObject.AriaLiveRegionController(this, 'generated-answer', false, true), this.ariaErrorMessage = new accessibility_utils_cjs_namespaceObject.AriaLiveRegionController(this, 'generated-answer-error', true), this.onGeneratedAnswerStateUpdate = ()=>{
323
+ ], this.withToggle = false, this.collapsible = false, this.maxCollapsedHeight = this.DEFAULT_COLLAPSED_HEIGHT, this.disableCitationAnchoring = false, this.copied = false, this.copyError = false, this.ariaMessage = new accessibility_utils_cjs_namespaceObject.AriaLiveRegionController(this, 'generated-answer', false, true), this.ariaErrorMessage = new accessibility_utils_cjs_namespaceObject.AriaLiveRegionController(this, 'generated-answer-error', true), this.ariaCopyMessage = new accessibility_utils_cjs_namespaceObject.AriaLiveRegionController(this, 'generated-answer-copy', true), this.onGeneratedAnswerStateUpdate = ()=>{
322
324
  if (this.generatedAnswerState.isVisible !== this.controller.data.isVisible) {
323
325
  this.controller.data = {
324
326
  ...this.controller.data,
@@ -45,13 +45,14 @@ const external_lit_namespaceObject = require("lit");
45
45
  const decorators_js_namespaceObject = require("lit/decorators.js");
46
46
  const map_js_namespaceObject = require("lit/directives/map.js");
47
47
  const when_js_namespaceObject = require("lit/directives/when.js");
48
+ const active_value_cjs_namespaceObject = require("../../common/facets/category-facet/active-value.cjs");
48
49
  const all_categories_button_cjs_namespaceObject = require("../../common/facets/category-facet/all-categories-button.cjs");
49
50
  const children_as_tree_container_cjs_namespaceObject = require("../../common/facets/category-facet/children-as-tree-container.cjs");
50
51
  const parent_as_tree_container_cjs_namespaceObject = require("../../common/facets/category-facet/parent-as-tree-container.cjs");
51
52
  const parent_button_cjs_namespaceObject = require("../../common/facets/category-facet/parent-button.cjs");
52
- const parent_value_link_cjs_namespaceObject = require("../../common/facets/category-facet/parent-value-link.cjs");
53
53
  const search_results_container_cjs_namespaceObject = require("../../common/facets/category-facet/search-results-container.cjs");
54
54
  const search_value_cjs_namespaceObject = require("../../common/facets/category-facet/search-value.cjs");
55
+ const selected_value_cjs_namespaceObject = require("../../common/facets/category-facet/selected-value.cjs");
55
56
  const value_as_tree_container_cjs_namespaceObject = require("../../common/facets/category-facet/value-as-tree-container.cjs");
56
57
  const value_link_cjs_namespaceObject = require("../../common/facets/category-facet/value-link.cjs");
57
58
  const depends_on_cjs_namespaceObject = require("../../common/facets/depends-on.cjs");
@@ -211,6 +212,21 @@ class AtomicCategoryFacet extends external_lit_namespaceObject.LitElement {
211
212
  }
212
213
  });
213
214
  }
215
+ renderSelectedValue() {
216
+ const activeValue = this.facetState.selectedValueAncestry.at(-1);
217
+ if (!activeValue) return external_lit_namespaceObject.nothing;
218
+ return (0, selected_value_cjs_namespaceObject.renderCategoryFacetSelectedValue)({
219
+ props: {
220
+ displayValue: (0, field_utils_cjs_namespaceObject.getFieldValueCaption)(this.field, activeValue.value, this.bindings.i18n),
221
+ label: this.label,
222
+ i18n: this.bindings.i18n,
223
+ onClearFilters: ()=>{
224
+ this.focusTargets.activeValueFocus.focusAfterSearch();
225
+ this.facet.deselectAll();
226
+ }
227
+ }
228
+ });
229
+ }
214
230
  renderValuesTree(valuesAsTrees, isRoot) {
215
231
  if (!this.hasParents) return this.renderChildren();
216
232
  if (isRoot) return (0, value_as_tree_container_cjs_namespaceObject.renderCategoryFacetTreeValueContainer)()((0, external_lit_namespaceObject.html)`
@@ -255,16 +271,12 @@ class AtomicCategoryFacet extends external_lit_namespaceObject.LitElement {
255
271
  const activeParent = valuesAsTrees[0];
256
272
  const activeParentDisplayValue = (0, field_utils_cjs_namespaceObject.getFieldValueCaption)(this.field, activeParent.value, this.bindings.i18n);
257
273
  return (0, external_lit_namespaceObject.html)`
258
- ${(0, parent_value_link_cjs_namespaceObject.renderCategoryFacetParentValueLink)({
274
+ ${(0, active_value_cjs_namespaceObject.renderCategoryFacetActiveValue)({
259
275
  props: {
260
276
  displayValue: activeParentDisplayValue,
261
277
  numberOfResults: activeParent.numberOfResults,
262
278
  i18n: this.bindings.i18n,
263
279
  isLeafValue: activeParent.isLeafValue,
264
- onClick: ()=>{
265
- this.focusTargets.activeValueFocus.focusAfterSearch();
266
- this.facet.deselectAll();
267
- },
268
280
  searchQuery: this.facetState.facetSearch.query,
269
281
  setRef: (el)=>{
270
282
  this.focusTargets.activeValueFocus.setTarget(el);
@@ -287,7 +299,6 @@ class AtomicCategoryFacet extends external_lit_namespaceObject.LitElement {
287
299
  this.focusTargets.activeValueFocus.focusAfterSearch();
288
300
  this.facet.toggleSelect(facetValue);
289
301
  },
290
- isParent: false,
291
302
  isSelected,
292
303
  searchQuery: this.facetState.facetSearch.query,
293
304
  isLeafValue: facetValue.isLeafValue,
@@ -369,7 +380,7 @@ class AtomicCategoryFacet extends external_lit_namespaceObject.LitElement {
369
380
  return (0, facet_container_cjs_namespaceObject.renderFacetContainer)()((0, external_lit_namespaceObject.html)`
370
381
  ${this.renderHeader()}
371
382
  ${(0, when_js_namespaceObject.when)(!this.isCollapsed, ()=>(0, external_lit_namespaceObject.html)`
372
- ${this.renderSearchInput()}
383
+ ${this.renderSearchInput()} ${this.renderSelectedValue()}
373
384
  ${(0, when_js_namespaceObject.when)((0, facet_search_utils_cjs_namespaceObject.shouldDisplaySearchResults)(facetSearch), ()=>(0, external_lit_namespaceObject.html)`
374
385
  ${(0, when_js_namespaceObject.when)(facetSearch.values.length > 0, ()=>(0, facet_values_group_cjs_namespaceObject.renderFacetValuesGroup)({
375
386
  props: {