@duetds/components 4.36.1 → 5.0.0

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 (305) hide show
  1. package/hydrate/index.js +1128 -977
  2. package/lib/cjs/duet-action-button.cjs.entry.js +163 -0
  3. package/lib/cjs/duet-alert.cjs.entry.js +1 -1
  4. package/lib/cjs/duet-badge.cjs.entry.js +1 -1
  5. package/lib/cjs/duet-breadcrumb.cjs.entry.js +1 -1
  6. package/lib/cjs/duet-breadcrumbs.cjs.entry.js +1 -1
  7. package/lib/cjs/duet-button_2.cjs.entry.js +8 -4
  8. package/lib/cjs/duet-caption_4.cjs.entry.js +3 -3
  9. package/lib/cjs/duet-card.cjs.entry.js +3 -3
  10. package/lib/cjs/duet-checkbox.cjs.entry.js +1 -1
  11. package/lib/cjs/duet-choice_2.cjs.entry.js +2 -2
  12. package/lib/cjs/duet-collapsible.cjs.entry.js +2 -2
  13. package/lib/cjs/duet-cookie-consent.cjs.entry.js +1 -1
  14. package/lib/cjs/duet-date-picker.cjs.entry.js +4 -4
  15. package/lib/cjs/duet-divider_2.cjs.entry.js +1 -1
  16. package/lib/cjs/{duet-editable-table_4.cjs.entry.js → duet-editable-table_3.cjs.entry.js} +382 -337
  17. package/lib/cjs/duet-empty-state.cjs.entry.js +1 -1
  18. package/lib/cjs/duet-fieldset.cjs.entry.js +1 -1
  19. package/lib/cjs/duet-footer.cjs.entry.js +1 -1
  20. package/lib/cjs/duet-grid_2.cjs.entry.js +2 -2
  21. package/lib/cjs/duet-header_2.cjs.entry.js +3 -3
  22. package/lib/cjs/duet-hero.cjs.entry.js +1 -1
  23. package/lib/cjs/duet-icon.cjs.entry.js +3 -3
  24. package/lib/cjs/duet-input_2.cjs.entry.js +1 -1
  25. package/lib/cjs/duet-layout.cjs.entry.js +1 -1
  26. package/lib/cjs/duet-list_2.cjs.entry.js +1 -1
  27. package/lib/cjs/duet-modal.cjs.entry.js +2 -2
  28. package/lib/cjs/duet-notification_2.cjs.entry.js +1 -1
  29. package/lib/cjs/duet-number-input.cjs.entry.js +1 -1
  30. package/lib/cjs/duet-pagination_2.cjs.entry.js +24 -14
  31. package/lib/cjs/duet-progress.cjs.entry.js +1 -1
  32. package/lib/cjs/duet-radio_2.cjs.entry.js +1 -1
  33. package/lib/cjs/duet-range-slider.cjs.entry.js +2 -2
  34. package/lib/cjs/duet-scrollable_3.cjs.entry.js +1 -1
  35. package/lib/cjs/duet-select.cjs.entry.js +1 -1
  36. package/lib/cjs/duet-step_2.cjs.entry.js +1 -1
  37. package/lib/cjs/duet-textarea.cjs.entry.js +1 -1
  38. package/lib/cjs/duet-toggle.cjs.entry.js +1 -1
  39. package/lib/cjs/duet-tooltip.cjs.entry.js +1 -1
  40. package/lib/cjs/duet-tray.cjs.entry.js +2 -2
  41. package/lib/cjs/duet-upload-aria-status.cjs.entry.js +1 -1
  42. package/lib/cjs/duet-visually-hidden.cjs.entry.js +1 -1
  43. package/lib/cjs/duet.cjs.js +2 -2
  44. package/lib/cjs/{focus-utils-dfd718e8.js → focus-utils-7a11c463.js} +1 -1
  45. package/lib/cjs/{index-4f342f1c.js → index-da5d5aaf.js} +1 -1
  46. package/lib/cjs/js-utils-be1d29ae.js +39 -0
  47. package/lib/cjs/loader.cjs.js +2 -2
  48. package/lib/cjs/{token-utils-f402e205.js → token-utils-ac8432d1.js} +1 -1
  49. package/lib/cjs/{tokens-8596cece.js → tokens-72efc7fd.js} +0 -0
  50. package/lib/cjs/{tokens.module-6b2df1c2.js → tokens.module-6afcc9c1.js} +0 -0
  51. package/lib/collection/collection-manifest.json +14 -11
  52. package/lib/collection/components/duet-action-button/duet-action-button.css +87 -0
  53. package/lib/collection/components/duet-action-button/duet-action-button.js +489 -0
  54. package/lib/collection/components/duet-button/duet-button.js +23 -1
  55. package/lib/collection/components/duet-date-picker/duet-date-picker.css +2 -57
  56. package/lib/collection/components/duet-date-picker/duet-date-picker.js +2 -6
  57. package/lib/collection/components/duet-editable-table/duet-editable-table-tabledata.js +3 -2
  58. package/lib/collection/components/duet-editable-table/duet-editable-table.css +20 -1
  59. package/lib/collection/components/duet-editable-table/duet-editable-table.js +331 -205
  60. package/lib/collection/components/duet-pagination/duet-pagination.css +3 -62
  61. package/lib/collection/components/duet-pagination/duet-pagination.js +49 -19
  62. package/lib/collection/components/duet-range-stepper/duet-range-stepper.css +4 -55
  63. package/lib/collection/components/duet-range-stepper/duet-range-stepper.js +2 -4
  64. package/lib/collection/components/duet-table/duet-table.css +42 -8
  65. package/lib/collection/components/duet-table/duet-table.js +11 -2
  66. package/lib/collection/components/duet-upload/duet-upload.css +25 -0
  67. package/lib/collection/components/duet-upload/duet-upload.js +270 -166
  68. package/lib/collection/components/duet-upload/upload-validators.js +1 -1
  69. package/lib/collection/utils/fixture-utils.js +3 -1
  70. package/lib/collection/utils/js-utils.js +36 -1
  71. package/lib/custom-elements-bundle/index.d.ts +6 -12
  72. package/lib/custom-elements-bundle/index.js +1142 -1001
  73. package/lib/duet/duet.esm.js +1 -1
  74. package/lib/duet/duet.js +1 -1
  75. package/lib/duet/{p-c18080ad.entry.js → p-00209700.entry.js} +1 -1
  76. package/lib/duet/{p-1a95aeb6.entry.js → p-01144f93.entry.js} +1 -1
  77. package/lib/duet/{p-c6df2ea8.system.entry.js → p-021bf3a2.system.entry.js} +1 -1
  78. package/lib/duet/{p-20cdb787.entry.js → p-04c6e557.entry.js} +1 -1
  79. package/lib/duet/{p-d945a4b0.system.entry.js → p-06fd151e.system.entry.js} +1 -1
  80. package/lib/duet/p-0988f548.entry.js +4 -0
  81. package/lib/duet/{p-05e2c680.system.entry.js → p-0e1130a0.system.entry.js} +1 -1
  82. package/lib/duet/{p-ebc56043.entry.js → p-0fedc1c6.entry.js} +1 -1
  83. package/lib/duet/{p-e8303364.system.entry.js → p-111b70c5.system.entry.js} +1 -1
  84. package/lib/duet/p-12825e2c.entry.js +4 -0
  85. package/lib/duet/p-166c09ce.system.entry.js +4 -0
  86. package/lib/duet/{p-24b9e806.entry.js → p-1be45fc6.entry.js} +1 -1
  87. package/lib/duet/{p-286d2ad2.system.entry.js → p-1da57e19.system.entry.js} +1 -1
  88. package/lib/duet/{p-7a32ceb3.system.entry.js → p-21c9efa8.system.entry.js} +1 -1
  89. package/lib/duet/p-2245c56b.entry.js +4 -0
  90. package/lib/duet/{p-e6a69eb8.js → p-2273fc88.js} +1 -1
  91. package/lib/duet/{p-79b9e7ef.system.entry.js → p-232762b3.system.entry.js} +1 -1
  92. package/lib/duet/{p-d21f19cc.system.js → p-251dc733.system.js} +1 -1
  93. package/lib/duet/{p-ddb6344c.system.js → p-268c0abb.system.js} +0 -0
  94. package/lib/duet/{p-ca0ee655.system.entry.js → p-2b6dac5c.system.entry.js} +1 -1
  95. package/lib/duet/{p-e8e35258.entry.js → p-35cdec32.entry.js} +1 -1
  96. package/lib/duet/{p-2361986e.entry.js → p-37bdfcc6.entry.js} +1 -1
  97. package/lib/duet/{p-740b5609.entry.js → p-3c7d81b0.entry.js} +1 -1
  98. package/lib/duet/{p-3900577d.system.entry.js → p-3f77090f.system.entry.js} +1 -1
  99. package/lib/duet/{p-ad3dad04.system.js → p-3fafe82f.system.js} +1 -1
  100. package/lib/duet/{p-164a7037.system.entry.js → p-4b221aa3.system.entry.js} +1 -1
  101. package/lib/duet/{p-210d739c.system.entry.js → p-4b7b1d2a.system.entry.js} +1 -1
  102. package/lib/duet/{p-3547d108.entry.js → p-4c282c1a.entry.js} +1 -1
  103. package/lib/duet/p-51a7c020.entry.js +4 -0
  104. package/lib/duet/{p-c8ec3b99.entry.js → p-5298f6fb.entry.js} +1 -1
  105. package/lib/duet/{p-cb445018.js → p-5746d88c.js} +1 -1
  106. package/lib/duet/{p-f6da56c8.entry.js → p-589c2f28.entry.js} +1 -1
  107. package/lib/duet/{p-d9716aec.system.entry.js → p-592315ca.system.entry.js} +1 -1
  108. package/lib/duet/{p-615bfc61.system.entry.js → p-59a0ec33.system.entry.js} +1 -1
  109. package/lib/duet/p-5e1f64cb.entry.js +4 -0
  110. package/lib/duet/{p-29255af8.entry.js → p-608645ed.entry.js} +1 -1
  111. package/lib/duet/{p-3d1b0105.entry.js → p-683f1962.entry.js} +1 -1
  112. package/lib/duet/{p-9ce0e625.entry.js → p-6932c6d8.entry.js} +1 -1
  113. package/lib/duet/{p-e35d8543.entry.js → p-6934cb1b.entry.js} +1 -1
  114. package/lib/duet/{p-211b4485.system.entry.js → p-6d209c01.system.entry.js} +1 -1
  115. package/lib/duet/{p-e47daca7.system.entry.js → p-70e5c803.system.entry.js} +1 -1
  116. package/lib/duet/p-74d267d3.system.entry.js +4 -0
  117. package/lib/duet/{p-c7fa7dcc.system.entry.js → p-766daacb.system.entry.js} +1 -1
  118. package/lib/duet/{p-4e2532c7.system.js → p-77acbfe4.system.js} +1 -1
  119. package/lib/duet/p-7953cff9.system.entry.js +4 -0
  120. package/lib/duet/{p-635dacce.system.entry.js → p-7e939e57.system.entry.js} +1 -1
  121. package/lib/duet/{p-fa99eaa4.system.js → p-812b0905.system.js} +0 -0
  122. package/lib/duet/{p-1db7a35b.entry.js → p-814ed07c.entry.js} +1 -1
  123. package/lib/duet/{p-5d9affcd.entry.js → p-82a0e535.entry.js} +1 -1
  124. package/lib/duet/{p-3bb702e3.system.entry.js → p-8338702d.system.entry.js} +2 -2
  125. package/lib/duet/{p-65c418f7.system.entry.js → p-85b4b5c0.system.entry.js} +1 -1
  126. package/lib/duet/{p-5376a9db.entry.js → p-86538787.entry.js} +1 -1
  127. package/lib/duet/{p-562ae946.entry.js → p-8f01f647.entry.js} +1 -1
  128. package/lib/duet/{p-85100e09.entry.js → p-8f6def3f.entry.js} +1 -1
  129. package/lib/duet/{p-03cf3ebf.entry.js → p-90464434.entry.js} +1 -1
  130. package/lib/duet/p-92639d0b.system.js +4 -0
  131. package/lib/duet/{p-12941aef.system.entry.js → p-97f95c02.system.entry.js} +1 -1
  132. package/lib/duet/{p-ffb5fb75.system.entry.js → p-982deb44.system.entry.js} +1 -1
  133. package/lib/duet/{p-fd2211ab.entry.js → p-9dc88c43.entry.js} +1 -1
  134. package/lib/duet/{p-fae71c1f.entry.js → p-a37e57d8.entry.js} +1 -1
  135. package/lib/duet/{p-c52f4de0.system.entry.js → p-a71510b8.system.entry.js} +1 -1
  136. package/lib/duet/p-a8eec12e.system.entry.js +4 -0
  137. package/lib/duet/{p-4fdbc6ff.system.entry.js → p-abcfbb23.system.entry.js} +1 -1
  138. package/lib/duet/{p-3c3536be.entry.js → p-ac2b38e6.entry.js} +1 -1
  139. package/lib/duet/{p-9df321b3.system.entry.js → p-ace2cd17.system.entry.js} +1 -1
  140. package/lib/duet/{p-946f34b4.system.entry.js → p-ad278903.system.entry.js} +1 -1
  141. package/lib/duet/{p-1c4721a1.entry.js → p-aea907ad.entry.js} +1 -1
  142. package/lib/duet/{p-e7dd8a15.system.entry.js → p-b432d318.system.entry.js} +1 -1
  143. package/lib/duet/{p-0366552b.system.entry.js → p-b4e75f80.system.entry.js} +1 -1
  144. package/lib/duet/{p-061835f3.system.entry.js → p-b8c8105c.system.entry.js} +1 -1
  145. package/lib/duet/{p-c2d32103.entry.js → p-ba7480e9.entry.js} +1 -1
  146. package/lib/duet/{p-83452e8f.entry.js → p-bc7dba26.entry.js} +1 -1
  147. package/lib/duet/{p-ff21f3c2.entry.js → p-bf06f635.entry.js} +1 -1
  148. package/lib/duet/{p-c514010b.system.entry.js → p-c6ccf366.system.entry.js} +1 -1
  149. package/lib/duet/{p-46ae601a.entry.js → p-cd1a767f.entry.js} +1 -1
  150. package/lib/duet/{p-89e42127.system.entry.js → p-d6d9b0c6.system.entry.js} +1 -1
  151. package/lib/duet/{p-8143f3de.js → p-d7bc0102.js} +0 -0
  152. package/lib/duet/{p-d24c6bc1.entry.js → p-d9e329c0.entry.js} +1 -1
  153. package/lib/duet/p-dbb4a588.js +4 -0
  154. package/lib/duet/{p-ae14591e.entry.js → p-dc67d989.entry.js} +1 -1
  155. package/lib/duet/{p-7f0e360d.entry.js → p-de9ff67c.entry.js} +1 -1
  156. package/lib/duet/{p-ded33218.system.entry.js → p-deb8ac4d.system.entry.js} +1 -1
  157. package/lib/duet/p-e2e0bc49.system.js +4 -0
  158. package/lib/duet/{p-8c53bc24.system.entry.js → p-e624799f.system.entry.js} +1 -1
  159. package/lib/duet/{p-eb892975.system.entry.js → p-e887d6db.system.entry.js} +1 -1
  160. package/lib/duet/{p-dcaecb5e.js → p-e9c3053b.js} +1 -1
  161. package/lib/duet/{p-493c6d2f.system.entry.js → p-ebed7c5e.system.entry.js} +1 -1
  162. package/lib/duet/{p-ad07f399.js → p-ed75c8b3.js} +0 -0
  163. package/lib/duet/{p-e5ce7aad.system.entry.js → p-f020852e.system.entry.js} +1 -1
  164. package/lib/duet/p-f2abd301.entry.js +4 -0
  165. package/lib/duet/{p-e7b53f4f.system.entry.js → p-f54d1487.system.entry.js} +1 -1
  166. package/lib/duet/{p-b6dd0933.entry.js → p-fc44a819.entry.js} +1 -1
  167. package/lib/duet/{p-22baf1f8.system.entry.js → p-fcdd24f8.system.entry.js} +1 -1
  168. package/lib/duet/{p-5b546064.entry.js → p-fed35d92.entry.js} +1 -1
  169. package/lib/duet/{p-ef275410.entry.js → p-ff308f4c.entry.js} +1 -1
  170. package/lib/esm/duet-action-button.entry.js +159 -0
  171. package/lib/esm/duet-alert.entry.js +1 -1
  172. package/lib/esm/duet-badge.entry.js +1 -1
  173. package/lib/esm/duet-breadcrumb.entry.js +1 -1
  174. package/lib/esm/duet-breadcrumbs.entry.js +1 -1
  175. package/lib/esm/duet-button_2.entry.js +8 -4
  176. package/lib/esm/duet-caption_4.entry.js +3 -3
  177. package/lib/esm/duet-card.entry.js +3 -3
  178. package/lib/esm/duet-checkbox.entry.js +1 -1
  179. package/lib/esm/duet-choice_2.entry.js +2 -2
  180. package/lib/esm/duet-collapsible.entry.js +2 -2
  181. package/lib/esm/duet-cookie-consent.entry.js +1 -1
  182. package/lib/esm/duet-date-picker.entry.js +4 -4
  183. package/lib/esm/duet-divider_2.entry.js +1 -1
  184. package/lib/esm/{duet-editable-table_4.entry.js → duet-editable-table_3.entry.js} +384 -338
  185. package/lib/esm/duet-empty-state.entry.js +1 -1
  186. package/lib/esm/duet-fieldset.entry.js +1 -1
  187. package/lib/esm/duet-footer.entry.js +1 -1
  188. package/lib/esm/duet-grid_2.entry.js +2 -2
  189. package/lib/esm/duet-header_2.entry.js +3 -3
  190. package/lib/esm/duet-hero.entry.js +1 -1
  191. package/lib/esm/duet-icon.entry.js +3 -3
  192. package/lib/esm/duet-input_2.entry.js +1 -1
  193. package/lib/esm/duet-layout.entry.js +1 -1
  194. package/lib/esm/duet-list_2.entry.js +1 -1
  195. package/lib/esm/duet-modal.entry.js +2 -2
  196. package/lib/esm/duet-notification_2.entry.js +1 -1
  197. package/lib/esm/duet-number-input.entry.js +1 -1
  198. package/lib/esm/duet-pagination_2.entry.js +24 -14
  199. package/lib/esm/duet-progress.entry.js +1 -1
  200. package/lib/esm/duet-radio_2.entry.js +1 -1
  201. package/lib/esm/duet-range-slider.entry.js +2 -2
  202. package/lib/esm/duet-scrollable_3.entry.js +1 -1
  203. package/lib/esm/duet-select.entry.js +1 -1
  204. package/lib/esm/duet-step_2.entry.js +1 -1
  205. package/lib/esm/duet-textarea.entry.js +1 -1
  206. package/lib/esm/duet-toggle.entry.js +1 -1
  207. package/lib/esm/duet-tooltip.entry.js +1 -1
  208. package/lib/esm/duet-tray.entry.js +2 -2
  209. package/lib/esm/duet-upload-aria-status.entry.js +1 -1
  210. package/lib/esm/duet-visually-hidden.entry.js +1 -1
  211. package/lib/esm/duet.js +2 -2
  212. package/lib/esm/{focus-utils-d4e80e1e.js → focus-utils-b0b3361f.js} +1 -1
  213. package/lib/esm/{index-4a5e7664.js → index-16f4da7f.js} +1 -1
  214. package/lib/esm/js-utils-52e0944c.js +36 -0
  215. package/lib/esm/loader.js +2 -2
  216. package/lib/esm/{token-utils-e9a69acf.js → token-utils-e9a0cb88.js} +1 -1
  217. package/lib/esm/{tokens-e110dc89.js → tokens-57d98824.js} +0 -0
  218. package/lib/esm/{tokens.module-49cbf963.js → tokens.module-a13e9683.js} +0 -0
  219. package/lib/esm-es5/duet-action-button.entry.js +4 -0
  220. package/lib/esm-es5/duet-alert.entry.js +1 -1
  221. package/lib/esm-es5/duet-badge.entry.js +1 -1
  222. package/lib/esm-es5/duet-breadcrumb.entry.js +1 -1
  223. package/lib/esm-es5/duet-breadcrumbs.entry.js +1 -1
  224. package/lib/esm-es5/duet-button_2.entry.js +1 -1
  225. package/lib/esm-es5/duet-caption_4.entry.js +1 -1
  226. package/lib/esm-es5/duet-card.entry.js +1 -1
  227. package/lib/esm-es5/duet-checkbox.entry.js +1 -1
  228. package/lib/esm-es5/duet-choice_2.entry.js +1 -1
  229. package/lib/esm-es5/duet-collapsible.entry.js +1 -1
  230. package/lib/esm-es5/duet-cookie-consent.entry.js +1 -1
  231. package/lib/esm-es5/duet-date-picker.entry.js +2 -2
  232. package/lib/esm-es5/duet-divider_2.entry.js +1 -1
  233. package/lib/esm-es5/duet-editable-table_3.entry.js +4 -0
  234. package/lib/esm-es5/duet-empty-state.entry.js +1 -1
  235. package/lib/esm-es5/duet-fieldset.entry.js +1 -1
  236. package/lib/esm-es5/duet-footer.entry.js +1 -1
  237. package/lib/esm-es5/duet-grid_2.entry.js +1 -1
  238. package/lib/esm-es5/duet-header_2.entry.js +1 -1
  239. package/lib/esm-es5/duet-hero.entry.js +1 -1
  240. package/lib/esm-es5/duet-icon.entry.js +1 -1
  241. package/lib/esm-es5/duet-input_2.entry.js +1 -1
  242. package/lib/esm-es5/duet-layout.entry.js +1 -1
  243. package/lib/esm-es5/duet-list_2.entry.js +1 -1
  244. package/lib/esm-es5/duet-modal.entry.js +1 -1
  245. package/lib/esm-es5/duet-notification_2.entry.js +1 -1
  246. package/lib/esm-es5/duet-number-input.entry.js +1 -1
  247. package/lib/esm-es5/duet-pagination_2.entry.js +2 -2
  248. package/lib/esm-es5/duet-progress.entry.js +1 -1
  249. package/lib/esm-es5/duet-radio_2.entry.js +1 -1
  250. package/lib/esm-es5/duet-range-slider.entry.js +1 -1
  251. package/lib/esm-es5/duet-scrollable_3.entry.js +1 -1
  252. package/lib/esm-es5/duet-select.entry.js +1 -1
  253. package/lib/esm-es5/duet-step_2.entry.js +1 -1
  254. package/lib/esm-es5/duet-textarea.entry.js +1 -1
  255. package/lib/esm-es5/duet-toggle.entry.js +1 -1
  256. package/lib/esm-es5/duet-tooltip.entry.js +1 -1
  257. package/lib/esm-es5/duet-tray.entry.js +1 -1
  258. package/lib/esm-es5/duet-upload-aria-status.entry.js +1 -1
  259. package/lib/esm-es5/duet-visually-hidden.entry.js +1 -1
  260. package/lib/esm-es5/duet.js +1 -1
  261. package/lib/esm-es5/focus-utils-b0b3361f.js +4 -0
  262. package/lib/esm-es5/{index-4a5e7664.js → index-16f4da7f.js} +1 -1
  263. package/lib/esm-es5/js-utils-52e0944c.js +4 -0
  264. package/lib/esm-es5/loader.js +1 -1
  265. package/lib/esm-es5/{token-utils-e9a69acf.js → token-utils-e9a0cb88.js} +1 -1
  266. package/lib/esm-es5/{tokens-e110dc89.js → tokens-57d98824.js} +0 -0
  267. package/lib/esm-es5/{tokens.module-49cbf963.js → tokens.module-a13e9683.js} +0 -0
  268. package/lib/html.html-data.json +168 -68
  269. package/lib/types/components/duet-action-button/duet-action-button.d.ts +112 -0
  270. package/lib/types/components/duet-button/duet-button.d.ts +4 -0
  271. package/lib/types/components/duet-editable-table/duet-editable-table-tabledata.d.ts +2 -2
  272. package/lib/types/components/duet-editable-table/duet-editable-table.d.ts +106 -48
  273. package/lib/types/components/duet-pagination/duet-pagination.d.ts +7 -2
  274. package/lib/types/components/duet-table/duet-table.d.ts +16 -0
  275. package/lib/types/components/duet-upload/duet-upload.d.ts +68 -58
  276. package/lib/types/components.d.ts +225 -149
  277. package/lib/types/utils/js-utils.d.ts +2 -0
  278. package/package.json +5 -6
  279. package/lib/cjs/duet-editable-table-button.cjs.entry.js +0 -96
  280. package/lib/cjs/js-utils-33a9dbe3.js +0 -16
  281. package/lib/collection/components/duet-editable-table/duet-editable-table-button.css +0 -32
  282. package/lib/collection/components/duet-editable-table/duet-editable-table-button.js +0 -225
  283. package/lib/collection/components/duet-editable-table/duet-editable-table-item.css +0 -36
  284. package/lib/collection/components/duet-editable-table/duet-editable-table-item.js +0 -225
  285. package/lib/duet/p-063fe96d.entry.js +0 -4
  286. package/lib/duet/p-2eeacf1a.entry.js +0 -4
  287. package/lib/duet/p-396f1bdc.entry.js +0 -4
  288. package/lib/duet/p-7b55f33e.entry.js +0 -4
  289. package/lib/duet/p-7e0e2209.system.entry.js +0 -4
  290. package/lib/duet/p-81867417.system.js +0 -4
  291. package/lib/duet/p-a3d7951c.system.entry.js +0 -4
  292. package/lib/duet/p-a619dff3.system.js +0 -4
  293. package/lib/duet/p-b25d3769.js +0 -4
  294. package/lib/duet/p-bf192d9f.entry.js +0 -4
  295. package/lib/duet/p-c76a68aa.system.entry.js +0 -4
  296. package/lib/duet/p-d12b3d21.system.entry.js +0 -4
  297. package/lib/duet/p-ef4962e8.entry.js +0 -4
  298. package/lib/esm/duet-editable-table-button.entry.js +0 -92
  299. package/lib/esm/js-utils-b69f17df.js +0 -14
  300. package/lib/esm-es5/duet-editable-table-button.entry.js +0 -4
  301. package/lib/esm-es5/duet-editable-table_4.entry.js +0 -4
  302. package/lib/esm-es5/focus-utils-d4e80e1e.js +0 -4
  303. package/lib/esm-es5/js-utils-b69f17df.js +0 -4
  304. package/lib/types/components/duet-editable-table/duet-editable-table-button.d.ts +0 -73
  305. package/lib/types/components/duet-editable-table/duet-editable-table-item.d.ts +0 -76
package/hydrate/index.js CHANGED
@@ -5543,6 +5543,60 @@ const cmpModules = new Map, getModule = e => {
5543
5543
  isTesting: !1
5544
5544
  }, styles = new Map;
5545
5545
 
5546
+ function chr4() {
5547
+ return Math.random().toString(16).slice(-4);
5548
+ }
5549
+ function createID(prefix) {
5550
+ return `${prefix}-${chr4()}${chr4()}-${chr4()}-${chr4()}-${chr4()}-${chr4()}${chr4()}${chr4()}`;
5551
+ }
5552
+
5553
+ const debounce = (func, timeout = 250) => {
5554
+ let timer;
5555
+ return (...args) => {
5556
+ clearTimeout(timer);
5557
+ timer = setTimeout(() => {
5558
+ func.apply(undefined, args);
5559
+ }, timeout);
5560
+ };
5561
+ };
5562
+ function fieldSorter(fields) {
5563
+ return function (a, b) {
5564
+ return fields
5565
+ .map(function (o) {
5566
+ let dir = 1;
5567
+ if (o[0] === "-") {
5568
+ dir = -1;
5569
+ o = o.substring(1);
5570
+ }
5571
+ if (a[o] > b[o]) {
5572
+ return dir;
5573
+ }
5574
+ if (a[o] < b[o]) {
5575
+ return -dir;
5576
+ }
5577
+ return 0;
5578
+ })
5579
+ .reduce(function firstNonZeroValue(p, n) {
5580
+ return p ? p : n;
5581
+ }, 0);
5582
+ };
5583
+ }
5584
+
5585
+ const isArrowLeftKey = (e) => e.keyCode === 37;
5586
+ const isArrowUpKey = (e) => e.keyCode === 38;
5587
+ const isArrowRightKey = (e) => e.keyCode === 39;
5588
+ const isArrowDownKey = (e) => e.keyCode === 40;
5589
+ const isArrowKey = (e) => isArrowDownKey(e) || isArrowRightKey(e) || isArrowUpKey(e) || isArrowLeftKey(e);
5590
+ const isEscapeKey = (e) => e.key === "Escape" || e.key === "Esc" || e.keyCode === 27;
5591
+ const isBackspaceKey = (e) => e.keyCode === 8;
5592
+ const isSpaceKey = (e) => e.key === "Space" || e.keyCode === 32;
5593
+ const isPlusKey = (e) => e.key === "+" || e.keyCode === 43;
5594
+ const isMinusKey = (e) => e.key === "-" || e.keyCode === 45;
5595
+ const isQuestionKey = (e) => e.key === "?";
5596
+ const isEnterKey = (e) => e.key === "Enter" || e.keyCode === 13;
5597
+ const isKeyboardClick = (e) => isEnterKey(e) || isSpaceKey(e);
5598
+ const isNumber = (e) => (e.keyCode >= 48 && e.keyCode <= 57) || (e.keyCode >= 96 && e.keyCode <= 105);
5599
+
5546
5600
  function isObject(maybeObj) {
5547
5601
  return Object.prototype.toString.call(maybeObj) === "[object Object]";
5548
5602
  }
@@ -5680,438 +5734,153 @@ const inheritGlobalTheme = (component) => {
5680
5734
  }
5681
5735
  };
5682
5736
 
5683
- const duetAlertCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-alert,*.sc-duet-alert::after,*.sc-duet-alert::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-alert-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:block;width:100%;max-height:999px;border-radius:4px;transition:opacity 300ms ease, visibility 300ms ease, transform 300ms ease, max-height 300ms ease}/*!@:host(:focus)*/.sc-duet-alert-h:focus{outline:0}/*!@:host(.user-is-tabbing:focus)*/.user-is-tabbing.sc-duet-alert-h:focus{border-radius:4px;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@:host(.user-is-tabbing.duet-theme-turva:focus)*/.user-is-tabbing.duet-theme-turva.sc-duet-alert-h:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@:host(.duet-alert-is-dismissed)*/.duet-alert-is-dismissed.sc-duet-alert-h{max-height:0;visibility:hidden;opacity:0;transform:scale(0.98)}/*!@:host(.duet-alert-is-dismissed) .duet-alert*/.duet-alert-is-dismissed.sc-duet-alert-h .duet-alert.sc-duet-alert{margin:0 !important}/*!@.duet-alert*/.duet-alert.sc-duet-alert{margin-bottom:16px !important;position:relative;width:100%;padding:16px;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:400;line-height:1.25;color:#00294d;background:#f2f8fb;border:1px solid #0077b3;border-radius:4px;transition:margin 100ms 300ms ease}/*!@.duet-alert.duet-p-0*/.duet-alert.duet-p-0.sc-duet-alert{padding:0 !important}/*!@.duet-alert.duet-m-0*/.duet-alert.duet-m-0.sc-duet-alert{margin:0 !important}/*!@.duet-alert.duet-theme-turva*/.duet-alert.duet-theme-turva.sc-duet-alert{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;background:#f3f4f5;border-color:#171c3a}/*!@.duet-alert.warning*/.duet-alert.warning.sc-duet-alert{background:#fffbf4;border-color:#f7b228}/*!@.duet-alert.warning.duet-theme-turva*/.duet-alert.warning.duet-theme-turva.sc-duet-alert{background:#fffaf3;border-color:#faa40f}/*!@.duet-alert.danger*/.duet-alert.danger.sc-duet-alert{background:#fdf4f7;border-color:#de2362}/*!@.duet-alert.danger.duet-theme-turva*/.duet-alert.danger.duet-theme-turva.sc-duet-alert{background:#fdf4f3;border-color:#e02a0d}/*!@.duet-alert.success*/.duet-alert.success.sc-duet-alert{background:#f2f9f7;border-color:#00875a}/*!@.duet-alert.success.duet-theme-turva*/.duet-alert.success.duet-theme-turva.sc-duet-alert{background:#f3f9f6;border-color:#08874e}/*!@.duet-alert-dismiss*/.duet-alert-dismiss.sc-duet-alert{position:absolute;top:2px;right:2px}/*!@.duet-alert-container*/.duet-alert-container.sc-duet-alert{display:inline-flex;align-items:center;justify-content:center;width:100%;margin:0 auto !important}/*!@.duet-alert-container span*/.duet-alert-container.sc-duet-alert span.sc-duet-alert{width:100%}/*!@.duet-alert-has-icon .duet-alert-container*/.duet-alert-has-icon.sc-duet-alert .duet-alert-container.sc-duet-alert{margin-top:2px !important}/*!@.duet-alert-icon*/.duet-alert-icon.sc-duet-alert{display:inline-block;align-self:center;width:20px;min-width:20px;height:20px;margin:0 16px 0 0 !important}/*!@.duet-alert-icon duet-icon*/.duet-alert-icon.sc-duet-alert duet-icon.sc-duet-alert{width:20px;height:20px}/*!@.duet-alert-is-dismissible*/.duet-alert-is-dismissible.sc-duet-alert{padding:16px 48px 16px 16px;text-align:left}/*!@.duet-alert-is-dismissible .duet-alert-container*/.duet-alert-is-dismissible.sc-duet-alert .duet-alert-container.sc-duet-alert{text-align:left}";
5684
-
5685
- class DuetAlert {
5686
- constructor(hostRef) {
5687
- registerInstance(this, hostRef);
5688
- this.duetDismiss = createEvent$2(this, "duetDismiss", 7);
5689
- /**
5690
- * Theme of the card.
5691
- */
5692
- this.theme = "";
5693
- /**
5694
- * State() variables
5695
- * Inlined decorator, alphabetical order.
5696
- */
5697
- this.isDismissed = false;
5698
- /**
5699
- * Property to change languageDefaults on the component.
5700
- * normally you would handle these strings on an application level and override @accessibleLabel when needed
5701
- * @default {fi: "Sulje viesti", sv: "Stäng meddelandet", en: "Close the message"}
5702
- */
5703
- this.accessibleLabelDefaults = {
5704
- fi: "Sulje viesti",
5705
- sv: "Stäng meddelandet",
5706
- en: "Close the message",
5707
- };
5708
- /**
5709
- * Adds accessible label for the dismissible alert close button.
5710
- * @default {fi: "Sulje viesti", sv: "Stäng meddelandet", en: "Close the message"}
5711
- */
5712
- this.accessibleLabel = getLocaleString(this.accessibleLabelDefaults);
5713
- /**
5714
- * Enable or disabled announcements by assistive technologies.
5715
- */
5716
- this.announcements = true;
5717
- /**
5718
- * Icon to display to the left of the content.
5719
- */
5720
- this.icon = "";
5721
- /**
5722
- * Controls the margin of the component.
5723
- */
5724
- this.margin = "auto";
5725
- /**
5726
- * Controls the padding of the component.
5727
- */
5728
- this.padding = "auto";
5729
- /**
5730
- * Style variation of the alert.
5731
- */
5732
- this.variation = "default";
5733
- /**
5734
- * Should a button be rendered to dismiss the alert?
5735
- */
5736
- this.dismissible = false;
5737
- this.handleDismiss = (ev) => {
5738
- this.isDismissed = true;
5739
- this.duetDismiss.emit({
5740
- component: "duet-alert",
5741
- originalEvent: ev,
5742
- });
5743
- };
5744
- }
5745
- /**
5746
- * Component lifecycle events.
5747
- */
5748
- componentWillLoad() {
5749
- inheritGlobalTheme(this);
5750
- }
5751
- componentDidLoad() {
5752
- if (this.autoDismiss) {
5753
- this.timeoutID = setTimeout(() => this.handleDismiss(), this.autoDismiss);
5754
- }
5755
- }
5756
- disconnectedCallback() {
5757
- if (this.timeoutID) {
5758
- clearTimeout(this.timeoutID);
5759
- }
5760
- }
5761
- /**
5762
- * render() function
5763
- * Always the last one in the class.
5764
- */
5765
- render() {
5766
- const closeColor = this.theme === "turva" ? "secondary-turva" : "secondary";
5767
- const role = this.variation === "danger" || this.variation === "warning" ? "alert" : "status";
5768
- return (hAsync(Host, { tabindex: "0", class: { "duet-theme-turva": this.theme === "turva", "duet-alert-is-dismissed": this.isDismissed }, role: this.announcements ? role : undefined }, hAsync("div", { class: {
5769
- "duet-alert": true,
5770
- "duet-alert-has-icon": !!this.icon,
5771
- "duet-alert-is-dismissible": this.dismissible,
5772
- "duet-p-0": this.padding === "none",
5773
- "duet-m-0": this.margin === "none",
5774
- [this.variation]: true,
5775
- "duet-theme-turva": this.theme === "turva",
5776
- } }, hAsync("div", { class: "duet-alert-container" }, this.icon && (hAsync("div", { class: "duet-alert-icon" }, hAsync("duet-icon", { size: "auto", name: this.icon, color: "currentColor" }))), hAsync("span", null, hAsync("slot", null))), this.dismissible && (hAsync("div", { class: "duet-alert-dismiss" }, hAsync("duet-button", { variation: "plain", accessibleLabel: this.accessibleLabel, color: closeColor, iconSize: "medium", icon: "navigation-close", iconOnly: true, margin: "none", theme: this.theme, onClick: this.handleDismiss, fixed: true }))))));
5777
- }
5778
- static get style() { return duetAlertCss; }
5779
- static get cmpMeta() { return {
5780
- "$flags$": 9,
5781
- "$tagName$": "duet-alert",
5782
- "$members$": {
5783
- "theme": [1025],
5784
- "accessibleLabelDefaults": [1, "accessible-label-default"],
5785
- "accessibleLabel": [1, "accessible-label"],
5786
- "announcements": [4],
5787
- "icon": [1],
5788
- "autoDismiss": [2, "auto-dismiss"],
5789
- "margin": [1],
5790
- "padding": [1],
5791
- "variation": [1],
5792
- "dismissible": [4],
5793
- "isDismissed": [32],
5794
- "timeoutID": [32]
5795
- },
5796
- "$listeners$": undefined,
5797
- "$lazyBundleId$": "-",
5798
- "$attrsToReflect$": []
5799
- }; }
5800
- }
5801
-
5802
- const duetBadgeCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-badge,*.sc-duet-badge::after,*.sc-duet-badge::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-badge-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:4px !important;margin-bottom:2px !important;display:inline-block;width:auto;vertical-align:middle}/*!@:host:last-child, :host:last-of-type*/.sc-duet-badge-h:last-child,.sc-duet-badge-h:last-of-type{margin-right:0 !important}/*!@:host(.duet-m-0)*/.duet-m-0.sc-duet-badge-h{margin:0 !important}/*!@.duet-badge*/.duet-badge.sc-duet-badge{width:100%;padding:4.4444444444px 12px 5.4444444444px;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.75rem;font-style:normal;font-weight:600;line-height:1.25;color:#00294d;text-align:center;word-break:break-word;vertical-align:middle;background:#e6f1f7;border-radius:20rem}/*!@.duet-badge.duet-p-0*/.duet-badge.duet-p-0.sc-duet-badge{padding:0 !important}/*!@.duet-badge.duet-m-0*/.duet-badge.duet-m-0.sc-duet-badge{margin:0 !important}/*!@.duet-badge.duet-theme-turva*/.duet-badge.duet-theme-turva.sc-duet-badge{padding:5.4444444444px 12px 4.4444444444px;font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-weight:700;color:#171c3a;background:#e8e8eb}/*!@.duet-badge.warning*/.duet-badge.warning.sc-duet-badge{background:#fef3df}/*!@.duet-badge.warning.duet-theme-turva*/.duet-badge.warning.duet-theme-turva.sc-duet-badge{background:#fef1db}/*!@.duet-badge.danger*/.duet-badge.danger.sc-duet-badge{background:#fce9ef}/*!@.duet-badge.danger.duet-theme-turva*/.duet-badge.danger.duet-theme-turva.sc-duet-badge{background:#fceae7}/*!@.duet-badge.success*/.duet-badge.success.sc-duet-badge{background:#e6f3ef}/*!@.duet-badge.success.duet-theme-turva*/.duet-badge.success.duet-theme-turva.sc-duet-badge{background:#e6f3ed}";
5803
-
5804
- class DuetBadge {
5805
- constructor(hostRef) {
5806
- registerInstance(this, hostRef);
5807
- /**
5808
- * Theme of the badge.
5809
- */
5810
- this.theme = "";
5811
- /**
5812
- * Style variation of the alert.
5813
- */
5814
- this.variation = "default";
5815
- /**
5816
- * Controls the margin of the component.
5817
- */
5818
- this.margin = "auto";
5819
- }
5820
- /**
5821
- * Component lifecycle events.
5822
- */
5823
- componentWillLoad() {
5824
- inheritGlobalTheme(this);
5825
- }
5826
- /**
5827
- * render() function
5828
- * Always the last one of the class.
5829
- */
5830
- render() {
5831
- return (hAsync(Host, { class: { "duet-m-0": this.margin === "none" } }, hAsync("div", { class: {
5832
- "duet-badge": true,
5833
- [this.variation]: true,
5834
- "duet-theme-turva": this.theme === "turva",
5835
- } }, hAsync("slot", null))));
5836
- }
5837
- static get style() { return duetBadgeCss; }
5838
- static get cmpMeta() { return {
5839
- "$flags$": 9,
5840
- "$tagName$": "duet-badge",
5841
- "$members$": {
5842
- "theme": [1025],
5843
- "variation": [1],
5844
- "margin": [1]
5845
- },
5846
- "$listeners$": undefined,
5847
- "$lazyBundleId$": "-",
5848
- "$attrsToReflect$": []
5849
- }; }
5850
- }
5851
-
5852
- const duetBreadcrumbCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-breadcrumb,*.sc-duet-breadcrumb::after,*.sc-duet-breadcrumb::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-breadcrumb-h{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-breadcrumb*/.duet-breadcrumb.sc-duet-breadcrumb{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;height:100%;font-size:0.875rem;color:#00294d;text-decoration:none}/*!@.duet-breadcrumb:hover*/.duet-breadcrumb.sc-duet-breadcrumb:hover{color:#004d80}/*!@.duet-breadcrumb.duet-theme-turva*/.duet-breadcrumb.duet-theme-turva.sc-duet-breadcrumb{color:#171c3a}/*!@.duet-breadcrumb.duet-theme-turva:hover*/.duet-breadcrumb.duet-theme-turva.sc-duet-breadcrumb:hover{color:#940925}/*!@.duet-breadcrumb:focus*/.duet-breadcrumb.sc-duet-breadcrumb:focus{outline:0}/*!@.duet-breadcrumb:active*/.duet-breadcrumb.sc-duet-breadcrumb:active{opacity:0.75}/*!@:host(.user-is-tabbing) .duet-breadcrumb:focus*/.user-is-tabbing.sc-duet-breadcrumb-h .duet-breadcrumb.sc-duet-breadcrumb:focus{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@:host(.user-is-tabbing) .duet-breadcrumb.duet-theme-turva:focus*/.user-is-tabbing.sc-duet-breadcrumb-h .duet-breadcrumb.duet-theme-turva.sc-duet-breadcrumb:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}";
5853
-
5854
- class DuetBreadcrumb {
5855
- constructor(hostRef) {
5856
- registerInstance(this, hostRef);
5857
- /**
5858
- * Theme
5859
- */
5860
- this.theme = "";
5861
- /**
5862
- * Href
5863
- */
5864
- this.href = "";
5865
- /**
5866
- * Icon
5867
- */
5868
- this.icon = "";
5869
- }
5870
- /**
5871
- * Component lifecycle events.
5872
- */
5873
- componentWillLoad() {
5874
- inheritGlobalTheme(this);
5875
- }
5876
- /**
5877
- * render() function
5878
- * Always the last one in the class.
5879
- */
5880
- render() {
5881
- return (hAsync(Host, null, hAsync("a", { class: {
5882
- "duet-breadcrumb": true,
5883
- "duet-theme-turva": this.theme === "turva",
5884
- }, href: this.href, "aria-label": this.accessibleLabel }, this.icon && hAsync("duet-icon", { size: "x-small", name: this.icon, margin: "none", color: "currentColor" }), !this.icon && hAsync("slot", null))));
5885
- }
5886
- static get style() { return duetBreadcrumbCss; }
5887
- static get cmpMeta() { return {
5888
- "$flags$": 9,
5889
- "$tagName$": "duet-breadcrumb",
5890
- "$members$": {
5891
- "theme": [1025],
5892
- "href": [1025],
5893
- "icon": [1025],
5894
- "accessibleLabel": [1, "accessible-label"]
5895
- },
5896
- "$listeners$": undefined,
5897
- "$lazyBundleId$": "-",
5898
- "$attrsToReflect$": []
5899
- }; }
5900
- }
5901
-
5902
- var actionArrowRightSmall={"title":"action-arrow-right-small","tags":"action arrow right small caret","svg":"<svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\"><path d=\"M19.5 12a2.3 2.3 0 0 1-.78 1.729L7.568 23.54a1.847 1.847 0 0 1-2.439-2.773l9.752-8.579a.25.25 0 0 0 0-.376L5.129 3.233A1.847 1.847 0 0 1 7.568.46l11.148 9.808A2.31 2.31 0 0 1 19.5 12z\"/></svg>"};
5903
-
5904
- const duetBreadcrumbsCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-breadcrumbs,*.sc-duet-breadcrumbs::after,*.sc-duet-breadcrumbs::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-breadcrumbs-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:block}/*!@.duet-breadcrumbs*/.duet-breadcrumbs.sc-duet-breadcrumbs{font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}/*!@.duet-breadcrumbs ol*/.duet-breadcrumbs.sc-duet-breadcrumbs ol.sc-duet-breadcrumbs{display:flex;flex-direction:row;flex-wrap:wrap;gap:8px;align-items:center;justify-content:flex-start;padding:10px 16px;color:#00294d;list-style:none;background:#f3f9fc;border-bottom:1px solid #e1e3e6}@media (min-width: 62em){/*!@.duet-breadcrumbs ol*/.duet-breadcrumbs.sc-duet-breadcrumbs ol.sc-duet-breadcrumbs{padding:10px 36px}}/*!@.duet-breadcrumbs.duet-theme-turva*/.duet-breadcrumbs.duet-theme-turva.sc-duet-breadcrumbs{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}/*!@.duet-breadcrumbs.duet-theme-turva ol*/.duet-breadcrumbs.duet-theme-turva.sc-duet-breadcrumbs ol.sc-duet-breadcrumbs{color:#171c3a;background:#fcf3f4}/*!@.duet-breadcrumbs .duet-breadrumbs-arrow*/.duet-breadcrumbs.sc-duet-breadcrumbs .duet-breadrumbs-arrow.sc-duet-breadcrumbs{display:inherit;align-items:center;justify-content:center;width:0.375rem;height:0.375rem}/*!@.duet-breadcrumbs .hide*/.duet-breadcrumbs.sc-duet-breadcrumbs .hide.sc-duet-breadcrumbs{display:none}";
5905
-
5906
- class DuetBreadcrumbs {
5907
- constructor(hostRef) {
5908
- registerInstance(this, hostRef);
5909
- this.observers = [];
5910
- this.breadcrumbsAriaLabel = getLocaleString({
5911
- fi: "Murupolku",
5912
- sv: "Ströbröd",
5913
- en: "Breadcrumbs",
5914
- });
5915
- /**
5916
- * Theme
5917
- */
5918
- this.theme = "";
5919
- }
5920
- /**
5921
- * Component lifecycle events.
5922
- */
5923
- componentWillLoad() {
5924
- inheritGlobalTheme(this);
5925
- this.children = Array.from(this.element.children);
5926
- }
5927
- connectedCallback() {
5928
- {
5929
- return;
5930
- }
5931
- }
5932
- disconnectedCallback() {
5933
- {
5934
- return;
5935
- }
5936
- }
5937
- /**
5938
- * render() function
5939
- * Always the last one in the class.
5940
- */
5941
- render() {
5942
- return (hAsync(Host, null, hAsync("nav", { "aria-label": this.breadcrumbsAriaLabel, class: {
5943
- "duet-breadcrumbs": true,
5944
- "duet-theme-turva": this.theme === "turva",
5945
- } }, hAsync("ol", null, this.children.map((child, index) => (hAsync(Fragment, null, index > 0 && (hAsync("li", { "aria-hidden": "true" }, hAsync("duet-icon", { class: "duet-breadrumbs-arrow", size: "auto", icon: actionArrowRightSmall.svg, margin: "none", color: "currentColor" }))), hAsync("li", { innerHTML: child.outerHTML }), hAsync("div", { class: "hide" }, hAsync("slot", null)))))))));
5946
- }
5947
- get element() { return getElement(this); }
5948
- static get style() { return duetBreadcrumbsCss; }
5949
- static get cmpMeta() { return {
5950
- "$flags$": 9,
5951
- "$tagName$": "duet-breadcrumbs",
5952
- "$members$": {
5953
- "theme": [1025],
5954
- "children": [32]
5955
- },
5956
- "$listeners$": undefined,
5957
- "$lazyBundleId$": "-",
5958
- "$attrsToReflect$": []
5959
- }; }
5960
- }
5961
-
5962
- const DuetStringsExternalDefaults = {
5963
- fi: "Avautuu uuteen ikkunaan",
5964
- sv: "Öppnas i nytt fönster",
5965
- en: "Opens in a new window",
5966
- };
5967
-
5968
- const colorWarning = "rgb(247, 178, 40)";
5969
- const colorGrayDarker = "rgb(101, 119, 135)";
5970
- const colorGrayLighter = "rgb(245, 248, 250)";
5971
- const colorCategoryHome = "rgb(211, 36, 131)";
5972
- const colorPrimary = "rgb(0, 119, 179)";
5973
- const colorCategoryVehicle = "rgb(54, 74, 129)";
5974
- const colorSuccess = "rgb(0, 135, 90)";
5975
- const colorCategoryFamily = "rgb(11, 114, 136)";
5976
- const colorPrimaryLightest = "rgb(243, 249, 252)";
5977
- const colorPrimaryLighter = "rgb(230, 242, 248)";
5978
- const colorBrandBlue = "rgb(0, 161, 212)";
5979
- const colorPrimaryDark = "rgb(0, 77, 128)";
5980
- const colorGrayLightest = "rgb(255, 255, 255)";
5981
- const colorCategoryFinance = "rgb(122, 1, 196)";
5982
- const colorGrayDark = "rgb(144, 149, 153)";
5983
- const colorGrayLight = "rgb(225, 227, 230)";
5984
- const colorSecondary = "rgb(0, 41, 77)";
5985
- const colorCategoryPet = "rgb(168, 1, 78)";
5986
- const colorPrimaryLight = "rgb(205, 229, 241)";
5987
- const colorCategoryTravel = "rgb(213, 66, 3)";
5988
- const colorGray = "rgb(207, 210, 212)";
5989
- const colorDanger = "rgb(222, 35, 98)";
5990
- const colorGrayDarkerTurva = "rgb(68, 68, 69)";
5991
- const colorGrayLighterTurva = "rgb(245, 245, 247)";
5992
- const colorCategoryHomeTurva = "rgb(161, 10, 78)";
5993
- const colorPrimaryTurva = "rgb(198, 12, 48)";
5994
- const colorCategoryVehicleTurva = "rgb(23, 28, 58)";
5995
- const colorSuccessTurva = "rgb(8, 135, 78)";
5996
- const colorPrimaryLightestTurva = "rgb(252, 243, 244)";
5997
- const colorCategoryFamilyTurva = "rgb(199, 12, 112)";
5998
- const colorCategoryUnionTurva = "rgb(169, 69, 124)";
5999
- const colorPrimaryLighterTurva = "rgb(249, 230, 234)";
6000
- const colorPrimaryDarkTurva = "rgb(148, 9, 37)";
6001
- const colorGrayLightestTurva = "rgb(255, 255, 255)";
6002
- const colorGrayDarkTurva = "rgb(116, 116, 117)";
6003
- const colorGrayLightTurva = "rgb(228, 228, 230)";
6004
- const colorBrandGrayTurva = "rgb(178, 180, 179)";
6005
- const colorSecondaryTurva = "rgb(23, 28, 58)";
6006
- const colorPrimaryLightTurva = "rgb(244, 207, 214)";
6007
- const colorCategoryTravelTurva = "rgb(9, 129, 148)";
6008
- const colorGrayTurva = "rgb(207, 207, 209)";
6009
- const colorDangerTurva = "rgb(224, 42, 13)";
6010
- const colorWarningTurva = "rgb(250, 164, 15)";
6011
- const colorData07 = "rgb(192, 101, 247)";
6012
- const colorData08 = "rgb(0, 105, 191)";
6013
- const colorData09 = "rgb(19, 120, 53)";
6014
- const colorData10 = "rgb(179, 60, 24)";
6015
- const colorData11 = "rgb(13, 163, 166)";
6016
- const colorData01 = "rgb(122, 1, 196)";
6017
- const colorData12 = "rgb(11, 114, 136)";
6018
- const colorData02 = "rgb(0, 155, 204)";
6019
- const colorData13 = "rgb(179, 137, 24)";
6020
- const colorData03 = "rgb(27, 171, 75)";
6021
- const colorData14 = "rgb(128, 98, 17)";
6022
- const colorData04 = "rgb(255, 86, 34)";
6023
- const colorData15 = "rgb(0, 41, 77)";
6024
- const colorData05 = "rgb(245, 76, 154)";
6025
- const colorData06 = "rgb(194, 21, 101)";
6026
- const fontWeightExtraBold = "800";
6027
- const letterSpacingHeading = "-0.01rem";
6028
- const fontFamilyHeadingTurva = "'turva-sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'";
6029
- const fontFamilyTextTurva = "'turva-sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'";
6030
- const fontFamilyHeading = "'localtapiola-sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'";
6031
- const fontFamilyText = "'localtapiola-sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'";
6032
- const fontWeightBold = "700";
6033
- const fontWeightNormal = "400";
6034
- const fontWeightSemiBold = "600";
6035
- const fontSizeXxxxLarge = "4.5rem";
6036
- const fontSizeXxxLarge = "3rem";
6037
- const fontSizeXxLarge = "2.25rem";
6038
- const fontSizeXLarge = "1.5rem";
6039
- const fontSizeLarge = "1.25rem";
6040
- const fontSizeMedium = "1rem";
6041
- const fontSizeSmall = "0.875rem";
6042
- const fontSizeXSmall = "0.75rem";
6043
- const radiusSharp = "0";
6044
- const radiusDefault = "4px";
6045
- const radiusCircle = "50%";
6046
- const radiusPill = "20rem";
6047
- const shadowTooltipTurva = "0 2px 10px 0 rgba(117, 117, 117, 0.13)";
6048
- const shadowDefault = "0 2px 6px 0 rgba(0, 41, 77, 0.07)";
6049
- const shadowTooltip = "0 2px 10px 0 rgba(0, 41, 77, 0.07)";
6050
- const shadowCardTurva = "0 2px 6px 0 rgba(117, 117, 117, 0.13), 0 -1px 0 0 rgba(0, 0, 0, 0.09), -1px 0 0 0 rgba(0, 0, 0, 0.07), 1px 0 0 0 rgba(0, 0, 0, 0.07), 0 1px 0 0 rgba(0, 0, 0, 0.07)";
6051
- const shadowModal = "0 2px 20px 0 rgba(0, 0, 0, 0.2)";
6052
- const shadowCard = "0 2px 6px 0 rgba(0, 41, 77, 0.07), 0 -1px 0 0 rgba(0, 0, 0, 0.09), -1px 0 0 0 rgba(0, 0, 0, 0.07), 1px 0 0 0 rgba(0, 0, 0, 0.07), 0 1px 0 0 rgba(0, 0, 0, 0.07)";
6053
- const shadowHoverTurva = "0 2px 10px 0 rgba(117, 117, 117, 0.15)";
6054
- const shadowHover = "0 2px 10px 0 rgba(0, 41, 77, 0.1)";
6055
- const shadowDefaultTurva = "0 2px 6px 0 rgba(117, 117, 117, 0.13)";
6056
- const spaceXxSmall = "4px";
6057
- const spaceLarge = "20px";
6058
- const spaceXSmall = "8px";
6059
- const spaceXxxSmall = "2px";
6060
- const spaceSmall = "12px";
6061
- const spaceMedium = "16px";
6062
- const spaceXxLarge = "36px";
6063
- const spaceXxxxLarge = "72px";
6064
- const spaceXxxxxLarge = "94px";
6065
- const spaceXxxLarge = "48px";
6066
- const spaceXLarge = "28px";
6067
- const sizeIconXxLarge = "48px";
6068
- const sizeFormBorder = "1px";
6069
- const sizeStepMedium = "40px";
6070
- const sizeButtonMinWidth = "8rem";
6071
- const sizeHeader = "4rem";
6072
- const sizeIconXxxLarge = "72px";
6073
- const sizeIconXLarge = "36px";
6074
- const sizeIconXxSmall = "10px";
6075
- const sizeStepSmall = "30px";
6076
- const sizeNavigation = "3rem";
6077
- const sizeIconLarge = "30px";
6078
- const sizeLayoutMaxWidth = "1110px";
6079
- const sizeTappableSquare = "48px";
6080
- const sizeIconXSmall = "16px";
6081
- const sizeIconXxxSmall = "7px";
6082
- const sizeButtonBorder = "2px";
6083
- const sizeButtonTinyBorder = "1px";
6084
- const sizeIconMedium = "24px";
6085
- const sizeIconSmall = "20px";
6086
- const opacity85 = "0.85";
6087
- const opacity75 = "0.75";
6088
- const opacity50 = "0.50";
6089
- const opacity30 = "0.30";
6090
- const zIndexDropdown = "600";
6091
- const zIndexSpinner = "800";
6092
- const zIndexDefault = "1";
6093
- const zIndexToast = "500";
6094
- const zIndexPopup = "950";
6095
- const zIndexModal = "900";
6096
- const zIndexSticky = "300";
6097
- const zIndexMasked = "100";
6098
- const zIndexDeep = "-999999";
6099
- const zIndexOverlay = "700";
6100
- const zIndexMask = "200";
6101
- const zIndexHeader = "400";
6102
- const lineHeightMedium = "1.5";
6103
- const lineHeightSmall = "1.25";
6104
- const lineHeightXSmall = "1.1";
6105
- const transitionQuickly = "300ms ease";
6106
- const transitionSlowly = "600ms ease";
6107
- const mediaQueryXxSmall = "'(max-width: 22.5em)'";
6108
- const mediaQueryXSmall = "'(max-width: 35.9375em)'";
6109
- const mediaQuerySmall = "'(min-width: 36em)'";
6110
- const mediaQueryMedium = "'(min-width: 48em)'";
6111
- const mediaQueryLarge = "'(min-width: 62em)'";
6112
- const mediaQueryXLarge = "'(min-width: 64.0625em)'";
6113
- const mediaQueryXxLarge = "'(min-width: 76.25em)'";
6114
- const mediaQueryXxxLarge = "'(min-width: 106.25em)'";
5737
+ const colorWarning = "rgb(247, 178, 40)";
5738
+ const colorGrayDarker = "rgb(101, 119, 135)";
5739
+ const colorGrayLighter = "rgb(245, 248, 250)";
5740
+ const colorCategoryHome = "rgb(211, 36, 131)";
5741
+ const colorPrimary = "rgb(0, 119, 179)";
5742
+ const colorCategoryVehicle = "rgb(54, 74, 129)";
5743
+ const colorSuccess = "rgb(0, 135, 90)";
5744
+ const colorCategoryFamily = "rgb(11, 114, 136)";
5745
+ const colorPrimaryLightest = "rgb(243, 249, 252)";
5746
+ const colorPrimaryLighter = "rgb(230, 242, 248)";
5747
+ const colorBrandBlue = "rgb(0, 161, 212)";
5748
+ const colorPrimaryDark = "rgb(0, 77, 128)";
5749
+ const colorGrayLightest = "rgb(255, 255, 255)";
5750
+ const colorCategoryFinance = "rgb(122, 1, 196)";
5751
+ const colorGrayDark = "rgb(144, 149, 153)";
5752
+ const colorGrayLight = "rgb(225, 227, 230)";
5753
+ const colorSecondary = "rgb(0, 41, 77)";
5754
+ const colorCategoryPet = "rgb(168, 1, 78)";
5755
+ const colorPrimaryLight = "rgb(205, 229, 241)";
5756
+ const colorCategoryTravel = "rgb(213, 66, 3)";
5757
+ const colorGray = "rgb(207, 210, 212)";
5758
+ const colorDanger = "rgb(222, 35, 98)";
5759
+ const colorGrayDarkerTurva = "rgb(68, 68, 69)";
5760
+ const colorGrayLighterTurva = "rgb(245, 245, 247)";
5761
+ const colorCategoryHomeTurva = "rgb(161, 10, 78)";
5762
+ const colorPrimaryTurva = "rgb(198, 12, 48)";
5763
+ const colorCategoryVehicleTurva = "rgb(23, 28, 58)";
5764
+ const colorSuccessTurva = "rgb(8, 135, 78)";
5765
+ const colorPrimaryLightestTurva = "rgb(252, 243, 244)";
5766
+ const colorCategoryFamilyTurva = "rgb(199, 12, 112)";
5767
+ const colorCategoryUnionTurva = "rgb(169, 69, 124)";
5768
+ const colorPrimaryLighterTurva = "rgb(249, 230, 234)";
5769
+ const colorPrimaryDarkTurva = "rgb(148, 9, 37)";
5770
+ const colorGrayLightestTurva = "rgb(255, 255, 255)";
5771
+ const colorGrayDarkTurva = "rgb(116, 116, 117)";
5772
+ const colorGrayLightTurva = "rgb(228, 228, 230)";
5773
+ const colorBrandGrayTurva = "rgb(178, 180, 179)";
5774
+ const colorSecondaryTurva = "rgb(23, 28, 58)";
5775
+ const colorPrimaryLightTurva = "rgb(244, 207, 214)";
5776
+ const colorCategoryTravelTurva = "rgb(9, 129, 148)";
5777
+ const colorGrayTurva = "rgb(207, 207, 209)";
5778
+ const colorDangerTurva = "rgb(224, 42, 13)";
5779
+ const colorWarningTurva = "rgb(250, 164, 15)";
5780
+ const colorData07 = "rgb(192, 101, 247)";
5781
+ const colorData08 = "rgb(0, 105, 191)";
5782
+ const colorData09 = "rgb(19, 120, 53)";
5783
+ const colorData10 = "rgb(179, 60, 24)";
5784
+ const colorData11 = "rgb(13, 163, 166)";
5785
+ const colorData01 = "rgb(122, 1, 196)";
5786
+ const colorData12 = "rgb(11, 114, 136)";
5787
+ const colorData02 = "rgb(0, 155, 204)";
5788
+ const colorData13 = "rgb(179, 137, 24)";
5789
+ const colorData03 = "rgb(27, 171, 75)";
5790
+ const colorData14 = "rgb(128, 98, 17)";
5791
+ const colorData04 = "rgb(255, 86, 34)";
5792
+ const colorData15 = "rgb(0, 41, 77)";
5793
+ const colorData05 = "rgb(245, 76, 154)";
5794
+ const colorData06 = "rgb(194, 21, 101)";
5795
+ const fontWeightExtraBold = "800";
5796
+ const letterSpacingHeading = "-0.01rem";
5797
+ const fontFamilyHeadingTurva = "'turva-sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'";
5798
+ const fontFamilyTextTurva = "'turva-sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'";
5799
+ const fontFamilyHeading = "'localtapiola-sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'";
5800
+ const fontFamilyText = "'localtapiola-sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'";
5801
+ const fontWeightBold = "700";
5802
+ const fontWeightNormal = "400";
5803
+ const fontWeightSemiBold = "600";
5804
+ const fontSizeXxxxLarge = "4.5rem";
5805
+ const fontSizeXxxLarge = "3rem";
5806
+ const fontSizeXxLarge = "2.25rem";
5807
+ const fontSizeXLarge = "1.5rem";
5808
+ const fontSizeLarge = "1.25rem";
5809
+ const fontSizeMedium = "1rem";
5810
+ const fontSizeSmall = "0.875rem";
5811
+ const fontSizeXSmall = "0.75rem";
5812
+ const radiusSharp = "0";
5813
+ const radiusDefault = "4px";
5814
+ const radiusCircle = "50%";
5815
+ const radiusPill = "20rem";
5816
+ const shadowTooltipTurva = "0 2px 10px 0 rgba(117, 117, 117, 0.13)";
5817
+ const shadowDefault = "0 2px 6px 0 rgba(0, 41, 77, 0.07)";
5818
+ const shadowTooltip = "0 2px 10px 0 rgba(0, 41, 77, 0.07)";
5819
+ const shadowCardTurva = "0 2px 6px 0 rgba(117, 117, 117, 0.13), 0 -1px 0 0 rgba(0, 0, 0, 0.09), -1px 0 0 0 rgba(0, 0, 0, 0.07), 1px 0 0 0 rgba(0, 0, 0, 0.07), 0 1px 0 0 rgba(0, 0, 0, 0.07)";
5820
+ const shadowModal = "0 2px 20px 0 rgba(0, 0, 0, 0.2)";
5821
+ const shadowCard = "0 2px 6px 0 rgba(0, 41, 77, 0.07), 0 -1px 0 0 rgba(0, 0, 0, 0.09), -1px 0 0 0 rgba(0, 0, 0, 0.07), 1px 0 0 0 rgba(0, 0, 0, 0.07), 0 1px 0 0 rgba(0, 0, 0, 0.07)";
5822
+ const shadowHoverTurva = "0 2px 10px 0 rgba(117, 117, 117, 0.15)";
5823
+ const shadowHover = "0 2px 10px 0 rgba(0, 41, 77, 0.1)";
5824
+ const shadowDefaultTurva = "0 2px 6px 0 rgba(117, 117, 117, 0.13)";
5825
+ const spaceXxSmall = "4px";
5826
+ const spaceLarge = "20px";
5827
+ const spaceXSmall = "8px";
5828
+ const spaceXxxSmall = "2px";
5829
+ const spaceSmall = "12px";
5830
+ const spaceMedium = "16px";
5831
+ const spaceXxLarge = "36px";
5832
+ const spaceXxxxLarge = "72px";
5833
+ const spaceXxxxxLarge = "94px";
5834
+ const spaceXxxLarge = "48px";
5835
+ const spaceXLarge = "28px";
5836
+ const sizeIconXxLarge = "48px";
5837
+ const sizeFormBorder = "1px";
5838
+ const sizeStepMedium = "40px";
5839
+ const sizeButtonMinWidth = "8rem";
5840
+ const sizeHeader = "4rem";
5841
+ const sizeIconXxxLarge = "72px";
5842
+ const sizeIconXLarge = "36px";
5843
+ const sizeIconXxSmall = "10px";
5844
+ const sizeStepSmall = "30px";
5845
+ const sizeNavigation = "3rem";
5846
+ const sizeIconLarge = "30px";
5847
+ const sizeLayoutMaxWidth = "1110px";
5848
+ const sizeTappableSquare = "48px";
5849
+ const sizeIconXSmall = "16px";
5850
+ const sizeIconXxxSmall = "7px";
5851
+ const sizeButtonBorder = "2px";
5852
+ const sizeButtonTinyBorder = "1px";
5853
+ const sizeIconMedium = "24px";
5854
+ const sizeIconSmall = "20px";
5855
+ const opacity85 = "0.85";
5856
+ const opacity75 = "0.75";
5857
+ const opacity50 = "0.50";
5858
+ const opacity30 = "0.30";
5859
+ const zIndexDropdown = "600";
5860
+ const zIndexSpinner = "800";
5861
+ const zIndexDefault = "1";
5862
+ const zIndexToast = "500";
5863
+ const zIndexPopup = "950";
5864
+ const zIndexModal = "900";
5865
+ const zIndexSticky = "300";
5866
+ const zIndexMasked = "100";
5867
+ const zIndexDeep = "-999999";
5868
+ const zIndexOverlay = "700";
5869
+ const zIndexMask = "200";
5870
+ const zIndexHeader = "400";
5871
+ const lineHeightMedium = "1.5";
5872
+ const lineHeightSmall = "1.25";
5873
+ const lineHeightXSmall = "1.1";
5874
+ const transitionQuickly = "300ms ease";
5875
+ const transitionSlowly = "600ms ease";
5876
+ const mediaQueryXxSmall = "'(max-width: 22.5em)'";
5877
+ const mediaQueryXSmall = "'(max-width: 35.9375em)'";
5878
+ const mediaQuerySmall = "'(min-width: 36em)'";
5879
+ const mediaQueryMedium = "'(min-width: 48em)'";
5880
+ const mediaQueryLarge = "'(min-width: 62em)'";
5881
+ const mediaQueryXLarge = "'(min-width: 64.0625em)'";
5882
+ const mediaQueryXxLarge = "'(min-width: 76.25em)'";
5883
+ const mediaQueryXxxLarge = "'(min-width: 106.25em)'";
6115
5884
 
6116
5885
  var tokens$2 = /*#__PURE__*/Object.freeze({
6117
5886
  __proto__: null,
@@ -6289,53 +6058,513 @@ function getTheme(theme = "") {
6289
6058
  if (allowedThemes.includes(theme.toLowerCase())) {
6290
6059
  return theme.toLowerCase();
6291
6060
  }
6292
- return "";
6293
- }
6294
- function capitalizeFirstLetter(string) {
6295
- return string.charAt(0).toUpperCase() + string.slice(1);
6296
- }
6297
- function hasType(t, str = "") {
6298
- return str.indexOf(capitalizeFirstLetter(t)) === 0 || str.indexOf(t) === 0;
6299
- }
6300
- function addPrefix(prefix, str = "") {
6301
- if (str && !isDashCase(str) && !hasType(prefix, str)) {
6302
- return `${prefix}${capitalize(str)}`;
6061
+ return "";
6062
+ }
6063
+ function capitalizeFirstLetter(string) {
6064
+ return string.charAt(0).toUpperCase() + string.slice(1);
6065
+ }
6066
+ function hasType(t, str = "") {
6067
+ return str.indexOf(capitalizeFirstLetter(t)) === 0 || str.indexOf(t) === 0;
6068
+ }
6069
+ function addPrefix(prefix, str = "") {
6070
+ if (str && !isDashCase(str) && !hasType(prefix, str)) {
6071
+ return `${prefix}${capitalize(str)}`;
6072
+ }
6073
+ return str;
6074
+ }
6075
+ function addTheme(str, theme) {
6076
+ const hasTheme = getTheme(theme).length;
6077
+ if (hasTheme && str.indexOf(theme) === -1) {
6078
+ return `${str}${capitalize(theme)}`;
6079
+ }
6080
+ return str;
6081
+ }
6082
+ function getColorByName(name, theme = "") {
6083
+ if (!name) {
6084
+ return undefined;
6085
+ }
6086
+ const defaultColor = convertToColorName(name);
6087
+ const themedColor = convertToColorName(name, theme);
6088
+ // lets just try to get the color first to save some cycles
6089
+ let resolvedToken = tokens$2[themedColor];
6090
+ if (!resolvedToken) {
6091
+ resolvedToken = tokens$2[defaultColor];
6092
+ }
6093
+ return resolvedToken;
6094
+ }
6095
+ function convertToColorName(name = "", theme = "") {
6096
+ let colorResolution = name;
6097
+ const dash = isDashCase(name);
6098
+ if (dash) {
6099
+ colorResolution = camelize(colorResolution);
6100
+ }
6101
+ colorResolution = addPrefix("color", colorResolution);
6102
+ colorResolution = addTheme(colorResolution, theme);
6103
+ // takes care of the case where colorPrimaryDark ends up with ColorPrimaryDark
6104
+ colorResolution = lowerCaseFirst(colorResolution);
6105
+ return colorResolution;
6106
+ }
6107
+
6108
+ const duetActionButtonCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-action-button,*.sc-duet-action-button::after,*.sc-duet-action-button::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-action-button-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:inline-block;margin:0 auto}/*!@button.duet-action-button*/button.duet-action-button.sc-duet-action-button{white-space:nowrap}/*!@button.duet-action-button*/button.duet-action-button.sc-duet-action-button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;min-height:auto !important;padding:0 !important;margin:0 0 0 8px !important;color:#00294d;cursor:pointer;background:#f5f8fa;border-radius:50%;transition:background-color 300ms ease !important}/*!@.duet-theme-turva button.duet-action-button*/.duet-theme-turva.sc-duet-action-button button.duet-action-button.sc-duet-action-button{color:#171c3a;background:#f5f5f7}/*!@button.duet-action-button duet-icon*/button.duet-action-button.sc-duet-action-button duet-icon.sc-duet-action-button{display:block}@media (max-width: 35.9375em){/*!@button.duet-action-button*/button.duet-action-button.sc-duet-action-button{width:32px;height:32px}}/*!@button.duet-action-button:not(:disabled):hover*/button.duet-action-button.sc-duet-action-button:not(:disabled):hover{background:#e9ecee !important}/*!@.duet-theme-turva button.duet-action-button:not(:disabled):hover*/.duet-theme-turva.sc-duet-action-button button.duet-action-button.sc-duet-action-button:not(:disabled):hover{background:#e9e9eb !important}/*!@button.duet-action-button:focus*/button.duet-action-button.sc-duet-action-button:focus{outline:0;box-shadow:0 0 0 2px #0077b3 !important}/*!@.duet-theme-turva button.duet-action-button:focus*/.duet-theme-turva.sc-duet-action-button button.duet-action-button.sc-duet-action-button:focus{box-shadow:0 0 0 2px #171c3a !important}/*!@button.duet-action-button:active:focus*/button.duet-action-button.sc-duet-action-button:active:focus{background:#dddfe1 !important;box-shadow:none}/*!@.duet-theme-turva button.duet-action-button:active:focus*/.duet-theme-turva.sc-duet-action-button button.duet-action-button.sc-duet-action-button:active:focus{background:#ddddde !important}/*!@button.duet-action-button:disabled*/button.duet-action-button.sc-duet-action-button:disabled{color:#909599;cursor:default;background:#f5f8fa;opacity:0.75}/*!@.duet-theme-turva button.duet-action-button:disabled*/.duet-theme-turva.sc-duet-action-button button.duet-action-button.sc-duet-action-button:disabled{color:#747475;background:#f5f5f7}";
6109
+
6110
+ /**
6111
+ * Slot: default slot inside an invisible element, this can be used to enhance accessibility
6112
+ * Part: button this part enables style overrides for the button
6113
+ * Part: icon this part enables style overrides for the icon
6114
+ */
6115
+ class DuetActionButton {
6116
+ constructor(hostRef) {
6117
+ registerInstance(this, hostRef);
6118
+ this.duetActionEvent = createEvent$2(this, "duetActionEvent", 6);
6119
+ this.numbersStore = "";
6120
+ /**
6121
+ * Theme of the pagination.
6122
+ */
6123
+ this.theme = "";
6124
+ /**
6125
+ * Name of the icon to display
6126
+ */
6127
+ this.iconName = "action-arrow-left-small";
6128
+ /**
6129
+ * Color of the icon to display
6130
+ */
6131
+ this.iconColor = "currentColor";
6132
+ /**
6133
+ * Size of the icon
6134
+ */
6135
+ this.iconSize = "xx-small";
6136
+ /**
6137
+ * Name of action being called
6138
+ */
6139
+ this.actionName = "default-action";
6140
+ /**
6141
+ * Name of id of action that was called being called
6142
+ */
6143
+ this.actionId = undefined;
6144
+ /**
6145
+ * Name of id of action that was called being called
6146
+ */
6147
+ this.actionMeta = undefined;
6148
+ /**
6149
+ * Disables the button
6150
+ */
6151
+ this.disabled = false;
6152
+ /**
6153
+ * Custom color to be used for the icon, as a design token entered in camelCase
6154
+ * or kebab-case. Example: "color-primary". This property can also be set to
6155
+ * "currentColor" which forces the icon to use the CSS text color of parent
6156
+ * element instead. Useful when you want to control the color in stylesheet
6157
+ * instead.
6158
+ */
6159
+ this.color = "";
6160
+ /**
6161
+ * Custom color to be used for a background, as a design token entered
6162
+ * in camelCase or kebab-case. Using this option the icon will always be resized
6163
+ * to $size-icon-medium on mobile viewports. Example: "color-primary".
6164
+ */
6165
+ this.background = "";
6166
+ /**
6167
+ * Described By id
6168
+ */
6169
+ this.ariaDescribedBy = undefined;
6170
+ /**
6171
+ * Aria description the button
6172
+ */
6173
+ this.ariaDescription = undefined;
6174
+ /**
6175
+ * Default pagination labels
6176
+ */
6177
+ this.ariaLabelsDefaults = {
6178
+ en: {
6179
+ label: "Click to activate action",
6180
+ },
6181
+ fi: {
6182
+ label: "Klikkaa toiminnon aktivointiin",
6183
+ },
6184
+ sv: {
6185
+ label: "Klicka för att aktivera åtgärd",
6186
+ },
6187
+ };
6188
+ /**
6189
+ * Default pagination labels
6190
+ */
6191
+ this.ariaLabels = getLocaleString(this.ariaLabelsDefaults);
6192
+ /**
6193
+ * Used to indicate which dom element with ID this element controls
6194
+ */
6195
+ this.ariaControls = "";
6196
+ this.listId = createID("duet-action-button");
6197
+ /**
6198
+ * Private methods.
6199
+ */
6200
+ //helper to emit relevant page events
6201
+ this.emitPageEvent = debounce(e => {
6202
+ this.duetActionEvent.emit({
6203
+ component: "duet-action-button",
6204
+ originalEvent: e,
6205
+ action: this.actionId,
6206
+ name: this.actionName,
6207
+ meta: this.actionMeta,
6208
+ id: this.listId,
6209
+ });
6210
+ });
6211
+ }
6212
+ //handle a11y keyboard navigation events
6213
+ async onKeyboardDown(e) {
6214
+ if (isKeyboardClick(e)) {
6215
+ this.emitPageEvent(e);
6216
+ }
6217
+ }
6218
+ //set update current when mouse click on page number
6219
+ async onMouseHandler(e) {
6220
+ e.preventDefault();
6221
+ this.duetActionEvent.emit({
6222
+ component: "duet-action-button",
6223
+ originalEvent: e,
6224
+ action: this.actionName,
6225
+ id: this.actionId,
6226
+ meta: this.actionMeta,
6227
+ });
6228
+ }
6229
+ /**
6230
+ * Component lifecycle events.
6231
+ */
6232
+ componentWillLoad() {
6233
+ inheritGlobalTheme(this);
6234
+ }
6235
+ /**
6236
+ * render() function
6237
+ * Always the last one in the class.
6238
+ */
6239
+ render() {
6240
+ const color = this.color === "currentColor" ? "currentColor" : getColorByName(this.color, this.theme);
6241
+ const styles = {
6242
+ color,
6243
+ background: getColorByName(this.background, this.theme),
6244
+ "border-color": getColorByName(this.iconColor, this.theme),
6245
+ "border-width": "1px",
6246
+ "border-style": "solid",
6247
+ };
6248
+ return (hAsync(Host, { onKeyDown: e => this.onKeyboardDown(e) }, hAsync("button", { part: "button", style: styles, disabled: this.disabled, id: this.listId, class: {
6249
+ "duet-action-button": true,
6250
+ "duet-action-button--disabled": this.disabled,
6251
+ [`duet-action-button--${this.theme}`]: this.theme !== "",
6252
+ }, type: "button", onClick: e => this.onMouseHandler(e), "aria-label": this.ariaLabels.label, "aria-description": this.ariaDescription, "aria-describedby": this.ariaDescribedBy, "aria-controls": this.ariaControls }, hAsync("duet-icon", { part: "icon", name: this.iconName, color: this.iconColor, margin: "none", size: this.iconSize }), hAsync("duet-visually-hidden", null, hAsync("slot", null)))));
6253
+ }
6254
+ get element() { return getElement(this); }
6255
+ static get style() { return duetActionButtonCss; }
6256
+ static get cmpMeta() { return {
6257
+ "$flags$": 9,
6258
+ "$tagName$": "duet-action-button",
6259
+ "$members$": {
6260
+ "theme": [1025],
6261
+ "iconName": [1, "icon-name"],
6262
+ "iconColor": [1, "icon-color"],
6263
+ "iconSize": [1, "icon-size"],
6264
+ "actionName": [1, "action-name"],
6265
+ "actionId": [1, "action-id"],
6266
+ "actionMeta": [1, "action-meta"],
6267
+ "disabled": [4],
6268
+ "color": [513],
6269
+ "background": [1],
6270
+ "ariaDescribedBy": [1, "accessible-described-by"],
6271
+ "ariaDescription": [1, "accessible-description"],
6272
+ "ariaLabelsDefaults": [16],
6273
+ "ariaLabels": [16],
6274
+ "ariaControls": [1, "accessible-controls"],
6275
+ "numbersStore": [32]
6276
+ },
6277
+ "$listeners$": undefined,
6278
+ "$lazyBundleId$": "-",
6279
+ "$attrsToReflect$": [["color", "color"]]
6280
+ }; }
6281
+ }
6282
+
6283
+ const duetAlertCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-alert,*.sc-duet-alert::after,*.sc-duet-alert::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-alert-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:block;width:100%;max-height:999px;border-radius:4px;transition:opacity 300ms ease, visibility 300ms ease, transform 300ms ease, max-height 300ms ease}/*!@:host(:focus)*/.sc-duet-alert-h:focus{outline:0}/*!@:host(.user-is-tabbing:focus)*/.user-is-tabbing.sc-duet-alert-h:focus{border-radius:4px;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@:host(.user-is-tabbing.duet-theme-turva:focus)*/.user-is-tabbing.duet-theme-turva.sc-duet-alert-h:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@:host(.duet-alert-is-dismissed)*/.duet-alert-is-dismissed.sc-duet-alert-h{max-height:0;visibility:hidden;opacity:0;transform:scale(0.98)}/*!@:host(.duet-alert-is-dismissed) .duet-alert*/.duet-alert-is-dismissed.sc-duet-alert-h .duet-alert.sc-duet-alert{margin:0 !important}/*!@.duet-alert*/.duet-alert.sc-duet-alert{margin-bottom:16px !important;position:relative;width:100%;padding:16px;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:400;line-height:1.25;color:#00294d;background:#f2f8fb;border:1px solid #0077b3;border-radius:4px;transition:margin 100ms 300ms ease}/*!@.duet-alert.duet-p-0*/.duet-alert.duet-p-0.sc-duet-alert{padding:0 !important}/*!@.duet-alert.duet-m-0*/.duet-alert.duet-m-0.sc-duet-alert{margin:0 !important}/*!@.duet-alert.duet-theme-turva*/.duet-alert.duet-theme-turva.sc-duet-alert{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;background:#f3f4f5;border-color:#171c3a}/*!@.duet-alert.warning*/.duet-alert.warning.sc-duet-alert{background:#fffbf4;border-color:#f7b228}/*!@.duet-alert.warning.duet-theme-turva*/.duet-alert.warning.duet-theme-turva.sc-duet-alert{background:#fffaf3;border-color:#faa40f}/*!@.duet-alert.danger*/.duet-alert.danger.sc-duet-alert{background:#fdf4f7;border-color:#de2362}/*!@.duet-alert.danger.duet-theme-turva*/.duet-alert.danger.duet-theme-turva.sc-duet-alert{background:#fdf4f3;border-color:#e02a0d}/*!@.duet-alert.success*/.duet-alert.success.sc-duet-alert{background:#f2f9f7;border-color:#00875a}/*!@.duet-alert.success.duet-theme-turva*/.duet-alert.success.duet-theme-turva.sc-duet-alert{background:#f3f9f6;border-color:#08874e}/*!@.duet-alert-dismiss*/.duet-alert-dismiss.sc-duet-alert{position:absolute;top:2px;right:2px}/*!@.duet-alert-container*/.duet-alert-container.sc-duet-alert{display:inline-flex;align-items:center;justify-content:center;width:100%;margin:0 auto !important}/*!@.duet-alert-container span*/.duet-alert-container.sc-duet-alert span.sc-duet-alert{width:100%}/*!@.duet-alert-has-icon .duet-alert-container*/.duet-alert-has-icon.sc-duet-alert .duet-alert-container.sc-duet-alert{margin-top:2px !important}/*!@.duet-alert-icon*/.duet-alert-icon.sc-duet-alert{display:inline-block;align-self:center;width:20px;min-width:20px;height:20px;margin:0 16px 0 0 !important}/*!@.duet-alert-icon duet-icon*/.duet-alert-icon.sc-duet-alert duet-icon.sc-duet-alert{width:20px;height:20px}/*!@.duet-alert-is-dismissible*/.duet-alert-is-dismissible.sc-duet-alert{padding:16px 48px 16px 16px;text-align:left}/*!@.duet-alert-is-dismissible .duet-alert-container*/.duet-alert-is-dismissible.sc-duet-alert .duet-alert-container.sc-duet-alert{text-align:left}";
6284
+
6285
+ class DuetAlert {
6286
+ constructor(hostRef) {
6287
+ registerInstance(this, hostRef);
6288
+ this.duetDismiss = createEvent$2(this, "duetDismiss", 7);
6289
+ /**
6290
+ * Theme of the card.
6291
+ */
6292
+ this.theme = "";
6293
+ /**
6294
+ * State() variables
6295
+ * Inlined decorator, alphabetical order.
6296
+ */
6297
+ this.isDismissed = false;
6298
+ /**
6299
+ * Property to change languageDefaults on the component.
6300
+ * normally you would handle these strings on an application level and override @accessibleLabel when needed
6301
+ * @default {fi: "Sulje viesti", sv: "Stäng meddelandet", en: "Close the message"}
6302
+ */
6303
+ this.accessibleLabelDefaults = {
6304
+ fi: "Sulje viesti",
6305
+ sv: "Stäng meddelandet",
6306
+ en: "Close the message",
6307
+ };
6308
+ /**
6309
+ * Adds accessible label for the dismissible alert close button.
6310
+ * @default {fi: "Sulje viesti", sv: "Stäng meddelandet", en: "Close the message"}
6311
+ */
6312
+ this.accessibleLabel = getLocaleString(this.accessibleLabelDefaults);
6313
+ /**
6314
+ * Enable or disabled announcements by assistive technologies.
6315
+ */
6316
+ this.announcements = true;
6317
+ /**
6318
+ * Icon to display to the left of the content.
6319
+ */
6320
+ this.icon = "";
6321
+ /**
6322
+ * Controls the margin of the component.
6323
+ */
6324
+ this.margin = "auto";
6325
+ /**
6326
+ * Controls the padding of the component.
6327
+ */
6328
+ this.padding = "auto";
6329
+ /**
6330
+ * Style variation of the alert.
6331
+ */
6332
+ this.variation = "default";
6333
+ /**
6334
+ * Should a button be rendered to dismiss the alert?
6335
+ */
6336
+ this.dismissible = false;
6337
+ this.handleDismiss = (ev) => {
6338
+ this.isDismissed = true;
6339
+ this.duetDismiss.emit({
6340
+ component: "duet-alert",
6341
+ originalEvent: ev,
6342
+ });
6343
+ };
6344
+ }
6345
+ /**
6346
+ * Component lifecycle events.
6347
+ */
6348
+ componentWillLoad() {
6349
+ inheritGlobalTheme(this);
6303
6350
  }
6304
- return str;
6351
+ componentDidLoad() {
6352
+ if (this.autoDismiss) {
6353
+ this.timeoutID = setTimeout(() => this.handleDismiss(), this.autoDismiss);
6354
+ }
6355
+ }
6356
+ disconnectedCallback() {
6357
+ if (this.timeoutID) {
6358
+ clearTimeout(this.timeoutID);
6359
+ }
6360
+ }
6361
+ /**
6362
+ * render() function
6363
+ * Always the last one in the class.
6364
+ */
6365
+ render() {
6366
+ const closeColor = this.theme === "turva" ? "secondary-turva" : "secondary";
6367
+ const role = this.variation === "danger" || this.variation === "warning" ? "alert" : "status";
6368
+ return (hAsync(Host, { tabindex: "0", class: { "duet-theme-turva": this.theme === "turva", "duet-alert-is-dismissed": this.isDismissed }, role: this.announcements ? role : undefined }, hAsync("div", { class: {
6369
+ "duet-alert": true,
6370
+ "duet-alert-has-icon": !!this.icon,
6371
+ "duet-alert-is-dismissible": this.dismissible,
6372
+ "duet-p-0": this.padding === "none",
6373
+ "duet-m-0": this.margin === "none",
6374
+ [this.variation]: true,
6375
+ "duet-theme-turva": this.theme === "turva",
6376
+ } }, hAsync("div", { class: "duet-alert-container" }, this.icon && (hAsync("div", { class: "duet-alert-icon" }, hAsync("duet-icon", { size: "auto", name: this.icon, color: "currentColor" }))), hAsync("span", null, hAsync("slot", null))), this.dismissible && (hAsync("div", { class: "duet-alert-dismiss" }, hAsync("duet-button", { variation: "plain", accessibleLabel: this.accessibleLabel, color: closeColor, iconSize: "medium", icon: "navigation-close", iconOnly: true, margin: "none", theme: this.theme, onClick: this.handleDismiss, fixed: true }))))));
6377
+ }
6378
+ static get style() { return duetAlertCss; }
6379
+ static get cmpMeta() { return {
6380
+ "$flags$": 9,
6381
+ "$tagName$": "duet-alert",
6382
+ "$members$": {
6383
+ "theme": [1025],
6384
+ "accessibleLabelDefaults": [1, "accessible-label-default"],
6385
+ "accessibleLabel": [1, "accessible-label"],
6386
+ "announcements": [4],
6387
+ "icon": [1],
6388
+ "autoDismiss": [2, "auto-dismiss"],
6389
+ "margin": [1],
6390
+ "padding": [1],
6391
+ "variation": [1],
6392
+ "dismissible": [4],
6393
+ "isDismissed": [32],
6394
+ "timeoutID": [32]
6395
+ },
6396
+ "$listeners$": undefined,
6397
+ "$lazyBundleId$": "-",
6398
+ "$attrsToReflect$": []
6399
+ }; }
6305
6400
  }
6306
- function addTheme(str, theme) {
6307
- const hasTheme = getTheme(theme).length;
6308
- if (hasTheme && str.indexOf(theme) === -1) {
6309
- return `${str}${capitalize(theme)}`;
6401
+
6402
+ const duetBadgeCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-badge,*.sc-duet-badge::after,*.sc-duet-badge::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-badge-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:4px !important;margin-bottom:2px !important;display:inline-block;width:auto;vertical-align:middle}/*!@:host:last-child, :host:last-of-type*/.sc-duet-badge-h:last-child,.sc-duet-badge-h:last-of-type{margin-right:0 !important}/*!@:host(.duet-m-0)*/.duet-m-0.sc-duet-badge-h{margin:0 !important}/*!@.duet-badge*/.duet-badge.sc-duet-badge{width:100%;padding:4.4444444444px 12px 5.4444444444px;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.75rem;font-style:normal;font-weight:600;line-height:1.25;color:#00294d;text-align:center;word-break:break-word;vertical-align:middle;background:#e6f1f7;border-radius:20rem}/*!@.duet-badge.duet-p-0*/.duet-badge.duet-p-0.sc-duet-badge{padding:0 !important}/*!@.duet-badge.duet-m-0*/.duet-badge.duet-m-0.sc-duet-badge{margin:0 !important}/*!@.duet-badge.duet-theme-turva*/.duet-badge.duet-theme-turva.sc-duet-badge{padding:5.4444444444px 12px 4.4444444444px;font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-weight:700;color:#171c3a;background:#e8e8eb}/*!@.duet-badge.warning*/.duet-badge.warning.sc-duet-badge{background:#fef3df}/*!@.duet-badge.warning.duet-theme-turva*/.duet-badge.warning.duet-theme-turva.sc-duet-badge{background:#fef1db}/*!@.duet-badge.danger*/.duet-badge.danger.sc-duet-badge{background:#fce9ef}/*!@.duet-badge.danger.duet-theme-turva*/.duet-badge.danger.duet-theme-turva.sc-duet-badge{background:#fceae7}/*!@.duet-badge.success*/.duet-badge.success.sc-duet-badge{background:#e6f3ef}/*!@.duet-badge.success.duet-theme-turva*/.duet-badge.success.duet-theme-turva.sc-duet-badge{background:#e6f3ed}";
6403
+
6404
+ class DuetBadge {
6405
+ constructor(hostRef) {
6406
+ registerInstance(this, hostRef);
6407
+ /**
6408
+ * Theme of the badge.
6409
+ */
6410
+ this.theme = "";
6411
+ /**
6412
+ * Style variation of the alert.
6413
+ */
6414
+ this.variation = "default";
6415
+ /**
6416
+ * Controls the margin of the component.
6417
+ */
6418
+ this.margin = "auto";
6310
6419
  }
6311
- return str;
6420
+ /**
6421
+ * Component lifecycle events.
6422
+ */
6423
+ componentWillLoad() {
6424
+ inheritGlobalTheme(this);
6425
+ }
6426
+ /**
6427
+ * render() function
6428
+ * Always the last one of the class.
6429
+ */
6430
+ render() {
6431
+ return (hAsync(Host, { class: { "duet-m-0": this.margin === "none" } }, hAsync("div", { class: {
6432
+ "duet-badge": true,
6433
+ [this.variation]: true,
6434
+ "duet-theme-turva": this.theme === "turva",
6435
+ } }, hAsync("slot", null))));
6436
+ }
6437
+ static get style() { return duetBadgeCss; }
6438
+ static get cmpMeta() { return {
6439
+ "$flags$": 9,
6440
+ "$tagName$": "duet-badge",
6441
+ "$members$": {
6442
+ "theme": [1025],
6443
+ "variation": [1],
6444
+ "margin": [1]
6445
+ },
6446
+ "$listeners$": undefined,
6447
+ "$lazyBundleId$": "-",
6448
+ "$attrsToReflect$": []
6449
+ }; }
6312
6450
  }
6313
- function getColorByName(name, theme = "") {
6314
- if (!name) {
6315
- return undefined;
6451
+
6452
+ const duetBreadcrumbCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-breadcrumb,*.sc-duet-breadcrumb::after,*.sc-duet-breadcrumb::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-breadcrumb-h{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-breadcrumb*/.duet-breadcrumb.sc-duet-breadcrumb{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;height:100%;font-size:0.875rem;color:#00294d;text-decoration:none}/*!@.duet-breadcrumb:hover*/.duet-breadcrumb.sc-duet-breadcrumb:hover{color:#004d80}/*!@.duet-breadcrumb.duet-theme-turva*/.duet-breadcrumb.duet-theme-turva.sc-duet-breadcrumb{color:#171c3a}/*!@.duet-breadcrumb.duet-theme-turva:hover*/.duet-breadcrumb.duet-theme-turva.sc-duet-breadcrumb:hover{color:#940925}/*!@.duet-breadcrumb:focus*/.duet-breadcrumb.sc-duet-breadcrumb:focus{outline:0}/*!@.duet-breadcrumb:active*/.duet-breadcrumb.sc-duet-breadcrumb:active{opacity:0.75}/*!@:host(.user-is-tabbing) .duet-breadcrumb:focus*/.user-is-tabbing.sc-duet-breadcrumb-h .duet-breadcrumb.sc-duet-breadcrumb:focus{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@:host(.user-is-tabbing) .duet-breadcrumb.duet-theme-turva:focus*/.user-is-tabbing.sc-duet-breadcrumb-h .duet-breadcrumb.duet-theme-turva.sc-duet-breadcrumb:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}";
6453
+
6454
+ class DuetBreadcrumb {
6455
+ constructor(hostRef) {
6456
+ registerInstance(this, hostRef);
6457
+ /**
6458
+ * Theme
6459
+ */
6460
+ this.theme = "";
6461
+ /**
6462
+ * Href
6463
+ */
6464
+ this.href = "";
6465
+ /**
6466
+ * Icon
6467
+ */
6468
+ this.icon = "";
6316
6469
  }
6317
- const defaultColor = convertToColorName(name);
6318
- const themedColor = convertToColorName(name, theme);
6319
- // lets just try to get the color first to save some cycles
6320
- let resolvedToken = tokens$2[themedColor];
6321
- if (!resolvedToken) {
6322
- resolvedToken = tokens$2[defaultColor];
6470
+ /**
6471
+ * Component lifecycle events.
6472
+ */
6473
+ componentWillLoad() {
6474
+ inheritGlobalTheme(this);
6323
6475
  }
6324
- return resolvedToken;
6476
+ /**
6477
+ * render() function
6478
+ * Always the last one in the class.
6479
+ */
6480
+ render() {
6481
+ return (hAsync(Host, null, hAsync("a", { class: {
6482
+ "duet-breadcrumb": true,
6483
+ "duet-theme-turva": this.theme === "turva",
6484
+ }, href: this.href, "aria-label": this.accessibleLabel }, this.icon && hAsync("duet-icon", { size: "x-small", name: this.icon, margin: "none", color: "currentColor" }), !this.icon && hAsync("slot", null))));
6485
+ }
6486
+ static get style() { return duetBreadcrumbCss; }
6487
+ static get cmpMeta() { return {
6488
+ "$flags$": 9,
6489
+ "$tagName$": "duet-breadcrumb",
6490
+ "$members$": {
6491
+ "theme": [1025],
6492
+ "href": [1025],
6493
+ "icon": [1025],
6494
+ "accessibleLabel": [1, "accessible-label"]
6495
+ },
6496
+ "$listeners$": undefined,
6497
+ "$lazyBundleId$": "-",
6498
+ "$attrsToReflect$": []
6499
+ }; }
6325
6500
  }
6326
- function convertToColorName(name = "", theme = "") {
6327
- let colorResolution = name;
6328
- const dash = isDashCase(name);
6329
- if (dash) {
6330
- colorResolution = camelize(colorResolution);
6501
+
6502
+ var actionArrowRightSmall={"title":"action-arrow-right-small","tags":"action arrow right small caret","svg":"<svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\"><path d=\"M19.5 12a2.3 2.3 0 0 1-.78 1.729L7.568 23.54a1.847 1.847 0 0 1-2.439-2.773l9.752-8.579a.25.25 0 0 0 0-.376L5.129 3.233A1.847 1.847 0 0 1 7.568.46l11.148 9.808A2.31 2.31 0 0 1 19.5 12z\"/></svg>"};
6503
+
6504
+ const duetBreadcrumbsCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-breadcrumbs,*.sc-duet-breadcrumbs::after,*.sc-duet-breadcrumbs::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-breadcrumbs-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:block}/*!@.duet-breadcrumbs*/.duet-breadcrumbs.sc-duet-breadcrumbs{font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}/*!@.duet-breadcrumbs ol*/.duet-breadcrumbs.sc-duet-breadcrumbs ol.sc-duet-breadcrumbs{display:flex;flex-direction:row;flex-wrap:wrap;gap:8px;align-items:center;justify-content:flex-start;padding:10px 16px;color:#00294d;list-style:none;background:#f3f9fc;border-bottom:1px solid #e1e3e6}@media (min-width: 62em){/*!@.duet-breadcrumbs ol*/.duet-breadcrumbs.sc-duet-breadcrumbs ol.sc-duet-breadcrumbs{padding:10px 36px}}/*!@.duet-breadcrumbs.duet-theme-turva*/.duet-breadcrumbs.duet-theme-turva.sc-duet-breadcrumbs{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}/*!@.duet-breadcrumbs.duet-theme-turva ol*/.duet-breadcrumbs.duet-theme-turva.sc-duet-breadcrumbs ol.sc-duet-breadcrumbs{color:#171c3a;background:#fcf3f4}/*!@.duet-breadcrumbs .duet-breadrumbs-arrow*/.duet-breadcrumbs.sc-duet-breadcrumbs .duet-breadrumbs-arrow.sc-duet-breadcrumbs{display:inherit;align-items:center;justify-content:center;width:0.375rem;height:0.375rem}/*!@.duet-breadcrumbs .hide*/.duet-breadcrumbs.sc-duet-breadcrumbs .hide.sc-duet-breadcrumbs{display:none}";
6505
+
6506
+ class DuetBreadcrumbs {
6507
+ constructor(hostRef) {
6508
+ registerInstance(this, hostRef);
6509
+ this.observers = [];
6510
+ this.breadcrumbsAriaLabel = getLocaleString({
6511
+ fi: "Murupolku",
6512
+ sv: "Ströbröd",
6513
+ en: "Breadcrumbs",
6514
+ });
6515
+ /**
6516
+ * Theme
6517
+ */
6518
+ this.theme = "";
6519
+ }
6520
+ /**
6521
+ * Component lifecycle events.
6522
+ */
6523
+ componentWillLoad() {
6524
+ inheritGlobalTheme(this);
6525
+ this.children = Array.from(this.element.children);
6526
+ }
6527
+ connectedCallback() {
6528
+ {
6529
+ return;
6530
+ }
6531
+ }
6532
+ disconnectedCallback() {
6533
+ {
6534
+ return;
6535
+ }
6536
+ }
6537
+ /**
6538
+ * render() function
6539
+ * Always the last one in the class.
6540
+ */
6541
+ render() {
6542
+ return (hAsync(Host, null, hAsync("nav", { "aria-label": this.breadcrumbsAriaLabel, class: {
6543
+ "duet-breadcrumbs": true,
6544
+ "duet-theme-turva": this.theme === "turva",
6545
+ } }, hAsync("ol", null, this.children.map((child, index) => (hAsync(Fragment, null, index > 0 && (hAsync("li", { "aria-hidden": "true" }, hAsync("duet-icon", { class: "duet-breadrumbs-arrow", size: "auto", icon: actionArrowRightSmall.svg, margin: "none", color: "currentColor" }))), hAsync("li", { innerHTML: child.outerHTML }), hAsync("div", { class: "hide" }, hAsync("slot", null)))))))));
6331
6546
  }
6332
- colorResolution = addPrefix("color", colorResolution);
6333
- colorResolution = addTheme(colorResolution, theme);
6334
- // takes care of the case where colorPrimaryDark ends up with ColorPrimaryDark
6335
- colorResolution = lowerCaseFirst(colorResolution);
6336
- return colorResolution;
6547
+ get element() { return getElement(this); }
6548
+ static get style() { return duetBreadcrumbsCss; }
6549
+ static get cmpMeta() { return {
6550
+ "$flags$": 9,
6551
+ "$tagName$": "duet-breadcrumbs",
6552
+ "$members$": {
6553
+ "theme": [1025],
6554
+ "children": [32]
6555
+ },
6556
+ "$listeners$": undefined,
6557
+ "$lazyBundleId$": "-",
6558
+ "$attrsToReflect$": []
6559
+ }; }
6337
6560
  }
6338
6561
 
6562
+ const DuetStringsExternalDefaults = {
6563
+ fi: "Avautuu uuteen ikkunaan",
6564
+ sv: "Öppnas i nytt fönster",
6565
+ en: "Opens in a new window",
6566
+ };
6567
+
6339
6568
  const duetButtonCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-button,*.sc-duet-button::after,*.sc-duet-button::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-button-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:8px !important;margin-bottom:12px !important;position:relative;z-index:1;display:inline-flex;width:auto;max-width:100%;vertical-align:bottom;-webkit-tap-highlight-color:transparent}/*!@:host:last-child, :host:last-of-type*/.sc-duet-button-h:last-child,.sc-duet-button-h:last-of-type{margin-right:0 !important}@media (max-width: 35.9375em){/*!@:host*/.sc-duet-button-h{width:100%}}/*!@:host(.duet-small)*/.duet-small.sc-duet-button-h{margin-right:2px !important;margin-bottom:8px !important}/*!@:host(.duet-small):last-child, :host(.duet-small):last-of-type*/.duet-small.sc-duet-button-h:last-child,.duet-small.sc-duet-button-h:last-of-type{margin-right:0 !important}@media (max-width: 35.9375em){/*!@:host(.duet-small)*/.duet-small.sc-duet-button-h{width:auto}}/*!@:host(.duet-expand)*/.duet-expand.sc-duet-button-h{width:100% !important}/*!@:host(.duet-m-0)*/.duet-m-0.sc-duet-button-h{margin:0 !important}/*!@:host(.duet-fixed)*/.duet-fixed.sc-duet-button-h{width:auto !important}/*!@:host(:last-child)*/.sc-duet-button-h:last-child{margin-right:0 !important}/*!@.duet-button-container*/.duet-button-container.sc-duet-button{position:relative;width:100%}/*!@.duet-button*/.duet-button.sc-duet-button{padding:14px 27px 15px !important;-webkit-user-select:none;user-select:none;position:relative;z-index:100;display:block;width:100%;min-width:8rem;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;font-variant-numeric:tabular-nums;-webkit-hyphens:auto;hyphens:auto;line-height:1.1;color:#0077b3 !important;text-align:center;text-decoration:none;cursor:pointer;background:transparent;border-style:solid;border-width:2px;border-radius:20rem;transition:background-color 300ms ease, color 300ms ease, border 300ms ease, box-shadow 300ms ease}/*!@.duet-button.duet-p-0*/.duet-button.duet-p-0.sc-duet-button{padding:0 !important}/*!@.duet-button.duet-m-0*/.duet-button.duet-m-0.sc-duet-button{margin:0 !important}/*!@.duet-button.duet-button-text-center*/.duet-button.duet-button-text-center.sc-duet-button{text-align:center !important}/*!@.duet-button.duet-button-is-small:not(.duet-button-icon-only)*/.duet-button.duet-button-is-small.sc-duet-button:not(.duet-button-icon-only){padding:9px 19px 10px !important;min-width:5.3333333333rem;font-size:0.875rem}/*!@.duet-button.duet-button-is-small:not(.duet-button-icon-only).icon*/.duet-button.duet-button-is-small.sc-duet-button:not(.duet-button-icon-only).icon{padding-left:48px !important}/*!@.duet-button.duet-button-is-small:not(.duet-button-icon-only).icon-right*/.duet-button.duet-button-is-small.sc-duet-button:not(.duet-button-icon-only).icon-right{padding-right:48px !important;padding-left:20px !important}/*!@.duet-theme-turva .duet-button*/.duet-theme-turva.sc-duet-button .duet-button.sc-duet-button{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#c60c30 !important}/*!@.duet-button .duet-button-contents*/.duet-button.sc-duet-button .duet-button-contents.sc-duet-button{position:relative;display:inline-block;margin:0 auto;pointer-events:none}/*!@.duet-button.duet-no-wrap*/.duet-button.duet-no-wrap.sc-duet-button{white-space:nowrap}/*!@.duet-button.icon*/.duet-button.icon.sc-duet-button{padding-left:52px !important}/*!@.duet-button.icon-right*/.duet-button.icon-right.sc-duet-button{padding-right:52px !important;padding-left:28px !important}/*!@.duet-button svg*/.duet-button.sc-duet-button svg.sc-duet-button{width:100%;min-width:100%;fill:currentColor}/*!@.duet-button .duet-button-icon*/.duet-button.sc-duet-button .duet-button-icon.sc-duet-button{position:absolute;top:50%;left:-28px;display:flex;align-items:center;justify-content:center;width:16px;height:16px;margin:0 !important;transform:translateY(-50%)}/*!@.duet-button .duet-button-icon duet-icon*/.duet-button.sc-duet-button .duet-button-icon.sc-duet-button duet-icon.sc-duet-button{width:16px;height:16px}/*!@.duet-button .duet-button-icon.right*/.duet-button.sc-duet-button .duet-button-icon.right.sc-duet-button{right:-28px;left:auto}/*!@.duet-button .duet-button-icon.large*/.duet-button.sc-duet-button .duet-button-icon.large.sc-duet-button{left:-32px;width:20px;height:20px}/*!@.duet-button .duet-button-icon.large duet-icon*/.duet-button.sc-duet-button .duet-button-icon.large.sc-duet-button duet-icon.sc-duet-button{width:20px;height:20px}/*!@.duet-button .duet-button-icon.large.right*/.duet-button.sc-duet-button .duet-button-icon.large.right.sc-duet-button{right:-32px;left:auto}/*!@.duet-button .duet-button-icon.medium-small*/.duet-button.sc-duet-button .duet-button-icon.medium-small.sc-duet-button{left:-16px;width:10px;height:10px;padding-top:1px}/*!@.duet-button .duet-button-icon.medium-small duet-icon*/.duet-button.sc-duet-button .duet-button-icon.medium-small.sc-duet-button duet-icon.sc-duet-button{width:10px;height:10px}/*!@.duet-button .duet-button-icon.medium-small.right*/.duet-button.sc-duet-button .duet-button-icon.medium-small.right.sc-duet-button{right:-16px;left:auto}/*!@.duet-button .duet-button-icon.small*/.duet-button.sc-duet-button .duet-button-icon.small.sc-duet-button{left:-16px;width:7px;height:7px}/*!@.duet-button .duet-button-icon.small duet-icon*/.duet-button.sc-duet-button .duet-button-icon.small.sc-duet-button duet-icon.sc-duet-button{width:7px;height:7px}/*!@.duet-button .duet-button-icon.small.right*/.duet-button.sc-duet-button .duet-button-icon.small.right.sc-duet-button{right:-16px;left:auto}/*!@.duet-button:focus*/.duet-button.sc-duet-button:focus{outline:0;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@.duet-theme-turva .duet-button:focus*/.duet-theme-turva.sc-duet-button .duet-button.sc-duet-button:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@.duet-button:active*/.duet-button.sc-duet-button:active{opacity:0.75;transition:none}/*!@.duet-button.default*/.duet-button.default.sc-duet-button{border-color:#e1e3e6}/*!@.duet-theme-turva .duet-button.default*/.duet-theme-turva.sc-duet-button .duet-button.default.sc-duet-button{color:#c60c30 !important;border-color:#e4e4e6}/*!@.duet-button.default:hover*/.duet-button.default.sc-duet-button:hover{border-color:#0077b3}/*!@.duet-theme-turva .duet-button.default:hover*/.duet-theme-turva.sc-duet-button .duet-button.default.sc-duet-button:hover{border-color:#c60c30}/*!@.duet-button.default.duet-button-negative*/.duet-button.default.duet-button-negative.sc-duet-button{background-color:white}/*!@.duet-theme-turva .duet-button.default.duet-button-negative*/.duet-theme-turva.sc-duet-button .duet-button.default.duet-button-negative.sc-duet-button{background-color:#e4e4e6 !important}/*!@.duet-button.default.duet-button-negative:hover*/.duet-button.default.duet-button-negative.sc-duet-button:hover{color:#0077b3 !important;border-color:#0077b3}/*!@.duet-theme-turva .duet-button.default.duet-button-negative:hover*/.duet-theme-turva.sc-duet-button .duet-button.default.duet-button-negative.sc-duet-button:hover{color:#c60c30 !important;border-color:#c60c30}/*!@.duet-button.primary*/.duet-button.primary.sc-duet-button{color:white !important;background:#0077b3;border-color:#0077b3}/*!@.duet-theme-turva .duet-button.primary*/.duet-theme-turva.sc-duet-button .duet-button.primary.sc-duet-button{color:white !important;background:#c60c30;border-color:#c60c30}/*!@.duet-button.primary:hover*/.duet-button.primary.sc-duet-button:hover{background:#005f8f;border-color:#005f8f;box-shadow:0 4px 20px rgba(34, 34, 34, 0.1)}/*!@.duet-theme-turva .duet-button.primary:hover*/.duet-theme-turva.sc-duet-button .duet-button.primary.sc-duet-button:hover{background:#940925;border-color:#940925}/*!@.duet-button.primary:focus*/.duet-button.primary.sc-duet-button:focus{outline:0;box-shadow:0 0 0 1px white, 0 0 0 4px rgba(0, 119, 179, 0.75)}/*!@.duet-theme-turva .duet-button.primary:focus*/.duet-theme-turva.sc-duet-button .duet-button.primary.sc-duet-button:focus{box-shadow:0 0 0 1px white, 0 0 0 4px rgba(23, 28, 58, 0.7)}/*!@.duet-button.secondary*/.duet-button.secondary.sc-duet-button{color:#00294d !important;background:transparent;border-color:#00294d}/*!@.duet-theme-turva .duet-button.secondary*/.duet-theme-turva.sc-duet-button .duet-button.secondary.sc-duet-button{color:#171c3a !important;border-color:#171c3a}/*!@.duet-button.secondary:hover*/.duet-button.secondary.sc-duet-button:hover{color:#0077b3 !important;border-color:#0077b3}/*!@.duet-theme-turva .duet-button.secondary:hover*/.duet-theme-turva.sc-duet-button .duet-button.secondary.sc-duet-button:hover{color:#c60c30 !important;border-color:#c60c30}/*!@.duet-button.secondary.duet-button-negative*/.duet-button.secondary.duet-button-negative.sc-duet-button{color:#e1e3e6 !important;border-color:white}/*!@.duet-theme-turva .duet-button.secondary.duet-button-negative*/.duet-theme-turva.sc-duet-button .duet-button.secondary.duet-button-negative.sc-duet-button{color:#e4e4e6 !important}/*!@.duet-button.secondary.duet-button-negative:hover*/.duet-button.secondary.duet-button-negative.sc-duet-button:hover{color:#0077b3 !important;border-color:#0077b3}/*!@.duet-theme-turva .duet-button.secondary.duet-button-negative:hover*/.duet-theme-turva.sc-duet-button .duet-button.secondary.duet-button-negative.sc-duet-button:hover{color:#c60c30 !important;border-color:#c60c30}/*!@.duet-button.negative*/.duet-button.negative.sc-duet-button{color:#00294d !important;background:white;border-color:white}/*!@.duet-theme-turva .duet-button.negative*/.duet-theme-turva.sc-duet-button .duet-button.negative.sc-duet-button{color:#171c3a !important}/*!@.duet-button.negative:hover*/.duet-button.negative.sc-duet-button:hover{color:white !important;background:transparent;border-color:white}/*!@.duet-button.negative:focus*/.duet-button.negative.sc-duet-button:focus{outline:0;box-shadow:0 0 0 1px #00294d, 0 0 0 4px rgba(255, 255, 255, 0.7)}/*!@.duet-theme-turva .duet-button.negative:focus*/.duet-theme-turva.sc-duet-button .duet-button.negative.sc-duet-button:focus{box-shadow:0 0 0 1px #171c3a, 0 0 0 4px rgba(255, 255, 255, 0.7)}/*!@.duet-button.destructive-primary*/.duet-button.destructive-primary.sc-duet-button{color:white !important;background:#de2362;border-color:#de2362}/*!@.duet-theme-turva .duet-button.destructive-primary*/.duet-theme-turva.sc-duet-button .duet-button.destructive-primary.sc-duet-button{color:white !important;background:#e02a0d;border-color:#e02a0d}/*!@.duet-button.destructive-primary:hover*/.duet-button.destructive-primary.sc-duet-button:hover{background:#b21c4e;border-color:#b21c4e;box-shadow:0 4px 20px rgba(34, 34, 34, 0.1)}/*!@.duet-theme-turva .duet-button.destructive-primary:hover*/.duet-theme-turva.sc-duet-button .duet-button.destructive-primary.sc-duet-button:hover{background:#b3220a}/*!@.duet-button.destructive, .duet-button.destructive-secondary*/.duet-button.destructive.sc-duet-button,.duet-button.destructive-secondary.sc-duet-button{color:#de2362 !important;background:white;border-color:#de2362}/*!@.duet-theme-turva .duet-button.destructive, .duet-theme-turva .duet-button.destructive-secondary*/.duet-theme-turva.sc-duet-button .duet-button.destructive.sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button.destructive-secondary.sc-duet-button{color:#e02a0d !important;background:white;border-color:#e02a0d}/*!@.duet-button.destructive:hover, .duet-button.destructive-secondary:hover*/.duet-button.destructive.sc-duet-button:hover,.duet-button.destructive-secondary.sc-duet-button:hover{color:white !important;background:#b21c4e;border-color:#b21c4e}/*!@.duet-theme-turva .duet-button.destructive:hover, .duet-theme-turva .duet-button.destructive-secondary:hover*/.duet-theme-turva.sc-duet-button .duet-button.destructive.sc-duet-button:hover,.duet-theme-turva.sc-duet-button .duet-button.destructive-secondary.sc-duet-button:hover{color:white !important;background:#b3220a;border-color:#b3220a}/*!@.duet-button.plain*/.duet-button.plain.sc-duet-button{min-width:48px;padding-right:0 !important;padding-left:0 !important;line-height:1.5;text-align:left;background:transparent;border:0;border-color:transparent;border-radius:4px}/*!@.duet-theme-turva .duet-button.plain*/.duet-theme-turva.sc-duet-button .duet-button.plain.sc-duet-button{color:#c60c30 !important;background:transparent;border-color:transparent}/*!@.duet-button.plain.icon*/.duet-button.plain.icon.sc-duet-button{padding-left:20px !important}/*!@.duet-button.plain.icon.icon-right*/.duet-button.plain.icon.icon-right.sc-duet-button{padding-right:20px !important;padding-left:0 !important}/*!@.duet-button.plain.icon.medium*/.duet-button.plain.icon.medium.sc-duet-button{padding-left:24px !important}/*!@.duet-button.plain.icon.medium.icon-right*/.duet-button.plain.icon.medium.icon-right.sc-duet-button{padding-right:24px !important;padding-left:0 !important}/*!@.duet-button.plain.icon.large*/.duet-button.plain.icon.large.sc-duet-button{padding-left:30px !important}/*!@.duet-button.plain.icon.large.icon-right*/.duet-button.plain.icon.large.icon-right.sc-duet-button{padding-right:30px !important;padding-left:0 !important}/*!@.duet-button.plain .duet-button-icon.left*/.duet-button.plain.sc-duet-button .duet-button-icon.left.sc-duet-button{left:-16.6666666667px !important}/*!@.duet-button.plain .duet-button-icon.left.medium*/.duet-button.plain.sc-duet-button .duet-button-icon.left.medium.sc-duet-button{left:-24px !important}/*!@.duet-button.plain .duet-button-icon.left.large*/.duet-button.plain.sc-duet-button .duet-button-icon.left.large.sc-duet-button{left:-30px !important}/*!@.duet-button.plain .duet-button-icon.right*/.duet-button.plain.sc-duet-button .duet-button-icon.right.sc-duet-button{right:-16.6666666667px !important}/*!@.duet-button.plain .duet-button-icon.right.medium*/.duet-button.plain.sc-duet-button .duet-button-icon.right.medium.sc-duet-button{right:-24px !important}/*!@.duet-button.plain .duet-button-icon.right.large*/.duet-button.plain.sc-duet-button .duet-button-icon.right.large.sc-duet-button{right:-30px !important}/*!@.duet-button.plain[disabled]*/.duet-button.plain[disabled].sc-duet-button{color:#657787 !important;background:transparent !important;border-color:transparent !important}/*!@.duet-theme-turva .duet-button.plain[disabled]*/.duet-theme-turva.sc-duet-button .duet-button.plain[disabled].sc-duet-button{color:transparent !important;background:transparent !important;border-color:#e4e4e6 !important}/*!@.duet-button.plain:hover*/.duet-button.plain.sc-duet-button:hover{color:#004d80 !important;background:transparent !important}/*!@.duet-theme-turva .duet-button.plain:hover*/.duet-theme-turva.sc-duet-button .duet-button.plain.sc-duet-button:hover{color:#940925 !important}/*!@.duet-button.plain.duet-button-negative*/.duet-button.plain.duet-button-negative.sc-duet-button{color:white !important}/*!@.duet-theme-turva .duet-button.plain.duet-button-negative*/.duet-theme-turva.sc-duet-button .duet-button.plain.duet-button-negative.sc-duet-button{color:#e4e4e6 !important}/*!@.duet-button.plain.duet-button-negative:hover*/.duet-button.plain.duet-button-negative.sc-duet-button:hover{color:#0077b3 !important}/*!@.duet-theme-turva .duet-button.plain.duet-button-negative:hover*/.duet-theme-turva.sc-duet-button .duet-button.plain.duet-button-negative.sc-duet-button:hover{color:#c60c30 !important}/*!@.duet-button.duet-button-icon-only*/.duet-button.duet-button-icon-only.sc-duet-button{min-width:48px;min-height:48px;padding:0 !important}/*!@.duet-button.duet-button-icon-only .duet-button-contents*/.duet-button.duet-button-icon-only.sc-duet-button .duet-button-contents.sc-duet-button{position:static}/*!@.duet-button.duet-button-icon-only .duet-button-icon.left.large,\n.duet-button.duet-button-icon-only .duet-button-icon.left.medium,\n.duet-button.duet-button-icon-only .duet-button-icon.left.small*/.duet-button.duet-button-icon-only.sc-duet-button .duet-button-icon.left.large.sc-duet-button,.duet-button.duet-button-icon-only.sc-duet-button .duet-button-icon.left.medium.sc-duet-button,.duet-button.duet-button-icon-only.sc-duet-button .duet-button-icon.left.small.sc-duet-button{position:absolute;top:50% !important;left:50% !important;padding:0;margin:0;transform:translateX(-50%) translateY(-50%)}/*!@.duet-button[disabled], .duet-button[disabled]:hover, .duet-button.duet-button-negative[disabled], .duet-button.duet-button-negative[disabled]:hover*/.duet-button[disabled].sc-duet-button,.duet-button[disabled].sc-duet-button:hover,.duet-button.duet-button-negative[disabled].sc-duet-button,.duet-button.duet-button-negative[disabled].sc-duet-button:hover{color:#657787 !important;background:#e1e3e6 !important;border-color:#e1e3e6 !important;box-shadow:none !important}/*!@.duet-theme-turva .duet-button[disabled], .duet-theme-turva .duet-button[disabled]:hover, .duet-theme-turva .duet-button.duet-button-negative [disabled], .duet-theme-turva .duet-button.duet-button-negative [disabled]:hover*/.duet-theme-turva.sc-duet-button .duet-button[disabled].sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button[disabled].sc-duet-button:hover,.duet-theme-turva.sc-duet-button .duet-button.duet-button-negative.sc-duet-button [disabled].sc-duet-button,.duet-theme-turva.sc-duet-button .duet-button.duet-button-negative.sc-duet-button [disabled].sc-duet-button:hover{color:#747475 !important;background:#e4e4e6 !important;border-color:#e4e4e6 !important}/*!@.duet-button-is-loading.primary*/.duet-button-is-loading.primary.sc-duet-button{color:white}/*!@.duet-button-is-loading.default*/.duet-button-is-loading.default.sc-duet-button{color:#0077b3}/*!@.duet-button-is-loading.default.duet-theme-turva*/.duet-button-is-loading.default.duet-theme-turva.sc-duet-button{color:#c60c30}/*!@.duet-button-is-loading .duet-button-contents*/.duet-button-is-loading.sc-duet-button .duet-button-contents.sc-duet-button{visibility:hidden;opacity:0}";
6340
6569
 
6341
6570
  class DuetButton {
@@ -6343,6 +6572,10 @@ class DuetButton {
6343
6572
  registerInstance(this, hostRef);
6344
6573
  this.duetFocus = createEvent$2(this, "duetFocus", 7);
6345
6574
  this.duetBlur = createEvent$2(this, "duetBlur", 7);
6575
+ /**
6576
+ * Use this property to add an aria-haspopup attribute to a button, if you are using it as a menu button.
6577
+ */
6578
+ this.accessiblePopup = "false";
6346
6579
  /**
6347
6580
  * Loading state of the button
6348
6581
  */
@@ -6563,7 +6796,7 @@ class DuetButton {
6563
6796
  "duet-theme-turva": this.theme === "turva",
6564
6797
  "duet-button-negative": this.negative || this.variation === "negative",
6565
6798
  [this.variation]: true,
6566
- } }, this.url ? (hAsync("a", Object.assign({}, commonProps, { href: this.url, target: this.external ? "_blank" : "_self", rel: this.external ? "noopener" : undefined }), commonChildren, this.external && hAsync("duet-visually-hidden", null, ", ", this.accessibleLabelExternal))) : (hAsync("button", Object.assign({}, commonProps, { type: this.getButtonType(), disabled: this.disabled, name: this.name, value: this.value, "aria-pressed": this.accessiblePressed != null ? this.accessiblePressed.toString() : undefined }), commonChildren)), this.loading && hAsync("duet-spinner", { color: "currentColor" }))));
6799
+ } }, this.url ? (hAsync("a", Object.assign({}, commonProps, { href: this.url, target: this.external ? "_blank" : "_self", rel: this.external ? "noopener" : undefined }), commonChildren, this.external && hAsync("duet-visually-hidden", null, ", ", this.accessibleLabelExternal))) : (hAsync("button", Object.assign({}, commonProps, { type: this.getButtonType(), disabled: this.disabled, name: this.name, value: this.value, "aria-pressed": this.accessiblePressed != null ? this.accessiblePressed.toString() : undefined, "aria-haspopup": this.accessiblePopup != null ? this.accessiblePopup.toString() : undefined }), commonChildren)), this.loading && hAsync("duet-spinner", { color: "currentColor" }))));
6567
6800
  }
6568
6801
  get element() { return getElement(this); }
6569
6802
  static get watchers() { return {
@@ -6579,6 +6812,7 @@ class DuetButton {
6579
6812
  "$members$": {
6580
6813
  "accessibleLabel": [1, "accessible-label"],
6581
6814
  "accessibleControls": [1, "accessible-controls"],
6815
+ "accessiblePopup": [1, "accessible-popup"],
6582
6816
  "accessibleActiveDescendant": [1, "accessible-active-descendant"],
6583
6817
  "accessibleOwns": [1, "accessible-owns"],
6584
6818
  "accessibleDescribedBy": [1, "accessible-described-by"],
@@ -6677,28 +6911,6 @@ class DuetCaption {
6677
6911
 
6678
6912
  var actionArrowUp={"title":"action-arrow-up","tags":"action arrow up caret","svg":"<svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\"><path d=\"M.75 17.939a.752.752 0 0 1-.53-1.281L10.94 5.94c.283-.284.659-.44 1.059-.44.401 0 .777.156 1.06.438l10.721 10.72a.752.752 0 0 1-.53 1.281.743.743 0 0 1-.53-.22L12 7 1.28 17.719a.743.743 0 0 1-.53.22z\"/></svg>"};
6679
6913
 
6680
- function chr4() {
6681
- return Math.random().toString(16).slice(-4);
6682
- }
6683
- function createID(prefix) {
6684
- return `${prefix}-${chr4()}${chr4()}-${chr4()}-${chr4()}-${chr4()}-${chr4()}${chr4()}${chr4()}`;
6685
- }
6686
-
6687
- const isArrowLeftKey = (e) => e.keyCode === 37;
6688
- const isArrowUpKey = (e) => e.keyCode === 38;
6689
- const isArrowRightKey = (e) => e.keyCode === 39;
6690
- const isArrowDownKey = (e) => e.keyCode === 40;
6691
- const isArrowKey = (e) => isArrowDownKey(e) || isArrowRightKey(e) || isArrowUpKey(e) || isArrowLeftKey(e);
6692
- const isEscapeKey = (e) => e.key === "Escape" || e.key === "Esc" || e.keyCode === 27;
6693
- const isBackspaceKey = (e) => e.keyCode === 8;
6694
- const isSpaceKey = (e) => e.key === "Space" || e.keyCode === 32;
6695
- const isPlusKey = (e) => e.key === "+" || e.keyCode === 43;
6696
- const isMinusKey = (e) => e.key === "-" || e.keyCode === 45;
6697
- const isQuestionKey = (e) => e.key === "?";
6698
- const isEnterKey = (e) => e.key === "Enter" || e.keyCode === 13;
6699
- const isKeyboardClick = (e) => isEnterKey(e) || isSpaceKey(e);
6700
- const isNumber = (e) => (e.keyCode >= 48 && e.keyCode <= 57) || (e.keyCode >= 96 && e.keyCode <= 105);
6701
-
6702
6914
  const duetCardCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-card,*.sc-duet-card::after,*.sc-duet-card::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-card-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-bottom:20px !important;display:flex;width:100%;vertical-align:top}/*!@:host(.duet-card-info)*/.duet-card-info.sc-duet-card-h{margin-bottom:16px !important}/*!@:host(.duet-m-0)*/.duet-m-0.sc-duet-card-h{margin:0 !important}/*!@.duet-card*/.duet-card.sc-duet-card{padding:20px !important;position:relative;display:block;width:100%;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-style:normal;font-weight:400;line-height:1.5;color:#00294d;text-decoration:none;border-radius:4px;box-shadow:0 2px 6px 0 rgba(0, 41, 77, 0.07), 0 -1px 0 0 rgba(0, 0, 0, 0.09), -1px 0 0 0 rgba(0, 0, 0, 0.07), 1px 0 0 0 rgba(0, 0, 0, 0.07), 0 1px 0 0 rgba(0, 0, 0, 0.07)}/*!@.duet-card.duet-p-0*/.duet-card.duet-p-0.sc-duet-card{padding:0 !important}/*!@.duet-card.duet-m-0*/.duet-card.duet-m-0.sc-duet-card{margin:0 !important}/*!@.duet-card:focus*/.duet-card.sc-duet-card:focus{outline:0;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@.duet-theme-turva .duet-card:focus, .duet-card:focus.duet-theme-turva*/.duet-theme-turva.sc-duet-card .duet-card.sc-duet-card:focus,.duet-card.sc-duet-card:focus.duet-theme-turva{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}@media (min-width: 36em){/*!@.duet-card*/.duet-card.sc-duet-card{padding:28px !important}}/*!@.duet-card.duet-theme-turva*/.duet-card.duet-theme-turva.sc-duet-card{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;box-shadow:0 2px 6px 0 rgba(117, 117, 117, 0.13), 0 -1px 0 0 rgba(0, 0, 0, 0.09), -1px 0 0 0 rgba(0, 0, 0, 0.07), 1px 0 0 0 rgba(0, 0, 0, 0.07), 0 1px 0 0 rgba(0, 0, 0, 0.07)}@media (min-width: 36em){/*!@.duet-card.x-small*/.duet-card.x-small.sc-duet-card{padding:20px !important}}@media (min-width: 36em){/*!@.duet-card.medium*/.duet-card.medium.sc-duet-card{padding:28px !important}}@media (min-width: 48em){/*!@.duet-card.medium*/.duet-card.medium.sc-duet-card{padding:36px !important}}@media (min-width: 36em){/*!@.duet-card.large*/.duet-card.large.sc-duet-card{padding:36px !important}}@media (min-width: 48em){/*!@.duet-card.large*/.duet-card.large.sc-duet-card{padding:48px !important}}@media (min-width: 36em){/*!@.duet-card.x-large*/.duet-card.x-large.sc-duet-card{padding:48px !important}}@media (min-width: 48em){/*!@.duet-card.x-large*/.duet-card.x-large.sc-duet-card{padding:72px !important}}/*!@.duet-card.duet-card-collapsed*/.duet-card.duet-card-collapsed.sc-duet-card{padding-bottom:0 !important}@media (min-width: 36em){/*!@.duet-card.duet-card-collapsed*/.duet-card.duet-card-collapsed.sc-duet-card{padding-bottom:0 !important}}/*!@.duet-card.info*/.duet-card.info.sc-duet-card{background:rgba(0, 80, 128, 0.04) !important;box-shadow:none}/*!@.duet-card.info.duet-theme-turva*/.duet-card.info.duet-theme-turva.sc-duet-card{background:rgba(23, 28, 58, 0.035) !important}/*!@.duet-card.plain*/.duet-card.plain.sc-duet-card{box-shadow:none}/*!@.duet-card.plain:not(.duet-card-has-bg)*/.duet-card.plain.sc-duet-card:not(.duet-card-has-bg){background:transparent !important}/*!@.duet-card-heading-grid*/.duet-card-heading-grid.sc-duet-card{display:flex;flex-direction:row}/*!@.duet-card-icon*/.duet-card-icon.sc-duet-card{align-self:center}/*!@.duet-card-heading-text*/.duet-card-heading-text.sc-duet-card{flex:1;word-break:break-word}/*!@.duet-card-secondary-heading*/.duet-card-secondary-heading.sc-duet-card{font-size:1rem;font-weight:600;word-break:break-word}/*!@.duet-card-secondary-heading--inline*/.duet-card-secondary-heading--inline.sc-duet-card{display:block;flex:1;align-self:flex-start;line-height:1.875;text-align:right}@media (max-width: 22.5em){/*!@.duet-card-secondary-heading--inline*/.duet-card-secondary-heading--inline.sc-duet-card{display:none}}/*!@.duet-card-secondary-heading--new-line*/.duet-card-secondary-heading--new-line.sc-duet-card{display:none}@media (max-width: 22.5em){/*!@.duet-card-secondary-heading--new-line*/.duet-card-secondary-heading--new-line.sc-duet-card{display:block}}/*!@.duet-card-heading*/.duet-card-heading.sc-duet-card{position:relative;display:block;padding:16px 20px;margin:-20px -20px 20px;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-weight:800;color:#00294d;border-bottom:1px solid #e1e3e6}@media (min-width: 36em){/*!@.duet-card-heading*/.duet-card-heading.sc-duet-card{padding:15px 28px 16px !important;margin:-28px -28px 20px}}/*!@.duet-card-heading[role=button]*/.duet-card-heading[role=button].sc-duet-card{-webkit-user-select:none;user-select:none;cursor:pointer;border-radius:4px;-webkit-appearance:none;-webkit-tap-highlight-color:transparent;appearance:none}/*!@.duet-card-heading[role=button]:focus*/.duet-card-heading[role=button].sc-duet-card:focus{outline:0}/*!@:host(.user-is-tabbing) .duet-card-heading[role=button]:focus*/.user-is-tabbing.sc-duet-card-h .duet-card-heading[role=button].sc-duet-card:focus{border-radius:4px;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@:host(.user-is-tabbing) .duet-theme-turva .duet-card-heading[role=button]:focus*/.user-is-tabbing.sc-duet-card-h .duet-theme-turva.sc-duet-card .duet-card-heading[role=button].sc-duet-card:focus{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@.duet-card-collapsed .duet-card-heading*/.duet-card-collapsed.sc-duet-card .duet-card-heading.sc-duet-card{margin-bottom:0 !important;border-bottom:0 !important}/*!@.duet-theme-turva .duet-card-heading*/.duet-theme-turva.sc-duet-card .duet-card-heading.sc-duet-card{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#171c3a;border-color:#e4e4e6}@media (min-width: 36em){/*!@.x-small .duet-card-heading*/.x-small.sc-duet-card .duet-card-heading.sc-duet-card{padding:10px 20px 11px !important;margin:-20px -20px 20px}}@media (min-width: 48em){/*!@.x-small .duet-card-heading*/.x-small.sc-duet-card .duet-card-heading.sc-duet-card{padding:10px 20px 11px !important;margin:-20px -20px 20px}}/*!@.medium .duet-card-heading*/.medium.sc-duet-card .duet-card-heading.sc-duet-card{margin:-20px -20px 20px}@media (min-width: 36em){/*!@.medium .duet-card-heading*/.medium.sc-duet-card .duet-card-heading.sc-duet-card{padding:15px 28px 16px !important;margin:-28px -28px 20px}}@media (min-width: 48em){/*!@.medium .duet-card-heading*/.medium.sc-duet-card .duet-card-heading.sc-duet-card{padding:19px 36px 20px !important;margin:-36px -36px 28px}}/*!@.large .duet-card-heading*/.large.sc-duet-card .duet-card-heading.sc-duet-card{margin:-20px -20px 20px}@media (min-width: 36em){/*!@.large .duet-card-heading*/.large.sc-duet-card .duet-card-heading.sc-duet-card{padding:19px 36px 20px !important;margin:-36px -36px 28px}}@media (min-width: 48em){/*!@.large .duet-card-heading*/.large.sc-duet-card .duet-card-heading.sc-duet-card{padding:26px 48px 27px !important;margin:-48px -48px 36px}}/*!@.x-large .duet-card-heading*/.x-large.sc-duet-card .duet-card-heading.sc-duet-card{margin:-20px -20px 20px}@media (min-width: 36em){/*!@.x-large .duet-card-heading*/.x-large.sc-duet-card .duet-card-heading.sc-duet-card{padding:26px 48px 27px !important;margin:-48px -48px 36px}}@media (min-width: 48em){/*!@.x-large .duet-card-heading*/.x-large.sc-duet-card .duet-card-heading.sc-duet-card{padding:39px 72px 40px !important;margin:-72px -72px 48px}}/*!@.none .duet-card-heading*/.none.sc-duet-card .duet-card-heading.sc-duet-card{padding:0 0 20px !important;margin:0 0 20px}/*!@.duet-card-footer*/.duet-card-footer.sc-duet-card{padding:20px;margin:20px -20px -20px;font-size:0.875rem;line-height:1.25;background:#f5f8fa;border-bottom-right-radius:4px;border-bottom-left-radius:4px}/*!@.duet-theme-turva .duet-card-footer*/.duet-theme-turva.sc-duet-card .duet-card-footer.sc-duet-card{background:#f5f5f7}@media (min-width: 36em){/*!@.duet-card-footer*/.duet-card-footer.sc-duet-card{padding:15px 28px 16px !important;margin:20px -28px -28px}}@media (min-width: 48em){/*!@.duet-card-footer*/.duet-card-footer.sc-duet-card{padding:15px 28px 16px !important;margin:20px -28px -28px}}@media (min-width: 36em){/*!@.x-small .duet-card-footer*/.x-small.sc-duet-card .duet-card-footer.sc-duet-card{padding:15px 28px 16px !important;padding-left:20px !important;margin:20px -20px -20px}}@media (min-width: 36em){/*!@.medium .duet-card-footer*/.medium.sc-duet-card .duet-card-footer.sc-duet-card{padding:15px 28px 16px !important;margin:20px -28px -28px}}@media (min-width: 48em){/*!@.medium .duet-card-footer*/.medium.sc-duet-card .duet-card-footer.sc-duet-card{padding:19px 36px 20px !important;margin:28px -36px -36px}}@media (min-width: 36em){/*!@.large .duet-card-footer*/.large.sc-duet-card .duet-card-footer.sc-duet-card{padding:19px 36px 20px !important;margin:28px -36px -36px}}@media (min-width: 48em){/*!@.large .duet-card-footer*/.large.sc-duet-card .duet-card-footer.sc-duet-card{padding:26px 48px 27px !important;margin:36px -48px -48px}}@media (min-width: 36em){/*!@.x-large .duet-card-footer*/.x-large.sc-duet-card .duet-card-footer.sc-duet-card{padding:26px 48px 27px !important;margin:36px -48px -48px}}@media (min-width: 48em){/*!@.x-large .duet-card-footer*/.x-large.sc-duet-card .duet-card-footer.sc-duet-card{padding:39px 72px 40px !important;margin:48px -72px -72px}}/*!@.none .duet-card-footer*/.none.sc-duet-card .duet-card-footer.sc-duet-card{padding:12px 0 !important;margin:20px 0 0}/*!@.duet-card-content*/.duet-card-content.sc-duet-card{width:100%}/*!@.duet-card-collapsed .duet-card-content*/.duet-card-collapsed.sc-duet-card .duet-card-content.sc-duet-card{display:none}/*!@.duet-card-caret*/.duet-card-caret.sc-duet-card{position:relative;top:6px;align-self:flex-start;transition:300ms ease}/*!@[aria-expanded=false] .duet-card-caret*/[aria-expanded=false].sc-duet-card .duet-card-caret.sc-duet-card{transform:rotate(-180deg)}/*!@.duet-card-image-mask*/.duet-card-image-mask.sc-duet-card{position:relative;width:calc(100% + 40px);margin:-20px 0 20px -20px;overflow:hidden;border-top-left-radius:4px;border-top-right-radius:4px}@media (min-width: 36em){/*!@.small .duet-card-image-mask*/.small.sc-duet-card .duet-card-image-mask.sc-duet-card{width:calc(100% + 56px);margin:-28px 0 28px -28px}}@media (min-width: 36em){/*!@.medium .duet-card-image-mask*/.medium.sc-duet-card .duet-card-image-mask.sc-duet-card{width:calc(100% + 56px);margin:-28px 0 28px -28px}}@media (min-width: 48em){/*!@.medium .duet-card-image-mask*/.medium.sc-duet-card .duet-card-image-mask.sc-duet-card{width:calc(100% + 72px);margin:-36px 0 28px -36px}}@media (min-width: 36em){/*!@.large .duet-card-image-mask*/.large.sc-duet-card .duet-card-image-mask.sc-duet-card{width:calc(100% + 72px);margin:-36px 0 36px -36px}}@media (min-width: 48em){/*!@.large .duet-card-image-mask*/.large.sc-duet-card .duet-card-image-mask.sc-duet-card{width:calc(100% + 96px);margin:-48px 0 36px -48px}}@media (min-width: 36em){/*!@.x-large .duet-card-image-mask*/.x-large.sc-duet-card .duet-card-image-mask.sc-duet-card{width:calc(100% + 96px);margin:-48px 0 36px -48px}}@media (min-width: 48em){/*!@.x-large .duet-card-image-mask*/.x-large.sc-duet-card .duet-card-image-mask.sc-duet-card{width:calc(100% + 144px);margin:-72px 0 36px -72px}}/*!@.none .duet-card-image-mask*/.none.sc-duet-card .duet-card-image-mask.sc-duet-card{width:100%;margin:0 0 20px}/*!@.duet-card-image*/.duet-card-image.sc-duet-card{display:block;width:102%;min-width:1px;max-width:102%;height:auto;min-height:1px;margin-left:-1%;transition:transform 300ms ease;transform:scale(1.0001)}/*!@a.duet-card*/a.duet-card.sc-duet-card{transition:box-shadow 300ms ease, background-position 300ms ease}/*!@a.duet-card:hover*/a.duet-card.sc-duet-card:hover{box-shadow:0 2px 6px 0 rgba(0, 41, 77, 0.07), 0 -1px 0 0 rgba(0, 0, 0, 0.09), -1px 0 0 0 rgba(0, 0, 0, 0.07), 1px 0 0 0 rgba(0, 0, 0, 0.07), 0 1px 0 0 rgba(0, 0, 0, 0.07), 0 2px 10px 0 rgba(0, 41, 77, 0.1)}/*!@a.duet-card:hover .duet-card-image*/a.duet-card.sc-duet-card:hover .duet-card-image.sc-duet-card{transform:scale(1.024)}/*!@.duet-theme-turva a.duet-card:hover*/.duet-theme-turva.sc-duet-card a.duet-card.sc-duet-card:hover{box-shadow:0 2px 6px 0 rgba(117, 117, 117, 0.13), 0 -1px 0 0 rgba(0, 0, 0, 0.09), -1px 0 0 0 rgba(0, 0, 0, 0.07), 1px 0 0 0 rgba(0, 0, 0, 0.07), 0 1px 0 0 rgba(0, 0, 0, 0.07), 0 2px 10px 0 rgba(117, 117, 117, 0.15)}/*!@a.duet-card:active*/a.duet-card.sc-duet-card:active{transition:none;transform:translateY(1px)}";
6703
6915
 
6704
6916
  /**
@@ -8595,7 +8807,7 @@ const DatePickerMonth = ({ selectedDate, focusedDate, labelledById, theme, langu
8595
8807
  } }))))))))));
8596
8808
  };
8597
8809
 
8598
- const duetDatePickerCss = "*.sc-duet-date-picker,*.sc-duet-date-picker::after,*.sc-duet-date-picker::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-date-picker-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;position:relative;display:inline-flex;width:100%;min-width:calc(33.333% - 8px);max-width:100%;text-align:left;vertical-align:top}.sc-duet-date-picker-h:last-child,.sc-duet-date-picker-h:last-of-type{margin-right:0 !important}@media (min-width: 36em){.sc-duet-date-picker-h{width:calc(50% - 16px - 3px)}}.duet-expand.sc-duet-date-picker-h{width:100% !important}.duet-m-0.sc-duet-date-picker-h{margin:0 !important}.duet-date.sc-duet-date-picker{position:relative;width:100%}.duet-date.sc-duet-date-picker button.sc-duet-date-picker,.duet-date-dialog.sc-duet-date-picker button.sc-duet-date-picker{max-width:initial !important;min-height:initial !important;padding:0 !important;margin:0 !important;transition:initial}.duet-date-button.sc-duet-date-picker{-webkit-user-select:none;user-select:none;position:absolute;top:1px;right:1px;z-index:200;display:flex;align-items:center;justify-content:center;width:48px;height:calc(100% - 2px);color:#00294d;cursor:pointer;background:transparent !important;border-left:1px solid #cfd2d4 !important;border-radius:0 4px 4px 0 !important}.duet-theme-turva.sc-duet-date-picker .duet-date-button.sc-duet-date-picker{color:#171c3a;border-color:#cfcfd1}.duet-date-button.sc-duet-date-picker::before{position:absolute;top:0;left:-6px;width:6px;height:100%;content:\"\";background:linear-gradient(to left, rgba(207, 210, 212, 0.2) 0%, rgba(207, 210, 212, 0.2) 1px, rgba(207, 210, 212, 0.1) 1px, rgba(207, 210, 212, 0) 100%)}.duet-date-button.sc-duet-date-picker:disabled{pointer-events:none;cursor:default;background:#f5f8fa !important;border:0 !important}.duet-theme-turva.sc-duet-date-picker .duet-date-button.sc-duet-date-picker:disabled{background:#f5f5f7 !important}.duet-date-button.sc-duet-date-picker:disabled::before{display:none}.duet-date-button.sc-duet-date-picker:disabled duet-icon.sc-duet-date-picker{opacity:0.4}.duet-date-button.sc-duet-date-picker duet-icon.sc-duet-date-picker{transform:translateY(-1px)}.duet-date-button.sc-duet-date-picker:active duet-icon.sc-duet-date-picker{transform:translateY(0)}.duet-date-button.sc-duet-date-picker:focus{color:#0077b3;border-color:transparent;outline:0;box-shadow:0 0 0 2px #0077b3}.duet-theme-turva.sc-duet-date-picker .duet-date-button.sc-duet-date-picker:focus{color:#171c3a;box-shadow:0 0 0 2px #171c3a}.duet-date-dialog.sc-duet-date-picker{position:absolute;top:100%;left:0;z-index:900;display:flex;width:100%;visibility:hidden;opacity:0;transition:transform 300ms ease, opacity 300ms ease, visibility 300ms ease;transform:scale(0.96) translateZ(0) translateY(-20px);transform-origin:top right}@media (min-width: 36em){.duet-date-dialog.left.sc-duet-date-picker{right:0;left:auto;width:auto}}@media (max-width: 35.9375em){.duet-date-dialog.sc-duet-date-picker{position:fixed;top:0;right:0;bottom:0;background:rgba(0, 41, 77, 0.75);transition:opacity 400ms ease, visibility 400ms ease;transform:translateZ(0);transform-origin:bottom center}.duet-date-dialog.duet-theme-turva.sc-duet-date-picker{background:rgba(23, 28, 58, 0.75)}}.duet-date-dialog.active.sc-duet-date-picker{visibility:visible;opacity:1;transition-property:transform, opacity;transform:scale(1.0001) translateZ(0) translateY(0)}@media (min-width: 36em){.duet-date-dialog.error.sc-duet-date-picker{top:calc(100% - 28px);margin-top:4px}}.duet-date-dialog-wrapper.sc-duet-date-picker{position:relative;z-index:600;width:100%;min-width:290px;max-width:310px;padding:16px 16px 20px;margin-top:8px;margin-left:auto;background:white;border:1px solid #e1e3e6;border-radius:4px;box-shadow:0 4px 10px 0 rgba(0, 41, 77, 0.15);transform:none}.duet-theme-turva.sc-duet-date-picker .duet-date-dialog-wrapper.sc-duet-date-picker{border-color:#e4e4e6}@media (max-width: 35.9375em){.duet-date-dialog-wrapper.sc-duet-date-picker{position:absolute;bottom:0;left:0;z-index:900;max-width:none;min-height:25em;padding:0 8% 20px;margin:0;visibility:hidden;border:0;border-radius:0;border-top-left-radius:4px;border-top-right-radius:4px;opacity:0;transition:transform 400ms ease, opacity 400ms ease, visibility 400ms ease;transform:translateZ(0) translateY(100%)}.active.sc-duet-date-picker .duet-date-dialog-wrapper.sc-duet-date-picker{visibility:visible;opacity:1;transition-property:transform, opacity;transform:translateZ(0) translateY(0)}}.duet-date-table.sc-duet-date-picker{width:100%;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:400;line-height:1.25;color:#00294d;text-align:center;border-spacing:0;border-collapse:collapse}.duet-date-table.duet-theme-turva.sc-duet-date-picker{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-date-table.sc-duet-date-picker th.sc-duet-date-picker{padding-bottom:8px;font-size:0.75rem;font-weight:600;line-height:1.25;text-decoration:none;text-transform:uppercase;letter-spacing:1px}.duet-date-table.sc-duet-date-picker .duet-date-table-cell.sc-duet-date-picker{text-align:center}.duet-date-table-button.sc-duet-date-picker{position:relative;z-index:100;display:inline-block !important;width:36.9230769231px !important;height:36.9230769231px !important;min-height:initial !important;padding:0 !important;margin:0 !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:0.875rem;font-weight:400;font-variant-numeric:tabular-nums;line-height:1.25 !important;color:#00294d !important;text-align:center;vertical-align:initial !important;cursor:pointer;background:transparent !important;border-radius:50% !important;transition:initial !important}.duet-theme-turva.sc-duet-date-picker .duet-date-table-button.sc-duet-date-picker{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\" !important;color:#171c3a !important}.duet-date-table-button.sc-duet-date-picker:hover{background:#e6f2f8 !important}.duet-theme-turva.sc-duet-date-picker .duet-date-table-button.sc-duet-date-picker:hover{background:#f9e6ea !important}.duet-date-table-button.today.sc-duet-date-picker{z-index:200;color:#004d80 !important;background:#f3f9fc !important;box-shadow:0 0 0 1px #0077b3 !important}.duet-theme-turva.sc-duet-date-picker .duet-date-table-button.today.sc-duet-date-picker{color:#940925 !important;background:#fcf3f4 !important;box-shadow:0 0 0 1px #c60c30 !important}.duet-date-table-button[aria-pressed=true].sc-duet-date-picker,.duet-date-table-button.sc-duet-date-picker:focus{color:white !important;background:#0077b3 !important;outline:0}.duet-theme-turva.sc-duet-date-picker .duet-date-table-button[aria-pressed=true].sc-duet-date-picker,.duet-theme-turva.sc-duet-date-picker .duet-date-table-button.sc-duet-date-picker:focus{color:white !important;background:#c60c30 !important}.duet-date-table-button.sc-duet-date-picker:active{z-index:200;color:white !important;background:#0077b3 !important;box-shadow:0 0 5px #0077b3 !important}.duet-theme-turva.sc-duet-date-picker .duet-date-table-button.sc-duet-date-picker:active{color:white !important;background:#c60c30 !important;box-shadow:0 0 5px #c60c30 !important}.duet-date-table-button.sc-duet-date-picker:focus{z-index:200;box-shadow:0 0 5px #0077b3 !important}.duet-theme-turva.sc-duet-date-picker .duet-date-table-button.sc-duet-date-picker:focus{box-shadow:0 0 5px #c60c30 !important}.duet-date-table-button.disabled.sc-duet-date-picker{color:#909599 !important;cursor:default;background:transparent !important;box-shadow:none !important}.duet-theme-turva.sc-duet-date-picker .duet-date-table-button.disabled.sc-duet-date-picker{color:#747475 !important;background:transparent !important;box-shadow:none !important}.duet-date-table-button.outside.sc-duet-date-picker{color:#909599 !important;pointer-events:none;cursor:default;background:#f5f8fa !important;box-shadow:none;opacity:0.75}.duet-theme-turva.sc-duet-date-picker .duet-date-table-button.outside.sc-duet-date-picker{color:#747475;background:#f5f5f7;box-shadow:none}.duet-date-dialog-header.sc-duet-date-picker{margin-bottom:16px !important;display:flex;align-items:center;justify-content:space-between;width:100%}.duet-date-dialog-buttons.sc-duet-date-picker{white-space:nowrap}.duet-date-dialog-buttons.sc-duet-date-picker button.sc-duet-date-picker{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;min-height:auto !important;padding:0 !important;margin:0 0 0 8px !important;color:#00294d;cursor:pointer;background:#f5f8fa;border-radius:50%;transition:background-color 300ms ease !important}.duet-theme-turva.sc-duet-date-picker .duet-date-dialog-buttons.sc-duet-date-picker button.sc-duet-date-picker{color:#171c3a;background:#f5f5f7}.duet-date-dialog-buttons.sc-duet-date-picker button.sc-duet-date-picker duet-icon.sc-duet-date-picker{display:block}@media (max-width: 35.9375em){.duet-date-dialog-buttons.sc-duet-date-picker button.sc-duet-date-picker{width:40px;height:40px}}.duet-date-dialog-buttons.sc-duet-date-picker button.sc-duet-date-picker:not(:disabled):hover{background:#e9ecee !important}.duet-theme-turva.sc-duet-date-picker .duet-date-dialog-buttons.sc-duet-date-picker button.sc-duet-date-picker:not(:disabled):hover{background:#e9e9eb !important}.duet-date-dialog-buttons.sc-duet-date-picker button.sc-duet-date-picker:focus{outline:0;box-shadow:0 0 0 2px #0077b3}.duet-theme-turva.sc-duet-date-picker .duet-date-dialog-buttons.sc-duet-date-picker button.sc-duet-date-picker:focus{box-shadow:0 0 0 2px #171c3a}.duet-date-dialog-buttons.sc-duet-date-picker button.sc-duet-date-picker:active:focus{background:#dddfe1;box-shadow:none}.duet-theme-turva.sc-duet-date-picker .duet-date-dialog-buttons.sc-duet-date-picker button.sc-duet-date-picker:active:focus{background:#ddddde}.duet-date-dialog-buttons.sc-duet-date-picker button.sc-duet-date-picker:disabled{color:#909599;cursor:default;background:#f5f8fa;opacity:0.75}.duet-theme-turva.sc-duet-date-picker .duet-date-dialog-buttons.sc-duet-date-picker button.sc-duet-date-picker:disabled{color:#747475;background:#f5f5f7}.duet-date-dialog-select.sc-duet-date-picker{position:relative;display:inline-flex;margin-top:4px}.duet-date-dialog-select.sc-duet-date-picker .duet-date-dialog-select-label.sc-duet-date-picker{position:relative;z-index:1;display:flex;align-items:center;width:100%;padding:0 8px;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-weight:600;line-height:1.25;color:#00294d;pointer-events:none;border-radius:4px}.duet-theme-turva.sc-duet-date-picker .duet-date-dialog-select.sc-duet-date-picker .duet-date-dialog-select-label.sc-duet-date-picker{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-date-dialog-select.sc-duet-date-picker span.sc-duet-date-picker{margin-right:4px}.duet-date-dialog-select.sc-duet-date-picker select.sc-duet-date-picker{position:absolute;top:0;left:0;z-index:2;width:100%;height:100%;font-size:1rem;cursor:pointer;opacity:0}.duet-date-dialog-select.sc-duet-date-picker select.sc-duet-date-picker:focus+.duet-date-dialog-select-label.sc-duet-date-picker{box-shadow:0 0 0 2px #0077b3}.duet-theme-turva.sc-duet-date-picker .duet-date-dialog-select.sc-duet-date-picker select.sc-duet-date-picker:focus+.duet-date-dialog-select-label.sc-duet-date-picker{box-shadow:0 0 0 2px #171c3a}.duet-date-dialog-mobile-header.sc-duet-date-picker{position:relative;display:flex;align-items:center;justify-content:space-between;width:120%;padding:12px 20px;margin-bottom:20px;margin-left:-10%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid #cfd2d4}@media (min-width: 36em){.duet-date-dialog-mobile-header.sc-duet-date-picker{position:absolute;top:-8px;right:-8px;width:auto;padding:0;margin:0;overflow:visible;border:0}}.duet-theme-turva.sc-duet-date-picker .duet-date-dialog-mobile-header.sc-duet-date-picker{border-color:#cfcfd1}.duet-date-dialog-mobile-header.sc-duet-date-picker duet-label.sc-duet-date-picker{display:inline-block;max-width:84%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (min-width: 36em){.duet-date-dialog-mobile-header.sc-duet-date-picker duet-label.sc-duet-date-picker{display:none}}.duet-date-picker-close.sc-duet-date-picker{display:flex;align-items:center;justify-content:center;width:24px;height:24px !important;padding:0 !important;color:#00294d !important;cursor:pointer;background:#f5f8fa !important;border-radius:50%;-webkit-appearance:none;appearance:none}@media (min-width: 36em){.duet-date-picker-close.sc-duet-date-picker{opacity:0}}.duet-theme-turva.sc-duet-date-picker .duet-date-picker-close.sc-duet-date-picker{background:#f5f5f7 !important}.duet-date-picker-close.sc-duet-date-picker:hover{background:#f5f8fa !important}.duet-theme-turva.sc-duet-date-picker .duet-date-picker-close.sc-duet-date-picker:hover{background:#f5f5f7 !important}.duet-date-picker-close.sc-duet-date-picker:focus{outline:none;box-shadow:0 0 0 2px #0077b3}@media (min-width: 36em){.duet-date-picker-close.sc-duet-date-picker:focus{opacity:1}}.duet-theme-turva.sc-duet-date-picker .duet-date-picker-close.sc-duet-date-picker:focus{box-shadow:0 0 0 2px #171c3a}";
8810
+ const duetDatePickerCss = "*.sc-duet-date-picker,*.sc-duet-date-picker::after,*.sc-duet-date-picker::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-date-picker-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;position:relative;display:inline-flex;width:100%;min-width:calc(33.333% - 8px);max-width:100%;text-align:left;vertical-align:top}.sc-duet-date-picker-h:last-child,.sc-duet-date-picker-h:last-of-type{margin-right:0 !important}@media (min-width: 36em){.sc-duet-date-picker-h{width:calc(50% - 16px - 3px)}}.duet-expand.sc-duet-date-picker-h{width:100% !important}.duet-m-0.sc-duet-date-picker-h{margin:0 !important}.duet-date.sc-duet-date-picker{position:relative;width:100%}.duet-date.sc-duet-date-picker button.sc-duet-date-picker,.duet-date-dialog.sc-duet-date-picker button.sc-duet-date-picker{max-width:initial !important;min-height:initial !important;padding:0 !important;margin:0 !important;transition:initial}.duet-date-button.sc-duet-date-picker{-webkit-user-select:none;user-select:none;position:absolute;top:1px;right:1px;z-index:200;display:flex;align-items:center;justify-content:center;width:48px;height:calc(100% - 2px);color:#00294d;cursor:pointer;background:transparent !important;border-left:1px solid #cfd2d4 !important;border-radius:0 4px 4px 0 !important}.duet-theme-turva.sc-duet-date-picker .duet-date-button.sc-duet-date-picker{color:#171c3a;border-color:#cfcfd1}.duet-date-button.sc-duet-date-picker::before{position:absolute;top:0;left:-6px;width:6px;height:100%;content:\"\";background:linear-gradient(to left, rgba(207, 210, 212, 0.2) 0%, rgba(207, 210, 212, 0.2) 1px, rgba(207, 210, 212, 0.1) 1px, rgba(207, 210, 212, 0) 100%)}.duet-date-button.sc-duet-date-picker:disabled{pointer-events:none;cursor:default;background:#f5f8fa !important;border:0 !important}.duet-theme-turva.sc-duet-date-picker .duet-date-button.sc-duet-date-picker:disabled{background:#f5f5f7 !important}.duet-date-button.sc-duet-date-picker:disabled::before{display:none}.duet-date-button.sc-duet-date-picker:disabled duet-icon.sc-duet-date-picker{opacity:0.4}.duet-date-button.sc-duet-date-picker duet-icon.sc-duet-date-picker{transform:translateY(-1px)}.duet-date-button.sc-duet-date-picker:active duet-icon.sc-duet-date-picker{transform:translateY(0)}.duet-date-button.sc-duet-date-picker:focus{color:#0077b3;border-color:transparent;outline:0;box-shadow:0 0 0 2px #0077b3}.duet-theme-turva.sc-duet-date-picker .duet-date-button.sc-duet-date-picker:focus{color:#171c3a;box-shadow:0 0 0 2px #171c3a}.duet-date-dialog.sc-duet-date-picker{position:absolute;top:100%;left:0;z-index:900;display:flex;width:100%;visibility:hidden;opacity:0;transition:transform 300ms ease, opacity 300ms ease, visibility 300ms ease;transform:scale(0.96) translateZ(0) translateY(-20px);transform-origin:top right}@media (min-width: 36em){.duet-date-dialog.left.sc-duet-date-picker{right:0;left:auto;width:auto}}@media (max-width: 35.9375em){.duet-date-dialog.sc-duet-date-picker{position:fixed;top:0;right:0;bottom:0;background:rgba(0, 41, 77, 0.75);transition:opacity 400ms ease, visibility 400ms ease;transform:translateZ(0);transform-origin:bottom center}.duet-date-dialog.duet-theme-turva.sc-duet-date-picker{background:rgba(23, 28, 58, 0.75)}}.duet-date-dialog.active.sc-duet-date-picker{visibility:visible;opacity:1;transition-property:transform, opacity;transform:scale(1.0001) translateZ(0) translateY(0)}@media (min-width: 36em){.duet-date-dialog.error.sc-duet-date-picker{top:calc(100% - 28px);margin-top:4px}}.duet-date-dialog-wrapper.sc-duet-date-picker{position:relative;z-index:600;width:100%;min-width:290px;max-width:310px;padding:16px 16px 20px;margin-top:8px;margin-left:auto;background:white;border:1px solid #e1e3e6;border-radius:4px;box-shadow:0 4px 10px 0 rgba(0, 41, 77, 0.15);transform:none}.duet-theme-turva.sc-duet-date-picker .duet-date-dialog-wrapper.sc-duet-date-picker{border-color:#e4e4e6}@media (max-width: 35.9375em){.duet-date-dialog-wrapper.sc-duet-date-picker{position:absolute;bottom:0;left:0;z-index:900;max-width:none;min-height:25em;padding:0 8% 20px;margin:0;visibility:hidden;border:0;border-radius:0;border-top-left-radius:4px;border-top-right-radius:4px;opacity:0;transition:transform 400ms ease, opacity 400ms ease, visibility 400ms ease;transform:translateZ(0) translateY(100%)}.active.sc-duet-date-picker .duet-date-dialog-wrapper.sc-duet-date-picker{visibility:visible;opacity:1;transition-property:transform, opacity;transform:translateZ(0) translateY(0)}}.duet-date-table.sc-duet-date-picker{width:100%;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:400;line-height:1.25;color:#00294d;text-align:center;border-spacing:0;border-collapse:collapse}.duet-date-table.duet-theme-turva.sc-duet-date-picker{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-date-table.sc-duet-date-picker th.sc-duet-date-picker{padding-bottom:8px;font-size:0.75rem;font-weight:600;line-height:1.25;text-decoration:none;text-transform:uppercase;letter-spacing:1px}.duet-date-table.sc-duet-date-picker .duet-date-table-cell.sc-duet-date-picker{text-align:center}.duet-date-table-button.sc-duet-date-picker{position:relative;z-index:100;display:inline-block !important;width:36.9230769231px !important;height:36.9230769231px !important;min-height:initial !important;padding:0 !important;margin:0 !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:0.875rem;font-weight:400;font-variant-numeric:tabular-nums;line-height:1.25 !important;color:#00294d !important;text-align:center;vertical-align:initial !important;cursor:pointer;background:transparent !important;border-radius:50% !important;transition:initial !important}.duet-theme-turva.sc-duet-date-picker .duet-date-table-button.sc-duet-date-picker{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\" !important;color:#171c3a !important}.duet-date-table-button.sc-duet-date-picker:hover{background:#e6f2f8 !important}.duet-theme-turva.sc-duet-date-picker .duet-date-table-button.sc-duet-date-picker:hover{background:#f9e6ea !important}.duet-date-table-button.today.sc-duet-date-picker{z-index:200;color:#004d80 !important;background:#f3f9fc !important;box-shadow:0 0 0 1px #0077b3 !important}.duet-theme-turva.sc-duet-date-picker .duet-date-table-button.today.sc-duet-date-picker{color:#940925 !important;background:#fcf3f4 !important;box-shadow:0 0 0 1px #c60c30 !important}.duet-date-table-button[aria-pressed=true].sc-duet-date-picker,.duet-date-table-button.sc-duet-date-picker:focus{color:white !important;background:#0077b3 !important;outline:0}.duet-theme-turva.sc-duet-date-picker .duet-date-table-button[aria-pressed=true].sc-duet-date-picker,.duet-theme-turva.sc-duet-date-picker .duet-date-table-button.sc-duet-date-picker:focus{color:white !important;background:#c60c30 !important}.duet-date-table-button.sc-duet-date-picker:active{z-index:200;color:white !important;background:#0077b3 !important;box-shadow:0 0 5px #0077b3 !important}.duet-theme-turva.sc-duet-date-picker .duet-date-table-button.sc-duet-date-picker:active{color:white !important;background:#c60c30 !important;box-shadow:0 0 5px #c60c30 !important}.duet-date-table-button.sc-duet-date-picker:focus{z-index:200;box-shadow:0 0 5px #0077b3 !important}.duet-theme-turva.sc-duet-date-picker .duet-date-table-button.sc-duet-date-picker:focus{box-shadow:0 0 5px #c60c30 !important}.duet-date-table-button.disabled.sc-duet-date-picker{color:#909599 !important;cursor:default;background:transparent !important;box-shadow:none !important}.duet-theme-turva.sc-duet-date-picker .duet-date-table-button.disabled.sc-duet-date-picker{color:#747475 !important;background:transparent !important;box-shadow:none !important}.duet-date-table-button.outside.sc-duet-date-picker{color:#909599 !important;pointer-events:none;cursor:default;background:#f5f8fa !important;box-shadow:none;opacity:0.75}.duet-theme-turva.sc-duet-date-picker .duet-date-table-button.outside.sc-duet-date-picker{color:#747475;background:#f5f5f7;box-shadow:none}.duet-date-dialog-header.sc-duet-date-picker{margin-bottom:16px !important;display:flex;align-items:center;justify-content:space-between;width:100%}.duet-date-dialog-buttons.sc-duet-date-picker{white-space:nowrap}.duet-date-dialog-buttons.sc-duet-date-picker .sc-duet-date-picker::part(button){border:0}.duet-date-dialog-select.sc-duet-date-picker{position:relative;display:inline-flex;margin-top:4px}.duet-date-dialog-select.sc-duet-date-picker .duet-date-dialog-select-label.sc-duet-date-picker{position:relative;z-index:1;display:flex;align-items:center;width:100%;padding:0 8px;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-weight:600;line-height:1.25;color:#00294d;pointer-events:none;border-radius:4px}.duet-theme-turva.sc-duet-date-picker .duet-date-dialog-select.sc-duet-date-picker .duet-date-dialog-select-label.sc-duet-date-picker{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-date-dialog-select.sc-duet-date-picker span.sc-duet-date-picker{margin-right:4px}.duet-date-dialog-select.sc-duet-date-picker select.sc-duet-date-picker{position:absolute;top:0;left:0;z-index:2;width:100%;height:100%;font-size:1rem;cursor:pointer;opacity:0}.duet-date-dialog-select.sc-duet-date-picker select.sc-duet-date-picker:focus+.duet-date-dialog-select-label.sc-duet-date-picker{box-shadow:0 0 0 2px #0077b3}.duet-theme-turva.sc-duet-date-picker .duet-date-dialog-select.sc-duet-date-picker select.sc-duet-date-picker:focus+.duet-date-dialog-select-label.sc-duet-date-picker{box-shadow:0 0 0 2px #171c3a}.duet-date-dialog-mobile-header.sc-duet-date-picker{position:relative;display:flex;align-items:center;justify-content:space-between;width:120%;padding:12px 20px;margin-bottom:20px;margin-left:-10%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid #cfd2d4}@media (min-width: 36em){.duet-date-dialog-mobile-header.sc-duet-date-picker{position:absolute;top:-8px;right:-8px;width:auto;padding:0;margin:0;overflow:visible;border:0}}.duet-theme-turva.sc-duet-date-picker .duet-date-dialog-mobile-header.sc-duet-date-picker{border-color:#cfcfd1}.duet-date-dialog-mobile-header.sc-duet-date-picker duet-label.sc-duet-date-picker{display:inline-block;max-width:84%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (min-width: 36em){.duet-date-dialog-mobile-header.sc-duet-date-picker duet-label.sc-duet-date-picker{display:none}}.duet-date-picker-close.sc-duet-date-picker{display:flex;align-items:center;justify-content:center;width:24px;height:24px !important;padding:0 !important;color:#00294d !important;cursor:pointer;background:#f5f8fa !important;border-radius:50%;-webkit-appearance:none;appearance:none}@media (min-width: 36em){.duet-date-picker-close.sc-duet-date-picker{opacity:0}}.duet-theme-turva.sc-duet-date-picker .duet-date-picker-close.sc-duet-date-picker{background:#f5f5f7 !important}.duet-date-picker-close.sc-duet-date-picker:hover{background:#f5f8fa !important}.duet-theme-turva.sc-duet-date-picker .duet-date-picker-close.sc-duet-date-picker:hover{background:#f5f5f7 !important}.duet-date-picker-close.sc-duet-date-picker:focus{outline:none;box-shadow:0 0 0 2px #0077b3}@media (min-width: 36em){.duet-date-picker-close.sc-duet-date-picker:focus{opacity:1}}.duet-theme-turva.sc-duet-date-picker .duet-date-picker-close.sc-duet-date-picker:focus{box-shadow:0 0 0 2px #171c3a}";
8599
8811
 
8600
8812
  class DuetDatePicker {
8601
8813
  constructor(hostRef) {
@@ -8990,7 +9202,7 @@ class DuetDatePicker {
8990
9202
  left: this.direction === "left",
8991
9203
  error: !!this.error,
8992
9204
  active: this.open,
8993
- }, role: "dialog", "aria-modal": "true", "aria-hidden": this.open ? "false" : "true", "aria-labelledby": this.dialogLabelId, onTouchMove: this.handleTouchMove, onTouchStart: this.handleTouchStart, onTouchEnd: this.handleTouchEnd }, hAsync(FocusGuard, { moveFocusTo: this.focusedDayNode }), hAsync("div", { class: "duet-date-dialog-wrapper", onKeyDown: this.handleEscKey, ref: element => (this.dialogWrapperNode = element) }, hAsync("duet-visually-hidden", { "aria-live": "polite" }, text.keyboardInstruction), hAsync("div", { class: "duet-date-dialog-mobile-header" }, hAsync("duet-label", { margin: "none" }, this.label), hAsync("button", { class: "duet-date-picker-close", ref: element => (this.closeButtonNode = element), onClick: () => this.hide(), type: "button" }, hAsync("duet-icon", { name: "navigation-close-small", margin: "none", color: "currentColor", size: "xx-small" }), hAsync("duet-visually-hidden", null, text.closeLabel))), hAsync("div", { class: "duet-date-dialog-header" }, hAsync("div", { class: "duet-date-dialog-dropdowns" }, hAsync("duet-visually-hidden", null, hAsync("h2", { id: this.dialogLabelId, "aria-live": "polite", "aria-atomic": "true" }, text.monthLabels[focusedMonth], " ", this.focusedDay.getFullYear())), hAsync("duet-visually-hidden", null, hAsync("label", { htmlFor: this.monthSelectId }, text.monthSelectLabel)), hAsync("div", { class: "duet-date-dialog-select" }, hAsync("select", { id: this.monthSelectId, class: "duet-date-month-select", ref: element => (this.monthSelectNode = element), onChange: this.handleMonthSelect }, text.monthLabels.map((month, i) => (hAsync("option", { key: month, value: i, selected: i === focusedMonth, disabled: !inRange(new Date(focusedYear, i, 1), minDate ? startOfMonth(minDate) : null, maxDate ? endOfMonth(maxDate) : null) }, month)))), hAsync("div", { class: "duet-date-dialog-select-label", "aria-hidden": "true" }, hAsync("span", null, text.monthLabelsShort[focusedMonth]), hAsync("duet-icon", { name: "action-arrow-down-small", color: "currentColor", margin: "none", size: "xxx-small" }))), hAsync("duet-visually-hidden", null, hAsync("label", { htmlFor: this.yearSelectId }, text.yearSelectLabel)), hAsync("div", { class: "duet-date-dialog-select" }, hAsync("select", { id: this.yearSelectId, class: "duet-date-year-select", onChange: this.handleYearSelect }, range(minYear, maxYear).map(year => (hAsync("option", { key: year, selected: year === focusedYear }, year)))), hAsync("div", { class: "duet-date-dialog-select-label", "aria-hidden": "true" }, hAsync("span", null, this.focusedDay.getFullYear()), hAsync("duet-icon", { name: "action-arrow-down-small", color: "currentColor", margin: "none", size: "xxx-small" })))), hAsync("div", { class: "duet-date-dialog-buttons" }, hAsync("button", { class: "duet-date-dialog-prev", onClick: this.handlePreviousMonthClick, disabled: prevMonthDisabled, type: "button" }, hAsync("duet-icon", { name: "action-arrow-left-small", color: "currentColor", margin: "none", size: "xx-small" }), hAsync("duet-visually-hidden", null, text.prevMonthLabel)), hAsync("button", { class: "duet-date-dialog-next", onClick: this.handleNextMonthClick, disabled: nextMonthDisabled, type: "button" }, hAsync("duet-icon", { name: "action-arrow-right-small", color: "currentColor", margin: "none", size: "xx-small" }), hAsync("duet-visually-hidden", null, text.nextMonthLabel)))), hAsync(DatePickerMonth, { selectedDate: valueAsDate, focusedDate: this.focusedDay, onDateSelect: this.handleDaySelect, onKeyboardNavigation: this.handleKeyboardNavigation, labelledById: this.dialogLabelId, language: this.language, theme: this.theme, min: minDate, max: maxDate, focusedDayRef: element => (this.focusedDayNode = element), onFocusEnter: this.enableActiveFocus, onFocusExit: this.disableActiveFocus })), hAsync(FocusGuard, { moveFocusTo: this.closeButtonNode }))));
9205
+ }, role: "dialog", "aria-modal": "true", "aria-hidden": this.open ? "false" : "true", "aria-labelledby": this.dialogLabelId, onTouchMove: this.handleTouchMove, onTouchStart: this.handleTouchStart, onTouchEnd: this.handleTouchEnd }, hAsync(FocusGuard, { moveFocusTo: this.focusedDayNode }), hAsync("div", { class: "duet-date-dialog-wrapper", onKeyDown: this.handleEscKey, ref: element => (this.dialogWrapperNode = element) }, hAsync("duet-visually-hidden", { "aria-live": "polite" }, text.keyboardInstruction), hAsync("div", { class: "duet-date-dialog-mobile-header" }, hAsync("duet-label", { margin: "none" }, this.label), hAsync("button", { class: "duet-date-picker-close", ref: element => (this.closeButtonNode = element), onClick: () => this.hide(), type: "button" }, hAsync("duet-icon", { name: "navigation-close-small", margin: "none", color: "currentColor", size: "xx-small" }), hAsync("duet-visually-hidden", null, text.closeLabel))), hAsync("div", { class: "duet-date-dialog-header" }, hAsync("div", { class: "duet-date-dialog-dropdowns" }, hAsync("duet-visually-hidden", null, hAsync("h2", { id: this.dialogLabelId, "aria-live": "polite", "aria-atomic": "true" }, text.monthLabels[focusedMonth], " ", this.focusedDay.getFullYear())), hAsync("duet-visually-hidden", null, hAsync("label", { htmlFor: this.monthSelectId }, text.monthSelectLabel)), hAsync("div", { class: "duet-date-dialog-select" }, hAsync("select", { id: this.monthSelectId, class: "duet-date-month-select", ref: element => (this.monthSelectNode = element), onChange: this.handleMonthSelect }, text.monthLabels.map((month, i) => (hAsync("option", { key: month, value: i, selected: i === focusedMonth, disabled: !inRange(new Date(focusedYear, i, 1), minDate ? startOfMonth(minDate) : null, maxDate ? endOfMonth(maxDate) : null) }, month)))), hAsync("div", { class: "duet-date-dialog-select-label", "aria-hidden": "true" }, hAsync("span", null, text.monthLabelsShort[focusedMonth]), hAsync("duet-icon", { name: "action-arrow-down-small", color: "currentColor", margin: "none", size: "xxx-small" }))), hAsync("duet-visually-hidden", null, hAsync("label", { htmlFor: this.yearSelectId }, text.yearSelectLabel)), hAsync("div", { class: "duet-date-dialog-select" }, hAsync("select", { id: this.yearSelectId, class: "duet-date-year-select", onChange: this.handleYearSelect }, range(minYear, maxYear).map(year => (hAsync("option", { key: year, selected: year === focusedYear }, year)))), hAsync("div", { class: "duet-date-dialog-select-label", "aria-hidden": "true" }, hAsync("span", null, this.focusedDay.getFullYear()), hAsync("duet-icon", { name: "action-arrow-down-small", color: "currentColor", margin: "none", size: "xxx-small" })))), hAsync("div", { class: "duet-date-dialog-buttons" }, hAsync("duet-action-button", { class: "duet-date-dialog-prev", onClick: this.handlePreviousMonthClick, disabled: prevMonthDisabled, "icon-name": "action-arrow-left-small" }, text.prevMonthLabel), hAsync("duet-action-button", { class: "duet-date-dialog-next", onClick: this.handleNextMonthClick, disabled: nextMonthDisabled, "icon-name": "action-arrow-right-small" }, text.nextMonthLabel))), hAsync(DatePickerMonth, { selectedDate: valueAsDate, focusedDate: this.focusedDay, onDateSelect: this.handleDaySelect, onKeyboardNavigation: this.handleKeyboardNavigation, labelledById: this.dialogLabelId, language: this.language, theme: this.theme, min: minDate, max: maxDate, focusedDayRef: element => (this.focusedDayNode = element), onFocusEnter: this.enableActiveFocus, onFocusExit: this.disableActiveFocus })), hAsync(FocusGuard, { moveFocusTo: this.closeButtonNode }))));
8994
9206
  }
8995
9207
  get element() { return getElement(this); }
8996
9208
  static get watchers() { return {
@@ -9091,411 +9303,232 @@ class DuetDivider {
9091
9303
  }; }
9092
9304
  }
9093
9305
 
9094
- const debounce = (func, timeout = 50) => {
9095
- let timer;
9096
- return (...args) => {
9097
- clearTimeout(timer);
9098
- timer = setTimeout(() => {
9099
- func.apply(undefined, args);
9100
- }, timeout);
9101
- };
9306
+ //simple functional component that renders the data in the table
9307
+ const TableData = ({ data, groupId, alignment }, _children) => {
9308
+ const classNames = `duet-editable-table duet-editable-table-content-${groupId}`;
9309
+ if (typeof data === "string") {
9310
+ return hAsync("td", { innerHTML: data, class: classNames, part: `${groupId}content`, style: { verticalAlign: alignment } });
9311
+ }
9312
+ else {
9313
+ return (hAsync("td", { class: classNames, part: `${groupId}content`, style: { verticalAlign: alignment } }, data));
9314
+ }
9102
9315
  };
9103
9316
 
9104
- /**
9105
- * Produces a function which uses template strings to do simple interpolation from objects.
9106
- *
9107
- * Usage:
9108
- * var makeMeKing = generateTemplateFn('${name} is now the king of ${country}!');
9109
- *
9110
- * console.log(makeMeKing({ name: 'Bryan', country: 'Scotland'}));
9111
- * // Logs 'Bryan is now the king of Scotland!'
9112
- */
9113
- const generateTemplateFn = (function () {
9114
- const cache = {};
9115
- function generateTemplate(template) {
9116
- if (typeof template !== "string") {
9117
- template = template.outerHTML;
9118
- }
9119
- let fn = cache[template];
9120
- if (!fn) {
9121
- // Replace ${expressions} (etc) with ${map.expressions}.
9122
- const sanitized = template
9123
- .replace(/\$\{([\s]*[^;\s\{]+[\s]*)\}/g, function (_, match) {
9124
- return `\$\{map.${match.trim()}\}`;
9125
- })
9126
- // Afterwards, replace anything that's not ${map.expressions}' (etc) with a blank string.
9127
- .replace(/(\$\{(?!map\.)[^}]+\})/g, "");
9128
- fn = Function("map", `return \`${sanitized}\``);
9129
- }
9130
- return fn;
9131
- }
9132
- return generateTemplate;
9133
- })();
9134
-
9135
- const duetEditableTableCss = "/*!@duet-editable-table*/duet-editable-table.sc-duet-editable-table{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@.duet-editable-table-header tr .duet-editable-table-header-hidden*/.duet-editable-table-header.sc-duet-editable-table tr.sc-duet-editable-table .duet-editable-table-header-hidden.sc-duet-editable-table{padding:0 !important;font-size:0;border-bottom:0}";
9317
+ const duetEditableTableCss = ".sc-duet-editable-table-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.duet-editable-table-actions-menu.sc-duet-editable-table{position:relative;padding:0 !important;margin:0}.duet-editable-table-actions-menu-button.sc-duet-editable-table{position:relative;right:-16px;float:right;padding:0}.duet-editable-table-actions-menu-icon.sc-duet-editable-table .duet-icon.sc-duet-editable-table{max-width:16px;max-height:16px}.duet-editable-table-row.duet-table-action-row.sc-duet-editable-table .duet-text-right.sc-duet-editable-table{text-align:right}.duet-editable-table-header.sc-duet-editable-table tr.sc-duet-editable-table .duet-editable-table-header-hidden.sc-duet-editable-table{padding:0 !important;font-size:0;border-bottom:0}";
9136
9318
 
9137
9319
  class DuetEditableTable {
9138
9320
  constructor(hostRef) {
9139
9321
  registerInstance(this, hostRef);
9140
- this.template = undefined;
9322
+ this.duetTableToggle = createEvent$2(this, "duetTableToggle", 7);
9323
+ this.duetMenuClick = createEvent$2(this, "duetMenuClick", 7);
9141
9324
  /**
9142
- * State() variables
9143
- * @internal
9325
+ * Duet-table: margin of the component.
9144
9326
  */
9145
- this.tick = Date.now();
9327
+ this.margin = "auto";
9146
9328
  /**
9147
- * Map of items that contain list of things.
9329
+ * Duet-table: Style variation of the table.
9148
9330
  */
9149
- this.items = new Map();
9331
+ this.variation = "striped";
9150
9332
  /**
9151
- * Key used to set vertical alignment of action buttons
9333
+ * Duet-table: Controls whether the table has a sticky header.
9334
+ * Sticky headers are not compatible with breakpoint="none-scrollable".
9152
9335
  */
9153
- this.alignment = "middle";
9336
+ this.sticky = false;
9154
9337
  /**
9155
- * Array of internationalized defaults for the default groups labels.
9338
+ * Duet-table: Adjust the distance from top of the viewport (in pixels) when the
9339
+ * table header becomes sticky.
9156
9340
  */
9157
- this.groupsLabelDefaults = {
9158
- fi: "Kaikki",
9159
- en: "All items",
9160
- sv: "Alla objekt",
9161
- };
9341
+ this.stickyDistance = "with-links";
9162
9342
  /**
9163
- * Array of internationalized defaults for the default action labels.
9343
+ * Duet-table: By default the table is responsive - it will be flattened at narrow viewport widths.
9344
+ * This prop controls the breakpoint at which the table should be rendered as a _regular_ table.
9345
+ * Set to "none" to disable the responsive functionality.
9346
+ * Set to "none-scrollable" to disable responsive functionality _and_ allow horizontal scrolling -
9347
+ * this is useful for comparison tables where it's important to maintain column and row layout.
9164
9348
  */
9165
- this.actionLabelDefaults = {
9166
- fi: "Toiminnot",
9167
- en: "Actions",
9168
- sv: "Handlingar",
9169
- };
9349
+ this.breakpoint = "small";
9170
9350
  /**
9171
- * Array of group names that you want the editable table to display (can be used to hide or show groups depending on conditions).
9172
- * @default { id: "all", label: this.groupsLabelDefaults, actionLabel: this.actionLabelDefaults }.
9173
- * @example [{ id: "success", label: {fi: "Onnistunut", en: "Success", sv: "Alt klart", }}].
9351
+ * Define actions for all items in a table
9352
+ * An alternative to inline HTML table.
9353
+ * required for Sortable tables
9354
+ * @default undefined
9174
9355
  */
9175
- this.groups = [
9176
- { id: "all", label: this.groupsLabelDefaults, actionLabel: this.actionLabelDefaults },
9177
- ];
9356
+ this.actions = undefined;
9178
9357
  /**
9179
- * Array of actions that are mapped via the map variable to the various groups defined in group.
9358
+ * Define columns for a table
9359
+ * An alternative to inline HTML table.
9360
+ * required for Sortable tables
9180
9361
  * @default undefined
9181
- * @example [{
9182
- variation: "default",
9183
- icon: "action-edit-2",
9184
- id: "edit",
9185
- map: ["success"],
9186
- label: {
9187
- fi: " Label",
9188
- en: " Label",
9189
- sv: " Label",
9190
- }
9191
- }]
9192
9362
  */
9193
- this.actions = undefined;
9363
+ this.columns = undefined;
9194
9364
  /**
9195
- * Shows or hides the table labels.
9365
+ * Define rows for a table
9366
+ * An alternative to inline HTML table.
9367
+ * required for Sortable tables
9368
+ * @default undefined
9196
9369
  */
9197
- this.hideGroups = false;
9370
+ this.rows = undefined;
9198
9371
  /**
9199
- * Exposes the aria role for optimizing accessibility.
9372
+ * Controls whether the table is sortable by headers
9200
9373
  */
9201
- this.accessibleRole = undefined;
9374
+ this.sortable = false;
9375
+ /**
9376
+ * Optional id that get passed to the table and used to setup ::parts
9377
+ */
9378
+ this.groupId = "";
9202
9379
  /**
9203
9380
  * Theme of the table.
9204
9381
  */
9205
9382
  this.theme = "";
9206
9383
  /**
9207
- * Private methods.
9384
+ * Exposes the aria role for optimizing accessibility.
9208
9385
  */
9209
- this.kick = debounce(() => {
9210
- this.tick = Date.now();
9211
- }, 100); // will trigger re-render
9386
+ this.accessibleRole = undefined;
9387
+ this.sortableDefaultLabel = {
9388
+ fi: "Järjestä",
9389
+ en: "Click to sort",
9390
+ sv: "Klicka för att sortera",
9391
+ };
9392
+ this.actionColumnLabel = {
9393
+ en: "Actions for rows",
9394
+ fi: "Toiminnot rivillä",
9395
+ sv: "Åtgärder för rader",
9396
+ };
9212
9397
  /**
9213
- * If a user defines a template section within editable table, try to read an use it.
9398
+ * Private methods.
9214
9399
  */
9215
- this.getTemplate = () => {
9216
- const templateDom = this.element.getElementsByTagName("template");
9217
- if (templateDom === null || templateDom === void 0 ? void 0 : templateDom.length) {
9218
- const templateString = templateDom[0].content.firstElementChild.outerHTML;
9219
- return generateTemplateFn(templateString);
9220
- }
9221
- else {
9222
- return false;
9223
- }
9224
- };
9225
- this.getItemData = (data) => {
9226
- const { item, group, uid } = data;
9227
- if (this.template) {
9228
- return {
9229
- group,
9230
- uid,
9231
- item: this.template(item),
9232
- };
9233
- }
9234
- return { item, group, uid };
9400
+ this.toggleColumn = (column, e) => {
9401
+ e.preventDefault();
9402
+ const { sort_order, direction, index, key } = column;
9403
+ this.duetTableToggle.emit({
9404
+ sort_order,
9405
+ index,
9406
+ direction,
9407
+ key,
9408
+ component: "duet-editable-table",
9409
+ originalEvent: e,
9410
+ });
9235
9411
  };
9236
- this.filterMap = needle => {
9237
- if (needle === "all") {
9238
- return Array.from(this.items);
9412
+ this.handleKeyDown = (column, e) => {
9413
+ if (isKeyboardClick(e)) {
9414
+ this.toggleColumn(column, e);
9239
9415
  }
9240
- return Array.from(this.items).filter(item => needle === item[1].group);
9241
9416
  };
9242
9417
  }
9243
9418
  /**
9244
9419
  * Component lifecycle events.
9245
9420
  */
9246
9421
  componentWillLoad() {
9247
- // look for a <template> region in the duet-editable-table
9248
- this.template = this.getTemplate();
9249
- // take care of the case where groups and actions are defined as html properties instead of javascript objects
9250
- if (typeof this.groups === "string") {
9251
- this.internalGroupArray = sanitizeString(this.groups);
9252
- }
9253
- else {
9254
- this.internalGroupArray = this.groups;
9255
- }
9256
- if (typeof this.actions === "string") {
9257
- this.internalActionsArray = sanitizeString(this.actions);
9258
- }
9259
- else {
9260
- this.internalActionsArray = this.actions;
9261
- }
9262
9422
  inheritGlobalTheme(this);
9263
9423
  }
9264
- /**
9265
- * Method to force an update of a tabular data array.
9266
- * when called the method will rerender the entire tabular structure.
9267
- */
9268
- async updateTable(passedItems = undefined) {
9269
- this.items = new Map(passedItems || this.items);
9270
- this.kick();
9271
- }
9272
- render() {
9273
- return (hAsync(Host, { class: {
9274
- "duet-theme-turva": this.theme === "turva",
9275
- } }, this.internalGroupArray.map(group => {
9276
- const currentGroup = this.filterMap(group.id);
9277
- if (!currentGroup.length) {
9278
- return;
9424
+ createLabel(column) {
9425
+ const { sort_order, direction, index, label } = column;
9426
+ const i18nLabel = getLocaleString(label);
9427
+ if (!this.sortable) {
9428
+ return i18nLabel;
9429
+ }
9430
+ const getButtonIcon = () => {
9431
+ // "action-subtract-small" https://cdn.duetds.com/api/icons/2.2.12/lib/assets/action-subtract-small.svg
9432
+ // "action-arrow-down-small" https://cdn.duetds.com/api/icons/2.2.12/lib/assets/action-arrow-down-small.svg
9433
+ // "action-arrow-up-small" https://cdn.duetds.com/api/icons/2.2.12/lib/assets/action-arrow-up-small.svg
9434
+ if (!!sort_order && direction === 1) {
9435
+ return "action-arrow-down-small";
9279
9436
  }
9280
- return (hAsync("duet-table", { variation: "plain", breakpoint: "none", role: "", margin: this.hideGroups ? "none" : "auto" }, hAsync("table", { class: "duet-editable-table", "aria-role": this.accessibleRole }, hAsync("thead", { class: "duet-editable-table-header" }, hAsync("tr", null, hAsync("th", { class: {
9281
- "duet-editable-table-header-hidden": this.hideGroups,
9282
- } }, !this.hideGroups ? (getLocaleString(group.label)) : (hAsync("duet-visually-hidden", null, getLocaleString(group.label)))), hAsync("th", { class: {
9283
- "duet-editable-table-header-hidden": this.hideGroups,
9284
- } }, hAsync("duet-visually-hidden", null, group.actionLabel
9285
- ? getLocaleString(group.actionLabel)
9286
- : getLocaleString(this.actionLabelDefaults))))), hAsync("tbody", null, currentGroup.map(dataAsArray => {
9287
- const [key, value] = dataAsArray;
9288
- return (hAsync("duet-editable-table-item", { theme: this.theme, keyName: key, data: this.getItemData(value), groupId: group.id, part: group.id, alignment: this.alignment, actions: this.internalActionsArray }));
9289
- })))));
9290
- })));
9291
- }
9292
- get element() { return getElement(this); }
9293
- static get style() { return duetEditableTableCss; }
9294
- static get cmpMeta() { return {
9295
- "$flags$": 9,
9296
- "$tagName$": "duet-editable-table",
9297
- "$members$": {
9298
- "items": [1040],
9299
- "alignment": [1],
9300
- "groupsLabelDefaults": [16],
9301
- "actionLabelDefaults": [16],
9302
- "groups": [1],
9303
- "actions": [1],
9304
- "hideGroups": [4, "hide-table-labels"],
9305
- "accessibleRole": [1, "accessible-role"],
9306
- "theme": [1025],
9307
- "tick": [32],
9308
- "updateTable": [64]
9309
- },
9310
- "$listeners$": undefined,
9311
- "$lazyBundleId$": "-",
9312
- "$attrsToReflect$": []
9313
- }; }
9314
- }
9315
-
9316
- const duetEditableTableButtonCss = "*.sc-duet-editable-table-button,*.sc-duet-editable-table-button::after,*.sc-duet-editable-table-button::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-editable-table-button-h button.sc-duet-editable-table-button{display:flex;align-content:space-between;justify-content:center;min-width:32px;max-width:32px;height:100%;min-height:32px;max-height:32px;padding:0;margin:0;cursor:pointer !important;background-color:transparent;border:1px solid;border-radius:50%}.sc-duet-editable-table-button-h button.sc-duet-editable-table-button duet-icon.sc-duet-editable-table-button{align-self:center}";
9317
-
9318
- class DuetEditableTableButton {
9319
- constructor(hostRef) {
9320
- registerInstance(this, hostRef);
9321
- this.duetEditableItemAction = createEvent$2(this, "duetEditableItemAction", 7);
9322
- this.isHovering = false;
9323
- /**
9324
- * Theme of the empty state component.
9325
- */
9326
- this.theme = undefined;
9327
- /**
9328
- * action items passed from host component
9329
- * @internal
9330
- */
9331
- this.actions = undefined;
9332
- /**
9333
- * uid that gets passed along when the action is emitted
9334
- * @internal
9335
- */
9336
- this.uid = "";
9337
- /**
9338
- * group associated with action
9339
- * @internal
9340
- */
9341
- this.group = "";
9342
- /**
9343
- * key of the item in the map
9344
- * @internal
9345
- */
9346
- this.keyName = "";
9347
- this.onMouseEnter = () => {
9348
- this.isHovering = true;
9349
- };
9350
- this.onMouseLeave = () => {
9351
- this.isHovering = false;
9352
- };
9353
- this.getColours = (byName = false) => {
9354
- let colorHover = this.actions.color_hover;
9355
- let colorBlur = this.actions.color;
9356
- if (byName) {
9357
- colorHover = getColorByName(this.actions.color_hover, this.theme);
9358
- colorBlur = getColorByName(this.actions.color, this.theme);
9359
- }
9360
- return this.isHovering ? colorHover : colorBlur;
9437
+ else if (!!sort_order && direction === -1) {
9438
+ return "action-arrow-up-small";
9439
+ }
9440
+ return "action-subtract-small";
9361
9441
  };
9362
- }
9363
- /**
9364
- /**
9365
- * Component lifecycle events.
9366
- */
9367
- componentWillLoad() {
9368
- inheritGlobalTheme(this);
9369
- }
9370
- /**
9371
- /**
9372
- * private functions
9373
- */
9374
- emitActionEvent(ev) {
9375
- this.duetEditableItemAction.emit({
9376
- originalEvent: ev,
9377
- uid: this.uid,
9378
- group: this.group,
9379
- action: this.actions.id,
9380
- keyName: this.keyName,
9381
- component: "duet-editable-table-item",
9442
+ return (hAsync("span", { class: "duet-table-label", "data-index": index }, hAsync("duet-button", { size: "small", icon: getButtonIcon(), "icon-size": "medium-small", "accessible-label": getLocaleString(this.sortableDefaultLabel), variation: "plain", margin: "none", "icon-right": true, onClick: event => this.toggleColumn(column, event), onKeyDown: event => this.handleKeyDown(column, event) }, i18nLabel)));
9443
+ }
9444
+ getSortedColumns() {
9445
+ //create a new array from sort instead of mutating original
9446
+ return [...this.columns].sort(fieldSorter(["index"]));
9447
+ }
9448
+ getRowSortOrder() {
9449
+ //create a new array from sort instead of mutating original
9450
+ const fields = [...this.columns].sort(fieldSorter(["sort_order"]));
9451
+ //return only key from objects that have sort_order
9452
+ return fields
9453
+ .filter(column => column.sort_order)
9454
+ .map(column => {
9455
+ // add - in-front of descending direction (required by field-sorter)
9456
+ return column.direction === -1 ? `-${column.key}` : column.key;
9382
9457
  });
9383
9458
  }
9384
- /**
9385
- * render() function
9386
- * Always the last one in the class.
9387
- */
9388
- render() {
9389
- return (hAsync("button", { style: {
9390
- "border-color": this.getColours(true),
9391
- }, onMouseEnter: this.onMouseEnter, onMouseLeave: this.onMouseLeave, role: "menuitem", class: "duet-editable-table-actions-items-button", "aria-label": this.actions.label ? getLocaleString(this.actions.label) : undefined, onClick: ev => this.emitActionEvent(ev) }, hAsync("duet-icon", { class: "duet-editable-table-actions-items-icon", size: "x-small", name: this.actions.icon, color: this.getColours(), margin: "none" })));
9392
- }
9393
- get el() { return getElement(this); }
9394
- static get style() { return duetEditableTableButtonCss; }
9395
- static get cmpMeta() { return {
9396
- "$flags$": 2,
9397
- "$tagName$": "duet-editable-table-button",
9398
- "$members$": {
9399
- "theme": [1025],
9400
- "actions": [16],
9401
- "uid": [1],
9402
- "group": [1],
9403
- "keyName": [1, "key-name"],
9404
- "isHovering": [32]
9405
- },
9406
- "$listeners$": undefined,
9407
- "$lazyBundleId$": "-",
9408
- "$attrsToReflect$": []
9409
- }; }
9410
- }
9411
-
9412
- //simple functional component that renders the data in the table
9413
- const TableData = ({ data, groupId, alignment }, _children) => {
9414
- if (typeof data === "string") {
9415
- return (hAsync("td", { innerHTML: data, class: "duet-editable-table-content", part: `${groupId}content`, style: { verticalAlign: alignment } }));
9416
- }
9417
- else {
9418
- return (hAsync("td", { class: "duet-editable-table-content", part: `${groupId}content`, style: { verticalAlign: alignment } }, data));
9419
- }
9420
- };
9421
-
9422
- const duetEditableTableItemCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-editable-table-item,*.sc-duet-editable-table-item::after,*.sc-duet-editable-table-item::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-editable-table-item-h{display:table-row;height:32px}/*!@.duet-editable-table-content, .duet-editable-table-actions*/.duet-editable-table-content.sc-duet-editable-table-item,.duet-editable-table-actions.sc-duet-editable-table-item{height:32px;padding:12px 0;vertical-align:middle;break-word:break-all;border-bottom:1px solid #e1e3e6}/*!@.duet-editable-table-actions-items*/.duet-editable-table-actions-items.sc-duet-editable-table-item{display:flex;justify-content:flex-end}/*!@.duet-editable-table-actions-items duet-editable-table-button*/.duet-editable-table-actions-items.sc-duet-editable-table-item duet-editable-table-button.sc-duet-editable-table-item{padding-left:8px}/*!@.duet-editable-table .editable-item-small*/.duet-editable-table.sc-duet-editable-table-item .editable-item-small.sc-duet-editable-table-item{font-size:0.75rem;font-weight:400}";
9423
-
9424
- class DuetEditableTableItem {
9425
- constructor(hostRef) {
9426
- registerInstance(this, hostRef);
9427
- this.duetEditableItemAction = createEvent$2(this, "duetEditableItemAction", 7);
9428
- this.isHovering = false;
9429
- /**
9430
- * Theme of the empty state component.
9431
- */
9432
- this.theme = "";
9433
- /**
9434
- * Actions that can be performed on the element
9435
- */
9436
- this.actions = undefined;
9437
- /**
9438
- * GroupId used to pierce the shadowdom - gets concatenated with "content & actions" and used as part="groupIDcontent/actions" to pierce the content/Action item
9439
- * @internal
9440
- */
9441
- this.groupId = "";
9442
- /**
9443
- * Key used to set vertical alignment of action buttons
9444
- */
9445
- this.alignment = "middle";
9446
- /**
9447
- * Key used to identify item, when running actions
9448
- */
9449
- this.keyName = "";
9450
- /**
9451
- * Object of data itemsused to render the entire row
9452
- */
9453
- this.data = undefined;
9459
+ renderTableHeader() {
9460
+ if (!this.columns) {
9461
+ return;
9462
+ }
9463
+ const sortedColumns = this.getSortedColumns();
9464
+ return (hAsync("tr", { class: {
9465
+ "duet-table-action-header": !!this.actions,
9466
+ } }, sortedColumns.map(column => {
9467
+ if (column.display !== false) {
9468
+ return hAsync("th", { scope: "col" }, this.createLabel(column));
9469
+ }
9470
+ }), this.actions && (hAsync("th", { scope: "col", class: "duet-table-action-header-heading" }, this.actions && hAsync("duet-visually-hidden", null, getLocaleString(this.actionColumnLabel))))));
9454
9471
  }
9455
- watchPropHandler(_newValue, _oldValue) {
9456
- // console.log("The new value of activated is: ", _newValue)
9472
+ renderActions(rowItem, index) {
9473
+ // escape early
9474
+ if (!this.actions) {
9475
+ return;
9476
+ }
9477
+ // iterate through actions and add them in the sidebar
9478
+ return (hAsync("td", { class: "duet-text-right" }, this.actions.map(actionItem => {
9479
+ return (hAsync("duet-action-button", { actionMeta: Object.assign({}, (rowItem === null || rowItem === void 0 ? void 0 : rowItem.meta) || {}, { index }), actionId: (rowItem === null || rowItem === void 0 ? void 0 : rowItem.uid) || (rowItem === null || rowItem === void 0 ? void 0 : rowItem.id) || null, actionName: actionItem.name, theme: this.theme, iconName: actionItem.icon, iconColor: actionItem.color, iconSize: actionItem.size, background: actionItem.background }));
9480
+ })));
9457
9481
  }
9458
- /**
9459
- /**
9460
- * Component lifecycle events.
9461
- */
9462
- componentWillLoad() {
9463
- inheritGlobalTheme(this);
9482
+ renderTableBody() {
9483
+ const columns = this.getSortedColumns();
9484
+ const rowSortOrder = this.getRowSortOrder();
9485
+ const sortedRows = [...this.rows].sort(fieldSorter(rowSortOrder));
9486
+ // return a tbody with rows for each item in sortedRows
9487
+ return sortedRows.map((row, index) => (hAsync("tr", { class: {
9488
+ "duet-table-action-row": !!this.actions,
9489
+ "duet-editable-table-row": true,
9490
+ [`duet-editable-table-row-${this.groupId}`]: true,
9491
+ }, "data-meta": JSON.stringify(row.meta) }, columns.map(column => {
9492
+ //if we don't have any data for this column, try getting an item instead (for backwards compatibility
9493
+ const value = row[column.key] ? row[column.key] : row.item;
9494
+ if (column.display !== false) {
9495
+ return hAsync(TableData, { data: value, groupId: this.groupId });
9496
+ }
9497
+ }), this.actions && this.renderActions(row, index))));
9464
9498
  }
9465
9499
  /**
9466
- /**
9467
- * private functions
9468
- */
9469
- /**
9470
- * render() function
9471
- * Always the last one in the class.
9500
+ * Render Methods
9472
9501
  */
9473
9502
  render() {
9474
- return (hAsync(Host, { role: "row" }, hAsync(TableData, { data: this.data.item, alignment: this.alignment, groupId: this.groupId }), hAsync("td", { class: "duet-editable-table-actions", style: { verticalAlign: this.alignment } }, hAsync("div", { class: "duet-editable-table-actions-items", part: `${this.groupId}actions` }, this.actions.map(result => {
9475
- const { map = undefined } = result;
9476
- // if map has been specified, only show the current action if groupID matches the map array
9477
- if (map && !map.includes(this.groupId)) {
9478
- return;
9479
- }
9480
- return (hAsync("duet-editable-table-button", { keyName: this.keyName, group: this.data.group, uid: this.data.uid, actions: result, theme: this.theme }));
9481
- })))));
9503
+ return (hAsync(Host, { class: {
9504
+ [`duet-editable-table-${this.variation}`]: true,
9505
+ [`duet-editable-table-${this.theme}`]: true,
9506
+ // sticky only valid when in regular table layout
9507
+ "duet-editable-table-scrollable": this.breakpoint === "none-scrollable",
9508
+ "duet-editable-table-sortable": this.sortable,
9509
+ "duet-editable-table-actions": !!this.actions,
9510
+ "duet-m-0": this.margin === "none",
9511
+ "duet-theme-turva": this.theme === "turva",
9512
+ } }, hAsync("duet-table", { sticky: this.sticky, stickyDistance: this.stickyDistance, margin: this.margin, theme: this.theme, variation: this.variation, breakpoint: this.breakpoint }, hAsync("table", { role: this.accessibleRole }, hAsync("caption", null, hAsync("slot", { name: "tcaption" })), hAsync("thead", null, hAsync("tr", null, hAsync("td", { class: "duet-editable-table-actions-menu", colSpan: 99 }, hAsync("slot", { name: "thead-first" }))), this.renderTableHeader(), hAsync("tr", null, hAsync("td", { class: "duet-editable-table-actions-menu", colSpan: 99 }, hAsync("slot", { name: "thead-last" })))), hAsync("tbody", null, this.renderTableBody()), hAsync("tfoot", null, hAsync("tr", null, hAsync("th", { class: "duet-editable-table-footer-menu", colSpan: 99 }, hAsync("slot", { name: "tfoot" }))))))));
9482
9513
  }
9483
- get el() { return getElement(this); }
9484
- static get watchers() { return {
9485
- "data": ["watchPropHandler"]
9486
- }; }
9487
- static get style() { return duetEditableTableItemCss; }
9514
+ get element() { return getElement(this); }
9515
+ static get style() { return duetEditableTableCss; }
9488
9516
  static get cmpMeta() { return {
9489
- "$flags$": 9,
9490
- "$tagName$": "duet-editable-table-item",
9517
+ "$flags$": 6,
9518
+ "$tagName$": "duet-editable-table",
9491
9519
  "$members$": {
9492
- "theme": [1025],
9493
- "actions": [16],
9520
+ "margin": [1],
9521
+ "variation": [1],
9522
+ "sticky": [4],
9523
+ "stickyDistance": [1, "sticky-distance"],
9524
+ "breakpoint": [1],
9525
+ "actions": [1040],
9526
+ "columns": [1040],
9527
+ "rows": [1040],
9528
+ "sortable": [4],
9494
9529
  "groupId": [1, "group-id"],
9495
- "alignment": [1],
9496
- "keyName": [1, "key-name"],
9497
- "data": [1040],
9498
- "isHovering": [32]
9530
+ "theme": [1025],
9531
+ "accessibleRole": [1, "accessible-role"]
9499
9532
  },
9500
9533
  "$listeners$": undefined,
9501
9534
  "$lazyBundleId$": "-",
@@ -13035,7 +13068,7 @@ const shouldDisplayNavigation = (visibleItems, total, take) => {
13035
13068
  return true;
13036
13069
  };
13037
13070
 
13038
- const duetPaginationCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-pagination,*.sc-duet-pagination::after,*.sc-duet-pagination::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-pagination-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:inline-block;margin:0 auto}/*!@.duet-pagination-nav*/.duet-pagination-nav.sc-duet-pagination{position:relative}/*!@.duet-pagination, .duet-pagination li*/.duet-pagination.sc-duet-pagination,.duet-pagination.sc-duet-pagination li.sc-duet-pagination{display:flex;flex-wrap:wrap;gap:0.1rem;align-items:center}/*!@.duet-pagination-item-is-active .duet-pagination-page-number*/.duet-pagination-item-is-active.sc-duet-pagination .duet-pagination-page-number.sc-duet-pagination{border-bottom-color:inherit;border-bottom-style:solid;border-bottom-width:2px}/*!@.duet-pagination duet-button*/.duet-pagination.sc-duet-pagination duet-button.sc-duet-pagination{width:30px;min-width:36px;font-weight:600;text-decoration:none;border-left-width:0}/*!@.duet-pagination-overlay*/.duet-pagination-overlay.sc-duet-pagination{position:absolute;top:1rem;z-index:300;width:100%;text-align:center}/*!@.duet-pagination.duet-pagination-is-dimmed*/.duet-pagination.duet-pagination-is-dimmed.sc-duet-pagination{opacity:0.5}/*!@.duet-pagination-page-button*/.duet-pagination-page-button.sc-duet-pagination{white-space:nowrap}/*!@.duet-pagination-page-button button*/.duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;min-height:auto !important;padding:0 !important;margin:0 0 0 8px !important;color:#00294d;cursor:pointer;background:#f5f8fa;border-radius:50%;transition:background-color 300ms ease !important}/*!@.duet-theme-turva .duet-pagination-page-button button*/.duet-theme-turva.sc-duet-pagination .duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination{color:#171c3a;background:#f5f5f7}/*!@.duet-pagination-page-button button duet-icon*/.duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination duet-icon.sc-duet-pagination{display:block}@media (max-width: 35.9375em){/*!@.duet-pagination-page-button button*/.duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination{width:40px;height:40px}}/*!@.duet-pagination-page-button button:not(:disabled):hover*/.duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination:not(:disabled):hover{background:#e9ecee !important}/*!@.duet-theme-turva .duet-pagination-page-button button:not(:disabled):hover*/.duet-theme-turva.sc-duet-pagination .duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination:not(:disabled):hover{background:#e9e9eb !important}/*!@.duet-pagination-page-button button:focus*/.duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination:focus{outline:0;box-shadow:0 0 0 2px #0077b3}/*!@.duet-theme-turva .duet-pagination-page-button button:focus*/.duet-theme-turva.sc-duet-pagination .duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination:focus{box-shadow:0 0 0 2px #171c3a}/*!@.duet-pagination-page-button button:active:focus*/.duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination:active:focus{background:#dddfe1;box-shadow:none}/*!@.duet-theme-turva .duet-pagination-page-button button:active:focus*/.duet-theme-turva.sc-duet-pagination .duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination:active:focus{background:#ddddde}/*!@.duet-pagination-page-button button:disabled*/.duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination:disabled{color:#909599;cursor:default;background:#f5f8fa;opacity:0.75}/*!@.duet-theme-turva .duet-pagination-page-button button:disabled*/.duet-theme-turva.sc-duet-pagination .duet-pagination-page-button.sc-duet-pagination button.sc-duet-pagination:disabled{color:#747475;background:#f5f5f7}";
13071
+ const duetPaginationCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-pagination,*.sc-duet-pagination::after,*.sc-duet-pagination::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-pagination-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:inline-block;margin:0 auto}/*!@.duet-pagination-nav*/.duet-pagination-nav.sc-duet-pagination{position:relative}/*!@.duet-pagination ::part(button)*/.duet-pagination.sc-duet-pagination .sc-duet-pagination::part(button){border:0}/*!@.duet-pagination, .duet-pagination li*/.duet-pagination.sc-duet-pagination,.duet-pagination.sc-duet-pagination li.sc-duet-pagination{display:flex;flex-wrap:wrap;gap:0.1rem;align-items:center}/*!@.duet-pagination-item-is-active .duet-pagination-page-number*/.duet-pagination-item-is-active.sc-duet-pagination .duet-pagination-page-number.sc-duet-pagination{border-bottom-color:inherit;border-bottom-style:solid;border-bottom-width:2px}/*!@.duet-pagination duet-button*/.duet-pagination.sc-duet-pagination duet-button.sc-duet-pagination{width:30px;min-width:36px;font-weight:600;text-decoration:none;border-left-width:0}/*!@.duet-pagination-overlay*/.duet-pagination-overlay.sc-duet-pagination{position:absolute;top:1rem;z-index:300;width:100%;text-align:center}/*!@.duet-pagination.duet-pagination-is-dimmed*/.duet-pagination.duet-pagination-is-dimmed.sc-duet-pagination{opacity:0.5}";
13039
13072
 
13040
13073
  class DuetPagination {
13041
13074
  constructor(hostRef) {
@@ -13061,10 +13094,14 @@ class DuetPagination {
13061
13094
  * Characters to use for the jump buttons.
13062
13095
  */
13063
13096
  this.jumpString = "...";
13097
+ /**
13098
+ * Variation of the paginator (compact and default supported)
13099
+ */
13100
+ this.variation = "default";
13064
13101
  /**
13065
13102
  * Default pagination labels
13066
13103
  */
13067
- this.ariaLabelsDefaults = {
13104
+ this.accessibleLabelsDefaults = {
13068
13105
  en: {
13069
13106
  next_page: "Next page",
13070
13107
  previous_page: "Previous page",
@@ -13105,7 +13142,7 @@ class DuetPagination {
13105
13142
  /**
13106
13143
  * Default pagination labels
13107
13144
  */
13108
- this.ariaLabels = getLocaleString(this.ariaLabelsDefaults);
13145
+ this.accessibleLabels = getLocaleString(this.accessibleLabelsDefaults);
13109
13146
  /**
13110
13147
  * The size of the take, when paginating.
13111
13148
  */
@@ -13274,29 +13311,35 @@ class DuetPagination {
13274
13311
  "duet-pagination-item-is-active": i === this.current,
13275
13312
  }, role: "menuitem" }, hAsync("duet-button", { class: {
13276
13313
  "duet-pagination-link": true,
13277
- }, color: i !== this.current ? "secondary" : "primary", "data-id": i, "center-text": true, variation: "plain", margin: "none", accessibleLabel: `${this.ariaLabels.go_to} ${i}`, onClick: e => this.pageClickHandler(e) }, hAsync("div", { class: "duet-pagination-page-number", "aria-hidden": true }, i))));
13314
+ }, color: i !== this.current ? "secondary" : "primary", "data-id": i, "center-text": true, variation: "plain", margin: "none", accessibleLabel: `${this.accessibleLabels.go_to} ${i}`, onClick: e => this.pageClickHandler(e) }, hAsync("div", { class: "duet-pagination-page-number", "aria-hidden": true }, i))));
13278
13315
  } while (i < this.visibleItems + this.internalSectionIndex * this.visibleItems);
13279
13316
  return items;
13280
13317
  }
13281
13318
  shouldDisplayNavigation() {
13282
- return shouldDisplayNavigation(this.visibleItems, this.total, this.take);
13319
+ if (this.variation !== "compact") {
13320
+ return shouldDisplayNavigation(this.visibleItems, this.total, this.take);
13321
+ }
13322
+ return false;
13283
13323
  }
13284
13324
  /**
13285
13325
  * render() function
13286
13326
  * Always the last one in the class.
13287
13327
  */
13288
13328
  render() {
13289
- return (hAsync(Host, { onKeyDown: e => this.onKeyboardDown(e) }, hAsync("nav", { role: "navigation", class: "duet-pagination-nav", "aria-labelledby": this.listId, "aria-describedby": this.listId, ref: el => (this.nativeNav = el), "aria-controls": this.ariaControls }, this.numbersStore !== "" && (hAsync("div", { "aria-live": "assertive", "aria-relevant": "text", class: "duet-pagination-overlay", "aria-label": `${this.ariaLabels.jump_to} ${this.numbersStore}`, part: "navigation-overlay" }, hAsync("duet-badge", null, "jump to page : ", this.numbersStore))), hAsync("ol", { id: this.listId, class: {
13329
+ return (hAsync(Host, { onKeyDown: e => this.onKeyboardDown(e) }, hAsync("nav", { role: "navigation", "aria-labelledby": this.listId, "aria-describedby": this.listId, ref: el => (this.nativeNav = el), "aria-controls": this.ariaControls, class: {
13330
+ "duet-pagination-nav": true,
13331
+ [`duet-pagination-variation-${this.variation}`]: true,
13332
+ } }, this.numbersStore !== "" && (hAsync("div", { "aria-live": "assertive", "aria-relevant": "text", class: "duet-pagination-overlay", "aria-label": `${this.accessibleLabels.jump_to} ${this.numbersStore}`, part: "navigation-overlay" }, hAsync("duet-badge", null, "jump to page : ", this.numbersStore))), hAsync("ol", { id: this.listId, class: {
13290
13333
  "duet-pagination": true,
13291
13334
  "duet-pagination-is-dimmed": this.numbersStore !== "",
13292
- }, role: "menubar", "aria-label": this.ariaLabels.pagination_label, "aria-description": this.ariaLabels.description }, hAsync("li", { class: {
13335
+ }, role: "menubar", "aria-label": this.accessibleLabels.pagination_label, "aria-description": this.accessibleLabels.description }, hAsync("li", { class: {
13293
13336
  "duet-pagination-page-button": true,
13294
13337
  "duet-pagination-button-first": true,
13295
- }, role: "menuitem", part: "navigation-arrow" }, hAsync("button", { disabled: this.internalSectionIndex === 0 && this.current <= 1, "data-direction": "back", class: "duet-date-dialog-prev", type: "button", onClick: e => this.onMouseHandler(e, -1), "aria-label": this.ariaLabels.previous_page }, hAsync("duet-icon", { name: "action-arrow-left-small", color: "currentColor", margin: "none", size: "xx-small" }))), this.internalSectionIndex !== 0 && this.shouldDisplayNavigation() && (hAsync(Fragment, null, hAsync("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-jump" }, hAsync("duet-button", { class: "duet-pagination-link", "center-text": "true", variation: "plain", color: "secondary", margin: "none", accessibleLabel: this.ariaLabels.first_page, onClick: e => this.jumpToStart(e) }, hAsync("div", { class: "duet-pagination-page-number" }, "1"))), hAsync("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-section" }, hAsync("duet-button", { class: "duet-pagination-link", "center-text": "true", color: "secondary", variation: "plain", margin: "none", accessibleLabel: this.ariaLabels.prev_section.replace("{0}", `${this.visibleItems}`), onClick: e => this.sectionClickHandler(e, -1) }, hAsync("div", { class: "duet-pagination-page-number", "aria-hidden": "true" }, "..."))))), this.renderPageNumbers(), this.internalSectionIndex !== this.totalPages / this.visibleItems - 1 && this.shouldDisplayNavigation() && (hAsync(Fragment, null, hAsync("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-section" }, hAsync("duet-button", { class: "duet-pagination-link", "center-text": "true", color: "secondary", variation: "plain", margin: "none", accessibleLabel: this.ariaLabels.next_section.replace("{0}", `${this.visibleItems}`), onClick: e => this.sectionClickHandler(e, 1) }, hAsync("div", { class: "duet-pagination-page-number", "aria-hidden": "true" }, "..."))), hAsync("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-jump" }, hAsync("duet-button", { class: "duet-pagination-link", "center-text": "true", color: "secondary", variation: "plain", margin: "none", accessibleLabel: this.ariaLabels.last_page, onClick: e => this.jumpToEnd(e) }, hAsync("div", { class: "duet-pagination-page-number" }, this.totalPages))))), hAsync("li", { class: {
13338
+ }, role: "menuitem", part: "navigation-arrow" }, hAsync("duet-action-button", { disabled: this.internalSectionIndex === 0 && this.current <= 1, "data-direction": "back", onClick: e => this.onMouseHandler(e, -1), "aria-label": this.accessibleLabels.previous_page, "icon-name": "action-arrow-left-small" })), this.internalSectionIndex !== 0 && this.shouldDisplayNavigation() && (hAsync(Fragment, null, hAsync("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-jump" }, hAsync("duet-button", { class: "duet-pagination-link", "center-text": "true", variation: "plain", color: "secondary", margin: "none", accessibleLabel: this.accessibleLabels.first_page, onClick: e => this.jumpToStart(e) }, hAsync("div", { class: "duet-pagination-page-number" }, "1"))), hAsync("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-section" }, hAsync("duet-button", { class: "duet-pagination-link", "center-text": "true", color: "secondary", variation: "plain", margin: "none", accessibleLabel: this.accessibleLabels.prev_section.replace("{0}", `${this.visibleItems}`), onClick: e => this.sectionClickHandler(e, -1) }, hAsync("div", { class: "duet-pagination-page-number", "aria-hidden": "true" }, "..."))))), this.renderPageNumbers(), this.internalSectionIndex !== this.totalPages / this.visibleItems - 1 && this.shouldDisplayNavigation() && (hAsync(Fragment, null, hAsync("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-section" }, hAsync("duet-button", { class: "duet-pagination-link", "center-text": "true", color: "secondary", variation: "plain", margin: "none", accessibleLabel: this.accessibleLabels.next_section.replace("{0}", `${this.visibleItems}`), onClick: e => this.sectionClickHandler(e, 1) }, hAsync("div", { class: "duet-pagination-page-number", "aria-hidden": "true" }, "..."))), hAsync("li", { class: "duet-pagination-item", role: "menuitem", part: "navigation-jump" }, hAsync("duet-button", { class: "duet-pagination-link", "center-text": "true", color: "secondary", variation: "plain", margin: "none", accessibleLabel: this.accessibleLabels.last_page, onClick: e => this.jumpToEnd(e) }, hAsync("div", { class: "duet-pagination-page-number" }, this.totalPages))))), hAsync("li", { class: {
13296
13339
  "duet-pagination-page-button": true,
13297
13340
  "duet-pagination-button-last": true,
13298
- }, role: "menuitem", part: "navigation-arrow" }, hAsync("button", { disabled: this.current === this.totalPages &&
13299
- this.internalSectionIndex === Math.ceil(this.totalPages / this.visibleItems) - 1, class: "duet-date-dialog-next", type: "button", "aria-label": this.ariaLabels.next_page, onClick: e => this.onMouseHandler(e, 1) }, hAsync("duet-icon", { name: "action-arrow-right-small", color: "currentColor", margin: "none", size: "xx-small" })))))));
13341
+ }, role: "menuitem", part: "navigation-arrow" }, hAsync("duet-action-button", { disabled: this.current === this.totalPages &&
13342
+ this.internalSectionIndex === Math.ceil(this.totalPages / this.visibleItems) - 1, class: "duet-date-dialog-next", "aria-label": this.accessibleLabels.next_page, onClick: e => this.onMouseHandler(e, 1), "icon-name": "action-arrow-right-small" }))))));
13300
13343
  }
13301
13344
  get element() { return getElement(this); }
13302
13345
  static get watchers() { return {
@@ -13309,8 +13352,9 @@ class DuetPagination {
13309
13352
  "$members$": {
13310
13353
  "theme": [1025],
13311
13354
  "jumpString": [1, "jump-string"],
13312
- "ariaLabelsDefaults": [16],
13313
- "ariaLabels": [16],
13355
+ "variation": [1],
13356
+ "accessibleLabelsDefaults": [16],
13357
+ "accessibleLabels": [16],
13314
13358
  "take": [1026],
13315
13359
  "visibleItems": [1026, "visible-items"],
13316
13360
  "total": [1026],
@@ -13967,7 +14011,7 @@ class DuetRangeSlider {
13967
14011
  }; }
13968
14012
  }
13969
14013
 
13970
- const duetRangeStepperCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-range-stepper,*.sc-duet-range-stepper::after,*.sc-duet-range-stepper::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-range-stepper-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:inline-block;margin:0 auto}/*!@.duet-range-stepper*/.duet-range-stepper.sc-duet-range-stepper{display:flex;flex-wrap:wrap;gap:0;align-items:baseline;justify-content:center;min-width:30px;min-height:30px;font-weight:600;text-decoration:none;border-left-width:0}/*!@.duet-range-stepper*/.duet-range-stepper.sc-duet-range-stepper{white-space:nowrap}/*!@.duet-range-stepper button*/.duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;min-height:auto !important;padding:0 !important;margin:0 0 0 8px !important;color:#00294d;cursor:pointer;background:#f5f8fa;border-radius:50%;transition:background-color 300ms ease !important}/*!@.duet-theme-turva .duet-range-stepper button*/.duet-theme-turva.sc-duet-range-stepper .duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper{color:#171c3a;background:#f5f5f7}/*!@.duet-range-stepper button duet-icon*/.duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper duet-icon.sc-duet-range-stepper{display:block}@media (max-width: 35.9375em){/*!@.duet-range-stepper button*/.duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper{width:40px;height:40px}}/*!@.duet-range-stepper button:not(:disabled):hover*/.duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper:not(:disabled):hover{background:#e9ecee !important}/*!@.duet-theme-turva .duet-range-stepper button:not(:disabled):hover*/.duet-theme-turva.sc-duet-range-stepper .duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper:not(:disabled):hover{background:#e9e9eb !important}/*!@.duet-range-stepper button:focus*/.duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper:focus{outline:0;box-shadow:0 0 0 2px #0077b3}/*!@.duet-theme-turva .duet-range-stepper button:focus*/.duet-theme-turva.sc-duet-range-stepper .duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper:focus{box-shadow:0 0 0 2px #171c3a}/*!@.duet-range-stepper button:active:focus*/.duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper:active:focus{background:#dddfe1;box-shadow:none}/*!@.duet-theme-turva .duet-range-stepper button:active:focus*/.duet-theme-turva.sc-duet-range-stepper .duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper:active:focus{background:#ddddde}/*!@.duet-range-stepper button:disabled*/.duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper:disabled{color:#909599;cursor:default;background:#f5f8fa;opacity:0.75}/*!@.duet-theme-turva .duet-range-stepper button:disabled*/.duet-theme-turva.sc-duet-range-stepper .duet-range-stepper.sc-duet-range-stepper button.sc-duet-range-stepper:disabled{color:#747475;background:#f5f5f7}";
14014
+ const duetRangeStepperCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-range-stepper,*.sc-duet-range-stepper::after,*.sc-duet-range-stepper::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-range-stepper-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;display:inline-block;margin:0 auto}/*!@.duet-range-stepper*/.duet-range-stepper.sc-duet-range-stepper{display:flex;flex-wrap:wrap;gap:0;align-items:baseline;justify-content:center;min-width:30px;min-height:30px;font-weight:600;text-decoration:none;border-left-width:0}/*!@.duet-range-stepper*/.duet-range-stepper.sc-duet-range-stepper{white-space:nowrap}/*!@.duet-range-stepper .duet-range-step-counter*/.duet-range-stepper.sc-duet-range-stepper .duet-range-step-counter.sc-duet-range-stepper{font-weight:600;color:#00294d}/*!@.duet-range-stepper ::part(button)*/.duet-range-stepper.sc-duet-range-stepper .sc-duet-range-stepper::part(button){border:0}";
13971
14015
 
13972
14016
  class DuetRangeStepper {
13973
14017
  constructor(hostRef) {
@@ -14112,7 +14156,7 @@ class DuetRangeStepper {
14112
14156
  return (hAsync("div", { class: {
14113
14157
  "duet-range-stepper": true,
14114
14158
  "duet-theme-turva": this.theme === "turva",
14115
- }, onKeyDown: e => this.onKeyboardDown(e), "aria-controls": this.ariaControls }, hAsync("span", { class: "duet-range-step-counter", part: "range-numbers" }, this.generateStepSize()), hAsync("button", { class: "duet-range-step-button duet-range-step-minus", type: "button", onClick: e => this.handleClick(e, -1), id: this.leftBn, "aria-label": this.ariaLabels.previous_increment, ref: el => (this.leftBnRef = el), part: "navigation-arrow" }, hAsync("duet-icon", { name: "action-arrow-left-small", color: "currentColor", margin: "none", size: "xx-small" })), hAsync("button", { class: "duet-range-step-button duet-range-step-plus", type: "button", onClick: e => this.handleClick(e, 1), "aria-label": this.ariaLabels.next_increment, id: this.rightBn, ref: el => (this.rightBnRef = el), part: "navigation-arrow" }, hAsync("duet-icon", { name: "action-arrow-right-small", color: "currentColor", margin: "none", size: "xx-small" }))));
14159
+ }, onKeyDown: e => this.onKeyboardDown(e), "aria-controls": this.ariaControls }, hAsync("span", { class: "duet-range-step-counter", part: "range-numbers" }, this.generateStepSize()), hAsync("duet-action-button", { class: "duet-range-step-button duet-range-step-minus", onClick: e => this.handleClick(e, -1), id: this.leftBn, "aria-label": this.ariaLabels.previous_increment, ref: el => (this.leftBnRef = el), part: "navigation-arrow", iconName: "action-arrow-left-small" }), hAsync("duet-action-button", { class: "duet-range-step-button duet-range-step-plus", onClick: e => this.handleClick(e, 1), "aria-label": this.ariaLabels.next_increment, id: this.rightBn, ref: el => (this.rightBnRef = el), part: "navigation-arrow", iconName: "action-arrow-right-small" })));
14116
14160
  }
14117
14161
  get element() { return getElement(this); }
14118
14162
  static get watchers() { return {
@@ -15180,7 +15224,7 @@ class DuetTabGroup {
15180
15224
  }; }
15181
15225
  }
15182
15226
 
15183
- const duetTableCss = "duet-table{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-bottom:20px !important;display:block;font-variant-numeric:tabular-nums}duet-table table,duet-table thead,duet-table tbody,duet-table tfoot,duet-table th,duet-table td,duet-table tr{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}duet-table.duet-m-0{margin:0 !important}duet-table table{width:100%;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;text-align:left;border-spacing:0;border-collapse:separate}duet-table.duet-theme-turva table{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}duet-table td{-webkit-hyphens:auto;hyphens:auto;color:#00294d}duet-table.duet-theme-turva td{color:#171c3a}duet-table th{font-weight:600;line-height:1.25;color:#657787;text-align:left}duet-table.duet-theme-turva th{color:#747475}duet-table tbody th{font-weight:600;color:#00294d}duet-table.duet-theme-turva tbody th{color:#171c3a}.duet-table-flattened table,.duet-table-flattened thead,.duet-table-flattened tbody,.duet-table-flattened tfoot,.duet-table-flattened th,.duet-table-flattened td,.duet-table-flattened tr{display:block}.duet-table-flattened thead tr{position:absolute !important;top:0;width:1px !important;height:1px !important;padding:0 !important;overflow:hidden !important;clip:rect(1px, 1px, 1px, 1px) !important;border:0 !important}.duet-table-flattened td{line-height:1.25}.duet-table-flattened td:not(:last-child){margin-bottom:16px !important}.duet-table-flattened tbody td,.duet-table-flattened tbody th,.duet-table-flattened tfoot td{padding:0 !important;text-align:left !important}.duet-table-flattened tbody th{font-weight:600;line-height:1.25;color:#657787;text-align:left}.duet-table-flattened td[data-heading]::before{margin-bottom:4px !important;display:block;font-size:1rem;font-weight:600;color:#00294d;content:attr(data-heading)}.duet-table-flattened.duet-theme-turva td[data-heading]::before{color:#171c3a}.duet-table-sticky thead th{position:sticky;top:0;background:white}.duet-table-striped td,.duet-table-striped th{padding:20px !important}@media (max-width: 35.9375em){.duet-table-striped td,.duet-table-striped th{padding:20px 12px !important}}.duet-table-striped tbody th{background:white}.duet-table-striped.duet-table-sticky thead th{border-bottom:1px solid #e1e3e6}.duet-table-striped.duet-table-sticky.duet-theme-turva thead th{border-bottom-color:#e4e4e6}.duet-table-striped tbody:not(:first-of-type) th{padding-top:40px !important}.duet-table-striped tbody:only-of-type tr:nth-of-type(odd){background:rgba(0, 80, 128, 0.04)}.duet-table-striped.duet-theme-turva tbody:only-of-type tr:nth-of-type(odd){background:rgba(23, 28, 58, 0.04)}.duet-table-striped tbody:not(:only-of-type) tr:nth-of-type(even){background:rgba(0, 80, 128, 0.04)}.duet-table-striped.duet-theme-turva tbody:not(:only-of-type) tr:nth-of-type(even){background:rgba(23, 28, 58, 0.04)}.duet-table-striped tfoot td{border-top:1px solid #e1e3e6}.duet-table-striped.duet-theme-turva tfoot td{border-top-color:#e4e4e6}.duet-table-striped.duet-table-flattened tbody:not(:first-of-type) th{padding-top:20px !important}.duet-table-striped.duet-table-flattened tr{padding:20px !important}.duet-table-striped.duet-table-flattened tfoot td{border-top:0}.duet-table-striped.duet-table-flattened tfoot tr{border-top:1px solid #e1e3e6}.duet-table-striped.duet-table-flattened.duet-theme-turva tfoot tr{border-top-color:#e4e4e6}.duet-table-fixed th,.duet-table-minimal th,.duet-table-plain th{padding:16px !important;border-bottom:1px solid #657787}.duet-table-fixed th:first-child,.duet-table-minimal th:first-child,.duet-table-plain th:first-child{padding-left:0 !important}.duet-table-fixed th:last-child,.duet-table-minimal th:last-child,.duet-table-plain th:last-child{padding-right:0 !important}.duet-theme-turva.duet-table-fixed th,.duet-theme-turva.duet-table-minimal th,.duet-theme-turva.duet-table-plain th{border-bottom-color:#444445}.duet-table-fixed tbody th,.duet-table-minimal tbody th,.duet-table-plain tbody th{padding-top:40px !important;border-bottom-color:#e1e3e6}.duet-theme-turva.duet-table-fixed tbody th,.duet-theme-turva.duet-table-minimal tbody th,.duet-theme-turva.duet-table-plain tbody th{border-bottom-color:#e4e4e6}.duet-table-fixed td,.duet-table-minimal td,.duet-table-plain td{padding:16px !important}.duet-table-fixed td:first-child,.duet-table-minimal td:first-child,.duet-table-plain td:first-child{padding-left:0 !important}.duet-table-fixed td:last-child,.duet-table-minimal td:last-child,.duet-table-plain td:last-child{padding-right:0 !important}.duet-table-fixed tbody td,.duet-table-minimal tbody td,.duet-table-plain tbody td{border-bottom:1px solid #e1e3e6}.duet-theme-turva.duet-table-fixed tbody td,.duet-theme-turva.duet-table-minimal tbody td,.duet-theme-turva.duet-table-plain tbody td{border-bottom-color:#e4e4e6}.duet-table-flattened.duet-table-fixed tbody:first-of-type th,.duet-table-flattened.duet-table-minimal tbody:first-of-type th,.duet-table-flattened.duet-table-plain tbody:first-of-type th{padding-top:0 !important}.duet-table-flattened.duet-table-fixed td,.duet-table-flattened.duet-table-minimal td,.duet-table-flattened.duet-table-plain td,.duet-table-flattened.duet-table-fixed tbody th,.duet-table-flattened.duet-table-minimal tbody th,.duet-table-flattened.duet-table-plain tbody th{border-bottom:0}.duet-table-flattened.duet-table-fixed tr,.duet-table-flattened.duet-table-minimal tr,.duet-table-flattened.duet-table-plain tr{padding:20px 0 !important}.duet-table-flattened.duet-table-fixed tbody th,.duet-table-flattened.duet-table-minimal tbody th,.duet-table-flattened.duet-table-plain tbody th{padding-top:20px !important}.duet-table-flattened.duet-table-fixed tfoot td,.duet-table-flattened.duet-table-minimal tfoot td,.duet-table-flattened.duet-table-plain tfoot td{margin-bottom:4px !important}.duet-table-flattened.duet-table-fixed tbody:not(:only-of-type) tr:first-child,.duet-table-flattened.duet-table-minimal tbody:not(:only-of-type) tr:first-child,.duet-table-flattened.duet-table-plain tbody:not(:only-of-type) tr:first-child{border-bottom:0}.duet-table-plain.duet-table-flattened tbody tr{border-bottom:1px solid #e1e3e6}.duet-table-plain.duet-table-flattened.duet-theme-turva tbody tr{border-bottom-color:#e4e4e6}.duet-table-minimal tbody tr,.duet-table-minimal tbody tr td{vertical-align:top;border-bottom:0 none}.duet-table-minimal tbody tr:last-of-type,.duet-table-minimal tbody tr:last-of-type td{border-bottom:1px solid #e1e3e6}.duet-table-minimal.duet-table-flattened tbody tr,.duet-table-minimal.duet-table-flattened tbody tr td{border-bottom:0 none}.duet-table-minimal.duet-table-flattened tbody tr td[data-heading]::before{display:none}.duet-table-minimal.duet-table-flattened tfoot{border-top:1px solid #e1e3e6}.duet-table-minimal.duet-table-flattened.duet-theme-turva tfoot{border-top-color:#e4e4e6}.duet-table-fixed table{table-layout:fixed}.duet-table-fixed tbody tr,.duet-table-fixed tbody tr td,.duet-table-fixed tbody tr td:first-child{padding:4px !important;vertical-align:text-bottom;border-bottom:0 none}.duet-table-fixed thead{display:none}.duet-table-fixed tbody tr,.duet-table-fixed tbody tr td{border-bottom:0 none}.duet-table-fixed:not(.duet-table-flattened) tfoot{border-top:1px solid #e1e3e6}.duet-table-fixed:not(.duet-table-flattened).duet-theme-turva tfoot{border-top-color:#e4e4e6}.duet-table-scrollable{position:relative;width:100%;overflow-x:auto;background:linear-gradient(90deg, #fff 0%, rgba(255, 255, 255, 0)), linear-gradient(-90deg, #fff 0%, rgba(255, 255, 255, 0)) 100% 0, radial-gradient(farthest-side at 0% 50%, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0)), radial-gradient(farthest-side at 100% 50%, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0)) 100% 0%;background-repeat:no-repeat;background-attachment:local, local, scroll, scroll;background-size:100px 100%, 100px 100%, 12px 100%, 12px 100%}.duet-table-selected-column{background:rgba(0, 119, 179, 0.08)}.duet-theme-turva .duet-table-selected-column{background:rgba(68, 68, 69, 0.08)}";
15227
+ const duetTableCss = "duet-table{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-bottom:20px !important;display:block;font-variant-numeric:tabular-nums}duet-table table,duet-table thead,duet-table tbody,duet-table tfoot,duet-table th,duet-table td,duet-table tr{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}duet-table.duet-m-0{margin:0 !important}duet-table table{width:100%;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;text-align:left;border-spacing:0;border-collapse:separate}duet-table.duet-theme-turva table{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}duet-table td{-webkit-hyphens:auto;hyphens:auto;color:#00294d}duet-table.duet-theme-turva td{color:#171c3a}duet-table th{font-weight:600;line-height:1.25;color:#657787;text-align:left}duet-table.duet-theme-turva th{color:#747475}duet-table tbody th{font-weight:600;color:#00294d}duet-table.duet-theme-turva tbody th{color:#171c3a}duet-table .duet-table-action-row td:last-child{justify-self:end;padding-right:20px !important;white-space:nowrap}.duet-table-flattened tbody tr{display:grid;grid-template-columns:repeat(2, 1fr);grid-auto-rows:auto;gap:10px}.duet-table-flattened tbody tr.duet-table-action-row td:last-child::before{padding:0;content:\"\"}.duet-table-flattened thead tr{position:absolute !important;top:0;width:1px !important;height:1px !important;padding:0 !important;overflow:hidden !important;clip:rect(1px, 1px, 1px, 1px) !important;border:0 !important}.duet-table-flattened td{grid-column:1/2;line-height:1.25}.duet-table-flattened td:not(:last-child){margin-bottom:16px !important}.duet-table-flattened td:first-child{grid-row:1;grid-column:1}.duet-table-flattened td:last-child{grid-row:1;grid-column:2}.duet-table-flattened tbody td,.duet-table-flattened tbody th,.duet-table-flattened tfoot td{padding:0 !important;text-align:left !important}.duet-table-flattened tbody th{font-weight:600;line-height:1.25;color:#657787;text-align:left}.duet-table-flattened td[data-heading]::before{margin-bottom:4px !important;display:block;font-size:1rem;font-weight:600;color:#00294d;content:attr(data-heading)}.duet-table-flattened.duet-theme-turva td[data-heading]::before{color:#171c3a}.duet-table-sticky thead th{position:sticky;top:0;background:white}.duet-table-striped td,.duet-table-striped th{padding:20px !important}@media (max-width: 35.9375em){.duet-table-striped td,.duet-table-striped th{padding:20px 12px !important}}.duet-table-striped tbody th{background:white}.duet-table-striped.duet-table-sticky thead th{border-bottom:1px solid #e1e3e6}.duet-table-striped.duet-table-sticky.duet-theme-turva thead th{border-bottom-color:#e4e4e6}.duet-table-striped tbody:not(:first-of-type) th{padding-top:40px !important}.duet-table-striped tbody:only-of-type tr:nth-of-type(odd){background:rgba(0, 80, 128, 0.04)}.duet-table-striped.duet-theme-turva tbody:only-of-type tr:nth-of-type(odd){background:rgba(23, 28, 58, 0.04)}.duet-table-striped tbody:not(:only-of-type) tr:nth-of-type(even){background:rgba(0, 80, 128, 0.04)}.duet-table-striped.duet-theme-turva tbody:not(:only-of-type) tr:nth-of-type(even){background:rgba(23, 28, 58, 0.04)}.duet-table-striped tfoot td{border-top:1px solid #e1e3e6}.duet-table-striped.duet-theme-turva tfoot td{border-top-color:#e4e4e6}.duet-table-striped.duet-table-flattened tbody:not(:first-of-type) th{padding-top:20px !important}.duet-table-striped.duet-table-flattened tr{padding:20px !important}.duet-table-striped.duet-table-flattened tfoot td{border-top:0}.duet-table-striped.duet-table-flattened tfoot tr{border-top:1px solid #e1e3e6}.duet-table-striped.duet-table-flattened.duet-theme-turva tfoot tr{border-top-color:#e4e4e6}.duet-table-fixed th,.duet-table-minimal th,.duet-table-plain th{padding:16px !important;border-bottom:1px solid #657787}.duet-table-fixed th:first-child,.duet-table-minimal th:first-child,.duet-table-plain th:first-child{padding-left:0 !important}.duet-table-fixed th:last-child,.duet-table-minimal th:last-child,.duet-table-plain th:last-child{padding-right:0 !important}.duet-theme-turva.duet-table-fixed th,.duet-theme-turva.duet-table-minimal th,.duet-theme-turva.duet-table-plain th{border-bottom-color:#444445}.duet-table-fixed tbody th,.duet-table-minimal tbody th,.duet-table-plain tbody th{padding-top:40px !important;border-bottom-color:#e1e3e6}.duet-theme-turva.duet-table-fixed tbody th,.duet-theme-turva.duet-table-minimal tbody th,.duet-theme-turva.duet-table-plain tbody th{border-bottom-color:#e4e4e6}.duet-table-fixed td,.duet-table-minimal td,.duet-table-plain td{padding:16px !important}.duet-table-fixed td:first-child,.duet-table-minimal td:first-child,.duet-table-plain td:first-child{padding-left:0 !important}.duet-table-fixed td:last-child,.duet-table-minimal td:last-child,.duet-table-plain td:last-child{padding-right:0 !important}.duet-table-fixed tbody td,.duet-table-minimal tbody td,.duet-table-plain tbody td{border-bottom:1px solid #e1e3e6}.duet-theme-turva.duet-table-fixed tbody td,.duet-theme-turva.duet-table-minimal tbody td,.duet-theme-turva.duet-table-plain tbody td{border-bottom-color:#e4e4e6}.duet-table-flattened.duet-table-fixed tbody:first-of-type th,.duet-table-flattened.duet-table-minimal tbody:first-of-type th,.duet-table-flattened.duet-table-plain tbody:first-of-type th{padding-top:0 !important}.duet-table-flattened.duet-table-fixed td,.duet-table-flattened.duet-table-minimal td,.duet-table-flattened.duet-table-plain td,.duet-table-flattened.duet-table-fixed tbody th,.duet-table-flattened.duet-table-minimal tbody th,.duet-table-flattened.duet-table-plain tbody th{border-bottom:0}.duet-table-flattened.duet-table-fixed tr,.duet-table-flattened.duet-table-minimal tr,.duet-table-flattened.duet-table-plain tr{padding:20px 0 !important}.duet-table-flattened.duet-table-fixed tbody th,.duet-table-flattened.duet-table-minimal tbody th,.duet-table-flattened.duet-table-plain tbody th{padding-top:20px !important}.duet-table-flattened.duet-table-fixed tfoot td,.duet-table-flattened.duet-table-minimal tfoot td,.duet-table-flattened.duet-table-plain tfoot td{margin-bottom:4px !important}.duet-table-flattened.duet-table-fixed tbody:not(:only-of-type) tr:first-child,.duet-table-flattened.duet-table-minimal tbody:not(:only-of-type) tr:first-child,.duet-table-flattened.duet-table-plain tbody:not(:only-of-type) tr:first-child{border-bottom:0}.duet-table-plain.duet-table-flattened tbody tr{border-bottom:1px solid #e1e3e6}.duet-table-plain.duet-table-flattened.duet-theme-turva tbody tr{border-bottom-color:#e4e4e6}.duet-table-minimal tbody tr,.duet-table-minimal tbody tr td{vertical-align:top;border-bottom:0 none}.duet-table-minimal tbody tr:last-of-type,.duet-table-minimal tbody tr:last-of-type td{border-bottom:1px solid #e1e3e6}.duet-table-minimal.duet-table-flattened tbody tr,.duet-table-minimal.duet-table-flattened tbody tr td{border-bottom:0 none}.duet-table-minimal.duet-table-flattened tbody tr td[data-heading]::before{display:none}.duet-table-minimal.duet-table-flattened tfoot{border-top:1px solid #e1e3e6}.duet-table-minimal.duet-table-flattened.duet-theme-turva tfoot{border-top-color:#e4e4e6}.duet-table-fixed table{table-layout:fixed}.duet-table-fixed tbody tr,.duet-table-fixed tbody tr td,.duet-table-fixed tbody tr td:first-child{padding:4px !important;vertical-align:text-bottom;border-bottom:0 none}.duet-table-fixed thead{display:none}.duet-table-fixed tbody tr,.duet-table-fixed tbody tr td{border-bottom:0 none}.duet-table-fixed:not(.duet-table-flattened) tfoot{border-top:1px solid #e1e3e6}.duet-table-fixed:not(.duet-table-flattened).duet-theme-turva tfoot{border-top-color:#e4e4e6}.duet-table-scrollable{position:relative;width:100%;overflow-x:auto;background:linear-gradient(90deg, #fff 0%, rgba(255, 255, 255, 0)), linear-gradient(-90deg, #fff 0%, rgba(255, 255, 255, 0)) 100% 0, radial-gradient(farthest-side at 0% 50%, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0)), radial-gradient(farthest-side at 100% 50%, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0)) 100% 0%;background-repeat:no-repeat;background-attachment:local, local, scroll, scroll;background-size:100px 100%, 100px 100%, 12px 100%, 12px 100%}.duet-table-selected-column{background:rgba(0, 119, 179, 0.08)}.duet-theme-turva .duet-table-selected-column{background:rgba(68, 68, 69, 0.08)}.duet-table-sortable tbody tr td:first-child,.duet-table-sortable thead tr th:first-child{padding:20px}.duet-table-sortable:not(.duet-table-flattened) tfoot{border-top:1px solid #e1e3e6}.duet-table-sortable:not(.duet-table-flattened).duet-theme-turva tfoot{border-top-color:#e4e4e6}.duet-table-actions table{table-layout:auto}.duet-table-actions thead th:last-child{width:1px;white-space:nowrap}";
15184
15228
 
15185
15229
  // remove wrapping speech marks.
15186
15230
  // media query tokens are wrapped in speech marks,
@@ -15201,6 +15245,11 @@ const stickyTopValues = {
15201
15245
  "with-links": parseFloat(sizeNavigation) * 16,
15202
15246
  "without-links": parseFloat(sizeHeader) * 16,
15203
15247
  };
15248
+ /**
15249
+ * @slot dot-menu- If this slot is populated - the content will be displayed together with a ... type menu to the far right in the tsble header
15250
+ * @slot header - Header slot for the table
15251
+ * @slot footer - Footer slot for the table
15252
+ */
15204
15253
  class DuetTable {
15205
15254
  constructor(hostRef) {
15206
15255
  registerInstance(this, hostRef);
@@ -15265,6 +15314,9 @@ class DuetTable {
15265
15314
  return;
15266
15315
  }
15267
15316
  }
15317
+ /**
15318
+ * Local methods.
15319
+ */
15268
15320
  copyHeadingsToCells() {
15269
15321
  const headingElements = this.element.querySelectorAll("thead th");
15270
15322
  const rowElements = this.element.querySelectorAll("tbody tr");
@@ -16282,7 +16334,7 @@ const validateFile = (item, validators) => {
16282
16334
  if (item) {
16283
16335
  const { name, type, size } = item;
16284
16336
  const mime = validateFileMime(type, allowedMimetypes);
16285
- const ext = validateFileExtension(name, allowedExtensions);
16337
+ const ext = validateFileExtension(name.toLowerCase(), allowedExtensions);
16286
16338
  const bytes = validateFileSize(size, maxBytes);
16287
16339
  if (!mime) {
16288
16340
  errorMessage = getError("duet-upload-101");
@@ -16362,7 +16414,7 @@ const makeXhrRequest = ({ payload, options, onFailure, onSuccess, onProgress })
16362
16414
  return xhr;
16363
16415
  };
16364
16416
 
16365
- const duetUploadCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-upload,*.sc-duet-upload::after,*.sc-duet-upload::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-upload-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@::slotted([slot=header])*/.sc-duet-upload-s>[slot=header]{margin-bottom:16px}/*!@::slotted([slot=fileheader])*/.sc-duet-upload-s>[slot=fileheader]{margin:16px 0 0 0}/*!@::slotted([slot=filefooter])*/.sc-duet-upload-s>[slot=filefooter]{margin-top:16px}/*!@.duet-upload*/.duet-upload.sc-duet-upload{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@.duet-upload-item-size*/.duet-upload-item-size.sc-duet-upload{font-size:0.75rem;font-weight:400}/*!@.duet-upload-filelist*/.duet-upload-filelist.sc-duet-upload{margin-bottom:25px}/*!@.duet-upload-filelist-empty*/.duet-upload-filelist-empty.sc-duet-upload{display:flex;align-items:center;justify-content:center;width:100%;height:75px;margin:0 auto;font-size:1rem;font-weight:400;background-color:#f5f8fa}";
16417
+ const duetUploadCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-upload,*.sc-duet-upload::after,*.sc-duet-upload::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-upload-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@::slotted([slot=header])*/.sc-duet-upload-s>[slot=header]{margin-bottom:16px}/*!@::slotted([slot=fileheader])*/.sc-duet-upload-s>[slot=fileheader]{margin:16px 0 0 0}/*!@::slotted([slot=filefooter])*/.sc-duet-upload-s>[slot=filefooter]{margin-top:16px}/*!@.duet-upload*/.duet-upload.sc-duet-upload{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@.duet-upload-item-size*/.duet-upload-item-size.sc-duet-upload{font-size:0.75rem;font-weight:400}/*!@.duet-upload-filelist*/.duet-upload-filelist.sc-duet-upload{margin-bottom:25px}/*!@.duet-upload-filelist-empty*/.duet-upload-filelist-empty.sc-duet-upload{display:flex;align-items:center;justify-content:center;width:100%;height:75px;margin:0 auto;font-size:1rem;font-weight:400;background-color:#f5f8fa}/*!@.duet-upload-editable-table-header-hidden*/.duet-upload-editable-table-header-hidden.sc-duet-upload{display:none}/*!@.duet-upload-editable-table tbody .duet-upload-editable-table-data*/.duet-upload-editable-table.sc-duet-upload tbody.sc-duet-upload .duet-upload-editable-table-data.sc-duet-upload{padding:0 !important;border:0}/*!@.duet-upload-editable-table duet-editable-table tfoot,\n.duet-upload-editable-table duet-editable-table thead*/.duet-upload-editable-table.sc-duet-upload duet-editable-table.sc-duet-upload tfoot.sc-duet-upload,.duet-upload-editable-table.sc-duet-upload duet-editable-table.sc-duet-upload thead.sc-duet-upload{display:none}/*!@.duet-upload-editable-table duet-editable-table .duet-editable-table-content*/.duet-upload-editable-table.sc-duet-upload duet-editable-table.sc-duet-upload .duet-editable-table-content.sc-duet-upload{padding-right:0 !important;padding-left:0 !important}/*!@.duet-upload-editable-table duet-editable-table duet-table .duet-table-action-row td*/.duet-upload-editable-table.sc-duet-upload duet-editable-table.sc-duet-upload duet-table.sc-duet-upload .duet-table-action-row.sc-duet-upload td.sc-duet-upload{padding:0.75rem 0 !important}/*!@.duet-upload-editable-table duet-editable-table duet-table .duet-table-action-row td:last-child*/.duet-upload-editable-table.sc-duet-upload duet-editable-table.sc-duet-upload duet-table.sc-duet-upload .duet-table-action-row.sc-duet-upload td.sc-duet-upload:last-child{padding-right:0 !important}/*!@.duet-upload-editable-table duet-editable-table .duet-editable-table-row-inprogress duet-action-button::part(button)*/.duet-upload-editable-table.sc-duet-upload duet-editable-table.sc-duet-upload .duet-editable-table-row-inprogress.sc-duet-upload duet-action-button.sc-duet-upload::part(button){border:0}";
16366
16418
 
16367
16419
  /**
16368
16420
  * @slot header - named slot - to place content after description / caption
@@ -16384,25 +16436,6 @@ class DuetUpload {
16384
16436
  this.duetCancel = createEvent$2(this, "duetCancel", 3);
16385
16437
  this.duetProgress = createEvent$2(this, "duetProgress", 3);
16386
16438
  this.duetUpload = createEvent$2(this, "duetUpload", 3);
16387
- /**
16388
- * Own Properties
16389
- */
16390
- this.buttonId = createID("DuetButton");
16391
- this.labelId = createID("DuetLabel");
16392
- this.uploadId = createID("DuetUpload");
16393
- this.editableTableId = createID("DuetEditableTable");
16394
- this.filesInProgress = new Map();
16395
- this.fileMaxReached = false;
16396
- this.bytesMaxReached = false;
16397
- this.internalStatusMessageLabel = undefined;
16398
- /**
16399
- * Properties
16400
- */
16401
- this.DefaultGroups = {
16402
- inprogress: "inprogress",
16403
- success: "success",
16404
- failure: "failure",
16405
- };
16406
16439
  /**
16407
16440
  * State() variables
16408
16441
  */
@@ -16424,8 +16457,9 @@ class DuetUpload {
16424
16457
  {
16425
16458
  icon: "action-delete",
16426
16459
  color: "color-danger",
16427
- color_hover: "primary-dark",
16428
- id: "delete",
16460
+ size: "x-small",
16461
+ background: "gray-lightest",
16462
+ name: "delete",
16429
16463
  map: ["success", "failure"],
16430
16464
  label: {
16431
16465
  fi: "Poista tiedosto",
@@ -16436,8 +16470,9 @@ class DuetUpload {
16436
16470
  {
16437
16471
  icon: "navigation-close",
16438
16472
  color: "primary",
16439
- color_hover: "primary-dark",
16440
- id: "cancel",
16473
+ size: "x-small",
16474
+ background: "gray-lightest",
16475
+ name: "cancel",
16441
16476
  map: ["inprogress"],
16442
16477
  label: {
16443
16478
  fi: "Keskeytä lähetys",
@@ -16507,8 +16542,8 @@ class DuetUpload {
16507
16542
  inProgressWithErrors: "Uploading {filesInProgress}, {filesUploaded} uploaded of {filesTotal}, {filesWithErrors} failed",
16508
16543
  done: "All {filesTotal} added successfully",
16509
16544
  doneWithErrors: "Action completed, {filesUploaded} has been added successfully, {filesWithErrors} had errors",
16510
- files: "tiedostoa",
16511
- file: "tiedosto",
16545
+ files: "File",
16546
+ file: "file",
16512
16547
  },
16513
16548
  };
16514
16549
  /**
@@ -16663,19 +16698,72 @@ class DuetUpload {
16663
16698
  * by default this is off, setting this to true will limit the users choices to what has been explicitly set
16664
16699
  */
16665
16700
  this.limitSelection = false;
16701
+ /**
16702
+ * Own Properties
16703
+ */
16704
+ this.buttonId = createID("DuetButton");
16705
+ this.labelId = createID("DuetLabel");
16706
+ this.uploadId = createID("DuetUpload");
16707
+ this.filesInProgress = new Map();
16708
+ this.fileMaxReached = false;
16709
+ this.bytesMaxReached = false;
16710
+ this.internalStatusMessageLabel = undefined;
16711
+ /**
16712
+ * Properties
16713
+ */
16714
+ this.DefaultGroups = {
16715
+ inprogress: "inprogress",
16716
+ success: "success",
16717
+ failure: "failure",
16718
+ };
16719
+ /**
16720
+ * Array of group names that you want the editable table to use to display files
16721
+ * @required
16722
+ * @example [{ id: "success", label: {fi: "Onnistunut", en: "Success", sv: "Alt klart", }}]
16723
+ */
16724
+ this.groups = [
16725
+ {
16726
+ id: this.DefaultGroups.inprogress,
16727
+ label: {
16728
+ fi: "Kesken olevat tiedostot",
16729
+ sv: "Filer inprogress",
16730
+ en: "Files inprogress",
16731
+ },
16732
+ },
16733
+ {
16734
+ id: this.DefaultGroups.success,
16735
+ label: {
16736
+ fi: "Valmiit tiedostot",
16737
+ sv: "Files success",
16738
+ en: "Files success",
16739
+ },
16740
+ },
16741
+ {
16742
+ id: this.DefaultGroups.failure,
16743
+ label: {
16744
+ fi: "Tiedostot, joissa on virheitä",
16745
+ sv: "Filer med fel",
16746
+ en: "Files with errors",
16747
+ },
16748
+ },
16749
+ ];
16750
+ this.kick = debounce(() => {
16751
+ this.tick = Date.now();
16752
+ }, 30); // will trigger re-render
16666
16753
  /**
16667
16754
  * Private functions
16668
16755
  */
16669
16756
  this.listenForActionEvents = () => {
16670
- this.element.addEventListener("duetEditableItemAction", (e) => {
16757
+ this.element.addEventListener("duetActionEvent", (e) => {
16671
16758
  const detail = e.detail;
16672
- const { action, keyName, originalEvent } = detail;
16759
+ const { action, id, originalEvent } = detail;
16760
+ console.log(e);
16673
16761
  switch (action) {
16674
16762
  case "delete":
16675
- this.onDelete(keyName, originalEvent);
16763
+ this.onDelete(id, originalEvent);
16676
16764
  break;
16677
16765
  case "cancel":
16678
- this.onCancel(keyName, originalEvent);
16766
+ this.onCancel(id, originalEvent);
16679
16767
  break;
16680
16768
  // code block
16681
16769
  }
@@ -16732,24 +16820,6 @@ class DuetUpload {
16732
16820
  return "none";
16733
16821
  }
16734
16822
  };
16735
- this.convertToDuetEditableTableItems = () => {
16736
- // we're always recreating the map - in order to force an update down stream.
16737
- const itemData = new Map();
16738
- //walk the files Map and convert to DuetEditableTableItemData
16739
- this.files.forEach((data, key, _originalMap) => {
16740
- const group = this.getGroupFromItemData(data);
16741
- const item = this.getItemHTMLFromItemData(data, group);
16742
- itemData.set(key, {
16743
- uid: data.uid,
16744
- item,
16745
- group,
16746
- });
16747
- });
16748
- return itemData;
16749
- };
16750
- this.kick = debounce(() => {
16751
- this.tick = Date.now();
16752
- }, 30); // will trigger re-render
16753
16823
  this.genHashName = () => Date.now().toString(36) + Math.random();
16754
16824
  this.updateValueInMap = (item, key, value, kick = true) => {
16755
16825
  const fileItem = this.files.get(item);
@@ -16810,7 +16880,6 @@ class DuetUpload {
16810
16880
  this.nativeInput.value = "";
16811
16881
  };
16812
16882
  this.startUpload = async (ev, metaData = undefined) => {
16813
- await this.setFocus();
16814
16883
  this.metaData = metaData;
16815
16884
  this.nativeInput.click();
16816
16885
  this.onUpload(ev, metaData);
@@ -16873,9 +16942,18 @@ class DuetUpload {
16873
16942
  fileMaxReached: isTotalFileAmountAboveMax,
16874
16943
  };
16875
16944
  };
16945
+ this.getItemFromUID = (uid) => {
16946
+ for (const [key, value] of this.files.entries()) {
16947
+ if (value.uid === uid) {
16948
+ return { value, key };
16949
+ }
16950
+ }
16951
+ return null;
16952
+ };
16876
16953
  this.onDelete = (key, ev) => {
16877
- const deletedItem = this.files.get(key);
16878
- this.files.delete(key);
16954
+ const retrievedKey = this.getItemFromUID(key).key;
16955
+ const deletedItem = this.files.get(retrievedKey);
16956
+ this.files.delete(retrievedKey);
16879
16957
  this.validateTotals();
16880
16958
  this.kick();
16881
16959
  this.duetDelete.emit({
@@ -16889,8 +16967,9 @@ class DuetUpload {
16889
16967
  this.resetFormFields();
16890
16968
  };
16891
16969
  this.onCancel = (key, ev) => {
16892
- const cancelledItem = this.files.get(key);
16893
- this.files.delete(key);
16970
+ const retrievedKey = this.getItemFromUID(key).key;
16971
+ const cancelledItem = this.files.get(retrievedKey);
16972
+ this.files.delete(retrievedKey);
16894
16973
  if (!this.external) {
16895
16974
  const { xhr } = cancelledItem;
16896
16975
  xhr.abort();
@@ -16940,6 +17019,79 @@ class DuetUpload {
16940
17019
  data: { files: this.files },
16941
17020
  });
16942
17021
  };
17022
+ /**
17023
+ * @description This functions return sorted map items byg condition which are:
17024
+ */
17025
+ this.filterMap = () => {
17026
+ const all = [...this.files.values()];
17027
+ const inprogress = [];
17028
+ const failure = [];
17029
+ const success = [];
17030
+ all.forEach(data => {
17031
+ const group = this.getGroupFromItemData(data);
17032
+ const item = this.getItemHTMLFromItemData(data, group);
17033
+ if (group === this.DefaultGroups.success) {
17034
+ success.push({
17035
+ uid: data.uid,
17036
+ item,
17037
+ group,
17038
+ });
17039
+ }
17040
+ else if (group === this.DefaultGroups.inprogress) {
17041
+ inprogress.push({
17042
+ uid: data.uid,
17043
+ item,
17044
+ group,
17045
+ });
17046
+ }
17047
+ else if (group === this.DefaultGroups.failure) {
17048
+ failure.push({
17049
+ uid: data.uid,
17050
+ item,
17051
+ group,
17052
+ });
17053
+ }
17054
+ else if (data.group) {
17055
+ inprogress.push({
17056
+ uid: data.uid,
17057
+ item,
17058
+ group: data.group,
17059
+ });
17060
+ }
17061
+ });
17062
+ return {
17063
+ inprogress,
17064
+ failure,
17065
+ success,
17066
+ };
17067
+ };
17068
+ this.getColumns = (group) => {
17069
+ return [
17070
+ {
17071
+ sort_order: 1,
17072
+ direction: 1,
17073
+ index: 0,
17074
+ key: group.id,
17075
+ label: group.label,
17076
+ },
17077
+ ];
17078
+ };
17079
+ this.getActions = (id) => {
17080
+ return this.actions.filter(item => item.map.includes(id));
17081
+ };
17082
+ this.renderEditableTableGroups = () => {
17083
+ const filteredItems = this.filterMap();
17084
+ const EditableTables = this.groups.map(group => {
17085
+ const currentItems = filteredItems[group.id];
17086
+ if (!(currentItems === null || currentItems === void 0 ? void 0 : currentItems.length)) {
17087
+ return;
17088
+ }
17089
+ return (hAsync("duet-table", { variation: "plain", breakpoint: "none", role: "log", margin: this.hideGroups ? "none" : "auto" }, hAsync("table", { class: "duet-upload-editable-table" }, hAsync("thead", { class: "duet-upload-editable-table-header" }, hAsync("tr", null, hAsync("th", { class: {
17090
+ "duet-upload-editable-table-header-hidden": this.hideGroups,
17091
+ } }, !this.hideGroups ? (getLocaleString(group.label)) : (hAsync("duet-visually-hidden", null, getLocaleString(group.label)))))), hAsync("tbody", null, hAsync("tr", null, hAsync("td", { class: "duet-upload-editable-table-data" }, hAsync("duet-editable-table", { breakpoint: "none", variation: "plain", groupId: group.id, columns: this.getColumns(group), actions: this.getActions(group.id), margin: "none", rows: currentItems })))))));
17092
+ });
17093
+ return EditableTables;
17094
+ };
16943
17095
  }
16944
17096
  watchValidHandler(newValue, oldValue) {
16945
17097
  if (newValue !== oldValue) {
@@ -16963,6 +17115,68 @@ class DuetUpload {
16963
17115
  // listen to the events from the component
16964
17116
  this.verifyValidity();
16965
17117
  }
17118
+ /**
17119
+ * Sets focus on the specified `duet-input`. Use this method instead of the global
17120
+ * `input.focus()`.
17121
+ */
17122
+ async setFocus(options) {
17123
+ if (this.nativeInput) {
17124
+ this.nativeInput.focus(options);
17125
+ }
17126
+ return;
17127
+ }
17128
+ /**
17129
+ * Method for invoking the upload sequence
17130
+ */
17131
+ async upload(metaData = undefined) {
17132
+ await this.setFocus();
17133
+ this.metaData = metaData;
17134
+ this.nativeInput.click();
17135
+ return;
17136
+ }
17137
+ /**
17138
+ * Method for forcing a render of the upload list, element.files can be changed externally
17139
+ * But it will only rerender on a new Map or a top Level change - this can be used to update
17140
+ * the tabular data if the automatic re-render is no sufficient
17141
+ */
17142
+ async refresh() {
17143
+ this.kick();
17144
+ await this.setFocus();
17145
+ }
17146
+ /**
17147
+ * Get list of files, divided in errors and valid sections
17148
+ */
17149
+ async getFiles() {
17150
+ if (!this.files || this.files.size === 0) {
17151
+ return false;
17152
+ }
17153
+ return this.getFilesAsArray();
17154
+ }
17155
+ /**
17156
+ * Convenience method for updating the value of a key:value inside an item in the files attribute
17157
+ */
17158
+ async updateValue(item, key, value) {
17159
+ this.updateValueInMap(item, key, value);
17160
+ }
17161
+ /**
17162
+ * render() function
17163
+ * Always the last one in the class.
17164
+ */
17165
+ render() {
17166
+ const identifier = this.identifier || this.uploadId;
17167
+ let caption = this.description.replace(/{maxfiles}/g, this.maxFiles.toString());
17168
+ caption = caption.replace(/{maxbytes}/g, `${Math.floor(this.maxBytes / 1024 / 1024)} MB`);
17169
+ caption = caption.replace(/{filetypes}/g, this.allowedExtensions.split(",").join(", "));
17170
+ return (hAsync(Host, { class: { "duet-m-0": this.margin === "none" } }, hAsync("duet-fieldset", { label: this.label, caption: caption }, hAsync("slot", { name: "header" }), !this.files.size && (hAsync("duet-label", { part: this.identifier ? `${this.identifier}-empty-state` : "duet-upload-empty-state", theme: this.theme === "turva" ? "turva" : "default", size: "small", class: {
17171
+ "duet-upload-filelist-empty": !this.files.size,
17172
+ "duet-upload-filelist": true,
17173
+ "duet-upload-filelist-filled": this.files.size,
17174
+ }, id: this.labelId, for: identifier }, this.fileListEmpty)), !!this.files.size && hAsync("slot", { name: "fileheader" }), !!this.files.size && (hAsync("duet-upload-aria-status", { invalid: this.getFilesAsArray().invalid.length, valid: this.getFilesAsArray().valid.length, inprogress: this.filesInProgress.size, total: this.files.size, statusMessageLabel: this.internalStatusMessageLabel })), !!this.files.size && this.renderEditableTableGroups(), !!this.files.size && hAsync("slot", { name: "filefooter" }), hAsync("duet-spacer", { size: "large" }), !this.hideButton && (hAsync("duet-button", { id: this.buttonId, onClick: this.startUpload, "accessible-controls": identifier, disabled: this.fileMaxReached, "accessible-label": this.accessibleButtonLabel, "accessible-owns": identifier, size: "small", variation: "secondary", fixed: true, icon: "action-add-circle", part: this.identifier ? `${this.identifier}-button-upload` : "duet-upload-button-upload" }, this.buttonLabel)), hAsync("duet-spacer", { size: "medium" }), (this.fileMaxReached || this.bytesMaxReached) && (hAsync("duet-alert", { part: this.identifier ? `${this.identifier}-error-notification` : "duet-upload-error-notification" }, this.fileMaxReached && getI18nError("duet-upload-301"), this.bytesMaxReached && getI18nError("duet-upload-202"))), hAsync("duet-spacer", { size: "medium" }), hAsync("duet-visually-hidden", null, hAsync("input", { ref: input => {
17175
+ this.nativeInput = input;
17176
+ }, accept: !this.limitSelection ? undefined : `${this.allowedMimetypes},${this.allowedExtensions}`, onBlur: this.onBlur, onFocus: this.onFocus, onChange: e => this.onChange(e), type: "file", class: {
17177
+ "duet-upload": true,
17178
+ }, disabled: this.disabled, "aria-hidden": "true", required: this.required, name: this.name, id: this.identifier, multiple: this.multiple, capture: "user" })))));
17179
+ }
16966
17180
  /**
16967
17181
  * XHR request utilities
16968
17182
  */
@@ -17084,68 +17298,6 @@ class DuetUpload {
17084
17298
  component: "duet-upload",
17085
17299
  });
17086
17300
  }
17087
- /**
17088
- * Sets focus on the specified `duet-input`. Use this method instead of the global
17089
- * `input.focus()`.
17090
- */
17091
- async setFocus(options) {
17092
- if (this.nativeInput) {
17093
- this.nativeInput.focus(options);
17094
- }
17095
- return;
17096
- }
17097
- /**
17098
- * Method for invoking the upload sequence
17099
- */
17100
- async upload(metaData = undefined) {
17101
- await this.setFocus();
17102
- this.metaData = metaData;
17103
- this.nativeInput.click();
17104
- return;
17105
- }
17106
- /**
17107
- * Method for forcing a render of the upload list, element.files can be changed externally
17108
- * But it will only rerender on a new Map or a top Level change - this can be used to update
17109
- * the tabular data if the automatic re-render is no sufficient
17110
- */
17111
- async refresh() {
17112
- this.kick();
17113
- await this.setFocus();
17114
- }
17115
- /**
17116
- * Get list of files, divided in errors and valid sections
17117
- */
17118
- async getFiles() {
17119
- if (!this.files || this.files.size === 0) {
17120
- return false;
17121
- }
17122
- return this.getFilesAsArray();
17123
- }
17124
- /**
17125
- * Convenience method for updating the value of a key:value inside an item in the files attribute
17126
- */
17127
- async updateValue(item, key, value) {
17128
- this.updateValueInMap(item, key, value);
17129
- }
17130
- /**
17131
- * render() function
17132
- * Always the last one in the class.
17133
- */
17134
- render() {
17135
- const identifier = this.identifier || this.uploadId;
17136
- let caption = this.description.replace(/{maxfiles}/g, this.maxFiles.toString());
17137
- caption = caption.replace(/{maxbytes}/g, `${Math.floor(this.maxBytes / 1024 / 1024)} MB`);
17138
- caption = caption.replace(/{filetypes}/g, this.allowedExtensions.split(",").join(", "));
17139
- return (hAsync(Host, { class: { "duet-m-0": this.margin === "none" } }, hAsync("duet-fieldset", { label: this.label, caption: caption }, hAsync("slot", { name: "header" }), !this.files.size && (hAsync("duet-label", { part: this.identifier ? `${this.identifier}-empty-state` : "duet-upload-empty-state", theme: this.theme === "turva" ? "turva" : "default", size: "small", class: {
17140
- "duet-upload-filelist-empty": !this.files.size,
17141
- "duet-upload-filelist": true,
17142
- "duet-upload-filelist-filled": this.files.size,
17143
- }, id: this.labelId, for: identifier }, this.fileListEmpty)), !!this.files.size && hAsync("slot", { name: "fileheader" }), !!this.files.size && (hAsync("duet-upload-aria-status", { invalid: this.getFilesAsArray().invalid.length, valid: this.getFilesAsArray().valid.length, inprogress: this.filesInProgress.size, total: this.files.size, statusMessageLabel: this.internalStatusMessageLabel })), !!this.files.size && (hAsync("duet-editable-table", { part: this.identifier ? `${this.identifier}-editable-table` : "duet-upload-editable-table", "aria-live": "polite", "aria-relevant": "removals", accessibleRole: "log", id: this.editableTableId, groups: this.groups, actions: this.actions, hideGroups: this.hideGroups, alignment: this.alignment, items: this.convertToDuetEditableTableItems() })), !!this.files.size && hAsync("slot", { name: "filefooter" }), hAsync("duet-spacer", { size: "large" }), !this.hideButton && (hAsync("duet-button", { id: this.buttonId, onClick: this.startUpload, "accessible-controls": identifier, disabled: this.fileMaxReached, "accessible-label": this.accessibleButtonLabel, "accessible-owns": identifier, size: "small", variation: "secondary", fixed: true, icon: "action-add-circle", part: this.identifier ? `${this.identifier}-button-upload` : "duet-upload-button-upload" }, this.buttonLabel)), hAsync("duet-spacer", { size: "medium" }), (this.fileMaxReached || this.bytesMaxReached) && (hAsync("duet-alert", { part: this.identifier ? `${this.identifier}-error-notification` : "duet-upload-error-notification" }, this.fileMaxReached && getI18nError("duet-upload-301"), this.bytesMaxReached && getI18nError("duet-upload-202"))), hAsync("duet-spacer", { size: "medium" }), hAsync("duet-visually-hidden", null, hAsync("input", { ref: input => {
17144
- this.nativeInput = input;
17145
- }, accept: !this.limitSelection ? undefined : `${this.allowedMimetypes},${this.allowedExtensions}`, onBlur: this.onBlur, onFocus: this.onFocus, onChange: e => this.onChange(e), type: "file", class: {
17146
- "duet-upload": true,
17147
- }, disabled: this.disabled, "aria-hidden": "true", required: this.required, name: this.name, id: this.identifier, multiple: this.multiple, capture: "user" })))));
17148
- }
17149
17301
  get element() { return getElement(this); }
17150
17302
  static get watchers() { return {
17151
17303
  "valid": ["watchValidHandler"]
@@ -17161,7 +17313,7 @@ class DuetUpload {
17161
17313
  "accessibleOwns": [1, "accessible-owns"],
17162
17314
  "external": [4],
17163
17315
  "hideButton": [4, "hide-upload-button"],
17164
- "actions": [1],
17316
+ "actions": [16],
17165
17317
  "uri": [1],
17166
17318
  "showLinks": [4, "show-links"],
17167
17319
  "caption": [1],
@@ -17175,7 +17327,6 @@ class DuetUpload {
17175
17327
  "identifier": [1],
17176
17328
  "margin": [1],
17177
17329
  "required": [4],
17178
- "groups": [1],
17179
17330
  "alignment": [1],
17180
17331
  "hideGroups": [4, "hide-table-labels"],
17181
17332
  "files": [1040],
@@ -17196,6 +17347,7 @@ class DuetUpload {
17196
17347
  "multiple": [4],
17197
17348
  "limitSelection": [4, "limit-selection"],
17198
17349
  "value": [1025],
17350
+ "groups": [16],
17199
17351
  "tick": [32],
17200
17352
  "setFocus": [64],
17201
17353
  "upload": [64],
@@ -17340,6 +17492,7 @@ class DuetVisuallyHidden {
17340
17492
  }
17341
17493
 
17342
17494
  registerComponents([
17495
+ DuetActionButton,
17343
17496
  DuetAlert,
17344
17497
  DuetBadge,
17345
17498
  DuetBreadcrumb,
@@ -17355,8 +17508,6 @@ registerComponents([
17355
17508
  DuetDatePicker,
17356
17509
  DuetDivider,
17357
17510
  DuetEditableTable,
17358
- DuetEditableTableButton,
17359
- DuetEditableTableItem,
17360
17511
  DuetEmptyState,
17361
17512
  DuetFieldset,
17362
17513
  DuetFooter,