@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
@@ -5,38 +5,88 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-cfea8a15.js');
8
+ const index = require('./index-3024eb44.js');
9
+ const themeableComponent = require('./themeable-component-fdeaef9f.js');
9
10
  const createId = require('./create-id-c3b984b1.js');
10
11
  const keyboardUtils = require('./keyboard-utils-bb32119b.js');
11
12
  const languageUtils = require('./language-utils-4f62a7db.js');
12
- const themeableComponent = require('./themeable-component-940d3b50.js');
13
13
  require('./string-utils-5cadd058.js');
14
14
 
15
15
  var actionAdd={"title":"action-add","tags":"action add plus","svg":"<svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\"><path d=\"M12 24a.75.75 0 0 1-.75-.75v-10.5H.75a.75.75 0 0 1 0-1.5h10.5V.75a.75.75 0 0 1 1.5 0v10.5h10.5a.75.75 0 0 1 0 1.5h-10.5v10.5A.75.75 0 0 1 12 24z\"/></svg>"};
16
16
 
17
17
  var actionSubtract={"title":"action-subtract","tags":"action subtract minus remove delete cancel","svg":"<svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\"><path d=\"M.75 12.788a.75.75 0 0 1 0-1.5h22.5a.75.75 0 0 1 0 1.5z\"/></svg>"};
18
18
 
19
- const parseLocaleFloat = (str, locale) => {
20
- // remove spaces and non-numeric characters
21
- // "12 345,67€" -> "12345,67"
22
- // "12,345.67€" -> "12,345.67"
23
- str = str.replace(/\s+/g, "").replace(/[^0-9\.,]+/g, "");
24
- switch (locale) {
25
- case "fi-FI":
26
- case "sv-SE":
27
- // "12345,67" -> "12345.67"
28
- str = str.replace(",", ".");
29
- break;
30
- case "en-US":
31
- case "en-GB":
32
- // "12,345.67" -> "12345.67"
33
- str = str.replace(/,/g, "");
34
- break;
35
- default:
36
- throw new TypeError(`Unrecognised locale: ${locale}`);
19
+ /**
20
+ * function that takes a string value or number and looks for any character resembling a minus,
21
+ * it will then replace it with a hypen-minus and return the parseFloat value of that string
22
+ * it will string / number cast the value to a number and return that number
23
+ * known issues: if a negative number is indicated with other characters than a "minus like" character, it will throw
24
+ * - an example is that some locales use (number) as an indicator for negative values instead of -number
25
+ */
26
+ function SafeParseFloat(value, locale) {
27
+ let results;
28
+ if (typeof value === "string") {
29
+ //the minuses are NOT the same characters, they differ in unicode for some languages
30
+ // "", "−", "–", and "—"
31
+ let convertedMinus = value.replace("−", "-").replace("‐", "-").replace("−", "-").replace("–", "-").replace("—", "-");
32
+ if (locale) {
33
+ convertedMinus = ConvertToEnUS(convertedMinus, locale, false);
34
+ }
35
+ // replace all possible spaces from the string
36
+ convertedMinus = convertedMinus.replace(/\s+/g, "");
37
+ convertedMinus = convertedMinus.replace(/(?!^-?\d*\.{0,1}\d+$)/g, "");
38
+ /*
39
+ example: https://regex101.com/r/np7FqS/1
40
+ /(?!^-?\d*\.{0,1}\d+$)/g
41
+ Negative Lookahead (?!^-?\d*\.{0,1}\d+$)
42
+ Assert that the Regex below does not match
43
+ ^ asserts position at start of a line
44
+ - matches the character - with index 4510 (2D16 or 558) literally (case sensitive)
45
+ ? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
46
+ \d matches a digit (equivalent to [0-9])
47
+ * matches the previous token between zero and unlimited times, as many times as possible, giving back as needed (greedy)
48
+ \. matches the character . with index 4610 (2E16 or 568) literally (case sensitive)
49
+ {0,1} matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
50
+ \d matches a digit (equivalent to [0-9])
51
+ + matches the previous token between one and unlimited times, as many times as possible, giving back as needed (greedy)
52
+ $ asserts position at the end of a line
53
+ Global pattern flags
54
+ g modifier: global. All matches (don't return after first match)
55
+ m modifier: multi line. Causes ^ and $ to match the begin/end of each line (not only begin/end of string)
56
+ */
57
+ results = parseFloat(convertedMinus);
37
58
  }
38
- return parseFloat(str);
39
- };
59
+ if (typeof value === "number") {
60
+ results = parseFloat(String(value));
61
+ }
62
+ if (!isNaN(Number(results))) {
63
+ return Number(results);
64
+ }
65
+ if (value === null || value === undefined) {
66
+ return null;
67
+ }
68
+ throw new Error("Invalid value passed to SafeParseFloat");
69
+ }
70
+ // string conversion function that takes a locale and coverts decimal indicator to en-US indicator
71
+ // and takes the thousand separator for the given locale and transforms that to the en-US separator
72
+ function ConvertToEnUS(value, locale, replaceThousands = false) {
73
+ let replacedValue;
74
+ const localeSeparator = new Intl.NumberFormat(locale).format(1 / 2).replace(/[0-9]/g, "");
75
+ const enUSSeparator = new Intl.NumberFormat("en-US").format(1 / 2).replace(/[0-9]/g, "");
76
+ const thousandSeparator = new Intl.NumberFormat(locale).format(1000).replace(/[0-9]/g, "");
77
+ const enUSThousandSeparator = new Intl.NumberFormat("en-US").format(1000).replace(/[0-9]/g, "");
78
+ // double conversions to avoid ,->. and .->, at the same time resulting in a double conversion
79
+ replacedValue = value.replace(localeSeparator, "DECIMALSEPARATOR");
80
+ if (replaceThousands) {
81
+ replacedValue = replacedValue.replace(thousandSeparator, "THOUSANDSEPARATOR");
82
+ }
83
+ else {
84
+ replacedValue = replacedValue.replace(thousandSeparator, "");
85
+ }
86
+ replacedValue = replacedValue.replace("DECIMALSEPARATOR", enUSSeparator);
87
+ replacedValue = replacedValue.replace("THOUSANDSEPARATOR", enUSThousandSeparator);
88
+ return replacedValue;
89
+ }
40
90
  const roundTo = (val, multiple) => Math.round(val / multiple) * multiple;
41
91
  const clamp = (val, min, max) => Math.min(Math.max(val, min), max);
42
92
 
@@ -65,6 +115,18 @@ const DuetNumberInput = class {
65
115
  * Unit for the number input.
66
116
  */
67
117
  this.unit = languageUtils.getLocale(this.language).money;
118
+ /**
119
+ * Details of the component
120
+ */
121
+ this.accessibleDetails = undefined;
122
+ /**
123
+ * String of id's that indicate alternative labels elements
124
+ */
125
+ this.accessibleLabelledBy = undefined;
126
+ /**
127
+ * Aria description the button
128
+ */
129
+ this.accessibleDescription = undefined;
68
130
  /**
69
131
  * Defaults for accessibleLive
70
132
  * @default {fi: "{current} euroa valittuna", en: "{current} euros selected", sv: "{current} valda euro"}
@@ -200,7 +262,7 @@ const DuetNumberInput = class {
200
262
  this.handleChange = (ev) => {
201
263
  const input = ev.target;
202
264
  if (input && input.value) {
203
- let value = this.cleanValue(input.value);
265
+ let value = SafeParseFloat(input.value, this.locale);
204
266
  // Make sure that everything works if the user clears the input and
205
267
  // starts typing non-numeric characters.
206
268
  if (isNaN(value) || value == null) {
@@ -210,7 +272,7 @@ const DuetNumberInput = class {
210
272
  this.duetInput.emit({
211
273
  component: "duet-number-input",
212
274
  originalEvent: ev,
213
- value: this.cleanValue(this.value).toString(),
275
+ value: SafeParseFloat(this.value, this.locale).toString(),
214
276
  valueAsNumber: value,
215
277
  });
216
278
  }
@@ -231,30 +293,29 @@ const DuetNumberInput = class {
231
293
  if (input.value) {
232
294
  // On blur we want to make sure that the user input is between the min and max values,
233
295
  // and also round it up or down to the nearest step.
234
- let value = this.cleanValue(input.value);
296
+ let value = SafeParseFloat(input.value, this.locale);
235
297
  if (this.rounding) {
236
298
  value = roundTo(value, this.step);
237
299
  }
238
300
  value = clamp(value, this.min, this.max);
239
- if (value !== this.cleanValue(this.value) || value !== this.cleanValue(this.focusedValue)) {
301
+ if (value !== SafeParseFloat(this.value, this.locale) ||
302
+ value !== SafeParseFloat(this.focusedValue, this.locale)) {
240
303
  this.setValue(value);
241
304
  this.emitChange(ev);
242
305
  }
243
306
  }
244
- else {
245
- this.duetChange.emit({
246
- originalEvent: ev,
247
- value: null,
248
- valueAsNumber: null,
249
- component: "duet-number-input",
250
- });
251
- }
307
+ this.duetChange.emit({
308
+ originalEvent: ev,
309
+ value: null,
310
+ valueAsNumber: null,
311
+ component: "duet-number-input",
312
+ });
252
313
  };
253
314
  /**
254
315
  * Local methods.
255
316
  */
256
317
  this.emitChange = (ev) => {
257
- const currentValue = this.cleanValue(this.value);
318
+ const currentValue = SafeParseFloat(this.value, this.locale);
258
319
  this.duetChange.emit({
259
320
  originalEvent: ev,
260
321
  value: currentValue.toString(),
@@ -262,10 +323,6 @@ const DuetNumberInput = class {
262
323
  component: "duet-number-input",
263
324
  });
264
325
  };
265
- this.cleanValue = (value) => {
266
- // Returns a number that can be used in calculations.
267
- return value ? parseLocaleFloat(value, this.locale) : null;
268
- };
269
326
  this.localizeValue = (value) => {
270
327
  // Returns a localized string that can be used as input value.
271
328
  return value.toLocaleString(this.locale);
@@ -282,13 +339,13 @@ const DuetNumberInput = class {
282
339
  if (ev) {
283
340
  ev.preventDefault();
284
341
  }
285
- const currentValue = this.cleanValue(this.value);
342
+ const cleanedValue = SafeParseFloat(this.value, this.locale);
286
343
  // Only fire change event when necessary
287
- if (currentValue === this.max) {
344
+ if (cleanedValue === this.max) {
288
345
  return;
289
346
  }
290
347
  // in cases where no value set, incrementing should go to min
291
- let newValue = currentValue == null ? this.min : currentValue + this.step;
348
+ let newValue = cleanedValue == null ? this.min : cleanedValue + this.step;
292
349
  // handle cases where value is not multiple of step
293
350
  // e.g. if someone enters 199, with a step of 100, add should go to 200
294
351
  // and if someone enters 101, add should also go to 200
@@ -296,8 +353,8 @@ const DuetNumberInput = class {
296
353
  const adjustment = newValue % this.step;
297
354
  newValue -= adjustment;
298
355
  }
299
- newValue = clamp(newValue, this.min, this.max);
300
- this.value = this.localizeValue(newValue);
356
+ const clampedValue = clamp(newValue, this.min, this.max);
357
+ this.value = this.localizeValue(clampedValue);
301
358
  this.emitChange(ev);
302
359
  };
303
360
  this.subtract = (ev) => {
@@ -306,7 +363,7 @@ const DuetNumberInput = class {
306
363
  if (ev) {
307
364
  ev.preventDefault();
308
365
  }
309
- const currentValue = this.cleanValue(this.value);
366
+ const currentValue = SafeParseFloat(this.value, this.locale);
310
367
  // Only fire change event when necessary.
311
368
  if (currentValue === this.min) {
312
369
  return;
@@ -331,7 +388,7 @@ const DuetNumberInput = class {
331
388
  themeableComponent.inheritGlobalTheme(this);
332
389
  // Format the number value to a localeString initially.
333
390
  if (this.value) {
334
- this.value = this.localizeValue(parseLocaleFloat(this.value, this.locale));
391
+ this.value = this.localizeValue(SafeParseFloat(this.value, this.locale));
335
392
  }
336
393
  }
337
394
  /**
@@ -346,7 +403,7 @@ const DuetNumberInput = class {
346
403
  this.duetInputElement.value = "";
347
404
  }
348
405
  formatAnnouncement() {
349
- const current = this.cleanValue(this.value);
406
+ const current = SafeParseFloat(this.value, this.locale);
350
407
  if (current == null) {
351
408
  return "";
352
409
  }
@@ -359,12 +416,12 @@ const DuetNumberInput = class {
359
416
  render() {
360
417
  const identifier = this.identifier || this.inputId;
361
418
  const maxlength = `${this.localizeValue(this.max)} ${this.unit}`.length;
362
- const cleanedValue = this.cleanValue(this.value);
419
+ const cleanedValue = SafeParseFloat(this.value, this.locale);
363
420
  return (index.h(index.Host, { class: {
364
421
  "duet-theme-turva": this.theme === "turva",
365
422
  "duet-expand": this.expand,
366
423
  "duet-m-0": this.margin === "none",
367
- } }, index.h("div", { class: "duet-number-container" }, index.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 }, index.h("div", { class: { "duet-number-buttons": true, "duet-no-label": this.labelHidden } }, index.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" }, index.h("duet-visually-hidden", null, this.accessibleSubtract, " ", this.step), index.h("duet-icon", { icon: actionSubtract.svg, size: "small", margin: "none", color: this.theme === "turva" ? "secondary-turva" : "secondary" })), index.h("button", { "aria-controls": identifier, disabled: this.disabled, "aria-disabled": cleanedValue === this.max ? "true" : "false", class: "duet-number-button duet-number-button-add", onClick: this.add, type: "button" }, index.h("duet-visually-hidden", null, this.accessibleAdd, " ", this.step), index.h("duet-icon", { icon: actionAdd.svg, size: "small", margin: "none", color: this.theme === "turva" ? "secondary-turva" : "secondary" })))), this.accessibleLiveEnabled && (index.h("duet-visually-hidden", { "aria-live": "polite", "aria-atomic": "true", "aria-relevant": "all" }, this.formatAnnouncement())))));
424
+ } }, index.h("div", { class: "duet-number-container" }, index.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 }, index.h("div", { class: { "duet-number-buttons": true, "duet-no-label": this.labelHidden } }, index.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" }, index.h("duet-visually-hidden", null, this.accessibleSubtract, " ", this.step), index.h("duet-icon", { icon: actionSubtract.svg, size: "small", margin: "none", color: this.theme === "turva" ? "secondary-turva" : "secondary" })), index.h("button", { "aria-controls": identifier, disabled: this.disabled, "aria-disabled": cleanedValue === this.max ? "true" : "false", class: "duet-number-button duet-number-button-add", onClick: this.add, type: "button" }, index.h("duet-visually-hidden", null, this.accessibleAdd, " ", this.step), index.h("duet-icon", { icon: actionAdd.svg, size: "small", margin: "none", color: this.theme === "turva" ? "secondary-turva" : "secondary" })))), this.accessibleLiveEnabled && (index.h("duet-visually-hidden", { "aria-live": "polite", "aria-atomic": "true", "aria-relevant": "all" }, this.formatAnnouncement())))));
368
425
  }
369
426
  get element() { return index.getElement(this); }
370
427
  };
@@ -5,12 +5,12 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-cfea8a15.js');
8
+ const index = require('./index-3024eb44.js');
9
+ const themeableComponent = require('./themeable-component-fdeaef9f.js');
9
10
  const createId = require('./create-id-c3b984b1.js');
10
11
  const jsUtils = require('./js-utils-be1d29ae.js');
11
12
  const keyboardUtils = require('./keyboard-utils-bb32119b.js');
12
13
  const languageUtils = require('./language-utils-4f62a7db.js');
13
- const themeableComponent = require('./themeable-component-940d3b50.js');
14
14
  require('./string-utils-5cadd058.js');
15
15
 
16
16
  const shouldDisplayNavigation = (visibleItems, total, take) => {
@@ -50,6 +50,22 @@ const DuetPagination = class {
50
50
  * Variation of the paginator (compact and default supported)
51
51
  */
52
52
  this.variation = "default";
53
+ /**
54
+ * Described By id
55
+ */
56
+ this.accessibleDescribedBy = undefined;
57
+ /**
58
+ * Details of the component
59
+ */
60
+ this.accessibleDetails = undefined;
61
+ /**
62
+ * String of id's that indicate alternative labels elements
63
+ */
64
+ this.accessibleLabelledBy = undefined;
65
+ /**
66
+ * Aria description the button
67
+ */
68
+ this.accessibleDescription = undefined;
53
69
  /**
54
70
  * Default pagination labels
55
71
  */
@@ -278,7 +294,7 @@ const DuetPagination = class {
278
294
  * Always the last one in the class.
279
295
  */
280
296
  render() {
281
- return (index.h(index.Host, { onKeyDown: e => this.onKeyboardDown(e) }, index.h("nav", { role: "navigation", "aria-labelledby": this.listId, "aria-describedby": this.listId, ref: el => (this.nativeNav = el), "aria-controls": this.ariaControls, class: {
297
+ return (index.h(index.Host, { onKeyDown: e => this.onKeyboardDown(e) }, index.h("nav", { role: "navigation", "aria-labelledby": this.accessibleLabelledBy ? `${this.accessibleLabelledBy} ${this.listId}` : this.listId, "aria-describedby": this.accessibleDescribedBy ? `${this.accessibleDescribedBy} ${this.listId}` : this.listId, "aria-descriptions": this.accessibleDescription, "aria-details": this.accessibleDetails, ref: el => (this.nativeNav = el), "aria-controls": this.ariaControls, class: {
282
298
  "duet-pagination-nav": true,
283
299
  [`duet-pagination-variation-${this.variation}`]: true,
284
300
  } }, this.numbersStore !== "" && (index.h("div", { "aria-live": "assertive", "aria-relevant": "text", class: "duet-pagination-overlay", "aria-label": `${this.accessibleLabels.jump_to} ${this.numbersStore}`, part: "navigation-overlay" }, index.h("duet-badge", null, "jump to page : ", this.numbersStore))), index.h("ol", { id: this.listId, class: {
@@ -5,10 +5,10 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-cfea8a15.js');
8
+ const index = require('./index-3024eb44.js');
9
+ const themeableComponent = require('./themeable-component-fdeaef9f.js');
9
10
  const createId = require('./create-id-c3b984b1.js');
10
11
  const languageUtils = require('./language-utils-4f62a7db.js');
11
- const themeableComponent = require('./themeable-component-940d3b50.js');
12
12
  require('./string-utils-5cadd058.js');
13
13
 
14
14
  const duetProgressCss = "*,*::after,*::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}:host{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;width:100%;height:inherit}.duet-progress{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:block;width:100%;min-height:1px;}.duet-progress .progress-bar{position:relative;display:block;width:100%;height:inherit;min-height:1px;background-color:#f3f9fc;border-radius:0;box-shadow:none}.duet-theme-turva .duet-progress .progress-bar{background-color:#fcf3f4}.duet-progress .progress-bar>span{display:block;height:inherit;text-indent:-9999px;background-color:#0077b3;border-radius:0}.duet-theme-turva .duet-progress .progress-bar>span{background-color:#c60c30}.duet-progress progress[value]{display:flex;width:100%;height:inherit;min-height:1px;color:#0077b3;border:0 none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.duet-theme-turva .duet-progress progress[value]{color:#c60c30}.duet-progress progress[value]::-webkit-progress-bar{background-color:#f3f9fc;border-radius:0}.duet-theme-turva .duet-progress progress[value]::-webkit-progress-bar{background-color:#fcf3f4}.duet-progress progress[value]::-webkit-progress-value{background-color:#0077b3;background-size:35px 20px, 100% 100%, 100% 100%;border-radius:0;-webkit-animation:animate-stripes 5s linear infinite;animation:animate-stripes 5s linear infinite}.duet-theme-turva .duet-progress progress[value]::-webkit-progress-value{background-color:#c60c30}.duet-progress progress[value] ::-moz-progress-bar{background-color:#f3f9fc}.duet-theme-turva .duet-progress progress[value] ::-moz-progress-bar{background-color:#fcf3f4}";
@@ -21,6 +21,18 @@ const DuetProgress = class {
21
21
  */
22
22
  this.progressId = createId.createID("DuetProgress");
23
23
  this.progressLabelId = createId.createID("DuetProgressLabel");
24
+ /**
25
+ * Aria Details of the component
26
+ */
27
+ this.accessibleDetails = undefined;
28
+ /**
29
+ * String of id's that indicate alternative labels elements
30
+ */
31
+ this.accessibleLabelledBy = undefined;
32
+ /**
33
+ * Aria description the button
34
+ */
35
+ this.accessibleDescription = undefined;
24
36
  /**
25
37
  * Defaults for accessibleLabel
26
38
  */
@@ -66,7 +78,7 @@ const DuetProgress = class {
66
78
  "duet-progress-start": this.progress === 0,
67
79
  "duet-progress-inprogress": this.progress < 99 && this.progress !== 0,
68
80
  "duet-theme-turva": this.theme === "turva",
69
- } }, index.h("duet-visually-hidden", null, index.h("label", { htmlFor: this.progressLabelId }, this.progress !== 0 && (index.h("span", null, this.accessibleLabel, ", ", this.accessibleLabelUpload[this.progress < 99 ? 1 : 0])))), this.caption && (index.h("div", { class: "duet-progress-caption" }, index.h("span", null, this.caption))), index.h("progress", { id: this.progressLabelId, "aria-describedby": this.accessibleDescribedBy, role: "progressbar", value: this.progress, max: "100", "aria-valuemin": "0", "aria-valuemax": "100" }, index.h("div", { class: "progress-bar" }, index.h("span", { style: { width: `${this.progress}%;` } }, "Progress: ", this.progress, "%"))))));
81
+ } }, index.h("duet-visually-hidden", null, index.h("label", { htmlFor: this.progressLabelId }, this.progress !== 0 && (index.h("span", null, this.accessibleLabel, ", ", this.accessibleLabelUpload[this.progress < 99 ? 1 : 0])))), this.caption && (index.h("div", { class: "duet-progress-caption" }, index.h("span", null, this.caption))), index.h("progress", { id: this.progressLabelId, "aria-describedby": this.accessibleDescribedBy, "aria-labelledby": this.accessibleLabelledBy, "aria-details": this.accessibleDetails, "aria-description": this.accessibleDescription, role: "progressbar", value: this.progress, max: "100", "aria-valuemin": "0", "aria-valuemax": "100" }, index.h("div", { class: "progress-bar" }, index.h("span", { style: { width: `${this.progress}%;` } }, "Progress: ", this.progress, "%"))))));
70
82
  }
71
83
  get element() { return index.getElement(this); }
72
84
  };
@@ -5,9 +5,9 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-cfea8a15.js');
8
+ const index = require('./index-3024eb44.js');
9
+ const themeableComponent = require('./themeable-component-fdeaef9f.js');
9
10
  const createId = require('./create-id-c3b984b1.js');
10
- const themeableComponent = require('./themeable-component-940d3b50.js');
11
11
  const watchOptions = require('./watch-options-d88afac0.js');
12
12
 
13
13
  const duetRadioCss = "*.sc-duet-radio,*.sc-duet-radio::after,*.sc-duet-radio::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-radio-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:28px !important;margin-bottom:12px !important;display:inline-flex;width:100%;vertical-align:bottom;-webkit-tap-highlight-color:transparent}.sc-duet-radio-h:last-child,.sc-duet-radio-h:last-of-type{margin-right:0 !important}.vertical.sc-duet-radio-h{margin-right:0 !important}.horizontal.sc-duet-radio-h{margin-bottom:0 !important;width:auto}.horizontal.sc-duet-radio-h .duet-label.sc-duet-radio span.sc-duet-radio{max-width:100%}@media (min-width: 48em){.horizontal-responsive.sc-duet-radio-h{margin-right:28px !important;margin-bottom:0 !important;width:auto}.horizontal-responsive.sc-duet-radio-h:last-child,.horizontal-responsive.sc-duet-radio-h:last-of-type{margin-right:0 !important}.horizontal-responsive.sc-duet-radio-h .duet-label.sc-duet-radio span.sc-duet-radio{max-width:100%}}.duet-m-0.sc-duet-radio-h{margin:0 !important}.sc-duet-radio-h:last-child:not(:only-child){margin-right:0 !important;margin-bottom:0 !important}.duet-label.sc-duet-radio{position:relative;z-index:100;display:flex;width:100%;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:400;line-height:1.5;color:#00294d;cursor:pointer;background:transparent}.duet-theme-turva.sc-duet-radio .duet-label.sc-duet-radio{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a}.duet-label.sc-duet-radio span.sc-duet-radio{flex-grow:1;font-size:1rem}.duet-label-hidden.sc-duet-radio .duet-label.sc-duet-radio{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.duet-radio-container.sc-duet-radio{position:relative;width:100%;height:100%}.duet-radio.sc-duet-radio{padding:14px !important;position:absolute;top:0;left:0;z-index:200;width:100%;height:100%;cursor:pointer;opacity:0}.duet-radio.sc-duet-radio+label.sc-duet-radio::before{z-index:100;flex-shrink:0;width:20px;height:20px;margin:2px 10px 1px 1px;content:\"\";background:white;border:1px solid #00294d;border-radius:50%}.duet-theme-turva.sc-duet-radio .duet-radio.sc-duet-radio+label.sc-duet-radio::before{border-color:#171c3a}.duet-radio.sc-duet-radio:focus+label.sc-duet-radio::before{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}.duet-theme-turva.sc-duet-radio .duet-radio.sc-duet-radio:focus+label.sc-duet-radio::before{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}.duet-radio.sc-duet-radio:checked+label.sc-duet-radio::after{position:absolute;top:6px;left:5px;z-index:200;flex-shrink:0;width:12px;height:12px;content:\"\";background:#00294d;border-radius:50%}.duet-theme-turva.sc-duet-radio .duet-radio.sc-duet-radio:checked+label.sc-duet-radio::after{background:#171c3a}.duet-radio[disabled].sc-duet-radio{cursor:default}.duet-radio[disabled].sc-duet-radio+label.sc-duet-radio{color:#657787}.duet-theme-turva.sc-duet-radio .duet-radio[disabled].sc-duet-radio+label.sc-duet-radio{color:#747475}.duet-radio[disabled].sc-duet-radio+label.sc-duet-radio::before{border-color:#cfd2d4}.duet-theme-turva.sc-duet-radio .duet-radio[disabled].sc-duet-radio+label.sc-duet-radio::before{border-color:#cfcfd1}.duet-radio[disabled].sc-duet-radio:checked+label.sc-duet-radio::before{border:1px solid #657787}.duet-radio[disabled].sc-duet-radio:checked+label.sc-duet-radio::after{background:#657787}.duet-theme-turva.sc-duet-radio .duet-radio[disabled].sc-duet-radio:checked+label.sc-duet-radio::after{background:#747475;border-color:#747475}";
@@ -22,6 +22,18 @@ const DuetRadio = class {
22
22
  * Own Properties.
23
23
  */
24
24
  this.radioId = createId.createID("DuetRadio");
25
+ /**
26
+ * Aria Details of the component
27
+ */
28
+ this.accessibleDetails = undefined;
29
+ /**
30
+ * String of id's that indicate alternative labels elements
31
+ */
32
+ this.accessibleLabelledBy = undefined;
33
+ /**
34
+ * Aria description the button
35
+ */
36
+ this.accessibleDescription = undefined;
25
37
  /**
26
38
  * Controls the margin of the component.
27
39
  */
@@ -110,7 +122,7 @@ const DuetRadio = class {
110
122
  horizontal: this.groupDirection === "horizontal" && !this.groupResponsive,
111
123
  "horizontal-responsive": this.groupDirection === "horizontal" && this.groupResponsive,
112
124
  "duet-m-0": this.margin === "none",
113
- } }, index.h("div", { class: { "duet-radio-container": true, "duet-theme-turva": this.theme === "turva" } }, index.h("input", { type: "radio", onFocus: this.onFocus, onBlur: this.onBlur, onChange: this.onChange, value: this.value, tabindex: this.accessibleIndex, class: { "duet-radio": true, disabled: this.disabled || this.groupDisabled }, checked: this.checked, disabled: this.disabled || this.groupDisabled, required: this.required, "aria-controls": this.accessibleControls, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": this.accessibleDescribedBy, role: this.role, name: this.name, id: identifier, ref: input => (this.nativeInput = input) }), index.h("label", { class: "duet-label", htmlFor: identifier }, index.h("span", null, this.label)))));
125
+ } }, index.h("div", { class: { "duet-radio-container": true, "duet-theme-turva": this.theme === "turva" } }, index.h("input", { type: "radio", onFocus: this.onFocus, onBlur: this.onBlur, onChange: this.onChange, value: this.value, tabindex: this.accessibleIndex, class: { "duet-radio": true, disabled: this.disabled || this.groupDisabled }, checked: this.checked, disabled: this.disabled || this.groupDisabled, required: this.required, "aria-controls": this.accessibleControls, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": this.accessibleDescribedBy, "aria-labelledby": this.accessibleLabelledBy, "aria-details": this.accessibleDetails, "aria-description": this.accessibleDescription, role: this.role, name: this.name, id: identifier, ref: input => (this.nativeInput = input) }), index.h("label", { class: "duet-label", htmlFor: identifier }, index.h("span", null, this.label)))));
114
126
  }
115
127
  get element() { return index.getElement(this); }
116
128
  };
@@ -5,11 +5,11 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-cfea8a15.js');
8
+ const index = require('./index-3024eb44.js');
9
9
  const tokens_module = require('./tokens.module-ef598645.js');
10
+ const themeableComponent = require('./themeable-component-fdeaef9f.js');
10
11
  const createId = require('./create-id-c3b984b1.js');
11
12
  const isInternetExplorer = require('./is-internet-explorer-91361c56.js');
12
- const themeableComponent = require('./themeable-component-940d3b50.js');
13
13
 
14
14
  const duetRangeSliderCss = "*.sc-duet-range-slider,*.sc-duet-range-slider::after,*.sc-duet-range-slider::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-range-slider-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:16px !important;margin-bottom:12px !important;display:inline-flex;width:100%;max-width:100%;text-align:left;vertical-align:bottom}.sc-duet-range-slider-h:last-child,.sc-duet-range-slider-h:last-of-type{margin-right:0 !important}@media (min-width: 36em){.sc-duet-range-slider-h{width:calc(50% - 16px - 3px)}.duet-expand.sc-duet-range-slider-h{width:100% !important}}.duet-m-0.sc-duet-range-slider-h{margin:0 !important}.duet-range-container.sc-duet-range-slider{position:relative;width:100%}.duet-output.sc-duet-range-slider{position:absolute;top:12px;right:0;z-index:200;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:0.875rem;font-weight:400;font-variant-numeric:tabular-nums;line-height:1.25;color:#00294d;background:white}.duet-theme-turva.sc-duet-range-slider .duet-output.sc-duet-range-slider{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a}.duet-range-disabled.sc-duet-range-slider .duet-output.sc-duet-range-slider{color:#909599}.duet-range-disabled.duet-theme-turva.sc-duet-range-slider .duet-output.sc-duet-range-slider{color:#747475}.duet-range.sc-duet-range-slider{position:relative;z-index:100;width:100%;height:4px;background:#cfd2d4;border-radius:4px}.duet-theme-turva.sc-duet-range-slider .duet-range.sc-duet-range-slider{background:#cfcfd1}.duet-ie.sc-duet-range-slider .duet-range.sc-duet-range-slider{display:block;width:auto;height:26px;background:transparent !important}.duet-range.sc-duet-range-slider::-moz-range-track{height:1px;background:transparent !important;border:0;-moz-appearance:none}.duet-range.sc-duet-range-slider::-ms-track{color:transparent;background:transparent;border:0}.duet-range.sc-duet-range-slider:focus,.duet-range.sc-duet-range-slider:active{outline:0}.user-is-tabbing.sc-duet-range-slider-h .duet-range.sc-duet-range-slider:focus{box-shadow:0 0 0 1px white, 0 0 0 3px rgba(0, 119, 179, 0.75)}.user-is-tabbing.sc-duet-range-slider-h .duet-theme-turva.sc-duet-range-slider .duet-range.sc-duet-range-slider:focus{box-shadow:0 0 0 1px white, 0 0 0 3px #171c3a}.duet-range.sc-duet-range-slider::-webkit-slider-runnable-track{background:transparent}.duet-range.sc-duet-range-slider::-webkit-slider-thumb{position:relative;width:24px;height:24px;cursor:-webkit-grab;background:white;border:1px solid #909599;border-radius:50%;transition:box-shadow 300ms ease;-webkit-appearance:none}.duet-theme-turva.sc-duet-range-slider .duet-range.sc-duet-range-slider::-webkit-slider-thumb{border-color:#747475}.duet-range.sc-duet-range-slider:active::-webkit-slider-thumb{cursor:-webkit-grabbing}.duet-range.sc-duet-range-slider::-moz-range-thumb{position:relative;width:24px;height:24px;cursor:-moz-grab;background:white;border:1px solid #909599;border-radius:50%;appearance:none}.duet-theme-turva.sc-duet-range-slider .duet-range.sc-duet-range-slider::-moz-range-thumb{border-color:#747475}.duet-range.sc-duet-range-slider:active::-moz-range-thumb{cursor:-moz-grabbing}.duet-range.sc-duet-range-slider::-ms-thumb{position:relative;width:24px;height:24px;overflow:visible;background:white;border:1px solid #909599;border-radius:50%}.duet-theme-turva.sc-duet-range-slider .duet-range.sc-duet-range-slider::-ms-thumb{border-color:#747475}.duet-range.sc-duet-range-slider:disabled{background:#cfd2d4 !important}.duet-theme-turva.sc-duet-range-slider .duet-range.sc-duet-range-slider:disabled{background:#cfcfd1 !important}.duet-range.sc-duet-range-slider:disabled::-webkit-slider-thumb{cursor:default;background:#cfd2d4;border-color:transparent}.duet-theme-turva.sc-duet-range-slider .duet-range.sc-duet-range-slider:disabled::-webkit-slider-thumb{background:#cfcfd1;border-color:transparent}.duet-range.sc-duet-range-slider:disabled::-moz-range-thumb{cursor:default;background:#cfd2d4;border-color:transparent}.duet-theme-turva.sc-duet-range-slider .duet-range.sc-duet-range-slider:disabled::-moz-range-thumb{background:#cfcfd1;border-color:transparent}.duet-range.sc-duet-range-slider:disabled::-ms-thumb{cursor:default;background:#cfd2d4;border-color:transparent}.duet-theme-turva.sc-duet-range-slider .duet-range.sc-duet-range-slider:disabled::-ms-thumb{background:#cfcfd1;border-color:transparent}.duet-range.sc-duet-range-slider::-ms-fill-lower{height:4px;background:#0077b3}.duet-theme-turva.sc-duet-range-slider .duet-range.sc-duet-range-slider::-ms-fill-lower{background:#c60c30}.duet-range.sc-duet-range-slider::-ms-fill-upper{height:4px;background:#cfd2d4}.duet-theme-turva.sc-duet-range-slider .duet-range.sc-duet-range-slider::-ms-fill-upper{background:#cfcfd1}.duet-label-hidden.sc-duet-range-slider duet-label.sc-duet-range-slider,.duet-label-hidden.sc-duet-range-slider output.sc-duet-range-slider{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}";
15
15
 
@@ -5,8 +5,8 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-cfea8a15.js');
9
- const themeableComponent = require('./themeable-component-940d3b50.js');
8
+ const index = require('./index-3024eb44.js');
9
+ const themeableComponent = require('./themeable-component-fdeaef9f.js');
10
10
  const languageUtils = require('./language-utils-4f62a7db.js');
11
11
  const createId = require('./create-id-c3b984b1.js');
12
12
  const keyboardUtils = require('./keyboard-utils-bb32119b.js');
@@ -5,10 +5,10 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-cfea8a15.js');
8
+ const index = require('./index-3024eb44.js');
9
+ const themeableComponent = require('./themeable-component-fdeaef9f.js');
9
10
  const createId = require('./create-id-c3b984b1.js');
10
11
  const stringUtils = require('./string-utils-5cadd058.js');
11
- const themeableComponent = require('./themeable-component-940d3b50.js');
12
12
 
13
13
  const duetSelectCss = "@charset \"UTF-8\";*.sc-duet-select,*.sc-duet-select::after,*.sc-duet-select::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-select-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:16px !important;margin-bottom:12px !important;display:inline-flex;width:100%;max-width:100%;vertical-align:bottom}.sc-duet-select-h:last-child,.sc-duet-select-h:last-of-type{margin-right:0 !important}@media (min-width: 36em){.sc-duet-select-h{width:calc(50% - 16px - 3px)}.duet-expand.sc-duet-select-h{width:100% !important}}.duet-select-variation-tiny.sc-duet-select-h{position:relative;top:-2px;width:72px;margin:0 !important;vertical-align:baseline}.duet-m-0.sc-duet-select-h{margin:0 !important}duet-tooltip.sc-duet-select{position:absolute;top:12px;right:0}@media (min-width: 48em){duet-tooltip.sc-duet-select{position:relative;top:4px;right:auto}}.duet-select-placeholder.sc-duet-select{position:absolute;top:-9px;left:9px;z-index:200;display:block;width:auto;max-width:60%;padding:0 0.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:white}.duet-select-container.sc-duet-select{position:relative;width:100%}.duet-select-container.duet-select-variation-tiny.sc-duet-select{width:72px}.duet-select-wrapper.sc-duet-select{position:relative;width:100%;padding:15px 14px !important;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:400;line-height:1.25}.duet-theme-turva.sc-duet-select .duet-select-wrapper.sc-duet-select{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}.duet-select-variation-tiny.sc-duet-select .duet-select-wrapper.sc-duet-select{width:81px;padding:0 !important}.duet-select-wrapper.sc-duet-select::after{content:\"  \"}.duet-select-wrapper.sc-duet-select select.sc-duet-select{position:absolute;top:0;right:0;bottom:0;left:0;z-index:200;width:100%;height:100%;padding:0;margin:0;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;cursor:pointer;border:0;outline:none;opacity:0}.duet-theme-turva.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}.duet-select-wrapper.sc-duet-select select.sc-duet-select:hover+.duet-select.sc-duet-select{border-color:#909599;box-shadow:0 0 0 1px #909599}.duet-theme-turva.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select:hover+.duet-select.sc-duet-select{border-color:#747475;box-shadow:0 0 0 1px #747475}.has-error.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select:hover+.duet-select.sc-duet-select{box-shadow:0 0 0 1px #de2362}.duet-theme-turva.has-error.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select:hover+.duet-select.sc-duet-select{box-shadow:0 0 0 1px #e02a0d}.duet-select-wrapper.sc-duet-select select.sc-duet-select:focus+.duet-select.sc-duet-select{border-color:#0077b3;outline:0;box-shadow:0 0 0 1px #0077b3;transition:none}.duet-theme-turva.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select:focus+.duet-select.sc-duet-select{border-color:#171c3a;box-shadow:0 0 0 1px #171c3a}.duet-theme-turva.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select:focus+.duet-select.sc-duet-select .duet-select-icon.sc-duet-select{color:#171c3a}.duet-select-wrapper.sc-duet-select select.sc-duet-select:focus+.duet-select.sc-duet-select .duet-select-icon.sc-duet-select{color:#0077b3}.has-error.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select:focus+.duet-select.sc-duet-select{box-shadow:0 0 0 1px #de2362}.duet-theme-turva.has-error.sc-duet-select .duet-select-wrapper.sc-duet-select select.sc-duet-select:focus+.duet-select.sc-duet-select{box-shadow:0 0 0 1px #e02a0d}.duet-select-wrapper.sc-duet-select select[disabled].sc-duet-select{cursor:default !important}.duet-select-wrapper.sc-duet-select select[disabled].sc-duet-select+.duet-select.sc-duet-select{color:#00294d !important;cursor:default !important;background:#f5f8fa !important;border-color:#f5f8fa !important;box-shadow:none !important;opacity:1 !important;-webkit-text-fill-color:#00294d !important}.duet-theme-turva.sc-duet-select .duet-select-wrapper.sc-duet-select select[disabled].sc-duet-select+.duet-select.sc-duet-select{color:#171c3a !important;background:#f5f5f7 !important;border-color:#f5f5f7 !important;-webkit-text-fill-color:#171c3a !important}.duet-select.sc-duet-select{position:absolute;top:0;right:0;bottom:0;left:0;z-index:100;display:block;width:100%;min-width:8rem;padding:12px 14px !important;padding-right:48px !important;overflow:hidden;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:400;font-variant-numeric:tabular-nums;line-height:1.5;color:#00294d;text-align:left;text-overflow:ellipsis;white-space:nowrap;background:white;border:1px solid #909599;border-radius:4px;transition:150ms ease}.has-error.sc-duet-select .duet-select.sc-duet-select{border-color:#de2362 !important}.has-error.sc-duet-select .duet-select.sc-duet-select .duet-select-icon.sc-duet-select{color:#de2362 !important}.duet-theme-turva.has-error.sc-duet-select .duet-select.sc-duet-select{border-color:#e02a0d !important}.duet-theme-turva.has-error.sc-duet-select .duet-select.sc-duet-select .duet-select-icon.sc-duet-select{color:#e02a0d !important}.duet-theme-turva.sc-duet-select .duet-select.sc-duet-select{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a;border-color:#747475}.duet-select.sc-duet-select svg.sc-duet-select{position:absolute;top:50%;right:16px;z-index:200;width:20px;height:20px;color:#00294d;pointer-events:none;transform:translateY(-50%)}.duet-theme-turva.sc-duet-select .duet-select.sc-duet-select svg.sc-duet-select{color:#171c3a}.duet-select-variation-tiny.sc-duet-select .duet-select.sc-duet-select{width:72px;min-width:inherit;padding:0 !important;margin-bottom:-4px;overflow:visible;font-weight:600;text-align:center}.duet-select-variation-tiny.sc-duet-select .duet-select.sc-duet-select duet-icon.sc-duet-select{padding-left:10px}.duet-select-help.sc-duet-select{display:block;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:0.875rem;font-weight:400;line-height:1.25;color:#657787;border-radius:4px}.duet-select-help.sc-duet-select span.sc-duet-select{display:block;margin-top:8px}.duet-theme-turva.sc-duet-select .duet-select-help.sc-duet-select{color:#747475}.has-error.sc-duet-select .duet-select-help.sc-duet-select{color:#de2362}.duet-theme-turva.has-error.sc-duet-select .duet-select-help.sc-duet-select{color:#e02a0d}.duet-label-hidden.sc-duet-select duet-label.sc-duet-select{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}";
14
14
 
@@ -5,10 +5,10 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-cfea8a15.js');
8
+ const index = require('./index-3024eb44.js');
9
+ const themeableComponent = require('./themeable-component-fdeaef9f.js');
9
10
  const createId = require('./create-id-c3b984b1.js');
10
11
  const keyboardUtils = require('./keyboard-utils-bb32119b.js');
11
- const themeableComponent = require('./themeable-component-940d3b50.js');
12
12
 
13
13
  var actionEdit2={"title":"action-edit-2","tags":"action edit 2 pen pencil","svg":"<svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\"><path d=\"M.748 24a.755.755 0 0 1-.531-.22.754.754 0 0 1-.196-.716l1.77-6.905a.84.84 0 0 1 .045-.121.73.73 0 0 1 .151-.223L16.513 1.289A4.355 4.355 0 0 1 19.611 0c1.178 0 2.277.454 3.106 1.279l.029.029a4.367 4.367 0 0 1 1.251 3.121 4.356 4.356 0 0 1-1.32 3.087L8.183 22.01a.735.735 0 0 1-.231.154.784.784 0 0 1-.111.042L.933 23.978A.773.773 0 0 1 .748 24zm1.041-1.791 4.41-1.131-3.281-3.275zm5.868-1.795 13.02-13.02-4.074-4.074L3.58 16.344zM21.736 6.332a2.893 2.893 0 0 0-.059-3.972l-.02-.02a2.872 2.872 0 0 0-2.037-.84v-.375l-.001.375a2.873 2.873 0 0 0-1.954.762z\"/></svg>"};
14
14
 
@@ -5,10 +5,10 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-cfea8a15.js');
8
+ const index = require('./index-3024eb44.js');
9
+ const themeableComponent = require('./themeable-component-fdeaef9f.js');
9
10
  const createId = require('./create-id-c3b984b1.js');
10
11
  const inputUtils = require('./input-utils-b5e8f524.js');
11
- const themeableComponent = require('./themeable-component-940d3b50.js');
12
12
 
13
13
  const duetTextareaCss = "*.sc-duet-textarea,*.sc-duet-textarea::after,*.sc-duet-textarea::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-textarea-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:16px !important;margin-bottom:12px !important;display:block;width:100%;max-width:100%;text-align:left}.sc-duet-textarea-h:last-child,.sc-duet-textarea-h:last-of-type{margin-right:0 !important}@media (min-width: 36em){.sc-duet-textarea-h{width:calc(50% - 16px - 3px)}.duet-expand.sc-duet-textarea-h{width:100% !important}}.duet-m-0.sc-duet-textarea-h{margin:0 !important}duet-tooltip.sc-duet-textarea{position:absolute;top:12px;right:0}@media (min-width: 48em){duet-tooltip.sc-duet-textarea{position:relative;top:4px;right:auto}}.duet-textarea-container.sc-duet-textarea{position:relative;width:100%;height:100%}.duet-textarea-container.sc-duet-textarea .duet-input-top-caption.sc-duet-textarea{display:none}.duet-textarea-container.duet-input-top-caption-shown.sc-duet-textarea .duet-input-top-caption.sc-duet-textarea{display:flex !important}.duet-textarea-wrapper.sc-duet-textarea{position:relative}.duet-textarea-placeholder.sc-duet-textarea{position:absolute;top:-9px;left:9px;z-index:200;display:block;width:auto;max-width:60%;padding:0 0.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:white}.duet-textarea.sc-duet-textarea{padding:15px !important;position:relative;z-index:100;display:block;width:100%;min-width:8rem;min-height:160px;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:400;font-variant-numeric:tabular-nums;line-height:1.25;color:#00294d;resize:vertical;background:white;border:1px solid #909599;border-radius:4px;transition:150ms ease}.duet-theme-turva.sc-duet-textarea .duet-textarea.sc-duet-textarea{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a;border-color:#747475}.has-error.sc-duet-textarea .duet-textarea.sc-duet-textarea{border-color:#de2362 !important}.duet-theme-turva.has-error.sc-duet-textarea .duet-textarea.sc-duet-textarea{border-color:#e02a0d !important}.duet-textarea.sc-duet-textarea::-webkit-input-placeholder{color:#657787;opacity:1 !important;transition:color 300ms ease}.duet-theme-turva.sc-duet-textarea .duet-textarea.sc-duet-textarea::-webkit-input-placeholder{color:#747475}.duet-textarea.sc-duet-textarea:focus::-webkit-input-placeholder{color:#cfd2d4}.duet-theme-turva.sc-duet-textarea .duet-textarea.sc-duet-textarea:focus::-webkit-input-placeholder{color:#cfcfd1}.duet-textarea.sc-duet-textarea::-moz-placeholder{color:#657787;opacity:1 !important}.duet-theme-turva.sc-duet-textarea .duet-textarea.sc-duet-textarea::-moz-placeholder{color:#747475}.duet-textarea.sc-duet-textarea:focus::-moz-placeholder{color:#cfd2d4}.duet-theme-turva.sc-duet-textarea .duet-textarea.sc-duet-textarea:focus::-moz-placeholder{color:#cfcfd1}.duet-textarea.sc-duet-textarea:-ms-input-placeholder{color:#657787}.duet-theme-turva.sc-duet-textarea .duet-textarea.sc-duet-textarea:-ms-input-placeholder{color:#747475}.duet-textarea.sc-duet-textarea:focus:-ms-input-placeholder{color:#cfd2d4}.duet-theme-turva.sc-duet-textarea .duet-textarea.sc-duet-textarea:focus:-ms-input-placeholder{color:#cfcfd1}.duet-textarea[disabled].sc-duet-textarea{color:#657787 !important;cursor:default !important;background:#f5f8fa !important;border-color:#f5f8fa !important}.duet-theme-turva.sc-duet-textarea .duet-textarea[disabled].sc-duet-textarea{color:#747475 !important;background:#f5f5f7 !important;border-color:#f5f5f7 !important}.duet-textarea.sc-duet-textarea:hover:not(:disabled){box-shadow:0 0 0 1px #909599}.duet-theme-turva.sc-duet-textarea .duet-textarea.sc-duet-textarea:hover:not(:disabled){box-shadow:0 0 0 1px #747475}.has-error.sc-duet-textarea .duet-textarea.sc-duet-textarea:hover:not(:disabled){box-shadow:0 0 0 1px #de2362}.duet-theme-turva.has-error.sc-duet-textarea .duet-textarea.sc-duet-textarea:hover:not(:disabled){box-shadow:0 0 0 1px #e02a0d}.duet-textarea.sc-duet-textarea:focus{border-color:#0077b3;outline:0;box-shadow:0 0 0 1px #0077b3;transition:none}.duet-theme-turva.sc-duet-textarea .duet-textarea.sc-duet-textarea:focus{border-color:#171c3a;box-shadow:0 0 0 1px #171c3a}.has-error.sc-duet-textarea .duet-textarea.sc-duet-textarea:focus{box-shadow:0 0 0 1px #de2362}.duet-theme-turva.has-error.sc-duet-textarea .duet-textarea.sc-duet-textarea:focus{box-shadow:0 0 0 1px #e02a0d}.duet-textarea.sc-duet-textarea:not(:focus):not(:hover):invalid{box-shadow:none}.duet-textarea-help.sc-duet-textarea{font-size:0.875rem;line-height:1.25}.duet-textarea-help.sc-duet-textarea span.sc-duet-textarea{display:block;margin-top:8px}.has-error.sc-duet-textarea .duet-textarea-help.sc-duet-textarea{color:#de2362}.duet-theme-turva.has-error.sc-duet-textarea .duet-textarea-help.sc-duet-textarea{color:#e02a0d}.duet-label-hidden.sc-duet-textarea duet-label.sc-duet-textarea{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.duet-character-count.sc-duet-textarea{display:block;margin:8px 0 0 auto}";
14
14
 
@@ -41,6 +41,18 @@ const DuetTextarea = class {
41
41
  * Controls the margin of the component.
42
42
  */
43
43
  this.margin = "auto";
44
+ /**
45
+ * Aria Details of the component
46
+ */
47
+ this.accessibleDetails = undefined;
48
+ /**
49
+ * String of id's that indicate alternative labels elements
50
+ */
51
+ this.accessibleLabelledBy = undefined;
52
+ /**
53
+ * Aria description the button
54
+ */
55
+ this.accessibleDescription = undefined;
44
56
  /**
45
57
  * Theme of the textarea.
46
58
  */
@@ -184,7 +196,9 @@ const DuetTextarea = class {
184
196
  "duet-label-hidden": this.labelHidden,
185
197
  "duet-input-top-caption-shown": this.isCaptionVisible,
186
198
  "has-error": !!this.error,
187
- } }, index.h("duet-label", { theme: this.theme === "turva" ? "turva" : "default", class: { "duet-has-tooltip": !!this.tooltip }, margin: this.isCaptionVisible ? "small" : "auto", id: this.labelId, for: identifier }, this.label), this.tooltip && (index.h("duet-tooltip", { direction: this.tooltipDirection, accessibleInputLabel: this.label }, this.tooltip)), this.caption && (index.h("duet-caption", { id: this.topCaptionId, size: "medium" }, this.caption)), index.h("div", { class: "duet-textarea-wrapper" }, this.placeholder && this.echoPlaceholder && this.value && (index.h("duet-caption", { id: this.topCaptionPlaceholderId, class: "duet-textarea-placeholder", size: "small" }, this.placeholder)), index.h("textarea", { onInput: this.handleInput, onChange: this.handleChange, onBlur: this.handleBlur, onFocus: this.handleFocus, ref: input => (this.nativeInput = input), class: { "duet-textarea": true, disabled: this.disabled }, value: this.value, disabled: this.disabled, "aria-labelledby": `${this.labelId} ${this.errorId}`, "aria-controls": this.accessibleControls, "aria-autocomplete": this.accessibleAutocomplete, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": `${this.isCaptionVisible ? this.topCaptionId : ""} ${this.accessibleDescribedBy}`, placeholder: this.placeholder, spellcheck: "false", required: this.required, minlength: this.minlength, maxlength: this.maxlength, role: this.role, name: this.name, id: identifier })), index.h("duet-grid", { alignment: "stretch" }, index.h("duet-grid-item", { margin: "none", fill: true }, index.h("div", { class: "duet-textarea-help", id: this.errorId, "aria-live": "assertive", "aria-relevant": "additions removals" }, this.error && index.h("span", null, this.error))), index.h("duet-grid-item", { margin: "none", class: "duet-character-count-caption" }, this.counter && (index.h(CharacterCount, { theme: this.theme, value: this.value, maxlength: this.maxlength, label: this.counterLabel })))))));
199
+ } }, index.h("duet-label", { theme: this.theme === "turva" ? "turva" : "default", class: { "duet-has-tooltip": !!this.tooltip }, margin: this.isCaptionVisible ? "small" : "auto", id: this.labelId, for: identifier }, this.label), this.tooltip && (index.h("duet-tooltip", { direction: this.tooltipDirection, accessibleInputLabel: this.label }, this.tooltip)), this.caption && (index.h("duet-caption", { id: this.topCaptionId, size: "medium" }, this.caption)), index.h("div", { class: "duet-textarea-wrapper" }, this.placeholder && this.echoPlaceholder && this.value && (index.h("duet-caption", { id: this.topCaptionPlaceholderId, class: "duet-textarea-placeholder", size: "small" }, this.placeholder)), index.h("textarea", { onInput: this.handleInput, onChange: this.handleChange, onBlur: this.handleBlur, onFocus: this.handleFocus, ref: input => (this.nativeInput = input), class: { "duet-textarea": true, disabled: this.disabled }, value: this.value, disabled: this.disabled, "aria-labelledby": this.accessibleLabelledBy
200
+ ? `${this.labelId} ${this.errorId} ${this.accessibleLabelledBy}`
201
+ : `${this.labelId} ${this.errorId} `, "aria-controls": this.accessibleControls, "aria-autocomplete": this.accessibleAutocomplete, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": `${this.isCaptionVisible ? this.topCaptionId : ""} ${this.accessibleDescribedBy}`, "aria-details": this.accessibleDetails, "aria-description": this.accessibleDescription, placeholder: this.placeholder, spellcheck: "false", required: this.required, minlength: this.minlength, maxlength: this.maxlength, role: this.role, name: this.name, id: identifier })), index.h("duet-grid", { alignment: "stretch" }, index.h("duet-grid-item", { margin: "none", fill: true }, index.h("div", { class: "duet-textarea-help", id: this.errorId, "aria-live": "assertive", "aria-relevant": "additions removals" }, this.error && index.h("span", null, this.error))), index.h("duet-grid-item", { margin: "none", class: "duet-character-count-caption" }, this.counter && (index.h(CharacterCount, { theme: this.theme, value: this.value, maxlength: this.maxlength, label: this.counterLabel })))))));
188
202
  }
189
203
  get element() { return index.getElement(this); }
190
204
  static get watchers() { return {
@@ -5,9 +5,9 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-cfea8a15.js');
8
+ const index = require('./index-3024eb44.js');
9
+ const themeableComponent = require('./themeable-component-fdeaef9f.js');
9
10
  const createId = require('./create-id-c3b984b1.js');
10
- const themeableComponent = require('./themeable-component-940d3b50.js');
11
11
 
12
12
  const duetToggleCss = "*.sc-duet-toggle,*.sc-duet-toggle::after,*.sc-duet-toggle::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-toggle-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:8px !important;margin-bottom:12px !important;-webkit-user-select:none;user-select:none;display:inline-flex;width:100%;vertical-align:bottom;-webkit-tap-highlight-color:transparent}.sc-duet-toggle-h:last-child,.sc-duet-toggle-h:last-of-type{margin-right:0 !important}.duet-m-0.sc-duet-toggle-h{margin:0 !important}duet-label.sc-duet-toggle{display:block !important;width:100% !important}.duet-switch.sc-duet-toggle{position:relative;display:block;width:48px;height:28px}.duet-switch.sc-duet-toggle input.sc-duet-toggle{position:absolute !important;top:0;width:1px !important;height:1px !important;padding:0 !important;overflow:hidden !important;clip:rect(1px, 1px, 1px, 1px) !important;border:0 !important}.duet-switch.sc-duet-toggle input.sc-duet-toggle:checked+.duet-slider.sc-duet-toggle{background-color:#0077b3;box-shadow:none}.duet-theme-turva.sc-duet-toggle .duet-switch.sc-duet-toggle input.sc-duet-toggle:checked+.duet-slider.sc-duet-toggle{background-color:#c60c30}.duet-switch.sc-duet-toggle input.sc-duet-toggle:checked+.duet-slider.sc-duet-toggle::before{background-color:white;box-shadow:none;transform:translateX(20px)}.duet-switch.sc-duet-toggle input.sc-duet-toggle:disabled+.duet-slider.sc-duet-toggle{cursor:default}.duet-switch.sc-duet-toggle input.sc-duet-toggle:disabled:not(:checked)+.duet-slider.sc-duet-toggle{box-shadow:inset 0 0 0 1px #cfd2d4}.duet-theme-turva.sc-duet-toggle .duet-switch.sc-duet-toggle input.sc-duet-toggle:disabled:not(:checked)+.duet-slider.sc-duet-toggle{box-shadow:inset 0 0 0 1px #cfcfd1}.duet-switch.sc-duet-toggle input.sc-duet-toggle:disabled:not(:checked)+.duet-slider.sc-duet-toggle::before{background:#cfd2d4}.duet-theme-turva.sc-duet-toggle .duet-switch.sc-duet-toggle input.sc-duet-toggle:disabled:not(:checked)+.duet-slider.sc-duet-toggle::before{background:#cfcfd1}.duet-switch.sc-duet-toggle input.sc-duet-toggle:disabled:checked+.duet-slider.sc-duet-toggle{background:#cfd2d4}.duet-theme-turva.sc-duet-toggle .duet-switch.sc-duet-toggle input.sc-duet-toggle:disabled:checked+.duet-slider.sc-duet-toggle{background:#cfcfd1}.user-is-tabbing.sc-duet-toggle-h .duet-switch.sc-duet-toggle input.sc-duet-toggle:focus+.duet-slider.sc-duet-toggle{box-shadow:0 0 0 1px white, 0 0 0 3px rgba(0, 119, 179, 0.75)}.user-is-tabbing.sc-duet-toggle-h .duet-theme-turva.sc-duet-toggle .duet-switch.sc-duet-toggle input.sc-duet-toggle:focus+.duet-slider.sc-duet-toggle{box-shadow:0 0 0 1px white, 0 0 0 3px #171c3a}.duet-slider.sc-duet-toggle{position:absolute;top:0;right:0;bottom:0;left:0;cursor:pointer;background-color:white;border-radius:20px;box-shadow:inset 0 0 0 1px #00294d;transition:background-color 300ms ease}.duet-theme-turva.sc-duet-toggle .duet-slider.sc-duet-toggle{box-shadow:inset 0 0 0 1px #171c3a}.duet-slider.sc-duet-toggle::before{position:absolute;bottom:4px;left:4px;width:20px;height:20px;content:\"\";background-color:#00294d;border-radius:50%;transition:300ms ease}.duet-theme-turva.sc-duet-toggle .duet-slider.sc-duet-toggle::before{background-color:#171c3a}";
13
13
 
@@ -27,6 +27,18 @@ const DuetToggle = class {
27
27
  * Controls the margin of the component.
28
28
  */
29
29
  this.margin = "auto";
30
+ /**
31
+ * Aria 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
  * Label for the toggle.
32
44
  */
@@ -88,7 +100,7 @@ const DuetToggle = class {
88
100
  return (index.h(index.Host, { onClick: this.disabled ? undefined : this.onClick, class: { "duet-m-0": this.margin === "none" } }, index.h("div", { class: {
89
101
  "duet-toggle": true,
90
102
  "duet-theme-turva": this.theme === "turva",
91
- } }, index.h("duet-label", { theme: this.theme, for: identifier }, this.label), index.h("label", { class: "duet-switch", htmlFor: identifier }, index.h("input", { type: "checkbox", value: this.value, "aria-controls": this.accessibleControls, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": this.accessibleDescribedBy, id: identifier, role: this.role, name: this.name, checked: this.checked, required: this.required, disabled: this.disabled, ref: input => (this.nativeInput = input) }), index.h("div", { class: "duet-slider" })))));
103
+ } }, index.h("duet-label", { theme: this.theme, for: identifier }, this.label), index.h("label", { class: "duet-switch", htmlFor: identifier }, index.h("input", { type: "checkbox", value: this.value, "aria-controls": this.accessibleControls, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": this.accessibleDescribedBy, "aria-labelledby": this.accessibleLabelledBy, "aria-details": this.accessibleDetails, "aria-description": this.accessibleDescription, id: identifier, role: this.role, name: this.name, checked: this.checked, required: this.required, disabled: this.disabled, ref: input => (this.nativeInput = input) }), index.h("div", { class: "duet-slider" })))));
92
104
  }
93
105
  get element() { return index.getElement(this); }
94
106
  static get watchers() { return {