@scania/tegel 1.27.0-toast-aria-live.0 → 1.28.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 (197) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/tds-dropdown_2.cjs.entry.js +8 -8
  3. package/dist/cjs/tds-footer-group.cjs.entry.js +27 -5
  4. package/dist/cjs/tds-footer-item.cjs.entry.js +2 -2
  5. package/dist/cjs/tds-footer.cjs.entry.js +1 -1
  6. package/dist/cjs/tds-header-brand-symbol.cjs.entry.js +6 -2
  7. package/dist/cjs/tds-header-dropdown.cjs.entry.js +26 -3
  8. package/dist/cjs/tds-header-hamburger.cjs.entry.js +7 -1
  9. package/dist/cjs/tds-header-launcher-button.cjs.entry.js +2 -1
  10. package/dist/cjs/tds-header-launcher.cjs.entry.js +23 -2
  11. package/dist/cjs/tds-icon.cjs.entry.js +3 -2
  12. package/dist/cjs/tds-inline-tabs.cjs.entry.js +1 -1
  13. package/dist/cjs/tds-modal.cjs.entry.js +1 -1
  14. package/dist/cjs/tds-navigation-tabs.cjs.entry.js +1 -1
  15. package/dist/cjs/tds-popover-canvas.cjs.entry.js +3 -2
  16. package/dist/cjs/tds-popover-core.cjs.entry.js +55 -11
  17. package/dist/cjs/tds-popover-menu-item.cjs.entry.js +2 -2
  18. package/dist/cjs/tds-popover-menu.cjs.entry.js +1 -1
  19. package/dist/cjs/tds-radio-button.cjs.entry.js +3 -1
  20. package/dist/cjs/tds-spinner.cjs.entry.js +1 -1
  21. package/dist/cjs/tds-step.cjs.entry.js +2 -1
  22. package/dist/cjs/tds-stepper.cjs.entry.js +2 -1
  23. package/dist/cjs/tds-text-field.cjs.entry.js +31 -16
  24. package/dist/cjs/tds-textarea.cjs.entry.js +9 -3
  25. package/dist/cjs/tds-toast.cjs.entry.js +3 -3
  26. package/dist/cjs/tds-toggle.cjs.entry.js +2 -2
  27. package/dist/cjs/tds-tooltip.cjs.entry.js +2 -2
  28. package/dist/cjs/tegel.cjs.js +1 -1
  29. package/dist/collection/components/dropdown/dropdown.js +8 -8
  30. package/dist/collection/components/footer/footer-group/footer-group.css +23 -21
  31. package/dist/collection/components/footer/footer-group/footer-group.js +55 -5
  32. package/dist/collection/components/footer/footer-item/footer-item.css +17 -17
  33. package/dist/collection/components/footer/footer-item/footer-item.js +2 -2
  34. package/dist/collection/components/footer/footer.css +1 -1
  35. package/dist/collection/components/header/header-brand-symbol/header-brand-symbol.css +1 -1
  36. package/dist/collection/components/header/header-brand-symbol/header-brand-symbol.js +6 -2
  37. package/dist/collection/components/header/header-dropdown/header-dropdown.js +49 -3
  38. package/dist/collection/components/header/header-hamburger/header-hamburger.js +30 -1
  39. package/dist/collection/components/header/header-launcher/header-launcher.js +50 -2
  40. package/dist/collection/components/header/header-launcher-button/header-launcher-button.js +19 -1
  41. package/dist/collection/components/icon/icon.js +21 -2
  42. package/dist/collection/components/modal/modal.css +48 -43
  43. package/dist/collection/components/popover-canvas/popover-canvas.js +21 -2
  44. package/dist/collection/components/popover-core/popover-core.js +63 -10
  45. package/dist/collection/components/popover-core/tds-popover-core.css +31 -40
  46. package/dist/collection/components/popover-menu/popover-menu-item/popover-menu-item.js +2 -2
  47. package/dist/collection/components/popover-menu/popover-menu.js +1 -1
  48. package/dist/collection/components/radio-button/radio-button.js +37 -1
  49. package/dist/collection/components/spinner/spinner.css +62 -39
  50. package/dist/collection/components/stepper/step/step.js +19 -1
  51. package/dist/collection/components/stepper/stepper.js +20 -1
  52. package/dist/collection/components/tabs/inline-tabs/inline-tabs.css +0 -1
  53. package/dist/collection/components/tabs/navigation-tabs/navigation-tabs.css +2 -3
  54. package/dist/collection/components/text-field/text-field.css +21 -9
  55. package/dist/collection/components/text-field/text-field.js +48 -15
  56. package/dist/collection/components/textarea/textarea.js +26 -3
  57. package/dist/collection/components/toast/toast.js +3 -3
  58. package/dist/collection/components/toggle/toggle.js +2 -2
  59. package/dist/collection/components/tooltip/tooltip.js +2 -2
  60. package/dist/components/{p-2d93a742.js → p-1c606f82.js} +1 -1
  61. package/dist/components/{p-e71e3b2e.js → p-252f3d4d.js} +59 -13
  62. package/dist/components/{p-17338bcb.js → p-3dcfe1f4.js} +3 -3
  63. package/dist/components/{p-60ff84f2.js → p-789bb453.js} +5 -3
  64. package/dist/components/{p-4487c541.js → p-92fb75a7.js} +4 -2
  65. package/dist/components/{p-663b8e51.js → p-c0b84c59.js} +9 -9
  66. package/dist/components/{p-83db8b35.js → p-f8a36676.js} +5 -3
  67. package/dist/components/tds-accordion-item.js +1 -1
  68. package/dist/components/tds-banner.js +1 -1
  69. package/dist/components/tds-datetime.js +1 -1
  70. package/dist/components/tds-dropdown-option.js +1 -1
  71. package/dist/components/tds-dropdown.js +1 -1
  72. package/dist/components/tds-folder-tabs.js +1 -1
  73. package/dist/components/tds-footer-group.js +32 -8
  74. package/dist/components/tds-footer-item.js +3 -3
  75. package/dist/components/tds-footer.js +1 -1
  76. package/dist/components/tds-header-brand-symbol.js +6 -2
  77. package/dist/components/tds-header-cell.js +1 -1
  78. package/dist/components/tds-header-dropdown.js +31 -7
  79. package/dist/components/tds-header-hamburger.js +11 -3
  80. package/dist/components/tds-header-launcher-button.js +1 -1
  81. package/dist/components/tds-header-launcher.js +29 -7
  82. package/dist/components/tds-icon.js +1 -1
  83. package/dist/components/tds-inline-tabs.js +2 -2
  84. package/dist/components/tds-message.js +1 -1
  85. package/dist/components/tds-modal.js +2 -2
  86. package/dist/components/tds-navigation-tabs.js +2 -2
  87. package/dist/components/tds-popover-canvas.js +1 -1
  88. package/dist/components/tds-popover-core.js +1 -1
  89. package/dist/components/tds-popover-menu-item.js +2 -2
  90. package/dist/components/tds-popover-menu.js +2 -2
  91. package/dist/components/tds-radio-button.js +6 -2
  92. package/dist/components/tds-side-menu-close-button.js +1 -1
  93. package/dist/components/tds-side-menu-dropdown.js +1 -1
  94. package/dist/components/tds-slider.js +1 -1
  95. package/dist/components/tds-spinner.js +1 -1
  96. package/dist/components/tds-step.js +4 -2
  97. package/dist/components/tds-stepper.js +4 -2
  98. package/dist/components/tds-table-body-input-wrapper.js +1 -1
  99. package/dist/components/tds-table-footer.js +3 -3
  100. package/dist/components/tds-table-header-input-wrapper.js +1 -1
  101. package/dist/components/tds-table-toolbar.js +1 -1
  102. package/dist/components/tds-text-field.js +33 -17
  103. package/dist/components/tds-textarea.js +13 -6
  104. package/dist/components/tds-toast.js +4 -4
  105. package/dist/components/tds-toggle.js +2 -2
  106. package/dist/components/tds-tooltip.js +1 -1
  107. package/dist/esm/loader.js +1 -1
  108. package/dist/esm/tds-dropdown_2.entry.js +8 -8
  109. package/dist/esm/tds-footer-group.entry.js +27 -5
  110. package/dist/esm/tds-footer-item.entry.js +3 -3
  111. package/dist/esm/tds-footer.entry.js +1 -1
  112. package/dist/esm/tds-header-brand-symbol.entry.js +6 -2
  113. package/dist/esm/tds-header-dropdown.entry.js +26 -3
  114. package/dist/esm/tds-header-hamburger.entry.js +7 -1
  115. package/dist/esm/tds-header-launcher-button.entry.js +2 -1
  116. package/dist/esm/tds-header-launcher.entry.js +23 -2
  117. package/dist/esm/tds-icon.entry.js +3 -2
  118. package/dist/esm/tds-inline-tabs.entry.js +1 -1
  119. package/dist/esm/tds-modal.entry.js +1 -1
  120. package/dist/esm/tds-navigation-tabs.entry.js +1 -1
  121. package/dist/esm/tds-popover-canvas.entry.js +3 -2
  122. package/dist/esm/tds-popover-core.entry.js +55 -11
  123. package/dist/esm/tds-popover-menu-item.entry.js +2 -2
  124. package/dist/esm/tds-popover-menu.entry.js +1 -1
  125. package/dist/esm/tds-radio-button.entry.js +3 -1
  126. package/dist/esm/tds-spinner.entry.js +1 -1
  127. package/dist/esm/tds-step.entry.js +2 -1
  128. package/dist/esm/tds-stepper.entry.js +2 -1
  129. package/dist/esm/tds-text-field.entry.js +31 -16
  130. package/dist/esm/tds-textarea.entry.js +9 -3
  131. package/dist/esm/tds-toast.entry.js +3 -3
  132. package/dist/esm/tds-toggle.entry.js +2 -2
  133. package/dist/esm/tds-tooltip.entry.js +2 -2
  134. package/dist/esm/tegel.js +1 -1
  135. package/dist/tegel/{p-ad9a2141.entry.js → p-033d991e.entry.js} +1 -1
  136. package/dist/tegel/p-24db6b5b.entry.js +1 -0
  137. package/dist/tegel/p-27a4a7d0.entry.js +1 -0
  138. package/dist/tegel/p-28cf7204.entry.js +1 -0
  139. package/dist/tegel/p-302fea99.entry.js +1 -0
  140. package/dist/tegel/p-31bc440c.entry.js +1 -0
  141. package/dist/tegel/p-3e9ca19a.entry.js +1 -0
  142. package/dist/tegel/p-44ac6a20.entry.js +1 -0
  143. package/dist/tegel/{p-769d0503.entry.js → p-46205cfb.entry.js} +1 -1
  144. package/dist/tegel/p-54a20280.entry.js +1 -0
  145. package/dist/tegel/p-5a3ff0d3.entry.js +1 -0
  146. package/dist/tegel/p-660176d6.entry.js +1 -0
  147. package/dist/tegel/{p-eaa279dd.entry.js → p-81111221.entry.js} +1 -1
  148. package/dist/tegel/{p-668b7662.entry.js → p-8d7bf652.entry.js} +1 -1
  149. package/dist/tegel/p-b58f68f0.entry.js +1 -0
  150. package/dist/tegel/{p-5ba254ee.entry.js → p-c10be10e.entry.js} +1 -1
  151. package/dist/tegel/p-c71acb02.entry.js +1 -0
  152. package/dist/tegel/p-ceab8f75.entry.js +1 -0
  153. package/dist/tegel/p-e1abd593.entry.js +1 -0
  154. package/dist/tegel/p-e3c3bdac.entry.js +1 -0
  155. package/dist/tegel/p-e46744bc.entry.js +1 -0
  156. package/dist/tegel/p-ea9e7345.entry.js +1 -0
  157. package/dist/tegel/{p-97f10223.entry.js → p-eec22b6b.entry.js} +1 -1
  158. package/dist/tegel/p-f034fc0c.entry.js +1 -0
  159. package/dist/tegel/p-fa342278.entry.js +1 -0
  160. package/dist/tegel/{p-b9f81e53.entry.js → p-fc6196c4.entry.js} +1 -1
  161. package/dist/tegel/tegel.css +2 -2
  162. package/dist/tegel/tegel.esm.js +1 -1
  163. package/dist/types/components/footer/footer-group/footer-group.d.ts +7 -0
  164. package/dist/types/components/header/header-brand-symbol/header-brand-symbol.d.ts +1 -1
  165. package/dist/types/components/header/header-dropdown/header-dropdown.d.ts +4 -0
  166. package/dist/types/components/header/header-hamburger/header-hamburger.d.ts +3 -0
  167. package/dist/types/components/header/header-launcher/header-launcher.d.ts +4 -0
  168. package/dist/types/components/header/header-launcher-button/header-launcher-button.d.ts +2 -0
  169. package/dist/types/components/icon/icon.d.ts +2 -0
  170. package/dist/types/components/popover-canvas/popover-canvas.d.ts +2 -0
  171. package/dist/types/components/popover-core/popover-core.d.ts +4 -0
  172. package/dist/types/components/radio-button/radio-button.d.ts +4 -0
  173. package/dist/types/components/stepper/step/step.d.ts +1 -0
  174. package/dist/types/components/stepper/stepper.d.ts +2 -0
  175. package/dist/types/components/text-field/text-field.d.ts +6 -4
  176. package/dist/types/components/textarea/textarea.d.ts +3 -0
  177. package/dist/types/components.d.ts +98 -0
  178. package/package.json +1 -1
  179. package/dist/tegel/p-035e58e6.entry.js +0 -1
  180. package/dist/tegel/p-125a6b06.entry.js +0 -1
  181. package/dist/tegel/p-28517288.entry.js +0 -1
  182. package/dist/tegel/p-288a09ef.entry.js +0 -1
  183. package/dist/tegel/p-4f5f152a.entry.js +0 -1
  184. package/dist/tegel/p-542d7b3e.entry.js +0 -1
  185. package/dist/tegel/p-5a7110b8.entry.js +0 -1
  186. package/dist/tegel/p-5db5c8f4.entry.js +0 -1
  187. package/dist/tegel/p-654785d2.entry.js +0 -1
  188. package/dist/tegel/p-746e2927.entry.js +0 -1
  189. package/dist/tegel/p-754a4921.entry.js +0 -1
  190. package/dist/tegel/p-843413ba.entry.js +0 -1
  191. package/dist/tegel/p-aef6b130.entry.js +0 -1
  192. package/dist/tegel/p-b114ec3d.entry.js +0 -1
  193. package/dist/tegel/p-b39ffad4.entry.js +0 -1
  194. package/dist/tegel/p-c56be8d1.entry.js +0 -1
  195. package/dist/tegel/p-dfbbaefd.entry.js +0 -1
  196. package/dist/tegel/p-ea3e071f.entry.js +0 -1
  197. package/dist/tegel/p-ee7f07ae.entry.js +0 -1
@@ -30,7 +30,7 @@ export class TdsDropdown {
30
30
  return this.selectedOptions
31
31
  .map((stringValue) => {
32
32
  var _a;
33
- const matchingElement = (_a = this.getChildren()) === null || _a === void 0 ? void 0 : _a.find((element) => element.value === stringValue);
33
+ const matchingElement = (_a = this.getChildren()) === null || _a === void 0 ? void 0 : _a.find((element) => convertToString(element.value) === convertToString(stringValue));
34
34
  return matchingElement;
35
35
  })
36
36
  .filter(Boolean);
@@ -166,7 +166,7 @@ export class TdsDropdown {
166
166
  }
167
167
  }
168
168
  normalizeValue(value) {
169
- if (!value || value === '')
169
+ if (value === null || value === undefined || value === '')
170
170
  return [];
171
171
  // For single select, ensure we handle both string and array inputs
172
172
  if (!this.multiselect) {
@@ -361,7 +361,7 @@ export class TdsDropdown {
361
361
  const defaultValueStr = convertToString(this.defaultValue);
362
362
  const initialValue = this.multiselect
363
363
  ? defaultValueStr.split(',').map(convertToString)
364
- : [convertToString(this.defaultValue)];
364
+ : [defaultValueStr];
365
365
  this.updateDropdownStateInternal(initialValue);
366
366
  }
367
367
  }
@@ -403,9 +403,9 @@ export class TdsDropdown {
403
403
  }
404
404
  render() {
405
405
  appendHiddenInput(this.host, this.name, this.selectedOptions.join(','), this.disabled);
406
- return (h(Host, { key: 'dbd588020c5f634d489ca464c2a4fd568e9b905a', class: {
406
+ return (h(Host, { key: 'b8c418ebe609789c1610178d764a7d620e2231c2', class: {
407
407
  [`tds-mode-variant-${this.modeVariant}`]: Boolean(this.modeVariant),
408
- } }, this.label && this.labelPosition === 'outside' && (h("div", { key: 'e0b7d8efe2206136140695647f7b0656de6f4559', class: `label-outside ${this.disabled ? 'disabled' : ''}` }, this.label)), h("div", { key: 'abc333e48a6ecc7d89f2ddeec0ff587371baf78c', class: {
408
+ } }, this.label && this.labelPosition === 'outside' && (h("div", { key: 'ee5c005d5020e2226ce54c93a90f2098e081a6df', class: `label-outside ${this.disabled ? 'disabled' : ''}` }, this.label)), h("div", { key: 'ca674a2361f1301886bb855b7093c67b999a500a', class: {
409
409
  'dropdown-select': true,
410
410
  [this.size]: true,
411
411
  'disabled': this.disabled,
@@ -455,7 +455,7 @@ export class TdsDropdown {
455
455
  label-inside-as-placeholder
456
456
  ${this.size}
457
457
  ${this.selectedOptions.length ? 'selected' : ''}
458
- ` }, this.label)), h("div", { class: `placeholder ${this.size}` }, this.selectedOptions.length ? this.getValue() : this.placeholder), h("tds-icon", { "aria-label": "Open/Close dropdown", svgTitle: "Open/Close dropdown", class: `menu-icon ${this.open ? 'open' : 'closed'}`, name: "chevron_down", size: "16px" }))))), h("div", { key: 'd83c66bf81a1d2878827d5ed71cdeee73625cbd0', role: "listbox", "aria-label": this.tdsAriaLabel, "aria-orientation": "vertical", "aria-multiselectable": this.multiselect, ref: (element) => {
458
+ ` }, this.label)), h("div", { class: `placeholder ${this.size}` }, this.selectedOptions.length ? this.getValue() : this.placeholder), h("tds-icon", { "aria-label": "Open/Close dropdown", svgTitle: "Open/Close dropdown", class: `menu-icon ${this.open ? 'open' : 'closed'}`, name: "chevron_down", size: "16px" }))))), h("div", { key: '14558013e5903958942dc7dd3ef2d3a49f79b245', role: "listbox", "aria-label": this.tdsAriaLabel, "aria-orientation": "vertical", "aria-multiselectable": this.multiselect, ref: (element) => {
459
459
  this.dropdownList = element;
460
460
  }, class: {
461
461
  'dropdown-list': true,
@@ -466,11 +466,11 @@ export class TdsDropdown {
466
466
  'closed': !this.open,
467
467
  [`animation-enter-${this.animation}`]: this.animation !== 'none' && this.open,
468
468
  [`animation-exit-${this.animation}`]: this.animation !== 'none' && !this.open,
469
- } }, h("slot", { key: '0133acc19540fb2ebfd44611fb906b5895d300d6', onSlotchange: () => this.handleSlotChange() }), this.filterResult === 0 && this.noResultText !== '' && (h("div", { key: '3cdf4874c3e5f593850b3238b9f87508ad67c312', class: `no-result ${this.size}` }, this.noResultText))), this.helper && (h("div", { key: 'a51e0a23e67f22427010ee9c965ab7535c46176e', class: {
469
+ } }, h("slot", { key: '5f69c2fcb5b6a130888d7cd92d4cb882122e3e58', onSlotchange: () => this.handleSlotChange() }), this.filterResult === 0 && this.noResultText !== '' && (h("div", { key: 'bae7a62960f90cd7b679ac4956a677dbff378ac7', class: `no-result ${this.size}` }, this.noResultText))), this.helper && (h("div", { key: 'be5fe56a1e19e812fa983c22f130c0d3001da55b', class: {
470
470
  helper: true,
471
471
  error: this.error,
472
472
  disabled: this.disabled,
473
- } }, this.error && h("tds-icon", { key: '719a9da93ed73509c1a0694d3011f8e304d73cf9', name: "error", size: "16px" }), this.helper))));
473
+ } }, this.error && h("tds-icon", { key: 'c0ccc491caa1aca628aff12e02d8a917a74e9c86', name: "error", size: "16px" }), this.helper))));
474
474
  }
475
475
  static get is() { return "tds-dropdown"; }
476
476
  static get encapsulation() { return "shadow"; }
@@ -8,8 +8,11 @@
8
8
  color: var(--tds-footer-top-links);
9
9
  padding-bottom: 8px;
10
10
  }
11
+ :host .footer-top-title *,
12
+ :host .footer-top-title ::slotted(*) {
13
+ margin: 0;
14
+ }
11
15
  :host button.footer-top-title-button {
12
- display: none;
13
16
  border: none;
14
17
  width: 100%;
15
18
  font: var(--tds-headline-07);
@@ -21,6 +24,10 @@
21
24
  justify-content: space-between;
22
25
  border-bottom: 1px solid var(--tds-footer-top-divider);
23
26
  }
27
+ :host button.footer-top-title-button *,
28
+ :host button.footer-top-title-button ::slotted(*) {
29
+ margin: 0;
30
+ }
24
31
  :host button.footer-top-title-button.expanded {
25
32
  border-bottom: none;
26
33
  }
@@ -53,24 +60,19 @@
53
60
  :host [role=list].top-part-child {
54
61
  flex-direction: column;
55
62
  }
56
- @media all and (max-width: 992px) {
57
- :host [role=list].start:not(.top-part-child) {
58
- flex-direction: column;
59
- }
60
- :host [role=list].start:not(.top-part-child).start, :host [role=list].start:not(.top-part-child).end {
61
- gap: 8px;
62
- }
63
- :host [role=list].top-part-child.closed {
64
- display: none;
65
- }
66
- :host [role=list].top-part-child {
67
- gap: 0;
68
- }
69
- :host .footer-top-title {
70
- display: none;
71
- }
72
- :host button.footer-top-title-button {
73
- display: flex;
74
- align-items: center;
75
- }
63
+ :host .mobile-view [role=list].start:not(.top-part-child) {
64
+ flex-direction: column;
65
+ }
66
+ :host .mobile-view [role=list].start:not(.top-part-child).start, :host .mobile-view [role=list].start:not(.top-part-child).end {
67
+ gap: 8px;
68
+ }
69
+ :host .mobile-view [role=list].top-part-child.closed {
70
+ display: none;
71
+ }
72
+ :host .mobile-view [role=list].top-part-child {
73
+ gap: 0;
74
+ }
75
+ :host .mobile-view button.footer-top-title-button {
76
+ display: flex;
77
+ align-items: center;
76
78
  }
@@ -1,6 +1,8 @@
1
1
  import { Host, h } from "@stencil/core";
2
+ import hasSlot from "../../../utils/hasSlot";
2
3
  /**
3
4
  * @slot <default> - <b>Unnamed slot.</b> For footer items.
5
+ * @slot title - Slot for the title of the group. Should contain a heading element adjusted to the rest of the website in terms of heading nesting, for accessibility.
4
6
  */
5
7
  export class TdsFooterGroup {
6
8
  constructor() {
@@ -10,20 +12,41 @@ export class TdsFooterGroup {
10
12
  /** Indicates if a group is part of the top part of the Footer. */
11
13
  this.topPartGroup = false;
12
14
  this.titleText = undefined;
15
+ this.tdsListAriaLabel = undefined;
13
16
  this.open = false;
17
+ this.isMobile = undefined;
18
+ }
19
+ updateIsMobile() {
20
+ this.isMobile = window.innerWidth <= 992;
14
21
  }
15
22
  connectedCallback() {
23
+ this.updateIsMobile();
16
24
  this.topPartGroup = this.host.parentElement.slot === 'top';
17
25
  if (!this.topPartGroup) {
18
26
  this.slotPosition = this.host.parentElement.slot === 'end' ? 'end' : 'start';
19
27
  }
28
+ if (!this.tdsListAriaLabel) {
29
+ console.warn('Tegel Footer Group component: missing tdsListAriaLabel prop');
30
+ }
31
+ if (this.titleText) {
32
+ console.warn('Tegel Footer Group component: to ensure accessibility, please use the title slot instead of the titleText prop. titleText will be deprecated in the future.');
33
+ }
34
+ const hasTitleSlot = hasSlot('title', this.host);
35
+ if (hasTitleSlot && this.titleText) {
36
+ console.warn('Tegel Footer Group component: titleText prop is set but title slot is used. The titleText prop will be ignored.');
37
+ }
38
+ }
39
+ handleResize() {
40
+ this.updateIsMobile();
20
41
  }
21
42
  render() {
22
- return (h(Host, { key: '9932f2146509bb7f804c15a3b716308c658893c5' }, this.titleText && this.topPartGroup && (h("div", { key: '511c348c160a1d1144464ce562b616f38a5fd524', class: "footer-top-title" }, this.titleText)), this.titleText && this.topPartGroup && (h("button", { key: 'c64b3662379de7308d8f64b0e5769296e7f48a02', onClick: () => {
23
- this.open = !this.open;
24
- }, class: `footer-top-title-button ${this.open ? 'expanded' : 'closed'}` }, this.titleText, h("tds-icon", { key: 'f3d5d5bec3f3f9af67bf28e7164eb3190189039c', name: "chevron_down", size: "20px" }))), h("div", { key: '4f5a8b626d572e51f67547d0c3280d946e44203f', role: "list", class: `${this.slotPosition ? this.slotPosition : ''}
43
+ const hasTitleSlot = hasSlot('title', this.host);
44
+ return (h(Host, { key: '4074cd5312d985c58e5136cc0c2c2c5deb9cd6e7', "aria-expanded": this.open ? 'true' : 'false' }, h("div", { key: '1a7817d838cadd10f4fed05b1153fa13be41a042', class: this.isMobile ? 'mobile-view' : '' }, this.topPartGroup &&
45
+ (this.isMobile ? (h("button", { onClick: () => {
46
+ this.open = !this.open;
47
+ }, class: `footer-top-title-button ${this.open ? 'expanded' : 'closed'}` }, hasTitleSlot ? h("slot", { name: "title" }) : this.titleText, h("tds-icon", { name: "chevron_down", size: "20px", "aria-hidden": "true" }))) : (h("div", { class: "footer-top-title" }, hasTitleSlot ? h("slot", { name: "title" }) : this.titleText))), h("nav", { key: '758bd18ac07eca8dda21b077a494ce8d770c6794', "aria-label": this.tdsListAriaLabel }, h("div", { key: '536e6c65893378fce91dd7fe3577dcdaaa4e5596', role: "list", class: `${this.slotPosition ? this.slotPosition : ''}
25
48
  ${this.topPartGroup ? 'top-part-child' : ''}
26
- ${this.open ? 'expanded' : 'closed'}` }, h("slot", { key: '414c481365b866d921aeb8145fd4358a05d8c90f' }))));
49
+ ${this.open ? 'expanded' : 'closed'}` }, h("slot", { key: '0d1d147e8b955fb39e83a441595c80610843e34c' }))))));
27
50
  }
28
51
  static get is() { return "tds-footer-group"; }
29
52
  static get encapsulation() { return "shadow"; }
@@ -55,13 +78,40 @@ export class TdsFooterGroup {
55
78
  },
56
79
  "attribute": "title-text",
57
80
  "reflect": false
81
+ },
82
+ "tdsListAriaLabel": {
83
+ "type": "string",
84
+ "mutable": false,
85
+ "complexType": {
86
+ "original": "string",
87
+ "resolved": "string",
88
+ "references": {}
89
+ },
90
+ "required": false,
91
+ "optional": false,
92
+ "docs": {
93
+ "tags": [],
94
+ "text": "Value to be used for the aria-label attribute for the nav element wrapping the list. Should be unique for accessibility."
95
+ },
96
+ "attribute": "tds-list-aria-label",
97
+ "reflect": false
58
98
  }
59
99
  };
60
100
  }
61
101
  static get states() {
62
102
  return {
63
- "open": {}
103
+ "open": {},
104
+ "isMobile": {}
64
105
  };
65
106
  }
66
107
  static get elementRef() { return "host"; }
108
+ static get listeners() {
109
+ return [{
110
+ "name": "resize",
111
+ "method": "handleResize",
112
+ "target": "window",
113
+ "capture": false,
114
+ "passive": true
115
+ }];
116
+ }
67
117
  }
@@ -1,50 +1,50 @@
1
- [role=listitem] ::slotted(a),
2
- [role=listitem] ::slotted(button) {
1
+ :host([role=listitem]) div ::slotted(a),
2
+ :host([role=listitem]) div ::slotted(button) {
3
3
  font: var(--tds-headline-07);
4
4
  letter-spacing: var(--tds-headline-07-ls);
5
5
  color: var(--tds-footer-main-links);
6
6
  opacity: var(--tds-footer-main-links-opacity);
7
7
  text-decoration: none;
8
8
  }
9
- [role=listitem] ::slotted(a:focus-visible),
10
- [role=listitem] ::slotted(button:focus-visible) {
9
+ :host([role=listitem]) div ::slotted(a:focus-visible),
10
+ :host([role=listitem]) div ::slotted(button:focus-visible) {
11
11
  outline: 2px solid var(--tds-blue-400);
12
12
  outline-offset: -2px;
13
13
  }
14
- [role=listitem] ::slotted(a:hover),
15
- [role=listitem] ::slotted(button:hover) {
14
+ :host([role=listitem]) div ::slotted(a:hover),
15
+ :host([role=listitem]) div ::slotted(button:hover) {
16
16
  text-decoration: underline;
17
17
  }
18
- [role=listitem].top-part-child ::slotted(a),
19
- [role=listitem].top-part-child ::slotted(button) {
18
+ :host([role=listitem]) div.top-part-child ::slotted(a),
19
+ :host([role=listitem]) div.top-part-child ::slotted(button) {
20
20
  font: var(--tds-headline-07);
21
21
  letter-spacing: var(--tds-headline-07-ls);
22
22
  color: var(--tds-footer-top-links);
23
23
  }
24
- [role=listitem].top-part-child ::slotted(a:focus-visible),
25
- [role=listitem].top-part-child ::slotted(button:focus-visible) {
24
+ :host([role=listitem]) div.top-part-child ::slotted(a:focus-visible),
25
+ :host([role=listitem]) div.top-part-child ::slotted(button:focus-visible) {
26
26
  outline: 2px solid var(--tds-blue-400);
27
27
  outline-offset: -2px;
28
28
  }
29
29
 
30
30
  @media all and (max-width: 992px) {
31
- [role=listitem].top-part-child {
31
+ :host([role=listitem]) div.top-part-child {
32
32
  border-bottom: 1px solid var(--tds-footer-top-divider);
33
33
  }
34
- [role=listitem].top-part-child ::slotted(a),
35
- [role=listitem].top-part-child ::slotted(button) {
34
+ :host([role=listitem]) div.top-part-child ::slotted(a),
35
+ :host([role=listitem]) div.top-part-child ::slotted(button) {
36
36
  display: block;
37
37
  height: 100%;
38
38
  padding: 19px 40px;
39
39
  font-weight: normal;
40
40
  }
41
- [role=listitem].top-part-child ::slotted(a:hover),
42
- [role=listitem].top-part-child ::slotted(button:hover) {
41
+ :host([role=listitem]) div.top-part-child ::slotted(a:hover),
42
+ :host([role=listitem]) div.top-part-child ::slotted(button:hover) {
43
43
  text-decoration: underline;
44
44
  background-color: var(--tds-footer-top-links-background-hover);
45
45
  }
46
- [role=listitem].top-part-child ::slotted(a:focus-visible),
47
- [role=listitem].top-part-child ::slotted(button:focus-visible) {
46
+ :host([role=listitem]) div.top-part-child ::slotted(a:focus-visible),
47
+ :host([role=listitem]) div.top-part-child ::slotted(button:focus-visible) {
48
48
  outline: 2px solid var(--tds-blue-400);
49
49
  outline-offset: -2px;
50
50
  }
@@ -1,4 +1,4 @@
1
- import { h } from "@stencil/core";
1
+ import { h, Host } from "@stencil/core";
2
2
  /**
3
3
  * @slot <default> - <b>Unnamed slot.</b> For slotting a link, button, or similar.
4
4
  */
@@ -10,7 +10,7 @@ export class TdsFooterItem {
10
10
  this.parentIsTopPart = this.host.closest('tds-footer-group').parentElement.slot === 'top';
11
11
  }
12
12
  render() {
13
- return (h("div", { key: '8efe2aba383be6dbbf0c1a95e4a5f247623289bd', role: "listitem", class: `${this.parentIsTopPart ? 'top-part-child' : ''}` }, h("slot", { key: 'b1406197ba6239bcdec807ebdb2de181ea6a49b7' })));
13
+ return (h(Host, { key: '04f8f1262940c57846f1f2ca372d181475381de3', role: "listitem" }, h("div", { key: '8a9c806cf008c4c247ab33935d00ba86e65a9f06', class: `${this.parentIsTopPart ? 'top-part-child' : ''}` }, h("slot", { key: '3510b66d43bf2b892902d3b7540a6b718eac1be4' }))));
14
14
  }
15
15
  static get is() { return "tds-footer-item"; }
16
16
  static get encapsulation() { return "shadow"; }
@@ -44,7 +44,7 @@
44
44
  color: var(--tds-footer-main-copyright);
45
45
  }
46
46
  :host .footer-main-bottom .brand {
47
- background-image: var(--tds-background-image-scania-wordmark-white-svg);
47
+ background-image: var(--tds-background-image-scania-wordmark-white-svg), var(--tds-background-image-scania-wordmark-white-svg-local);
48
48
  background-repeat: no-repeat;
49
49
  background-size: 117px;
50
50
  background-position: right;
@@ -2,7 +2,7 @@
2
2
  display: none;
3
3
  }
4
4
  :host tds-header-item ::slotted(*) {
5
- background-image: var(--tds-background-image-scania-symbol-svg), var(--tds-background-image-scania-symbol-png);
5
+ background-image: var(--tds-background-image-scania-symbol-svg), var(--tds-background-image-scania-symbol-svg-local);
6
6
  background-size: 30px auto;
7
7
  background-position: center;
8
8
  background-repeat: no-repeat;
@@ -1,10 +1,14 @@
1
1
  import { h, Host } from "@stencil/core";
2
2
  /**
3
- * @slot <default> - <b>Unnamed slot.</b> For a link.
3
+ * @slot <default> - <b>Unnamed slot.</b> For a link. When using an <a> tag, use the aria-label attribute for accessibility.
4
4
  */
5
5
  export class TdsHeaderBrandSymbol {
6
6
  render() {
7
- return (h(Host, { key: 'c2e5f418268bf172b1e039aca188489afbc98aa7' }, h("tds-header-item", { key: '375b50758e8616093635a0a1ba194296841e4bbc' }, h("slot", { key: '2f641711d2e2c5b0fdf2042a44181a699df7fe95' }))));
7
+ const aTag = this.host.querySelector('a');
8
+ if (!aTag.hasAttribute('aria-label')) {
9
+ console.warn('Tegel Header Brand Symbol component: missing aria-label attribute for <a> tag inside slot');
10
+ }
11
+ return (h(Host, { key: '18ba2b11b49c7b85f9655881094611b3d2c6e175' }, h("tds-header-item", { key: '36f37aeec7f4d3e412efc2f75baeedeb30d25421' }, h("slot", { key: 'fce5727e5b3b70e92c716ad7fca689b93a25935b' }))));
8
12
  }
9
13
  static get is() { return "tds-header-brand-symbol"; }
10
14
  static get encapsulation() { return "shadow"; }
@@ -1,5 +1,6 @@
1
1
  import { h, Host } from "@stencil/core";
2
2
  import generateUniqueId from "../../../utils/generateUniqueId";
3
+ import hasSlot from "../../../utils/hasSlot";
3
4
  /**
4
5
  * @slot <default> - <b>Unnamed slot.</b> For injecting a dropdown list.
5
6
  * @slot icon - Slot for an Icon in the dropdown button.
@@ -17,6 +18,7 @@ export class TdsHeaderDropdown {
17
18
  this.label = undefined;
18
19
  this.noDropdownIcon = false;
19
20
  this.selected = false;
21
+ this.tdsAriaLabel = undefined;
20
22
  this.open = false;
21
23
  this.buttonEl = undefined;
22
24
  }
@@ -27,17 +29,38 @@ export class TdsHeaderDropdown {
27
29
  this.open = false;
28
30
  }
29
31
  }
32
+ handleKeyDown(event) {
33
+ if (event.key === 'Escape' && this.open) {
34
+ this.open = false;
35
+ this.buttonEl.focus();
36
+ }
37
+ }
30
38
  toggleDropdown() {
31
39
  this.open = !this.open;
40
+ if (this.open) {
41
+ requestAnimationFrame(() => {
42
+ const selectors = "a, [tabindex='0']";
43
+ const firstFocusableElement = this.host.shadowRoot.querySelector(selectors) || this.host.querySelector(selectors);
44
+ if (firstFocusableElement instanceof HTMLElement) {
45
+ firstFocusableElement.focus();
46
+ }
47
+ });
48
+ }
49
+ }
50
+ connectedCallback() {
51
+ const hasLabelSlot = hasSlot('label', this.host);
52
+ if (!this.tdsAriaLabel && !hasLabelSlot) {
53
+ console.warn('Tegel Header Dropdown component: use label slot or specify tdsAriaLabel prop');
54
+ }
32
55
  }
33
56
  render() {
34
- return (h(Host, { key: '1b3cd2ffee7d6543e98bab5cc3d1953770110ce8' }, h("div", { key: '23f60d4d56e08725985f71f5952b324f5044f53b', class: {
57
+ return (h(Host, { key: '1bbf8ce73b5f0067b2ffe8d634ba0a3efd6f4fdb' }, h("div", { key: 'd2c548b3989a81a74c2b2985bae4a0afb10bbe06', class: {
35
58
  'state-open': this.open,
36
- } }, h("tds-header-item", { key: '0297ccda2dbf13709443e4b548687e2f648f0bcf', class: "button", active: this.open, selected: this.selected }, h("button", { key: '6f9ea91a3270ea6eeb29a79571567ae8abef001d', ref: (el) => {
59
+ } }, h("tds-header-item", { key: '2300d57edbebbc66ed1b27a60a9fcb235ddb4b88', class: "button", active: this.open, selected: this.selected }, h("button", { key: 'da6f8271968491b092b18bc835b815e1796af935', ref: (el) => {
37
60
  this.buttonEl = el;
38
61
  }, "aria-expanded": `${this.open}`, "aria-controls": `launcher-${this.uuid}`, "aria-current": this.selected ? 'location' : 'false', onClick: () => {
39
62
  this.toggleDropdown();
40
- } }, h("slot", { key: 'dcc2a8a717706ee3287499805bc32c98b0b29770', name: "icon" }), this.label, h("slot", { key: 'bad14e728dfe465e59a8e98a4ea5a858fc066bb3', name: "label" }), !this.noDropdownIcon && (h("tds-icon", { key: '9963966ab41666db7ba8b75089a46b132b8db6dd', class: "dropdown-icon", name: "chevron_down", size: "16px" })))), this.buttonEl && (h("tds-popover-canvas", { key: 'cb7b4fb085a94e6243ad6c70144e5b3c6460d27e', id: `tds-dropdown-${this.uuid}`, class: "menu", referenceEl: this.buttonEl, placement: "bottom-start", show: this.open, offsetDistance: 0, modifiers: [
63
+ }, "aria-label": this.tdsAriaLabel }, h("slot", { key: 'a9c1c657944cdbd826672e53ffce819df1b261de', name: "icon" }), this.label, h("slot", { key: 'a47173535a91f2a5b94060b6745b7ff60e380b19', name: "label" }), !this.noDropdownIcon && (h("tds-icon", { key: '4e2d7e29d2775ef65b636faf0eb16739575f0bed', class: "dropdown-icon", name: "chevron_down", size: "16px", svgTitle: "Dropdown icon" })))), this.buttonEl && (h("tds-popover-canvas", { key: '67ec32703a4fe306ac8b1a5b3e7ed4d48c257161', id: `tds-dropdown-${this.uuid}`, class: "menu", referenceEl: this.buttonEl, placement: "bottom-start", show: this.open, offsetDistance: 0, modifiers: [
41
64
  {
42
65
  name: 'flip',
43
66
  options: {
@@ -112,6 +135,23 @@ export class TdsHeaderDropdown {
112
135
  "attribute": "selected",
113
136
  "reflect": false,
114
137
  "defaultValue": "false"
138
+ },
139
+ "tdsAriaLabel": {
140
+ "type": "string",
141
+ "mutable": false,
142
+ "complexType": {
143
+ "original": "string",
144
+ "resolved": "string",
145
+ "references": {}
146
+ },
147
+ "required": false,
148
+ "optional": false,
149
+ "docs": {
150
+ "tags": [],
151
+ "text": "Value to be used by the aria-label attribute"
152
+ },
153
+ "attribute": "tds-aria-label",
154
+ "reflect": false
115
155
  }
116
156
  };
117
157
  }
@@ -129,6 +169,12 @@ export class TdsHeaderDropdown {
129
169
  "target": "document",
130
170
  "capture": false,
131
171
  "passive": false
172
+ }, {
173
+ "name": "keydown",
174
+ "method": "handleKeyDown",
175
+ "target": "window",
176
+ "capture": false,
177
+ "passive": false
132
178
  }];
133
179
  }
134
180
  }
@@ -1,9 +1,17 @@
1
1
  import { h, Host } from "@stencil/core";
2
2
  import inheritAriaAttributes from "../../../utils/inheritAriaAttributes";
3
3
  export class TdsHeaderHamburger {
4
+ constructor() {
5
+ this.tdsAriaLabel = undefined;
6
+ }
7
+ connectedCallback() {
8
+ if (!this.tdsAriaLabel) {
9
+ console.warn('Tegel Header Hamburger component: missing tdsAriaLabel prop');
10
+ }
11
+ }
4
12
  render() {
5
13
  const inheritedButtonProps = Object.assign({}, inheritAriaAttributes(this.host));
6
- return (h(Host, { key: 'f2f230c8349ca3b5fdcfd7de67555b12888bd9d9' }, h("tds-header-item", { key: '7db87ae4ad59bea1040399a33fdf77aa490ae1ca' }, h("button", Object.assign({ key: 'bf5e3103c23c02e42db7e99a423348efb4488ed7' }, inheritedButtonProps), h("tds-icon", { key: '306b78525304ac2f30a4bcb0be37c0ed7998b01f', class: "icon", name: "burger", size: "20px" })))));
14
+ return (h(Host, { key: '774d1727624bfe4f8606d2efea75236532f2e9b2' }, h("tds-header-item", { key: '70cbf14a6b7ea638465d56780780ef3e9b5e0f4e' }, h("button", Object.assign({ key: 'af50f354dca1b518b13216ae0ce6cc85488f7df3' }, inheritedButtonProps, { "aria-label": this.tdsAriaLabel }), h("tds-icon", { key: '7978cd71ad41001dee4dbdb12894e22e716f3164', class: "icon", name: "burger", size: "20px" })))));
7
15
  }
8
16
  static get is() { return "tds-header-hamburger"; }
9
17
  static get encapsulation() { return "shadow"; }
@@ -17,5 +25,26 @@ export class TdsHeaderHamburger {
17
25
  "$": ["header-hamburger.css"]
18
26
  };
19
27
  }
28
+ static get properties() {
29
+ return {
30
+ "tdsAriaLabel": {
31
+ "type": "string",
32
+ "mutable": false,
33
+ "complexType": {
34
+ "original": "string",
35
+ "resolved": "string",
36
+ "references": {}
37
+ },
38
+ "required": false,
39
+ "optional": false,
40
+ "docs": {
41
+ "tags": [],
42
+ "text": "Value to be used by the aria-label attribute"
43
+ },
44
+ "attribute": "tds-aria-label",
45
+ "reflect": false
46
+ }
47
+ };
48
+ }
20
49
  static get elementRef() { return "host"; }
21
50
  }
@@ -10,6 +10,7 @@ export class TdsHeaderLauncher {
10
10
  this.open = false;
11
11
  this.buttonEl = undefined;
12
12
  this.hasListTypeMenu = false;
13
+ this.tdsAriaLabel = undefined;
13
14
  }
14
15
  onAnyClick(event) {
15
16
  // Source: https://lamplightdev.com/blog/2021/04/10/how-to-detect-clicks-outside-of-a-web-component/
@@ -18,12 +19,32 @@ export class TdsHeaderLauncher {
18
19
  this.open = false;
19
20
  }
20
21
  }
22
+ handleKeyDown(event) {
23
+ if (event.key === 'Escape' && this.open) {
24
+ this.open = false;
25
+ this.buttonEl.shadowRoot.querySelector('button').focus();
26
+ }
27
+ }
21
28
  componentDidLoad() {
22
29
  const hasListTypeMenu = !!this.host.querySelector('tds-header-launcher-list');
23
30
  this.hasListTypeMenu = hasListTypeMenu;
24
31
  }
25
32
  toggleLauncher() {
26
33
  this.open = !this.open;
34
+ if (this.open) {
35
+ requestAnimationFrame(() => {
36
+ const selectors = "a, [tabindex='0']";
37
+ const firstFocusableElement = this.host.shadowRoot.querySelector(selectors) || this.host.querySelector(selectors);
38
+ if (firstFocusableElement instanceof HTMLElement) {
39
+ firstFocusableElement.focus();
40
+ }
41
+ });
42
+ }
43
+ }
44
+ connectedCallback() {
45
+ if (!this.tdsAriaLabel) {
46
+ console.warn('Tegel Header Launcher component: missing tdsAriaLabel prop');
47
+ }
27
48
  }
28
49
  render() {
29
50
  this.ariaAttributes = Object.assign(Object.assign({}, this.ariaAttributes), inheritAriaAttributes(this.host, ['role']));
@@ -32,11 +53,11 @@ export class TdsHeaderLauncher {
32
53
  }, 'ref': (el) => {
33
54
  this.buttonEl = el;
34
55
  } });
35
- return (h(Host, { key: 'd886168b8834ced8a2705b30b9982726dc72f8b6' }, h("div", { key: '0c4b9b27e82cf91c000619ef8d0593f8b664b605', class: {
56
+ return (h(Host, { key: '3a0100f1429a1e09a5745c6b74835bddb6ba5157' }, h("div", { key: '50220e92372ac5496a4b589441e4920375169e79', class: {
36
57
  'wrapper': true,
37
58
  'state-open': this.open,
38
59
  'state-list-type-menu': this.hasListTypeMenu,
39
- } }, h("tds-header-launcher-button", Object.assign({ key: 'd0ff7205bf79ef4744d65dcf98734aff5520b004' }, buttonAttributes)), this.buttonEl && (h("tds-popover-canvas", { key: 'c337c31282b08c5add95b16271bdfc147fd16c5c', id: `tds-launcher-${this.uuid}`, class: "menu", referenceEl: this.buttonEl, placement: "bottom-start", show: this.open, offsetDistance: 0, modifiers: [
60
+ } }, h("tds-header-launcher-button", Object.assign({ key: 'd58c3ba5f08809487eeca1e6ce8a31879f0c52d9' }, buttonAttributes, { "tds-aria-label": this.tdsAriaLabel })), this.buttonEl && (h("tds-popover-canvas", { key: '4806b02e07aef32a640eedc1f0f76285950ec384', id: `tds-launcher-${this.uuid}`, class: "menu", referenceEl: this.buttonEl, placement: "bottom-start", show: this.open, offsetDistance: 0, modifiers: [
40
61
  {
41
62
  name: 'flip',
42
63
  options: {
@@ -57,6 +78,27 @@ export class TdsHeaderLauncher {
57
78
  "$": ["header-launcher.css"]
58
79
  };
59
80
  }
81
+ static get properties() {
82
+ return {
83
+ "tdsAriaLabel": {
84
+ "type": "string",
85
+ "mutable": false,
86
+ "complexType": {
87
+ "original": "string",
88
+ "resolved": "string",
89
+ "references": {}
90
+ },
91
+ "required": false,
92
+ "optional": false,
93
+ "docs": {
94
+ "tags": [],
95
+ "text": "Value to be used by the aria-label attribute of the launcher button"
96
+ },
97
+ "attribute": "tds-aria-label",
98
+ "reflect": false
99
+ }
100
+ };
101
+ }
60
102
  static get states() {
61
103
  return {
62
104
  "open": {},
@@ -72,6 +114,12 @@ export class TdsHeaderLauncher {
72
114
  "target": "window",
73
115
  "capture": false,
74
116
  "passive": false
117
+ }, {
118
+ "name": "keydown",
119
+ "method": "handleKeyDown",
120
+ "target": "window",
121
+ "capture": false,
122
+ "passive": false
75
123
  }];
76
124
  }
77
125
  }
@@ -3,11 +3,12 @@ import inheritAriaAttributes from "../../../utils/inheritAriaAttributes";
3
3
  export class TdsHeaderLauncherButton {
4
4
  constructor() {
5
5
  this.active = false;
6
+ this.tdsAriaLabel = undefined;
6
7
  }
7
8
  render() {
8
9
  this.ariaAttributes = Object.assign(Object.assign({}, this.ariaAttributes), inheritAriaAttributes(this.host));
9
10
  const buttonProps = Object.assign({}, this.ariaAttributes);
10
- return (h(Host, { key: '335cfea4d8b36b95639985dc4a67f6ccc891d122' }, h("tds-header-item", { key: '0b497a3b369d43dd3c43f4471e9e9d825f2b5bd1', active: this.active }, h("button", Object.assign({ key: '84aaba13ed00d3515f98d81b419ab2898bca4910' }, buttonProps), h("tds-icon", { key: 'f65b047f5c36222b20c73ffd2340eebca0f47d33', class: "icon", name: "bento", size: "20px" })))));
11
+ return (h(Host, { key: '445f5863dd96c417c99e460248bd0f2c2a224f0a' }, h("tds-header-item", { key: '792692a34c1192d37e81322a8e75387e51954ebe', active: this.active }, h("button", Object.assign({ key: '7be3e9e148ceab7b361f37b1029dfad474db7b16' }, buttonProps, { "aria-label": this.tdsAriaLabel }), h("tds-icon", { key: '5001f19dfa40ade6a9c64052caa4c38de901a5d4', class: "icon", name: "bento", size: "20px", "svg-title": this.tdsAriaLabel })))));
11
12
  }
12
13
  static get is() { return "tds-header-launcher-button"; }
13
14
  static get encapsulation() { return "shadow"; }
@@ -40,6 +41,23 @@ export class TdsHeaderLauncherButton {
40
41
  "attribute": "active",
41
42
  "reflect": false,
42
43
  "defaultValue": "false"
44
+ },
45
+ "tdsAriaLabel": {
46
+ "type": "string",
47
+ "mutable": false,
48
+ "complexType": {
49
+ "original": "string",
50
+ "resolved": "string",
51
+ "references": {}
52
+ },
53
+ "required": false,
54
+ "optional": false,
55
+ "docs": {
56
+ "tags": [],
57
+ "text": "Value to be used by the aria-label attribute"
58
+ },
59
+ "attribute": "tds-aria-label",
60
+ "reflect": false
43
61
  }
44
62
  };
45
63
  }