@tulip-systems/core 0.5.7 → 0.5.9

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 (304) hide show
  1. package/dist/components/client.mjs +7 -7
  2. package/dist/components/common/icons.d.mts +52 -52
  3. package/dist/components/common/icons.d.mts.map +1 -1
  4. package/dist/components/common/status.d.mts +3 -3
  5. package/dist/components/common/status.d.mts.map +1 -1
  6. package/dist/components/editor/components/content.client.d.mts +2 -2
  7. package/dist/components/editor/components/content.client.d.mts.map +1 -1
  8. package/dist/components/editor/components/editor.client.d.mts +6 -6
  9. package/dist/components/editor/components/editor.client.d.mts.map +1 -1
  10. package/dist/components/editor/components/menu.client.d.mts +3 -3
  11. package/dist/components/editor/components/menu.client.d.mts.map +1 -1
  12. package/dist/components/editor/components/menu.client.mjs +1 -1
  13. package/dist/components/header/back-button.client.d.mts +2 -2
  14. package/dist/components/header/back-button.client.d.mts.map +1 -1
  15. package/dist/components/header/bottom-bar.client.d.mts +3 -3
  16. package/dist/components/header/bottom-bar.client.d.mts.map +1 -1
  17. package/dist/components/header/bottom-bar.client.mjs +1 -1
  18. package/dist/components/header/breadcrumbs.client.d.mts +7 -7
  19. package/dist/components/header/breadcrumbs.client.d.mts.map +1 -1
  20. package/dist/components/header/breadcrumbs.client.mjs +1 -1
  21. package/dist/components/header/header.client.d.mts +2 -2
  22. package/dist/components/header/mobile-nav-switcher.client.d.mts +2 -2
  23. package/dist/components/header/top-bar.client.d.mts +4 -4
  24. package/dist/components/header/top-bar.client.mjs +1 -1
  25. package/dist/components/layouts/admin-content.client.d.mts +2 -2
  26. package/dist/components/layouts/admin-error-pages.d.mts +23 -0
  27. package/dist/components/layouts/admin-error-pages.d.mts.map +1 -0
  28. package/dist/components/layouts/admin-error-pages.mjs +60 -0
  29. package/dist/components/layouts/admin-error-pages.mjs.map +1 -0
  30. package/dist/components/layouts/admin-layout.d.mts +2 -2
  31. package/dist/components/layouts/admin-layout.d.mts.map +1 -1
  32. package/dist/components/layouts/admin-loading.d.mts +2 -2
  33. package/dist/components/layouts/admin-loading.d.mts.map +1 -1
  34. package/dist/components/layouts/empty-page.d.mts +4 -4
  35. package/dist/components/layouts/empty-page.d.mts.map +1 -1
  36. package/dist/components/layouts/empty-page.mjs.map +1 -1
  37. package/dist/components/layouts/error-page.d.mts +35 -10
  38. package/dist/components/layouts/error-page.d.mts.map +1 -1
  39. package/dist/components/layouts/error-page.mjs +36 -40
  40. package/dist/components/layouts/error-page.mjs.map +1 -1
  41. package/dist/components/layouts/error-sections.d.mts +29 -0
  42. package/dist/components/layouts/error-sections.d.mts.map +1 -0
  43. package/dist/components/layouts/error-sections.mjs +47 -0
  44. package/dist/components/layouts/error-sections.mjs.map +1 -0
  45. package/dist/components/layouts/list-layout.d.mts +2 -2
  46. package/dist/components/layouts/list-layout.d.mts.map +1 -1
  47. package/dist/components/layouts/providers.client.d.mts +2 -2
  48. package/dist/components/layouts/root-error-pages.d.mts +10 -0
  49. package/dist/components/layouts/root-error-pages.d.mts.map +1 -0
  50. package/dist/components/layouts/root-error-pages.mjs +17 -0
  51. package/dist/components/layouts/root-error-pages.mjs.map +1 -0
  52. package/dist/components/layouts/root-layout.server.d.mts +2 -2
  53. package/dist/components/layouts/root-layout.server.d.mts.map +1 -1
  54. package/dist/components/layouts/root-loading.d.mts +2 -2
  55. package/dist/components/layouts/root-loading.d.mts.map +1 -1
  56. package/dist/components/layouts/tab-layout.d.mts +2 -2
  57. package/dist/components/layouts/tab-layout.d.mts.map +1 -1
  58. package/dist/components/layouts/tab-layout.mjs +1 -1
  59. package/dist/components/lists/data-list.d.mts +5 -5
  60. package/dist/components/lists/data-list.d.mts.map +1 -1
  61. package/dist/components/lists/data-stack.d.mts +8 -8
  62. package/dist/components/lists/data-stack.d.mts.map +1 -1
  63. package/dist/components/navigation/admin-sidebar-header.client.mjs +2 -2
  64. package/dist/components/navigation/admin-sidebar-paths.client.d.mts +10 -10
  65. package/dist/components/navigation/admin-sidebar-paths.client.mjs +1 -1
  66. package/dist/components/navigation/admin-sidebar-skeleton.mjs +1 -1
  67. package/dist/components/ui/accordion.d.mts +5 -5
  68. package/dist/components/ui/accordion.d.mts.map +1 -1
  69. package/dist/components/ui/alert-dialog.d.mts +12 -12
  70. package/dist/components/ui/alert-dialog.d.mts.map +1 -1
  71. package/dist/components/ui/alert.d.mts +6 -6
  72. package/dist/components/ui/alert.d.mts.map +1 -1
  73. package/dist/components/ui/aspect-ratio.d.mts +2 -2
  74. package/dist/components/ui/aspect-ratio.d.mts.map +1 -1
  75. package/dist/components/ui/avatar.client.d.mts +4 -4
  76. package/dist/components/ui/badge.d.mts +4 -4
  77. package/dist/components/ui/badge.d.mts.map +1 -1
  78. package/dist/components/ui/breadcrumb.d.mts +8 -8
  79. package/dist/components/ui/breadcrumb.d.mts.map +1 -1
  80. package/dist/components/ui/button.d.mts +5 -5
  81. package/dist/components/ui/calendar.d.mts +3 -3
  82. package/dist/components/ui/card.d.mts +7 -7
  83. package/dist/components/ui/carousel.d.mts +6 -6
  84. package/dist/components/ui/chart.client.d.mts +5 -5
  85. package/dist/components/ui/checkbox.d.mts +2 -2
  86. package/dist/components/ui/collapsible.client.d.mts +4 -4
  87. package/dist/components/ui/color-picker.client.d.mts +2 -2
  88. package/dist/components/ui/combobox-dropdown.client.d.mts +2 -2
  89. package/dist/components/ui/combobox-dropdown.client.mjs +1 -1
  90. package/dist/components/ui/combobox.client.d.mts +2 -2
  91. package/dist/components/ui/combobox.client.mjs +1 -1
  92. package/dist/components/ui/command.d.mts +10 -10
  93. package/dist/components/ui/context-menu.d.mts +16 -16
  94. package/dist/components/ui/date-picker.client.d.mts +2 -2
  95. package/dist/components/ui/date-picker.client.mjs +1 -1
  96. package/dist/components/ui/dialog.client.d.mts +11 -11
  97. package/dist/components/ui/drawer.client.d.mts +11 -11
  98. package/dist/components/ui/dropdown-menu.d.mts +18 -18
  99. package/dist/components/ui/dropdown-menu.d.mts.map +1 -1
  100. package/dist/components/ui/dropdown-menu.mjs +2 -2
  101. package/dist/components/ui/dropdown-menu.mjs.map +1 -1
  102. package/dist/components/ui/form.client.d.mts +7 -7
  103. package/dist/components/ui/hover-card.client.d.mts +4 -4
  104. package/dist/components/ui/input-recipient.d.mts +2 -2
  105. package/dist/components/ui/input.d.mts +2 -2
  106. package/dist/components/ui/label.d.mts +2 -2
  107. package/dist/components/ui/navigation-menu.d.mts +11 -11
  108. package/dist/components/ui/pagination.d.mts +8 -8
  109. package/dist/components/ui/popover.d.mts +5 -5
  110. package/dist/components/ui/progress.client.d.mts +2 -2
  111. package/dist/components/ui/radio-group.d.mts +3 -3
  112. package/dist/components/ui/resizable.client.d.mts +4 -4
  113. package/dist/components/ui/scroll-area.d.mts +3 -3
  114. package/dist/components/ui/select.client.d.mts +11 -11
  115. package/dist/components/ui/separator.d.mts +2 -2
  116. package/dist/components/ui/sheet.client.d.mts +9 -9
  117. package/dist/components/ui/sidebar.client.d.mts +26 -26
  118. package/dist/components/ui/sidebar.client.mjs +2 -2
  119. package/dist/components/ui/skeleton.d.mts +2 -2
  120. package/dist/components/ui/slider.d.mts +2 -2
  121. package/dist/components/ui/sonner.client.d.mts +2 -2
  122. package/dist/components/ui/switch.d.mts +2 -2
  123. package/dist/components/ui/tabs.d.mts +5 -5
  124. package/dist/components/ui/textarea.d.mts +2 -2
  125. package/dist/components/ui/time-input.client.d.mts +2 -2
  126. package/dist/components/ui/toggle-group.client.d.mts +3 -3
  127. package/dist/components/ui/toggle.d.mts +2 -2
  128. package/dist/components/ui/toggle.d.mts.map +1 -1
  129. package/dist/components/ui/tooltip.client.d.mts +5 -5
  130. package/dist/components.d.mts +5 -4
  131. package/dist/components.mjs +18 -17
  132. package/dist/data-tables/client.d.mts +2 -6
  133. package/dist/data-tables/client.mjs +2 -6
  134. package/dist/lib/hooks/use-indicator.d.mts +2 -2
  135. package/dist/lib.mjs +1 -1
  136. package/dist/modules/auth/components/allowed.client.d.mts +2 -2
  137. package/dist/modules/auth/components/auth-layout.server.d.mts +2 -2
  138. package/dist/modules/auth/components/auth-loading.d.mts +2 -2
  139. package/dist/modules/auth/components/auth-loading.d.mts.map +1 -1
  140. package/dist/modules/auth/components/create-first-user-page.client.d.mts +2 -2
  141. package/dist/modules/auth/components/create-first-user-page.client.mjs +1 -1
  142. package/dist/modules/auth/components/forget-password-page.client.d.mts +2 -2
  143. package/dist/modules/auth/components/guard-first-user.server.d.mts +2 -2
  144. package/dist/modules/auth/components/guard.server.d.mts +2 -2
  145. package/dist/modules/auth/components/login-page.client.d.mts +2 -2
  146. package/dist/modules/auth/components/login-page.client.mjs +1 -1
  147. package/dist/modules/auth/components/reset-password-page.client.d.mts +2 -2
  148. package/dist/modules/auth/components/reset-password-page.client.mjs +1 -1
  149. package/dist/modules/auth/components/update-password-command.d.mts +2 -2
  150. package/dist/modules/auth/db/schema.d.mts +73 -73
  151. package/dist/modules/auth/db/schema.d.mts.map +1 -1
  152. package/dist/modules/auth/handler/client.client.d.mts +4 -4
  153. package/dist/modules/auth/hooks/use-permission.d.mts +3 -3
  154. package/dist/modules/auth/hooks/use-session.d.mts +4 -4
  155. package/dist/modules/auth/lib/helpers.server.d.mts +2 -2
  156. package/dist/modules/auth/lib/helpers.server.d.mts.map +1 -1
  157. package/dist/modules/commands/components/alert-dialog-command.client.d.mts +10 -10
  158. package/dist/modules/commands/components/alert-dialog-command.client.d.mts.map +1 -1
  159. package/dist/modules/commands/components/click-command.client.d.mts +2 -2
  160. package/dist/modules/commands/components/click-command.client.d.mts.map +1 -1
  161. package/dist/modules/commands/components/command-trigger.client.d.mts +6 -6
  162. package/dist/modules/commands/components/command-trigger.client.d.mts.map +1 -1
  163. package/dist/modules/commands/components/command-trigger.client.mjs +1 -1
  164. package/dist/modules/commands/components/dialog-command.client.d.mts +8 -8
  165. package/dist/modules/commands/components/dialog-command.client.d.mts.map +1 -1
  166. package/dist/modules/commands/components/dialog-command.client.mjs +1 -1
  167. package/dist/modules/commands/components/dropdown-command.client.d.mts +5 -5
  168. package/dist/modules/commands/components/dropdown-command.client.d.mts.map +1 -1
  169. package/dist/modules/commands/components/empty-command.client.d.mts +2 -2
  170. package/dist/modules/commands/components/empty-command.client.d.mts.map +1 -1
  171. package/dist/modules/commands/components/form-dialog-command.client.d.mts +11 -11
  172. package/dist/modules/commands/components/form-dialog-command.client.d.mts.map +1 -1
  173. package/dist/modules/commands/components/form-dialog-command.client.mjs +1 -1
  174. package/dist/modules/commands/hooks/use-command-mutation.client.d.mts +3 -3
  175. package/dist/modules/commands/menus/context-menu.client.d.mts +2 -2
  176. package/dist/modules/commands/menus/context-menu.client.d.mts.map +1 -1
  177. package/dist/modules/commands/menus/dropdown-menu.client.d.mts +3 -3
  178. package/dist/modules/commands/menus/dropdown-menu.client.d.mts.map +1 -1
  179. package/dist/modules/commands/menus/dropdown-menu.client.mjs +1 -1
  180. package/dist/modules/commands/menus/inline-menu.client.d.mts +3 -3
  181. package/dist/modules/commands/menus/inline-menu.client.d.mts.map +1 -1
  182. package/dist/modules/commands/menus/responsive-menu.client.d.mts +3 -3
  183. package/dist/modules/commands/menus/responsive-menu.client.d.mts.map +1 -1
  184. package/dist/modules/commands/utils/archive-command.client.d.mts +3 -3
  185. package/dist/modules/commands/utils/archive-command.client.d.mts.map +1 -1
  186. package/dist/modules/commands/utils/delete-command.client.d.mts +3 -3
  187. package/dist/modules/commands/utils/delete-command.client.d.mts.map +1 -1
  188. package/dist/modules/config/db/helpers.d.mts +5 -5
  189. package/dist/modules/config/db/helpers.d.mts.map +1 -1
  190. package/dist/modules/data-tables/components/cell/common.client.d.mts +5 -5
  191. package/dist/modules/data-tables/components/column-header.d.mts +2 -2
  192. package/dist/modules/data-tables/components/filters/combobox.client.d.mts +2 -2
  193. package/dist/modules/data-tables/components/filters/combobox.client.mjs +1 -1
  194. package/dist/modules/data-tables/components/filters/slider.client.d.mts +2 -2
  195. package/dist/modules/data-tables/components/filters/slider.client.mjs +1 -1
  196. package/dist/modules/data-tables/components/header.d.mts +4 -4
  197. package/dist/modules/data-tables/components/layout.d.mts +2 -2
  198. package/dist/modules/data-tables/components/search-input.client.d.mts +2 -2
  199. package/dist/modules/data-tables/components/skeleton.d.mts +2 -2
  200. package/dist/modules/data-tables/components/table.d.mts +7 -7
  201. package/dist/modules/data-tables/components/toolbar.d.mts +3 -3
  202. package/dist/modules/data-tables/hooks/use-context.client.d.mts +2 -2
  203. package/dist/modules/data-tables/lib/converters/search.mjs +2 -2
  204. package/dist/modules/data-tables/lib/converters/search.mjs.map +1 -1
  205. package/dist/modules/data-tables/tables/data-table/components/table.d.mts +2 -2
  206. package/dist/modules/data-tables/tables/inline-table/components/cells/common.d.mts +2 -2
  207. package/dist/modules/data-tables/tables/inline-table/components/cells/common.d.mts.map +1 -1
  208. package/dist/modules/data-tables/tables/inline-table/components/cells/drag-handle.client.d.mts +2 -2
  209. package/dist/modules/data-tables/tables/inline-table/components/{inputs → cells}/read-only.d.mts +3 -3
  210. package/dist/modules/data-tables/tables/inline-table/components/cells/read-only.d.mts.map +1 -0
  211. package/dist/modules/data-tables/tables/inline-table/components/{inputs → cells}/read-only.mjs +1 -1
  212. package/dist/modules/data-tables/tables/inline-table/components/cells/read-only.mjs.map +1 -0
  213. package/dist/modules/data-tables/tables/inline-table/components/table.d.mts +2 -2
  214. package/dist/modules/data-tables/tables/inline-table/components/table.mjs +1 -1
  215. package/dist/modules/data-tables/tables/inline-table/hooks/context.client.d.mts +2 -2
  216. package/dist/modules/data-tables/tables/inline-table/hooks/context.client.mjs +1 -1
  217. package/dist/modules/inline-edit/components/combobox-dropdown.client.d.mts +2 -2
  218. package/dist/modules/inline-edit/components/combobox.client.d.mts +2 -2
  219. package/dist/modules/inline-edit/components/date-input.client.d.mts +2 -2
  220. package/dist/modules/inline-edit/components/date-input.client.mjs +1 -1
  221. package/dist/modules/inline-edit/components/date-picker.client.d.mts +2 -2
  222. package/dist/modules/inline-edit/components/date-picker.client.mjs +1 -1
  223. package/dist/modules/inline-edit/components/editor.client.d.mts +2 -2
  224. package/dist/modules/inline-edit/components/input-recipient.client.d.mts +2 -2
  225. package/dist/modules/inline-edit/components/input-toggle.client.d.mts +2 -2
  226. package/dist/modules/inline-edit/components/input.client.d.mts +4 -4
  227. package/dist/modules/inline-edit/components/select.client.d.mts +6 -6
  228. package/dist/modules/inline-edit/components/switch.client.d.mts +2 -2
  229. package/dist/modules/inline-edit/components/toggle.client.d.mts +2 -2
  230. package/dist/modules/inline-edit/hooks/context.client.d.mts +2 -2
  231. package/dist/modules/router/handler/init.server.d.mts +6 -6
  232. package/dist/modules/router/handler/init.server.d.mts.map +1 -1
  233. package/dist/modules/router/lib/query-client.server.d.mts +2 -2
  234. package/dist/modules/router/lib/query-client.server.d.mts.map +1 -1
  235. package/dist/modules/storage/components/dropzone-context.client.d.mts +2 -2
  236. package/dist/modules/storage/components/dropzone-context.client.d.mts.map +1 -1
  237. package/dist/modules/storage/components/dropzone.client.d.mts +5 -5
  238. package/dist/modules/storage/components/dropzone.client.d.mts.map +1 -1
  239. package/dist/modules/storage/components/image-grid.client.d.mts +3 -3
  240. package/dist/modules/storage/components/image-grid.client.d.mts.map +1 -1
  241. package/dist/modules/storage/components/image-grid.client.mjs +3 -3
  242. package/dist/modules/storage/components/upload-zone.client.d.mts +2 -2
  243. package/dist/modules/storage/components/upload-zone.client.d.mts.map +1 -1
  244. package/dist/modules/storage/lib/router.server.d.mts +2342 -2342
  245. package/dist/modules/storage/lib/router.server.d.mts.map +1 -1
  246. package/dist/modules/storage/lib/schema.d.mts +92 -92
  247. package/dist/modules/storage/lib/schema.d.mts.map +1 -1
  248. package/dist/modules/storage/lib/schema.mjs +1 -1
  249. package/dist/modules/storage/lib/service.server.d.mts +15 -15
  250. package/dist/modules/storage/lib/service.server.mjs +2 -2
  251. package/dist/modules/storage/lib/service.server.mjs.map +1 -1
  252. package/dist/modules/storage/lib/validators.d.mts +85 -85
  253. package/dist/modules/storage/lib/validators.d.mts.map +1 -1
  254. package/package.json +1 -1
  255. package/src/components/entry.ts +3 -2
  256. package/src/components/layouts/admin-error-pages.tsx +109 -0
  257. package/src/components/layouts/empty-page.tsx +0 -17
  258. package/src/components/layouts/error-page.tsx +58 -44
  259. package/src/components/layouts/error-sections.tsx +52 -0
  260. package/src/components/layouts/root-error-pages.tsx +12 -0
  261. package/src/modules/data-tables/entry.client.ts +1 -5
  262. package/src/modules/data-tables/lib/converters/search.ts +2 -2
  263. package/src/modules/storage/lib/service.server.ts +1 -1
  264. package/dist/components/layouts/not-allowed-page.d.mts +0 -22
  265. package/dist/components/layouts/not-allowed-page.d.mts.map +0 -1
  266. package/dist/components/layouts/not-allowed-page.mjs +0 -25
  267. package/dist/components/layouts/not-allowed-page.mjs.map +0 -1
  268. package/dist/components/layouts/not-found-page.d.mts +0 -8
  269. package/dist/components/layouts/not-found-page.d.mts.map +0 -1
  270. package/dist/components/layouts/not-found-page.mjs +0 -20
  271. package/dist/components/layouts/not-found-page.mjs.map +0 -1
  272. package/dist/components/layouts/not-found-section.mjs +0 -30
  273. package/dist/components/layouts/not-found-section.mjs.map +0 -1
  274. package/dist/modules/data-tables/tables/inline-table/components/inputs/advanced-select.client.d.mts +0 -29
  275. package/dist/modules/data-tables/tables/inline-table/components/inputs/advanced-select.client.d.mts.map +0 -1
  276. package/dist/modules/data-tables/tables/inline-table/components/inputs/advanced-select.client.mjs +0 -52
  277. package/dist/modules/data-tables/tables/inline-table/components/inputs/advanced-select.client.mjs.map +0 -1
  278. package/dist/modules/data-tables/tables/inline-table/components/inputs/combobox.client.d.mts +0 -27
  279. package/dist/modules/data-tables/tables/inline-table/components/inputs/combobox.client.d.mts.map +0 -1
  280. package/dist/modules/data-tables/tables/inline-table/components/inputs/combobox.client.mjs +0 -29
  281. package/dist/modules/data-tables/tables/inline-table/components/inputs/combobox.client.mjs.map +0 -1
  282. package/dist/modules/data-tables/tables/inline-table/components/inputs/input.client.d.mts +0 -39
  283. package/dist/modules/data-tables/tables/inline-table/components/inputs/input.client.d.mts.map +0 -1
  284. package/dist/modules/data-tables/tables/inline-table/components/inputs/input.client.mjs +0 -71
  285. package/dist/modules/data-tables/tables/inline-table/components/inputs/input.client.mjs.map +0 -1
  286. package/dist/modules/data-tables/tables/inline-table/components/inputs/read-only.d.mts.map +0 -1
  287. package/dist/modules/data-tables/tables/inline-table/components/inputs/read-only.mjs.map +0 -1
  288. package/dist/modules/data-tables/tables/inline-table/components/inputs/select.client.d.mts +0 -33
  289. package/dist/modules/data-tables/tables/inline-table/components/inputs/select.client.d.mts.map +0 -1
  290. package/dist/modules/data-tables/tables/inline-table/components/inputs/select.client.mjs +0 -52
  291. package/dist/modules/data-tables/tables/inline-table/components/inputs/select.client.mjs.map +0 -1
  292. package/dist/modules/data-tables/tables/inline-table/hooks/use-input.client.d.mts +0 -17
  293. package/dist/modules/data-tables/tables/inline-table/hooks/use-input.client.d.mts.map +0 -1
  294. package/dist/modules/data-tables/tables/inline-table/hooks/use-input.client.mjs +0 -53
  295. package/dist/modules/data-tables/tables/inline-table/hooks/use-input.client.mjs.map +0 -1
  296. package/src/components/layouts/not-allowed-page.tsx +0 -44
  297. package/src/components/layouts/not-found-page.tsx +0 -17
  298. package/src/components/layouts/not-found-section.tsx +0 -26
  299. package/src/modules/data-tables/tables/inline-table/components/inputs/advanced-select.client.tsx +0 -90
  300. package/src/modules/data-tables/tables/inline-table/components/inputs/combobox.client.tsx +0 -109
  301. package/src/modules/data-tables/tables/inline-table/components/inputs/input.client.tsx +0 -108
  302. package/src/modules/data-tables/tables/inline-table/components/inputs/select.client.tsx +0 -102
  303. package/src/modules/data-tables/tables/inline-table/hooks/use-input.client.ts +0 -65
  304. /package/src/modules/data-tables/tables/inline-table/components/{inputs → cells}/read-only.tsx +0 -0
@@ -1,109 +0,0 @@
1
- "use client";
2
-
3
- import { Combobox } from "@/components/ui/combobox.client";
4
- import { useInlineTableContext } from "../../hooks/context.client";
5
- import {
6
- useInlineDataTableInput,
7
- UseInlineDataTableInputParams,
8
- } from "../../hooks/use-input.client";
9
-
10
- export type ComboboxItem = {
11
- id: string;
12
- label: string;
13
- disabled?: boolean;
14
- };
15
-
16
- type InlineDataTableComboboxProps<TData, TValue> = UseInlineDataTableInputParams<TData, TValue> & {
17
- options: ComboboxItem[];
18
- emptyMessage?: string;
19
- placeholder?: string;
20
- disabled?: boolean;
21
- };
22
-
23
- export function InlineDataTableCombobox<TData extends { id: string }, TValue>({
24
- context,
25
- action,
26
- permission,
27
- disabled,
28
- ...props
29
- }: InlineDataTableComboboxProps<TData, TValue>) {
30
- const { disabledColumns } = useInlineTableContext();
31
-
32
- const { value, setValue, mutate, isAllowed } = useInlineDataTableInput({
33
- context,
34
- action,
35
- permission,
36
- });
37
-
38
- const isDisabled = disabled || disabledColumns?.[context.column.id] || !isAllowed;
39
-
40
- return (
41
- <Combobox
42
- {...props}
43
- value={value}
44
- disabled={isDisabled}
45
- onSelect={setValue}
46
- onBlur={(e) => mutate(e.target.value as TValue)}
47
- className="rounded-none border-none shadow-none"
48
- />
49
- );
50
-
51
- // return (
52
- // <Popover open={open} onOpenChange={setOpen}>
53
- // <Command className="text-foreground bg-transparent">
54
- // <PopoverAnchor asChild>
55
- // <CommandPrimitive.Input
56
- // data-input
57
- // value={value?.toString() ?? ""}
58
- // placeholder={placeholder}
59
- // disabled={isDisabled}
60
- // onValueChange={(value) => setValue(value as TValue)}
61
- // onKeyDown={(e) => setOpen(e.key !== "Escape")}
62
- // onMouseDown={() => setOpen((open) => !!value || !open)}
63
- // onBlur={(e) => {
64
- // setOpen(false);
65
- // mutate(e.target.value as TValue);
66
- // }}
67
- // onFocus={() => setOpen(true)}
68
- // className="read-only:bg-muted/50 h-full w-full bg-transparent px-3 py-0.5 text-sm file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50"
69
- // />
70
- // </PopoverAnchor>
71
-
72
- // {!open && <CommandList aria-hidden="true" className="hidden" />}
73
-
74
- // <PopoverContent
75
- // asChild
76
- // onOpenAutoFocus={(e) => e.preventDefault()}
77
- // onInteractOutside={(e) => {
78
- // if (e.target instanceof Element && e.target.hasAttribute("cmdk-input")) {
79
- // e.preventDefault();
80
- // }
81
- // }}
82
- // className="w-[var(--radix-popover-trigger-width)] p-0"
83
- // >
84
- // <CommandList>
85
- // {options.length > 0 && (
86
- // <CommandGroup>
87
- // {options.map((option) => (
88
- // <CommandItem
89
- // key={option.id}
90
- // value={option.id}
91
- // onMouseDown={(e) => e.preventDefault()}
92
- // onSelect={(id) => {
93
- // setValue(id as TValue);
94
- // setOpen(false);
95
- // }}
96
- // >
97
- // {option.label}
98
- // </CommandItem>
99
- // ))}
100
- // </CommandGroup>
101
- // )}
102
-
103
- // <CommandEmpty className="px-3 py-1">{emptyMessage}</CommandEmpty>
104
- // </CommandList>
105
- // </PopoverContent>
106
- // </Command>
107
- // </Popover>
108
- // );
109
- }
@@ -1,108 +0,0 @@
1
- "use client";
2
-
3
- import type { Input } from "@/components/ui/input";
4
- import { cn } from "@/lib/utils/cn";
5
- import { ComponentProps } from "react";
6
- import { useInlineTableContext } from "../../hooks/context.client";
7
- import {
8
- useInlineDataTableInput,
9
- UseInlineDataTableInputParams,
10
- } from "../../hooks/use-input.client";
11
-
12
- export type InlineDataTableInputProps<TData, TValue> = Omit<ComponentProps<typeof Input>, "type"> &
13
- UseInlineDataTableInputParams<TData, TValue> & { autoSelect?: boolean };
14
-
15
- export function InlineDataTableStringInput<TData extends { id: string }, TValue>({
16
- context,
17
- action,
18
- permission,
19
- onChange,
20
- onBlur,
21
- onFocus,
22
- autoSelect,
23
- disabled,
24
- className,
25
- ...props
26
- }: InlineDataTableInputProps<TData, TValue>) {
27
- const { disabledColumns } = useInlineTableContext();
28
-
29
- const { value, setValue, mutate, isAllowed } = useInlineDataTableInput({
30
- context,
31
- action,
32
- permission,
33
- });
34
-
35
- const isDisabled = disabled || disabledColumns?.[context.column.id] || !isAllowed;
36
-
37
- return (
38
- <input
39
- {...props}
40
- key={`${context.row.id}-${context.column.id}`}
41
- type="text"
42
- value={value as string}
43
- data-input
44
- disabled={isDisabled}
45
- onFocus={(e) => {
46
- if (autoSelect) e.target.select();
47
- onFocus?.(e);
48
- }}
49
- onChange={(e) => {
50
- setValue(e.target.value as TValue);
51
- onChange?.(e);
52
- }}
53
- onBlur={(e) => {
54
- mutate(e.target.value as TValue);
55
- onBlur?.(e);
56
- }}
57
- className={cn(
58
- "placeholder:text-primary-foreground read-only:bg-muted/50 flex h-full w-full bg-transparent px-3 py-0.5 text-sm file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50",
59
- className,
60
- )}
61
- />
62
- );
63
- }
64
-
65
- export function InlineDataTableNumberInput<TData extends { id: string }, TValue>({
66
- context,
67
- action,
68
- onChange,
69
- onFocus,
70
- onBlur,
71
- autoSelect,
72
- disabled,
73
- className,
74
- ...props
75
- }: InlineDataTableInputProps<TData, TValue>) {
76
- const { disabledColumns } = useInlineTableContext();
77
-
78
- const { value, setValue, mutate, isAllowed } = useInlineDataTableInput({ context, action });
79
-
80
- const isDisabled = disabled || disabledColumns?.[context.column.id] || !isAllowed;
81
-
82
- return (
83
- <input
84
- {...props}
85
- type="number"
86
- value={value as number}
87
- data-input
88
- disabled={isDisabled}
89
- onFocus={(e) => {
90
- if (autoSelect) e.target.select();
91
- onFocus?.(e);
92
- }}
93
- onChange={(e) => {
94
- setValue(e.target.valueAsNumber as TValue);
95
- onChange?.(e);
96
- }}
97
- onBlur={(e) => {
98
- mutate(e.target.value as TValue);
99
- onBlur?.(e);
100
- }}
101
- className={cn(
102
- "placeholder:text-primary-foreground read-only:bg-muted/50 flex h-full w-full bg-transparent px-3 py-0.5 text-sm file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50",
103
- "[appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none",
104
- className,
105
- )}
106
- />
107
- );
108
- }
@@ -1,102 +0,0 @@
1
- "use client";
2
-
3
- import { Select, SelectContent, SelectItem, SelectTrigger } from "@/components/ui/select.client";
4
- import { cn } from "@/lib/utils/cn";
5
- import React from "react";
6
- import { useInlineTableContext } from "../../hooks/context.client";
7
- import {
8
- useInlineDataTableInput,
9
- UseInlineDataTableInputParams,
10
- } from "../../hooks/use-input.client";
11
-
12
- export type SelectItem = {
13
- id: string;
14
- value: string;
15
- label?: React.ReactNode;
16
- disabled?: boolean;
17
- };
18
-
19
- export type InlineDataTableSelectProps<TData, TValue> = UseInlineDataTableInputParams<
20
- TData,
21
- TValue
22
- > & {
23
- placeholder?: React.ReactNode;
24
- options: SelectItem[];
25
- renderSelectedItem?: (selectedItem: SelectItem) => React.ReactNode;
26
- disabled?: boolean;
27
- className?: string;
28
- };
29
-
30
- export function InlineDataTableSelect<TData extends { id: string }, TValue>({
31
- context,
32
- action,
33
- permission,
34
- placeholder,
35
- options,
36
- renderSelectedItem,
37
- disabled,
38
- className,
39
- }: InlineDataTableSelectProps<TData, TValue>) {
40
- const { disabledColumns } = useInlineTableContext();
41
-
42
- const { value, setValue, mutate, isAllowed } = useInlineDataTableInput({
43
- context,
44
- action,
45
- permission,
46
- });
47
- const incomingSelectedItem = options.find((item) => item.id === value);
48
-
49
- const [open, setOpen] = React.useState(false);
50
- const [internalSelectedItem, setInternalSelectedItem] = React.useState<SelectItem | undefined>();
51
-
52
- const selectedItem = incomingSelectedItem ?? internalSelectedItem;
53
-
54
- const isDisabled = disabled || disabledColumns?.[context.column.id] || !isAllowed;
55
-
56
- return (
57
- <Select
58
- open={open}
59
- defaultValue={value as string}
60
- onOpenChange={setOpen}
61
- onValueChange={(id) => {
62
- const foundItem = options.find((item) => item.id === id);
63
-
64
- if (!foundItem) return;
65
-
66
- setValue(foundItem.id as TValue);
67
- mutate(foundItem.id as TValue);
68
- setInternalSelectedItem(foundItem);
69
- setOpen(false);
70
- }}
71
- >
72
- <SelectTrigger
73
- disabled={isDisabled}
74
- className={cn(
75
- "h-full w-full border-none outline-none ring-0 focus:border-0 focus:outline-none focus:ring-0 focus:ring-offset-0 focus-visible:outline-none",
76
- className,
77
- )}
78
- >
79
- {selectedItem ? (
80
- <div className="flex items-center">
81
- {renderSelectedItem?.(selectedItem) ?? selectedItem.label ?? selectedItem.value}
82
- </div>
83
- ) : (
84
- (placeholder ?? "Kies een optie...")
85
- )}
86
- </SelectTrigger>
87
-
88
- <SelectContent>
89
- {options.map((item) => (
90
- <SelectItem
91
- disabled={item.disabled}
92
- className="cursor-pointer"
93
- key={item.id}
94
- value={item.id}
95
- >
96
- {item.label ?? item.value}
97
- </SelectItem>
98
- ))}
99
- </SelectContent>
100
- </Select>
101
- );
102
- }
@@ -1,65 +0,0 @@
1
- import "client-only";
2
-
3
- import { useAction } from "@/lib/hooks/use-action";
4
- import { Permission } from "@/modules/auth/entry";
5
- import { usePermission } from "@/modules/auth/hooks/use-permission";
6
- import { InlineEditSchema } from "@/modules/inline-edit/entry";
7
- import { type CellContext } from "@tanstack/react-table";
8
- import { useEffect, useState } from "react";
9
- import { toast } from "sonner";
10
-
11
- export type UseInlineDataTableInputParams<TData, TValue> = {
12
- context: CellContext<TData, TValue>;
13
- action: (params: InlineEditSchema<TValue>) => Promise<void> | void;
14
- permission?: Permission;
15
- };
16
-
17
- /**
18
- * Inline form table input
19
- */
20
- export function useInlineDataTableInput<TData extends { id: string }, TValue>({
21
- context,
22
- action,
23
- permission,
24
- }: UseInlineDataTableInputParams<TData, TValue>) {
25
- const initialValue = context.getValue();
26
-
27
- const [value, setValue] = useState(initialValue);
28
-
29
- useEffect(() => setValue(initialValue), [initialValue]);
30
-
31
- const permissionData = usePermission(permission ?? {});
32
- const isAllowed = permissionData.data?.success;
33
-
34
- /**
35
- * Update value mutation
36
- */
37
- const { mutate } = useAction({
38
- mutationFn: async (value: TValue) => {
39
- if (initialValue === value) return;
40
-
41
- const { id } = context.row.original as TData;
42
- await action({ id, value });
43
- },
44
- onError: () => {
45
- setValue(initialValue);
46
- },
47
- });
48
-
49
- /**
50
- * Handle the update of the value.
51
- */
52
- const handleUpdate = (value: TValue) => {
53
- if (!isAllowed) {
54
- toast.error("Je hebt geen toestemming om dit te bewerken");
55
- return;
56
- }
57
-
58
- // If the value is the same as the initial value, do nothing
59
- if (value === initialValue) return;
60
-
61
- return mutate(value);
62
- };
63
-
64
- return { value, setValue, mutate: handleUpdate, isAllowed };
65
- }