@duetds/components 4.36.1 → 5.0.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 (315) hide show
  1. package/hydrate/index.js +1135 -983
  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 +4 -4
  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 +7 -7
  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-2404e669.js} +1 -1
  45. package/lib/cjs/{index-4f342f1c.js → index-91b9281f.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-choice/duet-choice.css +20 -15
  56. package/lib/collection/components/duet-choice/duet-choice.js +10 -8
  57. package/lib/collection/components/duet-date-picker/duet-date-picker.css +2 -57
  58. package/lib/collection/components/duet-date-picker/duet-date-picker.js +2 -6
  59. package/lib/collection/components/duet-editable-table/duet-editable-table-tabledata.js +3 -2
  60. package/lib/collection/components/duet-editable-table/duet-editable-table.css +20 -1
  61. package/lib/collection/components/duet-editable-table/duet-editable-table.js +331 -205
  62. package/lib/collection/components/duet-header/duet-header.css +5 -1
  63. package/lib/collection/components/duet-header/duet-header.js +4 -3
  64. package/lib/collection/components/duet-pagination/duet-pagination.css +3 -62
  65. package/lib/collection/components/duet-pagination/duet-pagination.js +49 -19
  66. package/lib/collection/components/duet-range-stepper/duet-range-stepper.css +4 -55
  67. package/lib/collection/components/duet-range-stepper/duet-range-stepper.js +2 -4
  68. package/lib/collection/components/duet-table/duet-table.css +42 -8
  69. package/lib/collection/components/duet-table/duet-table.js +11 -2
  70. package/lib/collection/components/duet-upload/duet-upload.css +25 -0
  71. package/lib/collection/components/duet-upload/duet-upload.js +270 -166
  72. package/lib/collection/components/duet-upload/upload-validators.js +1 -1
  73. package/lib/collection/utils/fixture-utils.js +3 -1
  74. package/lib/collection/utils/js-utils.js +36 -1
  75. package/lib/custom-elements-bundle/index.d.ts +6 -12
  76. package/lib/custom-elements-bundle/index.js +1148 -1007
  77. package/lib/duet/duet.esm.js +1 -1
  78. package/lib/duet/duet.js +1 -1
  79. package/lib/duet/{p-061835f3.system.entry.js → p-09bdb2b4.system.entry.js} +1 -1
  80. package/lib/duet/{p-1a95aeb6.entry.js → p-0e4b29a3.entry.js} +1 -1
  81. package/lib/duet/{p-65c418f7.system.entry.js → p-16477cd0.system.entry.js} +1 -1
  82. package/lib/duet/p-1c993c62.system.entry.js +4 -0
  83. package/lib/duet/{p-8c53bc24.system.entry.js → p-1f78f660.system.entry.js} +1 -1
  84. package/lib/duet/{p-ef275410.entry.js → p-24442312.entry.js} +1 -1
  85. package/lib/duet/{p-ddb6344c.system.js → p-268c0abb.system.js} +0 -0
  86. package/lib/duet/p-2d602c49.system.entry.js +4 -0
  87. package/lib/duet/{p-946f34b4.system.entry.js → p-305a8332.system.entry.js} +1 -1
  88. package/lib/duet/{p-4fdbc6ff.system.entry.js → p-3724e8bf.system.entry.js} +1 -1
  89. package/lib/duet/{p-5d9affcd.entry.js → p-40deceee.entry.js} +1 -1
  90. package/lib/duet/{p-211b4485.system.entry.js → p-4169371b.system.entry.js} +1 -1
  91. package/lib/duet/{p-9ce0e625.entry.js → p-4306e41d.entry.js} +1 -1
  92. package/lib/duet/{p-5376a9db.entry.js → p-43a310bd.entry.js} +1 -1
  93. package/lib/duet/{p-29255af8.entry.js → p-45c0bd39.entry.js} +1 -1
  94. package/lib/duet/{p-fd2211ab.entry.js → p-47885d97.entry.js} +1 -1
  95. package/lib/duet/{p-615bfc61.system.entry.js → p-4b9af907.system.entry.js} +1 -1
  96. package/lib/duet/{p-1c4721a1.entry.js → p-4f9d6d43.entry.js} +1 -1
  97. package/lib/duet/{p-85100e09.entry.js → p-52f07766.entry.js} +1 -1
  98. package/lib/duet/{p-e8e35258.entry.js → p-567321c9.entry.js} +1 -1
  99. package/lib/duet/p-572ee1f5.entry.js +4 -0
  100. package/lib/duet/{p-cb445018.js → p-5746d88c.js} +1 -1
  101. package/lib/duet/{p-286d2ad2.system.entry.js → p-57f6b52e.system.entry.js} +1 -1
  102. package/lib/duet/p-5a4e576c.entry.js +4 -0
  103. package/lib/duet/{p-fae71c1f.entry.js → p-5ad66dfd.entry.js} +1 -1
  104. package/lib/duet/{p-f6da56c8.entry.js → p-5cc97dae.entry.js} +1 -1
  105. package/lib/duet/{p-03cf3ebf.entry.js → p-5ce39b6b.entry.js} +1 -1
  106. package/lib/duet/{p-46ae601a.entry.js → p-615f0b6f.entry.js} +1 -1
  107. package/lib/duet/{p-83452e8f.entry.js → p-63f6099b.entry.js} +1 -1
  108. package/lib/duet/p-681e93cd.entry.js +4 -0
  109. package/lib/duet/p-6a455a78.system.entry.js +4 -0
  110. package/lib/duet/{p-c52f4de0.system.entry.js → p-6d142621.system.entry.js} +1 -1
  111. package/lib/duet/{p-ca0ee655.system.entry.js → p-6fc73186.system.entry.js} +1 -1
  112. package/lib/duet/{p-e5ce7aad.system.entry.js → p-72469869.system.entry.js} +1 -1
  113. package/lib/duet/{p-20cdb787.entry.js → p-73d3d1bf.entry.js} +1 -1
  114. package/lib/duet/{p-164a7037.system.entry.js → p-763d700b.system.entry.js} +1 -1
  115. package/lib/duet/{p-d9716aec.system.entry.js → p-770fdb8f.system.entry.js} +1 -1
  116. package/lib/duet/{p-4e2532c7.system.js → p-77acbfe4.system.js} +1 -1
  117. package/lib/duet/{p-d21f19cc.system.js → p-7d65b8fc.system.js} +1 -1
  118. package/lib/duet/{p-ffb5fb75.system.entry.js → p-7e1d6ac6.system.entry.js} +1 -1
  119. package/lib/duet/{p-c7fa7dcc.system.entry.js → p-7f58aced.system.entry.js} +1 -1
  120. package/lib/duet/{p-22baf1f8.system.entry.js → p-806dc8b7.system.entry.js} +1 -1
  121. package/lib/duet/{p-fa99eaa4.system.js → p-812b0905.system.js} +0 -0
  122. package/lib/duet/{p-e7b53f4f.system.entry.js → p-854558fd.system.entry.js} +1 -1
  123. package/lib/duet/{p-c514010b.system.entry.js → p-85507ac3.system.entry.js} +1 -1
  124. package/lib/duet/p-8a241b0d.system.js +4 -0
  125. package/lib/duet/p-8ab8531d.entry.js +4 -0
  126. package/lib/duet/{p-eb892975.system.entry.js → p-8ff7380a.system.entry.js} +1 -1
  127. package/lib/duet/p-92639d0b.system.js +4 -0
  128. package/lib/duet/{p-3d1b0105.entry.js → p-97b9a61f.entry.js} +1 -1
  129. package/lib/duet/{p-3bb702e3.system.entry.js → p-97f24160.system.entry.js} +2 -2
  130. package/lib/duet/{p-740b5609.entry.js → p-9816d0ab.entry.js} +1 -1
  131. package/lib/duet/{p-ae14591e.entry.js → p-9c37e704.entry.js} +1 -1
  132. package/lib/duet/p-9c57b94d.system.entry.js +4 -0
  133. package/lib/duet/{p-635dacce.system.entry.js → p-9fa719d0.system.entry.js} +1 -1
  134. package/lib/duet/p-a4c7bb27.system.entry.js +4 -0
  135. package/lib/duet/{p-3c3536be.entry.js → p-a9158499.entry.js} +1 -1
  136. package/lib/duet/{p-e7dd8a15.system.entry.js → p-a934db65.system.entry.js} +1 -1
  137. package/lib/duet/{p-e35d8543.entry.js → p-acb043aa.entry.js} +1 -1
  138. package/lib/duet/{p-7f0e360d.entry.js → p-b2811c51.entry.js} +1 -1
  139. package/lib/duet/{p-d24c6bc1.entry.js → p-b53afa7a.entry.js} +1 -1
  140. package/lib/duet/{p-0366552b.system.entry.js → p-b686f39d.system.entry.js} +1 -1
  141. package/lib/duet/{p-ebc56043.entry.js → p-b6d5be13.entry.js} +1 -1
  142. package/lib/duet/{p-e8303364.system.entry.js → p-bb61f7d8.system.entry.js} +1 -1
  143. package/lib/duet/{p-12941aef.system.entry.js → p-bc895d5f.system.entry.js} +1 -1
  144. package/lib/duet/{p-e47daca7.system.entry.js → p-beca945d.system.entry.js} +1 -1
  145. package/lib/duet/{p-dcaecb5e.js → p-c420e1ab.js} +1 -1
  146. package/lib/duet/{p-5b546064.entry.js → p-c801c899.entry.js} +1 -1
  147. package/lib/duet/{p-3547d108.entry.js → p-c8f1cc9c.entry.js} +1 -1
  148. package/lib/duet/{p-c8ec3b99.entry.js → p-cd8c4a50.entry.js} +1 -1
  149. package/lib/duet/{p-b6dd0933.entry.js → p-ce487a35.entry.js} +1 -1
  150. package/lib/duet/{p-c6df2ea8.system.entry.js → p-ce6e5918.system.entry.js} +1 -1
  151. package/lib/duet/{p-c2d32103.entry.js → p-d03cb5c3.entry.js} +1 -1
  152. package/lib/duet/p-d173c966.entry.js +4 -0
  153. package/lib/duet/{p-79b9e7ef.system.entry.js → p-d414e0f6.system.entry.js} +1 -1
  154. package/lib/duet/{p-8143f3de.js → p-d7bc0102.js} +0 -0
  155. package/lib/duet/{p-24b9e806.entry.js → p-d7d80b8e.entry.js} +1 -1
  156. package/lib/duet/p-d8ed6905.entry.js +4 -0
  157. package/lib/duet/{p-562ae946.entry.js → p-da61c503.entry.js} +1 -1
  158. package/lib/duet/p-dbb4a588.js +4 -0
  159. package/lib/duet/p-dd8fade8.entry.js +4 -0
  160. package/lib/duet/{p-1db7a35b.entry.js → p-de67de41.entry.js} +1 -1
  161. package/lib/duet/{p-9df321b3.system.entry.js → p-def972d1.system.entry.js} +1 -1
  162. package/lib/duet/p-df2d8ec4.entry.js +4 -0
  163. package/lib/duet/{p-05e2c680.system.entry.js → p-e35ea4b9.system.entry.js} +1 -1
  164. package/lib/duet/{p-ad3dad04.system.js → p-e9ab7f0a.system.js} +1 -1
  165. package/lib/duet/{p-7a32ceb3.system.entry.js → p-eb383537.system.entry.js} +1 -1
  166. package/lib/duet/{p-ad07f399.js → p-ed75c8b3.js} +0 -0
  167. package/lib/duet/{p-c18080ad.entry.js → p-ee8682fc.entry.js} +1 -1
  168. package/lib/duet/p-f155c84d.system.entry.js +4 -0
  169. package/lib/duet/{p-d945a4b0.system.entry.js → p-f1b895c8.system.entry.js} +1 -1
  170. package/lib/duet/{p-89e42127.system.entry.js → p-f5af2560.system.entry.js} +1 -1
  171. package/lib/duet/{p-3900577d.system.entry.js → p-f7475d5a.system.entry.js} +1 -1
  172. package/lib/duet/p-f7c7f37d.js +4 -0
  173. package/lib/duet/{p-210d739c.system.entry.js → p-feca1c50.system.entry.js} +1 -1
  174. package/lib/esm/duet-action-button.entry.js +159 -0
  175. package/lib/esm/duet-alert.entry.js +1 -1
  176. package/lib/esm/duet-badge.entry.js +1 -1
  177. package/lib/esm/duet-breadcrumb.entry.js +1 -1
  178. package/lib/esm/duet-breadcrumbs.entry.js +1 -1
  179. package/lib/esm/duet-button_2.entry.js +8 -4
  180. package/lib/esm/duet-caption_4.entry.js +3 -3
  181. package/lib/esm/duet-card.entry.js +3 -3
  182. package/lib/esm/duet-checkbox.entry.js +1 -1
  183. package/lib/esm/duet-choice_2.entry.js +4 -4
  184. package/lib/esm/duet-collapsible.entry.js +2 -2
  185. package/lib/esm/duet-cookie-consent.entry.js +1 -1
  186. package/lib/esm/duet-date-picker.entry.js +4 -4
  187. package/lib/esm/duet-divider_2.entry.js +1 -1
  188. package/lib/esm/{duet-editable-table_4.entry.js → duet-editable-table_3.entry.js} +384 -338
  189. package/lib/esm/duet-empty-state.entry.js +1 -1
  190. package/lib/esm/duet-fieldset.entry.js +1 -1
  191. package/lib/esm/duet-footer.entry.js +1 -1
  192. package/lib/esm/duet-grid_2.entry.js +2 -2
  193. package/lib/esm/duet-header_2.entry.js +7 -7
  194. package/lib/esm/duet-hero.entry.js +1 -1
  195. package/lib/esm/duet-icon.entry.js +3 -3
  196. package/lib/esm/duet-input_2.entry.js +1 -1
  197. package/lib/esm/duet-layout.entry.js +1 -1
  198. package/lib/esm/duet-list_2.entry.js +1 -1
  199. package/lib/esm/duet-modal.entry.js +2 -2
  200. package/lib/esm/duet-notification_2.entry.js +1 -1
  201. package/lib/esm/duet-number-input.entry.js +1 -1
  202. package/lib/esm/duet-pagination_2.entry.js +24 -14
  203. package/lib/esm/duet-progress.entry.js +1 -1
  204. package/lib/esm/duet-radio_2.entry.js +1 -1
  205. package/lib/esm/duet-range-slider.entry.js +2 -2
  206. package/lib/esm/duet-scrollable_3.entry.js +1 -1
  207. package/lib/esm/duet-select.entry.js +1 -1
  208. package/lib/esm/duet-step_2.entry.js +1 -1
  209. package/lib/esm/duet-textarea.entry.js +1 -1
  210. package/lib/esm/duet-toggle.entry.js +1 -1
  211. package/lib/esm/duet-tooltip.entry.js +1 -1
  212. package/lib/esm/duet-tray.entry.js +2 -2
  213. package/lib/esm/duet-upload-aria-status.entry.js +1 -1
  214. package/lib/esm/duet-visually-hidden.entry.js +1 -1
  215. package/lib/esm/duet.js +2 -2
  216. package/lib/esm/{focus-utils-d4e80e1e.js → focus-utils-46b28332.js} +1 -1
  217. package/lib/esm/{index-4a5e7664.js → index-8743db3b.js} +1 -1
  218. package/lib/esm/js-utils-52e0944c.js +36 -0
  219. package/lib/esm/loader.js +2 -2
  220. package/lib/esm/{token-utils-e9a69acf.js → token-utils-e9a0cb88.js} +1 -1
  221. package/lib/esm/{tokens-e110dc89.js → tokens-57d98824.js} +0 -0
  222. package/lib/esm/{tokens.module-49cbf963.js → tokens.module-a13e9683.js} +0 -0
  223. package/lib/esm-es5/duet-action-button.entry.js +4 -0
  224. package/lib/esm-es5/duet-alert.entry.js +1 -1
  225. package/lib/esm-es5/duet-badge.entry.js +1 -1
  226. package/lib/esm-es5/duet-breadcrumb.entry.js +1 -1
  227. package/lib/esm-es5/duet-breadcrumbs.entry.js +1 -1
  228. package/lib/esm-es5/duet-button_2.entry.js +1 -1
  229. package/lib/esm-es5/duet-caption_4.entry.js +1 -1
  230. package/lib/esm-es5/duet-card.entry.js +1 -1
  231. package/lib/esm-es5/duet-checkbox.entry.js +1 -1
  232. package/lib/esm-es5/duet-choice_2.entry.js +1 -1
  233. package/lib/esm-es5/duet-collapsible.entry.js +1 -1
  234. package/lib/esm-es5/duet-cookie-consent.entry.js +1 -1
  235. package/lib/esm-es5/duet-date-picker.entry.js +2 -2
  236. package/lib/esm-es5/duet-divider_2.entry.js +1 -1
  237. package/lib/esm-es5/duet-editable-table_3.entry.js +4 -0
  238. package/lib/esm-es5/duet-empty-state.entry.js +1 -1
  239. package/lib/esm-es5/duet-fieldset.entry.js +1 -1
  240. package/lib/esm-es5/duet-footer.entry.js +1 -1
  241. package/lib/esm-es5/duet-grid_2.entry.js +1 -1
  242. package/lib/esm-es5/duet-header_2.entry.js +1 -1
  243. package/lib/esm-es5/duet-hero.entry.js +1 -1
  244. package/lib/esm-es5/duet-icon.entry.js +1 -1
  245. package/lib/esm-es5/duet-input_2.entry.js +1 -1
  246. package/lib/esm-es5/duet-layout.entry.js +1 -1
  247. package/lib/esm-es5/duet-list_2.entry.js +1 -1
  248. package/lib/esm-es5/duet-modal.entry.js +1 -1
  249. package/lib/esm-es5/duet-notification_2.entry.js +1 -1
  250. package/lib/esm-es5/duet-number-input.entry.js +1 -1
  251. package/lib/esm-es5/duet-pagination_2.entry.js +2 -2
  252. package/lib/esm-es5/duet-progress.entry.js +1 -1
  253. package/lib/esm-es5/duet-radio_2.entry.js +1 -1
  254. package/lib/esm-es5/duet-range-slider.entry.js +1 -1
  255. package/lib/esm-es5/duet-scrollable_3.entry.js +1 -1
  256. package/lib/esm-es5/duet-select.entry.js +1 -1
  257. package/lib/esm-es5/duet-step_2.entry.js +1 -1
  258. package/lib/esm-es5/duet-textarea.entry.js +1 -1
  259. package/lib/esm-es5/duet-toggle.entry.js +1 -1
  260. package/lib/esm-es5/duet-tooltip.entry.js +1 -1
  261. package/lib/esm-es5/duet-tray.entry.js +1 -1
  262. package/lib/esm-es5/duet-upload-aria-status.entry.js +1 -1
  263. package/lib/esm-es5/duet-visually-hidden.entry.js +1 -1
  264. package/lib/esm-es5/duet.js +1 -1
  265. package/lib/esm-es5/focus-utils-46b28332.js +4 -0
  266. package/lib/esm-es5/{index-4a5e7664.js → index-8743db3b.js} +1 -1
  267. package/lib/esm-es5/js-utils-52e0944c.js +4 -0
  268. package/lib/esm-es5/loader.js +1 -1
  269. package/lib/esm-es5/{token-utils-e9a69acf.js → token-utils-e9a0cb88.js} +1 -1
  270. package/lib/esm-es5/{tokens-e110dc89.js → tokens-57d98824.js} +0 -0
  271. package/lib/esm-es5/{tokens.module-49cbf963.js → tokens.module-a13e9683.js} +0 -0
  272. package/lib/html.html-data.json +169 -69
  273. package/lib/types/components/duet-action-button/duet-action-button.d.ts +112 -0
  274. package/lib/types/components/duet-button/duet-button.d.ts +4 -0
  275. package/lib/types/components/duet-editable-table/duet-editable-table-tabledata.d.ts +2 -2
  276. package/lib/types/components/duet-editable-table/duet-editable-table.d.ts +106 -48
  277. package/lib/types/components/duet-header/duet-header.d.ts +1 -0
  278. package/lib/types/components/duet-pagination/duet-pagination.d.ts +7 -2
  279. package/lib/types/components/duet-table/duet-table.d.ts +16 -0
  280. package/lib/types/components/duet-upload/duet-upload.d.ts +68 -58
  281. package/lib/types/components.d.ts +225 -149
  282. package/lib/types/utils/js-utils.d.ts +2 -0
  283. package/package.json +8 -16
  284. package/lib/cjs/duet-editable-table-button.cjs.entry.js +0 -96
  285. package/lib/cjs/js-utils-33a9dbe3.js +0 -16
  286. package/lib/collection/components/duet-editable-table/duet-editable-table-button.css +0 -32
  287. package/lib/collection/components/duet-editable-table/duet-editable-table-button.js +0 -225
  288. package/lib/collection/components/duet-editable-table/duet-editable-table-item.css +0 -36
  289. package/lib/collection/components/duet-editable-table/duet-editable-table-item.js +0 -225
  290. package/lib/duet/p-063fe96d.entry.js +0 -4
  291. package/lib/duet/p-2361986e.entry.js +0 -4
  292. package/lib/duet/p-2eeacf1a.entry.js +0 -4
  293. package/lib/duet/p-396f1bdc.entry.js +0 -4
  294. package/lib/duet/p-493c6d2f.system.entry.js +0 -4
  295. package/lib/duet/p-7b55f33e.entry.js +0 -4
  296. package/lib/duet/p-7e0e2209.system.entry.js +0 -4
  297. package/lib/duet/p-81867417.system.js +0 -4
  298. package/lib/duet/p-a3d7951c.system.entry.js +0 -4
  299. package/lib/duet/p-a619dff3.system.js +0 -4
  300. package/lib/duet/p-b25d3769.js +0 -4
  301. package/lib/duet/p-bf192d9f.entry.js +0 -4
  302. package/lib/duet/p-c76a68aa.system.entry.js +0 -4
  303. package/lib/duet/p-d12b3d21.system.entry.js +0 -4
  304. package/lib/duet/p-ded33218.system.entry.js +0 -4
  305. package/lib/duet/p-e6a69eb8.js +0 -4
  306. package/lib/duet/p-ef4962e8.entry.js +0 -4
  307. package/lib/duet/p-ff21f3c2.entry.js +0 -4
  308. package/lib/esm/duet-editable-table-button.entry.js +0 -92
  309. package/lib/esm/js-utils-b69f17df.js +0 -14
  310. package/lib/esm-es5/duet-editable-table-button.entry.js +0 -4
  311. package/lib/esm-es5/duet-editable-table_4.entry.js +0 -4
  312. package/lib/esm-es5/focus-utils-d4e80e1e.js +0 -4
  313. package/lib/esm-es5/js-utils-b69f17df.js +0 -4
  314. package/lib/types/components/duet-editable-table/duet-editable-table-button.d.ts +0 -73
  315. package/lib/types/components/duet-editable-table/duet-editable-table-item.d.ts +0 -76
@@ -0,0 +1,489 @@
1
+ /*!
2
+ * Built with Duet Design System
3
+ */
4
+ import { Component, Element, Event, h, Host, Prop, State } from "@stencil/core";
5
+ import { createID } from "../../utils/create-id";
6
+ import { debounce } from "../../utils/js-utils";
7
+ import { isKeyboardClick } from "../../utils/keyboard-utils";
8
+ import { getLocaleString } from "../../utils/language-utils";
9
+ import { inheritGlobalTheme } from "../../utils/themeable-component";
10
+ import { getColorByName } from "../../utils/token-utils";
11
+ /**
12
+ * Slot: default slot inside an invisible element, this can be used to enhance accessibility
13
+ * Part: button this part enables style overrides for the button
14
+ * Part: icon this part enables style overrides for the icon
15
+ */
16
+ export class DuetActionButton {
17
+ constructor() {
18
+ this.numbersStore = "";
19
+ /**
20
+ * Theme of the pagination.
21
+ */
22
+ this.theme = "";
23
+ /**
24
+ * Name of the icon to display
25
+ */
26
+ this.iconName = "action-arrow-left-small";
27
+ /**
28
+ * Color of the icon to display
29
+ */
30
+ this.iconColor = "currentColor";
31
+ /**
32
+ * Size of the icon
33
+ */
34
+ this.iconSize = "xx-small";
35
+ /**
36
+ * Name of action being called
37
+ */
38
+ this.actionName = "default-action";
39
+ /**
40
+ * Name of id of action that was called being called
41
+ */
42
+ this.actionId = undefined;
43
+ /**
44
+ * Name of id of action that was called being called
45
+ */
46
+ this.actionMeta = undefined;
47
+ /**
48
+ * Disables the button
49
+ */
50
+ this.disabled = false;
51
+ /**
52
+ * Custom color to be used for the icon, as a design token entered in camelCase
53
+ * or kebab-case. Example: "color-primary". This property can also be set to
54
+ * "currentColor" which forces the icon to use the CSS text color of parent
55
+ * element instead. Useful when you want to control the color in stylesheet
56
+ * instead.
57
+ */
58
+ this.color = "";
59
+ /**
60
+ * Custom color to be used for a background, as a design token entered
61
+ * in camelCase or kebab-case. Using this option the icon will always be resized
62
+ * to $size-icon-medium on mobile viewports. Example: "color-primary".
63
+ */
64
+ this.background = "";
65
+ /**
66
+ * Described By id
67
+ */
68
+ this.ariaDescribedBy = undefined;
69
+ /**
70
+ * Aria description the button
71
+ */
72
+ this.ariaDescription = undefined;
73
+ /**
74
+ * Default pagination labels
75
+ */
76
+ this.ariaLabelsDefaults = {
77
+ en: {
78
+ label: "Click to activate action",
79
+ },
80
+ fi: {
81
+ label: "Klikkaa toiminnon aktivointiin",
82
+ },
83
+ sv: {
84
+ label: "Klicka för att aktivera åtgärd",
85
+ },
86
+ };
87
+ /**
88
+ * Default pagination labels
89
+ */
90
+ this.ariaLabels = getLocaleString(this.ariaLabelsDefaults);
91
+ /**
92
+ * Used to indicate which dom element with ID this element controls
93
+ */
94
+ this.ariaControls = "";
95
+ this.listId = createID("duet-action-button");
96
+ /**
97
+ * Private methods.
98
+ */
99
+ //helper to emit relevant page events
100
+ this.emitPageEvent = debounce(e => {
101
+ this.duetActionEvent.emit({
102
+ component: "duet-action-button",
103
+ originalEvent: e,
104
+ action: this.actionId,
105
+ name: this.actionName,
106
+ meta: this.actionMeta,
107
+ id: this.listId,
108
+ });
109
+ });
110
+ }
111
+ //handle a11y keyboard navigation events
112
+ async onKeyboardDown(e) {
113
+ if (isKeyboardClick(e)) {
114
+ this.emitPageEvent(e);
115
+ }
116
+ }
117
+ //set update current when mouse click on page number
118
+ async onMouseHandler(e) {
119
+ e.preventDefault();
120
+ this.duetActionEvent.emit({
121
+ component: "duet-action-button",
122
+ originalEvent: e,
123
+ action: this.actionName,
124
+ id: this.actionId,
125
+ meta: this.actionMeta,
126
+ });
127
+ }
128
+ /**
129
+ * Component lifecycle events.
130
+ */
131
+ componentWillLoad() {
132
+ inheritGlobalTheme(this);
133
+ }
134
+ /**
135
+ * render() function
136
+ * Always the last one in the class.
137
+ */
138
+ render() {
139
+ const color = this.color === "currentColor" ? "currentColor" : getColorByName(this.color, this.theme);
140
+ const styles = {
141
+ color,
142
+ background: getColorByName(this.background, this.theme),
143
+ "border-color": getColorByName(this.iconColor, this.theme),
144
+ "border-width": "1px",
145
+ "border-style": "solid",
146
+ };
147
+ return (h(Host, { onKeyDown: e => this.onKeyboardDown(e) },
148
+ h("button", { part: "button", style: styles, disabled: this.disabled, id: this.listId, class: {
149
+ "duet-action-button": true,
150
+ "duet-action-button--disabled": this.disabled,
151
+ [`duet-action-button--${this.theme}`]: this.theme !== "",
152
+ }, type: "button", onClick: e => this.onMouseHandler(e), "aria-label": this.ariaLabels.label, "aria-description": this.ariaDescription, "aria-describedby": this.ariaDescribedBy, "aria-controls": this.ariaControls },
153
+ h("duet-icon", { part: "icon", name: this.iconName, color: this.iconColor, margin: "none", size: this.iconSize }),
154
+ h("duet-visually-hidden", null,
155
+ h("slot", null)))));
156
+ }
157
+ static get is() { return "duet-action-button"; }
158
+ static get encapsulation() { return "shadow"; }
159
+ static get originalStyleUrls() { return {
160
+ "$": ["duet-action-button.scss"]
161
+ }; }
162
+ static get styleUrls() { return {
163
+ "$": ["duet-action-button.css"]
164
+ }; }
165
+ static get properties() { return {
166
+ "theme": {
167
+ "type": "string",
168
+ "mutable": true,
169
+ "complexType": {
170
+ "original": "DuetTheme",
171
+ "resolved": "\"\" | \"default\" | \"turva\"",
172
+ "references": {
173
+ "DuetTheme": {
174
+ "location": "import",
175
+ "path": "../../common-types"
176
+ }
177
+ }
178
+ },
179
+ "required": false,
180
+ "optional": false,
181
+ "docs": {
182
+ "tags": [],
183
+ "text": "Theme of the pagination."
184
+ },
185
+ "attribute": "theme",
186
+ "reflect": false,
187
+ "defaultValue": "\"\""
188
+ },
189
+ "iconName": {
190
+ "type": "string",
191
+ "mutable": false,
192
+ "complexType": {
193
+ "original": "string",
194
+ "resolved": "string",
195
+ "references": {}
196
+ },
197
+ "required": false,
198
+ "optional": false,
199
+ "docs": {
200
+ "tags": [],
201
+ "text": "Name of the icon to display"
202
+ },
203
+ "attribute": "icon-name",
204
+ "reflect": false,
205
+ "defaultValue": "\"action-arrow-left-small\""
206
+ },
207
+ "iconColor": {
208
+ "type": "string",
209
+ "mutable": false,
210
+ "complexType": {
211
+ "original": "string",
212
+ "resolved": "string",
213
+ "references": {}
214
+ },
215
+ "required": false,
216
+ "optional": false,
217
+ "docs": {
218
+ "tags": [],
219
+ "text": "Color of the icon to display"
220
+ },
221
+ "attribute": "icon-color",
222
+ "reflect": false,
223
+ "defaultValue": "\"currentColor\""
224
+ },
225
+ "iconSize": {
226
+ "type": "string",
227
+ "mutable": false,
228
+ "complexType": {
229
+ "original": "DuetActionButtonIconSize",
230
+ "resolved": "\"small\" | \"x-small\" | \"xx-small\"",
231
+ "references": {
232
+ "DuetActionButtonIconSize": {
233
+ "location": "local"
234
+ }
235
+ }
236
+ },
237
+ "required": false,
238
+ "optional": false,
239
+ "docs": {
240
+ "tags": [],
241
+ "text": "Size of the icon"
242
+ },
243
+ "attribute": "icon-size",
244
+ "reflect": false,
245
+ "defaultValue": "\"xx-small\""
246
+ },
247
+ "actionName": {
248
+ "type": "string",
249
+ "mutable": false,
250
+ "complexType": {
251
+ "original": "string",
252
+ "resolved": "string",
253
+ "references": {}
254
+ },
255
+ "required": false,
256
+ "optional": false,
257
+ "docs": {
258
+ "tags": [],
259
+ "text": "Name of action being called"
260
+ },
261
+ "attribute": "action-name",
262
+ "reflect": false,
263
+ "defaultValue": "\"default-action\""
264
+ },
265
+ "actionId": {
266
+ "type": "string",
267
+ "mutable": false,
268
+ "complexType": {
269
+ "original": "string",
270
+ "resolved": "string",
271
+ "references": {}
272
+ },
273
+ "required": false,
274
+ "optional": false,
275
+ "docs": {
276
+ "tags": [],
277
+ "text": "Name of id of action that was called being called"
278
+ },
279
+ "attribute": "action-id",
280
+ "reflect": false,
281
+ "defaultValue": "undefined"
282
+ },
283
+ "actionMeta": {
284
+ "type": "string",
285
+ "mutable": false,
286
+ "complexType": {
287
+ "original": "Record<any, any> | string",
288
+ "resolved": "string | { [x: string]: any; }",
289
+ "references": {
290
+ "Record": {
291
+ "location": "global"
292
+ }
293
+ }
294
+ },
295
+ "required": false,
296
+ "optional": false,
297
+ "docs": {
298
+ "tags": [],
299
+ "text": "Name of id of action that was called being called"
300
+ },
301
+ "attribute": "action-meta",
302
+ "reflect": false,
303
+ "defaultValue": "undefined"
304
+ },
305
+ "disabled": {
306
+ "type": "boolean",
307
+ "mutable": false,
308
+ "complexType": {
309
+ "original": "boolean",
310
+ "resolved": "boolean",
311
+ "references": {}
312
+ },
313
+ "required": false,
314
+ "optional": false,
315
+ "docs": {
316
+ "tags": [],
317
+ "text": "Disables the button"
318
+ },
319
+ "attribute": "disabled",
320
+ "reflect": false,
321
+ "defaultValue": "false"
322
+ },
323
+ "color": {
324
+ "type": "string",
325
+ "mutable": false,
326
+ "complexType": {
327
+ "original": "DuetColor",
328
+ "resolved": "string",
329
+ "references": {
330
+ "DuetColor": {
331
+ "location": "import",
332
+ "path": "../../common-types"
333
+ }
334
+ }
335
+ },
336
+ "required": false,
337
+ "optional": false,
338
+ "docs": {
339
+ "tags": [],
340
+ "text": "Custom color to be used for the icon, as a design token entered in camelCase\nor kebab-case. Example: \"color-primary\". This property can also be set to\n\"currentColor\" which forces the icon to use the CSS text color of parent\nelement instead. Useful when you want to control the color in stylesheet\ninstead."
341
+ },
342
+ "attribute": "color",
343
+ "reflect": true,
344
+ "defaultValue": "\"\""
345
+ },
346
+ "background": {
347
+ "type": "string",
348
+ "mutable": false,
349
+ "complexType": {
350
+ "original": "DuetColor",
351
+ "resolved": "string",
352
+ "references": {
353
+ "DuetColor": {
354
+ "location": "import",
355
+ "path": "../../common-types"
356
+ }
357
+ }
358
+ },
359
+ "required": false,
360
+ "optional": false,
361
+ "docs": {
362
+ "tags": [],
363
+ "text": "Custom color to be used for a background, as a design token entered\nin camelCase or kebab-case. Using this option the icon will always be resized\nto $size-icon-medium on mobile viewports. Example: \"color-primary\"."
364
+ },
365
+ "attribute": "background",
366
+ "reflect": false,
367
+ "defaultValue": "\"\""
368
+ },
369
+ "ariaDescribedBy": {
370
+ "type": "string",
371
+ "mutable": false,
372
+ "complexType": {
373
+ "original": "string",
374
+ "resolved": "string",
375
+ "references": {}
376
+ },
377
+ "required": false,
378
+ "optional": false,
379
+ "docs": {
380
+ "tags": [],
381
+ "text": "Described By id"
382
+ },
383
+ "attribute": "accessible-described-by",
384
+ "reflect": false,
385
+ "defaultValue": "undefined"
386
+ },
387
+ "ariaDescription": {
388
+ "type": "string",
389
+ "mutable": false,
390
+ "complexType": {
391
+ "original": "string",
392
+ "resolved": "string",
393
+ "references": {}
394
+ },
395
+ "required": false,
396
+ "optional": false,
397
+ "docs": {
398
+ "tags": [],
399
+ "text": "Aria description the button"
400
+ },
401
+ "attribute": "accessible-description",
402
+ "reflect": false,
403
+ "defaultValue": "undefined"
404
+ },
405
+ "ariaLabelsDefaults": {
406
+ "type": "unknown",
407
+ "mutable": false,
408
+ "complexType": {
409
+ "original": "DuetLangObject",
410
+ "resolved": "DuetLangObject",
411
+ "references": {
412
+ "DuetLangObject": {
413
+ "location": "import",
414
+ "path": "../../utils/language-utils"
415
+ }
416
+ }
417
+ },
418
+ "required": false,
419
+ "optional": false,
420
+ "docs": {
421
+ "tags": [],
422
+ "text": "Default pagination labels"
423
+ },
424
+ "defaultValue": "{\n en: {\n label: \"Click to activate action\",\n },\n fi: {\n label: \"Klikkaa toiminnon aktivointiin\",\n },\n sv: {\n label: \"Klicka f\u00F6r att aktivera \u00E5tg\u00E4rd\",\n },\n }"
425
+ },
426
+ "ariaLabels": {
427
+ "type": "unknown",
428
+ "mutable": false,
429
+ "complexType": {
430
+ "original": "Record<string, string>",
431
+ "resolved": "{ [x: string]: string; }",
432
+ "references": {
433
+ "Record": {
434
+ "location": "global"
435
+ }
436
+ }
437
+ },
438
+ "required": false,
439
+ "optional": false,
440
+ "docs": {
441
+ "tags": [],
442
+ "text": "Default pagination labels"
443
+ },
444
+ "defaultValue": "getLocaleString(\n this.ariaLabelsDefaults\n )"
445
+ },
446
+ "ariaControls": {
447
+ "type": "string",
448
+ "mutable": false,
449
+ "complexType": {
450
+ "original": "string",
451
+ "resolved": "string",
452
+ "references": {}
453
+ },
454
+ "required": false,
455
+ "optional": false,
456
+ "docs": {
457
+ "tags": [],
458
+ "text": "Used to indicate which dom element with ID this element controls"
459
+ },
460
+ "attribute": "accessible-controls",
461
+ "reflect": false,
462
+ "defaultValue": "\"\""
463
+ }
464
+ }; }
465
+ static get states() { return {
466
+ "numbersStore": {}
467
+ }; }
468
+ static get events() { return [{
469
+ "method": "duetActionEvent",
470
+ "name": "duetActionEvent",
471
+ "bubbles": true,
472
+ "cancelable": false,
473
+ "composed": true,
474
+ "docs": {
475
+ "tags": [],
476
+ "text": "Emitted a page selection has been made"
477
+ },
478
+ "complexType": {
479
+ "original": "DuetActionButtonEvent",
480
+ "resolved": "{ originalEvent?: Event; component: \"duet-action-button\"; action: string; name?: string; id?: string; index?: string; meta?: string | Record<any, any>; }",
481
+ "references": {
482
+ "DuetActionButtonEvent": {
483
+ "location": "local"
484
+ }
485
+ }
486
+ }
487
+ }]; }
488
+ static get elementRef() { return "element"; }
489
+ }
@@ -8,6 +8,10 @@ import { inheritGlobalTheme } from "../../utils/themeable-component";
8
8
  import { getColorByName } from "../../utils/token-utils";
9
9
  export class DuetButton {
10
10
  constructor() {
11
+ /**
12
+ * Use this property to add an aria-haspopup attribute to a button, if you are using it as a menu button.
13
+ */
14
+ this.accessiblePopup = "false";
11
15
  /**
12
16
  * Loading state of the button
13
17
  */
@@ -237,7 +241,7 @@ export class DuetButton {
237
241
  commonChildren,
238
242
  this.external && h("duet-visually-hidden", null,
239
243
  ", ",
240
- this.accessibleLabelExternal))) : (h("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)),
244
+ this.accessibleLabelExternal))) : (h("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)),
241
245
  this.loading && h("duet-spinner", { color: "currentColor" }))));
242
246
  }
243
247
  static get is() { return "duet-button"; }
@@ -283,6 +287,24 @@ export class DuetButton {
283
287
  "attribute": "accessible-controls",
284
288
  "reflect": false
285
289
  },
290
+ "accessiblePopup": {
291
+ "type": "string",
292
+ "mutable": false,
293
+ "complexType": {
294
+ "original": "string",
295
+ "resolved": "string",
296
+ "references": {}
297
+ },
298
+ "required": false,
299
+ "optional": false,
300
+ "docs": {
301
+ "tags": [],
302
+ "text": "Use this property to add an aria-haspopup attribute to a button, if you are using it as a menu button."
303
+ },
304
+ "attribute": "accessible-popup",
305
+ "reflect": false,
306
+ "defaultValue": "\"false\""
307
+ },
286
308
  "accessibleActiveDescendant": {
287
309
  "type": "string",
288
310
  "mutable": false,
@@ -107,19 +107,30 @@
107
107
  user-select: none;
108
108
  position: relative;
109
109
  z-index: 100;
110
- display: block;
110
+ display: flex;
111
+ gap: 1rem;
112
+ align-items: center;
113
+ justify-content: flex-start;
111
114
  width: 100%;
112
- padding: 20px 48px 20px 16px;
115
+ height: 100%;
116
+ min-height: 3.875rem;
117
+ padding: 1rem;
113
118
  font-size: 1rem;
114
119
  font-weight: 600;
115
120
  text-decoration: none;
121
+ word-break: break-word;
116
122
  cursor: pointer;
117
123
  border: 2px solid #e1e3e6;
118
124
  border-radius: 4px;
119
125
  transition: background-color 150ms ease;
120
126
  }
127
+ .duet-choice-label > div:last-child {
128
+ flex: 1;
129
+ align-self: flex-start;
130
+ justify-self: flex-end;
131
+ margin-top: 0.25rem;
132
+ }
121
133
  .has-info .duet-choice-label {
122
- padding-right: 110px;
123
134
  border-top-right-radius: 0;
124
135
  border-bottom-right-radius: 0;
125
136
  }
@@ -152,9 +163,6 @@
152
163
  opacity: 0.75;
153
164
  transition: none !important;
154
165
  }
155
- .has-icon .duet-choice-label {
156
- padding-left: 48px;
157
- }
158
166
  .checked .duet-choice-label {
159
167
  color: #0077b3 !important;
160
168
  background: #f3f9fc;
@@ -227,11 +235,10 @@ input[disabled] + .duet-choice-label .duet-checkmark {
227
235
  }
228
236
 
229
237
  .duet-checkmark-container {
230
- position: absolute;
231
- top: 17.7777777778px;
232
- right: 16px;
238
+ position: relative;
233
239
  width: 20px;
234
240
  height: 20px;
241
+ margin-left: auto;
235
242
  border: 1px solid #909599;
236
243
  border-radius: 4px;
237
244
  transition: border 300ms ease;
@@ -299,10 +306,7 @@ input[disabled] + .duet-choice-label .duet-checkmark {
299
306
  }
300
307
  }
301
308
  .duet-choice-card-icon {
302
- position: absolute;
303
- top: 50%;
304
- left: 16px;
305
- transform: translateY(-50%);
309
+ position: relative;
306
310
  }
307
311
  .duet-choice-card-icon duet-icon {
308
312
  display: block;
@@ -374,9 +378,10 @@ input[disabled] + .duet-choice-label .duet-checkmark {
374
378
  .duet-choice-info-toggle {
375
379
  display: flex;
376
380
  flex-shrink: 0;
381
+ align-items: flex-start;
377
382
  justify-content: center;
378
383
  width: 57.6px;
379
- padding-top: 18px;
384
+ padding-top: 1.25rem;
380
385
  cursor: pointer;
381
386
  background: white;
382
387
  border: 2px solid #e1e3e6;
@@ -388,7 +393,7 @@ input[disabled] + .duet-choice-label .duet-checkmark {
388
393
  }
389
394
  .duet-choice-info-toggle[aria-expanded=true] {
390
395
  background: #f5f8fa;
391
- border-bottom: 0;
396
+ border-bottom-color: transparent;
392
397
  border-bottom-right-radius: 0;
393
398
  }
394
399
  .duet-choice-info-toggle[disabled] {
@@ -291,14 +291,16 @@ export class DuetChoice {
291
291
  h("label", { htmlFor: identifier, class: { "duet-choice-label": true, "no-hover": this.isHovering }, onClick: this.onClick },
292
292
  this.icon && (h("div", { class: "duet-choice-card-icon" },
293
293
  h("duet-icon", { margin: "none", size: "small", name: this.icon, color: "currentColor" }))),
294
- this.label,
295
- this.caption && (h("div", null,
296
- h("duet-spacer", { size: "xx-small" }),
297
- h("duet-caption", { margin: "none", selected: this.checked }, this.caption))),
298
- this.hasAdditional && (h("div", null,
299
- h("duet-spacer", { size: "xx-small" }),
300
- h("slot", { name: "additional" }))),
301
- h("div", { class: { "duet-checkmark-container": true, "duet-checkmark-radio": this.type === "radio" } }, this.checked && h("div", { class: "duet-checkmark" })))),
294
+ h("div", null,
295
+ h("div", null, this.label),
296
+ this.caption && (h("div", null,
297
+ h("duet-spacer", { size: "xx-small" }),
298
+ h("duet-caption", { margin: "none", selected: this.checked }, this.caption))),
299
+ this.hasAdditional && (h("div", null,
300
+ h("duet-spacer", { size: "xx-small" }),
301
+ h("slot", { name: "additional" })))),
302
+ h("div", null,
303
+ h("div", { class: { "duet-checkmark-container": true, "duet-checkmark-radio": this.type === "radio" } }, this.checked && h("div", { class: "duet-checkmark" }))))),
302
304
  this.hasInfo && !this.collapsible && (h("button", { ref: button => (this.infoButtonEl = button), id: this.infoButtonId, class: {
303
305
  "duet-choice-info-toggle": true,
304
306
  "duet-theme-turva": this.theme === "turva",