@scania/tegel 1.15.0 → 1.16.0-tdsheaderitems-beta.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 (147) hide show
  1. package/dist/cjs/index-ca8040ad.js +4 -8
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/tds-body-cell.cjs.entry.js +2 -3
  4. package/dist/cjs/{tds-dropdown.cjs.entry.js → tds-dropdown_2.cjs.entry.js} +93 -4
  5. package/dist/cjs/tds-folder-tab.cjs.entry.js +2 -2
  6. package/dist/cjs/tds-folder-tabs.cjs.entry.js +2 -2
  7. package/dist/cjs/tds-header-cell.cjs.entry.js +1 -1
  8. package/dist/cjs/tds-header.cjs.entry.js +10 -1
  9. package/dist/cjs/tds-inline-tab.cjs.entry.js +2 -2
  10. package/dist/cjs/tds-inline-tabs.cjs.entry.js +2 -2
  11. package/dist/cjs/tds-navigation-tab.cjs.entry.js +2 -2
  12. package/dist/cjs/tds-navigation-tabs.cjs.entry.js +2 -2
  13. package/dist/cjs/tds-table-body-row-expandable.cjs.entry.js +10 -7
  14. package/dist/cjs/tds-table-body.cjs.entry.js +13 -3
  15. package/dist/cjs/tds-table-footer.cjs.entry.js +41 -16
  16. package/dist/cjs/tds-table-header-input-wrapper.cjs.entry.js +1 -1
  17. package/dist/cjs/tds-table-header.cjs.entry.js +2 -2
  18. package/dist/cjs/tds-table-toolbar.cjs.entry.js +2 -2
  19. package/dist/cjs/tds-table.cjs.entry.js +8 -3
  20. package/dist/cjs/tds-text-field.cjs.entry.js +5 -5
  21. package/dist/cjs/tds-textarea.cjs.entry.js +3 -3
  22. package/dist/cjs/tds-toast.cjs.entry.js +3 -3
  23. package/dist/cjs/tds-toggle.cjs.entry.js +1 -1
  24. package/dist/cjs/tds-tooltip.cjs.entry.js +2 -2
  25. package/dist/cjs/tegel.cjs.js +1 -1
  26. package/dist/collection/components/dropdown/dropdown-option/dropdown-option.css +6 -0
  27. package/dist/collection/components/dropdown/dropdown-option/dropdown-option.js +1 -1
  28. package/dist/collection/components/dropdown/dropdown.css +13 -0
  29. package/dist/collection/components/dropdown/dropdown.js +5 -5
  30. package/dist/collection/components/header/header.js +10 -1
  31. package/dist/collection/components/side-menu/side-menu.js +3 -3
  32. package/dist/collection/components/stepper/stepper.js +1 -1
  33. package/dist/collection/components/table/table/table.js +29 -4
  34. package/dist/collection/components/table/table-body/table-body.css +28 -0
  35. package/dist/collection/components/table/table-body/table-body.js +13 -2
  36. package/dist/collection/components/table/table-body-cell/table-body-cell.js +2 -4
  37. package/dist/collection/components/table/table-body-row-expandable/table-body-row-expandable.css +1 -1
  38. package/dist/collection/components/table/table-body-row-expandable/table-body-row-expandable.js +29 -8
  39. package/dist/collection/components/table/table-footer/table-footer.css +10 -0
  40. package/dist/collection/components/table/table-footer/table-footer.js +78 -18
  41. package/dist/collection/components/table/table-header/table-header.js +2 -2
  42. package/dist/collection/components/table/table-header-cell/table-header-cell.js +1 -1
  43. package/dist/collection/components/table/table-header-input-wrapper/table-header-input-wrapper.js +1 -1
  44. package/dist/collection/components/table/table-toolbar/table-toolbar.js +2 -2
  45. package/dist/collection/components/tabs/folder-tabs/folder-tab/folder-tab.js +2 -2
  46. package/dist/collection/components/tabs/folder-tabs/folder-tabs.js +2 -2
  47. package/dist/collection/components/tabs/inline-tabs/inline-tab/inline-tab.js +2 -2
  48. package/dist/collection/components/tabs/inline-tabs/inline-tabs.js +2 -2
  49. package/dist/collection/components/tabs/navigation-tabs/navigation-tab/navigation-tab.js +2 -2
  50. package/dist/collection/components/tabs/navigation-tabs/navigation-tabs.js +2 -2
  51. package/dist/collection/components/text-field/text-field.js +5 -5
  52. package/dist/collection/components/textarea/textarea.js +3 -3
  53. package/dist/collection/components/toast/toast.js +3 -3
  54. package/dist/collection/components/toggle/toggle.js +1 -1
  55. package/dist/collection/components/tooltip/tooltip.js +2 -2
  56. package/dist/{esm/tds-dropdown-option.entry.js → components/p-1c256b8d.js} +45 -10
  57. package/dist/{esm/tds-dropdown.entry.js → components/p-e7eab204.js} +61 -12
  58. package/dist/components/tds-body-cell.js +2 -4
  59. package/dist/components/tds-dropdown-option.js +1 -124
  60. package/dist/components/tds-dropdown.js +1 -509
  61. package/dist/components/tds-folder-tab.js +2 -2
  62. package/dist/components/tds-folder-tabs.js +2 -2
  63. package/dist/components/tds-header-cell.js +1 -1
  64. package/dist/components/tds-header.js +10 -1
  65. package/dist/components/tds-inline-tab.js +2 -2
  66. package/dist/components/tds-inline-tabs.js +2 -2
  67. package/dist/components/tds-navigation-tab.js +2 -2
  68. package/dist/components/tds-navigation-tabs.js +2 -2
  69. package/dist/components/tds-table-body-row-expandable.js +11 -7
  70. package/dist/components/tds-table-body.js +14 -3
  71. package/dist/components/tds-table-footer.js +64 -18
  72. package/dist/components/tds-table-header-input-wrapper.js +1 -1
  73. package/dist/components/tds-table-header.js +2 -2
  74. package/dist/components/tds-table-toolbar.js +2 -2
  75. package/dist/components/tds-table.js +10 -3
  76. package/dist/components/tds-text-field.js +5 -5
  77. package/dist/components/tds-textarea.js +3 -3
  78. package/dist/components/tds-toast.js +3 -3
  79. package/dist/components/tds-toggle.js +1 -1
  80. package/dist/components/tds-tooltip.js +2 -2
  81. package/dist/esm/index-51d04e39.js +4 -8
  82. package/dist/esm/loader.js +1 -1
  83. package/dist/esm/tds-body-cell.entry.js +2 -3
  84. package/dist/esm/tds-dropdown_2.entry.js +550 -0
  85. package/dist/esm/tds-folder-tab.entry.js +2 -2
  86. package/dist/esm/tds-folder-tabs.entry.js +2 -2
  87. package/dist/esm/tds-header-cell.entry.js +1 -1
  88. package/dist/esm/tds-header.entry.js +10 -1
  89. package/dist/esm/tds-inline-tab.entry.js +2 -2
  90. package/dist/esm/tds-inline-tabs.entry.js +2 -2
  91. package/dist/esm/tds-navigation-tab.entry.js +2 -2
  92. package/dist/esm/tds-navigation-tabs.entry.js +2 -2
  93. package/dist/esm/tds-table-body-row-expandable.entry.js +10 -7
  94. package/dist/esm/tds-table-body.entry.js +13 -3
  95. package/dist/esm/tds-table-footer.entry.js +41 -16
  96. package/dist/esm/tds-table-header-input-wrapper.entry.js +1 -1
  97. package/dist/esm/tds-table-header.entry.js +2 -2
  98. package/dist/esm/tds-table-toolbar.entry.js +2 -2
  99. package/dist/esm/tds-table.entry.js +8 -3
  100. package/dist/esm/tds-text-field.entry.js +5 -5
  101. package/dist/esm/tds-textarea.entry.js +3 -3
  102. package/dist/esm/tds-toast.entry.js +3 -3
  103. package/dist/esm/tds-toggle.entry.js +1 -1
  104. package/dist/esm/tds-tooltip.entry.js +2 -2
  105. package/dist/esm/tegel.js +1 -1
  106. package/dist/tegel/{p-480c6c28.entry.js → p-088bfcd4.entry.js} +1 -1
  107. package/dist/tegel/{p-a97dd06a.entry.js → p-1634247e.entry.js} +1 -1
  108. package/dist/tegel/{p-5c0bb8e1.entry.js → p-19571a64.entry.js} +1 -1
  109. package/dist/tegel/p-24f63399.entry.js +1 -0
  110. package/dist/tegel/p-51e49417.entry.js +1 -0
  111. package/dist/tegel/{p-b34cf70d.entry.js → p-52be41ce.entry.js} +1 -1
  112. package/dist/tegel/{p-e237cdcc.entry.js → p-73dd2dbb.entry.js} +1 -1
  113. package/dist/tegel/p-7a83cf55.entry.js +1 -0
  114. package/dist/tegel/{p-c12eaac3.entry.js → p-831111e9.entry.js} +1 -1
  115. package/dist/tegel/{p-08642415.entry.js → p-91dcddd5.entry.js} +1 -1
  116. package/dist/tegel/{p-f823777e.entry.js → p-987084a5.entry.js} +1 -1
  117. package/dist/tegel/{p-c1f8f523.entry.js → p-a642c800.entry.js} +1 -1
  118. package/dist/tegel/p-aed1c5cf.entry.js +1 -0
  119. package/dist/tegel/{p-7c75d8d3.entry.js → p-b00bcf39.entry.js} +1 -1
  120. package/dist/tegel/{p-6b04a919.entry.js → p-bb129d43.entry.js} +1 -1
  121. package/dist/tegel/{p-578f6d73.entry.js → p-c790ef93.entry.js} +1 -1
  122. package/dist/tegel/p-d3541e17.entry.js +1 -0
  123. package/dist/tegel/{p-98f5b520.entry.js → p-e4343e51.entry.js} +1 -1
  124. package/dist/tegel/{p-1ba22b41.entry.js → p-e86f2d31.entry.js} +1 -1
  125. package/dist/tegel/p-f4b640af.entry.js +1 -0
  126. package/dist/tegel/{p-0a4fe3db.entry.js → p-ff5cd75f.entry.js} +1 -1
  127. package/dist/tegel/{p-f3f1f357.entry.js → p-ff7ae8a3.entry.js} +1 -1
  128. package/dist/tegel/tegel.css +2 -2
  129. package/dist/tegel/tegel.esm.js +1 -1
  130. package/dist/types/components/dropdown/dropdown-option/dropdown-option.d.ts +1 -1
  131. package/dist/types/components/dropdown/dropdown.d.ts +1 -1
  132. package/dist/types/components/header/header.d.ts +2 -0
  133. package/dist/types/components/table/table/table.d.ts +4 -0
  134. package/dist/types/components/table/table-body/table-body.d.ts +1 -0
  135. package/dist/types/components/table/table-body-cell/table-body-cell.d.ts +0 -1
  136. package/dist/types/components/table/table-body-row-expandable/table-body-row-expandable.d.ts +5 -4
  137. package/dist/types/components/table/table-footer/table-footer.d.ts +10 -0
  138. package/dist/types/components.d.ts +46 -4
  139. package/package.json +1 -1
  140. package/dist/cjs/tds-dropdown-option.cjs.entry.js +0 -95
  141. package/dist/tegel/p-36e88ce8.entry.js +0 -1
  142. package/dist/tegel/p-3e859e33.entry.js +0 -1
  143. package/dist/tegel/p-7cb43ebe.entry.js +0 -1
  144. package/dist/tegel/p-957c8b27.entry.js +0 -1
  145. package/dist/tegel/p-a2548553.entry.js +0 -1
  146. package/dist/tegel/p-e1842d99.entry.js +0 -1
  147. package/dist/tegel/p-e7fac8ad.entry.js +0 -1
@@ -0,0 +1,550 @@
1
+ import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-51d04e39.js';
2
+
3
+ /**
4
+ * Find the next focusable element index in a list of focusable elements.
5
+ * @param items List of focusable elements, element with a attribute of disabled that is true will be skipped over.
6
+ * @param nextItemIndex The index in the list to start the search on.
7
+ */
8
+ const findNextFocusableElement = (items, nextItemIndex) => {
9
+ if (items[nextItemIndex] === undefined) {
10
+ return 0;
11
+ }
12
+ for (let index = nextItemIndex; index < items.length; index++) {
13
+ if (!items[index].disabled) {
14
+ return index;
15
+ }
16
+ }
17
+ };
18
+
19
+ /**
20
+ * Find the previous focusable element index in a list of focusable elements.
21
+ *
22
+ * @param items List of focusable elements, element with a attribute of disabled that is true will be skipped over.
23
+ * @param nextItemIndex The index in the list to start the search on.
24
+ */
25
+ const findPreviousFocusableElement = (items, previousItemIndex) => {
26
+ if (items[previousItemIndex] === undefined) {
27
+ return items.length - 1;
28
+ }
29
+ for (let index = previousItemIndex; index >= 0; index--) {
30
+ if (!items[index].disabled) {
31
+ return index;
32
+ }
33
+ }
34
+ };
35
+
36
+ /** reference: https://github.com/ionic-team/ionic-framework/blob/main/core/src/utils/helpers.ts#L346
37
+ *
38
+ * Appends a hidden input element to allow the component
39
+ * work within and get picked up by a <form>.
40
+ * @param element The element on which the input with be appended.
41
+ * @param name Name of the input.
42
+ * @param value The value of the input.
43
+ * @param disabled Disables the input if true.
44
+ * @param additionalAttributes Additional attributes that should be passed to the input.
45
+ */
46
+ const appendHiddenInput = (element, name, value, disabled, additionalAttributes) => {
47
+ let input = element.querySelector('input');
48
+ if (!element.querySelector('input')) {
49
+ input = element.ownerDocument.createElement('input');
50
+ input.type = 'hidden';
51
+ if (additionalAttributes) {
52
+ additionalAttributes.forEach((attr) => input.setAttribute(attr.key, attr.value));
53
+ }
54
+ element.appendChild(input);
55
+ }
56
+ input.disabled = disabled;
57
+ input.name = name;
58
+ input.value = value || '';
59
+ };
60
+
61
+ const dropdownCss = "@charset \"UTF-8\";:host button{all:unset;height:100%;width:100%;background-color:var(--tds-dropdown-bg);border-bottom:1px solid var(--tds-dropdown-border-bottom);border-radius:4px 4px 0 0}:host button:hover{border-bottom:1px solid var(--tds-dropdown-border-bottom-hover)}:host button .value-wrapper{padding:0 16px;display:flex;align-items:center;justify-content:space-between}:host button.placeholder{color:var(--tds-dropdown-placeholder-color);line-height:1.3}:host button.value{color:var(--tds-dropdown-value-color);font:var(--tds-detail-02);letter-spacing:var(--tds-detail-02-ls);line-height:1.3}:host button:focus{border-bottom-color:var(--tds-dropdown-border-bottom-open)}:host button:focus::before{content:\"\";position:absolute;bottom:0;left:0;width:100%;height:1px;background:var(--tds-dropdown-border-bottom-open)}:host button.error{border-bottom:1px solid var(--tds-negative)}:host button.error:focus{border-bottom-color:transparent}:host button.error:focus::before{content:\"\";position:absolute;bottom:0;left:0;width:100%;height:2px;background:var(--tds-negative)}:host button:disabled{color:var(--tds-dropdown-disabled-color);border-bottom:1px solid transparent}:host button .menu-icon{margin-right:0}:host .filter{display:flex;align-items:center;justify-content:space-between;height:100%;background-color:var(--tds-dropdown-bg);border-bottom:1px solid var(--tds-dropdown-border-bottom);padding-left:16px;border-radius:4px 4px 0 0}:host .filter:hover{border-bottom:1px solid var(--tds-dropdown-border-bottom-hover)}:host .filter.disabled{color:var(--tds-dropdown-disabled-color);border-bottom:1px solid transparent}:host .filter .value-wrapper{display:flex;width:100%;height:100%}:host .filter .label-inside-as-placeholder{position:absolute;font:var(--tds-detail-02);letter-spacing:var(--tds-detail-02-ls);line-height:1.3;color:var(--tds-dropdown-placeholder-color)}:host .filter .label-inside-as-placeholder.lg{top:20px}:host .filter .label-inside-as-placeholder.md{top:16px}:host .filter .label-inside-as-placeholder.sm{display:none}:host .filter .label-inside-as-placeholder.selected{font:var(--tds-detail-07);letter-spacing:var(--tds-detail-07-ls);transition:all 0.2s ease-in-out}:host .filter .label-inside-as-placeholder.selected.lg{top:12px}:host .filter .label-inside-as-placeholder.selected.md{top:8px}:host .filter .label-inside-as-placeholder.selected.sm{display:none}:host .filter .label-inside-as-placeholder.selected+.placeholder:not(.sm){margin-top:8px}:host .filter.focus{border-bottom-color:transparent}:host .filter.focus::before{content:\"\";position:absolute;bottom:0;left:0;width:100%;height:2px;background:var(--tds-dropdown-border-bottom-open)}:host .filter.error{border-bottom:1px solid var(--tds-negative)}:host .filter.error.focus{border-bottom-color:transparent}:host .filter.error.focus::before{content:\"\";position:absolute;bottom:0;left:0;width:100%;height:2px;background:var(--tds-negative)}:host .filter input{flex:1;all:unset;width:100%}:host .filter input::placeholder{color:var(--tds-dropdown-placeholder-color)}:host .filter input:disabled::placeholder{color:var(--tds-dropdown-disabled-color)}:host .filter tds-icon{cursor:pointer}:host .filter .menu-icon{margin-right:16px}:host .filter .clear-icon{margin:0 8px;color:var(--tds-dropdown-clear-icon-color);padding-right:8px;border-right:1px solid var(--tds-dropdown-clear-icon-color)}:host .filter .clear-icon:hover{color:var(--tds-dropdown-clear-icon-hover-color)}:host .filter .clear-icon.hide{display:none;visibility:hidden}:host{--tds-scrollbar-width-standard:thin;--tds-scrollbar-width:10px;--tds-scrollbar-height:10px;--tds-scrollbar-thumb-border-width:3px;--tds-scrollbar-thumb-border-hover-width:2px}body{scrollbar-width:thin}:host{display:block;position:relative;font:var(--tds-detail-02);letter-spacing:var(--tds-detail-02-ls)}:host .label-outside{font:var(--tds-detail-05);letter-spacing:var(--tds-detail-05-ls);color:var(--tds-dropdown-label-color);margin-bottom:8px}:host .label-outside.disabled{color:var(--tds-dropdown-disabled-color)}:host .dropdown-select{position:relative}:host .dropdown-select.disabled .label-inside,:host .dropdown-select.disabled .placeholder,:host .dropdown-select.disabled .label-inside-as-placeholder,:host .dropdown-select.disabled .value-wrapper{color:var(--tds-dropdown-disabled-color)}:host .dropdown-select .label-inside{position:absolute;font:var(--tds-detail-07);letter-spacing:var(--tds-detail-07-ls);color:var(--tds-dropdown-label-inside-color)}:host .dropdown-select .label-inside.lg{top:12px;left:16px}:host .dropdown-select .label-inside.md{top:8px;left:16px}:host .dropdown-select .label-inside.sm{display:none}:host .dropdown-select .label-inside.xs{display:none}:host .dropdown-select .label-inside+.placeholder:not(.sm){margin-top:8px}:host .dropdown-select .placeholder{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-right:var(--tds-placeholder-margin)}:host .dropdown-select .label-inside-as-placeholder{color:var(--tds-dropdown-placeholder-color)}:host .dropdown-select .label-inside-as-placeholder.selected{position:absolute;font:var(--tds-detail-07);letter-spacing:var(--tds-detail-07-ls);transition:all 0.2s ease-in-out}:host .dropdown-select .label-inside-as-placeholder.selected.lg{top:12px}:host .dropdown-select .label-inside-as-placeholder.selected.md{top:8px}:host .dropdown-select .label-inside-as-placeholder.selected.sm{display:none}:host .dropdown-select .label-inside-as-placeholder.selected+.placeholder:not(.sm){margin-top:8px}:host .dropdown-select.lg{height:55px}:host .dropdown-select.md{height:47px}:host .dropdown-select.sm{height:39px}:host .dropdown-select.xs{height:29px}:host .helper{margin-top:4px;color:var(--tds-dropdown-helper-color);font:var(--tds-detail-05);letter-spacing:var(--tds-detail-05-ls);display:flex;align-items:center;gap:8px}:host .helper.error{color:var(--tds-negative)}:host .helper.disabled{color:var(--tds-dropdown-disabled-color)}:host .dropdown-list{z-index:100;position:absolute;margin-top:1px;width:100%;transform-origin:top;transition:transform 0.2s ease-in-out;box-shadow:rgba(0, 0, 0, 0.1) 0 2px 3px 0;border-radius:0 0 4px 4px;overflow-y:auto}:host .dropdown-list:hover::-webkit-scrollbar-thumb{border:var(--tds-scrollbar-thumb-border-hover-width) solid transparent;background:var(--tds-scrollbar-hover-thumb-color);background-clip:padding-box}:host .dropdown-list::-webkit-scrollbar{width:var(--tds-scrollbar-width)}:host .dropdown-list::-webkit-scrollbar-track{background:var(--tds-scrollbar-track-color)}:host .dropdown-list::-webkit-scrollbar-thumb{border-radius:40px;background:var(--tds-scrollbar-thumb-color);border:var(--tds-scrollbar-thumb-border-width) solid transparent;background-clip:padding-box}:host .dropdown-list::-webkit-scrollbar-button{height:0;width:0}@supports not selector(::-webkit-scrollbar){:host .dropdown-list{scrollbar-color:var(--tds-scrollbar-thumb-color) var(--tds-scrollbar-track-color);scrollbar-width:var(--tds-scrollbar-width-standard)}}:host .dropdown-list.lg{max-height:312px}:host .dropdown-list.md{max-height:312px}:host .dropdown-list.sm{max-height:260px}:host .dropdown-list.xs{max-height:260px}:host .dropdown-list.up{bottom:100%;margin-top:0;margin-bottom:1px;transform-origin:bottom;display:flex;flex-direction:column-reverse;box-shadow:rgba(0, 0, 0, 0.1) 0 -1px 3px 0;border-radius:4px 4px 0 0}:host .dropdown-list.up.label-outside{bottom:calc(100% - 24px)}:host .dropdown-list.closed{transform:scaleY(0);visibility:hidden}:host .dropdown-list.open{transform:scaleY(1)}:host .dropdown-list .no-result{font:var(--tds-detail-02);letter-spacing:var(--tds-detail-02-ls);display:flex;align-items:center;padding:0 16px;background-color:var(--tds-dropdown-bg)}:host .dropdown-list .no-result.lg{height:56px}:host .dropdown-list .no-result.md{height:48px}:host .dropdown-list .no-result.sm{height:40px}:host .dropdown-list .no-result.xs{height:40px}:host .menu-icon{color:var(--tds-dropdown-menu-icon-color)}:host tds-icon{transition:transform 0.2s ease-in-out}:host tds-icon.open{transform:rotateZ(180deg)}";
62
+ const TdsDropdownStyle0 = dropdownCss;
63
+
64
+ const TdsDropdown = class {
65
+ constructor(hostRef) {
66
+ registerInstance(this, hostRef);
67
+ this.tdsChange = createEvent(this, "tdsChange", 6);
68
+ this.tdsFocus = createEvent(this, "tdsFocus", 6);
69
+ this.tdsBlur = createEvent(this, "tdsBlur", 6);
70
+ this.tdsInput = createEvent(this, "tdsInput", 6);
71
+ this.setDefaultOption = () => {
72
+ if (this.defaultValue) {
73
+ const children = Array.from(this.host.children).filter((element) => element.tagName === 'TDS-DROPDOWN-OPTION');
74
+ if (children.length === 0) {
75
+ console.warn('TDS DROPDOWN: No options found. Disregard if loading data asynchronously.');
76
+ return;
77
+ }
78
+ const defaultValues = this.multiselect
79
+ ? new Set(this.defaultValue.split(','))
80
+ : [this.defaultValue];
81
+ const childrenMap = new Map(children.map((element) => [element.value, element]));
82
+ const matchedValues = Array.from(defaultValues).filter((value) => {
83
+ const element = childrenMap.get(value);
84
+ if (element) {
85
+ element.setSelected(true);
86
+ return true;
87
+ }
88
+ return false;
89
+ });
90
+ if (matchedValues.length > 0) {
91
+ this.value = [...new Set(this.value ? [...this.value, ...matchedValues] : matchedValues)];
92
+ this.setValueAttribute();
93
+ }
94
+ else {
95
+ console.warn(`TDS DROPDOWN: No matching option found for defaultValue "${this.defaultValue}"`);
96
+ }
97
+ }
98
+ };
99
+ /* Returns a list of all children that are tds-dropdown-option elements */
100
+ this.getChildren = () => {
101
+ const tdsDropdownOptions = Array.from(this.host.children).filter((element) => element.tagName === 'TDS-DROPDOWN-OPTION');
102
+ if (tdsDropdownOptions.length === 0) {
103
+ console.warn('TDS DROPDOWN: Data missing. Disregard if loading data asynchronously.');
104
+ }
105
+ else
106
+ return tdsDropdownOptions;
107
+ };
108
+ this.getOpenDirection = () => {
109
+ var _a, _b, _c, _d, _e;
110
+ if (this.openDirection === 'auto' || !this.openDirection) {
111
+ const dropdownMenuHeight = (_b = (_a = this.dropdownList) === null || _a === void 0 ? void 0 : _a.offsetHeight) !== null && _b !== void 0 ? _b : 0;
112
+ const distanceToBottom = (_e = (_d = (_c = this.host).getBoundingClientRect) === null || _d === void 0 ? void 0 : _d.call(_c).top) !== null && _e !== void 0 ? _e : 0;
113
+ const viewportHeight = window.innerHeight;
114
+ if (distanceToBottom + dropdownMenuHeight + 57 > viewportHeight) {
115
+ return 'up';
116
+ }
117
+ return 'down';
118
+ }
119
+ return this.openDirection;
120
+ };
121
+ /* Toggles the open state of the Dropdown and sets focus to the input element */
122
+ this.handleToggleOpen = () => {
123
+ if (!this.disabled) {
124
+ this.open = !this.open;
125
+ if (this.open) {
126
+ this.focusInputElement();
127
+ }
128
+ }
129
+ };
130
+ /* Focuses the input element in the Dropdown, if the reference is present. */
131
+ this.focusInputElement = () => {
132
+ if (this.inputElement)
133
+ this.inputElement.focus();
134
+ };
135
+ this.getSelectedChildren = () => {
136
+ var _a;
137
+ return (_a = this.value) === null || _a === void 0 ? void 0 : _a.map((stringValue) => {
138
+ const matchingElement = this.getChildren().find((element) => element.value === stringValue);
139
+ return matchingElement;
140
+ }).filter(Boolean);
141
+ };
142
+ this.getSelectedChildrenLabels = () => {
143
+ var _a;
144
+ return (_a = this.getSelectedChildren()) === null || _a === void 0 ? void 0 : _a.map((element) => element.textContent.trim());
145
+ };
146
+ this.getValue = () => {
147
+ const labels = this.getSelectedChildrenLabels();
148
+ if (!labels) {
149
+ return '';
150
+ }
151
+ return this.filter ? labels === null || labels === void 0 ? void 0 : labels.join(', ') : labels === null || labels === void 0 ? void 0 : labels.toString();
152
+ };
153
+ this.setValueAttribute = () => {
154
+ var _a, _b, _c;
155
+ if (((_a = this.value) === null || _a === void 0 ? void 0 : _a.toString()) === '')
156
+ this.value = null;
157
+ this.host.setAttribute('value', (_c = (_b = this.value) === null || _b === void 0 ? void 0 : _b.map((val) => val).toString()) !== null && _c !== void 0 ? _c : null);
158
+ };
159
+ this.handleFilter = (event) => {
160
+ this.tdsInput.emit(event);
161
+ const query = event.target.value.toLowerCase();
162
+ /* Check if the query is empty, and if so, show all options */
163
+ const children = this.getChildren();
164
+ if (query === '') {
165
+ children.forEach((element) => {
166
+ element.removeAttribute('hidden');
167
+ return element;
168
+ });
169
+ this.filterResult = null;
170
+ /* Hide the options that do not match the query */
171
+ }
172
+ else {
173
+ this.filterResult = children.filter((element) => {
174
+ if (!this.normalizeString(element.textContent)
175
+ .toLowerCase()
176
+ .includes(this.normalizeString(query).toLowerCase())) {
177
+ element.setAttribute('hidden', '');
178
+ }
179
+ else {
180
+ element.removeAttribute('hidden');
181
+ }
182
+ return !element.hasAttribute('hidden');
183
+ }).length;
184
+ }
185
+ };
186
+ this.handleFilterReset = () => {
187
+ this.reset();
188
+ this.inputElement.value = '';
189
+ this.handleFilter({ target: { value: this.inputElement.value } });
190
+ this.inputElement.focus();
191
+ };
192
+ this.handleFocus = (event) => {
193
+ this.tdsFocus.emit(event);
194
+ };
195
+ this.handleBlur = (event) => {
196
+ this.tdsBlur.emit(event);
197
+ };
198
+ this.handleChange = () => {
199
+ var _a, _b;
200
+ this.tdsChange.emit({
201
+ name: this.name,
202
+ value: (_b = (_a = this.value) === null || _a === void 0 ? void 0 : _a.map((value) => value).toString()) !== null && _b !== void 0 ? _b : null,
203
+ });
204
+ };
205
+ this.name = undefined;
206
+ this.disabled = false;
207
+ this.helper = undefined;
208
+ this.label = undefined;
209
+ this.labelPosition = undefined;
210
+ this.modeVariant = null;
211
+ this.openDirection = 'auto';
212
+ this.placeholder = undefined;
213
+ this.size = 'lg';
214
+ this.error = false;
215
+ this.multiselect = false;
216
+ this.filter = false;
217
+ this.normalizeText = true;
218
+ this.noResultText = 'No result';
219
+ this.defaultValue = undefined;
220
+ this.open = false;
221
+ this.value = undefined;
222
+ this.filterResult = undefined;
223
+ this.filterFocus = undefined;
224
+ }
225
+ /** Method that resets the Dropdown, marks all children as non-selected and resets the value to null. */
226
+ async reset() {
227
+ this.dropdownList.scrollTop = 0;
228
+ this.internalReset();
229
+ this.handleChange();
230
+ }
231
+ /** Method for setting the value of the Dropdown.
232
+ *
233
+ * Single selection example:
234
+ *
235
+ * <code>
236
+ * dropdown.setValue('option-1', 'Option 1');
237
+ * </code>
238
+ *
239
+ * Multiselect example:
240
+ *
241
+ * <code>
242
+ * dropdown.setValue(['option-1', 'option-2']);
243
+ * </code>
244
+ */
245
+ // The label is optional here ONLY to not break the API. Should be removed for 2.0.
246
+ // @ts-ignore
247
+ // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
248
+ async setValue(value, label) {
249
+ let nextValue;
250
+ if (typeof value === 'string')
251
+ nextValue = [value];
252
+ else
253
+ nextValue = value;
254
+ if (!this.multiselect && nextValue.length > 1) {
255
+ console.warn('Tried to select multiple items, but multiselect is not enabled.');
256
+ nextValue = [nextValue[0]];
257
+ }
258
+ nextValue = [...new Set(nextValue)];
259
+ this.internalReset();
260
+ for (let i = 0; i < nextValue.length; i++) {
261
+ const optionExist = this.getChildren().some((element) => element.value === nextValue[i]);
262
+ if (!optionExist) {
263
+ nextValue.splice(i, 1);
264
+ }
265
+ }
266
+ this.value = nextValue;
267
+ this.setValueAttribute();
268
+ this.selectChildrenAsSelectedBasedOnSelectionProp();
269
+ this.handleChange();
270
+ /* This returns an array of object with a value and label pair. This is ONLY to not break the API. Should be removed for 2.0. */
271
+ /* https://tegel.atlassian.net/browse/CDEP-2703 */
272
+ const selection = this.getSelectedChildren().map((element) => ({
273
+ value: element.value,
274
+ label: element.textContent.trim(),
275
+ }));
276
+ // Update inputElement value and placeholder text
277
+ if (this.filter) {
278
+ this.inputElement.value = this.getValue();
279
+ }
280
+ return selection;
281
+ }
282
+ /**
283
+ * @internal
284
+ */
285
+ async appendValue(value) {
286
+ if (this.multiselect && this.value) {
287
+ this.setValue([...this.value, value]);
288
+ }
289
+ else {
290
+ this.setValue(value);
291
+ }
292
+ }
293
+ /** Method for removing a selected value in the Dropdown. */
294
+ async removeValue(oldValue) {
295
+ var _a, _b;
296
+ let label;
297
+ if (this.multiselect) {
298
+ (_a = this.getChildren()) === null || _a === void 0 ? void 0 : _a.forEach((element) => {
299
+ var _a;
300
+ if (element.value === oldValue) {
301
+ this.value = (_a = this.value) === null || _a === void 0 ? void 0 : _a.filter((value) => value !== element.value);
302
+ label = element.textContent.trim();
303
+ element.setSelected(false);
304
+ }
305
+ return element;
306
+ });
307
+ }
308
+ else {
309
+ this.reset();
310
+ }
311
+ this.handleChange();
312
+ this.setValueAttribute();
313
+ /* This returns an array of object with a value and label pair. This is ONLY to not break the API. Should be removed for 2.0. */
314
+ /* https://tegel.atlassian.net/browse/CDEP-2703 */
315
+ return (_b = this.value) === null || _b === void 0 ? void 0 : _b.map((value) => ({ value, label }));
316
+ }
317
+ /** Method for closing the Dropdown. */
318
+ async close() {
319
+ this.open = false;
320
+ }
321
+ onAnyClick(event) {
322
+ if (this.open) {
323
+ // Source: https://lamplightdev.com/blog/2021/04/10/how-to-detect-clicks-outside-of-a-web-component/
324
+ const isClickOutside = !event.composedPath().includes(this.host);
325
+ if (isClickOutside) {
326
+ this.open = false;
327
+ }
328
+ }
329
+ }
330
+ async onKeyDown(event) {
331
+ // Get the active element
332
+ const { activeElement } = document;
333
+ if (!activeElement) {
334
+ return;
335
+ }
336
+ const children = this.getChildren();
337
+ if (event.key === 'ArrowDown') {
338
+ /* Get the index of the current focus index, if there is no
339
+ nextElementSibling return the index for the first child in our Dropdown. */
340
+ const startingIndex = activeElement.nextElementSibling
341
+ ? children.findIndex((element) => element === activeElement.nextElementSibling)
342
+ : 0;
343
+ const elementIndex = findNextFocusableElement(children, startingIndex);
344
+ children[elementIndex].focus();
345
+ }
346
+ else if (event.key === 'ArrowUp') {
347
+ /* Get the index of the current focus index, if there is no
348
+ previousElementSibling return the index for the first last in our Dropdown. */
349
+ const startingIndex = activeElement.nextElementSibling
350
+ ? this.getChildren().findIndex((element) => element === activeElement.previousElementSibling)
351
+ : 0;
352
+ const elementIndex = findPreviousFocusableElement(children, startingIndex);
353
+ children[elementIndex].focus();
354
+ }
355
+ else if (event.key === 'Escape') {
356
+ this.open = false;
357
+ }
358
+ }
359
+ // If the Dropdown gets closed,
360
+ // this sets the value of the dropdown to the current selection labels or null if no selection is made.
361
+ handleOpenState() {
362
+ if (this.filter && this.multiselect) {
363
+ if (!this.open) {
364
+ this.inputElement.value = this.getValue();
365
+ }
366
+ }
367
+ }
368
+ componentWillLoad() {
369
+ this.setDefaultOption();
370
+ }
371
+ /** Method to handle slot changes */
372
+ handleSlotChange() {
373
+ this.setDefaultOption();
374
+ }
375
+ /** Method to check if we should normalize text */
376
+ normalizeString(text) {
377
+ return this.normalizeText ? text.normalize('NFD').replace(/\p{Diacritic}/gu, '') : text;
378
+ }
379
+ /** Method that resets the dropdown without emitting an event. */
380
+ internalReset() {
381
+ this.getChildren().forEach((element) => {
382
+ element.setSelected(false);
383
+ return element;
384
+ });
385
+ this.value = null;
386
+ this.setValueAttribute();
387
+ }
388
+ selectChildrenAsSelectedBasedOnSelectionProp() {
389
+ this.getChildren().forEach((element) => {
390
+ this.value.forEach((selection) => {
391
+ if (element.value !== selection) {
392
+ // If not multiselect, we need to unselect all other options.
393
+ if (!this.multiselect) {
394
+ element.setSelected(false);
395
+ }
396
+ }
397
+ else {
398
+ element.setSelected(true);
399
+ }
400
+ });
401
+ });
402
+ }
403
+ render() {
404
+ var _a, _b, _c, _d;
405
+ appendHiddenInput(this.host, this.name, (_a = this.value) === null || _a === void 0 ? void 0 : _a.map((value) => value).toString(), this.disabled);
406
+ return (h(Host, { key: '1e7eacac32eba892288cd94254053ef9d09b03f7', role: "select", class: `${this.modeVariant ? `tds-mode-variant-${this.modeVariant}` : ''}` }, this.label && this.labelPosition === 'outside' && (h("div", { key: '8a97e693abbf5ff8973fde64c1d383e926d5c5a8', class: `label-outside ${this.disabled ? 'disabled' : ''}` }, this.label)), h("div", { key: '55d98944321d2084de6cb3fd5f70b32b5b84d518', class: `dropdown-select ${this.size} ${this.disabled ? 'disabled' : ''}` }, this.filter ? (h("div", { class: {
407
+ filter: true,
408
+ focus: this.filterFocus,
409
+ disabled: this.disabled,
410
+ error: this.error,
411
+ } }, h("div", { class: "value-wrapper" }, this.label && this.labelPosition === 'inside' && this.placeholder && (h("div", { class: `label-inside ${this.size}` }, this.label)), this.label && this.labelPosition === 'inside' && !this.placeholder && (h("div", { class: `
412
+ label-inside-as-placeholder
413
+ ${this.size}
414
+ ${((_b = this.value) === null || _b === void 0 ? void 0 : _b.length) ? 'selected' : ''}
415
+ ` }, this.label)), h("input", {
416
+ // eslint-disable-next-line no-return-assign
417
+ ref: (inputEl) => (this.inputElement = inputEl), class: `${this.labelPosition === 'inside' ? 'placeholder' : ''}`, type: "text", placeholder: this.placeholder, value: this.getValue(), disabled: this.disabled, onInput: (event) => this.handleFilter(event), onBlur: (event) => {
418
+ this.filterFocus = false;
419
+ this.handleBlur(event);
420
+ }, onFocus: (event) => {
421
+ this.open = true;
422
+ this.filterFocus = true;
423
+ this.handleFocus(event);
424
+ }, onKeyDown: (event) => {
425
+ if (event.key === 'Escape') {
426
+ this.open = false;
427
+ }
428
+ }
429
+ })), h("tds-icon", { tabIndex: 0, role: "button", "aria-label": "Clear filter", svgTitle: "Clear filter", onClick: this.handleFilterReset, onKeyDown: (event) => {
430
+ if (event.key === 'Enter') {
431
+ this.handleFilterReset();
432
+ }
433
+ }, class: `clear-icon ${this.open && this.inputElement.value !== '' ? '' : 'hide'}`, name: "cross", size: "16px" }), h("tds-icon", { tabIndex: 0, role: "button", "aria-label": "Open/Close dropdown", svgTitle: "Open/Close dropdown", onClick: this.handleToggleOpen, onKeyDown: (event) => {
434
+ if (event.key === 'Enter') {
435
+ this.handleToggleOpen();
436
+ }
437
+ }, class: `menu-icon ${this.open ? 'open' : 'closed'}`, name: "chevron_down", size: "16px" }))) : (h("button", { onClick: () => this.handleToggleOpen(), onKeyDown: (event) => {
438
+ if (event.key === 'Escape') {
439
+ this.open = false;
440
+ }
441
+ }, class: `
442
+ ${this.value ? 'value' : 'placeholder'}
443
+ ${this.open ? 'open' : 'closed'}
444
+ ${this.error ? 'error' : ''}
445
+ `, disabled: this.disabled }, h("div", { class: `value-wrapper ${this.size}` }, this.label && this.labelPosition === 'inside' && this.placeholder && (h("div", { class: `label-inside ${this.size}` }, this.label)), this.label && this.labelPosition === 'inside' && !this.placeholder && (h("div", { class: `
446
+ label-inside-as-placeholder
447
+ ${this.size}
448
+ ${((_c = this.value) === null || _c === void 0 ? void 0 : _c.length) ? 'selected' : ''}
449
+ ` }, this.label)), h("div", { class: `placeholder ${this.size}` }, ((_d = this.value) === null || _d === void 0 ? void 0 : _d.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: 'b661988b59447f31ab71e6d03da4b6226caab184', ref: (element) => (this.dropdownList = element), class: `dropdown-list
450
+ ${this.size}
451
+ ${this.open ? 'open' : 'closed'}
452
+ ${this.getOpenDirection()}
453
+ ${this.label && this.labelPosition === 'outside' ? 'label-outside' : ''}` }, h("slot", { key: '855021b97bdc5e56d8a2ebcd981e143aabb8a1ef', onSlotchange: () => this.handleSlotChange() }), this.filterResult === 0 && this.noResultText !== '' && (h("div", { key: 'c282e26376e176e3eca36261eb269bfe4cce60da', class: `no-result ${this.size}` }, this.noResultText))), this.helper && (h("div", { key: '6bce306c718a21a8eb5320da036a7f8909467d76', class: `helper ${this.error ? 'error' : ''} ${this.disabled ? 'disabled' : ''}` }, this.error && h("tds-icon", { key: 'a15e4b87b4388fd44701db482b4be4a9cfee68f2', name: "error", size: "16px" }), this.helper))));
454
+ }
455
+ get host() { return getElement(this); }
456
+ static get watchers() { return {
457
+ "open": ["handleOpenState"]
458
+ }; }
459
+ };
460
+ TdsDropdown.style = TdsDropdownStyle0;
461
+
462
+ const dropdownOptionCss = ":host{box-sizing:border-box;display:block;background-color:var(--tds-dropdown-option-background)}:host *{box-sizing:border-box}:host .dropdown-option{color:var(--tds-dropdown-option-color);border-bottom:1px solid var(--tds-dropdown-option-border);font:var(--tds-detail-02);letter-spacing:var(--tds-detail-02-ls);overflow-wrap:anywhere}:host .dropdown-option.selected{background-color:var(--tds-dropdown-option-background-selected)}:host .dropdown-option.disabled{color:var(--tds-dropdown-option-color-disabled)}:host .dropdown-option button:focus{outline:2px solid var(--tds-blue-400);outline-offset:-2px}:host .dropdown-option button{all:unset;width:100%}:host .dropdown-option button.lg{padding:19px 0 20px}:host .dropdown-option button.md{padding:15px 0 16px}:host .dropdown-option button.sm{padding:11px 0 12px}:host .dropdown-option button.xs{padding:7px 0 8px}:host .dropdown-option button .single-select{display:flex;align-items:center;justify-content:space-between;padding:0 16px}:host .dropdown-option .multiselect{width:100%;height:100%}:host .dropdown-option .multiselect tds-checkbox{display:flex;height:100%;width:100%}:host .dropdown-option .multiselect tds-checkbox.lg{padding:15px 16px 16px}:host .dropdown-option .multiselect tds-checkbox.md{padding:11px 16px 12px}:host .dropdown-option .multiselect tds-checkbox.sm{padding:7px 16px 8px}:host .dropdown-option .multiselect tds-checkbox.xs{padding:7px 16px 8px}:host .dropdown-option:hover{background-color:var(--tds-dropdown-option-background-hover);cursor:pointer}:host .dropdown-option:hover.disabled{background-color:var(--tds-dropdown-option-background);cursor:not-allowed}:host([hidden]){display:none}";
463
+ const TdsDropdownOptionStyle0 = dropdownOptionCss;
464
+
465
+ const TdsDropdownOption = class {
466
+ constructor(hostRef) {
467
+ registerInstance(this, hostRef);
468
+ this.tdsSelect = createEvent(this, "tdsSelect", 6);
469
+ this.tdsFocus = createEvent(this, "tdsFocus", 6);
470
+ this.tdsBlur = createEvent(this, "tdsBlur", 6);
471
+ this.componentWillRender = () => {
472
+ this.parentElement =
473
+ this.host.parentElement.tagName === 'TDS-DROPDOWN'
474
+ ? this.host.parentElement
475
+ : this.host.getRootNode().host;
476
+ this.multiselect = this.parentElement.multiselect;
477
+ this.size = this.parentElement.size;
478
+ this.label = this.host.textContent.trim();
479
+ };
480
+ this.handleSingleSelect = () => {
481
+ if (!this.disabled) {
482
+ this.selected = true;
483
+ this.parentElement.appendValue(this.value);
484
+ this.parentElement.close();
485
+ this.tdsSelect.emit({
486
+ value: this.value,
487
+ selected: this.selected,
488
+ });
489
+ }
490
+ };
491
+ this.handleMultiselect = (event) => {
492
+ if (!this.disabled) {
493
+ if (event.detail.checked) {
494
+ this.parentElement.appendValue(this.value);
495
+ this.selected = true;
496
+ this.tdsSelect.emit({
497
+ value: this.value,
498
+ selected: this.selected,
499
+ });
500
+ }
501
+ else {
502
+ this.parentElement.removeValue(this.value);
503
+ this.selected = false;
504
+ this.tdsSelect.emit({
505
+ value: this.value,
506
+ selected: this.selected,
507
+ });
508
+ }
509
+ event.stopPropagation();
510
+ }
511
+ };
512
+ this.handleFocus = (event) => {
513
+ this.tdsFocus.emit(event);
514
+ };
515
+ this.handleBlur = (event) => {
516
+ this.tdsBlur.emit(event);
517
+ };
518
+ this.value = undefined;
519
+ this.disabled = false;
520
+ this.selected = false;
521
+ this.multiselect = undefined;
522
+ this.size = 'lg';
523
+ }
524
+ /** Method to select/deselect an option. */
525
+ async setSelected(selected) {
526
+ this.selected = selected;
527
+ }
528
+ render() {
529
+ return (h(Host, { key: '1cb00a19c5dbcc47e1b2bc97d1d5ccc8ac5a532a', role: "option", "aria-disabled": this.disabled, "aria-selected": this.selected }, h("div", { key: '5deaf44c7306f4b1856200bf0a5640e99fcb449d', class: `dropdown-option
530
+ ${this.size}
531
+ ${this.selected ? 'selected' : ''}
532
+ ${this.disabled ? 'disabled' : ''}
533
+ ` }, this.multiselect ? (h("div", { class: "multiselect", onKeyDown: (event) => {
534
+ if (event.key === 'Escape') {
535
+ this.parentElement.close();
536
+ }
537
+ } }, h("tds-checkbox", { onTdsChange: (event) => {
538
+ this.handleMultiselect(event);
539
+ }, disabled: this.disabled, checked: this.selected, class: {
540
+ [this.size]: true,
541
+ } }, h("div", { slot: "label" }, h("slot", null))))) : (h("button", { onClick: () => {
542
+ this.handleSingleSelect();
543
+ }, onFocus: (event) => this.handleFocus(event), onBlur: (event) => this.handleBlur(event), disabled: this.disabled, class: this.size }, h("div", { class: "single-select" }, h("slot", null), this.selected && h("tds-icon", { name: "tick", size: "16px" })))))));
544
+ }
545
+ static get delegatesFocus() { return true; }
546
+ get host() { return getElement(this); }
547
+ };
548
+ TdsDropdownOption.style = TdsDropdownOptionStyle0;
549
+
550
+ export { TdsDropdown as tds_dropdown, TdsDropdownOption as tds_dropdown_option };
@@ -19,8 +19,8 @@ const TdsFolderTab = class {
19
19
  this.selected = selected;
20
20
  }
21
21
  render() {
22
- return (h(Host, { key: '3c4a3fe10ff0011f1f9619232c2216cbfcbfb148', role: "listitem" }, h("div", { key: '61fb49491d4f0c2098277b33f13c41ca34782563', class: `${this.disabled ? 'disabled' : ''}
23
- ${this.selected ? 'selected' : ''}`, style: { width: `${this.tabWidth}px` } }, h("slot", { key: 'f57d05129e3185aa36887a84ff980b8a44ec20a4' }))));
22
+ return (h(Host, { key: '37ae53ec0d9c0bc3674365d14d61c6b1fbafe168', role: "listitem" }, h("div", { key: 'a977243b499569668ef7428829644f3f2ca23033', class: `${this.disabled ? 'disabled' : ''}
23
+ ${this.selected ? 'selected' : ''}`, style: { width: `${this.tabWidth}px` } }, h("slot", { key: '1e8b9cc10f032a64ffef70bb061f57ddc8a4a1a5' }))));
24
24
  }
25
25
  };
26
26
  TdsFolderTab.style = TdsFolderTabStyle0;
@@ -163,9 +163,9 @@ const TdsFolderTabs = class {
163
163
  this.removeEventListenerFromTabs();
164
164
  }
165
165
  render() {
166
- return (h(Host, { key: '748bacbb3d58d37735385a8c926dacb637d8eff1', role: "list", class: `${this.modeVariant ? `tds-mode-variant-${this.modeVariant}` : ''}` }, h("div", { key: '4c4f764a6a8c8a095bd1d030ef85a34014d8d284', class: "wrapper", ref: (el) => {
166
+ return (h(Host, { key: '3164044436f7029d85c4eed0ff7e0cc2b4e35752', role: "list", class: `${this.modeVariant ? `tds-mode-variant-${this.modeVariant}` : ''}` }, h("div", { key: '59beaa0776ff83a30e84b69c5715a2f0d62ec6d9', class: "wrapper", ref: (el) => {
167
167
  this.navWrapperElement = el;
168
- } }, h("button", { key: 'ca859bdc9b9d10a7bcfaae194bbee508f308c1a2', class: `scroll-left-button ${this.showLeftScroll ? 'show' : ''}`, disabled: !this.showLeftScroll, onClick: () => this.scrollLeft() }, h("tds-icon", { key: '70aaa7044418b79234b9f3bd7eef2c1e0bf96e61', name: "chevron_left", size: "20px" })), h("slot", { key: 'ca1990c7333322885aa37b164cc7d74708b22116', onSlotchange: () => this.handleSlotChange() }), h("button", { key: '6321d42b6a42a9bf63ae844b94541f56806195fd', class: `scroll-right-button ${this.showRightScroll ? 'show' : ''}`, disabled: !this.showRightScroll, onClick: () => this.scrollRight() }, h("tds-icon", { key: '40a0e7a3297bdf6d4abbe5fc62114020fdb7aee3', name: "chevron_right", size: "20px" })))));
168
+ } }, h("button", { key: '0bd461d469592983e08043c23e295c21df04c80f', class: `scroll-left-button ${this.showLeftScroll ? 'show' : ''}`, disabled: !this.showLeftScroll, onClick: () => this.scrollLeft() }, h("tds-icon", { key: 'd21448eea9cab4d73087fec72d29270b52bf0999', name: "chevron_left", size: "20px" })), h("slot", { key: 'efe348a98b964486a73d1aac235ce894277c6249', onSlotchange: () => this.handleSlotChange() }), h("button", { key: 'ea819f59668994e328410941b5b7455620ecb321', class: `scroll-right-button ${this.showRightScroll ? 'show' : ''}`, disabled: !this.showRightScroll, onClick: () => this.scrollRight() }, h("tds-icon", { key: 'c52241bb7c77eabbdb8de5a19bb4400c32aa2062', name: "chevron_right", size: "20px" })))));
169
169
  }
170
170
  get host() { return getElement(this); }
171
171
  static get watchers() { return {
@@ -111,7 +111,7 @@ const TdsTableHeaderCell = class {
111
111
  this.host.closest('tds-table').getElementsByTagName('tds-table-toolbar').length >= 1;
112
112
  }
113
113
  render() {
114
- return (h(Host, { key: '6a051465b3a5af5460f7c5ac112798b521f9b4a8', class: {
114
+ return (h(Host, { key: 'c40924cf774a94e3f78d114eb91632fe57388ba2', class: {
115
115
  'tds-table__header-cell': true,
116
116
  'tds-table__header-cell--sortable': this.sortable,
117
117
  'tds-table__header-cell--is-sorted': this.sortedByMyKey,
@@ -32,6 +32,15 @@ const TdsHeader = class {
32
32
  };
33
33
  this.observer = new MutationObserver(callback);
34
34
  }
35
+ updateRoles() {
36
+ const navElement = this.host.querySelector('.tds-header-component-list');
37
+ if (navElement) {
38
+ updateListChildrenRoles(navElement);
39
+ }
40
+ }
41
+ handleSlotChange() {
42
+ this.updateRoles();
43
+ }
35
44
  componentDidLoad() {
36
45
  const hostElement = this.host;
37
46
  const navElement = hostElement.querySelector('.tds-header-component-list');
@@ -46,7 +55,7 @@ const TdsHeader = class {
46
55
  }
47
56
  render() {
48
57
  const navAttributes = Object.assign({}, inheritAriaAttributes(this.host));
49
- return (h(Host, { key: '7f42725db4686769f46fb327bc7baeb3b83f2d15' }, h("slot", { key: '26b4ab152030e56733efdb29c5ef11e3e8df1bdb', name: "hamburger" }), h("slot", { key: '7783ecdec32b28baab698ea379e7497a66da6a11', name: "title" }), h("nav", Object.assign({ key: '66a2d848b6ceed22d57080641652392dc2357405' }, navAttributes), h("ul", { key: '5b47c9a9e2210ca4c944ef6323bd5378437d8237', class: "tds-header-component-list" }, h("slot", { key: '14aaafb9b73a5f7d7fd48d0e0cfe4f4907183f27' }), h("li", { key: 'd3e6db876946d322dc14ef22ada0c92414941d2f', class: "tds-header-middle-spacer" }), h("slot", { key: '833f75ce887181221118a0dfe32ca96cf149a3ff', name: "end" })))));
58
+ return (h(Host, { key: '9444edcd74ab89d00450b398c6cb1a4f25ed9cd1' }, h("slot", { key: '9ee5c071427d56d71ebed3f4fb28540f26f756f4', name: "hamburger" }), h("slot", { key: 'ba6cb45780392f5682ff13b889c5500fc90dd1ce', name: "title" }), h("nav", Object.assign({ key: '1017dce61683cb6b9e1c80ef35332b6ea741c809' }, navAttributes), h("ul", { key: '043975c96c36ca0e4947d3c087f53ca05a594378', class: "tds-header-component-list" }, h("slot", { key: 'd45bd8a53521589985897a68f70532392cd71649' }), h("li", { key: '66053c3aebea63b8121e59236f9ec39bb1a5cf45', class: "tds-header-middle-spacer" }), h("slot", { key: '7101e62647bdbaf9da4a784f622d6c4295bc787d', name: "end", onSlotchange: () => this.handleSlotChange() })))));
50
59
  }
51
60
  get host() { return getElement(this); }
52
61
  };
@@ -14,8 +14,8 @@ const TdsInlineTab = class {
14
14
  this.selected = selected;
15
15
  }
16
16
  render() {
17
- return (h(Host, { key: '56d12f8a46ac69783e0f6cc060b9f99151fbe846', role: "listitem" }, h("div", { key: '01b43d6447a5122efaf0b8d58254708dad49fa39', class: `inline-tab-item ${this.selected ? 'selected' : ''}
18
- ${this.disabled ? 'disabled' : ''}` }, h("slot", { key: 'bf865d7caa72ee0fa2aff284e55dd2a794ffb620' }))));
17
+ return (h(Host, { key: 'd15c7d658b9f90d01743d8f4fe6d14714a73e3f8', role: "listitem" }, h("div", { key: 'cc3324aa2ee065c9c9fd78c0e55c5c096a975d4d', class: `inline-tab-item ${this.selected ? 'selected' : ''}
18
+ ${this.disabled ? 'disabled' : ''}` }, h("slot", { key: '68bed317582717cb72d40f6b91d304a3a3df9d47' }))));
19
19
  }
20
20
  };
21
21
  TdsInlineTab.style = TdsInlineTabStyle0;