@duetds/components 4.30.1 → 4.33.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 (427) hide show
  1. package/hydrate/index.js +1531 -442
  2. package/lib/cjs/{dom-e89ebf90.js → dom-c850c8d7.js} +1 -1
  3. package/lib/cjs/duet-alert.cjs.entry.js +4 -2
  4. package/lib/cjs/duet-badge.cjs.entry.js +2 -2
  5. package/lib/cjs/duet-button_2.cjs.entry.js +6 -5
  6. package/lib/cjs/duet-caption_4.cjs.entry.js +21 -15
  7. package/lib/cjs/duet-card.cjs.entry.js +6 -6
  8. package/lib/cjs/duet-checkbox.cjs.entry.js +2 -2
  9. package/lib/cjs/duet-choice_2.cjs.entry.js +55 -25
  10. package/lib/cjs/duet-collapsible.cjs.entry.js +5 -2
  11. package/lib/cjs/duet-cookie-consent.cjs.entry.js +1 -1
  12. package/lib/cjs/duet-date-picker.cjs.entry.js +23 -13
  13. package/lib/cjs/duet-divider_2.cjs.entry.js +1 -1
  14. package/lib/cjs/duet-editable-table-button.cjs.entry.js +89 -0
  15. package/lib/cjs/duet-editable-table_4.cjs.entry.js +1445 -0
  16. package/lib/cjs/duet-empty-state.cjs.entry.js +1 -1
  17. package/lib/cjs/duet-fieldset.cjs.entry.js +1 -1
  18. package/lib/cjs/duet-footer.cjs.entry.js +4 -4
  19. package/lib/cjs/duet-grid_2.cjs.entry.js +52 -4
  20. package/lib/cjs/duet-header_2.cjs.entry.js +26 -10
  21. package/lib/cjs/duet-hero.cjs.entry.js +6 -6
  22. package/lib/cjs/duet-icon.cjs.entry.js +21 -19
  23. package/lib/cjs/duet-input_2.cjs.entry.js +7 -7
  24. package/lib/cjs/duet-layout.cjs.entry.js +1 -1
  25. package/lib/cjs/duet-list_2.cjs.entry.js +2 -2
  26. package/lib/cjs/duet-modal.cjs.entry.js +8 -7
  27. package/lib/cjs/duet-notification_2.cjs.entry.js +6 -5
  28. package/lib/cjs/duet-number-input.cjs.entry.js +36 -15
  29. package/lib/cjs/duet-progress.cjs.entry.js +75 -0
  30. package/lib/cjs/duet-radio_2.cjs.entry.js +2 -2
  31. package/lib/cjs/duet-range-slider.cjs.entry.js +2 -2
  32. package/lib/cjs/duet-select.cjs.entry.js +6 -6
  33. package/lib/cjs/duet-step_2.cjs.entry.js +1 -1
  34. package/lib/cjs/duet-tab_2.cjs.entry.js +12 -6
  35. package/lib/cjs/duet-textarea.cjs.entry.js +5 -5
  36. package/lib/cjs/duet-toggle.cjs.entry.js +1 -1
  37. package/lib/cjs/duet-tooltip.cjs.entry.js +21 -10
  38. package/lib/cjs/duet-tray.cjs.entry.js +21 -10
  39. package/lib/cjs/duet-upload-aria-status.cjs.entry.js +100 -0
  40. package/lib/cjs/duet-visually-hidden.cjs.entry.js +1 -1
  41. package/lib/cjs/duet.cjs.js +4 -4
  42. package/lib/cjs/{focus-utils-7605778f.js → focus-utils-b609a7a5.js} +1 -1
  43. package/lib/cjs/{index-0c949193.js → index-9a57d969.js} +95 -77
  44. package/lib/cjs/{language-utils-70d6a9a4.js → language-utils-aa282901.js} +28 -9
  45. package/lib/cjs/loader.cjs.js +3 -3
  46. package/lib/cjs/{shadow-css-0c8c175b.js → shadow-css-e3edeed1.js} +9 -10
  47. package/lib/cjs/{string-utils-a6de43d8.js → string-utils-267e3dbb.js} +7 -0
  48. package/lib/cjs/{token-utils-13e5d13e.js → token-utils-63a9c8dc.js} +1 -1
  49. package/lib/cjs/{tokens.module-53b3bd92.js → tokens.module-6b2df1c2.js} +2 -0
  50. package/lib/cjs/{watch-options-3877c082.js → watch-options-d88afac0.js} +29 -6
  51. package/lib/collection/collection-manifest.json +16 -8
  52. package/lib/collection/components/duet-alert/duet-alert.js +12 -6
  53. package/lib/collection/components/duet-badge/duet-badge.css +1 -0
  54. package/lib/collection/components/duet-button/duet-button.js +17 -15
  55. package/lib/collection/components/duet-card/duet-card.css +30 -7
  56. package/lib/collection/components/duet-card/duet-card.js +4 -3
  57. package/lib/collection/components/duet-checkbox/duet-checkbox.css +1 -1
  58. package/lib/collection/components/duet-choice/duet-choice.css +16 -3
  59. package/lib/collection/components/duet-choice/duet-choice.js +122 -36
  60. package/lib/collection/components/duet-choice-group/duet-choice-group.css +1 -0
  61. package/lib/collection/components/duet-choice-group/duet-choice-group.js +4 -4
  62. package/lib/collection/components/duet-date-picker/duet-date-picker.css +1 -1
  63. package/lib/collection/components/duet-date-picker/duet-date-picker.js +78 -43
  64. package/lib/collection/components/duet-editable-table/duet-editable-table-button.css +32 -0
  65. package/lib/collection/components/duet-editable-table/duet-editable-table-button.js +218 -0
  66. package/lib/collection/components/duet-editable-table/duet-editable-table-item.css +36 -0
  67. package/lib/collection/components/duet-editable-table/duet-editable-table-item.js +203 -0
  68. package/lib/collection/components/duet-editable-table/duet-editable-table-tabledata.js +13 -0
  69. package/lib/collection/components/duet-editable-table/duet-editable-table.css +16 -0
  70. package/lib/collection/components/duet-editable-table/duet-editable-table.js +348 -0
  71. package/lib/collection/components/duet-footer/duet-footer.js +17 -15
  72. package/lib/collection/components/duet-grid/duet-grid.js +57 -6
  73. package/lib/collection/components/duet-grid-item/duet-grid-item.js +4 -4
  74. package/lib/collection/components/duet-header/duet-header.js +60 -35
  75. package/lib/collection/components/duet-heading/duet-heading.css +4 -0
  76. package/lib/collection/components/duet-heading/duet-heading.js +7 -6
  77. package/lib/collection/components/duet-hero/duet-hero.js +20 -15
  78. package/lib/collection/components/duet-icon/duet-icon.js +2 -6
  79. package/lib/collection/components/duet-icon/icon-utils.js +20 -13
  80. package/lib/collection/components/duet-input/duet-input.css +15 -0
  81. package/lib/collection/components/duet-input/duet-input.js +4 -4
  82. package/lib/collection/components/duet-label/duet-label.css +2 -0
  83. package/lib/collection/components/duet-link/duet-link.js +18 -19
  84. package/lib/collection/components/duet-logo/duet-logo.js +4 -4
  85. package/lib/collection/components/duet-modal/duet-modal.js +22 -17
  86. package/lib/collection/components/duet-notification/duet-notification.js +8 -8
  87. package/lib/collection/components/duet-notification-drawer/duet-notification-drawer.js +20 -15
  88. package/lib/collection/components/duet-number-input/duet-number-input.js +153 -29
  89. package/lib/collection/components/duet-paragraph/duet-paragraph.css +6 -0
  90. package/lib/collection/components/duet-paragraph/duet-paragraph.js +34 -3
  91. package/lib/collection/components/duet-progress/duet-progress.css +103 -0
  92. package/lib/collection/components/duet-progress/duet-progress.js +240 -0
  93. package/lib/collection/components/duet-radio/duet-radio.js +6 -6
  94. package/lib/collection/components/duet-select/duet-select.css +15 -0
  95. package/lib/collection/components/duet-select/duet-select.js +3 -3
  96. package/lib/collection/components/duet-step/duet-step.js +8 -8
  97. package/lib/collection/components/duet-tab-group/duet-tab-group.css +2 -2
  98. package/lib/collection/components/duet-tab-group/duet-tab-group.js +43 -12
  99. package/lib/collection/components/duet-textarea/duet-textarea.css +19 -0
  100. package/lib/collection/components/duet-textarea/duet-textarea.js +5 -4
  101. package/lib/collection/components/duet-tooltip/duet-tooltip.js +82 -20
  102. package/lib/collection/components/duet-tray/duet-tray.js +79 -17
  103. package/lib/collection/components/duet-upload/duet-upload.css +17 -86
  104. package/lib/collection/components/duet-upload/duet-upload.js +587 -164
  105. package/lib/collection/components/duet-upload/errorcodes.utils.js +16 -4
  106. package/lib/collection/components/duet-upload/upload-editable-item-error.js +16 -0
  107. package/lib/collection/components/duet-upload/upload-editable-item-inprogres.js +8 -0
  108. package/lib/collection/components/duet-upload/upload-editable-item-success.js +30 -0
  109. package/lib/collection/components/duet-upload/{duet-upload-validators.js → upload-validators.js} +0 -0
  110. package/lib/collection/components/duet-upload/xhr.helpers.js +2 -6
  111. package/lib/collection/components/duet-upload-aria-status/duet-upload-aria-status.js +217 -0
  112. package/lib/collection/utils/fixture-utils.js +7 -5
  113. package/lib/collection/utils/js-utils.js +12 -0
  114. package/lib/collection/utils/language-utils.js +26 -9
  115. package/lib/collection/utils/string-utils.js +6 -0
  116. package/lib/collection/utils/watch-options.js +35 -6
  117. package/lib/custom-elements-bundle/index.d.ts +30 -0
  118. package/lib/custom-elements-bundle/index.js +1651 -730
  119. package/lib/duet/duet.esm.js +1 -1
  120. package/lib/duet/duet.js +1 -1
  121. package/lib/duet/p-00210a63.entry.js +4 -0
  122. package/lib/duet/{p-66dde4d2.entry.js → p-0205162d.entry.js} +1 -1
  123. package/lib/duet/{p-3dc9d15d.system.entry.js → p-020a2c42.system.entry.js} +1 -1
  124. package/lib/duet/{p-59a07cf9.entry.js → p-079795e5.entry.js} +1 -1
  125. package/lib/duet/p-09013a48.system.entry.js +4 -0
  126. package/lib/duet/p-0a89315d.entry.js +4 -0
  127. package/lib/duet/p-0d22396e.system.js +16 -0
  128. package/lib/duet/p-0e90f075.system.entry.js +4 -0
  129. package/lib/duet/p-12721178.js +4 -0
  130. package/lib/duet/p-19d7d9d5.system.entry.js +4 -0
  131. package/lib/duet/p-1cbc6269.entry.js +4 -0
  132. package/lib/duet/p-2297d13f.system.entry.js +4 -0
  133. package/lib/duet/p-2764f081.js +4 -0
  134. package/lib/duet/p-2a822e91.system.entry.js +4 -0
  135. package/lib/duet/{p-f81d8534.entry.js → p-2fdcff82.entry.js} +1 -1
  136. package/lib/duet/p-3013c9bb.system.entry.js +4 -0
  137. package/lib/duet/p-3212a556.entry.js +4 -0
  138. package/lib/duet/{p-dee41056.system.entry.js → p-323643af.system.entry.js} +1 -1
  139. package/lib/duet/p-32b7397d.entry.js +4 -0
  140. package/lib/duet/{p-bd9a7d8f.js → p-35a3794e.js} +0 -0
  141. package/lib/duet/p-360086f8.entry.js +4 -0
  142. package/lib/duet/{p-f71f12ed.entry.js → p-37cda933.entry.js} +1 -1
  143. package/lib/duet/{p-62806bb6.system.entry.js → p-3ba62cf1.system.entry.js} +1 -1
  144. package/lib/duet/{p-322d1c38.js → p-3c1971d8.js} +1 -1
  145. package/lib/duet/p-3fd9190b.system.entry.js +4 -0
  146. package/lib/duet/p-43847557.entry.js +4 -0
  147. package/lib/duet/{p-bbc229d8.system.entry.js → p-4b6e8558.system.entry.js} +1 -1
  148. package/lib/duet/p-4c5eedf8.entry.js +4 -0
  149. package/lib/duet/p-4c827f0d.entry.js +4 -0
  150. package/lib/duet/{p-de2be65b.system.js → p-51955fc0.system.js} +1 -1
  151. package/lib/duet/p-5cfc53f9.entry.js +4 -0
  152. package/lib/duet/p-5decc259.system.entry.js +4 -0
  153. package/lib/duet/p-5e0071d6.js +4 -0
  154. package/lib/duet/p-5e77432e.system.entry.js +4 -0
  155. package/lib/duet/{p-ce1374a4.system.entry.js → p-6024e484.system.entry.js} +1 -1
  156. package/lib/duet/p-68008644.entry.js +4 -0
  157. package/lib/duet/p-69385972.system.entry.js +4 -0
  158. package/lib/duet/p-6a4d85ed.system.entry.js +4 -0
  159. package/lib/duet/{p-f82709ba.entry.js → p-6a5ab3eb.entry.js} +1 -1
  160. package/lib/duet/p-6e363557.system.js +4 -0
  161. package/lib/duet/p-6e4b1c0d.entry.js +4 -0
  162. package/lib/duet/p-6f36f647.system.entry.js +4 -0
  163. package/lib/duet/p-6fa6c4fb.system.entry.js +4 -0
  164. package/lib/duet/p-70fafc98.system.js +4 -0
  165. package/lib/duet/p-71a77368.system.entry.js +4 -0
  166. package/lib/duet/p-73f9db25.system.entry.js +4 -0
  167. package/lib/duet/p-74f4a0d8.system.entry.js +4 -0
  168. package/lib/duet/p-7530be48.system.entry.js +4 -0
  169. package/lib/duet/{p-36007600.entry.js → p-75edcaed.entry.js} +1 -1
  170. package/lib/duet/{p-d1817efe.system.entry.js → p-7a8597c2.system.entry.js} +1 -1
  171. package/lib/duet/{p-1cfe38b1.system.entry.js → p-85ad012a.system.entry.js} +1 -1
  172. package/lib/duet/{p-a321a98c.entry.js → p-85e52be8.entry.js} +1 -1
  173. package/lib/duet/p-8aaf3383.entry.js +4 -0
  174. package/lib/duet/p-986779fb.js +4 -0
  175. package/lib/duet/p-987edcd0.js +15 -0
  176. package/lib/duet/{p-35e45c19.system.js → p-9a945278.system.js} +1 -1
  177. package/lib/duet/p-9e79e033.entry.js +4 -0
  178. package/lib/duet/{p-7e108b7e.entry.js → p-9f35d682.entry.js} +1 -1
  179. package/lib/duet/{p-f71e337e.system.entry.js → p-a2a00146.system.entry.js} +1 -1
  180. package/lib/duet/p-a545398c.entry.js +4 -0
  181. package/lib/duet/{p-2826f987.js → p-ad07f399.js} +1 -1
  182. package/lib/duet/{p-4a7911fd.entry.js → p-af49d4f9.entry.js} +1 -1
  183. package/lib/duet/{p-1c41525a.entry.js → p-b25edbbe.entry.js} +1 -1
  184. package/lib/duet/p-b314348c.system.js +4 -0
  185. package/lib/duet/p-b4111e88.system.entry.js +4 -0
  186. package/lib/duet/p-b5c7d304.system.entry.js +4 -0
  187. package/lib/duet/p-b6e9860a.entry.js +4 -0
  188. package/lib/duet/p-ba18b56e.entry.js +4 -0
  189. package/lib/duet/p-bf4596bd.system.entry.js +4 -0
  190. package/lib/duet/{p-4265de16.system.entry.js → p-bf9f6d80.system.entry.js} +1 -1
  191. package/lib/duet/{p-fd98468a.system.js → p-c18a599e.system.js} +0 -0
  192. package/lib/duet/p-c1a1ea1b.js +4 -0
  193. package/lib/duet/p-c742856b.system.entry.js +4 -0
  194. package/lib/duet/p-cbdb9e98.system.entry.js +4 -0
  195. package/lib/duet/{p-27d538f7.system.entry.js → p-cf319832.system.entry.js} +1 -1
  196. package/lib/duet/p-d67fff56.entry.js +4 -0
  197. package/lib/duet/{p-031c2cd8.system.entry.js → p-dd76db9b.system.entry.js} +1 -1
  198. package/lib/duet/p-ddb6344c.system.js +4 -0
  199. package/lib/duet/{p-345ea4f2.system.entry.js → p-de5ec54e.system.entry.js} +1 -1
  200. package/lib/duet/p-df6f39a3.entry.js +4 -0
  201. package/lib/duet/p-e1dc86b5.system.js +4 -0
  202. package/lib/duet/p-e2596ea0.entry.js +4 -0
  203. package/lib/duet/p-e370c18b.entry.js +4 -0
  204. package/lib/duet/{p-e26116e0.system.entry.js → p-e48f3a32.system.entry.js} +1 -1
  205. package/lib/duet/p-e5031543.entry.js +4 -0
  206. package/lib/duet/p-e60ee8b0.entry.js +4 -0
  207. package/lib/duet/p-e70088d5.entry.js +4 -0
  208. package/lib/duet/p-e7b90769.system.entry.js +4 -0
  209. package/lib/duet/{p-a88df408.entry.js → p-e8123a53.entry.js} +1 -1
  210. package/lib/duet/p-eb55ccd2.system.js +4 -0
  211. package/lib/duet/{p-2d2c45f9.entry.js → p-ef7251bf.entry.js} +1 -1
  212. package/lib/duet/p-f0cfe033.system.entry.js +4 -0
  213. package/lib/duet/p-f2a087a8.system.entry.js +4 -0
  214. package/lib/duet/p-f5a55b3c.entry.js +4 -0
  215. package/lib/duet/p-fd613733.entry.js +4 -0
  216. package/lib/esm/{dom-21034390.js → dom-58cd15f6.js} +1 -1
  217. package/lib/esm/duet-alert.entry.js +4 -2
  218. package/lib/esm/duet-badge.entry.js +2 -2
  219. package/lib/esm/duet-button_2.entry.js +6 -5
  220. package/lib/esm/duet-caption_4.entry.js +21 -15
  221. package/lib/esm/duet-card.entry.js +6 -6
  222. package/lib/esm/duet-checkbox.entry.js +2 -2
  223. package/lib/esm/duet-choice_2.entry.js +56 -26
  224. package/lib/esm/duet-collapsible.entry.js +5 -2
  225. package/lib/esm/duet-cookie-consent.entry.js +1 -1
  226. package/lib/esm/duet-date-picker.entry.js +23 -13
  227. package/lib/esm/duet-divider_2.entry.js +1 -1
  228. package/lib/esm/duet-editable-table-button.entry.js +85 -0
  229. package/lib/esm/duet-editable-table_4.entry.js +1438 -0
  230. package/lib/esm/duet-empty-state.entry.js +1 -1
  231. package/lib/esm/duet-fieldset.entry.js +1 -1
  232. package/lib/esm/duet-footer.entry.js +4 -4
  233. package/lib/esm/duet-grid_2.entry.js +52 -4
  234. package/lib/esm/duet-header_2.entry.js +26 -10
  235. package/lib/esm/duet-hero.entry.js +6 -6
  236. package/lib/esm/duet-icon.entry.js +21 -19
  237. package/lib/esm/duet-input_2.entry.js +7 -7
  238. package/lib/esm/duet-layout.entry.js +1 -1
  239. package/lib/esm/duet-list_2.entry.js +2 -2
  240. package/lib/esm/duet-modal.entry.js +8 -7
  241. package/lib/esm/duet-notification_2.entry.js +6 -5
  242. package/lib/esm/duet-number-input.entry.js +36 -15
  243. package/lib/esm/duet-progress.entry.js +71 -0
  244. package/lib/esm/duet-radio_2.entry.js +2 -2
  245. package/lib/esm/duet-range-slider.entry.js +2 -2
  246. package/lib/esm/duet-select.entry.js +6 -6
  247. package/lib/esm/duet-step_2.entry.js +1 -1
  248. package/lib/esm/duet-tab_2.entry.js +12 -6
  249. package/lib/esm/duet-textarea.entry.js +5 -5
  250. package/lib/esm/duet-toggle.entry.js +1 -1
  251. package/lib/esm/duet-tooltip.entry.js +21 -10
  252. package/lib/esm/duet-tray.entry.js +21 -10
  253. package/lib/esm/duet-upload-aria-status.entry.js +96 -0
  254. package/lib/esm/duet-visually-hidden.entry.js +1 -1
  255. package/lib/esm/duet.js +4 -4
  256. package/lib/esm/{focus-utils-0b12f0df.js → focus-utils-aeb6ca93.js} +1 -1
  257. package/lib/esm/{index-f70ddc7f.js → index-e8c7d36f.js} +94 -78
  258. package/lib/esm/{language-utils-ab9c3afc.js → language-utils-344d894c.js} +28 -10
  259. package/lib/esm/loader.js +3 -3
  260. package/lib/esm/{shadow-css-31e2d504.js → shadow-css-7c726abb.js} +9 -10
  261. package/lib/esm/{string-utils-69cf0d09.js → string-utils-2f1793b8.js} +7 -1
  262. package/lib/esm/{token-utils-5a35377f.js → token-utils-590d9413.js} +1 -1
  263. package/lib/esm/{tokens.module-edb66c04.js → tokens.module-49cbf963.js} +3 -1
  264. package/lib/esm/watch-options-dd55bce8.js +57 -0
  265. package/lib/esm-es5/{dom-21034390.js → dom-58cd15f6.js} +0 -0
  266. package/lib/esm-es5/duet-alert.entry.js +1 -1
  267. package/lib/esm-es5/duet-badge.entry.js +1 -1
  268. package/lib/esm-es5/duet-button_2.entry.js +1 -1
  269. package/lib/esm-es5/duet-caption_4.entry.js +2 -2
  270. package/lib/esm-es5/duet-card.entry.js +1 -1
  271. package/lib/esm-es5/duet-checkbox.entry.js +1 -1
  272. package/lib/esm-es5/duet-choice_2.entry.js +1 -1
  273. package/lib/esm-es5/duet-collapsible.entry.js +1 -1
  274. package/lib/esm-es5/duet-cookie-consent.entry.js +1 -1
  275. package/lib/esm-es5/duet-date-picker.entry.js +1 -1
  276. package/lib/esm-es5/duet-divider_2.entry.js +1 -1
  277. package/lib/esm-es5/duet-editable-table-button.entry.js +4 -0
  278. package/lib/esm-es5/duet-editable-table_4.entry.js +4 -0
  279. package/lib/esm-es5/duet-empty-state.entry.js +1 -1
  280. package/lib/esm-es5/duet-fieldset.entry.js +1 -1
  281. package/lib/esm-es5/duet-footer.entry.js +1 -1
  282. package/lib/esm-es5/duet-grid_2.entry.js +2 -2
  283. package/lib/esm-es5/duet-header_2.entry.js +1 -1
  284. package/lib/esm-es5/duet-hero.entry.js +1 -1
  285. package/lib/esm-es5/duet-icon.entry.js +2 -2
  286. package/lib/esm-es5/duet-input_2.entry.js +1 -1
  287. package/lib/esm-es5/duet-layout.entry.js +1 -1
  288. package/lib/esm-es5/duet-list_2.entry.js +1 -1
  289. package/lib/esm-es5/duet-modal.entry.js +1 -1
  290. package/lib/esm-es5/duet-notification_2.entry.js +1 -1
  291. package/lib/esm-es5/duet-number-input.entry.js +2 -2
  292. package/lib/esm-es5/duet-progress.entry.js +4 -0
  293. package/lib/esm-es5/duet-radio_2.entry.js +1 -1
  294. package/lib/esm-es5/duet-range-slider.entry.js +1 -1
  295. package/lib/esm-es5/duet-select.entry.js +1 -1
  296. package/lib/esm-es5/duet-step_2.entry.js +1 -1
  297. package/lib/esm-es5/duet-tab_2.entry.js +2 -2
  298. package/lib/esm-es5/duet-textarea.entry.js +1 -1
  299. package/lib/esm-es5/duet-toggle.entry.js +1 -1
  300. package/lib/esm-es5/duet-tooltip.entry.js +1 -1
  301. package/lib/esm-es5/duet-tray.entry.js +1 -1
  302. package/lib/esm-es5/duet-upload-aria-status.entry.js +4 -0
  303. package/lib/esm-es5/duet-visually-hidden.entry.js +1 -1
  304. package/lib/esm-es5/duet.js +1 -1
  305. package/lib/esm-es5/focus-utils-aeb6ca93.js +4 -0
  306. package/lib/esm-es5/index-e8c7d36f.js +4 -0
  307. package/lib/esm-es5/language-utils-344d894c.js +4 -0
  308. package/lib/esm-es5/loader.js +1 -1
  309. package/lib/esm-es5/shadow-css-7c726abb.js +15 -0
  310. package/lib/esm-es5/{string-utils-69cf0d09.js → string-utils-2f1793b8.js} +1 -1
  311. package/lib/esm-es5/{token-utils-5a35377f.js → token-utils-590d9413.js} +1 -1
  312. package/lib/esm-es5/tokens.module-49cbf963.js +4 -0
  313. package/lib/esm-es5/watch-options-dd55bce8.js +4 -0
  314. package/lib/html.html-data.json +4906 -0
  315. package/lib/types/components/duet-alert/duet-alert.d.ts +2 -1
  316. package/lib/types/components/duet-button/duet-button.d.ts +1 -1
  317. package/lib/types/components/duet-choice/duet-choice.d.ts +24 -5
  318. package/lib/types/components/duet-date-picker/duet-date-picker.d.ts +15 -9
  319. package/lib/types/components/duet-editable-table/duet-editable-table-button.d.ts +72 -0
  320. package/lib/types/components/duet-editable-table/duet-editable-table-item.d.ts +72 -0
  321. package/lib/types/components/duet-editable-table/duet-editable-table-tabledata.d.ts +7 -0
  322. package/lib/types/components/duet-editable-table/duet-editable-table.d.ts +84 -0
  323. package/lib/types/components/duet-footer/duet-footer.d.ts +1 -1
  324. package/lib/types/components/duet-grid/duet-grid.d.ts +16 -2
  325. package/lib/types/components/duet-header/duet-header.d.ts +21 -5
  326. package/lib/types/components/duet-heading/duet-heading.d.ts +2 -2
  327. package/lib/types/components/duet-hero/duet-hero.d.ts +3 -3
  328. package/lib/types/components/duet-icon/duet-icon.d.ts +1 -1
  329. package/lib/types/components/duet-icon/icon-utils.d.ts +1 -1
  330. package/lib/types/components/duet-link/duet-link.d.ts +2 -3
  331. package/lib/types/components/duet-modal/duet-modal.d.ts +3 -3
  332. package/lib/types/components/duet-notification-drawer/duet-notification-drawer.d.ts +3 -3
  333. package/lib/types/components/duet-number-input/duet-number-input.d.ts +21 -0
  334. package/lib/types/components/duet-paragraph/duet-paragraph.d.ts +9 -1
  335. package/lib/types/components/duet-progress/duet-progress.d.ts +64 -0
  336. package/lib/types/components/duet-tab-group/duet-tab-group.d.ts +6 -0
  337. package/lib/types/components/duet-tooltip/duet-tooltip.d.ts +11 -0
  338. package/lib/types/components/duet-tray/duet-tray.d.ts +11 -0
  339. package/lib/types/components/duet-upload/duet-upload.d.ts +124 -31
  340. package/lib/types/components/duet-upload/errorcodes.utils.d.ts +1 -0
  341. package/lib/types/components/duet-upload/upload-editable-item-error.d.ts +7 -0
  342. package/lib/types/components/duet-upload/upload-editable-item-inprogres.d.ts +7 -0
  343. package/lib/types/components/duet-upload/upload-editable-item-success.d.ts +8 -0
  344. package/lib/types/components/duet-upload/{duet-upload-validators.d.ts → upload-validators.d.ts} +0 -0
  345. package/lib/types/components/duet-upload/xhr.helpers.d.ts +7 -1
  346. package/lib/types/components/duet-upload-aria-status/duet-upload-aria-status.d.ts +49 -0
  347. package/lib/types/components.d.ts +619 -87
  348. package/lib/types/utils/js-utils.d.ts +1 -0
  349. package/lib/types/utils/language-utils.d.ts +8 -3
  350. package/lib/types/utils/string-utils.d.ts +1 -0
  351. package/lib/types/utils/watch-options.d.ts +2 -0
  352. package/package.json +20 -15
  353. package/lib/cjs/duet-table.cjs.entry.js +0 -132
  354. package/lib/cjs/duet-upload.cjs.entry.js +0 -866
  355. package/lib/collection/components/duet-upload/duet-upload-file-list.js +0 -49
  356. package/lib/duet/p-0733c303.system.entry.js +0 -4
  357. package/lib/duet/p-095060cc.js +0 -4
  358. package/lib/duet/p-156864a1.system.entry.js +0 -4
  359. package/lib/duet/p-15c15c6a.js +0 -15
  360. package/lib/duet/p-1911dfe7.system.entry.js +0 -4
  361. package/lib/duet/p-2834a302.entry.js +0 -4
  362. package/lib/duet/p-28a3d38f.system.entry.js +0 -4
  363. package/lib/duet/p-2a1a9f9f.entry.js +0 -4
  364. package/lib/duet/p-2a4d7c5b.system.entry.js +0 -4
  365. package/lib/duet/p-4095dba5.entry.js +0 -4
  366. package/lib/duet/p-418b2ce7.system.js +0 -4
  367. package/lib/duet/p-4289b543.entry.js +0 -4
  368. package/lib/duet/p-43e39d98.system.js +0 -4
  369. package/lib/duet/p-46a3ae43.system.js +0 -4
  370. package/lib/duet/p-4a38cf9d.entry.js +0 -4
  371. package/lib/duet/p-4be8e814.entry.js +0 -4
  372. package/lib/duet/p-591b2137.entry.js +0 -4
  373. package/lib/duet/p-5c5bdb06.system.entry.js +0 -4
  374. package/lib/duet/p-5f70e318.entry.js +0 -4
  375. package/lib/duet/p-62c294d6.system.entry.js +0 -4
  376. package/lib/duet/p-6a356ab1.system.js +0 -4
  377. package/lib/duet/p-6c2729da.js +0 -4
  378. package/lib/duet/p-6f107847.system.entry.js +0 -4
  379. package/lib/duet/p-77a5fe4c.system.js +0 -4
  380. package/lib/duet/p-7809e78b.system.entry.js +0 -4
  381. package/lib/duet/p-7a36d76f.system.entry.js +0 -4
  382. package/lib/duet/p-7ee52f58.entry.js +0 -4
  383. package/lib/duet/p-884693f1.entry.js +0 -4
  384. package/lib/duet/p-8977b722.entry.js +0 -4
  385. package/lib/duet/p-89db3b94.entry.js +0 -4
  386. package/lib/duet/p-8cfce39e.system.entry.js +0 -4
  387. package/lib/duet/p-8ffe1461.system.entry.js +0 -4
  388. package/lib/duet/p-9381c2d4.entry.js +0 -4
  389. package/lib/duet/p-9a450c9a.entry.js +0 -4
  390. package/lib/duet/p-9a89ec39.js +0 -4
  391. package/lib/duet/p-9bbfe606.system.entry.js +0 -4
  392. package/lib/duet/p-a0a066cb.system.entry.js +0 -4
  393. package/lib/duet/p-a6096b05.system.entry.js +0 -4
  394. package/lib/duet/p-a89d5d7c.entry.js +0 -4
  395. package/lib/duet/p-b07055fd.system.entry.js +0 -4
  396. package/lib/duet/p-b4374f0e.entry.js +0 -4
  397. package/lib/duet/p-b456d684.system.entry.js +0 -4
  398. package/lib/duet/p-bd18c93f.js +0 -4
  399. package/lib/duet/p-bddb1c15.system.entry.js +0 -4
  400. package/lib/duet/p-c0b95b58.entry.js +0 -4
  401. package/lib/duet/p-c3688975.entry.js +0 -4
  402. package/lib/duet/p-c4d183e6.entry.js +0 -4
  403. package/lib/duet/p-c9303f9a.entry.js +0 -4
  404. package/lib/duet/p-cd4e8ccf.js +0 -4
  405. package/lib/duet/p-ceb75b35.system.entry.js +0 -4
  406. package/lib/duet/p-cf243bcb.system.entry.js +0 -4
  407. package/lib/duet/p-d37c8a05.system.js +0 -4
  408. package/lib/duet/p-d989af11.entry.js +0 -4
  409. package/lib/duet/p-e58ca7af.system.js +0 -16
  410. package/lib/duet/p-e6128d82.system.entry.js +0 -4
  411. package/lib/duet/p-e86cdc17.entry.js +0 -4
  412. package/lib/duet/p-eadb29c7.entry.js +0 -4
  413. package/lib/duet/p-f30b14d6.system.entry.js +0 -4
  414. package/lib/duet/p-f79f8da1.entry.js +0 -4
  415. package/lib/duet/p-fc397e03.system.entry.js +0 -4
  416. package/lib/esm/duet-table.entry.js +0 -128
  417. package/lib/esm/duet-upload.entry.js +0 -862
  418. package/lib/esm/watch-options-de55ea78.js +0 -35
  419. package/lib/esm-es5/duet-table.entry.js +0 -4
  420. package/lib/esm-es5/duet-upload.entry.js +0 -4
  421. package/lib/esm-es5/focus-utils-0b12f0df.js +0 -4
  422. package/lib/esm-es5/index-f70ddc7f.js +0 -4
  423. package/lib/esm-es5/language-utils-ab9c3afc.js +0 -4
  424. package/lib/esm-es5/shadow-css-31e2d504.js +0 -15
  425. package/lib/esm-es5/tokens.module-edb66c04.js +0 -4
  426. package/lib/esm-es5/watch-options-de55ea78.js +0 -4
  427. package/lib/types/components/duet-upload/duet-upload-file-list.d.ts +0 -9
@@ -5,7 +5,7 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-0c949193.js');
8
+ const index = require('./index-9a57d969.js');
9
9
  const themeableComponent = require('./themeable-component-0c1be552.js');
10
10
 
11
11
  const duetEmptyStateCss = "*,*::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;display:block;width:100%;height:100%}.duet-empty-state{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;width:100%;height:100%;padding:48px;color:#00294d;text-align:center;background:#f5f8fa;border-radius:4px}.duet-empty-state.duet-theme-turva{color:#171c3a;background:#f5f5f7}";
@@ -5,7 +5,7 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-0c949193.js');
8
+ const index = require('./index-9a57d969.js');
9
9
  const createId = require('./create-id-c3b984b1.js');
10
10
  const themeableComponent = require('./themeable-component-0c1be552.js');
11
11
 
@@ -5,11 +5,11 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-0c949193.js');
8
+ const index = require('./index-9a57d969.js');
9
9
  const actionNewWindowSmall = require('./action-new-window-small-fa51dfb9.js');
10
10
  const commonStrings = require('./common-strings-de17f887.js');
11
- const languageUtils = require('./language-utils-70d6a9a4.js');
12
- const stringUtils = require('./string-utils-a6de43d8.js');
11
+ const languageUtils = require('./language-utils-aa282901.js');
12
+ const stringUtils = require('./string-utils-267e3dbb.js');
13
13
  const themeableComponent = require('./themeable-component-0c1be552.js');
14
14
 
15
15
  var actionArrowRight={"title":"action-arrow-right","tags":"action arrow right caret","svg":"<svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\"><path d=\"M5.499 24a.752.752 0 0 1-.53-1.281L15.689 12 4.969 1.28c-.142-.141-.22-.33-.22-.53s.078-.389.22-.53c.141-.142.33-.22.53-.22s.389.078.53.22l10.72 10.72a1.5 1.5 0 0 1 .001 2.119L6.029 23.78a.743.743 0 0 1-.53.22z\"/></svg>"};
@@ -75,7 +75,7 @@ let DuetFooter = class {
75
75
  * Adds accessible label for tooltip that is shown in external link (url & external have both been set)
76
76
  * @default {fi: "Avautuu uuteen ikkunaan",sv: "Öppnas i nytt fönster",en: "Opens in a new window"}
77
77
  */
78
- this.accessibleLabelExternal = languageUtils.getLocaleString(this.accessibleLabelExternalDefaults);
78
+ this.accessibleLabelExternal = languageUtils.getLocaleString(this.accessibleLabelExternalDefaults, this.language);
79
79
  /**
80
80
  * Component event handling.
81
81
  */
@@ -5,8 +5,8 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-0c949193.js');
9
- const watchOptions = require('./watch-options-3877c082.js');
8
+ const index = require('./index-9a57d969.js');
9
+ const watchOptions = require('./watch-options-d88afac0.js');
10
10
  const themeableComponent = require('./themeable-component-0c1be552.js');
11
11
 
12
12
  const duetGridCss = ".sc-duet-grid-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:flex !important;flex-direction:column !important;align-items:flex-start !important;justify-content:flex-start !important;width:100%;max-width:100%;height:auto}@media (min-width: 36em){.duet-grid-breakpoint-small.sc-duet-grid-h{flex-direction:row !important}}@media (min-width: 48em){.duet-grid-breakpoint-medium.sc-duet-grid-h{flex-direction:row !important}}@media (min-width: 64.0625em){.duet-grid-breakpoint-x-large.sc-duet-grid-h{flex-direction:row !important}}.duet-grid-wrap.sc-duet-grid-h{flex-wrap:wrap !important}.duet-no-stacking.sc-duet-grid-h{flex-direction:row !important}.duet-grid-direction-vertical.duet-grid-breakpoint-small.sc-duet-grid-h{flex-direction:column !important}@media (min-width: 36em){.duet-grid-direction-vertical.duet-grid-breakpoint-small.sc-duet-grid-h{flex-direction:column !important}}.duet-grid-direction-vertical.duet-grid-breakpoint-medium.sc-duet-grid-h{flex-direction:column !important}@media (min-width: 48em){.duet-grid-direction-vertical.duet-grid-breakpoint-medium.sc-duet-grid-h{flex-direction:column !important}}.duet-grid-direction-vertical.duet-grid-breakpoint-x-large.sc-duet-grid-h{flex-direction:column !important}@media (min-width: 64.0625em){.duet-grid-direction-vertical.duet-grid-breakpoint-x-large.sc-duet-grid-h{flex-direction:column !important}}.duet-grid-align-top.duet-no-stacking.sc-duet-grid-h{align-items:flex-start !important}.duet-grid-align-bottom.duet-no-stacking.sc-duet-grid-h{align-items:flex-end !important}.duet-grid-align-center.duet-no-stacking.sc-duet-grid-h{align-items:center !important}.duet-grid-align-stretch.duet-no-stacking.sc-duet-grid-h{align-items:stretch !important}.duet-grid-align-baseline.duet-no-stacking.sc-duet-grid-h{align-items:baseline !important}@media (min-width: 36em){.duet-grid-align-top.duet-grid-breakpoint-small.sc-duet-grid-h{align-items:flex-start !important}}@media (min-width: 36em){.duet-grid-align-bottom.duet-grid-breakpoint-small.sc-duet-grid-h{align-items:flex-end !important}}@media (min-width: 36em){.duet-grid-align-center.duet-grid-breakpoint-small.sc-duet-grid-h{align-items:center !important}}@media (min-width: 36em){.duet-grid-align-stretch.duet-grid-breakpoint-small.sc-duet-grid-h{align-items:stretch !important}}@media (min-width: 36em){.duet-grid-align-baseline.duet-grid-breakpoint-small.sc-duet-grid-h{align-items:baseline !important}}@media (min-width: 48em){.duet-grid-align-top.duet-grid-breakpoint-medium.sc-duet-grid-h{align-items:flex-start !important}}@media (min-width: 48em){.duet-grid-align-bottom.duet-grid-breakpoint-medium.sc-duet-grid-h{align-items:flex-end !important}}@media (min-width: 48em){.duet-grid-align-center.duet-grid-breakpoint-medium.sc-duet-grid-h{align-items:center !important}}@media (min-width: 48em){.duet-grid-align-stretch.duet-grid-breakpoint-medium.sc-duet-grid-h{align-items:stretch !important}}@media (min-width: 48em){.duet-grid-align-baseline.duet-grid-breakpoint-medium.sc-duet-grid-h{align-items:baseline !important}}@media (min-width: 64.0625em){.duet-grid-align-top.duet-grid-breakpoint-x-large.sc-duet-grid-h{align-items:flex-start !important}}@media (min-width: 64.0625em){.duet-grid-align-bottom.duet-grid-breakpoint-x-large.sc-duet-grid-h{align-items:flex-end !important}}@media (min-width: 64.0625em){.duet-grid-align-center.duet-grid-breakpoint-x-large.sc-duet-grid-h{align-items:center !important}}@media (min-width: 64.0625em){.duet-grid-align-stretch.duet-grid-breakpoint-x-large.sc-duet-grid-h{align-items:stretch !important}}@media (min-width: 64.0625em){.duet-grid-align-baseline.duet-grid-breakpoint-x-large.sc-duet-grid-h{align-items:baseline !important}}.duet-grid-distribution-left.sc-duet-grid-h{justify-content:flex-start !important}.duet-grid-distribution-right.sc-duet-grid-h{justify-content:flex-end !important}.duet-grid-distribution-center.sc-duet-grid-h{justify-content:center !important}.duet-grid-distribution-between.sc-duet-grid-h{justify-content:space-between !important}.duet-grid-distribution-around.sc-duet-grid-h{justify-content:space-around !important}.duet-grid-distribution-evenly.sc-duet-grid-h{justify-content:space-evenly !important}@media (max-width: 35.9375em){.duet-grid-mobile-left.sc-duet-grid-h{align-items:flex-start !important;justify-content:flex-start !important;text-align:left !important}}@media (max-width: 35.9375em){.duet-grid-mobile-center.sc-duet-grid-h{align-items:center !important;justify-content:center !important;text-align:center !important}.duet-grid-mobile-center.sc-duet-grid-h *.sc-duet-grid{text-align:center !important}}@media (max-width: 35.9375em){.duet-grid-mobile-right.sc-duet-grid-h{align-items:flex-end !important;justify-content:flex-end !important;text-align:right !important}.duet-grid-mobile-right.sc-duet-grid-h *.sc-duet-grid{text-align:right !important}}";
@@ -17,6 +17,7 @@ function isGridItem(element) {
17
17
  let DuetGrid = class {
18
18
  constructor(hostRef) {
19
19
  index.registerInstance(this, hostRef);
20
+ this.distributeFormElement = false;
20
21
  /**
21
22
  * Enable or disable the automatic responsive behaviour of the grid component.
22
23
  * Setting this option to "true" makes sure that contents are stacked vertically
@@ -33,7 +34,9 @@ let DuetGrid = class {
33
34
  */
34
35
  this.direction = "horizontal";
35
36
  /**
36
- * Adjusts the vertical alignment of the grid items.
37
+ * Adjusts the vertical alignment of the grid items, if set to "form_distribute"
38
+ * the grid will try to calculate correct paddings for any duet-input fields inside duet-grid-items,
39
+ * so that they align even when displaying errors.
37
40
  */
38
41
  this.alignment = "top";
39
42
  /**
@@ -45,14 +48,34 @@ let DuetGrid = class {
45
48
  */
46
49
  this.mobile = "";
47
50
  }
51
+ /**
52
+ * Private functions
53
+ */
54
+ /**
55
+ * Returns the element height including margins
56
+ * @param element - element
57
+ * @returns {number}
58
+ */
59
+ outerHeight(element) {
60
+ const height = element.offsetHeight, style = window.getComputedStyle(element);
61
+ return ["top", "bottom"]
62
+ .map(side => parseInt(style[`margin-${side}`]))
63
+ .reduce((total, side) => total + side, height);
64
+ }
48
65
  /**
49
66
  * Component lifecycle events.
50
67
  */
51
68
  async connectedCallback() {
52
69
  const el = this.element;
70
+ this.distributeFormElement = this.alignment === "form_distribute";
53
71
  this.mutationO = watchOptions.watchForOptions(el, "duet-grid-item", () => {
54
72
  this.updateGridItems();
55
73
  });
74
+ if (this.distributeFormElement) {
75
+ this.mutation1 = watchOptions.watchForElement(el, "duet-input", () => {
76
+ this.updateGridItemsWithInputFields();
77
+ });
78
+ }
56
79
  this.updateGridItems();
57
80
  }
58
81
  disconnectedCallback() {
@@ -60,6 +83,10 @@ let DuetGrid = class {
60
83
  this.mutationO.disconnect();
61
84
  this.mutationO = undefined;
62
85
  }
86
+ if (this.mutation1) {
87
+ this.mutation1.disconnect();
88
+ this.mutation1 = undefined;
89
+ }
63
90
  }
64
91
  /**
65
92
  * Local methods
@@ -71,6 +98,27 @@ let DuetGrid = class {
71
98
  item.breakpoint = this.breakpoint;
72
99
  });
73
100
  }
101
+ async updateGridItemsWithInputFields() {
102
+ const items = Array.from(this.element.children).filter(isGridItem);
103
+ let maxHeight = 0;
104
+ const sizes = [];
105
+ items.forEach(item => {
106
+ const inputErrorDom = item.querySelector("span.duet-input-error");
107
+ const height = inputErrorDom ? this.outerHeight(inputErrorDom) : 0;
108
+ sizes.push(height);
109
+ });
110
+ maxHeight = Math.max(...sizes);
111
+ items.forEach(item => {
112
+ const inputErrorDom = item.querySelector("span.duet-input-error");
113
+ const height = inputErrorDom ? this.outerHeight(inputErrorDom) : 0;
114
+ if (height < maxHeight) {
115
+ item.setAttribute("style", `padding-bottom: ${maxHeight - height}px;`);
116
+ }
117
+ else if (height === maxHeight) {
118
+ item.setAttribute("style", `padding-bottom: 0px;`);
119
+ }
120
+ });
121
+ }
74
122
  /**
75
123
  * render() function
76
124
  * Always the last one in the class.
@@ -80,7 +128,7 @@ let DuetGrid = class {
80
128
  "duet-grid": true,
81
129
  "duet-no-stacking": !this.responsive,
82
130
  "duet-grid-align-top": this.alignment === "top",
83
- "duet-grid-align-bottom": this.alignment === "bottom",
131
+ "duet-grid-align-bottom": this.alignment === "bottom" || this.alignment === "form_distribute",
84
132
  "duet-grid-align-center": this.alignment === "center",
85
133
  "duet-grid-align-stretch": this.alignment === "stretch",
86
134
  "duet-grid-align-baseline": this.alignment === "baseline",
@@ -5,15 +5,15 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-0c949193.js');
8
+ const index = require('./index-9a57d969.js');
9
9
  const actionArrowDownSmall = require('./action-arrow-down-small-ef77a2d1.js');
10
10
  const bodyScrollLock_es6 = require('./bodyScrollLock.es6-6ef1142a.js');
11
11
  const commonStrings = require('./common-strings-de17f887.js');
12
12
  const keyboardUtils = require('./keyboard-utils-b4e3d1d3.js');
13
- const languageUtils = require('./language-utils-70d6a9a4.js');
14
- const stringUtils = require('./string-utils-a6de43d8.js');
13
+ const languageUtils = require('./language-utils-aa282901.js');
14
+ const stringUtils = require('./string-utils-267e3dbb.js');
15
15
  const themeableComponent = require('./themeable-component-0c1be552.js');
16
- const tokens_module = require('./tokens.module-53b3bd92.js');
16
+ const tokens_module = require('./tokens.module-6b2df1c2.js');
17
17
  const createId = require('./create-id-c3b984b1.js');
18
18
 
19
19
  var navigationContactDropdown={"title":"navigation-contact-dropdown","tags":"navigation contact dropdown speech bubbles","svg":"<svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\"><path d=\"M20.247 24a.743.743 0 0 1-.53-.22l-4.28-4.28h-.439c-3.308 0-6-2.692-6-6s2.692-6 6-6h3c3.309.001 6 2.692 6 6a5.974 5.974 0 0 1-3 5.179v4.571a.75.75 0 0 1-.751.75zm-5.25-15c-2.481 0-4.5 2.019-4.5 4.5s2.019 4.5 4.5 4.5h.75c.198 0 .391.08.53.22l3.22 3.22v-3.213c0-.289.169-.555.429-.678a4.51 4.51 0 0 0 2.571-4.049 4.504 4.504 0 0 0-4.498-4.499h-3.002z\"/><path d=\"M3.747 16.5a.747.747 0 0 1-.75-.75v-4.57a5.967 5.967 0 0 1-2.65-3.171A5.948 5.948 0 0 1 .57 3.431 6.014 6.014 0 0 1 5.985 0h3.012a6.04 6.04 0 0 1 5.752 4.286.751.751 0 0 1-.718.964.755.755 0 0 1-.719-.536A4.531 4.531 0 0 0 8.997 1.5h-3a4.511 4.511 0 0 0-4.071 2.572c-.512 1.084-.571 2.302-.167 3.431s1.224 2.032 2.308 2.545c.261.123.43.39.43.678v3.214l1.72-1.72a.744.744 0 0 1 1.06 0 .752.752 0 0 1 0 1.061l-3 3a.744.744 0 0 1-.53.219z\"/></svg>"};
@@ -72,10 +72,26 @@ let DuetHeader = class {
72
72
  */
73
73
  this.language = languageUtils.getLanguage();
74
74
  /**
75
- * Property to change accessibleI18nLabels defaults on the component.
76
- * normally you would handle these strings on an application level and override @accessibleI18nLabels when needed
75
+ * Default strings for accessibleI18nLabels
76
+ * @default {
77
+ fi: {
78
+ skipLabel: "Siirry pääsisältöön",
79
+ changeLanguage: "Vaihda kieltä",
80
+ activeLanguage: "Suomi valittuna",
81
+ },
82
+ sv: {
83
+ skipLabel: "Hoppa till huvudinnehåll",
84
+ changeLanguage: "Ändra Språk",
85
+ activeLanguage: "Svenska valt",
86
+ },
87
+ en: {
88
+ skipLabel: "Skip to main content",
89
+ changeLanguage: "Change language",
90
+ activeLanguage: "English selected",
91
+ },
92
+ }
77
93
  */
78
- this.accessibleI18nLabelsDefault = {
94
+ this.accessibleI18nLabelsDefaults = {
79
95
  fi: {
80
96
  skipLabel: "Siirry pääsisältöön",
81
97
  changeLanguage: "Vaihda kieltä",
@@ -112,7 +128,7 @@ let DuetHeader = class {
112
128
  },
113
129
  }
114
130
  */
115
- this.accessibleI18nLabels = languageUtils.getLocaleString(this.accessibleI18nLabelsDefault, this.language);
131
+ this.accessibleI18nLabels = languageUtils.getLocaleString(this.accessibleI18nLabelsDefaults);
116
132
  /**
117
133
  * Property to change accessibleLabelExternal defaults on the component.
118
134
  * normally you would handle these strings on an application level and override @accessibleLabelExternal when needed
@@ -128,7 +144,7 @@ let DuetHeader = class {
128
144
  * Property to change accessibleLabel defaults on the component.
129
145
  * normally you would handle these strings on an application level and override @accessibleLabel when needed
130
146
  */
131
- this.accessibleLabelDefault = {
147
+ this.accessibleLabelDefaults = {
132
148
  fi: "Valikko",
133
149
  sv: "Meny",
134
150
  en: "Menu",
@@ -142,7 +158,7 @@ let DuetHeader = class {
142
158
  en: "Menu",
143
159
  }
144
160
  */
145
- this.accessibleLabel = languageUtils.getLocaleString(this.accessibleLabelDefault);
161
+ this.accessibleLabel = languageUtils.getLocaleString(this.accessibleLabelDefaults);
146
162
  /**
147
163
  * URL that the logo link points to.
148
164
  */
@@ -5,11 +5,11 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-0c949193.js');
8
+ const index = require('./index-9a57d969.js');
9
9
  const actionNewWindowSmall = require('./action-new-window-small-fa51dfb9.js');
10
10
  const commonStrings = require('./common-strings-de17f887.js');
11
- const languageUtils = require('./language-utils-70d6a9a4.js');
12
- const stringUtils = require('./string-utils-a6de43d8.js');
11
+ const languageUtils = require('./language-utils-aa282901.js');
12
+ const stringUtils = require('./string-utils-267e3dbb.js');
13
13
  const themeableComponent = require('./themeable-component-0c1be552.js');
14
14
 
15
15
  const duetHeroCss = "*,*::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;display:block;width:100%}.duet-hero{position:relative;display:block;width:100%;padding:48px 28px;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-style:normal;font-weight:400;line-height:1.5;text-decoration:none;text-shadow:none;text-transform:none;background:#00294d}.duet-hero.duet-p-0{padding:0 !important}.duet-hero.duet-m-0{margin:0 !important}.duet-hero.duet-hero-text-center{text-align:center !important}.duet-hero.duet-hero-light{padding-bottom:0 !important}@media (min-width: 62em){.duet-hero.duet-hero-light{padding-bottom:28px !important}}.duet-hero.duet-hero-with-image{padding-bottom:20px !important;margin-bottom:-36px}@media (min-width: 48em){.duet-hero.duet-hero-with-image{padding-bottom:28px !important}}@media (min-width: 62em){.duet-hero.duet-hero-with-image{padding-bottom:36px !important;margin-bottom:-20px}}.duet-hero.duet-hero-light,.duet-hero.duet-hero-with-image{color:#00294d;background-color:white;background-image:linear-gradient(#f3f9fc, #f9fcfe)}.duet-hero.duet-hero-light::before,.duet-hero.duet-hero-with-image::before{position:absolute;top:100%;left:0;z-index:-1;width:100%;height:400px;content:\"\";background-image:linear-gradient(#f9fcfe, white)}.duet-hero.duet-hero-light.duet-theme-turva,.duet-hero.duet-hero-with-image.duet-theme-turva{color:#171c3a;background-image:linear-gradient(#f5f5f7, #fafafb)}.duet-hero.duet-hero-light.duet-theme-turva::before,.duet-hero.duet-hero-with-image.duet-theme-turva::before{background-image:linear-gradient(#fafafb, white)}.duet-hero.duet-hero-gray{color:#00294d;background:#f5f8fa}.duet-hero.duet-hero-gray.duet-theme-turva{background:#f5f5f7}@media (min-width: 62em){.duet-hero.duet-hero-gray .duet-hero-text{display:inline-block;vertical-align:top}.duet-hero.duet-hero-gray .duet-hero-icon+.duet-hero-text{margin-left:28px}}@media (min-width: 62em){.duet-hero.duet-hero-gray-with-actions{padding-bottom:65.4545454545px}}@media (min-width: 62em){.duet-hero.duet-hero-gray-with-back{padding-top:72px}}.duet-hero.duet-theme-turva{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";background:#c60c30}@media (min-width: 62em){.duet-hero{min-height:290px;padding:111.6px 56px;overflow:visible}}.duet-hero-icon{display:inline-block;vertical-align:top}@media (min-width: 62em){.duet-hero-icon{margin-top:-8px}}@media (min-width: 62em){.duet-hero-heading{margin-top:12px}}@media (min-width: 62em){.duet-hero-heading-has-pre{margin-top:0}}.duet-hero-wrapper{position:relative;width:100%;max-width:1110px;margin:0 auto;text-align:center}.duet-hero-left-align .duet-hero-wrapper{text-align:left}.duet-hero-with-image .duet-hero-wrapper{position:static}@media (min-width: 62em){.duet-hero-wrapper{text-align:left}}.duet-hero-text{max-width:50rem;margin:0 auto}.duet-hero-text-center .duet-hero-text{text-align:center !important}@media (min-width: 48em){.duet-hero-text{width:80%}.duet-hero-left-align .duet-hero-text{margin:0}}@media (min-width: 62em){.duet-hero-text{width:52%;max-width:none;margin-top:-10px;margin-left:0}.duet-hero-text-center .duet-hero-text{margin-left:auto}}.duet-hero:not(.duet-hero-with-image) .duet-hero-image{width:100%;max-width:400px;height:0;padding-bottom:50%;margin:28px auto 0;background-repeat:no-repeat;background-position:50% 50%;background-size:contain}@media (min-width: 36em){.duet-hero:not(.duet-hero-with-image) .duet-hero-image{padding-bottom:40%}}@media (min-width: 48em){.duet-hero:not(.duet-hero-with-image) .duet-hero-image{max-width:420px;padding-bottom:34%}.duet-hero-light .duet-hero:not(.duet-hero-with-image) .duet-hero-image{max-width:540px}}@media (min-width: 62em){.duet-hero:not(.duet-hero-with-image) .duet-hero-image{position:absolute;top:50%;right:0;padding-bottom:30%;margin:0;transform:translateY(-50%)}.duet-hero-light .duet-hero:not(.duet-hero-with-image) .duet-hero-image{right:-60px;padding-bottom:26%}.duet-hero-gray .duet-hero:not(.duet-hero-with-image) .duet-hero-image{right:-34px;padding-bottom:20%}}@media (min-width: 62em){.duet-hero-gray:not(.duet-hero-with-image) .duet-hero-image{right:-34px;padding-bottom:20%}}.duet-hero-image-wrapper{position:relative;width:80%;height:0;padding-bottom:80%;margin:-30px auto 36px;overflow:hidden;border-radius:28%;box-shadow:0 0 20px rgba(255, 255, 255, 0.5);transform:rotate(10deg)}.duet-theme-turva .duet-hero-image-wrapper{padding-bottom:68%;border-radius:44% 47% 38% 54%;transform:none}@media screen and (min-width: 440px){.duet-hero-image-wrapper{width:300px;padding-bottom:300px}.duet-theme-turva .duet-hero-image-wrapper{width:80%;padding-bottom:68%}}@media (min-width: 62em){.duet-hero-image-wrapper{position:absolute;top:-60px;right:-50px;width:470px;padding-bottom:470px;margin:0}.duet-theme-turva .duet-hero-image-wrapper{top:-40px;right:-80px;width:536px;padding-bottom:470px}}@media (min-width: 76.25em){.duet-hero-image-wrapper{top:-70px;right:-60px;width:600px;padding-bottom:600px}.duet-theme-turva .duet-hero-image-wrapper{top:-70px;right:-60px;width:650px;padding-bottom:600px}}@media screen and (min-width: 1450px){.duet-hero-image-wrapper{top:-70px;right:25px}.duet-theme-turva .duet-hero-image-wrapper{right:0}}.duet-hero-image-wrapper .duet-hero-image{position:absolute;top:-5%;left:-5%;width:110%;height:110%;background-repeat:no-repeat;background-position:50% 50%;background-size:cover;transform:rotate(-10deg)}.duet-theme-turva .duet-hero-image-wrapper .duet-hero-image{top:0;left:0;width:100%;height:100%;transform:none}.duet-hero-image-mask{position:relative;margin:-48px auto 0;overflow:hidden}@media (min-width: 62em){.duet-hero-image-mask{position:absolute;top:0;right:0;width:470px;height:460px;margin:0}}@media (min-width: 76.25em){.duet-hero-image-mask{width:650px;height:580px}}@media screen and (min-width: 1450px){.duet-hero-image-mask{right:50%;transform:translateX(110%)}.duet-theme-turva .duet-hero-image-mask{transform:translateX(108%)}}duet-heading+duet-button{margin-top:12px !important}.duet-hero-links{width:calc(100% + 56px);margin-top:48px;margin-left:-28px}.duet-hero-minimal .duet-hero-links{margin-top:28px}@media (min-width: 36em){.duet-hero-links{margin-top:72px}.duet-hero-minimal .duet-hero-links{margin-top:28px}}@media (min-width: 62em){.duet-hero-links{width:auto;margin:36px 0 0}.duet-hero-minimal .duet-hero-links{margin-top:28px}}.duet-hero-link{display:flex;align-items:center;width:100%;padding:16px 16px 8px;font-weight:600;-webkit-hyphens:auto;hyphens:auto;line-height:1.25;color:#0077b3;text-align:left;text-decoration:none;border-bottom:1px solid #e1e3e6;transition:background-color 300ms ease}.duet-hero-link:focus{outline:0;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}.duet-theme-turva .duet-hero-link:focus,.duet-hero-link:focus.duet-theme-turva{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}.duet-hero-link:hover,.duet-hero-link:hover .duet-hero-action-arrow{color:#004d80 !important;background:transparent !important}.duet-theme-turva .duet-hero-link:hover,.duet-theme-turva .duet-hero-link:hover .duet-hero-action-arrow{color:#940925 !important}.duet-theme-turva .duet-hero-link{color:#c60c30}@media (min-width: 36em){.duet-hero-link{padding:16px 16px 16px 28px}}@media (min-width: 62em){.duet-hero-link{display:inline-flex;width:auto;max-width:350px;padding:0;margin:0 28px 16px 0;border:0;border-radius:4px}}.duet-hero-link:hover{background:rgba(0, 0, 0, 0.02)}@media (min-width: 62em){.duet-hero-link:hover{background:transparent}}.duet-hero-link:first-of-type{border-top:1px solid #e1e3e6}@media (min-width: 62em){.duet-hero-link:first-of-type{margin-top:0;border:0}}.duet-hero-link:last-of-type{margin-bottom:-48px}@media (min-width: 62em){.duet-hero-link:last-of-type{margin-right:0;margin-bottom:0}}.duet-hero-link span{margin-top:-8px}@media (min-width: 36em){.duet-hero-link span{margin:0}}.duet-hero-action-icon{margin-right:8px}@media (min-width: 36em){.duet-hero-action-icon{margin-right:12px}}.duet-hero-action-arrow{margin:0 0 0 8px;color:#0077b3}@media (max-width: 35.9375em){.duet-hero-action-arrow{margin-top:-9px}}.duet-theme-turva .duet-hero-action-arrow{color:#c60c30}.duet-hero-back{margin-bottom:28px !important;display:flex;align-items:center;justify-content:center}.duet-hero-left-align .duet-hero-back{align-items:self-start;justify-content:flex-start}@media (min-width: 36em){.duet-hero-back{margin-bottom:36px !important}.duet-hero-minimal .duet-hero-back{margin-bottom:28px !important}}@media (min-width: 62em){.duet-hero-back{display:block}}.duet-hero-pre{display:inline-block;width:auto;margin-right:8px}.duet-hero-pre+duet-heading{margin-top:0 !important}";
@@ -81,15 +81,15 @@ let DuetHero = class {
81
81
  */
82
82
  this.language = languageUtils.getLanguage();
83
83
  /**
84
- * Property to change accessibleLabelExternal defaults on the component.
85
- * normally you would handle these strings on an application level and override @accessibleLabelExternal when needed
84
+ * Defaults for accessibleLabelExternal
85
+ * @default {fi: "Avautuu uuteen ikkunaan",sv: "Öppnas i nytt fönster",en: "Opens in a new window"}
86
86
  */
87
87
  this.accessibleLabelExternalDefaults = commonStrings.DuetStringsExternalDefaults;
88
88
  /**
89
89
  * Adds accessible label for tooltip that is shown in external link (url & external have both been set)
90
90
  * @default {fi: "Avautuu uuteen ikkunaan",sv: "Öppnas i nytt fönster",en: "Opens in a new window"}
91
91
  */
92
- this.accessibleLabelExternal = languageUtils.getLocaleString(this.accessibleLabelExternalDefaults, this.language);
92
+ this.accessibleLabelExternal = languageUtils.getLocaleString(this.accessibleLabelExternalDefaults);
93
93
  /**
94
94
  * URL that the button links to.
95
95
  */
@@ -5,10 +5,10 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-0c949193.js');
8
+ const index = require('./index-9a57d969.js');
9
9
  const themeableComponent = require('./themeable-component-0c1be552.js');
10
- const tokenUtils = require('./token-utils-13e5d13e.js');
11
- require('./tokens.module-53b3bd92.js');
10
+ const tokenUtils = require('./token-utils-63a9c8dc.js');
11
+ require('./tokens.module-6b2df1c2.js');
12
12
 
13
13
  const cleanupSvg = (svgContent) => {
14
14
  if (typeof document === "undefined" || !svgContent) {
@@ -46,31 +46,33 @@ const isValid = (elm) => {
46
46
  };
47
47
  const buildIconUrl = (iconName) => {
48
48
  // under normal operations the Icons should always be loaded from the CDN
49
- const cdnURI = `https://cdn.duetds.com/api/icons/${"2.2.0"}/lib/assets/${iconName}.svg`;
50
- // however for vizdiffing and local development / testing we need to be able to access the raw images
51
- const localURI = `http://localhost:3334/icons/lib/assets/${iconName}.svg`;
52
- const host = window.location.hostname;
53
- const re = /(localhost|loca\.lt|127\.0\.0\.1|0\.0\.0\.0)/i;
54
- if (host.match(re)) {
55
- return localURI;
56
- }
57
- else {
58
- return cdnURI;
49
+ {
50
+ return `${index.Env.cdnURIProd}/icons/${index.Env.duetIconVersion}/lib/assets/${iconName}.svg`;
59
51
  }
60
52
  };
61
53
  const iconCache = {};
62
- function fetchIconByUrl(url) {
54
+ function fetchIconByUrl(url, isServer = index.Build.isServer) {
63
55
  if (iconCache[url]) {
64
56
  return iconCache[url];
65
57
  }
66
58
  // we create a function that covers all the fetching, cleanup, validation etc,
67
59
  // this way we can perform that work just once, and then return the same promise in future.
68
60
  async function doFetch() {
69
- const res = await fetch(url);
70
- if (!res.ok) {
71
- throw new Error(`SVG request failed: ${res.status} ${res.statusText}`);
61
+ let responseText = "";
62
+ if (isServer) {
63
+ const fs = require("fs");
64
+ const path = require("path");
65
+ const iconsPath = `${path.resolve(path.dirname(require.resolve("@duetds/icons")), "..")}/lib/assets`;
66
+ const filenameFromUrl = url.split("/").pop().split("#")[0].split("?")[0];
67
+ responseText = fs.readFileSync(`${iconsPath}/${filenameFromUrl}`, "utf-8");
68
+ }
69
+ else {
70
+ const res = await fetch(url);
71
+ if (!res.ok) {
72
+ throw new Error(`SVG request failed: ${res.status} ${res.statusText}`);
73
+ }
74
+ responseText = await res.text();
72
75
  }
73
- const responseText = await res.text();
74
76
  const svgElement = cleanupSvg(responseText);
75
77
  if (!isValid(svgElement)) {
76
78
  throw new Error("SVG validation failed");
@@ -144,7 +146,7 @@ let DuetIcon = class {
144
146
  if (this.src && this.icon) {
145
147
  console.warn("[DUET COMPONENTS]: <duet-icon> should have either have src or icon attributes, but not both. icon attribute will take precedence", "icon:", this.icon, "src:", this.src);
146
148
  }
147
- this.loadIcon();
149
+ return this.loadIcon();
148
150
  }
149
151
  async loadIcon() {
150
152
  // static icon known at build-time, so we can set it synchronously
@@ -5,7 +5,7 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-0c949193.js');
8
+ const index = require('./index-9a57d969.js');
9
9
  const createId = require('./create-id-c3b984b1.js');
10
10
  const inputUtils = require('./input-utils-f3e3854c.js');
11
11
  const themeableComponent = require('./themeable-component-0c1be552.js');
@@ -14,7 +14,7 @@ var formEmail={"title":"form-email","tags":"form email","svg":"<svg fill=\"curre
14
14
 
15
15
  var formSearch={"title":"form-search","tags":"form search magnifying glass","svg":"<svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\"><path d=\"M23.245 23.996a.743.743 0 0 1-.53-.22L16.2 17.26a9.824 9.824 0 0 1-2.553 1.579 9.766 9.766 0 0 1-7.51.069 9.745 9.745 0 0 1-5.359-5.262c-1.025-2.412-1.05-5.08-.069-7.51S3.558 1.802 5.97.777a9.744 9.744 0 0 1 7.51-.069c2.431.981 4.334 2.849 5.359 5.262s1.05 5.08.069 7.51a9.807 9.807 0 0 1-1.649 2.718l6.517 6.518a.75.75 0 0 1-.531 1.28zM9.807 1.49a8.259 8.259 0 0 0-3.25.667c-2.044.869-3.627 2.481-4.458 4.54s-.81 4.318.058 6.362a8.26 8.26 0 0 0 4.54 4.458 8.259 8.259 0 0 0 6.362-.059 8.285 8.285 0 0 0 2.594-1.736.365.365 0 0 1 .077-.076 8.245 8.245 0 0 0 1.786-2.728 8.255 8.255 0 0 0-.059-6.362 8.257 8.257 0 0 0-4.54-4.458 8.28 8.28 0 0 0-3.11-.608z\"/></svg>"};
16
16
 
17
- const duetInputCss = "*.sc-duet-input,*.sc-duet-input::after,*.sc-duet-input::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-input-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%;min-width:calc(33.333% - 8px);max-width:100%;text-align:left;vertical-align:bottom}.sc-duet-input-h:last-child,.sc-duet-input-h:last-of-type{margin-right:0 !important}@media (min-width: 36em){.sc-duet-input-h{width:calc(50% - 16px - 3px)}}.duet-expand.sc-duet-input-h{width:100% !important}.duet-m-0.sc-duet-input-h{margin:0 !important}duet-tooltip.sc-duet-input{position:absolute;top:12px;right:0}@media (min-width: 48em){duet-tooltip.sc-duet-input{position:relative;top:4px;right:auto}}duet-caption.sc-duet-input:not(:last-of-type){margin-bottom:0}.duet-input-icon.sc-duet-input{position:absolute;top:50%;right:16px;z-index:200;width:20px;height:20px;font-size:0;line-height:normal;color:#00294d;pointer-events:none;transform:translateY(-50%)}.duet-theme-turva.sc-duet-input .duet-input-icon.sc-duet-input{color:#171c3a}.duet-input-container.sc-duet-input{position:relative;width:100%;height:100%}.duet-input.sc-duet-input{position:relative;z-index:100;display:block !important;width:100% !important;min-width:8rem;max-width:initial !important;height:auto !important;padding:12px 14px !important;margin:initial !important;margin-bottom:initial !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 !important;font-variant-numeric:tabular-nums;line-height:1.5 !important;color:#00294d !important;cursor:initial !important;background:white !important;background-clip:initial !important;border:1px solid #909599 !important;border-radius:4px !important;box-shadow:initial !important;transition:box-shadow 150ms ease, border 150ms ease !important}.duet-input.is-number.sc-duet-input{padding-right:112px !important}.duet-input.is-date.sc-duet-input{padding-right:64px !important}.has-error.sc-duet-input .duet-input.sc-duet-input{border-color:#de2362 !important}.has-error.sc-duet-input .duet-input.sc-duet-input+.duet-input-icon.sc-duet-input{color:#de2362 !important}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input{border-color:#e02a0d !important}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input+.duet-input-icon.sc-duet-input{color:#e02a0d !important}.has-icon.sc-duet-input .duet-input.sc-duet-input{padding-right:48px !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input{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 !important;border-color:#747475 !important}.duet-input.sc-duet-input::-ms-clear{display:none}.duet-input.sc-duet-input::-webkit-contacts-auto-fill-button{display:none !important}.duet-input.sc-duet-input::-webkit-input-placeholder{color:#657787;opacity:1 !important;transition:color 300ms ease}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input::-webkit-input-placeholder{color:#747475}.duet-input.sc-duet-input:focus::-webkit-input-placeholder{color:#cfd2d4}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus::-webkit-input-placeholder{color:#cfcfd1}.duet-input.sc-duet-input::-moz-placeholder{color:#657787;opacity:1 !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input::-moz-placeholder{color:#747475}.duet-input.sc-duet-input:focus::-moz-placeholder{color:#cfd2d4}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus::-moz-placeholder{color:#cfcfd1}.duet-input.sc-duet-input:-ms-input-placeholder{color:#657787}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:-ms-input-placeholder{color:#747475}.duet-input.sc-duet-input:focus:-ms-input-placeholder{color:#cfd2d4}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus:-ms-input-placeholder{color:#cfcfd1}.duet-input[disabled].sc-duet-input{color:#00294d !important;cursor:text !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-input .duet-input[disabled].sc-duet-input{color:#171c3a !important;background:#f5f5f7 !important;border-color:#f5f5f7 !important;-webkit-text-fill-color:#171c3a !important}.duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #909599 !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #747475 !important}.has-error.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #de2362}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #e02a0d}.duet-input.sc-duet-input:focus{border-color:#0077b3 !important;outline:0;box-shadow:0 0 0 1px #0077b3 !important;transition:none}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus{border-color:#171c3a !important;box-shadow:0 0 0 1px #171c3a !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus+.duet-input-icon.sc-duet-input{color:#171c3a}.has-error.sc-duet-input .duet-input.sc-duet-input:focus{box-shadow:0 0 0 1px #de2362}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input:focus{box-shadow:0 0 0 1px #e02a0d}.duet-input.sc-duet-input:focus+.duet-input-icon.sc-duet-input{color:#0077b3}.duet-input[type=search].sc-duet-input:not(:placeholder-shown):focus+.duet-input-icon.sc-duet-input{display:none}.duet-input.sc-duet-input:not(:focus):not(:hover):invalid{box-shadow:none !important}.duet-input[type=number].sc-duet-input::-webkit-inner-spin-button,.duet-input[type=number].sc-duet-input::-webkit-outer-spin-button,.duet-input[type=time].sc-duet-input::-webkit-inner-spin-button,.duet-input[type=time].sc-duet-input::-webkit-outer-spin-button{display:none;margin:0;-webkit-appearance:none}.duet-input.sc-duet-input::-webkit-search-cancel-button{margin-right:-28px}.duet-input-help.sc-duet-input{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-input-help.sc-duet-input span.sc-duet-input{display:block;margin-top:8px}.duet-theme-turva.sc-duet-input .duet-input-help.sc-duet-input{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#747475}.has-error.sc-duet-input .duet-input-help.sc-duet-input{color:#de2362}.duet-theme-turva.has-error.sc-duet-input .duet-input-help.sc-duet-input{color:#e02a0d}.duet-label-hidden.sc-duet-input duet-label.sc-duet-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.duet-input-relative.sc-duet-input{position:relative;width:100%}";
17
+ const duetInputCss = "*.sc-duet-input,*.sc-duet-input::after,*.sc-duet-input::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-input-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%;min-width:calc(33.333% - 8px);max-width:100%;text-align:left;vertical-align:bottom}.sc-duet-input-h:last-child,.sc-duet-input-h:last-of-type{margin-right:0 !important}@media (min-width: 36em){.sc-duet-input-h{width:calc(50% - 16px - 3px)}}.duet-expand.sc-duet-input-h{width:100% !important}.duet-m-0.sc-duet-input-h{margin:0 !important}duet-tooltip.sc-duet-input{position:absolute;top:12px;right:0}@media (min-width: 48em){duet-tooltip.sc-duet-input{position:relative;top:4px;right:auto}}duet-caption.sc-duet-input:not(:last-of-type){margin-bottom:0}.duet-input-placeholder.sc-duet-input{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-input-icon.sc-duet-input{position:absolute;top:50%;right:16px;z-index:200;width:20px;height:20px;font-size:0;line-height:normal;color:#00294d;pointer-events:none;transform:translateY(-50%)}.duet-theme-turva.sc-duet-input .duet-input-icon.sc-duet-input{color:#171c3a}.duet-input-container.sc-duet-input{position:relative;width:100%;height:100%}.duet-input.sc-duet-input{position:relative;z-index:100;display:block !important;width:100% !important;min-width:8rem;max-width:initial !important;height:auto !important;padding:12px 14px !important;margin:initial !important;margin-bottom:initial !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 !important;font-variant-numeric:tabular-nums;line-height:1.5 !important;color:#00294d !important;cursor:initial !important;background:white !important;background-clip:initial !important;border:1px solid #909599 !important;border-radius:4px !important;box-shadow:initial !important;transition:box-shadow 150ms ease, border 150ms ease !important}.duet-input.is-number.sc-duet-input{padding-right:112px !important}.duet-input.is-date.sc-duet-input{padding-right:64px !important}.has-error.sc-duet-input .duet-input.sc-duet-input{border-color:#de2362 !important}.has-error.sc-duet-input .duet-input.sc-duet-input+.duet-input-icon.sc-duet-input{color:#de2362 !important}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input{border-color:#e02a0d !important}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input+.duet-input-icon.sc-duet-input{color:#e02a0d !important}.has-icon.sc-duet-input .duet-input.sc-duet-input{padding-right:48px !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input{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 !important;border-color:#747475 !important}.duet-input.sc-duet-input::-ms-clear{display:none}.duet-input.sc-duet-input::-webkit-contacts-auto-fill-button{display:none !important}.duet-input.sc-duet-input::-webkit-input-placeholder{color:#657787;opacity:1 !important;transition:color 300ms ease}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input::-webkit-input-placeholder{color:#747475}.duet-input.sc-duet-input:focus::-webkit-input-placeholder{color:#cfd2d4}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus::-webkit-input-placeholder{color:#cfcfd1}.duet-input.sc-duet-input::-moz-placeholder{color:#657787;opacity:1 !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input::-moz-placeholder{color:#747475}.duet-input.sc-duet-input:focus::-moz-placeholder{color:#cfd2d4}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus::-moz-placeholder{color:#cfcfd1}.duet-input.sc-duet-input:-ms-input-placeholder{color:#657787}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:-ms-input-placeholder{color:#747475}.duet-input.sc-duet-input:focus:-ms-input-placeholder{color:#cfd2d4}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus:-ms-input-placeholder{color:#cfcfd1}.duet-input[disabled].sc-duet-input{color:#00294d !important;cursor:text !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-input .duet-input[disabled].sc-duet-input{color:#171c3a !important;background:#f5f5f7 !important;border-color:#f5f5f7 !important;-webkit-text-fill-color:#171c3a !important}.duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #909599 !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #747475 !important}.has-error.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #de2362}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #e02a0d}.duet-input.sc-duet-input:focus{border-color:#0077b3 !important;outline:0;box-shadow:0 0 0 1px #0077b3 !important;transition:none}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus{border-color:#171c3a !important;box-shadow:0 0 0 1px #171c3a !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus+.duet-input-icon.sc-duet-input{color:#171c3a}.has-error.sc-duet-input .duet-input.sc-duet-input:focus{box-shadow:0 0 0 1px #de2362}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input:focus{box-shadow:0 0 0 1px #e02a0d}.duet-input.sc-duet-input:focus+.duet-input-icon.sc-duet-input{color:#0077b3}.duet-input[type=search].sc-duet-input:not(:placeholder-shown):focus+.duet-input-icon.sc-duet-input{display:none}.duet-input.sc-duet-input:not(:focus):not(:hover):invalid{box-shadow:none !important}.duet-input[type=number].sc-duet-input::-webkit-inner-spin-button,.duet-input[type=number].sc-duet-input::-webkit-outer-spin-button,.duet-input[type=time].sc-duet-input::-webkit-inner-spin-button,.duet-input[type=time].sc-duet-input::-webkit-outer-spin-button{display:none;margin:0;-webkit-appearance:none}.duet-input.sc-duet-input::-webkit-search-cancel-button{margin-right:-28px}.duet-input-help.sc-duet-input{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-input-help.sc-duet-input span.sc-duet-input{display:block;margin-top:8px}.duet-theme-turva.sc-duet-input .duet-input-help.sc-duet-input{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#747475}.has-error.sc-duet-input .duet-input-help.sc-duet-input{color:#de2362}.duet-theme-turva.has-error.sc-duet-input .duet-input-help.sc-duet-input{color:#e02a0d}.duet-label-hidden.sc-duet-input duet-label.sc-duet-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.duet-input-relative.sc-duet-input{position:relative;width:100%}";
18
18
 
19
19
  const icons = {
20
20
  search: formSearch,
@@ -154,7 +154,7 @@ let DuetInput = class {
154
154
  // (in webkit based browsers settings value trigger cursor position and will set it to EndOfText)
155
155
  restoreCursor();
156
156
  }
157
- this.isCaptionVisible = !!(this.caption || (this.placeholder && this.echoPlaceholder && this.value));
157
+ this.isCaptionVisible = !!this.caption;
158
158
  const emitEvent = () => this.duetChange.emit({
159
159
  value: this.value,
160
160
  component: "duet-input",
@@ -173,7 +173,7 @@ let DuetInput = class {
173
173
  componentWillLoad() {
174
174
  themeableComponent.inheritGlobalTheme(this);
175
175
  this.disallowedPatternChange();
176
- this.isCaptionVisible = !!(this.caption || (this.placeholder && this.echoPlaceholder && this.value));
176
+ this.isCaptionVisible = !!this.caption;
177
177
  }
178
178
  /**
179
179
  * Sets focus on the specified `duet-input`. Use this method instead of the global
@@ -208,12 +208,12 @@ let DuetInput = class {
208
208
  "duet-input-top-caption-shown": this.isCaptionVisible,
209
209
  "has-icon": !!this.icon || (this.type !== "text" && this.type !== "tel" && this.type !== "password"),
210
210
  "has-error": !!this.error,
211
- } }, 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)), this.placeholder && this.echoPlaceholder && this.value && (index.h("duet-caption", { id: this.topCaptionPlaceholderId, size: "small" }, this.placeholder)), index.h("div", { class: "duet-input-relative" }, index.h("input", Object.assign({ ref: input => (this.nativeInput = input), onInput: this.onInput, onBlur: this.onBlur, onFocus: this.onFocus, type: this.type, class: {
211
+ } }, 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-input-relative" }, this.placeholder && this.echoPlaceholder && this.value && (index.h("duet-caption", { id: this.topCaptionPlaceholderId, class: "duet-input-placeholder", margin: "none", size: "small" }, this.placeholder)), index.h("input", Object.assign({ ref: input => (this.nativeInput = input), onInput: this.onInput, onBlur: this.onBlur, onFocus: this.onFocus, type: this.type, class: {
212
212
  "duet-input": true,
213
213
  disabled: this.disabled,
214
214
  "is-number": this.component === "number",
215
215
  "is-date": this.component === "date",
216
- }, value: this.value, disabled: this.disabled, "aria-invalid": this.error ? "true" : "false", "aria-labelledby": `${this.labelId} ${this.errorId}`, "aria-controls": this.accessibleControls, "aria-autocomplete": this.accessibleAutocomplete, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": `${this.isCaptionVisible ? this.topCaptionId : ""} ${this.accessibleDescribedBy}`, placeholder: this.placeholder, spellcheck: "false", minlength: this.minlength, maxlength: this.maxlength, autocomplete: this.autoComplete, required: this.required, role: this.role, name: this.name, id: identifier }, inputProps)), !this.icon && this.type !== "text" && this.type !== "tel" && this.type !== "password" && (index.h("div", { class: "duet-input-icon" }, index.h("duet-icon", { margin: "none", size: "small", icon: icons[this.type].svg, color: "currentColor" }))), this.icon && (index.h("div", { class: "duet-input-icon" }, index.h("duet-icon", { margin: "none", size: "small", name: this.icon, color: "currentColor" }))), index.h("slot", null)), index.h("span", { class: "duet-input-help", id: this.errorId, "aria-live": "assertive", "aria-relevant": "additions removals" }, this.error && index.h("span", null, this.error)))));
216
+ }, value: this.value, disabled: this.disabled, "aria-invalid": this.error ? "true" : "false", "aria-labelledby": `${this.labelId} ${this.errorId}`, "aria-controls": this.accessibleControls, "aria-autocomplete": this.accessibleAutocomplete, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": `${this.isCaptionVisible ? this.topCaptionId : ""} ${this.accessibleDescribedBy}`, placeholder: this.placeholder, spellcheck: "false", minlength: this.minlength, maxlength: this.maxlength, autocomplete: this.autoComplete, required: this.required, role: this.role, name: this.name, id: identifier }, inputProps)), !this.icon && this.type !== "text" && this.type !== "tel" && this.type !== "password" && (index.h("div", { class: "duet-input-icon" }, index.h("duet-icon", { margin: "none", size: "small", icon: icons[this.type].svg, color: "currentColor" }))), this.icon && (index.h("div", { class: "duet-input-icon" }, index.h("duet-icon", { margin: "none", size: "small", name: this.icon, color: "currentColor" }))), index.h("slot", null)), index.h("span", { class: "duet-input-help", id: this.errorId, "aria-live": "assertive", "aria-relevant": "additions removals" }, this.error && index.h("span", { class: "duet-input-error" }, this.error)))));
217
217
  }
218
218
  get element() { return index.getElement(this); }
219
219
  static get watchers() { return {
@@ -223,7 +223,7 @@ let DuetInput = class {
223
223
  };
224
224
  DuetInput.style = duetInputCss;
225
225
 
226
- const duetLabelCss = "*.sc-duet-label,*.sc-duet-label::after,*.sc-duet-label::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-label-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-bottom:12px !important;position:relative;z-index:100;display:inline-flex;width:auto;margin-top:8px !important;line-height:1.25;cursor:default}.duet-p-0.sc-duet-label-h{padding:0 !important}.duet-m-0.sc-duet-label-h{margin:0 !important}.duet-m-0.sc-duet-label-h{margin-bottom:0 !important}.duet-small-margin.sc-duet-label-h{margin-top:8px !important;margin-bottom:4px !important}.duet-has-tooltip.sc-duet-label-h{padding-right:48px}@media (min-width: 48em){.duet-has-tooltip.sc-duet-label-h{padding-right:0}}label.sc-duet-label{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;font-weight:600 !important;line-height:1.25;color:#00294d;text-align:left}label.sc-duet-label span.sc-duet-label{font-size:1rem;font-weight:600 !important}.duet-label-small.sc-duet-label-h label.sc-duet-label{font-size:0.875rem}.duet-label-small.sc-duet-label-h label.sc-duet-label span.sc-duet-label{font-size:0.875rem}.duet-theme-turva.sc-duet-label-h label.sc-duet-label{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}";
226
+ const duetLabelCss = "*.sc-duet-label,*.sc-duet-label::after,*.sc-duet-label::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-label-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-bottom:12px !important;position:relative;z-index:100;display:inline-flex;width:auto;margin-top:8px !important;line-height:1.25;cursor:default}.duet-p-0.sc-duet-label-h{padding:0 !important}.duet-m-0.sc-duet-label-h{margin:0 !important}.duet-m-0.sc-duet-label-h{margin-bottom:0 !important}.duet-small-margin.sc-duet-label-h{margin-top:8px !important;margin-bottom:4px !important}.duet-has-tooltip.sc-duet-label-h{padding-right:48px}@media (min-width: 48em){.duet-has-tooltip.sc-duet-label-h{padding-right:0}}label.sc-duet-label{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;font-weight:600 !important;line-height:1.25;color:#00294d;text-align:left;word-break:break-word}label.sc-duet-label span.sc-duet-label{font-size:1rem;font-weight:600 !important;word-break:break-word}.duet-label-small.sc-duet-label-h label.sc-duet-label{font-size:0.875rem}.duet-label-small.sc-duet-label-h label.sc-duet-label span.sc-duet-label{font-size:0.875rem}.duet-theme-turva.sc-duet-label-h label.sc-duet-label{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}";
227
227
 
228
228
  let DuetLabel = class {
229
229
  constructor(hostRef) {
@@ -5,7 +5,7 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-0c949193.js');
8
+ const index = require('./index-9a57d969.js');
9
9
  const isInternetExplorer = require('./is-internet-explorer-91361c56.js');
10
10
 
11
11
  const duetLayoutCss = "*,*::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;display:block;flex:1 0 auto;width:100%}:host(.duet-middle){display:flex}:host(.duet-middle) .duet-layout{padding:36px 28px !important}@media (min-width: 36em){:host(.duet-middle) .duet-layout{padding:48px 36px !important}}@media (min-width: 62em){:host(.duet-middle) .duet-layout{padding:56px !important}}:host(.duet-ie){height:100%}:host(.duet-middle.duet-ie){height:auto}.duet-layout{position:relative;padding:0 16px;margin:48px auto 36px}@media (min-width: 36em){.duet-layout{margin-top:72px}}.duet-layout.duet-layout-has-top{margin-top:0}.duet-layout.duet-m-0{margin-top:0 !important;margin-bottom:0 !important}.duet-layout.duet-center{display:flex;align-items:center;justify-content:center;width:100%;max-width:888px}@media (min-width: 36em){.duet-layout.duet-center{padding:0 48px}}@media (min-width: 48em){.duet-layout.duet-center{padding:0 72px}}@media (min-width: 62em){.duet-layout.duet-center{width:100%}}@media (min-width: 36em){.duet-layout{padding:0 28px}}@media (min-width: 62em){.duet-layout{display:flex;flex-direction:row;padding:0 56px;margin-bottom:48px}}@media (min-width: 76.25em){.duet-layout{max-width:1110px;padding:0}}.duet-main,.duet-sidebar,.duet-layout-top,.duet-layout-bottom{display:block;width:100%}.duet-layout-top{position:relative;display:block;width:100%;margin:72px auto 0}.duet-layout-top.duet-m-0{margin-top:0 !important;margin-bottom:0 !important}.duet-layout-top .duet-layout-top-wrapper{padding:0 20px;margin:0 auto}@media (min-width: 36em){.duet-layout-top .duet-layout-top-wrapper{padding:0 28px}}@media (min-width: 62em){.duet-layout-top .duet-layout-top-wrapper{padding:0 56px}}@media (min-width: 76.25em){.duet-layout-top .duet-layout-top-wrapper{max-width:1110px;padding:0}}.duet-center .duet-layout-top-wrapper{max-width:888px}@media (min-width: 36em){.duet-center .duet-layout-top-wrapper{padding:0 48px}}@media (min-width: 48em){.duet-center .duet-layout-top-wrapper{padding:0 72px}}@media (min-width: 62em){.duet-main{min-width:600px;margin:0 auto}.has-sidebar .duet-main{max-width:734px;margin-right:20px}}@media (min-width: 62em){.duet-sidebar{min-width:256px;max-width:356px}}@media (min-width: 62em){.duet-sidebar-container{width:auto;max-width:356px}}@media (min-width: 62em){.duet-sidebar-container.has-tabs{margin-top:89px}}@media (min-width: 62em){.duet-sidebar-container.sticky{position:sticky}.duet-sidebar-container.sticky.with-links{top:calc(3rem + 20px)}.duet-sidebar-container.sticky.without-links{top:calc(4rem + 20px)}}";
@@ -5,9 +5,9 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-0c949193.js');
8
+ const index = require('./index-9a57d969.js');
9
9
  const themeableComponent = require('./themeable-component-0c1be552.js');
10
- const watchOptions = require('./watch-options-3877c082.js');
10
+ const watchOptions = require('./watch-options-d88afac0.js');
11
11
 
12
12
  const duetListCss = "*,*::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;display:block;width:100%}.duet-list-component{margin-bottom:16px !important;width:100%}.duet-list-component.duet-p-0{padding:0 !important}.duet-list-component.duet-m-0{margin:0 !important}";
13
13
 
@@ -5,13 +5,14 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-0c949193.js');
8
+ const index = require('./index-9a57d969.js');
9
9
  const bodyScrollLock_es6 = require('./bodyScrollLock.es6-6ef1142a.js');
10
10
  const createId = require('./create-id-c3b984b1.js');
11
- const focusUtils = require('./focus-utils-7605778f.js');
11
+ const focusUtils = require('./focus-utils-b609a7a5.js');
12
12
  const keyboardUtils = require('./keyboard-utils-b4e3d1d3.js');
13
- const languageUtils = require('./language-utils-70d6a9a4.js');
13
+ const languageUtils = require('./language-utils-aa282901.js');
14
14
  const themeableComponent = require('./themeable-component-0c1be552.js');
15
+ require('./string-utils-267e3dbb.js');
15
16
 
16
17
  const duetModalCss = "*,*::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}.duet-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:900;max-height:100vh;overflow-y:auto;visibility:hidden;background:rgba(0, 41, 77, 0.85);opacity:0;transition:300ms ease;transition-delay:200ms}.duet-modal-overlay.duet-theme-turva{background:rgba(23, 28, 58, 0.85)}.duet-modal-overlay.duet-modal-active{visibility:visible;opacity:1;transition:300ms ease;transition-delay:0s}.duet-modal-overlay.duet-disable-transitions{transition:none}::slotted(img){width:100%}.duet-modal-inner{display:flex;align-items:center;width:100%;min-height:100%;padding:20px 16px}@media (min-width: 36em){.duet-modal-inner{padding:48px 16px}}@media (max-width: 35.9375em){.duet-modal-inner.duet-modal-large{padding-right:0;padding-left:0}}.duet-modal{position:relative;width:100%;max-width:686px;margin:auto;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-weight:400;font-variant-numeric:tabular-nums;line-height:1.5;color:#00294d;background:white;border-radius:4px;opacity:0;transition:300ms ease;transition-delay:0ms;transform:scale(0.96)}.duet-theme-turva .duet-modal{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-modal-active .duet-modal{opacity:1;transition:300ms ease;transition-delay:200ms;transform:none}.duet-disable-transitions .duet-modal{transition:none}.duet-modal.small{max-width:545px}.duet-modal.large{max-width:100%}@media (min-width: 36em){.duet-modal.large{max-width:1110px}}.duet-modal:focus{outline:0}.duet-modal-body{width:100%;padding:36px 28px}.duet-modal-body.duet-modal-gutter-small{padding:36px 20px}.duet-modal-body.duet-modal-gutter-large{padding:48px 36px}@media (max-width: 22.5em){.duet-modal-body{padding:36px 20px}.duet-modal-body.duet-modal-gutter-large{padding:48px 28px}}@media (max-width: 35.9375em){.duet-modal-body{padding:36px 20px}.duet-modal-body.duet-modal-gutter-large{padding:48px 36px}}@media (min-width: 36em){.duet-modal-body{padding:36px}.duet-modal-body.duet-modal-gutter-large{padding:28px 72px}}@media (min-width: 48em){.duet-modal-body{padding:36px 72px}.duet-modal-body.duet-modal-gutter-large{padding:36px 72px}}@media (min-width: 76.25em){.duet-modal-body{padding:36px 48px 48px}.duet-modal-body.duet-modal-gutter-large{padding:48px 94px}.small .duet-modal-body{padding:36px 48px}}.duet-modal-header{text-align:center}.duet-modal-close{position:absolute;top:12px;right:12px}.duet-modal-heading{width:100%;padding-right:60px;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:1.25rem;font-style:normal;font-weight:600;font-variant-numeric:tabular-nums;line-height:1.25;color:#00294d;text-decoration:none;text-overflow:ellipsis;letter-spacing:-0.01rem;white-space:nowrap}.duet-modal-heading.duet-p-0{padding:0 !important}.duet-modal-heading.duet-m-0{margin:0 !important}";
17
18
 
@@ -60,10 +61,10 @@ let DuetModal = class {
60
61
  */
61
62
  this.language = languageUtils.getLanguage();
62
63
  /**
63
- * Property to change accessibleCloseLabel defaults on the component.
64
- * normally you would handle these strings on an application level and override @accessibleCloseLabel when needed
64
+ * Defaults for accessibleCloseLabel
65
+ * @default {fi: "Sulje ikkuna", sv: "Stäng fönstret", en: "Close the dialog", }
65
66
  */
66
- this.accessibleCloseLabelDefault = {
67
+ this.accessibleCloseLabelDefaults = {
67
68
  fi: "Sulje ikkuna",
68
69
  sv: "Stäng fönstret",
69
70
  en: "Close the dialog",
@@ -74,7 +75,7 @@ let DuetModal = class {
74
75
  * Swedish translation for this property is “Stäng fönstret”.
75
76
  * @default {fi: "Sulje ikkuna", sv: "Stäng fönstret", en: "Close the dialog", }
76
77
  */
77
- this.accessibleCloseLabel = languageUtils.getLocaleString(this.accessibleCloseLabelDefault);
78
+ this.accessibleCloseLabel = languageUtils.getLocaleString(this.accessibleCloseLabelDefaults, this.language);
78
79
  /**
79
80
  * Size of the modal window.
80
81
  */
@@ -5,10 +5,11 @@
5
5
 
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
- const index = require('./index-0c949193.js');
9
- const languageUtils = require('./language-utils-70d6a9a4.js');
8
+ const index = require('./index-9a57d969.js');
9
+ const languageUtils = require('./language-utils-aa282901.js');
10
10
  const themeableComponent = require('./themeable-component-0c1be552.js');
11
11
  const actionArrowDownSmall = require('./action-arrow-down-small-ef77a2d1.js');
12
+ require('./string-utils-267e3dbb.js');
12
13
 
13
14
  const duetNotificationCss = "*,*::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;display:block;width:100%}.duet-notification{display:block;padding:16px;color:#00294d;cursor:pointer;border-bottom:1px solid #e1e3e6;transition:300ms ease}:host(:last-of-type) .duet-notification{border-bottom:0}.duet-notification.duet-theme-turva{color:#171c3a;border-bottom-color:#e4e4e6}.duet-notification.duet-notification-highlight{font-weight:600;background:#f3f9fc}.duet-notification.duet-notification-highlight.duet-theme-turva{background:#fcf3f4}@media (min-width: 62em){.duet-notification:hover{background:#f3f9fc}.duet-notification:hover.duet-theme-turva{background:#fcf3f4}}.duet-notification a{text-decoration:none}.duet-notification a:focus{outline:0}:host(.user-is-tabbing) .duet-notification:focus-within{z-index:1;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}:host(.user-is-tabbing) .duet-notification:focus-within.duet-theme-turva{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}.duet-notification-container{position:relative;display:flex}.duet-notification-badge-container{position:relative;width:16px}.duet-notification-badge{position:absolute;top:6px;left:-2px;width:8px;height:8px;background:#0077b3;border-radius:50%}.duet-theme-turva .duet-notification-badge{background:#c60c30}.duet-notification-content{flex:1}.duet-notification-date{position:absolute;top:2px;right:0;width:96px;font-size:0.75rem;font-weight:600;line-height:1.25;color:#657787;text-align:right;text-transform:uppercase}@media (max-width: 35.9375em){.duet-notification-date{width:auto}}.duet-theme-turva .duet-notification-date{color:#444445}::slotted(duet-heading){padding-right:80px !important}::slotted(duet-paragraph){margin-bottom:2px !important}";
14
15
 
@@ -107,8 +108,8 @@ let DuetNotificationDrawer = class {
107
108
  */
108
109
  this.language = languageUtils.getLanguage();
109
110
  /**
110
- * Property to change accessibleLabelNotifications defaults on the component.
111
- * normally you would handle these strings on an application level and override @accessibleLabelNotifications when needed
111
+ * Defaults for accessibleLabelNotifications
112
+ * @default {en: "No notifications", fi: "Ei ilmoituksia", sv: "Inga notifikationer"}
112
113
  */
113
114
  this.accessibleLabelNotificationsDefaults = {
114
115
  en: "No notifications",
@@ -119,7 +120,7 @@ let DuetNotificationDrawer = class {
119
120
  * Adds accessible label for tooltip that is shown for notifications
120
121
  * @default {en: "No notifications", fi: "Ei ilmoituksia", sv: "Inga notifikationer"}
121
122
  */
122
- this.accessibleLabelNotifications = languageUtils.getLocaleString(this.accessibleLabelNotificationsDefaults, this.language);
123
+ this.accessibleLabelNotifications = languageUtils.getLocaleString(this.accessibleLabelNotificationsDefaults);
123
124
  /**
124
125
  * Show a badge that indicates something has changed.
125
126
  */