@duetds/components 4.31.0 → 4.33.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (375) hide show
  1. package/hydrate/index.js +1895 -77
  2. package/lib/cjs/{dom-e89ebf90.js → dom-c850c8d7.js} +1 -1
  3. package/lib/cjs/duet-alert.cjs.entry.js +2 -2
  4. package/lib/cjs/duet-badge.cjs.entry.js +1 -1
  5. package/lib/cjs/duet-button_2.cjs.entry.js +4 -4
  6. package/lib/cjs/duet-caption_4.cjs.entry.js +17 -10
  7. package/lib/cjs/duet-card.cjs.entry.js +5 -5
  8. package/lib/cjs/duet-checkbox.cjs.entry.js +2 -2
  9. package/lib/cjs/duet-choice_2.cjs.entry.js +53 -24
  10. package/lib/cjs/duet-collapsible.cjs.entry.js +4 -449
  11. package/lib/cjs/duet-cookie-consent.cjs.entry.js +1 -1
  12. package/lib/cjs/duet-date-picker.cjs.entry.js +7 -7
  13. package/lib/cjs/duet-divider_2.cjs.entry.js +1 -1
  14. package/lib/cjs/duet-editable-table-button.cjs.entry.js +89 -0
  15. package/lib/cjs/duet-editable-table_4.cjs.entry.js +1445 -0
  16. package/lib/cjs/duet-empty-state.cjs.entry.js +1 -1
  17. package/lib/cjs/duet-fieldset.cjs.entry.js +1 -1
  18. package/lib/cjs/duet-footer.cjs.entry.js +2 -2
  19. package/lib/cjs/duet-grid_2.cjs.entry.js +69 -4
  20. package/lib/cjs/duet-header_2.cjs.entry.js +3 -3
  21. package/lib/cjs/duet-hero.cjs.entry.js +2 -2
  22. package/lib/cjs/duet-icon.cjs.entry.js +5 -13
  23. package/lib/cjs/duet-input_2.cjs.entry.js +6 -6
  24. package/lib/cjs/duet-layout.cjs.entry.js +1 -1
  25. package/lib/cjs/duet-list_2.cjs.entry.js +2 -2
  26. package/lib/cjs/duet-modal.cjs.entry.js +3 -3
  27. package/lib/cjs/duet-notification_2.cjs.entry.js +2 -2
  28. package/lib/cjs/duet-number-input.cjs.entry.js +2 -2
  29. package/lib/cjs/duet-progress.cjs.entry.js +75 -0
  30. package/lib/cjs/duet-radio_2.cjs.entry.js +2 -2
  31. package/lib/cjs/duet-range-slider.cjs.entry.js +2 -2
  32. package/lib/cjs/duet-select.cjs.entry.js +5 -5
  33. package/lib/cjs/duet-step_2.cjs.entry.js +1 -1
  34. package/lib/cjs/duet-tab_2.cjs.entry.js +3 -3
  35. package/lib/cjs/duet-textarea.cjs.entry.js +5 -5
  36. package/lib/cjs/duet-toggle.cjs.entry.js +1 -1
  37. package/lib/cjs/duet-tooltip.cjs.entry.js +2 -2
  38. package/lib/cjs/duet-tray.cjs.entry.js +3 -3
  39. package/lib/cjs/duet-upload-aria-status.cjs.entry.js +100 -0
  40. package/lib/cjs/duet-visually-hidden.cjs.entry.js +1 -1
  41. package/lib/cjs/duet.cjs.js +4 -4
  42. package/lib/cjs/{focus-utils-bd331feb.js → focus-utils-27c696bb.js} +1 -1
  43. package/lib/cjs/{index-113c2add.js → index-18b0f43a.js} +91 -77
  44. package/lib/cjs/{language-utils-48b8860b.js → language-utils-aa282901.js} +6 -2
  45. package/lib/cjs/loader.cjs.js +3 -3
  46. package/lib/cjs/{shadow-css-0c8c175b.js → shadow-css-e3edeed1.js} +9 -10
  47. package/lib/cjs/{token-utils-13e5d13e.js → token-utils-63a9c8dc.js} +1 -1
  48. package/lib/cjs/tokens-8596cece.js +459 -0
  49. package/lib/cjs/{tokens.module-53b3bd92.js → tokens.module-6b2df1c2.js} +2 -0
  50. package/lib/cjs/{watch-options-3877c082.js → watch-options-d88afac0.js} +29 -6
  51. package/lib/collection/collection-manifest.json +17 -3
  52. package/lib/collection/components/duet-alert/duet-alert.js +4 -4
  53. package/lib/collection/components/duet-button/duet-button.js +10 -10
  54. package/lib/collection/components/duet-card/duet-card.css +20 -0
  55. package/lib/collection/components/duet-card/duet-card.js +4 -1
  56. package/lib/collection/components/duet-checkbox/duet-checkbox.css +1 -1
  57. package/lib/collection/components/duet-choice/duet-choice.css +16 -3
  58. package/lib/collection/components/duet-choice/duet-choice.js +117 -33
  59. package/lib/collection/components/duet-choice-group/duet-choice-group.js +4 -4
  60. package/lib/collection/components/duet-date-picker/duet-date-picker.js +16 -16
  61. package/lib/collection/components/duet-editable-table/duet-editable-table-button.css +32 -0
  62. package/lib/collection/components/duet-editable-table/duet-editable-table-button.js +218 -0
  63. package/lib/collection/components/duet-editable-table/duet-editable-table-item.css +36 -0
  64. package/lib/collection/components/duet-editable-table/duet-editable-table-item.js +203 -0
  65. package/lib/collection/components/duet-editable-table/duet-editable-table-tabledata.js +13 -0
  66. package/lib/collection/components/duet-editable-table/duet-editable-table.css +16 -0
  67. package/lib/collection/components/duet-editable-table/duet-editable-table.js +348 -0
  68. package/lib/collection/components/duet-footer/duet-footer.js +10 -10
  69. package/lib/collection/components/duet-grid/duet-grid.js +74 -6
  70. package/lib/collection/components/duet-grid-item/duet-grid-item.js +4 -4
  71. package/lib/collection/components/duet-header/duet-header.js +16 -16
  72. package/lib/collection/components/duet-heading/duet-heading.css +3 -0
  73. package/lib/collection/components/duet-heading/duet-heading.js +7 -6
  74. package/lib/collection/components/duet-hero/duet-hero.js +8 -8
  75. package/lib/collection/components/duet-icon/icon-utils.js +5 -8
  76. package/lib/collection/components/duet-input/duet-input.css +15 -0
  77. package/lib/collection/components/duet-input/duet-input.js +4 -4
  78. package/lib/collection/components/duet-link/duet-link.js +8 -8
  79. package/lib/collection/components/duet-logo/duet-logo.js +4 -4
  80. package/lib/collection/components/duet-modal/duet-modal.js +8 -8
  81. package/lib/collection/components/duet-notification/duet-notification.js +8 -8
  82. package/lib/collection/components/duet-notification-drawer/duet-notification-drawer.js +8 -8
  83. package/lib/collection/components/duet-number-input/duet-number-input.js +20 -20
  84. package/lib/collection/components/duet-paragraph/duet-paragraph.css +6 -0
  85. package/lib/collection/components/duet-paragraph/duet-paragraph.js +34 -3
  86. package/lib/collection/components/duet-progress/duet-progress.css +103 -0
  87. package/lib/collection/components/duet-progress/duet-progress.js +240 -0
  88. package/lib/collection/components/duet-radio/duet-radio.js +6 -6
  89. package/lib/collection/components/duet-select/duet-select.css +15 -0
  90. package/lib/collection/components/duet-select/duet-select.js +3 -3
  91. package/lib/collection/components/duet-step/duet-step.js +8 -8
  92. package/lib/collection/components/duet-tab-group/duet-tab-group.css +2 -2
  93. package/lib/collection/components/duet-tab-group/duet-tab-group.js +10 -10
  94. package/lib/collection/components/duet-textarea/duet-textarea.css +19 -0
  95. package/lib/collection/components/duet-textarea/duet-textarea.js +5 -4
  96. package/lib/collection/components/duet-tooltip/duet-tooltip.js +14 -14
  97. package/lib/collection/components/duet-tray/duet-tray.js +12 -12
  98. package/lib/collection/components/duet-upload/duet-upload.css +64 -0
  99. package/lib/collection/components/duet-upload/duet-upload.js +1863 -0
  100. package/lib/collection/components/duet-upload/errorcodes.utils.js +32 -0
  101. package/lib/collection/components/duet-upload/mock.helpers.js +91 -0
  102. package/lib/collection/components/duet-upload/upload-editable-item-error.js +16 -0
  103. package/lib/collection/components/duet-upload/upload-editable-item-inprogres.js +8 -0
  104. package/lib/collection/components/duet-upload/upload-editable-item-success.js +30 -0
  105. package/lib/collection/components/duet-upload/upload-validators.js +93 -0
  106. package/lib/collection/components/duet-upload/upload.helpers.js +13 -0
  107. package/lib/collection/components/duet-upload/xhr.helpers.js +30 -0
  108. package/lib/collection/components/duet-upload-aria-status/duet-upload-aria-status.js +217 -0
  109. package/lib/collection/utils/js-utils.js +12 -0
  110. package/lib/collection/utils/language-utils.js +6 -3
  111. package/lib/collection/utils/watch-options.js +35 -6
  112. package/lib/custom-elements-bundle/index.d.ts +36 -0
  113. package/lib/custom-elements-bundle/index.js +2014 -322
  114. package/lib/duet/duet.esm.js +1 -1
  115. package/lib/duet/duet.js +1 -1
  116. package/lib/duet/{p-60ab57d4.entry.js → p-042ec8b1.entry.js} +1 -1
  117. package/lib/duet/{p-bcae23fc.system.entry.js → p-0435b54a.system.entry.js} +1 -1
  118. package/lib/duet/{p-dc85d2a4.entry.js → p-04b3e682.entry.js} +1 -1
  119. package/lib/duet/p-0ac2e60d.system.entry.js +4 -0
  120. package/lib/duet/p-0d22396e.system.js +16 -0
  121. package/lib/duet/p-1082d9f2.system.entry.js +4 -0
  122. package/lib/duet/p-12721178.js +4 -0
  123. package/lib/duet/{p-7d080785.system.entry.js → p-12fc4849.system.entry.js} +1 -1
  124. package/lib/duet/{p-c4737f88.entry.js → p-15fae689.entry.js} +1 -1
  125. package/lib/duet/p-1ad58142.entry.js +4 -0
  126. package/lib/duet/{p-c5f10483.system.entry.js → p-1c7d7cdd.system.entry.js} +1 -1
  127. package/lib/duet/p-1cf8dbc7.system.js +4 -0
  128. package/lib/duet/p-1dcbd837.system.entry.js +4 -0
  129. package/lib/duet/{p-fdecaf46.entry.js → p-1ecddc1d.entry.js} +1 -1
  130. package/lib/duet/p-2764f081.js +4 -0
  131. package/lib/duet/p-2b4bd1b2.system.entry.js +4 -0
  132. package/lib/duet/p-2d8e0faa.system.entry.js +4 -0
  133. package/lib/duet/{p-453955cc.system.entry.js → p-33538e90.system.entry.js} +1 -1
  134. package/lib/duet/{p-b1b8e510.entry.js → p-3364cfd2.entry.js} +1 -1
  135. package/lib/duet/p-350cea4e.system.entry.js +4 -0
  136. package/lib/duet/{p-bd9a7d8f.js → p-35a3794e.js} +0 -0
  137. package/lib/duet/p-39e9d638.entry.js +4 -0
  138. package/lib/duet/{p-1e7222c2.entry.js → p-3a7e519e.entry.js} +1 -1
  139. package/lib/duet/{p-9ce1baab.system.entry.js → p-3bcf2054.system.entry.js} +1 -1
  140. package/lib/duet/{p-322d1c38.js → p-3c1971d8.js} +1 -1
  141. package/lib/duet/{p-ef45cfe9.system.entry.js → p-3cad13af.system.entry.js} +1 -1
  142. package/lib/duet/p-408e8cdb.system.js +4 -0
  143. package/lib/duet/p-4a14da52.entry.js +4 -0
  144. package/lib/duet/{p-f96c4093.system.entry.js → p-4e17a6cb.system.entry.js} +1 -1
  145. package/lib/duet/{p-fbd83d67.entry.js → p-50b796eb.entry.js} +1 -1
  146. package/lib/duet/{p-22f56356.system.entry.js → p-5727cd82.system.entry.js} +1 -1
  147. package/lib/duet/{p-9c94be45.entry.js → p-582f3a2c.entry.js} +1 -1
  148. package/lib/duet/{p-e39471b6.entry.js → p-5b9621e2.entry.js} +1 -1
  149. package/lib/duet/{p-3e1ef509.system.entry.js → p-5f79eff8.system.entry.js} +1 -1
  150. package/lib/duet/{p-95626e7e.system.entry.js → p-60e721aa.system.entry.js} +1 -1
  151. package/lib/duet/{p-b03a46b6.entry.js → p-60ef3d05.entry.js} +1 -1
  152. package/lib/duet/{p-57ea2576.system.js → p-61fc3872.system.js} +1 -1
  153. package/lib/duet/{p-1cd7177f.entry.js → p-637df820.entry.js} +1 -1
  154. package/lib/duet/{p-07263910.system.entry.js → p-6402041d.system.entry.js} +1 -1
  155. package/lib/duet/p-64c0aa2a.entry.js +4 -0
  156. package/lib/duet/{p-28b67b94.entry.js → p-65451003.entry.js} +1 -1
  157. package/lib/duet/{p-1bfbc988.entry.js → p-659d6cb7.entry.js} +1 -1
  158. package/lib/duet/{p-91fa68a5.js → p-66fdebc5.js} +1 -1
  159. package/lib/duet/p-6708db8a.entry.js +4 -0
  160. package/lib/duet/{p-e08b8909.entry.js → p-68635a1c.entry.js} +1 -1
  161. package/lib/duet/p-6e363557.system.js +4 -0
  162. package/lib/duet/p-70fafc98.system.js +4 -0
  163. package/lib/duet/p-720a36f2.entry.js +4 -0
  164. package/lib/duet/{p-f53c8019.entry.js → p-72629304.entry.js} +1 -1
  165. package/lib/duet/p-75a104e3.entry.js +4 -0
  166. package/lib/duet/{p-02ad46a0.system.entry.js → p-75e5d4d1.system.entry.js} +1 -1
  167. package/lib/duet/{p-33cf6ed1.entry.js → p-7ab0bad8.entry.js} +1 -1
  168. package/lib/duet/{p-e834c8d5.system.entry.js → p-7ceaf4ef.system.entry.js} +1 -1
  169. package/lib/duet/{p-a1d12e94.system.entry.js → p-7f8cce41.system.entry.js} +1 -1
  170. package/lib/duet/{p-6d2da245.entry.js → p-7fed7f57.entry.js} +1 -1
  171. package/lib/duet/p-8143f3de.js +4 -0
  172. package/lib/duet/p-8c2f14d8.system.entry.js +4 -0
  173. package/lib/duet/{p-4670a654.entry.js → p-8c730326.entry.js} +1 -1
  174. package/lib/duet/{p-de093c16.entry.js → p-9125ed25.entry.js} +1 -1
  175. package/lib/duet/p-933c2774.system.entry.js +4 -0
  176. package/lib/duet/{p-b7e50cfa.entry.js → p-9584411c.entry.js} +1 -1
  177. package/lib/duet/p-987edcd0.js +15 -0
  178. package/lib/duet/p-9930e52e.entry.js +4 -0
  179. package/lib/duet/p-9a09ac2b.system.entry.js +4 -0
  180. package/lib/duet/{p-64109493.entry.js → p-a09ddd8f.entry.js} +1 -1
  181. package/lib/duet/{p-504dbf8f.system.entry.js → p-a2b2fa13.system.entry.js} +1 -1
  182. package/lib/duet/{p-2826f987.js → p-ad07f399.js} +1 -1
  183. package/lib/duet/{p-605bc214.system.entry.js → p-b1ad7a52.system.entry.js} +1 -1
  184. package/lib/duet/{p-f0b1850a.system.entry.js → p-b5dc29b8.system.entry.js} +1 -1
  185. package/lib/duet/p-ba6214be.entry.js +4 -0
  186. package/lib/duet/{p-92d38668.system.entry.js → p-be349a3d.system.entry.js} +1 -1
  187. package/lib/duet/{p-56e172f5.system.entry.js → p-c0f3f60f.system.entry.js} +1 -1
  188. package/lib/duet/{p-fd98468a.system.js → p-c18a599e.system.js} +0 -0
  189. package/lib/duet/p-c3c95a34.system.entry.js +4 -0
  190. package/lib/duet/{p-d4b4bfa6.entry.js → p-c506017d.entry.js} +1 -1
  191. package/lib/duet/p-c74cecf2.system.entry.js +4 -0
  192. package/lib/duet/p-c9a11360.entry.js +4 -0
  193. package/lib/duet/p-cd21755b.entry.js +4 -0
  194. package/lib/duet/p-cd597d62.system.entry.js +4 -0
  195. package/lib/duet/p-cff461b6.entry.js +4 -0
  196. package/lib/duet/{p-7b6db837.system.entry.js → p-d0fb19f7.system.entry.js} +1 -1
  197. package/lib/duet/{p-69a5dc6b.entry.js → p-d1dfa30e.entry.js} +1 -1
  198. package/lib/duet/{p-1cec5a70.system.entry.js → p-d4e706ac.system.entry.js} +1 -1
  199. package/lib/duet/{p-8cb47a70.system.entry.js → p-d5e2bb48.system.entry.js} +1 -1
  200. package/lib/duet/p-dd79932a.entry.js +4 -0
  201. package/lib/duet/p-dd9b8fcb.system.entry.js +4 -0
  202. package/lib/duet/p-ddb6344c.system.js +4 -0
  203. package/lib/duet/{p-47645ea8.system.entry.js → p-de43620d.system.entry.js} +1 -1
  204. package/lib/duet/p-e038da47.system.entry.js +4 -0
  205. package/lib/duet/p-eb55ccd2.system.js +4 -0
  206. package/lib/duet/p-ebc4e334.js +4 -0
  207. package/lib/duet/{p-5fc7e1f7.system.entry.js → p-f37ffb6f.system.entry.js} +1 -1
  208. package/lib/duet/p-f8744611.entry.js +4 -0
  209. package/lib/duet/p-fa99eaa4.system.js +4 -0
  210. package/lib/duet/{p-746655ba.entry.js → p-fd00b025.entry.js} +1 -1
  211. package/lib/esm/{dom-21034390.js → dom-58cd15f6.js} +1 -1
  212. package/lib/esm/duet-alert.entry.js +2 -2
  213. package/lib/esm/duet-badge.entry.js +1 -1
  214. package/lib/esm/duet-button_2.entry.js +4 -4
  215. package/lib/esm/duet-caption_4.entry.js +17 -10
  216. package/lib/esm/duet-card.entry.js +5 -5
  217. package/lib/esm/duet-checkbox.entry.js +2 -2
  218. package/lib/esm/duet-choice_2.entry.js +54 -25
  219. package/lib/esm/duet-collapsible.entry.js +3 -448
  220. package/lib/esm/duet-cookie-consent.entry.js +1 -1
  221. package/lib/esm/duet-date-picker.entry.js +7 -7
  222. package/lib/esm/duet-divider_2.entry.js +1 -1
  223. package/lib/esm/duet-editable-table-button.entry.js +85 -0
  224. package/lib/esm/duet-editable-table_4.entry.js +1438 -0
  225. package/lib/esm/duet-empty-state.entry.js +1 -1
  226. package/lib/esm/duet-fieldset.entry.js +1 -1
  227. package/lib/esm/duet-footer.entry.js +2 -2
  228. package/lib/esm/duet-grid_2.entry.js +69 -4
  229. package/lib/esm/duet-header_2.entry.js +3 -3
  230. package/lib/esm/duet-hero.entry.js +2 -2
  231. package/lib/esm/duet-icon.entry.js +5 -13
  232. package/lib/esm/duet-input_2.entry.js +6 -6
  233. package/lib/esm/duet-layout.entry.js +1 -1
  234. package/lib/esm/duet-list_2.entry.js +2 -2
  235. package/lib/esm/duet-modal.entry.js +3 -3
  236. package/lib/esm/duet-notification_2.entry.js +2 -2
  237. package/lib/esm/duet-number-input.entry.js +2 -2
  238. package/lib/esm/duet-progress.entry.js +71 -0
  239. package/lib/esm/duet-radio_2.entry.js +2 -2
  240. package/lib/esm/duet-range-slider.entry.js +2 -2
  241. package/lib/esm/duet-select.entry.js +5 -5
  242. package/lib/esm/duet-step_2.entry.js +1 -1
  243. package/lib/esm/duet-tab_2.entry.js +3 -3
  244. package/lib/esm/duet-textarea.entry.js +5 -5
  245. package/lib/esm/duet-toggle.entry.js +1 -1
  246. package/lib/esm/duet-tooltip.entry.js +2 -2
  247. package/lib/esm/duet-tray.entry.js +3 -3
  248. package/lib/esm/duet-upload-aria-status.entry.js +96 -0
  249. package/lib/esm/duet-visually-hidden.entry.js +1 -1
  250. package/lib/esm/duet.js +4 -4
  251. package/lib/esm/{focus-utils-1995e5a9.js → focus-utils-c1fa24c4.js} +1 -1
  252. package/lib/esm/{index-6e246691.js → index-05e43a37.js} +91 -78
  253. package/lib/esm/{language-utils-d5c38f65.js → language-utils-344d894c.js} +6 -3
  254. package/lib/esm/loader.js +3 -3
  255. package/lib/esm/{shadow-css-31e2d504.js → shadow-css-7c726abb.js} +9 -10
  256. package/lib/esm/{token-utils-5a35377f.js → token-utils-590d9413.js} +1 -1
  257. package/lib/esm/tokens-e110dc89.js +453 -0
  258. package/lib/esm/{tokens.module-edb66c04.js → tokens.module-49cbf963.js} +3 -1
  259. package/lib/esm/watch-options-dd55bce8.js +57 -0
  260. package/lib/esm-es5/{dom-21034390.js → dom-58cd15f6.js} +0 -0
  261. package/lib/esm-es5/duet-alert.entry.js +1 -1
  262. package/lib/esm-es5/duet-badge.entry.js +1 -1
  263. package/lib/esm-es5/duet-button_2.entry.js +1 -1
  264. package/lib/esm-es5/duet-caption_4.entry.js +2 -2
  265. package/lib/esm-es5/duet-card.entry.js +1 -1
  266. package/lib/esm-es5/duet-checkbox.entry.js +1 -1
  267. package/lib/esm-es5/duet-choice_2.entry.js +1 -1
  268. package/lib/esm-es5/duet-collapsible.entry.js +2 -2
  269. package/lib/esm-es5/duet-cookie-consent.entry.js +1 -1
  270. package/lib/esm-es5/duet-date-picker.entry.js +1 -1
  271. package/lib/esm-es5/duet-divider_2.entry.js +1 -1
  272. package/lib/esm-es5/duet-editable-table-button.entry.js +4 -0
  273. package/lib/esm-es5/duet-editable-table_4.entry.js +4 -0
  274. package/lib/esm-es5/duet-empty-state.entry.js +1 -1
  275. package/lib/esm-es5/duet-fieldset.entry.js +1 -1
  276. package/lib/esm-es5/duet-footer.entry.js +1 -1
  277. package/lib/esm-es5/duet-grid_2.entry.js +2 -2
  278. package/lib/esm-es5/duet-header_2.entry.js +1 -1
  279. package/lib/esm-es5/duet-hero.entry.js +1 -1
  280. package/lib/esm-es5/duet-icon.entry.js +2 -2
  281. package/lib/esm-es5/duet-input_2.entry.js +1 -1
  282. package/lib/esm-es5/duet-layout.entry.js +1 -1
  283. package/lib/esm-es5/duet-list_2.entry.js +1 -1
  284. package/lib/esm-es5/duet-modal.entry.js +1 -1
  285. package/lib/esm-es5/duet-notification_2.entry.js +1 -1
  286. package/lib/esm-es5/duet-number-input.entry.js +1 -1
  287. package/lib/esm-es5/duet-progress.entry.js +4 -0
  288. package/lib/esm-es5/duet-radio_2.entry.js +1 -1
  289. package/lib/esm-es5/duet-range-slider.entry.js +1 -1
  290. package/lib/esm-es5/duet-select.entry.js +1 -1
  291. package/lib/esm-es5/duet-step_2.entry.js +1 -1
  292. package/lib/esm-es5/duet-tab_2.entry.js +2 -2
  293. package/lib/esm-es5/duet-textarea.entry.js +1 -1
  294. package/lib/esm-es5/duet-toggle.entry.js +1 -1
  295. package/lib/esm-es5/duet-tooltip.entry.js +1 -1
  296. package/lib/esm-es5/duet-tray.entry.js +1 -1
  297. package/lib/esm-es5/duet-upload-aria-status.entry.js +4 -0
  298. package/lib/esm-es5/duet-visually-hidden.entry.js +1 -1
  299. package/lib/esm-es5/duet.js +1 -1
  300. package/lib/esm-es5/{focus-utils-1995e5a9.js → focus-utils-c1fa24c4.js} +1 -1
  301. package/lib/esm-es5/index-05e43a37.js +4 -0
  302. package/lib/esm-es5/{language-utils-d5c38f65.js → language-utils-344d894c.js} +1 -1
  303. package/lib/esm-es5/loader.js +1 -1
  304. package/lib/esm-es5/shadow-css-7c726abb.js +15 -0
  305. package/lib/esm-es5/{token-utils-5a35377f.js → token-utils-590d9413.js} +1 -1
  306. package/lib/esm-es5/tokens-e110dc89.js +4 -0
  307. package/lib/esm-es5/tokens.module-49cbf963.js +4 -0
  308. package/lib/esm-es5/watch-options-dd55bce8.js +4 -0
  309. package/lib/html.html-data.json +427 -10
  310. package/lib/types/components/duet-choice/duet-choice.d.ts +23 -4
  311. package/lib/types/components/duet-date-picker/duet-date-picker.d.ts +5 -5
  312. package/lib/types/components/duet-editable-table/duet-editable-table-button.d.ts +72 -0
  313. package/lib/types/components/duet-editable-table/duet-editable-table-item.d.ts +72 -0
  314. package/lib/types/components/duet-editable-table/duet-editable-table-tabledata.d.ts +7 -0
  315. package/lib/types/components/duet-editable-table/duet-editable-table.d.ts +84 -0
  316. package/lib/types/components/duet-grid/duet-grid.d.ts +17 -2
  317. package/lib/types/components/duet-heading/duet-heading.d.ts +2 -2
  318. package/lib/types/components/duet-paragraph/duet-paragraph.d.ts +9 -1
  319. package/lib/types/components/duet-progress/duet-progress.d.ts +64 -0
  320. package/lib/types/components/duet-upload/duet-upload.d.ts +404 -0
  321. package/lib/types/components/duet-upload/errorcodes.utils.d.ts +8 -0
  322. package/lib/types/components/duet-upload/mock.helpers.d.ts +2 -0
  323. package/lib/types/components/duet-upload/upload-editable-item-error.d.ts +7 -0
  324. package/lib/types/components/duet-upload/upload-editable-item-inprogres.d.ts +7 -0
  325. package/lib/types/components/duet-upload/upload-editable-item-success.d.ts +8 -0
  326. package/lib/types/components/duet-upload/upload-validators.d.ts +12 -0
  327. package/lib/types/components/duet-upload/upload.helpers.d.ts +1 -0
  328. package/lib/types/components/duet-upload/xhr.helpers.d.ts +18 -0
  329. package/lib/types/components/duet-upload-aria-status/duet-upload-aria-status.d.ts +49 -0
  330. package/lib/types/components.d.ts +791 -21
  331. package/lib/types/utils/js-utils.d.ts +1 -0
  332. package/lib/types/utils/language-utils.d.ts +5 -1
  333. package/lib/types/utils/watch-options.d.ts +2 -0
  334. package/package.json +6 -6
  335. package/lib/cjs/duet-table.cjs.entry.js +0 -132
  336. package/lib/duet/p-0058512b.js +0 -4
  337. package/lib/duet/p-0224db45.entry.js +0 -4
  338. package/lib/duet/p-15c15c6a.js +0 -15
  339. package/lib/duet/p-202bbd70.entry.js +0 -4
  340. package/lib/duet/p-33426ddc.entry.js +0 -4
  341. package/lib/duet/p-3d3f773d.system.entry.js +0 -4
  342. package/lib/duet/p-3f78a826.system.js +0 -4
  343. package/lib/duet/p-418b2ce7.system.js +0 -4
  344. package/lib/duet/p-43e39d98.system.js +0 -4
  345. package/lib/duet/p-44ffb960.entry.js +0 -4
  346. package/lib/duet/p-5230ee3c.system.entry.js +0 -4
  347. package/lib/duet/p-5aa0d34d.entry.js +0 -4
  348. package/lib/duet/p-6a230911.system.entry.js +0 -4
  349. package/lib/duet/p-6a356ab1.system.js +0 -4
  350. package/lib/duet/p-6a760b8a.entry.js +0 -4
  351. package/lib/duet/p-712e7dde.system.entry.js +0 -4
  352. package/lib/duet/p-82dc2e0b.entry.js +0 -4
  353. package/lib/duet/p-8c8e82aa.system.js +0 -4
  354. package/lib/duet/p-8c980350.system.entry.js +0 -4
  355. package/lib/duet/p-8f03c3eb.entry.js +0 -4
  356. package/lib/duet/p-96808a2e.system.entry.js +0 -4
  357. package/lib/duet/p-96c103b2.system.entry.js +0 -4
  358. package/lib/duet/p-9a89ec39.js +0 -4
  359. package/lib/duet/p-9ff25646.entry.js +0 -4
  360. package/lib/duet/p-b694cbf5.system.js +0 -4
  361. package/lib/duet/p-b82927b0.system.entry.js +0 -4
  362. package/lib/duet/p-ba205dca.entry.js +0 -4
  363. package/lib/duet/p-be19c57b.system.entry.js +0 -4
  364. package/lib/duet/p-c5beceed.js +0 -4
  365. package/lib/duet/p-d35fd913.system.entry.js +0 -4
  366. package/lib/duet/p-d7623eb8.system.entry.js +0 -4
  367. package/lib/duet/p-de842863.entry.js +0 -4
  368. package/lib/duet/p-e58ca7af.system.js +0 -16
  369. package/lib/esm/duet-table.entry.js +0 -128
  370. package/lib/esm/watch-options-de55ea78.js +0 -35
  371. package/lib/esm-es5/duet-table.entry.js +0 -4
  372. package/lib/esm-es5/index-6e246691.js +0 -4
  373. package/lib/esm-es5/shadow-css-31e2d504.js +0 -15
  374. package/lib/esm-es5/tokens.module-edb66c04.js +0 -4
  375. package/lib/esm-es5/watch-options-de55ea78.js +0 -4
@@ -151,6 +151,26 @@
151
151
  font-weight: 600;
152
152
  word-break: break-word;
153
153
  }
154
+ .duet-card-secondary-heading--inline {
155
+ display: block;
156
+ flex: 1;
157
+ align-self: flex-start;
158
+ line-height: 1.875;
159
+ text-align: right;
160
+ }
161
+ @media (max-width: 22.5em) {
162
+ .duet-card-secondary-heading--inline {
163
+ display: none;
164
+ }
165
+ }
166
+ .duet-card-secondary-heading--new-line {
167
+ display: none;
168
+ }
169
+ @media (max-width: 22.5em) {
170
+ .duet-card-secondary-heading--new-line {
171
+ display: block;
172
+ }
173
+ }
154
174
 
155
175
  .duet-card-heading {
156
176
  position: relative;
@@ -106,10 +106,13 @@ export class DuetCard {
106
106
  h("duet-icon", { class: "duet-card-icon", name: this.icon, size: "medium", margin: "none", color: "currentColor" }),
107
107
  h("duet-spacer", { direction: "horizontal", size: "small" }))),
108
108
  h("div", { class: "duet-card-heading-text" }, this.heading),
109
+ this.secondaryHeading && (h(Fragment, null,
110
+ h("duet-spacer", { direction: "horizontal", size: "small" }),
111
+ h("div", { class: "duet-card-secondary-heading duet-card-secondary-heading--inline" }, this.secondaryHeading))),
109
112
  this.collapsible && (h(Fragment, null,
110
113
  h("duet-spacer", { direction: "horizontal", size: "small" }),
111
114
  h("duet-icon", { class: "duet-card-caret", icon: arrowUpIcon.svg, size: "small", margin: "none", color: "currentColor" })))),
112
- this.secondaryHeading && h("div", { class: "duet-card-secondary-heading" }, this.secondaryHeading)));
115
+ this.secondaryHeading && (h("div", { class: "duet-card-secondary-heading duet-card-secondary-heading--new-line" }, this.secondaryHeading))));
113
116
  }
114
117
  /**
115
118
  * Sets focus on the specified `duet-card`. Use this method instead of the global
@@ -31,7 +31,7 @@
31
31
  margin-right: 0 !important;
32
32
  }
33
33
 
34
- :host(:last-of-type:not(:only-child)) {
34
+ :host(:last-child:not(:only-child)) {
35
35
  margin-bottom: 0 !important;
36
36
  }
37
37
 
@@ -308,11 +308,24 @@ input[disabled] + .duet-choice-label .duet-checkmark {
308
308
  display: block;
309
309
  }
310
310
 
311
+ .duet-choice-section-hidden {
312
+ display: none;
313
+ }
314
+
315
+ .duet-choice-card-info.duet-choice-card-collapsed,
316
+ .duet-choice-card-collapsed.duet-choice-card-collapsible {
317
+ position: relative;
318
+ width: auto;
319
+ padding: 0 !important;
320
+ background: unset !important;
321
+ border: 0;
322
+ border-radius: 0;
323
+ }
324
+
311
325
  .duet-choice-card-info, .duet-choice-card-collapsible {
312
326
  padding: 28px !important;
313
327
  position: relative;
314
328
  z-index: 200;
315
- display: none;
316
329
  width: 100%;
317
330
  font-weight: 400;
318
331
  color: #00294d;
@@ -417,8 +430,8 @@ input[disabled] + .duet-choice-label .duet-checkmark {
417
430
 
418
431
  .duet-choice-input {
419
432
  position: absolute !important;
420
- width: 100%;
421
- height: 100%;
433
+ width: auto;
434
+ height: auto;
422
435
  overflow: hidden;
423
436
  clip: rect(1px, 1px, 1px, 1px);
424
437
  color: transparent;
@@ -5,19 +5,23 @@ import infoIcon from "@duetds/icons/lib/assets/messaging-info";
5
5
  import { Component, Element, Event, h, Host, Listen, Method, Prop, State } from "@stencil/core";
6
6
  import { DuetStringsExternalDefaults } from "../../common-strings";
7
7
  import { createID } from "../../utils/create-id";
8
- import { isKeyboardClick, isQuestionKey } from "../../utils/keyboard-utils";
9
- import { getLocaleString } from "../../utils/language-utils";
8
+ import { FocusGuard } from "../../utils/focus-utils";
9
+ import { isEscapeKey, isKeyboardClick, isQuestionKey } from "../../utils/keyboard-utils";
10
+ import { getLanguage, getLocaleString } from "../../utils/language-utils";
10
11
  import { inheritGlobalTheme } from "../../utils/themeable-component";
11
12
  /**
12
13
  * @slot unnamed default slot - The component’s primary content. All child nodes that do not have a slot attribute defined are inserted into this primary slot.
13
14
  * @slot info - Info content. Anything inserted into this slot is displayed in a collapsible info box.
15
+ * @slot collapsible_header - header that is only added to collapsible element, this header should be used when the components collapsible area contains additional interactive elements (such as form items) and should be user for a short description of the content below it, it is mandatory for good accessibility to use this - and aria-decribe-by will point to it. If you use the collapsible area with simple text - describe-by will point to this area
14
16
  * @slot additional - Additional content. Anything inserted into this slot is displayed as additional content under the label and caption
15
17
  */
16
18
  export class DuetChoice {
17
19
  constructor() {
20
+ this.hasHeader = false;
18
21
  this.choiceId = createID("DuetChoice");
19
- this.collapsibleId = createID("DuetChoiceCollapsible");
20
- this.infoId = createID("DuetInfo");
22
+ this.expandId = createID("DuetChoiceExpand");
23
+ this.headerId = createID("DuetChoiceHeader");
24
+ this.infoButtonId = createID("DuetChoiceInfoButton");
21
25
  /**
22
26
  * State() variables
23
27
  * Inlined decorator, alphabetical order.
@@ -95,6 +99,24 @@ export class DuetChoice {
95
99
  * browser from displaying its own validation errors.
96
100
  */
97
101
  this.required = false;
102
+ /**
103
+ * Placeholder defaults
104
+ * @default { fi: "pp.kk.vvvv", en: "dd.mm.yyyy", sv: "dd.mm.åååå" }
105
+ */
106
+ this.infoLabelDefaults = {
107
+ fi: "Lisätietoja",
108
+ en: "More information about",
109
+ sv: "Mera information om",
110
+ };
111
+ /**
112
+ * Hint text to display before the user types into the date picker input.
113
+ * @default {
114
+ * fi: "Lisätietoja",
115
+ * en: "More information about",
116
+ * sv: "Mera information om",
117
+ * }
118
+ */
119
+ this.infoLabel = getLocaleString(this.infoLabelDefaults, getLanguage());
98
120
  this.onMouseEnter = () => {
99
121
  this.isHovering = true;
100
122
  };
@@ -102,7 +124,6 @@ export class DuetChoice {
102
124
  this.isHovering = false;
103
125
  };
104
126
  this.onClick = (ev) => {
105
- this.setFocus();
106
127
  this.toggleChecked(ev);
107
128
  };
108
129
  this.handleKeyDown = (ev) => {
@@ -110,7 +131,7 @@ export class DuetChoice {
110
131
  this.toggleChecked(ev);
111
132
  }
112
133
  if (isQuestionKey(ev) && this.hasInfo) {
113
- this.toggleInfo(ev);
134
+ this.toggleInfo();
114
135
  }
115
136
  };
116
137
  this.onChange = () => {
@@ -144,8 +165,6 @@ export class DuetChoice {
144
165
  if (this.disabled || this.groupDisabled) {
145
166
  return;
146
167
  }
147
- ev.stopPropagation();
148
- ev.preventDefault();
149
168
  this.isInfoOpen = false;
150
169
  // if it's a radio button and it's already checked
151
170
  // we shouldn't fire an event, so exit early
@@ -159,10 +178,10 @@ export class DuetChoice {
159
178
  value: this.value,
160
179
  component: "duet-choice",
161
180
  });
162
- };
163
- this.toggleInfo = ev => {
164
- ev.stopPropagation();
165
181
  ev.preventDefault();
182
+ ev.stopPropagation();
183
+ };
184
+ this.toggleInfo = () => {
166
185
  this.isInfoOpen = !this.isInfoOpen;
167
186
  };
168
187
  }
@@ -172,6 +191,7 @@ export class DuetChoice {
172
191
  componentWillLoad() {
173
192
  inheritGlobalTheme(this);
174
193
  this.hasInfo = !!this.element.querySelector("[slot='info']");
194
+ this.hasHeader = !!this.element.querySelector('[slot="header"]');
175
195
  this.hasAdditional = !!this.element.querySelector("[slot='additional']");
176
196
  }
177
197
  /**
@@ -185,15 +205,18 @@ export class DuetChoice {
185
205
  // @ts-ignore
186
206
  const isTargetContainedInHost = this.element.contains(ev === null || ev === void 0 ? void 0 : ev.relatedTarget) || false;
187
207
  if (!isTargetContainedInHost) {
188
- this.toggleInfo(ev);
208
+ this.toggleInfo();
189
209
  }
190
210
  }
191
211
  }
192
212
  handleHostKeyDown() {
193
213
  this.isKeyDown = true;
194
214
  }
195
- handleHostKeyUp() {
215
+ handleHostKeyUp(ev) {
196
216
  this.isKeyDown = false;
217
+ if (isEscapeKey(ev) && this.isInfoOpen) {
218
+ this.toggleInfo();
219
+ }
197
220
  }
198
221
  /**
199
222
  * Sets focus on the specified `duet-choice`. Use this method instead of the global
@@ -206,11 +229,13 @@ export class DuetChoice {
206
229
  if (this.accessibleDescribedBy) {
207
230
  return this.accessibleDescribedBy;
208
231
  }
209
- if (this.collapsible) {
210
- return this.collapsibleId;
211
- }
212
- else if (this.hasInfo) {
213
- return this.infoId;
232
+ if (this.collapsible || this.hasInfo) {
233
+ if (this.hasHeader) {
234
+ return this.headerId;
235
+ }
236
+ else {
237
+ return this.expandId;
238
+ }
214
239
  }
215
240
  return null;
216
241
  }
@@ -219,6 +244,7 @@ export class DuetChoice {
219
244
  return {
220
245
  "duet-choice-card-info": true,
221
246
  "duet-choice-card-info-expanded": this.isInfoOpen,
247
+ "duet-choice-card-collapsed": !this.isInfoOpen,
222
248
  "duet-theme-turva": this.theme === "turva",
223
249
  };
224
250
  }
@@ -226,6 +252,7 @@ export class DuetChoice {
226
252
  return {
227
253
  "duet-choice-card-collapsible": true,
228
254
  "duet-choice-card-collapsible-expanded": this.checked,
255
+ "duet-choice-card-collapsed": !this.checked,
229
256
  "duet-choice-card-collapsible-disabled": this.disabled || this.groupDisabled ? true : false,
230
257
  "duet-theme-turva": this.theme === "turva",
231
258
  };
@@ -260,7 +287,7 @@ export class DuetChoice {
260
287
  collapsible: this.collapsible,
261
288
  "duet-p-0": this.padding === "none",
262
289
  } },
263
- h("input", { "aria-live": "assertive", "aria-atomic": "true", "aria-relevant": "all", class: "duet-choice-input", type: this.type, onFocus: this.onFocus, onBlur: this.onBlur, onChange: this.onChange, disabled: this.disabled || this.groupDisabled, required: this.required, id: identifier, name: this.name, value: this.value, checked: this.checked, "aria-controls": this.accessibleControls, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": this.getAriaDescribedby(), "aria-flowto": this.hasInfo ? this.nativeInfoButton : "", onKeyDown: this.handleKeyDown, ref: input => (this.nativeInput = input) }),
290
+ h("input", { class: "duet-choice-input", type: this.type, onFocus: this.onFocus, onBlur: this.onBlur, onChange: this.onChange, disabled: this.disabled || this.groupDisabled, required: this.required, id: identifier, name: this.name, value: this.value, checked: this.checked, "aria-controls": this.accessibleControls, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": this.getAriaDescribedby(), onKeyDown: this.handleKeyDown, ref: input => (this.nativeInput = input) }),
264
291
  h("label", { htmlFor: identifier, class: { "duet-choice-label": true, "no-hover": this.isHovering }, onClick: this.onClick },
265
292
  this.icon && (h("div", { class: "duet-choice-card-icon" },
266
293
  h("duet-icon", { margin: "none", size: "small", name: this.icon, color: "currentColor" }))),
@@ -272,16 +299,26 @@ export class DuetChoice {
272
299
  h("duet-spacer", { size: "xx-small" }),
273
300
  h("slot", { name: "additional" }))),
274
301
  h("div", { class: { "duet-checkmark-container": true, "duet-checkmark-radio": this.type === "radio" } }, this.checked && h("div", { class: "duet-checkmark" })))),
275
- this.hasInfo && !this.collapsible && (h("button", { class: {
302
+ this.hasInfo && !this.collapsible && (h("button", { ref: button => (this.infoButtonEl = button), id: this.infoButtonId, class: {
276
303
  "duet-choice-info-toggle": true,
277
304
  "duet-theme-turva": this.theme === "turva",
278
- }, onMouseEnter: this.onMouseEnter, onMouseLeave: this.onMouseLeave, onClick: this.toggleInfo, disabled: this.disabled || this.groupDisabled, "aria-expanded": this.isInfoOpen ? "true" : "false", "aria-controls": this.infoId, "aria-flowto": this.infoId, tabindex: this.type === "radio" && !this.checked ? "-1" : "0", type: "button" },
305
+ }, onMouseEnter: this.onMouseEnter, onMouseLeave: this.onMouseLeave, onClick: this.toggleInfo, disabled: this.disabled || this.groupDisabled, "aria-expanded": this.isInfoOpen ? "true" : "false", "aria-label": `${this.infoLabel} ${this.label}`, "aria-controls": this.expandId, "aria-flowto": this.expandId, tabindex: this.type === "radio" && !this.checked ? "-1" : "0", type: "button" },
279
306
  h("duet-visually-hidden", { "aria-hidden": !this.isBlurred ? "true" : "false" }, this.accessibleLabelInfoButton),
280
307
  h("div", { class: "duet-choice-info-icon" },
281
308
  h("duet-icon", { icon: infoIcon.svg, margin: "none", size: "small", color: "currentColor" }))))),
282
- h("div", { "aria-live": "polite", "aria-atomic": "true", "aria-relevant": "all", role: this.hasInfo && !this.collapsible ? "note" : "none", class: this.getClassNames(), id: this.hasInfo ? this.infoId : this.collapsible ? this.collapsibleId : "" },
283
- this.hasInfo && !this.collapsible && h("slot", { name: "info" }),
284
- !this.hasInfo && h("slot", null))));
309
+ this.collapsible || this.hasInfo ? (h("div", { class: this.getClassNames(), id: this.expandId },
310
+ h("span", { class: {
311
+ "duet-choice-section-visible": this.collapsible ? this.checked : this.isInfoOpen,
312
+ "duet-choice-section-hidden": this.collapsible ? !this.checked : !this.isInfoOpen,
313
+ } },
314
+ h("span", { id: this.headerId },
315
+ h("slot", { name: "header" })),
316
+ this.hasInfo ? (h("span", null,
317
+ h("span", { "aria-relevant": "all", "aria-atomic": "true", "aria-live": this.isInfoOpen ? "polite" : "off" },
318
+ h("slot", { name: "info" })),
319
+ h("slot", null))) : (h("span", null,
320
+ h("slot", null)))),
321
+ this.isInfoOpen && h(FocusGuard, { moveFocusTo: this.infoButtonEl }))) : null));
285
322
  }
286
323
  static get is() { return "duet-choice"; }
287
324
  static get encapsulation() { return "scoped"; }
@@ -368,8 +405,8 @@ export class DuetChoice {
368
405
  "optional": false,
369
406
  "docs": {
370
407
  "tags": [{
371
- "text": "{fi: \"Avautuu uuteen ikkunaan\",sv: \"\u00D6ppnas i nytt f\u00F6nster\",en: \"Opens in a new window\"}",
372
- "name": "default"
408
+ "name": "default",
409
+ "text": "{fi: \"Avautuu uuteen ikkunaan\",sv: \"\u00D6ppnas i nytt f\u00F6nster\",en: \"Opens in a new window\"}"
373
410
  }],
374
411
  "text": "Accessible label that is read for screen reader users in the info toggle trigger button.\nNot visible for normal users."
375
412
  },
@@ -440,7 +477,7 @@ export class DuetChoice {
440
477
  "optional": false,
441
478
  "docs": {
442
479
  "tags": [],
443
- "text": "Indicates the id of a component that describes the choice."
480
+ "text": "Indicates the id of a component that describes the choice.\nif this is set to an empty string it will prevent screenreaders from flowing to a collapsible content\nand can be used as an escape hatch if that behaviour is undesired."
444
481
  },
445
482
  "attribute": "accessible-described-by",
446
483
  "reflect": false
@@ -671,8 +708,8 @@ export class DuetChoice {
671
708
  "optional": false,
672
709
  "docs": {
673
710
  "tags": [{
674
- "text": "Determines whether the control is displayed horizontally or vertically within\na group.",
675
- "name": "internal"
711
+ "name": "internal",
712
+ "text": "Determines whether the control is displayed horizontally or vertically within\na group."
676
713
  }],
677
714
  "text": ""
678
715
  },
@@ -691,8 +728,8 @@ export class DuetChoice {
691
728
  "optional": false,
692
729
  "docs": {
693
730
  "tags": [{
694
- "text": "Determines, whether the control is disabled from the parent group.",
695
- "name": "internal"
731
+ "name": "internal",
732
+ "text": "Determines, whether the control is disabled from the parent group."
696
733
  }],
697
734
  "text": ""
698
735
  },
@@ -711,8 +748,8 @@ export class DuetChoice {
711
748
  "optional": false,
712
749
  "docs": {
713
750
  "tags": [{
714
- "text": "Determines whether the group has responsive behavior",
715
- "name": "internal"
751
+ "name": "internal",
752
+ "text": "Determines whether the group has responsive behavior"
716
753
  }],
717
754
  "text": ""
718
755
  },
@@ -754,6 +791,53 @@ export class DuetChoice {
754
791
  "attribute": "required",
755
792
  "reflect": false,
756
793
  "defaultValue": "false"
794
+ },
795
+ "infoLabelDefaults": {
796
+ "type": "string",
797
+ "mutable": false,
798
+ "complexType": {
799
+ "original": "DuetLangObject | string",
800
+ "resolved": "DuetLangObject | string",
801
+ "references": {
802
+ "DuetLangObject": {
803
+ "location": "import",
804
+ "path": "../../utils/language-utils"
805
+ }
806
+ }
807
+ },
808
+ "required": false,
809
+ "optional": false,
810
+ "docs": {
811
+ "tags": [{
812
+ "name": "default",
813
+ "text": "{ fi: \"pp.kk.vvvv\", en: \"dd.mm.yyyy\", sv: \"dd.mm.\u00E5\u00E5\u00E5\u00E5\" }"
814
+ }],
815
+ "text": "Placeholder defaults"
816
+ },
817
+ "attribute": "accessible-label-info-default",
818
+ "reflect": false,
819
+ "defaultValue": "{\n fi: \"Lis\u00E4tietoja\",\n en: \"More information about\",\n sv: \"Mera information om\",\n }"
820
+ },
821
+ "infoLabel": {
822
+ "type": "string",
823
+ "mutable": false,
824
+ "complexType": {
825
+ "original": "string",
826
+ "resolved": "string",
827
+ "references": {}
828
+ },
829
+ "required": false,
830
+ "optional": false,
831
+ "docs": {
832
+ "tags": [{
833
+ "name": "default",
834
+ "text": "{\nfi: \"Lis\u00E4tietoja\",\nen: \"More information about\",\nsv: \"Mera information om\",\n}"
835
+ }],
836
+ "text": "Hint text to display before the user types into the date picker input."
837
+ },
838
+ "attribute": "info-label",
839
+ "reflect": false,
840
+ "defaultValue": "getLocaleString(this.infoLabelDefaults, getLanguage())"
757
841
  }
758
842
  }; }
759
843
  static get states() { return {
@@ -33,11 +33,11 @@ export class DuetChoiceGroup {
33
33
  /**
34
34
  * Additional caption to show inside the label of the choice group.
35
35
  */
36
- this.caption = "";
36
+ this.caption = undefined;
37
37
  /**
38
38
  * Tooltip to display next to the label of the choice group.
39
39
  */
40
- this.tooltip = "";
40
+ this.tooltip = undefined;
41
41
  /**
42
42
  * With direction setting you can force the tooltip to always open towards left
43
43
  * or right instead of automatically determining the direction.
@@ -309,7 +309,7 @@ export class DuetChoiceGroup {
309
309
  },
310
310
  "attribute": "caption",
311
311
  "reflect": false,
312
- "defaultValue": "\"\""
312
+ "defaultValue": "undefined"
313
313
  },
314
314
  "tooltip": {
315
315
  "type": "string",
@@ -327,7 +327,7 @@ export class DuetChoiceGroup {
327
327
  },
328
328
  "attribute": "tooltip",
329
329
  "reflect": false,
330
- "defaultValue": "\"\""
330
+ "defaultValue": "undefined"
331
331
  },
332
332
  "tooltipDirection": {
333
333
  "type": "string",
@@ -47,14 +47,14 @@ export class DuetDatePicker {
47
47
  */
48
48
  this.margin = "auto";
49
49
  /**
50
- * The currently active language. This setting changes the month/year/day
50
+ * The currently active language. This setting changes the month/year/day.
51
51
  * names and button labels as well as all screen reader labels.
52
- * @deprecated this is now handled via the html lang tag, and is no longer used - kept to avoid breaking changes and ease unit testing
52
+ * @deprecated this is now handled via the html lang tag, and is no longer used - kept to avoid breaking changes and ease unit testing.
53
53
  * @default "fi"
54
54
  */
55
55
  this.language = getLanguage();
56
56
  /**
57
- * Placeholder defaults
57
+ * Placeholder defaults.
58
58
  * @default { fi: "pp.kk.vvvv", en: "dd.mm.yyyy", sv: "dd.mm.åååå" }
59
59
  */
60
60
  this.placeholderDefaults = {
@@ -117,7 +117,7 @@ export class DuetDatePicker {
117
117
  */
118
118
  this.min = "";
119
119
  /**
120
- * Minimum date allowed to be picked. Must be in IS0-8601 format: YYYY-MM-DD
120
+ * Minimum date allowed to be picked. Must be in IS0-8601 format: YYYY-MM-DD.
121
121
  * This setting can be used alone or together with the min property.
122
122
  */
123
123
  this.max = "";
@@ -559,7 +559,7 @@ export class DuetDatePicker {
559
559
  "optional": false,
560
560
  "docs": {
561
561
  "tags": [],
562
- "text": "Caption (underneath label) that can be set as a way of adding extra information"
562
+ "text": "Caption (underneath label) that can be set as a way of adding extra information."
563
563
  },
564
564
  "attribute": "caption",
565
565
  "reflect": false
@@ -604,13 +604,13 @@ export class DuetDatePicker {
604
604
  "optional": false,
605
605
  "docs": {
606
606
  "tags": [{
607
- "text": "this is now handled via the html lang tag, and is no longer used - kept to avoid breaking changes and ease unit testing",
608
- "name": "deprecated"
607
+ "name": "deprecated",
608
+ "text": "this is now handled via the html lang tag, and is no longer used - kept to avoid breaking changes and ease unit testing."
609
609
  }, {
610
- "text": "\"fi\"",
611
- "name": "default"
610
+ "name": "default",
611
+ "text": "\"fi\""
612
612
  }],
613
- "text": "The currently active language. This setting changes the month/year/day\nnames and button labels as well as all screen reader labels."
613
+ "text": "The currently active language. This setting changes the month/year/day.\nnames and button labels as well as all screen reader labels."
614
614
  },
615
615
  "attribute": "language",
616
616
  "reflect": false,
@@ -633,10 +633,10 @@ export class DuetDatePicker {
633
633
  "optional": false,
634
634
  "docs": {
635
635
  "tags": [{
636
- "text": "{ fi: \"pp.kk.vvvv\", en: \"dd.mm.yyyy\", sv: \"dd.mm.\u00E5\u00E5\u00E5\u00E5\" }",
637
- "name": "default"
636
+ "name": "default",
637
+ "text": "{ fi: \"pp.kk.vvvv\", en: \"dd.mm.yyyy\", sv: \"dd.mm.\u00E5\u00E5\u00E5\u00E5\" }"
638
638
  }],
639
- "text": "Placeholder defaults"
639
+ "text": "Placeholder defaults."
640
640
  },
641
641
  "attribute": "placeholder-default",
642
642
  "reflect": false,
@@ -654,8 +654,8 @@ export class DuetDatePicker {
654
654
  "optional": false,
655
655
  "docs": {
656
656
  "tags": [{
657
- "text": "{ fi: \"pp.kk.vvvv\", en: \"dd.mm.yyyy\", sv: \"dd.mm.\u00E5\u00E5\u00E5\u00E5\" }",
658
- "name": "default"
657
+ "name": "default",
658
+ "text": "{ fi: \"pp.kk.vvvv\", en: \"dd.mm.yyyy\", sv: \"dd.mm.\u00E5\u00E5\u00E5\u00E5\" }"
659
659
  }],
660
660
  "text": "Hint text to display before the user types into the date picker input."
661
661
  },
@@ -949,7 +949,7 @@ export class DuetDatePicker {
949
949
  "optional": false,
950
950
  "docs": {
951
951
  "tags": [],
952
- "text": "Minimum date allowed to be picked. Must be in IS0-8601 format: YYYY-MM-DD\nThis setting can be used alone or together with the min property."
952
+ "text": "Minimum date allowed to be picked. Must be in IS0-8601 format: YYYY-MM-DD.\nThis setting can be used alone or together with the min property."
953
953
  },
954
954
  "attribute": "max",
955
955
  "reflect": false,
@@ -0,0 +1,32 @@
1
+ *,
2
+ *::after,
3
+ *::before {
4
+ box-sizing: border-box;
5
+ padding: 0;
6
+ margin: 0;
7
+ background: transparent;
8
+ border: 0;
9
+ -moz-appearance: none;
10
+ -webkit-appearance: none;
11
+ appearance: none;
12
+ }
13
+
14
+ :host button {
15
+ display: flex;
16
+ align-content: space-between;
17
+ justify-content: center;
18
+ min-width: 32px;
19
+ max-width: 32px;
20
+ height: 100%;
21
+ min-height: 32px;
22
+ max-height: 32px;
23
+ padding: 0;
24
+ margin: 0;
25
+ cursor: pointer !important;
26
+ background-color: transparent;
27
+ border: 1px solid;
28
+ border-radius: 50%;
29
+ }
30
+ :host button duet-icon {
31
+ align-self: center;
32
+ }