@public-ui/sample-react 4.0.0-alpha.5 → 4.0.0-alpha.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 (374) hide show
  1. package/README.md +1 -1
  2. package/dist/assets/Alert-83Gb4NJi-B1Ay2PFS.js +2 -0
  3. package/dist/assets/{Alert-Bjkk9lQv-ARqglia_.js.map → Alert-83Gb4NJi-B1Ay2PFS.js.map} +1 -1
  4. package/dist/assets/Collapsible-BWBRUxlQ-DbfHp6WF.js +2 -0
  5. package/dist/assets/{Collapsible-IuDix1Q--Clfk9PjU.js.map → Collapsible-BWBRUxlQ-DbfHp6WF.js.map} +1 -1
  6. package/dist/assets/CustomSuggestionsOptionsGroup-F-K5k1eH-GAXLZNMg.js +2 -0
  7. package/dist/assets/CustomSuggestionsOptionsGroup-F-K5k1eH-GAXLZNMg.js.map +1 -0
  8. package/dist/assets/FieldControlStateWrapper-DHi-9Vch-DTwaRJnV.js +2 -0
  9. package/dist/assets/{FieldControlStateWrapper-DW4yI_q9-Bonm2OcB.js.map → FieldControlStateWrapper-DHi-9Vch-DTwaRJnV.js.map} +1 -1
  10. package/dist/assets/FormFieldStateWrapper-DdxBfHk9-Z8hHMcic.js +2 -0
  11. package/dist/assets/FormFieldStateWrapper-DdxBfHk9-Z8hHMcic.js.map +1 -0
  12. package/dist/assets/Heading-Dp1LmW2r-9xFHooPQ.js +2 -0
  13. package/dist/assets/{Heading-Bgh5mGuN-NZ2eqsFZ.js.map → Heading-Dp1LmW2r-9xFHooPQ.js.map} +1 -1
  14. package/dist/assets/Icon-BTCiUYU9-BswBxG0l.js +2 -0
  15. package/dist/assets/Icon-BTCiUYU9-BswBxG0l.js.map +1 -0
  16. package/dist/assets/Input-DCya5HSR-CPmSrYWA.js +2 -0
  17. package/dist/assets/{Input-iXL6EXuW-CiyhDO1S.js.map → Input-DCya5HSR-CPmSrYWA.js.map} +1 -1
  18. package/dist/assets/InputStateWrapper-B6CEb3g--DnRwOxFU.js +2 -0
  19. package/dist/assets/{InputStateWrapper-BskUoUzv-Y1QuPvo7.js.map → InputStateWrapper-B6CEb3g--DnRwOxFU.js.map} +1 -1
  20. package/dist/assets/InternalUnderlinedBadgeText-Bs9VOx3f-Cx46a1Fh.js +2 -0
  21. package/dist/assets/{InternalUnderlinedBadgeText-Ba_Akx7b-YDli6NRt.js.map → InternalUnderlinedBadgeText-Bs9VOx3f-Cx46a1Fh.js.map} +1 -1
  22. package/dist/assets/Span-KZITft3P-CbRE4hYG.js +2 -0
  23. package/dist/assets/{Span-CS0Z30Mv-DkVBt8xF.js.map → Span-KZITft3P-CbRE4hYG.js.map} +1 -1
  24. package/dist/assets/access-and-short-key-B37XLwy2-C-tLXrJQ.js +2 -0
  25. package/dist/assets/{access-and-short-key-B37XLwy2-BBCIaEXs.js.map → access-and-short-key-B37XLwy2-C-tLXrJQ.js.map} +1 -1
  26. package/dist/assets/align-D-ifSKu8-2qqc8Q2I.js +2 -0
  27. package/dist/assets/{align-D-ifSKu8-DHxE7OrW.js.map → align-D-ifSKu8-2qqc8Q2I.js.map} +1 -1
  28. package/dist/assets/align-floating-elements-BkpeqvtE-9RZwzYIj.js +2 -0
  29. package/dist/assets/{align-floating-elements-BkpeqvtE-CQbyIoMm.js.map → align-floating-elements-BkpeqvtE-9RZwzYIj.js.map} +1 -1
  30. package/dist/assets/associated.controller-CKSywYuL-D_-NPKll.js +2 -0
  31. package/dist/assets/{associated.controller-ByY2WiIp-D-SArd22.js.map → associated.controller-CKSywYuL-D_-NPKll.js.map} +1 -1
  32. package/dist/assets/auto-complete-mCkUnxg2-BAO18qDm.js +2 -0
  33. package/dist/assets/{auto-complete-mCkUnxg2-CPy57VVu.js.map → auto-complete-mCkUnxg2-BAO18qDm.js.map} +1 -1
  34. package/dist/assets/clsx-eK3rPvPS-B-dksMZM.js +2 -0
  35. package/dist/assets/clsx-eK3rPvPS-B-dksMZM.js.map +1 -0
  36. package/dist/assets/color-BOIEtqEM-Dsa-aDaF.js +2 -0
  37. package/dist/assets/{color-BOIEtqEM-L8c8JCkp.js.map → color-BOIEtqEM-Dsa-aDaF.js.map} +1 -1
  38. package/dist/assets/controller-BF_Czp7e-CnjAl8gj.js +2 -0
  39. package/dist/assets/{controller-C5WSxdih-C0Th29pR.js.map → controller-BF_Czp7e-CnjAl8gj.js.map} +1 -1
  40. package/dist/assets/controller-C5Ill7ej-DEERmMid.js +2 -0
  41. package/dist/assets/{controller-C5Ill7ej-DA9_ZpJu.js.map → controller-C5Ill7ej-DEERmMid.js.map} +1 -1
  42. package/dist/assets/controller-CQtkSgzE-BGyqTIgD.js +2 -0
  43. package/dist/assets/{controller-CX1IIODr-BkmhUxT6.js.map → controller-CQtkSgzE-BGyqTIgD.js.map} +1 -1
  44. package/dist/assets/controller-icon-C5Tj-Bw9-DoaOfBv8.js +2 -0
  45. package/dist/assets/{controller-icon-Bj9jDliX-GITfFrxl.js.map → controller-icon-C5Tj-Bw9-DoaOfBv8.js.map} +1 -1
  46. package/dist/assets/controller-n_eFbbek-BRJFGvww.js +2 -0
  47. package/dist/assets/{controller-mXm-vPdA-B6Pyo-EF.js.map → controller-n_eFbbek-BRJFGvww.js.map} +1 -1
  48. package/dist/assets/custom-class-nuoQ9Aml-C6gL0_qo.js +2 -0
  49. package/dist/assets/{custom-class-nuoQ9Aml-DkG_pprU.js.map → custom-class-nuoQ9Aml-C6gL0_qo.js.map} +1 -1
  50. package/dist/assets/{dev.utils-CjBWUBVB-BTpX7uqU.js → dev.utils-CLelInms-CwbOd1kQ.js} +2 -4
  51. package/dist/assets/{dev.utils-CjBWUBVB-BTpX7uqU.js.map → dev.utils-CLelInms-CwbOd1kQ.js.map} +1 -1
  52. package/dist/assets/devtools-8P6cNSgN-BgoMgc_O.js +14 -0
  53. package/dist/assets/{devtools-DSsrYXN7-E4mOPBwO.js.map → devtools-8P6cNSgN-BgoMgc_O.js.map} +1 -1
  54. package/dist/assets/disabled-BhpAFgSp-DpNF6m-0.js +2 -0
  55. package/dist/assets/{disabled-BhpAFgSp-By2R53CP.js.map → disabled-BhpAFgSp-DpNF6m-0.js.map} +1 -1
  56. package/dist/assets/has-closer-CQzjaTkv-7NtaNGni.js +2 -0
  57. package/dist/assets/{has-closer-CQzjaTkv-CJOSQHj3.js.map → has-closer-CQzjaTkv-7NtaNGni.js.map} +1 -1
  58. package/dist/assets/hide-label-B9FhGrWP-C9po7_Qn.js +2 -0
  59. package/dist/assets/{hide-label-B9FhGrWP-DKlgXtKv.js.map → hide-label-B9FhGrWP-C9po7_Qn.js.map} +1 -1
  60. package/dist/assets/href-rwDd36rS-DOvXdMik.js +2 -0
  61. package/dist/assets/{href-rwDd36rS-CEz5jHM0.js.map → href-rwDd36rS-DOvXdMik.js.map} +1 -1
  62. package/dist/assets/i18n-BzQ08vD6-CNBTxQ3d.js +2 -0
  63. package/dist/assets/i18n-BzQ08vD6-CNBTxQ3d.js.map +1 -0
  64. package/dist/assets/icons-B5i9zwjJ-CbdCB9RM.js +2 -0
  65. package/dist/assets/{icons-B5i9zwjJ-Dzqwsqxx.js.map → icons-B5i9zwjJ-CbdCB9RM.js.map} +1 -1
  66. package/dist/assets/image-source-BfBEJ0rX-Buy6WWlO.js +2 -0
  67. package/dist/assets/{image-source-BfBEJ0rX-BecuGTZi.js.map → image-source-BfBEJ0rX-Buy6WWlO.js.map} +1 -1
  68. package/dist/assets/{index-DhV7zTY5.css → index-BWt2lYpR.css} +1 -1
  69. package/dist/assets/{index-CQ_Buelw.js → index-z-9Q5FY7.js} +316 -309
  70. package/dist/assets/index-z-9Q5FY7.js.map +1 -0
  71. package/dist/assets/isObject-DvSELytj-DhzEQer1.js +2 -0
  72. package/dist/assets/{isObject-DvSELytj-B0RigBxT.js.map → isObject-DvSELytj-DhzEQer1.js.map} +1 -1
  73. package/dist/assets/keyboard-D6PoWr38-BGYQJqo4.js +2 -0
  74. package/dist/assets/{keyboard-D6PoWr38-Bn_Qh8Bq.js.map → keyboard-D6PoWr38-BGYQJqo4.js.map} +1 -1
  75. package/dist/assets/{kol-abbr.entry-CVbEazxY.js → kol-abbr.entry-BO9Puc4e.js} +2 -4
  76. package/dist/assets/{kol-abbr.entry-CVbEazxY.js.map → kol-abbr.entry-BO9Puc4e.js.map} +1 -1
  77. package/dist/assets/{kol-accordion.entry-CV7ohUuG.js → kol-accordion.entry-CRUAlsWr.js} +22 -19
  78. package/dist/assets/kol-accordion.entry-CRUAlsWr.js.map +1 -0
  79. package/dist/assets/kol-alert-wc.entry-OPKHHsLo.js +2 -0
  80. package/dist/assets/{kol-alert-wc.entry-CYKnpWcF.js.map → kol-alert-wc.entry-OPKHHsLo.js.map} +1 -1
  81. package/dist/assets/{kol-alert.entry-CNzUQYLU.js → kol-alert.entry-DASHAlfo.js} +2 -4
  82. package/dist/assets/{kol-alert.entry-CNzUQYLU.js.map → kol-alert.entry-DASHAlfo.js.map} +1 -1
  83. package/dist/assets/kol-avatar-wc.entry-Cx63Nu5Q.js +2 -0
  84. package/dist/assets/{kol-avatar-wc.entry-BblqyWKG.js.map → kol-avatar-wc.entry-Cx63Nu5Q.js.map} +1 -1
  85. package/dist/assets/{kol-avatar.entry-DUW_BVfA.js → kol-avatar.entry-Byl5EvRa.js} +2 -4
  86. package/dist/assets/{kol-avatar.entry-DUW_BVfA.js.map → kol-avatar.entry-Byl5EvRa.js.map} +1 -1
  87. package/dist/assets/{kol-badge.entry-C3zN15_z.js → kol-badge.entry-BvNpUkJE.js} +2 -4
  88. package/dist/assets/{kol-badge.entry-C3zN15_z.js.map → kol-badge.entry-BvNpUkJE.js.map} +1 -1
  89. package/dist/assets/{kol-breadcrumb.entry--_VVs4l-.js → kol-breadcrumb.entry-XZtQNOzH.js} +8 -15
  90. package/dist/assets/{kol-breadcrumb.entry--_VVs4l-.js.map → kol-breadcrumb.entry-XZtQNOzH.js.map} +1 -1
  91. package/dist/assets/{kol-button-link.entry-Br3472GN.js → kol-button-link.entry-BQAYx_Xz.js} +5 -7
  92. package/dist/assets/{kol-button-link.entry-Br3472GN.js.map → kol-button-link.entry-BQAYx_Xz.js.map} +1 -1
  93. package/dist/assets/kol-button-wc.entry-DsKPRSoi.js +2 -0
  94. package/dist/assets/kol-button-wc.entry-DsKPRSoi.js.map +1 -0
  95. package/dist/assets/{kol-button.entry-BaZ02nHO.js → kol-button.entry-CQ89F9cR.js} +2 -4
  96. package/dist/assets/{kol-button.entry-BaZ02nHO.js.map → kol-button.entry-CQ89F9cR.js.map} +1 -1
  97. package/dist/assets/kol-card-wc.entry-BzOw18M5.js +2 -0
  98. package/dist/assets/{kol-card-wc.entry-BoWT-ryV.js.map → kol-card-wc.entry-BzOw18M5.js.map} +1 -1
  99. package/dist/assets/{kol-card.entry-Bdt_-GvY.js → kol-card.entry-B5DavjMI.js} +2 -4
  100. package/dist/assets/{kol-card.entry-Bdt_-GvY.js.map → kol-card.entry-B5DavjMI.js.map} +1 -1
  101. package/dist/assets/kol-combobox.entry-BVNTXxnW.js +383 -0
  102. package/dist/assets/kol-combobox.entry-BVNTXxnW.js.map +1 -0
  103. package/dist/assets/{kol-details.entry-BfD1K4If.js → kol-details.entry-_ocJvMoV.js} +22 -19
  104. package/dist/assets/kol-details.entry-_ocJvMoV.js.map +1 -0
  105. package/dist/assets/{kol-drawer.entry-c11KWvha.js → kol-drawer.entry-Bp75-2El.js} +3 -5
  106. package/dist/assets/{kol-drawer.entry-c11KWvha.js.map → kol-drawer.entry-Bp75-2El.js.map} +1 -1
  107. package/dist/assets/{kol-form.entry-D-LVNbGl.js → kol-form.entry-BH0DuQHl.js} +6 -8
  108. package/dist/assets/{kol-form.entry-D-LVNbGl.js.map → kol-form.entry-BH0DuQHl.js.map} +1 -1
  109. package/dist/assets/{kol-heading.entry-CCNAcKwT.js → kol-heading.entry-BRjLPTZ3.js} +3 -5
  110. package/dist/assets/{kol-heading.entry-CCNAcKwT.js.map → kol-heading.entry-BRjLPTZ3.js.map} +1 -1
  111. package/dist/assets/{kol-icon.entry-DbZ8n3YR.js → kol-icon.entry-CS4a7PO8.js} +4 -5
  112. package/dist/assets/{kol-icon.entry-DbZ8n3YR.js.map → kol-icon.entry-CS4a7PO8.js.map} +1 -1
  113. package/dist/assets/{kol-image.entry-Doe1SGMb.js → kol-image.entry-DEKfsEr7.js} +3 -5
  114. package/dist/assets/{kol-image.entry-Doe1SGMb.js.map → kol-image.entry-DEKfsEr7.js.map} +1 -1
  115. package/dist/assets/{kol-input-checkbox.entry-Bn3dg1V8.js → kol-input-checkbox.entry-DLSp08MY.js} +5 -7
  116. package/dist/assets/kol-input-checkbox.entry-DLSp08MY.js.map +1 -0
  117. package/dist/assets/{kol-input-color.entry-0XDQSN0x.js → kol-input-color.entry-B9jsLDA5.js} +5 -7
  118. package/dist/assets/kol-input-color.entry-B9jsLDA5.js.map +1 -0
  119. package/dist/assets/{kol-input-date.entry-CVwl1xfx.js → kol-input-date.entry-DqggZAXt.js} +5 -7
  120. package/dist/assets/kol-input-date.entry-DqggZAXt.js.map +1 -0
  121. package/dist/assets/{kol-input-email.entry-D4pj5A7b.js → kol-input-email.entry-1kiNZ5V9.js} +5 -7
  122. package/dist/assets/kol-input-email.entry-1kiNZ5V9.js.map +1 -0
  123. package/dist/assets/{kol-input-file.entry-C8xPfnOP.js → kol-input-file.entry-BRwKf8nn.js} +5 -7
  124. package/dist/assets/kol-input-file.entry-BRwKf8nn.js.map +1 -0
  125. package/dist/assets/{kol-input-number.entry-DwCXhQWQ.js → kol-input-number.entry-CSbBQj7S.js} +5 -7
  126. package/dist/assets/kol-input-number.entry-CSbBQj7S.js.map +1 -0
  127. package/dist/assets/{kol-input-password.entry-Q-lcjouP.js → kol-input-password.entry-DN8o8Cqb.js} +5 -7
  128. package/dist/assets/kol-input-password.entry-DN8o8Cqb.js.map +1 -0
  129. package/dist/assets/{kol-input-radio.entry-CciQW3YW.js → kol-input-radio.entry-Cpm71DCv.js} +5 -7
  130. package/dist/assets/kol-input-radio.entry-Cpm71DCv.js.map +1 -0
  131. package/dist/assets/{kol-input-range.entry-iU6Li2fT.js → kol-input-range.entry-3QF0MIG9.js} +11 -13
  132. package/dist/assets/kol-input-range.entry-3QF0MIG9.js.map +1 -0
  133. package/dist/assets/{kol-input-text.entry-PHh_wEiq.js → kol-input-text.entry-CNTUIU2O.js} +5 -7
  134. package/dist/assets/kol-input-text.entry-CNTUIU2O.js.map +1 -0
  135. package/dist/assets/{kol-kolibri.entry-BR0b_jra.js → kol-kolibri.entry-CDvl4QUY.js} +3 -5
  136. package/dist/assets/{kol-kolibri.entry-BR0b_jra.js.map → kol-kolibri.entry-CDvl4QUY.js.map} +1 -1
  137. package/dist/assets/{kol-link-button.entry-CunQFFKa.js → kol-link-button.entry-BFvz8SnG.js} +3 -5
  138. package/dist/assets/{kol-link-button.entry-CunQFFKa.js.map → kol-link-button.entry-BFvz8SnG.js.map} +1 -1
  139. package/dist/assets/kol-link-wc.entry-BazRizfV.js +2 -0
  140. package/dist/assets/kol-link-wc.entry-BazRizfV.js.map +1 -0
  141. package/dist/assets/{kol-link.entry-C6_wnPZ-.js → kol-link.entry-CMunyNIu.js} +6 -8
  142. package/dist/assets/{kol-link.entry-C6_wnPZ-.js.map → kol-link.entry-CMunyNIu.js.map} +1 -1
  143. package/dist/assets/{kol-modal.entry-DsZdFm5_.js → kol-modal.entry-F-R_xzIA.js} +3 -5
  144. package/dist/assets/{kol-modal.entry-DsZdFm5_.js.map → kol-modal.entry-F-R_xzIA.js.map} +1 -1
  145. package/dist/assets/{kol-nav.entry-CSfQbw6S.js → kol-nav.entry-u5wOI4vk.js} +3 -5
  146. package/dist/assets/{kol-nav.entry-CSfQbw6S.js.map → kol-nav.entry-u5wOI4vk.js.map} +1 -1
  147. package/dist/assets/kol-pagination-wc.entry-Beo7gQfz.js +2 -0
  148. package/dist/assets/{kol-pagination-wc.entry-DI1SD0UY.js.map → kol-pagination-wc.entry-Beo7gQfz.js.map} +1 -1
  149. package/dist/assets/{kol-pagination.entry-gk3T6sII.js → kol-pagination.entry-BUijXjy8.js} +3 -5
  150. package/dist/assets/{kol-pagination.entry-gk3T6sII.js.map → kol-pagination.entry-BUijXjy8.js.map} +1 -1
  151. package/dist/assets/kol-popover-button-wc.entry-Bng6RPAJ.js +2 -0
  152. package/dist/assets/kol-popover-button-wc.entry-Bng6RPAJ.js.map +1 -0
  153. package/dist/assets/{kol-popover-button.entry-C7lTlK8K.js → kol-popover-button.entry-DwTOCPZS.js} +3 -5
  154. package/dist/assets/{kol-popover-button.entry-C7lTlK8K.js.map → kol-popover-button.entry-DwTOCPZS.js.map} +1 -1
  155. package/dist/assets/kol-popover-wc.entry-BKuPUyr0.js +2 -0
  156. package/dist/assets/kol-popover-wc.entry-BKuPUyr0.js.map +1 -0
  157. package/dist/assets/{kol-progress.entry-kqMDpH9z.js → kol-progress.entry-DxPfIKvK.js} +3 -5
  158. package/dist/assets/{kol-progress.entry-kqMDpH9z.js.map → kol-progress.entry-DxPfIKvK.js.map} +1 -1
  159. package/dist/assets/{kol-quote.entry-CMPN1qSV.js → kol-quote.entry-Vk2kWy8T.js} +6 -8
  160. package/dist/assets/{kol-quote.entry-CMPN1qSV.js.map → kol-quote.entry-Vk2kWy8T.js.map} +1 -1
  161. package/dist/assets/{kol-select.entry-FMTmeJJJ.js → kol-select.entry-XtN1WxvM.js} +8 -8
  162. package/dist/assets/{kol-select.entry-FMTmeJJJ.js.map → kol-select.entry-XtN1WxvM.js.map} +1 -1
  163. package/dist/assets/kol-single-select.entry-CxWVHaiY.js +393 -0
  164. package/dist/assets/kol-single-select.entry-CxWVHaiY.js.map +1 -0
  165. package/dist/assets/{kol-skip-nav.entry-DafyzlxB.js → kol-skip-nav.entry-CkNoAkR1.js} +3 -5
  166. package/dist/assets/{kol-skip-nav.entry-DafyzlxB.js.map → kol-skip-nav.entry-CkNoAkR1.js.map} +1 -1
  167. package/dist/assets/{kol-spin.entry-BY2L9jhT.js → kol-spin.entry-DMsjq3Y8.js} +3 -5
  168. package/dist/assets/{kol-spin.entry-BY2L9jhT.js.map → kol-spin.entry-DMsjq3Y8.js.map} +1 -1
  169. package/dist/assets/{kol-split-button.entry-BFNmHzhp.js → kol-split-button.entry-DnVZqlow.js} +3 -5
  170. package/dist/assets/{kol-split-button.entry-BFNmHzhp.js.map → kol-split-button.entry-DnVZqlow.js.map} +1 -1
  171. package/dist/assets/kol-table-settings-wc.entry-CAxpiZhe.js +2 -0
  172. package/dist/assets/kol-table-settings-wc.entry-CAxpiZhe.js.map +1 -0
  173. package/dist/assets/{kol-table-stateful.entry-CYI7kfSl.js → kol-table-stateful.entry-Blyftzt3.js} +10 -12
  174. package/dist/assets/kol-table-stateful.entry-Blyftzt3.js.map +1 -0
  175. package/dist/assets/kol-table-stateless-wc.entry-D6bs_fzZ.js +2 -0
  176. package/dist/assets/kol-table-stateless-wc.entry-D6bs_fzZ.js.map +1 -0
  177. package/dist/assets/{kol-table-stateless.entry-hMXFjEhF.js → kol-table-stateless.entry-B5XgTqYF.js} +10 -12
  178. package/dist/assets/{kol-table-stateless.entry-hMXFjEhF.js.map → kol-table-stateless.entry-B5XgTqYF.js.map} +1 -1
  179. package/dist/assets/{kol-tabs.entry-CSiT-Vja.js → kol-tabs.entry-BjI6AVpx.js} +3 -5
  180. package/dist/assets/{kol-tabs.entry-CSiT-Vja.js.map → kol-tabs.entry-BjI6AVpx.js.map} +1 -1
  181. package/dist/assets/{kol-textarea.entry-DJ_7Lsr5.js → kol-textarea.entry-DXPKA0rU.js} +5 -7
  182. package/dist/assets/kol-textarea.entry-DXPKA0rU.js.map +1 -0
  183. package/dist/assets/{kol-toast-container.entry-D8Xpm0Xn.js → kol-toast-container.entry-cSP2tj7K.js} +3 -5
  184. package/dist/assets/{kol-toast-container.entry-D8Xpm0Xn.js.map → kol-toast-container.entry-cSP2tj7K.js.map} +1 -1
  185. package/dist/assets/{kol-toolbar.entry-9ySC-BAN.js → kol-toolbar.entry-5pE--mg2.js} +3 -5
  186. package/dist/assets/{kol-toolbar.entry-9ySC-BAN.js.map → kol-toolbar.entry-5pE--mg2.js.map} +1 -1
  187. package/dist/assets/kol-tooltip-wc.entry-BC93qUWi.js +2 -0
  188. package/dist/assets/kol-tooltip-wc.entry-BC93qUWi.js.map +1 -0
  189. package/dist/assets/kol-tree-item-wc.entry-CPXL_1YQ.js +2 -0
  190. package/dist/assets/{kol-tree-item-wc.entry-Di09kCIU.js.map → kol-tree-item-wc.entry-CPXL_1YQ.js.map} +1 -1
  191. package/dist/assets/{kol-tree-item.entry-dMSBzhie.js → kol-tree-item.entry--YaFm8Rm.js} +3 -5
  192. package/dist/assets/{kol-tree-item.entry-dMSBzhie.js.map → kol-tree-item.entry--YaFm8Rm.js.map} +1 -1
  193. package/dist/assets/kol-tree-wc.entry-BxVxJHvA.js +2 -0
  194. package/dist/assets/{kol-tree-wc.entry-BOC80-CT.js.map → kol-tree-wc.entry-BxVxJHvA.js.map} +1 -1
  195. package/dist/assets/{kol-tree.entry-DAhnyulw.js → kol-tree.entry-1tbzKjrd.js} +3 -5
  196. package/dist/assets/{kol-tree.entry-DAhnyulw.js.map → kol-tree.entry-1tbzKjrd.js.map} +1 -1
  197. package/dist/assets/{kol-version.entry-MhIHSMgx.js → kol-version.entry-C-jjpRaS.js} +3 -5
  198. package/dist/assets/{kol-version.entry-MhIHSMgx.js.map → kol-version.entry-C-jjpRaS.js.map} +1 -1
  199. package/dist/assets/label-Dnmzb2S_-_pvd9A5V.js +2 -0
  200. package/dist/assets/{label-Dnmzb2S_-DuyBXWC_.js.map → label-Dnmzb2S_-_pvd9A5V.js.map} +1 -1
  201. package/dist/assets/link-variant-DQEKOyAU-K7xIv30i.js +2 -0
  202. package/dist/assets/{link-variant-DQEKOyAU-Ct9RtX1_.js.map → link-variant-DQEKOyAU-K7xIv30i.js.map} +1 -1
  203. package/dist/assets/{markdown-BSkXjaSn-CrcoKTw6.js → markdown-BSkXjaSn-Cy5pspEb.js} +9 -11
  204. package/dist/assets/{markdown-BSkXjaSn-CrcoKTw6.js.map → markdown-BSkXjaSn-Cy5pspEb.js.map} +1 -1
  205. package/dist/assets/max-length-behavior-nTw1Zuyf-Cgf2vlBP.js +2 -0
  206. package/dist/assets/{max-length-behavior-nTw1Zuyf-GucXJFxa.js.map → max-length-behavior-nTw1Zuyf-Cgf2vlBP.js.map} +1 -1
  207. package/dist/assets/multiple-Cj3JQafH-D12G8srw.js +2 -0
  208. package/dist/assets/{multiple-Cj3JQafH-CDntOvdZ.js.map → multiple-Cj3JQafH-D12G8srw.js.map} +1 -1
  209. package/dist/assets/open-CbvHO4XG-BZcaF3U5.js +2 -0
  210. package/dist/assets/{open-CbvHO4XG-BCQ9q6gh.js.map → open-CbvHO4XG-BZcaF3U5.js.map} +1 -1
  211. package/dist/assets/orientation-eCMt8CD1-Cmz-Wxk0.js +2 -0
  212. package/dist/assets/{orientation-eCMt8CD1-C96vm09b.js.map → orientation-eCMt8CD1-Cmz-Wxk0.js.map} +1 -1
  213. package/dist/assets/placeholder-BVhy3BzI-CGWxPlOb.js +2 -0
  214. package/dist/assets/{placeholder-BVhy3BzI-CI6o3wD7.js.map → placeholder-BVhy3BzI-CGWxPlOb.js.map} +1 -1
  215. package/dist/assets/read-only-BetTuumR-vgRJvCj3.js +2 -0
  216. package/dist/assets/{read-only-BetTuumR-CipqDJTL.js.map → read-only-BetTuumR-vgRJvCj3.js.map} +1 -1
  217. package/dist/assets/required-CnTTpFCN-C8cT0f41.js +2 -0
  218. package/dist/assets/{required-CnTTpFCN-BJy5YV3r.js.map → required-CnTTpFCN-C8cT0f41.js.map} +1 -1
  219. package/dist/assets/reuse-CX4AQDkS-BaVSFETn.js +2 -0
  220. package/dist/assets/{reuse-CX4AQDkS-Cyh-fyjG.js.map → reuse-CX4AQDkS-BaVSFETn.js.map} +1 -1
  221. package/dist/assets/rows-DtS-0sp9-rWQTf4xL.js +2 -0
  222. package/dist/assets/{rows-DtS-0sp9-DJxBfTGp.js.map → rows-DtS-0sp9-rWQTf4xL.js.map} +1 -1
  223. package/dist/assets/show-DdPK3aM7-C21yLepo.js +2 -0
  224. package/dist/assets/{show-DdPK3aM7-BuMisXZl.js.map → show-DdPK3aM7-C21yLepo.js.map} +1 -1
  225. package/dist/assets/spell-check-B9ot-4t--D4g0vi5m.js +2 -0
  226. package/dist/assets/{spell-check-B9ot-4t--BhdHVhbC.js.map → spell-check-B9ot-4t--D4g0vi5m.js.map} +1 -1
  227. package/dist/assets/suggestions-B-jLvT4L-uahI3_TA.js +2 -0
  228. package/dist/assets/{suggestions-B-jLvT4L-DDe9bNUy.js.map → suggestions-B-jLvT4L-uahI3_TA.js.map} +1 -1
  229. package/dist/assets/table-settings-DxLvhwRE-DPkpRuV6.js +2 -0
  230. package/dist/assets/{table-settings-DxLvhwRE-CduVPZXa.js.map → table-settings-DxLvhwRE-DPkpRuV6.js.map} +1 -1
  231. package/dist/assets/test-component.entry-B4H-SYnm.js +2 -0
  232. package/dist/assets/{test-component.entry-BL3eLwXM.js.map → test-component.entry-B4H-SYnm.js.map} +1 -1
  233. package/dist/assets/tooltip-align-Cnin7S26-DQNRYQGf.js +2 -0
  234. package/dist/assets/{tooltip-align-Cnin7S26-CqWSaesg.js.map → tooltip-align-Cnin7S26-DQNRYQGf.js.map} +1 -1
  235. package/dist/assets/tooltip-open-tracking-rBbBgPWP-DRkgcff2.js +2 -0
  236. package/dist/assets/{tooltip-open-tracking-rBbBgPWP-CZrYVTp5.js.map → tooltip-open-tracking-rBbBgPWP-DRkgcff2.js.map} +1 -1
  237. package/dist/assets/tslib.es6-CxX45GIN-BGVaTf34.js +2 -0
  238. package/dist/assets/{tslib.es6-CxX45GIN-BAJoBDh7.js.map → tslib.es6-CxX45GIN-BGVaTf34.js.map} +1 -1
  239. package/dist/assets/unique-nav-labels-CrfmPC99-CjJT8D59.js +2 -0
  240. package/dist/assets/{unique-nav-labels-CrfmPC99-CdxUbk1s.js.map → unique-nav-labels-CrfmPC99-CjJT8D59.js.map} +1 -1
  241. package/dist/assets/validation-BfjI5un_-4k_Ce5Rv.js +2 -0
  242. package/dist/assets/{validation-BfjI5un_-BhDYUf6-.js.map → validation-BfjI5un_-4k_Ce5Rv.js.map} +1 -1
  243. package/dist/assets/validation-aqgnZOL6-DoSUHbqm.js +2 -0
  244. package/dist/assets/{validation-aqgnZOL6-Vhr1set_.js.map → validation-aqgnZOL6-DoSUHbqm.js.map} +1 -1
  245. package/dist/index.html +2 -2
  246. package/package.json +24 -27
  247. package/src/components/accordion/basic.tsx +9 -5
  248. package/src/components/breadcrumb/basic.tsx +1 -0
  249. package/src/components/button/icons.tsx +0 -1
  250. package/src/components/handout/basic.tsx +9 -2
  251. package/src/components/input-number/number-formatter.tsx +215 -0
  252. package/src/components/input-number/routes.ts +2 -0
  253. package/src/components/input-text/partials/cases.tsx +4 -3
  254. package/src/components/input-text/text-formatter.tsx +129 -102
  255. package/src/components/table/multi-sort.tsx +38 -70
  256. package/src/components/table/predefined-settings.tsx +3 -3
  257. package/src/components/table/routes.ts +2 -0
  258. package/src/components/table/settings-column-options.tsx +58 -0
  259. package/src/components/table/stateful-with-selection.tsx +1 -1
  260. package/src/components/table/stateful-with-single-selection.tsx +1 -1
  261. package/src/components/table/stateless-with-selection.tsx +2 -2
  262. package/src/components/table/stateless-with-settings-menu.tsx +58 -6
  263. package/src/components/table/stateless-with-single-selection.tsx +2 -2
  264. package/src/components/table/sticky-header.tsx +8 -10
  265. package/src/components/table/test-complex-data.ts +204 -2141
  266. package/src/react.main.tsx +1 -1
  267. package/src/scenarios/appointment-form/AppointmentForm.tsx +115 -97
  268. package/src/scenarios/appointment-form/AvailableAppointmentsForm.tsx +83 -75
  269. package/src/scenarios/appointment-form/DistrictForm.tsx +49 -49
  270. package/src/scenarios/appointment-form/PersonalInformationForm.tsx +110 -144
  271. package/src/scenarios/appointment-form/Summary.tsx +11 -10
  272. package/src/scenarios/appointment-form/formUtils.ts +26 -7
  273. package/src/scenarios/sample-form-with-validation.tsx +37 -69
  274. package/src/style.scss +9 -10
  275. package/dist/assets/Alert-Bjkk9lQv-ARqglia_.js +0 -4
  276. package/dist/assets/Collapsible-IuDix1Q--Clfk9PjU.js +0 -4
  277. package/dist/assets/CustomSuggestionsToggle-DZmSWiAa-BTwKHo2H.js +0 -4
  278. package/dist/assets/CustomSuggestionsToggle-DZmSWiAa-BTwKHo2H.js.map +0 -1
  279. package/dist/assets/FieldControlStateWrapper-DW4yI_q9-Bonm2OcB.js +0 -4
  280. package/dist/assets/FormFieldStateWrapper-C48vTgbZ-sskh_yfO.js +0 -4
  281. package/dist/assets/FormFieldStateWrapper-C48vTgbZ-sskh_yfO.js.map +0 -1
  282. package/dist/assets/Heading-Bgh5mGuN-NZ2eqsFZ.js +0 -4
  283. package/dist/assets/Icon-BwahBiNp-UizyCGpl.js +0 -4
  284. package/dist/assets/Icon-BwahBiNp-UizyCGpl.js.map +0 -1
  285. package/dist/assets/Input-iXL6EXuW-CiyhDO1S.js +0 -4
  286. package/dist/assets/InputStateWrapper-BskUoUzv-Y1QuPvo7.js +0 -4
  287. package/dist/assets/InternalUnderlinedBadgeText-Ba_Akx7b-YDli6NRt.js +0 -4
  288. package/dist/assets/Span-CS0Z30Mv-DkVBt8xF.js +0 -4
  289. package/dist/assets/access-and-short-key-B37XLwy2-BBCIaEXs.js +0 -4
  290. package/dist/assets/align-D-ifSKu8-DHxE7OrW.js +0 -4
  291. package/dist/assets/align-floating-elements-BkpeqvtE-CQbyIoMm.js +0 -4
  292. package/dist/assets/associated.controller-ByY2WiIp-D-SArd22.js +0 -4
  293. package/dist/assets/auto-complete-mCkUnxg2-CPy57VVu.js +0 -4
  294. package/dist/assets/clsx-eK3rPvPS-BT_IL7Fz.js +0 -4
  295. package/dist/assets/clsx-eK3rPvPS-BT_IL7Fz.js.map +0 -1
  296. package/dist/assets/color-BOIEtqEM-L8c8JCkp.js +0 -4
  297. package/dist/assets/controller-C5Ill7ej-DA9_ZpJu.js +0 -4
  298. package/dist/assets/controller-C5WSxdih-C0Th29pR.js +0 -4
  299. package/dist/assets/controller-CX1IIODr-BkmhUxT6.js +0 -4
  300. package/dist/assets/controller-icon-Bj9jDliX-GITfFrxl.js +0 -4
  301. package/dist/assets/controller-mXm-vPdA-B6Pyo-EF.js +0 -4
  302. package/dist/assets/custom-class-nuoQ9Aml-DkG_pprU.js +0 -4
  303. package/dist/assets/devtools-DSsrYXN7-E4mOPBwO.js +0 -16
  304. package/dist/assets/disabled-BhpAFgSp-By2R53CP.js +0 -4
  305. package/dist/assets/has-closer-CQzjaTkv-CJOSQHj3.js +0 -4
  306. package/dist/assets/hide-label-B9FhGrWP-DKlgXtKv.js +0 -4
  307. package/dist/assets/href-rwDd36rS-CEz5jHM0.js +0 -4
  308. package/dist/assets/i18n-C5ifExT3-Biq4UyHg.js +0 -4
  309. package/dist/assets/i18n-C5ifExT3-Biq4UyHg.js.map +0 -1
  310. package/dist/assets/icons-B5i9zwjJ-Dzqwsqxx.js +0 -4
  311. package/dist/assets/image-source-BfBEJ0rX-BecuGTZi.js +0 -4
  312. package/dist/assets/index-CQ_Buelw.js.map +0 -1
  313. package/dist/assets/isObject-DvSELytj-B0RigBxT.js +0 -4
  314. package/dist/assets/keyboard-D6PoWr38-Bn_Qh8Bq.js +0 -4
  315. package/dist/assets/kol-accordion.entry-CV7ohUuG.js.map +0 -1
  316. package/dist/assets/kol-alert-wc.entry-CYKnpWcF.js +0 -4
  317. package/dist/assets/kol-avatar-wc.entry-BblqyWKG.js +0 -4
  318. package/dist/assets/kol-button-wc.entry-2_mO99Hh.js +0 -4
  319. package/dist/assets/kol-button-wc.entry-2_mO99Hh.js.map +0 -1
  320. package/dist/assets/kol-card-wc.entry-BoWT-ryV.js +0 -4
  321. package/dist/assets/kol-combobox.entry-0wHAnFPY.js +0 -371
  322. package/dist/assets/kol-combobox.entry-0wHAnFPY.js.map +0 -1
  323. package/dist/assets/kol-details.entry-BfD1K4If.js.map +0 -1
  324. package/dist/assets/kol-input-checkbox.entry-Bn3dg1V8.js.map +0 -1
  325. package/dist/assets/kol-input-color.entry-0XDQSN0x.js.map +0 -1
  326. package/dist/assets/kol-input-date.entry-CVwl1xfx.js.map +0 -1
  327. package/dist/assets/kol-input-email.entry-D4pj5A7b.js.map +0 -1
  328. package/dist/assets/kol-input-file.entry-C8xPfnOP.js.map +0 -1
  329. package/dist/assets/kol-input-number.entry-DwCXhQWQ.js.map +0 -1
  330. package/dist/assets/kol-input-password.entry-Q-lcjouP.js.map +0 -1
  331. package/dist/assets/kol-input-radio.entry-CciQW3YW.js.map +0 -1
  332. package/dist/assets/kol-input-range.entry-iU6Li2fT.js.map +0 -1
  333. package/dist/assets/kol-input-text.entry-PHh_wEiq.js.map +0 -1
  334. package/dist/assets/kol-link-wc.entry-xTBYHT0z.js +0 -4
  335. package/dist/assets/kol-link-wc.entry-xTBYHT0z.js.map +0 -1
  336. package/dist/assets/kol-pagination-wc.entry-DI1SD0UY.js +0 -4
  337. package/dist/assets/kol-popover-button-wc.entry-BfyJh1Tk.js +0 -4
  338. package/dist/assets/kol-popover-button-wc.entry-BfyJh1Tk.js.map +0 -1
  339. package/dist/assets/kol-popover-wc.entry-BRbFm4ZE.js +0 -4
  340. package/dist/assets/kol-popover-wc.entry-BRbFm4ZE.js.map +0 -1
  341. package/dist/assets/kol-single-select.entry-J9fTeb4w.js +0 -387
  342. package/dist/assets/kol-single-select.entry-J9fTeb4w.js.map +0 -1
  343. package/dist/assets/kol-table-settings-wc.entry-M3lIgfdY.js +0 -4
  344. package/dist/assets/kol-table-settings-wc.entry-M3lIgfdY.js.map +0 -1
  345. package/dist/assets/kol-table-stateful.entry-CYI7kfSl.js.map +0 -1
  346. package/dist/assets/kol-table-stateless-wc.entry-C4MdwyvP.js +0 -4
  347. package/dist/assets/kol-table-stateless-wc.entry-C4MdwyvP.js.map +0 -1
  348. package/dist/assets/kol-textarea.entry-DJ_7Lsr5.js.map +0 -1
  349. package/dist/assets/kol-tooltip-wc.entry-tWLuyz_1.js +0 -4
  350. package/dist/assets/kol-tooltip-wc.entry-tWLuyz_1.js.map +0 -1
  351. package/dist/assets/kol-tree-item-wc.entry-Di09kCIU.js +0 -4
  352. package/dist/assets/kol-tree-wc.entry-BOC80-CT.js +0 -4
  353. package/dist/assets/label-Dnmzb2S_-DuyBXWC_.js +0 -4
  354. package/dist/assets/link-variant-DQEKOyAU-Ct9RtX1_.js +0 -4
  355. package/dist/assets/max-length-behavior-nTw1Zuyf-GucXJFxa.js +0 -4
  356. package/dist/assets/multiple-Cj3JQafH-CDntOvdZ.js +0 -4
  357. package/dist/assets/open-CbvHO4XG-BCQ9q6gh.js +0 -4
  358. package/dist/assets/orientation-eCMt8CD1-C96vm09b.js +0 -4
  359. package/dist/assets/placeholder-BVhy3BzI-CI6o3wD7.js +0 -4
  360. package/dist/assets/read-only-BetTuumR-CipqDJTL.js +0 -4
  361. package/dist/assets/required-CnTTpFCN-BJy5YV3r.js +0 -4
  362. package/dist/assets/reuse-CX4AQDkS-Cyh-fyjG.js +0 -4
  363. package/dist/assets/rows-DtS-0sp9-DJxBfTGp.js +0 -4
  364. package/dist/assets/show-DdPK3aM7-BuMisXZl.js +0 -4
  365. package/dist/assets/spell-check-B9ot-4t--BhdHVhbC.js +0 -4
  366. package/dist/assets/suggestions-B-jLvT4L-DDe9bNUy.js +0 -4
  367. package/dist/assets/table-settings-DxLvhwRE-CduVPZXa.js +0 -4
  368. package/dist/assets/test-component.entry-BL3eLwXM.js +0 -4
  369. package/dist/assets/tooltip-align-Cnin7S26-CqWSaesg.js +0 -4
  370. package/dist/assets/tooltip-open-tracking-rBbBgPWP-CZrYVTp5.js +0 -4
  371. package/dist/assets/tslib.es6-CxX45GIN-BAJoBDh7.js +0 -4
  372. package/dist/assets/unique-nav-labels-CrfmPC99-CdxUbk1s.js +0 -4
  373. package/dist/assets/validation-BfjI5un_-BhDYUf6-.js +0 -4
  374. package/dist/assets/validation-aqgnZOL6-Vhr1set_.js +0 -4
@@ -0,0 +1,215 @@
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';
5
+
6
+ import { SampleDescription } from '../SampleDescription';
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
+
15
+ class NumberFormatter {
16
+ public parse(value: unknown): string {
17
+ if (value === undefined || value === null || value === '') {
18
+ return '';
19
+ }
20
+
21
+ const stringValue = String(value);
22
+ return stringValue.replace(/[eE.,]/g, '').replace(/\d[+-]/g, '');
23
+ }
24
+ }
25
+
26
+ const disallowedCharactersPattern = /[.,+eE]/;
27
+
28
+ const preventInvalidKeyDown = (event: KeyboardEvent) => {
29
+ if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && disallowedCharactersPattern.test(event.key)) {
30
+ event.preventDefault();
31
+ }
32
+ };
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
+
144
+ export function InputNumberNumberFormatter() {
145
+ const formatter = new NumberFormatter();
146
+ const [displayValue, setDisplayValue] = React.useState<number | undefined>(undefined);
147
+ const [value, setValue] = React.useState<number | undefined>(-128);
148
+ const [touched, setTouched] = React.useState(false);
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
+
165
+ return (
166
+ <>
167
+ <SampleDescription>
168
+ <p>
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.
171
+ </p>
172
+ </SampleDescription>
173
+ <section className="w-full grid gap-4">
174
+ <div>
175
+ <KolForm>
176
+ <KolInputNumber
177
+ _label="Whole number"
178
+ _step={1}
179
+ _value={displayValue ?? value}
180
+ _on={{
181
+ onKeyDown: preventInvalidKeyDown,
182
+ onBlur: () => {
183
+ setTouched(true);
184
+ },
185
+ onInput: (_event: Event, inputValue: unknown) => {
186
+ const cleaned = formatter.parse(inputValue);
187
+ const numValue = cleaned === '' ? undefined : Number(cleaned);
188
+
189
+ setDisplayValue(numValue);
190
+ setValue(numValue);
191
+ },
192
+ }}
193
+ />
194
+ </KolForm>
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>
211
+ </div>
212
+ </section>
213
+ </>
214
+ );
215
+ }
@@ -1,8 +1,10 @@
1
1
  import { Routes } from '../../shares/types';
2
2
  import { InputNumberBasic } from './basic';
3
+ import { InputNumberNumberFormatter } from './number-formatter';
3
4
 
4
5
  export const INPUT_NUMBER_ROUTES: Routes = {
5
6
  'input-number': {
6
7
  basic: InputNumberBasic,
8
+ 'number-formatter': InputNumberNumberFormatter,
7
9
  },
8
10
  };
@@ -38,14 +38,15 @@ export const InputTextCases = forwardRef<HTMLKolInputTextElement, Components.Kol
38
38
  _accessKey="V"
39
39
  ref={ref}
40
40
  />
41
+ <KolInputText {...props} _value="Value" _label="With icon right" _icons="codicon codicon-home" />
41
42
  <KolInputText {...props} _placeholder="Placeholder" _msg={{ _type: 'info', _description: 'Just a hint' }} _label="Search" _type="search" />
42
43
  <KolInputText {...props} _placeholder="Placeholder" _msg={{ _type: 'error', _description: ERROR_MSG }} _touched _type="url" _label="URL (url)" />
43
44
  <KolInputText {...props} _placeholder="Placeholder" _type="tel" _label="Telephone (tel)" _msg={{ _type: 'warning', _description: 'Small warning' }} />
44
45
  <KolInputText {...props} _placeholder="Placeholder" _type="tel" _label="Telephone (tel)" _msg={{ _type: 'success', _description: 'Success message' }} />
45
46
  <KolInputText {...props} _placeholder="Placeholder" _label="With counter" _maxLength={10} _value="Lorem Ipsum" />
46
- <KolInputText {...props} _placeholder="Placeholder" _readOnly _label="First name (text, readonly)" />
47
- <KolInputText {...props} _value="Value" _readOnly _label="First name (text, readonly)" />
48
- <KolInputText {...props} _placeholder="Placeholder" _disabled _label="First name (text, disabled)" />
47
+ <KolInputText {...props} _placeholder="Placeholder" _readOnly _label="First name (placeholder)" />
48
+ <KolInputText {...props} _value="Value" _readOnly _label="First name (text)" />
49
+ <KolInputText {...props} _placeholder="Placeholder" _disabled _label="First name (placeholder, disabled)" />
49
50
  <KolInputText {...props} _value="Value" _disabled _label="First name (text, disabled)" />
50
51
  <KolInputText {...props} _value="Value" _label="With access key" _accessKey="c" />
51
52
  <KolInputText {...props} _value="Value" _label="With short key" _shortKey="s" />
@@ -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
  );
@@ -1,8 +1,8 @@
1
1
  import type { FC } from 'react';
2
2
  import React, { useState } from 'react';
3
3
 
4
- import type { KoliBriTableDataType, KoliBriTableHeaders } from '@public-ui/components';
5
- import { KolHeading, KolInputCheckbox, KolTableStateful } from '@public-ui/react-v19';
4
+ import type { KoliBriTableDataType, KoliBriTableHeaderCellWithLogic, KoliBriTableHeaders } from '@public-ui/components';
5
+ import { KolButtonLink, KolHeading, KolTableStateful } from '@public-ui/react-v19';
6
6
  import { SampleDescription } from '../SampleDescription';
7
7
  import type { Data } from './test-data';
8
8
  import { DATA } from './test-data';
@@ -13,64 +13,42 @@ const DATE_FORMATTER = Intl.DateTimeFormat('de-DE', {
13
13
  year: 'numeric',
14
14
  });
15
15
 
16
+ const TABLE_HEADER_CELLS: KoliBriTableHeaderCellWithLogic[] = [
17
+ {
18
+ label: 'order',
19
+ key: 'order',
20
+ textAlign: 'center',
21
+ compareFn: (data0: KoliBriTableDataType, data1: KoliBriTableDataType) => {
22
+ if ((data0 as Data).order < (data1 as Data).order) return -1;
23
+ else if ((data1 as Data).order < (data0 as Data).order) return 1;
24
+ else return 0;
25
+ },
26
+ sortDirection: 'ASC',
27
+ },
28
+ {
29
+ label: 'date',
30
+ key: 'date',
31
+ textAlign: 'center',
32
+ render: (_el, _cell, tupel) => DATE_FORMATTER.format((tupel as Data).date),
33
+ compareFn: (data0: KoliBriTableDataType, data1: KoliBriTableDataType) => {
34
+ if ((data0 as Data).date < (data1 as Data).date) return -1;
35
+ else if ((data1 as Data).date < (data0 as Data).date) return 1;
36
+ else return 0;
37
+ },
38
+ },
39
+ ];
40
+
16
41
  const HEADERS_HORIZONTAL: KoliBriTableHeaders = {
17
- horizontal: [
18
- [
19
- {
20
- label: 'order',
21
- key: 'order',
22
- textAlign: 'center',
23
- compareFn: (data0: KoliBriTableDataType, data1: KoliBriTableDataType) => {
24
- if ((data0 as Data).order < (data1 as Data).order) return -1;
25
- else if ((data1 as Data).order < (data0 as Data).order) return 1;
26
- else return 0;
27
- },
28
- },
29
- {
30
- label: 'date',
31
- key: 'date',
32
- textAlign: 'center',
33
- render: (_el, _cell, tupel) => DATE_FORMATTER.format((tupel as Data).date),
34
- compareFn: (data0: KoliBriTableDataType, data1: KoliBriTableDataType) => {
35
- if ((data0 as Data).date < (data1 as Data).date) return -1;
36
- else if ((data1 as Data).date < (data0 as Data).date) return 1;
37
- else return 0;
38
- },
39
- },
40
- ],
41
- ],
42
+ horizontal: [TABLE_HEADER_CELLS],
42
43
  };
43
44
 
44
45
  const HEADERS_VERTICAL: KoliBriTableHeaders = {
45
- vertical: [
46
- [
47
- {
48
- label: 'order',
49
- key: 'order',
50
- textAlign: 'center',
51
- compareFn: (data0: KoliBriTableDataType, data1: KoliBriTableDataType) => {
52
- if ((data0 as Data).order < (data1 as Data).order) return -1;
53
- else if ((data1 as Data).order < (data0 as Data).order) return 1;
54
- else return 0;
55
- },
56
- },
57
- {
58
- label: 'date',
59
- key: 'date',
60
- textAlign: 'center',
61
- render: (_el, _cell, tupel) => DATE_FORMATTER.format((tupel as Data).date),
62
- compareFn: (data0: KoliBriTableDataType, data1: KoliBriTableDataType) => {
63
- if ((data0 as Data).date < (data1 as Data).date) return -1;
64
- else if ((data1 as Data).date < (data0 as Data).date) return 1;
65
- else return 0;
66
- },
67
- },
68
- ],
69
- ],
46
+ vertical: [TABLE_HEADER_CELLS],
70
47
  };
48
+
71
49
  export const MultiSortTable: FC = () => {
72
- const [allowMultiSortVertical, setAllowMultiSortVertical] = useState(false);
73
- const [allowMultiSortHorizontal, setAllowMultiSortHorizontal] = useState(true);
50
+ const [verticallHeader, setVerticalHeader] = useState(HEADERS_VERTICAL);
51
+ const [horizontalHeader, setHorizontalHeader] = useState(HEADERS_HORIZONTAL);
74
52
  return (
75
53
  <>
76
54
  <SampleDescription>
@@ -80,36 +58,26 @@ export const MultiSortTable: FC = () => {
80
58
  <section className="w-full grid gap-4">
81
59
  <section className="grid gap-4">
82
60
  <KolHeading _level={2} _label="Vertical" />
83
- <KolInputCheckbox
84
- _checked={allowMultiSortVertical}
85
- _label="Allow Multi-Sort"
86
- _variant="switch"
87
- _on={{ onChange: (_, value) => setAllowMultiSortVertical(Boolean(value)) }}
88
- ></KolInputCheckbox>
61
+ <KolButtonLink _label="Reset Table" _on={{ onClick: () => setVerticalHeader({ vertical: [[...TABLE_HEADER_CELLS]] }) }}></KolButtonLink>
89
62
  <KolTableStateful
90
63
  _label="Sort Table with Order and Date"
91
64
  _minWidth="auto"
92
65
  _data={DATA.slice(0, 10)}
93
- _headers={HEADERS_VERTICAL}
66
+ _headers={verticallHeader}
94
67
  className="block"
95
- _allowMultiSort={allowMultiSortVertical}
68
+ _allowMultiSort={true}
96
69
  />
97
70
  </section>
98
71
  <section className="grid gap-4">
99
72
  <KolHeading _level={2} _label="Horizontal" />
100
- <KolInputCheckbox
101
- _checked={allowMultiSortHorizontal}
102
- _label="Allow Multi-Sort"
103
- _variant="switch"
104
- _on={{ onChange: (_, value) => setAllowMultiSortHorizontal(Boolean(value)) }}
105
- ></KolInputCheckbox>
73
+ <KolButtonLink _label="Reset Table" _on={{ onClick: () => setHorizontalHeader({ horizontal: [[...TABLE_HEADER_CELLS]] }) }}></KolButtonLink>
106
74
  <KolTableStateful
107
75
  _label="Sort Table with Order and Date"
108
76
  _minWidth="auto"
109
77
  _data={DATA}
110
- _headers={HEADERS_HORIZONTAL}
78
+ _headers={horizontalHeader}
111
79
  className="block"
112
- _allowMultiSort={allowMultiSortHorizontal}
80
+ _allowMultiSort={true}
113
81
  />
114
82
  </section>
115
83
  </section>
@@ -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}