@public-ui/sample-react 3.0.8-rc.1 → 3.0.8-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. package/dist/assets/Alert-DtvOOMUX-CovMa_Lh.js +2 -0
  2. package/dist/assets/{Alert-B3jx2jlL-CpK4XYwv.js.map → Alert-DtvOOMUX-CovMa_Lh.js.map} +1 -1
  3. package/dist/assets/Collapsible-BF3IrE6t--Krgw4CV.js +2 -0
  4. package/dist/assets/{Collapsible-DOnIFY33-C7y7f3JI.js.map → Collapsible-BF3IrE6t--Krgw4CV.js.map} +1 -1
  5. package/dist/assets/CustomSuggestionsOptionsGroup-BXcv2wXg-nrYjAFjx.js +2 -0
  6. package/dist/assets/{CustomSuggestionsOptionsGroup-BiywiWxx-DQ9nE4it.js.map → CustomSuggestionsOptionsGroup-BXcv2wXg-nrYjAFjx.js.map} +1 -1
  7. package/dist/assets/FieldControlStateWrapper-vSHoKkZu-W4kj3x-i.js +2 -0
  8. package/dist/assets/{FieldControlStateWrapper-oMcmUdOF-B8QKONc0.js.map → FieldControlStateWrapper-vSHoKkZu-W4kj3x-i.js.map} +1 -1
  9. package/dist/assets/FormFieldStateWrapper--mfN3zxB-C_2VXMaG.js +2 -0
  10. package/dist/assets/{FormFieldStateWrapper-BBrHIwy9-BzgygwAM.js.map → FormFieldStateWrapper--mfN3zxB-C_2VXMaG.js.map} +1 -1
  11. package/dist/assets/Heading-CtNjSZvy-Cd_kymbr.js +2 -0
  12. package/dist/assets/{Heading-DqUSmJEO-DIKZMp_1.js.map → Heading-CtNjSZvy-Cd_kymbr.js.map} +1 -1
  13. package/dist/assets/Icon-C0YAvZYM-Dgftt-Vc.js +2 -0
  14. package/dist/assets/Icon-C0YAvZYM-Dgftt-Vc.js.map +1 -0
  15. package/dist/assets/Input-uDwRZfTu-Be_IJXxI.js +2 -0
  16. package/dist/assets/{Input-D-UExd4D-B4jTCA4a.js.map → Input-uDwRZfTu-Be_IJXxI.js.map} +1 -1
  17. package/dist/assets/InputStateWrapper-DPKOPHLb-BFSm1R2o.js +2 -0
  18. package/dist/assets/{InputStateWrapper-WDItQP2r-V63Dodsk.js.map → InputStateWrapper-DPKOPHLb-BFSm1R2o.js.map} +1 -1
  19. package/dist/assets/InternalUnderlinedBadgeText-B_K9YhEU-CYt38jof.js +2 -0
  20. package/dist/assets/{InternalUnderlinedBadgeText-CodJXcQG-DfoTu4tD.js.map → InternalUnderlinedBadgeText-B_K9YhEU-CYt38jof.js.map} +1 -1
  21. package/dist/assets/Span-BDnbWXOy-2s83Dl-V.js +2 -0
  22. package/dist/assets/{Span-BUH9xZLf-DN5AV_nd.js.map → Span-BDnbWXOy-2s83Dl-V.js.map} +1 -1
  23. package/dist/assets/access-and-short-key-B37XLwy2-c3taQzuu.js +2 -0
  24. package/dist/assets/{access-and-short-key-B37XLwy2-BYe6swmD.js.map → access-and-short-key-B37XLwy2-c3taQzuu.js.map} +1 -1
  25. package/dist/assets/align-D-ifSKu8-CJQ42AdT.js +2 -0
  26. package/dist/assets/{align-D-ifSKu8-CvAiOM-B.js.map → align-D-ifSKu8-CJQ42AdT.js.map} +1 -1
  27. package/dist/assets/align-floating-elements-BkpeqvtE-CQYSjgKL.js +2 -0
  28. package/dist/assets/{align-floating-elements-BkpeqvtE-BcmMSXRr.js.map → align-floating-elements-BkpeqvtE-CQYSjgKL.js.map} +1 -1
  29. package/dist/assets/associated.controller-ByY2WiIp-5GOW71wF.js +2 -0
  30. package/dist/assets/{associated.controller-ByY2WiIp-DV7ybZcT.js.map → associated.controller-ByY2WiIp-5GOW71wF.js.map} +1 -1
  31. package/dist/assets/auto-complete-mCkUnxg2-DLCYBKnL.js +2 -0
  32. package/dist/assets/{auto-complete-mCkUnxg2-BDdjwEw7.js.map → auto-complete-mCkUnxg2-DLCYBKnL.js.map} +1 -1
  33. package/dist/assets/clsx-eK3rPvPS-B-dksMZM.js +2 -0
  34. package/dist/assets/clsx-eK3rPvPS-B-dksMZM.js.map +1 -0
  35. package/dist/assets/color-BOIEtqEM-DWKcWfJl.js +2 -0
  36. package/dist/assets/{color-BOIEtqEM-BTQ7xdfG.js.map → color-BOIEtqEM-DWKcWfJl.js.map} +1 -1
  37. package/dist/assets/controller-C5Ill7ej-CnUGo3aF.js +2 -0
  38. package/dist/assets/{controller-C5Ill7ej-DzyV3_0t.js.map → controller-C5Ill7ej-CnUGo3aF.js.map} +1 -1
  39. package/dist/assets/controller-CzA8VVx0-2ueNJ_uw.js +2 -0
  40. package/dist/assets/{controller-CzLzXDtQ-Ckhaz-yw.js.map → controller-CzA8VVx0-2ueNJ_uw.js.map} +1 -1
  41. package/dist/assets/controller-DZi-VgTc-CV9naSmG.js +2 -0
  42. package/dist/assets/{controller-BPnEmeBr-DUhUWQOB.js.map → controller-DZi-VgTc-CV9naSmG.js.map} +1 -1
  43. package/dist/assets/controller-GoVirgjr-BzMwTNAD.js +2 -0
  44. package/dist/assets/{controller-CBNM6BpO-CC9nU4-9.js.map → controller-GoVirgjr-BzMwTNAD.js.map} +1 -1
  45. package/dist/assets/controller-icon-Os52h8zb-Dk0j3A4m.js +2 -0
  46. package/dist/assets/{controller-icon-DNLRSXZr-CPxyQcqV.js.map → controller-icon-Os52h8zb-Dk0j3A4m.js.map} +1 -1
  47. package/dist/assets/custom-class-nuoQ9Aml-K3bnYTDA.js +2 -0
  48. package/dist/assets/{custom-class-nuoQ9Aml-DnnJ0Vrm.js.map → custom-class-nuoQ9Aml-K3bnYTDA.js.map} +1 -1
  49. package/dist/assets/{dev.utils-BB49mRnl-Coh5w7FN.js → dev.utils-CMwuN6qh-DL0LefBQ.js} +2 -4
  50. package/dist/assets/{dev.utils-BB49mRnl-Coh5w7FN.js.map → dev.utils-CMwuN6qh-DL0LefBQ.js.map} +1 -1
  51. package/dist/assets/devtools-B5bExzS0-DfTK3q75.js +14 -0
  52. package/dist/assets/{devtools-6yxauOZx-DX8inEpv.js.map → devtools-B5bExzS0-DfTK3q75.js.map} +1 -1
  53. package/dist/assets/disabled-BhpAFgSp-1QomtQQT.js +2 -0
  54. package/dist/assets/{disabled-BhpAFgSp-yj0pxqYS.js.map → disabled-BhpAFgSp-1QomtQQT.js.map} +1 -1
  55. package/dist/assets/has-closer-CQzjaTkv-Vg2LHGV8.js +2 -0
  56. package/dist/assets/{has-closer-CQzjaTkv-C3fdmgwq.js.map → has-closer-CQzjaTkv-Vg2LHGV8.js.map} +1 -1
  57. package/dist/assets/hide-label-B9FhGrWP-C4JcD4zy.js +2 -0
  58. package/dist/assets/{hide-label-B9FhGrWP-BJriMB-z.js.map → hide-label-B9FhGrWP-C4JcD4zy.js.map} +1 -1
  59. package/dist/assets/href-rwDd36rS-DC3PRDZI.js +2 -0
  60. package/dist/assets/{href-rwDd36rS-6LXs-tS-.js.map → href-rwDd36rS-DC3PRDZI.js.map} +1 -1
  61. package/dist/assets/i18n-C5ifExT3-DejE9D8m.js +2 -0
  62. package/dist/assets/{i18n-C5ifExT3-Bgs4IVwr.js.map → i18n-C5ifExT3-DejE9D8m.js.map} +1 -1
  63. package/dist/assets/icons-B5i9zwjJ-LSzLp_HU.js +2 -0
  64. package/dist/assets/{icons-B5i9zwjJ-Cl1klTta.js.map → icons-B5i9zwjJ-LSzLp_HU.js.map} +1 -1
  65. package/dist/assets/image-source-BfBEJ0rX-BaaOn3Ip.js +2 -0
  66. package/dist/assets/{image-source-BfBEJ0rX-ZCtqKxfP.js.map → image-source-BfBEJ0rX-BaaOn3Ip.js.map} +1 -1
  67. package/dist/assets/{index-eI_RdheT.js → index-DqTuzsPS.js} +195 -280
  68. package/dist/assets/index-DqTuzsPS.js.map +1 -0
  69. package/dist/assets/isObject-DvSELytj-DhzEQer1.js +2 -0
  70. package/dist/assets/{isObject-DvSELytj-B0RigBxT.js.map → isObject-DvSELytj-DhzEQer1.js.map} +1 -1
  71. package/dist/assets/keyboard-D6PoWr38-BGYQJqo4.js +2 -0
  72. package/dist/assets/{keyboard-D6PoWr38-Bn_Qh8Bq.js.map → keyboard-D6PoWr38-BGYQJqo4.js.map} +1 -1
  73. package/dist/assets/{kol-abbr.entry-BXGdym2u.js → kol-abbr.entry-BD7R-GfV.js} +2 -4
  74. package/dist/assets/{kol-abbr.entry-BXGdym2u.js.map → kol-abbr.entry-BD7R-GfV.js.map} +1 -1
  75. package/dist/assets/{kol-accordion.entry-C2fyzA5x.js → kol-accordion.entry-BORUJAK2.js} +22 -19
  76. package/dist/assets/kol-accordion.entry-BORUJAK2.js.map +1 -0
  77. package/dist/assets/kol-alert-wc.entry-Jgh30xYd.js +2 -0
  78. package/dist/assets/{kol-alert-wc.entry-CVSKyNvN.js.map → kol-alert-wc.entry-Jgh30xYd.js.map} +1 -1
  79. package/dist/assets/{kol-alert.entry-tGSQAb_G.js → kol-alert.entry--5F6dN3P.js} +2 -4
  80. package/dist/assets/{kol-alert.entry-tGSQAb_G.js.map → kol-alert.entry--5F6dN3P.js.map} +1 -1
  81. package/dist/assets/kol-avatar-wc.entry-D7ybHS4u.js +2 -0
  82. package/dist/assets/{kol-avatar-wc.entry-kdfwoLDo.js.map → kol-avatar-wc.entry-D7ybHS4u.js.map} +1 -1
  83. package/dist/assets/{kol-avatar.entry-CICDuG1z.js → kol-avatar.entry-48Cq25al.js} +2 -4
  84. package/dist/assets/{kol-avatar.entry-CICDuG1z.js.map → kol-avatar.entry-48Cq25al.js.map} +1 -1
  85. package/dist/assets/{kol-badge.entry-Ixg7qkjb.js → kol-badge.entry-DqDvIjlU.js} +2 -4
  86. package/dist/assets/{kol-badge.entry-Ixg7qkjb.js.map → kol-badge.entry-DqDvIjlU.js.map} +1 -1
  87. package/dist/assets/{kol-breadcrumb.entry-CDt91QTM.js → kol-breadcrumb.entry-CWjz7VzU.js} +5 -7
  88. package/dist/assets/{kol-breadcrumb.entry-CDt91QTM.js.map → kol-breadcrumb.entry-CWjz7VzU.js.map} +1 -1
  89. package/dist/assets/{kol-button-link.entry-DkRSFtAa.js → kol-button-link.entry-1kf5diMC.js} +5 -7
  90. package/dist/assets/{kol-button-link.entry-DkRSFtAa.js.map → kol-button-link.entry-1kf5diMC.js.map} +1 -1
  91. package/dist/assets/kol-button-wc.entry-BYWpOM-V.js +2 -0
  92. package/dist/assets/kol-button-wc.entry-BYWpOM-V.js.map +1 -0
  93. package/dist/assets/{kol-button.entry-e9CnmeIX.js → kol-button.entry-39BYZV_x.js} +2 -4
  94. package/dist/assets/{kol-button.entry-e9CnmeIX.js.map → kol-button.entry-39BYZV_x.js.map} +1 -1
  95. package/dist/assets/kol-card-wc.entry-3CaS7qPl.js +2 -0
  96. package/dist/assets/{kol-card-wc.entry-C9CAN65K.js.map → kol-card-wc.entry-3CaS7qPl.js.map} +1 -1
  97. package/dist/assets/{kol-card.entry-GoVFQkQV.js → kol-card.entry-CeOIYWlM.js} +2 -4
  98. package/dist/assets/{kol-card.entry-GoVFQkQV.js.map → kol-card.entry-CeOIYWlM.js.map} +1 -1
  99. package/dist/assets/{kol-combobox.entry-dS2OMUOQ.js → kol-combobox.entry-CrHQnmF3.js} +2 -4
  100. package/dist/assets/{kol-combobox.entry-dS2OMUOQ.js.map → kol-combobox.entry-CrHQnmF3.js.map} +1 -1
  101. package/dist/assets/{kol-details.entry-DDxZwwkB.js → kol-details.entry-n1d-5uX-.js} +22 -19
  102. package/dist/assets/kol-details.entry-n1d-5uX-.js.map +1 -0
  103. package/dist/assets/{kol-drawer.entry-D22uOyvh.js → kol-drawer.entry-BsYxWoSP.js} +2 -4
  104. package/dist/assets/{kol-drawer.entry-D22uOyvh.js.map → kol-drawer.entry-BsYxWoSP.js.map} +1 -1
  105. package/dist/assets/{kol-form.entry-BuZzGEhw.js → kol-form.entry-EMOm70f5.js} +5 -7
  106. package/dist/assets/{kol-form.entry-BuZzGEhw.js.map → kol-form.entry-EMOm70f5.js.map} +1 -1
  107. package/dist/assets/{kol-heading.entry-sj3MaX_s.js → kol-heading.entry-BwZ3jmlq.js} +2 -4
  108. package/dist/assets/{kol-heading.entry-sj3MaX_s.js.map → kol-heading.entry-BwZ3jmlq.js.map} +1 -1
  109. package/dist/assets/{kol-icon.entry-jQCkrbaD.js → kol-icon.entry-DwafBQXz.js} +2 -4
  110. package/dist/assets/{kol-icon.entry-jQCkrbaD.js.map → kol-icon.entry-DwafBQXz.js.map} +1 -1
  111. package/dist/assets/{kol-image.entry-doEhTiMG.js → kol-image.entry-45WWVqbx.js} +2 -4
  112. package/dist/assets/{kol-image.entry-doEhTiMG.js.map → kol-image.entry-45WWVqbx.js.map} +1 -1
  113. package/dist/assets/{kol-input-checkbox.entry-Y1JBufAY.js → kol-input-checkbox.entry-DHbB6A1w.js} +2 -4
  114. package/dist/assets/{kol-input-checkbox.entry-Y1JBufAY.js.map → kol-input-checkbox.entry-DHbB6A1w.js.map} +1 -1
  115. package/dist/assets/{kol-input-color.entry-B72OUO18.js → kol-input-color.entry-Ca8HDgz1.js} +2 -4
  116. package/dist/assets/{kol-input-color.entry-B72OUO18.js.map → kol-input-color.entry-Ca8HDgz1.js.map} +1 -1
  117. package/dist/assets/{kol-input-date.entry-Dud9ibG4.js → kol-input-date.entry-BVfLG824.js} +2 -4
  118. package/dist/assets/{kol-input-date.entry-Dud9ibG4.js.map → kol-input-date.entry-BVfLG824.js.map} +1 -1
  119. package/dist/assets/{kol-input-email.entry-Cg16-JbU.js → kol-input-email.entry-BtDV1p_M.js} +2 -4
  120. package/dist/assets/{kol-input-email.entry-Cg16-JbU.js.map → kol-input-email.entry-BtDV1p_M.js.map} +1 -1
  121. package/dist/assets/{kol-input-file.entry-BsaenVFA.js → kol-input-file.entry-BRX7E0p8.js} +2 -4
  122. package/dist/assets/{kol-input-file.entry-BsaenVFA.js.map → kol-input-file.entry-BRX7E0p8.js.map} +1 -1
  123. package/dist/assets/{kol-input-number.entry-wVs1Iriw.js → kol-input-number.entry-CiGtkNEp.js} +2 -4
  124. package/dist/assets/{kol-input-number.entry-wVs1Iriw.js.map → kol-input-number.entry-CiGtkNEp.js.map} +1 -1
  125. package/dist/assets/{kol-input-password.entry-KbGjSbcz.js → kol-input-password.entry-WE5my0nN.js} +2 -4
  126. package/dist/assets/{kol-input-password.entry-KbGjSbcz.js.map → kol-input-password.entry-WE5my0nN.js.map} +1 -1
  127. package/dist/assets/{kol-input-radio.entry-BMEa_V-t.js → kol-input-radio.entry-BgRCs-DM.js} +2 -4
  128. package/dist/assets/{kol-input-radio.entry-BMEa_V-t.js.map → kol-input-radio.entry-BgRCs-DM.js.map} +1 -1
  129. package/dist/assets/{kol-input-range.entry-BVPQ1sGe.js → kol-input-range.entry-DW4ZilIW.js} +8 -10
  130. package/dist/assets/{kol-input-range.entry-BVPQ1sGe.js.map → kol-input-range.entry-DW4ZilIW.js.map} +1 -1
  131. package/dist/assets/{kol-input-text.entry-CX1fABJx.js → kol-input-text.entry-D7xJMvsa.js} +2 -4
  132. package/dist/assets/{kol-input-text.entry-CX1fABJx.js.map → kol-input-text.entry-D7xJMvsa.js.map} +1 -1
  133. package/dist/assets/{kol-kolibri.entry-fGqZCcLu.js → kol-kolibri.entry-BKeJqZXh.js} +2 -4
  134. package/dist/assets/{kol-kolibri.entry-fGqZCcLu.js.map → kol-kolibri.entry-BKeJqZXh.js.map} +1 -1
  135. package/dist/assets/{kol-link-button.entry-C45vYSWD.js → kol-link-button.entry-DKd9nOex.js} +2 -4
  136. package/dist/assets/{kol-link-button.entry-C45vYSWD.js.map → kol-link-button.entry-DKd9nOex.js.map} +1 -1
  137. package/dist/assets/kol-link-wc.entry-Bc3pEk2d.js +2 -0
  138. package/dist/assets/kol-link-wc.entry-Bc3pEk2d.js.map +1 -0
  139. package/dist/assets/{kol-link.entry-8uY8Q-03.js → kol-link.entry-CA-ztbq-.js} +5 -7
  140. package/dist/assets/{kol-link.entry-8uY8Q-03.js.map → kol-link.entry-CA-ztbq-.js.map} +1 -1
  141. package/dist/assets/{kol-modal.entry-CSqFk2st.js → kol-modal.entry-BGaHTW3v.js} +2 -4
  142. package/dist/assets/{kol-modal.entry-CSqFk2st.js.map → kol-modal.entry-BGaHTW3v.js.map} +1 -1
  143. package/dist/assets/{kol-nav.entry-0WLu000b.js → kol-nav.entry-DdwkLkqL.js} +2 -4
  144. package/dist/assets/{kol-nav.entry-0WLu000b.js.map → kol-nav.entry-DdwkLkqL.js.map} +1 -1
  145. package/dist/assets/kol-pagination-wc.entry-D4B2_ioG.js +2 -0
  146. package/dist/assets/{kol-pagination-wc.entry-CORQhAn3.js.map → kol-pagination-wc.entry-D4B2_ioG.js.map} +1 -1
  147. package/dist/assets/{kol-pagination.entry-BOqPOK-6.js → kol-pagination.entry--inYSDUw.js} +2 -4
  148. package/dist/assets/{kol-pagination.entry-BOqPOK-6.js.map → kol-pagination.entry--inYSDUw.js.map} +1 -1
  149. package/dist/assets/kol-popover-button-wc.entry-Dc0_d1TW.js +2 -0
  150. package/dist/assets/kol-popover-button-wc.entry-Dc0_d1TW.js.map +1 -0
  151. package/dist/assets/{kol-popover-button.entry-BHKt94om.js → kol-popover-button.entry-DRWZOdIM.js} +2 -4
  152. package/dist/assets/{kol-popover-button.entry-BHKt94om.js.map → kol-popover-button.entry-DRWZOdIM.js.map} +1 -1
  153. package/dist/assets/kol-popover-wc.entry-CeJX2ulC.js +2 -0
  154. package/dist/assets/kol-popover-wc.entry-CeJX2ulC.js.map +1 -0
  155. package/dist/assets/{kol-progress.entry-CKX3Wl53.js → kol-progress.entry-CzqPJvSk.js} +2 -4
  156. package/dist/assets/{kol-progress.entry-CKX3Wl53.js.map → kol-progress.entry-CzqPJvSk.js.map} +1 -1
  157. package/dist/assets/{kol-quote.entry-cYDQlLm8.js → kol-quote.entry-mhVUO3TU.js} +5 -7
  158. package/dist/assets/{kol-quote.entry-cYDQlLm8.js.map → kol-quote.entry-mhVUO3TU.js.map} +1 -1
  159. package/dist/assets/{kol-select.entry-D_fqI1Z4.js → kol-select.entry-7jac0lF0.js} +5 -5
  160. package/dist/assets/{kol-select.entry-D_fqI1Z4.js.map → kol-select.entry-7jac0lF0.js.map} +1 -1
  161. package/dist/assets/{kol-single-select.entry-B90IwfJq.js → kol-single-select.entry-CbGXwI84.js} +2 -4
  162. package/dist/assets/{kol-single-select.entry-B90IwfJq.js.map → kol-single-select.entry-CbGXwI84.js.map} +1 -1
  163. package/dist/assets/{kol-skip-nav.entry-CAJQR6s2.js → kol-skip-nav.entry-CE0uqc7Q.js} +2 -4
  164. package/dist/assets/{kol-skip-nav.entry-CAJQR6s2.js.map → kol-skip-nav.entry-CE0uqc7Q.js.map} +1 -1
  165. package/dist/assets/{kol-spin.entry-B7fLQZhB.js → kol-spin.entry-B2krNbvJ.js} +2 -4
  166. package/dist/assets/{kol-spin.entry-B7fLQZhB.js.map → kol-spin.entry-B2krNbvJ.js.map} +1 -1
  167. package/dist/assets/{kol-split-button.entry-DKsfV8AQ.js → kol-split-button.entry-B5kKgvVx.js} +2 -4
  168. package/dist/assets/{kol-split-button.entry-DKsfV8AQ.js.map → kol-split-button.entry-B5kKgvVx.js.map} +1 -1
  169. package/dist/assets/kol-table-settings-wc.entry-Ps1GI2k9.js +2 -0
  170. package/dist/assets/kol-table-settings-wc.entry-Ps1GI2k9.js.map +1 -0
  171. package/dist/assets/{kol-table-stateful.entry-B3qans91.js → kol-table-stateful.entry-CmF8BEie.js} +10 -12
  172. package/dist/assets/kol-table-stateful.entry-CmF8BEie.js.map +1 -0
  173. package/dist/assets/kol-table-stateless-wc.entry-Cd9t-rXc.js +2 -0
  174. package/dist/assets/kol-table-stateless-wc.entry-Cd9t-rXc.js.map +1 -0
  175. package/dist/assets/{kol-table-stateless.entry-DBshRF30.js → kol-table-stateless.entry-DXVLwE02.js} +9 -11
  176. package/dist/assets/{kol-table-stateless.entry-DBshRF30.js.map → kol-table-stateless.entry-DXVLwE02.js.map} +1 -1
  177. package/dist/assets/{kol-tabs.entry-B152mWmM.js → kol-tabs.entry-COCa1tB7.js} +2 -4
  178. package/dist/assets/{kol-tabs.entry-B152mWmM.js.map → kol-tabs.entry-COCa1tB7.js.map} +1 -1
  179. package/dist/assets/{kol-textarea.entry-IHBB0d0G.js → kol-textarea.entry-DbXdGu3F.js} +2 -4
  180. package/dist/assets/{kol-textarea.entry-IHBB0d0G.js.map → kol-textarea.entry-DbXdGu3F.js.map} +1 -1
  181. package/dist/assets/{kol-toast-container.entry-DYMMpfht.js → kol-toast-container.entry-fMPZf8jS.js} +2 -4
  182. package/dist/assets/{kol-toast-container.entry-DYMMpfht.js.map → kol-toast-container.entry-fMPZf8jS.js.map} +1 -1
  183. package/dist/assets/{kol-toolbar.entry-C-tuRWz4.js → kol-toolbar.entry-BNqnW-92.js} +2 -4
  184. package/dist/assets/{kol-toolbar.entry-C-tuRWz4.js.map → kol-toolbar.entry-BNqnW-92.js.map} +1 -1
  185. package/dist/assets/kol-tooltip-wc.entry-BmbOvjDF.js +2 -0
  186. package/dist/assets/kol-tooltip-wc.entry-BmbOvjDF.js.map +1 -0
  187. package/dist/assets/kol-tree-item-wc.entry-BarfoTHm.js +2 -0
  188. package/dist/assets/{kol-tree-item-wc.entry-DF1UVCR9.js.map → kol-tree-item-wc.entry-BarfoTHm.js.map} +1 -1
  189. package/dist/assets/{kol-tree-item.entry-CrtqSunZ.js → kol-tree-item.entry-C6wMC80I.js} +2 -4
  190. package/dist/assets/{kol-tree-item.entry-CrtqSunZ.js.map → kol-tree-item.entry-C6wMC80I.js.map} +1 -1
  191. package/dist/assets/kol-tree-wc.entry-Bh7EZQCX.js +2 -0
  192. package/dist/assets/{kol-tree-wc.entry-W78R5mQZ.js.map → kol-tree-wc.entry-Bh7EZQCX.js.map} +1 -1
  193. package/dist/assets/{kol-tree.entry-BQ54UK_P.js → kol-tree.entry-D2d8wJpf.js} +2 -4
  194. package/dist/assets/{kol-tree.entry-BQ54UK_P.js.map → kol-tree.entry-D2d8wJpf.js.map} +1 -1
  195. package/dist/assets/{kol-version.entry-CZSJ5tK4.js → kol-version.entry-C-wzfDgC.js} +2 -4
  196. package/dist/assets/{kol-version.entry-CZSJ5tK4.js.map → kol-version.entry-C-wzfDgC.js.map} +1 -1
  197. package/dist/assets/label-Dnmzb2S_-DqCV17mQ.js +2 -0
  198. package/dist/assets/{label-Dnmzb2S_-C6oOQMoX.js.map → label-Dnmzb2S_-DqCV17mQ.js.map} +1 -1
  199. package/dist/assets/link-variant-DQEKOyAU-DdDsv7f_.js +2 -0
  200. package/dist/assets/{link-variant-DQEKOyAU-CimbCc47.js.map → link-variant-DQEKOyAU-DdDsv7f_.js.map} +1 -1
  201. package/dist/assets/{markdown-BSkXjaSn-BUAa9WIw.js → markdown-BSkXjaSn-DblBpW_W.js} +9 -11
  202. package/dist/assets/{markdown-BSkXjaSn-BUAa9WIw.js.map → markdown-BSkXjaSn-DblBpW_W.js.map} +1 -1
  203. package/dist/assets/max-length-behavior-nTw1Zuyf-CTiqIczj.js +2 -0
  204. package/dist/assets/{max-length-behavior-nTw1Zuyf-bF2paNt-.js.map → max-length-behavior-nTw1Zuyf-CTiqIczj.js.map} +1 -1
  205. package/dist/assets/multiple-Cj3JQafH-BK6fXbXH.js +2 -0
  206. package/dist/assets/{multiple-Cj3JQafH-Czk0lM_M.js.map → multiple-Cj3JQafH-BK6fXbXH.js.map} +1 -1
  207. package/dist/assets/open-CbvHO4XG-Cla55BM0.js +2 -0
  208. package/dist/assets/{open-CbvHO4XG-DePuJaK7.js.map → open-CbvHO4XG-Cla55BM0.js.map} +1 -1
  209. package/dist/assets/orientation-eCMt8CD1-DqB5k4v6.js +2 -0
  210. package/dist/assets/{orientation-eCMt8CD1-Cxl5Veb6.js.map → orientation-eCMt8CD1-DqB5k4v6.js.map} +1 -1
  211. package/dist/assets/placeholder-BVhy3BzI-B5Ll7nX9.js +2 -0
  212. package/dist/assets/{placeholder-BVhy3BzI-Bat_cmDW.js.map → placeholder-BVhy3BzI-B5Ll7nX9.js.map} +1 -1
  213. package/dist/assets/read-only-BetTuumR-DBJOLTvM.js +2 -0
  214. package/dist/assets/{read-only-BetTuumR-DcIqbAM5.js.map → read-only-BetTuumR-DBJOLTvM.js.map} +1 -1
  215. package/dist/assets/required-CnTTpFCN-C7yWyBiF.js +2 -0
  216. package/dist/assets/{required-CnTTpFCN-BhidbL6i.js.map → required-CnTTpFCN-C7yWyBiF.js.map} +1 -1
  217. package/dist/assets/reuse-CX4AQDkS-BaVSFETn.js +2 -0
  218. package/dist/assets/{reuse-CX4AQDkS-Cyh-fyjG.js.map → reuse-CX4AQDkS-BaVSFETn.js.map} +1 -1
  219. package/dist/assets/rows-DtS-0sp9-CPrtPsF7.js +2 -0
  220. package/dist/assets/{rows-DtS-0sp9-DSXcPgoI.js.map → rows-DtS-0sp9-CPrtPsF7.js.map} +1 -1
  221. package/dist/assets/show-DdPK3aM7-B0Rfv5TI.js +2 -0
  222. package/dist/assets/{show-DdPK3aM7-CNZWML3e.js.map → show-DdPK3aM7-B0Rfv5TI.js.map} +1 -1
  223. package/dist/assets/spell-check-B9ot-4t--Dlbjxgri.js +2 -0
  224. package/dist/assets/{spell-check-B9ot-4t--DmfTTBH_.js.map → spell-check-B9ot-4t--Dlbjxgri.js.map} +1 -1
  225. package/dist/assets/suggestions-B-jLvT4L-BBbwk5P9.js +2 -0
  226. package/dist/assets/{suggestions-B-jLvT4L-efz5Sf5P.js.map → suggestions-B-jLvT4L-BBbwk5P9.js.map} +1 -1
  227. package/dist/assets/table-settings-DxLvhwRE-C3hfZGf4.js +2 -0
  228. package/dist/assets/{table-settings-DxLvhwRE-Dtwj2TBP.js.map → table-settings-DxLvhwRE-C3hfZGf4.js.map} +1 -1
  229. package/dist/assets/test-component.entry-Dufewrqq.js +2 -0
  230. package/dist/assets/{test-component.entry-eM1a6VNV.js.map → test-component.entry-Dufewrqq.js.map} +1 -1
  231. package/dist/assets/tooltip-align-Cnin7S26-BSE4HRv-.js +2 -0
  232. package/dist/assets/{tooltip-align-Cnin7S26-AW7yAE8m.js.map → tooltip-align-Cnin7S26-BSE4HRv-.js.map} +1 -1
  233. package/dist/assets/tooltip-open-tracking-rBbBgPWP-DRkgcff2.js +2 -0
  234. package/dist/assets/{tooltip-open-tracking-rBbBgPWP-CZrYVTp5.js.map → tooltip-open-tracking-rBbBgPWP-DRkgcff2.js.map} +1 -1
  235. package/dist/assets/tslib.es6-CxX45GIN-BGVaTf34.js +2 -0
  236. package/dist/assets/{tslib.es6-CxX45GIN-BAJoBDh7.js.map → tslib.es6-CxX45GIN-BGVaTf34.js.map} +1 -1
  237. package/dist/assets/unique-nav-labels-CrfmPC99-ClvKi-w1.js +2 -0
  238. package/dist/assets/{unique-nav-labels-CrfmPC99-CmHtQQWJ.js.map → unique-nav-labels-CrfmPC99-ClvKi-w1.js.map} +1 -1
  239. package/dist/assets/validation-BfjI5un_-D4-jB87p.js +2 -0
  240. package/dist/assets/{validation-BfjI5un_-DyOefHOM.js.map → validation-BfjI5un_-D4-jB87p.js.map} +1 -1
  241. package/dist/assets/validation-aqgnZOL6-DTGakI5b.js +2 -0
  242. package/dist/assets/{validation-aqgnZOL6-CiuUkt-y.js.map → validation-aqgnZOL6-DTGakI5b.js.map} +1 -1
  243. package/dist/index.html +1 -1
  244. package/package.json +24 -26
  245. package/src/components/accordion/basic.tsx +9 -5
  246. package/src/components/button/icons.tsx +0 -1
  247. package/src/components/input-number/number-formatter.tsx +156 -7
  248. package/src/components/input-text/text-formatter.tsx +129 -102
  249. package/src/components/table/predefined-settings.tsx +3 -3
  250. package/src/components/table/routes.ts +2 -0
  251. package/src/components/table/settings-column-options.tsx +58 -0
  252. package/src/components/table/stateless-with-settings-menu.tsx +58 -6
  253. package/src/scenarios/appointment-form/AppointmentForm.tsx +115 -97
  254. package/src/scenarios/appointment-form/AvailableAppointmentsForm.tsx +83 -75
  255. package/src/scenarios/appointment-form/DistrictForm.tsx +49 -49
  256. package/src/scenarios/appointment-form/PersonalInformationForm.tsx +110 -144
  257. package/src/scenarios/appointment-form/Summary.tsx +11 -10
  258. package/src/scenarios/appointment-form/formUtils.ts +26 -7
  259. package/src/scenarios/sample-form-with-validation.tsx +37 -69
  260. package/dist/assets/Alert-B3jx2jlL-CpK4XYwv.js +0 -4
  261. package/dist/assets/Collapsible-DOnIFY33-C7y7f3JI.js +0 -4
  262. package/dist/assets/CustomSuggestionsOptionsGroup-BiywiWxx-DQ9nE4it.js +0 -4
  263. package/dist/assets/FieldControlStateWrapper-oMcmUdOF-B8QKONc0.js +0 -4
  264. package/dist/assets/FormFieldStateWrapper-BBrHIwy9-BzgygwAM.js +0 -4
  265. package/dist/assets/Heading-DqUSmJEO-DIKZMp_1.js +0 -4
  266. package/dist/assets/Icon-B-YLFbev-CY5SUbVp.js +0 -4
  267. package/dist/assets/Icon-B-YLFbev-CY5SUbVp.js.map +0 -1
  268. package/dist/assets/Input-D-UExd4D-B4jTCA4a.js +0 -4
  269. package/dist/assets/InputStateWrapper-WDItQP2r-V63Dodsk.js +0 -4
  270. package/dist/assets/InternalUnderlinedBadgeText-CodJXcQG-DfoTu4tD.js +0 -4
  271. package/dist/assets/Span-BUH9xZLf-DN5AV_nd.js +0 -4
  272. package/dist/assets/access-and-short-key-B37XLwy2-BYe6swmD.js +0 -4
  273. package/dist/assets/align-D-ifSKu8-CvAiOM-B.js +0 -4
  274. package/dist/assets/align-floating-elements-BkpeqvtE-BcmMSXRr.js +0 -4
  275. package/dist/assets/associated.controller-ByY2WiIp-DV7ybZcT.js +0 -4
  276. package/dist/assets/auto-complete-mCkUnxg2-BDdjwEw7.js +0 -4
  277. package/dist/assets/clsx-eK3rPvPS-BT_IL7Fz.js +0 -4
  278. package/dist/assets/clsx-eK3rPvPS-BT_IL7Fz.js.map +0 -1
  279. package/dist/assets/color-BOIEtqEM-BTQ7xdfG.js +0 -4
  280. package/dist/assets/controller-BPnEmeBr-DUhUWQOB.js +0 -4
  281. package/dist/assets/controller-C5Ill7ej-DzyV3_0t.js +0 -4
  282. package/dist/assets/controller-CBNM6BpO-CC9nU4-9.js +0 -4
  283. package/dist/assets/controller-CzLzXDtQ-Ckhaz-yw.js +0 -4
  284. package/dist/assets/controller-icon-DNLRSXZr-CPxyQcqV.js +0 -4
  285. package/dist/assets/custom-class-nuoQ9Aml-DnnJ0Vrm.js +0 -4
  286. package/dist/assets/devtools-6yxauOZx-DX8inEpv.js +0 -16
  287. package/dist/assets/disabled-BhpAFgSp-yj0pxqYS.js +0 -4
  288. package/dist/assets/has-closer-CQzjaTkv-C3fdmgwq.js +0 -4
  289. package/dist/assets/hide-label-B9FhGrWP-BJriMB-z.js +0 -4
  290. package/dist/assets/href-rwDd36rS-6LXs-tS-.js +0 -4
  291. package/dist/assets/i18n-C5ifExT3-Bgs4IVwr.js +0 -4
  292. package/dist/assets/icons-B5i9zwjJ-Cl1klTta.js +0 -4
  293. package/dist/assets/image-source-BfBEJ0rX-ZCtqKxfP.js +0 -4
  294. package/dist/assets/index-eI_RdheT.js.map +0 -1
  295. package/dist/assets/isObject-DvSELytj-B0RigBxT.js +0 -4
  296. package/dist/assets/keyboard-D6PoWr38-Bn_Qh8Bq.js +0 -4
  297. package/dist/assets/kol-accordion.entry-C2fyzA5x.js.map +0 -1
  298. package/dist/assets/kol-alert-wc.entry-CVSKyNvN.js +0 -4
  299. package/dist/assets/kol-avatar-wc.entry-kdfwoLDo.js +0 -4
  300. package/dist/assets/kol-button-wc.entry-C-WJFnRY.js +0 -4
  301. package/dist/assets/kol-button-wc.entry-C-WJFnRY.js.map +0 -1
  302. package/dist/assets/kol-card-wc.entry-C9CAN65K.js +0 -4
  303. package/dist/assets/kol-details.entry-DDxZwwkB.js.map +0 -1
  304. package/dist/assets/kol-link-wc.entry-Cu8UIPVC.js +0 -4
  305. package/dist/assets/kol-link-wc.entry-Cu8UIPVC.js.map +0 -1
  306. package/dist/assets/kol-pagination-wc.entry-CORQhAn3.js +0 -4
  307. package/dist/assets/kol-popover-button-wc.entry-C60_RoHY.js +0 -4
  308. package/dist/assets/kol-popover-button-wc.entry-C60_RoHY.js.map +0 -1
  309. package/dist/assets/kol-popover-wc.entry-Dx4s6wZE.js +0 -4
  310. package/dist/assets/kol-popover-wc.entry-Dx4s6wZE.js.map +0 -1
  311. package/dist/assets/kol-table-settings-wc.entry-LyPiAJYK.js +0 -4
  312. package/dist/assets/kol-table-settings-wc.entry-LyPiAJYK.js.map +0 -1
  313. package/dist/assets/kol-table-stateful.entry-B3qans91.js.map +0 -1
  314. package/dist/assets/kol-table-stateless-wc.entry-DvT8TSM0.js +0 -4
  315. package/dist/assets/kol-table-stateless-wc.entry-DvT8TSM0.js.map +0 -1
  316. package/dist/assets/kol-tooltip-wc.entry-C7ImnDzr.js +0 -4
  317. package/dist/assets/kol-tooltip-wc.entry-C7ImnDzr.js.map +0 -1
  318. package/dist/assets/kol-tree-item-wc.entry-DF1UVCR9.js +0 -4
  319. package/dist/assets/kol-tree-wc.entry-W78R5mQZ.js +0 -4
  320. package/dist/assets/label-Dnmzb2S_-C6oOQMoX.js +0 -4
  321. package/dist/assets/link-variant-DQEKOyAU-CimbCc47.js +0 -4
  322. package/dist/assets/max-length-behavior-nTw1Zuyf-bF2paNt-.js +0 -4
  323. package/dist/assets/multiple-Cj3JQafH-Czk0lM_M.js +0 -4
  324. package/dist/assets/open-CbvHO4XG-DePuJaK7.js +0 -4
  325. package/dist/assets/orientation-eCMt8CD1-Cxl5Veb6.js +0 -4
  326. package/dist/assets/placeholder-BVhy3BzI-Bat_cmDW.js +0 -4
  327. package/dist/assets/read-only-BetTuumR-DcIqbAM5.js +0 -4
  328. package/dist/assets/required-CnTTpFCN-BhidbL6i.js +0 -4
  329. package/dist/assets/reuse-CX4AQDkS-Cyh-fyjG.js +0 -4
  330. package/dist/assets/rows-DtS-0sp9-DSXcPgoI.js +0 -4
  331. package/dist/assets/show-DdPK3aM7-CNZWML3e.js +0 -4
  332. package/dist/assets/spell-check-B9ot-4t--DmfTTBH_.js +0 -4
  333. package/dist/assets/suggestions-B-jLvT4L-efz5Sf5P.js +0 -4
  334. package/dist/assets/table-settings-DxLvhwRE-Dtwj2TBP.js +0 -4
  335. package/dist/assets/test-component.entry-eM1a6VNV.js +0 -4
  336. package/dist/assets/tooltip-align-Cnin7S26-AW7yAE8m.js +0 -4
  337. package/dist/assets/tooltip-open-tracking-rBbBgPWP-CZrYVTp5.js +0 -4
  338. package/dist/assets/tslib.es6-CxX45GIN-BAJoBDh7.js +0 -4
  339. package/dist/assets/unique-nav-labels-CrfmPC99-CmHtQQWJ.js +0 -4
  340. package/dist/assets/validation-BfjI5un_-DyOefHOM.js +0 -4
  341. package/dist/assets/validation-aqgnZOL6-CiuUkt-y.js +0 -4
@@ -1,8 +1,17 @@
1
- import { KolForm, KolInputNumber } from '@public-ui/react-v19';
2
- import * as React from 'react';
1
+ import { KolForm, KolInputNumber, KolInputText } from '@public-ui/react-v19';
2
+ import React, { type BaseSyntheticEvent } from 'react';
3
+ import { Controller, useForm } from 'react-hook-form';
4
+ import { NumericFormat, type NumberFormatValues, type NumericFormatProps } from 'react-number-format';
3
5
 
4
6
  import { SampleDescription } from '../SampleDescription';
5
7
 
8
+ type KolInputTextEvents = {
9
+ onBlur?: (event: Event) => void;
10
+ onChange?: (event: Event, value: unknown) => void;
11
+ onFocus?: (event: Event) => void;
12
+ onInput?: (event: Event, value: unknown) => void;
13
+ };
14
+
6
15
  class NumberFormatter {
7
16
  public parse(value: unknown): string {
8
17
  if (value === undefined || value === null || value === '') {
@@ -22,22 +31,147 @@ const preventInvalidKeyDown = (event: KeyboardEvent) => {
22
31
  }
23
32
  };
24
33
 
34
+ type KolNumericFormatControllerProps = {
35
+ _label: string;
36
+ _msg?: React.ComponentProps<typeof KolInputText>['_msg'];
37
+ _touched?: boolean;
38
+ _on?: React.ComponentProps<typeof KolInputText>['_on'];
39
+ _required?: boolean;
40
+ value?: number;
41
+ } & Omit<NumericFormatProps, 'customInput' | 'value' | 'onBlur' | 'onValueChange'>;
42
+
43
+ function KolNumericFormat({
44
+ _label,
45
+ _msg,
46
+ _touched,
47
+ _on,
48
+ _required,
49
+ value,
50
+ thousandSeparator = true,
51
+ suffix = '€',
52
+ ...props
53
+ }: KolNumericFormatControllerProps) {
54
+ const normalizedOn = _on && typeof _on === 'object' ? (_on as KolInputTextEvents) : undefined;
55
+
56
+ return (
57
+ <NumericFormat
58
+ {...(props as any)}
59
+ value={value}
60
+ suffix={suffix}
61
+ thousandSeparator={thousandSeparator}
62
+ valueIsNumericString={false}
63
+ customInput={(inputProps: any) => {
64
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
65
+ const inputValue = inputProps.value;
66
+ return (
67
+ <KolInputText
68
+ {...inputProps}
69
+ _value={inputValue}
70
+ _label={_label}
71
+ _msg={_msg}
72
+ _touched={_touched}
73
+ _required={_required}
74
+ _on={{
75
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
76
+ onBlur: inputProps.onBlur as ((event: Event) => void) | undefined,
77
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
78
+ onChange: inputProps.onChange as ((event: Event, value: unknown) => void) | undefined,
79
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
80
+ onFocus: inputProps.onFocus as ((event: Event) => void) | undefined,
81
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
82
+ onInput: inputProps.onInput as ((event: Event, value: unknown) => void) | undefined,
83
+ }}
84
+ />
85
+ );
86
+ }}
87
+ onValueChange={(numericValue: NumberFormatValues) => {
88
+ const fakeEvent = new Event('input');
89
+ normalizedOn?.onInput?.(fakeEvent, numericValue.floatValue);
90
+ }}
91
+ onBlur={(event) => {
92
+ normalizedOn?.onBlur?.(event.nativeEvent);
93
+ }}
94
+ />
95
+ );
96
+ }
97
+
98
+ function KolNumericFormatController(props: any) {
99
+ const { name, control, rules, defaultValue, shouldUnregister, disabled, _label, _required, ...componentProps } = props;
100
+ return (
101
+ <Controller
102
+ name={name}
103
+ control={control}
104
+ rules={rules}
105
+ defaultValue={defaultValue}
106
+ shouldUnregister={shouldUnregister}
107
+ disabled={disabled}
108
+ render={({ field, fieldState }) => {
109
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
110
+ const userHandlers = componentProps._on as KolInputTextEvents | undefined;
111
+ return (
112
+ <KolNumericFormat
113
+ {...(componentProps as any)}
114
+ _label={_label}
115
+ _required={_required}
116
+ value={field.value}
117
+ _touched={fieldState.isTouched}
118
+ _msg={
119
+ fieldState.error
120
+ ? {
121
+ _type: 'error' as const,
122
+ _description: fieldState.error.message || String(fieldState.error),
123
+ }
124
+ : undefined
125
+ }
126
+ _on={{
127
+ onInput: (event: Event, value: unknown) => {
128
+ field.onChange(value);
129
+ userHandlers?.onInput?.(event, value);
130
+ },
131
+ onBlur: () => field.onBlur(),
132
+ }}
133
+ />
134
+ );
135
+ }}
136
+ />
137
+ );
138
+ }
139
+
140
+ type CurrencyExampleFormValues = {
141
+ currency: number;
142
+ };
143
+
25
144
  export function InputNumberNumberFormatter() {
26
145
  const formatter = new NumberFormatter();
27
146
  const [displayValue, setDisplayValue] = React.useState<number | undefined>(undefined);
28
147
  const [value, setValue] = React.useState<number | undefined>(-128);
29
148
  const [touched, setTouched] = React.useState(false);
30
149
 
150
+ const initialCurrencyExampleValues: CurrencyExampleFormValues = {
151
+ currency: 1000000,
152
+ };
153
+
154
+ const currencyForm = useForm<CurrencyExampleFormValues>({
155
+ defaultValues: initialCurrencyExampleValues,
156
+ mode: 'onTouched',
157
+ });
158
+
159
+ const currencyValues = currencyForm.watch();
160
+
161
+ const handleCurrencySubmit = (event: Event) => {
162
+ void currencyForm.handleSubmit(async () => {})(event as unknown as BaseSyntheticEvent);
163
+ };
164
+
31
165
  return (
32
166
  <>
33
167
  <SampleDescription>
34
168
  <p>
35
- This example demonstrates formatting number input to whole numbers. Decimal separators (. and ,) and scientific notation (e) are automatically removed
36
- on input.
169
+ This example demonstrates formatting number input. The first example shows whole number formatting where decimal separators (. and ,) and scientific
170
+ notation (e) are automatically removed on input. The second example shows currency formatting with react-number-format in a react-hook-form context.
37
171
  </p>
38
172
  </SampleDescription>
39
- <section className="w-full">
40
- <div className="p-2">
173
+ <section className="w-full grid gap-4">
174
+ <div>
41
175
  <KolForm>
42
176
  <KolInputNumber
43
177
  _label="Whole number"
@@ -58,7 +192,22 @@ export function InputNumberNumberFormatter() {
58
192
  }}
59
193
  />
60
194
  </KolForm>
61
- <pre className="text-base">{JSON.stringify({ value, touched }, null, 2)}</pre>
195
+ <pre className="text-base mt-2">{JSON.stringify({ value, touched }, null, 2)}</pre>
196
+ </div>
197
+
198
+ <div>
199
+ <KolForm _on={{ onSubmit: handleCurrencySubmit }}>
200
+ <KolNumericFormatController
201
+ control={currencyForm.control as any}
202
+ name="currency"
203
+ decimalScale={2}
204
+ displayType="input"
205
+ rules={{ required: 'Please enter a currency amount.' }}
206
+ _label="Currency"
207
+ _required
208
+ />
209
+ </KolForm>
210
+ <pre className="text-base mt-2">{JSON.stringify(currencyValues, null, 2)}</pre>
62
211
  </div>
63
212
  </section>
64
213
  </>
@@ -1,9 +1,24 @@
1
- import { KolForm, KolHeading, KolInputText } from '@public-ui/react-v19';
2
- import { Field, Formik, type FieldProps } from 'formik';
3
- import * as React from 'react';
1
+ import { KolForm, KolInputText } from '@public-ui/react-v19';
2
+ import React, { useMemo, useRef, type BaseSyntheticEvent } from 'react';
3
+ import { Controller, useForm } from 'react-hook-form';
4
+
4
5
  import { SampleDescription } from '../SampleDescription';
5
6
 
6
- import { NumericFormat, type NumberFormatValues } from 'react-number-format';
7
+ type InputTextElementSelection = {
8
+ setSelectionStart?: (position: number) => Promise<void>;
9
+ selectionStart?: () => Promise<number | null>;
10
+ };
11
+
12
+ type KolInputTextEvents = {
13
+ onBlur?: (event: Event) => void;
14
+ onChange?: (event: Event, value: unknown) => void;
15
+ onFocus?: (event: Event) => void;
16
+ onInput?: (event: Event, value: unknown) => void;
17
+ };
18
+ type KolInputTextProps = Omit<React.ComponentProps<typeof KolInputText>, '_on' | '_value'> & {
19
+ _on?: KolInputTextEvents;
20
+ _value?: string;
21
+ };
7
22
 
8
23
  const NON_ALPHANUM = /[^a-zA-Z0-9]/g;
9
24
  const EVERY_FOUR_CHARS = /(.{4})(?!$)/g;
@@ -20,10 +35,12 @@ class IbanFormatter {
20
35
  public parse(value: string): string {
21
36
  return this.electronicFormat(value);
22
37
  }
38
+
23
39
  public format(value: string, ref?: HTMLKolInputTextElement | null, selectionStart?: number | null): string {
24
- if (ref && selectionStart) {
40
+ const setSelectionStart = (ref as InputTextElementSelection | null)?.setSelectionStart;
41
+ if (selectionStart && setSelectionStart) {
25
42
  if (selectionStart % 5 === 0) selectionStart++;
26
- ref?.setSelectionStart(selectionStart);
43
+ void setSelectionStart(selectionStart);
27
44
  }
28
45
  return this.printFormat(value);
29
46
  }
@@ -33,23 +50,104 @@ type IbanExampleFormValues = {
33
50
  iban: string;
34
51
  };
35
52
 
36
- type CurrencyExampleFormValues = {
37
- currency: number;
38
- };
53
+ function FormattedKolInputText({
54
+ formatter,
55
+ selectionStartRef,
56
+ _on,
57
+ _value,
58
+ ...props
59
+ }: KolInputTextProps & {
60
+ formatter: IbanFormatter;
61
+ selectionStartRef: React.MutableRefObject<number | null>;
62
+ }) {
63
+ const inputRef = useRef<HTMLKolInputTextElement | null>(null);
64
+ const normalizedOn = _on && typeof _on === 'object' ? (_on as KolInputTextEvents) : undefined;
65
+ const sanitizedSelectionRef = selectionStartRef as React.MutableRefObject<number | null>;
66
+
67
+ const element = inputRef.current;
68
+ const selectionStart = sanitizedSelectionRef.current;
69
+ const sanitizedFormatter: IbanFormatter = formatter;
70
+
71
+ return (
72
+ <KolInputText
73
+ {...props}
74
+ ref={inputRef}
75
+ _value={sanitizedFormatter.format(_value ?? '', element, selectionStart)}
76
+ _on={{
77
+ ...normalizedOn,
78
+ onInput: (event: Event, value: unknown) => {
79
+ const selectionStartGetter = (inputRef.current as InputTextElementSelection | null)?.selectionStart;
80
+ selectionStartGetter?.().then((start) => {
81
+ sanitizedSelectionRef.current = start ?? null;
82
+ });
83
+ const parsedValue = sanitizedFormatter.parse(typeof value === 'string' ? value : '');
84
+ normalizedOn?.onInput?.(event, parsedValue);
85
+ },
86
+ }}
87
+ />
88
+ );
89
+ }
90
+
91
+ function KolFormattedIbanController(props: any) {
92
+ const { name, control, rules, defaultValue, shouldUnregister, disabled, formatter, selectionStartRef, ...componentProps } = props;
93
+ return (
94
+ <Controller
95
+ name={name}
96
+ control={control}
97
+ rules={rules}
98
+ defaultValue={defaultValue}
99
+ shouldUnregister={shouldUnregister}
100
+ disabled={disabled}
101
+ render={({ field, fieldState }) => {
102
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
103
+ const userHandlers = componentProps._on as KolInputTextEvents | undefined;
104
+ return (
105
+ <FormattedKolInputText
106
+ {...(componentProps as any)}
107
+ formatter={formatter}
108
+ selectionStartRef={selectionStartRef}
109
+ _value={field.value}
110
+ _touched={fieldState.isTouched}
111
+ _msg={
112
+ fieldState.error
113
+ ? {
114
+ _type: 'error' as const,
115
+ _description: fieldState.error.message || String(fieldState.error),
116
+ }
117
+ : undefined
118
+ }
119
+ _on={{
120
+ onInput: (event: Event, value: unknown) => {
121
+ field.onChange(value);
122
+ userHandlers?.onInput?.(event, value);
123
+ },
124
+ onBlur: () => field.onBlur(),
125
+ }}
126
+ />
127
+ );
128
+ }}
129
+ />
130
+ );
131
+ }
39
132
 
40
133
  export function InputTextFormatterDemo() {
41
- const handleSubmit = async () => {};
42
- const formatter = new IbanFormatter();
134
+ const formatter = useMemo(() => new IbanFormatter(), []);
43
135
 
44
- const textInput1 = React.useRef<HTMLKolInputTextElement>(null);
45
- let textInput1SelectionStart: number | null | undefined;
136
+ const textInput1SelectionStart = useRef<number | null>(null);
46
137
 
47
138
  const initialIbanExampleValues: IbanExampleFormValues = {
48
139
  iban: 'DE89370400440532013000',
49
140
  };
50
141
 
51
- const initialCurrencyExampleValues: CurrencyExampleFormValues = {
52
- currency: 1000000,
142
+ const ibanForm = useForm<IbanExampleFormValues>({
143
+ defaultValues: initialIbanExampleValues,
144
+ mode: 'onTouched',
145
+ });
146
+
147
+ const ibanValues = ibanForm.watch();
148
+
149
+ const handleIbanSubmit = (event: Event) => {
150
+ void ibanForm.handleSubmit(async () => {})(event as unknown as BaseSyntheticEvent);
53
151
  };
54
152
 
55
153
  return (
@@ -60,93 +158,22 @@ export function InputTextFormatterDemo() {
60
158
  vice versa the formatting is removed again (machine format)
61
159
  </p>
62
160
  </SampleDescription>
63
- <section className="w-full flex flex-col">
64
- <Formik<IbanExampleFormValues> initialValues={initialIbanExampleValues} onSubmit={handleSubmit}>
65
- {(form) => (
66
- <>
67
- <div className="p-2">
68
- <KolHeading _label="Formatted Form Field" _level={2} />
69
- <KolForm>
70
- <Field name="iban">
71
- {({ field }: FieldProps<IbanExampleFormValues['iban']>) => (
72
- <div className="block mt-2">
73
- <KolInputText
74
- ref={textInput1}
75
- onBlur={() => {
76
- void form.setFieldTouched('iban', true);
77
- }}
78
- id="field-iban"
79
- _label="IBAN"
80
- _value={formatter.format(field.value ?? '', textInput1.current, textInput1SelectionStart)}
81
- _msg={{
82
- _type: 'error',
83
- _description: form.errors.iban || '',
84
- }}
85
- _touched={form.touched.iban}
86
- _required
87
- _on={{
88
- onInput: (event, value: unknown) => {
89
- if (event.target) {
90
- textInput1.current?.selectionStart().then((start) => {
91
- textInput1SelectionStart = start;
92
- });
93
- const parsed_value = formatter.parse((value as string) ?? '');
94
- void form.setFieldValue('iban', parsed_value, true);
95
- }
96
- },
97
- }}
98
- />
99
- </div>
100
- )}
101
- </Field>
102
- </KolForm>
103
- </div>
104
- <div className="p-2">
105
- <KolHeading _label="Model" _level={2} />
106
- <pre className="text-base">{JSON.stringify(form.values, null, 2)}</pre>
107
- </div>
108
- </>
109
- )}
110
- </Formik>
111
- </section>
112
-
113
- <section className="w-full flex flex-col">
114
- <Formik<CurrencyExampleFormValues> initialValues={initialCurrencyExampleValues} onSubmit={handleSubmit}>
115
- {(form) => (
116
- <>
117
- <div className="p-2">
118
- <KolHeading _label="Formatted Form Field (with react-number-format)" _level={2} />
119
- <KolForm>
120
- <Field name="currency">
121
- {({ field }: FieldProps<CurrencyExampleFormValues['currency']>) => (
122
- <div className="block mt-2">
123
- <NumericFormat
124
- customInput={({ type, value, onBlur, onChange, onFocus }: any) => {
125
- return <KolInputText _label="Currency" _type={type} _value={value} _on={{ onBlur, onChange, onFocus }} />;
126
- }}
127
- displayType="input"
128
- value={typeof field.value === 'number' ? field.value.toFixed(2) : undefined}
129
- onBlur={() => {
130
- void form.setFieldTouched('currency', true);
131
- }}
132
- onValueChange={(value: NumberFormatValues) => {
133
- void form.setFieldValue('currency', value.floatValue, true);
134
- }}
135
- suffix={'€'}
136
- thousandSeparator={true}
137
- />
138
- </div>
139
- )}
140
- </Field>
141
- </KolForm>
142
- </div>
143
- <div className="p-2">
144
- <KolHeading _label="Model" _level={2} />
145
- <pre className="text-base">{JSON.stringify(form.values, null, 2)}</pre>
146
- </div>
147
- </>
148
- )}
149
- </Formik>
161
+ <section className="w-full">
162
+ <div>
163
+ <KolForm _on={{ onSubmit: handleIbanSubmit }}>
164
+ <KolFormattedIbanController
165
+ control={ibanForm.control as any}
166
+ name="iban"
167
+ id="field-iban"
168
+ formatter={formatter}
169
+ selectionStartRef={textInput1SelectionStart}
170
+ rules={{ required: 'Please enter an IBAN.' }}
171
+ _label="IBAN"
172
+ _required
173
+ />
174
+ </KolForm>
175
+ <pre className="text-base mt-2">{JSON.stringify(ibanValues, null, 2)}</pre>
176
+ </div>
150
177
  </section>
151
178
  </>
152
179
  );
@@ -27,9 +27,9 @@ export const PredefinedSettings: FC = () => {
27
27
  }}
28
28
  _tableSettings={{
29
29
  columns: [
30
- { key: 'columnA', visible: false, label: 'Column A', position: 2 },
31
- { key: 'columnB', visible: true, label: 'Column B', position: 1, width: 20 },
32
- { key: 'columnC', visible: true, label: 'Column C', position: 0, width: 45 },
30
+ { key: 'columnC', visible: true, label: 'Column C', width: 45 },
31
+ { key: 'columnB', visible: true, label: 'Column B', width: 20 },
32
+ { key: 'columnA', visible: false, label: 'Column A' },
33
33
  ],
34
34
  }}
35
35
  _data={DATA}
@@ -9,6 +9,7 @@ import { TableNonHidableColumns } from './non-hidable-columns';
9
9
  import { PaginationPosition } from './pagination-position';
10
10
  import { PredefinedSettings } from './predefined-settings';
11
11
  import { TableRenderCell } from './render-cell';
12
+ import { TableSettingsColumnOptions } from './settings-column-options';
12
13
  import { TableSortData } from './sort-data';
13
14
  import { TableStatefulWithSelection } from './stateful-with-selection';
14
15
  import { TableStatefulWithSingleSelection } from './stateful-with-single-selection';
@@ -31,6 +32,7 @@ export const TABLE_ROUTES: Routes = {
31
32
  'pagination-position': PaginationPosition,
32
33
  'predefined-settings': PredefinedSettings,
33
34
  'render-cell': TableRenderCell,
35
+ 'settings-column-options': TableSettingsColumnOptions,
34
36
  'sort-data': TableSortData,
35
37
  'direction-aware-sort': TableDirectionAwareSort,
36
38
  'stateful-with-selection': TableStatefulWithSelection,
@@ -0,0 +1,58 @@
1
+ import { KolTableStateful } from '@public-ui/react-v19';
2
+ import type { FC } from 'react';
3
+ import React from 'react';
4
+ import { SampleDescription } from '../SampleDescription';
5
+
6
+ type UserRow = {
7
+ id: string;
8
+ name: string;
9
+ team: string;
10
+ email: string;
11
+ status: string;
12
+ };
13
+
14
+ const DATA: UserRow[] = [
15
+ { id: 'U-001', name: 'Andrea Schmidt', team: 'Design', email: 'andrea@example.org', status: 'Active' },
16
+ { id: 'U-002', name: 'Boris Klein', team: 'Engineering', email: 'boris@example.org', status: 'Active' },
17
+ { id: 'U-003', name: 'Chiara Russo', team: 'Support', email: 'chiara@example.org', status: 'On leave' },
18
+ ];
19
+
20
+ export const TableSettingsColumnOptions: FC = () => (
21
+ <>
22
+ <SampleDescription>
23
+ <p>
24
+ This example demonstrates how the table settings respect column metadata. Some columns can be hidden, reordered, or resized, while others stay locked
25
+ based on their <code>hidable</code>, <code>sortable</code>, and <code>resizable</code> flags.
26
+ </p>
27
+ </SampleDescription>
28
+
29
+ <KolTableStateful
30
+ _label="Table with column option restrictions"
31
+ _minWidth="auto"
32
+ _hasSettingsMenu
33
+ _headers={{
34
+ horizontal: [
35
+ [
36
+ { key: 'id', label: 'ID', hidable: false, sortable: false },
37
+ { key: 'name', label: 'Name' },
38
+ { key: 'team', label: 'Team', sortable: false },
39
+ { key: 'email', label: 'E-Mail', resizable: false },
40
+ { key: 'status', label: 'Status', hidable: false, resizable: false },
41
+ ],
42
+ ],
43
+ }}
44
+ _tableSettings={{
45
+ columns: [
46
+ { hidable: false, key: 'id', label: 'ID', sortable: false, visible: true, width: 15 },
47
+ { key: 'name', label: 'Name', visible: true, width: 30 },
48
+ { key: 'team', label: 'Team', sortable: false, visible: true, width: 20 },
49
+ { key: 'email', label: 'E-Mail', resizable: false, visible: true, width: 25 },
50
+ { hidable: false, key: 'status', label: 'Status', resizable: false, visible: true, width: 10 },
51
+ ],
52
+ }}
53
+ _data={DATA}
54
+ className="block"
55
+ style={{ maxWidth: '720px' }}
56
+ />
57
+ </>
58
+ );
@@ -22,8 +22,25 @@ export const TableStatelessWithSettingsMenu: FC = () => (
22
22
  <SampleDescription>
23
23
  <p>
24
24
  This sample shows <code>KolTableStateless</code> with the settings menu enabled via
25
- <code>_hasSettingsMenu</code>.
25
+ <code>_hasSettingsMenu</code>. Each column demonstrates a different combination of sorting and resizing options.
26
26
  </p>
27
+ <ul>
28
+ <li>
29
+ <strong>ID</strong> keeps a fixed width with <code>resizable: false</code> while still allowing sorting.
30
+ </li>
31
+ <li>
32
+ <strong>Name</strong> represents the default behavior with both sorting and resizing enabled.
33
+ </li>
34
+ <li>
35
+ <strong>Role</strong> disables sorting but keeps <code>resizable: true</code> so users can widen the column if necessary.
36
+ </li>
37
+ <li>
38
+ <strong>E-Mail</strong> allows sorting but locks its width with <code>resizable: false</code> to keep the layout stable.
39
+ </li>
40
+ <li>
41
+ <strong>Active</strong> is neither sortable nor resizable to emphasise the status indicator.
42
+ </li>
43
+ </ul>
27
44
  </SampleDescription>
28
45
 
29
46
  <KolTableStateless
@@ -34,11 +51,46 @@ export const TableStatelessWithSettingsMenu: FC = () => (
34
51
  _headerCells={{
35
52
  horizontal: [
36
53
  [
37
- { key: 'id', label: 'ID', textAlign: 'center' },
38
- { key: 'name', label: 'Name', textAlign: 'center' },
39
- { key: 'role', label: 'Role', textAlign: 'center' },
40
- { key: 'email', label: 'E-Mail', textAlign: 'center' },
41
- { key: 'active', label: 'Active', textAlign: 'center' },
54
+ {
55
+ key: 'id',
56
+ label: 'ID',
57
+ textAlign: 'center',
58
+ sortDirection: 'NOS',
59
+ sortable: true,
60
+ resizable: false,
61
+ },
62
+ {
63
+ key: 'name',
64
+ label: 'Name',
65
+ textAlign: 'center',
66
+ sortDirection: 'NOS',
67
+ sortable: true,
68
+ resizable: true,
69
+ },
70
+ {
71
+ key: 'role',
72
+ label: 'Role',
73
+ textAlign: 'center',
74
+ sortDirection: 'NOS',
75
+ sortable: false,
76
+ resizable: true,
77
+ },
78
+ {
79
+ key: 'email',
80
+ label: 'E-Mail',
81
+ textAlign: 'center',
82
+ sortDirection: 'NOS',
83
+ sortable: true,
84
+ resizable: false,
85
+ },
86
+ {
87
+ key: 'active',
88
+ label: 'Active',
89
+ textAlign: 'center',
90
+ sortDirection: 'NOS',
91
+ sortable: false,
92
+ resizable: false,
93
+ },
42
94
  ],
43
95
  ],
44
96
  }}