@ayasofyazilim/ui 0.0.0 → 0.0.2

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 (667) hide show
  1. package/dist/aria/index.js +2 -0
  2. package/dist/aria/index.js.map +1 -0
  3. package/dist/aria/number-field.js +46 -0
  4. package/dist/aria/number-field.js.map +1 -0
  5. package/dist/components/accordion.js +66 -0
  6. package/dist/components/accordion.js.map +1 -0
  7. package/dist/components/alert-dialog.js +148 -0
  8. package/dist/components/alert-dialog.js.map +1 -0
  9. package/dist/components/alert.js +69 -0
  10. package/dist/components/alert.js.map +1 -0
  11. package/dist/components/aspect-ratio.js +12 -0
  12. package/dist/components/aspect-ratio.js.map +1 -0
  13. package/dist/components/avatar.js +55 -0
  14. package/dist/components/avatar.js.map +1 -0
  15. package/dist/components/badge.js +62 -0
  16. package/dist/components/badge.js.map +1 -0
  17. package/dist/components/breadcrumb.js +104 -0
  18. package/dist/components/breadcrumb.js.map +1 -0
  19. package/dist/components/button-group.js +77 -0
  20. package/dist/components/button-group.js.map +1 -0
  21. package/dist/components/button.js +56 -0
  22. package/dist/components/button.js.map +1 -0
  23. package/dist/components/calendar.js +196 -0
  24. package/dist/components/calendar.js.map +1 -0
  25. package/dist/components/card.js +91 -0
  26. package/dist/components/card.js.map +1 -0
  27. package/dist/components/carousel.js +200 -0
  28. package/dist/components/carousel.js.map +1 -0
  29. package/dist/components/chart.js +250 -0
  30. package/dist/components/chart.js.map +1 -0
  31. package/dist/components/checkbox.js +33 -0
  32. package/dist/components/checkbox.js.map +1 -0
  33. package/dist/components/collapsible.js +36 -0
  34. package/dist/components/collapsible.js.map +1 -0
  35. package/dist/components/command.js +178 -0
  36. package/dist/components/command.js.map +1 -0
  37. package/dist/components/context-menu.js +225 -0
  38. package/dist/components/context-menu.js.map +1 -0
  39. package/dist/components/dialog.js +139 -0
  40. package/dist/components/dialog.js.map +1 -0
  41. package/dist/components/drawer.js +130 -0
  42. package/dist/components/drawer.js.map +1 -0
  43. package/dist/components/dropdown-menu.js +234 -0
  44. package/dist/components/dropdown-menu.js.map +1 -0
  45. package/dist/components/empty.js +100 -0
  46. package/dist/components/empty.js.map +1 -0
  47. package/dist/components/field.js +231 -0
  48. package/dist/components/field.js.map +1 -0
  49. package/dist/components/form.js +124 -0
  50. package/dist/components/form.js.map +1 -0
  51. package/dist/components/hover-card.js +40 -0
  52. package/dist/components/hover-card.js.map +1 -0
  53. package/dist/components/input-group.js +156 -0
  54. package/dist/components/input-group.js.map +1 -0
  55. package/dist/components/input-otp.js +68 -0
  56. package/dist/components/input-otp.js.map +1 -0
  57. package/dist/components/input.js +22 -0
  58. package/dist/components/input.js.map +1 -0
  59. package/dist/components/item.js +188 -0
  60. package/dist/components/item.js.map +1 -0
  61. package/dist/components/kbd.js +32 -0
  62. package/dist/components/kbd.js.map +1 -0
  63. package/dist/components/label.js +24 -0
  64. package/dist/components/label.js.map +1 -0
  65. package/dist/components/menubar.js +253 -0
  66. package/dist/components/menubar.js.map +1 -0
  67. package/dist/components/navigation-menu.js +171 -0
  68. package/dist/components/navigation-menu.js.map +1 -0
  69. package/dist/components/pagination.js +125 -0
  70. package/dist/components/pagination.js.map +1 -0
  71. package/dist/components/popover.js +82 -0
  72. package/dist/components/popover.js.map +1 -0
  73. package/dist/components/progress.js +33 -0
  74. package/dist/components/progress.js.map +1 -0
  75. package/dist/components/radio-group.js +47 -0
  76. package/dist/components/radio-group.js.map +1 -0
  77. package/dist/components/resizable.js +50 -0
  78. package/dist/components/resizable.js.map +1 -0
  79. package/dist/components/scroll-area.js +62 -0
  80. package/dist/components/scroll-area.js.map +1 -0
  81. package/dist/components/select.js +173 -0
  82. package/dist/components/select.js.map +1 -0
  83. package/dist/components/separator.js +28 -0
  84. package/dist/components/separator.js.map +1 -0
  85. package/dist/components/sheet.js +129 -0
  86. package/dist/components/sheet.js.map +1 -0
  87. package/dist/components/sidebar.js +759 -0
  88. package/dist/components/sidebar.js.map +1 -0
  89. package/dist/components/skeleton.js +16 -0
  90. package/dist/components/skeleton.js.map +1 -0
  91. package/dist/components/slider.js +65 -0
  92. package/dist/components/slider.js.map +1 -0
  93. package/dist/components/sonner.js +40 -0
  94. package/dist/components/sonner.js.map +1 -0
  95. package/dist/components/spinner.js +18 -0
  96. package/dist/components/spinner.js.map +1 -0
  97. package/dist/components/stepper.js +220 -0
  98. package/dist/components/stepper.js.map +1 -0
  99. package/dist/components/switch.js +33 -0
  100. package/dist/components/switch.js.map +1 -0
  101. package/dist/components/table.js +131 -0
  102. package/dist/components/table.js.map +1 -0
  103. package/dist/components/tabs.js +69 -0
  104. package/dist/components/tabs.js.map +1 -0
  105. package/dist/components/textarea.js +19 -0
  106. package/dist/components/textarea.js.map +1 -0
  107. package/dist/components/toggle-group.js +70 -0
  108. package/dist/components/toggle-group.js.map +1 -0
  109. package/dist/components/toggle.js +45 -0
  110. package/dist/components/toggle.js.map +1 -0
  111. package/dist/components/tooltip.js +65 -0
  112. package/dist/components/tooltip.js.map +1 -0
  113. package/dist/custom/action-button.js +38 -0
  114. package/dist/custom/action-button.js.map +1 -0
  115. package/dist/custom/async-select.js +249 -0
  116. package/dist/custom/async-select.js.map +1 -0
  117. package/dist/custom/awesome-not-found.js +113 -0
  118. package/dist/custom/awesome-not-found.js.map +1 -0
  119. package/dist/custom/charts/area-chart.js +125 -0
  120. package/dist/custom/charts/area-chart.js.map +1 -0
  121. package/dist/custom/charts/bar-chart.js +232 -0
  122. package/dist/custom/charts/bar-chart.js.map +1 -0
  123. package/dist/custom/charts/chart-card.js +71 -0
  124. package/dist/custom/charts/chart-card.js.map +1 -0
  125. package/dist/custom/charts/index.js +5 -0
  126. package/dist/custom/charts/index.js.map +1 -0
  127. package/dist/custom/charts/pie-chart.js +153 -0
  128. package/dist/custom/charts/pie-chart.js.map +1 -0
  129. package/dist/custom/charts/radar-chart.js +112 -0
  130. package/dist/custom/charts/radar-chart.js.map +1 -0
  131. package/dist/custom/checkbox-tree.js +70 -0
  132. package/dist/custom/checkbox-tree.js.map +1 -0
  133. package/dist/custom/combobox.js +233 -0
  134. package/dist/custom/combobox.js.map +1 -0
  135. package/dist/custom/confirm-dialog.js +90 -0
  136. package/dist/custom/confirm-dialog.js.map +1 -0
  137. package/dist/custom/country-selector.js +151 -0
  138. package/dist/custom/country-selector.js.map +1 -0
  139. package/dist/custom/date-picker/calendar-rac.js +91 -0
  140. package/dist/custom/date-picker/calendar-rac.js.map +1 -0
  141. package/dist/custom/date-picker/datefield-rac.js +77 -0
  142. package/dist/custom/date-picker/datefield-rac.js.map +1 -0
  143. package/dist/custom/date-picker/index.js +251 -0
  144. package/dist/custom/date-picker/index.js.map +1 -0
  145. package/dist/custom/date-picker/types/index.js +1 -0
  146. package/dist/custom/date-picker/types/index.js.map +1 -0
  147. package/dist/custom/date-picker/utils/index.js +30 -0
  148. package/dist/custom/date-picker/utils/index.js.map +1 -0
  149. package/dist/custom/date-picker-old.js +46 -0
  150. package/dist/custom/date-picker-old.js.map +1 -0
  151. package/dist/custom/date-tooltip.js +89 -0
  152. package/dist/custom/date-tooltip.js.map +1 -0
  153. package/dist/custom/document-scanner/consts.js +13 -0
  154. package/dist/custom/document-scanner/consts.js.map +1 -0
  155. package/dist/custom/document-scanner/corner-adjustment/action-buttons.js +24 -0
  156. package/dist/custom/document-scanner/corner-adjustment/action-buttons.js.map +1 -0
  157. package/dist/custom/document-scanner/corner-adjustment/corner-handle.js +44 -0
  158. package/dist/custom/document-scanner/corner-adjustment/corner-handle.js.map +1 -0
  159. package/dist/custom/document-scanner/corner-adjustment/hooks/use-corner-drag.js +60 -0
  160. package/dist/custom/document-scanner/corner-adjustment/hooks/use-corner-drag.js.map +1 -0
  161. package/dist/custom/document-scanner/corner-adjustment/index.js +124 -0
  162. package/dist/custom/document-scanner/corner-adjustment/index.js.map +1 -0
  163. package/dist/custom/document-scanner/corner-adjustment/types.js +1 -0
  164. package/dist/custom/document-scanner/corner-adjustment/types.js.map +1 -0
  165. package/dist/custom/document-scanner/corner-adjustment/utils/clip-path.js +16 -0
  166. package/dist/custom/document-scanner/corner-adjustment/utils/clip-path.js.map +1 -0
  167. package/dist/custom/document-scanner/corner-adjustment/zoom-magnifier.js +85 -0
  168. package/dist/custom/document-scanner/corner-adjustment/zoom-magnifier.js.map +1 -0
  169. package/dist/custom/document-scanner/hooks/use-document-capture.js +61 -0
  170. package/dist/custom/document-scanner/hooks/use-document-capture.js.map +1 -0
  171. package/dist/custom/document-scanner/hooks/use-document-scanner.js +59 -0
  172. package/dist/custom/document-scanner/hooks/use-document-scanner.js.map +1 -0
  173. package/dist/custom/document-scanner/hooks/use-perspective-crop.js +31 -0
  174. package/dist/custom/document-scanner/hooks/use-perspective-crop.js.map +1 -0
  175. package/dist/custom/document-scanner/index.js +229 -0
  176. package/dist/custom/document-scanner/index.js.map +1 -0
  177. package/dist/custom/document-scanner/lib.js +289 -0
  178. package/dist/custom/document-scanner/lib.js.map +1 -0
  179. package/dist/custom/document-scanner/types.js +1 -0
  180. package/dist/custom/document-scanner/types.js.map +1 -0
  181. package/dist/custom/document-scanner/utils/perspective-correction.js +100 -0
  182. package/dist/custom/document-scanner/utils/perspective-correction.js.map +1 -0
  183. package/dist/custom/document-viewer/controllers.js +76 -0
  184. package/dist/custom/document-viewer/controllers.js.map +1 -0
  185. package/dist/custom/document-viewer/index.js +36 -0
  186. package/dist/custom/document-viewer/index.js.map +1 -0
  187. package/dist/custom/document-viewer/renderers/image.js +40 -0
  188. package/dist/custom/document-viewer/renderers/image.js.map +1 -0
  189. package/dist/custom/document-viewer/renderers/index.js +3 -0
  190. package/dist/custom/document-viewer/renderers/index.js.map +1 -0
  191. package/dist/custom/document-viewer/renderers/pdf.js +95 -0
  192. package/dist/custom/document-viewer/renderers/pdf.js.map +1 -0
  193. package/dist/custom/email-input/email.js +184 -0
  194. package/dist/custom/email-input/email.js.map +1 -0
  195. package/dist/custom/email-input/index.js +8 -0
  196. package/dist/custom/email-input/index.js.map +1 -0
  197. package/dist/custom/email-input/types.js +13 -0
  198. package/dist/custom/email-input/types.js.map +1 -0
  199. package/dist/custom/file-uploader.js +389 -0
  200. package/dist/custom/file-uploader.js.map +1 -0
  201. package/dist/custom/filter-component/fields/async-select.js +31 -0
  202. package/dist/custom/filter-component/fields/async-select.js.map +1 -0
  203. package/dist/custom/filter-component/fields/date.js +56 -0
  204. package/dist/custom/filter-component/fields/date.js.map +1 -0
  205. package/dist/custom/filter-component/fields/multi-select.js +28 -0
  206. package/dist/custom/filter-component/fields/multi-select.js.map +1 -0
  207. package/dist/custom/filter-component/index.js +149 -0
  208. package/dist/custom/filter-component/index.js.map +1 -0
  209. package/dist/custom/image-canvas.js +193 -0
  210. package/dist/custom/image-canvas.js.map +1 -0
  211. package/dist/custom/json-editor.js +30 -0
  212. package/dist/custom/json-editor.js.map +1 -0
  213. package/dist/custom/master-data-grid/components/dialogs/column-settings-dialog.js +84 -0
  214. package/dist/custom/master-data-grid/components/dialogs/column-settings-dialog.js.map +1 -0
  215. package/dist/custom/master-data-grid/components/dialogs/index.js +5 -0
  216. package/dist/custom/master-data-grid/components/dialogs/index.js.map +1 -0
  217. package/dist/custom/master-data-grid/components/filters/client-filter.js +310 -0
  218. package/dist/custom/master-data-grid/components/filters/client-filter.js.map +1 -0
  219. package/dist/custom/master-data-grid/components/filters/filter-input.js +209 -0
  220. package/dist/custom/master-data-grid/components/filters/filter-input.js.map +1 -0
  221. package/dist/custom/master-data-grid/components/filters/index.js +9 -0
  222. package/dist/custom/master-data-grid/components/filters/index.js.map +1 -0
  223. package/dist/custom/master-data-grid/components/filters/inline-column-filter.js +188 -0
  224. package/dist/custom/master-data-grid/components/filters/inline-column-filter.js.map +1 -0
  225. package/dist/custom/master-data-grid/components/filters/multi-filter-dialog.js +65 -0
  226. package/dist/custom/master-data-grid/components/filters/multi-filter-dialog.js.map +1 -0
  227. package/dist/custom/master-data-grid/components/filters/server-filter.js +213 -0
  228. package/dist/custom/master-data-grid/components/filters/server-filter.js.map +1 -0
  229. package/dist/custom/master-data-grid/components/master-data-grid.js +421 -0
  230. package/dist/custom/master-data-grid/components/master-data-grid.js.map +1 -0
  231. package/dist/custom/master-data-grid/components/pagination/index.js +5 -0
  232. package/dist/custom/master-data-grid/components/pagination/index.js.map +1 -0
  233. package/dist/custom/master-data-grid/components/pagination/pagination.js +159 -0
  234. package/dist/custom/master-data-grid/components/pagination/pagination.js.map +1 -0
  235. package/dist/custom/master-data-grid/components/table/cell-renderer.js +442 -0
  236. package/dist/custom/master-data-grid/components/table/cell-renderer.js.map +1 -0
  237. package/dist/custom/master-data-grid/components/table/header-cell.js +116 -0
  238. package/dist/custom/master-data-grid/components/table/header-cell.js.map +1 -0
  239. package/dist/custom/master-data-grid/components/table/index.js +5 -0
  240. package/dist/custom/master-data-grid/components/table/index.js.map +1 -0
  241. package/dist/custom/master-data-grid/components/table/table-body-renderer.js +79 -0
  242. package/dist/custom/master-data-grid/components/table/table-body-renderer.js.map +1 -0
  243. package/dist/custom/master-data-grid/components/table/virtual-body.js +86 -0
  244. package/dist/custom/master-data-grid/components/table/virtual-body.js.map +1 -0
  245. package/dist/custom/master-data-grid/components/toolbar/index.js +5 -0
  246. package/dist/custom/master-data-grid/components/toolbar/index.js.map +1 -0
  247. package/dist/custom/master-data-grid/components/toolbar/toolbar.js +238 -0
  248. package/dist/custom/master-data-grid/components/toolbar/toolbar.js.map +1 -0
  249. package/dist/custom/master-data-grid/hooks/index.js +7 -0
  250. package/dist/custom/master-data-grid/hooks/index.js.map +1 -0
  251. package/dist/custom/master-data-grid/hooks/use-columns.js +278 -0
  252. package/dist/custom/master-data-grid/hooks/use-columns.js.map +1 -0
  253. package/dist/custom/master-data-grid/hooks/use-editing.js +75 -0
  254. package/dist/custom/master-data-grid/hooks/use-editing.js.map +1 -0
  255. package/dist/custom/master-data-grid/hooks/use-table-state-reducer.js +96 -0
  256. package/dist/custom/master-data-grid/hooks/use-table-state-reducer.js.map +1 -0
  257. package/dist/custom/master-data-grid/hooks/use-table-state.js +25 -0
  258. package/dist/custom/master-data-grid/hooks/use-table-state.js.map +1 -0
  259. package/dist/custom/master-data-grid/index.js +5 -0
  260. package/dist/custom/master-data-grid/index.js.map +1 -0
  261. package/dist/custom/master-data-grid/types.js +1 -0
  262. package/dist/custom/master-data-grid/types.js.map +1 -0
  263. package/dist/custom/master-data-grid/utils/column-generator.js +203 -0
  264. package/dist/custom/master-data-grid/utils/column-generator.js.map +1 -0
  265. package/dist/custom/master-data-grid/utils/export-utils.js +46 -0
  266. package/dist/custom/master-data-grid/utils/export-utils.js.map +1 -0
  267. package/dist/custom/master-data-grid/utils/filter-fns.js +218 -0
  268. package/dist/custom/master-data-grid/utils/filter-fns.js.map +1 -0
  269. package/dist/custom/master-data-grid/utils/index.js +16 -0
  270. package/dist/custom/master-data-grid/utils/index.js.map +1 -0
  271. package/dist/custom/master-data-grid/utils/pinning-utils.js +70 -0
  272. package/dist/custom/master-data-grid/utils/pinning-utils.js.map +1 -0
  273. package/dist/custom/master-data-grid/utils/translation-utils.js +33 -0
  274. package/dist/custom/master-data-grid/utils/translation-utils.js.map +1 -0
  275. package/dist/custom/multi-select.js +339 -0
  276. package/dist/custom/multi-select.js.map +1 -0
  277. package/dist/custom/password-input.js +158 -0
  278. package/dist/custom/password-input.js.map +1 -0
  279. package/dist/custom/phone-input.js +127 -0
  280. package/dist/custom/phone-input.js.map +1 -0
  281. package/dist/custom/schema-form/custom/index.js +2 -0
  282. package/dist/custom/schema-form/custom/index.js.map +1 -0
  283. package/dist/custom/schema-form/custom/label.js +39 -0
  284. package/dist/custom/schema-form/custom/label.js.map +1 -0
  285. package/dist/custom/schema-form/fields/base-input-field.js +73 -0
  286. package/dist/custom/schema-form/fields/base-input-field.js.map +1 -0
  287. package/dist/custom/schema-form/fields/field.js +72 -0
  288. package/dist/custom/schema-form/fields/field.js.map +1 -0
  289. package/dist/custom/schema-form/fields/index.js +6 -0
  290. package/dist/custom/schema-form/fields/index.js.map +1 -0
  291. package/dist/custom/schema-form/fields/object.js +9 -0
  292. package/dist/custom/schema-form/fields/object.js.map +1 -0
  293. package/dist/custom/schema-form/fields/table-array/array-field-item.js +58 -0
  294. package/dist/custom/schema-form/fields/table-array/array-field-item.js.map +1 -0
  295. package/dist/custom/schema-form/fields/table-array/array-field-template.js +104 -0
  296. package/dist/custom/schema-form/fields/table-array/array-field-template.js.map +1 -0
  297. package/dist/custom/schema-form/index.js +219 -0
  298. package/dist/custom/schema-form/index.js.map +1 -0
  299. package/dist/custom/schema-form/templates/description.js +19 -0
  300. package/dist/custom/schema-form/templates/description.js.map +1 -0
  301. package/dist/custom/schema-form/templates/index.js +3 -0
  302. package/dist/custom/schema-form/templates/index.js.map +1 -0
  303. package/dist/custom/schema-form/templates/submit.js +31 -0
  304. package/dist/custom/schema-form/templates/submit.js.map +1 -0
  305. package/dist/custom/schema-form/types.js +1 -0
  306. package/dist/custom/schema-form/types.js.map +1 -0
  307. package/dist/custom/schema-form/utils/index.js +10 -0
  308. package/dist/custom/schema-form/utils/index.js.map +1 -0
  309. package/dist/custom/schema-form/utils/schema-dependency.js +349 -0
  310. package/dist/custom/schema-form/utils/schema-dependency.js.map +1 -0
  311. package/dist/custom/schema-form/utils/schemas.js +190 -0
  312. package/dist/custom/schema-form/utils/schemas.js.map +1 -0
  313. package/dist/custom/schema-form/utils/validation.js +19 -0
  314. package/dist/custom/schema-form/utils/validation.js.map +1 -0
  315. package/dist/custom/schema-form/widgets/boolean.js +73 -0
  316. package/dist/custom/schema-form/widgets/boolean.js.map +1 -0
  317. package/dist/custom/schema-form/widgets/combobox.js +222 -0
  318. package/dist/custom/schema-form/widgets/combobox.js.map +1 -0
  319. package/dist/custom/schema-form/widgets/date.js +56 -0
  320. package/dist/custom/schema-form/widgets/date.js.map +1 -0
  321. package/dist/custom/schema-form/widgets/email.js +37 -0
  322. package/dist/custom/schema-form/widgets/email.js.map +1 -0
  323. package/dist/custom/schema-form/widgets/index.js +11 -0
  324. package/dist/custom/schema-form/widgets/index.js.map +1 -0
  325. package/dist/custom/schema-form/widgets/password.js +42 -0
  326. package/dist/custom/schema-form/widgets/password.js.map +1 -0
  327. package/dist/custom/schema-form/widgets/phone.js +39 -0
  328. package/dist/custom/schema-form/widgets/phone.js.map +1 -0
  329. package/dist/custom/schema-form/widgets/select.js +78 -0
  330. package/dist/custom/schema-form/widgets/select.js.map +1 -0
  331. package/dist/custom/schema-form/widgets/selectable.js +25 -0
  332. package/dist/custom/schema-form/widgets/selectable.js.map +1 -0
  333. package/dist/custom/schema-form/widgets/string-array.js +237 -0
  334. package/dist/custom/schema-form/widgets/string-array.js.map +1 -0
  335. package/dist/custom/schema-form/widgets/url.js +53 -0
  336. package/dist/custom/schema-form/widgets/url.js.map +1 -0
  337. package/dist/custom/section-layout-v2.js +150 -0
  338. package/dist/custom/section-layout-v2.js.map +1 -0
  339. package/dist/custom/select-tabs.js +66 -0
  340. package/dist/custom/select-tabs.js.map +1 -0
  341. package/dist/custom/selectable.js +231 -0
  342. package/dist/custom/selectable.js.map +1 -0
  343. package/dist/custom/stepper.js +166 -0
  344. package/dist/custom/stepper.js.map +1 -0
  345. package/dist/custom/tab-layout.js +182 -0
  346. package/dist/custom/tab-layout.js.map +1 -0
  347. package/dist/custom/tanstack-table/fields/index.js +13 -0
  348. package/dist/custom/tanstack-table/fields/index.js.map +1 -0
  349. package/dist/custom/tanstack-table/fields/tanstack-table-action-dialogs.js +76 -0
  350. package/dist/custom/tanstack-table/fields/tanstack-table-action-dialogs.js.map +1 -0
  351. package/dist/custom/tanstack-table/fields/tanstack-table-column-header.js +47 -0
  352. package/dist/custom/tanstack-table/fields/tanstack-table-column-header.js.map +1 -0
  353. package/dist/custom/tanstack-table/fields/tanstack-table-filter-date.js +132 -0
  354. package/dist/custom/tanstack-table/fields/tanstack-table-filter-date.js.map +1 -0
  355. package/dist/custom/tanstack-table/fields/tanstack-table-filter-faceted.js +131 -0
  356. package/dist/custom/tanstack-table/fields/tanstack-table-filter-faceted.js.map +1 -0
  357. package/dist/custom/tanstack-table/fields/tanstack-table-filter-text.js +64 -0
  358. package/dist/custom/tanstack-table/fields/tanstack-table-filter-text.js.map +1 -0
  359. package/dist/custom/tanstack-table/fields/tanstack-table-pagination.js +135 -0
  360. package/dist/custom/tanstack-table/fields/tanstack-table-pagination.js.map +1 -0
  361. package/dist/custom/tanstack-table/fields/tanstack-table-plain-table.js +111 -0
  362. package/dist/custom/tanstack-table/fields/tanstack-table-plain-table.js.map +1 -0
  363. package/dist/custom/tanstack-table/fields/tanstack-table-row-actions-confirmation.js +65 -0
  364. package/dist/custom/tanstack-table/fields/tanstack-table-row-actions-confirmation.js.map +1 -0
  365. package/dist/custom/tanstack-table/fields/tanstack-table-row-actions-custom-dialog.js +69 -0
  366. package/dist/custom/tanstack-table/fields/tanstack-table-row-actions-custom-dialog.js.map +1 -0
  367. package/dist/custom/tanstack-table/fields/tanstack-table-row-actions.js +119 -0
  368. package/dist/custom/tanstack-table/fields/tanstack-table-row-actions.js.map +1 -0
  369. package/dist/custom/tanstack-table/fields/tanstack-table-table-actions-custom-dialog.js +75 -0
  370. package/dist/custom/tanstack-table/fields/tanstack-table-table-actions-custom-dialog.js.map +1 -0
  371. package/dist/custom/tanstack-table/fields/tanstack-table-table-actions-schemaform-dialog.js +41 -0
  372. package/dist/custom/tanstack-table/fields/tanstack-table-table-actions-schemaform-dialog.js.map +1 -0
  373. package/dist/custom/tanstack-table/fields/tanstack-table-toolbar.js +106 -0
  374. package/dist/custom/tanstack-table/fields/tanstack-table-toolbar.js.map +1 -0
  375. package/dist/custom/tanstack-table/fields/tanstack-table-view-options.js +132 -0
  376. package/dist/custom/tanstack-table/fields/tanstack-table-view-options.js.map +1 -0
  377. package/dist/custom/tanstack-table/index.js +217 -0
  378. package/dist/custom/tanstack-table/index.js.map +1 -0
  379. package/dist/custom/tanstack-table/types/index.js +1 -0
  380. package/dist/custom/tanstack-table/types/index.js.map +1 -0
  381. package/dist/custom/tanstack-table/utils/cell-with-actions.js +16 -0
  382. package/dist/custom/tanstack-table/utils/cell-with-actions.js.map +1 -0
  383. package/dist/custom/tanstack-table/utils/column-names.js +15 -0
  384. package/dist/custom/tanstack-table/utils/column-names.js.map +1 -0
  385. package/dist/custom/tanstack-table/utils/columns-by-row-data.js +246 -0
  386. package/dist/custom/tanstack-table/utils/columns-by-row-data.js.map +1 -0
  387. package/dist/custom/tanstack-table/utils/editable-columns-by-row-data.js +187 -0
  388. package/dist/custom/tanstack-table/utils/editable-columns-by-row-data.js.map +1 -0
  389. package/dist/custom/tanstack-table/utils/faceted-boolean-options.js +25 -0
  390. package/dist/custom/tanstack-table/utils/faceted-boolean-options.js.map +1 -0
  391. package/dist/custom/tanstack-table/utils/index.js +10 -0
  392. package/dist/custom/tanstack-table/utils/index.js.map +1 -0
  393. package/dist/custom/tanstack-table/utils/pinning-styles.js +38 -0
  394. package/dist/custom/tanstack-table/utils/pinning-styles.js.map +1 -0
  395. package/dist/custom/tanstack-table/utils/table.js +66 -0
  396. package/dist/custom/tanstack-table/utils/table.js.map +1 -0
  397. package/dist/custom/tanstack-table/utils/test-conditions.js +10 -0
  398. package/dist/custom/tanstack-table/utils/test-conditions.js.map +1 -0
  399. package/dist/custom/timeline.js +165 -0
  400. package/dist/custom/timeline.js.map +1 -0
  401. package/dist/custom/tree.js +130 -0
  402. package/dist/custom/tree.js.map +1 -0
  403. package/dist/custom/tscanify/browser.js +36 -0
  404. package/dist/custom/tscanify/browser.js.map +1 -0
  405. package/dist/custom/tscanify/index.js +34 -0
  406. package/dist/custom/tscanify/index.js.map +1 -0
  407. package/dist/custom/tscanify/tscanify-browser.js +363 -0
  408. package/dist/custom/tscanify/tscanify-browser.js.map +1 -0
  409. package/dist/custom/tscanify/tscanify.js +197 -0
  410. package/dist/custom/tscanify/tscanify.js.map +1 -0
  411. package/dist/custom/tscanify/types.js +1 -0
  412. package/dist/custom/tscanify/types.js.map +1 -0
  413. package/dist/custom/webcam.js +519 -0
  414. package/dist/custom/webcam.js.map +1 -0
  415. package/dist/hooks/use-callback-ref.js +15 -0
  416. package/dist/hooks/use-callback-ref.js.map +1 -0
  417. package/dist/hooks/use-controllable-state.js +49 -0
  418. package/dist/hooks/use-controllable-state.js.map +1 -0
  419. package/dist/hooks/use-debounce.js +18 -0
  420. package/dist/hooks/use-debounce.js.map +1 -0
  421. package/dist/hooks/use-is-visible.js +22 -0
  422. package/dist/hooks/use-is-visible.js.map +1 -0
  423. package/dist/hooks/use-media-query.js +19 -0
  424. package/dist/hooks/use-media-query.js.map +1 -0
  425. package/dist/hooks/use-mobile.js +21 -0
  426. package/dist/hooks/use-mobile.js.map +1 -0
  427. package/dist/hooks/use-on-window-resize.js +15 -0
  428. package/dist/hooks/use-on-window-resize.js.map +1 -0
  429. package/dist/hooks/use-scroll.js +20 -0
  430. package/dist/hooks/use-scroll.js.map +1 -0
  431. package/dist/lib/utils.js +48 -0
  432. package/dist/lib/utils.js.map +1 -0
  433. package/dist/lib/zod.js +7 -0
  434. package/dist/lib/zod.js.map +1 -0
  435. package/package.json +34 -8
  436. package/src/aria/index.tsx +1 -1
  437. package/src/aria/number-field.tsx +41 -41
  438. package/src/components/accordion.tsx +66 -66
  439. package/src/components/alert-dialog.tsx +157 -157
  440. package/src/components/alert.tsx +70 -70
  441. package/src/components/aspect-ratio.tsx +11 -11
  442. package/src/components/avatar.tsx +53 -53
  443. package/src/components/badge.tsx +74 -67
  444. package/src/components/breadcrumb.tsx +109 -109
  445. package/src/components/button-group.tsx +83 -83
  446. package/src/components/button.tsx +69 -68
  447. package/src/components/calendar.tsx +216 -219
  448. package/src/components/card.tsx +92 -92
  449. package/src/components/carousel.tsx +241 -241
  450. package/src/components/chart.tsx +363 -363
  451. package/src/components/checkbox.tsx +32 -32
  452. package/src/components/collapsible.tsx +33 -33
  453. package/src/components/command.tsx +184 -184
  454. package/src/components/context-menu.tsx +252 -252
  455. package/src/components/dialog.tsx +144 -144
  456. package/src/components/drawer.tsx +135 -135
  457. package/src/components/dropdown-menu.tsx +258 -258
  458. package/src/components/empty.tsx +100 -100
  459. package/src/components/field.tsx +248 -248
  460. package/src/components/form.tsx +169 -169
  461. package/src/components/hover-card.tsx +44 -44
  462. package/src/components/input-group.tsx +170 -170
  463. package/src/components/input-otp.tsx +77 -77
  464. package/src/components/input.tsx +21 -21
  465. package/src/components/item.tsx +193 -193
  466. package/src/components/kbd.tsx +28 -28
  467. package/src/components/label.tsx +24 -24
  468. package/src/components/menubar.tsx +276 -276
  469. package/src/components/navigation-menu.tsx +168 -168
  470. package/src/components/pagination.tsx +127 -130
  471. package/src/components/popover.tsx +88 -88
  472. package/src/components/progress.tsx +31 -31
  473. package/src/components/radio-group.tsx +45 -45
  474. package/src/components/resizable.tsx +56 -56
  475. package/src/components/scroll-area.tsx +58 -58
  476. package/src/components/select.tsx +189 -189
  477. package/src/components/separator.tsx +28 -28
  478. package/src/components/sheet.tsx +140 -140
  479. package/src/components/sidebar.tsx +862 -862
  480. package/src/components/skeleton.tsx +13 -13
  481. package/src/components/slider.tsx +63 -63
  482. package/src/components/sonner.tsx +40 -40
  483. package/src/components/spinner.tsx +16 -16
  484. package/src/components/stepper.tsx +290 -291
  485. package/src/components/switch.tsx +31 -31
  486. package/src/components/table.tsx +133 -133
  487. package/src/components/tabs.tsx +66 -66
  488. package/src/components/textarea.tsx +18 -18
  489. package/src/components/toggle-group.tsx +83 -83
  490. package/src/components/toggle.tsx +47 -47
  491. package/src/components/tooltip.tsx +66 -66
  492. package/src/custom/action-button.tsx +45 -48
  493. package/src/custom/async-select.tsx +287 -287
  494. package/src/custom/awesome-not-found.tsx +116 -116
  495. package/src/custom/charts/area-chart.tsx +147 -147
  496. package/src/custom/charts/bar-chart.tsx +233 -233
  497. package/src/custom/charts/chart-card.tsx +103 -103
  498. package/src/custom/charts/index.tsx +16 -16
  499. package/src/custom/charts/pie-chart.tsx +168 -168
  500. package/src/custom/charts/radar-chart.tsx +126 -126
  501. package/src/custom/checkbox-tree.tsx +100 -100
  502. package/src/custom/combobox.tsx +296 -296
  503. package/src/custom/confirm-dialog.tsx +114 -102
  504. package/src/custom/country-selector.tsx +204 -204
  505. package/src/custom/date-picker/calendar-rac.tsx +109 -109
  506. package/src/custom/date-picker/datefield-rac.tsx +84 -84
  507. package/src/custom/date-picker/index.tsx +273 -273
  508. package/src/custom/date-picker/types/index.ts +4 -4
  509. package/src/custom/date-picker/utils/index.ts +42 -42
  510. package/src/custom/date-picker-old.tsx +50 -50
  511. package/src/custom/date-tooltip.tsx +98 -98
  512. package/src/custom/document-scanner/consts.ts +5 -5
  513. package/src/custom/document-scanner/corner-adjustment/action-buttons.tsx +33 -33
  514. package/src/custom/document-scanner/corner-adjustment/corner-handle.tsx +43 -43
  515. package/src/custom/document-scanner/corner-adjustment/hooks/use-corner-drag.ts +85 -85
  516. package/src/custom/document-scanner/corner-adjustment/index.tsx +125 -125
  517. package/src/custom/document-scanner/corner-adjustment/types.ts +53 -53
  518. package/src/custom/document-scanner/corner-adjustment/utils/clip-path.ts +22 -22
  519. package/src/custom/document-scanner/corner-adjustment/zoom-magnifier.tsx +115 -115
  520. package/src/custom/document-scanner/hooks/use-document-capture.ts +81 -81
  521. package/src/custom/document-scanner/hooks/use-document-scanner.ts +80 -80
  522. package/src/custom/document-scanner/hooks/use-perspective-crop.ts +38 -38
  523. package/src/custom/document-scanner/index.tsx +255 -255
  524. package/src/custom/document-scanner/lib.ts +407 -407
  525. package/src/custom/document-scanner/types.ts +205 -205
  526. package/src/custom/document-scanner/utils/perspective-correction.ts +139 -139
  527. package/src/custom/document-viewer/controllers.tsx +98 -98
  528. package/src/custom/document-viewer/index.tsx +43 -43
  529. package/src/custom/document-viewer/renderers/image.tsx +37 -37
  530. package/src/custom/document-viewer/renderers/index.tsx +2 -2
  531. package/src/custom/document-viewer/renderers/pdf.tsx +105 -105
  532. package/src/custom/email-input/domains.json +159 -159
  533. package/src/custom/email-input/email.tsx +231 -229
  534. package/src/custom/email-input/index.tsx +4 -4
  535. package/src/custom/email-input/types.ts +104 -104
  536. package/src/custom/file-uploader.tsx +541 -541
  537. package/src/custom/filter-component/fields/async-select.tsx +33 -33
  538. package/src/custom/filter-component/fields/date.tsx +60 -60
  539. package/src/custom/filter-component/fields/multi-select.tsx +30 -30
  540. package/src/custom/filter-component/index.tsx +217 -217
  541. package/src/custom/image-canvas.tsx +260 -260
  542. package/src/custom/json-editor.tsx +22 -22
  543. package/src/custom/master-data-grid/components/dialogs/column-settings-dialog.tsx +100 -100
  544. package/src/custom/master-data-grid/components/dialogs/index.ts +1 -1
  545. package/src/custom/master-data-grid/components/filters/client-filter.tsx +369 -368
  546. package/src/custom/master-data-grid/components/filters/filter-input.tsx +256 -256
  547. package/src/custom/master-data-grid/components/filters/index.ts +3 -3
  548. package/src/custom/master-data-grid/components/filters/inline-column-filter.tsx +233 -233
  549. package/src/custom/master-data-grid/components/filters/multi-filter-dialog.tsx +91 -90
  550. package/src/custom/master-data-grid/components/filters/server-filter.tsx +265 -255
  551. package/src/custom/master-data-grid/components/master-data-grid.tsx +472 -472
  552. package/src/custom/master-data-grid/components/pagination/index.ts +1 -1
  553. package/src/custom/master-data-grid/components/pagination/pagination.tsx +178 -178
  554. package/src/custom/master-data-grid/components/table/cell-renderer.tsx +621 -634
  555. package/src/custom/master-data-grid/components/table/header-cell.tsx +162 -162
  556. package/src/custom/master-data-grid/components/table/index.ts +4 -4
  557. package/src/custom/master-data-grid/components/table/table-body-renderer.tsx +113 -113
  558. package/src/custom/master-data-grid/components/table/virtual-body.tsx +138 -138
  559. package/src/custom/master-data-grid/components/toolbar/index.ts +1 -1
  560. package/src/custom/master-data-grid/components/toolbar/toolbar.tsx +314 -314
  561. package/src/custom/master-data-grid/hooks/index.ts +3 -3
  562. package/src/custom/master-data-grid/hooks/use-columns.tsx +353 -332
  563. package/src/custom/master-data-grid/hooks/use-editing.ts +106 -106
  564. package/src/custom/master-data-grid/hooks/use-table-state-reducer.ts +157 -157
  565. package/src/custom/master-data-grid/hooks/use-table-state.ts +31 -31
  566. package/src/custom/master-data-grid/index.ts +16 -16
  567. package/src/custom/master-data-grid/types.ts +487 -466
  568. package/src/custom/master-data-grid/utils/column-generator.tsx +324 -306
  569. package/src/custom/master-data-grid/utils/export-utils.ts +67 -67
  570. package/src/custom/master-data-grid/utils/filter-fns.ts +310 -290
  571. package/src/custom/master-data-grid/utils/index.ts +8 -8
  572. package/src/custom/master-data-grid/utils/pinning-utils.ts +88 -88
  573. package/src/custom/master-data-grid/utils/translation-utils.ts +42 -42
  574. package/src/custom/multi-select.tsx +434 -432
  575. package/src/custom/password-input.tsx +194 -194
  576. package/src/custom/phone-input.tsx +172 -172
  577. package/src/custom/schema-form/custom/index.tsx +1 -1
  578. package/src/custom/schema-form/custom/label.tsx +53 -53
  579. package/src/custom/schema-form/fields/base-input-field.tsx +82 -82
  580. package/src/custom/schema-form/fields/field.tsx +67 -67
  581. package/src/custom/schema-form/fields/index.tsx +5 -5
  582. package/src/custom/schema-form/fields/object.tsx +12 -12
  583. package/src/custom/schema-form/fields/table-array/array-field-item.tsx +90 -90
  584. package/src/custom/schema-form/fields/table-array/array-field-template.tsx +115 -115
  585. package/src/custom/schema-form/index.tsx +259 -259
  586. package/src/custom/schema-form/templates/description.tsx +20 -20
  587. package/src/custom/schema-form/templates/index.tsx +2 -2
  588. package/src/custom/schema-form/templates/submit.tsx +32 -32
  589. package/src/custom/schema-form/types.ts +64 -64
  590. package/src/custom/schema-form/utils/index.ts +4 -4
  591. package/src/custom/schema-form/utils/schema-dependency.ts +655 -655
  592. package/src/custom/schema-form/utils/schemas.ts +289 -289
  593. package/src/custom/schema-form/utils/validation.ts +23 -23
  594. package/src/custom/schema-form/widgets/boolean.tsx +77 -77
  595. package/src/custom/schema-form/widgets/combobox.tsx +274 -274
  596. package/src/custom/schema-form/widgets/date.tsx +59 -59
  597. package/src/custom/schema-form/widgets/email.tsx +34 -34
  598. package/src/custom/schema-form/widgets/index.tsx +10 -10
  599. package/src/custom/schema-form/widgets/password.tsx +40 -40
  600. package/src/custom/schema-form/widgets/phone.tsx +40 -40
  601. package/src/custom/schema-form/widgets/select.tsx +105 -105
  602. package/src/custom/schema-form/widgets/selectable.tsx +25 -25
  603. package/src/custom/schema-form/widgets/string-array.tsx +296 -296
  604. package/src/custom/schema-form/widgets/url.tsx +56 -56
  605. package/src/custom/section-layout-v2.tsx +212 -212
  606. package/src/custom/select-tabs.tsx +109 -109
  607. package/src/custom/selectable.tsx +316 -316
  608. package/src/custom/stepper.tsx +236 -236
  609. package/src/custom/tab-layout.tsx +213 -213
  610. package/src/custom/tanstack-table/fields/index.tsx +12 -12
  611. package/src/custom/tanstack-table/fields/tanstack-table-action-dialogs.tsx +89 -89
  612. package/src/custom/tanstack-table/fields/tanstack-table-column-header.tsx +68 -66
  613. package/src/custom/tanstack-table/fields/tanstack-table-filter-date.tsx +180 -180
  614. package/src/custom/tanstack-table/fields/tanstack-table-filter-faceted.tsx +158 -158
  615. package/src/custom/tanstack-table/fields/tanstack-table-filter-text.tsx +73 -76
  616. package/src/custom/tanstack-table/fields/tanstack-table-pagination.tsx +136 -136
  617. package/src/custom/tanstack-table/fields/tanstack-table-plain-table.tsx +142 -142
  618. package/src/custom/tanstack-table/fields/tanstack-table-row-actions-confirmation.tsx +77 -77
  619. package/src/custom/tanstack-table/fields/tanstack-table-row-actions-custom-dialog.tsx +87 -87
  620. package/src/custom/tanstack-table/fields/tanstack-table-row-actions.tsx +151 -151
  621. package/src/custom/tanstack-table/fields/tanstack-table-table-actions-custom-dialog.tsx +88 -88
  622. package/src/custom/tanstack-table/fields/tanstack-table-table-actions-schemaform-dialog.tsx +47 -47
  623. package/src/custom/tanstack-table/fields/tanstack-table-toolbar.tsx +143 -143
  624. package/src/custom/tanstack-table/fields/tanstack-table-view-options.tsx +171 -171
  625. package/src/custom/tanstack-table/index.tsx +244 -244
  626. package/src/custom/tanstack-table/types/index.ts +328 -328
  627. package/src/custom/tanstack-table/utils/cell-with-actions.tsx +21 -21
  628. package/src/custom/tanstack-table/utils/column-names.ts +26 -26
  629. package/src/custom/tanstack-table/utils/columns-by-row-data.tsx +312 -312
  630. package/src/custom/tanstack-table/utils/editable-columns-by-row-data.tsx +219 -219
  631. package/src/custom/tanstack-table/utils/faceted-boolean-options.tsx +22 -22
  632. package/src/custom/tanstack-table/utils/index.tsx +10 -10
  633. package/src/custom/tanstack-table/utils/pinning-styles.ts +57 -57
  634. package/src/custom/tanstack-table/utils/table.tsx +83 -83
  635. package/src/custom/tanstack-table/utils/test-conditions.ts +17 -17
  636. package/src/custom/timeline.tsx +208 -208
  637. package/src/custom/tree.tsx +202 -200
  638. package/src/custom/tscanify/browser.ts +66 -66
  639. package/src/custom/tscanify/index.ts +51 -51
  640. package/src/custom/tscanify/tscanify-browser.ts +522 -522
  641. package/src/custom/tscanify/tscanify.ts +262 -262
  642. package/src/custom/tscanify/types.ts +22 -22
  643. package/src/custom/webcam.tsx +737 -737
  644. package/src/hooks/use-callback-ref.ts +27 -27
  645. package/src/hooks/use-controllable-state.ts +67 -67
  646. package/src/hooks/use-debounce.ts +19 -19
  647. package/src/hooks/use-is-visible.ts +23 -23
  648. package/src/hooks/use-media-query.ts +21 -21
  649. package/src/hooks/use-mobile.ts +21 -21
  650. package/src/hooks/use-on-window-resize.ts +15 -15
  651. package/src/hooks/use-scroll.tsx +22 -22
  652. package/src/lib/utils.ts +61 -61
  653. package/src/lib/zod.ts +2 -2
  654. package/src/styles/core.css +57 -57
  655. package/src/test/email-input.test.tsx +217 -217
  656. package/src/test/password-input.test.tsx +92 -92
  657. package/src/test/select-tabs.test.tsx +302 -302
  658. package/src/test/selectable.test.tsx +1093 -1093
  659. package/__mocks__/canvas.ts +0 -8
  660. package/components.json +0 -21
  661. package/eslint.config.js +0 -4
  662. package/jest-environment.js +0 -37
  663. package/jest.config.ts +0 -47
  664. package/jest.setup.ts +0 -69
  665. package/postcss.config.mjs +0 -6
  666. package/tsconfig.json +0 -13
  667. package/tsconfig.lint.json +0 -8
@@ -0,0 +1,188 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { ChevronDown } from "lucide-react";
3
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
4
+ import {
5
+ DropdownMenu,
6
+ DropdownMenuContent,
7
+ DropdownMenuItem,
8
+ DropdownMenuTrigger
9
+ } from "../../../../components/dropdown-menu";
10
+ import {
11
+ getFilterOperators,
12
+ validateFilterValue
13
+ } from "../../utils/filter-fns";
14
+ import { getTranslations } from "../../utils/translation-utils";
15
+ import { FilterInput } from "./filter-input";
16
+ function InlineColumnFilter({
17
+ column,
18
+ t
19
+ }) {
20
+ const meta = column.columnDef.meta;
21
+ const schemaProperty = meta?.schemaProperty;
22
+ const filterOperators = meta?.filterOperators;
23
+ const availableOperators = useMemo(() => {
24
+ return filterOperators || (schemaProperty ? getFilterOperators(schemaProperty.type, schemaProperty.format) : ["contains"]);
25
+ }, [filterOperators, schemaProperty?.type, schemaProperty?.format]);
26
+ const currentFilter = column.getFilterValue();
27
+ const [operator, setOperator] = useState(
28
+ currentFilter?.operator || availableOperators[0] || "contains"
29
+ );
30
+ const [value, setValue] = useState(
31
+ String(currentFilter?.value || "")
32
+ );
33
+ const [value2, setValue2] = useState(
34
+ String(currentFilter?.value2 || "")
35
+ );
36
+ const debounceTimerRef = useRef(null);
37
+ const isRangeOperator = operator === "between" || operator === "inRange";
38
+ useEffect(() => {
39
+ return () => {
40
+ if (debounceTimerRef.current) {
41
+ clearTimeout(debounceTimerRef.current);
42
+ }
43
+ };
44
+ }, []);
45
+ const handleValueChange = useCallback(
46
+ (newValue) => {
47
+ setValue(newValue);
48
+ if (debounceTimerRef.current) {
49
+ clearTimeout(debounceTimerRef.current);
50
+ }
51
+ debounceTimerRef.current = setTimeout(() => {
52
+ if (!newValue && !isRangeOperator) {
53
+ column.setFilterValue(void 0);
54
+ return;
55
+ }
56
+ if (isRangeOperator) {
57
+ if (newValue && value2 && validateFilterValue(operator, newValue, value2)) {
58
+ const filter = {
59
+ id: column.id,
60
+ operator,
61
+ value: newValue,
62
+ value2
63
+ };
64
+ column.setFilterValue(filter);
65
+ }
66
+ } else if (validateFilterValue(operator, newValue)) {
67
+ const filter = {
68
+ id: column.id,
69
+ operator,
70
+ value: newValue
71
+ };
72
+ column.setFilterValue(filter);
73
+ }
74
+ }, 300);
75
+ },
76
+ [column, operator, value2, isRangeOperator]
77
+ );
78
+ const handleValue2Change = useCallback(
79
+ (newValue2) => {
80
+ setValue2(newValue2);
81
+ if (debounceTimerRef.current) {
82
+ clearTimeout(debounceTimerRef.current);
83
+ }
84
+ debounceTimerRef.current = setTimeout(() => {
85
+ if (value && newValue2 && validateFilterValue(operator, value, newValue2)) {
86
+ const filter = {
87
+ id: column.id,
88
+ operator,
89
+ value,
90
+ value2: newValue2
91
+ };
92
+ column.setFilterValue(filter);
93
+ }
94
+ }, 300);
95
+ },
96
+ [column, operator, value]
97
+ );
98
+ const handleSliderChange = (values) => {
99
+ const [min, max] = values;
100
+ setValue(String(min));
101
+ setValue2(String(max));
102
+ const filter = {
103
+ id: column.id,
104
+ operator,
105
+ value: String(min),
106
+ value2: String(max)
107
+ };
108
+ column.setFilterValue(filter);
109
+ };
110
+ const handleClear = () => {
111
+ setValue("");
112
+ setValue2("");
113
+ column.setFilterValue(void 0);
114
+ };
115
+ const handleOperatorChange = (newOperator) => {
116
+ setOperator(newOperator);
117
+ const isNewRangeOperator = newOperator === "between" || newOperator === "inRange";
118
+ const needsNoInputNew = newOperator === "isEmpty" || newOperator === "isNotEmpty";
119
+ if (needsNoInputNew) {
120
+ const filter = {
121
+ id: column.id,
122
+ operator: newOperator,
123
+ value: ""
124
+ };
125
+ column.setFilterValue(filter);
126
+ } else if (isNewRangeOperator) {
127
+ if (value && value2 && validateFilterValue(newOperator, value, value2)) {
128
+ const filter = {
129
+ id: column.id,
130
+ operator: newOperator,
131
+ value,
132
+ value2
133
+ };
134
+ column.setFilterValue(filter);
135
+ } else {
136
+ column.setFilterValue(void 0);
137
+ }
138
+ } else {
139
+ if (value && validateFilterValue(newOperator, value)) {
140
+ const filter = {
141
+ id: column.id,
142
+ operator: newOperator,
143
+ value
144
+ };
145
+ column.setFilterValue(filter);
146
+ } else {
147
+ column.setFilterValue(void 0);
148
+ }
149
+ }
150
+ };
151
+ const showOperatorSelect = availableOperators.length > 1;
152
+ return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
153
+ showOperatorSelect && /* @__PURE__ */ jsxs(DropdownMenu, { children: [
154
+ /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs("button", { className: "w-full px-2 py-1.5 text-xs font-medium hover:bg-accent rounded-md flex items-center justify-between", children: [
155
+ getTranslations(`filter.operator.${operator}`, t),
156
+ /* @__PURE__ */ jsx(ChevronDown, { className: "size-3" })
157
+ ] }) }),
158
+ /* @__PURE__ */ jsx(DropdownMenuContent, { align: "start", children: availableOperators.map((op) => /* @__PURE__ */ jsx(
159
+ DropdownMenuItem,
160
+ {
161
+ onClick: () => handleOperatorChange(op),
162
+ className: "text-xs",
163
+ children: getTranslations(`filter.operator.${op}`, t)
164
+ },
165
+ op
166
+ )) })
167
+ ] }),
168
+ /* @__PURE__ */ jsx(
169
+ FilterInput,
170
+ {
171
+ operator,
172
+ value,
173
+ value2,
174
+ columnMeta: meta,
175
+ onValueChange: handleValueChange,
176
+ onValue2Change: handleValue2Change,
177
+ onSliderChange: handleSliderChange,
178
+ onClear: handleClear,
179
+ t,
180
+ variant: "inline"
181
+ }
182
+ )
183
+ ] });
184
+ }
185
+ export {
186
+ InlineColumnFilter
187
+ };
188
+ //# sourceMappingURL=inline-column-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/custom/master-data-grid/components/filters/inline-column-filter.tsx"],"sourcesContent":["import type { Column } from \"@tanstack/react-table\";\r\nimport { ChevronDown } from \"lucide-react\";\r\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\r\nimport {\r\n DropdownMenu,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuTrigger,\r\n} from \"../../../../components/dropdown-menu\";\r\nimport type {\r\n ColumnFilter,\r\n ColumnMeta,\r\n FilterOperator,\r\n MasterDataGridResources,\r\n} from \"../../types\";\r\nimport {\r\n getFilterOperators,\r\n validateFilterValue,\r\n} from \"../../utils/filter-fns\";\r\nimport { getTranslations } from \"../../utils/translation-utils\";\r\nimport { FilterInput } from \"./filter-input\";\r\n\r\ninterface InlineColumnFilterProps<TData> {\r\n column: Column<TData, unknown>;\r\n t?: MasterDataGridResources;\r\n}\r\n\r\nexport function InlineColumnFilter<TData>({\r\n column,\r\n t,\r\n}: InlineColumnFilterProps<TData>) {\r\n const meta = column.columnDef.meta as ColumnMeta | undefined;\r\n const schemaProperty = meta?.schemaProperty;\r\n const filterOperators = meta?.filterOperators;\r\n\r\n const availableOperators = useMemo<FilterOperator[]>(() => {\r\n return (\r\n filterOperators ||\r\n (schemaProperty\r\n ? getFilterOperators(schemaProperty.type, schemaProperty.format)\r\n : [\"contains\"])\r\n );\r\n }, [filterOperators, schemaProperty?.type, schemaProperty?.format]);\r\n\r\n const currentFilter = column.getFilterValue() as ColumnFilter | undefined;\r\n const [operator, setOperator] = useState<FilterOperator>(\r\n currentFilter?.operator || availableOperators[0] || \"contains\"\r\n );\r\n const [value, setValue] = useState<string>(\r\n String(currentFilter?.value || \"\")\r\n );\r\n const [value2, setValue2] = useState<string>(\r\n String(currentFilter?.value2 || \"\")\r\n );\r\n const debounceTimerRef = useRef<NodeJS.Timeout | null>(null);\r\n\r\n const isRangeOperator = operator === \"between\" || operator === \"inRange\";\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (debounceTimerRef.current) {\r\n clearTimeout(debounceTimerRef.current);\r\n }\r\n };\r\n }, []);\r\n\r\n const handleValueChange = useCallback(\r\n (newValue: string) => {\r\n setValue(newValue);\r\n\r\n if (debounceTimerRef.current) {\r\n clearTimeout(debounceTimerRef.current);\r\n }\r\n\r\n debounceTimerRef.current = setTimeout(() => {\r\n if (!newValue && !isRangeOperator) {\r\n column.setFilterValue(undefined);\r\n return;\r\n }\r\n\r\n if (isRangeOperator) {\r\n if (\r\n newValue &&\r\n value2 &&\r\n validateFilterValue(operator, newValue, value2)\r\n ) {\r\n const filter: ColumnFilter = {\r\n id: column.id,\r\n operator,\r\n value: newValue,\r\n value2,\r\n };\r\n column.setFilterValue(filter);\r\n }\r\n } else if (validateFilterValue(operator, newValue)) {\r\n const filter: ColumnFilter = {\r\n id: column.id,\r\n operator,\r\n value: newValue,\r\n };\r\n column.setFilterValue(filter);\r\n }\r\n }, 300);\r\n },\r\n [column, operator, value2, isRangeOperator]\r\n );\r\n\r\n const handleValue2Change = useCallback(\r\n (newValue2: string) => {\r\n setValue2(newValue2);\r\n if (debounceTimerRef.current) {\r\n clearTimeout(debounceTimerRef.current);\r\n }\r\n debounceTimerRef.current = setTimeout(() => {\r\n if (\r\n value &&\r\n newValue2 &&\r\n validateFilterValue(operator, value, newValue2)\r\n ) {\r\n const filter: ColumnFilter = {\r\n id: column.id,\r\n operator,\r\n value,\r\n value2: newValue2,\r\n };\r\n column.setFilterValue(filter);\r\n }\r\n }, 300);\r\n },\r\n [column, operator, value]\r\n );\r\n\r\n const handleSliderChange = (values: number[]) => {\r\n const [min, max] = values;\r\n setValue(String(min));\r\n setValue2(String(max));\r\n\r\n const filter: ColumnFilter = {\r\n id: column.id,\r\n operator,\r\n value: String(min),\r\n value2: String(max),\r\n };\r\n column.setFilterValue(filter);\r\n };\r\n\r\n const handleClear = () => {\r\n setValue(\"\");\r\n setValue2(\"\");\r\n column.setFilterValue(undefined);\r\n };\r\n\r\n const handleOperatorChange = (newOperator: FilterOperator) => {\r\n setOperator(newOperator);\r\n\r\n const isNewRangeOperator =\r\n newOperator === \"between\" || newOperator === \"inRange\";\r\n const needsNoInputNew =\r\n newOperator === \"isEmpty\" || newOperator === \"isNotEmpty\";\r\n\r\n if (needsNoInputNew) {\r\n const filter: ColumnFilter = {\r\n id: column.id,\r\n operator: newOperator,\r\n value: \"\",\r\n };\r\n column.setFilterValue(filter);\r\n } else if (isNewRangeOperator) {\r\n if (value && value2 && validateFilterValue(newOperator, value, value2)) {\r\n const filter: ColumnFilter = {\r\n id: column.id,\r\n operator: newOperator,\r\n value,\r\n value2,\r\n };\r\n column.setFilterValue(filter);\r\n } else {\r\n column.setFilterValue(undefined);\r\n }\r\n } else {\r\n if (value && validateFilterValue(newOperator, value)) {\r\n const filter: ColumnFilter = {\r\n id: column.id,\r\n operator: newOperator,\r\n value,\r\n };\r\n column.setFilterValue(filter);\r\n } else {\r\n column.setFilterValue(undefined);\r\n }\r\n }\r\n };\r\n const showOperatorSelect = availableOperators.length > 1;\r\n\r\n return (\r\n <div className=\"space-y-2\">\r\n {showOperatorSelect && (\r\n <DropdownMenu>\r\n <DropdownMenuTrigger asChild>\r\n <button className=\"w-full px-2 py-1.5 text-xs font-medium hover:bg-accent rounded-md flex items-center justify-between\">\r\n {getTranslations(`filter.operator.${operator}`, t)}\r\n <ChevronDown className=\"size-3\" />\r\n </button>\r\n </DropdownMenuTrigger>\r\n <DropdownMenuContent align=\"start\">\r\n {availableOperators.map((op) => (\r\n <DropdownMenuItem\r\n key={op}\r\n onClick={() => handleOperatorChange(op)}\r\n className=\"text-xs\"\r\n >\r\n {getTranslations(`filter.operator.${op}`, t)}\r\n </DropdownMenuItem>\r\n ))}\r\n </DropdownMenuContent>\r\n </DropdownMenu>\r\n )}\r\n\r\n <FilterInput\r\n operator={operator}\r\n value={value}\r\n value2={value2}\r\n columnMeta={meta}\r\n onValueChange={handleValueChange}\r\n onValue2Change={handleValue2Change}\r\n onSliderChange={handleSliderChange}\r\n onClear={handleClear}\r\n t={t}\r\n variant=\"inline\"\r\n />\r\n </div>\r\n );\r\n}\r\n"],"mappings":"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","names":[]}
@@ -0,0 +1,65 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import {
3
+ Tabs,
4
+ TabsContent,
5
+ TabsList,
6
+ TabsTrigger
7
+ } from "@repo/ayasofyazilim-ui/components/tabs";
8
+ import { useIsMobile } from "@repo/ayasofyazilim-ui/hooks/use-mobile";
9
+ import { useState } from "react";
10
+ import {
11
+ Drawer,
12
+ DrawerContent,
13
+ DrawerHeader,
14
+ DrawerTitle,
15
+ DrawerTrigger
16
+ } from "../../../../components/drawer";
17
+ import {
18
+ Popover,
19
+ PopoverContent,
20
+ PopoverTrigger
21
+ } from "../../../../components/popover";
22
+ import { getTranslations } from "../../utils/translation-utils";
23
+ import { ClientFilterContent } from "./client-filter";
24
+ import { ServerFilterContent } from "./server-filter";
25
+ function MultiFilterDialog({
26
+ table,
27
+ config,
28
+ children
29
+ }) {
30
+ const { t } = config;
31
+ const isMobile = useIsMobile();
32
+ const [open, setOpen] = useState(false);
33
+ const filterContent = /* @__PURE__ */ jsxs(Tabs, { defaultValue: "client", children: [
34
+ config.serverFilters && /* @__PURE__ */ jsxs(TabsList, { children: [
35
+ /* @__PURE__ */ jsx(TabsTrigger, { value: "client", children: t?.["toolbar.client"] }),
36
+ /* @__PURE__ */ jsx(TabsTrigger, { value: "server", children: t?.["toolbar.server"] })
37
+ ] }),
38
+ /* @__PURE__ */ jsx(TabsContent, { value: "client", className: "w-full", children: /* @__PURE__ */ jsx(ClientFilterContent, { setOpen, table, config }) }),
39
+ /* @__PURE__ */ jsx(
40
+ TabsContent,
41
+ {
42
+ value: "server",
43
+ className: "w-full min-w-lg max-w-lg [&>fieldset]:p-0",
44
+ children: /* @__PURE__ */ jsx(ServerFilterContent, { table, config })
45
+ }
46
+ )
47
+ ] });
48
+ if (isMobile) {
49
+ return /* @__PURE__ */ jsxs(Drawer, { open, onOpenChange: setOpen, children: [
50
+ /* @__PURE__ */ jsx(DrawerTrigger, { asChild: true, children }),
51
+ /* @__PURE__ */ jsxs(DrawerContent, { children: [
52
+ /* @__PURE__ */ jsx(DrawerHeader, { children: /* @__PURE__ */ jsx(DrawerTitle, { children: getTranslations("filter.title", t) }) }),
53
+ /* @__PURE__ */ jsx("div", { className: "px-4 pb-4 max-h-[70vh] overflow-y-auto", children: filterContent })
54
+ ] })
55
+ ] });
56
+ }
57
+ return /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, children: [
58
+ /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children }),
59
+ /* @__PURE__ */ jsx(PopoverContent, { className: "w-auto max-w-3xl", align: "end", children: filterContent })
60
+ ] });
61
+ }
62
+ export {
63
+ MultiFilterDialog
64
+ };
65
+ //# sourceMappingURL=multi-filter-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/custom/master-data-grid/components/filters/multi-filter-dialog.tsx"],"sourcesContent":["import {\r\n Tabs,\r\n TabsContent,\r\n TabsList,\r\n TabsTrigger,\r\n} from \"@repo/ayasofyazilim-ui/components/tabs\";\r\nimport type { Table } from \"@tanstack/react-table\";\r\n\r\nimport { useIsMobile } from \"@repo/ayasofyazilim-ui/hooks/use-mobile\";\r\nimport { useState } from \"react\";\r\nimport {\r\n Drawer,\r\n DrawerContent,\r\n DrawerHeader,\r\n DrawerTitle,\r\n DrawerTrigger,\r\n} from \"../../../../components/drawer\";\r\nimport {\r\n Popover,\r\n PopoverContent,\r\n PopoverTrigger,\r\n} from \"../../../../components/popover\";\r\nimport type { MasterDataGridConfig } from \"../../types\";\r\nimport { getTranslations } from \"../../utils/translation-utils\";\r\nimport { ClientFilterContent } from \"./client-filter\";\r\nimport { ServerFilterContent } from \"./server-filter\";\r\n\r\nexport interface BaseMultiFilterDialogProps<TData> {\r\n table: Table<TData>;\r\n config: MasterDataGridConfig<TData>;\r\n}\r\ninterface MultiFilterDialogProps<TData>\r\n extends BaseMultiFilterDialogProps<TData> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function MultiFilterDialog<TData>({\r\n table,\r\n config,\r\n children,\r\n}: MultiFilterDialogProps<TData>) {\r\n const { t } = config;\r\n const isMobile = useIsMobile();\r\n const [open, setOpen] = useState(false);\r\n\r\n const filterContent = (\r\n <Tabs defaultValue=\"client\">\r\n {config.serverFilters && (\r\n <TabsList>\r\n <TabsTrigger value=\"client\">{t?.[\"toolbar.client\"]}</TabsTrigger>\r\n <TabsTrigger value=\"server\">{t?.[\"toolbar.server\"]}</TabsTrigger>\r\n </TabsList>\r\n )}\r\n <TabsContent value=\"client\" className=\"w-full\">\r\n <ClientFilterContent setOpen={setOpen} table={table} config={config} />\r\n </TabsContent>\r\n <TabsContent\r\n value=\"server\"\r\n className=\"w-full min-w-lg max-w-lg [&>fieldset]:p-0\"\r\n >\r\n <ServerFilterContent table={table} config={config} />\r\n </TabsContent>\r\n </Tabs>\r\n );\r\n\r\n if (isMobile) {\r\n return (\r\n <Drawer open={open} onOpenChange={setOpen}>\r\n <DrawerTrigger asChild>{children}</DrawerTrigger>\r\n <DrawerContent>\r\n <DrawerHeader>\r\n <DrawerTitle>{getTranslations(\"filter.title\", t)}</DrawerTitle>\r\n </DrawerHeader>\r\n <div className=\"px-4 pb-4 max-h-[70vh] overflow-y-auto\">\r\n {filterContent}\r\n </div>\r\n </DrawerContent>\r\n </Drawer>\r\n );\r\n }\r\n\r\n return (\r\n <Popover open={open} onOpenChange={setOpen}>\r\n <PopoverTrigger asChild>{children}</PopoverTrigger>\r\n <PopoverContent className=\"w-auto max-w-3xl\" align=\"end\">\r\n {filterContent}\r\n </PopoverContent>\r\n </Popover>\r\n );\r\n}\r\n"],"mappings":"AAgDQ,SACE,KADF;AAhDR;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAS,mBAAmB;AAC5B,SAAS,gBAAgB;AACzB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,uBAAuB;AAChC,SAAS,2BAA2B;AACpC,SAAS,2BAA2B;AAW7B,SAAS,kBAAyB;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AACF,GAAkC;AAChC,QAAM,EAAE,EAAE,IAAI;AACd,QAAM,WAAW,YAAY;AAC7B,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AAEtC,QAAM,gBACJ,qBAAC,QAAK,cAAa,UAChB;AAAA,WAAO,iBACN,qBAAC,YACC;AAAA,0BAAC,eAAY,OAAM,UAAU,cAAI,gBAAgB,GAAE;AAAA,MACnD,oBAAC,eAAY,OAAM,UAAU,cAAI,gBAAgB,GAAE;AAAA,OACrD;AAAA,IAEF,oBAAC,eAAY,OAAM,UAAS,WAAU,UACpC,8BAAC,uBAAoB,SAAkB,OAAc,QAAgB,GACvE;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,OAAM;AAAA,QACN,WAAU;AAAA,QAEV,8BAAC,uBAAoB,OAAc,QAAgB;AAAA;AAAA,IACrD;AAAA,KACF;AAGF,MAAI,UAAU;AACZ,WACE,qBAAC,UAAO,MAAY,cAAc,SAChC;AAAA,0BAAC,iBAAc,SAAO,MAAE,UAAS;AAAA,MACjC,qBAAC,iBACC;AAAA,4BAAC,gBACC,8BAAC,eAAa,0BAAgB,gBAAgB,CAAC,GAAE,GACnD;AAAA,QACA,oBAAC,SAAI,WAAU,0CACZ,yBACH;AAAA,SACF;AAAA,OACF;AAAA,EAEJ;AAEA,SACE,qBAAC,WAAQ,MAAY,cAAc,SACjC;AAAA,wBAAC,kBAAe,SAAO,MAAE,UAAS;AAAA,IAClC,oBAAC,kBAAe,WAAU,oBAAmB,OAAM,OAChD,yBACH;AAAA,KACF;AAEJ;","names":[]}
@@ -0,0 +1,213 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { Button } from "@repo/ayasofyazilim-ui/components/button";
4
+ import {
5
+ Field,
6
+ FieldError,
7
+ FieldGroup,
8
+ FieldLabel,
9
+ FieldSet
10
+ } from "@repo/ayasofyazilim-ui/components/field";
11
+ import { Selectable } from "@repo/ayasofyazilim-ui/custom/selectable";
12
+ import { Loader2, RotateCcw, Search, XCircle } from "lucide-react";
13
+ import { usePathname, useRouter, useSearchParams } from "next/navigation";
14
+ import { useCallback, useState, useTransition } from "react";
15
+ import {
16
+ InputGroup,
17
+ InputGroupAddon,
18
+ InputGroupButton,
19
+ InputGroupInput
20
+ } from "@repo/ayasofyazilim-ui/components/input-group";
21
+ import {
22
+ ScrollArea,
23
+ ScrollBar
24
+ } from "@repo/ayasofyazilim-ui/components/scroll-area";
25
+ import { getTranslations } from "../../utils";
26
+ function ServerFilterContent({
27
+ config
28
+ }) {
29
+ const router = useRouter();
30
+ const pathname = usePathname();
31
+ const searchParams = useSearchParams();
32
+ const [isPending, startTransition] = useTransition();
33
+ const { serverFilters } = config;
34
+ if (!serverFilters) return null;
35
+ const [resetCount, setResetCount] = useState(0);
36
+ const [localValues, setLocalValues] = useState(
37
+ () => {
38
+ const initial = {};
39
+ serverFilters.forEach((filter) => {
40
+ const val = searchParams.get(filter.key);
41
+ if (filter.type === "array") {
42
+ initial[filter.key] = searchParams.getAll(filter.key);
43
+ } else if (filter.type === "boolean") {
44
+ initial[filter.key] = val === "true" ? true : val === "false" ? false : void 0;
45
+ } else if (filter.type === "number") {
46
+ initial[filter.key] = val ? Number(val) : void 0;
47
+ } else {
48
+ initial[filter.key] = val || void 0;
49
+ }
50
+ });
51
+ return initial;
52
+ }
53
+ );
54
+ const [errors, setErrors] = useState({});
55
+ const onValueChange = useCallback(
56
+ (filter, rawValue) => {
57
+ let processedValue = rawValue;
58
+ if (rawValue === "" || Array.isArray(rawValue) && rawValue.length === 0) {
59
+ processedValue = void 0;
60
+ }
61
+ if (filter.validator) {
62
+ const result = filter.validator.safeParse(processedValue);
63
+ setErrors((prev) => ({
64
+ ...prev,
65
+ [filter.key]: result.success ? "" : result.error.issues[0]?.message || "Hata"
66
+ }));
67
+ }
68
+ setLocalValues((prev) => ({ ...prev, [filter.key]: processedValue }));
69
+ },
70
+ []
71
+ );
72
+ const handleApply = () => {
73
+ const params = new URLSearchParams(searchParams.toString());
74
+ let hasValidationError = false;
75
+ serverFilters.forEach((filter) => {
76
+ const val = localValues[filter.key];
77
+ params.delete(filter.key);
78
+ const isEmpty = val === void 0 || val === null || val === "" || Array.isArray(val) && val.length === 0;
79
+ if (!isEmpty) {
80
+ if (filter.validator) {
81
+ const result = filter.validator.safeParse(val);
82
+ if (!result.success) {
83
+ hasValidationError = true;
84
+ setErrors((prev) => ({
85
+ ...prev,
86
+ [filter.key]: result.error.issues[0]?.message || "Hata"
87
+ }));
88
+ return;
89
+ }
90
+ }
91
+ if (Array.isArray(val)) {
92
+ val.forEach((v) => params.append(filter.key, String(v)));
93
+ } else {
94
+ params.set(filter.key, String(val));
95
+ }
96
+ } else {
97
+ setErrors((prev) => ({ ...prev, [filter.key]: "" }));
98
+ }
99
+ });
100
+ if (hasValidationError) return;
101
+ params.delete("page");
102
+ startTransition(() => {
103
+ router.push(`${pathname}?${params.toString()}`, { scroll: false });
104
+ });
105
+ };
106
+ const handleReset = () => {
107
+ const initial = {};
108
+ serverFilters.forEach((f) => {
109
+ initial[f.key] = f.type === "array" ? [] : void 0;
110
+ });
111
+ setLocalValues(initial);
112
+ setErrors({});
113
+ setResetCount((prev) => prev + 1);
114
+ startTransition(() => router.push(pathname, { scroll: false }));
115
+ };
116
+ const clearSingleFilter = useCallback((filter) => {
117
+ const emptyValue = filter.type === "array" ? [] : filter.type === "boolean" ? void 0 : "";
118
+ setLocalValues((prev) => ({ ...prev, [filter.key]: emptyValue }));
119
+ setErrors((prev) => ({ ...prev, [filter.key]: "" }));
120
+ if (["select", "array", "boolean"].includes(filter.type)) {
121
+ setResetCount((prev) => prev + 1);
122
+ }
123
+ }, []);
124
+ return /* @__PURE__ */ jsxs(FieldSet, { className: "p-2", children: [
125
+ /* @__PURE__ */ jsxs(ScrollArea, { className: "pr-4", children: [
126
+ /* @__PURE__ */ jsx(ScrollBar, {}),
127
+ /* @__PURE__ */ jsx(FieldGroup, { className: "gap-3 max-h-80", children: serverFilters.map((filter) => {
128
+ const value = localValues[filter.key];
129
+ const isSelectable = filter.type === "select" || filter.type === "array" || filter.type === "boolean";
130
+ if (isSelectable) {
131
+ return /* @__PURE__ */ jsxs(Field, { className: "gap-1", children: [
132
+ /* @__PURE__ */ jsx(FieldLabel, { htmlFor: filter.key, children: filter.label }),
133
+ /* @__PURE__ */ jsx(
134
+ Selectable,
135
+ {
136
+ id: filter.key,
137
+ singular: filter.type !== "array",
138
+ options: filter.options,
139
+ defaultValue: filter.options.filter(
140
+ (opt) => Array.isArray(value) ? value.some(
141
+ (v) => v === opt.value || String(v) === String(opt.value)
142
+ ) : value === opt.value || String(value) === String(opt.value)
143
+ ),
144
+ getKey: (opt) => String(opt.value),
145
+ getLabel: (opt) => opt.label,
146
+ onChange: (selected) => {
147
+ const values = selected.map((s) => s.value);
148
+ onValueChange(
149
+ filter,
150
+ filter.type === "array" ? values : values[0] ?? void 0
151
+ );
152
+ },
153
+ searchPlaceholderText: filter.placeholder,
154
+ makeAChoiceText: filter.placeholder
155
+ },
156
+ `${filter.key}-${resetCount}`
157
+ ),
158
+ errors[filter.key] && /* @__PURE__ */ jsx(FieldError, { children: errors[filter.key] })
159
+ ] }, filter.key);
160
+ }
161
+ return /* @__PURE__ */ jsxs(Field, { className: "gap-1", children: [
162
+ /* @__PURE__ */ jsx(FieldLabel, { htmlFor: filter.key, children: filter.label }),
163
+ /* @__PURE__ */ jsxs(InputGroup, { children: [
164
+ /* @__PURE__ */ jsx(
165
+ InputGroupInput,
166
+ {
167
+ id: filter.key,
168
+ type: filter.type === "number" ? "number" : "text",
169
+ value: typeof value === "boolean" || typeof value === "object" ? "" : value ?? "",
170
+ placeholder: filter.placeholder,
171
+ onKeyDown: (e) => e.key === "Enter" && handleApply(),
172
+ onChange: (e) => onValueChange(filter, e.target.value),
173
+ className: errors[filter.key] ? "border-destructive" : ""
174
+ }
175
+ ),
176
+ localValues[filter.key] && /* @__PURE__ */ jsx(InputGroupAddon, { align: "inline-end", children: /* @__PURE__ */ jsx(
177
+ InputGroupButton,
178
+ {
179
+ onClick: () => clearSingleFilter(filter),
180
+ children: /* @__PURE__ */ jsx(XCircle, {})
181
+ }
182
+ ) })
183
+ ] }),
184
+ errors[filter.key] && /* @__PURE__ */ jsx(FieldError, { children: errors[filter.key] })
185
+ ] }, filter.key);
186
+ }) })
187
+ ] }),
188
+ /* @__PURE__ */ jsxs(Field, { orientation: "horizontal", children: [
189
+ /* @__PURE__ */ jsxs(
190
+ Button,
191
+ {
192
+ type: "button",
193
+ variant: "ghost",
194
+ onClick: handleReset,
195
+ disabled: isPending,
196
+ children: [
197
+ /* @__PURE__ */ jsx(RotateCcw, { className: "mr-2 h-4 w-4" }),
198
+ " ",
199
+ getTranslations("filter.clear", config.t)
200
+ ]
201
+ }
202
+ ),
203
+ /* @__PURE__ */ jsxs(Button, { type: "button", onClick: handleApply, disabled: isPending, children: [
204
+ isPending ? /* @__PURE__ */ jsx(Loader2, { className: "animate-spin" }) : /* @__PURE__ */ jsx(Search, { className: "mr-2 h-4 w-4" }),
205
+ getTranslations("filter.apply", config.t)
206
+ ] })
207
+ ] })
208
+ ] });
209
+ }
210
+ export {
211
+ ServerFilterContent
212
+ };
213
+ //# sourceMappingURL=server-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/custom/master-data-grid/components/filters/server-filter.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { Button } from \"@repo/ayasofyazilim-ui/components/button\";\r\nimport {\r\n Field,\r\n FieldError,\r\n FieldGroup,\r\n FieldLabel,\r\n FieldSet,\r\n} from \"@repo/ayasofyazilim-ui/components/field\";\r\nimport { Selectable } from \"@repo/ayasofyazilim-ui/custom/selectable\";\r\nimport { Loader2, RotateCcw, Search, XCircle } from \"lucide-react\";\r\nimport { usePathname, useRouter, useSearchParams } from \"next/navigation\";\r\nimport { useCallback, useState, useTransition } from \"react\";\r\nimport { ServerFilterConfig } from \"../../types\";\r\nimport { BaseMultiFilterDialogProps } from \"./multi-filter-dialog\";\r\nimport {\r\n InputGroup,\r\n InputGroupAddon,\r\n InputGroupButton,\r\n InputGroupInput,\r\n} from \"@repo/ayasofyazilim-ui/components/input-group\";\r\nimport {\r\n ScrollArea,\r\n ScrollBar,\r\n} from \"@repo/ayasofyazilim-ui/components/scroll-area\";\r\nimport { getTranslations } from \"../../utils\";\r\n\r\ntype FilterValue =\r\n | string\r\n | number\r\n | boolean\r\n | Array<string | boolean>\r\n | undefined;\r\n\r\nexport function ServerFilterContent<TData>({\r\n config,\r\n}: BaseMultiFilterDialogProps<TData>) {\r\n const router = useRouter();\r\n const pathname = usePathname();\r\n const searchParams = useSearchParams();\r\n const [isPending, startTransition] = useTransition();\r\n\r\n const { serverFilters } = config;\r\n if (!serverFilters) return null;\r\n\r\n const [resetCount, setResetCount] = useState(0);\r\n\r\n const [localValues, setLocalValues] = useState<Record<string, FilterValue>>(\r\n () => {\r\n const initial: Record<string, FilterValue> = {};\r\n serverFilters.forEach((filter) => {\r\n const val = searchParams.get(filter.key);\r\n if (filter.type === \"array\") {\r\n initial[filter.key] = searchParams.getAll(filter.key);\r\n } else if (filter.type === \"boolean\") {\r\n initial[filter.key] =\r\n val === \"true\" ? true : val === \"false\" ? false : undefined;\r\n } else if (filter.type === \"number\") {\r\n initial[filter.key] = val ? Number(val) : undefined;\r\n } else {\r\n initial[filter.key] = val || undefined;\r\n }\r\n });\r\n return initial;\r\n }\r\n );\r\n\r\n const [errors, setErrors] = useState<Record<string, string>>({});\r\n\r\n const onValueChange = useCallback(\r\n (filter: ServerFilterConfig, rawValue: FilterValue) => {\r\n let processedValue: FilterValue = rawValue;\r\n if (\r\n rawValue === \"\" ||\r\n (Array.isArray(rawValue) && rawValue.length === 0)\r\n ) {\r\n processedValue = undefined;\r\n }\r\n\r\n if (filter.validator) {\r\n const result = filter.validator.safeParse(processedValue);\r\n setErrors((prev) => ({\r\n ...prev,\r\n [filter.key]: result.success\r\n ? \"\"\r\n : result.error.issues[0]?.message || \"Hata\",\r\n }));\r\n }\r\n\r\n setLocalValues((prev) => ({ ...prev, [filter.key]: processedValue }));\r\n },\r\n []\r\n );\r\n\r\n const handleApply = () => {\r\n const params = new URLSearchParams(searchParams.toString());\r\n let hasValidationError = false;\r\n\r\n serverFilters.forEach((filter) => {\r\n const val = localValues[filter.key];\r\n params.delete(filter.key);\r\n const isEmpty =\r\n val === undefined ||\r\n val === null ||\r\n val === \"\" ||\r\n (Array.isArray(val) && val.length === 0);\r\n\r\n if (!isEmpty) {\r\n if (filter.validator) {\r\n const result = filter.validator.safeParse(val);\r\n if (!result.success) {\r\n hasValidationError = true;\r\n setErrors((prev) => ({\r\n ...prev,\r\n [filter.key]: result.error.issues[0]?.message || \"Hata\",\r\n }));\r\n return;\r\n }\r\n }\r\n if (Array.isArray(val)) {\r\n val.forEach((v) => params.append(filter.key, String(v)));\r\n } else {\r\n params.set(filter.key, String(val));\r\n }\r\n } else {\r\n setErrors((prev) => ({ ...prev, [filter.key]: \"\" }));\r\n }\r\n });\r\n if (hasValidationError) return;\r\n params.delete(\"page\");\r\n startTransition(() => {\r\n router.push(`${pathname}?${params.toString()}`, { scroll: false });\r\n });\r\n };\r\n\r\n const handleReset = () => {\r\n const initial: Record<string, FilterValue> = {};\r\n serverFilters.forEach((f) => {\r\n initial[f.key] = f.type === \"array\" ? [] : undefined;\r\n });\r\n setLocalValues(initial);\r\n setErrors({});\r\n setResetCount((prev) => prev + 1);\r\n startTransition(() => router.push(pathname, { scroll: false }));\r\n };\r\n\r\n const clearSingleFilter = useCallback((filter: ServerFilterConfig) => {\r\n const emptyValue =\r\n filter.type === \"array\" ? [] : filter.type === \"boolean\" ? undefined : \"\";\r\n setLocalValues((prev) => ({ ...prev, [filter.key]: emptyValue }));\r\n setErrors((prev) => ({ ...prev, [filter.key]: \"\" }));\r\n if ([\"select\", \"array\", \"boolean\"].includes(filter.type)) {\r\n setResetCount((prev) => prev + 1);\r\n }\r\n }, []);\r\n\r\n return (\r\n <FieldSet className=\"p-2\">\r\n <ScrollArea className=\"pr-4\">\r\n <ScrollBar />\r\n <FieldGroup className={\"gap-3 max-h-80\"}>\r\n {serverFilters.map((filter) => {\r\n const value = localValues[filter.key];\r\n\r\n const isSelectable =\r\n filter.type === \"select\" ||\r\n filter.type === \"array\" ||\r\n filter.type === \"boolean\";\r\n if (isSelectable) {\r\n return (\r\n <Field key={filter.key} className=\"gap-1\">\r\n <FieldLabel htmlFor={filter.key}>{filter.label}</FieldLabel>\r\n <Selectable\r\n id={filter.key}\r\n key={`${filter.key}-${resetCount}`}\r\n singular={filter.type !== \"array\"}\r\n options={filter.options}\r\n defaultValue={filter.options.filter((opt) =>\r\n Array.isArray(value)\r\n ? value.some(\r\n (v) =>\r\n v === opt.value || String(v) === String(opt.value)\r\n )\r\n : value === opt.value ||\r\n String(value) === String(opt.value)\r\n )}\r\n getKey={(opt) => String(opt.value)}\r\n getLabel={(opt) => opt.label}\r\n onChange={(selected) => {\r\n const values = selected.map((s) => s.value);\r\n onValueChange(\r\n filter,\r\n filter.type === \"array\"\r\n ? values\r\n : values[0] ?? undefined\r\n );\r\n }}\r\n searchPlaceholderText={filter.placeholder}\r\n makeAChoiceText={filter.placeholder}\r\n />\r\n {errors[filter.key] && (\r\n <FieldError>{errors[filter.key]}</FieldError>\r\n )}\r\n </Field>\r\n );\r\n }\r\n return (\r\n <Field key={filter.key} className=\"gap-1\">\r\n <FieldLabel htmlFor={filter.key}>{filter.label}</FieldLabel>\r\n <InputGroup>\r\n <InputGroupInput\r\n id={filter.key}\r\n type={filter.type === \"number\" ? \"number\" : \"text\"}\r\n value={\r\n typeof value === \"boolean\" || typeof value === \"object\"\r\n ? \"\"\r\n : value ?? \"\"\r\n }\r\n placeholder={filter.placeholder}\r\n onKeyDown={(e) => e.key === \"Enter\" && handleApply()}\r\n onChange={(e) => onValueChange(filter, e.target.value)}\r\n className={errors[filter.key] ? \"border-destructive\" : \"\"}\r\n />\r\n {localValues[filter.key] && (\r\n <InputGroupAddon align=\"inline-end\">\r\n <InputGroupButton\r\n onClick={() => clearSingleFilter(filter)}\r\n >\r\n <XCircle />\r\n </InputGroupButton>\r\n </InputGroupAddon>\r\n )}\r\n </InputGroup>\r\n {errors[filter.key] && (\r\n <FieldError>{errors[filter.key]}</FieldError>\r\n )}\r\n </Field>\r\n );\r\n })}\r\n </FieldGroup>\r\n </ScrollArea>\r\n <Field orientation=\"horizontal\">\r\n <Button\r\n type=\"button\"\r\n variant=\"ghost\"\r\n onClick={handleReset}\r\n disabled={isPending}\r\n >\r\n <RotateCcw className=\"mr-2 h-4 w-4\" />{\" \"}\r\n {getTranslations(\"filter.clear\", config.t)}\r\n </Button>\r\n <Button type=\"button\" onClick={handleApply} disabled={isPending}>\r\n {isPending ? (\r\n <Loader2 className=\"animate-spin\" />\r\n ) : (\r\n <Search className=\"mr-2 h-4 w-4\" />\r\n )}\r\n {getTranslations(\"filter.apply\", config.t)}\r\n </Button>\r\n </Field>\r\n </FieldSet>\r\n );\r\n}\r\n"],"mappings":"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","names":[]}