@kouji-ui/core 0.1.1 → 0.1.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 (535) hide show
  1. package/fesm2022/kouji-ui-core.mjs +26789 -0
  2. package/fesm2022/kouji-ui-core.mjs.map +1 -0
  3. package/package.json +15 -7
  4. package/types/kouji-ui-core.d.ts +13545 -0
  5. package/.turbo/turbo-build.log +0 -30
  6. package/CHANGELOG.md +0 -190
  7. package/ng-package.json +0 -11
  8. package/src/a11y/.gitkeep +0 -0
  9. package/src/a11y/aria-describedby.spec.ts +0 -55
  10. package/src/a11y/aria-describedby.ts +0 -37
  11. package/src/a11y/aria-labelledby.spec.ts +0 -55
  12. package/src/a11y/aria-labelledby.ts +0 -38
  13. package/src/a11y/focus-trap.spec.ts +0 -86
  14. package/src/a11y/focus-trap.ts +0 -72
  15. package/src/a11y/index.ts +0 -10
  16. package/src/a11y/live-region.spec.ts +0 -58
  17. package/src/a11y/live-region.ts +0 -50
  18. package/src/a11y/roving-tabindex.spec.ts +0 -201
  19. package/src/a11y/roving-tabindex.ts +0 -153
  20. package/src/a11y/visually-hidden.spec.ts +0 -34
  21. package/src/a11y/visually-hidden.ts +0 -26
  22. package/src/accordion/accordion.context.ts +0 -44
  23. package/src/accordion/accordion.spec.ts +0 -242
  24. package/src/accordion/accordion.ts +0 -401
  25. package/src/accordion/index.ts +0 -8
  26. package/src/alert/alert.context.ts +0 -28
  27. package/src/alert/alert.spec.ts +0 -217
  28. package/src/alert/alert.ts +0 -417
  29. package/src/alert/config.ts +0 -46
  30. package/src/alert/index.ts +0 -19
  31. package/src/avatar/avatar-group.context.ts +0 -45
  32. package/src/avatar/avatar-group.spec.ts +0 -358
  33. package/src/avatar/avatar-group.ts +0 -259
  34. package/src/avatar/avatar.spec.ts +0 -18
  35. package/src/avatar/avatar.ts +0 -39
  36. package/src/avatar/index.ts +0 -11
  37. package/src/badge/badge.spec.ts +0 -28
  38. package/src/badge/badge.ts +0 -35
  39. package/src/badge/index.ts +0 -1
  40. package/src/breadcrumb/breadcrumb-current.ts +0 -38
  41. package/src/breadcrumb/breadcrumb-ellipsis.ts +0 -71
  42. package/src/breadcrumb/breadcrumb-item.ts +0 -41
  43. package/src/breadcrumb/breadcrumb-link.ts +0 -44
  44. package/src/breadcrumb/breadcrumb-list.ts +0 -42
  45. package/src/breadcrumb/breadcrumb-separator.ts +0 -45
  46. package/src/breadcrumb/breadcrumb.context.ts +0 -45
  47. package/src/breadcrumb/breadcrumb.spec.ts +0 -354
  48. package/src/breadcrumb/breadcrumb.ts +0 -239
  49. package/src/breadcrumb/config.ts +0 -84
  50. package/src/breadcrumb/index.ts +0 -18
  51. package/src/button/_examples/button.example.ts +0 -71
  52. package/src/button/_examples/button.finance.example.ts +0 -83
  53. package/src/button/_examples/button.retro.example.ts +0 -91
  54. package/src/button/_examples/button.sizes.example.ts +0 -60
  55. package/src/button/_examples/index.ts +0 -6
  56. package/src/button/button.spec.ts +0 -163
  57. package/src/button/button.ts +0 -142
  58. package/src/button/config.spec.ts +0 -33
  59. package/src/button/config.ts +0 -45
  60. package/src/button/index.ts +0 -2
  61. package/src/button-group/button-group.context.ts +0 -28
  62. package/src/button-group/button-group.spec.ts +0 -99
  63. package/src/button-group/button-group.ts +0 -99
  64. package/src/button-group/index.ts +0 -2
  65. package/src/calendar/calendar-day.ts +0 -102
  66. package/src/calendar/calendar-grid.ts +0 -90
  67. package/src/calendar/calendar-header.ts +0 -65
  68. package/src/calendar/calendar.context.ts +0 -53
  69. package/src/calendar/calendar.spec.ts +0 -225
  70. package/src/calendar/calendar.ts +0 -233
  71. package/src/calendar/date-utils.ts +0 -225
  72. package/src/calendar/index.ts +0 -28
  73. package/src/carousel/carousel.context.ts +0 -81
  74. package/src/carousel/carousel.spec.ts +0 -337
  75. package/src/carousel/carousel.ts +0 -919
  76. package/src/carousel/index.ts +0 -22
  77. package/src/cascade-select/cascade-select-option.ts +0 -205
  78. package/src/cascade-select/cascade-select-panel.ts +0 -106
  79. package/src/cascade-select/cascade-select-root.ts +0 -265
  80. package/src/cascade-select/cascade-select-sub-panel.ts +0 -168
  81. package/src/cascade-select/cascade-select-trigger.ts +0 -44
  82. package/src/cascade-select/cascade-select.context.ts +0 -71
  83. package/src/cascade-select/cascade-select.spec.ts +0 -241
  84. package/src/cascade-select/cascade-select.ts +0 -5
  85. package/src/cascade-select/index.ts +0 -11
  86. package/src/chart/chart.spec.ts +0 -27
  87. package/src/chart/chart.ts +0 -52
  88. package/src/chart/index.ts +0 -1
  89. package/src/chat/chat-avatar.ts +0 -31
  90. package/src/chat/chat-bubble.ts +0 -49
  91. package/src/chat/chat-footer.ts +0 -67
  92. package/src/chat/chat-header.ts +0 -41
  93. package/src/chat/chat-log.ts +0 -43
  94. package/src/chat/chat.context.ts +0 -64
  95. package/src/chat/chat.spec.ts +0 -341
  96. package/src/chat/chat.ts +0 -191
  97. package/src/chat/config.ts +0 -53
  98. package/src/chat/index.ts +0 -21
  99. package/src/checkbox/checkbox.spec.ts +0 -35
  100. package/src/checkbox/checkbox.ts +0 -89
  101. package/src/checkbox/index.ts +0 -1
  102. package/src/color-picker/color-picker.context.ts +0 -74
  103. package/src/color-picker/color-picker.spec.ts +0 -241
  104. package/src/color-picker/color-picker.ts +0 -698
  105. package/src/color-picker/color-picker.utils.ts +0 -140
  106. package/src/color-picker/index.ts +0 -28
  107. package/src/combobox/combobox-input.ts +0 -143
  108. package/src/combobox/combobox-listbox.ts +0 -49
  109. package/src/combobox/combobox-option.ts +0 -43
  110. package/src/combobox/combobox-root.ts +0 -281
  111. package/src/combobox/combobox.spec.ts +0 -75
  112. package/src/combobox/combobox.ts +0 -4
  113. package/src/combobox/index.ts +0 -4
  114. package/src/command-palette/command-empty.ts +0 -36
  115. package/src/command-palette/command-group.ts +0 -21
  116. package/src/command-palette/command-input.ts +0 -70
  117. package/src/command-palette/command-item.ts +0 -60
  118. package/src/command-palette/command-list.ts +0 -25
  119. package/src/command-palette/command-palette-dialog.ts +0 -74
  120. package/src/command-palette/command-palette-trigger.ts +0 -64
  121. package/src/command-palette/command-palette.filters.ts +0 -53
  122. package/src/command-palette/command-palette.spec.ts +0 -349
  123. package/src/command-palette/command-palette.ts +0 -204
  124. package/src/command-palette/command-separator.ts +0 -18
  125. package/src/command-palette/index.ts +0 -15
  126. package/src/confirm-popup/confirm-popup-action.ts +0 -39
  127. package/src/confirm-popup/confirm-popup-cancel.ts +0 -38
  128. package/src/confirm-popup/confirm-popup-content.ts +0 -113
  129. package/src/confirm-popup/confirm-popup-message.ts +0 -36
  130. package/src/confirm-popup/confirm-popup-trigger.ts +0 -31
  131. package/src/confirm-popup/confirm-popup.context.ts +0 -41
  132. package/src/confirm-popup/confirm-popup.spec.ts +0 -337
  133. package/src/confirm-popup/confirm-popup.ts +0 -109
  134. package/src/confirm-popup/index.ts +0 -12
  135. package/src/date-picker/date-picker-calendar.ts +0 -65
  136. package/src/date-picker/date-picker-trigger.ts +0 -215
  137. package/src/date-picker/date-picker.context.ts +0 -50
  138. package/src/date-picker/date-picker.spec.ts +0 -117
  139. package/src/date-picker/date-picker.ts +0 -127
  140. package/src/date-picker/index.ts +0 -7
  141. package/src/dialog/_examples/dialog.confirm.example.ts +0 -145
  142. package/src/dialog/_examples/dialog.example.ts +0 -106
  143. package/src/dialog/_examples/dialog.finance.example.ts +0 -121
  144. package/src/dialog/_examples/dialog.retro.example.ts +0 -126
  145. package/src/dialog/_examples/index.ts +0 -6
  146. package/src/dialog/dialog.ref.ts +0 -42
  147. package/src/dialog/dialog.service.ts +0 -66
  148. package/src/dialog/dialog.spec.ts +0 -37
  149. package/src/dialog/dialog.ts +0 -26
  150. package/src/dialog/index.ts +0 -3
  151. package/src/divider/divider.spec.ts +0 -223
  152. package/src/divider/divider.ts +0 -137
  153. package/src/divider/index.ts +0 -5
  154. package/src/drawer/drawer.ref.ts +0 -63
  155. package/src/drawer/drawer.service.ts +0 -106
  156. package/src/drawer/drawer.spec.ts +0 -117
  157. package/src/drawer/drawer.ts +0 -122
  158. package/src/drawer/index.ts +0 -10
  159. package/src/dropdown-menu/dropdown-menu-content.ts +0 -258
  160. package/src/dropdown-menu/dropdown-menu-group.ts +0 -31
  161. package/src/dropdown-menu/dropdown-menu-item.ts +0 -51
  162. package/src/dropdown-menu/dropdown-menu-label.ts +0 -41
  163. package/src/dropdown-menu/dropdown-menu-separator.ts +0 -27
  164. package/src/dropdown-menu/dropdown-menu-trigger.ts +0 -140
  165. package/src/dropdown-menu/dropdown-menu.spec.ts +0 -265
  166. package/src/dropdown-menu/dropdown-menu.ts +0 -60
  167. package/src/dropdown-menu/index.ts +0 -15
  168. package/src/example-components.ts +0 -42
  169. package/src/field/field-error.ts +0 -49
  170. package/src/field/field-group.ts +0 -39
  171. package/src/field/field-help.ts +0 -47
  172. package/src/field/field-label.ts +0 -30
  173. package/src/field/field.context.ts +0 -28
  174. package/src/field/field.spec.ts +0 -179
  175. package/src/field/field.ts +0 -121
  176. package/src/field/index.ts +0 -6
  177. package/src/file-upload/file-upload.context.ts +0 -89
  178. package/src/file-upload/file-upload.spec.ts +0 -290
  179. package/src/file-upload/file-upload.ts +0 -639
  180. package/src/file-upload/file-upload.types.ts +0 -59
  181. package/src/file-upload/index.ts +0 -23
  182. package/src/form/form-error-summary.ts +0 -87
  183. package/src/form/form-field.context.ts +0 -3
  184. package/src/form/form-field.spec.ts +0 -25
  185. package/src/form/form-field.ts +0 -52
  186. package/src/form/form.context.ts +0 -53
  187. package/src/form/form.spec.ts +0 -162
  188. package/src/form/form.ts +0 -326
  189. package/src/form/index.ts +0 -11
  190. package/src/icon/E2E.md +0 -14
  191. package/src/icon/icon.directive.spec.ts +0 -198
  192. package/src/icon/icon.directive.ts +0 -113
  193. package/src/icon/icon.mode.spec.ts +0 -29
  194. package/src/icon/icon.mode.ts +0 -23
  195. package/src/icon/icon.providers.spec.ts +0 -63
  196. package/src/icon/icon.providers.ts +0 -47
  197. package/src/icon/icon.resolver.spec.ts +0 -96
  198. package/src/icon/icon.resolver.ts +0 -49
  199. package/src/icon/icon.tokens.ts +0 -88
  200. package/src/icon/icon.types.ts +0 -48
  201. package/src/icon/index.ts +0 -21
  202. package/src/input/index.ts +0 -1
  203. package/src/input/input.spec.ts +0 -43
  204. package/src/input/input.ts +0 -89
  205. package/src/input-group/index.ts +0 -3
  206. package/src/input-group/input-group-addon.ts +0 -92
  207. package/src/input-group/input-group.context.ts +0 -27
  208. package/src/input-group/input-group.spec.ts +0 -186
  209. package/src/input-group/input-group.ts +0 -136
  210. package/src/input-mask/index.ts +0 -11
  211. package/src/input-mask/input-mask.compile.ts +0 -69
  212. package/src/input-mask/input-mask.engine.ts +0 -376
  213. package/src/input-mask/input-mask.presets.ts +0 -24
  214. package/src/input-mask/input-mask.spec.ts +0 -304
  215. package/src/input-mask/input-mask.tokens.ts +0 -49
  216. package/src/input-mask/input-mask.ts +0 -280
  217. package/src/input-otp/index.ts +0 -2
  218. package/src/input-otp/input-otp.context.ts +0 -41
  219. package/src/input-otp/input-otp.spec.ts +0 -308
  220. package/src/input-otp/input-otp.ts +0 -470
  221. package/src/kbd/index.ts +0 -1
  222. package/src/kbd/kbd.spec.ts +0 -127
  223. package/src/kbd/kbd.ts +0 -132
  224. package/src/link/config.ts +0 -44
  225. package/src/link/index.ts +0 -2
  226. package/src/link/link.spec.ts +0 -246
  227. package/src/link/link.ts +0 -226
  228. package/src/list/index.ts +0 -11
  229. package/src/list/list.spec.ts +0 -237
  230. package/src/list/list.ts +0 -277
  231. package/src/menubar/index.ts +0 -7
  232. package/src/menubar/menubar-item.ts +0 -204
  233. package/src/menubar/menubar.context.ts +0 -43
  234. package/src/menubar/menubar.spec.ts +0 -433
  235. package/src/menubar/menubar.ts +0 -309
  236. package/src/number-input/index.ts +0 -4
  237. package/src/number-input/number-input-group.ts +0 -64
  238. package/src/number-input/number-input.context.ts +0 -31
  239. package/src/number-input/number-input.format.ts +0 -148
  240. package/src/number-input/number-input.spec.ts +0 -170
  241. package/src/number-input/number-input.ts +0 -457
  242. package/src/number-input/number-stepper.ts +0 -193
  243. package/src/overlay-badge/index.ts +0 -7
  244. package/src/overlay-badge/overlay-badge-content.ts +0 -73
  245. package/src/overlay-badge/overlay-badge.context.ts +0 -37
  246. package/src/overlay-badge/overlay-badge.spec.ts +0 -220
  247. package/src/overlay-badge/overlay-badge.ts +0 -128
  248. package/src/pagination/config.ts +0 -82
  249. package/src/pagination/index.ts +0 -19
  250. package/src/pagination/page-tokens.ts +0 -78
  251. package/src/pagination/pagination-ellipsis.ts +0 -69
  252. package/src/pagination/pagination-first.ts +0 -84
  253. package/src/pagination/pagination-info.ts +0 -70
  254. package/src/pagination/pagination-item.ts +0 -81
  255. package/src/pagination/pagination-last.ts +0 -85
  256. package/src/pagination/pagination-next.ts +0 -86
  257. package/src/pagination/pagination-previous.ts +0 -90
  258. package/src/pagination/pagination.context.ts +0 -52
  259. package/src/pagination/pagination.spec.ts +0 -388
  260. package/src/pagination/pagination.ts +0 -288
  261. package/src/password-input/index.ts +0 -15
  262. package/src/password-input/password-input.context.ts +0 -65
  263. package/src/password-input/password-input.scorer.ts +0 -34
  264. package/src/password-input/password-input.spec.ts +0 -274
  265. package/src/password-input/password-input.ts +0 -488
  266. package/src/popover/_examples/index.ts +0 -5
  267. package/src/popover/_examples/popover.example.ts +0 -92
  268. package/src/popover/_examples/popover.finance.example.ts +0 -106
  269. package/src/popover/_examples/popover.retro.example.ts +0 -103
  270. package/src/popover/index.ts +0 -5
  271. package/src/popover/popover-arrow.ts +0 -30
  272. package/src/popover/popover-close.ts +0 -36
  273. package/src/popover/popover-content.ts +0 -41
  274. package/src/popover/popover-title.ts +0 -39
  275. package/src/popover/popover-trigger.ts +0 -40
  276. package/src/popover/popover.spec.ts +0 -59
  277. package/src/popover/popover.ts +0 -5
  278. package/src/presets/bind-presets.spec.ts +0 -50
  279. package/src/presets/bind-presets.ts +0 -43
  280. package/src/presets/index.ts +0 -3
  281. package/src/presets/size.spec.ts +0 -67
  282. package/src/presets/size.ts +0 -59
  283. package/src/presets/variant.spec.ts +0 -72
  284. package/src/presets/variant.ts +0 -62
  285. package/src/primitives/.gitkeep +0 -0
  286. package/src/primitives/directionality/directionality.spec.ts +0 -112
  287. package/src/primitives/directionality/directionality.ts +0 -89
  288. package/src/primitives/directionality/index.ts +0 -1
  289. package/src/primitives/forms/form-control.spec.ts +0 -67
  290. package/src/primitives/forms/form-control.ts +0 -94
  291. package/src/primitives/forms/index.ts +0 -1
  292. package/src/primitives/index.ts +0 -6
  293. package/src/primitives/interaction/disabled.spec.ts +0 -47
  294. package/src/primitives/interaction/disabled.ts +0 -31
  295. package/src/primitives/interaction/focus-ring.spec.ts +0 -62
  296. package/src/primitives/interaction/focus-ring.ts +0 -59
  297. package/src/primitives/interaction/index.ts +0 -2
  298. package/src/primitives/list/filterable-list.spec.ts +0 -114
  299. package/src/primitives/list/filterable-list.ts +0 -126
  300. package/src/primitives/list/group.spec.ts +0 -99
  301. package/src/primitives/list/group.ts +0 -139
  302. package/src/primitives/list/index.ts +0 -8
  303. package/src/primitives/list/inject-helpers.ts +0 -8
  304. package/src/primitives/list/item.spec.ts +0 -173
  305. package/src/primitives/list/item.ts +0 -222
  306. package/src/primitives/list/navigator.spec.ts +0 -286
  307. package/src/primitives/list/navigator.ts +0 -238
  308. package/src/primitives/list/selection.spec.ts +0 -214
  309. package/src/primitives/list/selection.ts +0 -339
  310. package/src/primitives/list/tokens.ts +0 -106
  311. package/src/primitives/list/type-ahead.spec.ts +0 -58
  312. package/src/primitives/list/type-ahead.ts +0 -46
  313. package/src/primitives/overlay/backdrop.spec.ts +0 -54
  314. package/src/primitives/overlay/backdrop.ts +0 -31
  315. package/src/primitives/overlay/builder.spec.ts +0 -38
  316. package/src/primitives/overlay/builder.ts +0 -151
  317. package/src/primitives/overlay/container.ts +0 -42
  318. package/src/primitives/overlay/context.ts +0 -14
  319. package/src/primitives/overlay/controller.spec.ts +0 -86
  320. package/src/primitives/overlay/controller.ts +0 -190
  321. package/src/primitives/overlay/id.spec.ts +0 -24
  322. package/src/primitives/overlay/id.ts +0 -17
  323. package/src/primitives/overlay/index.ts +0 -18
  324. package/src/primitives/overlay/overlay.css +0 -42
  325. package/src/primitives/overlay/panel.spec.ts +0 -52
  326. package/src/primitives/overlay/panel.ts +0 -102
  327. package/src/primitives/overlay/stack.spec.ts +0 -55
  328. package/src/primitives/overlay/stack.ts +0 -113
  329. package/src/primitives/overlay/strategies/backdrop/blurred.spec.ts +0 -11
  330. package/src/primitives/overlay/strategies/backdrop/blurred.ts +0 -5
  331. package/src/primitives/overlay/strategies/backdrop/none.spec.ts +0 -10
  332. package/src/primitives/overlay/strategies/backdrop/none.ts +0 -9
  333. package/src/primitives/overlay/strategies/backdrop/solid.spec.ts +0 -18
  334. package/src/primitives/overlay/strategies/backdrop/solid.ts +0 -23
  335. package/src/primitives/overlay/strategies/focus-trap/inert-based.spec.ts +0 -28
  336. package/src/primitives/overlay/strategies/focus-trap/inert-based.ts +0 -38
  337. package/src/primitives/overlay/strategies/focus-trap/no-trap.spec.ts +0 -9
  338. package/src/primitives/overlay/strategies/focus-trap/no-trap.ts +0 -8
  339. package/src/primitives/overlay/strategies/focus-trap/tab-cycle.spec.ts +0 -49
  340. package/src/primitives/overlay/strategies/focus-trap/tab-cycle.ts +0 -85
  341. package/src/primitives/overlay/strategies/index.ts +0 -34
  342. package/src/primitives/overlay/strategies/live-announcer/_announce.ts +0 -35
  343. package/src/primitives/overlay/strategies/live-announcer/assertive.spec.ts +0 -21
  344. package/src/primitives/overlay/strategies/live-announcer/assertive.ts +0 -11
  345. package/src/primitives/overlay/strategies/live-announcer/polite.spec.ts +0 -21
  346. package/src/primitives/overlay/strategies/live-announcer/polite.ts +0 -11
  347. package/src/primitives/overlay/strategies/live-announcer/silent.spec.ts +0 -12
  348. package/src/primitives/overlay/strategies/live-announcer/silent.ts +0 -5
  349. package/src/primitives/overlay/strategies/mount/body-portal.spec.ts +0 -40
  350. package/src/primitives/overlay/strategies/mount/body-portal.ts +0 -91
  351. package/src/primitives/overlay/strategies/mount/in-container.spec.ts +0 -43
  352. package/src/primitives/overlay/strategies/mount/in-container.ts +0 -39
  353. package/src/primitives/overlay/strategies/mount/in-place.spec.ts +0 -40
  354. package/src/primitives/overlay/strategies/mount/in-place.ts +0 -20
  355. package/src/primitives/overlay/strategies/position/anchored-to.spec.ts +0 -56
  356. package/src/primitives/overlay/strategies/position/anchored-to.ts +0 -248
  357. package/src/primitives/overlay/strategies/position/corner.spec.ts +0 -36
  358. package/src/primitives/overlay/strategies/position/corner.ts +0 -33
  359. package/src/primitives/overlay/strategies/position/edge-sheet.spec.ts +0 -32
  360. package/src/primitives/overlay/strategies/position/edge-sheet.ts +0 -36
  361. package/src/primitives/overlay/strategies/position/in-place-sibling.spec.ts +0 -25
  362. package/src/primitives/overlay/strategies/position/in-place-sibling.ts +0 -13
  363. package/src/primitives/overlay/strategies/position/point-at.spec.ts +0 -40
  364. package/src/primitives/overlay/strategies/position/point-at.ts +0 -34
  365. package/src/primitives/overlay/strategies/position/viewport-centered.spec.ts +0 -31
  366. package/src/primitives/overlay/strategies/position/viewport-centered.ts +0 -31
  367. package/src/primitives/overlay/strategies/scroll-lock/css-clip.spec.ts +0 -15
  368. package/src/primitives/overlay/strategies/scroll-lock/css-clip.ts +0 -39
  369. package/src/primitives/overlay/strategies/scroll-lock/html-overflow.spec.ts +0 -21
  370. package/src/primitives/overlay/strategies/scroll-lock/html-overflow.ts +0 -44
  371. package/src/primitives/overlay/strategies/scroll-lock/none.spec.ts +0 -9
  372. package/src/primitives/overlay/strategies/scroll-lock/none.ts +0 -5
  373. package/src/primitives/overlay/strategies/trigger-event/on-click.spec.ts +0 -32
  374. package/src/primitives/overlay/strategies/trigger-event/on-click.ts +0 -28
  375. package/src/primitives/overlay/strategies/trigger-event/on-context-menu.spec.ts +0 -45
  376. package/src/primitives/overlay/strategies/trigger-event/on-context-menu.ts +0 -70
  377. package/src/primitives/overlay/strategies/trigger-event/on-focus-or-input.spec.ts +0 -35
  378. package/src/primitives/overlay/strategies/trigger-event/on-focus-or-input.ts +0 -34
  379. package/src/primitives/overlay/strategies/trigger-event/on-focus.spec.ts +0 -64
  380. package/src/primitives/overlay/strategies/trigger-event/on-focus.ts +0 -37
  381. package/src/primitives/overlay/strategies/trigger-event/on-hotkey.spec.ts +0 -37
  382. package/src/primitives/overlay/strategies/trigger-event/on-hotkey.ts +0 -59
  383. package/src/primitives/overlay/strategies/trigger-event/on-hover.spec.ts +0 -34
  384. package/src/primitives/overlay/strategies/trigger-event/on-hover.ts +0 -86
  385. package/src/primitives/overlay/strategies/trigger-event/programmatic.spec.ts +0 -16
  386. package/src/primitives/overlay/strategies/trigger-event/programmatic.ts +0 -12
  387. package/src/primitives/overlay/tokens.ts +0 -54
  388. package/src/primitives/overlay/trigger.spec.ts +0 -103
  389. package/src/primitives/overlay/trigger.ts +0 -75
  390. package/src/primitives/overlay/types.ts +0 -24
  391. package/src/primitives/overlay/wrapper.ts +0 -50
  392. package/src/primitives/signals/deep-signal.ts +0 -109
  393. package/src/primitives/signals/index.ts +0 -1
  394. package/src/progress-bar/config.ts +0 -48
  395. package/src/progress-bar/index.ts +0 -12
  396. package/src/progress-bar/progress-bar-fill.ts +0 -37
  397. package/src/progress-bar/progress-bar.context.ts +0 -34
  398. package/src/progress-bar/progress-bar.spec.ts +0 -423
  399. package/src/progress-bar/progress-bar.ts +0 -217
  400. package/src/public-api.ts +0 -84
  401. package/src/radio/index.ts +0 -2
  402. package/src/radio/radio.context.ts +0 -3
  403. package/src/radio/radio.spec.ts +0 -36
  404. package/src/radio/radio.ts +0 -66
  405. package/src/select/index.ts +0 -4
  406. package/src/select/select-content.ts +0 -69
  407. package/src/select/select-option.ts +0 -35
  408. package/src/select/select-root.ts +0 -129
  409. package/src/select/select-trigger.ts +0 -93
  410. package/src/select/select.spec.ts +0 -138
  411. package/src/select/select.ts +0 -4
  412. package/src/skeleton/index.ts +0 -5
  413. package/src/skeleton/skeleton.spec.ts +0 -115
  414. package/src/skeleton/skeleton.ts +0 -56
  415. package/src/slider/index.ts +0 -10
  416. package/src/slider/slider-range.ts +0 -49
  417. package/src/slider/slider-thumb.ts +0 -335
  418. package/src/slider/slider-track.ts +0 -70
  419. package/src/slider/slider.context.ts +0 -79
  420. package/src/slider/slider.geometry.ts +0 -73
  421. package/src/slider/slider.spec.ts +0 -216
  422. package/src/slider/slider.ts +0 -443
  423. package/src/speed-dial/index.ts +0 -10
  424. package/src/speed-dial/speed-dial-action.ts +0 -40
  425. package/src/speed-dial/speed-dial-actions.ts +0 -31
  426. package/src/speed-dial/speed-dial-trigger.ts +0 -55
  427. package/src/speed-dial/speed-dial.context.ts +0 -36
  428. package/src/speed-dial/speed-dial.spec.ts +0 -143
  429. package/src/speed-dial/speed-dial.ts +0 -127
  430. package/src/spinner/config.ts +0 -48
  431. package/src/spinner/index.ts +0 -8
  432. package/src/spinner/spinner.spec.ts +0 -262
  433. package/src/spinner/spinner.ts +0 -129
  434. package/src/stepper/index.ts +0 -15
  435. package/src/stepper/stepper.context.ts +0 -63
  436. package/src/stepper/stepper.spec.ts +0 -403
  437. package/src/stepper/stepper.ts +0 -544
  438. package/src/styles/docs-themes.css +0 -82
  439. package/src/styles.css +0 -17
  440. package/src/table/column-helpers.spec.ts +0 -74
  441. package/src/table/column-helpers.ts +0 -68
  442. package/src/table/filter-fns.ts +0 -230
  443. package/src/table/filter-models.spec.ts +0 -240
  444. package/src/table/filter-models.ts +0 -124
  445. package/src/table/filter-params.ts +0 -90
  446. package/src/table/grid-api-impl.ts +0 -321
  447. package/src/table/grid-api.spec.ts +0 -178
  448. package/src/table/grid-api.ts +0 -285
  449. package/src/table/index.ts +0 -73
  450. package/src/table/table-cell.spec.ts +0 -43
  451. package/src/table/table-cell.ts +0 -38
  452. package/src/table/table-filter-outlet.ts +0 -120
  453. package/src/table/table-header.spec.ts +0 -54
  454. package/src/table/table-header.ts +0 -63
  455. package/src/table/table-keyboard.spec.ts +0 -68
  456. package/src/table/table-keyboard.ts +0 -107
  457. package/src/table/table-resource.spec.ts +0 -37
  458. package/src/table/table-resource.ts +0 -36
  459. package/src/table/table-row.spec.ts +0 -54
  460. package/src/table/table-row.ts +0 -31
  461. package/src/table/table-storage.spec.ts +0 -67
  462. package/src/table/table-storage.ts +0 -76
  463. package/src/table/table.spec.ts +0 -172
  464. package/src/table/table.ts +0 -281
  465. package/src/table/table.types.ts +0 -83
  466. package/src/tabs/index.ts +0 -7
  467. package/src/tabs/tabs.context.ts +0 -32
  468. package/src/tabs/tabs.spec.ts +0 -352
  469. package/src/tabs/tabs.ts +0 -364
  470. package/src/tag/config.ts +0 -53
  471. package/src/tag/index.ts +0 -7
  472. package/src/tag/tag-list.ts +0 -76
  473. package/src/tag/tag-remove.ts +0 -61
  474. package/src/tag/tag.context.ts +0 -36
  475. package/src/tag/tag.spec.ts +0 -240
  476. package/src/tag/tag.ts +0 -203
  477. package/src/test-setup.ts +0 -5
  478. package/src/textarea/config.ts +0 -42
  479. package/src/textarea/index.ts +0 -8
  480. package/src/textarea/textarea.spec.ts +0 -176
  481. package/src/textarea/textarea.ts +0 -235
  482. package/src/time-picker/index.ts +0 -15
  483. package/src/time-picker/time-picker-meridiem.ts +0 -123
  484. package/src/time-picker/time-picker-segment.ts +0 -318
  485. package/src/time-picker/time-picker.context.ts +0 -38
  486. package/src/time-picker/time-picker.format.ts +0 -181
  487. package/src/time-picker/time-picker.spec.ts +0 -189
  488. package/src/time-picker/time-picker.ts +0 -274
  489. package/src/toast/_examples/index.ts +0 -5
  490. package/src/toast/_examples/toast.example.ts +0 -282
  491. package/src/toast/_examples/toast.finance.example.ts +0 -180
  492. package/src/toast/_examples/toast.retro.example.ts +0 -161
  493. package/src/toast/index.ts +0 -28
  494. package/src/toast/toast.ref.ts +0 -26
  495. package/src/toast/toast.service.ts +0 -339
  496. package/src/toast/toast.spec.ts +0 -247
  497. package/src/toast/toast.strategy.ts +0 -112
  498. package/src/toast/toast.ts +0 -463
  499. package/src/toast/toast.types.ts +0 -5
  500. package/src/toggle/index.ts +0 -1
  501. package/src/toggle/toggle.spec.ts +0 -24
  502. package/src/toggle/toggle.ts +0 -48
  503. package/src/tooltip/_examples/index.ts +0 -6
  504. package/src/tooltip/_examples/tooltip.example.ts +0 -82
  505. package/src/tooltip/_examples/tooltip.finance.example.ts +0 -97
  506. package/src/tooltip/_examples/tooltip.placements.example.ts +0 -83
  507. package/src/tooltip/_examples/tooltip.retro.example.ts +0 -107
  508. package/src/tooltip/index.ts +0 -4
  509. package/src/tooltip/tooltip-arrow.ts +0 -31
  510. package/src/tooltip/tooltip-content.ts +0 -38
  511. package/src/tooltip/tooltip-group.ts +0 -32
  512. package/src/tooltip/tooltip-trigger.ts +0 -47
  513. package/src/tooltip/tooltip.spec.ts +0 -40
  514. package/src/tooltip/tooltip.ts +0 -5
  515. package/src/tree-select/index.ts +0 -12
  516. package/src/tree-select/tree-select-content.ts +0 -199
  517. package/src/tree-select/tree-select-node.ts +0 -132
  518. package/src/tree-select/tree-select-root.ts +0 -272
  519. package/src/tree-select/tree-select-trigger.ts +0 -90
  520. package/src/tree-select/tree-select.context.ts +0 -63
  521. package/src/tree-select/tree-select.spec.ts +0 -433
  522. package/src/tree-select/tree-select.ts +0 -2
  523. package/src/typography/blockquote.ts +0 -57
  524. package/src/typography/code.ts +0 -53
  525. package/src/typography/index.ts +0 -22
  526. package/src/typography/lead.ts +0 -49
  527. package/src/typography/muted.ts +0 -29
  528. package/src/typography/truncate.ts +0 -99
  529. package/src/typography/typography.spec.ts +0 -203
  530. package/tsconfig.lib.json +0 -21
  531. package/tsconfig.lib.prod.json +0 -17
  532. package/tsconfig.spec.json +0 -18
  533. package/vite.config.ts +0 -27
  534. /package/{src/icon → icon}/icon.css +0 -0
  535. /package/{src/typography → typography}/prose.css +0 -0
@@ -1,124 +0,0 @@
1
- /**
2
- * Structured filter models — a near-direct adaptation of AG-Grid's
3
- * `FilterModel` shape. Each built-in filter writes one of these models
4
- * to `column.setFilterValue(...)` instead of a raw value. The structured
5
- * shape buys two things:
6
- *
7
- * 1. **Server-side rendering.** `gridApi.filter.getModel()` returns a
8
- * `KjGridFilterModel` (`Record<columnId, KjFilterModel>`) that
9
- * serialises cleanly into a JSON payload your backend can translate
10
- * to SQL/Mongo/etc. without re-parsing free-form values. Pair with
11
- * `kjTableResource({ loader })` to fan changes back to the server.
12
- *
13
- * 2. **Cross-filter introspection.** Code that needs to "what does the
14
- * user currently have selected on column X" can discriminate on
15
- * `filterType` and `type` instead of guessing from a `string | unknown`
16
- * value.
17
- *
18
- * The companion `filter-fns` helpers (`kjTextFilterFn` etc.) implement
19
- * client-side filtering against these models so client-mode tables work
20
- * out of the box — point `kjColumn({ filterFn: kjTextFilterFn })` at one
21
- * and TanStack will dispatch row matching for you.
22
- */
23
-
24
- /** Comparison operators for {@link KjTextFilterModel}. */
25
- export type KjTextFilterType =
26
- | 'contains'
27
- | 'notContains'
28
- | 'equals'
29
- | 'notEquals'
30
- | 'startsWith'
31
- | 'endsWith'
32
- | 'blank'
33
- | 'notBlank';
34
-
35
- export interface KjTextFilterModel {
36
- readonly filterType: 'text';
37
- readonly type: KjTextFilterType;
38
- /** Match string. Omitted for `blank` / `notBlank`. */
39
- readonly filter?: string;
40
- /** Case-insensitive matching. Defaults to `true`. */
41
- readonly caseSensitive?: boolean;
42
- }
43
-
44
- /** Comparison operators for {@link KjNumberFilterModel}. */
45
- export type KjNumberFilterType =
46
- | 'equals'
47
- | 'notEquals'
48
- | 'greaterThan'
49
- | 'greaterThanOrEqual'
50
- | 'lessThan'
51
- | 'lessThanOrEqual'
52
- | 'inRange'
53
- | 'blank'
54
- | 'notBlank';
55
-
56
- export interface KjNumberFilterModel {
57
- readonly filterType: 'number';
58
- readonly type: KjNumberFilterType;
59
- /** Primary number. Omitted for `blank` / `notBlank`. */
60
- readonly filter?: number;
61
- /** Range upper bound — used by `inRange`. */
62
- readonly filterTo?: number;
63
- }
64
-
65
- /** Comparison operators for {@link KjDateFilterModel}. */
66
- export type KjDateFilterType =
67
- | 'equals'
68
- | 'notEquals'
69
- | 'greaterThan' // after
70
- | 'lessThan' // before
71
- | 'inRange'
72
- | 'blank'
73
- | 'notBlank';
74
-
75
- export interface KjDateFilterModel {
76
- readonly filterType: 'date';
77
- readonly type: KjDateFilterType;
78
- /** Primary date — ISO `YYYY-MM-DD`. */
79
- readonly dateFrom?: string;
80
- /** Range upper bound — used by `inRange`. */
81
- readonly dateTo?: string;
82
- }
83
-
84
- /**
85
- * Set / multi-select filter — the row passes if the cell value is in
86
- * `values`. An empty `values` array means "no filter" (cleared); pair
87
- * with `setFilterValue(undefined)` for the cleared state by preference.
88
- */
89
- export interface KjSetFilterModel {
90
- readonly filterType: 'set';
91
- readonly values: readonly unknown[];
92
- }
93
-
94
- /** Compound filter — combine two conditions with AND / OR. */
95
- export interface KjMultiConditionFilterModel<TModel extends KjFilterModel = KjFilterModel> {
96
- readonly filterType: 'multi';
97
- readonly operator: 'AND' | 'OR';
98
- readonly conditions: readonly TModel[];
99
- }
100
-
101
- /** Discriminated union of every built-in filter model. */
102
- export type KjFilterModel =
103
- | KjTextFilterModel
104
- | KjNumberFilterModel
105
- | KjDateFilterModel
106
- | KjSetFilterModel
107
- | KjMultiConditionFilterModel;
108
-
109
- /**
110
- * Bulk filter snapshot — keyed by column id. Shape mirrors AG-Grid's
111
- * `api.getFilterModel()` return so SSR loaders that already understand
112
- * AG-Grid payloads can consume it as-is.
113
- */
114
- export type KjGridFilterModel = Record<string, KjFilterModel>;
115
-
116
- /** Narrowing helper. */
117
- export function isKjFilterModel(value: unknown): value is KjFilterModel {
118
- return (
119
- !!value &&
120
- typeof value === 'object' &&
121
- 'filterType' in (value as object) &&
122
- typeof (value as { filterType: unknown }).filterType === 'string'
123
- );
124
- }
@@ -1,90 +0,0 @@
1
- import {
2
- InjectionToken,
3
- Injector,
4
- Provider,
5
- TemplateRef,
6
- Type,
7
- inject,
8
- type Signal,
9
- } from '@angular/core';
10
- import type { Column, RowData } from '@tanstack/angular-table';
11
- import type { KjColumnApi, KjGridApi } from './grid-api';
12
-
13
- /**
14
- * Context handed to every custom filter — component class or template.
15
- *
16
- * Mirrors AG-Grid's `IFilterParams` shape: the column being filtered, the
17
- * grid + column APIs for cross-cutting actions, the current model as a
18
- * reactive signal, and an imperative setter that clears the filter on
19
- * `null`/`undefined`/`''`. A signal is used (rather than a callback) so
20
- * filter UIs can derive bound values via `computed()` without their own
21
- * change-detection plumbing.
22
- *
23
- * Components either accept a single required input named `params` of this
24
- * shape, or call {@link injectKjFilterParams}. Templates receive the same
25
- * context via `$implicit` (`let-params`).
26
- */
27
- export interface KjFilterParams<TData extends RowData = unknown, TValue = unknown> {
28
- /** The TanStack column the filter targets. */
29
- readonly column: Column<TData, TValue>;
30
- /** Grid-wide imperative API for cross-column actions. */
31
- readonly api: KjGridApi<TData>;
32
- /** Per-column imperative API. */
33
- readonly columnApi: KjColumnApi<TData>;
34
- /** Live filter model — reactive view of `column.getFilterValue()`. */
35
- readonly model: Signal<TValue | null>;
36
- /** Imperative setter. `null`, `undefined`, or `''` clear the filter. */
37
- setModel(value: TValue | null | undefined): void;
38
- /** True when the filter currently restricts results. */
39
- isActive(): boolean;
40
- /** Convenience: clear this filter. Equivalent to `setModel(null)`. */
41
- clear(): void;
42
- }
43
-
44
- /**
45
- * Anything that can render a filter UI: a standalone component class or a
46
- * `TemplateRef` whose `$implicit` context is a `KjFilterParams`.
47
- */
48
- export type KjFilterRenderer<TData extends RowData = unknown, TValue = unknown> =
49
- | Type<{ params?: unknown } & object>
50
- | TemplateRef<KjFilterParams<TData, TValue>>;
51
-
52
- /**
53
- * Private token. Use {@link provideKjFilterParams} / {@link injectKjFilterParams}
54
- * — the token itself is not exported from the package so consumers cannot
55
- * bypass the helpers (and can't accidentally provide a malformed value).
56
- */
57
- const KJ_FILTER_PARAMS = new InjectionToken<KjFilterParams>('kj.filter.params');
58
-
59
- /**
60
- * Returns a `Provider` that exposes a `KjFilterParams` instance to a child
61
- * injector. Used by `KjTableFilterOutlet` and the styled-wrapper's filter
62
- * mounting code; user code should normally not call this directly.
63
- */
64
- export function provideKjFilterParams<TData extends RowData, TValue>(
65
- params: KjFilterParams<TData, TValue>,
66
- ): Provider {
67
- return { provide: KJ_FILTER_PARAMS, useValue: params };
68
- }
69
-
70
- /**
71
- * Resolve the active `KjFilterParams` from the current injection context.
72
- *
73
- * @example
74
- * ```ts
75
- * @Component({ selector: 'my-filter', template: '…' })
76
- * class MyFilter {
77
- * protected readonly params = injectKjFilterParams<User, string>();
78
- * protected onInput(v: string) { this.params.setModel(v || null); }
79
- * }
80
- * ```
81
- */
82
- export function injectKjFilterParams<
83
- TData extends RowData = unknown,
84
- TValue = unknown,
85
- >(injector?: Injector): KjFilterParams<TData, TValue> {
86
- const params = injector
87
- ? injector.get(KJ_FILTER_PARAMS)
88
- : inject(KJ_FILTER_PARAMS);
89
- return params as KjFilterParams<TData, TValue>;
90
- }
@@ -1,321 +0,0 @@
1
- import type { WritableSignal, Signal } from '@angular/core';
2
- import type {
3
- ColumnFiltersState,
4
- ColumnOrderState,
5
- ColumnPinningState,
6
- ColumnSizingState,
7
- ExpandedState,
8
- GroupingState,
9
- PaginationState,
10
- RowData,
11
- RowSelectionState,
12
- Table,
13
- VisibilityState,
14
- } from '@tanstack/angular-table';
15
- import type {
16
- KjColumnApi,
17
- KjColumnGroupingApi,
18
- KjColumnOrderApi,
19
- KjColumnPinningApi,
20
- KjColumnSizingApi,
21
- KjColumnVisibilityApi,
22
- KjDensityApi,
23
- KjExpansionApi,
24
- KjFilterApi,
25
- KjGlobalFilterApi,
26
- KjGridApi,
27
- KjGroupingApi,
28
- KjPaginationApi,
29
- KjRowsApi,
30
- KjSelectionApi,
31
- KjSortApi,
32
- } from './grid-api';
33
- import { isKjFilterModel, type KjFilterModel, type KjGridFilterModel } from './filter-models';
34
- import type { KjTableDensity, KjTableState } from './table.types';
35
-
36
- /**
37
- * Build a `KjGridApi` + `KjColumnApi` pair bound to a directive instance.
38
- * Called once from `KjTable` and cached. Methods close over the directive's
39
- * private state signal and the lazy TanStack `Table` getter so every call
40
- * sees the live grid.
41
- */
42
- export function createGridApi<TData extends RowData>(opts: {
43
- state: Signal<KjTableState>;
44
- table: () => Table<TData>;
45
- patch: <K extends keyof KjTableState>(
46
- key: K,
47
- updater: KjTableState[K] | ((prev: KjTableState[K]) => KjTableState[K]),
48
- ) => void;
49
- setStateInternal: WritableSignal<KjTableState>['update'];
50
- resetState: () => void;
51
- defaultState: KjTableState;
52
- }): { gridApi: KjGridApi<TData>; columnApi: KjColumnApi<TData> } {
53
- const { state, table, patch, resetState, defaultState } = opts;
54
-
55
- const setStateMerge = (partial: Partial<KjTableState>): void => {
56
- opts.setStateInternal((s) => ({ ...s, ...partial }));
57
- };
58
-
59
- // ── KjColumnApi namespaces ────────────────────────────────────────────────
60
-
61
- const visibility: KjColumnVisibilityApi = {
62
- get: () => state().columnVisibility,
63
- set: (model) => patch('columnVisibility', model),
64
- isVisible: (id) => state().columnVisibility[id] !== false,
65
- setVisible: (id, visible) =>
66
- patch('columnVisibility', (prev: VisibilityState) => ({ ...prev, [id]: visible })),
67
- setManyVisible: (ids, visible) =>
68
- patch('columnVisibility', (prev: VisibilityState) => {
69
- const next = { ...prev };
70
- for (const id of ids) next[id] = visible;
71
- return next;
72
- }),
73
- };
74
-
75
- const sizing: KjColumnSizingApi = {
76
- get: () => state().columnSizing,
77
- set: (model) => patch('columnSizing', model),
78
- width: (id) => table().getColumn(id)?.getSize() ?? 0,
79
- setWidth: (id, width) =>
80
- patch('columnSizing', (prev: ColumnSizingState) => ({ ...prev, [id]: width })),
81
- };
82
-
83
- const pinning: KjColumnPinningApi = {
84
- get: () => state().columnPinning,
85
- set: (model) => patch('columnPinning', model),
86
- of: (id) => {
87
- const p = state().columnPinning;
88
- if ((p.left ?? []).includes(id)) return 'left';
89
- if ((p.right ?? []).includes(id)) return 'right';
90
- return null;
91
- },
92
- pin: (id, side) =>
93
- patch('columnPinning', (prev: ColumnPinningState) => ({
94
- left: (prev.left ?? []).filter((c) => c !== id).concat(side === 'left' ? [id] : []),
95
- right: (prev.right ?? []).filter((c) => c !== id).concat(side === 'right' ? [id] : []),
96
- })),
97
- };
98
-
99
- const order: KjColumnOrderApi = {
100
- get: () => state().columnOrder,
101
- set: (o) => patch('columnOrder', o),
102
- move: (id, toIndex) =>
103
- patch('columnOrder', (prev: ColumnOrderState) => {
104
- const base = prev.length > 0 ? prev : table().getAllLeafColumns().map((c) => c.id);
105
- const without = base.filter((c) => c !== id);
106
- const clamped = Math.max(0, Math.min(toIndex, without.length));
107
- return [...without.slice(0, clamped), id, ...without.slice(clamped)];
108
- }),
109
- };
110
-
111
- const colGrouping: KjColumnGroupingApi = {
112
- is: (id) => state().grouping.includes(id),
113
- set: (id, grouped) =>
114
- patch('grouping', (prev: GroupingState) =>
115
- grouped
116
- ? prev.includes(id) ? prev : [...prev, id]
117
- : prev.filter((c) => c !== id),
118
- ),
119
- };
120
-
121
- const columnApi: KjColumnApi<TData> = {
122
- get: (id) => table().getColumn(id) ?? null,
123
- all: () => table().getAllColumns(),
124
- leaves: () => table().getAllLeafColumns(),
125
- visibleLeaves: () => table().getVisibleLeafColumns(),
126
- visibility,
127
- sizing,
128
- pinning,
129
- order,
130
- grouping: colGrouping,
131
- reset: () =>
132
- setStateMerge({
133
- columnVisibility: defaultState.columnVisibility,
134
- columnSizing: defaultState.columnSizing,
135
- columnPinning: defaultState.columnPinning,
136
- columnOrder: defaultState.columnOrder,
137
- grouping: defaultState.grouping,
138
- }),
139
- };
140
-
141
- // ── KjGridApi namespaces ──────────────────────────────────────────────────
142
-
143
- const rows: KjRowsApi<TData> = {
144
- all: () => (table().options.data ?? []) as readonly TData[],
145
- displayed: () => table().getRowModel().rows,
146
- count: () => (table().options.data?.length ?? 0),
147
- filteredCount: () => table().getFilteredRowModel().rows.length,
148
- displayedCount: () => table().getRowModel().rows.length,
149
- get: (id) => table().getRow(id, /* searchAll */ true),
150
- };
151
-
152
- const selection: KjSelectionApi<TData> = {
153
- get: () => state().rowSelection,
154
- set: (model) => patch('rowSelection', model),
155
- rows: () => table().getSelectedRowModel().rows,
156
- ids: () => Object.keys(state().rowSelection).filter((id) => state().rowSelection[id]),
157
- has: () => {
158
- const sel = state().rowSelection;
159
- for (const key in sel) if (sel[key]) return true;
160
- return false;
161
- },
162
- select: (id, selected = true) =>
163
- patch('rowSelection', (prev: RowSelectionState) => ({ ...prev, [id]: selected })),
164
- deselect: (id) =>
165
- patch('rowSelection', (prev: RowSelectionState) => {
166
- const next = { ...prev };
167
- delete next[id];
168
- return next;
169
- }),
170
- toggle: (id) =>
171
- patch('rowSelection', (prev: RowSelectionState) => ({ ...prev, [id]: !prev[id] })),
172
- all: () => {
173
- const next: RowSelectionState = {};
174
- for (const r of table().getFilteredRowModel().rows) next[r.id] = true;
175
- patch('rowSelection', next);
176
- },
177
- clear: () => patch('rowSelection', {}),
178
- };
179
-
180
- const sort: KjSortApi = {
181
- get: () => state().sorting,
182
- set: (s) => patch('sorting', s),
183
- toggle: (columnId, multi = false) => {
184
- const col = table().getColumn(columnId);
185
- if (!col) return;
186
- col.toggleSorting(undefined, multi);
187
- },
188
- clear: () => patch('sorting', []),
189
- };
190
-
191
- const globalFilter: KjGlobalFilterApi = {
192
- get: () => state().globalFilter,
193
- set: (value) => patch('globalFilter', value),
194
- clear: () => patch('globalFilter', ''),
195
- };
196
-
197
- const filter: KjFilterApi = {
198
- get: (id) => state().columnFilters.find((f) => f.id === id)?.value,
199
- set: (id, value) =>
200
- patch('columnFilters', (prev: ColumnFiltersState) => {
201
- const without = prev.filter((f) => f.id !== id);
202
- return value === undefined || value === null || value === ''
203
- ? without
204
- : [...without, { id, value }];
205
- }),
206
- clear: (id) =>
207
- patch('columnFilters', (prev: ColumnFiltersState) => prev.filter((f) => f.id !== id)),
208
- all: () => state().columnFilters,
209
- setAll: (filters) => patch('columnFilters', filters),
210
- global: globalFilter,
211
- clearAll: () => setStateMerge({ columnFilters: [], globalFilter: '' }),
212
-
213
- getModelFor: (id) => {
214
- const v = state().columnFilters.find((f) => f.id === id)?.value;
215
- return isKjFilterModel(v) ? v : undefined;
216
- },
217
- setModelFor: (id, model) =>
218
- patch('columnFilters', (prev: ColumnFiltersState) => {
219
- const without = prev.filter((f) => f.id !== id);
220
- return model == null ? without : [...without, { id, value: model }];
221
- }),
222
- getModel: (): KjGridFilterModel => {
223
- const out: Record<string, KjFilterModel> = {};
224
- for (const entry of state().columnFilters) {
225
- if (isKjFilterModel(entry.value)) out[entry.id] = entry.value;
226
- }
227
- return out;
228
- },
229
- setModel: (model) =>
230
- patch('columnFilters', () => {
231
- if (!model) return [];
232
- return Object.entries(model).map(([id, value]) => ({ id, value }));
233
- }),
234
- };
235
-
236
- const pagination: KjPaginationApi = {
237
- get: () => state().pagination,
238
- set: (p) => patch('pagination', p),
239
- pageCount: () => table().getPageCount(),
240
- setPageIndex: (pageIndex) =>
241
- patch('pagination', (prev: PaginationState) => ({ ...prev, pageIndex: Math.max(0, pageIndex) })),
242
- setPageSize: (pageSize) =>
243
- patch('pagination', () => ({ pageIndex: 0, pageSize: Math.max(1, pageSize) })),
244
- next: () =>
245
- patch('pagination', (prev: PaginationState) => ({
246
- ...prev,
247
- pageIndex: Math.min(prev.pageIndex + 1, Math.max(0, table().getPageCount() - 1)),
248
- })),
249
- previous: () =>
250
- patch('pagination', (prev: PaginationState) => ({
251
- ...prev,
252
- pageIndex: Math.max(0, prev.pageIndex - 1),
253
- })),
254
- first: () => patch('pagination', (prev: PaginationState) => ({ ...prev, pageIndex: 0 })),
255
- last: () =>
256
- patch('pagination', (prev: PaginationState) => ({
257
- ...prev,
258
- pageIndex: Math.max(0, table().getPageCount() - 1),
259
- })),
260
- };
261
-
262
- const expansion: KjExpansionApi<TData> = {
263
- get: () => state().expanded,
264
- set: (e) => patch('expanded', e),
265
- setRow: (id, expanded) =>
266
- patch('expanded', (prev: ExpandedState) => {
267
- if (prev === true) {
268
- const next: Record<string, boolean> = {};
269
- for (const r of table().getCoreRowModel().rows) next[r.id] = true;
270
- next[id] = expanded;
271
- return next;
272
- }
273
- return { ...prev, [id]: expanded };
274
- }),
275
- toggle: (id) =>
276
- patch('expanded', (prev: ExpandedState) => {
277
- if (prev === true) {
278
- const next: Record<string, boolean> = {};
279
- for (const r of table().getCoreRowModel().rows) next[r.id] = true;
280
- next[id] = false;
281
- return next;
282
- }
283
- return { ...prev, [id]: !prev[id] };
284
- }),
285
- expandAll: () => patch('expanded', true),
286
- collapseAll: () => patch('expanded', {}),
287
- };
288
-
289
- const grouping: KjGroupingApi = {
290
- get: () => state().grouping,
291
- set: (g) => patch('grouping', g),
292
- add: (id) =>
293
- patch('grouping', (prev: GroupingState) => prev.includes(id) ? prev : [...prev, id]),
294
- remove: (id) =>
295
- patch('grouping', (prev: GroupingState) =>
296
- id === undefined ? [] : prev.filter((c) => c !== id),
297
- ),
298
- };
299
-
300
- const density: KjDensityApi = {
301
- get: () => state().density,
302
- set: (d: KjTableDensity) => patch('density', d),
303
- };
304
-
305
- const gridApi: KjGridApi<TData> = {
306
- state,
307
- table,
308
- rows,
309
- selection,
310
- sort,
311
- filter,
312
- pagination,
313
- expansion,
314
- grouping,
315
- density,
316
- setState: setStateMerge,
317
- resetState,
318
- };
319
-
320
- return { gridApi, columnApi };
321
- }