@coveo/atomic 3.58.1 → 3.59.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 (70) hide show
  1. package/custom-elements.json +7376 -7319
  2. package/dist/cjs/components/commerce/atomic-commerce-breadbox/atomic-commerce-breadbox.cjs +13 -6
  3. package/dist/cjs/components/commerce/atomic-commerce-product-list/atomic-commerce-product-list.cjs +1 -0
  4. package/dist/cjs/components/commerce/atomic-product-image/atomic-product-image.cjs +4 -1
  5. package/dist/cjs/components/common/atomic-citation/atomic-citation.cjs +7 -0
  6. package/dist/cjs/components/common/atomic-generated-answer-feedback-modal/atomic-generated-answer-feedback-modal.cjs +26 -7
  7. package/dist/cjs/components/common/atomic-tab-button/atomic-tab-button.cjs +34 -16
  8. package/dist/cjs/components/common/carousel.cjs +3 -1
  9. package/dist/cjs/components/common/image-carousel/image-carousel.cjs +8 -2
  10. package/dist/cjs/components/common/item-list/table-layout.cjs +6 -2
  11. package/dist/cjs/components/search/atomic-breadbox/atomic-breadbox.cjs +13 -6
  12. package/dist/cjs/components/search/atomic-result-list/atomic-result-list.cjs +1 -0
  13. package/dist/cjs/components/search/atomic-tab-manager/atomic-tab-manager.cjs +16 -1
  14. package/dist/cjs/global/environment.cjs +1 -1
  15. package/dist/cjs/utils/tailwind.global.tw.css.cjs +1 -1
  16. package/dist/cjs/versions.cjs +1 -1
  17. package/dist/esm/components/commerce/atomic-commerce-breadbox/atomic-commerce-breadbox.js +13 -6
  18. package/dist/esm/components/commerce/atomic-commerce-product-list/atomic-commerce-product-list.js +1 -0
  19. package/dist/esm/components/commerce/atomic-commerce-search-box/atomic-commerce-search-box.js +1 -1
  20. package/dist/esm/components/commerce/atomic-product-image/atomic-product-image.js +4 -1
  21. package/dist/esm/components/common/atomic-citation/atomic-citation.js +7 -0
  22. package/dist/esm/components/common/atomic-generated-answer-feedback-modal/atomic-generated-answer-feedback-modal.js +26 -7
  23. package/dist/esm/components/common/atomic-tab-button/atomic-tab-button.js +34 -16
  24. package/dist/esm/components/common/carousel.js +3 -1
  25. package/dist/esm/components/common/image-carousel/image-carousel.js +8 -2
  26. package/dist/esm/components/common/item-list/table-layout.js +6 -2
  27. package/dist/esm/components/insight/atomic-insight-result-children/atomic-insight-result-children.js +1 -1
  28. package/dist/esm/components/search/atomic-breadbox/atomic-breadbox.js +13 -6
  29. package/dist/esm/components/search/atomic-result-list/atomic-result-list.js +1 -0
  30. package/dist/esm/components/search/atomic-search-box/atomic-search-box.js +1 -1
  31. package/dist/esm/components/search/atomic-tab-manager/atomic-tab-manager.js +16 -1
  32. package/dist/esm/global/environment.js +1 -1
  33. package/dist/esm/utils/tailwind.global.tw.css.js +1 -1
  34. package/dist/esm/versions.js +1 -1
  35. package/dist/lang/cs.json +1 -1
  36. package/dist/lang/da.json +1 -1
  37. package/dist/lang/de.json +1 -1
  38. package/dist/lang/dev.json +1 -1
  39. package/dist/lang/el.json +1 -1
  40. package/dist/lang/en.json +1 -1
  41. package/dist/lang/es.json +1 -1
  42. package/dist/lang/fi.json +1 -1
  43. package/dist/lang/fr.json +1 -1
  44. package/dist/lang/hu.json +1 -1
  45. package/dist/lang/id.json +1 -1
  46. package/dist/lang/it.json +1 -1
  47. package/dist/lang/ja.json +1 -1
  48. package/dist/lang/ko.json +1 -1
  49. package/dist/lang/nl.json +1 -1
  50. package/dist/lang/no.json +1 -1
  51. package/dist/lang/pl.json +1 -1
  52. package/dist/lang/pt-BR.json +1 -1
  53. package/dist/lang/pt.json +1 -1
  54. package/dist/lang/ru.json +1 -1
  55. package/dist/lang/sv.json +1 -1
  56. package/dist/lang/th.json +1 -1
  57. package/dist/lang/tr.json +1 -1
  58. package/dist/lang/zh-CN.json +1 -1
  59. package/dist/lang/zh-TW.json +1 -1
  60. package/dist/lang/zh.json +1 -1
  61. package/dist/types/components/commerce/atomic-commerce-breadbox/atomic-commerce-breadbox.d.ts +7 -0
  62. package/dist/types/components/common/atomic-citation/atomic-citation.d.ts +2 -0
  63. package/dist/types/components/common/atomic-generated-answer-feedback-modal/atomic-generated-answer-feedback-modal.d.ts +1 -0
  64. package/dist/types/components/common/atomic-tab-button/atomic-tab-button.d.ts +4 -0
  65. package/dist/types/components/common/image-carousel/image-carousel.d.ts +2 -0
  66. package/dist/types/components/common/item-list/table-layout.d.ts +1 -0
  67. package/dist/types/components/search/atomic-breadbox/atomic-breadbox.d.ts +7 -0
  68. package/dist/types/components/search/atomic-tab-manager/atomic-tab-manager.d.ts +1 -0
  69. package/package.json +7 -6
  70. package/docs/assets.json +0 -1
@@ -62,7 +62,8 @@ class AtomicCommerceBreadbox extends external_lit_namespaceObject.LitElement {
62
62
  else this.searchOrListing = (0, commerce_namespaceObject.buildSearch)(this.bindings.engine);
63
63
  this.context = (0, commerce_namespaceObject.buildContext)(this.bindings.engine);
64
64
  this.breadcrumbManager = this.searchOrListing.breadcrumbManager();
65
- if (window.ResizeObserver && this.parentElement) {
65
+ if (this.disableCollapse) this.isCollapsed = false;
66
+ else if (window.ResizeObserver && this.parentElement) {
66
67
  this.resizeObserver = new ResizeObserver(()=>this.adaptBreadcrumbs());
67
68
  this.resizeObserver.observe(this.parentElement);
68
69
  }
@@ -95,7 +96,7 @@ class AtomicCommerceBreadbox extends external_lit_namespaceObject.LitElement {
95
96
  this.breadcrumbs.forEach((breadcrumb)=>this.show(breadcrumb));
96
97
  }
97
98
  adaptBreadcrumbs() {
98
- if (!this.breadcrumbs.length) return;
99
+ if (this.disableCollapse || !this.breadcrumbs.length) return;
99
100
  this.showAllBreadcrumbs();
100
101
  if (!this.isCollapsed) return void this.updateShowLessDisplay();
101
102
  this.hideOverflowingBreadcrumbs();
@@ -175,7 +176,7 @@ class AtomicCommerceBreadbox extends external_lit_namespaceObject.LitElement {
175
176
  i18n: this.bindings.i18n
176
177
  }
177
178
  })((0, external_lit_namespaceObject.html)`${this.renderBreadcrumbs(breadcrumbs)}
178
- ${(0, breadcrumb_show_more_cjs_namespaceObject.renderBreadcrumbShowMore)({
179
+ ${this.disableCollapse ? external_lit_namespaceObject.nothing : (0, external_lit_namespaceObject.html)`${(0, breadcrumb_show_more_cjs_namespaceObject.renderBreadcrumbShowMore)({
179
180
  props: {
180
181
  refCallback: async (el)=>{
181
182
  await this.breadcrumbShowLessFocus.setTarget(el);
@@ -194,7 +195,7 @@ class AtomicCommerceBreadbox extends external_lit_namespaceObject.LitElement {
194
195
  })
195
196
  }
196
197
  })}
197
- ${(0, breadcrumb_show_less_cjs_namespaceObject.renderBreadcrumbShowLess)({
198
+ ${(0, breadcrumb_show_less_cjs_namespaceObject.renderBreadcrumbShowLess)({
198
199
  props: {
199
200
  onShowLess: ()=>{
200
201
  this.breadcrumbShowLessFocus.focusOnNextTarget();
@@ -203,7 +204,7 @@ class AtomicCommerceBreadbox extends external_lit_namespaceObject.LitElement {
203
204
  isCollapsed: this.isCollapsed,
204
205
  i18n: this.bindings.i18n
205
206
  }
206
- })}
207
+ })}`}
207
208
  ${(0, breadcrumb_clear_all_cjs_namespaceObject.renderBreadcrumbClearAll)({
208
209
  props: {
209
210
  refCallback: async (ref)=>{
@@ -220,7 +221,7 @@ class AtomicCommerceBreadbox extends external_lit_namespaceObject.LitElement {
220
221
  })} `)}`;
221
222
  }
222
223
  constructor(){
223
- super(), this.lastRemovedBreadcrumbIndex = 0, this.numberOfBreadcrumbs = 0, this.numberOfCollapsedBreadcrumbs = 0, this.isCollapsed = true, this.showMoreText = '', this.breadboxAriaMessage = new accessibility_utils_cjs_namespaceObject.AriaLiveRegionController(this, 'breadbox', true), this.pathLimit = 3, this.valueForFacetType = (type, field, value)=>{
224
+ super(), this.lastRemovedBreadcrumbIndex = 0, this.numberOfBreadcrumbs = 0, this.numberOfCollapsedBreadcrumbs = 0, this.isCollapsed = true, this.showMoreText = '', this.disableCollapse = false, this.breadboxAriaMessage = new accessibility_utils_cjs_namespaceObject.AriaLiveRegionController(this, 'breadbox', true), this.pathLimit = 3, this.valueForFacetType = (type, field, value)=>{
224
225
  switch(type){
225
226
  case 'numericalRange':
226
227
  return [
@@ -299,6 +300,12 @@ _ts_decorate([
299
300
  _ts_decorate([
300
301
  (0, decorators_js_namespaceObject.state)()
301
302
  ], AtomicCommerceBreadbox.prototype, "showMoreText", void 0);
303
+ _ts_decorate([
304
+ (0, decorators_js_namespaceObject.property)({
305
+ type: Boolean,
306
+ attribute: 'disable-collapse'
307
+ })
308
+ ], AtomicCommerceBreadbox.prototype, "disableCollapse", void 0);
302
309
  _ts_decorate([
303
310
  (0, decorators_js_namespaceObject.property)({
304
311
  type: Number,
@@ -289,6 +289,7 @@ class AtomicCommerceProductList extends (0, children_update_complete_mixin_cjs_n
289
289
  firstItem,
290
290
  host: this,
291
291
  itemRenderingFunction: this.itemRenderingFunction,
292
+ label: this.bindings.i18n.t('view-products'),
292
293
  listClasses,
293
294
  logger: this.bindings.engine.logger,
294
295
  templateContentForFirstItem
@@ -172,7 +172,10 @@ class AtomicProductImage extends external_lit_namespaceObject.LitElement {
172
172
  navigateToImage: (index)=>this.navigateToImage(index),
173
173
  nextImage: ()=>this.nextImage(),
174
174
  previousImage: ()=>this.previousImage(),
175
- numberOfImages: this.numberOfImages
175
+ numberOfImages: this.numberOfImages,
176
+ label: this.bindings.i18n.t('image-gallery', {
177
+ itemName: this.product.ec_name
178
+ })
176
179
  }
177
180
  })(this.renderCurrentImage(this.images[this.currentImage]))))}
178
181
  `;
@@ -61,6 +61,11 @@ class AtomicCitation extends external_lit_namespaceObject.LitElement {
61
61
  super.disconnectedCallback();
62
62
  this.cleanupPopper();
63
63
  this.clearTimers();
64
+ this.removeEventListener('keydown', this.handleKeyDown);
65
+ }
66
+ connectedCallback() {
67
+ super.connectedCallback();
68
+ this.addEventListener('keydown', this.handleKeyDown);
64
69
  }
65
70
  sendHoverAnalytics() {
66
71
  if (this.isOpen) {
@@ -188,6 +193,8 @@ class AtomicCitation extends external_lit_namespaceObject.LitElement {
188
193
  }, this.closePopover = ()=>{
189
194
  this.clearTimers();
190
195
  this.isOpen = false;
196
+ }, this.handleKeyDown = (e)=>{
197
+ if ('Escape' === e.key && this.isOpen) this.closePopover();
191
198
  }, this.delayedClosePopover = ()=>{
192
199
  this.clearTimers();
193
200
  this.closePopoverTimeout = setTimeout(()=>{
@@ -196,6 +196,19 @@ class AtomicGeneratedAnswerFeedbackModal extends external_lit_namespaceObject.Li
196
196
  </div>
197
197
  `;
198
198
  }
199
+ renderRequiredFieldsAlert() {
200
+ return (0, external_lit_namespaceObject.html)`
201
+ <span
202
+ class=${(0, multi_class_map_cjs_namespaceObject.multiClassMap)({
203
+ 'sr-only': true,
204
+ hidden: !this.answerEvaluationRequired
205
+ })}
206
+ role="alert"
207
+ >
208
+ ${this.bindings.i18n.t('required-fields-error')}
209
+ </span>
210
+ `;
211
+ }
199
212
  renderFeedbackOptions() {
200
213
  return (0, external_lit_namespaceObject.html)`
201
214
  <fieldset>
@@ -225,7 +238,6 @@ class AtomicGeneratedAnswerFeedbackModal extends external_lit_namespaceObject.Li
225
238
  class=${(0, multi_class_map_cjs_namespaceObject.multiClassMap)({
226
239
  'options flex flex-shrink-0 text-base': true
227
240
  })}
228
- aria-label=${this.bindings.i18n.t(localeKey)}
229
241
  >
230
242
  ${this.renderFeedbackOption('yes', correspondingAnswer)}
231
243
  ${this.renderFeedbackOption('unknown', correspondingAnswer)}
@@ -288,8 +300,8 @@ class AtomicGeneratedAnswerFeedbackModal extends external_lit_namespaceObject.Li
288
300
  'flex flex-col gap-8 leading-4': true
289
301
  })}
290
302
  >
291
- ${this.renderFeedbackOptions()} ${this.renderLinkToCorrectAnswerField()}
292
- ${this.renderAddNotesField()}
303
+ ${this.renderRequiredFieldsAlert()} ${this.renderFeedbackOptions()}
304
+ ${this.renderLinkToCorrectAnswerField()} ${this.renderAddNotesField()}
293
305
  </form>
294
306
  `;
295
307
  }
@@ -307,9 +319,14 @@ class AtomicGeneratedAnswerFeedbackModal extends external_lit_namespaceObject.Li
307
319
  'w-48': true
308
320
  })}
309
321
  ></atomic-icon>
310
- <p class=${(0, multi_class_map_cjs_namespaceObject.multiClassMap)({
322
+ <p
323
+ class=${(0, multi_class_map_cjs_namespaceObject.multiClassMap)({
311
324
  'text-base': true
312
- })}>
325
+ })}
326
+ role="status"
327
+ aria-live="polite"
328
+ aria-atomic="true"
329
+ >
313
330
  ${this.bindings.i18n.t('generated-answer-feedback-success')}
314
331
  </p>
315
332
  </div>
@@ -332,8 +349,10 @@ class AtomicGeneratedAnswerFeedbackModal extends external_lit_namespaceObject.Li
332
349
  'required-label text-base': true
333
350
  })}>
334
351
  <span class=${(0, multi_class_map_cjs_namespaceObject.multiClassMap)({
335
- 'text-error mr-0.5': true
336
- })}>*</span>
352
+ 'text-error-red mr-0.5': true
353
+ })}
354
+ >*</span
355
+ >
337
356
  ${this.bindings.i18n.t('required-fields')}
338
357
  </div>
339
358
  <div class=${(0, multi_class_map_cjs_namespaceObject.multiClassMap)({
@@ -28,7 +28,6 @@ __webpack_require__.d(__webpack_exports__, {
28
28
  });
29
29
  const external_lit_namespaceObject = require("lit");
30
30
  const decorators_js_namespaceObject = require("lit/decorators.js");
31
- const external_button_cjs_namespaceObject = require("../button.cjs");
32
31
  const error_guard_cjs_namespaceObject = require("../../../decorators/error-guard.cjs");
33
32
  const with_tailwind_styles_cjs_namespaceObject = require("../../../decorators/with-tailwind-styles.cjs");
34
33
  const light_dom_cjs_namespaceObject = require("../../../mixins/light-dom.cjs");
@@ -44,17 +43,32 @@ function _ts_metadata(k, v) {
44
43
  class AtomicTabButton extends (0, light_dom_cjs_namespaceObject.LightDomMixin)(external_lit_namespaceObject.LitElement) {
45
44
  connectedCallback() {
46
45
  super.connectedCallback();
47
- this.setAttribute('role', 'listitem');
46
+ this.addEventListener('click', this.handleClick);
47
+ this.addEventListener('keydown', this.handleKeydown);
48
+ this.updateHostAttributes();
48
49
  this.updateHostClasses();
49
50
  }
51
+ disconnectedCallback() {
52
+ super.disconnectedCallback();
53
+ this.removeEventListener('click', this.handleClick);
54
+ this.removeEventListener('keydown', this.handleKeydown);
55
+ }
50
56
  updated(changedProperties) {
51
57
  if (changedProperties.has('active')) {
52
- this.setAttribute('aria-current', this.active ? 'true' : 'false');
53
- this.setAttribute('part', this.active ? 'button-container-active' : 'button-container');
58
+ this.updateHostAttributes();
54
59
  this.updateHostClasses();
55
60
  }
56
61
  }
62
+ updateHostAttributes() {
63
+ this.setAttribute('role', 'tab');
64
+ this.setAttribute('aria-selected', this.active ? 'true' : 'false');
65
+ this.setAttribute('part', this.active ? 'button-container-active' : 'button-container');
66
+ this.tabIndex = this.active ? 0 : -1;
67
+ }
57
68
  updateHostClasses() {
69
+ this.classList.add('cursor-pointer', 'hover:text-primary', 'focus-visible:text-primary', 'focus-visible:outline-none');
70
+ this.classList.toggle('text-on-background', this.active);
71
+ this.classList.toggle('text-neutral-dark', !this.active);
58
72
  this.classList.toggle('relative', this.active);
59
73
  this.classList.toggle('after:block', this.active);
60
74
  this.classList.toggle('after:w-full', this.active);
@@ -67,29 +81,33 @@ class AtomicTabButton extends (0, light_dom_cjs_namespaceObject.LightDomMixin)(e
67
81
  render() {
68
82
  const buttonClasses = [
69
83
  'relative',
84
+ 'inline-block',
70
85
  'overflow-hidden',
71
86
  'w-full',
72
87
  'truncate',
73
88
  'px-2',
74
89
  'pb-1',
75
90
  'text-xl',
76
- 'sm:px-6',
77
- 'hover:text-primary',
78
- !this.active && 'text-neutral-dark'
91
+ 'sm:px-6'
79
92
  ].filter(Boolean).join(' ');
80
93
  return (0, external_lit_namespaceObject.html)`
81
- ${(0, external_button_cjs_namespaceObject.renderButton)({
82
- props: {
83
- style: 'text-transparent',
84
- class: buttonClasses,
85
- part: this.active ? 'tab-button-active' : 'tab-button',
86
- onClick: this.select
87
- }
88
- })((0, external_lit_namespaceObject.html)`${this.label}`)}
94
+ <span
95
+ class=${buttonClasses}
96
+ part=${this.active ? 'tab-button-active' : 'tab-button'}
97
+ >
98
+ ${this.label}
99
+ </span>
89
100
  `;
90
101
  }
91
102
  constructor(...args){
92
- super(...args), this.active = false;
103
+ super(...args), this.active = false, this.handleClick = ()=>{
104
+ this.select();
105
+ }, this.handleKeydown = (event)=>{
106
+ if ('Enter' === event.key || ' ' === event.key) {
107
+ event.preventDefault();
108
+ this.select();
109
+ }
110
+ };
93
111
  }
94
112
  }
95
113
  _ts_decorate([
@@ -111,7 +111,9 @@ const renderCarousel = ({ props })=>(children)=>{
111
111
  ${renderPreviousButton(numberOfPages, previousPage, props.bindings)}
112
112
  ${renderNextButton(numberOfPages, nextPage, props.bindings)}
113
113
  </div>
114
- <div class="carousel-items">${children}</div>
114
+ <div class="carousel-items" aria-live="polite" aria-atomic="false">
115
+ ${children}
116
+ </div>
115
117
  </div>
116
118
  ${renderIndicators(numberOfPages, currentPage)}
117
119
  </div>
@@ -91,9 +91,15 @@ const renderImageCarousel = ({ props })=>{
91
91
  if (!children || children === external_lit_namespaceObject.nothing) return external_lit_namespaceObject.nothing;
92
92
  return (0, external_lit_namespaceObject.html)` <div
93
93
  class="relative flex w-full min-w-full items-center justify-center"
94
+ role="region"
95
+ aria-roledescription="carousel"
96
+ aria-label=${props.label}
94
97
  >
95
- ${renderPreviousButton()} ${children} ${renderNextButton()}
96
- ${renderIndicators()}
98
+ ${renderPreviousButton()}
99
+ <div class="w-full h-full" aria-live="polite" aria-atomic="false">
100
+ ${children}
101
+ </div>
102
+ ${renderNextButton()} ${renderIndicators()}
97
103
  </div>`;
98
104
  };
99
105
  };
@@ -35,10 +35,14 @@ const map_js_namespaceObject = require("lit/directives/map.js");
35
35
  const ref_js_namespaceObject = require("lit/directives/ref.js");
36
36
  const external_table_element_utils_cjs_namespaceObject = require("../table-element-utils.cjs");
37
37
  const renderTableLayout = ({ props })=>{
38
- const { host, listClasses, logger } = props;
38
+ const { host, listClasses, logger, label } = props;
39
39
  const fieldColumns = getFieldTableColumns(props);
40
40
  if (!fieldColumns.length) logger.error('atomic-table-element elements missing in the template to display columns.', host);
41
- return (children)=>(0, external_lit_namespaceObject.html)`<table class="list-root ${listClasses}" part="result-table">
41
+ return (children)=>(0, external_lit_namespaceObject.html)`<table
42
+ class="list-root ${listClasses}"
43
+ part="result-table"
44
+ aria-label=${label}
45
+ >
42
46
  <thead part="result-table-heading">
43
47
  <tr part="result-table-heading-row">
44
48
  ${(0, map_js_namespaceObject.map)(fieldColumns, (column)=>(0, external_lit_namespaceObject.html)`<th part="result-table-heading-cell">
@@ -57,7 +57,8 @@ class AtomicBreadbox extends external_lit_namespaceObject.LitElement {
57
57
  initialize() {
58
58
  this.breadcrumbManager = (0, headless_namespaceObject.buildBreadcrumbManager)(this.bindings.engine);
59
59
  this.facetManager = (0, headless_namespaceObject.buildFacetManager)(this.bindings.engine);
60
- if (window.ResizeObserver && this.parentElement) {
60
+ if (this.disableCollapse) this.isCollapsed = false;
61
+ else if (window.ResizeObserver && this.parentElement) {
61
62
  this.resizeObserver = new ResizeObserver(()=>this.adaptBreadcrumbs());
62
63
  this.resizeObserver.observe(this.parentElement);
63
64
  }
@@ -77,7 +78,7 @@ class AtomicBreadbox extends external_lit_namespaceObject.LitElement {
77
78
  i18n: this.bindings.i18n
78
79
  }
79
80
  })((0, external_lit_namespaceObject.html)`${this.renderBreadcrumbs(breadcrumbs)}
80
- ${(0, breadcrumb_show_more_cjs_namespaceObject.renderBreadcrumbShowMore)({
81
+ ${this.disableCollapse ? external_lit_namespaceObject.nothing : (0, external_lit_namespaceObject.html)`${(0, breadcrumb_show_more_cjs_namespaceObject.renderBreadcrumbShowMore)({
81
82
  props: {
82
83
  refCallback: async (el)=>{
83
84
  await this.breadcrumbShowLessFocus.setTarget(el);
@@ -96,7 +97,7 @@ class AtomicBreadbox extends external_lit_namespaceObject.LitElement {
96
97
  })
97
98
  }
98
99
  })}
99
- ${(0, breadcrumb_show_less_cjs_namespaceObject.renderBreadcrumbShowLess)({
100
+ ${(0, breadcrumb_show_less_cjs_namespaceObject.renderBreadcrumbShowLess)({
100
101
  props: {
101
102
  onShowLess: ()=>{
102
103
  this.breadcrumbShowLessFocus.focusOnNextTarget();
@@ -105,7 +106,7 @@ class AtomicBreadbox extends external_lit_namespaceObject.LitElement {
105
106
  isCollapsed: this.isCollapsed,
106
107
  i18n: this.bindings.i18n
107
108
  }
108
- })}
109
+ })}`}
109
110
  ${(0, breadcrumb_clear_all_cjs_namespaceObject.renderBreadcrumbClearAll)({
110
111
  props: {
111
112
  refCallback: async (ref)=>{
@@ -144,7 +145,7 @@ class AtomicBreadbox extends external_lit_namespaceObject.LitElement {
144
145
  this.breadcrumbs.forEach((breadcrumb)=>this.show(breadcrumb));
145
146
  }
146
147
  adaptBreadcrumbs() {
147
- if (!this.breadcrumbs.length) return;
148
+ if (this.disableCollapse || !this.breadcrumbs.length) return;
148
149
  this.showAllBreadcrumbs();
149
150
  if (!this.isCollapsed) return void this.updateShowLessDisplay();
150
151
  this.hideOverflowingBreadcrumbs();
@@ -288,7 +289,7 @@ class AtomicBreadbox extends external_lit_namespaceObject.LitElement {
288
289
  });
289
290
  }
290
291
  constructor(){
291
- super(), this.lastRemovedBreadcrumbIndex = 0, this.numberOfBreadcrumbs = 0, this.numberOfCollapsedBreadcrumbs = 0, this.isCollapsed = true, this.showMoreText = '', this.breadboxAriaMessage = new accessibility_utils_cjs_namespaceObject.AriaLiveRegionController(this, 'breadbox', true), this.pathLimit = 3;
292
+ super(), this.lastRemovedBreadcrumbIndex = 0, this.numberOfBreadcrumbs = 0, this.numberOfCollapsedBreadcrumbs = 0, this.isCollapsed = true, this.showMoreText = '', this.disableCollapse = false, this.breadboxAriaMessage = new accessibility_utils_cjs_namespaceObject.AriaLiveRegionController(this, 'breadbox', true), this.pathLimit = 3;
292
293
  new validate_props_controller_cjs_namespaceObject.ValidatePropsController(this, ()=>({
293
294
  pathLimit: this.pathLimit
294
295
  }), AtomicBreadbox.propsSchema);
@@ -332,6 +333,12 @@ _ts_decorate([
332
333
  _ts_decorate([
333
334
  (0, decorators_js_namespaceObject.state)()
334
335
  ], AtomicBreadbox.prototype, "showMoreText", void 0);
336
+ _ts_decorate([
337
+ (0, decorators_js_namespaceObject.property)({
338
+ type: Boolean,
339
+ attribute: 'disable-collapse'
340
+ })
341
+ ], AtomicBreadbox.prototype, "disableCollapse", void 0);
335
342
  _ts_decorate([
336
343
  (0, decorators_js_namespaceObject.property)({
337
344
  type: Number,
@@ -238,6 +238,7 @@ class AtomicResultList extends (0, children_update_complete_mixin_cjs_namespaceO
238
238
  firstItem,
239
239
  host: this,
240
240
  itemRenderingFunction: this.itemRenderingFunction,
241
+ label: this.bindings.i18n.t('view-results'),
241
242
  listClasses,
242
243
  logger: this.bindings.engine.logger,
243
244
  templateContentForFirstItem
@@ -93,10 +93,11 @@ class AtomicTabManager extends external_lit_namespaceObject.LitElement {
93
93
  exportparts="popover-button, value-label, arrow-icon, backdrop, overflow-tabs, popover-tab"
94
94
  >
95
95
  <div
96
- role="list"
96
+ role="tablist"
97
97
  aria-label="tab-area"
98
98
  part="tab-area"
99
99
  class="border-neutral mb-2 flex w-full flex-row border-b"
100
+ @keydown=${this.handleTablistKeydown}
100
101
  >
101
102
  ${this.tabs.map((tab)=>{
102
103
  const isActive = this.tabManagerState.activeTab === tab.name;
@@ -114,6 +115,20 @@ class AtomicTabManager extends external_lit_namespaceObject.LitElement {
114
115
  </atomic-tab-bar>
115
116
  `;
116
117
  }
118
+ handleTablistKeydown(event) {
119
+ const tabs = Array.from(event.currentTarget.querySelectorAll('[role="tab"]'));
120
+ const currentIndex = tabs.indexOf(event.target);
121
+ if (-1 === currentIndex) return;
122
+ let nextIndex = null;
123
+ if ('ArrowRight' === event.key) nextIndex = (currentIndex + 1) % tabs.length;
124
+ else if ('ArrowLeft' === event.key) nextIndex = (currentIndex - 1 + tabs.length) % tabs.length;
125
+ else if ('Home' === event.key) nextIndex = 0;
126
+ else if ('End' === event.key) nextIndex = tabs.length - 1;
127
+ if (null !== nextIndex) {
128
+ event.preventDefault();
129
+ tabs[nextIndex].focus();
130
+ }
131
+ }
117
132
  constructor(...args){
118
133
  super(...args), this.tabs = [], this.clearFiltersOnTabChange = false;
119
134
  }
@@ -33,7 +33,7 @@ function getWindow() {
33
33
  }
34
34
  function getAtomicEnvironment(headlessVersion) {
35
35
  return {
36
- version: "3.58.1",
36
+ version: "3.59.1",
37
37
  headlessVersion
38
38
  };
39
39
  }