@duetds/components 10.0.0-alpha.31 → 10.0.0-alpha.32

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 (341) hide show
  1. package/hydrate/index.js +73 -56
  2. package/hydrate/index.mjs +73 -56
  3. package/lib/cjs/{a11y-utils-DDfmTUFZ.js → a11y-utils-gRNAWDsE.js} +1 -1
  4. package/lib/cjs/{app-globals-BUWupN9p.js → app-globals-IqxTFC9D.js} +1 -1
  5. package/lib/cjs/duet-action-button.cjs.entry.js +5 -5
  6. package/lib/cjs/duet-alert.cjs.entry.js +4 -4
  7. package/lib/cjs/duet-badge.cjs.entry.js +4 -4
  8. package/lib/cjs/duet-banner.cjs.entry.js +6 -6
  9. package/lib/cjs/duet-breadcrumb.cjs.entry.js +2 -2
  10. package/lib/cjs/duet-breadcrumbs.cjs.entry.js +5 -5
  11. package/lib/cjs/duet-button_2.cjs.entry.js +6 -6
  12. package/lib/cjs/duet-callout.cjs.entry.js +3 -3
  13. package/lib/cjs/duet-caption_4.cjs.entry.js +11 -11
  14. package/lib/cjs/duet-card.cjs.entry.js +5 -5
  15. package/lib/cjs/duet-checkbox.cjs.entry.js +2 -2
  16. package/lib/cjs/duet-checkmark.cjs.entry.js +2 -2
  17. package/lib/cjs/duet-chip.cjs.entry.js +4 -4
  18. package/lib/cjs/duet-choice_2.cjs.entry.js +5 -5
  19. package/lib/cjs/duet-collapsible.cjs.entry.js +5 -5
  20. package/lib/cjs/duet-combobox.cjs.entry.js +4 -4
  21. package/lib/cjs/duet-contact-card.cjs.entry.js +3 -3
  22. package/lib/cjs/duet-cookie-consent.cjs.entry.js +2 -2
  23. package/lib/cjs/duet-date-picker.cjs.entry.js +6 -6
  24. package/lib/cjs/duet-divider_2.cjs.entry.js +4 -4
  25. package/lib/cjs/duet-editable-table_3.cjs.entry.js +11 -8
  26. package/lib/cjs/duet-empty-state.cjs.entry.js +2 -2
  27. package/lib/cjs/duet-fieldset.cjs.entry.js +3 -3
  28. package/lib/cjs/duet-file-chooser.cjs.entry.js +2 -2
  29. package/lib/cjs/duet-footer.cjs.entry.js +4 -4
  30. package/lib/cjs/duet-grid_2.cjs.entry.js +2 -2
  31. package/lib/cjs/duet-header_2.cjs.entry.js +7 -7
  32. package/lib/cjs/duet-hero.cjs.entry.js +4 -4
  33. package/lib/cjs/duet-icon.cjs.entry.js +4 -4
  34. package/lib/cjs/duet-indicator.cjs.entry.js +3 -3
  35. package/lib/cjs/duet-input_2.cjs.entry.js +7 -7
  36. package/lib/cjs/duet-layout.cjs.entry.js +2 -2
  37. package/lib/cjs/duet-list_2.cjs.entry.js +2 -2
  38. package/lib/cjs/duet-menu-bar-button.cjs.entry.js +2 -2
  39. package/lib/cjs/duet-menu-bar-dropdown-link.cjs.entry.js +2 -2
  40. package/lib/cjs/duet-menu-bar-dropdown.cjs.entry.js +2 -2
  41. package/lib/cjs/duet-menu-bar-item.cjs.entry.js +5 -5
  42. package/lib/cjs/duet-menu-bar-link.cjs.entry.js +2 -2
  43. package/lib/cjs/duet-menu-bar.cjs.entry.js +3 -3
  44. package/lib/cjs/duet-modal.cjs.entry.js +7 -7
  45. package/lib/cjs/duet-multiselect.cjs.entry.js +6 -6
  46. package/lib/cjs/duet-nav.cjs.entry.js +2 -2
  47. package/lib/cjs/duet-notification_2.cjs.entry.js +4 -4
  48. package/lib/cjs/duet-number-input.cjs.entry.js +5 -5
  49. package/lib/cjs/duet-overlay.cjs.entry.js +2 -2
  50. package/lib/cjs/duet-page-heading.cjs.entry.js +2 -2
  51. package/lib/cjs/duet-pagination_2.cjs.entry.js +5 -5
  52. package/lib/cjs/duet-panel.cjs.entry.js +2 -2
  53. package/lib/cjs/duet-phone-input.cjs.entry.js +5 -5
  54. package/lib/cjs/duet-popup-menu_2.cjs.entry.js +5 -5
  55. package/lib/cjs/duet-progress.cjs.entry.js +3 -3
  56. package/lib/cjs/duet-promo-card.cjs.entry.js +6 -6
  57. package/lib/cjs/duet-radio_2.cjs.entry.js +4 -4
  58. package/lib/cjs/duet-range-slider.cjs.entry.js +6 -6
  59. package/lib/cjs/duet-scrollable_3.cjs.entry.js +6 -6
  60. package/lib/cjs/duet-section-layout.cjs.entry.js +1 -1
  61. package/lib/cjs/duet-select.cjs.entry.js +5 -5
  62. package/lib/cjs/duet-shaped-image.cjs.entry.js +2 -2
  63. package/lib/cjs/duet-share-chart-item.cjs.entry.js +1 -1
  64. package/lib/cjs/duet-share-chart.cjs.entry.js +6 -6
  65. package/lib/cjs/duet-show-more.cjs.entry.js +3 -3
  66. package/lib/cjs/duet-slideout-lang.cjs.entry.js +3 -3
  67. package/lib/cjs/duet-slideout-link.cjs.entry.js +5 -5
  68. package/lib/cjs/duet-slideout-panel-dropdown.cjs.entry.js +2 -2
  69. package/lib/cjs/duet-slideout-panel.cjs.entry.js +7 -7
  70. package/lib/cjs/duet-slideout.cjs.entry.js +7 -7
  71. package/lib/cjs/duet-status-icon.cjs.entry.js +2 -2
  72. package/lib/cjs/duet-step_2.cjs.entry.js +3 -3
  73. package/lib/cjs/duet-submenu-bar-dropdown-link.cjs.entry.js +2 -2
  74. package/lib/cjs/duet-submenu-bar-dropdown.cjs.entry.js +3 -3
  75. package/lib/cjs/duet-submenu-bar-item.cjs.entry.js +5 -5
  76. package/lib/cjs/duet-submenu-bar-link.cjs.entry.js +2 -2
  77. package/lib/cjs/duet-submenu-bar.cjs.entry.js +3 -3
  78. package/lib/cjs/duet-textarea.cjs.entry.js +50 -34
  79. package/lib/cjs/duet-toggle.cjs.entry.js +5 -5
  80. package/lib/cjs/duet-toolbar-dropdown-link.cjs.entry.js +2 -2
  81. package/lib/cjs/duet-toolbar-dropdown.cjs.entry.js +2 -2
  82. package/lib/cjs/duet-toolbar-item.cjs.entry.js +5 -5
  83. package/lib/cjs/duet-toolbar-link.cjs.entry.js +2 -2
  84. package/lib/cjs/duet-toolbar.cjs.entry.js +2 -2
  85. package/lib/cjs/duet-tooltip-button_2.cjs.entry.js +3 -3
  86. package/lib/cjs/duet-tooltip.cjs.entry.js +5 -5
  87. package/lib/cjs/duet-tray.cjs.entry.js +4 -4
  88. package/lib/cjs/duet-upload-aria-status.cjs.entry.js +1 -1
  89. package/lib/cjs/duet-upload-item.cjs.entry.js +4 -4
  90. package/lib/cjs/duet-visually-hidden.cjs.entry.js +1 -1
  91. package/lib/cjs/duet.cjs.js +3 -3
  92. package/lib/cjs/{errorcodes.utils-HU_3reMl.js → errorcodes.utils-CI6sFyqj.js} +1 -1
  93. package/lib/cjs/{focus-utils-DHGNKs9U.js → focus-utils-D6oLee8e.js} +1 -1
  94. package/lib/cjs/{index-CKsfMbRW.js → index-CZgR8hZO.js} +1 -1
  95. package/lib/cjs/{label-DbnS5tex.js → label-DLhV0DOC.js} +1 -1
  96. package/lib/cjs/{language-utils-CYOjMfnd.js → language-utils-iTAyJvsm.js} +1 -1
  97. package/lib/cjs/loader.cjs.js +3 -3
  98. package/lib/cjs/{slot-utils-D4QyzHw3.js → slot-utils-CnfGuEKm.js} +1 -1
  99. package/lib/cjs/{themeable-component-BuC0WY98.js → themeable-component-lQsgCsDa.js} +1 -1
  100. package/lib/cjs/{token-utils-COKjUxmn.js → token-utils-BJtlJxnJ.js} +1 -1
  101. package/lib/cjs/{tokens-9aevMbB1.js → tokens-BxWzRxOl.js} +3 -3
  102. package/lib/cjs/{tokens.module-Bhh9B2g8.js → tokens.module-DJt2h4FX.js} +3 -3
  103. package/lib/collection/components/duet-badge/duet-badge.css +1 -1
  104. package/lib/collection/components/duet-banner/duet-banner.css +1 -1
  105. package/lib/collection/components/duet-button/duet-button.css +7 -7
  106. package/lib/collection/components/duet-chip/duet-chip.css +1 -1
  107. package/lib/collection/components/duet-choice/duet-choice.css +2 -2
  108. package/lib/collection/components/duet-collapsible/duet-collapsible.css +1 -1
  109. package/lib/collection/components/duet-link/duet-link.css +27 -13
  110. package/lib/collection/components/duet-link/duet-link.js +3 -3
  111. package/lib/collection/components/duet-logo/duet-logo.css +1 -1
  112. package/lib/collection/components/duet-multiselect/duet-multiselect.css +1 -1
  113. package/lib/collection/components/duet-number-input/duet-number-input.css +1 -1
  114. package/lib/collection/components/duet-phone-input/duet-phone-input.css +1 -1
  115. package/lib/collection/components/duet-promo-card/duet-promo-card.css +1 -1
  116. package/lib/collection/components/duet-radio/duet-radio.css +2 -2
  117. package/lib/collection/components/duet-range-slider/duet-range-slider.css +1 -1
  118. package/lib/collection/components/duet-select/duet-select.css +1 -1
  119. package/lib/collection/components/duet-table/duet-table.js +3 -3
  120. package/lib/collection/components/duet-textarea/duet-textarea.css +1 -1
  121. package/lib/collection/components/duet-textarea/duet-textarea.js +57 -33
  122. package/lib/collection/components/duet-toggle/duet-toggle.css +1 -1
  123. package/lib/duet/duet.esm.js +1 -1
  124. package/lib/duet/p-086ada06.entry.js +4 -0
  125. package/lib/duet/{p-18c37a64.entry.js → p-092f1ba3.entry.js} +1 -1
  126. package/lib/duet/{p-b9869df2.entry.js → p-0a7a967d.entry.js} +1 -1
  127. package/lib/duet/{p-7def72b6.entry.js → p-0ad4c0ed.entry.js} +1 -1
  128. package/lib/duet/{p-ea010c0c.entry.js → p-0c434757.entry.js} +1 -1
  129. package/lib/duet/{p-fe5f6bf5.entry.js → p-10dda4be.entry.js} +1 -1
  130. package/lib/duet/{p-987f395f.entry.js → p-10fcd200.entry.js} +1 -1
  131. package/lib/duet/{p-208c5266.entry.js → p-15f436de.entry.js} +1 -1
  132. package/lib/duet/{p-82a8d1b8.entry.js → p-1ccd58c5.entry.js} +1 -1
  133. package/lib/duet/{p-b171fbba.entry.js → p-1db13f0b.entry.js} +1 -1
  134. package/lib/duet/{p-7e14f2af.entry.js → p-1e0686a9.entry.js} +1 -1
  135. package/lib/duet/{p-7159567b.entry.js → p-242aa821.entry.js} +1 -1
  136. package/lib/duet/{p-cbc310dc.entry.js → p-2444ec8f.entry.js} +1 -1
  137. package/lib/duet/{p-581bd1e2.entry.js → p-289ccd98.entry.js} +1 -1
  138. package/lib/duet/{p-83471afa.entry.js → p-2e2c2a19.entry.js} +1 -1
  139. package/lib/duet/{p-76906326.entry.js → p-2ecc650a.entry.js} +1 -1
  140. package/lib/duet/{p-fcd416b7.entry.js → p-310bb92b.entry.js} +1 -1
  141. package/lib/duet/{p-2a1cbe32.entry.js → p-34450295.entry.js} +1 -1
  142. package/lib/duet/{p-594e10ea.entry.js → p-345e2183.entry.js} +1 -1
  143. package/lib/duet/{p-3aecdd96.entry.js → p-3604860c.entry.js} +1 -1
  144. package/lib/duet/p-37b2ee9a.entry.js +4 -0
  145. package/lib/duet/{p-4b6399eb.entry.js → p-40870281.entry.js} +1 -1
  146. package/lib/duet/{p-28568a2e.entry.js → p-40a23d13.entry.js} +1 -1
  147. package/lib/duet/{p-391d7483.entry.js → p-4d965642.entry.js} +1 -1
  148. package/lib/duet/{p-15d39d1f.entry.js → p-4f06d471.entry.js} +1 -1
  149. package/lib/duet/{p-9e0e21eb.entry.js → p-4fe07ef0.entry.js} +1 -1
  150. package/lib/duet/p-50825938.entry.js +4 -0
  151. package/lib/duet/{p-c392eb8d.entry.js → p-53cae335.entry.js} +1 -1
  152. package/lib/duet/{p-c6b031aa.entry.js → p-5809592e.entry.js} +1 -1
  153. package/lib/duet/{p-1ff6c95a.entry.js → p-598e5e73.entry.js} +1 -1
  154. package/lib/duet/{p-534e3e7e.entry.js → p-5f184ba7.entry.js} +1 -1
  155. package/lib/duet/p-632e7663.entry.js +4 -0
  156. package/lib/duet/{p-f9010948.entry.js → p-672539ed.entry.js} +1 -1
  157. package/lib/duet/{p-91f53c07.entry.js → p-68a068da.entry.js} +1 -1
  158. package/lib/duet/{p-5540e106.entry.js → p-69b51723.entry.js} +1 -1
  159. package/lib/duet/p-6aa7994d.entry.js +4 -0
  160. package/lib/duet/{p-e71cd888.entry.js → p-6fc4b281.entry.js} +1 -1
  161. package/lib/duet/{p-94e4dcc5.entry.js → p-739c6384.entry.js} +1 -1
  162. package/lib/duet/{p-0d373228.entry.js → p-764400c1.entry.js} +1 -1
  163. package/lib/duet/{p-e16141aa.entry.js → p-7e71334f.entry.js} +1 -1
  164. package/lib/duet/{p-f1e8ef6c.entry.js → p-82dce6d4.entry.js} +1 -1
  165. package/lib/duet/p-8a49f99d.entry.js +4 -0
  166. package/lib/duet/{p-75a6c4ea.entry.js → p-8f4d8ad8.entry.js} +1 -1
  167. package/lib/duet/{p-509d502b.entry.js → p-936fb185.entry.js} +1 -1
  168. package/lib/duet/{p-4a6a79ac.entry.js → p-936fdded.entry.js} +1 -1
  169. package/lib/duet/{p-3555559c.entry.js → p-949677c5.entry.js} +1 -1
  170. package/lib/duet/{p-93e08345.entry.js → p-962271e5.entry.js} +1 -1
  171. package/lib/duet/{p-49cec27c.entry.js → p-98719175.entry.js} +1 -1
  172. package/lib/duet/{p-69fcd700.entry.js → p-989bad93.entry.js} +1 -1
  173. package/lib/duet/{p-ea333ff9.entry.js → p-9eac0547.entry.js} +1 -1
  174. package/lib/duet/{p-B0SZpElh.js → p-B4KFAMK0.js} +1 -1
  175. package/lib/duet/p-BDAqOMlM.js +4 -0
  176. package/lib/duet/{p-BVAkfiYN.js → p-BZUiUO2r.js} +1 -1
  177. package/lib/duet/{p-Df3Doz7n.js → p-Bg75Vqqq.js} +1 -1
  178. package/lib/duet/{p-zqnwKSPV.js → p-BuGwN6pE.js} +1 -1
  179. package/lib/duet/p-CmXKRkHp.js +4 -0
  180. package/lib/duet/{p-BO8h6fkS.js → p-CvYfTat-.js} +1 -1
  181. package/lib/duet/p-DOuLHrH5.js +4 -0
  182. package/lib/duet/p-DoYaLdz3.js +4 -0
  183. package/lib/duet/p-NibHwfQi.js +4 -0
  184. package/lib/duet/{p-5c0847ed.entry.js → p-a04be8ca.entry.js} +1 -1
  185. package/lib/duet/{p-d618c7d5.entry.js → p-a102a6aa.entry.js} +1 -1
  186. package/lib/duet/{p-4266fbf1.entry.js → p-a3b21740.entry.js} +1 -1
  187. package/lib/duet/{p-23ab5f9a.entry.js → p-a597acb6.entry.js} +1 -1
  188. package/lib/duet/{p-e05b9e89.entry.js → p-acd1befc.entry.js} +1 -1
  189. package/lib/duet/{p-7d8a853a.entry.js → p-b23c29f7.entry.js} +1 -1
  190. package/lib/duet/{p-e832a646.entry.js → p-b308c0c2.entry.js} +1 -1
  191. package/lib/duet/{p-d3edd251.entry.js → p-b57ee80f.entry.js} +1 -1
  192. package/lib/duet/{p-9f038082.entry.js → p-b8741a8d.entry.js} +1 -1
  193. package/lib/duet/{p-3d6a1cbd.entry.js → p-b8de3ad9.entry.js} +1 -1
  194. package/lib/duet/{p-83ea7a2c.entry.js → p-b9123cc0.entry.js} +1 -1
  195. package/lib/duet/{p-c2ca49c2.entry.js → p-bfbadbcb.entry.js} +1 -1
  196. package/lib/duet/{p-4e05a8a2.entry.js → p-c0130fb4.entry.js} +1 -1
  197. package/lib/duet/{p-22297e2c.entry.js → p-c1a3211b.entry.js} +1 -1
  198. package/lib/duet/{p-60102fbf.entry.js → p-c211c485.entry.js} +1 -1
  199. package/lib/duet/p-c2b71972.entry.js +4 -0
  200. package/lib/duet/{p-5eaf6c14.entry.js → p-c9f7f4ae.entry.js} +1 -1
  201. package/lib/duet/{p-ddcc5283.entry.js → p-cc1c4f4e.entry.js} +1 -1
  202. package/lib/duet/p-d1ca5023.entry.js +4 -0
  203. package/lib/duet/{p-8c4cf422.entry.js → p-d6675d5a.entry.js} +1 -1
  204. package/lib/duet/p-d687723c.entry.js +4 -0
  205. package/lib/duet/{p-53eddd20.entry.js → p-d7a53137.entry.js} +1 -1
  206. package/lib/duet/p-da4ac3b6.entry.js +4 -0
  207. package/lib/duet/{p-16caa5b6.entry.js → p-da53bd51.entry.js} +1 -1
  208. package/lib/duet/{p-5470d3ee.entry.js → p-dd0ef23d.entry.js} +1 -1
  209. package/lib/duet/{p-c0942782.entry.js → p-dd2f230e.entry.js} +1 -1
  210. package/lib/duet/{p-6952b6c4.entry.js → p-dd6b0719.entry.js} +1 -1
  211. package/lib/duet/{p-7587023c.entry.js → p-dd95273b.entry.js} +1 -1
  212. package/lib/duet/{p-72c34073.entry.js → p-e1de05fd.entry.js} +1 -1
  213. package/lib/duet/p-e83797f5.entry.js +4 -0
  214. package/lib/duet/{p-8fc3ee0c.entry.js → p-eb331c3a.entry.js} +1 -1
  215. package/lib/duet/{p-309afd7a.entry.js → p-eb781bf8.entry.js} +1 -1
  216. package/lib/duet/{p-06db096d.entry.js → p-f157de7a.entry.js} +1 -1
  217. package/lib/duet/{p-eadd1f00.entry.js → p-f9ccb081.entry.js} +1 -1
  218. package/lib/duet/{p-e6f0473b.entry.js → p-fb1c1409.entry.js} +1 -1
  219. package/lib/duet/p-fc4091da.entry.js +4 -0
  220. package/lib/duet/{p-D8ISRP9m.js → p-n6rJZ22e.js} +1 -1
  221. package/lib/duet/{p-J96UYMqg.js → p-piYiXb5x.js} +1 -1
  222. package/lib/esm/{a11y-utils-Cm7NmtQF.js → a11y-utils-C8mMYav1.js} +1 -1
  223. package/lib/esm/{app-globals-BfoWvhn6.js → app-globals-BM9EbF8c.js} +1 -1
  224. package/lib/esm/duet-action-button.entry.js +5 -5
  225. package/lib/esm/duet-alert.entry.js +4 -4
  226. package/lib/esm/duet-badge.entry.js +4 -4
  227. package/lib/esm/duet-banner.entry.js +6 -6
  228. package/lib/esm/duet-breadcrumb.entry.js +2 -2
  229. package/lib/esm/duet-breadcrumbs.entry.js +5 -5
  230. package/lib/esm/duet-button_2.entry.js +6 -6
  231. package/lib/esm/duet-callout.entry.js +3 -3
  232. package/lib/esm/duet-caption_4.entry.js +11 -11
  233. package/lib/esm/duet-card.entry.js +5 -5
  234. package/lib/esm/duet-checkbox.entry.js +2 -2
  235. package/lib/esm/duet-checkmark.entry.js +2 -2
  236. package/lib/esm/duet-chip.entry.js +4 -4
  237. package/lib/esm/duet-choice_2.entry.js +5 -5
  238. package/lib/esm/duet-collapsible.entry.js +5 -5
  239. package/lib/esm/duet-combobox.entry.js +4 -4
  240. package/lib/esm/duet-contact-card.entry.js +3 -3
  241. package/lib/esm/duet-cookie-consent.entry.js +2 -2
  242. package/lib/esm/duet-date-picker.entry.js +6 -6
  243. package/lib/esm/duet-divider_2.entry.js +4 -4
  244. package/lib/esm/duet-editable-table_3.entry.js +11 -8
  245. package/lib/esm/duet-empty-state.entry.js +2 -2
  246. package/lib/esm/duet-fieldset.entry.js +3 -3
  247. package/lib/esm/duet-file-chooser.entry.js +2 -2
  248. package/lib/esm/duet-footer.entry.js +4 -4
  249. package/lib/esm/duet-grid_2.entry.js +2 -2
  250. package/lib/esm/duet-header_2.entry.js +7 -7
  251. package/lib/esm/duet-hero.entry.js +4 -4
  252. package/lib/esm/duet-icon.entry.js +4 -4
  253. package/lib/esm/duet-indicator.entry.js +3 -3
  254. package/lib/esm/duet-input_2.entry.js +7 -7
  255. package/lib/esm/duet-layout.entry.js +2 -2
  256. package/lib/esm/duet-list_2.entry.js +2 -2
  257. package/lib/esm/duet-menu-bar-button.entry.js +2 -2
  258. package/lib/esm/duet-menu-bar-dropdown-link.entry.js +2 -2
  259. package/lib/esm/duet-menu-bar-dropdown.entry.js +2 -2
  260. package/lib/esm/duet-menu-bar-item.entry.js +5 -5
  261. package/lib/esm/duet-menu-bar-link.entry.js +2 -2
  262. package/lib/esm/duet-menu-bar.entry.js +3 -3
  263. package/lib/esm/duet-modal.entry.js +7 -7
  264. package/lib/esm/duet-multiselect.entry.js +6 -6
  265. package/lib/esm/duet-nav.entry.js +2 -2
  266. package/lib/esm/duet-notification_2.entry.js +4 -4
  267. package/lib/esm/duet-number-input.entry.js +5 -5
  268. package/lib/esm/duet-overlay.entry.js +2 -2
  269. package/lib/esm/duet-page-heading.entry.js +2 -2
  270. package/lib/esm/duet-pagination_2.entry.js +5 -5
  271. package/lib/esm/duet-panel.entry.js +2 -2
  272. package/lib/esm/duet-phone-input.entry.js +5 -5
  273. package/lib/esm/duet-popup-menu_2.entry.js +5 -5
  274. package/lib/esm/duet-progress.entry.js +3 -3
  275. package/lib/esm/duet-promo-card.entry.js +6 -6
  276. package/lib/esm/duet-radio_2.entry.js +4 -4
  277. package/lib/esm/duet-range-slider.entry.js +6 -6
  278. package/lib/esm/duet-scrollable_3.entry.js +6 -6
  279. package/lib/esm/duet-section-layout.entry.js +1 -1
  280. package/lib/esm/duet-select.entry.js +5 -5
  281. package/lib/esm/duet-shaped-image.entry.js +2 -2
  282. package/lib/esm/duet-share-chart-item.entry.js +1 -1
  283. package/lib/esm/duet-share-chart.entry.js +6 -6
  284. package/lib/esm/duet-show-more.entry.js +3 -3
  285. package/lib/esm/duet-slideout-lang.entry.js +3 -3
  286. package/lib/esm/duet-slideout-link.entry.js +5 -5
  287. package/lib/esm/duet-slideout-panel-dropdown.entry.js +2 -2
  288. package/lib/esm/duet-slideout-panel.entry.js +7 -7
  289. package/lib/esm/duet-slideout.entry.js +7 -7
  290. package/lib/esm/duet-status-icon.entry.js +2 -2
  291. package/lib/esm/duet-step_2.entry.js +3 -3
  292. package/lib/esm/duet-submenu-bar-dropdown-link.entry.js +2 -2
  293. package/lib/esm/duet-submenu-bar-dropdown.entry.js +3 -3
  294. package/lib/esm/duet-submenu-bar-item.entry.js +5 -5
  295. package/lib/esm/duet-submenu-bar-link.entry.js +2 -2
  296. package/lib/esm/duet-submenu-bar.entry.js +3 -3
  297. package/lib/esm/duet-textarea.entry.js +50 -34
  298. package/lib/esm/duet-toggle.entry.js +5 -5
  299. package/lib/esm/duet-toolbar-dropdown-link.entry.js +2 -2
  300. package/lib/esm/duet-toolbar-dropdown.entry.js +2 -2
  301. package/lib/esm/duet-toolbar-item.entry.js +5 -5
  302. package/lib/esm/duet-toolbar-link.entry.js +2 -2
  303. package/lib/esm/duet-toolbar.entry.js +2 -2
  304. package/lib/esm/duet-tooltip-button_2.entry.js +3 -3
  305. package/lib/esm/duet-tooltip.entry.js +5 -5
  306. package/lib/esm/duet-tray.entry.js +4 -4
  307. package/lib/esm/duet-upload-aria-status.entry.js +1 -1
  308. package/lib/esm/duet-upload-item.entry.js +4 -4
  309. package/lib/esm/duet-visually-hidden.entry.js +1 -1
  310. package/lib/esm/duet.js +4 -4
  311. package/lib/esm/{errorcodes.utils-DCSMydPz.js → errorcodes.utils-Dx5bYlis.js} +1 -1
  312. package/lib/esm/{focus-utils-C8cj1ygp.js → focus-utils-C9Mfpzkg.js} +1 -1
  313. package/lib/esm/{index-BVAkfiYN.js → index-BZUiUO2r.js} +1 -1
  314. package/lib/esm/{label-Cqxj4RVo.js → label-DA07U81d.js} +1 -1
  315. package/lib/esm/{language-utils-uFQZRSPE.js → language-utils-DBHdig-k.js} +1 -1
  316. package/lib/esm/loader.js +4 -4
  317. package/lib/esm/{slot-utils-D8NnYUf2.js → slot-utils-CiYHolIk.js} +1 -1
  318. package/lib/esm/{themeable-component-B8TGOi99.js → themeable-component-CMi71I41.js} +1 -1
  319. package/lib/esm/{token-utils-Dw-GA7-4.js → token-utils-Dks4GBDa.js} +1 -1
  320. package/lib/esm/{tokens-DcQPCCbT.js → tokens-DOuLHrH5.js} +3 -3
  321. package/lib/esm/{tokens.module-Bh9dkusU.js → tokens.module-BDAqOMlM.js} +3 -3
  322. package/lib/types/components/duet-textarea/duet-textarea.d.ts +13 -7
  323. package/lib/types/components.d.ts +4 -4
  324. package/package.json +15 -9
  325. package/lib/duet/p-1e78e2c1.entry.js +0 -4
  326. package/lib/duet/p-26948251.entry.js +0 -4
  327. package/lib/duet/p-2892dd48.entry.js +0 -4
  328. package/lib/duet/p-4a54f0ec.entry.js +0 -4
  329. package/lib/duet/p-Bh9dkusU.js +0 -4
  330. package/lib/duet/p-Bpx9VxA7.js +0 -4
  331. package/lib/duet/p-CSVmZZ1n.js +0 -4
  332. package/lib/duet/p-DcQPCCbT.js +0 -4
  333. package/lib/duet/p-b95c5ccf.entry.js +0 -4
  334. package/lib/duet/p-c05e4dae.entry.js +0 -4
  335. package/lib/duet/p-c9000a76.entry.js +0 -4
  336. package/lib/duet/p-d3812b9c.entry.js +0 -4
  337. package/lib/duet/p-e2a75d7e.entry.js +0 -4
  338. package/lib/duet/p-e59a56b9.entry.js +0 -4
  339. package/lib/duet/p-e9a32cd5.entry.js +0 -4
  340. package/lib/duet/p-ff8f848e.entry.js +0 -4
  341. package/lib/duet/p-s4mQ--kV.js +0 -4
@@ -152,7 +152,7 @@ export class DuetLink {
152
152
  return (h(Fragment, null, h("span", { class: "duet-link-content", part: "duet-link-content" }, h("slot", null)), Build.isBrowser && (this.resolvedDownload || this.external) && this.variation === "default" && (h(Fragment, null, h("span", { class: "duet-link-icon-tail" }, "\u00A0", h("duet-icon", { icon: this.resolvedDownload ? downloadIcon.svg : newWindowIcon.svg, size: "xx-small", margin: "none", color: "currentColor" }))))));
153
153
  }
154
154
  renderBlockContent() {
155
- return (h(Fragment, null, this.icon && (h("span", { class: "block__icon" }, h("duet-icon", { class: this.iconResponsive ? "icon-responsive" : "", size: "auto", name: this.icon, margin: "none", color: this.iconColor }))), h("span", { class: "block__content" }, this.renderDefaultContent()), h("span", { class: "block__chevron", part: "block-chevron" }, h("duet-icon", { class: "block__chevron-icon", icon: this.external ? newWindowIconLarge.svg : chevronIcon.svg, size: "x-small", margin: "none", color: "primary-dark" }))));
155
+ return (h(Fragment, null, this.icon && (h("span", { class: "block__icon" }, h("duet-icon", { class: this.iconResponsive ? "icon-responsive" : "", size: "auto", name: this.icon, margin: "none", color: this.iconColor }))), h("span", { class: "block__content" }, this.renderDefaultContent()), h("span", { class: "block__chevron", part: "block-chevron" }, h("duet-icon", { class: "block__chevron-icon", icon: this.external ? newWindowIconLarge.svg : chevronIcon.svg, size: "x-small", margin: "none", color: "primary" }))));
156
156
  }
157
157
  renderButtonCardContent() {
158
158
  const iconWrapStyle = {
@@ -181,10 +181,10 @@ export class DuetLink {
181
181
  const Tag = !this.url && this.variation !== "default" ? "button" : "a";
182
182
  const role = !this.url && this.variation === "default" ? "button" : null;
183
183
  const isButton = Tag === "button";
184
- return (h(Host, { key: 'c6dfd9dd4ce34ea1deea147e76481197cfa90854', class: {
184
+ return (h(Host, { key: 'c9771c4890b8c42dd47c1b5794a9bd1bac35e26f', class: {
185
185
  [`duet-link-${this.variation}`]: true,
186
186
  "duet-m-0": this.margin === "none",
187
- } }, h(Tag, { key: '72968ba8e93c2773e8cdbdc7521a854e63569826', href: this.url, class: {
187
+ } }, h(Tag, { key: '63c398171aaf01ce55e54040fc911587749b4d0e', href: this.url, class: {
188
188
  "duet-link": true,
189
189
  "duet-link-is-external": this.external,
190
190
  "duet-link-is-download": !!this.download,
@@ -28,7 +28,7 @@
28
28
  :host:last-child, :host:last-of-type {
29
29
  margin-right: 0 !important;
30
30
  }
31
- [alignment=form-distribute] > :host:last-of-type {
31
+ [alignment=form-distribute] > :host:last-of-type:not(:last-child) {
32
32
  margin-right: 8px !important;
33
33
  }
34
34
 
@@ -98,7 +98,7 @@
98
98
  :host:last-child, :host:last-of-type {
99
99
  margin-right: 0 !important;
100
100
  }
101
- [alignment=form-distribute] > :host:last-of-type {
101
+ [alignment=form-distribute] > :host:last-of-type:not(:last-child) {
102
102
  margin-right: 16px !important;
103
103
  }
104
104
  @media (min-width: 36em) {
@@ -33,7 +33,7 @@
33
33
  :host:last-child, :host:last-of-type {
34
34
  margin-right: 0 !important;
35
35
  }
36
- [alignment=form-distribute] > :host:last-of-type {
36
+ [alignment=form-distribute] > :host:last-of-type:not(:last-child) {
37
37
  margin-right: 16px !important;
38
38
  }
39
39
  @media (min-width: 36em) {
@@ -40,7 +40,7 @@ span.flag-container {
40
40
  :host:last-child, :host:last-of-type {
41
41
  margin-right: 0 !important;
42
42
  }
43
- [alignment=form-distribute] > :host:last-of-type {
43
+ [alignment=form-distribute] > :host:last-of-type:not(:last-child) {
44
44
  margin-right: 16px !important;
45
45
  }
46
46
  @media (min-width: 36em) {
@@ -28,7 +28,7 @@
28
28
  :host:last-child, :host:last-of-type {
29
29
  margin-right: 0 !important;
30
30
  }
31
- [alignment=form-distribute] > :host:last-of-type {
31
+ [alignment=form-distribute] > :host:last-of-type:not(:last-child) {
32
32
  margin-right: 4px !important;
33
33
  }
34
34
 
@@ -30,7 +30,7 @@
30
30
  :host:last-child, :host:last-of-type {
31
31
  margin-right: 0 !important;
32
32
  }
33
- [alignment=form-distribute] > :host:last-of-type {
33
+ [alignment=form-distribute] > :host:last-of-type:not(:last-child) {
34
34
  margin-right: 28px !important;
35
35
  }
36
36
 
@@ -55,7 +55,7 @@
55
55
  :host(.horizontal-responsive):last-child, :host(.horizontal-responsive):last-of-type {
56
56
  margin-right: 0 !important;
57
57
  }
58
- [alignment=form-distribute] > :host(.horizontal-responsive):last-of-type {
58
+ [alignment=form-distribute] > :host(.horizontal-responsive):last-of-type:not(:last-child) {
59
59
  margin-right: 28px !important;
60
60
  }
61
61
  :host(.horizontal-responsive) .duet-label .duet-label-content {
@@ -99,7 +99,7 @@
99
99
  :host:last-child, :host:last-of-type {
100
100
  margin-right: 0 !important;
101
101
  }
102
- [alignment=form-distribute] > :host:last-of-type {
102
+ [alignment=form-distribute] > :host:last-of-type:not(:last-child) {
103
103
  margin-right: 16px !important;
104
104
  }
105
105
  @media (min-width: 36em) {
@@ -109,7 +109,7 @@
109
109
  :host(:not(.duet-m-0)):last-child, :host(:not(.duet-m-0)):last-of-type {
110
110
  margin-right: 0 !important;
111
111
  }
112
- [alignment=form-distribute] > :host(:not(.duet-m-0)):last-of-type {
112
+ [alignment=form-distribute] > :host(:not(.duet-m-0)):last-of-type:not(:last-child) {
113
113
  margin-right: 16px !important;
114
114
  }
115
115
 
@@ -120,7 +120,7 @@ export class DuetTable {
120
120
  * Local methods.
121
121
  */
122
122
  copyHeadingsToCells() {
123
- if (Build.isServer) {
123
+ if (Build.isServer || ["none", "none-scrollable"].includes(this.breakpoint)) {
124
124
  return;
125
125
  }
126
126
  const headingElements = this.element.querySelectorAll(this.headingSelector);
@@ -144,7 +144,7 @@ export class DuetTable {
144
144
  });
145
145
  }
146
146
  render() {
147
- return (h(Host, { key: 'f7fa5871fe4bbfc89ec3683ad0d4d9824fb9347a', class: {
147
+ return (h(Host, { key: '02ed0a7f4b3c7504b0f6df2ee9e923f5afbca106', class: {
148
148
  [`duet-table-${this.variation}`]: true,
149
149
  "duet-table-flattened": !this.matchesBreakpoint,
150
150
  // sticky only valid when in regular table layout
@@ -153,7 +153,7 @@ export class DuetTable {
153
153
  "duet-m-0": this.margin === "none",
154
154
  "duet-theme-turva": this.theme === "turva",
155
155
  "duet-table-hide-head-visually": this.hideHeadVisually,
156
- } }, h("slot", { key: '0bdd203be920ca5f48f82473ce69f63d0ee3aa86' })));
156
+ } }, h("slot", { key: '946a620f959caf19dc712844d81ebc345870757d' })));
157
157
  }
158
158
  static get is() { return "duet-table"; }
159
159
  static get encapsulation() { return "shadow"; }
@@ -98,7 +98,7 @@
98
98
  :host:last-child, :host:last-of-type {
99
99
  margin-right: 0 !important;
100
100
  }
101
- [alignment=form-distribute] > :host:last-of-type {
101
+ [alignment=form-distribute] > :host:last-of-type:not(:last-child) {
102
102
  margin-right: 16px !important;
103
103
  }
104
104
  @media (min-width: 36em) {
@@ -6,16 +6,15 @@ import { inheritGlobalTheme } from "../../common";
6
6
  import { DuetInternalLabel } from "../../common/label";
7
7
  import { createID } from "../../utils/create-id";
8
8
  import { cleanValue } from "../../utils/input-utils";
9
- import { connectLanguageChangeObserver, disconnectLanguageChangeObserver, formatNumber, getLocaleString, } from "../../utils/language-utils";
9
+ import { debounce } from "../../utils/js-utils";
10
+ import { getLanguage, formatNumber } from "../../utils/language-utils";
10
11
  import { checkNamedSlotElement, proxyInputToSlot } from "../../utils/slot-utils";
11
- const CharacterCount = ({ value, maxlength, label, theme }) => {
12
+ const CharacterCount = ({ value, maxlength, theme }) => {
12
13
  if (maxlength == null) {
13
14
  return;
14
15
  }
15
16
  const length = value.length;
16
- const remainder = Math.max(maxlength - length, 0); // ensure we never have negative numbers
17
- const isApproachingLimit = remainder / maxlength <= 0.1; // <= 10% chars remaining
18
- return (h("div", { class: "duet-character-count" }, h("duet-caption", { margin: "none", theme: theme, size: "small" }, h("duet-visually-hidden", { "aria-live": "polite", "aria-atomic": "true", class: "duet-textarea-counter-remaining" }, isApproachingLimit && `${remainder} ${label}`), h("span", { "aria-hidden": "true" }, length, "/", maxlength))));
17
+ return (h("div", { class: "duet-character-count" }, h("duet-caption", { margin: "none", theme: theme, size: "small" }, h("span", { "aria-hidden": "true" }, length, "/", maxlength))));
19
18
  };
20
19
  /**
21
20
  * @slot tooltip - Use to place a tooltip alongside the label.
@@ -32,12 +31,15 @@ export class DuetTextarea {
32
31
  this.labelId = createID("DuetLabel");
33
32
  this.errorId = createID("DuetError");
34
33
  this.characterCountId = createID("DuetCharacterCount");
34
+ this.visuallyHiddenCounterDebounceMS = 1000;
35
35
  this.disallowPatternRegex = null;
36
- this.counterLabelDefaults = {
37
- fi: "merkkiä jäljellä",
38
- en: "characters remaining",
39
- sv: "tecken kvar",
36
+ this.charactersRemainingLabel = {
37
+ // The comma in Finnish is to prevent use of partitive case for remaining
38
+ fi: "{remaining}, merkkiä jäljellä {max}{postfix}.",
39
+ en: "{remaining} characters remaining out of {max}.",
40
+ sv: "{remaining} tecken kvar av {max}.",
40
41
  };
42
+ this.language = getLanguage();
41
43
  /**
42
44
  * Controls the margin of the component.
43
45
  */
@@ -123,10 +125,9 @@ export class DuetTextarea {
123
125
  */
124
126
  this.counter = false;
125
127
  /**
126
- * Accessible label for character counter.
127
- * @default fi: "merkkiä jäljellä", en: "characters remaining", sv: "tecken kvar"
128
+ * @deprecated, the visually hidden counter label is no longer changeable
128
129
  */
129
- this.counterLabel = getLocaleString(this.counterLabelDefaults);
130
+ this.counterLabel = "";
130
131
  /**
131
132
  * Component event handling.
132
133
  */
@@ -158,15 +159,23 @@ export class DuetTextarea {
158
159
  });
159
160
  };
160
161
  this.handleFocus = (ev) => {
161
- if (this.counter) {
162
- this.hiddenCounterLabel.textContent = `${formatNumber(Math.max(this.maxlength - this.value.length, 0))}/${formatNumber(this.maxlength)} ${this.counterLabel}`;
163
- }
164
162
  this.duetFocus.emit({
165
163
  originalEvent: ev,
166
164
  value: this.value,
167
165
  component: "duet-textarea",
168
166
  });
169
167
  };
168
+ /**
169
+ * When the character limit has been reached and key is pressed, switch the
170
+ * visually hidden label temprorily to empty so it is re-read.
171
+ */
172
+ this.handleKeyDown = () => {
173
+ var _a;
174
+ if (((_a = this.value) === null || _a === void 0 ? void 0 : _a.length) === this.maxlength) {
175
+ this.visuallyHiddenCounterText = "";
176
+ setTimeout(() => this.updateVisuallyHiddenCounterText(), 10);
177
+ }
178
+ };
170
179
  this.getDescribedBy = () => {
171
180
  const describedBy = [];
172
181
  if (this.isCaptionVisible && this.topCaptionId) {
@@ -178,7 +187,7 @@ export class DuetTextarea {
178
187
  if (this.error) {
179
188
  describedBy.push(this.errorId);
180
189
  }
181
- if (this.counter) {
190
+ if (this.counter && this.maxlength) {
182
191
  describedBy.push(this.characterCountId);
183
192
  }
184
193
  return describedBy.length > 0 ? describedBy.join(" ") : null;
@@ -190,6 +199,11 @@ export class DuetTextarea {
190
199
  get validity() {
191
200
  return this.nativeInput.validity;
192
201
  }
202
+ valueChange(newValue, oldValue) {
203
+ if (newValue !== oldValue) {
204
+ debounce(() => this.updateVisuallyHiddenCounterText(), this.visuallyHiddenCounterDebounceMS)();
205
+ }
206
+ }
193
207
  disallowedPatternChange() {
194
208
  this.disallowPatternRegex = this.disallowPattern ? new RegExp(this.disallowPattern, "gu") : null;
195
209
  }
@@ -200,19 +214,22 @@ export class DuetTextarea {
200
214
  inheritGlobalTheme(this);
201
215
  this.disallowedPatternChange();
202
216
  this.isCaptionVisible = !!this.caption;
217
+ this.updateVisuallyHiddenCounterText();
203
218
  checkNamedSlotElement(this.element, "tooltip", "duet-tooltip", 1, true);
204
219
  if (this.counter && this.maxlength == null) {
205
220
  console.warn("[DUET WARNING]: counter will only take effect if maxlength is set");
206
221
  }
207
222
  }
208
- connectedCallback() {
209
- connectLanguageChangeObserver(this, {
210
- prop: "counterLabel",
211
- defaults: "counterLabelDefaults",
212
- });
213
- }
214
- disconnectedCallback() {
215
- disconnectLanguageChangeObserver(this);
223
+ updateVisuallyHiddenCounterText() {
224
+ var _a;
225
+ const remaining = formatNumber(Math.max(this.maxlength - (((_a = this.value) === null || _a === void 0 ? void 0 : _a.length) || 0), 0));
226
+ // postfix is used only in Finnish
227
+ // with "a" for full hundreds or numbers ending with 2, 3, 6, or 8; with "ä" otherwise
228
+ const postfix = this.maxlength % 100 === 0 || [2, 3, 6, 8].includes(this.maxlength % 10) ? ":sta" : ":stä";
229
+ this.visuallyHiddenCounterText = this.charactersRemainingLabel[this.language]
230
+ .replace("{remaining}", remaining)
231
+ .replace("{max}", formatNumber(this.maxlength))
232
+ .replace("{postfix}", postfix);
216
233
  }
217
234
  componentDidRender() {
218
235
  proxyInputToSlot(this.element, this.proxyId, this.name, this.value, this.required);
@@ -230,19 +247,17 @@ export class DuetTextarea {
230
247
  */
231
248
  render() {
232
249
  const identifier = this.identifier || this.textareaId;
233
- return (h(Host, { key: '624bdcddb58e1530c51ac379e2d274001b816883', class: {
250
+ return (h(Host, { key: '174c025b28759704200ac6bd9b20c07513796881', class: {
234
251
  "duet-m-0": this.margin === "none",
235
252
  "duet-has-counter": this.counter && !this.error,
236
253
  "duet-expand": this.expand,
237
- } }, h("div", { key: '7052a9e19e9394d91343b9c356317706491483e4', class: {
254
+ } }, h("div", { key: 'cb62d2c55014bfb821da50fbeb53bef3878f42a2', class: {
238
255
  "duet-textarea-container": true,
239
256
  "duet-theme-turva": this.theme === "turva",
240
257
  "duet-label-hidden": this.labelHidden,
241
258
  "duet-input-top-caption-shown": this.isCaptionVisible,
242
259
  "has-error": !!this.error,
243
- } }, h(DuetInternalLabel, { key: 'f485a02ef392a81b6ce9675943b97589ab104787', theme: this.theme === "turva" ? "turva" : "default", class: { "duet-has-tooltip": !!this.tooltip }, margin: this.isCaptionVisible ? "small" : "auto", color: this.labelColor, weight: this.labelWeight, id: this.labelId, for: identifier }, this.label), this.tooltip && (h("duet-tooltip", { key: '2c6ad7e4e904a8296cd78c10f44b4059766fb6e8', direction: this.tooltipDirection, accessibleInputLabel: this.label, theme: this.theme === "turva" ? "turva" : "default" }, this.tooltip)), h("slot", { key: 'a9574cd2fe26c7aae531900b941b9f599bbf4cbb', name: "tooltip" }), this.caption && (h("duet-caption", { key: '37ff8e38f41f97d150a8ded794acd5134cf396dd', id: this.topCaptionId, size: "medium", theme: this.theme === "turva" ? "turva" : "default" }, this.caption)), h("div", { key: '91d6f9e0aff8fa8cb1eb700cc8e942a761171427', class: "duet-textarea-wrapper" }, this.placeholder && this.echoPlaceholder && this.value && (h("duet-caption", { key: 'f11e135d88137d819fefae10d48df76927122d5e', id: this.topCaptionPlaceholderId, class: "duet-textarea-placeholder", size: "small" }, this.placeholder)), h("textarea", { key: '21d58de3abc2c2befac4c05ba19ecc24931ff873', onInput: this.handleInput, onChange: this.handleChange, onBlur: this.handleBlur, onFocus: this.handleFocus, ref: input => (this.nativeInput = input), class: { "duet-textarea": true, disabled: this.disabled }, value: this.value, disabled: this.disabled, "aria-labelledby": this.accessibleLabelledBy ? `${this.labelId} ${this.accessibleLabelledBy}` : this.labelId, "aria-controls": this.accessibleControls, "aria-autocomplete": this.accessibleAutocomplete, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": this.getDescribedBy(), "aria-details": this.accessibleDetails, "aria-description": this.accessibleDescription, placeholder: this.placeholder, spellcheck: "false", required: this.required, minlength: this.minlength, maxlength: this.maxlength, role: this.role, name: this.name, id: identifier })), h("duet-grid", { key: '5e20d51637a82792cc21934cd1047db4926f16c8', alignment: "stretch" }, h("duet-grid-item", { key: 'd661c25567e85f2371e473d41444e024f8396f3d', margin: "none", fill: true }, h("div", { key: '6953975b58cf0abb73c6577ad7a78ba46e88230b', class: "duet-textarea-help duet-textarea-error", id: this.errorId, "aria-atomic": "true", "aria-live": this.accessibleLiveError, "aria-relevant": "additions removals" }, this.error && h("span", { key: 'a3609f7dfffead70a15375479ab2223f78eb3e50' }, this.error))), h("duet-grid-item", { key: 'c249410eedf7c2f384f9ce32ac03aeb29936a594', margin: "none", class: "duet-character-count-caption" }, this.counter && (h(CharacterCount, { key: 'abd891c68360549dd3c1a9ee0ff3dbeec5104049', theme: this.theme, value: this.value, maxlength: this.maxlength, label: this.counterLabel })))), this.counter && (h("duet-visually-hidden", { key: '45e036b9eb30379561d79b4822902ef31719a26e', class: "duet-visually-hidden", id: this.characterCountId, ref: el => {
244
- this.hiddenCounterLabel = el;
245
- } })))));
260
+ } }, h(DuetInternalLabel, { key: 'e60161bef26e445f508caa52d9ec36fad2e5a4d6', theme: this.theme === "turva" ? "turva" : "default", class: { "duet-has-tooltip": !!this.tooltip }, margin: this.isCaptionVisible ? "small" : "auto", color: this.labelColor, weight: this.labelWeight, id: this.labelId, for: identifier }, this.label), this.tooltip && (h("duet-tooltip", { key: '50d1b502ae2daeb5aa6b52a506f1b355b723ffd1', direction: this.tooltipDirection, accessibleInputLabel: this.label, theme: this.theme === "turva" ? "turva" : "default" }, this.tooltip)), h("slot", { key: '60cac12c58f83ea622fb1d55e4a548b424119c1c', name: "tooltip" }), this.caption && (h("duet-caption", { key: '57a5af01882adc799ae421d87c1a08e4d1a51ccd', id: this.topCaptionId, size: "medium", theme: this.theme === "turva" ? "turva" : "default" }, this.caption)), h("div", { key: 'ba6e6f1f9afaf509a45b6ce58c3cf8e3345c62fe', class: "duet-textarea-wrapper" }, this.placeholder && this.echoPlaceholder && this.value && (h("duet-caption", { key: 'bdac513f777135b1c5fea678c622fe3b281f83c1', id: this.topCaptionPlaceholderId, class: "duet-textarea-placeholder", size: "small" }, this.placeholder)), h("textarea", { key: '05e779176f391b62641944cf8e9004f82ed55af1', onInput: this.handleInput, onChange: this.handleChange, onBlur: this.handleBlur, onFocus: this.handleFocus, onKeyDown: this.handleKeyDown, ref: input => (this.nativeInput = input), class: { "duet-textarea": true, disabled: this.disabled }, value: this.value, disabled: this.disabled, "aria-labelledby": this.accessibleLabelledBy ? `${this.labelId} ${this.accessibleLabelledBy}` : this.labelId, "aria-controls": this.accessibleControls, "aria-autocomplete": this.accessibleAutocomplete, "aria-activedescendant": this.accessibleActiveDescendant, "aria-owns": this.accessibleOwns, "aria-describedby": this.getDescribedBy(), "aria-details": this.accessibleDetails, "aria-description": this.accessibleDescription, placeholder: this.placeholder, spellcheck: "false", required: this.required, minlength: this.minlength, maxlength: this.maxlength, role: this.role, name: this.name, id: identifier })), h("duet-grid", { key: '3f974cde13c49693404189ef820b30a47093cc01', alignment: "stretch" }, h("duet-grid-item", { key: '19fc220eed8890873a9bfcda21ccdce4214f125f', margin: "none", fill: true }, h("div", { key: 'ff672547fb887361bc8236db35e37c1c0f5d04ab', class: "duet-textarea-help duet-textarea-error", id: this.errorId, "aria-atomic": "true", "aria-live": this.accessibleLiveError, "aria-relevant": "additions removals" }, this.error && h("span", { key: 'b6fdd99d426bc3e546bde21855954fd2a93c7e36' }, this.error))), h("duet-grid-item", { key: 'a11f7efc87417bf66c2bf07fdc4bff6ac4e77f9e', margin: "none", class: "duet-character-count-caption" }, this.counter && h(CharacterCount, { key: '0675d261eeecf2c833c95103f5d43688ea3bf663', theme: this.theme, value: this.value, maxlength: this.maxlength }))), this.counter && this.maxlength && (h("duet-visually-hidden", { key: 'ee10cca12e1c4f29483a33c1ed04f03ce01f3f36', id: this.characterCountId, class: "visually-hidden-counter" }, this.visuallyHiddenCounterText)))));
246
261
  }
247
262
  static get is() { return "duet-textarea"; }
248
263
  static get encapsulation() { return "shadow"; }
@@ -944,18 +959,24 @@ export class DuetTextarea {
944
959
  "optional": false,
945
960
  "docs": {
946
961
  "tags": [{
947
- "name": "default",
948
- "text": "fi: \"merkki\u00E4 j\u00E4ljell\u00E4\", en: \"characters remaining\", sv: \"tecken kvar\""
962
+ "name": "deprecated",
963
+ "text": ", the visually hidden counter label is no longer changeable"
949
964
  }],
950
- "text": "Accessible label for character counter."
965
+ "text": ""
951
966
  },
952
967
  "getter": false,
953
968
  "setter": false,
954
969
  "reflect": false,
955
- "defaultValue": "getLocaleString(this.counterLabelDefaults)"
970
+ "defaultValue": "\"\""
956
971
  }
957
972
  };
958
973
  }
974
+ static get states() {
975
+ return {
976
+ "language": {},
977
+ "visuallyHiddenCounterText": {}
978
+ };
979
+ }
959
980
  static get events() {
960
981
  return [{
961
982
  "method": "duetInput",
@@ -1075,6 +1096,9 @@ export class DuetTextarea {
1075
1096
  static get elementRef() { return "element"; }
1076
1097
  static get watchers() {
1077
1098
  return [{
1099
+ "propName": "value",
1100
+ "methodName": "valueChange"
1101
+ }, {
1078
1102
  "propName": "disallowPattern",
1079
1103
  "methodName": "disallowedPatternChange"
1080
1104
  }];
@@ -100,7 +100,7 @@
100
100
  :host:last-child, :host:last-of-type {
101
101
  margin-right: 0 !important;
102
102
  }
103
- [alignment=form-distribute] > :host:last-of-type {
103
+ [alignment=form-distribute] > :host:last-of-type:not(:last-child) {
104
104
  margin-right: 8px !important;
105
105
  }
106
106