@public-ui/components 4.5.0-rc.6 → 4.5.0-rc.7

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 (580) hide show
  1. package/assets/kolicons/kolicons.eot +0 -0
  2. package/assets/kolicons/kolicons.ttf +0 -0
  3. package/assets/kolicons/kolicons.woff +0 -0
  4. package/assets/kolicons/kolicons.woff2 +0 -0
  5. package/assets/kolicons/style.css +6 -6
  6. package/custom-elements.json +1 -2
  7. package/dist/cjs/{Heading-Bck3PFpH.js → Heading-d30Feghg.js} +3 -3
  8. package/dist/cjs/{Heading-Bck3PFpH.js.map → Heading-d30Feghg.js.map} +1 -1
  9. package/dist/cjs/{api-BcNl2vZm.js → api-C8ZkIyx7.js} +8 -8
  10. package/dist/cjs/{api-BcNl2vZm.js.map → api-C8ZkIyx7.js.map} +1 -1
  11. package/dist/cjs/{api-LP3gnw7U.js → api-CRSjJs8P.js} +12 -12
  12. package/dist/cjs/{api-LP3gnw7U.js.map → api-CRSjJs8P.js.map} +1 -1
  13. package/dist/cjs/{app-globals-oR-jEiju.js → app-globals-B6wB2cXk.js} +4 -4
  14. package/dist/cjs/{app-globals-oR-jEiju.js.map → app-globals-B6wB2cXk.js.map} +1 -1
  15. package/dist/cjs/{base-CwXJywKD.js → base-C3MDHUog.js} +4 -4
  16. package/dist/cjs/{base-CwXJywKD.js.map → base-C3MDHUog.js.map} +1 -1
  17. package/dist/cjs/{base-DbfvhKRa.js → base-CyQnTxi6.js} +4 -4
  18. package/dist/cjs/{base-DbfvhKRa.js.map → base-CyQnTxi6.js.map} +1 -1
  19. package/dist/cjs/{base-DaK2F3pq.js → base-DgUZAiNc.js} +16 -16
  20. package/dist/cjs/{base-DaK2F3pq.js.map → base-DgUZAiNc.js.map} +1 -1
  21. package/dist/cjs/{base-BDGmLWVj.js → base-LmwA5h1k.js} +5 -5
  22. package/dist/cjs/{base-BDGmLWVj.js.map → base-LmwA5h1k.js.map} +1 -1
  23. package/dist/cjs/{base-web-component-C8MLLGxi.js → base-web-component-C-CwpVZw.js} +16 -9
  24. package/dist/cjs/base-web-component-C-CwpVZw.js.map +1 -0
  25. package/dist/cjs/{base-web-component-mmgXJMg0.js → base-web-component-d2k3Mc9P.js} +7 -7
  26. package/dist/cjs/{base-web-component-mmgXJMg0.js.map → base-web-component-d2k3Mc9P.js.map} +1 -1
  27. package/dist/cjs/{behavior-DWqrO2yi.js → behavior-C-BdOoSN.js} +3 -3
  28. package/dist/cjs/{behavior-DWqrO2yi.js.map → behavior-C-BdOoSN.js.map} +1 -1
  29. package/dist/cjs/{color-C9UZwMvC.js → color-CZiNkZFM.js} +3 -3
  30. package/dist/cjs/{color-C9UZwMvC.js.map → color-CZiNkZFM.js.map} +1 -1
  31. package/dist/cjs/{component-GfDUM7Um.js → component-B1kzY-J5.js} +4 -4
  32. package/dist/cjs/{component-GfDUM7Um.js.map → component-B1kzY-J5.js.map} +1 -1
  33. package/dist/cjs/{component-BT86Nj6R.js → component-B1zMXSkZ.js} +5 -5
  34. package/dist/cjs/{component-BT86Nj6R.js.map → component-B1zMXSkZ.js.map} +1 -1
  35. package/dist/cjs/{component-X_thXnkE.js → component-BHDnSaCH.js} +3 -3
  36. package/dist/cjs/{component-X_thXnkE.js.map → component-BHDnSaCH.js.map} +1 -1
  37. package/dist/cjs/{component-1NrcvQzp.js → component-BIz_gAas.js} +7 -7
  38. package/dist/cjs/{component-1NrcvQzp.js.map → component-BIz_gAas.js.map} +1 -1
  39. package/dist/cjs/{component-ZPvcKmPR.js → component-BairlFHi.js} +3 -3
  40. package/dist/cjs/{component-ZPvcKmPR.js.map → component-BairlFHi.js.map} +1 -1
  41. package/dist/cjs/{component-xIM903qi.js → component-CmyhDJ0r.js} +3 -3
  42. package/dist/cjs/{component-xIM903qi.js.map → component-CmyhDJ0r.js.map} +1 -1
  43. package/dist/cjs/{component-DNDfYzXZ.js → component-D2kI8uwF.js} +5 -5
  44. package/dist/cjs/{component-DNDfYzXZ.js.map → component-D2kI8uwF.js.map} +1 -1
  45. package/dist/cjs/{component-CmvG-auD.js → component-D33lYKYT.js} +3 -3
  46. package/dist/cjs/{component-CmvG-auD.js.map → component-D33lYKYT.js.map} +1 -1
  47. package/dist/cjs/{component-uHDfV5D8.js → component-DITtC2F9.js} +7 -7
  48. package/dist/cjs/{component-uHDfV5D8.js.map → component-DITtC2F9.js.map} +1 -1
  49. package/dist/cjs/{component-DuPEYx7z.js → component-DaAVlb5U.js} +4 -4
  50. package/dist/cjs/{component-DuPEYx7z.js.map → component-DaAVlb5U.js.map} +1 -1
  51. package/dist/cjs/{component-CtNPdMS0.js → component-KT0MKnL5.js} +5 -5
  52. package/dist/cjs/{component-CtNPdMS0.js.map → component-KT0MKnL5.js.map} +1 -1
  53. package/dist/cjs/{component-o3s7XplI.js → component-_jdRFw0Y.js} +4 -4
  54. package/dist/cjs/{component-o3s7XplI.js.map → component-_jdRFw0Y.js.map} +1 -1
  55. package/dist/cjs/{contrast-kLMuDQLl.js → contrast-CrL_sMV6.js} +3 -12
  56. package/dist/cjs/contrast-CrL_sMV6.js.map +1 -0
  57. package/dist/cjs/{dev.utils-BjrG4FNf.js → dev.utils-B1bWgxrQ.js} +3 -3
  58. package/dist/cjs/{dev.utils-BjrG4FNf.js.map → dev.utils-B1bWgxrQ.js.map} +1 -1
  59. package/dist/cjs/{devtools-D_afWgpU.js → devtools-DlcIXbRm.js} +4 -4
  60. package/dist/cjs/{devtools-D_afWgpU.js.map → devtools-DlcIXbRm.js.map} +1 -1
  61. package/dist/cjs/{field-control-DAHkvYr4.js → field-control-D0lryu2-.js} +8 -8
  62. package/dist/cjs/{field-control-DAHkvYr4.js.map → field-control-D0lryu2-.js.map} +1 -1
  63. package/dist/cjs/{group-DHYxVn2x.js → group-DIGY9sM6.js} +5 -5
  64. package/dist/cjs/{group-DHYxVn2x.js.map → group-DIGY9sM6.js.map} +1 -1
  65. package/dist/cjs/{index-BnEus4Y9.js → index-qcrGfEY6.js} +3 -3
  66. package/dist/cjs/{index-BnEus4Y9.js.map → index-qcrGfEY6.js.map} +1 -1
  67. package/dist/cjs/{input-eDaEE80n.js → input-BjNjOSo5.js} +5 -5
  68. package/dist/cjs/{input-eDaEE80n.js.map → input-BjNjOSo5.js.map} +1 -1
  69. package/dist/cjs/{input-container-Cye4qL9S.js → input-container-DghKiuUH.js} +7 -7
  70. package/dist/cjs/{input-container-Cye4qL9S.js.map → input-container-DghKiuUH.js.map} +1 -1
  71. package/dist/cjs/{item-C0yzJQUg.js → item-BKz8BDg2.js} +4 -4
  72. package/dist/cjs/{item-C0yzJQUg.js.map → item-BKz8BDg2.js.map} +1 -1
  73. package/dist/cjs/{item-wz0gBnmK.js → item-BMB6SaVm.js} +4 -4
  74. package/dist/cjs/{item-wz0gBnmK.js.map → item-BMB6SaVm.js.map} +1 -1
  75. package/dist/cjs/{item-Dflr47KV.js → item-CFojolE7.js} +8 -8
  76. package/dist/cjs/{item-Dflr47KV.js.map → item-CFojolE7.js.map} +1 -1
  77. package/dist/cjs/{item-BSdQbEav.js → item-DdnTb-BP.js} +3 -3
  78. package/dist/cjs/{item-BSdQbEav.js.map → item-DdnTb-BP.js.map} +1 -1
  79. package/dist/cjs/kol-abbr.cjs.entry.js +2 -2
  80. package/dist/cjs/kol-accordion.cjs.entry.js +7 -7
  81. package/dist/cjs/kol-alert.cjs.entry.js +11 -11
  82. package/dist/cjs/kol-avatar.cjs.entry.js +3 -3
  83. package/dist/cjs/kol-badge.cjs.entry.js +12 -12
  84. package/dist/cjs/kol-breadcrumb.cjs.entry.js +9 -9
  85. package/dist/cjs/kol-button-link.cjs.entry.js +10 -10
  86. package/dist/cjs/kol-button.cjs.entry.js +10 -10
  87. package/dist/cjs/kol-card.cjs.entry.js +11 -11
  88. package/dist/cjs/kol-click-button.cjs.entry.js +2 -2
  89. package/dist/cjs/kol-combobox.cjs.entry.js +18 -18
  90. package/dist/cjs/kol-details.cjs.entry.js +7 -7
  91. package/dist/cjs/kol-dialog.cjs.entry.js +13 -13
  92. package/dist/cjs/kol-drawer.cjs.entry.js +12 -12
  93. package/dist/cjs/kol-form.cjs.entry.js +12 -12
  94. package/dist/cjs/kol-heading.cjs.entry.js +1 -1
  95. package/dist/cjs/kol-icon.cjs.entry.js +3 -3
  96. package/dist/cjs/kol-image.cjs.entry.js +1 -1
  97. package/dist/cjs/kol-input-checkbox.cjs.entry.js +17 -17
  98. package/dist/cjs/kol-input-color.cjs.entry.js +18 -18
  99. package/dist/cjs/kol-input-date.cjs.entry.js +18 -18
  100. package/dist/cjs/kol-input-email.cjs.entry.js +20 -20
  101. package/dist/cjs/kol-input-file.cjs.entry.js +17 -17
  102. package/dist/cjs/kol-input-number.cjs.entry.js +18 -18
  103. package/dist/cjs/kol-input-password.cjs.entry.js +22 -22
  104. package/dist/cjs/kol-input-password.entry.cjs.js.map +1 -1
  105. package/dist/cjs/kol-input-radio.cjs.entry.js +17 -17
  106. package/dist/cjs/kol-input-range.cjs.entry.js +18 -18
  107. package/dist/cjs/kol-input-text.cjs.entry.js +20 -20
  108. package/dist/cjs/kol-kolibri.cjs.entry.js +2 -2
  109. package/dist/cjs/kol-link-button.cjs.entry.js +10 -10
  110. package/dist/cjs/kol-link.cjs.entry.js +10 -10
  111. package/dist/cjs/kol-meter.cjs.entry.js +1 -1
  112. package/dist/cjs/kol-modal.cjs.entry.js +13 -13
  113. package/dist/cjs/kol-nav.cjs.entry.js +13 -13
  114. package/dist/cjs/kol-pagination.cjs.entry.js +18 -18
  115. package/dist/cjs/kol-popover-button.cjs.entry.js +12 -13
  116. package/dist/cjs/kol-popover-button.entry.cjs.js.map +1 -1
  117. package/dist/cjs/kol-progress.cjs.entry.js +1 -1
  118. package/dist/cjs/kol-quote.cjs.entry.js +1 -1
  119. package/dist/cjs/kol-select.cjs.entry.js +17 -17
  120. package/dist/cjs/kol-single-select.cjs.entry.js +18 -18
  121. package/dist/cjs/kol-skeleton.cjs.entry.js +2 -2
  122. package/dist/cjs/kol-skip-nav.cjs.entry.js +9 -9
  123. package/dist/cjs/kol-spin.cjs.entry.js +3 -3
  124. package/dist/cjs/kol-split-button.cjs.entry.js +12 -12
  125. package/dist/cjs/kol-table-stateful.cjs.entry.js +25 -25
  126. package/dist/cjs/kol-table-stateless.cjs.entry.js +19 -19
  127. package/dist/cjs/kol-tabs.cjs.entry.js +9 -9
  128. package/dist/cjs/kol-textarea.cjs.entry.js +20 -20
  129. package/dist/cjs/kol-textarea.entry.cjs.js.map +1 -1
  130. package/dist/cjs/kol-toast-container.cjs.entry.js +11 -11
  131. package/dist/cjs/kol-toolbar.cjs.entry.js +33 -14
  132. package/dist/cjs/kol-toolbar.entry.cjs.js.map +1 -1
  133. package/dist/cjs/kol-tooltip-wc.cjs.entry.js +4 -4
  134. package/dist/cjs/kol-tree-item.cjs.entry.js +9 -9
  135. package/dist/cjs/kol-tree.cjs.entry.js +1 -1
  136. package/dist/cjs/kol-version.cjs.entry.js +10 -10
  137. package/dist/cjs/kolibri.cjs.js +2 -2
  138. package/dist/cjs/loader.cjs.js +2 -2
  139. package/dist/cjs/{resolve-props-DOU1VJNL.js → resolve-props-pAyNSZMT.js} +3 -3
  140. package/dist/cjs/{resolve-props-DOU1VJNL.js.map → resolve-props-pAyNSZMT.js.map} +1 -1
  141. package/dist/cjs/{scroll-lock-C6dUw4on.js → scroll-lock-CNwobwd2.js} +3 -3
  142. package/dist/cjs/{scroll-lock-C6dUw4on.js.map → scroll-lock-CNwobwd2.js.map} +1 -1
  143. package/dist/cjs/{suggestions-0hcm13gT.js → suggestions-D4TMMZSv.js} +4 -4
  144. package/dist/cjs/{suggestions-0hcm13gT.js.map → suggestions-D4TMMZSv.js.map} +1 -1
  145. package/dist/cjs/test-component.cjs.entry.js +1 -1
  146. package/dist/cjs/{toggle-handler-kOflG5om.js → toggle-handler-mIB8gvse.js} +5 -5
  147. package/dist/cjs/{toggle-handler-kOflG5om.js.map → toggle-handler-mIB8gvse.js.map} +1 -1
  148. package/dist/collection/components/accordion/style.css +2 -2
  149. package/dist/collection/components/alert/style.css +2 -2
  150. package/dist/collection/components/badge/style.css +2 -2
  151. package/dist/collection/components/breadcrumb/style.css +2 -2
  152. package/dist/collection/components/button/style.css +2 -2
  153. package/dist/collection/components/button-link/style.css +2 -2
  154. package/dist/collection/components/card/style.css +2 -2
  155. package/dist/collection/components/combobox/style.css +2 -2
  156. package/dist/collection/components/details/style.css +2 -2
  157. package/dist/collection/components/dialog/style.css +2 -2
  158. package/dist/collection/components/drawer/style.css +2 -2
  159. package/dist/collection/components/form/style.css +2 -2
  160. package/dist/collection/components/icon/style.css +2 -2
  161. package/dist/collection/components/input-checkbox/style.css +2 -2
  162. package/dist/collection/components/input-color/style.css +2 -2
  163. package/dist/collection/components/input-date/style.css +2 -2
  164. package/dist/collection/components/input-email/style.css +2 -2
  165. package/dist/collection/components/input-file/style.css +2 -2
  166. package/dist/collection/components/input-number/style.css +2 -2
  167. package/dist/collection/components/input-password/component.js +2 -2
  168. package/dist/collection/components/input-password/component.js.map +1 -1
  169. package/dist/collection/components/input-password/style.css +2 -2
  170. package/dist/collection/components/input-radio/style.css +2 -2
  171. package/dist/collection/components/input-range/style.css +2 -2
  172. package/dist/collection/components/input-text/style.css +2 -2
  173. package/dist/collection/components/link/style.css +2 -2
  174. package/dist/collection/components/link-button/style.css +2 -2
  175. package/dist/collection/components/modal/style.css +2 -2
  176. package/dist/collection/components/nav/style.css +2 -2
  177. package/dist/collection/components/pagination/style.css +2 -2
  178. package/dist/collection/components/popover-button/component.js +2 -4
  179. package/dist/collection/components/popover-button/component.js.map +1 -1
  180. package/dist/collection/components/popover-button/style.css +2 -2
  181. package/dist/collection/components/select/style.css +2 -2
  182. package/dist/collection/components/single-select/style.css +2 -2
  183. package/dist/collection/components/skip-nav/style.css +2 -2
  184. package/dist/collection/components/split-button/style.css +2 -2
  185. package/dist/collection/components/table-stateful/style.css +2 -2
  186. package/dist/collection/components/table-stateless/style.css +2 -2
  187. package/dist/collection/components/tabs/style.css +2 -2
  188. package/dist/collection/components/textarea/component.js +3 -3
  189. package/dist/collection/components/textarea/component.js.map +1 -1
  190. package/dist/collection/components/textarea/style.css +2 -2
  191. package/dist/collection/components/toaster/style.css +2 -2
  192. package/dist/collection/components/toolbar/component.js +1 -1
  193. package/dist/collection/components/toolbar/component.js.map +1 -1
  194. package/dist/collection/components/toolbar/style.css +9 -3
  195. package/dist/collection/components/tree-item/style.css +2 -2
  196. package/dist/collection/components/version/style.css +2 -2
  197. package/dist/collection/internal/functional-components/form-field/select-value.js +3 -1
  198. package/dist/collection/internal/functional-components/form-field/select-value.js.map +1 -1
  199. package/dist/collection/internal/functional-components/form-field/select.js +8 -3
  200. package/dist/collection/internal/functional-components/form-field/select.js.map +1 -1
  201. package/dist/collection/internal/functional-components/form-field/select.test.js +88 -0
  202. package/dist/collection/internal/functional-components/form-field/select.test.js.map +1 -1
  203. package/dist/collection/internal/functional-components/form-field/textarea.js.map +1 -1
  204. package/dist/collection/internal/functional-components/toolbar/api.js.map +1 -1
  205. package/dist/collection/internal/functional-components/toolbar/component.js +1 -1
  206. package/dist/collection/internal/functional-components/toolbar/component.js.map +1 -1
  207. package/dist/collection/internal/functional-components/toolbar/item.js +20 -1
  208. package/dist/collection/internal/functional-components/toolbar/item.js.map +1 -1
  209. package/dist/collection/schema/props/toolbar-items.js.map +1 -1
  210. package/dist/collection/schema/utils/contrast.js +2 -10
  211. package/dist/collection/schema/utils/contrast.js.map +1 -1
  212. package/dist/components/base-web-component4.js +11 -4
  213. package/dist/components/base-web-component4.js.map +1 -1
  214. package/dist/components/contrast.js +1 -10
  215. package/dist/components/contrast.js.map +1 -1
  216. package/dist/components/kol-accordion.js +1 -1
  217. package/dist/components/kol-alert.js +1 -1
  218. package/dist/components/kol-badge.js +1 -1
  219. package/dist/components/kol-breadcrumb.js +1 -1
  220. package/dist/components/kol-button-link.js +1 -1
  221. package/dist/components/kol-button.js +1 -1
  222. package/dist/components/kol-card.js +1 -1
  223. package/dist/components/kol-combobox.js +1 -1
  224. package/dist/components/kol-details.js +1 -1
  225. package/dist/components/kol-dialog.js +1 -1
  226. package/dist/components/kol-drawer.js +1 -1
  227. package/dist/components/kol-form.js +1 -1
  228. package/dist/components/kol-icon.js +1 -1
  229. package/dist/components/kol-input-checkbox.js +1 -1
  230. package/dist/components/kol-input-color.js +1 -1
  231. package/dist/components/kol-input-date.js +1 -1
  232. package/dist/components/kol-input-email.js +1 -1
  233. package/dist/components/kol-input-file.js +1 -1
  234. package/dist/components/kol-input-number.js +1 -1
  235. package/dist/components/kol-input-password.js +3 -3
  236. package/dist/components/kol-input-password.js.map +1 -1
  237. package/dist/components/kol-input-radio.js +1 -1
  238. package/dist/components/kol-input-range.js +1 -1
  239. package/dist/components/kol-input-text.js +1 -1
  240. package/dist/components/kol-link-button.js +1 -1
  241. package/dist/components/kol-link.js +1 -1
  242. package/dist/components/kol-modal.js +1 -1
  243. package/dist/components/kol-nav.js +1 -1
  244. package/dist/components/kol-pagination.js +1 -1
  245. package/dist/components/kol-popover-button.js +2 -3
  246. package/dist/components/kol-popover-button.js.map +1 -1
  247. package/dist/components/kol-select.js +1 -1
  248. package/dist/components/kol-single-select.js +1 -1
  249. package/dist/components/kol-skip-nav.js +1 -1
  250. package/dist/components/kol-split-button.js +1 -1
  251. package/dist/components/kol-table-stateful.js +1 -1
  252. package/dist/components/kol-table-stateless.js +1 -1
  253. package/dist/components/kol-tabs.js +1 -1
  254. package/dist/components/kol-textarea.js +4 -4
  255. package/dist/components/kol-textarea.js.map +1 -1
  256. package/dist/components/kol-toast-container.js +1 -1
  257. package/dist/components/kol-toolbar.js +23 -4
  258. package/dist/components/kol-toolbar.js.map +1 -1
  259. package/dist/components/kol-tree-item.js +1 -1
  260. package/dist/components/kol-version.js +1 -1
  261. package/dist/esm/{Heading-DXl16qig.js → Heading-NHB1reiQ.js} +3 -3
  262. package/dist/esm/{Heading-DXl16qig.js.map → Heading-NHB1reiQ.js.map} +1 -1
  263. package/dist/esm/{api-C8TfIYlY.js → api-BAEPnyL7.js} +12 -12
  264. package/dist/{kolibri/api-C8TfIYlY.js.map → esm/api-BAEPnyL7.js.map} +1 -1
  265. package/dist/esm/{api-BA-AFr5H.js → api-CagcODCX.js} +8 -8
  266. package/dist/{kolibri/api-BA-AFr5H.js.map → esm/api-CagcODCX.js.map} +1 -1
  267. package/dist/esm/{app-globals-lFdBwFG2.js → app-globals-CwlOH1sO.js} +4 -4
  268. package/dist/esm/{app-globals-lFdBwFG2.js.map → app-globals-CwlOH1sO.js.map} +1 -1
  269. package/dist/esm/{base-BpqjfzG1.js → base-BFU17cMm.js} +16 -16
  270. package/dist/{kolibri/base-BpqjfzG1.js.map → esm/base-BFU17cMm.js.map} +1 -1
  271. package/dist/esm/{base-D8GcFhvD.js → base-BpKxLJ6r.js} +4 -4
  272. package/dist/{kolibri/base-D8GcFhvD.js.map → esm/base-BpKxLJ6r.js.map} +1 -1
  273. package/dist/esm/{base-DiSQvfGU.js → base-Cm_c8klt.js} +5 -5
  274. package/dist/esm/{base-DiSQvfGU.js.map → base-Cm_c8klt.js.map} +1 -1
  275. package/dist/esm/{base-B5F8ROuQ.js → base-DitGpYOV.js} +4 -4
  276. package/dist/{kolibri/base-B5F8ROuQ.js.map → esm/base-DitGpYOV.js.map} +1 -1
  277. package/dist/esm/{base-web-component-CkaKv7O0.js → base-web-component-6J5sCsnZ.js} +16 -9
  278. package/dist/esm/base-web-component-6J5sCsnZ.js.map +1 -0
  279. package/dist/esm/{base-web-component-BozlJoj7.js → base-web-component-BFCVvyYG.js} +7 -7
  280. package/dist/esm/{base-web-component-BozlJoj7.js.map → base-web-component-BFCVvyYG.js.map} +1 -1
  281. package/dist/esm/{behavior-BuNqmjz8.js → behavior-CH_2MMuX.js} +3 -3
  282. package/dist/esm/{behavior-BuNqmjz8.js.map → behavior-CH_2MMuX.js.map} +1 -1
  283. package/dist/esm/{color-Du3Ft0XV.js → color-QYuhlVFz.js} +3 -3
  284. package/dist/esm/{color-Du3Ft0XV.js.map → color-QYuhlVFz.js.map} +1 -1
  285. package/dist/esm/{component-C9DexidK.js → component-BF8FPuIW.js} +3 -3
  286. package/dist/esm/{component-C9DexidK.js.map → component-BF8FPuIW.js.map} +1 -1
  287. package/dist/esm/{component-Da5dJMKj.js → component-Ba4gjLBG.js} +5 -5
  288. package/dist/{kolibri/component-Da5dJMKj.js.map → esm/component-Ba4gjLBG.js.map} +1 -1
  289. package/dist/esm/{component-BjH8s4-t.js → component-BpOMe842.js} +3 -3
  290. package/dist/{kolibri/component-BjH8s4-t.js.map → esm/component-BpOMe842.js.map} +1 -1
  291. package/dist/esm/{component-BxKN0JbT.js → component-C3sXiwbS.js} +3 -3
  292. package/dist/esm/{component-BxKN0JbT.js.map → component-C3sXiwbS.js.map} +1 -1
  293. package/dist/esm/{component-Bd7PXqOG.js → component-C5BFsKau.js} +5 -5
  294. package/dist/esm/{component-Bd7PXqOG.js.map → component-C5BFsKau.js.map} +1 -1
  295. package/dist/esm/{component-C3aqLFK2.js → component-CBpYh2q-.js} +7 -7
  296. package/dist/esm/{component-C3aqLFK2.js.map → component-CBpYh2q-.js.map} +1 -1
  297. package/dist/esm/{component-D_58mw87.js → component-C_d54ujF.js} +4 -4
  298. package/dist/{kolibri/component-D_58mw87.js.map → esm/component-C_d54ujF.js.map} +1 -1
  299. package/dist/esm/{component-xrrwVuiI.js → component-CvCfEqSE.js} +4 -4
  300. package/dist/esm/{component-xrrwVuiI.js.map → component-CvCfEqSE.js.map} +1 -1
  301. package/dist/esm/{component-CWGVLsSH.js → component-DZbJLUju.js} +4 -4
  302. package/dist/{kolibri/component-CWGVLsSH.js.map → esm/component-DZbJLUju.js.map} +1 -1
  303. package/dist/esm/{component-BKOep2WQ.js → component-Dg6TIbeY.js} +5 -5
  304. package/dist/{kolibri/component-BKOep2WQ.js.map → esm/component-Dg6TIbeY.js.map} +1 -1
  305. package/dist/esm/{component-DD5QqT5m.js → component-Do9rjnte.js} +7 -7
  306. package/dist/{kolibri/component-DD5QqT5m.js.map → esm/component-Do9rjnte.js.map} +1 -1
  307. package/dist/esm/{component-De6Do_gt.js → component-DzoBgfR4.js} +3 -3
  308. package/dist/esm/{component-De6Do_gt.js.map → component-DzoBgfR4.js.map} +1 -1
  309. package/dist/esm/{contrast-BKAJJL2K.js → contrast-DMN9saXP.js} +3 -12
  310. package/dist/esm/contrast-DMN9saXP.js.map +1 -0
  311. package/dist/esm/{dev.utils-CYtV9X0K.js → dev.utils-CJMVCYWh.js} +3 -3
  312. package/dist/esm/{dev.utils-CYtV9X0K.js.map → dev.utils-CJMVCYWh.js.map} +1 -1
  313. package/dist/esm/{devtools-B0qRaQdp.js → devtools-rRHULXVr.js} +4 -4
  314. package/dist/{kolibri/devtools-B0qRaQdp.js.map → esm/devtools-rRHULXVr.js.map} +1 -1
  315. package/dist/esm/{field-control-C5hjw2Rb.js → field-control-DXxCMXvx.js} +8 -8
  316. package/dist/{kolibri/field-control-C5hjw2Rb.js.map → esm/field-control-DXxCMXvx.js.map} +1 -1
  317. package/dist/esm/{group-2hP8qbvk.js → group-CI4sSgiu.js} +5 -5
  318. package/dist/esm/{group-2hP8qbvk.js.map → group-CI4sSgiu.js.map} +1 -1
  319. package/dist/esm/{index-DsCeQ9Ys.js → index-DQdQBwMc.js} +3 -3
  320. package/dist/{kolibri/index-DsCeQ9Ys.js.map → esm/index-DQdQBwMc.js.map} +1 -1
  321. package/dist/esm/{input-Dp5NBocQ.js → input-CDtJZ2sy.js} +5 -5
  322. package/dist/esm/{input-Dp5NBocQ.js.map → input-CDtJZ2sy.js.map} +1 -1
  323. package/dist/esm/{input-container-QA8-0_0p.js → input-container-DROwwh7_.js} +7 -7
  324. package/dist/esm/{input-container-QA8-0_0p.js.map → input-container-DROwwh7_.js.map} +1 -1
  325. package/dist/esm/{item-CaxJw3ad.js → item-C6p5wW-z.js} +4 -4
  326. package/dist/esm/{item-CaxJw3ad.js.map → item-C6p5wW-z.js.map} +1 -1
  327. package/dist/esm/{item-CXyolUj2.js → item-CHP-bw8Q.js} +4 -4
  328. package/dist/{kolibri/item-CXyolUj2.js.map → esm/item-CHP-bw8Q.js.map} +1 -1
  329. package/dist/esm/{item-DY0fVVnj.js → item-Cbi_ZY6o.js} +3 -3
  330. package/dist/esm/{item-DY0fVVnj.js.map → item-Cbi_ZY6o.js.map} +1 -1
  331. package/dist/esm/{item-BIjqEkyy.js → item-ZjrNIhfW.js} +8 -8
  332. package/dist/{kolibri/item-BIjqEkyy.js.map → esm/item-ZjrNIhfW.js.map} +1 -1
  333. package/dist/esm/kol-abbr.entry.js +2 -2
  334. package/dist/esm/kol-accordion.entry.js +7 -7
  335. package/dist/esm/kol-alert.entry.js +11 -11
  336. package/dist/esm/kol-avatar.entry.js +3 -3
  337. package/dist/esm/kol-badge.entry.js +12 -12
  338. package/dist/esm/kol-breadcrumb.entry.js +9 -9
  339. package/dist/esm/kol-button-link.entry.js +10 -10
  340. package/dist/esm/kol-button.entry.js +10 -10
  341. package/dist/esm/kol-card.entry.js +11 -11
  342. package/dist/esm/kol-click-button.entry.js +2 -2
  343. package/dist/esm/kol-combobox.entry.js +18 -18
  344. package/dist/esm/kol-details.entry.js +7 -7
  345. package/dist/esm/kol-dialog.entry.js +13 -13
  346. package/dist/esm/kol-drawer.entry.js +12 -12
  347. package/dist/esm/kol-form.entry.js +12 -12
  348. package/dist/esm/kol-heading.entry.js +1 -1
  349. package/dist/esm/kol-icon.entry.js +3 -3
  350. package/dist/esm/kol-image.entry.js +1 -1
  351. package/dist/esm/kol-input-checkbox.entry.js +17 -17
  352. package/dist/esm/kol-input-color.entry.js +18 -18
  353. package/dist/esm/kol-input-date.entry.js +18 -18
  354. package/dist/esm/kol-input-email.entry.js +20 -20
  355. package/dist/esm/kol-input-file.entry.js +17 -17
  356. package/dist/esm/kol-input-number.entry.js +18 -18
  357. package/dist/esm/kol-input-password.entry.js +22 -22
  358. package/dist/esm/kol-input-password.entry.js.map +1 -1
  359. package/dist/esm/kol-input-radio.entry.js +17 -17
  360. package/dist/esm/kol-input-range.entry.js +18 -18
  361. package/dist/esm/kol-input-text.entry.js +20 -20
  362. package/dist/esm/kol-kolibri.entry.js +2 -2
  363. package/dist/esm/kol-link-button.entry.js +10 -10
  364. package/dist/esm/kol-link.entry.js +10 -10
  365. package/dist/esm/kol-meter.entry.js +1 -1
  366. package/dist/esm/kol-modal.entry.js +13 -13
  367. package/dist/esm/kol-nav.entry.js +13 -13
  368. package/dist/esm/kol-pagination.entry.js +18 -18
  369. package/dist/esm/kol-popover-button.entry.js +12 -13
  370. package/dist/esm/kol-popover-button.entry.js.map +1 -1
  371. package/dist/esm/kol-progress.entry.js +1 -1
  372. package/dist/esm/kol-quote.entry.js +1 -1
  373. package/dist/esm/kol-select.entry.js +17 -17
  374. package/dist/esm/kol-single-select.entry.js +18 -18
  375. package/dist/esm/kol-skeleton.entry.js +2 -2
  376. package/dist/esm/kol-skip-nav.entry.js +9 -9
  377. package/dist/esm/kol-spin.entry.js +3 -3
  378. package/dist/esm/kol-split-button.entry.js +12 -12
  379. package/dist/esm/kol-table-stateful.entry.js +25 -25
  380. package/dist/esm/kol-table-stateless.entry.js +19 -19
  381. package/dist/esm/kol-tabs.entry.js +9 -9
  382. package/dist/esm/kol-textarea.entry.js +20 -20
  383. package/dist/esm/kol-textarea.entry.js.map +1 -1
  384. package/dist/esm/kol-toast-container.entry.js +11 -11
  385. package/dist/esm/kol-toolbar.entry.js +33 -14
  386. package/dist/esm/kol-toolbar.entry.js.map +1 -1
  387. package/dist/esm/kol-tooltip-wc.entry.js +4 -4
  388. package/dist/esm/kol-tree-item.entry.js +9 -9
  389. package/dist/esm/kol-tree.entry.js +1 -1
  390. package/dist/esm/kol-version.entry.js +10 -10
  391. package/dist/esm/kolibri.js +3 -3
  392. package/dist/esm/loader.js +3 -3
  393. package/dist/esm/{resolve-props-DJxTzf-G.js → resolve-props-CjBvvXId.js} +3 -3
  394. package/dist/{kolibri/resolve-props-DJxTzf-G.js.map → esm/resolve-props-CjBvvXId.js.map} +1 -1
  395. package/dist/esm/{scroll-lock-BN6ZnBdc.js → scroll-lock-6SV-XFXR.js} +3 -3
  396. package/dist/{kolibri/scroll-lock-BN6ZnBdc.js.map → esm/scroll-lock-6SV-XFXR.js.map} +1 -1
  397. package/dist/esm/{suggestions-DlpHvEGv.js → suggestions-BYMmW1aV.js} +4 -4
  398. package/dist/esm/{suggestions-DlpHvEGv.js.map → suggestions-BYMmW1aV.js.map} +1 -1
  399. package/dist/esm/test-component.entry.js +1 -1
  400. package/dist/esm/{toggle-handler-Xex3lIll.js → toggle-handler-D-yalcds.js} +5 -5
  401. package/dist/{kolibri/toggle-handler-Xex3lIll.js.map → esm/toggle-handler-D-yalcds.js.map} +1 -1
  402. package/dist/kolibri/{Heading-DXl16qig.js → Heading-NHB1reiQ.js} +2 -2
  403. package/dist/kolibri/{Heading-DXl16qig.js.map → Heading-NHB1reiQ.js.map} +1 -1
  404. package/dist/kolibri/api-BAEPnyL7.js +5 -0
  405. package/dist/{esm/api-C8TfIYlY.js.map → kolibri/api-BAEPnyL7.js.map} +1 -1
  406. package/dist/kolibri/api-CagcODCX.js +5 -0
  407. package/dist/{esm/api-BA-AFr5H.js.map → kolibri/api-CagcODCX.js.map} +1 -1
  408. package/dist/kolibri/app-globals-CwlOH1sO.js +5 -0
  409. package/dist/kolibri/{app-globals-lFdBwFG2.js.map → app-globals-CwlOH1sO.js.map} +1 -1
  410. package/dist/kolibri/base-BFU17cMm.js +5 -0
  411. package/dist/{esm/base-BpqjfzG1.js.map → kolibri/base-BFU17cMm.js.map} +1 -1
  412. package/dist/kolibri/{base-D8GcFhvD.js → base-BpKxLJ6r.js} +2 -2
  413. package/dist/{esm/base-D8GcFhvD.js.map → kolibri/base-BpKxLJ6r.js.map} +1 -1
  414. package/dist/kolibri/{base-DiSQvfGU.js → base-Cm_c8klt.js} +2 -2
  415. package/dist/kolibri/{base-DiSQvfGU.js.map → base-Cm_c8klt.js.map} +1 -1
  416. package/dist/kolibri/{base-B5F8ROuQ.js → base-DitGpYOV.js} +2 -2
  417. package/dist/{esm/base-B5F8ROuQ.js.map → kolibri/base-DitGpYOV.js.map} +1 -1
  418. package/dist/kolibri/base-web-component-6J5sCsnZ.js +5 -0
  419. package/dist/kolibri/base-web-component-6J5sCsnZ.js.map +1 -0
  420. package/dist/kolibri/{base-web-component-BozlJoj7.js → base-web-component-BFCVvyYG.js} +2 -2
  421. package/dist/kolibri/{base-web-component-BozlJoj7.js.map → base-web-component-BFCVvyYG.js.map} +1 -1
  422. package/dist/kolibri/{behavior-BuNqmjz8.js → behavior-CH_2MMuX.js} +2 -2
  423. package/dist/kolibri/{behavior-BuNqmjz8.js.map → behavior-CH_2MMuX.js.map} +1 -1
  424. package/dist/kolibri/{color-Du3Ft0XV.js → color-QYuhlVFz.js} +2 -2
  425. package/dist/kolibri/{color-Du3Ft0XV.js.map → color-QYuhlVFz.js.map} +1 -1
  426. package/dist/kolibri/{component-C9DexidK.js → component-BF8FPuIW.js} +2 -2
  427. package/dist/kolibri/{component-C9DexidK.js.map → component-BF8FPuIW.js.map} +1 -1
  428. package/dist/kolibri/component-Ba4gjLBG.js +5 -0
  429. package/dist/{esm/component-Da5dJMKj.js.map → kolibri/component-Ba4gjLBG.js.map} +1 -1
  430. package/dist/kolibri/{component-BjH8s4-t.js → component-BpOMe842.js} +2 -2
  431. package/dist/{esm/component-BjH8s4-t.js.map → kolibri/component-BpOMe842.js.map} +1 -1
  432. package/dist/kolibri/component-C3sXiwbS.js +5 -0
  433. package/dist/kolibri/{component-BxKN0JbT.js.map → component-C3sXiwbS.js.map} +1 -1
  434. package/dist/kolibri/component-C5BFsKau.js +5 -0
  435. package/dist/kolibri/{component-Bd7PXqOG.js.map → component-C5BFsKau.js.map} +1 -1
  436. package/dist/kolibri/component-CBpYh2q-.js +5 -0
  437. package/dist/kolibri/{component-C3aqLFK2.js.map → component-CBpYh2q-.js.map} +1 -1
  438. package/dist/kolibri/{component-D_58mw87.js → component-C_d54ujF.js} +2 -2
  439. package/dist/{esm/component-D_58mw87.js.map → kolibri/component-C_d54ujF.js.map} +1 -1
  440. package/dist/kolibri/component-CvCfEqSE.js +5 -0
  441. package/dist/kolibri/{component-xrrwVuiI.js.map → component-CvCfEqSE.js.map} +1 -1
  442. package/dist/kolibri/{component-CWGVLsSH.js → component-DZbJLUju.js} +2 -2
  443. package/dist/{esm/component-CWGVLsSH.js.map → kolibri/component-DZbJLUju.js.map} +1 -1
  444. package/dist/kolibri/{component-BKOep2WQ.js → component-Dg6TIbeY.js} +2 -2
  445. package/dist/{esm/component-BKOep2WQ.js.map → kolibri/component-Dg6TIbeY.js.map} +1 -1
  446. package/dist/kolibri/{component-DD5QqT5m.js → component-Do9rjnte.js} +2 -2
  447. package/dist/{esm/component-DD5QqT5m.js.map → kolibri/component-Do9rjnte.js.map} +1 -1
  448. package/dist/kolibri/component-DzoBgfR4.js +5 -0
  449. package/dist/kolibri/{component-De6Do_gt.js.map → component-DzoBgfR4.js.map} +1 -1
  450. package/dist/kolibri/contrast-DMN9saXP.js +5 -0
  451. package/dist/kolibri/contrast-DMN9saXP.js.map +1 -0
  452. package/dist/kolibri/{dev.utils-CYtV9X0K.js → dev.utils-CJMVCYWh.js} +2 -2
  453. package/dist/kolibri/{dev.utils-CYtV9X0K.js.map → dev.utils-CJMVCYWh.js.map} +1 -1
  454. package/dist/kolibri/{devtools-B0qRaQdp.js → devtools-rRHULXVr.js} +2 -2
  455. package/dist/{esm/devtools-B0qRaQdp.js.map → kolibri/devtools-rRHULXVr.js.map} +1 -1
  456. package/dist/kolibri/field-control-DXxCMXvx.js +5 -0
  457. package/dist/{esm/field-control-C5hjw2Rb.js.map → kolibri/field-control-DXxCMXvx.js.map} +1 -1
  458. package/dist/kolibri/{group-2hP8qbvk.js → group-CI4sSgiu.js} +2 -2
  459. package/dist/kolibri/{group-2hP8qbvk.js.map → group-CI4sSgiu.js.map} +1 -1
  460. package/dist/kolibri/{index-DsCeQ9Ys.js → index-DQdQBwMc.js} +2 -2
  461. package/dist/{esm/index-DsCeQ9Ys.js.map → kolibri/index-DQdQBwMc.js.map} +1 -1
  462. package/dist/kolibri/{input-Dp5NBocQ.js → input-CDtJZ2sy.js} +2 -2
  463. package/dist/kolibri/{input-Dp5NBocQ.js.map → input-CDtJZ2sy.js.map} +1 -1
  464. package/dist/kolibri/input-container-DROwwh7_.js +5 -0
  465. package/dist/kolibri/{input-container-QA8-0_0p.js.map → input-container-DROwwh7_.js.map} +1 -1
  466. package/dist/kolibri/item-C6p5wW-z.js +5 -0
  467. package/dist/kolibri/{item-CaxJw3ad.js.map → item-C6p5wW-z.js.map} +1 -1
  468. package/dist/kolibri/{item-CXyolUj2.js → item-CHP-bw8Q.js} +2 -2
  469. package/dist/{esm/item-CXyolUj2.js.map → kolibri/item-CHP-bw8Q.js.map} +1 -1
  470. package/dist/kolibri/item-Cbi_ZY6o.js +5 -0
  471. package/dist/kolibri/{item-DY0fVVnj.js.map → item-Cbi_ZY6o.js.map} +1 -1
  472. package/dist/kolibri/{item-BIjqEkyy.js → item-ZjrNIhfW.js} +2 -2
  473. package/dist/{esm/item-BIjqEkyy.js.map → kolibri/item-ZjrNIhfW.js.map} +1 -1
  474. package/dist/kolibri/kol-abbr.entry.js +1 -1
  475. package/dist/kolibri/kol-accordion.entry.js +1 -1
  476. package/dist/kolibri/kol-alert.entry.js +1 -1
  477. package/dist/kolibri/kol-avatar.entry.js +1 -1
  478. package/dist/kolibri/kol-badge.entry.js +1 -1
  479. package/dist/kolibri/kol-breadcrumb.entry.js +1 -1
  480. package/dist/kolibri/kol-button-link.entry.js +1 -1
  481. package/dist/kolibri/kol-button.entry.js +1 -1
  482. package/dist/kolibri/kol-card.entry.js +1 -1
  483. package/dist/kolibri/kol-click-button.entry.js +1 -1
  484. package/dist/kolibri/kol-combobox.entry.js +1 -1
  485. package/dist/kolibri/kol-combobox.entry.js.map +1 -1
  486. package/dist/kolibri/kol-details.entry.js +1 -1
  487. package/dist/kolibri/kol-dialog.entry.js +1 -1
  488. package/dist/kolibri/kol-drawer.entry.js +1 -1
  489. package/dist/kolibri/kol-form.entry.js +1 -1
  490. package/dist/kolibri/kol-heading.entry.js +1 -1
  491. package/dist/kolibri/kol-icon.entry.js +1 -1
  492. package/dist/kolibri/kol-image.entry.js +1 -1
  493. package/dist/kolibri/kol-input-checkbox.entry.js +1 -1
  494. package/dist/kolibri/kol-input-color.entry.js +1 -1
  495. package/dist/kolibri/kol-input-date.entry.js +1 -1
  496. package/dist/kolibri/kol-input-email.entry.js +1 -1
  497. package/dist/kolibri/kol-input-file.entry.js +1 -1
  498. package/dist/kolibri/kol-input-number.entry.js +1 -1
  499. package/dist/kolibri/kol-input-password.entry.esm.js.map +1 -1
  500. package/dist/kolibri/kol-input-password.entry.js +1 -1
  501. package/dist/kolibri/kol-input-password.entry.js.map +1 -1
  502. package/dist/kolibri/kol-input-radio.entry.js +1 -1
  503. package/dist/kolibri/kol-input-range.entry.js +1 -1
  504. package/dist/kolibri/kol-input-text.entry.js +1 -1
  505. package/dist/kolibri/kol-kolibri.entry.js +1 -1
  506. package/dist/kolibri/kol-link-button.entry.js +1 -1
  507. package/dist/kolibri/kol-link.entry.js +1 -1
  508. package/dist/kolibri/kol-meter.entry.js +1 -1
  509. package/dist/kolibri/kol-modal.entry.js +1 -1
  510. package/dist/kolibri/kol-nav.entry.js +1 -1
  511. package/dist/kolibri/kol-pagination.entry.js +1 -1
  512. package/dist/kolibri/kol-popover-button.entry.esm.js.map +1 -1
  513. package/dist/kolibri/kol-popover-button.entry.js +1 -1
  514. package/dist/kolibri/kol-popover-button.entry.js.map +1 -1
  515. package/dist/kolibri/kol-progress.entry.js +1 -1
  516. package/dist/kolibri/kol-quote.entry.js +1 -1
  517. package/dist/kolibri/kol-select.entry.js +1 -1
  518. package/dist/kolibri/kol-single-select.entry.js +1 -1
  519. package/dist/kolibri/kol-skeleton.entry.js +1 -1
  520. package/dist/kolibri/kol-skip-nav.entry.js +1 -1
  521. package/dist/kolibri/kol-spin.entry.js +1 -1
  522. package/dist/kolibri/kol-split-button.entry.js +1 -1
  523. package/dist/kolibri/kol-table-stateful.entry.js +1 -1
  524. package/dist/kolibri/kol-table-stateless.entry.js +1 -1
  525. package/dist/kolibri/kol-tabs.entry.js +1 -1
  526. package/dist/kolibri/kol-textarea.entry.esm.js.map +1 -1
  527. package/dist/kolibri/kol-textarea.entry.js +1 -1
  528. package/dist/kolibri/kol-textarea.entry.js.map +1 -1
  529. package/dist/kolibri/kol-toast-container.entry.js +1 -1
  530. package/dist/kolibri/kol-toolbar.entry.esm.js.map +1 -1
  531. package/dist/kolibri/kol-toolbar.entry.js +1 -1
  532. package/dist/kolibri/kol-toolbar.entry.js.map +1 -1
  533. package/dist/kolibri/kol-tooltip-wc.entry.js +1 -1
  534. package/dist/kolibri/kol-tree-item.entry.js +1 -1
  535. package/dist/kolibri/kol-tree.entry.js +1 -1
  536. package/dist/kolibri/kol-version.entry.js +1 -1
  537. package/dist/kolibri/kol-version.entry.js.map +1 -1
  538. package/dist/kolibri/kolibri.esm.js +1 -1
  539. package/dist/kolibri/resolve-props-CjBvvXId.js +5 -0
  540. package/dist/{esm/resolve-props-DJxTzf-G.js.map → kolibri/resolve-props-CjBvvXId.js.map} +1 -1
  541. package/dist/kolibri/{scroll-lock-BN6ZnBdc.js → scroll-lock-6SV-XFXR.js} +2 -2
  542. package/dist/{esm/scroll-lock-BN6ZnBdc.js.map → kolibri/scroll-lock-6SV-XFXR.js.map} +1 -1
  543. package/dist/kolibri/suggestions-BYMmW1aV.js +5 -0
  544. package/dist/kolibri/{suggestions-DlpHvEGv.js.map → suggestions-BYMmW1aV.js.map} +1 -1
  545. package/dist/kolibri/test-component.entry.js +1 -1
  546. package/dist/kolibri/toggle-handler-D-yalcds.js +5 -0
  547. package/dist/{esm/toggle-handler-Xex3lIll.js.map → kolibri/toggle-handler-D-yalcds.js.map} +1 -1
  548. package/dist/types/components/toolbar/component.d.ts +2 -2
  549. package/dist/types/components.d.ts +0 -2
  550. package/dist/types/internal/functional-components/form-field/textarea.d.ts +1 -0
  551. package/dist/types/internal/functional-components/toolbar/api.d.ts +2 -2
  552. package/dist/types/internal/functional-components/toolbar/item.d.ts +5 -2
  553. package/dist/types/schema/props/toolbar-items.d.ts +3 -1
  554. package/doc/popover-button.md +1 -1
  555. package/package.json +3 -3
  556. package/dist/cjs/base-web-component-C8MLLGxi.js.map +0 -1
  557. package/dist/cjs/contrast-kLMuDQLl.js.map +0 -1
  558. package/dist/esm/base-web-component-CkaKv7O0.js.map +0 -1
  559. package/dist/esm/contrast-BKAJJL2K.js.map +0 -1
  560. package/dist/kolibri/api-BA-AFr5H.js +0 -5
  561. package/dist/kolibri/api-C8TfIYlY.js +0 -5
  562. package/dist/kolibri/app-globals-lFdBwFG2.js +0 -5
  563. package/dist/kolibri/base-BpqjfzG1.js +0 -5
  564. package/dist/kolibri/base-web-component-CkaKv7O0.js +0 -5
  565. package/dist/kolibri/base-web-component-CkaKv7O0.js.map +0 -1
  566. package/dist/kolibri/component-Bd7PXqOG.js +0 -5
  567. package/dist/kolibri/component-BxKN0JbT.js +0 -5
  568. package/dist/kolibri/component-C3aqLFK2.js +0 -5
  569. package/dist/kolibri/component-Da5dJMKj.js +0 -5
  570. package/dist/kolibri/component-De6Do_gt.js +0 -5
  571. package/dist/kolibri/component-xrrwVuiI.js +0 -5
  572. package/dist/kolibri/contrast-BKAJJL2K.js +0 -5
  573. package/dist/kolibri/contrast-BKAJJL2K.js.map +0 -1
  574. package/dist/kolibri/field-control-C5hjw2Rb.js +0 -5
  575. package/dist/kolibri/input-container-QA8-0_0p.js +0 -5
  576. package/dist/kolibri/item-CaxJw3ad.js +0 -5
  577. package/dist/kolibri/item-DY0fVVnj.js +0 -5
  578. package/dist/kolibri/resolve-props-DJxTzf-G.js +0 -5
  579. package/dist/kolibri/suggestions-DlpHvEGv.js +0 -5
  580. package/dist/kolibri/toggle-handler-Xex3lIll.js +0 -5
@@ -28,16 +28,104 @@ describe('SelectFC', () => {
28
28
  const page = await renderFunctionalComponentToSpecPage(() => h(SelectFC, Object.assign({ id: "id", label: "Label", options: options }, props)));
29
29
  expect(page.root).toMatchSnapshot();
30
30
  });
31
+ it('forwards disabled to optgroups and options when select is disabled', async () => {
32
+ var _a, _b, _c, _d, _e;
33
+ const optgroupOptions = [
34
+ {
35
+ label: 'Group 1',
36
+ options: [{ label: 'Option 1', value: '1' }],
37
+ },
38
+ ];
39
+ const page = await renderFunctionalComponentToSpecPage(() => h(SelectFC, { disabled: true, id: "test", label: "Label", options: optgroupOptions }));
40
+ expect(page.root).toMatchSnapshot();
41
+ expect((_a = page.root) === null || _a === void 0 ? void 0 : _a.hasAttribute('disabled')).toBe(true);
42
+ expect((_b = page.root) === null || _b === void 0 ? void 0 : _b.querySelectorAll('optgroup')[0].hasAttribute('disabled')).toBe(true);
43
+ expect((_c = page.root) === null || _c === void 0 ? void 0 : _c.querySelectorAll('optgroup')[0].classList.contains('kol-select__optgroup--disabled')).toBe(true);
44
+ expect((_d = page.root) === null || _d === void 0 ? void 0 : _d.querySelectorAll('option')[0].hasAttribute('disabled')).toBe(true);
45
+ expect((_e = page.root) === null || _e === void 0 ? void 0 : _e.querySelectorAll('option')[0].classList.contains('kol-select__option--disabled')).toBe(true);
46
+ });
31
47
  });
32
48
  describe('SelectOptionListFC', () => {
33
49
  it('renders nothing without options', async () => {
34
50
  const page = await renderFunctionalComponentToSpecPage(() => (h("select", null, h(SelectOptionListFC, { options: [] }))));
35
51
  expect(page.root).toMatchSnapshot();
36
52
  });
53
+ it('does not render an optgroup without options', async () => {
54
+ var _a;
55
+ const emptyGroupOptions = [
56
+ {
57
+ label: 'Empty Group',
58
+ options: [],
59
+ },
60
+ ];
61
+ const page = await renderFunctionalComponentToSpecPage(() => (h("select", null, h(SelectOptionListFC, { options: emptyGroupOptions }))));
62
+ expect(page.root).toMatchSnapshot();
63
+ expect((_a = page.root) === null || _a === void 0 ? void 0 : _a.querySelector('optgroup')).toBeNull();
64
+ });
37
65
  it('disables the optgroups and prefixes the keys', async () => {
38
66
  const page = await renderFunctionalComponentToSpecPage(() => (h("select", null, h(SelectOptionListFC, { options: options, preKey: "-9", disabled: true }))));
39
67
  expect(page.root).toMatchSnapshot();
40
68
  });
69
+ it('renders with disabled option group', async () => {
70
+ var _a, _b, _c, _d;
71
+ const disabledGroupOptions = [
72
+ {
73
+ disabled: true,
74
+ label: 'Group 1',
75
+ options: [{ label: 'Option 1', value: '1' }],
76
+ },
77
+ ];
78
+ const page = await renderFunctionalComponentToSpecPage(() => (h("select", null, h(SelectOptionListFC, { options: disabledGroupOptions }))));
79
+ expect(page.root).toMatchSnapshot();
80
+ expect((_a = page.root) === null || _a === void 0 ? void 0 : _a.querySelectorAll('optgroup')[0].hasAttribute('disabled')).toBe(true);
81
+ expect((_b = page.root) === null || _b === void 0 ? void 0 : _b.querySelectorAll('optgroup')[0].classList.contains('kol-select__optgroup--disabled')).toBe(true);
82
+ expect((_c = page.root) === null || _c === void 0 ? void 0 : _c.querySelectorAll('option')[0].hasAttribute('disabled')).toBe(true);
83
+ expect((_d = page.root) === null || _d === void 0 ? void 0 : _d.querySelectorAll('option')[0].classList.contains('kol-select__option--disabled')).toBe(true);
84
+ });
85
+ it('renders option with disabled: false inside a disabled group as disabled', async () => {
86
+ var _a, _b, _c, _d;
87
+ const disabledGroupOptions = [
88
+ {
89
+ disabled: true,
90
+ label: 'Group 1',
91
+ options: [{ disabled: false, label: 'Option 1', value: '1' }],
92
+ },
93
+ ];
94
+ const page = await renderFunctionalComponentToSpecPage(() => (h("select", null, h(SelectOptionListFC, { options: disabledGroupOptions }))));
95
+ expect(page.root).toMatchSnapshot();
96
+ expect((_a = page.root) === null || _a === void 0 ? void 0 : _a.querySelectorAll('optgroup')[0].hasAttribute('disabled')).toBe(true);
97
+ expect((_b = page.root) === null || _b === void 0 ? void 0 : _b.querySelectorAll('optgroup')[0].classList.contains('kol-select__optgroup--disabled')).toBe(true);
98
+ expect((_c = page.root) === null || _c === void 0 ? void 0 : _c.querySelectorAll('option')[0].hasAttribute('disabled')).toBe(true);
99
+ expect((_d = page.root) === null || _d === void 0 ? void 0 : _d.querySelectorAll('option')[0].classList.contains('kol-select__option--disabled')).toBe(true);
100
+ });
101
+ it('renders option with disabled: false inside a disabled list as disabled', async () => {
102
+ var _a, _b;
103
+ const disabledListOptions = [{ disabled: false, label: 'Option 1', value: '1' }];
104
+ const page = await renderFunctionalComponentToSpecPage(() => (h("select", null, h(SelectOptionListFC, { disabled: true, options: disabledListOptions }))));
105
+ expect(page.root).toMatchSnapshot();
106
+ expect((_a = page.root) === null || _a === void 0 ? void 0 : _a.querySelectorAll('option')[0].hasAttribute('disabled')).toBe(true);
107
+ expect((_b = page.root) === null || _b === void 0 ? void 0 : _b.querySelectorAll('option')[0].classList.contains('kol-select__option--disabled')).toBe(true);
108
+ });
109
+ it('renders with enabled group containing a disabled option', async () => {
110
+ var _a, _b, _c, _d, _e, _f;
111
+ const mixedOptions = [
112
+ {
113
+ label: 'Group 1',
114
+ options: [
115
+ { disabled: true, label: 'Option 1', value: '1' },
116
+ { disabled: false, label: 'Option 2', value: '2' },
117
+ ],
118
+ },
119
+ ];
120
+ const page = await renderFunctionalComponentToSpecPage(() => (h("select", null, h(SelectOptionListFC, { options: mixedOptions }))));
121
+ expect(page.root).toMatchSnapshot();
122
+ expect((_a = page.root) === null || _a === void 0 ? void 0 : _a.querySelectorAll('optgroup')[0].hasAttribute('disabled')).toBe(false);
123
+ expect((_b = page.root) === null || _b === void 0 ? void 0 : _b.querySelectorAll('optgroup')[0].classList.contains('kol-select__optgroup--disabled')).toBe(false);
124
+ expect((_c = page.root) === null || _c === void 0 ? void 0 : _c.querySelectorAll('option')[0].hasAttribute('disabled')).toBe(true);
125
+ expect((_d = page.root) === null || _d === void 0 ? void 0 : _d.querySelectorAll('option')[0].classList.contains('kol-select__option--disabled')).toBe(true);
126
+ expect((_e = page.root) === null || _e === void 0 ? void 0 : _e.querySelectorAll('option')[1].hasAttribute('disabled')).toBe(false);
127
+ expect((_f = page.root) === null || _f === void 0 ? void 0 : _f.querySelectorAll('option')[1].classList.contains('kol-select__option--disabled')).toBe(false);
128
+ });
41
129
  });
42
130
  describe('SelectOptionFC', () => {
43
131
  it.each([
@@ -1 +1 @@
1
- {"version":3,"file":"select.test.js","sourceRoot":"","sources":["../../../../src/internal/functional-components/form-field/select.test.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from '@stencil/core';\nimport { renderFunctionalComponentToSpecPage } from '../../../utils/testing';\nimport { SelectFC, SelectOptionFC, SelectOptionListFC } from './select';\n\nconst error = { _type: 'error' as const, _description: 'Error' };\nconst options = [\n\t{ label: 'Eins', value: 1 },\n\t{\n\t\tlabel: 'Gruppe',\n\t\toptions: [\n\t\t\t{ label: 'Zwei', value: 2 },\n\t\t\t{ label: 'Drei', value: 3, disabled: true },\n\t\t],\n\t},\n];\n\ndescribe('SelectFC', () => {\n\tit.each([\n\t\t['the default', {}],\n\t\t['a selected option in an optgroup', { value: [2] }],\n\t\t['several selected options', { multiple: true, size: 3, value: [1, 2] }],\n\t\t['disabled and required', { disabled: true, required: true }],\n\t\t['a touched error', { msg: error, touched: true }],\n\t\t['a hidden label and descriptions', { hideLabel: true, ariaDescribedBy: ['hint', 'msg'] }],\n\t\t['a merged class', { class: 'kol-custom' }],\n\t])('renders %s', async (_, props) => {\n\t\tconst page = await renderFunctionalComponentToSpecPage(() => <SelectFC id=\"id\" label=\"Label\" options={options} {...props} />);\n\t\texpect(page.root).toMatchSnapshot();\n\t});\n});\n\ndescribe('SelectOptionListFC', () => {\n\tit('renders nothing without options', async () => {\n\t\tconst page = await renderFunctionalComponentToSpecPage(() => (\n\t\t\t<select>\n\t\t\t\t<SelectOptionListFC options={[]} />\n\t\t\t</select>\n\t\t));\n\t\texpect(page.root).toMatchSnapshot();\n\t});\n\n\tit('disables the optgroups and prefixes the keys', async () => {\n\t\tconst page = await renderFunctionalComponentToSpecPage(() => (\n\t\t\t<select>\n\t\t\t\t<SelectOptionListFC options={options} preKey=\"-9\" disabled />\n\t\t\t</select>\n\t\t));\n\t\texpect(page.root).toMatchSnapshot();\n\t});\n});\n\ndescribe('SelectOptionFC', () => {\n\tit.each([\n\t\t['the key as native value', { index: '-1' }],\n\t\t['a selected single value', { selectedValue: 'value' }],\n\t\t['the selected attribute', { selected: true }],\n\t\t['a disabled option', { disabled: true }],\n\t])('renders %s', async (_, props) => {\n\t\tconst page = await renderFunctionalComponentToSpecPage(() => <SelectOptionFC value=\"value\" label=\"Label\" {...props} />);\n\t\texpect(page.root).toMatchSnapshot();\n\t});\n});\n"]}
1
+ {"version":3,"file":"select.test.js","sourceRoot":"","sources":["../../../../src/internal/functional-components/form-field/select.test.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from '@stencil/core';\nimport { renderFunctionalComponentToSpecPage } from '../../../utils/testing';\nimport { SelectFC, SelectOptionFC, SelectOptionListFC } from './select';\n\nconst error = { _type: 'error' as const, _description: 'Error' };\nconst options = [\n\t{ label: 'Eins', value: 1 },\n\t{\n\t\tlabel: 'Gruppe',\n\t\toptions: [\n\t\t\t{ label: 'Zwei', value: 2 },\n\t\t\t{ label: 'Drei', value: 3, disabled: true },\n\t\t],\n\t},\n];\n\ndescribe('SelectFC', () => {\n\tit.each([\n\t\t['the default', {}],\n\t\t['a selected option in an optgroup', { value: [2] }],\n\t\t['several selected options', { multiple: true, size: 3, value: [1, 2] }],\n\t\t['disabled and required', { disabled: true, required: true }],\n\t\t['a touched error', { msg: error, touched: true }],\n\t\t['a hidden label and descriptions', { hideLabel: true, ariaDescribedBy: ['hint', 'msg'] }],\n\t\t['a merged class', { class: 'kol-custom' }],\n\t])('renders %s', async (_, props) => {\n\t\tconst page = await renderFunctionalComponentToSpecPage(() => <SelectFC id=\"id\" label=\"Label\" options={options} {...props} />);\n\t\texpect(page.root).toMatchSnapshot();\n\t});\n\n\tit('forwards disabled to optgroups and options when select is disabled', async () => {\n\t\tconst optgroupOptions = [\n\t\t\t{\n\t\t\t\tlabel: 'Group 1',\n\t\t\t\toptions: [{ label: 'Option 1', value: '1' }],\n\t\t\t},\n\t\t];\n\t\tconst page = await renderFunctionalComponentToSpecPage(() => <SelectFC disabled={true} id=\"test\" label=\"Label\" options={optgroupOptions} />);\n\t\texpect(page.root).toMatchSnapshot();\n\t\texpect(page.root?.hasAttribute('disabled')).toBe(true);\n\t\texpect(page.root?.querySelectorAll('optgroup')[0].hasAttribute('disabled')).toBe(true);\n\t\texpect(page.root?.querySelectorAll('optgroup')[0].classList.contains('kol-select__optgroup--disabled')).toBe(true);\n\t\texpect(page.root?.querySelectorAll('option')[0].hasAttribute('disabled')).toBe(true);\n\t\texpect(page.root?.querySelectorAll('option')[0].classList.contains('kol-select__option--disabled')).toBe(true);\n\t});\n});\n\ndescribe('SelectOptionListFC', () => {\n\tit('renders nothing without options', async () => {\n\t\tconst page = await renderFunctionalComponentToSpecPage(() => (\n\t\t\t<select>\n\t\t\t\t<SelectOptionListFC options={[]} />\n\t\t\t</select>\n\t\t));\n\t\texpect(page.root).toMatchSnapshot();\n\t});\n\n\tit('does not render an optgroup without options', async () => {\n\t\tconst emptyGroupOptions = [\n\t\t\t{\n\t\t\t\tlabel: 'Empty Group',\n\t\t\t\toptions: [],\n\t\t\t},\n\t\t];\n\t\tconst page = await renderFunctionalComponentToSpecPage(() => (\n\t\t\t<select>\n\t\t\t\t<SelectOptionListFC options={emptyGroupOptions} />\n\t\t\t</select>\n\t\t));\n\t\texpect(page.root).toMatchSnapshot();\n\t\texpect(page.root?.querySelector('optgroup')).toBeNull();\n\t});\n\n\tit('disables the optgroups and prefixes the keys', async () => {\n\t\tconst page = await renderFunctionalComponentToSpecPage(() => (\n\t\t\t<select>\n\t\t\t\t<SelectOptionListFC options={options} preKey=\"-9\" disabled />\n\t\t\t</select>\n\t\t));\n\t\texpect(page.root).toMatchSnapshot();\n\t});\n\n\tit('renders with disabled option group', async () => {\n\t\tconst disabledGroupOptions = [\n\t\t\t{\n\t\t\t\tdisabled: true,\n\t\t\t\tlabel: 'Group 1',\n\t\t\t\toptions: [{ label: 'Option 1', value: '1' }],\n\t\t\t},\n\t\t];\n\t\tconst page = await renderFunctionalComponentToSpecPage(() => (\n\t\t\t<select>\n\t\t\t\t<SelectOptionListFC options={disabledGroupOptions} />\n\t\t\t</select>\n\t\t));\n\t\texpect(page.root).toMatchSnapshot();\n\t\texpect(page.root?.querySelectorAll('optgroup')[0].hasAttribute('disabled')).toBe(true);\n\t\texpect(page.root?.querySelectorAll('optgroup')[0].classList.contains('kol-select__optgroup--disabled')).toBe(true);\n\t\texpect(page.root?.querySelectorAll('option')[0].hasAttribute('disabled')).toBe(true);\n\t\texpect(page.root?.querySelectorAll('option')[0].classList.contains('kol-select__option--disabled')).toBe(true);\n\t});\n\n\tit('renders option with disabled: false inside a disabled group as disabled', async () => {\n\t\tconst disabledGroupOptions = [\n\t\t\t{\n\t\t\t\tdisabled: true,\n\t\t\t\tlabel: 'Group 1',\n\t\t\t\toptions: [{ disabled: false, label: 'Option 1', value: '1' }],\n\t\t\t},\n\t\t];\n\t\tconst page = await renderFunctionalComponentToSpecPage(() => (\n\t\t\t<select>\n\t\t\t\t<SelectOptionListFC options={disabledGroupOptions} />\n\t\t\t</select>\n\t\t));\n\t\texpect(page.root).toMatchSnapshot();\n\t\texpect(page.root?.querySelectorAll('optgroup')[0].hasAttribute('disabled')).toBe(true);\n\t\texpect(page.root?.querySelectorAll('optgroup')[0].classList.contains('kol-select__optgroup--disabled')).toBe(true);\n\t\texpect(page.root?.querySelectorAll('option')[0].hasAttribute('disabled')).toBe(true);\n\t\texpect(page.root?.querySelectorAll('option')[0].classList.contains('kol-select__option--disabled')).toBe(true);\n\t});\n\n\tit('renders option with disabled: false inside a disabled list as disabled', async () => {\n\t\tconst disabledListOptions = [{ disabled: false, label: 'Option 1', value: '1' }];\n\t\tconst page = await renderFunctionalComponentToSpecPage(() => (\n\t\t\t<select>\n\t\t\t\t<SelectOptionListFC disabled={true} options={disabledListOptions} />\n\t\t\t</select>\n\t\t));\n\t\texpect(page.root).toMatchSnapshot();\n\t\texpect(page.root?.querySelectorAll('option')[0].hasAttribute('disabled')).toBe(true);\n\t\texpect(page.root?.querySelectorAll('option')[0].classList.contains('kol-select__option--disabled')).toBe(true);\n\t});\n\n\tit('renders with enabled group containing a disabled option', async () => {\n\t\tconst mixedOptions = [\n\t\t\t{\n\t\t\t\tlabel: 'Group 1',\n\t\t\t\toptions: [\n\t\t\t\t\t{ disabled: true, label: 'Option 1', value: '1' },\n\t\t\t\t\t{ disabled: false, label: 'Option 2', value: '2' },\n\t\t\t\t],\n\t\t\t},\n\t\t];\n\t\tconst page = await renderFunctionalComponentToSpecPage(() => (\n\t\t\t<select>\n\t\t\t\t<SelectOptionListFC options={mixedOptions} />\n\t\t\t</select>\n\t\t));\n\t\texpect(page.root).toMatchSnapshot();\n\t\texpect(page.root?.querySelectorAll('optgroup')[0].hasAttribute('disabled')).toBe(false);\n\t\texpect(page.root?.querySelectorAll('optgroup')[0].classList.contains('kol-select__optgroup--disabled')).toBe(false);\n\t\texpect(page.root?.querySelectorAll('option')[0].hasAttribute('disabled')).toBe(true);\n\t\texpect(page.root?.querySelectorAll('option')[0].classList.contains('kol-select__option--disabled')).toBe(true);\n\t\texpect(page.root?.querySelectorAll('option')[1].hasAttribute('disabled')).toBe(false);\n\t\texpect(page.root?.querySelectorAll('option')[1].classList.contains('kol-select__option--disabled')).toBe(false);\n\t});\n});\n\ndescribe('SelectOptionFC', () => {\n\tit.each([\n\t\t['the key as native value', { index: '-1' }],\n\t\t['a selected single value', { selectedValue: 'value' }],\n\t\t['the selected attribute', { selected: true }],\n\t\t['a disabled option', { disabled: true }],\n\t])('renders %s', async (_, props) => {\n\t\tconst page = await renderFunctionalComponentToSpecPage(() => <SelectOptionFC value=\"value\" label=\"Label\" {...props} />);\n\t\texpect(page.root).toMatchSnapshot();\n\t});\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../../../src/internal/functional-components/form-field/textarea.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,CAAC,EAAkC,MAAM,eAAe,CAAC;AAElE,OAAO,EAAE,UAAU,EAAE,2BAA2B,EAAsC,MAAM,iBAAiB,CAAC;AAC9G,OAAO,IAAI,MAAM,qBAAqB,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAe7D,MAAM,CAAC,MAAM,UAAU,GAAwB,CAAC,KAAK,EAAE,EAAE;IACxD,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,KAAe,KAAK,EAAf,KAAK,UAAK,KAAK,EAAtH,wGAA8G,CAAQ,CAAC;IAE7H,MAAM,aAAa,iCAClB,KAAK,EAAE,IAAI,CACV,WAAW,CAAC,cAAc,CAAC,iBAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC3B,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC3B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EACzB,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,IACxB,CAAC,2BAA2B,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAW,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC1F,EACF,UAAU,CACV,EACD,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,IACf,oBAAoB,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,GAC3D,KAAK,CACR,CAAC;IAEF,OAAO,gCAAc,aAAa,EAAI,CAAC;AACxC,CAAC,CAAC","sourcesContent":["import { h, type FunctionalComponent as FC } from '@stencil/core';\nimport type { JSXBase } from '@stencil/core/internal';\nimport { getMsgType, isMsgDefinedAndInputTouched, type MsgPropType, type Stringified } from '../../../schema';\nimport clsx from '../../../utils/clsx';\nimport { getBlockBem } from '../bem-root-node/block-bem';\nimport type { DefaultInputProps } from './default-input-props';\nimport { getDefaultInputProps } from './default-input-props';\n\nexport type TextAreaFCProps = DefaultInputProps<JSXBase.TextareaHTMLAttributes<HTMLTextAreaElement>> & {\n\tvalue?: string;\n\ttouched?: boolean;\n\tmsg?: Stringified<MsgPropType>;\n} & {\n\t[key: `aria-${string}`]: unknown;\n\t[key: `data-${string}`]: unknown;\n};\n\n/**\n * Native `<textarea>` of a form field. The textarea itself is the root of the `kol-textarea` block,\n * so the block classes are set on it directly instead of through `BemRootNodeFC`.\n */\nexport const TextAreaFC: FC<TextAreaFCProps> = (props) => {\n\tconst { class: classNames, msg, touched, readonly, disabled, required, ariaDescribedBy, hideLabel, label, ...other } = props;\n\n\tconst textareaProps: JSXBase.TextareaHTMLAttributes<HTMLTextAreaElement> = {\n\t\tclass: clsx(\n\t\t\tgetBlockBem('kol-textarea')({\n\t\t\t\tdisabled: Boolean(disabled),\n\t\t\t\trequired: Boolean(required),\n\t\t\t\ttouched: Boolean(touched),\n\t\t\t\treadonly: Boolean(readonly),\n\t\t\t\t...(isMsgDefinedAndInputTouched(msg, touched) ? { [getMsgType(msg) as string]: true } : {}),\n\t\t\t}),\n\t\t\tclassNames,\n\t\t),\n\t\trequired: required,\n\t\tdisabled: disabled,\n\t\treadonly: readonly,\n\t\t...getDefaultInputProps({ ariaDescribedBy, hideLabel, label }),\n\t\t...other,\n\t};\n\n\treturn <textarea {...textareaProps} />;\n};\n"]}
1
+ {"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../../../src/internal/functional-components/form-field/textarea.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,CAAC,EAAkC,MAAM,eAAe,CAAC;AAElE,OAAO,EAAE,UAAU,EAAE,2BAA2B,EAAsC,MAAM,iBAAiB,CAAC;AAC9G,OAAO,IAAI,MAAM,qBAAqB,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAgB7D,MAAM,CAAC,MAAM,UAAU,GAAwB,CAAC,KAAK,EAAE,EAAE;IACxD,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,KAAe,KAAK,EAAf,KAAK,UAAK,KAAK,EAAtH,wGAA8G,CAAQ,CAAC;IAE7H,MAAM,aAAa,iCAClB,KAAK,EAAE,IAAI,CACV,WAAW,CAAC,cAAc,CAAC,iBAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC3B,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC3B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EACzB,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,IACxB,CAAC,2BAA2B,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAW,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC1F,EACF,UAAU,CACV,EACD,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,IACf,oBAAoB,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,GAC3D,KAAK,CACR,CAAC;IAEF,OAAO,gCAAc,aAAa,EAAI,CAAC;AACxC,CAAC,CAAC","sourcesContent":["import { h, type FunctionalComponent as FC } from '@stencil/core';\nimport type { JSXBase } from '@stencil/core/internal';\nimport { getMsgType, isMsgDefinedAndInputTouched, type MsgPropType, type Stringified } from '../../../schema';\nimport clsx from '../../../utils/clsx';\nimport { getBlockBem } from '../bem-root-node/block-bem';\nimport type { DefaultInputProps } from './default-input-props';\nimport { getDefaultInputProps } from './default-input-props';\n\nexport type TextAreaFCProps = DefaultInputProps<JSXBase.TextareaHTMLAttributes<HTMLTextAreaElement>> & {\n\tvalue?: string;\n\ttouched?: boolean;\n\tmsg?: Stringified<MsgPropType>;\n\tspellcheck?: boolean;\n} & {\n\t[key: `aria-${string}`]: unknown;\n\t[key: `data-${string}`]: unknown;\n};\n\n/**\n * Native `<textarea>` of a form field. The textarea itself is the root of the `kol-textarea` block,\n * so the block classes are set on it directly instead of through `BemRootNodeFC`.\n */\nexport const TextAreaFC: FC<TextAreaFCProps> = (props) => {\n\tconst { class: classNames, msg, touched, readonly, disabled, required, ariaDescribedBy, hideLabel, label, ...other } = props;\n\n\tconst textareaProps: JSXBase.TextareaHTMLAttributes<HTMLTextAreaElement> = {\n\t\tclass: clsx(\n\t\t\tgetBlockBem('kol-textarea')({\n\t\t\t\tdisabled: Boolean(disabled),\n\t\t\t\trequired: Boolean(required),\n\t\t\t\ttouched: Boolean(touched),\n\t\t\t\treadonly: Boolean(readonly),\n\t\t\t\t...(isMsgDefinedAndInputTouched(msg, touched) ? { [getMsgType(msg) as string]: true } : {}),\n\t\t\t}),\n\t\t\tclassNames,\n\t\t),\n\t\trequired: required,\n\t\tdisabled: disabled,\n\t\treadonly: readonly,\n\t\t...getDefaultInputProps({ ariaDescribedBy, hideLabel, label }),\n\t\t...other,\n\t};\n\n\treturn <textarea {...textareaProps} />;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/internal/functional-components/toolbar/api.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAYzF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IACjC,QAAQ,EAAE,CAAC,uBAAuB,EAAE,gBAAgB,CAAC;IACrD,QAAQ,EAAE,CAAC,eAAe,CAAC;CACS,CAAC","sourcesContent":["import type { KolFocusOptions } from '../../../schema';\nimport { labelWithExpertSlotProp, orientationProp, toolbarItemsProp } from '../../props';\nimport type { ApiFromConfig, PropsConfigShape } from '../generic-types';\nimport type { ToolbarButtonItem, ToolbarLinkItem } from './item';\n\n/**\n * Props configuration for the toolbar component.\n *\n * Notes on prop choices:\n * - `labelWithExpertSlotProp`, not `labelProp`: the predecessor's `validateLabel` accepted any\n * string; `labelProp` would reject one-character labels. The toolbar has no expert slot.\n * - `orientationProp` defaults to `'horizontal'`, like the predecessor's `validateOrientation`.\n */\nexport const toolbarPropsConfig = {\n\trequired: [labelWithExpertSlotProp, toolbarItemsProp],\n\toptional: [orientationProp],\n} as const satisfies PropsConfigShape;\n\nexport type ToolbarApi = ApiFromConfig<\n\ttypeof toolbarPropsConfig,\n\t{\n\t\tMethods: {\n\t\t\tclick: () => void;\n\t\t\tfocus: (options?: KolFocusOptions) => void;\n\t\t};\n\t\tStates: {\n\t\t\t/**\n\t\t\t * Index of the item carrying the roving tabindex. `-1` while no item is enabled.\n\t\t\t */\n\t\t\tcurrentIndex: number;\n\t\t\t/**\n\t\t\t * Orchestration records for the items (everything `ButtonFC` or `LinkFC` needs, built by\n\t\t\t * `createToolbarItem`), rebuilt whenever `_items` changes.\n\t\t\t */\n\t\t\titemRecords: Array<ToolbarButtonItem | ToolbarLinkItem>;\n\t\t\t/**\n\t\t\t * The current location reported by the aria-current service, `''` until one is reported.\n\t\t\t * Drives the links' `aria-current`.\n\t\t\t */\n\t\t\tlocation: string;\n\t\t};\n\t}\n>;\n"]}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/internal/functional-components/toolbar/api.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAYzF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IACjC,QAAQ,EAAE,CAAC,uBAAuB,EAAE,gBAAgB,CAAC;IACrD,QAAQ,EAAE,CAAC,eAAe,CAAC;CACS,CAAC","sourcesContent":["import type { KolFocusOptions } from '../../../schema';\nimport { labelWithExpertSlotProp, orientationProp, toolbarItemsProp } from '../../props';\nimport type { ApiFromConfig, PropsConfigShape } from '../generic-types';\nimport type { ToolbarButtonItem, ToolbarHRItem, ToolbarLinkItem } from './item';\n\n/**\n * Props configuration for the toolbar component.\n *\n * Notes on prop choices:\n * - `labelWithExpertSlotProp`, not `labelProp`: the predecessor's `validateLabel` accepted any\n * string; `labelProp` would reject one-character labels. The toolbar has no expert slot.\n * - `orientationProp` defaults to `'horizontal'`, like the predecessor's `validateOrientation`.\n */\nexport const toolbarPropsConfig = {\n\trequired: [labelWithExpertSlotProp, toolbarItemsProp],\n\toptional: [orientationProp],\n} as const satisfies PropsConfigShape;\n\nexport type ToolbarApi = ApiFromConfig<\n\ttypeof toolbarPropsConfig,\n\t{\n\t\tMethods: {\n\t\t\tclick: () => void;\n\t\t\tfocus: (options?: KolFocusOptions) => void;\n\t\t};\n\t\tStates: {\n\t\t\t/**\n\t\t\t * Index of the item carrying the roving tabindex. `-1` while no item is enabled.\n\t\t\t */\n\t\t\tcurrentIndex: number;\n\t\t\t/**\n\t\t\t * Orchestration records for the items (everything `ButtonFC` or `LinkFC` needs, built by\n\t\t\t * `createToolbarItem`), rebuilt whenever `_items` changes.\n\t\t\t */\n\t\t\titemRecords: Array<ToolbarButtonItem | ToolbarLinkItem | ToolbarHRItem>;\n\t\t\t/**\n\t\t\t * The current location reported by the aria-current service, `''` until one is reported.\n\t\t\t * Drives the links' `aria-current`.\n\t\t\t */\n\t\t\tlocation: string;\n\t\t};\n\t}\n>;\n"]}
@@ -9,7 +9,7 @@ import { LinkFC } from "../link/component";
9
9
  const BEM_CLASS_TOOLBAR__ITEM = bem.forBlock('kol-toolbar')('item');
10
10
  const renderItem = (record, index, currentIndex, location) => {
11
11
  const tabIndex = index === currentIndex && !record.disabled ? 0 : -1;
12
- return (h("div", { class: BEM_CLASS_TOOLBAR__ITEM, key: index, ref: record.refWrapper }, record.type === 'link' ? h(LinkFC, Object.assign({}, record.getFcProps(tabIndex, location))) : h(ButtonFC, Object.assign({}, record.getFcProps(tabIndex)))));
12
+ return (h("div", { class: BEM_CLASS_TOOLBAR__ITEM, key: index, ref: record.refWrapper }, record.type === 'link' ? (h(LinkFC, Object.assign({}, record.getFcProps(tabIndex, location)))) : record.type === 'button' ? (h(ButtonFC, Object.assign({}, record.getFcProps(tabIndex)))) : (h("hr", null))));
13
13
  };
14
14
  export const ToolbarFC = ({ class: hostClass, currentIndex, itemRecords, label, location, orientation }) => (h(BemRootNodeFC, { block: "kol-toolbar", class: hostClass, modifiers: { 'orientation-horizontal': orientation === 'horizontal', 'orientation-vertical': orientation === 'vertical' }, role: "toolbar", "aria-label": label }, itemRecords.map((record, index) => renderItem(record, index, currentIndex, location))));
15
15
  //# sourceMappingURL=component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sourceRoot":"","sources":["../../../../src/internal/functional-components/toolbar/component.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAElC,OAAO,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,MAAM,uBAAuB,GAAG,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAYpE,MAAM,UAAU,GAAG,CAAC,MAA2C,EAAE,KAAa,EAAE,YAAoB,EAAE,QAAgB,EAAE,EAAE;IACzH,MAAM,QAAQ,GAAG,KAAK,KAAK,YAAY,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAErE,OAAO,CACN,WAAK,KAAK,EAAE,uBAAuB,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,IACrE,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,EAAC,MAAM,oBAAK,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAI,CAAC,CAAC,CAAC,EAAC,QAAQ,oBAAK,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAI,CAC1H,CACN,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAuB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAC/H,EAAC,aAAa,IACb,KAAK,EAAC,aAAa,EACnB,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,EAAE,wBAAwB,EAAE,WAAW,KAAK,YAAY,EAAE,sBAAsB,EAAE,WAAW,KAAK,UAAU,EAAE,EACzH,IAAI,EAAC,SAAS,gBACF,KAAK,IAEhB,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CACvE,CAChB,CAAC","sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport { bem } from '../../../schema/bem-registry';\nimport { BemRootNodeFC } from '../bem-root-node/component';\nimport { ButtonFC } from '../button/component';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport { LinkFC } from '../link/component';\nimport type { ToolbarApi } from './api';\nimport type { ToolbarButtonItem, ToolbarLinkItem } from './item';\n\nconst BEM_CLASS_TOOLBAR__ITEM = bem.forBlock('kol-toolbar')('item');\n\ntype ToolbarFCProps = Pick<FunctionalComponentProps<ToolbarApi>, 'currentIndex' | 'itemRecords' | 'label' | 'location' | 'orientation'> & {\n\tclass?: string;\n};\n\n/**\n * Renders one entry. `.kol-toolbar__item` stays on a wrapper around the functional component\n * rather than merging onto its root: the themes address it as an ancestor of the button's and\n * link's inner elements (`.kol-toolbar__item:first-child .kol-button__text`), and a wrapper in\n * the place of the former custom element keeps the flex-item box tree unchanged.\n */\nconst renderItem = (record: ToolbarButtonItem | ToolbarLinkItem, index: number, currentIndex: number, location: string) => {\n\tconst tabIndex = index === currentIndex && !record.disabled ? 0 : -1;\n\n\treturn (\n\t\t<div class={BEM_CLASS_TOOLBAR__ITEM} key={index} ref={record.refWrapper}>\n\t\t\t{record.type === 'link' ? <LinkFC {...record.getFcProps(tabIndex, location)} /> : <ButtonFC {...record.getFcProps(tabIndex)} />}\n\t\t</div>\n\t);\n};\n\nexport const ToolbarFC: FC<ToolbarFCProps> = ({ class: hostClass, currentIndex, itemRecords, label, location, orientation }) => (\n\t<BemRootNodeFC\n\t\tblock=\"kol-toolbar\"\n\t\tclass={hostClass}\n\t\tmodifiers={{ 'orientation-horizontal': orientation === 'horizontal', 'orientation-vertical': orientation === 'vertical' }}\n\t\trole=\"toolbar\"\n\t\taria-label={label}\n\t>\n\t\t{itemRecords.map((record, index) => renderItem(record, index, currentIndex, location))}\n\t</BemRootNodeFC>\n);\n"]}
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":["../../../../src/internal/functional-components/toolbar/component.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAElC,OAAO,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,MAAM,uBAAuB,GAAG,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAYpE,MAAM,UAAU,GAAG,CAAC,MAA2D,EAAE,KAAa,EAAE,YAAoB,EAAE,QAAgB,EAAE,EAAE;IACzI,MAAM,QAAQ,GAAG,KAAK,KAAK,YAAY,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAErE,OAAO,CACN,WAAK,KAAK,EAAE,uBAAuB,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,IACrE,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CACzB,EAAC,MAAM,oBAAK,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAI,CACrD,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC9B,EAAC,QAAQ,oBAAK,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAI,CAC7C,CAAC,CAAC,CAAC,CACH,aAAM,CACN,CACI,CACN,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAuB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAC/H,EAAC,aAAa,IACb,KAAK,EAAC,aAAa,EACnB,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,EAAE,wBAAwB,EAAE,WAAW,KAAK,YAAY,EAAE,sBAAsB,EAAE,WAAW,KAAK,UAAU,EAAE,EACzH,IAAI,EAAC,SAAS,gBACF,KAAK,IAEhB,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CACvE,CAChB,CAAC","sourcesContent":["import type { FunctionalComponent as FC } from '@stencil/core';\nimport { h } from '@stencil/core';\n\nimport { bem } from '../../../schema/bem-registry';\nimport { BemRootNodeFC } from '../bem-root-node/component';\nimport { ButtonFC } from '../button/component';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport { LinkFC } from '../link/component';\nimport type { ToolbarApi } from './api';\nimport type { ToolbarButtonItem, ToolbarHRItem, ToolbarLinkItem } from './item';\n\nconst BEM_CLASS_TOOLBAR__ITEM = bem.forBlock('kol-toolbar')('item');\n\ntype ToolbarFCProps = Pick<FunctionalComponentProps<ToolbarApi>, 'currentIndex' | 'itemRecords' | 'label' | 'location' | 'orientation'> & {\n\tclass?: string;\n};\n\n/**\n * Renders one entry. `.kol-toolbar__item` stays on a wrapper around the functional component\n * rather than merging onto its root: the themes address it as an ancestor of the button's and\n * link's inner elements (`.kol-toolbar__item:first-child .kol-button__text`), and a wrapper in\n * the place of the former custom element keeps the flex-item box tree unchanged.\n */\nconst renderItem = (record: ToolbarButtonItem | ToolbarLinkItem | ToolbarHRItem, index: number, currentIndex: number, location: string) => {\n\tconst tabIndex = index === currentIndex && !record.disabled ? 0 : -1;\n\n\treturn (\n\t\t<div class={BEM_CLASS_TOOLBAR__ITEM} key={index} ref={record.refWrapper}>\n\t\t\t{record.type === 'link' ? (\n\t\t\t\t<LinkFC {...record.getFcProps(tabIndex, location)} />\n\t\t\t) : record.type === 'button' ? (\n\t\t\t\t<ButtonFC {...record.getFcProps(tabIndex)} />\n\t\t\t) : (\n\t\t\t\t<hr />\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport const ToolbarFC: FC<ToolbarFCProps> = ({ class: hostClass, currentIndex, itemRecords, label, location, orientation }) => (\n\t<BemRootNodeFC\n\t\tblock=\"kol-toolbar\"\n\t\tclass={hostClass}\n\t\tmodifiers={{ 'orientation-horizontal': orientation === 'horizontal', 'orientation-vertical': orientation === 'vertical' }}\n\t\trole=\"toolbar\"\n\t\taria-label={label}\n\t>\n\t\t{itemRecords.map((record, index) => renderItem(record, index, currentIndex, location))}\n\t</BemRootNodeFC>\n);\n"]}
@@ -11,7 +11,15 @@ import { BaseWebComponent } from "../base-web-component";
11
11
  import { resolveButtonProps } from "../button/resolve-props";
12
12
  import { resolveLinkProps } from "../link/resolve-props";
13
13
  import { TooltipBehavior } from "../tooltip/behavior";
14
- export const createToolbarItem = (item, getFlagHost) => item.type === 'link' ? createLinkItem(item, getFlagHost) : createButtonItem(item, getFlagHost);
14
+ export const createToolbarItem = (item, getFlagHost) => {
15
+ if (item.type === 'link') {
16
+ return createLinkItem(item, getFlagHost);
17
+ }
18
+ else if (item.type === 'button') {
19
+ return createButtonItem(item, getFlagHost);
20
+ }
21
+ return createHRItem();
22
+ };
15
23
  const createButtonItem = (item, getFlagHost) => {
16
24
  const tooltipBehavior = new TooltipBehavior(BaseWebComponent.stateLess);
17
25
  const ctaRef = createCtaRef();
@@ -114,4 +122,15 @@ const createLinkItem = (item, getFlagHost) => {
114
122
  destroy: () => tooltipBehavior.destroy(),
115
123
  };
116
124
  };
125
+ const createHRItem = () => {
126
+ const ctaRef = createCtaRef();
127
+ return {
128
+ type: 'hr',
129
+ disabled: true,
130
+ getElement: () => ctaRef.el,
131
+ refWrapper: () => { },
132
+ syncListeners: () => { },
133
+ destroy: () => { },
134
+ };
135
+ };
117
136
  //# sourceMappingURL=item.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"item.js","sourceRoot":"","sources":["../../../../src/internal/functional-components/toolbar/item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAE5G,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAI7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AA8CtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAyB,EAAE,WAA0C,EAAuC,EAAE,CAC/I,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AAEhG,MAAM,gBAAgB,GAAG,CAAC,IAAsD,EAAE,WAA0C,EAAqB,EAAE;IAClJ,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,YAAY,EAAqB,CAAC;IACjD,MAAM,iBAAiB,GAAG,KAAK,EAAE,CAAC;IAClC,IAAI,OAAgC,CAAC;IAErC,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;IAE1B,eAAe,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IAErF,MAAM,QAAQ,GAAG,CAAC,KAAe,EAAE,MAAgB,EAAQ,EAAE;QAC5D,IAAI,OAAO,EAAE,CAAC;YACb,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC1C,CAAC;IACF,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,KAAiB,EAAQ,EAAE;QAC/C,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,eAAe,CAAC,WAAW,EAAE,CAAC;QAE9B,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,0BAA0B,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/D,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACnC,yBAAyB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9D,CAAC;aAAM,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACnD,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YACjC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,KAAiB,EAAQ,EAAE;;QACnD,MAAA,MAAA,KAAK,CAAC,EAAE,EAAC,WAAW,mDAAG,KAAK,CAAC,CAAC;QAC9B,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,KAAiB,EAAQ,EAAE;;QAC/C,MAAA,MAAA,KAAK,CAAC,EAAE,EAAC,OAAO,mDAAG,KAAK,CAAC,CAAC;QAC1B,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,KAAiB,EAAQ,EAAE;;QAC9C,MAAA,MAAA,KAAK,CAAC,EAAE,EAAC,MAAM,mDAAG,KAAK,CAAC,CAAC;QACzB,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,OAAO;QACN,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE;QAC3B,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,iCACtB,KAAK,KACR,iBAAiB;YACjB,UAAU;YACV,WAAW;YACX,WAAW;YACX,eAAe,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,eAAe,CAAC,oBAAoB,EAChD,QAAQ,EAAE,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,IACvE;QACF,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE;YACvB,OAAO,GAAG,OAAO,CAAC;QACnB,CAAC;QACD,aAAa,EAAE,GAAG,EAAE;YACnB,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,eAAe,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAC3D,CAAC;QACF,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE;KACxC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,IAAoD,EAAE,WAA0C,EAAmB,EAAE;;IAC5I,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,YAAY,EAAqB,CAAC;IACjD,MAAM,iBAAiB,GAAG,KAAK,EAAE,CAAC;IAClC,IAAI,OAAgC,CAAC;IAErC,MAAM,IAAI,GAAsB,IAAI,CAAC;IACrC,MAAM,KAAK,GAAG,gBAAgB,iCAC1B,IAAI,KACP,OAAO,EAAE,MAAA,IAAI,CAAC,OAAO,mCAAI,KAAK,EAC9B,QAAQ,EAAE,MAAA,MAAA,IAAI,CAAC,QAAQ,mCAAI,cAAc,CAAC,sBAAsB,EAAE,WAAW,EAAE,CAAC,mCAAI,QAAQ,IAC3F,CAAC;IAGH,eAAe,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IAE3H,MAAM,iBAAiB,GAAG,CAAC,KAAY,EAAQ,EAAE;QAChD,eAAe,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACpB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO;QACR,CAAC;QACD,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YAC5C,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YACjC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACb,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;IACF,CAAC,CAAC;IAEF,OAAO;QACN,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE;QAC3B,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,iCAChC,KAAK,KACR,WAAW,EAAE,QAAQ,KAAK,EAAE,IAAI,QAAQ,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EACrF,iBAAiB,EACjB,UAAU,EAAE,IAAI,CAAC,MAAM,KAAK,EAAE,EAC9B,iBAAiB,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,eAAe,CAAC,oBAAoB,EAChD,QAAQ,EAAE,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,IACvE;QACF,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE;YACvB,OAAO,GAAG,OAAO,CAAC;QACnB,CAAC;QACD,aAAa,EAAE,GAAG,EAAE;YACnB,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,eAAe,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAC3D,CAAC;QACF,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE;KACxC,CAAC;AACH,CAAC,CAAC","sourcesContent":["import { getFeatureFlag } from 'adopted-style-sheets';\n\nimport { propagateResetEventToForm, propagateSubmitEventToForm } from '../../../components/form/controller';\nimport type { ToolbarItemPropType } from '../../../schema';\nimport { setEventTarget } from '../../../schema';\nimport { nonce } from '../../../utils/dev.utils';\nimport { createCtaRef } from '../../../utils/element-interaction';\nimport { dispatchDomEvent, KolEvent } from '../../../utils/events';\nimport { BaseWebComponent } from '../base-web-component';\nimport type { ButtonApi } from '../button/api';\nimport { resolveButtonProps } from '../button/resolve-props';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport type { LinkApi } from '../link/api';\nimport type { EmbeddedLinkProps } from '../link/resolve-props';\nimport { resolveLinkProps } from '../link/resolve-props';\nimport { TooltipBehavior } from '../tooltip/behavior';\n\ntype ToolbarItemBase = {\n\t/** Whether the item refuses interaction; the roving tabindex skips it. */\n\tdisabled: boolean;\n\t/** The item's interactive element, once rendered. */\n\tgetElement(): HTMLAnchorElement | HTMLButtonElement | undefined;\n\t/**\n\t * Ref for the item's wrapper. The public `KolEvent` DOM events are dispatched on it, i.e. on\n\t * the node that the transitional `kol-button-wc`/`kol-link-wc` host occupied before.\n\t */\n\trefWrapper: (element?: HTMLElement) => void;\n\t/** Re-registers the tooltip listeners on the current element. Call from `componentDidRender`. */\n\tsyncListeners(): void;\n\t/** Tears down the tooltip behavior. Call when the item is replaced or the toolbar disconnects. */\n\tdestroy(): void;\n};\n\nexport type ToolbarButtonItem = ToolbarItemBase & {\n\ttype: 'button';\n\t/** Fully resolved `ButtonFC` props for the given roving tabindex. */\n\tgetFcProps(tabIndex: number): FunctionalComponentProps<ButtonApi>;\n};\n\nexport type ToolbarLinkItem = ToolbarItemBase & {\n\ttype: 'link';\n\t/**\n\t * Fully resolved `LinkFC` props for the given roving tabindex and current location (`''` while\n\t * no location has been reported).\n\t */\n\tgetFcProps(tabIndex: number, location: string): FunctionalComponentProps<LinkApi>;\n};\n\n/**\n * One orchestrated toolbar entry: everything `ButtonFC` or `LinkFC` needs to render it, plus the\n * lifecycle hooks the toolbar has to drive — what the transitional `kol-button-wc` and\n * `kol-link-wc` did per entry before the toolbar rendered the functional components directly.\n *\n * A plain object with closures, like `breadcrumb/link-item.ts` and `popover-button/item.ts`, so\n * the toolbar rebuilds it cheaply whenever `_items` changes while tooltip behavior and refs\n * survive by reference.\n *\n * The toolbar's own defaults — `_inline: false` and the theme's `buttonVariantDefault` — apply\n * only where the entry leaves the prop unset, and an entry's own `_tabIndex` wins over the roving\n * tabindex, exactly like the predecessor's `{...defaults} {...item}` spread.\n */\nexport const createToolbarItem = (item: ToolbarItemPropType, getFlagHost: () => HTMLElement | undefined): ToolbarButtonItem | ToolbarLinkItem =>\n\titem.type === 'link' ? createLinkItem(item, getFlagHost) : createButtonItem(item, getFlagHost);\n\nconst createButtonItem = (item: Extract<ToolbarItemPropType, { type: 'button' }>, getFlagHost: () => HTMLElement | undefined): ToolbarButtonItem => {\n\tconst tooltipBehavior = new TooltipBehavior(BaseWebComponent.stateLess);\n\tconst ctaRef = createCtaRef<HTMLButtonElement>();\n\tconst ariaDescriptionId = nonce();\n\tlet wrapper: HTMLElement | undefined;\n\n\tconst props = resolveButtonProps(item, getFlagHost());\n\tconst value = item._value;\n\n\ttooltipBehavior.componentWillLoad({ label: props.label, align: props.tooltipAlign });\n\n\tconst dispatch = (event: KolEvent, detail?: unknown): void => {\n\t\tif (wrapper) {\n\t\t\tdispatchDomEvent(wrapper, event, detail);\n\t\t}\n\t};\n\n\tconst handleClick = (event: MouseEvent): void => {\n\t\tevent.stopPropagation();\n\t\ttooltipBehavior.hideTooltip();\n\n\t\tif (props.type === 'submit') {\n\t\t\tpropagateSubmitEventToForm({ form: wrapper, ref: ctaRef.el });\n\t\t} else if (props.type === 'reset') {\n\t\t\tpropagateResetEventToForm({ form: wrapper, ref: ctaRef.el });\n\t\t} else if (typeof props.on.onClick === 'function') {\n\t\t\tsetEventTarget(event, ctaRef.el);\n\t\t\tprops.on.onClick(event, value);\n\t\t}\n\n\t\tdispatch(KolEvent.click, value);\n\t};\n\n\tconst handleMouseDown = (event: MouseEvent): void => {\n\t\tprops.on.onMouseDown?.(event);\n\t\tdispatch(KolEvent.mousedown);\n\t};\n\n\tconst handleFocus = (event: FocusEvent): void => {\n\t\tprops.on.onFocus?.(event);\n\t\tdispatch(KolEvent.focus);\n\t};\n\n\tconst handleBlur = (event: FocusEvent): void => {\n\t\tprops.on.onBlur?.(event);\n\t\tdispatch(KolEvent.blur);\n\t};\n\n\treturn {\n\t\ttype: 'button',\n\t\tdisabled: props.disabled,\n\t\tgetElement: () => ctaRef.el,\n\t\tgetFcProps: (tabIndex) => ({\n\t\t\t...props,\n\t\t\tariaDescriptionId,\n\t\t\thandleBlur,\n\t\t\thandleClick,\n\t\t\thandleFocus,\n\t\t\thandleMouseDown,\n\t\t\trefButton: ctaRef,\n\t\t\trefTooltip: tooltipBehavior.setTooltipElementRef,\n\t\t\ttabIndex: typeof item._tabIndex === 'number' ? props.tabIndex : tabIndex,\n\t\t}),\n\t\trefWrapper: (element) => {\n\t\t\twrapper = element;\n\t\t},\n\t\tsyncListeners: () => {\n\t\t\tif (ctaRef.el) {\n\t\t\t\ttooltipBehavior.syncListeners(undefined, ctaRef.el, true);\n\t\t\t}\n\t\t},\n\t\tdestroy: () => tooltipBehavior.destroy(),\n\t};\n};\n\nconst createLinkItem = (item: Extract<ToolbarItemPropType, { type: 'link' }>, getFlagHost: () => HTMLElement | undefined): ToolbarLinkItem => {\n\tconst tooltipBehavior = new TooltipBehavior(BaseWebComponent.stateLess);\n\tconst ctaRef = createCtaRef<HTMLAnchorElement>();\n\tconst ariaDescriptionId = nonce();\n\tlet wrapper: HTMLElement | undefined;\n\n\tconst link: EmbeddedLinkProps = item;\n\tconst props = resolveLinkProps({\n\t\t...link,\n\t\t_inline: link._inline ?? false,\n\t\t_variant: link._variant ?? getFeatureFlag('buttonVariantDefault', getFlagHost()) ?? 'normal',\n\t});\n\n\t// A link without a label shows its href, and so does its tooltip.\n\ttooltipBehavior.componentWillLoad({ label: props.label.length > 0 ? props.label : props.href, align: props.tooltipAlign });\n\n\tconst handleAnchorClick = (event: Event): void => {\n\t\ttooltipBehavior.hideTooltip();\n\t\tif (props.disabled) {\n\t\t\tevent.preventDefault();\n\t\t\treturn;\n\t\t}\n\t\tif (typeof props.on.onClick === 'function') {\n\t\t\tsetEventTarget(event, ctaRef.el);\n\t\t\tprops.on.onClick(event, props.href);\n\t\t}\n\t\tif (wrapper) {\n\t\t\tdispatchDomEvent(wrapper, KolEvent.click, props.href);\n\t\t}\n\t};\n\n\treturn {\n\t\ttype: 'link',\n\t\tdisabled: props.disabled,\n\t\tgetElement: () => ctaRef.el,\n\t\tgetFcProps: (tabIndex, location) => ({\n\t\t\t...props,\n\t\t\tariaCurrent: location !== '' && location === props.href ? props.ariaCurrentValue : '',\n\t\t\tariaDescriptionId,\n\t\t\texpertSlot: item._label === '',\n\t\t\thandleAnchorClick,\n\t\t\trefAnchor: ctaRef,\n\t\t\trefTooltip: tooltipBehavior.setTooltipElementRef,\n\t\t\ttabIndex: typeof item._tabIndex === 'number' ? props.tabIndex : tabIndex,\n\t\t}),\n\t\trefWrapper: (element) => {\n\t\t\twrapper = element;\n\t\t},\n\t\tsyncListeners: () => {\n\t\t\tif (ctaRef.el) {\n\t\t\t\ttooltipBehavior.syncListeners(undefined, ctaRef.el, true);\n\t\t\t}\n\t\t},\n\t\tdestroy: () => tooltipBehavior.destroy(),\n\t};\n};\n"]}
1
+ {"version":3,"file":"item.js","sourceRoot":"","sources":["../../../../src/internal/functional-components/toolbar/item.ts"],"names":[],"mappings":"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","sourcesContent":["import { getFeatureFlag } from 'adopted-style-sheets';\n\nimport { propagateResetEventToForm, propagateSubmitEventToForm } from '../../../components/form/controller';\nimport type { ToolbarItemPropType } from '../../../schema';\nimport { setEventTarget } from '../../../schema';\nimport { nonce } from '../../../utils/dev.utils';\nimport { createCtaRef } from '../../../utils/element-interaction';\nimport { dispatchDomEvent, KolEvent } from '../../../utils/events';\nimport { BaseWebComponent } from '../base-web-component';\nimport type { ButtonApi } from '../button/api';\nimport { resolveButtonProps } from '../button/resolve-props';\nimport type { FunctionalComponentProps } from '../generic-types';\nimport type { LinkApi } from '../link/api';\nimport type { EmbeddedLinkProps } from '../link/resolve-props';\nimport { resolveLinkProps } from '../link/resolve-props';\nimport { TooltipBehavior } from '../tooltip/behavior';\n\ntype ToolbarItemBase = {\n\t/** Whether the item refuses interaction; the roving tabindex skips it. */\n\tdisabled: boolean;\n\t/** The item's interactive element, once rendered. */\n\tgetElement(): HTMLAnchorElement | HTMLButtonElement | HTMLHRElement | undefined;\n\t/**\n\t * Ref for the item's wrapper. The public `KolEvent` DOM events are dispatched on it, i.e. on\n\t * the node that the transitional `kol-button-wc`/`kol-link-wc` host occupied before.\n\t */\n\trefWrapper: (element?: HTMLElement) => void;\n\t/** Re-registers the tooltip listeners on the current element. Call from `componentDidRender`. */\n\tsyncListeners(): void;\n\t/** Tears down the tooltip behavior. Call when the item is replaced or the toolbar disconnects. */\n\tdestroy(): void;\n};\n\nexport type ToolbarButtonItem = ToolbarItemBase & {\n\ttype: 'button';\n\t/** Fully resolved `ButtonFC` props for the given roving tabindex. */\n\tgetFcProps(tabIndex: number): FunctionalComponentProps<ButtonApi>;\n};\n\nexport type ToolbarLinkItem = ToolbarItemBase & {\n\ttype: 'link';\n\t/**\n\t * Fully resolved `LinkFC` props for the given roving tabindex and current location (`''` while\n\t * no location has been reported).\n\t */\n\tgetFcProps(tabIndex: number, location: string): FunctionalComponentProps<LinkApi>;\n};\n\nexport type ToolbarHRItem = ToolbarItemBase & {\n\ttype: 'hr';\n};\n\n/**\n * One orchestrated toolbar entry: everything `ButtonFC` or `LinkFC` needs to render it, plus the\n * lifecycle hooks the toolbar has to drive — what the transitional `kol-button-wc` and\n * `kol-link-wc` did per entry before the toolbar rendered the functional components directly.\n *\n * A plain object with closures, like `breadcrumb/link-item.ts` and `popover-button/item.ts`, so\n * the toolbar rebuilds it cheaply whenever `_items` changes while tooltip behavior and refs\n * survive by reference.\n *\n * The toolbar's own defaults — `_inline: false` and the theme's `buttonVariantDefault` — apply\n * only where the entry leaves the prop unset, and an entry's own `_tabIndex` wins over the roving\n * tabindex, exactly like the predecessor's `{...defaults} {...item}` spread.\n */\nexport const createToolbarItem = (\n\titem: ToolbarItemPropType,\n\tgetFlagHost: () => HTMLElement | undefined,\n): ToolbarButtonItem | ToolbarLinkItem | ToolbarHRItem => {\n\tif (item.type === 'link') {\n\t\treturn createLinkItem(item, getFlagHost);\n\t} else if (item.type === 'button') {\n\t\treturn createButtonItem(item, getFlagHost);\n\t}\n\treturn createHRItem();\n};\n\nconst createButtonItem = (item: Extract<ToolbarItemPropType, { type: 'button' }>, getFlagHost: () => HTMLElement | undefined): ToolbarButtonItem => {\n\tconst tooltipBehavior = new TooltipBehavior(BaseWebComponent.stateLess);\n\tconst ctaRef = createCtaRef<HTMLButtonElement>();\n\tconst ariaDescriptionId = nonce();\n\tlet wrapper: HTMLElement | undefined;\n\n\tconst props = resolveButtonProps(item, getFlagHost());\n\tconst value = item._value;\n\n\ttooltipBehavior.componentWillLoad({ label: props.label, align: props.tooltipAlign });\n\n\tconst dispatch = (event: KolEvent, detail?: unknown): void => {\n\t\tif (wrapper) {\n\t\t\tdispatchDomEvent(wrapper, event, detail);\n\t\t}\n\t};\n\n\tconst handleClick = (event: MouseEvent): void => {\n\t\tevent.stopPropagation();\n\t\ttooltipBehavior.hideTooltip();\n\n\t\tif (props.type === 'submit') {\n\t\t\tpropagateSubmitEventToForm({ form: wrapper, ref: ctaRef.el });\n\t\t} else if (props.type === 'reset') {\n\t\t\tpropagateResetEventToForm({ form: wrapper, ref: ctaRef.el });\n\t\t} else if (typeof props.on.onClick === 'function') {\n\t\t\tsetEventTarget(event, ctaRef.el);\n\t\t\tprops.on.onClick(event, value);\n\t\t}\n\n\t\tdispatch(KolEvent.click, value);\n\t};\n\n\tconst handleMouseDown = (event: MouseEvent): void => {\n\t\tprops.on.onMouseDown?.(event);\n\t\tdispatch(KolEvent.mousedown);\n\t};\n\n\tconst handleFocus = (event: FocusEvent): void => {\n\t\tprops.on.onFocus?.(event);\n\t\tdispatch(KolEvent.focus);\n\t};\n\n\tconst handleBlur = (event: FocusEvent): void => {\n\t\tprops.on.onBlur?.(event);\n\t\tdispatch(KolEvent.blur);\n\t};\n\n\treturn {\n\t\ttype: 'button',\n\t\tdisabled: props.disabled,\n\t\tgetElement: () => ctaRef.el,\n\t\tgetFcProps: (tabIndex) => ({\n\t\t\t...props,\n\t\t\tariaDescriptionId,\n\t\t\thandleBlur,\n\t\t\thandleClick,\n\t\t\thandleFocus,\n\t\t\thandleMouseDown,\n\t\t\trefButton: ctaRef,\n\t\t\trefTooltip: tooltipBehavior.setTooltipElementRef,\n\t\t\ttabIndex: typeof item._tabIndex === 'number' ? props.tabIndex : tabIndex,\n\t\t}),\n\t\trefWrapper: (element) => {\n\t\t\twrapper = element;\n\t\t},\n\t\tsyncListeners: () => {\n\t\t\tif (ctaRef.el) {\n\t\t\t\ttooltipBehavior.syncListeners(undefined, ctaRef.el, true);\n\t\t\t}\n\t\t},\n\t\tdestroy: () => tooltipBehavior.destroy(),\n\t};\n};\n\nconst createLinkItem = (item: Extract<ToolbarItemPropType, { type: 'link' }>, getFlagHost: () => HTMLElement | undefined): ToolbarLinkItem => {\n\tconst tooltipBehavior = new TooltipBehavior(BaseWebComponent.stateLess);\n\tconst ctaRef = createCtaRef<HTMLAnchorElement>();\n\tconst ariaDescriptionId = nonce();\n\tlet wrapper: HTMLElement | undefined;\n\n\tconst link: EmbeddedLinkProps = item;\n\tconst props = resolveLinkProps({\n\t\t...link,\n\t\t_inline: link._inline ?? false,\n\t\t_variant: link._variant ?? getFeatureFlag('buttonVariantDefault', getFlagHost()) ?? 'normal',\n\t});\n\n\t// A link without a label shows its href, and so does its tooltip.\n\ttooltipBehavior.componentWillLoad({ label: props.label.length > 0 ? props.label : props.href, align: props.tooltipAlign });\n\n\tconst handleAnchorClick = (event: Event): void => {\n\t\ttooltipBehavior.hideTooltip();\n\t\tif (props.disabled) {\n\t\t\tevent.preventDefault();\n\t\t\treturn;\n\t\t}\n\t\tif (typeof props.on.onClick === 'function') {\n\t\t\tsetEventTarget(event, ctaRef.el);\n\t\t\tprops.on.onClick(event, props.href);\n\t\t}\n\t\tif (wrapper) {\n\t\t\tdispatchDomEvent(wrapper, KolEvent.click, props.href);\n\t\t}\n\t};\n\n\treturn {\n\t\ttype: 'link',\n\t\tdisabled: props.disabled,\n\t\tgetElement: () => ctaRef.el,\n\t\tgetFcProps: (tabIndex, location) => ({\n\t\t\t...props,\n\t\t\tariaCurrent: location !== '' && location === props.href ? props.ariaCurrentValue : '',\n\t\t\tariaDescriptionId,\n\t\t\texpertSlot: item._label === '',\n\t\t\thandleAnchorClick,\n\t\t\trefAnchor: ctaRef,\n\t\t\trefTooltip: tooltipBehavior.setTooltipElementRef,\n\t\t\ttabIndex: typeof item._tabIndex === 'number' ? props.tabIndex : tabIndex,\n\t\t}),\n\t\trefWrapper: (element) => {\n\t\t\twrapper = element;\n\t\t},\n\t\tsyncListeners: () => {\n\t\t\tif (ctaRef.el) {\n\t\t\t\ttooltipBehavior.syncListeners(undefined, ctaRef.el, true);\n\t\t\t}\n\t\t},\n\t\tdestroy: () => tooltipBehavior.destroy(),\n\t};\n};\n\nconst createHRItem = (): ToolbarHRItem => {\n\tconst ctaRef = createCtaRef<HTMLHRElement>();\n\n\treturn {\n\t\ttype: 'hr',\n\t\tdisabled: true,\n\t\tgetElement: () => ctaRef.el,\n\t\trefWrapper: () => {},\n\t\tsyncListeners: () => {},\n\t\tdestroy: () => {},\n\t};\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar-items.js","sourceRoot":"","sources":["../../../src/schema/props/toolbar-items.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAoB/F,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,SAAoC,EAAE,KAA4B,EAAQ,EAAE;IAChH,yBAAyB,CAAC,KAAK,EAAE,GAAG,EAAE;QACrC,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE;YAC/B,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,CAAC;gBAClC,KAAK,GAAG,EAAE,CAAC;YACZ,CAAC;YACD,IAAI,CAAC;gBACJ,KAAK,GAAG,SAAS,CAAwB,KAAK,CAAC,CAAC;YACjD,CAAC;YAAC,WAAM,CAAC;YAET,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,KAA0B,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC;gBACtH,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import type { Generic } from 'adopted-style-sheets';\n\nimport type { InternalButtonProps, LinkProps } from '../../schema';\nimport { emptyStringByArrayHandler, objectObjectHandler, parseJson, setState } from '../utils';\n\n/* types */\nexport type ToolbarItemPropType =\n\t| ({\n\t\t\ttype: 'button';\n\t } & InternalButtonProps)\n\t| ({\n\t\t\ttype: 'link';\n\t } & LinkProps);\nexport type ToolbarItemsPropType = ToolbarItemPropType[];\n\n/**\n * Defines the primary toolbar items.\n */\nexport type PropToolbarItems = {\n\titems: ToolbarItemsPropType;\n};\n\n/* validator */\nexport const validateToolbarItems = (component: Generic.Element.Component, value?: ToolbarItemsPropType): void => {\n\temptyStringByArrayHandler(value, () => {\n\t\tobjectObjectHandler(value, () => {\n\t\t\tif (typeof value === 'undefined') {\n\t\t\t\tvalue = [];\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tvalue = parseJson<ToolbarItemPropType[]>(value);\n\t\t\t} catch {\n\t\t\t\t// value keeps the original items\n\t\t\t}\n\t\t\tif (Array.isArray(value) && value.every((items: ToolbarItemPropType) => typeof items === 'object' && items !== null)) {\n\t\t\t\tsetState(component, '_items', value);\n\t\t\t}\n\t\t});\n\t});\n};\n"]}
1
+ {"version":3,"file":"toolbar-items.js","sourceRoot":"","sources":["../../../src/schema/props/toolbar-items.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAuB/F,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,SAAoC,EAAE,KAA4B,EAAQ,EAAE;IAChH,yBAAyB,CAAC,KAAK,EAAE,GAAG,EAAE;QACrC,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE;YAC/B,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,CAAC;gBAClC,KAAK,GAAG,EAAE,CAAC;YACZ,CAAC;YACD,IAAI,CAAC;gBACJ,KAAK,GAAG,SAAS,CAAwB,KAAK,CAAC,CAAC;YACjD,CAAC;YAAC,WAAM,CAAC;YAET,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,KAA0B,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC;gBACtH,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import type { Generic } from 'adopted-style-sheets';\n\nimport type { InternalButtonProps, LinkProps } from '../../schema';\nimport { emptyStringByArrayHandler, objectObjectHandler, parseJson, setState } from '../utils';\n\n/* types */\nexport type ToolbarItemPropType =\n\t| ({\n\t\t\ttype: 'button';\n\t } & InternalButtonProps)\n\t| ({\n\t\t\ttype: 'link';\n\t } & LinkProps)\n\t| {\n\t\t\ttype: 'hr';\n\t };\nexport type ToolbarItemsPropType = ToolbarItemPropType[];\n\n/**\n * Defines the primary toolbar items.\n */\nexport type PropToolbarItems = {\n\titems: ToolbarItemsPropType;\n};\n\n/* validator */\nexport const validateToolbarItems = (component: Generic.Element.Component, value?: ToolbarItemsPropType): void => {\n\temptyStringByArrayHandler(value, () => {\n\t\tobjectObjectHandler(value, () => {\n\t\t\tif (typeof value === 'undefined') {\n\t\t\t\tvalue = [];\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tvalue = parseJson<ToolbarItemPropType[]>(value);\n\t\t\t} catch {\n\t\t\t\t// value keeps the original items\n\t\t\t}\n\t\t\tif (Array.isArray(value) && value.every((items: ToolbarItemPropType) => typeof items === 'object' && items !== null)) {\n\t\t\t\tsetState(component, '_items', value);\n\t\t\t}\n\t\t});\n\t});\n};\n"]}
@@ -27,18 +27,10 @@ export const calcColorContrast = (baseColor, contrastColor, ratio, dir = 1) => {
27
27
  return calcColorContrast(baseColor, color, ratio, dir);
28
28
  }
29
29
  };
30
- const cache = new Map();
31
- export const getColorContrast = (baseColor, contrastColor, ratio, dir = 1) => {
32
- if (cache.has(baseColor)) {
33
- return cache.get(baseColor);
34
- }
35
- const color = calcColorContrast(baseColor, contrastColor, ratio, dir);
36
- cache.set(baseColor, color);
37
- return color;
38
- };
30
+ export const getColorContrast = (baseColor, contrastColor, ratio, dir = 1) => calcColorContrast(baseColor, contrastColor, ratio, dir);
39
31
  const chooseColorContrast = (baseColor, contrastColor, ratio) => {
40
32
  const dir = getContrastYIQ(baseColor[0], baseColor[1], baseColor[2]);
41
- const suggested = getColorContrast(baseColor, contrastColor, ratio, dir);
33
+ const suggested = calcColorContrast(baseColor, contrastColor, ratio, dir);
42
34
  if (suggested.contrast >= ratio) {
43
35
  return suggested;
44
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"contrast.js","sourceRoot":"","sources":["../../../src/schema/utils/contrast.ts"],"names":[],"mappings":"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","sourcesContent":["import type { RGB } from 'color-convert';\nimport { hex } from 'wcag-contrast';\n\nimport rgba from 'color-rgba';\nimport rgbaConvert from 'rgba-convert';\n\ntype RGBA = [number, number, number, number];\n\n// const calcColor = (color: RGBA, diff: number): RGBA => [\n// Math.max(Math.min(Math.round(color[0] + (color[0] / 100 + 1) * diff), 255), 0),\n// Math.max(Math.min(Math.round(color[1] + (color[1] / 100 + 1) * diff), 255), 0),\n// Math.max(Math.min(Math.round(color[2] + (color[2] / 100 + 1) * diff), 255), 0),\n// color[3],\n// ];\n\n// const relativeLuminanceFormel = (c: number): number => {\n// if (c <= 0.03928) {\n// return c / 12.92;\n// } else {\n// return ((c + 0.055) / 1.055) ** 2.4;\n// }\n// };\n// // https://www.w3.org/TR/WCAG20/#contrast-ratiodef\n// const relativeLuminance = (r: number, g: number, b: number): number => {\n// return (\n// 0.2126 * relativeLuminanceFormel(r) + 0.7152 * relativeLuminanceFormel(g) + 0.0722 * relativeLuminanceFormel(b)\n// );\n// };\n\n// https://css-tricks.com/snippets/javascript/random-hex-color/\n// const randomColor = () => Math.floor(Math.random() * 16777215).toString(16);\n\n// https://24ways.org/2010/calculating-color-contrast/\nexport const getContrastYIQ = (r: number, g: number, b: number): number => {\n\tconst yiq = (r * 299 + g * 587 + b * 114) / 1000;\n\treturn yiq >= 128 ? -1 : 1;\n};\n\ntype ColorPair<T> = {\n\tbackground: T;\n\tforeground: T;\n};\n\nexport type ColorContrast<T> = ColorPair<T> & {\n\tcontrast: number;\n};\n\nexport const calcColorContrast = (baseColor: RGB, contrastColor: RGB, ratio: number, dir = 1): ColorContrast<RGB> => {\n\tconst color: RGB = [\n\t\tMath.max(Math.min(Math.round(contrastColor[0] + dir * Math.max(1, contrastColor[0] / 100)), 255), 0),\n\t\tMath.max(Math.min(Math.round(contrastColor[1] + dir * Math.max(1, contrastColor[1] / 100)), 255), 0),\n\t\tMath.max(Math.min(Math.round(contrastColor[2] + dir * Math.max(1, contrastColor[2] / 100)), 255), 0),\n\t];\n\tconst contrast = hex(rgbaConvert.hex(`rgba(${baseColor.join(',')},1)`), rgbaConvert.hex(`rgba(${color.join(',')},1)`));\n\tconst summe = color[0] + color[1] + color[2];\n\tif (summe === 0 || summe === 765 || contrast > ratio) {\n\t\treturn {\n\t\t\tbackground: baseColor,\n\t\t\tforeground: color,\n\t\t\tcontrast,\n\t\t};\n\t} else {\n\t\treturn calcColorContrast(baseColor, color, ratio, dir);\n\t}\n};\n\nconst cache: Map<unknown, ColorContrast<RGB>> = new Map();\n\nexport const getColorContrast = (baseColor: RGB, contrastColor: RGB, ratio: number, dir = 1): ColorContrast<RGB> => {\n\tif (cache.has(baseColor)) {\n\t\treturn cache.get(baseColor) as ColorContrast<RGB>;\n\t}\n\tconst color = calcColorContrast(baseColor, contrastColor, ratio, dir);\n\tcache.set(baseColor, color);\n\treturn color;\n};\n\n/**\n * Adjusts the foreground in the direction the YIQ brightness of the background suggests. YIQ is only\n * an estimate of the WCAG contrast ratio: for medium bright backgrounds such as `#00aa00` it suggests\n * a light foreground, although even white stays below the ratio there. If the suggested direction does\n * not reach the ratio, the opposite direction is tried and the foreground with the higher WCAG contrast\n * ratio wins, which is black or white at the latest.\n */\nconst chooseColorContrast = (baseColor: RGB, contrastColor: RGB, ratio: number): ColorContrast<RGB> => {\n\tconst dir = getContrastYIQ(baseColor[0], baseColor[1], baseColor[2]);\n\tconst suggested = getColorContrast(baseColor, contrastColor, ratio, dir);\n\tif (suggested.contrast >= ratio) {\n\t\treturn suggested;\n\t}\n\t// Bypasses the cache of `getColorContrast`, which ignores the direction.\n\tconst opposite = calcColorContrast(baseColor, contrastColor, ratio, -dir);\n\treturn opposite.contrast > suggested.contrast ? opposite : suggested;\n};\n\nexport const createContrastColorPair = (color: string | ColorPair<string>, contrastRatio = 7): ColorContrast<string> => {\n\tlet baseColor: RGBA = [0, 0, 0, 1];\n\tlet contrastColor: RGBA = [255, 255, 255, 1];\n\tif (typeof color === 'string') {\n\t\tbaseColor = rgba(color);\n\t\tcontrastColor = baseColor;\n\t} else if (typeof color === 'object' && color !== null && typeof color.background === 'string' && typeof color.foreground === 'string') {\n\t\tbaseColor = rgba(color.background);\n\t\tif (typeof color.foreground === 'string') {\n\t\t\tcontrastColor = rgba(color.foreground);\n\t\t} else {\n\t\t\tcontrastColor = baseColor;\n\t\t}\n\t}\n\tconst colorContrast = chooseColorContrast([baseColor[0], baseColor[1], baseColor[2]], [contrastColor[0], contrastColor[1], contrastColor[2]], contrastRatio);\n\tcontrastColor = [...colorContrast.foreground, 1];\n\n\treturn {\n\t\tbackground: rgbaConvert.hex(`rgba(${baseColor.join(',')})`),\n\t\tforeground: rgbaConvert.hex(`rgba(${contrastColor.join(',')})`),\n\t\tcontrast: colorContrast.contrast,\n\t};\n};\n"]}
1
+ {"version":3,"file":"contrast.js","sourceRoot":"","sources":["../../../src/schema/utils/contrast.ts"],"names":[],"mappings":"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","sourcesContent":["import type { RGB } from 'color-convert';\nimport { hex } from 'wcag-contrast';\n\nimport rgba from 'color-rgba';\nimport rgbaConvert from 'rgba-convert';\n\ntype RGBA = [number, number, number, number];\n\n// const calcColor = (color: RGBA, diff: number): RGBA => [\n// Math.max(Math.min(Math.round(color[0] + (color[0] / 100 + 1) * diff), 255), 0),\n// Math.max(Math.min(Math.round(color[1] + (color[1] / 100 + 1) * diff), 255), 0),\n// Math.max(Math.min(Math.round(color[2] + (color[2] / 100 + 1) * diff), 255), 0),\n// color[3],\n// ];\n\n// const relativeLuminanceFormel = (c: number): number => {\n// if (c <= 0.03928) {\n// return c / 12.92;\n// } else {\n// return ((c + 0.055) / 1.055) ** 2.4;\n// }\n// };\n// // https://www.w3.org/TR/WCAG20/#contrast-ratiodef\n// const relativeLuminance = (r: number, g: number, b: number): number => {\n// return (\n// 0.2126 * relativeLuminanceFormel(r) + 0.7152 * relativeLuminanceFormel(g) + 0.0722 * relativeLuminanceFormel(b)\n// );\n// };\n\n// https://css-tricks.com/snippets/javascript/random-hex-color/\n// const randomColor = () => Math.floor(Math.random() * 16777215).toString(16);\n\n// https://24ways.org/2010/calculating-color-contrast/\nexport const getContrastYIQ = (r: number, g: number, b: number): number => {\n\tconst yiq = (r * 299 + g * 587 + b * 114) / 1000;\n\treturn yiq >= 128 ? -1 : 1;\n};\n\ntype ColorPair<T> = {\n\tbackground: T;\n\tforeground: T;\n};\n\nexport type ColorContrast<T> = ColorPair<T> & {\n\tcontrast: number;\n};\n\nexport const calcColorContrast = (baseColor: RGB, contrastColor: RGB, ratio: number, dir = 1): ColorContrast<RGB> => {\n\tconst color: RGB = [\n\t\tMath.max(Math.min(Math.round(contrastColor[0] + dir * Math.max(1, contrastColor[0] / 100)), 255), 0),\n\t\tMath.max(Math.min(Math.round(contrastColor[1] + dir * Math.max(1, contrastColor[1] / 100)), 255), 0),\n\t\tMath.max(Math.min(Math.round(contrastColor[2] + dir * Math.max(1, contrastColor[2] / 100)), 255), 0),\n\t];\n\tconst contrast = hex(rgbaConvert.hex(`rgba(${baseColor.join(',')},1)`), rgbaConvert.hex(`rgba(${color.join(',')},1)`));\n\tconst summe = color[0] + color[1] + color[2];\n\tif (summe === 0 || summe === 765 || contrast > ratio) {\n\t\treturn {\n\t\t\tbackground: baseColor,\n\t\t\tforeground: color,\n\t\t\tcontrast,\n\t\t};\n\t} else {\n\t\treturn calcColorContrast(baseColor, color, ratio, dir);\n\t}\n};\n\nexport const getColorContrast = (baseColor: RGB, contrastColor: RGB, ratio: number, dir = 1): ColorContrast<RGB> =>\n\tcalcColorContrast(baseColor, contrastColor, ratio, dir);\n\n/**\n * Adjusts the foreground in the direction the YIQ brightness of the background suggests. YIQ is only\n * an estimate of the WCAG contrast ratio: for medium bright backgrounds such as `#00aa00` it suggests\n * a light foreground, although even white stays below the ratio there. If the suggested direction does\n * not reach the ratio, the opposite direction is tried and the foreground with the higher WCAG contrast\n * ratio wins, which is black or white at the latest.\n */\nconst chooseColorContrast = (baseColor: RGB, contrastColor: RGB, ratio: number): ColorContrast<RGB> => {\n\tconst dir = getContrastYIQ(baseColor[0], baseColor[1], baseColor[2]);\n\tconst suggested = calcColorContrast(baseColor, contrastColor, ratio, dir);\n\tif (suggested.contrast >= ratio) {\n\t\treturn suggested;\n\t}\n\tconst opposite = calcColorContrast(baseColor, contrastColor, ratio, -dir);\n\treturn opposite.contrast > suggested.contrast ? opposite : suggested;\n};\n\nexport const createContrastColorPair = (color: string | ColorPair<string>, contrastRatio = 7): ColorContrast<string> => {\n\tlet baseColor: RGBA = [0, 0, 0, 1];\n\tlet contrastColor: RGBA = [255, 255, 255, 1];\n\tif (typeof color === 'string') {\n\t\tbaseColor = rgba(color);\n\t\tcontrastColor = baseColor;\n\t} else if (typeof color === 'object' && color !== null && typeof color.background === 'string' && typeof color.foreground === 'string') {\n\t\tbaseColor = rgba(color.background);\n\t\tif (typeof color.foreground === 'string') {\n\t\t\tcontrastColor = rgba(color.foreground);\n\t\t} else {\n\t\t\tcontrastColor = baseColor;\n\t\t}\n\t}\n\tconst colorContrast = chooseColorContrast([baseColor[0], baseColor[1], baseColor[2]], [contrastColor[0], contrastColor[1], contrastColor[2]], contrastRatio);\n\tcontrastColor = [...colorContrast.foreground, 1];\n\n\treturn {\n\t\tbackground: rgbaConvert.hex(`rgba(${baseColor.join(',')})`),\n\t\tforeground: rgbaConvert.hex(`rgba(${contrastColor.join(',')})`),\n\t\tcontrast: colorContrast.contrast,\n\t};\n};\n"]}
@@ -79,13 +79,18 @@ const SelectOptionListFC = ({ preKey, options, disabled, value: selectedValue, O
79
79
  return null;
80
80
  }
81
81
  return (h(Fragment, null, options.map((option, index) => {
82
+ var _a;
82
83
  const key = [preKey, `-${index}`].join('');
83
84
  if ('options' in option) {
85
+ if (!((_a = option.options) === null || _a === void 0 ? void 0 : _a.length)) {
86
+ return null;
87
+ }
88
+ const isOptgroupDisabled = Boolean(disabled || option.disabled);
84
89
  const { label } = option, other = __rest(option, ["label"]);
85
- return (h("optgroup", Object.assign({ class: selectBem('optgroup', { disabled: Boolean(disabled) }), key: key }, OptionGroupProps, { label: label === null || label === void 0 ? void 0 : label.toString(), disabled: disabled }), h(SelectOptionListFC, Object.assign({ OptionGroupProps: OptionGroupProps, OptionProps: OptionProps, value: selectedValue, preKey: key }, other))));
90
+ return (h("optgroup", Object.assign({ class: selectBem('optgroup', { disabled: isOptgroupDisabled }), key: key }, OptionGroupProps, { label: label === null || label === void 0 ? void 0 : label.toString(), disabled: isOptgroupDisabled }), h(SelectOptionListFC, Object.assign({ OptionGroupProps: OptionGroupProps, OptionProps: OptionProps, value: selectedValue, preKey: key }, other, { disabled: isOptgroupDisabled }))));
86
91
  }
87
92
  if ('value' in option) {
88
- return h(SelectOptionFC, Object.assign({ key: key }, OptionProps, { index: key, selectedValue: selectedValue }, option));
93
+ return (h(SelectOptionFC, Object.assign({ key: key }, OptionProps, { index: key, selectedValue: selectedValue }, option, { disabled: Boolean(disabled || option.disabled) })));
89
94
  }
90
95
  return null;
91
96
  })));
@@ -93,7 +98,7 @@ const SelectOptionListFC = ({ preKey, options, disabled, value: selectedValue, O
93
98
  const SelectFC = (props) => {
94
99
  const { class: classNames, msg, touched, disabled, required, options, value, OptionProps, OptionGroupProps, ariaDescribedBy, hideLabel, label } = props, other = __rest(props, ["class", "msg", "touched", "disabled", "required", "options", "value", "OptionProps", "OptionGroupProps", "ariaDescribedBy", "hideLabel", "label"]);
95
100
  const selectProps = Object.assign(Object.assign({ class: clsx(selectBem(Object.assign({ disabled: Boolean(disabled), required: Boolean(required), touched: Boolean(touched) }, (isMsgDefinedAndInputTouched(msg, touched) ? { [getMsgType(msg)]: true } : {}))), classNames), required: required, disabled: disabled }, getDefaultInputProps({ ariaDescribedBy, hideLabel, label })), other);
96
- return (h("select", Object.assign({}, selectProps), h(SelectOptionListFC, { options: options, value: value, OptionGroupProps: OptionGroupProps, OptionProps: OptionProps })));
101
+ return (h("select", Object.assign({}, selectProps), h(SelectOptionListFC, { OptionGroupProps: OptionGroupProps, OptionProps: OptionProps, disabled: disabled, options: options, value: value })));
97
102
  };
98
103
 
99
104
  const assertSelectValueMatchesMultiplicity = (value, multiple, source) => {
@@ -107,7 +112,9 @@ const assertSelectValueMatchesMultiplicity = (value, multiple, source) => {
107
112
  throw new Error(`↑ The schema for the property (_value) is not valid for single mode. Expected a single value. The value will not be changed. (${source} = ${JSON.stringify(value)})`);
108
113
  }
109
114
  };
110
- const flattenSelectOptions = (options) => options.flatMap((entry) => ('options' in entry && Array.isArray(entry.options) ? flattenSelectOptions(entry.options) : [entry]));
115
+ const flattenSelectOptions = (options, groupDisabled = false) => options.flatMap((entry) => 'options' in entry && Array.isArray(entry.options)
116
+ ? flattenSelectOptions(entry.options, Boolean(groupDisabled || entry.disabled))
117
+ : [Object.assign(Object.assign({}, entry), { disabled: Boolean(groupDisabled || entry.disabled) })]);
111
118
  const normalizeSelectValue = (value, options, multiple) => {
112
119
  if (options.length === 0) {
113
120
  return value;