@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 @@
1
+ {"version":3,"sources":["../../../../src/custom/schema-form/utils/schema-dependency.ts"],"sourcesContent":["import {\r\n FormValidation,\r\n GenericObjectType,\r\n RJSFValidationError,\r\n} from \"@rjsf/utils\";\r\n\r\ninterface JSONSchema {\r\n type?: string;\r\n properties?: Record<string, JSONSchema>;\r\n required?: string[];\r\n dependencies?: Record<string, JSONSchemaDependency>;\r\n items?: JSONSchema | JSONSchema[];\r\n additionalItems?: JSONSchema;\r\n definitions?: Record<string, JSONSchema>;\r\n $ref?: string;\r\n title?: string;\r\n description?: string;\r\n enum?: unknown[];\r\n default?: unknown;\r\n oneOf?: JSONSchema[];\r\n nullable?: boolean;\r\n format?: string;\r\n [key: string]: unknown;\r\n}\r\n\r\ninterface JSONSchemaDependency {\r\n properties?: Record<string, JSONSchema>;\r\n required?: string[];\r\n oneOf?: JSONSchema[];\r\n}\r\n\r\ninterface FieldDependencyRule {\r\n when: (value: unknown) => boolean;\r\n targets: string[];\r\n fieldCondition?: JSONSchema;\r\n}\r\n\r\ninterface FieldDependencies {\r\n HIDES?: FieldDependencyRule[];\r\n REQUIRES?: FieldDependencyRule[];\r\n}\r\n\r\ntype DependencyConfig = Record<string, FieldDependencies>;\r\n\r\n/**\r\n * Helper to safely get a nested property in a JSON Schema using dot notation path.\r\n */\r\nfunction getNestedProperty(\r\n obj: JSONSchema,\r\n path: string\r\n): JSONSchema | undefined {\r\n const parts = path.split(\".\");\r\n let current: JSONSchema | undefined = obj;\r\n\r\n for (const part of parts) {\r\n if (!current?.properties?.[part]) return undefined;\r\n current = current.properties[part];\r\n }\r\n return current;\r\n}\r\n\r\n/**\r\n * Get all possible values for a controlling field to create conditional branches.\r\n */\r\nfunction getFieldValues(schema: JSONSchema, fieldPath: string): unknown[] {\r\n const field = getNestedProperty(schema, fieldPath);\r\n if (!field) return [];\r\n if (field.enum) return field.enum;\r\n if (field.type === \"boolean\") return [true, false];\r\n if (field.type === \"integer\" || field.type === \"number\")\r\n return [\"__NUMERIC_RANGE__\"];\r\n return [];\r\n}\r\n\r\n/**\r\n * Main function to apply HIDES and REQUIRES field dependencies on a JSON Schema.\r\n */\r\nfunction applyFieldDependencies(\r\n originalSchema: GenericObjectType,\r\n dependencies: DependencyConfig\r\n): JSONSchema {\r\n const schema: JSONSchema = JSON.parse(JSON.stringify(originalSchema));\r\n if (!schema.properties) return schema;\r\n\r\n for (const [fieldPath, fieldDeps] of Object.entries(dependencies)) {\r\n const fieldValues = getFieldValues(schema, fieldPath);\r\n if (fieldValues.length > 0) {\r\n const parentPath = fieldPath.split(\".\").slice(0, -1).join(\".\");\r\n const parentSchema = parentPath\r\n ? getNestedProperty(schema, parentPath)\r\n : schema;\r\n const fieldName = fieldPath.split(\".\").pop()!;\r\n\r\n if (parentSchema) {\r\n // Collect all HIDES targets globally, to remove from root properties\r\n const allHidesTargets = new Set<string>();\r\n if (fieldDeps.HIDES) {\r\n for (const rule of fieldDeps.HIDES) {\r\n rule.targets.forEach((t) => allHidesTargets.add(t));\r\n }\r\n }\r\n\r\n // Remove all HIDES targets from root properties immediately\r\n for (const hiddenTarget of Array.from(allHidesTargets)) {\r\n if (schema.properties[hiddenTarget]) {\r\n delete schema.properties[hiddenTarget];\r\n if (schema.required?.includes(hiddenTarget)) {\r\n schema.required = schema.required.filter(\r\n (r) => r !== hiddenTarget\r\n );\r\n }\r\n }\r\n }\r\n\r\n const conditionalSchemas: JSONSchema[] = [];\r\n\r\n for (const value of fieldValues) {\r\n const requiredFields: string[] = [];\r\n const visibleFields: string[] = [];\r\n\r\n if (fieldDeps.REQUIRES) {\r\n for (const rule of fieldDeps.REQUIRES) {\r\n if (rule.when(value)) {\r\n requiredFields.push(...rule.targets);\r\n visibleFields.push(...rule.targets);\r\n }\r\n }\r\n }\r\n\r\n if (fieldDeps.HIDES) {\r\n for (const rule of fieldDeps.HIDES) {\r\n if (rule.when(value)) {\r\n // Hidden fields: do NOT add to visibleFields\r\n // But fields not hidden should be visible\r\n // So we skip these targets here\r\n } else {\r\n // For other values where fields are not hidden, add them visible\r\n visibleFields.push(...rule.targets);\r\n }\r\n }\r\n }\r\n\r\n // Also add controlling field itself visible\r\n visibleFields.push(fieldName);\r\n\r\n // Deduplicate visibleFields\r\n const visibleFieldsUnique = Array.from(new Set(visibleFields));\r\n\r\n // Build properties for conditional schema\r\n const conditionalProperties: Record<string, JSONSchema> = {};\r\n\r\n visibleFieldsUnique.forEach((targetField) => {\r\n // If targetField === fieldName, add enum with current value\r\n if (targetField === fieldName) {\r\n conditionalProperties[targetField] = {\r\n enum: [value],\r\n };\r\n } else {\r\n // Else get original schema for that target field\r\n const originalFieldSchema = getNestedProperty(\r\n originalSchema,\r\n targetField\r\n );\r\n if (originalFieldSchema) {\r\n conditionalProperties[targetField] = { ...originalFieldSchema };\r\n }\r\n }\r\n });\r\n\r\n const conditionalSchema: JSONSchema = {\r\n properties: conditionalProperties,\r\n };\r\n\r\n if (requiredFields.length > 0) {\r\n conditionalSchema.required = requiredFields.filter((r) =>\r\n visibleFieldsUnique.includes(r)\r\n );\r\n }\r\n\r\n conditionalSchemas.push(conditionalSchema);\r\n }\r\n\r\n if (!parentSchema.dependencies) parentSchema.dependencies = {};\r\n parentSchema.dependencies[fieldName] = { oneOf: conditionalSchemas };\r\n }\r\n }\r\n }\r\n\r\n return schema;\r\n}\r\n\r\nfunction getFormDataValue(\r\n formData: Record<string, unknown>,\r\n path: string\r\n): unknown {\r\n const parts = path.split(\".\");\r\n let current: unknown = formData;\r\n for (const part of parts) {\r\n if (current === null || current === undefined) return undefined;\r\n current = (current as Record<string, unknown>)[part];\r\n }\r\n return current;\r\n}\r\n\r\nfunction deleteFormDataProperty(\r\n formData: Record<string, unknown>,\r\n path: string\r\n): void {\r\n const parts = path.split(\".\");\r\n if (parts.length === 1) {\r\n delete formData[path];\r\n return;\r\n }\r\n const parentPath = parts.slice(0, -1);\r\n const fieldName = parts.at(-1);\r\n if (!fieldName) return;\r\n let current: unknown = formData;\r\n for (const part of parentPath) {\r\n if (current === null || current === undefined) return;\r\n current = (current as Record<string, unknown>)[part];\r\n }\r\n if (current && typeof current === \"object\") {\r\n delete (current as Record<string, unknown>)[fieldName];\r\n }\r\n}\r\n\r\nfunction cleanHiddenFieldsFromFormData<T extends Record<string, unknown>>(\r\n formData: T,\r\n dependencies: DependencyConfig\r\n): T {\r\n const cleanedData = JSON.parse(JSON.stringify(formData)) as T;\r\n\r\n for (const [fieldPath, fieldDeps] of Object.entries(dependencies)) {\r\n if (!fieldDeps.HIDES) continue;\r\n\r\n const controllingValue = getFormDataValue(cleanedData, fieldPath);\r\n\r\n for (const rule of fieldDeps.HIDES) {\r\n if (rule.when(controllingValue)) {\r\n for (const target of rule.targets) {\r\n deleteFormDataProperty(cleanedData, target);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return cleanedData;\r\n}\r\n\r\nexport { applyFieldDependencies, cleanHiddenFieldsFromFormData };\r\nexport type {\r\n JSONSchema,\r\n DependencyConfig,\r\n FieldDependencies,\r\n FieldDependencyRule,\r\n};\r\n\r\n// ============================================================================\r\n// RUNTIME CONDITIONAL REQUIREMENTS\r\n// ============================================================================\r\n// For fields that need runtime validation (e.g., UUID comparisons, complex conditions)\r\n// Use this when JSON Schema dependencies can't express the condition.\r\n\r\nconst EMPTY_GUID = \"00000000-0000-0000-0000-000000000000\";\r\n\r\ntype EmptyCheckFn = (value: unknown) => boolean;\r\n\r\ninterface ConditionalFieldConfig {\r\n /** Fields that trigger the requirement check when filled */\r\n triggerFields: string[];\r\n /** Fields that become required when trigger condition is met */\r\n requiredFields: string[];\r\n /** Optional custom empty check per field (default: checks empty string, null, undefined, EMPTY_GUID) */\r\n emptyChecks?: Record<string, EmptyCheckFn>;\r\n /** Error message for required fields (default: \"Required\") */\r\n errorMessage?: string;\r\n /** Minimum number of trigger fields that must be filled to activate requirements (default: 2) */\r\n minFilledCount?: number;\r\n /** If true, remove this object from form data on submit when requirements are not triggered */\r\n removeFromSubmit?: boolean;\r\n}\r\n\r\ninterface RuntimeDependencyConfig {\r\n /** Path to the nested object (e.g., \"address\", \"telephone\") */\r\n [objectPath: string]: ConditionalFieldConfig;\r\n}\r\n\r\n/**\r\n * Default check for whether a value is considered \"empty\"\r\n */\r\nfunction isValueEmpty(value: unknown): boolean {\r\n if (value === null || value === undefined) return true;\r\n if (typeof value === \"string\") {\r\n return value.trim() === \"\" || value === EMPTY_GUID;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Get a nested value from an object using dot notation path\r\n */\r\nfunction getNestedValue(obj: GenericObjectType, path: string): unknown {\r\n const parts = path.split(\".\");\r\n let current: unknown = obj;\r\n for (const part of parts) {\r\n if (current === null || current === undefined) return undefined;\r\n current = (current as GenericObjectType)[part];\r\n }\r\n return current;\r\n}\r\n\r\n/**\r\n * Creates a modified schema where specified nested object fields are not required.\r\n * The required fields will be validated at runtime instead.\r\n */\r\nfunction applyRuntimeDependencies<T extends GenericObjectType>(\r\n originalSchema: T,\r\n config: RuntimeDependencyConfig\r\n): T {\r\n const schema = JSON.parse(JSON.stringify(originalSchema)) as T;\r\n const schemaAsJson = schema as unknown as JSONSchema;\r\n\r\n for (const [objectPath, fieldConfig] of Object.entries(config)) {\r\n const nestedSchema = getNestedProperty(schemaAsJson, objectPath);\r\n if (nestedSchema) {\r\n // Remove all conditionally required fields from the nested object's required array\r\n const fieldsToMakeOptional = [\r\n ...fieldConfig.triggerFields,\r\n ...fieldConfig.requiredFields,\r\n ];\r\n if (nestedSchema.required) {\r\n nestedSchema.required = nestedSchema.required.filter(\r\n (field) => !fieldsToMakeOptional.includes(field)\r\n );\r\n }\r\n }\r\n }\r\n\r\n // Also remove the nested object itself from root required if all its fields are optional\r\n if (schemaAsJson.required) {\r\n for (const objectPath of Object.keys(config)) {\r\n const topLevelField = objectPath.split(\".\")[0];\r\n if (topLevelField && schemaAsJson.required.includes(topLevelField)) {\r\n schemaAsJson.required = schemaAsJson.required.filter(\r\n (field: string) => field !== topLevelField\r\n );\r\n }\r\n }\r\n }\r\n\r\n return schema;\r\n}\r\n\r\n/**\r\n * Creates a customValidate function for runtime conditional requirements.\r\n *\r\n * Logic: If ANY trigger field is filled, ALL required fields become required.\r\n *\r\n * @example\r\n * // Address validation: if countryId filled AND any other field filled, all required\r\n * const validateAddress = createRuntimeValidator({\r\n * address: {\r\n * triggerFields: [\"countryId\", \"adminAreaLevel1Id\", \"adminAreaLevel2Id\", \"addressLine\"],\r\n * requiredFields: [\"countryId\", \"adminAreaLevel1Id\", \"adminAreaLevel2Id\", \"addressLine\", \"type\"],\r\n * }\r\n * });\r\n */\r\nfunction createRuntimeValidator<TData extends GenericObjectType>(\r\n config: RuntimeDependencyConfig\r\n) {\r\n return function validate(\r\n formData: TData | undefined,\r\n errors: FormValidation<TData>\r\n ): FormValidation<TData> {\r\n if (!formData) return errors;\r\n\r\n for (const [objectPath, fieldConfig] of Object.entries(config)) {\r\n const nestedObject = getNestedValue(formData, objectPath) as\r\n | GenericObjectType\r\n | undefined;\r\n if (!nestedObject) continue;\r\n\r\n const errorMessage = fieldConfig.errorMessage || \"Required\";\r\n\r\n // Check if any trigger field is filled\r\n const filledTriggerFields = fieldConfig.triggerFields.filter((field) => {\r\n const value = nestedObject[field];\r\n const emptyCheck = fieldConfig.emptyChecks?.[field] || isValueEmpty;\r\n return !emptyCheck(value);\r\n });\r\n\r\n // If at least 2 trigger fields are filled (not just one), all required fields become required\r\n // This handles the \"only countryId filled = optional\" case\r\n if (filledTriggerFields.length >= 2) {\r\n const nestedErrors = getNestedValue(\r\n errors as unknown as GenericObjectType,\r\n objectPath\r\n ) as GenericObjectType | undefined;\r\n\r\n for (const requiredField of fieldConfig.requiredFields) {\r\n const value = nestedObject[requiredField];\r\n const emptyCheck =\r\n fieldConfig.emptyChecks?.[requiredField] || isValueEmpty;\r\n\r\n if (emptyCheck(value)) {\r\n const fieldError = nestedErrors?.[requiredField] as\r\n | { addError?: (msg: string) => void }\r\n | undefined;\r\n fieldError?.addError?.(errorMessage);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return errors;\r\n };\r\n}\r\n\r\n/**\r\n * Convenience function that applies both schema modifications and returns a validator.\r\n * Use this for the complete solution.\r\n *\r\n * @typeParam TSchema - The schema object type\r\n * @typeParam TData - The form data type (optional, defaults to GenericObjectType)\r\n */\r\nfunction createConditionalRequirements<\r\n TSchema extends GenericObjectType,\r\n TData extends GenericObjectType = GenericObjectType,\r\n>(\r\n originalSchema: TSchema,\r\n config: RuntimeDependencyConfig\r\n): {\r\n schema: TSchema;\r\n validate: (\r\n formData: TData | undefined,\r\n errors: FormValidation<TData>\r\n ) => FormValidation<TData>;\r\n} {\r\n return {\r\n schema: applyRuntimeDependencies(originalSchema, config),\r\n validate: createRuntimeValidator<TData>(config),\r\n };\r\n}\r\n\r\n/**\r\n * Checks if requirements should be active for a given object path.\r\n * Returns true if 2+ trigger fields are filled.\r\n */\r\nfunction shouldRequireFields<TData extends GenericObjectType>(\r\n formData: TData | undefined,\r\n objectPath: string,\r\n fieldConfig: ConditionalFieldConfig\r\n): boolean {\r\n if (!formData) return false;\r\n\r\n const nestedObject = getNestedValue(formData, objectPath) as\r\n | GenericObjectType\r\n | undefined;\r\n if (!nestedObject) return false;\r\n\r\n const filledTriggerFields = fieldConfig.triggerFields.filter((field) => {\r\n const value = nestedObject[field];\r\n const emptyCheck = fieldConfig.emptyChecks?.[field] || isValueEmpty;\r\n return !emptyCheck(value);\r\n });\r\n\r\n const minCount = fieldConfig.minFilledCount ?? 2;\r\n return filledTriggerFields.length >= minCount;\r\n}\r\n\r\n/**\r\n * Creates a schema with required fields dynamically based on current form state.\r\n * Use this in useMemo to recompute schema when form data changes.\r\n *\r\n * @param originalSchema - The original schema\r\n * @param config - The runtime dependency configuration\r\n * @param formData - Current form data to determine required state\r\n * @returns Schema with correct required fields based on form state\r\n */\r\nfunction createDynamicSchema<\r\n TSchema extends GenericObjectType,\r\n TData extends GenericObjectType = GenericObjectType,\r\n>(\r\n originalSchema: TSchema,\r\n config: RuntimeDependencyConfig,\r\n formData: TData | undefined\r\n): TSchema {\r\n const schema = JSON.parse(JSON.stringify(originalSchema)) as TSchema;\r\n const schemaAsJson = schema as unknown as JSONSchema;\r\n\r\n for (const [objectPath, fieldConfig] of Object.entries(config)) {\r\n const nestedSchema = getNestedProperty(schemaAsJson, objectPath);\r\n if (!nestedSchema) continue;\r\n\r\n const requirementsActive = shouldRequireFields(\r\n formData,\r\n objectPath,\r\n fieldConfig\r\n );\r\n\r\n if (requirementsActive) {\r\n // Add required fields to the nested object's required array\r\n const currentRequired = nestedSchema.required || [];\r\n const newRequired = new Set([\r\n ...currentRequired,\r\n ...fieldConfig.requiredFields,\r\n ]);\r\n nestedSchema.required = Array.from(newRequired);\r\n } else {\r\n // Remove conditionally required fields from required array\r\n const fieldsToMakeOptional = [\r\n ...fieldConfig.triggerFields,\r\n ...fieldConfig.requiredFields,\r\n ];\r\n if (nestedSchema.required) {\r\n nestedSchema.required = nestedSchema.required.filter(\r\n (field) => !fieldsToMakeOptional.includes(field)\r\n );\r\n }\r\n }\r\n }\r\n\r\n // Handle top-level required for nested objects\r\n if (schemaAsJson.required) {\r\n for (const [objectPath, fieldConfig] of Object.entries(config)) {\r\n const topLevelField = objectPath.split(\".\")[0];\r\n if (!topLevelField) continue;\r\n\r\n const requirementsActive = shouldRequireFields(\r\n formData,\r\n objectPath,\r\n fieldConfig\r\n );\r\n\r\n if (requirementsActive) {\r\n // Add to required if not already present\r\n if (!schemaAsJson.required.includes(topLevelField)) {\r\n schemaAsJson.required.push(topLevelField);\r\n }\r\n } else {\r\n // Remove from required\r\n schemaAsJson.required = schemaAsJson.required.filter(\r\n (field: string) => field !== topLevelField\r\n );\r\n }\r\n }\r\n }\r\n\r\n return schema;\r\n}\r\n\r\n/**\r\n * Creates a transformErrors function that filters out format validation errors\r\n * when the field value is empty. This prevents errors like \"must match email format\"\r\n * when an optional email field is empty.\r\n *\r\n * @param formData - Current form data to check for empty values\r\n * @returns TransformErrors function for SchemaForm\r\n */\r\nfunction createEmptyValueTransformErrors<TData extends GenericObjectType>(\r\n formData: TData | undefined\r\n) {\r\n return function transformErrors(\r\n errors: RJSFValidationError[]\r\n ): RJSFValidationError[] {\r\n return errors.filter((error) => {\r\n // Only filter format errors\r\n if (error.name !== \"format\") return true;\r\n\r\n // Get the field path from the property (e.g., \".email.emailAddress\" -> [\"email\", \"emailAddress\"])\r\n const path = (error.property || \"\")\r\n .replace(/^\\./, \"\")\r\n .split(\".\")\r\n .filter(Boolean);\r\n\r\n if (path.length === 0 || !formData) return true;\r\n\r\n // Navigate to get the value\r\n let value: unknown = formData;\r\n for (const key of path) {\r\n if (value && typeof value === \"object\" && key in value) {\r\n value = (value as Record<string, unknown>)[key];\r\n } else {\r\n return true; // Path doesn't exist, keep the error\r\n }\r\n }\r\n\r\n // If value is empty, filter out the format error\r\n return !isValueEmpty(value);\r\n });\r\n };\r\n}\r\n\r\n/**\r\n * Cleans form data for submission by removing objects where requirements are not triggered\r\n * and removeFromSubmit is true.\r\n *\r\n * @param formData - The form data to clean\r\n * @param config - The runtime dependency configuration\r\n * @returns Cleaned form data ready for submission\r\n */\r\nfunction cleanFormDataForSubmit<TData extends GenericObjectType>(\r\n formData: TData,\r\n config: RuntimeDependencyConfig\r\n): Partial<TData> {\r\n const result = { ...formData } as Record<string, unknown>;\r\n\r\n for (const [objectPath, fieldConfig] of Object.entries(config)) {\r\n if (!fieldConfig.removeFromSubmit) continue;\r\n\r\n // Check if requirements are triggered\r\n const requirementsActive = shouldRequireFields(\r\n formData,\r\n objectPath,\r\n fieldConfig\r\n );\r\n\r\n // If requirements are NOT active and removeFromSubmit is true, remove the object\r\n if (!requirementsActive) {\r\n // Handle nested paths (e.g., \"contact.address\")\r\n const pathParts = objectPath.split(\".\");\r\n if (pathParts.length === 1) {\r\n delete result[objectPath];\r\n } else {\r\n // Navigate to parent and delete the leaf\r\n let current: Record<string, unknown> = result;\r\n for (let i = 0; i < pathParts.length - 1; i++) {\r\n const part = pathParts[i] as string;\r\n if (current[part] && typeof current[part] === \"object\") {\r\n current = current[part] as Record<string, unknown>;\r\n } else {\r\n break;\r\n }\r\n }\r\n const leafKey = pathParts[pathParts.length - 1] as string;\r\n delete current[leafKey];\r\n }\r\n }\r\n }\r\n\r\n return result as Partial<TData>;\r\n}\r\n\r\nexport {\r\n applyRuntimeDependencies,\r\n createRuntimeValidator,\r\n createConditionalRequirements,\r\n createDynamicSchema,\r\n createEmptyValueTransformErrors,\r\n cleanFormDataForSubmit,\r\n shouldRequireFields,\r\n isValueEmpty,\r\n EMPTY_GUID,\r\n};\r\nexport type { RuntimeDependencyConfig, ConditionalFieldConfig };\r\n"],"mappings":"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","names":[]}
@@ -0,0 +1,190 @@
1
+ import { lodash } from "@repo/ayasofyazilim-ui/lib/utils";
2
+ function bulkCreateUiSchema({
3
+ elements,
4
+ config
5
+ }) {
6
+ const uiSchema = {};
7
+ for (const element of elements) {
8
+ Object.assign(uiSchema, { [element]: config });
9
+ }
10
+ return filterUndefinedAndEmpty(uiSchema);
11
+ }
12
+ function createUiSchemaWithResource({
13
+ resources,
14
+ schema,
15
+ extend,
16
+ name = "Form"
17
+ }) {
18
+ const baseUiSchema = uiSchemaFromSchema({
19
+ object: schema,
20
+ resources,
21
+ name,
22
+ constantKey: name
23
+ });
24
+ const targetSchema = lodash.get(baseUiSchema, name, {});
25
+ if (extend) {
26
+ return lodash.merge({}, targetSchema, extend);
27
+ }
28
+ return targetSchema;
29
+ }
30
+ function createSchemaWithFilters({
31
+ schema,
32
+ filter
33
+ }) {
34
+ const { keys, type } = filter;
35
+ const modifiedSchema = lodash.cloneDeep(schema);
36
+ const isWildCard = (key) => lodash.some(keys, (k) => k === `*${key}`);
37
+ const hasKey = (key) => lodash.includes(keys, key);
38
+ const filterRecursive = (currentObj, parentPath = "") => {
39
+ if (!currentObj.properties && !currentObj.items) return;
40
+ if (currentObj.properties) {
41
+ const keptKeys = [];
42
+ currentObj.properties = lodash.transform(
43
+ currentObj.properties,
44
+ (result, property, key) => {
45
+ const propertyKey = String(key);
46
+ const currentPath = parentPath ? `${parentPath}.${propertyKey}` : propertyKey;
47
+ let shouldKeep = false;
48
+ switch (type) {
49
+ case "include":
50
+ shouldKeep = hasKey(currentPath) || isWildCard(currentPath);
51
+ break;
52
+ case "exclude":
53
+ case "fullExclude":
54
+ shouldKeep = !hasKey(currentPath);
55
+ break;
56
+ }
57
+ if (shouldKeep) {
58
+ result[propertyKey] = property;
59
+ keptKeys.push(propertyKey);
60
+ if (property.type === "object") {
61
+ filterRecursive(property, currentPath);
62
+ } else if (property.type === "array" && property.items) {
63
+ filterRecursive(property.items, currentPath);
64
+ }
65
+ }
66
+ },
67
+ {}
68
+ );
69
+ if (currentObj.required) {
70
+ currentObj.required = lodash.intersection(
71
+ currentObj.required,
72
+ keptKeys
73
+ );
74
+ if (lodash.isEmpty(currentObj.required)) {
75
+ delete currentObj.required;
76
+ }
77
+ }
78
+ }
79
+ };
80
+ filterRecursive(modifiedSchema);
81
+ return modifiedSchema;
82
+ }
83
+ function removeFieldsfromGenericSchema(obj, keysToRemove) {
84
+ const keysArray = lodash.castArray(keysToRemove);
85
+ const transform = (value) => {
86
+ if (lodash.isArray(value)) {
87
+ return lodash.map(value, transform);
88
+ }
89
+ if (lodash.isPlainObject(value)) {
90
+ return lodash.transform(
91
+ value,
92
+ (result, val, key) => {
93
+ if (!keysArray.includes(key)) {
94
+ result[key] = transform(val);
95
+ }
96
+ },
97
+ {}
98
+ );
99
+ }
100
+ return value;
101
+ };
102
+ return transform(obj);
103
+ }
104
+ function mergeUISchemaObjects(source, target) {
105
+ return lodash.merge({}, source, target);
106
+ }
107
+ function uiSchemaFromSchema({
108
+ name,
109
+ object,
110
+ resources,
111
+ constantKey
112
+ }) {
113
+ const uiSchema = { [name]: {} };
114
+ if (object?.type === "object" && object.properties) {
115
+ lodash.forEach(object.properties, (propValue, propKey) => {
116
+ const nestedSchema = uiSchemaFromSchema({
117
+ name: propKey,
118
+ object: propValue,
119
+ resources,
120
+ constantKey: `${constantKey}.${propKey}`
121
+ });
122
+ Object.assign(uiSchema[name], {
123
+ "ui:title": resources[constantKey],
124
+ ...nestedSchema
125
+ });
126
+ });
127
+ } else if (object?.type === "array" && object.items?.properties) {
128
+ const items = lodash.reduce(
129
+ object.items.properties,
130
+ (acc, propValue, propKey) => {
131
+ const nested = uiSchemaFromSchema({
132
+ name: propKey,
133
+ object: propValue,
134
+ resources,
135
+ constantKey: `${constantKey}.${propKey}`
136
+ });
137
+ return lodash.merge(acc, nested);
138
+ },
139
+ {}
140
+ );
141
+ Object.assign(uiSchema[name], {
142
+ "ui:title": resources[constantKey] || lodash.startCase(name),
143
+ items
144
+ });
145
+ } else if (object) {
146
+ const getResource = (suffix) => resources[suffix ? `${constantKey}.${suffix}` : constantKey];
147
+ const uiSchemaItem = {
148
+ "ui:title": getResource() || lodash.startCase(name),
149
+ "ui:placeholder": getResource("ui:placeholder")
150
+ };
151
+ if (object.enum) {
152
+ uiSchemaItem["ui:enumNames"] = object.enum.map(
153
+ (key) => resources[`${constantKey}.${key}`] || key
154
+ );
155
+ uiSchemaItem["ui:options"] = {
156
+ label: true,
157
+ emptyValue: getResource("emptyValue"),
158
+ searchPlaceholder: getResource("searchPlaceholder"),
159
+ searchResultLabel: getResource("searchResultLabel")
160
+ };
161
+ }
162
+ Object.assign(uiSchema[name], uiSchemaItem);
163
+ }
164
+ return filterUndefinedAndEmpty(uiSchema);
165
+ }
166
+ function filterUndefinedAndEmpty(obj) {
167
+ if (!lodash.isObject(obj)) {
168
+ return obj;
169
+ }
170
+ const result = lodash.transform(
171
+ obj,
172
+ (acc, value, key) => {
173
+ const filteredValue = filterUndefinedAndEmpty(value);
174
+ const isValid = filteredValue !== void 0 && !(lodash.isPlainObject(filteredValue) && lodash.isEmpty(filteredValue));
175
+ if (isValid) {
176
+ acc[key] = filteredValue;
177
+ }
178
+ },
179
+ {}
180
+ );
181
+ return result;
182
+ }
183
+ export {
184
+ bulkCreateUiSchema,
185
+ createSchemaWithFilters,
186
+ createUiSchemaWithResource,
187
+ mergeUISchemaObjects,
188
+ removeFieldsfromGenericSchema
189
+ };
190
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/custom/schema-form/utils/schemas.ts"],"sourcesContent":["import { GenericObjectType } from \"@rjsf/utils\";\r\nimport {\r\n CreateFieldConfigWithResourceProps,\r\n FilteredObject,\r\n FilterType,\r\n UiSchema,\r\n} from \"../types\";\r\nimport { lodash } from \"@repo/ayasofyazilim-ui/lib/utils\";\r\n\r\n/**\r\n *\r\n */\r\nexport function bulkCreateUiSchema<T>({\r\n elements,\r\n config,\r\n}: {\r\n config: UiSchema<T>;\r\n elements: Array<keyof T>;\r\n}): UiSchema<T> {\r\n const uiSchema = {};\r\n for (const element of elements) {\r\n Object.assign(uiSchema, { [element]: config });\r\n }\r\n return filterUndefinedAndEmpty(uiSchema);\r\n}\r\n\r\n/**\r\n * Creates a UiSchema with internationalization resources and optional overrides.\r\n */\r\nexport function createUiSchemaWithResource<T = unknown>({\r\n resources,\r\n schema,\r\n extend,\r\n name = \"Form\",\r\n}: CreateFieldConfigWithResourceProps): UiSchema<T> {\r\n const baseUiSchema = uiSchemaFromSchema({\r\n object: schema,\r\n resources,\r\n name,\r\n constantKey: name,\r\n });\r\n\r\n const targetSchema = lodash.get(baseUiSchema, name, {});\r\n\r\n if (extend) {\r\n // Lodash merge handles deep merging recursively and safely\r\n return lodash.merge({}, targetSchema, extend);\r\n }\r\n\r\n return targetSchema;\r\n}\r\n\r\n/**\r\n * Filters a JSON Schema based on include/exclude/fullExclude rules.\r\n */\r\nexport function createSchemaWithFilters<T = string>({\r\n schema,\r\n filter,\r\n}: {\r\n filter: FilterType<T>;\r\n schema: GenericObjectType;\r\n}): GenericObjectType {\r\n const { keys, type } = filter;\r\n // Deep clone first to avoid mutating the original schema reference\r\n const modifiedSchema = lodash.cloneDeep(schema);\r\n\r\n const isWildCard = (key: string) => lodash.some(keys, (k) => k === `*${key}`);\r\n const hasKey = (key: string) => lodash.includes(keys, key);\r\n\r\n const filterRecursive = (\r\n currentObj: GenericObjectType,\r\n parentPath: string = \"\"\r\n ): void => {\r\n if (!currentObj.properties && !currentObj.items) return;\r\n\r\n // Handle Properties\r\n if (currentObj.properties) {\r\n const keptKeys: string[] = [];\r\n\r\n currentObj.properties = lodash.transform(\r\n currentObj.properties,\r\n (result, property, key) => {\r\n const propertyKey = String(key);\r\n const currentPath = parentPath\r\n ? `${parentPath}.${propertyKey}`\r\n : propertyKey;\r\n\r\n let shouldKeep = false;\r\n\r\n switch (type) {\r\n case \"include\":\r\n // Keep if explicitly included or if it's a wildcard match\r\n shouldKeep = hasKey(currentPath) || isWildCard(currentPath);\r\n break;\r\n case \"exclude\":\r\n case \"fullExclude\":\r\n // Keep if NOT in the exclude list\r\n shouldKeep = !hasKey(currentPath);\r\n break;\r\n }\r\n\r\n if (shouldKeep) {\r\n result[propertyKey] = property;\r\n keptKeys.push(propertyKey);\r\n\r\n // Recursive step for Objects and Arrays\r\n if (property.type === \"object\") {\r\n filterRecursive(property, currentPath);\r\n } else if (property.type === \"array\" && property.items) {\r\n filterRecursive(property.items, currentPath);\r\n }\r\n }\r\n },\r\n {} as GenericObjectType[\"properties\"]\r\n );\r\n\r\n // Update or Remove 'required' array based on kept keys\r\n if (currentObj.required) {\r\n currentObj.required = lodash.intersection(\r\n currentObj.required,\r\n keptKeys\r\n );\r\n if (lodash.isEmpty(currentObj.required)) {\r\n delete currentObj.required;\r\n }\r\n }\r\n }\r\n };\r\n\r\n filterRecursive(modifiedSchema);\r\n return modifiedSchema;\r\n}\r\n\r\n/**\r\n * Recursively removes specific keys from any object or array.\r\n */\r\nexport function removeFieldsfromGenericSchema<T>(\r\n obj: T,\r\n keysToRemove: string | string[]\r\n): T {\r\n const keysArray = lodash.castArray(keysToRemove);\r\n\r\n const transform = (value: unknown): unknown => {\r\n if (lodash.isArray(value)) {\r\n return lodash.map(value, transform);\r\n }\r\n\r\n if (lodash.isPlainObject(value)) {\r\n return lodash.transform(\r\n value as Record<string, unknown>,\r\n (result, val, key) => {\r\n if (!keysArray.includes(key)) {\r\n result[key] = transform(val);\r\n }\r\n },\r\n {} as Record<string, unknown>\r\n );\r\n }\r\n\r\n return value;\r\n };\r\n\r\n return transform(obj) as T;\r\n}\r\n\r\n/**\r\n * Merges two UISchema objects recursively.\r\n */\r\n\r\nexport function mergeUISchemaObjects<\r\n T extends UiSchema<T> | UiSchema,\r\n U extends UiSchema<T> | UiSchema,\r\n>(source: T, target: U): T & U {\r\n // We pass {} as the first argument to ensure we create a new object\r\n // rather than mutating 'source'.\r\n return lodash.merge({}, source, target) as T & U;\r\n}\r\n\r\n/**\r\n * Helper: Generates UiSchema structure from JSON Schema + Resources\r\n */\r\nfunction uiSchemaFromSchema({\r\n name,\r\n object,\r\n resources,\r\n constantKey,\r\n}: {\r\n constantKey: string;\r\n name: string;\r\n object: GenericObjectType;\r\n resources: Record<string, string>;\r\n}) {\r\n const uiSchema: Record<string, any> = { [name]: {} };\r\n\r\n // 1. Handle Objects\r\n if (object?.type === \"object\" && object.properties) {\r\n lodash.forEach(object.properties, (propValue, propKey) => {\r\n const nestedSchema = uiSchemaFromSchema({\r\n name: propKey,\r\n object: propValue,\r\n resources,\r\n constantKey: `${constantKey}.${propKey}`,\r\n });\r\n\r\n // Merge nested results into the current name scope\r\n Object.assign(uiSchema[name], {\r\n \"ui:title\": resources[constantKey],\r\n ...nestedSchema,\r\n });\r\n });\r\n }\r\n\r\n // 2. Handle Arrays\r\n else if (object?.type === \"array\" && object.items?.properties) {\r\n const items = lodash.reduce(\r\n object.items.properties,\r\n (acc, propValue, propKey) => {\r\n const nested = uiSchemaFromSchema({\r\n name: propKey,\r\n object: propValue,\r\n resources,\r\n constantKey: `${constantKey}.${propKey}`,\r\n });\r\n return lodash.merge(acc, nested);\r\n },\r\n {}\r\n );\r\n\r\n Object.assign(uiSchema[name], {\r\n \"ui:title\": resources[constantKey] || lodash.startCase(name),\r\n items,\r\n });\r\n }\r\n\r\n // 3. Handle Primitives (Plain fields)\r\n else if (object) {\r\n const getResource = (suffix?: string) =>\r\n resources[suffix ? `${constantKey}.${suffix}` : constantKey];\r\n\r\n const uiSchemaItem: Record<string, any> = {\r\n \"ui:title\": getResource() || lodash.startCase(name),\r\n \"ui:placeholder\": getResource(\"ui:placeholder\"),\r\n };\r\n\r\n if (object.enum) {\r\n uiSchemaItem[\"ui:enumNames\"] = object.enum.map(\r\n (key: string) => resources[`${constantKey}.${key}`] || key\r\n );\r\n uiSchemaItem[\"ui:options\"] = {\r\n label: true,\r\n emptyValue: getResource(\"emptyValue\"),\r\n searchPlaceholder: getResource(\"searchPlaceholder\"),\r\n searchResultLabel: getResource(\"searchResultLabel\"),\r\n };\r\n }\r\n\r\n Object.assign(uiSchema[name], uiSchemaItem);\r\n }\r\n\r\n return filterUndefinedAndEmpty(uiSchema);\r\n}\r\n\r\n/**\r\n * Recursively filters out undefined values and empty objects/arrays\r\n */\r\nfunction filterUndefinedAndEmpty<T>(obj: T): FilteredObject<T> {\r\n if (!lodash.isObject(obj)) {\r\n return obj as FilteredObject<T>;\r\n }\r\n\r\n // Use omitBy to filter undefined, then mapValues to recurse\r\n const result = lodash.transform(\r\n obj as unknown as object,\r\n (acc: any, value, key) => {\r\n const filteredValue = filterUndefinedAndEmpty(value);\r\n\r\n const isValid =\r\n filteredValue !== undefined &&\r\n !(lodash.isPlainObject(filteredValue) && lodash.isEmpty(filteredValue));\r\n\r\n if (isValid) {\r\n acc[key] = filteredValue;\r\n }\r\n },\r\n {}\r\n );\r\n\r\n return result as FilteredObject<T>;\r\n}\r\n"],"mappings":"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","names":[]}
@@ -0,0 +1,19 @@
1
+ function customPasswordValidate({
2
+ formData,
3
+ keyOne,
4
+ keyTwo,
5
+ errorMessage,
6
+ errors
7
+ }) {
8
+ if (!formData) {
9
+ return errors;
10
+ }
11
+ if (formData[keyOne] !== formData[keyTwo]) {
12
+ errors[keyTwo]?.addError(errorMessage);
13
+ }
14
+ return errors;
15
+ }
16
+ export {
17
+ customPasswordValidate
18
+ };
19
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/custom/schema-form/utils/validation.ts"],"sourcesContent":["import { FormValidation } from \"@rjsf/utils\";\r\n\r\nexport function customPasswordValidate<T>({\r\n formData,\r\n keyOne,\r\n keyTwo,\r\n errorMessage,\r\n errors,\r\n}: {\r\n formData: T | undefined;\r\n keyOne: keyof T;\r\n keyTwo: keyof T;\r\n errorMessage: string;\r\n errors: FormValidation<T>;\r\n}): FormValidation<T> {\r\n if (!formData) {\r\n return errors;\r\n }\r\n if (formData[keyOne] !== formData[keyTwo]) {\r\n errors[keyTwo]?.addError(errorMessage);\r\n }\r\n return errors;\r\n}\r\n"],"mappings":"AAEO,SAAS,uBAA0B;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMsB;AACpB,MAAI,CAAC,UAAU;AACb,WAAO;AAAA,EACT;AACA,MAAI,SAAS,MAAM,MAAM,SAAS,MAAM,GAAG;AACzC,WAAO,MAAM,GAAG,SAAS,YAAY;AAAA,EACvC;AACA,SAAO;AACT;","names":[]}
@@ -0,0 +1,73 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Checkbox } from "@repo/ayasofyazilim-ui/components/checkbox";
3
+ import { Label } from "@repo/ayasofyazilim-ui/components/label";
4
+ import { Switch } from "@repo/ayasofyazilim-ui/components/switch";
5
+ import { cn } from "@repo/ayasofyazilim-ui/lib/utils";
6
+ const SwitchWidget = (props) => {
7
+ const { id, name, onChange, value, defaultValue, disabled, uiSchema } = props;
8
+ const required = uiSchema?.["ui:required"] || props.required;
9
+ return /* @__PURE__ */ jsx(BooleanWrapper, { widgetProps: props, children: /* @__PURE__ */ jsx(
10
+ Switch,
11
+ {
12
+ id,
13
+ "data-testid": id,
14
+ onCheckedChange: () => {
15
+ onChange(!value);
16
+ },
17
+ checked: value,
18
+ defaultValue: value || defaultValue,
19
+ name,
20
+ disabled,
21
+ required
22
+ }
23
+ ) });
24
+ };
25
+ const CheckboxWidget = (props) => {
26
+ const { id, name, onChange, value, defaultValue, disabled, uiSchema } = props;
27
+ const required = uiSchema?.["ui:required"] || props.required;
28
+ return /* @__PURE__ */ jsx(BooleanWrapper, { widgetProps: props, children: /* @__PURE__ */ jsx(
29
+ Checkbox,
30
+ {
31
+ id,
32
+ "data-testid": id,
33
+ onCheckedChange: () => {
34
+ onChange(!value);
35
+ },
36
+ checked: value,
37
+ defaultValue: value || defaultValue,
38
+ name,
39
+ disabled,
40
+ required
41
+ }
42
+ ) });
43
+ };
44
+ function BooleanWrapper({
45
+ children,
46
+ widgetProps
47
+ }) {
48
+ const { id, className, label, uiSchema } = widgetProps;
49
+ const required = uiSchema?.["ui:required"] || widgetProps.required;
50
+ const displayLabel = uiSchema?.displayLabel;
51
+ return /* @__PURE__ */ jsxs(
52
+ "div",
53
+ {
54
+ "data-wrapper": "boolean",
55
+ className: cn(
56
+ "flex items-center gap-2 h-9 px-2 border rounded-md shadow-xs",
57
+ className
58
+ ),
59
+ children: [
60
+ children,
61
+ displayLabel !== false && /* @__PURE__ */ jsxs(Label, { id, htmlFor: id, className: "w-full", children: [
62
+ label,
63
+ required && "*"
64
+ ] })
65
+ ]
66
+ }
67
+ );
68
+ }
69
+ export {
70
+ CheckboxWidget,
71
+ SwitchWidget
72
+ };
73
+ //# sourceMappingURL=boolean.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/custom/schema-form/widgets/boolean.tsx"],"sourcesContent":["import { Checkbox } from \"@repo/ayasofyazilim-ui/components/checkbox\";\r\nimport { Label } from \"@repo/ayasofyazilim-ui/components/label\";\r\nimport { Switch } from \"@repo/ayasofyazilim-ui/components/switch\";\r\nimport { cn } from \"@repo/ayasofyazilim-ui/lib/utils\";\r\nimport { WidgetProps } from \"@rjsf/utils\";\r\nimport { ReactNode } from \"react\";\r\n\r\nexport const SwitchWidget = (props: WidgetProps) => {\r\n const { id, name, onChange, value, defaultValue, disabled, uiSchema } = props;\r\n const required = uiSchema?.[\"ui:required\"] || props.required;\r\n return (\r\n <BooleanWrapper widgetProps={props}>\r\n <Switch\r\n id={id}\r\n data-testid={id}\r\n onCheckedChange={() => {\r\n onChange(!value);\r\n }}\r\n checked={value}\r\n defaultValue={value || defaultValue}\r\n name={name}\r\n disabled={disabled}\r\n required={required}\r\n />\r\n </BooleanWrapper>\r\n );\r\n};\r\n\r\nexport const CheckboxWidget = (props: WidgetProps) => {\r\n const { id, name, onChange, value, defaultValue, disabled, uiSchema } = props;\r\n const required = uiSchema?.[\"ui:required\"] || props.required;\r\n return (\r\n <BooleanWrapper widgetProps={props}>\r\n <Checkbox\r\n id={id}\r\n data-testid={id}\r\n onCheckedChange={() => {\r\n onChange(!value);\r\n }}\r\n checked={value}\r\n defaultValue={value || defaultValue}\r\n name={name}\r\n disabled={disabled}\r\n required={required}\r\n />\r\n </BooleanWrapper>\r\n );\r\n};\r\n\r\nfunction BooleanWrapper({\r\n children,\r\n widgetProps,\r\n}: {\r\n children: ReactNode;\r\n widgetProps: WidgetProps;\r\n}) {\r\n const { id, className, label, uiSchema } = widgetProps;\r\n const required = uiSchema?.[\"ui:required\"] || widgetProps.required;\r\n const displayLabel = uiSchema?.displayLabel;\r\n return (\r\n <div\r\n data-wrapper=\"boolean\"\r\n className={cn(\r\n \"flex items-center gap-2 h-9 px-2 border rounded-md shadow-xs\",\r\n className\r\n )}\r\n >\r\n {children}\r\n {displayLabel !== false && (\r\n <Label id={id} htmlFor={id} className=\"w-full\">\r\n {label}\r\n {required && \"*\"}\r\n </Label>\r\n )}\r\n </div>\r\n );\r\n}\r\n"],"mappings":"AAYM,cAyDE,YAzDF;AAZN,SAAS,gBAAgB;AACzB,SAAS,aAAa;AACtB,SAAS,cAAc;AACvB,SAAS,UAAU;AAIZ,MAAM,eAAe,CAAC,UAAuB;AAClD,QAAM,EAAE,IAAI,MAAM,UAAU,OAAO,cAAc,UAAU,SAAS,IAAI;AACxE,QAAM,WAAW,WAAW,aAAa,KAAK,MAAM;AACpD,SACE,oBAAC,kBAAe,aAAa,OAC3B;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,eAAa;AAAA,MACb,iBAAiB,MAAM;AACrB,iBAAS,CAAC,KAAK;AAAA,MACjB;AAAA,MACA,SAAS;AAAA,MACT,cAAc,SAAS;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EACF,GACF;AAEJ;AAEO,MAAM,iBAAiB,CAAC,UAAuB;AACpD,QAAM,EAAE,IAAI,MAAM,UAAU,OAAO,cAAc,UAAU,SAAS,IAAI;AACxE,QAAM,WAAW,WAAW,aAAa,KAAK,MAAM;AACpD,SACE,oBAAC,kBAAe,aAAa,OAC3B;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,eAAa;AAAA,MACb,iBAAiB,MAAM;AACrB,iBAAS,CAAC,KAAK;AAAA,MACjB;AAAA,MACA,SAAS;AAAA,MACT,cAAc,SAAS;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EACF,GACF;AAEJ;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA;AACF,GAGG;AACD,QAAM,EAAE,IAAI,WAAW,OAAO,SAAS,IAAI;AAC3C,QAAM,WAAW,WAAW,aAAa,KAAK,YAAY;AAC1D,QAAM,eAAe,UAAU;AAC/B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,QACA,iBAAiB,SAChB,qBAAC,SAAM,IAAQ,SAAS,IAAI,WAAU,UACnC;AAAA;AAAA,UACA,YAAY;AAAA,WACf;AAAA;AAAA;AAAA,EAEJ;AAEJ;","names":[]}
@@ -0,0 +1,222 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { ChevronsUpDown } from "lucide-react";
3
+ import { CheckIcon } from "lucide-react";
4
+ import { useState } from "react";
5
+ import { Badge } from "@repo/ayasofyazilim-ui/components/badge";
6
+ import { Button } from "@repo/ayasofyazilim-ui/components/button";
7
+ import {
8
+ Command,
9
+ CommandEmpty,
10
+ CommandGroup,
11
+ CommandInput,
12
+ CommandItem,
13
+ CommandList
14
+ } from "@repo/ayasofyazilim-ui/components/command";
15
+ import {
16
+ Drawer,
17
+ DrawerContent,
18
+ DrawerTrigger
19
+ } from "@repo/ayasofyazilim-ui/components/drawer";
20
+ import {
21
+ Popover,
22
+ PopoverContent,
23
+ PopoverTrigger
24
+ } from "@repo/ayasofyazilim-ui/components/popover";
25
+ import { useMediaQuery } from "@repo/ayasofyazilim-ui/hooks/use-media-query";
26
+ import { cn } from "@repo/ayasofyazilim-ui/lib/utils";
27
+ function CustomCombobox(props) {
28
+ const {
29
+ value,
30
+ defaultValue,
31
+ list,
32
+ selectIdentifier,
33
+ selectLabel,
34
+ disabled,
35
+ emptyValue = "Please select"
36
+ } = props;
37
+ const isDesktop = useMediaQuery("(min-width: 768px)");
38
+ const [open, setOpen] = useState(false);
39
+ const fieldValue = value || defaultValue;
40
+ const fieldValueDisplayName = list?.find(
41
+ (x) => x[selectIdentifier] === fieldValue
42
+ )?.[selectLabel];
43
+ const DesktopContent = /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, modal: true, children: [
44
+ /* @__PURE__ */ jsx(
45
+ PopoverTrigger,
46
+ {
47
+ asChild: true,
48
+ disabled,
49
+ className: cn(disabled && "cursor-not-allowed"),
50
+ children: /* @__PURE__ */ jsxs(
51
+ Button,
52
+ {
53
+ id: props.id,
54
+ "data-testid": props.id,
55
+ type: "button",
56
+ variant: "outline",
57
+ role: "combobox",
58
+ className: cn(
59
+ "text-muted-foreground w-full justify-between font-normal shadow-xs hover:bg-white overflow-hidden",
60
+ fieldValueDisplayName && "text-foreground",
61
+ disabled && "disabled:pointer-events-auto hover:bg-background hover:text-muted-foreground"
62
+ ),
63
+ children: [
64
+ /* @__PURE__ */ jsx("span", { className: "truncate has-[role=dialog]:max-w-xs", children: typeof fieldValueDisplayName !== "undefined" && fieldValueDisplayName !== null ? fieldValueDisplayName.toString() : emptyValue }),
65
+ /* @__PURE__ */ jsx(ChevronsUpDown, { className: "ml-2 h-4 w-4 shrink-0 opacity-50" })
66
+ ]
67
+ }
68
+ )
69
+ }
70
+ ),
71
+ /* @__PURE__ */ jsx(PopoverContent, { className: "p-0", children: /* @__PURE__ */ jsx(List, { ...props, setOpen }) })
72
+ ] });
73
+ const MobileContent = /* @__PURE__ */ jsxs(Drawer, { open, onOpenChange: setOpen, children: [
74
+ /* @__PURE__ */ jsx(DrawerTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
75
+ Button,
76
+ {
77
+ "data-testid": props.id,
78
+ type: "button",
79
+ disabled,
80
+ variant: "outline",
81
+ className: cn(
82
+ "text-muted-foreground w-full justify-between font-normal shadow-xs hover:bg-white",
83
+ fieldValueDisplayName && "text-black"
84
+ ),
85
+ children: [
86
+ fieldValueDisplayName ? fieldValueDisplayName.toString() : emptyValue,
87
+ /* @__PURE__ */ jsx(ChevronsUpDown, { className: "ml-2 h-4 w-4 shrink-0 opacity-50" })
88
+ ]
89
+ }
90
+ ) }),
91
+ /* @__PURE__ */ jsx(DrawerContent, { children: /* @__PURE__ */ jsx("div", { className: "mt-4 border-t", children: /* @__PURE__ */ jsx(List, { ...props, setOpen }) }) })
92
+ ] });
93
+ return isDesktop ? DesktopContent : MobileContent;
94
+ }
95
+ function List({
96
+ setOpen,
97
+ ...props
98
+ }) {
99
+ const {
100
+ uiSchema,
101
+ onChange,
102
+ value,
103
+ list,
104
+ selectIdentifier,
105
+ selectLabel,
106
+ searchPlaceholder,
107
+ searchResultLabel,
108
+ onValueChange,
109
+ badges,
110
+ customItemRenderer
111
+ } = props;
112
+ const uiOptions = uiSchema?.["ui:options"];
113
+ return /* @__PURE__ */ jsxs(
114
+ Command,
115
+ {
116
+ filter: (value2, search) => {
117
+ const filterResult = list?.find(
118
+ (i) => i[selectIdentifier].toString()?.toLocaleLowerCase() === value2.toLocaleLowerCase()
119
+ )?.[selectLabel];
120
+ if (value2.includes(search) || filterResult?.toLocaleLowerCase().includes(search.toLocaleLowerCase()))
121
+ return 1;
122
+ return 0;
123
+ },
124
+ children: [
125
+ /* @__PURE__ */ jsx(
126
+ CommandInput,
127
+ {
128
+ "data-testid": `${props.id}_search`,
129
+ placeholder: searchPlaceholder || "Search...",
130
+ className: "h-9"
131
+ }
132
+ ),
133
+ /* @__PURE__ */ jsxs(CommandList, { className: "w-full min-w-full max-w-full", children: [
134
+ /* @__PURE__ */ jsx(CommandEmpty, { children: searchResultLabel || "0 search result." }),
135
+ /* @__PURE__ */ jsx(CommandGroup, { children: list?.map((item, index) => /* @__PURE__ */ jsxs(
136
+ CommandItem,
137
+ {
138
+ "data-testid": `${props.id}_${index}`,
139
+ disabled: props.disabledItems?.includes(item[selectIdentifier]),
140
+ onSelect: () => {
141
+ onChange(
142
+ uiOptions?.allowEmpty !== false ? item[selectIdentifier] === value ? void 0 : item[selectIdentifier] : item[selectIdentifier]
143
+ );
144
+ if (onValueChange)
145
+ onValueChange(
146
+ list.find((i) => i[selectIdentifier] === value)
147
+ );
148
+ setOpen(false);
149
+ },
150
+ value: item[selectIdentifier],
151
+ children: [
152
+ item[selectIdentifier] === value && /* @__PURE__ */ jsx(CheckIcon, { className: cn("mr-2 h-4 w-4") }),
153
+ customItemRenderer ? customItemRenderer(item) : /* @__PURE__ */ jsxs(Fragment, { children: [
154
+ item[selectLabel],
155
+ badges && /* @__PURE__ */ jsx("div", { className: "ml-auto", children: Object.keys(badges).map((badgeKey) => {
156
+ const badgeOptions = badges[badgeKey];
157
+ if (!badgeOptions) return null;
158
+ return /* @__PURE__ */ jsxs(
159
+ Badge,
160
+ {
161
+ variant: "outline",
162
+ className: cn("ml-2", badgeOptions.className),
163
+ children: [
164
+ badgeOptions.showValue !== false && item[badgeKey],
165
+ badgeOptions.label && badgeOptions.label
166
+ ]
167
+ },
168
+ badgeKey
169
+ );
170
+ }) })
171
+ ] })
172
+ ]
173
+ },
174
+ JSON.stringify(item[selectIdentifier])
175
+ )) })
176
+ ] })
177
+ ]
178
+ }
179
+ );
180
+ }
181
+ function CustomComboboxWidget({
182
+ languageData,
183
+ selectLabel,
184
+ selectIdentifier,
185
+ list,
186
+ onChange,
187
+ disabledItems,
188
+ badges,
189
+ customItemRenderer
190
+ }) {
191
+ function Widget(props) {
192
+ const { uiSchema } = props;
193
+ const uiList = uiSchema?.["ui:optionList"];
194
+ return /* @__PURE__ */ jsx(
195
+ CustomCombobox,
196
+ {
197
+ ...props,
198
+ list: uiList || list,
199
+ onChange: (value) => {
200
+ props.onChange(value);
201
+ if (onChange) {
202
+ onChange(list.find((i) => i[selectIdentifier] === value));
203
+ }
204
+ },
205
+ customItemRenderer,
206
+ searchPlaceholder: languageData["Select.Placeholder"],
207
+ searchResultLabel: languageData["Select.ResultLabel"],
208
+ emptyValue: languageData["Select.EmptyValue"],
209
+ selectIdentifier,
210
+ selectLabel,
211
+ disabledItems,
212
+ badges
213
+ }
214
+ );
215
+ }
216
+ return Widget;
217
+ }
218
+ export {
219
+ CustomCombobox,
220
+ CustomComboboxWidget
221
+ };
222
+ //# sourceMappingURL=combobox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/custom/schema-form/widgets/combobox.tsx"],"sourcesContent":["import { ChevronsUpDown } from \"lucide-react\";\r\nimport { WidgetProps } from \"@rjsf/utils\";\r\nimport { CheckIcon } from \"lucide-react\";\r\nimport { Dispatch, ReactNode, SetStateAction, useState } from \"react\";\r\nimport { Badge } from \"@repo/ayasofyazilim-ui/components/badge\";\r\nimport { Button } from \"@repo/ayasofyazilim-ui/components/button\";\r\nimport {\r\n Command,\r\n CommandEmpty,\r\n CommandGroup,\r\n CommandInput,\r\n CommandItem,\r\n CommandList,\r\n} from \"@repo/ayasofyazilim-ui/components/command\";\r\nimport {\r\n Drawer,\r\n DrawerContent,\r\n DrawerTrigger,\r\n} from \"@repo/ayasofyazilim-ui/components/drawer\";\r\nimport {\r\n Popover,\r\n PopoverContent,\r\n PopoverTrigger,\r\n} from \"@repo/ayasofyazilim-ui/components/popover\";\r\nimport { useMediaQuery } from \"@repo/ayasofyazilim-ui/hooks/use-media-query\";\r\nimport { cn } from \"@repo/ayasofyazilim-ui/lib/utils\";\r\n\r\ntype BadgeOptions = { className?: string; showValue?: boolean; label?: string };\r\n\r\ntype CustomComboboxProps<T> = {\r\n emptyValue?: string;\r\n list: Array<T> | null | undefined;\r\n onValueChange?: Dispatch<SetStateAction<T | null | undefined>>;\r\n searchPlaceholder?: string;\r\n searchResultLabel?: string;\r\n selectIdentifier: keyof T;\r\n selectLabel: keyof T;\r\n disabledItems?: T[keyof T][];\r\n badges?: Partial<Record<keyof T, BadgeOptions>>;\r\n customItemRenderer?: (values: T) => ReactNode | undefined | string;\r\n} & WidgetProps;\r\n\r\nexport function CustomCombobox<T>(props: CustomComboboxProps<T>) {\r\n const {\r\n value,\r\n defaultValue,\r\n list,\r\n selectIdentifier,\r\n selectLabel,\r\n disabled,\r\n emptyValue = \"Please select\",\r\n } = props;\r\n const isDesktop = useMediaQuery(\"(min-width: 768px)\");\r\n const [open, setOpen] = useState(false);\r\n const fieldValue = value || defaultValue;\r\n const fieldValueDisplayName = list?.find(\r\n (x) => x[selectIdentifier] === fieldValue\r\n )?.[selectLabel];\r\n const DesktopContent = (\r\n <Popover open={open} onOpenChange={setOpen} modal>\r\n <PopoverTrigger\r\n asChild\r\n disabled={disabled}\r\n className={cn(disabled && \"cursor-not-allowed\")}\r\n >\r\n <Button\r\n id={props.id}\r\n data-testid={props.id}\r\n type=\"button\"\r\n variant=\"outline\"\r\n role=\"combobox\"\r\n className={cn(\r\n \"text-muted-foreground w-full justify-between font-normal shadow-xs hover:bg-white overflow-hidden\",\r\n fieldValueDisplayName && \"text-foreground\",\r\n disabled &&\r\n \"disabled:pointer-events-auto hover:bg-background hover:text-muted-foreground\"\r\n )}\r\n >\r\n <span className=\"truncate has-[role=dialog]:max-w-xs\">\r\n {typeof fieldValueDisplayName !== \"undefined\" &&\r\n fieldValueDisplayName !== null\r\n ? fieldValueDisplayName.toString()\r\n : emptyValue}\r\n </span>\r\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"p-0\">\r\n <List {...props} setOpen={setOpen} />\r\n </PopoverContent>\r\n </Popover>\r\n );\r\n\r\n const MobileContent = (\r\n <Drawer open={open} onOpenChange={setOpen}>\r\n <DrawerTrigger asChild>\r\n <Button\r\n data-testid={props.id}\r\n type=\"button\"\r\n disabled={disabled}\r\n variant=\"outline\"\r\n className={cn(\r\n \"text-muted-foreground w-full justify-between font-normal shadow-xs hover:bg-white\",\r\n fieldValueDisplayName && \"text-black\"\r\n )}\r\n >\r\n {fieldValueDisplayName\r\n ? fieldValueDisplayName.toString()\r\n : emptyValue}\r\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\r\n </Button>\r\n </DrawerTrigger>\r\n <DrawerContent>\r\n <div className=\"mt-4 border-t\">\r\n <List {...props} setOpen={setOpen} />\r\n </div>\r\n </DrawerContent>\r\n </Drawer>\r\n );\r\n\r\n return isDesktop ? DesktopContent : MobileContent;\r\n}\r\n\r\nfunction List<T>({\r\n setOpen,\r\n ...props\r\n}: CustomComboboxProps<T> & {\r\n setOpen: (open: boolean) => void;\r\n}) {\r\n const {\r\n uiSchema,\r\n onChange,\r\n value,\r\n list,\r\n selectIdentifier,\r\n selectLabel,\r\n searchPlaceholder,\r\n searchResultLabel,\r\n onValueChange,\r\n badges,\r\n customItemRenderer,\r\n } = props;\r\n const uiOptions = uiSchema?.[\"ui:options\"];\r\n return (\r\n <Command\r\n filter={(value, search) => {\r\n const filterResult = list?.find(\r\n (i) =>\r\n (i[selectIdentifier] as string).toString()?.toLocaleLowerCase() ===\r\n value.toLocaleLowerCase()\r\n )?.[selectLabel] as string;\r\n if (\r\n value.includes(search) ||\r\n filterResult?.toLocaleLowerCase().includes(search.toLocaleLowerCase())\r\n )\r\n return 1;\r\n return 0;\r\n }}\r\n >\r\n <CommandInput\r\n data-testid={`${props.id}_search`}\r\n placeholder={searchPlaceholder || \"Search...\"}\r\n className=\"h-9\"\r\n />\r\n <CommandList className=\"w-full min-w-full max-w-full\">\r\n <CommandEmpty>{searchResultLabel || \"0 search result.\"}</CommandEmpty>\r\n <CommandGroup>\r\n {list?.map((item: T, index) => (\r\n <CommandItem\r\n data-testid={`${props.id}_${index}`}\r\n disabled={props.disabledItems?.includes(item[selectIdentifier])}\r\n onSelect={() => {\r\n onChange(\r\n uiOptions?.allowEmpty !== false\r\n ? item[selectIdentifier] === value\r\n ? undefined\r\n : item[selectIdentifier]\r\n : item[selectIdentifier]\r\n );\r\n if (onValueChange)\r\n onValueChange(\r\n list.find((i) => i[selectIdentifier] === value)\r\n );\r\n setOpen(false);\r\n }}\r\n key={JSON.stringify(item[selectIdentifier])}\r\n value={item[selectIdentifier] as string}\r\n >\r\n {item[selectIdentifier] === value && (\r\n <CheckIcon className={cn(\"mr-2 h-4 w-4\")} />\r\n )}\r\n {customItemRenderer ? (\r\n customItemRenderer(item)\r\n ) : (\r\n <>\r\n {item[selectLabel] as string}\r\n {badges && (\r\n <div className=\"ml-auto\">\r\n {Object.keys(badges).map((badgeKey) => {\r\n const badgeOptions = badges[badgeKey as keyof T];\r\n if (!badgeOptions) return null;\r\n return (\r\n <Badge\r\n key={badgeKey}\r\n variant=\"outline\"\r\n className={cn(\"ml-2\", badgeOptions.className)}\r\n >\r\n {badgeOptions.showValue !== false &&\r\n (item[badgeKey as keyof T] as string)}\r\n {badgeOptions.label && badgeOptions.label}\r\n </Badge>\r\n );\r\n })}\r\n </div>\r\n )}\r\n </>\r\n )}\r\n </CommandItem>\r\n ))}\r\n </CommandGroup>\r\n </CommandList>\r\n </Command>\r\n );\r\n}\r\n\r\nexport function CustomComboboxWidget<T>({\r\n languageData,\r\n selectLabel,\r\n selectIdentifier,\r\n list,\r\n onChange,\r\n disabledItems,\r\n badges,\r\n customItemRenderer,\r\n}: {\r\n languageData: {\r\n \"Select.Placeholder\": string;\r\n \"Select.ResultLabel\": string;\r\n \"Select.EmptyValue\": string;\r\n };\r\n selectIdentifier: keyof T;\r\n selectLabel: keyof T;\r\n list: T[];\r\n onChange?: (value: T | null | undefined) => void;\r\n disabledItems?: T[keyof T][];\r\n badges?: CustomComboboxProps<T>[\"badges\"];\r\n customItemRenderer?: CustomComboboxProps<T>[\"customItemRenderer\"];\r\n}) {\r\n function Widget(props: WidgetProps) {\r\n const { uiSchema } = props;\r\n const uiList = uiSchema?.[\"ui:optionList\"];\r\n return (\r\n <CustomCombobox<T>\r\n {...props}\r\n list={uiList || list}\r\n onChange={(value) => {\r\n props.onChange(value);\r\n if (onChange) {\r\n onChange(list.find((i) => i[selectIdentifier] === value));\r\n }\r\n }}\r\n customItemRenderer={customItemRenderer}\r\n searchPlaceholder={languageData[\"Select.Placeholder\"]}\r\n searchResultLabel={languageData[\"Select.ResultLabel\"]}\r\n emptyValue={languageData[\"Select.EmptyValue\"]}\r\n selectIdentifier={selectIdentifier}\r\n selectLabel={selectLabel}\r\n disabledItems={disabledItems}\r\n badges={badges}\r\n />\r\n );\r\n }\r\n return Widget;\r\n}\r\n"],"mappings":"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","names":["value"]}