@duetds/components 8.4.2 → 8.4.4

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 (644) hide show
  1. package/hydrate/index.js +183 -47
  2. package/lib/cjs/action-new-window-50c8aed0.js +11 -0
  3. package/lib/cjs/duet-action-button.cjs.entry.js +3 -3
  4. package/lib/cjs/duet-alert.cjs.entry.js +1 -1
  5. package/lib/cjs/duet-badge.cjs.entry.js +1 -1
  6. package/lib/cjs/duet-banner.cjs.entry.js +9 -8
  7. package/lib/cjs/duet-breadcrumb.cjs.entry.js +1 -1
  8. package/lib/cjs/duet-breadcrumbs.cjs.entry.js +3 -3
  9. package/lib/cjs/duet-button_2.cjs.entry.js +3 -3
  10. package/lib/cjs/duet-callout.cjs.entry.js +1 -1
  11. package/lib/cjs/duet-caption_4.cjs.entry.js +45 -21
  12. package/lib/cjs/duet-card.cjs.entry.js +3 -3
  13. package/lib/cjs/duet-checkbox.cjs.entry.js +1 -1
  14. package/lib/cjs/duet-checkmark.cjs.entry.js +1 -1
  15. package/lib/cjs/duet-chip.cjs.entry.js +1 -1
  16. package/lib/cjs/duet-choice_2.cjs.entry.js +2 -2
  17. package/lib/cjs/duet-collapsible.cjs.entry.js +2 -2
  18. package/lib/cjs/duet-combobox.cjs.entry.js +1 -1
  19. package/lib/cjs/duet-contact-card.cjs.entry.js +1 -1
  20. package/lib/cjs/duet-cookie-consent.cjs.entry.js +1 -1
  21. package/lib/cjs/duet-date-picker.cjs.entry.js +2 -2
  22. package/lib/cjs/duet-divider_2.cjs.entry.js +3 -3
  23. package/lib/cjs/duet-editable-table_3.cjs.entry.js +56 -9
  24. package/lib/cjs/duet-empty-state.cjs.entry.js +1 -1
  25. package/lib/cjs/duet-fieldset.cjs.entry.js +1 -1
  26. package/lib/cjs/duet-file-chooser.cjs.entry.js +1 -1
  27. package/lib/cjs/duet-footer.cjs.entry.js +3 -5
  28. package/lib/cjs/duet-grid_2.cjs.entry.js +2 -2
  29. package/lib/cjs/duet-header_2.cjs.entry.js +4 -4
  30. package/lib/cjs/duet-hero.cjs.entry.js +1 -1
  31. package/lib/cjs/duet-icon.cjs.entry.js +3 -3
  32. package/lib/cjs/duet-input_2.cjs.entry.js +3 -3
  33. package/lib/cjs/duet-layout.cjs.entry.js +1 -1
  34. package/lib/cjs/duet-list_2.cjs.entry.js +1 -1
  35. package/lib/cjs/duet-menu-bar-button.cjs.entry.js +2 -2
  36. package/lib/cjs/duet-menu-bar-dropdown-link.cjs.entry.js +1 -1
  37. package/lib/cjs/duet-menu-bar-dropdown.cjs.entry.js +2 -2
  38. package/lib/cjs/duet-menu-bar-item.cjs.entry.js +2 -2
  39. package/lib/cjs/duet-menu-bar-link.cjs.entry.js +2 -2
  40. package/lib/cjs/duet-menu-bar.cjs.entry.js +2 -2
  41. package/lib/cjs/duet-modal.cjs.entry.js +4 -4
  42. package/lib/cjs/duet-multiselect.cjs.entry.js +1 -1
  43. package/lib/cjs/duet-nav.cjs.entry.js +1 -1
  44. package/lib/cjs/duet-notification_2.cjs.entry.js +1 -1
  45. package/lib/cjs/duet-number-input.cjs.entry.js +1 -1
  46. package/lib/cjs/duet-page-heading.cjs.entry.js +1 -1
  47. package/lib/cjs/duet-pagination_2.cjs.entry.js +4 -4
  48. package/lib/cjs/duet-popup-menu-item.cjs.entry.js +1 -1
  49. package/lib/cjs/duet-popup-menu.cjs.entry.js +9 -4
  50. package/lib/cjs/duet-progress.cjs.entry.js +1 -1
  51. package/lib/cjs/duet-promo-card.cjs.entry.js +3 -3
  52. package/lib/cjs/duet-radio_2.cjs.entry.js +1 -1
  53. package/lib/cjs/duet-range-slider.cjs.entry.js +2 -2
  54. package/lib/cjs/duet-scrollable_3.cjs.entry.js +3 -3
  55. package/lib/cjs/duet-section-layout.cjs.entry.js +1 -1
  56. package/lib/cjs/duet-select.cjs.entry.js +1 -1
  57. package/lib/cjs/duet-shaped-image.cjs.entry.js +1 -1
  58. package/lib/cjs/duet-show-more.cjs.entry.js +1 -1
  59. package/lib/cjs/duet-slideout-lang.cjs.entry.js +1 -1
  60. package/lib/cjs/duet-slideout-link.cjs.entry.js +1 -1
  61. package/lib/cjs/duet-slideout-panel-dropdown.cjs.entry.js +1 -1
  62. package/lib/cjs/duet-slideout-panel.cjs.entry.js +4 -4
  63. package/lib/cjs/duet-slideout.cjs.entry.js +5 -5
  64. package/lib/cjs/duet-step_2.cjs.entry.js +1 -1
  65. package/lib/cjs/duet-submenu-bar-dropdown-link.cjs.entry.js +1 -1
  66. package/lib/cjs/duet-submenu-bar-dropdown.cjs.entry.js +2 -2
  67. package/lib/cjs/duet-submenu-bar-item.cjs.entry.js +2 -2
  68. package/lib/cjs/duet-submenu-bar-link.cjs.entry.js +2 -2
  69. package/lib/cjs/duet-submenu-bar.cjs.entry.js +6 -5
  70. package/lib/cjs/duet-textarea.cjs.entry.js +1 -1
  71. package/lib/cjs/duet-toggle.cjs.entry.js +1 -1
  72. package/lib/cjs/duet-toolbar-dropdown-link.cjs.entry.js +1 -1
  73. package/lib/cjs/duet-toolbar-dropdown.cjs.entry.js +1 -1
  74. package/lib/cjs/duet-toolbar-item.cjs.entry.js +1 -1
  75. package/lib/cjs/duet-toolbar-link.cjs.entry.js +1 -1
  76. package/lib/cjs/duet-toolbar.cjs.entry.js +1 -1
  77. package/lib/cjs/duet-tooltip-button_2.cjs.entry.js +2 -2
  78. package/lib/cjs/duet-tooltip.cjs.entry.js +3 -3
  79. package/lib/cjs/duet-tray.cjs.entry.js +2 -2
  80. package/lib/cjs/duet-upload-aria-status.cjs.entry.js +1 -1
  81. package/lib/cjs/duet-upload-item.cjs.entry.js +9 -2
  82. package/lib/cjs/duet-visually-hidden.cjs.entry.js +1 -1
  83. package/lib/cjs/duet.cjs.js +2 -2
  84. package/lib/cjs/{floating-ui.dom.esm-a7d59d53.js → floating-ui.dom.esm-91f66430.js} +60 -20
  85. package/lib/cjs/{focus-utils-c103ab0a.js → focus-utils-a2fa36c7.js} +1 -1
  86. package/lib/cjs/{index-7fe97a5d.js → index-321cd5c2.js} +1 -1
  87. package/lib/cjs/loader.cjs.js +2 -2
  88. package/lib/cjs/{token-utils-7a618677.js → token-utils-c8094d1e.js} +1 -1
  89. package/lib/cjs/{tokens-c3eecae6.js → tokens-5b487d39.js} +3 -0
  90. package/lib/cjs/{tokens.module-bc323a09.js → tokens.module-450a747b.js} +2 -0
  91. package/lib/collection/collection-manifest.json +1 -1
  92. package/lib/collection/components/duet-banner/duet-banner.css +26 -0
  93. package/lib/collection/components/duet-banner/duet-banner.js +5 -4
  94. package/lib/collection/components/duet-link/duet-link.css +95 -9
  95. package/lib/collection/components/duet-link/duet-link.js +73 -20
  96. package/lib/collection/components/duet-modal/duet-modal.js +1 -1
  97. package/lib/collection/components/duet-popup-menu/duet-popup-menu.js +24 -1
  98. package/lib/collection/components/duet-range-stepper/duet-range-stepper.js +1 -1
  99. package/lib/collection/components/duet-submenu-bar/duet-submenu-bar.js +3 -2
  100. package/lib/collection/components/duet-upload/duet-upload.js +95 -5
  101. package/lib/collection/components/duet-upload-item/duet-upload-item.js +30 -2
  102. package/lib/collection/utils/string-utils.js +6 -0
  103. package/lib/dist-custom-elements/duet-action-button.js +1 -1
  104. package/lib/dist-custom-elements/duet-alert.js +1 -1
  105. package/lib/dist-custom-elements/duet-badge.js +1 -1
  106. package/lib/dist-custom-elements/duet-banner.js +11 -10
  107. package/lib/dist-custom-elements/duet-breadcrumb.js +3 -3
  108. package/lib/dist-custom-elements/duet-breadcrumbs.js +2 -2
  109. package/lib/dist-custom-elements/duet-button.js +1 -1
  110. package/lib/dist-custom-elements/duet-callout.js +2 -2
  111. package/lib/dist-custom-elements/duet-caption.js +1 -1
  112. package/lib/dist-custom-elements/duet-card.js +4 -4
  113. package/lib/dist-custom-elements/duet-checkbox.js +1 -1
  114. package/lib/dist-custom-elements/duet-checkmark.js +1 -1
  115. package/lib/dist-custom-elements/duet-chip.js +2 -2
  116. package/lib/dist-custom-elements/duet-choice-group.js +8 -8
  117. package/lib/dist-custom-elements/duet-choice.js +6 -6
  118. package/lib/dist-custom-elements/duet-collapsible.js +3 -3
  119. package/lib/dist-custom-elements/duet-combobox.js +3 -3
  120. package/lib/dist-custom-elements/duet-contact-card.js +8 -8
  121. package/lib/dist-custom-elements/duet-cookie-consent.js +6 -6
  122. package/lib/dist-custom-elements/duet-date-picker.js +14 -14
  123. package/lib/dist-custom-elements/duet-divider.js +1 -1
  124. package/lib/dist-custom-elements/duet-editable-table.js +8 -8
  125. package/lib/dist-custom-elements/duet-empty-state.js +1 -1
  126. package/lib/dist-custom-elements/duet-fieldset.js +1 -1
  127. package/lib/dist-custom-elements/duet-file-chooser.js +2 -2
  128. package/lib/dist-custom-elements/duet-footer.js +5 -7
  129. package/lib/dist-custom-elements/duet-grid-item.js +1 -1
  130. package/lib/dist-custom-elements/duet-grid.js +1 -1
  131. package/lib/dist-custom-elements/duet-header.js +11 -11
  132. package/lib/dist-custom-elements/duet-heading.js +1 -1
  133. package/lib/dist-custom-elements/duet-hero.js +9 -9
  134. package/lib/dist-custom-elements/duet-icon.js +1 -1
  135. package/lib/dist-custom-elements/duet-input.js +1 -1
  136. package/lib/dist-custom-elements/duet-label.js +1 -1
  137. package/lib/dist-custom-elements/duet-layout.js +1 -1
  138. package/lib/dist-custom-elements/duet-link.js +1 -1
  139. package/lib/dist-custom-elements/duet-list-item.js +1 -1
  140. package/lib/dist-custom-elements/duet-list.js +1 -1
  141. package/lib/dist-custom-elements/duet-logo.js +1 -1
  142. package/lib/dist-custom-elements/duet-menu-bar-button.js +3 -3
  143. package/lib/dist-custom-elements/duet-menu-bar-dropdown-link.js +2 -2
  144. package/lib/dist-custom-elements/duet-menu-bar-dropdown.js +3 -3
  145. package/lib/dist-custom-elements/duet-menu-bar-item.js +3 -3
  146. package/lib/dist-custom-elements/duet-menu-bar-link.js +3 -3
  147. package/lib/dist-custom-elements/duet-menu-bar.js +3 -3
  148. package/lib/dist-custom-elements/duet-modal.js +10 -10
  149. package/lib/dist-custom-elements/duet-multiselect.js +9 -9
  150. package/lib/dist-custom-elements/duet-nav.js +1 -1
  151. package/lib/dist-custom-elements/duet-notification-drawer.js +4 -4
  152. package/lib/dist-custom-elements/duet-notification.js +2 -2
  153. package/lib/dist-custom-elements/duet-number-input.js +11 -11
  154. package/lib/dist-custom-elements/duet-page-heading.js +2 -2
  155. package/lib/dist-custom-elements/duet-pagination.js +14 -14
  156. package/lib/dist-custom-elements/duet-paragraph.js +1 -1
  157. package/lib/dist-custom-elements/duet-popup-menu-item.js +2 -2
  158. package/lib/dist-custom-elements/duet-popup-menu.js +10 -4
  159. package/lib/dist-custom-elements/duet-progress.js +1 -1
  160. package/lib/dist-custom-elements/duet-promo-card.js +4 -4
  161. package/lib/dist-custom-elements/duet-radio-group.js +8 -8
  162. package/lib/dist-custom-elements/duet-radio.js +1 -1
  163. package/lib/dist-custom-elements/duet-range-slider.js +3 -3
  164. package/lib/dist-custom-elements/duet-range-stepper.js +5 -5
  165. package/lib/dist-custom-elements/duet-scrollable.js +1 -1
  166. package/lib/dist-custom-elements/duet-section-layout.js +1 -1
  167. package/lib/dist-custom-elements/duet-select.js +1 -1
  168. package/lib/dist-custom-elements/duet-shaped-image.js +1 -1
  169. package/lib/dist-custom-elements/duet-show-more.js +5 -5
  170. package/lib/dist-custom-elements/duet-slideout-lang.js +2 -2
  171. package/lib/dist-custom-elements/duet-slideout-link.js +2 -2
  172. package/lib/dist-custom-elements/duet-slideout-panel-dropdown.js +2 -2
  173. package/lib/dist-custom-elements/duet-slideout-panel.js +4 -4
  174. package/lib/dist-custom-elements/duet-slideout.js +5 -5
  175. package/lib/dist-custom-elements/duet-spacer.js +1 -1
  176. package/lib/dist-custom-elements/duet-spinner.js +1 -1
  177. package/lib/dist-custom-elements/duet-step.js +4 -4
  178. package/lib/dist-custom-elements/duet-stepper.js +2 -2
  179. package/lib/dist-custom-elements/duet-submenu-bar-dropdown-link.js +2 -2
  180. package/lib/dist-custom-elements/duet-submenu-bar-dropdown.js +3 -3
  181. package/lib/dist-custom-elements/duet-submenu-bar-item.js +3 -3
  182. package/lib/dist-custom-elements/duet-submenu-bar-link.js +3 -3
  183. package/lib/dist-custom-elements/duet-submenu-bar.js +7 -6
  184. package/lib/dist-custom-elements/duet-tab-group.js +13 -13
  185. package/lib/dist-custom-elements/duet-tab.js +2 -2
  186. package/lib/dist-custom-elements/duet-table.js +1 -1
  187. package/lib/dist-custom-elements/duet-textarea.js +10 -10
  188. package/lib/dist-custom-elements/duet-toggle.js +2 -2
  189. package/lib/dist-custom-elements/duet-toolbar-dropdown-link.js +2 -2
  190. package/lib/dist-custom-elements/duet-toolbar-dropdown.js +2 -2
  191. package/lib/dist-custom-elements/duet-toolbar-item.js +2 -2
  192. package/lib/dist-custom-elements/duet-toolbar-link.js +2 -2
  193. package/lib/dist-custom-elements/duet-toolbar.js +1 -1
  194. package/lib/dist-custom-elements/duet-tooltip-button.js +1 -1
  195. package/lib/dist-custom-elements/duet-tooltip-popup.js +1 -1
  196. package/lib/dist-custom-elements/duet-tooltip.js +1 -1
  197. package/lib/dist-custom-elements/duet-tray.js +4 -4
  198. package/lib/dist-custom-elements/duet-upload-aria-status.js +1 -1
  199. package/lib/dist-custom-elements/duet-upload-item.js +1 -1
  200. package/lib/dist-custom-elements/duet-upload.js +74 -24
  201. package/lib/dist-custom-elements/duet-visually-hidden.js +1 -1
  202. package/lib/dist-custom-elements/index.js +1 -1
  203. package/lib/dist-custom-elements/{p-c1c9234e.js → p-00766c1c.js} +10 -10
  204. package/lib/dist-custom-elements/{p-d4663c7c.js → p-01cc0070.js} +8 -8
  205. package/lib/{esm/floating-ui.dom.esm-efad5c89.js → dist-custom-elements/p-11e152cd.js} +60 -20
  206. package/lib/dist-custom-elements/{p-0d9a20d2.js → p-16110f9e.js} +19 -11
  207. package/lib/dist-custom-elements/{p-cbac9ed5.js → p-2807b16f.js} +1 -1
  208. package/lib/dist-custom-elements/{p-d37a3cec.js → p-2f3ee599.js} +2 -0
  209. package/lib/dist-custom-elements/{p-fa23b7fe.js → p-37ed08ff.js} +5 -5
  210. package/lib/dist-custom-elements/{p-a48934c3.js → p-37fda12a.js} +1 -1
  211. package/lib/dist-custom-elements/{p-eef66341.js → p-4bd749d9.js} +1 -1
  212. package/lib/dist-custom-elements/{p-4f04ad3e.js → p-4ea72812.js} +2 -2
  213. package/lib/dist-custom-elements/{p-177cbf72.js → p-5d23f8e5.js} +1 -1
  214. package/lib/dist-custom-elements/{p-0a2e2799.js → p-60825051.js} +1 -1
  215. package/lib/dist-custom-elements/{p-601b571c.js → p-694eb563.js} +2 -2
  216. package/lib/dist-custom-elements/{p-6686826d.js → p-6d154d20.js} +1 -1
  217. package/lib/dist-custom-elements/{p-a0fb1ecb.js → p-6e276517.js} +2 -2
  218. package/lib/dist-custom-elements/{p-45f0a5c5.js → p-70db33ff.js} +5 -5
  219. package/lib/dist-custom-elements/{p-131d995f.js → p-769f67db.js} +2 -2
  220. package/lib/dist-custom-elements/{p-9b65c21f.js → p-7a282561.js} +2 -2
  221. package/lib/dist-custom-elements/{p-2996bc9b.js → p-80658678.js} +7 -7
  222. package/lib/dist-custom-elements/p-8855e26a.js +8 -0
  223. package/lib/dist-custom-elements/{p-61c2577e.js → p-95edd984.js} +4 -4
  224. package/lib/dist-custom-elements/{p-50ce213d.js → p-9a68c9c3.js} +2 -2
  225. package/lib/dist-custom-elements/{p-33a89c97.js → p-a0e148ea.js} +2 -2
  226. package/lib/dist-custom-elements/{p-f5c39ead.js → p-add43228.js} +5 -5
  227. package/lib/dist-custom-elements/{p-f1f23dbd.js → p-b72908a4.js} +4 -4
  228. package/lib/dist-custom-elements/{p-12eef2ad.js → p-b8be34fe.js} +3 -3
  229. package/lib/dist-custom-elements/{p-15c6804a.js → p-bc9b66e3.js} +2 -2
  230. package/lib/dist-custom-elements/{p-59846fe0.js → p-c3bf10f0.js} +2 -2
  231. package/lib/dist-custom-elements/{p-3e696237.js → p-c92fc106.js} +2 -2
  232. package/lib/dist-custom-elements/{p-47e5367a.js → p-c9e9fcdd.js} +1 -1
  233. package/lib/dist-custom-elements/{p-a15329e0.js → p-cd43ed13.js} +1 -1
  234. package/lib/dist-custom-elements/p-d0e58f2f.js +195 -0
  235. package/lib/dist-custom-elements/{p-5b729ba0.js → p-d98e622c.js} +2 -2
  236. package/lib/dist-custom-elements/{p-57761460.js → p-d9ce7d34.js} +2 -2
  237. package/lib/dist-custom-elements/{p-7e7a0c10.js → p-e0da6a34.js} +1 -1
  238. package/lib/dist-custom-elements/{p-d84e09c9.js → p-e20f6c37.js} +1 -1
  239. package/lib/dist-custom-elements/{p-a41e92cd.js → p-eb8112d7.js} +1 -1
  240. package/lib/{esm/tokens-30d01e1d.js → dist-custom-elements/p-ed995372.js} +3 -0
  241. package/lib/dist-custom-elements/{p-2a308935.js → p-f6bb0a14.js} +1 -1
  242. package/lib/dist-custom-elements/{p-1364c672.js → p-f971e88a.js} +2 -2
  243. package/lib/duet/duet.esm.js +1 -1
  244. package/lib/duet/duet.js +1 -1
  245. package/lib/duet/{p-22d72786.system.entry.js → p-010dd9f1.system.entry.js} +1 -1
  246. package/lib/duet/{p-9d2d5bb7.entry.js → p-021e6c41.entry.js} +1 -1
  247. package/lib/duet/{p-bba08afa.entry.js → p-03ecd2e4.entry.js} +1 -1
  248. package/lib/duet/{p-f2aa1623.js → p-03f6f09a.js} +1 -1
  249. package/lib/duet/p-04cc1871.entry.js +4 -0
  250. package/lib/duet/{p-1d44acfe.entry.js → p-0ae402bc.entry.js} +1 -1
  251. package/lib/duet/{p-0e015dcc.system.entry.js → p-0bbc8e7d.system.entry.js} +1 -1
  252. package/lib/duet/{p-b46eaf22.system.entry.js → p-0c7b4d0b.system.entry.js} +1 -1
  253. package/lib/duet/{p-04396632.entry.js → p-0ee178f3.entry.js} +1 -1
  254. package/lib/duet/{p-ea0114b0.system.entry.js → p-11d504bb.system.entry.js} +1 -1
  255. package/lib/duet/p-11e152cd.js +4 -0
  256. package/lib/duet/{p-0b31f281.entry.js → p-14dd96f6.entry.js} +1 -1
  257. package/lib/duet/{p-4a711595.system.entry.js → p-1a90862e.system.entry.js} +1 -1
  258. package/lib/duet/{p-cf68eb94.entry.js → p-1b7067b9.entry.js} +1 -1
  259. package/lib/duet/{p-da3a4563.system.entry.js → p-1c6ac55a.system.entry.js} +1 -1
  260. package/lib/duet/{p-10098739.system.entry.js → p-1d6732e5.system.entry.js} +1 -1
  261. package/lib/duet/{p-e8ef41fb.entry.js → p-1f1ea2e1.entry.js} +1 -1
  262. package/lib/duet/{p-18a5ed57.entry.js → p-1f51448a.entry.js} +1 -1
  263. package/lib/duet/{p-fe6d6541.entry.js → p-1f6614f2.entry.js} +1 -1
  264. package/lib/duet/p-1fd2d87d.entry.js +4 -0
  265. package/lib/duet/{p-0dfacf89.entry.js → p-218929dd.entry.js} +1 -1
  266. package/lib/duet/{p-5df167ce.entry.js → p-24707dfe.entry.js} +1 -1
  267. package/lib/duet/p-290fd0ec.entry.js +4 -0
  268. package/lib/duet/{p-738c2982.entry.js → p-296bce73.entry.js} +1 -1
  269. package/lib/duet/{p-edbb800c.entry.js → p-2a67d274.entry.js} +1 -1
  270. package/lib/duet/{p-10221818.system.entry.js → p-2accb711.system.entry.js} +1 -1
  271. package/lib/duet/{p-c1788410.entry.js → p-2ad9975b.entry.js} +1 -1
  272. package/lib/duet/{p-68563736.entry.js → p-2c3a0e0b.entry.js} +1 -1
  273. package/lib/duet/{p-321f5636.system.entry.js → p-2c7a4ccf.system.entry.js} +1 -1
  274. package/lib/duet/{p-c32fb0ad.system.entry.js → p-2d505c84.system.entry.js} +1 -1
  275. package/lib/duet/{p-7a62a25c.system.entry.js → p-2d5eea69.system.entry.js} +1 -1
  276. package/lib/duet/p-2e68af22.system.js +4 -0
  277. package/lib/duet/{p-846f6107.entry.js → p-30694f50.entry.js} +1 -1
  278. package/lib/duet/{p-851a2197.system.entry.js → p-30b37984.system.entry.js} +1 -1
  279. package/lib/duet/{p-70e8e2e8.entry.js → p-324a6828.entry.js} +1 -1
  280. package/lib/duet/{p-66811869.system.entry.js → p-328a40de.system.entry.js} +1 -1
  281. package/lib/duet/{p-dd11d532.system.entry.js → p-3350f9aa.system.entry.js} +1 -1
  282. package/lib/duet/p-34620d0d.entry.js +4 -0
  283. package/lib/duet/{p-3d1e8d07.system.entry.js → p-350fc5f7.system.entry.js} +1 -1
  284. package/lib/duet/{p-64d1ea6b.entry.js → p-368a4f49.entry.js} +1 -1
  285. package/lib/duet/{p-addd5e7e.system.entry.js → p-36cce3f9.system.entry.js} +1 -1
  286. package/lib/duet/{p-383a91dc.system.entry.js → p-383719e3.system.entry.js} +1 -1
  287. package/lib/duet/{p-ff73f982.system.entry.js → p-3a7594d3.system.entry.js} +1 -1
  288. package/lib/duet/{p-78e5a38c.system.entry.js → p-3cd30915.system.entry.js} +1 -1
  289. package/lib/duet/p-3d88b644.system.entry.js +4 -0
  290. package/lib/duet/p-3d951794.entry.js +4 -0
  291. package/lib/duet/{p-71028a1e.entry.js → p-3e26c389.entry.js} +1 -1
  292. package/lib/duet/{p-3dfbd404.system.entry.js → p-3f0589bb.system.entry.js} +1 -1
  293. package/lib/duet/{p-407a1728.entry.js → p-40c29b8e.entry.js} +1 -1
  294. package/lib/duet/{p-abdbce02.system.js → p-41ba30b7.system.js} +1 -1
  295. package/lib/duet/{p-99b0e6bb.system.entry.js → p-41e13b83.system.entry.js} +1 -1
  296. package/lib/duet/{p-ffb8996b.system.js → p-42101548.system.js} +1 -1
  297. package/lib/duet/p-432df72f.system.entry.js +4 -0
  298. package/lib/duet/{p-230604b9.entry.js → p-43cd9f87.entry.js} +1 -1
  299. package/lib/duet/{p-551e05af.system.entry.js → p-44c81d6b.system.entry.js} +1 -1
  300. package/lib/duet/{p-7a98a43c.entry.js → p-460aada9.entry.js} +1 -1
  301. package/lib/duet/p-4861c4a4.entry.js +4 -0
  302. package/lib/duet/{p-c46b15ea.entry.js → p-48bd3e10.entry.js} +1 -1
  303. package/lib/duet/{p-c57afc88.entry.js → p-4f779b7b.entry.js} +1 -1
  304. package/lib/duet/{p-49e02a59.system.entry.js → p-507f807b.system.entry.js} +1 -1
  305. package/lib/duet/p-5091eb50.entry.js +4 -0
  306. package/lib/duet/p-52e38899.system.js +4 -0
  307. package/lib/duet/{p-d9f35a79.entry.js → p-5555f60d.entry.js} +1 -1
  308. package/lib/duet/{p-8f916ac7.system.entry.js → p-55b5929c.system.entry.js} +1 -1
  309. package/lib/duet/{p-b685de1e.js → p-593e28ac.js} +1 -1
  310. package/lib/duet/{p-42473291.system.entry.js → p-5ca7f7cb.system.entry.js} +1 -1
  311. package/lib/duet/p-5d5b6fbd.entry.js +4 -0
  312. package/lib/duet/{p-04d81b55.entry.js → p-5e8c47fe.entry.js} +1 -1
  313. package/lib/duet/p-5f0c7704.system.entry.js +4 -0
  314. package/lib/duet/{p-187e0e31.entry.js → p-607be10a.entry.js} +1 -1
  315. package/lib/duet/{p-514310af.system.entry.js → p-60ca48d1.system.entry.js} +1 -1
  316. package/lib/duet/{p-2f75a831.system.entry.js → p-62ce745e.system.entry.js} +1 -1
  317. package/lib/duet/p-650a419d.system.js +4 -0
  318. package/lib/duet/{p-95575931.entry.js → p-66f4c2bb.entry.js} +1 -1
  319. package/lib/duet/{p-436828cd.entry.js → p-67956ba7.entry.js} +1 -1
  320. package/lib/duet/{p-b3fe4d80.system.entry.js → p-6a6136ac.system.entry.js} +1 -1
  321. package/lib/duet/p-6c3a10a7.system.entry.js +4 -0
  322. package/lib/duet/{p-bb0d4df8.system.entry.js → p-6cce9324.system.entry.js} +1 -1
  323. package/lib/duet/{p-69535738.system.entry.js → p-6d5bbd9d.system.entry.js} +1 -1
  324. package/lib/duet/{p-70192242.system.entry.js → p-6d67ee47.system.entry.js} +1 -1
  325. package/lib/duet/{p-5855d879.system.entry.js → p-6ef5d34b.system.entry.js} +1 -1
  326. package/lib/duet/{p-2d679611.entry.js → p-70961fe6.entry.js} +1 -1
  327. package/lib/duet/{p-428adef7.system.entry.js → p-7329324b.system.entry.js} +1 -1
  328. package/lib/duet/{p-7de032fc.system.entry.js → p-78c560b1.system.entry.js} +1 -1
  329. package/lib/duet/{p-c0580b3f.system.entry.js → p-797eaeab.system.entry.js} +1 -1
  330. package/lib/duet/{p-5a9a1c76.entry.js → p-79f72cff.entry.js} +1 -1
  331. package/lib/duet/{p-5f87ea3d.js → p-7a66b632.js} +1 -1
  332. package/lib/duet/{p-301fda37.entry.js → p-7a6ed189.entry.js} +1 -1
  333. package/lib/duet/{p-04c226e5.entry.js → p-7c0afcee.entry.js} +1 -1
  334. package/lib/duet/{p-ab0a3192.entry.js → p-7c2ceea1.entry.js} +1 -1
  335. package/lib/duet/{p-48a63ce5.system.entry.js → p-7e14f80d.system.entry.js} +1 -1
  336. package/lib/duet/{p-b2387806.entry.js → p-7ecb4a30.entry.js} +1 -1
  337. package/lib/duet/{p-fe3a3989.entry.js → p-7f0e15ec.entry.js} +1 -1
  338. package/lib/duet/{p-2fd350b6.entry.js → p-7fd57091.entry.js} +1 -1
  339. package/lib/duet/p-80dc1362.system.entry.js +4 -0
  340. package/lib/duet/{p-f5414759.system.entry.js → p-81363d5b.system.entry.js} +1 -1
  341. package/lib/duet/{p-89ff1726.entry.js → p-81a65ba4.entry.js} +1 -1
  342. package/lib/duet/{p-24c2902b.entry.js → p-81a72ffe.entry.js} +1 -1
  343. package/lib/duet/{p-a8da4509.system.entry.js → p-84c8b5a1.system.entry.js} +1 -1
  344. package/lib/duet/{p-43931eed.system.entry.js → p-86069994.system.entry.js} +1 -1
  345. package/lib/duet/{p-4afeea09.system.entry.js → p-87c91115.system.entry.js} +2 -2
  346. package/lib/duet/{p-1d2d899a.system.entry.js → p-87e6b946.system.entry.js} +1 -1
  347. package/lib/duet/p-8855e26a.js +4 -0
  348. package/lib/duet/{p-9da0ed12.system.entry.js → p-89310816.system.entry.js} +1 -1
  349. package/lib/duet/{p-65b7afbd.system.entry.js → p-89daabf5.system.entry.js} +1 -1
  350. package/lib/duet/p-8a5fcb79.system.entry.js +4 -0
  351. package/lib/duet/{p-c9ab053d.entry.js → p-8b929d17.entry.js} +1 -1
  352. package/lib/duet/{p-ff58fdad.system.entry.js → p-8c5009b8.system.entry.js} +1 -1
  353. package/lib/duet/{p-b40bceab.system.entry.js → p-8cb77e1f.system.entry.js} +1 -1
  354. package/lib/duet/{p-dc234b3a.entry.js → p-935dbe23.entry.js} +1 -1
  355. package/lib/duet/{p-17a52ca1.entry.js → p-94ec5a34.entry.js} +1 -1
  356. package/lib/duet/{p-0a61dd54.system.entry.js → p-97d09535.system.entry.js} +1 -1
  357. package/lib/duet/p-98c4123d.entry.js +4 -0
  358. package/lib/duet/{p-d5c5992f.entry.js → p-9b42d132.entry.js} +1 -1
  359. package/lib/duet/{p-4557d28f.entry.js → p-9c5592a0.entry.js} +1 -1
  360. package/lib/duet/{p-5688f257.entry.js → p-9e58080f.entry.js} +1 -1
  361. package/lib/duet/{p-3c42ae99.system.entry.js → p-9f780397.system.entry.js} +1 -1
  362. package/lib/duet/{p-08e002f8.entry.js → p-a0978112.entry.js} +1 -1
  363. package/lib/duet/{p-f64f4ff8.system.entry.js → p-a09a9abe.system.entry.js} +1 -1
  364. package/lib/duet/{p-da7f4cbf.system.entry.js → p-a144a9ba.system.entry.js} +1 -1
  365. package/lib/duet/{p-12597683.system.entry.js → p-a1c81497.system.entry.js} +1 -1
  366. package/lib/duet/{p-b0d5f427.system.entry.js → p-a225a097.system.entry.js} +1 -1
  367. package/lib/duet/{p-93e1f5f7.entry.js → p-a2ab881c.entry.js} +1 -1
  368. package/lib/duet/{p-fc353103.system.entry.js → p-a2ac806b.system.entry.js} +1 -1
  369. package/lib/duet/{p-ea92b78c.system.entry.js → p-a2f3f775.system.entry.js} +1 -1
  370. package/lib/duet/p-a46b4450.system.js +4 -0
  371. package/lib/duet/{p-757451ff.system.entry.js → p-a5066804.system.entry.js} +1 -1
  372. package/lib/duet/{p-29301434.system.entry.js → p-ac1cf4f6.system.entry.js} +1 -1
  373. package/lib/duet/{p-3a63e778.entry.js → p-adf1bd67.entry.js} +1 -1
  374. package/lib/duet/{p-10d39a4b.system.entry.js → p-afcd0356.system.entry.js} +1 -1
  375. package/lib/duet/{p-50559904.system.entry.js → p-b8182937.system.entry.js} +1 -1
  376. package/lib/duet/{p-96783b15.system.entry.js → p-b86feb9d.system.entry.js} +1 -1
  377. package/lib/duet/{p-a58f1913.system.entry.js → p-bb4a6a02.system.entry.js} +1 -1
  378. package/lib/duet/{p-b3fac2f5.entry.js → p-bbd94845.entry.js} +1 -1
  379. package/lib/duet/{p-f99a14a4.system.entry.js → p-bdec8ea8.system.entry.js} +1 -1
  380. package/lib/duet/{p-e3f76452.entry.js → p-bf2f9155.entry.js} +1 -1
  381. package/lib/duet/{p-e7bc8481.entry.js → p-bfc33dbb.entry.js} +1 -1
  382. package/lib/duet/{p-a45fe7ea.system.entry.js → p-c24529b8.system.entry.js} +1 -1
  383. package/lib/duet/{p-4fe29741.entry.js → p-c4a1468e.entry.js} +1 -1
  384. package/lib/duet/{p-deff3c18.entry.js → p-c6995ff3.entry.js} +1 -1
  385. package/lib/duet/{p-f7681856.system.entry.js → p-c7b3d9fd.system.entry.js} +1 -1
  386. package/lib/duet/p-c8564169.entry.js +4 -0
  387. package/lib/duet/{p-1f3ff1d7.system.entry.js → p-c9e8f35b.system.entry.js} +1 -1
  388. package/lib/duet/{p-fce3d5cc.system.entry.js → p-cdb63bbf.system.entry.js} +1 -1
  389. package/lib/duet/{p-0571c7df.system.entry.js → p-d156e8f9.system.entry.js} +1 -1
  390. package/lib/duet/{p-cfc901c8.entry.js → p-d547e4b8.entry.js} +1 -1
  391. package/lib/duet/{p-4f40d4b7.system.entry.js → p-d5e534d5.system.entry.js} +1 -1
  392. package/lib/duet/{p-cd03ee1c.entry.js → p-d6f9146f.entry.js} +1 -1
  393. package/lib/duet/{p-65126f35.system.entry.js → p-d76fa43c.system.entry.js} +1 -1
  394. package/lib/duet/{p-fa5eff27.js → p-d82b4974.js} +1 -1
  395. package/lib/duet/{p-ea0d7900.entry.js → p-d8d7c90b.entry.js} +1 -1
  396. package/lib/duet/{p-5935bb9e.system.entry.js → p-d936b946.system.entry.js} +1 -1
  397. package/lib/duet/{p-71fa6c5f.entry.js → p-da9e040d.entry.js} +1 -1
  398. package/lib/duet/{p-62d011ba.entry.js → p-db5e6b96.entry.js} +1 -1
  399. package/lib/duet/{p-df7a726b.entry.js → p-ddb1fc3d.entry.js} +1 -1
  400. package/lib/duet/{p-f0f494dc.system.js → p-def3d03c.system.js} +1 -1
  401. package/lib/duet/{p-02064d40.entry.js → p-e0e04af9.entry.js} +1 -1
  402. package/lib/duet/{p-e6a09596.entry.js → p-e1fbb2f0.entry.js} +1 -1
  403. package/lib/duet/{p-936894c4.entry.js → p-e31f82e8.entry.js} +1 -1
  404. package/lib/duet/{p-4aada7ef.system.entry.js → p-e3832e69.system.entry.js} +1 -1
  405. package/lib/duet/{p-937a64ee.system.entry.js → p-e39b3463.system.entry.js} +1 -1
  406. package/lib/duet/p-e639b9ee.system.js +4 -0
  407. package/lib/duet/{p-798d2be8.entry.js → p-eb2092ea.entry.js} +1 -1
  408. package/lib/duet/{p-ea787367.system.entry.js → p-ebd9d168.system.entry.js} +1 -1
  409. package/lib/duet/p-ed995372.js +4 -0
  410. package/lib/duet/{p-a6a2c0c2.entry.js → p-f10c1b71.entry.js} +1 -1
  411. package/lib/duet/{p-54cbe86f.system.entry.js → p-f11ee829.system.entry.js} +1 -1
  412. package/lib/duet/{p-01cb4eba.entry.js → p-f442a901.entry.js} +1 -1
  413. package/lib/duet/{p-b671985e.entry.js → p-f75d4521.entry.js} +1 -1
  414. package/lib/duet/{p-3611d8db.entry.js → p-f860fa92.entry.js} +1 -1
  415. package/lib/duet/{p-c8fd77c9.system.entry.js → p-f9567972.system.entry.js} +1 -1
  416. package/lib/duet/{p-94d25cb5.entry.js → p-f97b0583.entry.js} +1 -1
  417. package/lib/duet/{p-596fd1f4.entry.js → p-fcda7bb3.entry.js} +1 -1
  418. package/lib/duet/{p-9f23897e.system.entry.js → p-fdf3ee51.system.entry.js} +1 -1
  419. package/lib/duet/{p-d26277f5.entry.js → p-ff048b43.entry.js} +1 -1
  420. package/lib/esm/action-new-window-9c8f7830.js +8 -0
  421. package/lib/esm/duet-action-button.entry.js +3 -3
  422. package/lib/esm/duet-alert.entry.js +1 -1
  423. package/lib/esm/duet-badge.entry.js +1 -1
  424. package/lib/esm/duet-banner.entry.js +9 -8
  425. package/lib/esm/duet-breadcrumb.entry.js +1 -1
  426. package/lib/esm/duet-breadcrumbs.entry.js +3 -3
  427. package/lib/esm/duet-button_2.entry.js +3 -3
  428. package/lib/esm/duet-callout.entry.js +1 -1
  429. package/lib/esm/duet-caption_4.entry.js +45 -21
  430. package/lib/esm/duet-card.entry.js +3 -3
  431. package/lib/esm/duet-checkbox.entry.js +1 -1
  432. package/lib/esm/duet-checkmark.entry.js +1 -1
  433. package/lib/esm/duet-chip.entry.js +1 -1
  434. package/lib/esm/duet-choice_2.entry.js +2 -2
  435. package/lib/esm/duet-collapsible.entry.js +2 -2
  436. package/lib/esm/duet-combobox.entry.js +1 -1
  437. package/lib/esm/duet-contact-card.entry.js +1 -1
  438. package/lib/esm/duet-cookie-consent.entry.js +1 -1
  439. package/lib/esm/duet-date-picker.entry.js +2 -2
  440. package/lib/esm/duet-divider_2.entry.js +3 -3
  441. package/lib/esm/duet-editable-table_3.entry.js +56 -9
  442. package/lib/esm/duet-empty-state.entry.js +1 -1
  443. package/lib/esm/duet-fieldset.entry.js +1 -1
  444. package/lib/esm/duet-file-chooser.entry.js +1 -1
  445. package/lib/esm/duet-footer.entry.js +2 -4
  446. package/lib/esm/duet-grid_2.entry.js +2 -2
  447. package/lib/esm/duet-header_2.entry.js +4 -4
  448. package/lib/esm/duet-hero.entry.js +1 -1
  449. package/lib/esm/duet-icon.entry.js +3 -3
  450. package/lib/esm/duet-input_2.entry.js +3 -3
  451. package/lib/esm/duet-layout.entry.js +1 -1
  452. package/lib/esm/duet-list_2.entry.js +1 -1
  453. package/lib/esm/duet-menu-bar-button.entry.js +2 -2
  454. package/lib/esm/duet-menu-bar-dropdown-link.entry.js +1 -1
  455. package/lib/esm/duet-menu-bar-dropdown.entry.js +2 -2
  456. package/lib/esm/duet-menu-bar-item.entry.js +2 -2
  457. package/lib/esm/duet-menu-bar-link.entry.js +2 -2
  458. package/lib/esm/duet-menu-bar.entry.js +2 -2
  459. package/lib/esm/duet-modal.entry.js +4 -4
  460. package/lib/esm/duet-multiselect.entry.js +1 -1
  461. package/lib/esm/duet-nav.entry.js +1 -1
  462. package/lib/esm/duet-notification_2.entry.js +1 -1
  463. package/lib/esm/duet-number-input.entry.js +1 -1
  464. package/lib/esm/duet-page-heading.entry.js +1 -1
  465. package/lib/esm/duet-pagination_2.entry.js +4 -4
  466. package/lib/esm/duet-popup-menu-item.entry.js +1 -1
  467. package/lib/esm/duet-popup-menu.entry.js +9 -4
  468. package/lib/esm/duet-progress.entry.js +1 -1
  469. package/lib/esm/duet-promo-card.entry.js +3 -3
  470. package/lib/esm/duet-radio_2.entry.js +1 -1
  471. package/lib/esm/duet-range-slider.entry.js +2 -2
  472. package/lib/esm/duet-scrollable_3.entry.js +3 -3
  473. package/lib/esm/duet-section-layout.entry.js +1 -1
  474. package/lib/esm/duet-select.entry.js +1 -1
  475. package/lib/esm/duet-shaped-image.entry.js +1 -1
  476. package/lib/esm/duet-show-more.entry.js +1 -1
  477. package/lib/esm/duet-slideout-lang.entry.js +1 -1
  478. package/lib/esm/duet-slideout-link.entry.js +1 -1
  479. package/lib/esm/duet-slideout-panel-dropdown.entry.js +1 -1
  480. package/lib/esm/duet-slideout-panel.entry.js +4 -4
  481. package/lib/esm/duet-slideout.entry.js +5 -5
  482. package/lib/esm/duet-step_2.entry.js +1 -1
  483. package/lib/esm/duet-submenu-bar-dropdown-link.entry.js +1 -1
  484. package/lib/esm/duet-submenu-bar-dropdown.entry.js +2 -2
  485. package/lib/esm/duet-submenu-bar-item.entry.js +2 -2
  486. package/lib/esm/duet-submenu-bar-link.entry.js +2 -2
  487. package/lib/esm/duet-submenu-bar.entry.js +6 -5
  488. package/lib/esm/duet-textarea.entry.js +1 -1
  489. package/lib/esm/duet-toggle.entry.js +1 -1
  490. package/lib/esm/duet-toolbar-dropdown-link.entry.js +1 -1
  491. package/lib/esm/duet-toolbar-dropdown.entry.js +1 -1
  492. package/lib/esm/duet-toolbar-item.entry.js +1 -1
  493. package/lib/esm/duet-toolbar-link.entry.js +1 -1
  494. package/lib/esm/duet-toolbar.entry.js +1 -1
  495. package/lib/esm/duet-tooltip-button_2.entry.js +2 -2
  496. package/lib/esm/duet-tooltip.entry.js +3 -3
  497. package/lib/esm/duet-tray.entry.js +2 -2
  498. package/lib/esm/duet-upload-aria-status.entry.js +1 -1
  499. package/lib/esm/duet-upload-item.entry.js +9 -2
  500. package/lib/esm/duet-visually-hidden.entry.js +1 -1
  501. package/lib/esm/duet.js +3 -3
  502. package/lib/{dist-custom-elements/p-00c8a755.js → esm/floating-ui.dom.esm-34e0a5fa.js} +60 -20
  503. package/lib/esm/{focus-utils-82a898ac.js → focus-utils-c70f9fb9.js} +1 -1
  504. package/lib/esm/{index-28be88c1.js → index-3c6b5eb8.js} +1 -1
  505. package/lib/esm/loader.js +3 -3
  506. package/lib/esm/{token-utils-0c77cb3c.js → token-utils-be83d039.js} +1 -1
  507. package/lib/{dist-custom-elements/p-d81ec707.js → esm/tokens-94133fa9.js} +3 -0
  508. package/lib/esm/{tokens.module-c9866649.js → tokens.module-3547915d.js} +2 -0
  509. package/lib/esm-es5/action-new-window-9c8f7830.js +4 -0
  510. package/lib/esm-es5/duet-action-button.entry.js +1 -1
  511. package/lib/esm-es5/duet-alert.entry.js +1 -1
  512. package/lib/esm-es5/duet-badge.entry.js +1 -1
  513. package/lib/esm-es5/duet-banner.entry.js +1 -1
  514. package/lib/esm-es5/duet-breadcrumb.entry.js +1 -1
  515. package/lib/esm-es5/duet-breadcrumbs.entry.js +1 -1
  516. package/lib/esm-es5/duet-button_2.entry.js +1 -1
  517. package/lib/esm-es5/duet-callout.entry.js +1 -1
  518. package/lib/esm-es5/duet-caption_4.entry.js +2 -2
  519. package/lib/esm-es5/duet-card.entry.js +1 -1
  520. package/lib/esm-es5/duet-checkbox.entry.js +1 -1
  521. package/lib/esm-es5/duet-checkmark.entry.js +1 -1
  522. package/lib/esm-es5/duet-chip.entry.js +1 -1
  523. package/lib/esm-es5/duet-choice_2.entry.js +1 -1
  524. package/lib/esm-es5/duet-collapsible.entry.js +1 -1
  525. package/lib/esm-es5/duet-combobox.entry.js +1 -1
  526. package/lib/esm-es5/duet-contact-card.entry.js +1 -1
  527. package/lib/esm-es5/duet-cookie-consent.entry.js +1 -1
  528. package/lib/esm-es5/duet-date-picker.entry.js +1 -1
  529. package/lib/esm-es5/duet-divider_2.entry.js +1 -1
  530. package/lib/esm-es5/duet-editable-table_3.entry.js +1 -1
  531. package/lib/esm-es5/duet-empty-state.entry.js +1 -1
  532. package/lib/esm-es5/duet-fieldset.entry.js +1 -1
  533. package/lib/esm-es5/duet-file-chooser.entry.js +1 -1
  534. package/lib/esm-es5/duet-footer.entry.js +1 -1
  535. package/lib/esm-es5/duet-grid_2.entry.js +1 -1
  536. package/lib/esm-es5/duet-header_2.entry.js +1 -1
  537. package/lib/esm-es5/duet-hero.entry.js +1 -1
  538. package/lib/esm-es5/duet-icon.entry.js +1 -1
  539. package/lib/esm-es5/duet-input_2.entry.js +1 -1
  540. package/lib/esm-es5/duet-layout.entry.js +1 -1
  541. package/lib/esm-es5/duet-list_2.entry.js +1 -1
  542. package/lib/esm-es5/duet-menu-bar-button.entry.js +1 -1
  543. package/lib/esm-es5/duet-menu-bar-dropdown-link.entry.js +1 -1
  544. package/lib/esm-es5/duet-menu-bar-dropdown.entry.js +2 -2
  545. package/lib/esm-es5/duet-menu-bar-item.entry.js +1 -1
  546. package/lib/esm-es5/duet-menu-bar-link.entry.js +1 -1
  547. package/lib/esm-es5/duet-menu-bar.entry.js +1 -1
  548. package/lib/esm-es5/duet-modal.entry.js +1 -1
  549. package/lib/esm-es5/duet-multiselect.entry.js +1 -1
  550. package/lib/esm-es5/duet-nav.entry.js +1 -1
  551. package/lib/esm-es5/duet-notification_2.entry.js +1 -1
  552. package/lib/esm-es5/duet-number-input.entry.js +1 -1
  553. package/lib/esm-es5/duet-page-heading.entry.js +1 -1
  554. package/lib/esm-es5/duet-pagination_2.entry.js +1 -1
  555. package/lib/esm-es5/duet-popup-menu-item.entry.js +1 -1
  556. package/lib/esm-es5/duet-popup-menu.entry.js +1 -1
  557. package/lib/esm-es5/duet-progress.entry.js +1 -1
  558. package/lib/esm-es5/duet-promo-card.entry.js +2 -2
  559. package/lib/esm-es5/duet-radio_2.entry.js +1 -1
  560. package/lib/esm-es5/duet-range-slider.entry.js +1 -1
  561. package/lib/esm-es5/duet-scrollable_3.entry.js +1 -1
  562. package/lib/esm-es5/duet-section-layout.entry.js +1 -1
  563. package/lib/esm-es5/duet-select.entry.js +1 -1
  564. package/lib/esm-es5/duet-shaped-image.entry.js +1 -1
  565. package/lib/esm-es5/duet-show-more.entry.js +1 -1
  566. package/lib/esm-es5/duet-slideout-lang.entry.js +1 -1
  567. package/lib/esm-es5/duet-slideout-link.entry.js +1 -1
  568. package/lib/esm-es5/duet-slideout-panel-dropdown.entry.js +1 -1
  569. package/lib/esm-es5/duet-slideout-panel.entry.js +1 -1
  570. package/lib/esm-es5/duet-slideout.entry.js +1 -1
  571. package/lib/esm-es5/duet-step_2.entry.js +1 -1
  572. package/lib/esm-es5/duet-submenu-bar-dropdown-link.entry.js +1 -1
  573. package/lib/esm-es5/duet-submenu-bar-dropdown.entry.js +1 -1
  574. package/lib/esm-es5/duet-submenu-bar-item.entry.js +1 -1
  575. package/lib/esm-es5/duet-submenu-bar-link.entry.js +1 -1
  576. package/lib/esm-es5/duet-submenu-bar.entry.js +2 -2
  577. package/lib/esm-es5/duet-textarea.entry.js +1 -1
  578. package/lib/esm-es5/duet-toggle.entry.js +1 -1
  579. package/lib/esm-es5/duet-toolbar-dropdown-link.entry.js +1 -1
  580. package/lib/esm-es5/duet-toolbar-dropdown.entry.js +1 -1
  581. package/lib/esm-es5/duet-toolbar-item.entry.js +1 -1
  582. package/lib/esm-es5/duet-toolbar-link.entry.js +1 -1
  583. package/lib/esm-es5/duet-toolbar.entry.js +1 -1
  584. package/lib/esm-es5/duet-tooltip-button_2.entry.js +1 -1
  585. package/lib/esm-es5/duet-tooltip.entry.js +1 -1
  586. package/lib/esm-es5/duet-tray.entry.js +1 -1
  587. package/lib/esm-es5/duet-upload-aria-status.entry.js +1 -1
  588. package/lib/esm-es5/duet-upload-item.entry.js +2 -2
  589. package/lib/esm-es5/duet-visually-hidden.entry.js +1 -1
  590. package/lib/esm-es5/duet.js +1 -1
  591. package/lib/esm-es5/floating-ui.dom.esm-34e0a5fa.js +4 -0
  592. package/lib/esm-es5/{focus-utils-82a898ac.js → focus-utils-c70f9fb9.js} +1 -1
  593. package/lib/esm-es5/{index-28be88c1.js → index-3c6b5eb8.js} +1 -1
  594. package/lib/esm-es5/loader.js +1 -1
  595. package/lib/esm-es5/{token-utils-0c77cb3c.js → token-utils-be83d039.js} +1 -1
  596. package/lib/esm-es5/tokens-94133fa9.js +4 -0
  597. package/lib/esm-es5/tokens.module-3547915d.js +4 -0
  598. package/lib/types/common-types.d.ts +1 -1
  599. package/lib/types/components/duet-link/duet-link.d.ts +13 -5
  600. package/lib/types/components/duet-popup-menu/duet-popup-menu.d.ts +4 -0
  601. package/lib/types/components/duet-upload/duet-upload.d.ts +13 -0
  602. package/lib/types/components/duet-upload-item/duet-upload-item.d.ts +8 -0
  603. package/lib/types/components.d.ts +48 -6
  604. package/lib/types/utils/string-utils.d.ts +4 -0
  605. package/package.json +7 -6
  606. package/lib/cjs/action-arrow-right-24fe06be.js +0 -8
  607. package/lib/dist-custom-elements/p-6fa39608.js +0 -6
  608. package/lib/dist-custom-elements/p-e052b3b5.js +0 -169
  609. package/lib/duet/p-00c8a755.js +0 -4
  610. package/lib/duet/p-04423d37.system.entry.js +0 -4
  611. package/lib/duet/p-129bd497.system.entry.js +0 -4
  612. package/lib/duet/p-15fde8cc.system.js +0 -4
  613. package/lib/duet/p-1cf9481d.entry.js +0 -4
  614. package/lib/duet/p-1ededd77.system.js +0 -4
  615. package/lib/duet/p-20a0342c.entry.js +0 -4
  616. package/lib/duet/p-232940fa.system.js +0 -4
  617. package/lib/duet/p-2acaaa8b.entry.js +0 -4
  618. package/lib/duet/p-2ba2a50c.system.entry.js +0 -4
  619. package/lib/duet/p-3134bfb1.system.entry.js +0 -4
  620. package/lib/duet/p-5a031276.entry.js +0 -4
  621. package/lib/duet/p-69aa5532.system.entry.js +0 -4
  622. package/lib/duet/p-6fa39608.js +0 -4
  623. package/lib/duet/p-72fd7bb2.entry.js +0 -4
  624. package/lib/duet/p-81f6a1a9.system.entry.js +0 -4
  625. package/lib/duet/p-9a056716.entry.js +0 -4
  626. package/lib/duet/p-c0f44540.entry.js +0 -4
  627. package/lib/duet/p-c34022cb.entry.js +0 -4
  628. package/lib/duet/p-d81ec707.js +0 -4
  629. package/lib/duet/p-dd994793.system.js +0 -4
  630. package/lib/duet/p-ddd516cc.entry.js +0 -4
  631. package/lib/duet/p-e1868c94.system.js +0 -4
  632. package/lib/duet/p-f9932852.entry.js +0 -4
  633. package/lib/esm/action-arrow-right-f7d56681.js +0 -6
  634. package/lib/esm-es5/action-arrow-right-f7d56681.js +0 -4
  635. package/lib/esm-es5/floating-ui.dom.esm-efad5c89.js +0 -4
  636. package/lib/esm-es5/tokens-30d01e1d.js +0 -4
  637. package/lib/esm-es5/tokens.module-c9866649.js +0 -4
  638. /package/lib/cjs/{bodyScrollLock.es6-83f334d1.js → bodyScrollLock.es6-dd2d7d91.js} +0 -0
  639. /package/lib/dist-custom-elements/{p-62c7d9d4.js → p-33937fd7.js} +0 -0
  640. /package/lib/dist-custom-elements/{p-141e14d0.js → p-8354d1f1.js} +0 -0
  641. /package/lib/duet/{p-ed5a5071.system.js → p-49957220.system.js} +0 -0
  642. /package/lib/duet/{p-141e14d0.js → p-8354d1f1.js} +0 -0
  643. /package/lib/esm/{bodyScrollLock.es6-8dc7cca7.js → bodyScrollLock.es6-ecbf187e.js} +0 -0
  644. /package/lib/esm-es5/{bodyScrollLock.es6-8dc7cca7.js → bodyScrollLock.es6-ecbf187e.js} +0 -0
@@ -3,12 +3,13 @@
3
3
  */
4
4
  import chevronIcon from "@duetds/icons/lib/assets/action-arrow-right";
5
5
  import downloadIcon from "@duetds/icons/lib/assets/action-download-small";
6
+ import newWindowIconLarge from "@duetds/icons/lib/assets/action-new-window";
6
7
  import newWindowIcon from "@duetds/icons/lib/assets/action-new-window-small";
7
8
  import { Build, Fragment, h, Host } from "@stencil/core";
8
9
  import { DuetStringsDownloadLinkDefaults, DuetStringsExternalDefaults } from "../../common-strings";
9
10
  import { inheritGlobalTheme } from "../../common/themeable-component";
10
11
  import { connectLanguageChangeObserver, disconnectLanguageChangeObserver, getLanguage, getLocaleString, } from "../../utils/language-utils";
11
- import { breakpointToToken } from "../../utils/token-utils";
12
+ import { breakpointToToken, getColorByName } from "../../utils/token-utils";
12
13
  /**
13
14
  * @part duet-link - piercing selector for styling the link
14
15
  * @part duet-link-content - piercing selector for styling the link content wrapper
@@ -31,9 +32,11 @@ export class DuetLink {
31
32
  this.tabToLink = false;
32
33
  this.icon = undefined;
33
34
  this.iconColor = "currentColor";
35
+ this.iconBackground = null;
34
36
  this.iconResponsive = false;
35
37
  this.padding = "auto";
36
38
  this.isSmallScreen = false;
39
+ this.isMediumScreen = false;
37
40
  }
38
41
  /**
39
42
  * Component lifecycle events.
@@ -42,6 +45,10 @@ export class DuetLink {
42
45
  inheritGlobalTheme(this);
43
46
  this.initMediaQuery();
44
47
  this.resolvedDownload = this.resolveDownload();
48
+ // button variation renders a button element when no url is provided
49
+ if (this.variation === "button" && this.url === "#") {
50
+ this.url = undefined;
51
+ }
45
52
  }
46
53
  connectedCallback() {
47
54
  connectLanguageChangeObserver(this, {
@@ -65,15 +72,18 @@ export class DuetLink {
65
72
  return;
66
73
  }
67
74
  this.screenTestBound = this.screenTest.bind(this);
68
- this.mediaQuery = window.matchMedia(breakpointToToken["xx-small"]);
69
- this.isSmallScreen = this.mediaQuery.matches;
70
- this.mediaQuery.addEventListener("change", this.screenTestBound);
75
+ this.mediaQuerySmall = window.matchMedia(breakpointToToken["xx-small"]);
76
+ this.mediaQueryMedium = window.matchMedia(breakpointToToken["medium"]);
77
+ this.isSmallScreen = this.mediaQuerySmall.matches;
78
+ this.mediaQuerySmall.addEventListener("change", this.screenTestBound);
79
+ this.mediaQueryMedium.addEventListener("change", this.screenTestBound);
71
80
  }
72
81
  destroyMediaQuery() {
73
- if (Build.isServer || !this.mediaQuery) {
82
+ if (Build.isServer) {
74
83
  return;
75
84
  }
76
- this.mediaQuery.removeEventListener("change", this.screenTestBound);
85
+ this.mediaQuerySmall.removeEventListener("change", this.screenTestBound);
86
+ this.mediaQueryMedium.removeEventListener("change", this.screenTestBound);
77
87
  }
78
88
  screenTest(event) {
79
89
  this.isSmallScreen = event.matches;
@@ -96,32 +106,50 @@ export class DuetLink {
96
106
  }
97
107
  return this.download;
98
108
  }
99
- renderContent() {
100
- return (h(Fragment, null, h("span", { class: "duet-link-content", part: "duet-link-content" }, h("slot", null)), Build.isBrowser && (this.resolvedDownload || this.external) && (h(Fragment, null, h("span", { class: "duet-link-icon-tail" }, "\u00A0", h("duet-icon", { icon: this.resolvedDownload ? downloadIcon.svg : newWindowIcon.svg, size: "xx-small", margin: "none", color: "currentColor" }))))));
109
+ renderDefaultContent() {
110
+ // Notice that the external icon needs to be placed right after the last word of the link.
111
+ // This is why we use &nbps; to keep everything on the same line.
112
+ return (h(Fragment, null, h("span", { class: "duet-link-content", part: "duet-link-content" }, h("slot", null)), Build.isBrowser && (this.resolvedDownload || this.external) && this.variation === "default" && (h(Fragment, null, h("span", { class: "duet-link-icon-tail" }, "\u00A0", h("duet-icon", { icon: this.resolvedDownload ? downloadIcon.svg : newWindowIcon.svg, size: "xx-small", margin: "none", color: "currentColor" }))))));
101
113
  }
102
- renderGrid() {
103
- return (h(Fragment, null, this.icon && (h("span", { class: "block__icon" }, h("duet-icon", { size: this.iconResponsive ? (this.isSmallScreen ? "medium" : "large") : "x-small", name: this.icon, margin: "none", color: this.iconColor }))), h("span", { class: "block__content" }, this.renderContent()), h("span", { class: "block__chevron", part: "block-chevron" }, h("duet-icon", { class: "block__chevron-icon", icon: chevronIcon.svg, size: "x-small", margin: "none", color: "primary-dark" }))));
114
+ renderBlockContent() {
115
+ return (h(Fragment, null, this.icon && (h("span", { class: "block__icon" }, h("duet-icon", { size: this.iconResponsive ? (this.isSmallScreen ? "medium" : "large") : "x-small", name: this.icon, margin: "none", color: this.iconColor }))), h("span", { class: "block__content" }, this.renderDefaultContent()), h("span", { class: "block__chevron", part: "block-chevron" }, h("duet-icon", { class: "block__chevron-icon", icon: this.external ? newWindowIconLarge.svg : chevronIcon.svg, size: "x-small", margin: "none", color: "primary-dark" }))));
116
+ }
117
+ renderButtonContent() {
118
+ const iconWrapStyle = {
119
+ "background-color": getColorByName(this.iconBackground, this.theme),
120
+ };
121
+ return (h(Fragment, null, h("span", { class: "icon-wrap", style: iconWrapStyle }, h("duet-icon", { size: this.isMediumScreen ? "small" : "medium", name: this.icon, margin: "none", color: this.iconColor })), h("span", { class: "duet-link-content", part: "duet-link-content" }, h("slot", null)), h("duet-icon", { class: "block__chevron-icon", icon: this.external ? newWindowIconLarge.svg : chevronIcon.svg, size: "x-small", margin: "none", color: "primary-dark" })));
122
+ }
123
+ renderContent() {
124
+ switch (this.variation) {
125
+ case "default":
126
+ return this.renderDefaultContent();
127
+ case "block":
128
+ return this.renderBlockContent();
129
+ case "button":
130
+ return this.renderButtonContent();
131
+ }
104
132
  }
105
133
  /**
106
134
  * render() function
107
135
  * Always the last one in the class.
108
136
  */
109
137
  render() {
110
- // Notice that the external icon needs to be places right after the last word of the link.
111
- // This is why we use &nbps; to keep everything on the same line.
138
+ const Tag = this.variation === "button" && !this.url ? "button" : "a";
112
139
  return (h(Host, { class: {
113
- "duet-link-block": this.variation === "block",
114
- } }, h("a", { href: this.url, class: {
140
+ [`duet-link-${this.variation}`]: true,
141
+ } }, h(Tag, { href: this.url, class: {
115
142
  "duet-link": true,
116
143
  "duet-link-is-external": this.external,
117
144
  "duet-link-is-download": !!this.download,
118
145
  "duet-link-has-icon": !!this.icon,
146
+ "duet-link-has-icon-background": !!this.iconBackground,
119
147
  "duet-tab-to-link": this.tabToLink,
120
148
  "duet-theme-turva": this.theme === "turva",
121
149
  "duet-p-0": this.padding === "none",
122
150
  [this.padding]: true,
123
151
  [this.variation]: true,
124
- }, target: this.download ? null : this.external ? "_blank" : "_self", download: this.resolvedDownload, "aria-label": this.getAccessibleLabel(), id: this.identifier, ref: el => (this.nativeLink = el), part: "duet-link", rel: this.external ? "noopener" : undefined }, this.variation === "block" ? this.renderGrid() : this.renderContent())));
152
+ }, target: this.download || !this.url ? null : this.external ? "_blank" : "_self", download: this.resolvedDownload, "aria-label": this.getAccessibleLabel(), id: this.identifier, ref: el => (this.nativeLink = el), part: "duet-link", rel: this.external ? "noopener" : undefined }, this.renderContent())));
125
153
  }
126
154
  static get is() { return "duet-link"; }
127
155
  static get encapsulation() { return "shadow"; }
@@ -143,7 +171,7 @@ export class DuetLink {
143
171
  "mutable": false,
144
172
  "complexType": {
145
173
  "original": "DuetLinkVariation",
146
- "resolved": "\"block\" | \"default\"",
174
+ "resolved": "\"block\" | \"button\" | \"default\"",
147
175
  "references": {
148
176
  "DuetLinkVariation": {
149
177
  "location": "import",
@@ -348,7 +376,7 @@ export class DuetLink {
348
376
  },
349
377
  "url": {
350
378
  "type": "string",
351
- "mutable": false,
379
+ "mutable": true,
352
380
  "complexType": {
353
381
  "original": "string",
354
382
  "resolved": "string",
@@ -436,7 +464,7 @@ export class DuetLink {
436
464
  "optional": false,
437
465
  "docs": {
438
466
  "tags": [],
439
- "text": "Icon to display on the left side of the ink text (only with \"block\" variation)"
467
+ "text": "Icon to display on the left side of the link text (only with \"block\" and \"button\" variations)"
440
468
  },
441
469
  "attribute": "icon",
442
470
  "reflect": false
@@ -459,12 +487,36 @@ export class DuetLink {
459
487
  "optional": false,
460
488
  "docs": {
461
489
  "tags": [],
462
- "text": "Color of the icon to display (only with \"block\" variation)"
490
+ "text": "Color of the icon to display (only with \"block\" and \"button\" variations)"
463
491
  },
464
492
  "attribute": "icon-color",
465
493
  "reflect": false,
466
494
  "defaultValue": "\"currentColor\""
467
495
  },
496
+ "iconBackground": {
497
+ "type": "string",
498
+ "mutable": false,
499
+ "complexType": {
500
+ "original": "DuetColor",
501
+ "resolved": "string",
502
+ "references": {
503
+ "DuetColor": {
504
+ "location": "import",
505
+ "path": "../../common-types",
506
+ "id": "src/common-types.d.ts::DuetColor"
507
+ }
508
+ }
509
+ },
510
+ "required": false,
511
+ "optional": false,
512
+ "docs": {
513
+ "tags": [],
514
+ "text": "Color of the icon to display (only with \"button\" variation)"
515
+ },
516
+ "attribute": "icon-background",
517
+ "reflect": false,
518
+ "defaultValue": "null"
519
+ },
468
520
  "iconResponsive": {
469
521
  "type": "boolean",
470
522
  "mutable": false,
@@ -511,7 +563,8 @@ export class DuetLink {
511
563
  }
512
564
  static get states() {
513
565
  return {
514
- "isSmallScreen": {}
566
+ "isSmallScreen": {},
567
+ "isMediumScreen": {}
515
568
  };
516
569
  }
517
570
  static get methods() {
@@ -210,7 +210,7 @@ export class DuetModal {
210
210
  "duet-modal-gutter-small": this.gutterSize === "small",
211
211
  "duet-modal-gutter-medium": this.gutterSize === "medium",
212
212
  "duet-modal-gutter-large": this.gutterSize === "large",
213
- } }, h("div", { class: "duet-modal-header" }, h("span", { class: "duet-modal-inner-slot-top" }, h("slot", { name: "top" })), this.icon && h("duet-icon", { name: this.icon, size: "xx-large", color: this.color || iconColor }), this.heading && (h("duet-heading", { "visual-level": (_a = this.headingVisualLevel) !== null && _a !== void 0 ? _a : this.headingLevel, level: this.headingLevel, theme: this.theme, id: this.modalId }, this.heading))), h("span", { class: "duet-modal-inner-slot-default", id: this.slotDefaultId }, h("slot", null))))), h(FocusGuard, { moveFocusTo: this.buttonEl })));
213
+ } }, h("div", { class: "duet-modal-header" }, h("span", { class: "duet-modal-inner-slot-top" }, h("slot", { name: "top" })), this.icon && h("duet-icon", { name: this.icon, size: "xx-large", color: this.color || iconColor }), this.heading && (h("duet-heading", { "visual-level": (_a = this.headingVisualLevel) !== null && _a !== void 0 ? _a : this.headingLevel, level: this.headingLevel, theme: this.theme, id: this.modalId }, this.heading))), h("div", { class: "duet-modal-inner-slot-default", id: this.slotDefaultId }, h("slot", null))))), h(FocusGuard, { moveFocusTo: this.buttonEl })));
214
214
  }
215
215
  static get is() { return "duet-modal"; }
216
216
  static get encapsulation() { return "shadow"; }
@@ -29,8 +29,12 @@ export class DuetPopupMenu {
29
29
  if (!this.openButton) {
30
30
  return;
31
31
  }
32
+ const middleware = [
33
+ offset({ mainAxis: this.mainAxisOffset, crossAxis: this.crossAxisOffset }),
34
+ flip({ mainAxis: !this.forcePlacement }),
35
+ ];
32
36
  const coordinates = await computePosition(this.openButton, this.menuElement, {
33
- middleware: [offset({ mainAxis: this.mainAxisOffset, crossAxis: this.crossAxisOffset }), flip()],
37
+ middleware,
34
38
  placement: this.placement,
35
39
  strategy: this.position,
36
40
  });
@@ -45,6 +49,7 @@ export class DuetPopupMenu {
45
49
  this.theme = "";
46
50
  this.controller = undefined;
47
51
  this.placement = "bottom-start";
52
+ this.forcePlacement = false;
48
53
  this.position = "absolute";
49
54
  this.mainAxisOffset = 0;
50
55
  this.crossAxisOffset = 0;
@@ -341,6 +346,24 @@ export class DuetPopupMenu {
341
346
  "reflect": false,
342
347
  "defaultValue": "\"bottom-start\""
343
348
  },
349
+ "forcePlacement": {
350
+ "type": "boolean",
351
+ "mutable": false,
352
+ "complexType": {
353
+ "original": "boolean",
354
+ "resolved": "boolean",
355
+ "references": {}
356
+ },
357
+ "required": false,
358
+ "optional": false,
359
+ "docs": {
360
+ "tags": [],
361
+ "text": "Force placement."
362
+ },
363
+ "attribute": "force-placement",
364
+ "reflect": false,
365
+ "defaultValue": "false"
366
+ },
344
367
  "position": {
345
368
  "type": "string",
346
369
  "mutable": true,
@@ -166,7 +166,7 @@ export class DuetRangeStepper {
166
166
  return (h("div", { class: {
167
167
  "duet-range-stepper": true,
168
168
  "duet-theme-turva": this.theme === "turva",
169
- }, onKeyDown: e => this.onKeyboardDown(e), "aria-controls": this.ariaControls }, h("span", { class: "duet-range-step-counter", part: "range-numbers" }, this.generateStepSize()), h("duet-action-button", { class: "duet-range-step-button duet-range-step-minus", onClick: e => this.handleClick(e, -1), id: this.leftBn, "accessible-label": `${this.ariaLabels.previous_increment} ${this.generatePreviousIncrementLabel()}`, ref: el => (this.leftBnRef = el), part: "navigation-arrow", iconName: "action-arrow-left-small" }), h("duet-action-button", { class: "duet-range-step-button duet-range-step-plus", onClick: e => this.handleClick(e, 1), "accessible-label": `${this.ariaLabels.next_increment} ${this.generateNextIncrementLabel()}`, id: this.rightBn, ref: el => (this.rightBnRef = el), part: "navigation-arrow", iconName: "action-arrow-right-small" })));
169
+ }, onKeyDown: e => this.onKeyboardDown(e), "aria-controls": this.ariaControls }, h("span", { class: "duet-range-step-counter", part: "range-numbers" }, this.generateStepSize()), h("duet-action-button", { class: "duet-range-step-button duet-range-step-minus", onClick: e => this.handleClick(e, -1), id: this.leftBn, "accessible-label": `${this.ariaLabels.previous_increment} ${this.generatePreviousIncrementLabel()}`, ref: el => (this.leftBnRef = el), part: "navigation-arrow", iconName: "action-arrow-left-small", title: "" }), h("duet-action-button", { class: "duet-range-step-button duet-range-step-plus", onClick: e => this.handleClick(e, 1), "accessible-label": `${this.ariaLabels.next_increment} ${this.generateNextIncrementLabel()}`, id: this.rightBn, ref: el => (this.rightBnRef = el), part: "navigation-arrow", iconName: "action-arrow-right-small", title: "" })));
170
170
  }
171
171
  static get is() { return "duet-range-stepper"; }
172
172
  static get encapsulation() { return "shadow"; }
@@ -43,7 +43,8 @@ export class DuetSubmenuBar {
43
43
  this.checkIfHasItems = () => {
44
44
  const hasDropdownLinks = !!this.element.querySelector("duet-submenu-bar-dropdown-link");
45
45
  const hasLinks = !!this.element.querySelector("duet-submenu-bar-link");
46
- return hasDropdownLinks || hasLinks;
46
+ const hasItems = !!this.element.querySelector("duet-submenu-bar-item");
47
+ return hasDropdownLinks || hasLinks || hasItems;
47
48
  };
48
49
  this.mobile = true;
49
50
  this.bodyScroll = true;
@@ -108,7 +109,7 @@ export class DuetSubmenuBar {
108
109
  render() {
109
110
  return (h(Host, null, h("nav", { class: { "duet-submenu-bar": true, "duet-theme-turva": this.theme === "turva" }, "aria-label": this.accessibleLabel }, this.hasItems && (h("button", { ref: element => (this.button = element), "aria-haspopup": "menu", "aria-controls": "menu", "aria-expanded": this.open ? "true" : "false", id: "button", type: "button", class: {
110
111
  active: this.open,
111
- }, onClick: this.onClick }, h("div", { class: "label" }, h("slot", { name: "label" }), h("duet-icon", { theme: this.theme, class: "caret", name: "action-arrow-down-small", margin: "none", size: "xxx-small", color: "currentColor" })))), h("div", { class: {
112
+ }, onClick: this.onClick }, h("span", { class: "label" }, h("slot", { name: "label" }), h("duet-icon", { theme: this.theme, class: "caret", name: "action-arrow-down-small", margin: "none", size: "xxx-small", color: "currentColor" })))), h("div", { class: {
112
113
  "menu-container": true,
113
114
  hidden: !this.open,
114
115
  }, role: "presentation" }, h("div", { role: this.mobile ? "menu" : null, id: "menu", "aria-labelledby": this.mobile ? "button" : null, "aria-expanded": this.mobile ? (this.open ? "true" : "false") : null, class: {
@@ -6,6 +6,7 @@ import { inheritGlobalTheme } from "../../common";
6
6
  import { createID } from "../../utils/create-id";
7
7
  import { debounce } from "../../utils/js-utils";
8
8
  import { getLocaleString, sanitizeString } from "../../utils/language-utils";
9
+ import { parsePossibleJSON } from "../../utils/string-utils";
9
10
  import errorCodes from "./errorcodes.json";
10
11
  import { getI18nError } from "./errorcodes.utils";
11
12
  import { UploadItemHeader } from "./upload-item-header";
@@ -108,22 +109,22 @@ export class DuetUpload {
108
109
  };
109
110
  this.mapFilesToUploadItems = (data, group, showCategory, filteredActions) => {
110
111
  if (group === this.DefaultGroups.success) {
111
- return (h("duet-upload-item", { theme: this.theme, actions: this.getActions(group, filteredActions), type: "success", data: data, showLinks: this.showLinks, linkClickEvent: this.emitEvent ? this.linkClick : undefined, categoryLabel: this.categoryLabel, label: this.uploadedItemsHeaderLabel, showCategory: showCategory, ref: item => {
112
+ return (h("duet-upload-item", { theme: this.theme, actions: this.getActions(group, filteredActions), type: "success", data: data, showLinks: this.showLinks, linkClickEvent: this.emitEvent ? this.linkClick : undefined, categoryLabel: this.categoryLabel, label: this.uploadedItemsHeaderLabel, showCategory: showCategory, buttonTitles: this.processedButtonTitles, ref: item => {
112
113
  this.itemRefs.set(data.uid, item);
113
114
  } }));
114
115
  }
115
116
  else if (group === this.DefaultGroups.inprogress) {
116
- return (h("duet-upload-item", { theme: this.theme, actions: this.getActions(group, filteredActions), type: "inprogress", data: data, showLinks: this.showLinks, categoryLabel: this.categoryLabel, label: this.uploadedItemsHeaderLabel, showCategory: showCategory, ref: item => {
117
+ return (h("duet-upload-item", { theme: this.theme, actions: this.getActions(group, filteredActions), type: "inprogress", data: data, showLinks: this.showLinks, categoryLabel: this.categoryLabel, label: this.uploadedItemsHeaderLabel, showCategory: showCategory, buttonTitles: this.processedButtonTitles, ref: item => {
117
118
  this.itemRefs.set(data.uid, item);
118
119
  } }));
119
120
  }
120
121
  else if (group === this.DefaultGroups.pending) {
121
- return (h("duet-upload-item", { theme: this.theme, actions: this.getActions(group, filteredActions), type: "pending", data: data, showLinks: this.showLinks, categoryLabel: this.categoryLabel, label: this.uploadedItemsHeaderLabel, showCategory: showCategory, ref: item => {
122
+ return (h("duet-upload-item", { theme: this.theme, actions: this.getActions(group, filteredActions), type: "pending", data: data, showLinks: this.showLinks, categoryLabel: this.categoryLabel, label: this.uploadedItemsHeaderLabel, showCategory: showCategory, buttonTitles: this.processedButtonTitles, ref: item => {
122
123
  this.itemRefs.set(data.uid, item);
123
124
  } }));
124
125
  }
125
126
  else if (group === this.DefaultGroups.failure) {
126
- return (h("duet-upload-item", { theme: this.theme, actions: this.getActions(group, filteredActions), type: "failure", data: data, showLinks: this.showLinks, errorCodes: this.errorCodes, categoryLabel: this.categoryLabel, label: this.uploadedItemsHeaderLabel, showCategory: showCategory, ref: item => {
127
+ return (h("duet-upload-item", { theme: this.theme, actions: this.getActions(group, filteredActions), type: "failure", data: data, showLinks: this.showLinks, errorCodes: this.errorCodes, categoryLabel: this.categoryLabel, label: this.uploadedItemsHeaderLabel, showCategory: showCategory, buttonTitles: this.processedButtonTitles, ref: item => {
127
128
  this.itemRefs.set(data.uid, item);
128
129
  } }));
129
130
  }
@@ -609,6 +610,11 @@ export class DuetUpload {
609
610
  this.headerHeadingLevel = "h3";
610
611
  this.hideHeader = false;
611
612
  this.emitEvent = false;
613
+ this.actionButtonTitles = {
614
+ cancel: false,
615
+ delete: false,
616
+ };
617
+ this.renameDuplicates = false;
612
618
  this.groups = [
613
619
  {
614
620
  id: this.DefaultGroups.success,
@@ -663,6 +669,7 @@ export class DuetUpload {
663
669
  this.listenForActionEvents();
664
670
  this.onReady();
665
671
  this.externalUploadButton = document.querySelector(`#${this.externalUploadButtonId}`);
672
+ this.processedButtonTitles = parsePossibleJSON(this.actionButtonTitles);
666
673
  }
667
674
  componentWillRender() {
668
675
  // listen to the events from the component
@@ -811,12 +818,50 @@ export class DuetUpload {
811
818
  // don't present server issues to user on deletes, just remove them from the visible list
812
819
  return makeXhrRequest(options);
813
820
  }
821
+ getRenamedFileName(newFileName, extension) {
822
+ const re = new RegExp(`${newFileName}_\\d+\\.${extension}`);
823
+ const lastFileName = Array.from(this.files.entries())
824
+ .map(entry => {
825
+ const [key, _] = entry;
826
+ return key;
827
+ })
828
+ .filter(existingFileName => {
829
+ return re.test(existingFileName) || existingFileName === `${newFileName}.${extension}`;
830
+ })
831
+ .sort()
832
+ .pop()
833
+ .split(".")
834
+ .slice(0, -1)
835
+ .join(".");
836
+ if (lastFileName === newFileName) {
837
+ return `${newFileName}_1.${extension}`;
838
+ }
839
+ const lastFileNumber = parseInt(lastFileName.split("_").pop());
840
+ return `${newFileName}_${lastFileNumber + 1}.${extension}`;
841
+ }
842
+ renameFiles(files) {
843
+ return files.map(file => {
844
+ if (this.files.get(file.name)) {
845
+ const splitName = file.name.split(".");
846
+ const extension = splitName.pop();
847
+ const nameWithoutExtension = splitName.join(".");
848
+ const newName = this.getRenamedFileName(nameWithoutExtension, extension);
849
+ return new File([file], newName, {
850
+ type: file.type,
851
+ lastModified: file.lastModified,
852
+ });
853
+ }
854
+ else {
855
+ return file;
856
+ }
857
+ });
858
+ }
814
859
  /**
815
860
  * Component event handling.
816
861
  */
817
862
  async onChange(ev) {
818
863
  var _a;
819
- const selectedFiles = Array.from((_a = this.nativeInput) === null || _a === void 0 ? void 0 : _a.files);
864
+ let selectedFiles = Array.from((_a = this.nativeInput) === null || _a === void 0 ? void 0 : _a.files);
820
865
  // FileList is a nice array like structure but
821
866
  // to ensure uniqueness of files we use a mapping structure and
822
867
  // key to the name (makes it easier to delete as well)
@@ -833,6 +878,9 @@ export class DuetUpload {
833
878
  return;
834
879
  }
835
880
  if (selectedFiles) {
881
+ if (this.renameDuplicates) {
882
+ selectedFiles = this.renameFiles(selectedFiles);
883
+ }
836
884
  for (const item of selectedFiles) {
837
885
  const { valid, errorMessage, errorType, errorSystem } = validateFile(item, {
838
886
  maxBytes: this.maxBytes,
@@ -1914,6 +1962,48 @@ export class DuetUpload {
1914
1962
  "reflect": false,
1915
1963
  "defaultValue": "false"
1916
1964
  },
1965
+ "actionButtonTitles": {
1966
+ "type": "string",
1967
+ "mutable": false,
1968
+ "complexType": {
1969
+ "original": "string | UploadActionButtonTitles",
1970
+ "resolved": "string | { [actionName: string]: boolean | DuetLangObject; }",
1971
+ "references": {
1972
+ "UploadActionButtonTitles": {
1973
+ "location": "import",
1974
+ "path": "../duet-upload-item/duet-upload-item",
1975
+ "id": "src/components/duet-upload-item/duet-upload-item.tsx::UploadActionButtonTitles"
1976
+ }
1977
+ }
1978
+ },
1979
+ "required": false,
1980
+ "optional": false,
1981
+ "docs": {
1982
+ "tags": [],
1983
+ "text": "Map action name to DuetLangObject or boolean. Sets upload item action buttons titles\n(show as DOM tooltip when hovering)."
1984
+ },
1985
+ "attribute": "action-button-titles",
1986
+ "reflect": false,
1987
+ "defaultValue": "{\n cancel: false,\n delete: false,\n }"
1988
+ },
1989
+ "renameDuplicates": {
1990
+ "type": "boolean",
1991
+ "mutable": false,
1992
+ "complexType": {
1993
+ "original": "boolean",
1994
+ "resolved": "boolean",
1995
+ "references": {}
1996
+ },
1997
+ "required": false,
1998
+ "optional": false,
1999
+ "docs": {
2000
+ "tags": [],
2001
+ "text": "Use rename-duplicates to auto rename files with the same name instead of replacing them."
2002
+ },
2003
+ "attribute": "rename-duplicates",
2004
+ "reflect": false,
2005
+ "defaultValue": "false"
2006
+ },
1917
2007
  "groups": {
1918
2008
  "type": "unknown",
1919
2009
  "mutable": false,
@@ -28,6 +28,7 @@ export class DuetUploadItem {
28
28
  this.type = undefined;
29
29
  this.showLinks = undefined;
30
30
  this.actions = undefined;
31
+ this.buttonTitles = undefined;
31
32
  this.label = undefined;
32
33
  this.categoryLabel = undefined;
33
34
  this.errorCodes = undefined;
@@ -65,6 +66,12 @@ export class DuetUploadItem {
65
66
  return uploaded && url && this.showLinks ? (h("duet-paragraph", { color: "secondary", margin: "none", weight: "semi-bold" }, h("duet-link", { class: "file-link", onClick: this.onLinkClick, url: url }, ContentName), h("duet-spacer", { size: "xx-small", direction: "horizontal" }), SizeText)) : (h("duet-paragraph", { color: "secondary", margin: "none", weight: "semi-bold" }, ContentName, h("duet-spacer", { size: "xx-small", direction: "horizontal" }), SizeText));
66
67
  }
67
68
  }
69
+ getActionButtonTitle(actionItem) {
70
+ if (this.buttonTitles[actionItem.name] === true || this.buttonTitles[actionItem.name] === false) {
71
+ return actionItem;
72
+ }
73
+ return getLocaleString(this.buttonTitles[actionItem.name]);
74
+ }
68
75
  render() {
69
76
  const { uid, meta, item } = this.data;
70
77
  const Badges = meta && meta.badges ? (h("span", null, meta.badges.map(badgeText => (h("duet-badge", { color: "primary" }, badgeText))))) : undefined;
@@ -72,7 +79,7 @@ export class DuetUploadItem {
72
79
  return (h("div", { class: {
73
80
  "upload-item-row": true,
74
81
  } }, this.showCategory && (h("div", { class: "item-categories" }, h("duet-heading", { class: "heading", color: "color-secondary", level: "h6", weight: "semibold" }, getLocaleString(this.categoryLabel)), Badges)), h("div", { class: { "item-name": true, "no-category": !this.showCategory } }, !!this.label && (h("duet-heading", { class: "heading", color: "color-secondary", level: "h6", weight: "semibold" }, getLocaleString(this.label))), this.getFileNameLine()), h("div", { class: "item-actions" }, this.actions.map(actionItem => {
75
- return (h("duet-action-button", { actionMeta: Object.assign({}, meta || {}), actionId: uid || null, actionName: actionItem.name, theme: this.theme, iconName: actionItem.icon, iconColor: actionItem.color, iconSize: actionItem.size, background: actionItem.background, "accessible-label": `${actionDescription} ${getLocaleString(actionItem.label)} `, accessibleTitle: false, ref: button => (this.actionButton = button) }));
82
+ return (h("duet-action-button", { actionMeta: Object.assign({}, meta || {}), actionId: uid || null, actionName: actionItem.name, theme: this.theme, iconName: actionItem.icon, iconColor: actionItem.color, iconSize: actionItem.size, background: actionItem.background, "accessible-label": `${actionDescription} ${getLocaleString(actionItem.label)} `, accessibleTitle: this.getActionButtonTitle(actionItem), ref: button => (this.actionButton = button) }));
76
83
  }))));
77
84
  }
78
85
  static get is() { return "duet-upload-item"; }
@@ -190,6 +197,27 @@ export class DuetUploadItem {
190
197
  "attribute": "actions",
191
198
  "reflect": false
192
199
  },
200
+ "buttonTitles": {
201
+ "type": "unknown",
202
+ "mutable": false,
203
+ "complexType": {
204
+ "original": "UploadActionButtonTitles",
205
+ "resolved": "{ [actionName: string]: boolean | DuetLangObject; }",
206
+ "references": {
207
+ "UploadActionButtonTitles": {
208
+ "location": "local",
209
+ "path": "/Users/mgibas/workspace/duet/packages/components/src/components/duet-upload-item/duet-upload-item.tsx",
210
+ "id": "src/components/duet-upload-item/duet-upload-item.tsx::UploadActionButtonTitles"
211
+ }
212
+ }
213
+ },
214
+ "required": false,
215
+ "optional": false,
216
+ "docs": {
217
+ "tags": [],
218
+ "text": "buttonTitles."
219
+ }
220
+ },
193
221
  "label": {
194
222
  "type": "unknown",
195
223
  "mutable": false,
@@ -280,7 +308,7 @@ export class DuetUploadItem {
280
308
  "EventEmitter": {
281
309
  "location": "import",
282
310
  "path": "@stencil/core",
283
- "id": ""
311
+ "id": "../../node_modules/@stencil/core/internal/stencil-core/index.d.ts::EventEmitter"
284
312
  },
285
313
  "DuetUploadEvent": {
286
314
  "location": "import",
@@ -51,3 +51,9 @@ export const convertHtmlQuotes = string => {
51
51
  }
52
52
  return string;
53
53
  };
54
+ /**
55
+ * Converts the first letter of the string to upper case. Note that with non-latin scrips this may not produce expected results
56
+ */
57
+ export const upperCaseFirst = (string) => {
58
+ return string && `${string[0].toUpperCase()}${string.slice(1)}`;
59
+ };
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Built with Duet Design System
3
3
  */
4
- import { D as DuetActionButton$1, d as defineCustomElement$1 } from './p-61c2577e.js';
4
+ import { D as DuetActionButton$1, d as defineCustomElement$1 } from './p-95edd984.js';
5
5
 
6
6
  const DuetActionButton = DuetActionButton$1;
7
7
  const defineCustomElement = defineCustomElement$1;
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Built with Duet Design System
3
3
  */
4
- import { D as DuetAlert$1, d as defineCustomElement$1 } from './p-45f0a5c5.js';
4
+ import { D as DuetAlert$1, d as defineCustomElement$1 } from './p-70db33ff.js';
5
5
 
6
6
  const DuetAlert = DuetAlert$1;
7
7
  const defineCustomElement = defineCustomElement$1;
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Built with Duet Design System
3
3
  */
4
- import { D as DuetBadge$1, d as defineCustomElement$1 } from './p-47e5367a.js';
4
+ import { D as DuetBadge$1, d as defineCustomElement$1 } from './p-c9e9fcdd.js';
5
5
 
6
6
  const DuetBadge = DuetBadge$1;
7
7
  const defineCustomElement = defineCustomElement$1;