@duetds/components 8.2.2 → 8.3.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 (698) hide show
  1. package/hydrate/index.js +221 -70
  2. package/lib/cjs/duet-action-button.cjs.entry.js +3 -3
  3. package/lib/cjs/duet-alert.cjs.entry.js +2 -2
  4. package/lib/cjs/duet-badge.cjs.entry.js +1 -1
  5. package/lib/cjs/duet-banner.cjs.entry.js +8 -7
  6. package/lib/cjs/duet-breadcrumb.cjs.entry.js +2 -2
  7. package/lib/cjs/duet-breadcrumbs.cjs.entry.js +2 -2
  8. package/lib/cjs/duet-button_2.cjs.entry.js +3 -3
  9. package/lib/cjs/duet-callout.cjs.entry.js +5 -4
  10. package/lib/cjs/duet-caption_4.cjs.entry.js +5 -6
  11. package/lib/cjs/duet-card.cjs.entry.js +6 -5
  12. package/lib/cjs/duet-checkbox.cjs.entry.js +1 -1
  13. package/lib/cjs/duet-checkmark.cjs.entry.js +1 -1
  14. package/lib/cjs/duet-chip.cjs.entry.js +2 -2
  15. package/lib/cjs/duet-choice_2.cjs.entry.js +11 -11
  16. package/lib/cjs/duet-collapsible.cjs.entry.js +4 -4
  17. package/lib/cjs/duet-combobox.cjs.entry.js +2 -2
  18. package/lib/cjs/duet-contact-card.cjs.entry.js +1 -1
  19. package/lib/cjs/duet-cookie-consent.cjs.entry.js +2 -2
  20. package/lib/cjs/duet-date-picker.cjs.entry.js +5 -4
  21. package/lib/cjs/duet-divider_2.cjs.entry.js +2 -2
  22. package/lib/cjs/duet-editable-table_3.cjs.entry.js +3 -3
  23. package/lib/cjs/duet-empty-state.cjs.entry.js +1 -1
  24. package/lib/cjs/duet-fieldset.cjs.entry.js +3 -3
  25. package/lib/cjs/duet-file-chooser.cjs.entry.js +1 -1
  26. package/lib/cjs/duet-footer.cjs.entry.js +2 -2
  27. package/lib/cjs/duet-grid_2.cjs.entry.js +1 -1
  28. package/lib/cjs/duet-header_2.cjs.entry.js +2 -2
  29. package/lib/cjs/duet-hero.cjs.entry.js +9 -6
  30. package/lib/cjs/duet-icon.cjs.entry.js +2 -2
  31. package/lib/cjs/duet-input_2.cjs.entry.js +6 -5
  32. package/lib/cjs/duet-layout.cjs.entry.js +1 -1
  33. package/lib/cjs/duet-list_2.cjs.entry.js +1 -1
  34. package/lib/cjs/duet-menu-bar-button.cjs.entry.js +1 -1
  35. package/lib/cjs/duet-menu-bar-dropdown-link.cjs.entry.js +2 -2
  36. package/lib/cjs/duet-menu-bar-dropdown.cjs.entry.js +2 -2
  37. package/lib/cjs/duet-menu-bar-link.cjs.entry.js +1 -1
  38. package/lib/cjs/duet-menu-bar.cjs.entry.js +1 -1
  39. package/lib/cjs/duet-modal.cjs.entry.js +5 -5
  40. package/lib/cjs/duet-multiselect.cjs.entry.js +5 -4
  41. package/lib/cjs/duet-nav.cjs.entry.js +3 -3
  42. package/lib/cjs/duet-notification_2.cjs.entry.js +2 -2
  43. package/lib/cjs/duet-number-input.cjs.entry.js +5 -4
  44. package/lib/cjs/duet-page-heading.cjs.entry.js +1 -1
  45. package/lib/cjs/duet-pagination_2.cjs.entry.js +3 -3
  46. package/lib/cjs/duet-popup-menu-item.cjs.entry.js +1 -1
  47. package/lib/cjs/duet-popup-menu.cjs.entry.js +3 -3
  48. package/lib/cjs/duet-progress.cjs.entry.js +1 -1
  49. package/lib/cjs/duet-promo-card.cjs.entry.js +15 -10
  50. package/lib/cjs/duet-radio_2.cjs.entry.js +4 -3
  51. package/lib/cjs/duet-range-slider.cjs.entry.js +2 -2
  52. package/lib/cjs/duet-scrollable_3.cjs.entry.js +89 -6
  53. package/lib/cjs/duet-section-layout.cjs.entry.js +1 -1
  54. package/lib/cjs/duet-select.cjs.entry.js +4 -3
  55. package/lib/cjs/duet-shaped-image.cjs.entry.js +1 -1
  56. package/lib/cjs/duet-show-more.cjs.entry.js +2 -2
  57. package/lib/cjs/duet-slideout-lang.cjs.entry.js +1 -1
  58. package/lib/cjs/duet-slideout-link.cjs.entry.js +1 -1
  59. package/lib/cjs/duet-slideout-panel-dropdown.cjs.entry.js +2 -2
  60. package/lib/cjs/duet-slideout-panel.cjs.entry.js +10 -7
  61. package/lib/cjs/duet-slideout.cjs.entry.js +16 -7
  62. package/lib/cjs/duet-step_2.cjs.entry.js +2 -2
  63. package/lib/cjs/duet-submenu-bar-dropdown-link.cjs.entry.js +2 -2
  64. package/lib/cjs/duet-submenu-bar-dropdown.cjs.entry.js +2 -2
  65. package/lib/cjs/duet-submenu-bar-link.cjs.entry.js +2 -2
  66. package/lib/cjs/duet-submenu-bar.cjs.entry.js +1 -1
  67. package/lib/cjs/duet-textarea.cjs.entry.js +4 -3
  68. package/lib/cjs/duet-toggle.cjs.entry.js +2 -2
  69. package/lib/cjs/duet-toolbar-dropdown-link.cjs.entry.js +2 -2
  70. package/lib/cjs/duet-toolbar-dropdown.cjs.entry.js +3 -3
  71. package/lib/cjs/duet-toolbar-link.cjs.entry.js +1 -1
  72. package/lib/cjs/duet-toolbar.cjs.entry.js +1 -1
  73. package/lib/cjs/duet-tooltip-button_2.cjs.entry.js +3 -3
  74. package/lib/cjs/duet-tooltip.cjs.entry.js +15 -18
  75. package/lib/cjs/duet-tray.cjs.entry.js +2 -2
  76. package/lib/cjs/duet-upload-aria-status.cjs.entry.js +1 -1
  77. package/lib/cjs/duet-upload-item.cjs.entry.js +1 -1
  78. package/lib/cjs/duet-visually-hidden.cjs.entry.js +1 -1
  79. package/lib/cjs/duet.cjs.js +2 -2
  80. package/lib/cjs/{focus-utils-cb2699e7.js → focus-utils-2d403f5e.js} +1 -1
  81. package/lib/cjs/{index-c51398ac.js → index-a515d5ff.js} +1 -1
  82. package/lib/cjs/{keyboard-utils-7248dd0a.js → keyboard-utils-66010749.js} +2 -0
  83. package/lib/cjs/loader.cjs.js +2 -2
  84. package/lib/cjs/slot-utils-0b8037ab.js +51 -0
  85. package/lib/cjs/{token-utils-c672402d.js → token-utils-7a618677.js} +22 -0
  86. package/lib/collection/common/index.js +0 -1
  87. package/lib/collection/components/duet-action-button/duet-action-button.js +2 -2
  88. package/lib/collection/components/duet-alert/duet-alert.js +1 -1
  89. package/lib/collection/components/duet-banner/duet-banner.js +6 -5
  90. package/lib/collection/components/duet-button/duet-button.css +22 -0
  91. package/lib/collection/components/duet-button/duet-button.js +5 -5
  92. package/lib/collection/components/duet-callout/duet-callout.js +4 -3
  93. package/lib/collection/components/duet-caption/duet-caption.js +1 -1
  94. package/lib/collection/components/duet-card/duet-card.js +7 -6
  95. package/lib/collection/components/duet-checkbox/duet-checkbox.js +3 -3
  96. package/lib/collection/components/duet-chip/duet-chip.js +5 -5
  97. package/lib/collection/components/duet-choice/duet-choice.js +5 -4
  98. package/lib/collection/components/duet-choice-group/duet-choice-group.js +3 -2
  99. package/lib/collection/components/duet-collapsible/duet-collapsible.js +5 -4
  100. package/lib/collection/components/duet-combobox/duet-combobox.js +3 -3
  101. package/lib/collection/components/duet-cookie-consent/duet-cookie-consent.js +1 -1
  102. package/lib/collection/components/duet-date-picker/date-picker-input.js +1 -2
  103. package/lib/collection/components/duet-date-picker/duet-date-picker.js +6 -4
  104. package/lib/collection/components/duet-divider/duet-divider.js +1 -1
  105. package/lib/collection/components/duet-editable-table/duet-editable-table.js +5 -5
  106. package/lib/collection/components/duet-empty-state/duet-empty-state.js +1 -1
  107. package/lib/collection/components/duet-fieldset/duet-fieldset.js +1 -1
  108. package/lib/collection/components/duet-file-chooser/duet-file-chooser.js +1 -1
  109. package/lib/collection/components/duet-footer/duet-footer.js +7 -7
  110. package/lib/collection/components/duet-grid/duet-grid.js +3 -3
  111. package/lib/collection/components/duet-header/duet-header.js +15 -15
  112. package/lib/collection/components/duet-heading/duet-heading.js +1 -1
  113. package/lib/collection/components/duet-hero/duet-hero.a11y.e2e.js +4 -4
  114. package/lib/collection/components/duet-hero/duet-hero.js +13 -10
  115. package/lib/collection/components/duet-input/duet-input.js +11 -10
  116. package/lib/collection/components/duet-label/duet-label.js +2 -2
  117. package/lib/collection/components/duet-layout/duet-layout.js +1 -1
  118. package/lib/collection/components/duet-link/duet-link.js +3 -4
  119. package/lib/collection/components/duet-list/duet-list.js +3 -3
  120. package/lib/collection/components/duet-logo/duet-logo.js +1 -1
  121. package/lib/collection/components/duet-menu-bar/duet-menu-bar.js +1 -1
  122. package/lib/collection/components/duet-modal/duet-modal.js +6 -5
  123. package/lib/collection/components/duet-multiselect/duet-multiselect.js +8 -7
  124. package/lib/collection/components/duet-nav/duet-nav.css +5 -0
  125. package/lib/collection/components/duet-nav/duet-nav.js +1 -1
  126. package/lib/collection/components/duet-notification-drawer/duet-notification-drawer.js +1 -1
  127. package/lib/collection/components/duet-number-input/duet-number-input.js +7 -6
  128. package/lib/collection/components/duet-pagination/duet-pagination.js +2 -2
  129. package/lib/collection/components/duet-paragraph/duet-paragraph.js +3 -3
  130. package/lib/collection/components/duet-popup-menu/duet-popup-menu.js +1 -1
  131. package/lib/collection/components/duet-popup-menu-item/duet-popup-menu-item.js +2 -2
  132. package/lib/collection/components/duet-promo-card/duet-promo-card.css +10 -0
  133. package/lib/collection/components/duet-promo-card/duet-promo-card.js +13 -8
  134. package/lib/collection/components/duet-radio/duet-radio.js +3 -3
  135. package/lib/collection/components/duet-radio-group/duet-radio-group.js +3 -2
  136. package/lib/collection/components/duet-range-slider/duet-range-slider.js +2 -2
  137. package/lib/collection/components/duet-range-stepper/duet-range-stepper.js +1 -1
  138. package/lib/collection/components/duet-select/duet-select.js +8 -7
  139. package/lib/collection/components/duet-show-more/duet-show-more.js +1 -1
  140. package/lib/collection/components/duet-slideout/duet-slideout.css +1 -1
  141. package/lib/collection/components/duet-slideout/duet-slideout.js +11 -2
  142. package/lib/collection/components/duet-slideout-panel/duet-slideout-panel.css +27 -0
  143. package/lib/collection/components/duet-slideout-panel/duet-slideout-panel.js +9 -3
  144. package/lib/collection/components/duet-slideout-panel-dropdown/duet-slideout-panel-dropdown.js +1 -1
  145. package/lib/collection/components/duet-spacer/duet-spacer.js +2 -2
  146. package/lib/collection/components/duet-spinner/duet-spinner.js +1 -1
  147. package/lib/collection/components/duet-step/duet-step.js +2 -2
  148. package/lib/collection/components/duet-stepper/duet-stepper.js +1 -1
  149. package/lib/collection/components/duet-tab/duet-tab.css +10 -0
  150. package/lib/collection/components/duet-tab/duet-tab.js +155 -1
  151. package/lib/collection/components/duet-tab-group/duet-tab-group.js +17 -10
  152. package/lib/collection/components/duet-textarea/duet-textarea.js +7 -6
  153. package/lib/collection/components/duet-toggle/duet-toggle.js +1 -1
  154. package/lib/collection/components/duet-toolbar-dropdown/duet-toolbar-dropdown.js +1 -1
  155. package/lib/collection/components/duet-tooltip/duet-tooltip.e2e.js +5 -0
  156. package/lib/collection/components/duet-tooltip/duet-tooltip.js +16 -18
  157. package/lib/collection/components/duet-upload/duet-upload.js +14 -14
  158. package/lib/collection/components/duet-upload-item/duet-upload-item.js +1 -1
  159. package/lib/collection/utils/keyboard-utils.js +1 -0
  160. package/lib/collection/utils/slot-utils.js +42 -11
  161. package/lib/collection/utils/token-utils.js +3 -0
  162. package/lib/dist-custom-elements/duet-action-button.js +1 -1
  163. package/lib/dist-custom-elements/duet-alert.js +1 -1
  164. package/lib/dist-custom-elements/duet-badge.js +1 -1
  165. package/lib/dist-custom-elements/duet-banner.js +10 -9
  166. package/lib/dist-custom-elements/duet-breadcrumb.js +4 -4
  167. package/lib/dist-custom-elements/duet-breadcrumbs.js +2 -2
  168. package/lib/dist-custom-elements/duet-button.js +1 -1
  169. package/lib/dist-custom-elements/duet-callout.js +6 -5
  170. package/lib/dist-custom-elements/duet-caption.js +1 -1
  171. package/lib/dist-custom-elements/duet-card.js +8 -7
  172. package/lib/dist-custom-elements/duet-checkbox.js +1 -1
  173. package/lib/dist-custom-elements/duet-checkmark.js +1 -1
  174. package/lib/dist-custom-elements/duet-chip.js +3 -3
  175. package/lib/dist-custom-elements/duet-choice-group.js +11 -10
  176. package/lib/dist-custom-elements/duet-choice.js +7 -7
  177. package/lib/dist-custom-elements/duet-collapsible.js +4 -4
  178. package/lib/dist-custom-elements/duet-combobox.js +3 -3
  179. package/lib/dist-custom-elements/duet-contact-card.js +8 -8
  180. package/lib/dist-custom-elements/duet-cookie-consent.js +7 -7
  181. package/lib/dist-custom-elements/duet-date-picker.js +15 -14
  182. package/lib/dist-custom-elements/duet-divider.js +1 -1
  183. package/lib/dist-custom-elements/duet-editable-table.js +8 -8
  184. package/lib/dist-custom-elements/duet-empty-state.js +1 -1
  185. package/lib/dist-custom-elements/duet-fieldset.js +1 -1
  186. package/lib/dist-custom-elements/duet-file-chooser.js +2 -2
  187. package/lib/dist-custom-elements/duet-footer.js +5 -5
  188. package/lib/dist-custom-elements/duet-grid-item.js +1 -1
  189. package/lib/dist-custom-elements/duet-grid.js +1 -1
  190. package/lib/dist-custom-elements/duet-header.js +9 -9
  191. package/lib/dist-custom-elements/duet-heading.js +1 -1
  192. package/lib/dist-custom-elements/duet-hero.js +17 -14
  193. package/lib/dist-custom-elements/duet-icon.js +1 -1
  194. package/lib/dist-custom-elements/duet-input.js +1 -1
  195. package/lib/dist-custom-elements/duet-label.js +1 -1
  196. package/lib/dist-custom-elements/duet-layout.js +1 -1
  197. package/lib/dist-custom-elements/duet-link.js +1 -1
  198. package/lib/dist-custom-elements/duet-list-item.js +1 -1
  199. package/lib/dist-custom-elements/duet-list.js +1 -1
  200. package/lib/dist-custom-elements/duet-logo.js +1 -1
  201. package/lib/dist-custom-elements/duet-menu-bar-button.js +2 -2
  202. package/lib/dist-custom-elements/duet-menu-bar-dropdown-link.js +3 -3
  203. package/lib/dist-custom-elements/duet-menu-bar-dropdown.js +3 -3
  204. package/lib/dist-custom-elements/duet-menu-bar-link.js +2 -2
  205. package/lib/dist-custom-elements/duet-menu-bar.js +2 -2
  206. package/lib/dist-custom-elements/duet-modal.js +9 -9
  207. package/lib/dist-custom-elements/duet-multiselect.js +13 -12
  208. package/lib/dist-custom-elements/duet-nav.js +3 -3
  209. package/lib/dist-custom-elements/duet-notification-drawer.js +5 -5
  210. package/lib/dist-custom-elements/duet-notification.js +3 -3
  211. package/lib/dist-custom-elements/duet-number-input.js +15 -14
  212. package/lib/dist-custom-elements/duet-page-heading.js +2 -2
  213. package/lib/dist-custom-elements/duet-pagination.js +15 -15
  214. package/lib/dist-custom-elements/duet-paragraph.js +1 -1
  215. package/lib/dist-custom-elements/duet-popup-menu-item.js +2 -2
  216. package/lib/dist-custom-elements/duet-popup-menu.js +2 -2
  217. package/lib/dist-custom-elements/duet-progress.js +1 -1
  218. package/lib/dist-custom-elements/duet-promo-card.js +17 -12
  219. package/lib/dist-custom-elements/duet-radio-group.js +11 -10
  220. package/lib/dist-custom-elements/duet-radio.js +1 -1
  221. package/lib/dist-custom-elements/duet-range-slider.js +3 -3
  222. package/lib/dist-custom-elements/duet-range-stepper.js +5 -5
  223. package/lib/dist-custom-elements/duet-scrollable.js +1 -1
  224. package/lib/dist-custom-elements/duet-section-layout.js +1 -1
  225. package/lib/dist-custom-elements/duet-select.js +1 -1
  226. package/lib/dist-custom-elements/duet-shaped-image.js +1 -1
  227. package/lib/dist-custom-elements/duet-show-more.js +6 -6
  228. package/lib/dist-custom-elements/duet-slideout-lang.js +2 -2
  229. package/lib/dist-custom-elements/duet-slideout-link.js +2 -2
  230. package/lib/dist-custom-elements/duet-slideout-panel-dropdown.js +3 -3
  231. package/lib/dist-custom-elements/duet-slideout-panel.js +10 -7
  232. package/lib/dist-custom-elements/duet-slideout.js +15 -6
  233. package/lib/dist-custom-elements/duet-spacer.js +1 -1
  234. package/lib/dist-custom-elements/duet-spinner.js +1 -1
  235. package/lib/dist-custom-elements/duet-step.js +5 -5
  236. package/lib/dist-custom-elements/duet-stepper.js +2 -2
  237. package/lib/dist-custom-elements/duet-submenu-bar-dropdown-link.js +3 -3
  238. package/lib/dist-custom-elements/duet-submenu-bar-dropdown.js +3 -3
  239. package/lib/dist-custom-elements/duet-submenu-bar-link.js +3 -3
  240. package/lib/dist-custom-elements/duet-submenu-bar.js +2 -2
  241. package/lib/dist-custom-elements/duet-tab-group.js +20 -16
  242. package/lib/dist-custom-elements/duet-tab.js +89 -4
  243. package/lib/dist-custom-elements/duet-table.js +1 -1
  244. package/lib/dist-custom-elements/duet-textarea.js +13 -12
  245. package/lib/dist-custom-elements/duet-toggle.js +3 -3
  246. package/lib/dist-custom-elements/duet-toolbar-dropdown-link.js +3 -3
  247. package/lib/dist-custom-elements/duet-toolbar-dropdown.js +4 -4
  248. package/lib/dist-custom-elements/duet-toolbar-link.js +2 -2
  249. package/lib/dist-custom-elements/duet-toolbar.js +1 -1
  250. package/lib/dist-custom-elements/duet-tooltip-button.js +1 -1
  251. package/lib/dist-custom-elements/duet-tooltip-popup.js +1 -1
  252. package/lib/dist-custom-elements/duet-tooltip.js +1 -1
  253. package/lib/dist-custom-elements/duet-tray.js +4 -4
  254. package/lib/dist-custom-elements/duet-upload-aria-status.js +1 -1
  255. package/lib/dist-custom-elements/duet-upload-item.js +1 -1
  256. package/lib/dist-custom-elements/duet-upload.js +18 -18
  257. package/lib/dist-custom-elements/duet-visually-hidden.js +1 -1
  258. package/lib/dist-custom-elements/index.js +1 -1
  259. package/lib/dist-custom-elements/{p-0fcede3e.js → p-022cc9de.js} +2 -2
  260. package/lib/dist-custom-elements/{p-178bd8b5.js → p-033ffb95.js} +1 -1
  261. package/lib/dist-custom-elements/{p-6f02cea5.js → p-13cbfdc6.js} +2 -2
  262. package/lib/dist-custom-elements/{p-ded7900f.js → p-15b43530.js} +2 -2
  263. package/lib/dist-custom-elements/{p-046d07ed.js → p-3380c780.js} +1 -1
  264. package/lib/dist-custom-elements/{p-bbff917c.js → p-33c43f27.js} +6 -6
  265. package/lib/dist-custom-elements/{p-8f253845.js → p-55634a0b.js} +2 -1
  266. package/lib/dist-custom-elements/{p-029fba28.js → p-57d9241f.js} +3 -3
  267. package/lib/dist-custom-elements/{p-ab998a0f.js → p-57e61a09.js} +2 -2
  268. package/lib/dist-custom-elements/{p-dfbd66be.js → p-6c8a44ea.js} +2 -2
  269. package/lib/dist-custom-elements/{p-1f650bb2.js → p-70fb72b8.js} +1 -1
  270. package/lib/dist-custom-elements/{p-f26cc3be.js → p-7385cfae.js} +2 -2
  271. package/lib/dist-custom-elements/p-796edee6.js +48 -0
  272. package/lib/dist-custom-elements/{p-a7f2d134.js → p-7f8daa04.js} +4 -4
  273. package/lib/dist-custom-elements/{p-14821771.js → p-82a9c4cc.js} +1 -1
  274. package/lib/dist-custom-elements/{p-6db359de.js → p-83c687c4.js} +10 -10
  275. package/lib/dist-custom-elements/{p-c2ee0b56.js → p-8500f1f3.js} +1 -1
  276. package/lib/dist-custom-elements/{p-5b940d4e.js → p-85c51c36.js} +5 -5
  277. package/lib/dist-custom-elements/{p-78ce0ce1.js → p-89c8eef0.js} +21 -23
  278. package/lib/dist-custom-elements/{p-d1db33b3.js → p-89fa2387.js} +1 -1
  279. package/lib/dist-custom-elements/{p-3c266b7f.js → p-8aacf8f2.js} +1 -1
  280. package/lib/dist-custom-elements/{p-d82ca991.js → p-92e8fec4.js} +1 -1
  281. package/lib/dist-custom-elements/{p-e9b96f04.js → p-97144a49.js} +6 -7
  282. package/lib/dist-custom-elements/{p-bdade4f6.js → p-99bfa47d.js} +1 -1
  283. package/lib/dist-custom-elements/{p-09d8f6b5.js → p-99c2c6f3.js} +5 -5
  284. package/lib/dist-custom-elements/{p-284885b1.js → p-a8d729e4.js} +1 -1
  285. package/lib/dist-custom-elements/{p-48fe3f3e.js → p-ba9d785a.js} +3 -3
  286. package/lib/dist-custom-elements/{p-ef9c200e.js → p-cbac9ed5.js} +22 -1
  287. package/lib/dist-custom-elements/{p-ea75dc3b.js → p-d84624d1.js} +2 -2
  288. package/lib/dist-custom-elements/{p-32b58440.js → p-da0965a5.js} +2 -2
  289. package/lib/dist-custom-elements/{p-69f3125f.js → p-dd3202f3.js} +1 -1
  290. package/lib/dist-custom-elements/{p-275c9f06.js → p-de5298ac.js} +2 -2
  291. package/lib/dist-custom-elements/{p-4207df32.js → p-e8d8a5f1.js} +11 -10
  292. package/lib/dist-custom-elements/{p-501109c4.js → p-eb03dc27.js} +14 -13
  293. package/lib/dist-custom-elements/{p-c3d0fd5f.js → p-eb30f749.js} +2 -2
  294. package/lib/dist-custom-elements/{p-f37bade9.js → p-f1a37b7f.js} +6 -6
  295. package/lib/dist-custom-elements/{p-d4a52c78.js → p-fdafc7af.js} +1 -1
  296. package/lib/duet/duet.esm.js +1 -1
  297. package/lib/duet/duet.js +1 -1
  298. package/lib/duet/{p-ad200bf7.system.entry.js → p-03237a62.system.entry.js} +2 -2
  299. package/lib/duet/p-03c217ae.entry.js +4 -0
  300. package/lib/duet/p-03c3cf91.entry.js +4 -0
  301. package/lib/duet/{p-88d19807.entry.js → p-05728995.entry.js} +1 -1
  302. package/lib/duet/{p-87565d7d.system.entry.js → p-0600d0e8.system.entry.js} +1 -1
  303. package/lib/duet/p-07adc606.system.entry.js +4 -0
  304. package/lib/duet/{p-7bb37b2e.entry.js → p-0857e91c.entry.js} +1 -1
  305. package/lib/duet/p-09c54c8e.system.js +4 -0
  306. package/lib/duet/p-0a28d72d.entry.js +4 -0
  307. package/lib/duet/{p-1c9a6018.system.entry.js → p-0b4b179c.system.entry.js} +1 -1
  308. package/lib/duet/{p-0906d9df.system.entry.js → p-0cdc8487.system.entry.js} +1 -1
  309. package/lib/duet/{p-2c02c786.entry.js → p-0ef53ae6.entry.js} +1 -1
  310. package/lib/duet/p-1001ec0f.entry.js +4 -0
  311. package/lib/duet/{p-0d7d648a.system.entry.js → p-1020c84c.system.entry.js} +1 -1
  312. package/lib/duet/{p-6edbe47c.system.entry.js → p-1612a6c7.system.entry.js} +1 -1
  313. package/lib/duet/{p-c75daf42.entry.js → p-169aab07.entry.js} +1 -1
  314. package/lib/duet/{p-0fd839a0.system.entry.js → p-16c13a11.system.entry.js} +1 -1
  315. package/lib/duet/p-1c9ee2ea.entry.js +4 -0
  316. package/lib/duet/{p-1abfbe28.system.entry.js → p-1d195c3a.system.entry.js} +1 -1
  317. package/lib/duet/p-1db3932f.system.entry.js +4 -0
  318. package/lib/duet/{p-6d186557.entry.js → p-1e6bd5da.entry.js} +1 -1
  319. package/lib/duet/p-1f0dc968.entry.js +4 -0
  320. package/lib/duet/{p-076b9333.entry.js → p-20ed91ba.entry.js} +1 -1
  321. package/lib/duet/p-20ff95cd.system.entry.js +4 -0
  322. package/lib/duet/p-2171907b.system.entry.js +4 -0
  323. package/lib/duet/{p-ecef885c.system.entry.js → p-21f1bd62.system.entry.js} +1 -1
  324. package/lib/duet/{p-a70e6c6f.entry.js → p-26be2678.entry.js} +1 -1
  325. package/lib/duet/{p-b84be662.entry.js → p-28b22d09.entry.js} +1 -1
  326. package/lib/duet/{p-d1d036d5.entry.js → p-29186e16.entry.js} +1 -1
  327. package/lib/duet/{p-3e03e275.entry.js → p-2c79b6d8.entry.js} +1 -1
  328. package/lib/duet/{p-cee353f7.entry.js → p-2ddd9719.entry.js} +1 -1
  329. package/lib/duet/p-31657213.entry.js +4 -0
  330. package/lib/duet/p-31730560.entry.js +4 -0
  331. package/lib/duet/p-357307f7.entry.js +4 -0
  332. package/lib/duet/{p-a014d5d9.system.entry.js → p-3730d6bd.system.entry.js} +1 -1
  333. package/lib/duet/{p-b230e70f.system.entry.js → p-3733ebe1.system.entry.js} +1 -1
  334. package/lib/duet/{p-37be8296.entry.js → p-3760418d.entry.js} +1 -1
  335. package/lib/duet/{p-f65559ab.entry.js → p-38cdaf08.entry.js} +1 -1
  336. package/lib/duet/{p-f637700c.system.entry.js → p-39ea1b09.system.entry.js} +1 -1
  337. package/lib/duet/{p-b57852d2.entry.js → p-3cf8a878.entry.js} +1 -1
  338. package/lib/duet/{p-10a2a9c1.system.entry.js → p-3ecc2d1e.system.entry.js} +1 -1
  339. package/lib/duet/{p-1420bc81.system.entry.js → p-3f4713a3.system.entry.js} +1 -1
  340. package/lib/duet/{p-932d0abe.entry.js → p-3f56cdd6.entry.js} +1 -1
  341. package/lib/duet/{p-4a397383.entry.js → p-41d61870.entry.js} +1 -1
  342. package/lib/duet/p-43091aa7.system.entry.js +4 -0
  343. package/lib/duet/{p-c90bc08e.entry.js → p-43adcd6a.entry.js} +1 -1
  344. package/lib/duet/{p-280b2ecc.system.entry.js → p-43ebba16.system.entry.js} +1 -1
  345. package/lib/duet/{p-aab87987.system.entry.js → p-45199b0c.system.entry.js} +1 -1
  346. package/lib/duet/{p-551ecb84.system.entry.js → p-4648c2cf.system.entry.js} +1 -1
  347. package/lib/duet/p-47f7fd31.system.entry.js +4 -0
  348. package/lib/duet/{p-c3832cba.system.entry.js → p-49ba8156.system.entry.js} +1 -1
  349. package/lib/duet/{p-ea4fda73.entry.js → p-4bd54c36.entry.js} +1 -1
  350. package/lib/duet/{p-a75e499e.system.entry.js → p-4c416890.system.entry.js} +1 -1
  351. package/lib/duet/p-4cd1b2dc.entry.js +4 -0
  352. package/lib/duet/{p-de652eff.entry.js → p-4e002d37.entry.js} +1 -1
  353. package/lib/duet/p-5263bc35.js +4 -0
  354. package/lib/duet/p-5581d26e.entry.js +4 -0
  355. package/lib/duet/p-5729c070.entry.js +4 -0
  356. package/lib/duet/{p-d1deec62.system.js → p-575e4de7.system.js} +1 -1
  357. package/lib/duet/{p-7023e868.system.entry.js → p-5b3275f8.system.entry.js} +2 -2
  358. package/lib/duet/{p-daf4b399.entry.js → p-5c810c8e.entry.js} +1 -1
  359. package/lib/duet/p-5f87ea3d.js +4 -0
  360. package/lib/duet/{p-75ceea2b.entry.js → p-63b8a5d9.entry.js} +1 -1
  361. package/lib/duet/{p-723172a8.system.entry.js → p-65c5d605.system.entry.js} +1 -1
  362. package/lib/duet/p-6689cf76.entry.js +4 -0
  363. package/lib/duet/{p-aa38094c.entry.js → p-671a9905.entry.js} +1 -1
  364. package/lib/duet/{p-1bbf5af6.entry.js → p-67bd1eae.entry.js} +1 -1
  365. package/lib/duet/{p-8dbbed25.entry.js → p-69f280e3.entry.js} +1 -1
  366. package/lib/duet/{p-133bd9d0.system.entry.js → p-6b5f5f20.system.entry.js} +1 -1
  367. package/lib/duet/p-6b5fc33f.entry.js +4 -0
  368. package/lib/duet/{p-c3be7176.entry.js → p-6c34c6d4.entry.js} +1 -1
  369. package/lib/duet/{p-d6154923.entry.js → p-70af7daf.entry.js} +1 -1
  370. package/lib/duet/p-71d1dbcb.entry.js +4 -0
  371. package/lib/duet/{p-f237623c.entry.js → p-72179a41.entry.js} +1 -1
  372. package/lib/duet/{p-c0397a25.entry.js → p-756e625e.entry.js} +1 -1
  373. package/lib/duet/{p-e00f28fc.entry.js → p-77be9214.entry.js} +1 -1
  374. package/lib/duet/p-796edee6.js +4 -0
  375. package/lib/duet/{p-e4bd0d7b.entry.js → p-79abaaad.entry.js} +1 -1
  376. package/lib/duet/{p-5f54e38a.system.entry.js → p-7b445598.system.entry.js} +1 -1
  377. package/lib/duet/p-7c6d5f9c.system.js +4 -0
  378. package/lib/duet/{p-7308b57e.entry.js → p-7c8c5534.entry.js} +1 -1
  379. package/lib/duet/p-7d4d3bee.system.entry.js +4 -0
  380. package/lib/duet/{p-ce96df8c.entry.js → p-80aa59cb.entry.js} +1 -1
  381. package/lib/duet/{p-bd9e5b2b.system.entry.js → p-81a79874.system.entry.js} +1 -1
  382. package/lib/duet/{p-6fdbd448.system.entry.js → p-825dac25.system.entry.js} +1 -1
  383. package/lib/duet/p-827fece7.system.entry.js +4 -0
  384. package/lib/duet/p-875ba244.system.entry.js +4 -0
  385. package/lib/duet/{p-f08d659e.entry.js → p-8d260eac.entry.js} +1 -1
  386. package/lib/duet/{p-ba9103db.entry.js → p-92861390.entry.js} +1 -1
  387. package/lib/duet/{p-7fd43c03.system.entry.js → p-92e54702.system.entry.js} +2 -2
  388. package/lib/duet/{p-9418d9ff.entry.js → p-947af010.entry.js} +1 -1
  389. package/lib/duet/{p-3ccb1ee3.system.entry.js → p-969152f0.system.entry.js} +1 -1
  390. package/lib/duet/{p-2395f607.system.entry.js → p-976ed5a5.system.entry.js} +1 -1
  391. package/lib/duet/{p-00c58945.system.entry.js → p-99cc01cb.system.entry.js} +1 -1
  392. package/lib/duet/{p-cd1d3fe8.system.entry.js → p-9d9cab9d.system.entry.js} +1 -1
  393. package/lib/duet/{p-0667f70f.system.entry.js → p-9e1d8b6f.system.entry.js} +1 -1
  394. package/lib/duet/{p-2db24634.entry.js → p-9e95e6eb.entry.js} +1 -1
  395. package/lib/duet/{p-efe336c5.entry.js → p-9ed3ab30.entry.js} +1 -1
  396. package/lib/duet/{p-7b6abc82.entry.js → p-9f355c50.entry.js} +1 -1
  397. package/lib/duet/{p-4921ff47.entry.js → p-a0f179db.entry.js} +1 -1
  398. package/lib/duet/{p-42cfad67.system.entry.js → p-a319471c.system.entry.js} +2 -2
  399. package/lib/duet/{p-a2fb2ad9.system.entry.js → p-a424f7b8.system.entry.js} +1 -1
  400. package/lib/duet/{p-37d69db5.system.entry.js → p-a53d7d39.system.entry.js} +1 -1
  401. package/lib/duet/{p-2d9cdfdb.entry.js → p-a89e81b7.entry.js} +1 -1
  402. package/lib/duet/{p-3ca93619.system.entry.js → p-a917c2ae.system.entry.js} +1 -1
  403. package/lib/duet/{p-36c95931.system.entry.js → p-aa08b72e.system.entry.js} +1 -1
  404. package/lib/duet/{p-88378c4b.system.entry.js → p-aab945c6.system.entry.js} +1 -1
  405. package/lib/duet/{p-52737afc.system.js → p-aabf89fa.system.js} +1 -1
  406. package/lib/duet/p-aac0b756.entry.js +4 -0
  407. package/lib/duet/{p-78a54e54.system.entry.js → p-ab005633.system.entry.js} +1 -1
  408. package/lib/duet/p-abdbce02.system.js +4 -0
  409. package/lib/duet/{p-3fab3c3d.entry.js → p-ae0382ff.entry.js} +1 -1
  410. package/lib/duet/{p-52091e26.entry.js → p-b8cd8aa9.entry.js} +1 -1
  411. package/lib/duet/{p-c8a02bae.entry.js → p-b9568179.entry.js} +1 -1
  412. package/lib/duet/{p-5d8d866f.system.entry.js → p-bc522875.system.entry.js} +1 -1
  413. package/lib/duet/{p-371692de.system.entry.js → p-bda222d2.system.entry.js} +1 -1
  414. package/lib/duet/p-bfd50a6a.entry.js +4 -0
  415. package/lib/duet/p-bfe237fe.entry.js +4 -0
  416. package/lib/duet/p-c2973a4e.system.entry.js +4 -0
  417. package/lib/duet/{p-550162dd.entry.js → p-c327db77.entry.js} +1 -1
  418. package/lib/duet/p-c8ff85f8.entry.js +4 -0
  419. package/lib/duet/{p-1bdd4caa.system.entry.js → p-c9cb8ffa.system.entry.js} +1 -1
  420. package/lib/duet/{p-03043dae.entry.js → p-ce746fbf.entry.js} +1 -1
  421. package/lib/duet/{p-4d9e4286.system.entry.js → p-d0500cf2.system.entry.js} +1 -1
  422. package/lib/duet/{p-db48c8ed.system.entry.js → p-d143df18.system.entry.js} +1 -1
  423. package/lib/duet/{p-956c677f.entry.js → p-d328f8cc.entry.js} +1 -1
  424. package/lib/duet/{p-534e202a.system.entry.js → p-d4285ed0.system.entry.js} +1 -1
  425. package/lib/duet/{p-3a63ecd6.system.entry.js → p-d44d74d3.system.entry.js} +1 -1
  426. package/lib/duet/p-d5b79ee4.entry.js +4 -0
  427. package/lib/duet/{p-c641c3b4.system.entry.js → p-d5d63283.system.entry.js} +1 -1
  428. package/lib/duet/{p-295179c8.system.entry.js → p-d6c18967.system.entry.js} +1 -1
  429. package/lib/duet/p-d9400840.entry.js +4 -0
  430. package/lib/duet/{p-52c59c2c.system.entry.js → p-d9887cdb.system.entry.js} +1 -1
  431. package/lib/duet/{p-e7b955f6.system.entry.js → p-db688714.system.entry.js} +1 -1
  432. package/lib/duet/p-dbedcced.entry.js +4 -0
  433. package/lib/duet/{p-e2347276.entry.js → p-dc3e35c7.entry.js} +1 -1
  434. package/lib/duet/{p-9f931d57.js → p-dccd9c7c.js} +1 -1
  435. package/lib/duet/{p-65316fb3.entry.js → p-dcd8af75.entry.js} +1 -1
  436. package/lib/duet/{p-59eeaac0.system.entry.js → p-de2da9fd.system.entry.js} +1 -1
  437. package/lib/duet/{p-04dc3f5f.system.entry.js → p-e00c9499.system.entry.js} +1 -1
  438. package/lib/duet/{p-89db0472.system.entry.js → p-e03b6928.system.entry.js} +1 -1
  439. package/lib/duet/{p-61d46f06.entry.js → p-e0931ac9.entry.js} +1 -1
  440. package/lib/duet/{p-35811c5b.entry.js → p-e0d1257a.entry.js} +1 -1
  441. package/lib/duet/{p-eddc7880.entry.js → p-e21cc133.entry.js} +1 -1
  442. package/lib/duet/{p-86285221.entry.js → p-e24a3978.entry.js} +1 -1
  443. package/lib/duet/p-e276fee0.js +4 -0
  444. package/lib/duet/{p-42e4ee86.system.entry.js → p-e2eb1521.system.entry.js} +1 -1
  445. package/lib/duet/{p-fd153ee7.system.entry.js → p-e538a8a2.system.entry.js} +1 -1
  446. package/lib/duet/{p-f8ddd215.system.entry.js → p-e69813f3.system.entry.js} +1 -1
  447. package/lib/duet/{p-00b69a62.system.entry.js → p-e956cd9b.system.entry.js} +1 -1
  448. package/lib/duet/{p-eed152d0.system.js → p-ead2a738.system.js} +1 -1
  449. package/lib/duet/{p-b83e0014.system.entry.js → p-ec2eb98f.system.entry.js} +1 -1
  450. package/lib/duet/{p-831c1f80.system.entry.js → p-eced32c1.system.entry.js} +1 -1
  451. package/lib/duet/{p-9090cf21.entry.js → p-ee7738c2.entry.js} +1 -1
  452. package/lib/duet/{p-ebc2f8fc.system.entry.js → p-eedadd50.system.entry.js} +1 -1
  453. package/lib/duet/p-ef83d9da.system.entry.js +4 -0
  454. package/lib/duet/{p-11481bd0.entry.js → p-f0419f45.entry.js} +1 -1
  455. package/lib/duet/{p-efa9e31e.entry.js → p-f121b583.entry.js} +1 -1
  456. package/lib/duet/{p-78a7f821.system.entry.js → p-f1397f55.system.entry.js} +1 -1
  457. package/lib/duet/{p-cc4683e0.system.entry.js → p-f15a1679.system.entry.js} +2 -2
  458. package/lib/duet/p-f273c4de.system.entry.js +4 -0
  459. package/lib/duet/{p-9699d4f1.system.entry.js → p-f3c91c9e.system.entry.js} +1 -1
  460. package/lib/duet/{p-03380a61.system.entry.js → p-f5c69659.system.entry.js} +1 -1
  461. package/lib/duet/{p-f2f0f553.system.entry.js → p-f630e363.system.entry.js} +1 -1
  462. package/lib/duet/{p-74553378.system.entry.js → p-f7167337.system.entry.js} +1 -1
  463. package/lib/esm/duet-action-button.entry.js +3 -3
  464. package/lib/esm/duet-alert.entry.js +2 -2
  465. package/lib/esm/duet-badge.entry.js +1 -1
  466. package/lib/esm/duet-banner.entry.js +8 -7
  467. package/lib/esm/duet-breadcrumb.entry.js +2 -2
  468. package/lib/esm/duet-breadcrumbs.entry.js +2 -2
  469. package/lib/esm/duet-button_2.entry.js +3 -3
  470. package/lib/esm/duet-callout.entry.js +5 -4
  471. package/lib/esm/duet-caption_4.entry.js +5 -6
  472. package/lib/esm/duet-card.entry.js +6 -5
  473. package/lib/esm/duet-checkbox.entry.js +1 -1
  474. package/lib/esm/duet-checkmark.entry.js +1 -1
  475. package/lib/esm/duet-chip.entry.js +2 -2
  476. package/lib/esm/duet-choice_2.entry.js +6 -6
  477. package/lib/esm/duet-collapsible.entry.js +3 -3
  478. package/lib/esm/duet-combobox.entry.js +2 -2
  479. package/lib/esm/duet-contact-card.entry.js +1 -1
  480. package/lib/esm/duet-cookie-consent.entry.js +2 -2
  481. package/lib/esm/duet-date-picker.entry.js +5 -4
  482. package/lib/esm/duet-divider_2.entry.js +2 -2
  483. package/lib/esm/duet-editable-table_3.entry.js +3 -3
  484. package/lib/esm/duet-empty-state.entry.js +1 -1
  485. package/lib/esm/duet-fieldset.entry.js +2 -2
  486. package/lib/esm/duet-file-chooser.entry.js +1 -1
  487. package/lib/esm/duet-footer.entry.js +2 -2
  488. package/lib/esm/duet-grid_2.entry.js +1 -1
  489. package/lib/esm/duet-header_2.entry.js +2 -2
  490. package/lib/esm/duet-hero.entry.js +9 -6
  491. package/lib/esm/duet-icon.entry.js +2 -2
  492. package/lib/esm/duet-input_2.entry.js +6 -5
  493. package/lib/esm/duet-layout.entry.js +1 -1
  494. package/lib/esm/duet-list_2.entry.js +1 -1
  495. package/lib/esm/duet-menu-bar-button.entry.js +1 -1
  496. package/lib/esm/duet-menu-bar-dropdown-link.entry.js +2 -2
  497. package/lib/esm/duet-menu-bar-dropdown.entry.js +2 -2
  498. package/lib/esm/duet-menu-bar-link.entry.js +1 -1
  499. package/lib/esm/duet-menu-bar.entry.js +1 -1
  500. package/lib/esm/duet-modal.entry.js +4 -4
  501. package/lib/esm/duet-multiselect.entry.js +5 -4
  502. package/lib/esm/duet-nav.entry.js +3 -3
  503. package/lib/esm/duet-notification_2.entry.js +2 -2
  504. package/lib/esm/duet-number-input.entry.js +5 -4
  505. package/lib/esm/duet-page-heading.entry.js +1 -1
  506. package/lib/esm/duet-pagination_2.entry.js +3 -3
  507. package/lib/esm/duet-popup-menu-item.entry.js +1 -1
  508. package/lib/esm/duet-popup-menu.entry.js +3 -3
  509. package/lib/esm/duet-progress.entry.js +1 -1
  510. package/lib/esm/duet-promo-card.entry.js +15 -10
  511. package/lib/esm/duet-radio_2.entry.js +4 -3
  512. package/lib/esm/duet-range-slider.entry.js +2 -2
  513. package/lib/esm/duet-scrollable_3.entry.js +89 -6
  514. package/lib/esm/duet-section-layout.entry.js +1 -1
  515. package/lib/esm/duet-select.entry.js +4 -3
  516. package/lib/esm/duet-shaped-image.entry.js +1 -1
  517. package/lib/esm/duet-show-more.entry.js +2 -2
  518. package/lib/esm/duet-slideout-lang.entry.js +1 -1
  519. package/lib/esm/duet-slideout-link.entry.js +1 -1
  520. package/lib/esm/duet-slideout-panel-dropdown.entry.js +2 -2
  521. package/lib/esm/duet-slideout-panel.entry.js +10 -7
  522. package/lib/esm/duet-slideout.entry.js +15 -6
  523. package/lib/esm/duet-step_2.entry.js +2 -2
  524. package/lib/esm/duet-submenu-bar-dropdown-link.entry.js +2 -2
  525. package/lib/esm/duet-submenu-bar-dropdown.entry.js +2 -2
  526. package/lib/esm/duet-submenu-bar-link.entry.js +2 -2
  527. package/lib/esm/duet-submenu-bar.entry.js +1 -1
  528. package/lib/esm/duet-textarea.entry.js +4 -3
  529. package/lib/esm/duet-toggle.entry.js +2 -2
  530. package/lib/esm/duet-toolbar-dropdown-link.entry.js +2 -2
  531. package/lib/esm/duet-toolbar-dropdown.entry.js +3 -3
  532. package/lib/esm/duet-toolbar-link.entry.js +1 -1
  533. package/lib/esm/duet-toolbar.entry.js +1 -1
  534. package/lib/esm/duet-tooltip-button_2.entry.js +3 -3
  535. package/lib/esm/duet-tooltip.entry.js +15 -18
  536. package/lib/esm/duet-tray.entry.js +2 -2
  537. package/lib/esm/duet-upload-aria-status.entry.js +1 -1
  538. package/lib/esm/duet-upload-item.entry.js +1 -1
  539. package/lib/esm/duet-visually-hidden.entry.js +1 -1
  540. package/lib/esm/duet.js +3 -3
  541. package/lib/esm/{focus-utils-6bb7f477.js → focus-utils-5adec865.js} +1 -1
  542. package/lib/esm/{index-eeb87403.js → index-88bb0f20.js} +1 -1
  543. package/lib/esm/{keyboard-utils-eba88365.js → keyboard-utils-c472d19d.js} +2 -1
  544. package/lib/esm/loader.js +3 -3
  545. package/lib/esm/slot-utils-3c3ab3d6.js +48 -0
  546. package/lib/esm/{token-utils-d09165bc.js → token-utils-0c77cb3c.js} +23 -2
  547. package/lib/esm-es5/duet-action-button.entry.js +1 -1
  548. package/lib/esm-es5/duet-alert.entry.js +1 -1
  549. package/lib/esm-es5/duet-badge.entry.js +1 -1
  550. package/lib/esm-es5/duet-banner.entry.js +1 -1
  551. package/lib/esm-es5/duet-breadcrumb.entry.js +1 -1
  552. package/lib/esm-es5/duet-breadcrumbs.entry.js +1 -1
  553. package/lib/esm-es5/duet-button_2.entry.js +2 -2
  554. package/lib/esm-es5/duet-callout.entry.js +1 -1
  555. package/lib/esm-es5/duet-caption_4.entry.js +1 -1
  556. package/lib/esm-es5/duet-card.entry.js +1 -1
  557. package/lib/esm-es5/duet-checkbox.entry.js +1 -1
  558. package/lib/esm-es5/duet-checkmark.entry.js +1 -1
  559. package/lib/esm-es5/duet-chip.entry.js +1 -1
  560. package/lib/esm-es5/duet-choice_2.entry.js +1 -1
  561. package/lib/esm-es5/duet-collapsible.entry.js +1 -1
  562. package/lib/esm-es5/duet-combobox.entry.js +1 -1
  563. package/lib/esm-es5/duet-contact-card.entry.js +1 -1
  564. package/lib/esm-es5/duet-cookie-consent.entry.js +1 -1
  565. package/lib/esm-es5/duet-date-picker.entry.js +1 -1
  566. package/lib/esm-es5/duet-divider_2.entry.js +1 -1
  567. package/lib/esm-es5/duet-editable-table_3.entry.js +1 -1
  568. package/lib/esm-es5/duet-empty-state.entry.js +1 -1
  569. package/lib/esm-es5/duet-fieldset.entry.js +1 -1
  570. package/lib/esm-es5/duet-file-chooser.entry.js +1 -1
  571. package/lib/esm-es5/duet-footer.entry.js +1 -1
  572. package/lib/esm-es5/duet-grid_2.entry.js +1 -1
  573. package/lib/esm-es5/duet-header_2.entry.js +1 -1
  574. package/lib/esm-es5/duet-hero.entry.js +2 -2
  575. package/lib/esm-es5/duet-icon.entry.js +1 -1
  576. package/lib/esm-es5/duet-input_2.entry.js +1 -1
  577. package/lib/esm-es5/duet-layout.entry.js +1 -1
  578. package/lib/esm-es5/duet-list_2.entry.js +1 -1
  579. package/lib/esm-es5/duet-menu-bar-button.entry.js +1 -1
  580. package/lib/esm-es5/duet-menu-bar-dropdown-link.entry.js +1 -1
  581. package/lib/esm-es5/duet-menu-bar-dropdown.entry.js +2 -2
  582. package/lib/esm-es5/duet-menu-bar-link.entry.js +1 -1
  583. package/lib/esm-es5/duet-menu-bar.entry.js +1 -1
  584. package/lib/esm-es5/duet-modal.entry.js +1 -1
  585. package/lib/esm-es5/duet-multiselect.entry.js +1 -1
  586. package/lib/esm-es5/duet-nav.entry.js +1 -1
  587. package/lib/esm-es5/duet-notification_2.entry.js +1 -1
  588. package/lib/esm-es5/duet-number-input.entry.js +1 -1
  589. package/lib/esm-es5/duet-page-heading.entry.js +1 -1
  590. package/lib/esm-es5/duet-pagination_2.entry.js +1 -1
  591. package/lib/esm-es5/duet-popup-menu-item.entry.js +1 -1
  592. package/lib/esm-es5/duet-popup-menu.entry.js +1 -1
  593. package/lib/esm-es5/duet-progress.entry.js +1 -1
  594. package/lib/esm-es5/duet-promo-card.entry.js +2 -2
  595. package/lib/esm-es5/duet-radio_2.entry.js +1 -1
  596. package/lib/esm-es5/duet-range-slider.entry.js +1 -1
  597. package/lib/esm-es5/duet-scrollable_3.entry.js +2 -2
  598. package/lib/esm-es5/duet-section-layout.entry.js +1 -1
  599. package/lib/esm-es5/duet-select.entry.js +2 -2
  600. package/lib/esm-es5/duet-shaped-image.entry.js +1 -1
  601. package/lib/esm-es5/duet-show-more.entry.js +1 -1
  602. package/lib/esm-es5/duet-slideout-lang.entry.js +1 -1
  603. package/lib/esm-es5/duet-slideout-link.entry.js +1 -1
  604. package/lib/esm-es5/duet-slideout-panel-dropdown.entry.js +1 -1
  605. package/lib/esm-es5/duet-slideout-panel.entry.js +2 -2
  606. package/lib/esm-es5/duet-slideout.entry.js +1 -1
  607. package/lib/esm-es5/duet-step_2.entry.js +1 -1
  608. package/lib/esm-es5/duet-submenu-bar-dropdown-link.entry.js +1 -1
  609. package/lib/esm-es5/duet-submenu-bar-dropdown.entry.js +1 -1
  610. package/lib/esm-es5/duet-submenu-bar-link.entry.js +1 -1
  611. package/lib/esm-es5/duet-submenu-bar.entry.js +1 -1
  612. package/lib/esm-es5/duet-textarea.entry.js +1 -1
  613. package/lib/esm-es5/duet-toggle.entry.js +1 -1
  614. package/lib/esm-es5/duet-toolbar-dropdown-link.entry.js +1 -1
  615. package/lib/esm-es5/duet-toolbar-dropdown.entry.js +1 -1
  616. package/lib/esm-es5/duet-toolbar-link.entry.js +1 -1
  617. package/lib/esm-es5/duet-toolbar.entry.js +1 -1
  618. package/lib/esm-es5/duet-tooltip-button_2.entry.js +1 -1
  619. package/lib/esm-es5/duet-tooltip.entry.js +1 -1
  620. package/lib/esm-es5/duet-tray.entry.js +1 -1
  621. package/lib/esm-es5/duet-upload-aria-status.entry.js +1 -1
  622. package/lib/esm-es5/duet-upload-item.entry.js +1 -1
  623. package/lib/esm-es5/duet-visually-hidden.entry.js +1 -1
  624. package/lib/esm-es5/duet.js +1 -1
  625. package/lib/esm-es5/focus-utils-5adec865.js +4 -0
  626. package/lib/esm-es5/{index-eeb87403.js → index-88bb0f20.js} +1 -1
  627. package/lib/esm-es5/{keyboard-utils-eba88365.js → keyboard-utils-c472d19d.js} +1 -1
  628. package/lib/esm-es5/loader.js +1 -1
  629. package/lib/esm-es5/slot-utils-3c3ab3d6.js +4 -0
  630. package/lib/esm-es5/token-utils-0c77cb3c.js +4 -0
  631. package/lib/types/common/index.d.ts +0 -1
  632. package/lib/types/components/duet-card/duet-card.d.ts +3 -2
  633. package/lib/types/components/duet-promo-card/duet-promo-card.d.ts +3 -1
  634. package/lib/types/components/duet-slideout/duet-slideout.d.ts +1 -0
  635. package/lib/types/components/duet-slideout-panel/duet-slideout-panel.d.ts +4 -0
  636. package/lib/types/components/duet-tab/duet-tab.d.ts +22 -2
  637. package/lib/types/components/duet-tab-group/duet-tab-group.d.ts +2 -1
  638. package/lib/types/components/duet-tooltip/duet-tooltip.d.ts +1 -2
  639. package/lib/types/components.d.ts +24 -4
  640. package/lib/types/utils/keyboard-utils.d.ts +1 -0
  641. package/lib/types/utils/slot-utils.d.ts +14 -2
  642. package/lib/types/utils/token-utils.d.ts +1 -0
  643. package/package.json +5 -5
  644. package/lib/cjs/slot-query-3259af5b.js +0 -10
  645. package/lib/cjs/slot-utils-6c81bd09.js +0 -20
  646. package/lib/collection/common/slot-query.js +0 -9
  647. package/lib/dist-custom-elements/p-11230037.js +0 -8
  648. package/lib/dist-custom-elements/p-bb24a019.js +0 -18
  649. package/lib/duet/p-0b5a8f35.system.entry.js +0 -4
  650. package/lib/duet/p-0c61244e.entry.js +0 -4
  651. package/lib/duet/p-0dd40c9c.entry.js +0 -4
  652. package/lib/duet/p-111e21bb.system.entry.js +0 -4
  653. package/lib/duet/p-11230037.js +0 -4
  654. package/lib/duet/p-127dcd36.system.entry.js +0 -4
  655. package/lib/duet/p-202208dc.entry.js +0 -4
  656. package/lib/duet/p-23354cf7.system.js +0 -4
  657. package/lib/duet/p-27bdda1e.js +0 -4
  658. package/lib/duet/p-2bb2b022.js +0 -4
  659. package/lib/duet/p-3ecd388c.system.entry.js +0 -4
  660. package/lib/duet/p-4dd4b992.entry.js +0 -4
  661. package/lib/duet/p-5795b0d9.system.js +0 -4
  662. package/lib/duet/p-579d7632.entry.js +0 -4
  663. package/lib/duet/p-5f71c6eb.entry.js +0 -4
  664. package/lib/duet/p-634e8787.system.js +0 -4
  665. package/lib/duet/p-660bc31f.entry.js +0 -4
  666. package/lib/duet/p-6720adb2.entry.js +0 -4
  667. package/lib/duet/p-74591e44.system.entry.js +0 -4
  668. package/lib/duet/p-7e1fe8b7.entry.js +0 -4
  669. package/lib/duet/p-7ef64069.entry.js +0 -4
  670. package/lib/duet/p-8b9c411d.entry.js +0 -4
  671. package/lib/duet/p-94c3e67c.system.entry.js +0 -4
  672. package/lib/duet/p-99269e38.system.js +0 -4
  673. package/lib/duet/p-9a352bf1.entry.js +0 -4
  674. package/lib/duet/p-9ab87585.system.entry.js +0 -4
  675. package/lib/duet/p-9dff8650.js +0 -4
  676. package/lib/duet/p-a1093ef2.entry.js +0 -4
  677. package/lib/duet/p-a5e3febc.system.entry.js +0 -4
  678. package/lib/duet/p-b17fc03d.system.entry.js +0 -4
  679. package/lib/duet/p-b3ee2fd3.entry.js +0 -4
  680. package/lib/duet/p-bb24a019.js +0 -4
  681. package/lib/duet/p-bbd9ecae.entry.js +0 -4
  682. package/lib/duet/p-c1175891.entry.js +0 -4
  683. package/lib/duet/p-c3722531.system.entry.js +0 -4
  684. package/lib/duet/p-ccd19d96.entry.js +0 -4
  685. package/lib/duet/p-cdc6b261.entry.js +0 -4
  686. package/lib/duet/p-d69aa4c2.system.entry.js +0 -4
  687. package/lib/duet/p-d840ef25.entry.js +0 -4
  688. package/lib/duet/p-e6949dbe.entry.js +0 -4
  689. package/lib/duet/p-f54f5ef3.system.entry.js +0 -4
  690. package/lib/duet/p-f64ba41c.entry.js +0 -4
  691. package/lib/duet/p-f7c03d05.entry.js +0 -4
  692. package/lib/esm/slot-query-022710bb.js +0 -8
  693. package/lib/esm/slot-utils-07ba4363.js +0 -18
  694. package/lib/esm-es5/focus-utils-6bb7f477.js +0 -4
  695. package/lib/esm-es5/slot-query-022710bb.js +0 -4
  696. package/lib/esm-es5/slot-utils-07ba4363.js +0 -4
  697. package/lib/esm-es5/token-utils-d09165bc.js +0 -4
  698. package/lib/types/common/slot-query.d.ts +0 -1
@@ -96,7 +96,7 @@ export class DuetSpinner {
96
96
  "references": {
97
97
  "DuetSpinnerSize": {
98
98
  "location": "local",
99
- "path": "/Users/mgibas/workspace/duet/packages/components/src/components/duet-spinner/duet-spinner.tsx",
99
+ "path": "/Users/laaksju3/duetds/packages/components/src/components/duet-spinner/duet-spinner.tsx",
100
100
  "id": "src/components/duet-spinner/duet-spinner.tsx::DuetSpinnerSize"
101
101
  }
102
102
  }
@@ -202,7 +202,7 @@ export class DuetStep {
202
202
  "references": {
203
203
  "DuetStepState": {
204
204
  "location": "local",
205
- "path": "/Users/mgibas/workspace/duet/packages/components/src/components/duet-step/duet-step.tsx",
205
+ "path": "/Users/laaksju3/duetds/packages/components/src/components/duet-step/duet-step.tsx",
206
206
  "id": "src/components/duet-step/duet-step.tsx::DuetStepState"
207
207
  }
208
208
  }
@@ -280,7 +280,7 @@ export class DuetStep {
280
280
  "references": {
281
281
  "DuetStepClickEvent": {
282
282
  "location": "local",
283
- "path": "/Users/mgibas/workspace/duet/packages/components/src/components/duet-step/duet-step.tsx",
283
+ "path": "/Users/laaksju3/duetds/packages/components/src/components/duet-step/duet-step.tsx",
284
284
  "id": "src/components/duet-step/duet-step.tsx::DuetStepClickEvent"
285
285
  }
286
286
  }
@@ -225,7 +225,7 @@ export class DuetStepper {
225
225
  "references": {
226
226
  "DuetStepChangeEvent": {
227
227
  "location": "local",
228
- "path": "/Users/mgibas/workspace/duet/packages/components/src/components/duet-stepper/duet-stepper.tsx",
228
+ "path": "/Users/laaksju3/duetds/packages/components/src/components/duet-stepper/duet-stepper.tsx",
229
229
  "id": "src/components/duet-stepper/duet-stepper.tsx::DuetStepChangeEvent"
230
230
  }
231
231
  }
@@ -25,4 +25,14 @@
25
25
  }
26
26
  .duet-tab.selected {
27
27
  display: block;
28
+ }
29
+ .duet-tab.has-content-id, .duet-tab.has-content-id.selected {
30
+ display: none;
31
+ }
32
+ :host(.user-is-tabbing) .duet-tab:focus {
33
+ outline: 0;
34
+ box-shadow: 0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3;
35
+ }
36
+ :host(.user-is-tabbing) .duet-tab.duet-theme-turva:focus {
37
+ box-shadow: 0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a;
28
38
  }
@@ -2,9 +2,48 @@
2
2
  * Built with Duet Design System
3
3
  */
4
4
  import { Build, h } from "@stencil/core";
5
+ import { inheritGlobalTheme } from "../../common";
6
+ import { subscribeTabbingChange, unsubscribeTabbingChange } from "../../utils/keyboard-utils";
5
7
  import { connectLanguageChangeObserver, disconnectLanguageChangeObserver, getLocaleString, } from "../../utils/language-utils";
8
+ import { getShadowByName } from "../../utils/token-utils";
6
9
  export class DuetTab {
7
10
  constructor() {
11
+ this.setupContentElement = () => {
12
+ if (this.contentId) {
13
+ this.tabpanelElement = document.getElementById(this.contentId);
14
+ if (this.tabpanelElement) {
15
+ this.tabpanelElement.setAttribute("role", "tabpanel");
16
+ this.tabpanelElement.setAttribute("tabindex", "-1");
17
+ this.tabpanelElement.removeEventListener("focus", this.tabpanelElementFocusListener);
18
+ this.tabpanelElement.removeEventListener("blur", this.tabpanelElementBlurListener);
19
+ this.tabpanelElement.addEventListener("focus", this.tabpanelElementFocusListener);
20
+ this.tabpanelElement.addEventListener("blur", this.tabpanelElementBlurListener);
21
+ if (this.accessibleDescription) {
22
+ this.tabpanelElement.setAttribute("aria-description", this.accessibleDescription);
23
+ }
24
+ if (this.accessibleLabelledBy) {
25
+ this.tabpanelElement.setAttribute("aria-labelledby", this.accessibleLabelledBy);
26
+ }
27
+ if (this.selected) {
28
+ this.tabpanelElement.toggleAttribute("hidden", false);
29
+ }
30
+ else {
31
+ this.tabpanelElement.toggleAttribute("hidden", true);
32
+ }
33
+ }
34
+ }
35
+ };
36
+ this.tabpanelElementFocusListener = () => {
37
+ if (this.element.classList.contains("user-is-tabbing")) {
38
+ this.tabpanelElement.style.outline = "0";
39
+ this.tabpanelElement.style.boxShadow = getShadowByName(this.theme === "turva" ? "focus-turva" : "focus");
40
+ }
41
+ };
42
+ this.tabpanelElementBlurListener = () => {
43
+ this.tabpanelElement.style.outline = null;
44
+ this.tabpanelElement.style.boxShadow = null;
45
+ };
46
+ this.theme = "";
8
47
  this.label = undefined;
9
48
  this.caption = undefined;
10
49
  this.selected = undefined;
@@ -14,15 +53,44 @@ export class DuetTab {
14
53
  ? getLocaleString(this.accessibleDescriptionDefault)
15
54
  : null;
16
55
  this.accessibleLabelledBy = undefined;
56
+ this.contentId = undefined;
57
+ }
58
+ componentWillLoad() {
59
+ inheritGlobalTheme(this);
17
60
  }
18
61
  /**
19
62
  * Component lifecycle events.
20
63
  */
21
64
  connectedCallback() {
22
65
  connectLanguageChangeObserver(this, { prop: "accessibleDescription", defaults: "accessibleDescriptionDefault" });
66
+ subscribeTabbingChange(this);
67
+ this.setupContentElement();
23
68
  }
24
69
  disconnectedCallback() {
25
70
  disconnectLanguageChangeObserver(this);
71
+ unsubscribeTabbingChange(this);
72
+ if (this.tabpanelElement) {
73
+ this.tabpanelElement.removeAttribute("role");
74
+ this.tabpanelElement.removeAttribute("tabindex");
75
+ this.tabpanelElement.removeAttribute("aria-description");
76
+ this.tabpanelElement.removeAttribute("aria-labelledby");
77
+ this.tabpanelElement.removeAttribute("hidden");
78
+ this.tabpanelElement.removeEventListener("focus", this.tabpanelElementFocusListener.bind(this));
79
+ this.tabpanelElement.removeEventListener("blur", this.tabpanelElementBlurListener.bind(this));
80
+ this.tabpanelElement = undefined;
81
+ }
82
+ }
83
+ setupSelected(newValue, oldValue) {
84
+ if (!!newValue === !!oldValue) {
85
+ return;
86
+ }
87
+ this.setupContentElement();
88
+ }
89
+ /**
90
+ * Sets focus on the tab panel.
91
+ */
92
+ async setFocus(options) {
93
+ this.tabpanelElement.focus(options);
26
94
  }
27
95
  /**
28
96
  * render() function
@@ -32,7 +100,16 @@ export class DuetTab {
32
100
  if (Build.isServer) {
33
101
  return;
34
102
  }
35
- return (h("div", { role: "tabpanel", class: { "duet-tab": true, selected: this.selected }, "aria-description": this.accessibleDescription, "aria-labelledby": this.accessibleLabelledBy }, h("slot", null)));
103
+ return (h("div", { ref: element => {
104
+ if (!this.contentId) {
105
+ this.tabpanelElement = element;
106
+ }
107
+ }, role: "tabpanel", class: {
108
+ "duet-theme-turva": this.theme === "turva",
109
+ "duet-tab": true,
110
+ selected: this.selected,
111
+ "has-content-id": !!this.contentId,
112
+ }, "aria-description": this.accessibleDescription, "aria-labelledby": this.accessibleLabelledBy, tabindex: "-1" }, h("slot", null)));
36
113
  }
37
114
  static get is() { return "duet-tab"; }
38
115
  static get encapsulation() { return "scoped"; }
@@ -48,6 +125,30 @@ export class DuetTab {
48
125
  }
49
126
  static get properties() {
50
127
  return {
128
+ "theme": {
129
+ "type": "string",
130
+ "mutable": true,
131
+ "complexType": {
132
+ "original": "DuetTheme",
133
+ "resolved": "\"\" | \"default\" | \"turva\"",
134
+ "references": {
135
+ "DuetTheme": {
136
+ "location": "import",
137
+ "path": "../../common-types",
138
+ "id": "src/common-types.d.ts::DuetTheme"
139
+ }
140
+ }
141
+ },
142
+ "required": false,
143
+ "optional": false,
144
+ "docs": {
145
+ "tags": [],
146
+ "text": "Theme of the component."
147
+ },
148
+ "attribute": "theme",
149
+ "reflect": false,
150
+ "defaultValue": "\"\""
151
+ },
51
152
  "label": {
52
153
  "type": "string",
53
154
  "mutable": false,
@@ -164,8 +265,61 @@ export class DuetTab {
164
265
  "attribute": "accessible-labelled-by",
165
266
  "reflect": false,
166
267
  "defaultValue": "undefined"
268
+ },
269
+ "contentId": {
270
+ "type": "string",
271
+ "mutable": false,
272
+ "complexType": {
273
+ "original": "string",
274
+ "resolved": "string",
275
+ "references": {}
276
+ },
277
+ "required": false,
278
+ "optional": false,
279
+ "docs": {
280
+ "tags": [],
281
+ "text": "HTML id of element that is to be used when opening this tab.\nThis enables decoupling the content from the tab buttons."
282
+ },
283
+ "attribute": "content-id",
284
+ "reflect": false,
285
+ "defaultValue": "undefined"
286
+ }
287
+ };
288
+ }
289
+ static get methods() {
290
+ return {
291
+ "setFocus": {
292
+ "complexType": {
293
+ "signature": "(options?: FocusOptions) => Promise<void>",
294
+ "parameters": [{
295
+ "name": "options",
296
+ "type": "FocusOptions",
297
+ "docs": ""
298
+ }],
299
+ "references": {
300
+ "Promise": {
301
+ "location": "global",
302
+ "id": "global::Promise"
303
+ },
304
+ "FocusOptions": {
305
+ "location": "global",
306
+ "id": "global::FocusOptions"
307
+ }
308
+ },
309
+ "return": "Promise<void>"
310
+ },
311
+ "docs": {
312
+ "text": "Sets focus on the tab panel.",
313
+ "tags": []
314
+ }
167
315
  }
168
316
  };
169
317
  }
170
318
  static get elementRef() { return "element"; }
319
+ static get watchers() {
320
+ return [{
321
+ "propName": "selected",
322
+ "methodName": "setupSelected"
323
+ }];
324
+ }
171
325
  }
@@ -4,7 +4,7 @@
4
4
  import { h } from "@stencil/core";
5
5
  import { inheritGlobalTheme } from "../../common";
6
6
  import { createID } from "../../utils/create-id";
7
- import { isArrowDownKey, isArrowLeftKey, isArrowRightKey, isArrowUpKey, subscribeTabbingChange, unsubscribeTabbingChange, } from "../../utils/keyboard-utils";
7
+ import { isArrowDownKey, isArrowLeftKey, isArrowRightKey, isArrowUpKey, isShiftTabKey, isTabKey, subscribeTabbingChange, unsubscribeTabbingChange, } from "../../utils/keyboard-utils";
8
8
  import { getLanguage, getLocaleString } from "../../utils/language-utils";
9
9
  /**
10
10
  * @part ${identifier}-button - piercing selector for styling tab buttons
@@ -24,6 +24,10 @@ export class DuetTabGroup {
24
24
  else if (isArrowRightKey(ev) || isArrowDownKey(ev)) {
25
25
  button = ev.target.nextElementSibling;
26
26
  }
27
+ if (isTabKey(ev) && !isShiftTabKey(ev)) {
28
+ ev.preventDefault();
29
+ this.element.querySelector("duet-tab[selected]").setFocus();
30
+ }
27
31
  if (button) {
28
32
  ev.preventDefault();
29
33
  button.click();
@@ -56,7 +60,7 @@ export class DuetTabGroup {
56
60
  };
57
61
  this.renderTab = () => {
58
62
  const renderedTabs = this.tabs.map((element, index) => {
59
- return (h("button", { role: "tab", id: this.getButtonId(index), "aria-selected": element.selected ? "true" : "false", "aria-description": this.getAccessibleDescription(index), tabindex: index === 0 ? "0" : "-1", part: `${this.identifier}-button ${element.selected ? `${this.identifier}-button--selected` : ""}`, type: "button", class: {
63
+ return (h("button", { role: "tab", id: this.getButtonId(index), "aria-selected": element.selected ? "true" : "false", "aria-description": this.getAccessibleDescription(index), tabindex: element.selected ? "0" : "-1", part: `${this.identifier}-button ${element.selected ? `${this.identifier}-button--selected` : ""}`, type: "button", class: {
60
64
  "duet-p-0": this.padding === "none",
61
65
  "duet-tab-button": true,
62
66
  "stackable-tab": this.variation === "checked" && this.tabs.length <= 3,
@@ -214,7 +218,7 @@ export class DuetTabGroup {
214
218
  "duet-tab-group-collapses": this.collapses,
215
219
  }, ref: el => {
216
220
  this.tabsContainer = el;
217
- } }, this.renderTab()), h("div", { role: "tabpanel", tabindex: this.setTabIndex ? "0" : null, class: {
221
+ } }, this.renderTab()), h("div", { class: {
218
222
  "duet-tab-group-content": true,
219
223
  "duet-m-0": this.margin === "none",
220
224
  "checked-group-content": this.variation === "checked",
@@ -321,7 +325,7 @@ export class DuetTabGroup {
321
325
  "references": {
322
326
  "DuetTabVariation": {
323
327
  "location": "local",
324
- "path": "/Users/mgibas/workspace/duet/packages/components/src/components/duet-tab-group/duet-tab-group.tsx",
328
+ "path": "/Users/laaksju3/duetds/packages/components/src/components/duet-tab-group/duet-tab-group.tsx",
325
329
  "id": "src/components/duet-tab-group/duet-tab-group.tsx::DuetTabVariation"
326
330
  }
327
331
  }
@@ -509,8 +513,11 @@ export class DuetTabGroup {
509
513
  "required": false,
510
514
  "optional": false,
511
515
  "docs": {
512
- "tags": [],
513
- "text": "Controls if tab content should have tab index and be accessible by pressing tab"
516
+ "tags": [{
517
+ "name": "deprecated",
518
+ "text": "in favour of Duet Tab component owning the tab indexing\nControls if tab container should have tab index and be accessible by pressing tab"
519
+ }],
520
+ "text": ""
514
521
  },
515
522
  "attribute": "set-tab-index",
516
523
  "reflect": false,
@@ -562,7 +569,7 @@ export class DuetTabGroup {
562
569
  "references": {
563
570
  "DuetTabGroupEvent": {
564
571
  "location": "local",
565
- "path": "/Users/mgibas/workspace/duet/packages/components/src/components/duet-tab-group/duet-tab-group.tsx",
572
+ "path": "/Users/laaksju3/duetds/packages/components/src/components/duet-tab-group/duet-tab-group.tsx",
566
573
  "id": "src/components/duet-tab-group/duet-tab-group.tsx::DuetTabGroupEvent"
567
574
  }
568
575
  }
@@ -583,7 +590,7 @@ export class DuetTabGroup {
583
590
  "references": {
584
591
  "DuetTabGroupEvent": {
585
592
  "location": "local",
586
- "path": "/Users/mgibas/workspace/duet/packages/components/src/components/duet-tab-group/duet-tab-group.tsx",
593
+ "path": "/Users/laaksju3/duetds/packages/components/src/components/duet-tab-group/duet-tab-group.tsx",
587
594
  "id": "src/components/duet-tab-group/duet-tab-group.tsx::DuetTabGroupEvent"
588
595
  }
589
596
  }
@@ -604,7 +611,7 @@ export class DuetTabGroup {
604
611
  "references": {
605
612
  "DuetTabGroupEvent": {
606
613
  "location": "local",
607
- "path": "/Users/mgibas/workspace/duet/packages/components/src/components/duet-tab-group/duet-tab-group.tsx",
614
+ "path": "/Users/laaksju3/duetds/packages/components/src/components/duet-tab-group/duet-tab-group.tsx",
608
615
  "id": "src/components/duet-tab-group/duet-tab-group.tsx::DuetTabGroupEvent"
609
616
  }
610
617
  }
@@ -628,7 +635,7 @@ export class DuetTabGroup {
628
635
  },
629
636
  "DuetTabGroupEvent": {
630
637
  "location": "local",
631
- "path": "/Users/mgibas/workspace/duet/packages/components/src/components/duet-tab-group/duet-tab-group.tsx",
638
+ "path": "/Users/laaksju3/duetds/packages/components/src/components/duet-tab-group/duet-tab-group.tsx",
632
639
  "id": "src/components/duet-tab-group/duet-tab-group.tsx::DuetTabGroupEvent"
633
640
  }
634
641
  },
@@ -5,7 +5,7 @@ import { Build, h, Host, } from "@stencil/core";
5
5
  import { inheritGlobalTheme } from "../../common";
6
6
  import { createID } from "../../utils/create-id";
7
7
  import { cleanValue } from "../../utils/input-utils";
8
- import { slotElementCheck } from "../../utils/slot-utils";
8
+ import { checkNamedSlotElement } from "../../utils/slot-utils";
9
9
  const CharacterCount = ({ value, maxlength, label, theme }) => {
10
10
  if (maxlength == null) {
11
11
  return;
@@ -130,6 +130,7 @@ export class DuetTextarea {
130
130
  inheritGlobalTheme(this);
131
131
  this.disallowedPatternChange();
132
132
  this.isCaptionVisible = !!this.caption;
133
+ checkNamedSlotElement(this.element, "tooltip", "duet-tooltip", 1, true);
133
134
  if (this.counter && this.maxlength == null) {
134
135
  console.warn("[DUET WARNING]: counter will only take effect if maxlength is set");
135
136
  }
@@ -166,7 +167,7 @@ export class DuetTextarea {
166
167
  "duet-label-hidden": this.labelHidden,
167
168
  "duet-input-top-caption-shown": this.isCaptionVisible,
168
169
  "has-error": !!this.error,
169
- } }, h("duet-label", { theme: this.theme === "turva" ? "turva" : "default", class: { "duet-has-tooltip": !!this.tooltip }, margin: this.isCaptionVisible ? "small" : "auto", color: this.labelColor, weight: this.labelWeight, id: this.labelId, for: identifier }, this.label), this.tooltip && (h("duet-tooltip", { direction: this.tooltipDirection, accessibleInputLabel: this.label, theme: this.theme === "turva" ? "turva" : "default" }, this.tooltip)), h("slot", { name: "tooltip", onSlotchange: ev => slotElementCheck(ev, this, "duet-tooltip") }), this.caption && (h("duet-caption", { id: this.topCaptionId, size: "medium", theme: this.theme === "turva" ? "turva" : "default" }, this.caption)), h("div", { class: "duet-textarea-wrapper" }, this.placeholder && this.echoPlaceholder && this.value && (h("duet-caption", { id: this.topCaptionPlaceholderId, class: "duet-textarea-placeholder", size: "small" }, this.placeholder)), h("textarea", { onInput: this.handleInput, onChange: this.handleChange, onBlur: this.handleBlur, onFocus: this.handleFocus, ref: input => (this.nativeInput = input), class: { "duet-textarea": true, disabled: this.disabled }, value: this.value, disabled: this.disabled, "aria-labelledby": this.accessibleLabelledBy ? `${this.labelId} ${this.accessibleLabelledBy}` : this.labelId, "aria-controls": this.accessibleControls, "aria-autocomplete": this.accessibleAutocomplete, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": this.getDescribedBy(), "aria-details": this.accessibleDetails, "aria-description": this.accessibleDescription, placeholder: this.placeholder, spellcheck: "false", required: this.required, minlength: this.minlength, maxlength: this.maxlength, role: this.role, name: this.name, id: identifier })), h("duet-grid", { alignment: "stretch" }, h("duet-grid-item", { margin: "none", fill: true }, h("div", { class: "duet-textarea-help", id: this.errorId, "aria-atomic": "true", "aria-live": this.accessibleLiveError, "aria-relevant": "additions removals" }, this.error && h("span", null, this.error))), h("duet-grid-item", { margin: "none", class: "duet-character-count-caption" }, this.counter && (h(CharacterCount, { theme: this.theme, value: this.value, maxlength: this.maxlength, label: this.counterLabel })))), this.counter && (h("duet-visually-hidden", { class: "duet-visually-hidden", id: this.characterCountId, ref: el => {
170
+ } }, h("duet-label", { theme: this.theme === "turva" ? "turva" : "default", class: { "duet-has-tooltip": !!this.tooltip }, margin: this.isCaptionVisible ? "small" : "auto", color: this.labelColor, weight: this.labelWeight, id: this.labelId, for: identifier }, this.label), this.tooltip && (h("duet-tooltip", { direction: this.tooltipDirection, accessibleInputLabel: this.label, theme: this.theme === "turva" ? "turva" : "default" }, this.tooltip)), h("slot", { name: "tooltip" }), this.caption && (h("duet-caption", { id: this.topCaptionId, size: "medium", theme: this.theme === "turva" ? "turva" : "default" }, this.caption)), h("div", { class: "duet-textarea-wrapper" }, this.placeholder && this.echoPlaceholder && this.value && (h("duet-caption", { id: this.topCaptionPlaceholderId, class: "duet-textarea-placeholder", size: "small" }, this.placeholder)), h("textarea", { onInput: this.handleInput, onChange: this.handleChange, onBlur: this.handleBlur, onFocus: this.handleFocus, ref: input => (this.nativeInput = input), class: { "duet-textarea": true, disabled: this.disabled }, value: this.value, disabled: this.disabled, "aria-labelledby": this.accessibleLabelledBy ? `${this.labelId} ${this.accessibleLabelledBy}` : this.labelId, "aria-controls": this.accessibleControls, "aria-autocomplete": this.accessibleAutocomplete, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": this.getDescribedBy(), "aria-details": this.accessibleDetails, "aria-description": this.accessibleDescription, placeholder: this.placeholder, spellcheck: "false", required: this.required, minlength: this.minlength, maxlength: this.maxlength, role: this.role, name: this.name, id: identifier })), h("duet-grid", { alignment: "stretch" }, h("duet-grid-item", { margin: "none", fill: true }, h("div", { class: "duet-textarea-help", id: this.errorId, "aria-atomic": "true", "aria-live": this.accessibleLiveError, "aria-relevant": "additions removals" }, this.error && h("span", null, this.error))), h("duet-grid-item", { margin: "none", class: "duet-character-count-caption" }, this.counter && (h(CharacterCount, { theme: this.theme, value: this.value, maxlength: this.maxlength, label: this.counterLabel })))), this.counter && (h("duet-visually-hidden", { class: "duet-visually-hidden", id: this.characterCountId, ref: el => {
170
171
  this.hiddenCounterLabel = el;
171
172
  } })))));
172
173
  }
@@ -806,7 +807,7 @@ export class DuetTextarea {
806
807
  "references": {
807
808
  "DuetTextareaEvent": {
808
809
  "location": "local",
809
- "path": "/Users/mgibas/workspace/duet/packages/components/src/components/duet-textarea/duet-textarea.tsx",
810
+ "path": "/Users/laaksju3/duetds/packages/components/src/components/duet-textarea/duet-textarea.tsx",
810
811
  "id": "src/components/duet-textarea/duet-textarea.tsx::DuetTextareaEvent"
811
812
  }
812
813
  }
@@ -827,7 +828,7 @@ export class DuetTextarea {
827
828
  "references": {
828
829
  "DuetTextareaEvent": {
829
830
  "location": "local",
830
- "path": "/Users/mgibas/workspace/duet/packages/components/src/components/duet-textarea/duet-textarea.tsx",
831
+ "path": "/Users/laaksju3/duetds/packages/components/src/components/duet-textarea/duet-textarea.tsx",
831
832
  "id": "src/components/duet-textarea/duet-textarea.tsx::DuetTextareaEvent"
832
833
  }
833
834
  }
@@ -848,7 +849,7 @@ export class DuetTextarea {
848
849
  "references": {
849
850
  "DuetTextareaEvent": {
850
851
  "location": "local",
851
- "path": "/Users/mgibas/workspace/duet/packages/components/src/components/duet-textarea/duet-textarea.tsx",
852
+ "path": "/Users/laaksju3/duetds/packages/components/src/components/duet-textarea/duet-textarea.tsx",
852
853
  "id": "src/components/duet-textarea/duet-textarea.tsx::DuetTextareaEvent"
853
854
  }
854
855
  }
@@ -869,7 +870,7 @@ export class DuetTextarea {
869
870
  "references": {
870
871
  "DuetTextareaEvent": {
871
872
  "location": "local",
872
- "path": "/Users/mgibas/workspace/duet/packages/components/src/components/duet-textarea/duet-textarea.tsx",
873
+ "path": "/Users/laaksju3/duetds/packages/components/src/components/duet-textarea/duet-textarea.tsx",
873
874
  "id": "src/components/duet-textarea/duet-textarea.tsx::DuetTextareaEvent"
874
875
  }
875
876
  }
@@ -486,7 +486,7 @@ export class DuetToggle {
486
486
  "references": {
487
487
  "DuetToggleChangeEvent": {
488
488
  "location": "local",
489
- "path": "/Users/mgibas/workspace/duet/packages/components/src/components/duet-toggle/duet-toggle.tsx",
489
+ "path": "/Users/laaksju3/duetds/packages/components/src/components/duet-toggle/duet-toggle.tsx",
490
490
  "id": "src/components/duet-toggle/duet-toggle.tsx::DuetToggleChangeEvent"
491
491
  }
492
492
  }
@@ -58,7 +58,7 @@ export class DuetToolbarDropdown {
58
58
  } }, h("button", { ref: element => (this.button = element), "aria-haspopup": "menu", "aria-controls": "menu", "aria-expanded": this.open ? "true" : "false", "aria-current": this.active ? "true" : "false", "aria-label": this.accessibleLabel, id: "button", type: "button", class: {
59
59
  active: this.active,
60
60
  open: this.open,
61
- }, onClick: this.onClick, onKeyUp: e => this.handleEscape(e) }, this.icon && (h("duet-icon", { theme: this.theme, name: this.icon, size: "x-small", margin: "none", color: "currentColor" })), h("div", { class: "label" }, h("slot", { name: "label" }), h("duet-icon", { class: "caret", theme: this.theme, name: "action-arrow-down-small", margin: "none", size: "xxx-small", color: "currentColor" }))), h("div", { tabindex: "-1", role: "menu", id: "menu", "aria-labelledby": "button", class: {
61
+ }, onClick: this.onClick, onKeyUp: e => this.handleEscape(e) }, this.icon && (h("duet-icon", { theme: this.theme, name: this.icon, size: "x-small", margin: "none", color: "currentColor" })), h("span", { class: "label" }, h("slot", { name: "label" }), h("duet-icon", { class: "caret", theme: this.theme, name: "action-arrow-down-small", margin: "none", size: "xxx-small", color: "currentColor" }))), h("div", { tabindex: "-1", role: "menu", id: "menu", "aria-labelledby": "button", class: {
62
62
  items: true,
63
63
  hidden: !this.open,
64
64
  } }, h("slot", null)))));
@@ -14,30 +14,35 @@ async function openWithClick(page) {
14
14
  const popup = await getPopup(page);
15
15
  await trigger.click();
16
16
  await popup.waitForVisible();
17
+ await page.waitForChanges();
17
18
  }
18
19
  async function closeWithClick(page) {
19
20
  const trigger = await getTrigger(page);
20
21
  const popup = await getPopup(page);
21
22
  await trigger.click();
22
23
  await popup.waitForNotVisible();
24
+ await page.waitForChanges();
23
25
  }
24
26
  async function clickOutside(page) {
25
27
  const popup = await getPopup(page);
26
28
  await page.mouse.click(0, 0);
27
29
  await page.waitForChanges();
28
30
  await popup.waitForNotVisible();
31
+ await page.waitForChanges();
29
32
  }
30
33
  async function clickCloseButton(page) {
31
34
  const popup = await getPopup(page);
32
35
  const closeButton = await page.find(`duet-tooltip-popup >>> .duet-tooltip-close`);
33
36
  await closeButton.click();
34
37
  await popup.waitForNotVisible();
38
+ await page.waitForChanges();
35
39
  }
36
40
  async function closeWithEsc(page) {
37
41
  const popup = await getPopup(page);
38
42
  await page.keyboard.press("Escape");
39
43
  await page.waitForChanges();
40
44
  await popup.waitForNotVisible();
45
+ await page.waitForChanges();
41
46
  }
42
47
  describe("duet-tooltip", () => {
43
48
  it("should render a tooltip", async () => {
@@ -28,13 +28,21 @@ export class DuetTooltip {
28
28
  */
29
29
  this.openTooltip = () => {
30
30
  this.active = true;
31
- this.focusTarget = "tooltip";
31
+ setTimeout(() => {
32
+ this.contentEl.focus({ preventScroll: true });
33
+ this.buttonActive = true;
34
+ }, 200);
32
35
  };
33
36
  this.closeTooltip = (moveFocusToButton = false) => {
34
37
  this.active = false;
35
38
  if (moveFocusToButton) {
36
- this.focusTarget = "trigger";
39
+ setTimeout(() => {
40
+ this.buttonEl.setFocus({ preventScroll: true });
41
+ }, 200);
37
42
  }
43
+ setTimeout(() => {
44
+ this.buttonActive = false;
45
+ }, 201);
38
46
  setTimeout(() => {
39
47
  this.updatePlacement();
40
48
  }, 200);
@@ -73,6 +81,7 @@ export class DuetTooltip {
73
81
  this.tooltipX = undefined;
74
82
  this.arrowX = undefined;
75
83
  this.arrowY = undefined;
84
+ this.buttonActive = undefined;
76
85
  this.theme = "";
77
86
  this.language = getLanguage();
78
87
  this.accessibleLabelDefault = {
@@ -101,6 +110,7 @@ export class DuetTooltip {
101
110
  */
102
111
  componentWillLoad() {
103
112
  inheritGlobalTheme(this);
113
+ this.buttonActive = this.active;
104
114
  }
105
115
  async componentDidLoad() {
106
116
  if (Build.isServer) {
@@ -115,19 +125,6 @@ export class DuetTooltip {
115
125
  this.intersectionObserver = new IntersectionObserver(this.updatePlacement, { root: document.body });
116
126
  this.intersectionObserver.observe(this.element);
117
127
  }
118
- componentDidUpdate() {
119
- switch (this.focusTarget) {
120
- case "tooltip":
121
- // delay focus so button is correctly announced as "expanded"
122
- setTimeout(() => this.contentEl.focus({ preventScroll: true }));
123
- break;
124
- case "trigger":
125
- // delay focus so button is correctly announced as "collapsed"
126
- setTimeout(() => this.buttonEl.setFocus({ preventScroll: true }));
127
- break;
128
- }
129
- this.focusTarget = null;
130
- }
131
128
  connectedCallback() {
132
129
  connectLanguageChangeObserver(this, [
133
130
  { prop: "accessibleLabel", defaults: "accessibleLabelDefault" },
@@ -210,7 +207,7 @@ export class DuetTooltip {
210
207
  top: this.arrowY ? `${this.arrowY}px` : undefined,
211
208
  left: this.arrowX ? `${this.arrowX}px` : undefined,
212
209
  };
213
- return (h(Host, { style: tooltipStyles }, h("duet-tooltip-button", { ref: element => (this.buttonEl = element), active: this.active, tooltipId: this.tooltipId, label: this.label, accessibleLabel: (this.accessibleInputLabel && `${this.accessibleInputLabel}, ${this.accessibleLabel}`) ||
210
+ return (h(Host, { style: tooltipStyles }, h("duet-tooltip-button", { ref: element => (this.buttonEl = element), active: this.buttonActive, tooltipId: this.tooltipId, label: this.label, accessibleLabel: (this.accessibleInputLabel && `${this.accessibleInputLabel}, ${this.accessibleLabel}`) ||
214
211
  (this.accessibleAboutLabel &&
215
212
  `${this.accessibleLabel} ${this.aboutString[this.language]} ${this.accessibleAboutLabel}`) ||
216
213
  this.accessibleLabel, onClick: this.toggleOpen, theme: this.theme }), h("div", { style: popupContainerStyles }, h("duet-tooltip-popup", { ref: element => (this.popupElement = element), active: this.active, tooltipId: this.tooltipId, arrowStyles: arrowStyles, style: positionStyles, placement: this.placement, accessibleCloseLabel: this.accessibleCloseLabel, theme: this.theme }, h("slot", null)))));
@@ -443,7 +440,7 @@ export class DuetTooltip {
443
440
  "references": {
444
441
  "DuetTooltipBreakpoint": {
445
442
  "location": "local",
446
- "path": "/Users/mgibas/workspace/duet/packages/components/src/components/duet-tooltip/duet-tooltip.tsx",
443
+ "path": "/Users/laaksju3/duetds/packages/components/src/components/duet-tooltip/duet-tooltip.tsx",
447
444
  "id": "src/components/duet-tooltip/duet-tooltip.tsx::DuetTooltipBreakpoint"
448
445
  }
449
446
  }
@@ -544,7 +541,8 @@ export class DuetTooltip {
544
541
  "tooltipY": {},
545
542
  "tooltipX": {},
546
543
  "arrowX": {},
547
- "arrowY": {}
544
+ "arrowY": {},
545
+ "buttonActive": {}
548
546
  };
549
547
  }
550
548
  static get elementRef() { return "element"; }