@duetds/components 5.1.8 → 5.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (410) hide show
  1. package/hydrate/index.js +364 -118
  2. package/lib/cjs/{dom-66424ef2.js → dom-96576bce.js} +1 -1
  3. package/lib/cjs/duet-action-button.cjs.entry.js +16 -8
  4. package/lib/cjs/duet-alert.cjs.entry.js +2 -2
  5. package/lib/cjs/duet-badge.cjs.entry.js +2 -2
  6. package/lib/cjs/duet-breadcrumb.cjs.entry.js +2 -2
  7. package/lib/cjs/duet-breadcrumbs.cjs.entry.js +3 -3
  8. package/lib/cjs/duet-button_2.cjs.entry.js +17 -2
  9. package/lib/cjs/duet-caption_4.cjs.entry.js +3 -3
  10. package/lib/cjs/duet-card.cjs.entry.js +2 -2
  11. package/lib/cjs/duet-checkbox.cjs.entry.js +15 -3
  12. package/lib/cjs/duet-choice_2.cjs.entry.js +16 -4
  13. package/lib/cjs/duet-collapsible.cjs.entry.js +2 -2
  14. package/lib/cjs/duet-combobox.cjs.entry.js +2 -2
  15. package/lib/cjs/duet-cookie-consent.cjs.entry.js +2 -2
  16. package/lib/cjs/duet-date-picker.cjs.entry.js +3 -4
  17. package/lib/cjs/duet-divider_2.cjs.entry.js +2 -2
  18. package/lib/cjs/duet-editable-table_3.cjs.entry.js +6 -6
  19. package/lib/cjs/duet-empty-state.cjs.entry.js +2 -2
  20. package/lib/cjs/duet-fieldset.cjs.entry.js +2 -2
  21. package/lib/cjs/duet-footer.cjs.entry.js +2 -2
  22. package/lib/cjs/duet-grid_2.cjs.entry.js +2 -2
  23. package/lib/cjs/duet-header_2.cjs.entry.js +3 -3
  24. package/lib/cjs/duet-hero.cjs.entry.js +2 -2
  25. package/lib/cjs/duet-icon.cjs.entry.js +2 -2
  26. package/lib/cjs/duet-input_2.cjs.entry.js +18 -4
  27. package/lib/cjs/duet-layout.cjs.entry.js +1 -1
  28. package/lib/cjs/duet-list_2.cjs.entry.js +2 -2
  29. package/lib/cjs/duet-modal.cjs.entry.js +12 -4
  30. package/lib/cjs/duet-notification_2.cjs.entry.js +2 -2
  31. package/lib/cjs/duet-number-input.cjs.entry.js +106 -49
  32. package/lib/cjs/duet-pagination_2.cjs.entry.js +19 -3
  33. package/lib/cjs/duet-progress.cjs.entry.js +15 -3
  34. package/lib/cjs/duet-radio_2.cjs.entry.js +15 -3
  35. package/lib/cjs/duet-range-slider.cjs.entry.js +2 -2
  36. package/lib/cjs/duet-scrollable_3.cjs.entry.js +2 -2
  37. package/lib/cjs/duet-select.cjs.entry.js +2 -2
  38. package/lib/cjs/duet-step_2.cjs.entry.js +2 -2
  39. package/lib/cjs/duet-textarea.cjs.entry.js +17 -3
  40. package/lib/cjs/duet-toggle.cjs.entry.js +15 -3
  41. package/lib/cjs/duet-tooltip.cjs.entry.js +2 -2
  42. package/lib/cjs/duet-tray.cjs.entry.js +2 -2
  43. package/lib/cjs/duet-upload-aria-status.cjs.entry.js +1 -1
  44. package/lib/cjs/duet-visually-hidden.cjs.entry.js +1 -1
  45. package/lib/cjs/duet.cjs.js +4 -4
  46. package/lib/cjs/{focus-utils-c63a36c6.js → focus-utils-7b09fa4b.js} +1 -1
  47. package/lib/cjs/{index-cfea8a15.js → index-3024eb44.js} +11 -9
  48. package/lib/cjs/loader.cjs.js +3 -3
  49. package/lib/cjs/{shadow-css-1ff2f74f.js → shadow-css-38b9e725.js} +2 -3
  50. package/lib/cjs/{themeable-component-940d3b50.js → themeable-component-fdeaef9f.js} +0 -0
  51. package/lib/collection/collection-manifest.json +1 -1
  52. package/lib/collection/{utils/form-components.js → common/a11y-component.js} +0 -0
  53. package/lib/collection/common/form-components.js +4 -0
  54. package/lib/collection/common/index.js +4 -0
  55. package/lib/collection/{utils → common}/themeable-component.js +0 -0
  56. package/lib/collection/components/duet-action-button/duet-action-button.js +57 -13
  57. package/lib/collection/components/duet-alert/duet-alert.js +1 -1
  58. package/lib/collection/components/duet-badge/duet-badge.js +1 -1
  59. package/lib/collection/components/duet-breadcrumbs/duet-breadcrumb.js +1 -1
  60. package/lib/collection/components/duet-breadcrumbs/duet-breadcrumbs.css +1 -1
  61. package/lib/collection/components/duet-breadcrumbs/duet-breadcrumbs.js +1 -1
  62. package/lib/collection/components/duet-button/duet-button.js +70 -1
  63. package/lib/collection/components/duet-caption/duet-caption.js +1 -1
  64. package/lib/collection/components/duet-card/duet-card.js +1 -1
  65. package/lib/collection/components/duet-checkbox/duet-checkbox.js +68 -2
  66. package/lib/collection/components/duet-choice/duet-choice.js +68 -2
  67. package/lib/collection/components/duet-choice-group/duet-choice-group.js +1 -1
  68. package/lib/collection/components/duet-collapsible/duet-collapsible.js +1 -1
  69. package/lib/collection/components/duet-combobox/duet-combobox.js +1 -1
  70. package/lib/collection/components/duet-cookie-consent/duet-cookie-consent.js +1 -1
  71. package/lib/collection/components/duet-date-picker/duet-date-picker.js +1 -1
  72. package/lib/collection/components/duet-date-picker/utils.js +0 -1
  73. package/lib/collection/components/duet-divider/duet-divider.js +1 -1
  74. package/lib/collection/components/duet-editable-table/duet-editable-table.js +3 -2
  75. package/lib/collection/components/duet-empty-state/duet-empty-state.js +1 -1
  76. package/lib/collection/components/duet-fieldset/duet-fieldset.js +1 -1
  77. package/lib/collection/components/duet-footer/duet-footer.js +1 -1
  78. package/lib/collection/components/duet-grid-item/duet-grid-item.js +1 -1
  79. package/lib/collection/components/duet-header/duet-header.css +1 -1
  80. package/lib/collection/components/duet-header/duet-header.js +1 -1
  81. package/lib/collection/components/duet-heading/duet-heading.css +3 -0
  82. package/lib/collection/components/duet-heading/duet-heading.js +1 -1
  83. package/lib/collection/components/duet-hero/duet-hero.js +1 -1
  84. package/lib/collection/components/duet-icon/duet-icon.js +1 -1
  85. package/lib/collection/components/duet-input/duet-input.js +72 -4
  86. package/lib/collection/components/duet-label/duet-label.js +1 -1
  87. package/lib/collection/components/duet-link/duet-link.js +1 -1
  88. package/lib/collection/components/duet-list/duet-list.js +1 -1
  89. package/lib/collection/components/duet-logo/duet-logo.js +1 -1
  90. package/lib/collection/components/duet-modal/duet-modal.js +80 -2
  91. package/lib/collection/components/duet-notification/duet-notification.js +1 -1
  92. package/lib/collection/components/duet-notification-drawer/duet-notification-drawer.js +1 -1
  93. package/lib/collection/components/duet-number-input/duet-number-input.js +90 -29
  94. package/lib/collection/components/duet-pagination/duet-pagination.js +90 -2
  95. package/lib/collection/components/duet-paragraph/duet-paragraph.js +1 -1
  96. package/lib/collection/components/duet-progress/duet-progress.js +68 -2
  97. package/lib/collection/components/duet-radio/duet-radio.js +68 -2
  98. package/lib/collection/components/duet-radio-group/duet-radio-group.js +1 -1
  99. package/lib/collection/components/duet-range-slider/duet-range-slider.js +1 -1
  100. package/lib/collection/components/duet-range-stepper/duet-range-stepper.js +1 -1
  101. package/lib/collection/components/duet-scrollable/duet-scrollable.js +1 -1
  102. package/lib/collection/components/duet-select/duet-select.js +1 -1
  103. package/lib/collection/components/duet-spinner/duet-spinner.js +1 -1
  104. package/lib/collection/components/duet-step/duet-step.js +1 -1
  105. package/lib/collection/components/duet-stepper/duet-stepper.js +1 -1
  106. package/lib/collection/components/duet-tab-group/duet-tab-group.js +1 -1
  107. package/lib/collection/components/duet-table/duet-table.css +30 -18
  108. package/lib/collection/components/duet-table/duet-table.js +1 -1
  109. package/lib/collection/components/duet-textarea/duet-textarea.js +70 -2
  110. package/lib/collection/components/duet-toggle/duet-toggle.js +68 -2
  111. package/lib/collection/components/duet-tooltip/duet-tooltip.js +1 -1
  112. package/lib/collection/components/duet-tray/duet-tray.js +1 -1
  113. package/lib/collection/components/duet-upload/duet-upload.css +9 -1
  114. package/lib/collection/components/duet-upload/duet-upload.js +1 -1
  115. package/lib/collection/components/duet-upload/upload-editable-item-inprogres.js +0 -1
  116. package/lib/collection/utils/math.utils.js +76 -0
  117. package/lib/custom-elements-bundle/index.js +295 -105
  118. package/lib/duet/duet.esm.js +1 -1
  119. package/lib/duet/duet.js +1 -1
  120. package/lib/duet/{p-c7306ab6.system.entry.js → p-036b2f99.system.entry.js} +1 -1
  121. package/lib/duet/p-0522338d.system.entry.js +4 -0
  122. package/lib/duet/{p-897598ba.entry.js → p-053c3751.entry.js} +1 -1
  123. package/lib/duet/p-094b206c.entry.js +4 -0
  124. package/lib/duet/{p-3c47c2b3.system.entry.js → p-095b52f8.system.entry.js} +2 -2
  125. package/lib/duet/p-0f343566.system.entry.js +4 -0
  126. package/lib/duet/p-0fffc5fe.entry.js +4 -0
  127. package/lib/duet/{p-c15f6b6d.system.entry.js → p-1167bc0a.system.entry.js} +1 -1
  128. package/lib/duet/p-13db05ed.entry.js +4 -0
  129. package/lib/duet/p-15edabe0.entry.js +4 -0
  130. package/lib/duet/{p-0a8c1862.entry.js → p-16a1bfe4.entry.js} +1 -1
  131. package/lib/duet/{p-c6a3383d.entry.js → p-273b6543.entry.js} +1 -1
  132. package/lib/duet/p-27d9b918.entry.js +4 -0
  133. package/lib/duet/{p-f14203b8.system.entry.js → p-2cc240f9.system.entry.js} +1 -1
  134. package/lib/duet/p-2ee81c0d.system.entry.js +4 -0
  135. package/lib/duet/{p-439946a9.system.entry.js → p-31a56879.system.entry.js} +1 -1
  136. package/lib/duet/{p-6b03322b.system.js → p-33b3aba4.system.js} +0 -0
  137. package/lib/duet/p-35f011bf.system.js +5 -0
  138. package/lib/duet/{p-fa59ebf4.js → p-3b31184e.js} +0 -0
  139. package/lib/duet/{p-1483f29a.entry.js → p-4061e958.entry.js} +1 -1
  140. package/lib/duet/p-40ebab42.entry.js +4 -0
  141. package/lib/duet/p-465777cf.system.entry.js +4 -0
  142. package/lib/duet/{p-eee5e878.entry.js → p-484993a3.entry.js} +1 -1
  143. package/lib/duet/p-49fc4668.entry.js +4 -0
  144. package/lib/duet/{p-5a400c18.system.entry.js → p-4e2d8044.system.entry.js} +1 -1
  145. package/lib/duet/{p-abf8eaf7.js → p-4ebf1618.js} +0 -0
  146. package/lib/duet/{p-8115766f.entry.js → p-4ff48b81.entry.js} +1 -1
  147. package/lib/duet/{p-b36ca591.system.entry.js → p-50f27bbf.system.entry.js} +1 -1
  148. package/lib/duet/{p-bcb459ab.entry.js → p-5183d420.entry.js} +1 -1
  149. package/lib/duet/p-536bde7b.entry.js +4 -0
  150. package/lib/duet/p-53b8ff1e.system.entry.js +4 -0
  151. package/lib/duet/{p-f47c3d89.system.entry.js → p-55a7c445.system.entry.js} +2 -2
  152. package/lib/duet/{p-6cb203fe.system.entry.js → p-56d12aca.system.entry.js} +1 -1
  153. package/lib/duet/{p-173f45ea.entry.js → p-60ef49b0.entry.js} +1 -1
  154. package/lib/duet/{p-a123aed1.entry.js → p-6518b98d.entry.js} +1 -1
  155. package/lib/duet/{p-a7fa5d3c.system.entry.js → p-69180d4f.system.entry.js} +1 -1
  156. package/lib/duet/{p-64004291.system.entry.js → p-6e02a236.system.entry.js} +1 -1
  157. package/lib/duet/{p-1541ea7f.system.entry.js → p-6ed460f4.system.entry.js} +1 -1
  158. package/lib/duet/{p-ec16c35f.system.entry.js → p-720c6e22.system.entry.js} +1 -1
  159. package/lib/duet/{p-f6bcc3d6.system.entry.js → p-74e56aba.system.entry.js} +1 -1
  160. package/lib/duet/p-750330d5.entry.js +4 -0
  161. package/lib/duet/{p-f83da548.system.entry.js → p-76263b65.system.entry.js} +2 -2
  162. package/lib/duet/{p-f5fe7f71.entry.js → p-76c11fd4.entry.js} +1 -1
  163. package/lib/duet/p-798355c8.system.js +4 -0
  164. package/lib/duet/{p-e212c603.system.entry.js → p-7bf7db59.system.entry.js} +2 -2
  165. package/lib/duet/{p-dc93e47e.system.entry.js → p-7e951645.system.entry.js} +2 -2
  166. package/lib/duet/p-7ed17661.entry.js +4 -0
  167. package/lib/duet/{p-07507eaf.entry.js → p-7ef5c9a5.entry.js} +1 -1
  168. package/lib/duet/{p-11eae10d.system.entry.js → p-7f984c27.system.entry.js} +1 -1
  169. package/lib/duet/{p-c7193f83.system.entry.js → p-85be7c9f.system.entry.js} +1 -1
  170. package/lib/duet/p-867497c7.system.entry.js +4 -0
  171. package/lib/duet/{p-93728074.entry.js → p-869a8af0.entry.js} +1 -1
  172. package/lib/duet/{p-60cc813f.entry.js → p-8714d15d.entry.js} +1 -1
  173. package/lib/duet/p-876175fe.entry.js +4 -0
  174. package/lib/duet/{p-19baba2c.system.entry.js → p-88113f53.system.entry.js} +2 -2
  175. package/lib/duet/{p-fd191588.system.entry.js → p-8828fc2e.system.entry.js} +1 -1
  176. package/lib/duet/p-88996447.entry.js +4 -0
  177. package/lib/duet/p-8de3ea21.system.entry.js +4 -0
  178. package/lib/duet/p-8e9cbd88.entry.js +4 -0
  179. package/lib/duet/{p-87cddc77.entry.js → p-91a3e8db.entry.js} +1 -1
  180. package/lib/duet/{p-d893adf0.system.entry.js → p-927f850c.system.entry.js} +1 -1
  181. package/lib/duet/p-97b88959.system.entry.js +4 -0
  182. package/lib/duet/{p-4250a32c.system.entry.js → p-97bbef5f.system.entry.js} +2 -2
  183. package/lib/duet/{p-03c07265.entry.js → p-97d54e2d.entry.js} +1 -1
  184. package/lib/duet/{p-eaf8c9b9.system.entry.js → p-98cf83b0.system.entry.js} +1 -1
  185. package/lib/duet/{p-0e6b7e4b.entry.js → p-9954eddc.entry.js} +1 -1
  186. package/lib/duet/p-9d86935b.entry.js +4 -0
  187. package/lib/duet/p-a18f86a0.entry.js +4 -0
  188. package/lib/duet/{p-4578a009.system.entry.js → p-a36592fe.system.entry.js} +1 -1
  189. package/lib/duet/{p-99802812.system.js → p-a418cba4.system.js} +1 -1
  190. package/lib/duet/{p-a5c6944a.entry.js → p-ac368fcb.entry.js} +1 -1
  191. package/lib/duet/p-af4aafea.entry.js +4 -0
  192. package/lib/duet/p-b2a01d36.entry.js +4 -0
  193. package/lib/duet/{p-c42c606f.system.entry.js → p-b2e25ecf.system.entry.js} +1 -1
  194. package/lib/duet/{p-542af014.system.js → p-b668b67c.system.js} +0 -0
  195. package/lib/duet/p-b708426c.entry.js +4 -0
  196. package/lib/duet/p-b7a90031.entry.js +4 -0
  197. package/lib/duet/{p-3a1e3e0e.system.entry.js → p-bf052bc0.system.entry.js} +1 -1
  198. package/lib/duet/p-c21bd47a.js +5 -0
  199. package/lib/duet/{p-a2540f4c.entry.js → p-c576c929.entry.js} +1 -1
  200. package/lib/duet/{p-34cf4621.entry.js → p-c6e70db9.entry.js} +1 -1
  201. package/lib/duet/{p-66581277.system.entry.js → p-cabfb664.system.entry.js} +1 -1
  202. package/lib/duet/{p-15605c5b.system.entry.js → p-cd5ed901.system.entry.js} +1 -1
  203. package/lib/duet/{p-27d238c5.js → p-d4c234ed.js} +1 -1
  204. package/lib/duet/{p-dec7be82.system.entry.js → p-d65262fb.system.entry.js} +1 -1
  205. package/lib/duet/{p-29618e0a.system.entry.js → p-d698f01c.system.entry.js} +1 -1
  206. package/lib/duet/p-d7d0f3b7.entry.js +4 -0
  207. package/lib/duet/{p-34798fb8.entry.js → p-dc1f4e8a.entry.js} +1 -1
  208. package/lib/duet/{p-f97ad46b.system.entry.js → p-df6ebe8d.system.entry.js} +1 -1
  209. package/lib/duet/p-dfa712ca.js +4 -0
  210. package/lib/duet/{p-fb7c4c21.system.entry.js → p-eba2b43d.system.entry.js} +1 -1
  211. package/lib/duet/{p-0a6fe749.system.entry.js → p-ec55c00f.system.entry.js} +1 -1
  212. package/lib/duet/{p-4f13c3a9.entry.js → p-f3a98f22.entry.js} +1 -1
  213. package/lib/duet/{p-29757074.entry.js → p-f9501a56.entry.js} +1 -1
  214. package/lib/duet/p-ff46ec81.system.js +16 -0
  215. package/lib/esm/{dom-3c479050.js → dom-3dbcb0d8.js} +1 -1
  216. package/lib/esm/duet-action-button.entry.js +16 -8
  217. package/lib/esm/duet-alert.entry.js +2 -2
  218. package/lib/esm/duet-badge.entry.js +2 -2
  219. package/lib/esm/duet-breadcrumb.entry.js +2 -2
  220. package/lib/esm/duet-breadcrumbs.entry.js +3 -3
  221. package/lib/esm/duet-button_2.entry.js +17 -2
  222. package/lib/esm/duet-caption_4.entry.js +3 -3
  223. package/lib/esm/duet-card.entry.js +2 -2
  224. package/lib/esm/duet-checkbox.entry.js +15 -3
  225. package/lib/esm/duet-choice_2.entry.js +16 -4
  226. package/lib/esm/duet-collapsible.entry.js +2 -2
  227. package/lib/esm/duet-combobox.entry.js +2 -2
  228. package/lib/esm/duet-cookie-consent.entry.js +2 -2
  229. package/lib/esm/duet-date-picker.entry.js +3 -4
  230. package/lib/esm/duet-divider_2.entry.js +2 -2
  231. package/lib/esm/duet-editable-table_3.entry.js +6 -6
  232. package/lib/esm/duet-empty-state.entry.js +2 -2
  233. package/lib/esm/duet-fieldset.entry.js +2 -2
  234. package/lib/esm/duet-footer.entry.js +2 -2
  235. package/lib/esm/duet-grid_2.entry.js +2 -2
  236. package/lib/esm/duet-header_2.entry.js +3 -3
  237. package/lib/esm/duet-hero.entry.js +2 -2
  238. package/lib/esm/duet-icon.entry.js +2 -2
  239. package/lib/esm/duet-input_2.entry.js +18 -4
  240. package/lib/esm/duet-layout.entry.js +1 -1
  241. package/lib/esm/duet-list_2.entry.js +2 -2
  242. package/lib/esm/duet-modal.entry.js +12 -4
  243. package/lib/esm/duet-notification_2.entry.js +2 -2
  244. package/lib/esm/duet-number-input.entry.js +106 -49
  245. package/lib/esm/duet-pagination_2.entry.js +19 -3
  246. package/lib/esm/duet-progress.entry.js +15 -3
  247. package/lib/esm/duet-radio_2.entry.js +15 -3
  248. package/lib/esm/duet-range-slider.entry.js +2 -2
  249. package/lib/esm/duet-scrollable_3.entry.js +2 -2
  250. package/lib/esm/duet-select.entry.js +2 -2
  251. package/lib/esm/duet-step_2.entry.js +2 -2
  252. package/lib/esm/duet-textarea.entry.js +17 -3
  253. package/lib/esm/duet-toggle.entry.js +15 -3
  254. package/lib/esm/duet-tooltip.entry.js +2 -2
  255. package/lib/esm/duet-tray.entry.js +2 -2
  256. package/lib/esm/duet-upload-aria-status.entry.js +1 -1
  257. package/lib/esm/duet-visually-hidden.entry.js +1 -1
  258. package/lib/esm/duet.js +4 -4
  259. package/lib/esm/{focus-utils-b62b9ffc.js → focus-utils-a1fd6cac.js} +1 -1
  260. package/lib/esm/{index-f5582df1.js → index-179c634c.js} +11 -9
  261. package/lib/esm/loader.js +3 -3
  262. package/lib/esm/polyfills/css-shim.js +1 -1
  263. package/lib/esm/{shadow-css-fbe49d20.js → shadow-css-501eda9a.js} +2 -3
  264. package/lib/esm/{themeable-component-e8fc98bf.js → themeable-component-cb76be7c.js} +0 -0
  265. package/lib/esm-es5/{dom-3c479050.js → dom-3dbcb0d8.js} +0 -0
  266. package/lib/esm-es5/duet-action-button.entry.js +2 -2
  267. package/lib/esm-es5/duet-alert.entry.js +1 -1
  268. package/lib/esm-es5/duet-badge.entry.js +1 -1
  269. package/lib/esm-es5/duet-breadcrumb.entry.js +1 -1
  270. package/lib/esm-es5/duet-breadcrumbs.entry.js +1 -1
  271. package/lib/esm-es5/duet-button_2.entry.js +1 -1
  272. package/lib/esm-es5/duet-caption_4.entry.js +1 -1
  273. package/lib/esm-es5/duet-card.entry.js +1 -1
  274. package/lib/esm-es5/duet-checkbox.entry.js +1 -1
  275. package/lib/esm-es5/duet-choice_2.entry.js +2 -2
  276. package/lib/esm-es5/duet-collapsible.entry.js +1 -1
  277. package/lib/esm-es5/duet-combobox.entry.js +1 -1
  278. package/lib/esm-es5/duet-cookie-consent.entry.js +1 -1
  279. package/lib/esm-es5/duet-date-picker.entry.js +1 -1
  280. package/lib/esm-es5/duet-divider_2.entry.js +1 -1
  281. package/lib/esm-es5/duet-editable-table_3.entry.js +2 -2
  282. package/lib/esm-es5/duet-empty-state.entry.js +1 -1
  283. package/lib/esm-es5/duet-fieldset.entry.js +1 -1
  284. package/lib/esm-es5/duet-footer.entry.js +1 -1
  285. package/lib/esm-es5/duet-grid_2.entry.js +1 -1
  286. package/lib/esm-es5/duet-header_2.entry.js +1 -1
  287. package/lib/esm-es5/duet-hero.entry.js +1 -1
  288. package/lib/esm-es5/duet-icon.entry.js +1 -1
  289. package/lib/esm-es5/duet-input_2.entry.js +1 -1
  290. package/lib/esm-es5/duet-layout.entry.js +1 -1
  291. package/lib/esm-es5/duet-list_2.entry.js +1 -1
  292. package/lib/esm-es5/duet-modal.entry.js +2 -2
  293. package/lib/esm-es5/duet-notification_2.entry.js +1 -1
  294. package/lib/esm-es5/duet-number-input.entry.js +2 -2
  295. package/lib/esm-es5/duet-pagination_2.entry.js +2 -2
  296. package/lib/esm-es5/duet-progress.entry.js +1 -1
  297. package/lib/esm-es5/duet-radio_2.entry.js +1 -1
  298. package/lib/esm-es5/duet-range-slider.entry.js +1 -1
  299. package/lib/esm-es5/duet-scrollable_3.entry.js +1 -1
  300. package/lib/esm-es5/duet-select.entry.js +1 -1
  301. package/lib/esm-es5/duet-step_2.entry.js +1 -1
  302. package/lib/esm-es5/duet-textarea.entry.js +2 -2
  303. package/lib/esm-es5/duet-toggle.entry.js +2 -2
  304. package/lib/esm-es5/duet-tooltip.entry.js +1 -1
  305. package/lib/esm-es5/duet-tray.entry.js +1 -1
  306. package/lib/esm-es5/duet-upload-aria-status.entry.js +1 -1
  307. package/lib/esm-es5/duet-visually-hidden.entry.js +1 -1
  308. package/lib/esm-es5/duet.js +1 -1
  309. package/lib/esm-es5/{focus-utils-b62b9ffc.js → focus-utils-a1fd6cac.js} +1 -1
  310. package/lib/esm-es5/index-179c634c.js +5 -0
  311. package/lib/esm-es5/loader.js +1 -1
  312. package/lib/esm-es5/shadow-css-501eda9a.js +15 -0
  313. package/lib/esm-es5/{themeable-component-e8fc98bf.js → themeable-component-cb76be7c.js} +0 -0
  314. package/lib/types/common/a11y-component.d.ts +13 -0
  315. package/lib/types/{utils → common}/form-components.d.ts +0 -1
  316. package/lib/types/common/index.d.ts +3 -0
  317. package/lib/types/{utils → common}/themeable-component.d.ts +0 -0
  318. package/lib/types/components/duet-action-button/duet-action-button.d.ts +15 -7
  319. package/lib/types/components/duet-alert/duet-alert.d.ts +1 -1
  320. package/lib/types/components/duet-badge/duet-badge.d.ts +1 -1
  321. package/lib/types/components/duet-breadcrumbs/duet-breadcrumb.d.ts +1 -1
  322. package/lib/types/components/duet-breadcrumbs/duet-breadcrumbs.d.ts +1 -1
  323. package/lib/types/components/duet-button/duet-button.d.ts +14 -3
  324. package/lib/types/components/duet-caption/duet-caption.d.ts +1 -1
  325. package/lib/types/components/duet-card/duet-card.d.ts +1 -1
  326. package/lib/types/components/duet-checkbox/duet-checkbox.d.ts +14 -3
  327. package/lib/types/components/duet-choice/duet-choice.d.ts +14 -3
  328. package/lib/types/components/duet-choice-group/duet-choice-group.d.ts +1 -1
  329. package/lib/types/components/duet-collapsible/duet-collapsible.d.ts +1 -1
  330. package/lib/types/components/duet-combobox/duet-combobox.d.ts +1 -1
  331. package/lib/types/components/duet-cookie-consent/duet-cookie-consent.d.ts +1 -1
  332. package/lib/types/components/duet-date-picker/duet-date-picker.d.ts +2 -2
  333. package/lib/types/components/duet-divider/duet-divider.d.ts +1 -1
  334. package/lib/types/components/duet-editable-table/duet-editable-table.d.ts +1 -1
  335. package/lib/types/components/duet-empty-state/duet-empty-state.d.ts +1 -1
  336. package/lib/types/components/duet-fieldset/duet-fieldset.d.ts +1 -1
  337. package/lib/types/components/duet-footer/duet-footer.d.ts +1 -1
  338. package/lib/types/components/duet-grid-item/duet-grid-item.d.ts +1 -1
  339. package/lib/types/components/duet-header/duet-header.d.ts +1 -1
  340. package/lib/types/components/duet-heading/duet-heading.d.ts +1 -1
  341. package/lib/types/components/duet-hero/duet-hero.d.ts +1 -1
  342. package/lib/types/components/duet-icon/duet-icon.d.ts +1 -1
  343. package/lib/types/components/duet-input/duet-input.d.ts +15 -4
  344. package/lib/types/components/duet-label/duet-label.d.ts +1 -1
  345. package/lib/types/components/duet-link/duet-link.d.ts +1 -1
  346. package/lib/types/components/duet-list/duet-list.d.ts +1 -1
  347. package/lib/types/components/duet-logo/duet-logo.d.ts +1 -1
  348. package/lib/types/components/duet-modal/duet-modal.d.ts +18 -2
  349. package/lib/types/components/duet-notification/duet-notification.d.ts +1 -1
  350. package/lib/types/components/duet-notification-drawer/duet-notification-drawer.d.ts +1 -1
  351. package/lib/types/components/duet-number-input/duet-number-input.d.ts +14 -4
  352. package/lib/types/components/duet-pagination/duet-pagination.d.ts +18 -2
  353. package/lib/types/components/duet-paragraph/duet-paragraph.d.ts +1 -1
  354. package/lib/types/components/duet-progress/duet-progress.d.ts +14 -2
  355. package/lib/types/components/duet-radio/duet-radio.d.ts +14 -3
  356. package/lib/types/components/duet-radio-group/duet-radio-group.d.ts +1 -1
  357. package/lib/types/components/duet-range-slider/duet-range-slider.d.ts +2 -2
  358. package/lib/types/components/duet-range-stepper/duet-range-stepper.d.ts +1 -1
  359. package/lib/types/components/duet-scrollable/duet-scrollable.d.ts +1 -1
  360. package/lib/types/components/duet-select/duet-select.d.ts +2 -2
  361. package/lib/types/components/duet-spinner/duet-spinner.d.ts +1 -1
  362. package/lib/types/components/duet-step/duet-step.d.ts +1 -1
  363. package/lib/types/components/duet-stepper/duet-stepper.d.ts +1 -1
  364. package/lib/types/components/duet-tab-group/duet-tab-group.d.ts +1 -1
  365. package/lib/types/components/duet-table/duet-table.d.ts +1 -1
  366. package/lib/types/components/duet-textarea/duet-textarea.d.ts +14 -3
  367. package/lib/types/components/duet-toggle/duet-toggle.d.ts +14 -3
  368. package/lib/types/components/duet-tooltip/duet-tooltip.d.ts +1 -1
  369. package/lib/types/components/duet-tray/duet-tray.d.ts +1 -1
  370. package/lib/types/components/duet-upload/duet-upload.d.ts +2 -2
  371. package/lib/types/components.d.ts +520 -112
  372. package/lib/types/utils/math.utils.d.ts +11 -0
  373. package/package.json +8 -9
  374. package/lib/collection/components/duet-number-input/number-input-utils.js +0 -26
  375. package/lib/duet/p-01842017.entry.js +0 -4
  376. package/lib/duet/p-0965cfe4.entry.js +0 -4
  377. package/lib/duet/p-0c69febe.js +0 -4
  378. package/lib/duet/p-10916256.entry.js +0 -4
  379. package/lib/duet/p-23dba576.system.entry.js +0 -4
  380. package/lib/duet/p-28604a8c.entry.js +0 -4
  381. package/lib/duet/p-32c13bc9.entry.js +0 -4
  382. package/lib/duet/p-3aee83a1.entry.js +0 -4
  383. package/lib/duet/p-4d1eb579.entry.js +0 -4
  384. package/lib/duet/p-4d5c234a.entry.js +0 -4
  385. package/lib/duet/p-5801a726.system.entry.js +0 -4
  386. package/lib/duet/p-582d2285.entry.js +0 -4
  387. package/lib/duet/p-645027b3.entry.js +0 -4
  388. package/lib/duet/p-6d27eb2f.js +0 -4
  389. package/lib/duet/p-70ee0987.entry.js +0 -4
  390. package/lib/duet/p-76a4bb32.entry.js +0 -4
  391. package/lib/duet/p-7af04f14.entry.js +0 -4
  392. package/lib/duet/p-7bea9dea.system.js +0 -4
  393. package/lib/duet/p-7c01c28f.entry.js +0 -4
  394. package/lib/duet/p-81666e2f.entry.js +0 -4
  395. package/lib/duet/p-864d37c9.entry.js +0 -4
  396. package/lib/duet/p-92a25fb5.system.js +0 -16
  397. package/lib/duet/p-961bf024.entry.js +0 -4
  398. package/lib/duet/p-97fd533f.entry.js +0 -4
  399. package/lib/duet/p-a1d17cd4.system.entry.js +0 -4
  400. package/lib/duet/p-aa3544c4.entry.js +0 -4
  401. package/lib/duet/p-b51ab460.system.entry.js +0 -4
  402. package/lib/duet/p-b91c31a7.system.entry.js +0 -4
  403. package/lib/duet/p-c1326be0.system.entry.js +0 -4
  404. package/lib/duet/p-d5f96b6f.system.entry.js +0 -4
  405. package/lib/duet/p-d7b5c4bc.entry.js +0 -4
  406. package/lib/duet/p-dab62275.system.js +0 -4
  407. package/lib/duet/p-f1d98881.system.entry.js +0 -4
  408. package/lib/esm-es5/index-f5582df1.js +0 -4
  409. package/lib/esm-es5/shadow-css-fbe49d20.js +0 -15
  410. package/lib/types/components/duet-number-input/number-input-utils.d.ts +0 -4
@@ -8,9 +8,9 @@ import newWindowIcon from "@duetds/icons/lib/assets/action-new-window";
8
8
  import newWindowIconSmall from "@duetds/icons/lib/assets/action-new-window-small";
9
9
  import { Component, Element, Event, Fragment, h, Prop, State, Watch } from "@stencil/core";
10
10
  import { DuetStringsExternalDefaults } from "../../common-strings";
11
+ import { inheritGlobalTheme } from "../../common/themeable-component";
11
12
  import { getLanguage, getLocaleString } from "../../utils/language-utils";
12
13
  import { parsePossibleJSON } from "../../utils/string-utils";
13
- import { inheritGlobalTheme } from "../../utils/themeable-component";
14
14
  const i18n = {
15
15
  fi: { lahi: "© LähiTapiola", turva: "© Turva" },
16
16
  sv: { lahi: "© LokalTapiola", turva: "© Turva" },
@@ -2,7 +2,7 @@
2
2
  * Built with Duet Design System
3
3
  */
4
4
  import { Component, h, Host, Prop } from "@stencil/core";
5
- import { inheritGlobalTheme } from "../../utils/themeable-component";
5
+ import { inheritGlobalTheme } from "../../common/themeable-component";
6
6
  export class DuetGridItem {
7
7
  constructor() {
8
8
  /**
@@ -292,11 +292,11 @@
292
292
  }
293
293
  @media (min-width: 62em) {
294
294
  .duet-header-items .duet-header-item {
295
+ font-weight: 600;
295
296
  border-radius: 4px;
296
297
  }
297
298
  }
298
299
  .duet-theme-turva .duet-header-items .duet-header-item {
299
- font-weight: 600;
300
300
  color: #171c3a;
301
301
  border-color: #e1e3e6;
302
302
  }
@@ -11,10 +11,10 @@ import { media_query_large } from "@duetds/tokens/lib/tokens.json";
11
11
  import { Build, Component, Element, Event, Fragment, h, Host, Listen, Method, Prop, State, Watch, } from "@stencil/core";
12
12
  import { disableBodyScroll, enableBodyScroll } from "body-scroll-lock/lib/bodyScrollLock.es6.js";
13
13
  import { DuetStringsExternalDefaults } from "../../common-strings";
14
+ import { inheritGlobalTheme } from "../../common/themeable-component";
14
15
  import { isArrowDownKey, isArrowLeftKey, isArrowRightKey, isArrowUpKey, isEscapeKey, isSpaceKey, } from "../../utils/keyboard-utils";
15
16
  import { getLanguage, getLocaleString } from "../../utils/language-utils";
16
17
  import { parsePossibleJSON } from "../../utils/string-utils";
17
- import { inheritGlobalTheme } from "../../utils/themeable-component";
18
18
  import { DuetHeaderDropdown } from "./duet-header-dropdown";
19
19
  import { DuetHeaderHamburger } from "./duet-header-hamburger";
20
20
  import { DuetHeaderIcon } from "./duet-header-icon";
@@ -127,6 +127,9 @@
127
127
  font-size: 2.25rem;
128
128
  }
129
129
  }
130
+ .duet-heading.h2.duet-theme-turva {
131
+ font-style: normal;
132
+ }
130
133
  @media (max-width: 22.5em) {
131
134
  .duet-heading.h2 {
132
135
  font-size: 1.375rem;
@@ -2,8 +2,8 @@
2
2
  * Built with Duet Design System
3
3
  */
4
4
  import { Component, Element, h, Prop } from "@stencil/core";
5
+ import { inheritGlobalTheme } from "../../common/themeable-component";
5
6
  import { sanitizeString } from "../../utils/string-utils";
6
- import { inheritGlobalTheme } from "../../utils/themeable-component";
7
7
  import { getColorByName } from "../../utils/token-utils";
8
8
  export class DuetHeading {
9
9
  constructor() {
@@ -4,9 +4,9 @@
4
4
  import newWindowIcon from "@duetds/icons/lib/assets/action-new-window-small";
5
5
  import { Component, Element, Event, h, Prop, State, Watch } from "@stencil/core";
6
6
  import { DuetStringsExternalDefaults } from "../../common-strings";
7
+ import { inheritGlobalTheme } from "../../common/themeable-component";
7
8
  import { getLanguage, getLocaleString } from "../../utils/language-utils";
8
9
  import { parsePossibleJSON } from "../../utils/string-utils";
9
- import { inheritGlobalTheme } from "../../utils/themeable-component";
10
10
  /**
11
11
  * @slot default - This is an unamed slot for a text or extra button that is placed after any buttons (or list item)
12
12
  * @slot badge - This is a slot for a status badge that sits next to pre-heading inside the hero component.
@@ -2,7 +2,7 @@
2
2
  * Built with Duet Design System
3
3
  */
4
4
  import { Build, Component, Element, h, Host, Prop, State, Watch } from "@stencil/core";
5
- import { inheritGlobalTheme } from "../../utils/themeable-component";
5
+ import { inheritGlobalTheme } from "../../common/themeable-component";
6
6
  import { getColorByName } from "../../utils/token-utils";
7
7
  import { buildIconUrl, fetchIconByUrl } from "./icon-utils";
8
8
  export class DuetIcon {
@@ -4,11 +4,11 @@
4
4
  import emailIcon from "@duetds/icons/lib/assets/form-email";
5
5
  import searchIcon from "@duetds/icons/lib/assets/form-search";
6
6
  import { Component, Element, Event, h, Host, Method, Prop, Watch } from "@stencil/core";
7
+ import { inheritGlobalTheme } from "../../common";
7
8
  import { createID } from "../../utils/create-id";
8
9
  import { cleanValue, resetCursor } from "../../utils/input-utils";
9
10
  import { isEscapeKey } from "../../utils/keyboard-utils";
10
11
  import { getLocaleString } from "../../utils/language-utils";
11
- import { inheritGlobalTheme } from "../../utils/themeable-component";
12
12
  const icons = {
13
13
  search: searchIcon,
14
14
  email: emailIcon,
@@ -31,13 +31,25 @@ export class DuetInput {
31
31
  sv: "Rensa",
32
32
  });
33
33
  /**
34
- * Indicates the id of a component that describes the input.
34
+ * Indicates the id or a string of space seperated ids of a component(s) that describes the input.
35
35
  */
36
36
  this.accessibleDescribedBy = "";
37
37
  /**
38
38
  * Indicates value of any popup element associated with the input.
39
39
  */
40
40
  this.accessibleHasPopup = undefined;
41
+ /**
42
+ * Aria Details of the component
43
+ */
44
+ this.accessibleDetails = undefined;
45
+ /**
46
+ * String of id's that indicate alternative labels elements
47
+ */
48
+ this.accessibleLabelledBy = undefined;
49
+ /**
50
+ * Aria description the button
51
+ */
52
+ this.accessibleDescription = undefined;
41
53
  /**
42
54
  * Set the amount of time, in milliseconds, to wait to trigger the duetChange
43
55
  * event after each keystroke.
@@ -290,7 +302,9 @@ export class DuetInput {
290
302
  disabled: this.disabled,
291
303
  "is-number": this.component === "number",
292
304
  "is-date": this.component === "date",
293
- }, value: this.value, disabled: this.disabled, "aria-invalid": this.error ? "true" : "false", "aria-labelledby": `${this.labelId} ${this.errorId}`, "aria-controls": this.accessibleControls, "aria-autocomplete": this.accessibleAutocomplete, "aria-activedescendant": this.accessibleActiveDescendant, "aria-expanded": this.accessibleExpanded, "aria-haspopup": this.accessibleHasPopup, "aria-owns": this.accessibleOwns, "aria-describedby": this.getDescribedBy(), placeholder: this.placeholder, spellcheck: "false", minlength: this.minlength, maxlength: this.maxlength, autocomplete: this.autoComplete, required: this.required, role: this.role, name: this.name, id: identifier }, inputProps)),
305
+ }, value: this.value, disabled: this.disabled, "aria-invalid": this.error ? "true" : "false", "aria-labelledby": this.accessibleLabelledBy
306
+ ? `${this.labelId} ${this.errorId} ${this.accessibleLabelledBy}`
307
+ : `${this.labelId} ${this.errorId}`, "aria-controls": this.accessibleControls, "aria-autocomplete": this.accessibleAutocomplete, "aria-activedescendant": this.accessibleActiveDescendant, "aria-details": this.accessibleDetails, "aria-description": this.accessibleDescription, "aria-expanded": this.accessibleExpanded, "aria-haspopup": this.accessibleHasPopup, "aria-owns": this.accessibleOwns, "aria-describedby": this.getDescribedBy(), placeholder: this.placeholder, spellcheck: "false", minlength: this.minlength, maxlength: this.maxlength, autocomplete: this.autoComplete, required: this.required, role: this.role, name: this.name, id: identifier }, inputProps)),
294
308
  !this.icon &&
295
309
  this.type !== "text" &&
296
310
  this.type !== "tel" &&
@@ -412,7 +426,7 @@ export class DuetInput {
412
426
  "optional": false,
413
427
  "docs": {
414
428
  "tags": [],
415
- "text": "Indicates the id of a component that describes the input."
429
+ "text": "Indicates the id or a string of space seperated ids of a component(s) that describes the input."
416
430
  },
417
431
  "attribute": "accessible-described-by",
418
432
  "reflect": false,
@@ -436,6 +450,60 @@ export class DuetInput {
436
450
  "reflect": false,
437
451
  "defaultValue": "undefined"
438
452
  },
453
+ "accessibleDetails": {
454
+ "type": "string",
455
+ "mutable": false,
456
+ "complexType": {
457
+ "original": "string",
458
+ "resolved": "string",
459
+ "references": {}
460
+ },
461
+ "required": false,
462
+ "optional": false,
463
+ "docs": {
464
+ "tags": [],
465
+ "text": "Aria Details of the component"
466
+ },
467
+ "attribute": "accessible-details",
468
+ "reflect": false,
469
+ "defaultValue": "undefined"
470
+ },
471
+ "accessibleLabelledBy": {
472
+ "type": "string",
473
+ "mutable": false,
474
+ "complexType": {
475
+ "original": "string",
476
+ "resolved": "string",
477
+ "references": {}
478
+ },
479
+ "required": false,
480
+ "optional": false,
481
+ "docs": {
482
+ "tags": [],
483
+ "text": "String of id's that indicate alternative labels elements"
484
+ },
485
+ "attribute": "accessible-labelled-by",
486
+ "reflect": false,
487
+ "defaultValue": "undefined"
488
+ },
489
+ "accessibleDescription": {
490
+ "type": "string",
491
+ "mutable": false,
492
+ "complexType": {
493
+ "original": "string",
494
+ "resolved": "string",
495
+ "references": {}
496
+ },
497
+ "required": false,
498
+ "optional": false,
499
+ "docs": {
500
+ "tags": [],
501
+ "text": "Aria description the button"
502
+ },
503
+ "attribute": "accessible-description",
504
+ "reflect": false,
505
+ "defaultValue": "undefined"
506
+ },
439
507
  "debounce": {
440
508
  "type": "number",
441
509
  "mutable": false,
@@ -2,7 +2,7 @@
2
2
  * Built with Duet Design System
3
3
  */
4
4
  import { Component, h, Host, Prop } from "@stencil/core";
5
- import { inheritGlobalTheme } from "../../utils/themeable-component";
5
+ import { inheritGlobalTheme } from "../../common/themeable-component";
6
6
  export class DuetLabel {
7
7
  constructor() {
8
8
  /**
@@ -4,8 +4,8 @@
4
4
  import newWindowIcon from "@duetds/icons/lib/assets/action-new-window-small";
5
5
  import { Build, Component, Fragment, h, Host, Method, Prop } from "@stencil/core";
6
6
  import { DuetStringsExternalDefaults } from "../../common-strings";
7
+ import { inheritGlobalTheme } from "../../common/themeable-component";
7
8
  import { getLanguage, getLocaleString } from "../../utils/language-utils";
8
- import { inheritGlobalTheme } from "../../utils/themeable-component";
9
9
  /**
10
10
  * @part duet-link - piercing selector for styling the link
11
11
  */
@@ -2,7 +2,7 @@
2
2
  * Built with Duet Design System
3
3
  */
4
4
  import { Component, Element, h, Prop, Watch } from "@stencil/core";
5
- import { inheritGlobalTheme } from "../../utils/themeable-component";
5
+ import { inheritGlobalTheme } from "../../common/themeable-component";
6
6
  import { watchForOptions } from "../../utils/watch-options";
7
7
  export class DuetList {
8
8
  constructor() {
@@ -3,9 +3,9 @@
3
3
  */
4
4
  import { colorBrandBlue, colorBrandGrayTurva, colorGrayLightest, colorPrimaryTurva } from "@duetds/tokens";
5
5
  import { Component, Element, h, Host, Method, Prop } from "@stencil/core";
6
+ import { inheritGlobalTheme } from "../../common/themeable-component";
6
7
  import { createID } from "../../utils/create-id";
7
8
  import { getLanguage } from "../../utils/language-utils";
8
- import { inheritGlobalTheme } from "../../utils/themeable-component";
9
9
  const TurvaLogo = ({ inverse, logoId }) => {
10
10
  const logoColor = inverse ? colorGrayLightest : colorBrandGrayTurva;
11
11
  const textColor = inverse ? colorGrayLightest : colorPrimaryTurva;
@@ -3,11 +3,11 @@
3
3
  */
4
4
  import { Component, Element, Event, h, Listen, Method, Prop, State, Watch } from "@stencil/core";
5
5
  import { disableBodyScroll, enableBodyScroll } from "body-scroll-lock/lib/bodyScrollLock.es6.js";
6
+ import { inheritGlobalTheme } from "../../common";
6
7
  import { createID } from "../../utils/create-id";
7
8
  import { focusElement, FocusGuard } from "../../utils/focus-utils";
8
9
  import { isEscapeKey } from "../../utils/keyboard-utils";
9
10
  import { getLanguage, getLocaleString } from "../../utils/language-utils";
10
- import { inheritGlobalTheme } from "../../utils/themeable-component";
11
11
  // The transition below is slightly higher than the actual CSS transition as VoiceOver on
12
12
  // iOS has otherwise problems moving the focus from modal back to the original element.
13
13
  // This issue is similar to what we’ve seen in Duet Date Picker + iOS VoiceOver.
@@ -71,6 +71,14 @@ export class DuetModal {
71
71
  * Size of the modal window.
72
72
  */
73
73
  this.size = "medium";
74
+ /**
75
+ * Details of the component
76
+ */
77
+ this.accessibleDetails = undefined;
78
+ /**
79
+ * Aria description the button
80
+ */
81
+ this.accessibleDescription = undefined;
74
82
  /**
75
83
  * Size of the modal window.
76
84
  */
@@ -212,7 +220,7 @@ export class DuetModal {
212
220
  iconColor = "primary-turva";
213
221
  closeColor = "secondary-turva";
214
222
  }
215
- return (h("div", { ref: modal => (this.modalEl = modal), "aria-labelledby": this.heading ? this.modalId : false, "aria-describedby": this.slotDefaultId, role: "dialog", "aria-modal": this.isSafariBrowser ? false : true, tabindex: "-1", "aria-flowto": this.slotDefaultId, class: {
223
+ return (h("div", { ref: modal => (this.modalEl = modal), "aria-labelledby": this.heading ? this.modalId : false, "aria-details": this.accessibleDetails, "aria-description": this.accessibleDescription, "aria-describedby": this.accessibleDescribedBy ? `${this.slotDefaultId} ${this.accessibleDescribedBy}` : this.slotDefaultId, role: "dialog", "aria-modal": this.isSafariBrowser ? false : true, tabindex: "-1", "aria-flowto": this.slotDefaultId, class: {
216
224
  "duet-modal-overlay": true,
217
225
  "duet-theme-turva": this.theme === "turva",
218
226
  "duet-modal-active": this.open,
@@ -356,6 +364,76 @@ export class DuetModal {
356
364
  "reflect": false,
357
365
  "defaultValue": "\"medium\""
358
366
  },
367
+ "accessibleDescribedBy": {
368
+ "type": "string",
369
+ "mutable": false,
370
+ "complexType": {
371
+ "original": "string",
372
+ "resolved": "string",
373
+ "references": {}
374
+ },
375
+ "required": false,
376
+ "optional": false,
377
+ "docs": {
378
+ "tags": [],
379
+ "text": "Indicates the id or a string of space seperated ids of a component(s) that describes the input."
380
+ },
381
+ "attribute": "accessible-described-by",
382
+ "reflect": false
383
+ },
384
+ "accessibleLabelledBy": {
385
+ "type": "string",
386
+ "mutable": false,
387
+ "complexType": {
388
+ "original": "string",
389
+ "resolved": "string",
390
+ "references": {}
391
+ },
392
+ "required": false,
393
+ "optional": false,
394
+ "docs": {
395
+ "tags": [],
396
+ "text": "Indicates the id or a string of space seperated ids of a component(s) that labels the input."
397
+ },
398
+ "attribute": "accessible-labelled-by",
399
+ "reflect": false
400
+ },
401
+ "accessibleDetails": {
402
+ "type": "string",
403
+ "mutable": false,
404
+ "complexType": {
405
+ "original": "string",
406
+ "resolved": "string",
407
+ "references": {}
408
+ },
409
+ "required": false,
410
+ "optional": false,
411
+ "docs": {
412
+ "tags": [],
413
+ "text": "Details of the component"
414
+ },
415
+ "attribute": "accessible-details",
416
+ "reflect": false,
417
+ "defaultValue": "undefined"
418
+ },
419
+ "accessibleDescription": {
420
+ "type": "string",
421
+ "mutable": false,
422
+ "complexType": {
423
+ "original": "string",
424
+ "resolved": "string",
425
+ "references": {}
426
+ },
427
+ "required": false,
428
+ "optional": false,
429
+ "docs": {
430
+ "tags": [],
431
+ "text": "Aria description the button"
432
+ },
433
+ "attribute": "accessible-description",
434
+ "reflect": false,
435
+ "defaultValue": "undefined"
436
+ },
359
437
  "gutterSize": {
360
438
  "type": "string",
361
439
  "mutable": false,
@@ -2,8 +2,8 @@
2
2
  * Built with Duet Design System
3
3
  */
4
4
  import { Component, Element, h, Method, Prop } from "@stencil/core";
5
+ import { inheritGlobalTheme } from "../../common/themeable-component";
5
6
  import { getLanguage, getLocaleString } from "../../utils/language-utils";
6
- import { inheritGlobalTheme } from "../../utils/themeable-component";
7
7
  export class DuetNotification {
8
8
  constructor() {
9
9
  /**
@@ -3,8 +3,8 @@
3
3
  */
4
4
  import arrowDownIcon from "@duetds/icons/lib/assets/action-arrow-down-small";
5
5
  import { Component, Element, h, Listen, Method, Prop, State } from "@stencil/core";
6
+ import { inheritGlobalTheme } from "../../common/themeable-component";
6
7
  import { getLanguage, getLocaleString } from "../../utils/language-utils";
7
- import { inheritGlobalTheme } from "../../utils/themeable-component";
8
8
  const ESC_KEY = 27;
9
9
  export class DuetNotificationDrawer {
10
10
  constructor() {
@@ -4,11 +4,11 @@
4
4
  import addIcon from "@duetds/icons/lib/assets/action-add";
5
5
  import subtractIcon from "@duetds/icons/lib/assets/action-subtract";
6
6
  import { Component, Element, Event, h, Host, Method, Prop, State } from "@stencil/core";
7
+ import { inheritGlobalTheme } from "../../common";
7
8
  import { createID } from "../../utils/create-id";
8
9
  import { isArrowDownKey, isArrowLeftKey, isArrowRightKey, isArrowUpKey, isBackspaceKey, } from "../../utils/keyboard-utils";
9
10
  import { getLanguage, getLocale, getLocaleString } from "../../utils/language-utils";
10
- import { inheritGlobalTheme } from "../../utils/themeable-component";
11
- import { clamp, parseLocaleFloat, roundTo } from "./number-input-utils";
11
+ import { clamp, roundTo, SafeParseFloat } from "../../utils/math.utils";
12
12
  export class DuetNumberInput {
13
13
  constructor() {
14
14
  this.inputId = createID("DuetInput");
@@ -27,6 +27,18 @@ export class DuetNumberInput {
27
27
  * Unit for the number input.
28
28
  */
29
29
  this.unit = getLocale(this.language).money;
30
+ /**
31
+ * Details of the component
32
+ */
33
+ this.accessibleDetails = undefined;
34
+ /**
35
+ * String of id's that indicate alternative labels elements
36
+ */
37
+ this.accessibleLabelledBy = undefined;
38
+ /**
39
+ * Aria description the button
40
+ */
41
+ this.accessibleDescription = undefined;
30
42
  /**
31
43
  * Defaults for accessibleLive
32
44
  * @default {fi: "{current} euroa valittuna", en: "{current} euros selected", sv: "{current} valda euro"}
@@ -162,7 +174,7 @@ export class DuetNumberInput {
162
174
  this.handleChange = (ev) => {
163
175
  const input = ev.target;
164
176
  if (input && input.value) {
165
- let value = this.cleanValue(input.value);
177
+ let value = SafeParseFloat(input.value, this.locale);
166
178
  // Make sure that everything works if the user clears the input and
167
179
  // starts typing non-numeric characters.
168
180
  if (isNaN(value) || value == null) {
@@ -172,7 +184,7 @@ export class DuetNumberInput {
172
184
  this.duetInput.emit({
173
185
  component: "duet-number-input",
174
186
  originalEvent: ev,
175
- value: this.cleanValue(this.value).toString(),
187
+ value: SafeParseFloat(this.value, this.locale).toString(),
176
188
  valueAsNumber: value,
177
189
  });
178
190
  }
@@ -193,30 +205,29 @@ export class DuetNumberInput {
193
205
  if (input.value) {
194
206
  // On blur we want to make sure that the user input is between the min and max values,
195
207
  // and also round it up or down to the nearest step.
196
- let value = this.cleanValue(input.value);
208
+ let value = SafeParseFloat(input.value, this.locale);
197
209
  if (this.rounding) {
198
210
  value = roundTo(value, this.step);
199
211
  }
200
212
  value = clamp(value, this.min, this.max);
201
- if (value !== this.cleanValue(this.value) || value !== this.cleanValue(this.focusedValue)) {
213
+ if (value !== SafeParseFloat(this.value, this.locale) ||
214
+ value !== SafeParseFloat(this.focusedValue, this.locale)) {
202
215
  this.setValue(value);
203
216
  this.emitChange(ev);
204
217
  }
205
218
  }
206
- else {
207
- this.duetChange.emit({
208
- originalEvent: ev,
209
- value: null,
210
- valueAsNumber: null,
211
- component: "duet-number-input",
212
- });
213
- }
219
+ this.duetChange.emit({
220
+ originalEvent: ev,
221
+ value: null,
222
+ valueAsNumber: null,
223
+ component: "duet-number-input",
224
+ });
214
225
  };
215
226
  /**
216
227
  * Local methods.
217
228
  */
218
229
  this.emitChange = (ev) => {
219
- const currentValue = this.cleanValue(this.value);
230
+ const currentValue = SafeParseFloat(this.value, this.locale);
220
231
  this.duetChange.emit({
221
232
  originalEvent: ev,
222
233
  value: currentValue.toString(),
@@ -224,10 +235,6 @@ export class DuetNumberInput {
224
235
  component: "duet-number-input",
225
236
  });
226
237
  };
227
- this.cleanValue = (value) => {
228
- // Returns a number that can be used in calculations.
229
- return value ? parseLocaleFloat(value, this.locale) : null;
230
- };
231
238
  this.localizeValue = (value) => {
232
239
  // Returns a localized string that can be used as input value.
233
240
  return value.toLocaleString(this.locale);
@@ -244,13 +251,13 @@ export class DuetNumberInput {
244
251
  if (ev) {
245
252
  ev.preventDefault();
246
253
  }
247
- const currentValue = this.cleanValue(this.value);
254
+ const cleanedValue = SafeParseFloat(this.value, this.locale);
248
255
  // Only fire change event when necessary
249
- if (currentValue === this.max) {
256
+ if (cleanedValue === this.max) {
250
257
  return;
251
258
  }
252
259
  // in cases where no value set, incrementing should go to min
253
- let newValue = currentValue == null ? this.min : currentValue + this.step;
260
+ let newValue = cleanedValue == null ? this.min : cleanedValue + this.step;
254
261
  // handle cases where value is not multiple of step
255
262
  // e.g. if someone enters 199, with a step of 100, add should go to 200
256
263
  // and if someone enters 101, add should also go to 200
@@ -258,8 +265,8 @@ export class DuetNumberInput {
258
265
  const adjustment = newValue % this.step;
259
266
  newValue -= adjustment;
260
267
  }
261
- newValue = clamp(newValue, this.min, this.max);
262
- this.value = this.localizeValue(newValue);
268
+ const clampedValue = clamp(newValue, this.min, this.max);
269
+ this.value = this.localizeValue(clampedValue);
263
270
  this.emitChange(ev);
264
271
  };
265
272
  this.subtract = (ev) => {
@@ -268,7 +275,7 @@ export class DuetNumberInput {
268
275
  if (ev) {
269
276
  ev.preventDefault();
270
277
  }
271
- const currentValue = this.cleanValue(this.value);
278
+ const currentValue = SafeParseFloat(this.value, this.locale);
272
279
  // Only fire change event when necessary.
273
280
  if (currentValue === this.min) {
274
281
  return;
@@ -293,7 +300,7 @@ export class DuetNumberInput {
293
300
  inheritGlobalTheme(this);
294
301
  // Format the number value to a localeString initially.
295
302
  if (this.value) {
296
- this.value = this.localizeValue(parseLocaleFloat(this.value, this.locale));
303
+ this.value = this.localizeValue(SafeParseFloat(this.value, this.locale));
297
304
  }
298
305
  }
299
306
  /**
@@ -308,7 +315,7 @@ export class DuetNumberInput {
308
315
  this.duetInputElement.value = "";
309
316
  }
310
317
  formatAnnouncement() {
311
- const current = this.cleanValue(this.value);
318
+ const current = SafeParseFloat(this.value, this.locale);
312
319
  if (current == null) {
313
320
  return "";
314
321
  }
@@ -321,14 +328,14 @@ export class DuetNumberInput {
321
328
  render() {
322
329
  const identifier = this.identifier || this.inputId;
323
330
  const maxlength = `${this.localizeValue(this.max)} ${this.unit}`.length;
324
- const cleanedValue = this.cleanValue(this.value);
331
+ const cleanedValue = SafeParseFloat(this.value, this.locale);
325
332
  return (h(Host, { class: {
326
333
  "duet-theme-turva": this.theme === "turva",
327
334
  "duet-expand": this.expand,
328
335
  "duet-m-0": this.margin === "none",
329
336
  } },
330
337
  h("div", { class: "duet-number-container" },
331
- h("duet-input", { ref: input => (this.duetInputElement = input), onDuetChange: event => this.handleChange(event), onDuetFocus: this.handleFocus, onDuetBlur: event => this.handleBlur(event), onKeyDown: event => this.handleKeyDown(event), label: this.label, value: this.value ? `${this.value} ${this.unit}` : "", error: this.error, "aria-valuemin": this.min, "aria-valuemax": this.max, "aria-valuenow": cleanedValue != null ? cleanedValue : "", maxlength: maxlength, name: this.name, component: "number", required: this.required, disabled: this.disabled, role: this.role, labelHidden: this.labelHidden, tooltip: this.tooltip, identifier: identifier, theme: this.theme, margin: "none", expand: true, numericKeyboard: true, autoComplete: "off", type: "text", accessibleActiveDescendant: this.accessibleActiveDescendant, accessibleControls: this.accessibleControls, accessibleOwns: this.accessibleOwns, accessibleDescribedBy: this.accessibleDescribedBy },
338
+ h("duet-input", { ref: input => (this.duetInputElement = input), onDuetChange: event => this.handleChange(event), onDuetFocus: this.handleFocus, onDuetBlur: event => this.handleBlur(event), onKeyDown: event => this.handleKeyDown(event), label: this.label, value: this.value ? `${this.value} ${this.unit}` : "", error: this.error, "aria-valuemin": this.min, "aria-valuemax": this.max, "aria-valuenow": cleanedValue != null ? cleanedValue : "", maxlength: maxlength, name: this.name, component: "number", required: this.required, disabled: this.disabled, role: this.role, labelHidden: this.labelHidden, tooltip: this.tooltip, identifier: identifier, theme: this.theme, margin: "none", expand: true, numericKeyboard: true, autoComplete: "off", type: "text", accessibleActiveDescendant: this.accessibleActiveDescendant, accessibleLabelledBy: this.accessibleLabelledBy, accessibleDescription: this.accessibleDescription, accessibleDetails: this.accessibleDetails, accessibleControls: this.accessibleControls, accessibleOwns: this.accessibleOwns, accessibleDescribedBy: this.accessibleDescribedBy },
332
339
  h("div", { class: { "duet-number-buttons": true, "duet-no-label": this.labelHidden } },
333
340
  h("button", { "aria-controls": identifier, disabled: this.disabled, "aria-disabled": cleanedValue == null || cleanedValue === this.min ? "true" : "false", class: "duet-number-button duet-number-button-subtract", onClick: this.subtract, type: "button" },
334
341
  h("duet-visually-hidden", null,
@@ -457,6 +464,60 @@ export class DuetNumberInput {
457
464
  "attribute": "accessible-controls",
458
465
  "reflect": false
459
466
  },
467
+ "accessibleDetails": {
468
+ "type": "string",
469
+ "mutable": false,
470
+ "complexType": {
471
+ "original": "string",
472
+ "resolved": "string",
473
+ "references": {}
474
+ },
475
+ "required": false,
476
+ "optional": false,
477
+ "docs": {
478
+ "tags": [],
479
+ "text": "Details of the component"
480
+ },
481
+ "attribute": "accessible-details",
482
+ "reflect": false,
483
+ "defaultValue": "undefined"
484
+ },
485
+ "accessibleLabelledBy": {
486
+ "type": "string",
487
+ "mutable": false,
488
+ "complexType": {
489
+ "original": "string",
490
+ "resolved": "string",
491
+ "references": {}
492
+ },
493
+ "required": false,
494
+ "optional": false,
495
+ "docs": {
496
+ "tags": [],
497
+ "text": "String of id's that indicate alternative labels elements"
498
+ },
499
+ "attribute": "accessible-labelled-by",
500
+ "reflect": false,
501
+ "defaultValue": "undefined"
502
+ },
503
+ "accessibleDescription": {
504
+ "type": "string",
505
+ "mutable": false,
506
+ "complexType": {
507
+ "original": "string",
508
+ "resolved": "string",
509
+ "references": {}
510
+ },
511
+ "required": false,
512
+ "optional": false,
513
+ "docs": {
514
+ "tags": [],
515
+ "text": "Aria description the button"
516
+ },
517
+ "attribute": "accessible-description",
518
+ "reflect": false,
519
+ "defaultValue": "undefined"
520
+ },
460
521
  "accessibleOwns": {
461
522
  "type": "string",
462
523
  "mutable": false,