@duetds/components 6.9.0 → 6.9.2

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 (564) hide show
  1. package/hydrate/index.js +332 -111
  2. package/lib/cjs/duet-action-button.cjs.entry.js +17 -2
  3. package/lib/cjs/duet-alert.cjs.entry.js +1 -1
  4. package/lib/cjs/duet-badge.cjs.entry.js +1 -1
  5. package/lib/cjs/duet-breadcrumb.cjs.entry.js +1 -1
  6. package/lib/cjs/duet-breadcrumbs.cjs.entry.js +1 -1
  7. package/lib/cjs/duet-button_2.cjs.entry.js +1 -1
  8. package/lib/cjs/duet-caption_4.cjs.entry.js +3 -3
  9. package/lib/cjs/duet-card.cjs.entry.js +9 -13
  10. package/lib/cjs/duet-checkbox.cjs.entry.js +1 -1
  11. package/lib/cjs/duet-checkmark.cjs.entry.js +1 -1
  12. package/lib/cjs/duet-choice_2.cjs.entry.js +2 -2
  13. package/lib/cjs/duet-collapsible.cjs.entry.js +1 -1
  14. package/lib/cjs/duet-combobox.cjs.entry.js +12 -2
  15. package/lib/cjs/duet-contact-card.cjs.entry.js +1 -1
  16. package/lib/cjs/duet-cookie-consent.cjs.entry.js +1 -1
  17. package/lib/cjs/duet-date-picker.cjs.entry.js +2 -2
  18. package/lib/cjs/duet-divider_2.cjs.entry.js +1 -1
  19. package/lib/cjs/duet-editable-table_3.cjs.entry.js +27 -12
  20. package/lib/cjs/duet-empty-state.cjs.entry.js +1 -1
  21. package/lib/cjs/duet-fieldset.cjs.entry.js +6 -2
  22. package/lib/cjs/duet-footer.cjs.entry.js +1 -1
  23. package/lib/cjs/duet-grid_2.cjs.entry.js +4 -2
  24. package/lib/cjs/duet-header_2.cjs.entry.js +15 -1
  25. package/lib/cjs/duet-hero.cjs.entry.js +15 -3
  26. package/lib/cjs/duet-icon.cjs.entry.js +1 -1
  27. package/lib/cjs/duet-input_2.cjs.entry.js +9 -14
  28. package/lib/cjs/duet-layout.cjs.entry.js +1 -1
  29. package/lib/cjs/duet-list_2.cjs.entry.js +1 -1
  30. package/lib/cjs/duet-menu-bar-button.cjs.entry.js +1 -1
  31. package/lib/cjs/duet-menu-bar-dropdown-link.cjs.entry.js +3 -2
  32. package/lib/cjs/duet-menu-bar-dropdown.cjs.entry.js +1 -1
  33. package/lib/cjs/duet-menu-bar-link.cjs.entry.js +3 -2
  34. package/lib/cjs/duet-menu-bar.cjs.entry.js +1 -1
  35. package/lib/cjs/duet-modal.cjs.entry.js +2 -2
  36. package/lib/cjs/duet-multiselect.cjs.entry.js +23 -3
  37. package/lib/cjs/duet-nav.cjs.entry.js +1 -1
  38. package/lib/cjs/duet-notification_2.cjs.entry.js +15 -1
  39. package/lib/cjs/duet-number-input.cjs.entry.js +47 -27
  40. package/lib/cjs/duet-page-heading.cjs.entry.js +1 -1
  41. package/lib/cjs/duet-pagination_2.cjs.entry.js +16 -3
  42. package/lib/cjs/duet-progress.cjs.entry.js +1 -1
  43. package/lib/cjs/duet-radio_2.cjs.entry.js +1 -1
  44. package/lib/cjs/duet-range-slider.cjs.entry.js +1 -1
  45. package/lib/cjs/duet-scrollable_3.cjs.entry.js +19 -3
  46. package/lib/cjs/duet-section-layout.cjs.entry.js +1 -1
  47. package/lib/cjs/duet-select.cjs.entry.js +17 -4
  48. package/lib/cjs/duet-slideout-lang.cjs.entry.js +1 -1
  49. package/lib/cjs/duet-slideout-link.cjs.entry.js +1 -1
  50. package/lib/cjs/duet-slideout-panel-dropdown.cjs.entry.js +1 -1
  51. package/lib/cjs/duet-slideout-panel.cjs.entry.js +2 -2
  52. package/lib/cjs/duet-slideout.cjs.entry.js +3 -3
  53. package/lib/cjs/duet-step_2.cjs.entry.js +1 -1
  54. package/lib/cjs/duet-submenu-bar-dropdown-link.cjs.entry.js +1 -1
  55. package/lib/cjs/duet-submenu-bar-dropdown.cjs.entry.js +22 -7
  56. package/lib/cjs/duet-submenu-bar-link.cjs.entry.js +1 -1
  57. package/lib/cjs/duet-submenu-bar.cjs.entry.js +2 -2
  58. package/lib/cjs/duet-textarea.cjs.entry.js +15 -4
  59. package/lib/cjs/duet-toggle.cjs.entry.js +1 -1
  60. package/lib/cjs/duet-toolbar-dropdown-link.cjs.entry.js +1 -1
  61. package/lib/cjs/duet-toolbar-dropdown.cjs.entry.js +1 -1
  62. package/lib/cjs/duet-toolbar-link.cjs.entry.js +3 -2
  63. package/lib/cjs/duet-toolbar.cjs.entry.js +1 -1
  64. package/lib/cjs/duet-tooltip.cjs.entry.js +22 -1
  65. package/lib/cjs/duet-tray.cjs.entry.js +1 -1
  66. package/lib/cjs/duet-upload-aria-status.cjs.entry.js +1 -1
  67. package/lib/cjs/duet-visually-hidden.cjs.entry.js +1 -1
  68. package/lib/cjs/duet.cjs.js +2 -2
  69. package/lib/cjs/{focus-utils-5c2e36e8.js → focus-utils-76896ff7.js} +1 -1
  70. package/lib/cjs/{index-92f0a873.js → index-0000eab8.js} +1 -1
  71. package/lib/cjs/loader.cjs.js +2 -2
  72. package/lib/collection/components/duet-action-button/duet-action-button.js +25 -6
  73. package/lib/collection/components/duet-card/duet-card.css +13 -10
  74. package/lib/collection/components/duet-card/duet-card.js +7 -11
  75. package/lib/collection/components/duet-combobox/duet-combobox.js +16 -3
  76. package/lib/collection/components/duet-editable-table/duet-editable-table.js +15 -3
  77. package/lib/collection/components/duet-fieldset/duet-fieldset.js +5 -1
  78. package/lib/collection/components/duet-grid/duet-grid.css +18 -0
  79. package/lib/collection/components/duet-grid/duet-grid.js +20 -0
  80. package/lib/collection/components/duet-header/duet-header.js +20 -4
  81. package/lib/collection/components/duet-heading/duet-heading.js +4 -1
  82. package/lib/collection/components/duet-hero/duet-hero.css +23 -3
  83. package/lib/collection/components/duet-hero/duet-hero.js +17 -3
  84. package/lib/collection/components/duet-input/duet-input.js +8 -13
  85. package/lib/collection/components/duet-link/duet-link.css +3 -0
  86. package/lib/collection/components/duet-menu-bar-dropdown-link/duet-menu-bar-dropdown-link.js +19 -1
  87. package/lib/collection/components/duet-menu-bar-link/duet-menu-bar-link.js +19 -1
  88. package/lib/collection/components/duet-multiselect/duet-multiselect.js +42 -4
  89. package/lib/collection/components/duet-notification/duet-notification.js +22 -5
  90. package/lib/collection/components/duet-number-input/duet-number-input.js +46 -26
  91. package/lib/collection/components/duet-pagination/duet-pagination.js +21 -5
  92. package/lib/collection/components/duet-select/duet-select.css +0 -4
  93. package/lib/collection/components/duet-select/duet-select.js +15 -2
  94. package/lib/collection/components/duet-slideout/duet-slideout.css +2 -0
  95. package/lib/collection/components/duet-submenu-bar/duet-submenu-bar.css +5 -21
  96. package/lib/collection/components/duet-submenu-bar-dropdown/duet-submenu-bar-dropdown.css +1 -0
  97. package/lib/collection/components/duet-submenu-bar-dropdown/duet-submenu-bar-dropdown.js +21 -5
  98. package/lib/collection/components/duet-tab-group/duet-tab-group.js +55 -2
  99. package/lib/collection/components/duet-table/duet-table.js +17 -1
  100. package/lib/collection/components/duet-textarea/duet-textarea.js +14 -3
  101. package/lib/collection/components/duet-toolbar-link/duet-toolbar-link.js +19 -1
  102. package/lib/collection/components/duet-tooltip/duet-tooltip.js +33 -4
  103. package/lib/collection/components/duet-upload/duet-upload.css +23 -10
  104. package/lib/collection/components/duet-upload/duet-upload.js +1 -1
  105. package/lib/collection/components/duet-upload/upload-item-header.js +1 -1
  106. package/lib/collection/components/duet-upload/upload-item.js +3 -3
  107. package/lib/dist-custom-elements/duet-action-button.js +1 -1
  108. package/lib/dist-custom-elements/duet-alert.js +1 -1
  109. package/lib/dist-custom-elements/duet-badge.js +1 -1
  110. package/lib/dist-custom-elements/duet-breadcrumb.js +2 -2
  111. package/lib/dist-custom-elements/duet-breadcrumbs.js +3 -3
  112. package/lib/dist-custom-elements/duet-button.js +1 -1
  113. package/lib/dist-custom-elements/duet-caption.js +1 -1
  114. package/lib/dist-custom-elements/duet-card.js +11 -15
  115. package/lib/dist-custom-elements/duet-checkbox.js +1 -1
  116. package/lib/dist-custom-elements/duet-checkmark.js +1 -1
  117. package/lib/dist-custom-elements/duet-choice-group.js +6 -6
  118. package/lib/dist-custom-elements/duet-choice.js +6 -6
  119. package/lib/dist-custom-elements/duet-collapsible.js +2 -2
  120. package/lib/dist-custom-elements/duet-combobox.js +16 -5
  121. package/lib/dist-custom-elements/duet-contact-card.js +9 -9
  122. package/lib/dist-custom-elements/duet-cookie-consent.js +6 -6
  123. package/lib/dist-custom-elements/duet-date-picker.js +11 -11
  124. package/lib/dist-custom-elements/duet-divider.js +1 -1
  125. package/lib/dist-custom-elements/duet-editable-table.js +19 -11
  126. package/lib/dist-custom-elements/duet-empty-state.js +1 -1
  127. package/lib/dist-custom-elements/duet-fieldset.js +1 -1
  128. package/lib/dist-custom-elements/duet-footer.js +5 -5
  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 +26 -12
  132. package/lib/dist-custom-elements/duet-heading.js +1 -1
  133. package/lib/dist-custom-elements/duet-hero.js +25 -13
  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 +2 -2
  143. package/lib/dist-custom-elements/duet-menu-bar-dropdown-link.js +6 -4
  144. package/lib/dist-custom-elements/duet-menu-bar-dropdown.js +2 -2
  145. package/lib/dist-custom-elements/duet-menu-bar-link.js +5 -3
  146. package/lib/dist-custom-elements/duet-menu-bar.js +2 -2
  147. package/lib/dist-custom-elements/duet-modal.js +8 -8
  148. package/lib/dist-custom-elements/duet-multiselect.js +33 -11
  149. package/lib/dist-custom-elements/duet-nav.js +1 -1
  150. package/lib/dist-custom-elements/duet-notification-drawer.js +5 -5
  151. package/lib/dist-custom-elements/duet-notification.js +19 -5
  152. package/lib/dist-custom-elements/duet-number-input.js +56 -36
  153. package/lib/dist-custom-elements/duet-page-heading.js +2 -2
  154. package/lib/dist-custom-elements/duet-pagination.js +26 -12
  155. package/lib/dist-custom-elements/duet-paragraph.js +1 -1
  156. package/lib/dist-custom-elements/duet-progress.js +1 -1
  157. package/lib/dist-custom-elements/duet-radio-group.js +6 -6
  158. package/lib/dist-custom-elements/duet-radio.js +1 -1
  159. package/lib/dist-custom-elements/duet-range-slider.js +2 -2
  160. package/lib/dist-custom-elements/duet-range-stepper.js +5 -5
  161. package/lib/dist-custom-elements/duet-scrollable.js +1 -1
  162. package/lib/dist-custom-elements/duet-section-layout.js +1 -1
  163. package/lib/dist-custom-elements/duet-select.js +1 -1
  164. package/lib/dist-custom-elements/duet-slideout-lang.js +3 -3
  165. package/lib/dist-custom-elements/duet-slideout-link.js +2 -2
  166. package/lib/dist-custom-elements/duet-slideout-panel-dropdown.js +2 -2
  167. package/lib/dist-custom-elements/duet-slideout-panel.js +3 -3
  168. package/lib/dist-custom-elements/duet-slideout.js +4 -4
  169. package/lib/dist-custom-elements/duet-spacer.js +1 -1
  170. package/lib/dist-custom-elements/duet-spinner.js +1 -1
  171. package/lib/dist-custom-elements/duet-step.js +4 -4
  172. package/lib/dist-custom-elements/duet-stepper.js +2 -2
  173. package/lib/dist-custom-elements/duet-submenu-bar-dropdown-link.js +2 -2
  174. package/lib/dist-custom-elements/duet-submenu-bar-dropdown.js +24 -8
  175. package/lib/dist-custom-elements/duet-submenu-bar-link.js +2 -2
  176. package/lib/dist-custom-elements/duet-submenu-bar.js +3 -3
  177. package/lib/dist-custom-elements/duet-tab-group.js +29 -12
  178. package/lib/dist-custom-elements/duet-tab.js +2 -2
  179. package/lib/dist-custom-elements/duet-table.js +1 -1
  180. package/lib/dist-custom-elements/duet-textarea.js +22 -11
  181. package/lib/dist-custom-elements/duet-toggle.js +2 -2
  182. package/lib/dist-custom-elements/duet-toolbar-dropdown-link.js +2 -2
  183. package/lib/dist-custom-elements/duet-toolbar-dropdown.js +2 -2
  184. package/lib/dist-custom-elements/duet-toolbar-link.js +6 -4
  185. package/lib/dist-custom-elements/duet-toolbar.js +1 -1
  186. package/lib/dist-custom-elements/duet-tooltip.js +1 -1
  187. package/lib/dist-custom-elements/duet-tray.js +4 -4
  188. package/lib/dist-custom-elements/duet-upload-aria-status.js +1 -1
  189. package/lib/dist-custom-elements/duet-upload.js +24 -27
  190. package/lib/dist-custom-elements/duet-visually-hidden.js +1 -1
  191. package/lib/dist-custom-elements/index.js +1 -1
  192. package/lib/dist-custom-elements/{p-6c05e879.js → p-076452be.js} +1 -1
  193. package/lib/dist-custom-elements/{p-26d32594.js → p-0dee6e51.js} +28 -7
  194. package/lib/dist-custom-elements/{p-17d43428.js → p-148a04af.js} +5 -5
  195. package/lib/dist-custom-elements/{p-7a4bdb83.js → p-14d7b7b1.js} +1 -1
  196. package/lib/dist-custom-elements/{p-c820f65e.js → p-16da1a85.js} +2 -2
  197. package/lib/dist-custom-elements/{p-e1de0408.js → p-1b34ed71.js} +1 -1
  198. package/lib/dist-custom-elements/{p-41ef88f4.js → p-29b0c53d.js} +22 -6
  199. package/lib/dist-custom-elements/{p-9eba8647.js → p-2a7fe62b.js} +7 -3
  200. package/lib/dist-custom-elements/{p-d6bcc527.js → p-3ee0a1f0.js} +1 -1
  201. package/lib/dist-custom-elements/{p-a1ee31fb.js → p-427c3c85.js} +1 -1
  202. package/lib/dist-custom-elements/{p-353d6d0c.js → p-4672c5f9.js} +1 -1
  203. package/lib/dist-custom-elements/{p-c01c91d6.js → p-61d6063e.js} +2 -2
  204. package/lib/dist-custom-elements/p-685671d3.js +248 -0
  205. package/lib/dist-custom-elements/{p-49848110.js → p-6b75d471.js} +1 -1
  206. package/lib/dist-custom-elements/{p-4b4a086d.js → p-74eab201.js} +17 -22
  207. package/lib/dist-custom-elements/{p-29b2c3bb.js → p-773afd9d.js} +1 -1
  208. package/lib/dist-custom-elements/{p-d0dea200.js → p-80c873a7.js} +1 -1
  209. package/lib/dist-custom-elements/p-81ad703b.js +183 -0
  210. package/lib/dist-custom-elements/{p-dde8e436.js → p-8810d94c.js} +5 -5
  211. package/lib/dist-custom-elements/{p-47ba781e.js → p-a2640cf0.js} +15 -2
  212. package/lib/dist-custom-elements/{p-9d23386f.js → p-a98f3c53.js} +1 -1
  213. package/lib/dist-custom-elements/{p-85fd8f09.js → p-aa856cf3.js} +1 -1
  214. package/lib/dist-custom-elements/{p-c4a3d30d.js → p-b1c2d128.js} +1 -1
  215. package/lib/dist-custom-elements/{p-890a9b12.js → p-b8590b9e.js} +2 -2
  216. package/lib/dist-custom-elements/{p-1bf112be.js → p-b8bdb756.js} +1 -1
  217. package/lib/dist-custom-elements/{p-7199196e.js → p-b9713025.js} +3 -3
  218. package/lib/dist-custom-elements/{p-a56cc313.js → p-c06566bd.js} +2 -2
  219. package/lib/dist-custom-elements/{p-276e05ab.js → p-cf8e064c.js} +6 -6
  220. package/lib/dist-custom-elements/{p-0d1b84db.js → p-d0a476fa.js} +1 -1
  221. package/lib/dist-custom-elements/{p-945a2c0c.js → p-d6ebe136.js} +2 -2
  222. package/lib/dist-custom-elements/{p-19ad4945.js → p-d9374d44.js} +1 -1
  223. package/lib/dist-custom-elements/{p-d6a4de03.js → p-fb9ea1e2.js} +1 -1
  224. package/lib/duet/duet.esm.js +1 -1
  225. package/lib/duet/duet.js +1 -1
  226. package/lib/duet/p-00492553.entry.js +4 -0
  227. package/lib/duet/p-00a6021a.entry.js +4 -0
  228. package/lib/duet/{p-c832c83e.system.entry.js → p-04b466d9.system.entry.js} +1 -1
  229. package/lib/duet/{p-4ab70001.system.entry.js → p-0956191f.system.entry.js} +1 -1
  230. package/lib/duet/{p-a5b5f3e2.system.entry.js → p-0b99b63a.system.entry.js} +1 -1
  231. package/lib/duet/p-0c7ba24e.entry.js +4 -0
  232. package/lib/duet/p-0fd03676.entry.js +4 -0
  233. package/lib/duet/{p-d7c0027e.entry.js → p-0febc106.entry.js} +1 -1
  234. package/lib/duet/{p-7d4e2e96.system.entry.js → p-10c8dcce.system.entry.js} +1 -1
  235. package/lib/duet/p-18417d31.system.entry.js +4 -0
  236. package/lib/duet/{p-26ebc753.system.entry.js → p-1a494e83.system.entry.js} +1 -1
  237. package/lib/duet/{p-93f3e158.system.entry.js → p-1af260c2.system.entry.js} +1 -1
  238. package/lib/duet/{p-4136d211.entry.js → p-1b53a027.entry.js} +1 -1
  239. package/lib/duet/p-1d4d1191.entry.js +4 -0
  240. package/lib/duet/p-1d6d12db.entry.js +4 -0
  241. package/lib/duet/{p-8f0579d1.entry.js → p-1f782abb.entry.js} +1 -1
  242. package/lib/duet/{p-29193196.entry.js → p-255e7c67.entry.js} +1 -1
  243. package/lib/duet/p-25608db1.entry.js +4 -0
  244. package/lib/duet/{p-190507d4.system.entry.js → p-2578566b.system.entry.js} +1 -1
  245. package/lib/duet/{p-5743852f.system.js → p-2852d734.system.js} +1 -1
  246. package/lib/duet/{p-ce108a20.entry.js → p-2ee96e3b.entry.js} +1 -1
  247. package/lib/duet/{p-84eb3d96.system.entry.js → p-30574b01.system.entry.js} +1 -1
  248. package/lib/duet/{p-d8de0d06.entry.js → p-3337b7b5.entry.js} +1 -1
  249. package/lib/duet/{p-48bab8b6.entry.js → p-335ce078.entry.js} +1 -1
  250. package/lib/duet/p-39311463.system.entry.js +4 -0
  251. package/lib/duet/{p-c7507f6b.system.entry.js → p-3eb4385b.system.entry.js} +2 -2
  252. package/lib/duet/{p-f7ff8b67.entry.js → p-3f823f65.entry.js} +1 -1
  253. package/lib/duet/p-40c8612e.entry.js +4 -0
  254. package/lib/duet/{p-7dc36831.system.js → p-473e553e.system.js} +1 -1
  255. package/lib/duet/{p-2b4f4c85.system.entry.js → p-4cf4097a.system.entry.js} +1 -1
  256. package/lib/duet/{p-7a53ff56.entry.js → p-4f054589.entry.js} +1 -1
  257. package/lib/duet/{p-7c32523b.system.entry.js → p-51b95a0b.system.entry.js} +1 -1
  258. package/lib/duet/{p-ef31120e.system.entry.js → p-5368ccf3.system.entry.js} +1 -1
  259. package/lib/duet/{p-d503fd3d.entry.js → p-57a480c6.entry.js} +1 -1
  260. package/lib/duet/{p-17d1d5ee.entry.js → p-5925af50.entry.js} +1 -1
  261. package/lib/duet/p-59dbe033.system.entry.js +4 -0
  262. package/lib/duet/{p-65b119a7.system.entry.js → p-5a0a47c5.system.entry.js} +1 -1
  263. package/lib/duet/{p-5047ae3d.entry.js → p-5dc301ad.entry.js} +1 -1
  264. package/lib/duet/{p-4b02643a.system.entry.js → p-612c5794.system.entry.js} +1 -1
  265. package/lib/duet/{p-ad82c633.system.entry.js → p-619129a1.system.entry.js} +1 -1
  266. package/lib/duet/{p-d563682c.entry.js → p-6288a8f7.entry.js} +1 -1
  267. package/lib/duet/{p-8b123c27.system.entry.js → p-62e5eda4.system.entry.js} +1 -1
  268. package/lib/duet/p-62ee8769.system.entry.js +4 -0
  269. package/lib/duet/{p-1bfff197.system.entry.js → p-64a97121.system.entry.js} +1 -1
  270. package/lib/duet/{p-cc7f7692.entry.js → p-65c666a0.entry.js} +1 -1
  271. package/lib/duet/p-66d17a50.entry.js +4 -0
  272. package/lib/duet/{p-049f7427.entry.js → p-68436d9b.entry.js} +1 -1
  273. package/lib/duet/{p-fc8b03f3.system.entry.js → p-6a23db40.system.entry.js} +1 -1
  274. package/lib/duet/{p-f173da98.entry.js → p-6b3d47fc.entry.js} +1 -1
  275. package/lib/duet/{p-568c7b6d.entry.js → p-6bec8453.entry.js} +1 -1
  276. package/lib/duet/{p-e9cea31c.entry.js → p-6cccad3a.entry.js} +1 -1
  277. package/lib/duet/{p-643dd974.entry.js → p-6dd7d693.entry.js} +1 -1
  278. package/lib/duet/{p-07e54b8a.entry.js → p-71012a41.entry.js} +1 -1
  279. package/lib/duet/{p-bc89db28.entry.js → p-711128a1.entry.js} +1 -1
  280. package/lib/duet/{p-c3495075.system.entry.js → p-71da4ed1.system.entry.js} +1 -1
  281. package/lib/duet/{p-1de4b105.system.entry.js → p-74d84deb.system.entry.js} +1 -1
  282. package/lib/duet/{p-80bc3db3.entry.js → p-754a1a94.entry.js} +1 -1
  283. package/lib/duet/{p-702a9390.entry.js → p-779234b0.entry.js} +1 -1
  284. package/lib/duet/p-78ce7a07.entry.js +4 -0
  285. package/lib/duet/{p-2b94fb6c.entry.js → p-79f6c24a.entry.js} +1 -1
  286. package/lib/duet/p-7e739548.system.entry.js +4 -0
  287. package/lib/duet/{p-7fd9b8b6.system.entry.js → p-7e96a306.system.entry.js} +1 -1
  288. package/lib/duet/{p-de06c5ff.entry.js → p-7f9cc019.entry.js} +1 -1
  289. package/lib/duet/{p-c91aaa04.system.entry.js → p-81236c93.system.entry.js} +1 -1
  290. package/lib/duet/{p-38680e94.system.entry.js → p-815cbab7.system.entry.js} +1 -1
  291. package/lib/duet/p-82398d82.entry.js +4 -0
  292. package/lib/duet/{p-5576e447.system.entry.js → p-840cdccb.system.entry.js} +1 -1
  293. package/lib/duet/{p-aac361b8.entry.js → p-86fede3f.entry.js} +1 -1
  294. package/lib/duet/{p-c073eb55.system.entry.js → p-8d1ccbc2.system.entry.js} +1 -1
  295. package/lib/duet/{p-addd277e.system.entry.js → p-8d482808.system.entry.js} +1 -1
  296. package/lib/duet/p-8ef91f59.entry.js +4 -0
  297. package/lib/duet/{p-b1b1160e.system.entry.js → p-8efc476e.system.entry.js} +1 -1
  298. package/lib/duet/{p-be3c04fb.entry.js → p-8f2834ae.entry.js} +1 -1
  299. package/lib/duet/p-8f3d5e14.system.entry.js +4 -0
  300. package/lib/duet/{p-2faa3962.entry.js → p-905d2cc8.entry.js} +1 -1
  301. package/lib/duet/{p-628c4fc7.system.entry.js → p-911c761b.system.entry.js} +1 -1
  302. package/lib/duet/{p-b16b89c3.system.entry.js → p-93562bf8.system.entry.js} +1 -1
  303. package/lib/duet/{p-7f2a16b3.entry.js → p-93da242f.entry.js} +1 -1
  304. package/lib/duet/{p-2184a285.system.entry.js → p-9446df5b.system.entry.js} +1 -1
  305. package/lib/duet/p-94760aea.entry.js +4 -0
  306. package/lib/duet/{p-9f5446d7.system.entry.js → p-97d314bb.system.entry.js} +1 -1
  307. package/lib/duet/{p-95f020cc.system.entry.js → p-9885878c.system.entry.js} +1 -1
  308. package/lib/duet/{p-e71cb6f4.entry.js → p-98d99400.entry.js} +1 -1
  309. package/lib/duet/p-9b75cec2.system.entry.js +4 -0
  310. package/lib/duet/{p-72585f83.entry.js → p-9e1585bd.entry.js} +1 -1
  311. package/lib/duet/{p-fad8bcee.system.entry.js → p-9e3c843a.system.entry.js} +1 -1
  312. package/lib/duet/p-9fb2e28a.js +4 -0
  313. package/lib/duet/p-a2728f08.system.entry.js +4 -0
  314. package/lib/duet/{p-7a5077a2.system.entry.js → p-a8c9268c.system.entry.js} +1 -1
  315. package/lib/duet/{p-e8a6eda7.system.entry.js → p-ac25aad5.system.entry.js} +1 -1
  316. package/lib/duet/{p-44bbf984.entry.js → p-b12261bb.entry.js} +1 -1
  317. package/lib/duet/p-b31e663e.system.entry.js +4 -0
  318. package/lib/duet/{p-fa7a4245.entry.js → p-b44b12af.entry.js} +1 -1
  319. package/lib/duet/{p-faaa6249.entry.js → p-b78eeeff.entry.js} +1 -1
  320. package/lib/duet/{p-c518f7da.system.entry.js → p-b8c2b5f2.system.entry.js} +1 -1
  321. package/lib/duet/p-b92f06ff.system.entry.js +4 -0
  322. package/lib/duet/p-bc169783.entry.js +4 -0
  323. package/lib/duet/{p-2e822cf0.entry.js → p-bed02d40.entry.js} +1 -1
  324. package/lib/duet/p-bf097e1b.entry.js +4 -0
  325. package/lib/duet/{p-58b9c7b4.system.entry.js → p-c19e2d81.system.entry.js} +1 -1
  326. package/lib/duet/{p-2a80caf9.entry.js → p-c2d2a2d2.entry.js} +1 -1
  327. package/lib/duet/{p-2e69c81b.entry.js → p-c3164a3c.entry.js} +1 -1
  328. package/lib/duet/p-c4266675.entry.js +4 -0
  329. package/lib/duet/{p-78f49cbf.system.entry.js → p-c919efff.system.entry.js} +1 -1
  330. package/lib/duet/{p-12ee9a23.system.entry.js → p-c9dcf840.system.entry.js} +1 -1
  331. package/lib/duet/p-cf3c27e4.system.entry.js +4 -0
  332. package/lib/duet/p-cf5f89af.entry.js +4 -0
  333. package/lib/duet/{p-d3da2989.system.entry.js → p-cf8b0da5.system.entry.js} +1 -1
  334. package/lib/duet/{p-6fe5922d.system.entry.js → p-cfcfd3fd.system.entry.js} +1 -1
  335. package/lib/duet/p-d225444d.entry.js +4 -0
  336. package/lib/duet/{p-02e23372.entry.js → p-d2abe34b.entry.js} +1 -1
  337. package/lib/duet/p-d5ac7213.entry.js +4 -0
  338. package/lib/duet/p-d658b29d.entry.js +4 -0
  339. package/lib/duet/{p-c4738155.system.entry.js → p-da2b07eb.system.entry.js} +1 -1
  340. package/lib/duet/p-db8ef99d.entry.js +4 -0
  341. package/lib/duet/{p-8760c0ee.system.entry.js → p-dbd0293b.system.entry.js} +1 -1
  342. package/lib/duet/{p-6326cade.system.entry.js → p-dbff88b5.system.entry.js} +1 -1
  343. package/lib/duet/{p-2ff8c614.entry.js → p-dcc18bd4.entry.js} +1 -1
  344. package/lib/duet/{p-835ea0dc.system.entry.js → p-e0ea4e90.system.entry.js} +1 -1
  345. package/lib/duet/p-e27bd167.entry.js +4 -0
  346. package/lib/duet/{p-2b0d6d66.system.entry.js → p-e6c16681.system.entry.js} +1 -1
  347. package/lib/duet/{p-723308e1.entry.js → p-e741b72a.entry.js} +1 -1
  348. package/lib/duet/{p-b3584ef1.system.entry.js → p-e7ba7e64.system.entry.js} +1 -1
  349. package/lib/duet/{p-c22a97ea.system.entry.js → p-e94fb66d.system.entry.js} +1 -1
  350. package/lib/duet/p-ea68c9e4.system.entry.js +4 -0
  351. package/lib/duet/{p-39c34fde.system.entry.js → p-eb6ec3b0.system.entry.js} +1 -1
  352. package/lib/duet/p-ebf82712.system.entry.js +4 -0
  353. package/lib/duet/{p-2c0d4d3c.entry.js → p-eefb5300.entry.js} +1 -1
  354. package/lib/duet/{p-1ef436d2.js → p-f235b6ff.js} +1 -1
  355. package/lib/duet/{p-c3e4e6a2.system.entry.js → p-f61cf0d1.system.entry.js} +1 -1
  356. package/lib/duet/{p-9aae9d2a.system.entry.js → p-f7393070.system.entry.js} +1 -1
  357. package/lib/duet/p-f96bb9f9.system.js +4 -0
  358. package/lib/duet/p-fb021333.entry.js +4 -0
  359. package/lib/duet/{p-47fb8005.system.entry.js → p-fb8a741c.system.entry.js} +1 -1
  360. package/lib/duet/{p-893d0a53.entry.js → p-fd377d28.entry.js} +1 -1
  361. package/lib/duet/{p-e57b04f0.entry.js → p-feac6e72.entry.js} +1 -1
  362. package/lib/duet/{p-a79f86b5.system.entry.js → p-ffdc54ad.system.entry.js} +1 -1
  363. package/lib/esm/duet-action-button.entry.js +18 -3
  364. package/lib/esm/duet-alert.entry.js +1 -1
  365. package/lib/esm/duet-badge.entry.js +1 -1
  366. package/lib/esm/duet-breadcrumb.entry.js +1 -1
  367. package/lib/esm/duet-breadcrumbs.entry.js +1 -1
  368. package/lib/esm/duet-button_2.entry.js +1 -1
  369. package/lib/esm/duet-caption_4.entry.js +3 -3
  370. package/lib/esm/duet-card.entry.js +9 -13
  371. package/lib/esm/duet-checkbox.entry.js +1 -1
  372. package/lib/esm/duet-checkmark.entry.js +1 -1
  373. package/lib/esm/duet-choice_2.entry.js +2 -2
  374. package/lib/esm/duet-collapsible.entry.js +1 -1
  375. package/lib/esm/duet-combobox.entry.js +13 -3
  376. package/lib/esm/duet-contact-card.entry.js +1 -1
  377. package/lib/esm/duet-cookie-consent.entry.js +1 -1
  378. package/lib/esm/duet-date-picker.entry.js +2 -2
  379. package/lib/esm/duet-divider_2.entry.js +1 -1
  380. package/lib/esm/duet-editable-table_3.entry.js +28 -13
  381. package/lib/esm/duet-empty-state.entry.js +1 -1
  382. package/lib/esm/duet-fieldset.entry.js +6 -2
  383. package/lib/esm/duet-footer.entry.js +1 -1
  384. package/lib/esm/duet-grid_2.entry.js +4 -2
  385. package/lib/esm/duet-header_2.entry.js +15 -1
  386. package/lib/esm/duet-hero.entry.js +16 -4
  387. package/lib/esm/duet-icon.entry.js +1 -1
  388. package/lib/esm/duet-input_2.entry.js +9 -14
  389. package/lib/esm/duet-layout.entry.js +1 -1
  390. package/lib/esm/duet-list_2.entry.js +1 -1
  391. package/lib/esm/duet-menu-bar-button.entry.js +1 -1
  392. package/lib/esm/duet-menu-bar-dropdown-link.entry.js +3 -2
  393. package/lib/esm/duet-menu-bar-dropdown.entry.js +1 -1
  394. package/lib/esm/duet-menu-bar-link.entry.js +3 -2
  395. package/lib/esm/duet-menu-bar.entry.js +1 -1
  396. package/lib/esm/duet-modal.entry.js +2 -2
  397. package/lib/esm/duet-multiselect.entry.js +24 -4
  398. package/lib/esm/duet-nav.entry.js +1 -1
  399. package/lib/esm/duet-notification_2.entry.js +16 -2
  400. package/lib/esm/duet-number-input.entry.js +47 -27
  401. package/lib/esm/duet-page-heading.entry.js +1 -1
  402. package/lib/esm/duet-pagination_2.entry.js +17 -4
  403. package/lib/esm/duet-progress.entry.js +1 -1
  404. package/lib/esm/duet-radio_2.entry.js +1 -1
  405. package/lib/esm/duet-range-slider.entry.js +1 -1
  406. package/lib/esm/duet-scrollable_3.entry.js +19 -3
  407. package/lib/esm/duet-section-layout.entry.js +1 -1
  408. package/lib/esm/duet-select.entry.js +17 -4
  409. package/lib/esm/duet-slideout-lang.entry.js +1 -1
  410. package/lib/esm/duet-slideout-link.entry.js +1 -1
  411. package/lib/esm/duet-slideout-panel-dropdown.entry.js +1 -1
  412. package/lib/esm/duet-slideout-panel.entry.js +2 -2
  413. package/lib/esm/duet-slideout.entry.js +3 -3
  414. package/lib/esm/duet-step_2.entry.js +1 -1
  415. package/lib/esm/duet-submenu-bar-dropdown-link.entry.js +1 -1
  416. package/lib/esm/duet-submenu-bar-dropdown.entry.js +22 -7
  417. package/lib/esm/duet-submenu-bar-link.entry.js +1 -1
  418. package/lib/esm/duet-submenu-bar.entry.js +2 -2
  419. package/lib/esm/duet-textarea.entry.js +15 -4
  420. package/lib/esm/duet-toggle.entry.js +1 -1
  421. package/lib/esm/duet-toolbar-dropdown-link.entry.js +1 -1
  422. package/lib/esm/duet-toolbar-dropdown.entry.js +1 -1
  423. package/lib/esm/duet-toolbar-link.entry.js +3 -2
  424. package/lib/esm/duet-toolbar.entry.js +1 -1
  425. package/lib/esm/duet-tooltip.entry.js +23 -2
  426. package/lib/esm/duet-tray.entry.js +1 -1
  427. package/lib/esm/duet-upload-aria-status.entry.js +1 -1
  428. package/lib/esm/duet-visually-hidden.entry.js +1 -1
  429. package/lib/esm/duet.js +3 -3
  430. package/lib/esm/{focus-utils-123e9cba.js → focus-utils-6a919f2a.js} +1 -1
  431. package/lib/esm/{index-9d169c3d.js → index-13f57135.js} +1 -1
  432. package/lib/esm/loader.js +3 -3
  433. package/lib/esm-es5/duet-action-button.entry.js +1 -1
  434. package/lib/esm-es5/duet-alert.entry.js +1 -1
  435. package/lib/esm-es5/duet-badge.entry.js +1 -1
  436. package/lib/esm-es5/duet-breadcrumb.entry.js +1 -1
  437. package/lib/esm-es5/duet-breadcrumbs.entry.js +1 -1
  438. package/lib/esm-es5/duet-button_2.entry.js +1 -1
  439. package/lib/esm-es5/duet-caption_4.entry.js +1 -1
  440. package/lib/esm-es5/duet-card.entry.js +1 -1
  441. package/lib/esm-es5/duet-checkbox.entry.js +1 -1
  442. package/lib/esm-es5/duet-checkmark.entry.js +1 -1
  443. package/lib/esm-es5/duet-choice_2.entry.js +1 -1
  444. package/lib/esm-es5/duet-collapsible.entry.js +1 -1
  445. package/lib/esm-es5/duet-combobox.entry.js +2 -2
  446. package/lib/esm-es5/duet-contact-card.entry.js +1 -1
  447. package/lib/esm-es5/duet-cookie-consent.entry.js +1 -1
  448. package/lib/esm-es5/duet-date-picker.entry.js +1 -1
  449. package/lib/esm-es5/duet-divider_2.entry.js +1 -1
  450. package/lib/esm-es5/duet-editable-table_3.entry.js +1 -1
  451. package/lib/esm-es5/duet-empty-state.entry.js +1 -1
  452. package/lib/esm-es5/duet-fieldset.entry.js +1 -1
  453. package/lib/esm-es5/duet-footer.entry.js +1 -1
  454. package/lib/esm-es5/duet-grid_2.entry.js +1 -1
  455. package/lib/esm-es5/duet-header_2.entry.js +1 -1
  456. package/lib/esm-es5/duet-hero.entry.js +1 -1
  457. package/lib/esm-es5/duet-icon.entry.js +2 -2
  458. package/lib/esm-es5/duet-input_2.entry.js +1 -1
  459. package/lib/esm-es5/duet-layout.entry.js +1 -1
  460. package/lib/esm-es5/duet-list_2.entry.js +1 -1
  461. package/lib/esm-es5/duet-menu-bar-button.entry.js +1 -1
  462. package/lib/esm-es5/duet-menu-bar-dropdown-link.entry.js +1 -1
  463. package/lib/esm-es5/duet-menu-bar-dropdown.entry.js +1 -1
  464. package/lib/esm-es5/duet-menu-bar-link.entry.js +1 -1
  465. package/lib/esm-es5/duet-menu-bar.entry.js +1 -1
  466. package/lib/esm-es5/duet-modal.entry.js +1 -1
  467. package/lib/esm-es5/duet-multiselect.entry.js +2 -2
  468. package/lib/esm-es5/duet-nav.entry.js +1 -1
  469. package/lib/esm-es5/duet-notification_2.entry.js +2 -2
  470. package/lib/esm-es5/duet-number-input.entry.js +1 -1
  471. package/lib/esm-es5/duet-page-heading.entry.js +1 -1
  472. package/lib/esm-es5/duet-pagination_2.entry.js +1 -1
  473. package/lib/esm-es5/duet-progress.entry.js +1 -1
  474. package/lib/esm-es5/duet-radio_2.entry.js +1 -1
  475. package/lib/esm-es5/duet-range-slider.entry.js +1 -1
  476. package/lib/esm-es5/duet-scrollable_3.entry.js +2 -2
  477. package/lib/esm-es5/duet-section-layout.entry.js +1 -1
  478. package/lib/esm-es5/duet-select.entry.js +1 -1
  479. package/lib/esm-es5/duet-slideout-lang.entry.js +1 -1
  480. package/lib/esm-es5/duet-slideout-link.entry.js +1 -1
  481. package/lib/esm-es5/duet-slideout-panel-dropdown.entry.js +1 -1
  482. package/lib/esm-es5/duet-slideout-panel.entry.js +1 -1
  483. package/lib/esm-es5/duet-slideout.entry.js +1 -1
  484. package/lib/esm-es5/duet-step_2.entry.js +1 -1
  485. package/lib/esm-es5/duet-submenu-bar-dropdown-link.entry.js +1 -1
  486. package/lib/esm-es5/duet-submenu-bar-dropdown.entry.js +1 -1
  487. package/lib/esm-es5/duet-submenu-bar-link.entry.js +1 -1
  488. package/lib/esm-es5/duet-submenu-bar.entry.js +1 -1
  489. package/lib/esm-es5/duet-textarea.entry.js +1 -1
  490. package/lib/esm-es5/duet-toggle.entry.js +2 -2
  491. package/lib/esm-es5/duet-toolbar-dropdown-link.entry.js +1 -1
  492. package/lib/esm-es5/duet-toolbar-dropdown.entry.js +1 -1
  493. package/lib/esm-es5/duet-toolbar-link.entry.js +1 -1
  494. package/lib/esm-es5/duet-toolbar.entry.js +1 -1
  495. package/lib/esm-es5/duet-tooltip.entry.js +1 -1
  496. package/lib/esm-es5/duet-tray.entry.js +1 -1
  497. package/lib/esm-es5/duet-upload-aria-status.entry.js +1 -1
  498. package/lib/esm-es5/duet-visually-hidden.entry.js +1 -1
  499. package/lib/esm-es5/duet.js +1 -1
  500. package/lib/esm-es5/{focus-utils-123e9cba.js → focus-utils-6a919f2a.js} +1 -1
  501. package/lib/esm-es5/{index-9d169c3d.js → index-13f57135.js} +1 -1
  502. package/lib/esm-es5/loader.js +1 -1
  503. package/lib/types/components/duet-action-button/duet-action-button.d.ts +8 -1
  504. package/lib/types/components/duet-combobox/duet-combobox.d.ts +3 -1
  505. package/lib/types/components/duet-editable-table/duet-editable-table.d.ts +4 -1
  506. package/lib/types/components/duet-grid/duet-grid.d.ts +5 -0
  507. package/lib/types/components/duet-header/duet-header.d.ts +1 -0
  508. package/lib/types/components/duet-heading/duet-heading.d.ts +3 -0
  509. package/lib/types/components/duet-hero/duet-hero.d.ts +3 -0
  510. package/lib/types/components/duet-menu-bar-dropdown-link/duet-menu-bar-dropdown-link.d.ts +6 -0
  511. package/lib/types/components/duet-menu-bar-link/duet-menu-bar-link.d.ts +6 -0
  512. package/lib/types/components/duet-multiselect/duet-multiselect.d.ts +9 -1
  513. package/lib/types/components/duet-notification/duet-notification.d.ts +3 -0
  514. package/lib/types/components/duet-number-input/duet-number-input.d.ts +1 -0
  515. package/lib/types/components/duet-pagination/duet-pagination.d.ts +5 -1
  516. package/lib/types/components/duet-select/duet-select.d.ts +1 -0
  517. package/lib/types/components/duet-submenu-bar-dropdown/duet-submenu-bar-dropdown.d.ts +2 -1
  518. package/lib/types/components/duet-tab-group/duet-tab-group.d.ts +10 -0
  519. package/lib/types/components/duet-table/duet-table.d.ts +6 -1
  520. package/lib/types/components/duet-textarea/duet-textarea.d.ts +1 -0
  521. package/lib/types/components/duet-toolbar-link/duet-toolbar-link.d.ts +6 -0
  522. package/lib/types/components/duet-tooltip/duet-tooltip.d.ts +5 -0
  523. package/lib/types/components.d.ts +52 -0
  524. package/package.json +5 -5
  525. package/lib/dist-custom-elements/p-132f2514.js +0 -235
  526. package/lib/dist-custom-elements/p-e48e8201.js +0 -180
  527. package/lib/duet/p-00e57f9b.system.entry.js +0 -4
  528. package/lib/duet/p-1710310b.entry.js +0 -4
  529. package/lib/duet/p-18843061.entry.js +0 -4
  530. package/lib/duet/p-197dba64.system.entry.js +0 -4
  531. package/lib/duet/p-1d283741.system.entry.js +0 -4
  532. package/lib/duet/p-21d08944.entry.js +0 -4
  533. package/lib/duet/p-21d4df80.entry.js +0 -4
  534. package/lib/duet/p-2a89686a.entry.js +0 -4
  535. package/lib/duet/p-459b8e74.system.entry.js +0 -4
  536. package/lib/duet/p-45a64d20.entry.js +0 -4
  537. package/lib/duet/p-5127e9fb.entry.js +0 -4
  538. package/lib/duet/p-52766fb1.entry.js +0 -4
  539. package/lib/duet/p-58d08fb8.entry.js +0 -4
  540. package/lib/duet/p-5c083efb.system.entry.js +0 -4
  541. package/lib/duet/p-5f872140.entry.js +0 -4
  542. package/lib/duet/p-6023d419.system.entry.js +0 -4
  543. package/lib/duet/p-6fe463e6.entry.js +0 -4
  544. package/lib/duet/p-72264693.entry.js +0 -4
  545. package/lib/duet/p-850b95d7.entry.js +0 -4
  546. package/lib/duet/p-8a963cd7.system.entry.js +0 -4
  547. package/lib/duet/p-8f60b4a4.entry.js +0 -4
  548. package/lib/duet/p-98c7286c.entry.js +0 -4
  549. package/lib/duet/p-9f9a14d7.entry.js +0 -4
  550. package/lib/duet/p-a3782a14.entry.js +0 -4
  551. package/lib/duet/p-a6a5458a.entry.js +0 -4
  552. package/lib/duet/p-acb0fbdc.system.entry.js +0 -4
  553. package/lib/duet/p-afb58e46.js +0 -4
  554. package/lib/duet/p-b421ea8a.system.entry.js +0 -4
  555. package/lib/duet/p-c0ac70a9.entry.js +0 -4
  556. package/lib/duet/p-c360334a.system.js +0 -4
  557. package/lib/duet/p-cb2bd40e.entry.js +0 -4
  558. package/lib/duet/p-d5474f30.system.entry.js +0 -4
  559. package/lib/duet/p-d8d3f485.system.entry.js +0 -4
  560. package/lib/duet/p-daa0dccd.entry.js +0 -4
  561. package/lib/duet/p-dc71bc89.entry.js +0 -4
  562. package/lib/duet/p-dcce6bad.entry.js +0 -4
  563. package/lib/duet/p-e73937e1.system.entry.js +0 -4
  564. package/lib/duet/p-f9c26b20.system.entry.js +0 -4
@@ -24,6 +24,7 @@ export class DuetMenuBarLink {
24
24
  this.active = false;
25
25
  this.href = "#";
26
26
  this.icon = undefined;
27
+ this.accessibleLabel = undefined;
27
28
  }
28
29
  /**
29
30
  * Component lifecycle events.
@@ -60,7 +61,7 @@ export class DuetMenuBarLink {
60
61
  "duet-menu-bar-link": true,
61
62
  "duet-theme-turva": this.theme === "turva",
62
63
  active: this.active,
63
- }, href: this.href, "aria-current": this.active ? "true" : "false" }, this.icon && (h("duet-icon", { theme: this.theme, size: this.iconSize, name: this.icon, margin: "none", color: "currentColor" })), h("slot", null))));
64
+ }, href: this.href, "aria-current": this.active ? "true" : "false", "aria-label": this.accessibleLabel }, this.icon && (h("duet-icon", { theme: this.theme, size: this.iconSize, name: this.icon, margin: "none", color: "currentColor" })), h("slot", null))));
64
65
  }
65
66
  static get is() { return "duet-menu-bar-link"; }
66
67
  static get encapsulation() { return "shadow"; }
@@ -152,6 +153,23 @@ export class DuetMenuBarLink {
152
153
  "attribute": "icon",
153
154
  "reflect": true,
154
155
  "defaultValue": "undefined"
156
+ },
157
+ "accessibleLabel": {
158
+ "type": "string",
159
+ "mutable": false,
160
+ "complexType": {
161
+ "original": "string",
162
+ "resolved": "string",
163
+ "references": {}
164
+ },
165
+ "required": false,
166
+ "optional": false,
167
+ "docs": {
168
+ "tags": [],
169
+ "text": "Adds accessible label for the link that is only shown for screen readers.\nTypically, this label text replaces the visible text on the link for users\nwho use assistive technology."
170
+ },
171
+ "attribute": "accessible-label",
172
+ "reflect": false
155
173
  }
156
174
  };
157
175
  }
@@ -5,7 +5,7 @@ import { h, Host } from "@stencil/core";
5
5
  import { inheritGlobalTheme } from "../../common/themeable-component";
6
6
  import { createID } from "../../utils/create-id";
7
7
  import { isArrowDownKey, isArrowLeftKey, isArrowRightKey, isArrowUpKey, isEnterKey, isEscapeKey, isTabKey, } from "../../utils/keyboard-utils";
8
- import { getLocaleString } from "../../utils/language-utils";
8
+ import { connectLanguageChangeObserver, disconnectLanguageChangeObserver, getLanguage, } from "../../utils/language-utils";
9
9
  import { parsePossibleJSON } from "../../utils/string-utils";
10
10
  function toggleInArray(arr, item) {
11
11
  return arr.includes(item) ? arr.filter(i => i !== item) : [...arr, item];
@@ -94,9 +94,23 @@ export class DuetMultiselect {
94
94
  this.getOptionIdentifier = (key) => {
95
95
  return `${this.identifier}-option-${key}`;
96
96
  };
97
+ this.getDescribedBy = () => {
98
+ const describedBy = [];
99
+ if (this.isCaptionVisible && this.topCaptionId) {
100
+ describedBy.push(this.topCaptionId);
101
+ }
102
+ if (this.accessibleDescribedBy) {
103
+ describedBy.push(this.accessibleDescribedBy);
104
+ }
105
+ if (this.error) {
106
+ describedBy.push(this.errorId);
107
+ }
108
+ return describedBy.length > 0 ? describedBy.join(" ") : null;
109
+ };
97
110
  this.processedItems = [];
98
111
  this.checkboxesVisible = false;
99
112
  this.activeDescendant = "";
113
+ this.language = getLanguage();
100
114
  this.margin = "auto";
101
115
  this.error = "";
102
116
  this.expand = false;
@@ -109,6 +123,7 @@ export class DuetMultiselect {
109
123
  this.items = undefined;
110
124
  this.disabled = false;
111
125
  this.label = "label";
126
+ this.accessibleDescribedBy = undefined;
112
127
  this.tooltip = "";
113
128
  this.tooltipDirection = "auto";
114
129
  }
@@ -126,6 +141,12 @@ export class DuetMultiselect {
126
141
  this.isCaptionVisible = !!this.caption;
127
142
  this.refresh();
128
143
  }
144
+ connectedCallback() {
145
+ connectLanguageChangeObserver(this);
146
+ }
147
+ disconnectedCallback() {
148
+ disconnectLanguageChangeObserver(this);
149
+ }
129
150
  /**
130
151
  * Sets focus on the specified `duet-multiselect`. Use this method instead of the global
131
152
  * `multiselect.focus()`.
@@ -146,7 +167,6 @@ export class DuetMultiselect {
146
167
  * Always the last one in the class.
147
168
  */
148
169
  render() {
149
- const selectedTranslation = getLocaleString(this.selectedLangObject);
150
170
  return (h(Host, { class: {
151
171
  "duet-m-0": this.margin === "none",
152
172
  "duet-expand": this.expand,
@@ -156,7 +176,7 @@ export class DuetMultiselect {
156
176
  "duet-theme-turva": this.theme === "turva",
157
177
  "duet-input-top-caption-shown": this.isCaptionVisible,
158
178
  "has-error": !!this.error,
159
- }, onKeyDown: (e) => this.onMultiselectKeyDown(e) }, h("duet-label", { theme: this.theme === "turva" ? "turva" : "default", class: { "duet-has-tooltip": !!this.tooltip }, id: this.labelId, for: this.identifier }, this.label), this.tooltip && (h("duet-tooltip", { class: "duet-multiselect-tooltip", direction: this.tooltipDirection, accessibleInputLabel: this.label }, this.tooltip)), this.caption && (h("duet-caption", { id: this.topCaptionId, size: "medium" }, this.caption)), h("div", { class: "duet-multiselect-wrapper" }, h("button", { id: this.identifier, ref: el => (this.multiselectElement = el), class: { "duet-multiselect": true, "duet-multiselect-active": this.checkboxesVisible }, tabindex: "0", onClick: () => this.toggleCheckboxes(), onFocus: e => this.onFocus(e), onBlur: e => this.onBlur(e), role: "combobox", "aria-expanded": this.checkboxesVisible ? "true" : "false", "aria-haspopup": "listbox", "aria-labelledby": `${this.labelId} ${this.errorId}`, "aria-owns": `${this.identifier}-checkboxes`, onKeyDown: (e) => this.onMultiselectInputKeyDown(e), disabled: this.disabled }, h("span", { role: "textbox", "aria-readonly": "true", "aria-multiline": "false", "aria-autocomplete": "none", "aria-controls": `${this.identifier}-checkboxes` }, this.placeholder), this.value && this.value.length > 0 && (h("duet-badge", { class: "duet-multiselect-badge", margin: "none", theme: this.theme }, this.value.length, " ", selectedTranslation, h("duet-visually-hidden", null, ", ", this.value.map(item => item.label).join(", ")))), h("svg", { role: "img", class: { "duet-multiselect-icon": true, "duet-multiselect-icon--rotate": this.checkboxesVisible }, fill: "currentColor", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" }, h("path", { d: "m12 18.999c-.4 0-.776-.156-1.059-.438l-10.721-10.72c-.142-.142-.22-.33-.22-.531 0-.2.078-.389.22-.53.142-.142.33-.22.53-.22s.389.078.53.22l10.72 10.719 10.72-10.719c.142-.142.33-.22.53-.22s.389.078.53.22c.142.142.22.33.22.53s-.078.389-.22.53l-10.72 10.72c-.282.283-.659.439-1.06.439z" }))), h("div", { id: `${this.identifier}-checkboxes`, role: "listbox", class: {
179
+ }, onKeyDown: (e) => this.onMultiselectKeyDown(e) }, h("duet-label", { theme: this.theme === "turva" ? "turva" : "default", class: { "duet-has-tooltip": !!this.tooltip }, id: this.labelId, for: this.identifier }, this.label), this.tooltip && (h("duet-tooltip", { class: "duet-multiselect-tooltip", direction: this.tooltipDirection, accessibleInputLabel: this.label }, this.tooltip)), this.caption && (h("duet-caption", { id: this.topCaptionId, size: "medium" }, this.caption)), h("div", { class: "duet-multiselect-wrapper" }, h("button", { id: this.identifier, ref: el => (this.multiselectElement = el), class: { "duet-multiselect": true, "duet-multiselect-active": this.checkboxesVisible }, tabindex: "0", onClick: () => this.toggleCheckboxes(), onFocus: e => this.onFocus(e), onBlur: e => this.onBlur(e), role: "combobox", "aria-expanded": this.checkboxesVisible ? "true" : "false", "aria-haspopup": "listbox", "aria-labelledby": this.labelId, "aria-describedby": this.getDescribedBy(), "aria-owns": `${this.identifier}-checkboxes`, onKeyDown: (e) => this.onMultiselectInputKeyDown(e), disabled: this.disabled }, h("span", { role: "textbox", "aria-readonly": "true", "aria-multiline": "false", "aria-autocomplete": "none", "aria-controls": `${this.identifier}-checkboxes` }, this.placeholder), this.value && this.value.length > 0 && (h("duet-badge", { class: "duet-multiselect-badge", margin: "none", theme: this.theme }, this.value.length, " ", this.selectedLangObject[this.language], h("duet-visually-hidden", null, ", ", this.value.map(item => item.label).join(", ")))), h("svg", { role: "img", class: { "duet-multiselect-icon": true, "duet-multiselect-icon--rotate": this.checkboxesVisible }, fill: "currentColor", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" }, h("path", { d: "m12 18.999c-.4 0-.776-.156-1.059-.438l-10.721-10.72c-.142-.142-.22-.33-.22-.531 0-.2.078-.389.22-.53.142-.142.33-.22.53-.22s.389.078.53.22l10.72 10.719 10.72-10.719c.142-.142.33-.22.53-.22s.389.078.53.22c.142.142.22.33.22.53s-.078.389-.22.53l-10.72 10.72c-.282.283-.659.439-1.06.439z" }))), h("div", { id: `${this.identifier}-checkboxes`, role: "listbox", class: {
160
180
  "duet-multiselect-checkboxes": true,
161
181
  "duet-multiselect-checkboxes-active": this.checkboxesVisible,
162
182
  }, "aria-activedescendant": this.activeDescendant, "aria-multiselectable": "true" }, this.processedItems &&
@@ -411,6 +431,23 @@ export class DuetMultiselect {
411
431
  "reflect": false,
412
432
  "defaultValue": "\"label\""
413
433
  },
434
+ "accessibleDescribedBy": {
435
+ "type": "string",
436
+ "mutable": false,
437
+ "complexType": {
438
+ "original": "string",
439
+ "resolved": "string",
440
+ "references": {}
441
+ },
442
+ "required": false,
443
+ "optional": false,
444
+ "docs": {
445
+ "tags": [],
446
+ "text": "Indicates the id of a component that describes the input."
447
+ },
448
+ "attribute": "accessible-described-by",
449
+ "reflect": false
450
+ },
414
451
  "tooltip": {
415
452
  "type": "string",
416
453
  "mutable": false,
@@ -458,7 +495,8 @@ export class DuetMultiselect {
458
495
  return {
459
496
  "processedItems": {},
460
497
  "checkboxesVisible": {},
461
- "activeDescendant": {}
498
+ "activeDescendant": {},
499
+ "language": {}
462
500
  };
463
501
  }
464
502
  static get events() {
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { h } from "@stencil/core";
5
5
  import { inheritGlobalTheme } from "../../common/themeable-component";
6
- import { getLanguage, getLocaleString } from "../../utils/language-utils";
6
+ import { connectLanguageChangeObserver, disconnectLanguageChangeObserver, getLanguage, getLocaleString, } from "../../utils/language-utils";
7
7
  export class DuetNotification {
8
8
  constructor() {
9
9
  this.language = getLanguage();
@@ -19,12 +19,23 @@ export class DuetNotification {
19
19
  this.external = false;
20
20
  this.theme = "";
21
21
  }
22
+ watchLanguageStateHandler(newValue, oldValue) {
23
+ if (newValue !== oldValue && this.accessibleLabelUnread === this.accessibleLabelUnreadDefaults[oldValue]) {
24
+ this.accessibleLabelUnread = getLocaleString(this.accessibleLabelUnreadDefaults, newValue);
25
+ }
26
+ }
22
27
  /**
23
28
  * Component lifecycle events.
24
29
  */
25
30
  componentWillLoad() {
26
31
  inheritGlobalTheme(this);
27
32
  }
33
+ connectedCallback() {
34
+ connectLanguageChangeObserver(this);
35
+ }
36
+ disconnectedCallback() {
37
+ disconnectLanguageChangeObserver(this);
38
+ }
28
39
  /**
29
40
  * Move focus to the notification's link element.
30
41
  * Use this method instead of the native `focus()` method.
@@ -56,7 +67,7 @@ export class DuetNotification {
56
67
  return {
57
68
  "language": {
58
69
  "type": "string",
59
- "mutable": false,
70
+ "mutable": true,
60
71
  "complexType": {
61
72
  "original": "DuetLanguage",
62
73
  "resolved": "\"en\" | \"fi\" | \"sv\"",
@@ -80,7 +91,7 @@ export class DuetNotification {
80
91
  "text": "The currently active language.\nUsed for announcing unread notifications to screen readers."
81
92
  },
82
93
  "attribute": "language",
83
- "reflect": false,
94
+ "reflect": true,
84
95
  "defaultValue": "getLanguage()"
85
96
  },
86
97
  "accessibleLabelUnreadDefaults": {
@@ -106,7 +117,7 @@ export class DuetNotification {
106
117
  },
107
118
  "accessibleLabelUnread": {
108
119
  "type": "string",
109
- "mutable": false,
120
+ "mutable": true,
110
121
  "complexType": {
111
122
  "original": "string",
112
123
  "resolved": "string",
@@ -123,7 +134,7 @@ export class DuetNotification {
123
134
  },
124
135
  "attribute": "accessible-label-unread",
125
136
  "reflect": false,
126
- "defaultValue": "getLocaleString(this.accessibleLabelUnreadDefaults, this.language)"
137
+ "defaultValue": "getLocaleString(\n this.accessibleLabelUnreadDefaults,\n this.language\n )"
127
138
  },
128
139
  "url": {
129
140
  "type": "string",
@@ -255,4 +266,10 @@ export class DuetNotification {
255
266
  };
256
267
  }
257
268
  static get elementRef() { return "element"; }
269
+ static get watchers() {
270
+ return [{
271
+ "propName": "language",
272
+ "methodName": "watchLanguageStateHandler"
273
+ }];
274
+ }
258
275
  }
@@ -33,19 +33,29 @@ export class DuetNumberInput {
33
33
  this.handleChange = (ev) => {
34
34
  const input = ev.target;
35
35
  if (input && input.value) {
36
- let value = SafeParseFloat(input.value, this.locale);
37
- // Make sure that everything works if the user clears the input and
38
- // starts typing non-numeric characters.
39
- if (isNaN(value) || value == null) {
40
- value = this.min || 0;
36
+ try {
37
+ let value = SafeParseFloat(input.value, this.locale);
38
+ // Make sure that everything works if the user clears the input and
39
+ // starts typing non-numeric characters.
40
+ if (isNaN(value) || value == null) {
41
+ value = this.min || 0;
42
+ }
43
+ this.setValue(value);
44
+ this.duetInput.emit({
45
+ component: "duet-number-input",
46
+ originalEvent: ev,
47
+ value: SafeParseFloat(this.value, this.locale).toString(),
48
+ valueAsNumber: value,
49
+ });
50
+ }
51
+ catch (e) {
52
+ this.duetInput.emit({
53
+ component: "duet-number-input",
54
+ originalEvent: ev,
55
+ value: null,
56
+ valueAsNumber: null,
57
+ });
41
58
  }
42
- this.setValue(value);
43
- this.duetInput.emit({
44
- component: "duet-number-input",
45
- originalEvent: ev,
46
- value: SafeParseFloat(this.value, this.locale).toString(),
47
- valueAsNumber: value,
48
- });
49
59
  }
50
60
  else {
51
61
  this.duetInput.emit({
@@ -64,23 +74,25 @@ export class DuetNumberInput {
64
74
  if (input.value) {
65
75
  // On blur we want to make sure that the user input is between the min and max values,
66
76
  // and also round it up or down to the nearest step.
67
- let value = SafeParseFloat(input.value, this.locale);
68
- if (this.rounding) {
69
- value = roundTo(value, this.step);
77
+ try {
78
+ let value = SafeParseFloat(input.value, this.locale);
79
+ if (this.rounding) {
80
+ value = roundTo(value, this.step);
81
+ }
82
+ value = clamp(value, this.min, this.max);
83
+ if (value !== SafeParseFloat(this.value, this.locale) ||
84
+ value !== SafeParseFloat(this.focusedValue, this.locale)) {
85
+ this.setValue(value);
86
+ this.emitChange(ev);
87
+ }
70
88
  }
71
- value = clamp(value, this.min, this.max);
72
- if (value !== SafeParseFloat(this.value, this.locale) ||
73
- value !== SafeParseFloat(this.focusedValue, this.locale)) {
74
- this.setValue(value);
75
- this.emitChange(ev);
89
+ catch (e) {
90
+ this.emitNull(ev);
76
91
  }
77
92
  }
78
- this.duetChange.emit({
79
- originalEvent: ev,
80
- value: null,
81
- valueAsNumber: null,
82
- component: "duet-number-input",
83
- });
93
+ else {
94
+ this.emitNull(ev);
95
+ }
84
96
  };
85
97
  /**
86
98
  * Local methods.
@@ -94,6 +106,14 @@ export class DuetNumberInput {
94
106
  component: "duet-number-input",
95
107
  });
96
108
  };
109
+ this.emitNull = (ev) => {
110
+ this.duetChange.emit({
111
+ originalEvent: ev,
112
+ value: null,
113
+ valueAsNumber: null,
114
+ component: "duet-number-input",
115
+ });
116
+ };
97
117
  this.localizeValue = (value) => {
98
118
  // Returns a localized string that can be used as input value.
99
119
  return value.toLocaleString(this.locale);
@@ -6,7 +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 { isArrowDownKey, isArrowKey, isArrowLeftKey, isArrowRightKey, isArrowUpKey, isNumber, } from "../../utils/keyboard-utils";
9
- import { getLocaleString } from "../../utils/language-utils";
9
+ import { connectLanguageChangeObserver, disconnectLanguageChangeObserver, getLanguage, getLocaleString, } from "../../utils/language-utils";
10
10
  import { shouldDisplayNavigation } from "./duet-pagination-utils";
11
11
  /**
12
12
  * @part navigation-arrow - this part enables style overrides for the navigation-arrow
@@ -65,6 +65,7 @@ export class DuetPagination {
65
65
  this.numbersStore = "";
66
66
  this.totalPages = 10;
67
67
  this.internalSectionIndex = 0;
68
+ this.language = getLanguage();
68
69
  this.theme = "";
69
70
  this.jumpString = "...";
70
71
  this.variation = "default";
@@ -117,6 +118,11 @@ export class DuetPagination {
117
118
  this.ariaControls = "";
118
119
  this.current = 1;
119
120
  }
121
+ watchLanguageStateHandler(newValue, oldValue) {
122
+ if (newValue !== oldValue && this.accessibleLabels === this.accessibleLabelsDefaults[oldValue]) {
123
+ this.accessibleLabels = getLocaleString(this.accessibleLabelsDefaults, newValue);
124
+ }
125
+ }
120
126
  watchPropTotalHandler( /*newValue: boolean, oldValue: boolean*/) {
121
127
  this.calculatePageTake();
122
128
  return true;
@@ -141,6 +147,12 @@ export class DuetPagination {
141
147
  componentDidRender() {
142
148
  this.setFocus();
143
149
  }
150
+ connectedCallback() {
151
+ connectLanguageChangeObserver(this);
152
+ }
153
+ disconnectedCallback() {
154
+ disconnectLanguageChangeObserver(this);
155
+ }
144
156
  //get totalpages from visible and total
145
157
  calculatePageTake() {
146
158
  this.totalPages = Math.ceil(this.total / this.take);
@@ -260,8 +272,8 @@ export class DuetPagination {
260
272
  }, role: "menubar", "aria-label": this.accessibleLabels.pagination_label, "aria-description": this.accessibleLabels.description }, h("li", { class: {
261
273
  "duet-pagination-page-button": true,
262
274
  "duet-pagination-button-first": true,
263
- }, role: "menuitem", part: "navigation-arrow" }, h("duet-action-button", { disabled: this.internalSectionIndex === 0 && this.current <= 1, "data-direction": "back", onClick: e => this.onMouseHandler(e, -1), "accessible-label": this.accessibleLabels.previous_page, "icon-name": "action-arrow-left-small", theme: this.theme })), this.internalSectionIndex !== 0 && this.shouldDisplayNavigation() && (h(Fragment, null, h("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-jump" }, h("duet-button", { class: "duet-pagination-link duet-pagination-link-jump-back", "center-text": "true", variation: "plain", color: this.theme !== "turva" ? "secondary" : "secondary-turva", margin: "none", accessibleLabel: this.accessibleLabels.first_page, onClick: e => this.jumpToStart(e), theme: this.theme }, h("div", { class: "duet-pagination-page-number" }, "1"))), h("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-section" }, h("duet-button", { class: "duet-pagination-link duet-pagination-link-dots-back", "center-text": "true", color: this.theme !== "turva" ? "secondary" : "secondary-turva", variation: "plain", margin: "none", accessibleLabel: this.accessibleLabels.prev_section.replace("{0}", `${this.visibleItems}`), onClick: e => this.sectionClickHandler(e, -1), theme: this.theme }, h("div", { class: "duet-pagination-page-number", "aria-hidden": "true" }, "..."))))), this.renderPageNumbers(), this.internalSectionIndex * (this.visibleItems + 2) < this.totalPages &&
264
- this.shouldDisplayNavigation() && (h(Fragment, null, h("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-section" }, h("duet-button", { class: "duet-pagination-link duet-pagination-link-dots-forward", "center-text": "true", color: this.theme !== "turva" ? "secondary" : "secondary-turva", variation: "plain", margin: "none", accessibleLabel: this.accessibleLabels.next_section.replace("{0}", `${this.visibleItems}`), onClick: e => this.sectionClickHandler(e, 1), theme: this.theme }, h("div", { class: "duet-pagination-page-number", "aria-hidden": "true" }, "..."))), h("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-jump" }, h("duet-button", { class: "duet-pagination-link duet-pagination-link-jump-forward", "center-text": "true", color: this.theme !== "turva" ? "secondary" : "secondary-turva", variation: "plain", margin: "none", accessibleLabel: this.accessibleLabels.last_page, onClick: e => this.jumpToEnd(e), theme: this.theme }, h("div", { class: "duet-pagination-page-number" }, this.totalPages))))), h("li", { class: {
275
+ }, role: "menuitem", part: "navigation-arrow" }, h("duet-action-button", { disabled: this.internalSectionIndex === 0 && this.current <= 1, "data-direction": "back", onClick: e => this.onMouseHandler(e, -1), "accessible-label": this.accessibleLabels.previous_page, "icon-name": "action-arrow-left-small", theme: this.theme })), this.internalSectionIndex !== 0 && this.shouldDisplayNavigation() && (h(Fragment, null, h("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-jump" }, h("duet-button", { class: "duet-pagination-link duet-pagination-link-jump-back", "center-text": "true", variation: "plain", color: this.theme !== "turva" ? "secondary" : "secondary-turva", margin: "none", accessibleLabel: this.accessibleLabels.first_page, onClick: e => this.jumpToStart(e), theme: this.theme }, h("div", { class: "duet-pagination-page-number" }, "1"))), h("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-section" }, h("duet-button", { class: "duet-pagination-link duet-pagination-link-dots-back", "center-text": "true", color: this.theme !== "turva" ? "secondary" : "secondary-turva", variation: "plain", margin: "none", accessibleLabel: this.accessibleLabels.prev_section.replace("{0}", `${this.visibleItems}`), onClick: e => this.sectionClickHandler(e, -1), theme: this.theme }, h("div", { class: "duet-pagination-page-number", "aria-hidden": "true" }, "..."))))), this.renderPageNumbers(), this.internalSectionIndex * (this.visibleItems + 2) < this.totalPages && this.shouldDisplayNavigation() && // eslint-disable-line
276
+ (h(Fragment, null, h("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-section" }, h("duet-button", { class: "duet-pagination-link duet-pagination-link-dots-forward", "center-text": "true", color: this.theme !== "turva" ? "secondary" : "secondary-turva", variation: "plain", margin: "none", accessibleLabel: this.accessibleLabels.next_section.replace("{0}", `${this.visibleItems}`), onClick: e => this.sectionClickHandler(e, 1), theme: this.theme }, h("div", { class: "duet-pagination-page-number", "aria-hidden": "true" }, "..."))), h("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-jump" }, h("duet-button", { class: "duet-pagination-link duet-pagination-link-jump-forward", "center-text": "true", color: this.theme !== "turva" ? "secondary" : "secondary-turva", variation: "plain", margin: "none", accessibleLabel: this.accessibleLabels.last_page, onClick: e => this.jumpToEnd(e), theme: this.theme }, h("div", { class: "duet-pagination-page-number" }, this.totalPages))))), h("li", { class: {
265
277
  "duet-pagination-page-button": true,
266
278
  "duet-pagination-button-last": true,
267
279
  }, role: "menuitem", part: "navigation-arrow" }, h("duet-action-button", { disabled: this.current === this.totalPages &&
@@ -440,7 +452,7 @@ export class DuetPagination {
440
452
  },
441
453
  "accessibleLabels": {
442
454
  "type": "unknown",
443
- "mutable": false,
455
+ "mutable": true,
444
456
  "complexType": {
445
457
  "original": "Record<string, string>",
446
458
  "resolved": "{ [x: string]: string; }",
@@ -554,7 +566,8 @@ export class DuetPagination {
554
566
  return {
555
567
  "numbersStore": {},
556
568
  "totalPages": {},
557
- "internalSectionIndex": {}
569
+ "internalSectionIndex": {},
570
+ "language": {}
558
571
  };
559
572
  }
560
573
  static get events() {
@@ -583,6 +596,9 @@ export class DuetPagination {
583
596
  static get elementRef() { return "element"; }
584
597
  static get watchers() {
585
598
  return [{
599
+ "propName": "language",
600
+ "methodName": "watchLanguageStateHandler"
601
+ }, {
586
602
  "propName": "total",
587
603
  "methodName": "watchPropTotalHandler"
588
604
  }, {
@@ -1,4 +1,3 @@
1
- @charset "UTF-8";
2
1
  *,
3
2
  *::after,
4
3
  *::before {
@@ -103,9 +102,6 @@ duet-tooltip {
103
102
  width: 81px;
104
103
  padding: 0 !important;
105
104
  }
106
- .duet-select-wrapper::after {
107
- content: "  ";
108
- }
109
105
  .duet-select-wrapper select {
110
106
  position: absolute;
111
107
  top: 0;
@@ -56,6 +56,19 @@ export class DuetSelect {
56
56
  component: "duet-select",
57
57
  });
58
58
  };
59
+ this.getDescribedBy = () => {
60
+ const describedBy = [];
61
+ if (this.isCaptionVisible && this.topCaptionId) {
62
+ describedBy.push(this.topCaptionId);
63
+ }
64
+ if (this.accessibleDescribedBy) {
65
+ describedBy.push(this.accessibleDescribedBy);
66
+ }
67
+ if (this.error) {
68
+ describedBy.push(this.errorId);
69
+ }
70
+ return describedBy.length > 0 ? describedBy.join(" ") : null;
71
+ };
59
72
  this.processedItems = null;
60
73
  this.variation = "default";
61
74
  this.accessibleActiveDescendant = undefined;
@@ -140,12 +153,12 @@ export class DuetSelect {
140
153
  "duet-select-variation-tiny": this.variation === "tiny",
141
154
  "duet-input-top-caption-shown": this.isCaptionVisible,
142
155
  "has-error": !!this.error,
143
- } }, h("duet-label", { theme: this.theme === "turva" ? "turva" : "default", class: { "duet-has-tooltip": !!this.tooltip }, id: this.labelId, for: identifier }, this.label), this.tooltip && (h("duet-tooltip", { direction: this.tooltipDirection, accessibleInputLabel: this.label }, this.tooltip)), this.caption && (h("duet-caption", { id: this.topCaptionId, size: "medium" }, this.caption)), h("div", { class: "duet-select-wrapper" }, this.placeholder && this.echoPlaceholder && this.value && (h("duet-caption", { id: this.topCaptionPlaceholderId, class: "duet-select-placeholder", size: "small" }, this.placeholder)), h("select", { ref: select => (this.nativeSelect = select), disabled: this.disabled, name: this.name, id: identifier, role: this.role, "aria-labelledby": `${this.errorId} ${this.labelId}`, "aria-controls": this.accessibleControls, "aria-activedescendant": this.accessibleActiveDescendant, "aria-errormessage": this.error ? this.errorId : null, "aria-owns": this.accessibleOwns, onFocus: this.onFocus, onBlur: this.onBlur, onChange: this.onChange, required: this.required, "aria-describedby": this.accessibleDescribedBy }, this.placeholder && (h("option", { disabled: true, selected: true, value: "" }, this.placeholder)), !this.processedItems ? (h("option", null, "Virhe valintoja ladattaessa. P\u00E4ivit\u00E4 sivu ja kokeile uusiksi.")) : (this.processedItems.map(item => {
156
+ } }, h("duet-label", { theme: this.theme === "turva" ? "turva" : "default", class: { "duet-has-tooltip": !!this.tooltip }, id: this.labelId, for: identifier }, this.label), this.tooltip && (h("duet-tooltip", { direction: this.tooltipDirection, accessibleInputLabel: this.label }, this.tooltip)), this.caption && (h("duet-caption", { id: this.topCaptionId, size: "medium" }, this.caption)), h("div", { class: "duet-select-wrapper" }, this.placeholder && this.echoPlaceholder && this.value && (h("duet-caption", { id: this.topCaptionPlaceholderId, class: "duet-select-placeholder", size: "small" }, this.placeholder)), h("select", { ref: select => (this.nativeSelect = select), disabled: this.disabled, name: this.name, id: identifier, role: this.role, "aria-labelledby": this.labelId, "aria-describedby": this.getDescribedBy(), "aria-controls": this.accessibleControls, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, onFocus: this.onFocus, onBlur: this.onBlur, onChange: this.onChange, required: this.required }, this.placeholder && (h("option", { disabled: true, selected: true, value: "" }, this.placeholder)), !this.processedItems ? (h("option", null, "Virhe valintoja ladattaessa. P\u00E4ivit\u00E4 sivu ja kokeile uusiksi.")) : (this.processedItems.map(item => {
144
157
  return isOptionGroup(item) ? this.renderOptionGroup(item) : this.renderOption(item);
145
158
  }))), h("div", { class: {
146
159
  "duet-select": true,
147
160
  "duet-select-variation-tiny": this.variation === "tiny",
148
- }, "aria-hidden": "true" }, h("span", { key: this.value }, this.getSelectedItemLabel()), this.variation !== "tiny" && (h("svg", { role: "img", class: "duet-select-icon", fill: "currentColor", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" }, h("path", { d: "m12 18.999c-.4 0-.776-.156-1.059-.438l-10.721-10.72c-.142-.142-.22-.33-.22-.531 0-.2.078-.389.22-.53.142-.142.33-.22.53-.22s.389.078.53.22l10.72 10.719 10.72-10.719c.142-.142.33-.22.53-.22s.389.078.53.22c.142.142.22.33.22.53s-.078.389-.22.53l-10.72 10.72c-.282.283-.659.439-1.06.439z" }))), this.variation === "tiny" && (h("duet-icon", { name: "action-arrow-down-small", color: "currentColor", margin: "none", size: "xx-small" })))), h("span", { class: "duet-select-help", id: this.errorId, "aria-live": "polite", "aria-atomic": "true", "aria-relevant": "additions removals" }, this.error && h("span", null, this.error)))));
161
+ }, "aria-hidden": "true" }, h("span", { key: this.value }, this.getSelectedItemLabel()), this.variation !== "tiny" && (h("svg", { role: "img", class: "duet-select-icon", fill: "currentColor", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" }, h("path", { d: "m12 18.999c-.4 0-.776-.156-1.059-.438l-10.721-10.72c-.142-.142-.22-.33-.22-.531 0-.2.078-.389.22-.53.142-.142.33-.22.53-.22s.389.078.53.22l10.72 10.719 10.72-10.719c.142-.142.33-.22.53-.22s.389.078.53.22c.142.142.22.33.22.53s-.078.389-.22.53l-10.72 10.72c-.282.283-.659.439-1.06.439z" }))), this.variation === "tiny" && (h("duet-icon", { name: "action-arrow-down-small", color: "currentColor", margin: "none", size: "xx-small" }))), h("span", { class: "keep-container-height", role: "presention", "aria-hidden": "true" }, "_")), h("span", { class: "duet-select-help", id: this.errorId, "aria-live": "polite", "aria-atomic": "true", "aria-relevant": "additions removals" }, this.error && h("span", null, this.error)))));
149
162
  }
150
163
  static get is() { return "duet-select"; }
151
164
  static get encapsulation() { return "scoped"; }
@@ -79,6 +79,7 @@
79
79
  z-index: 400;
80
80
  width: 100%;
81
81
  height: 100%;
82
+ padding-bottom: 75px;
82
83
  overflow-y: auto;
83
84
  box-shadow: 0 3px 6px 0 rgba(0, 41, 77, 0.1) inset;
84
85
  }
@@ -87,6 +88,7 @@
87
88
  right: 0;
88
89
  left: auto;
89
90
  width: 500px;
91
+ padding-bottom: 0;
90
92
  transition: right 300ms ease;
91
93
  transition-delay: 0s;
92
94
  }
@@ -23,29 +23,15 @@
23
23
  width: 100%;
24
24
  }
25
25
 
26
- :host slot::slotted(duet-submenu-bar-link),
27
- :host slot::slotted(duet-submenu-bar-dropdown) {
28
- position: relative;
29
- top: -0.5rem;
30
- opacity: 0;
31
- transition: top 0.3s ease-in, opacity 0.3s ease-in;
32
- }
33
-
34
- :host([open]) slot::slotted(duet-submenu-bar-link),
35
- :host([open]) slot::slotted(duet-submenu-bar-dropdown) {
36
- top: 0;
37
- opacity: 1;
26
+ :host(:not([open])) ::slotted(duet-submenu-bar-dropdown) {
27
+ display: none;
38
28
  }
39
-
40
29
  @media (min-width: 62em) {
41
- :host slot::slotted(duet-submenu-bar-link),
42
- :host slot::slotted(duet-submenu-bar-dropdown) {
43
- position: relative;
44
- top: auto;
45
- opacity: 1;
46
- transition: none;
30
+ :host(:not([open])) ::slotted(duet-submenu-bar-dropdown) {
31
+ display: inherit;
47
32
  }
48
33
  }
34
+
49
35
  .duet-submenu-bar {
50
36
  position: relative;
51
37
  background: rgb(243, 249, 252);
@@ -114,7 +100,6 @@
114
100
  visibility: visible;
115
101
  background: rgb(243, 249, 252);
116
102
  border-bottom: 1px solid rgb(207, 210, 212);
117
- transition: 300ms ease;
118
103
  }
119
104
  .duet-submenu-bar .items ::slotted(*) {
120
105
  position: relative;
@@ -124,7 +109,6 @@
124
109
  overflow: hidden;
125
110
  visibility: hidden;
126
111
  border-bottom: 0 solid rgb(207, 210, 212);
127
- transition: 300ms ease;
128
112
  }
129
113
  @media (min-width: 62em) {
130
114
  .duet-submenu-bar .items .list {
@@ -194,6 +194,7 @@
194
194
  @media (min-width: 62em) {
195
195
  .duet-submenu-bar-dropdown.duet-theme-turva button.active, .duet-submenu-bar-dropdown.duet-theme-turva button.open {
196
196
  color: rgb(148, 9, 37);
197
+ background: rgb(228, 228, 230);
197
198
  }
198
199
  }
199
200
  .duet-submenu-bar-dropdown.duet-theme-turva button.active::after, .duet-submenu-bar-dropdown.duet-theme-turva button.open::after {
@@ -12,17 +12,32 @@ export class DuetSubmenuBarDropdown {
12
12
  */
13
13
  this.mql = [window.matchMedia(media_query_large.replace(/'/g, ""))];
14
14
  this.boundMqlFunctions = [];
15
- this.changeIconSize = () => {
15
+ this.checkIsDesktop = () => {
16
16
  if (this.mql[0].matches) {
17
+ this.isDesktop = true;
17
18
  this.iconSize = "x-small";
18
19
  }
19
20
  else {
21
+ this.isDesktop = false;
20
22
  this.iconSize = "small";
21
23
  }
22
24
  };
23
25
  this.onClick = () => {
24
- this.open = !this.open;
26
+ const open = this.open;
27
+ if (!this.isDesktop) {
28
+ const dropdowns = Array.from(this.element.parentElement.querySelectorAll("duet-submenu-bar-dropdown"));
29
+ for (const dropdown of dropdowns) {
30
+ dropdown.open = false;
31
+ }
32
+ }
33
+ if (open) {
34
+ this.open = false;
35
+ }
36
+ else {
37
+ this.open = true;
38
+ }
25
39
  };
40
+ this.isDesktop = false;
26
41
  this.iconSize = "small";
27
42
  this.theme = "";
28
43
  this.active = false;
@@ -31,7 +46,7 @@ export class DuetSubmenuBarDropdown {
31
46
  }
32
47
  handleFocus(e) {
33
48
  const isClickOutside = e.composedPath().every(node => node !== this.element);
34
- if (isClickOutside) {
49
+ if (isClickOutside && this.isDesktop) {
35
50
  this.open = false;
36
51
  }
37
52
  }
@@ -42,11 +57,11 @@ export class DuetSubmenuBarDropdown {
42
57
  inheritGlobalTheme(this);
43
58
  }
44
59
  connectedCallback() {
45
- this.changeIconSize();
60
+ this.checkIsDesktop();
46
61
  for (let i = 0; i < this.mql.length; i++) {
47
62
  // addEventListener is not available in Stencil hydrate
48
63
  if (this.mql[i].addEventListener) {
49
- const bound = this.changeIconSize.bind(this);
64
+ const bound = this.checkIsDesktop.bind(this);
50
65
  this.mql[i].addEventListener("change", bound);
51
66
  this.boundMqlFunctions[i] = bound;
52
67
  }
@@ -192,6 +207,7 @@ export class DuetSubmenuBarDropdown {
192
207
  }
193
208
  static get states() {
194
209
  return {
210
+ "isDesktop": {},
195
211
  "iconSize": {}
196
212
  };
197
213
  }