@j2-health/design-system 0.2.0 → 0.2.1

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 (310) hide show
  1. package/dist/index.cjs +96 -3614
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.js +48 -3551
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/AppConfigProvider.cjs +13 -0
  6. package/dist/src/AppConfigProvider.cjs.map +1 -0
  7. package/dist/src/AppConfigProvider.js +13 -0
  8. package/dist/src/AppConfigProvider.js.map +1 -0
  9. package/dist/src/appTheme.cjs +268 -0
  10. package/dist/src/appTheme.cjs.map +1 -0
  11. package/dist/src/appTheme.js +268 -0
  12. package/dist/src/appTheme.js.map +1 -0
  13. package/dist/src/components/alert/Alert.cjs +95 -0
  14. package/dist/src/components/alert/Alert.cjs.map +1 -0
  15. package/dist/src/components/alert/Alert.js +78 -0
  16. package/dist/src/components/alert/Alert.js.map +1 -0
  17. package/dist/src/components/alert/Alert.module.css.cjs +9 -0
  18. package/dist/src/components/alert/Alert.module.css.cjs.map +1 -0
  19. package/dist/src/components/alert/Alert.module.css.js +9 -0
  20. package/dist/src/components/alert/Alert.module.css.js.map +1 -0
  21. package/dist/src/components/barchart/BarChart.cjs +148 -0
  22. package/dist/src/components/barchart/BarChart.cjs.map +1 -0
  23. package/dist/src/components/barchart/BarChart.js +148 -0
  24. package/dist/src/components/barchart/BarChart.js.map +1 -0
  25. package/dist/src/components/barchart/chart.module.css.cjs +9 -0
  26. package/dist/src/components/barchart/chart.module.css.cjs.map +1 -0
  27. package/dist/src/components/barchart/chart.module.css.js +9 -0
  28. package/dist/src/components/barchart/chart.module.css.js.map +1 -0
  29. package/dist/src/components/breadcrumb/Breadcrumb.cjs +38 -0
  30. package/dist/src/components/breadcrumb/Breadcrumb.cjs.map +1 -0
  31. package/dist/src/components/breadcrumb/Breadcrumb.js +21 -0
  32. package/dist/src/components/breadcrumb/Breadcrumb.js.map +1 -0
  33. package/dist/src/components/bulkActionBar/BulkActionBar.cjs +81 -0
  34. package/dist/src/components/bulkActionBar/BulkActionBar.cjs.map +1 -0
  35. package/dist/src/components/bulkActionBar/BulkActionBar.js +81 -0
  36. package/dist/src/components/bulkActionBar/BulkActionBar.js.map +1 -0
  37. package/dist/src/components/button/Button.cjs +21 -0
  38. package/dist/src/components/button/Button.cjs.map +1 -0
  39. package/dist/src/components/button/Button.js +21 -0
  40. package/dist/src/components/button/Button.js.map +1 -0
  41. package/dist/src/components/card/Card.cjs +36 -0
  42. package/dist/src/components/card/Card.cjs.map +1 -0
  43. package/dist/src/components/card/Card.js +36 -0
  44. package/dist/src/components/card/Card.js.map +1 -0
  45. package/dist/src/components/checkbox/Checkbox.cjs +10 -0
  46. package/dist/src/components/checkbox/Checkbox.cjs.map +1 -0
  47. package/dist/src/components/checkbox/Checkbox.js +10 -0
  48. package/dist/src/components/checkbox/Checkbox.js.map +1 -0
  49. package/dist/src/components/checkboxTree/CheckboxTree.cjs +140 -0
  50. package/dist/src/components/checkboxTree/CheckboxTree.cjs.map +1 -0
  51. package/dist/src/components/checkboxTree/CheckboxTree.js +140 -0
  52. package/dist/src/components/checkboxTree/CheckboxTree.js.map +1 -0
  53. package/dist/src/components/checkboxTree/TreeNode.cjs +92 -0
  54. package/dist/src/components/checkboxTree/TreeNode.cjs.map +1 -0
  55. package/dist/src/components/checkboxTree/TreeNode.js +92 -0
  56. package/dist/src/components/checkboxTree/TreeNode.js.map +1 -0
  57. package/dist/src/components/checkboxTree/utils.cjs +59 -0
  58. package/dist/src/components/checkboxTree/utils.cjs.map +1 -0
  59. package/dist/src/components/checkboxTree/utils.js +59 -0
  60. package/dist/src/components/checkboxTree/utils.js.map +1 -0
  61. package/dist/src/components/collapse/Collapse.cjs +81 -0
  62. package/dist/src/components/collapse/Collapse.cjs.map +1 -0
  63. package/dist/src/components/collapse/Collapse.js +64 -0
  64. package/dist/src/components/collapse/Collapse.js.map +1 -0
  65. package/dist/src/components/collapse/Collapse.module.css.cjs +13 -0
  66. package/dist/src/components/collapse/Collapse.module.css.cjs.map +1 -0
  67. package/dist/src/components/collapse/Collapse.module.css.js +13 -0
  68. package/dist/src/components/collapse/Collapse.module.css.js.map +1 -0
  69. package/dist/src/components/drawer/Drawer.cjs +39 -0
  70. package/dist/src/components/drawer/Drawer.cjs.map +1 -0
  71. package/dist/src/components/drawer/Drawer.js +39 -0
  72. package/dist/src/components/drawer/Drawer.js.map +1 -0
  73. package/dist/src/components/dropdown/Dropdown.cjs +58 -0
  74. package/dist/src/components/dropdown/Dropdown.cjs.map +1 -0
  75. package/dist/src/components/dropdown/Dropdown.js +58 -0
  76. package/dist/src/components/dropdown/Dropdown.js.map +1 -0
  77. package/dist/src/components/filterform/FilterGroup.cjs +64 -0
  78. package/dist/src/components/filterform/FilterGroup.cjs.map +1 -0
  79. package/dist/src/components/filterform/FilterGroup.js +64 -0
  80. package/dist/src/components/filterform/FilterGroup.js.map +1 -0
  81. package/dist/src/components/filterform/FilterInput.cjs +175 -0
  82. package/dist/src/components/filterform/FilterInput.cjs.map +1 -0
  83. package/dist/src/components/filterform/FilterInput.js +158 -0
  84. package/dist/src/components/filterform/FilterInput.js.map +1 -0
  85. package/dist/src/components/filterform/FiltersForm.cjs +168 -0
  86. package/dist/src/components/filterform/FiltersForm.cjs.map +1 -0
  87. package/dist/src/components/filterform/FiltersForm.js +168 -0
  88. package/dist/src/components/filterform/FiltersForm.js.map +1 -0
  89. package/dist/src/components/filterform/FiltersForm.module.css.cjs +21 -0
  90. package/dist/src/components/filterform/FiltersForm.module.css.cjs.map +1 -0
  91. package/dist/src/components/filterform/FiltersForm.module.css.js +21 -0
  92. package/dist/src/components/filterform/FiltersForm.module.css.js.map +1 -0
  93. package/dist/src/components/filterform/filterHelpers.cjs +48 -0
  94. package/dist/src/components/filterform/filterHelpers.cjs.map +1 -0
  95. package/dist/src/components/filterform/filterHelpers.js +48 -0
  96. package/dist/src/components/filterform/filterHelpers.js.map +1 -0
  97. package/dist/src/components/filterform/useFilterField.cjs +210 -0
  98. package/dist/src/components/filterform/useFilterField.cjs.map +1 -0
  99. package/dist/src/components/filterform/useFilterField.js +193 -0
  100. package/dist/src/components/filterform/useFilterField.js.map +1 -0
  101. package/dist/src/components/filterform/useFiltersForm.cjs +160 -0
  102. package/dist/src/components/filterform/useFiltersForm.cjs.map +1 -0
  103. package/dist/src/components/filterform/useFiltersForm.js +160 -0
  104. package/dist/src/components/filterform/useFiltersForm.js.map +1 -0
  105. package/dist/src/components/form/Form.cjs +11 -0
  106. package/dist/src/components/form/Form.cjs.map +1 -0
  107. package/dist/src/components/form/Form.js +11 -0
  108. package/dist/src/components/form/Form.js.map +1 -0
  109. package/dist/src/components/icons/index.cjs +27 -0
  110. package/dist/src/components/icons/index.cjs.map +1 -0
  111. package/dist/src/components/icons/index.js +3 -0
  112. package/dist/src/components/icons/index.js.map +1 -0
  113. package/dist/src/components/input/AntdInput.cjs +13 -0
  114. package/dist/src/components/input/AntdInput.cjs.map +1 -0
  115. package/dist/src/components/input/AntdInput.js +13 -0
  116. package/dist/src/components/input/AntdInput.js.map +1 -0
  117. package/dist/src/components/input/AntdSearchInput.cjs +13 -0
  118. package/dist/src/components/input/AntdSearchInput.cjs.map +1 -0
  119. package/dist/src/components/input/AntdSearchInput.js +13 -0
  120. package/dist/src/components/input/AntdSearchInput.js.map +1 -0
  121. package/dist/src/components/input/Input.cjs +9 -0
  122. package/dist/src/components/input/Input.cjs.map +1 -0
  123. package/dist/src/components/input/Input.js +9 -0
  124. package/dist/src/components/input/Input.js.map +1 -0
  125. package/dist/src/components/inputnumber/InputNumber.cjs +32 -0
  126. package/dist/src/components/inputnumber/InputNumber.cjs.map +1 -0
  127. package/dist/src/components/inputnumber/InputNumber.js +32 -0
  128. package/dist/src/components/inputnumber/InputNumber.js.map +1 -0
  129. package/dist/src/components/inputnumber/InputNumber.module.css.cjs +9 -0
  130. package/dist/src/components/inputnumber/InputNumber.module.css.cjs.map +1 -0
  131. package/dist/src/components/inputnumber/InputNumber.module.css.js +9 -0
  132. package/dist/src/components/inputnumber/InputNumber.module.css.js.map +1 -0
  133. package/dist/src/components/legacyNavMenu/LegacyNavMenu.cjs +52 -0
  134. package/dist/src/components/legacyNavMenu/LegacyNavMenu.cjs.map +1 -0
  135. package/dist/src/components/legacyNavMenu/LegacyNavMenu.js +52 -0
  136. package/dist/src/components/legacyNavMenu/LegacyNavMenu.js.map +1 -0
  137. package/dist/src/components/legacyNavMenu/LegacyNavMenu.module.css.cjs +48 -0
  138. package/dist/src/components/legacyNavMenu/LegacyNavMenu.module.css.cjs.map +1 -0
  139. package/dist/src/components/legacyNavMenu/LegacyNavMenu.module.css.js +48 -0
  140. package/dist/src/components/legacyNavMenu/LegacyNavMenu.module.css.js.map +1 -0
  141. package/dist/src/components/legacyNavMenu/UserProfile.cjs +78 -0
  142. package/dist/src/components/legacyNavMenu/UserProfile.cjs.map +1 -0
  143. package/dist/src/components/legacyNavMenu/UserProfile.js +78 -0
  144. package/dist/src/components/legacyNavMenu/UserProfile.js.map +1 -0
  145. package/dist/src/components/legacyNavMenu/UserProfile.module.css.cjs +42 -0
  146. package/dist/src/components/legacyNavMenu/UserProfile.module.css.cjs.map +1 -0
  147. package/dist/src/components/legacyNavMenu/UserProfile.module.css.js +42 -0
  148. package/dist/src/components/legacyNavMenu/UserProfile.module.css.js.map +1 -0
  149. package/dist/src/components/listpopover/ListPopover.cjs +125 -0
  150. package/dist/src/components/listpopover/ListPopover.cjs.map +1 -0
  151. package/dist/src/components/listpopover/ListPopover.js +125 -0
  152. package/dist/src/components/listpopover/ListPopover.js.map +1 -0
  153. package/dist/src/components/listpopover/ListPopover.module.css.cjs +9 -0
  154. package/dist/src/components/listpopover/ListPopover.module.css.cjs.map +1 -0
  155. package/dist/src/components/listpopover/ListPopover.module.css.js +9 -0
  156. package/dist/src/components/listpopover/ListPopover.module.css.js.map +1 -0
  157. package/dist/src/components/menu/Menu.cjs +18 -0
  158. package/dist/src/components/menu/Menu.cjs.map +1 -0
  159. package/dist/src/components/menu/Menu.js +18 -0
  160. package/dist/src/components/menu/Menu.js.map +1 -0
  161. package/dist/src/components/menu/Menu.module.css.cjs +12 -0
  162. package/dist/src/components/menu/Menu.module.css.cjs.map +1 -0
  163. package/dist/src/components/menu/Menu.module.css.js +12 -0
  164. package/dist/src/components/menu/Menu.module.css.js.map +1 -0
  165. package/dist/src/components/message/Message.module.css.cjs +9 -0
  166. package/dist/src/components/message/Message.module.css.cjs.map +1 -0
  167. package/dist/src/components/message/Message.module.css.js +9 -0
  168. package/dist/src/components/message/Message.module.css.js.map +1 -0
  169. package/dist/src/components/message/useMessage.cjs +55 -0
  170. package/dist/src/components/message/useMessage.cjs.map +1 -0
  171. package/dist/src/components/message/useMessage.js +55 -0
  172. package/dist/src/components/message/useMessage.js.map +1 -0
  173. package/dist/src/components/modal/Modal.cjs +32 -0
  174. package/dist/src/components/modal/Modal.cjs.map +1 -0
  175. package/dist/src/components/modal/Modal.js +32 -0
  176. package/dist/src/components/modal/Modal.js.map +1 -0
  177. package/dist/src/components/navMenu/NavMenu.cjs +132 -0
  178. package/dist/src/components/navMenu/NavMenu.cjs.map +1 -0
  179. package/dist/src/components/navMenu/NavMenu.js +115 -0
  180. package/dist/src/components/navMenu/NavMenu.js.map +1 -0
  181. package/dist/src/components/navMenu/NavMenu.module.css.cjs +18 -0
  182. package/dist/src/components/navMenu/NavMenu.module.css.cjs.map +1 -0
  183. package/dist/src/components/navMenu/NavMenu.module.css.js +18 -0
  184. package/dist/src/components/navMenu/NavMenu.module.css.js.map +1 -0
  185. package/dist/src/components/notification/Notification.module.css.cjs +9 -0
  186. package/dist/src/components/notification/Notification.module.css.cjs.map +1 -0
  187. package/dist/src/components/notification/Notification.module.css.js +9 -0
  188. package/dist/src/components/notification/Notification.module.css.js.map +1 -0
  189. package/dist/src/components/notification/useNotification.cjs +52 -0
  190. package/dist/src/components/notification/useNotification.cjs.map +1 -0
  191. package/dist/src/components/notification/useNotification.js +52 -0
  192. package/dist/src/components/notification/useNotification.js.map +1 -0
  193. package/dist/src/components/notificationModal/NotifcationModal.module.css.cjs +21 -0
  194. package/dist/src/components/notificationModal/NotifcationModal.module.css.cjs.map +1 -0
  195. package/dist/src/components/notificationModal/NotifcationModal.module.css.js +21 -0
  196. package/dist/src/components/notificationModal/NotifcationModal.module.css.js.map +1 -0
  197. package/dist/src/components/notificationModal/NotificationModal.cjs +57 -0
  198. package/dist/src/components/notificationModal/NotificationModal.cjs.map +1 -0
  199. package/dist/src/components/notificationModal/NotificationModal.js +57 -0
  200. package/dist/src/components/notificationModal/NotificationModal.js.map +1 -0
  201. package/dist/src/components/pagination/Pagination.cjs +65 -0
  202. package/dist/src/components/pagination/Pagination.cjs.map +1 -0
  203. package/dist/src/components/pagination/Pagination.js +65 -0
  204. package/dist/src/components/pagination/Pagination.js.map +1 -0
  205. package/dist/src/components/pagination/Pagination.module.css.cjs +6 -0
  206. package/dist/src/components/pagination/Pagination.module.css.cjs.map +1 -0
  207. package/dist/src/components/pagination/Pagination.module.css.js +7 -0
  208. package/dist/src/components/pagination/Pagination.module.css.js.map +1 -0
  209. package/dist/src/components/popover/Popover.cjs +41 -0
  210. package/dist/src/components/popover/Popover.cjs.map +1 -0
  211. package/dist/src/components/popover/Popover.js +41 -0
  212. package/dist/src/components/popover/Popover.js.map +1 -0
  213. package/dist/src/components/popover/Popover.module.css.cjs +33 -0
  214. package/dist/src/components/popover/Popover.module.css.cjs.map +1 -0
  215. package/dist/src/components/popover/Popover.module.css.js +33 -0
  216. package/dist/src/components/popover/Popover.module.css.js.map +1 -0
  217. package/dist/src/components/progress/Progress.cjs +9 -0
  218. package/dist/src/components/progress/Progress.cjs.map +1 -0
  219. package/dist/src/components/progress/Progress.js +9 -0
  220. package/dist/src/components/progress/Progress.js.map +1 -0
  221. package/dist/src/components/radio/Radio.cjs +24 -0
  222. package/dist/src/components/radio/Radio.cjs.map +1 -0
  223. package/dist/src/components/radio/Radio.js +24 -0
  224. package/dist/src/components/radio/Radio.js.map +1 -0
  225. package/dist/src/components/rate/Rate.cjs +22 -0
  226. package/dist/src/components/rate/Rate.cjs.map +1 -0
  227. package/dist/src/components/rate/Rate.js +22 -0
  228. package/dist/src/components/rate/Rate.js.map +1 -0
  229. package/dist/src/components/select/AntdSelect.cjs +76 -0
  230. package/dist/src/components/select/AntdSelect.cjs.map +1 -0
  231. package/dist/src/components/select/AntdSelect.js +60 -0
  232. package/dist/src/components/select/AntdSelect.js.map +1 -0
  233. package/dist/src/components/select/Select.cjs +107 -0
  234. package/dist/src/components/select/Select.cjs.map +1 -0
  235. package/dist/src/components/select/Select.js +107 -0
  236. package/dist/src/components/select/Select.js.map +1 -0
  237. package/dist/src/components/select/SummarizedSelect.cjs +455 -0
  238. package/dist/src/components/select/SummarizedSelect.cjs.map +1 -0
  239. package/dist/src/components/select/SummarizedSelect.js +455 -0
  240. package/dist/src/components/select/SummarizedSelect.js.map +1 -0
  241. package/dist/src/components/select/SummarizedSelect.module.css.cjs +30 -0
  242. package/dist/src/components/select/SummarizedSelect.module.css.cjs.map +1 -0
  243. package/dist/src/components/select/SummarizedSelect.module.css.js +30 -0
  244. package/dist/src/components/select/SummarizedSelect.module.css.js.map +1 -0
  245. package/dist/src/components/skeleton/Skeleton.cjs +14 -0
  246. package/dist/src/components/skeleton/Skeleton.cjs.map +1 -0
  247. package/dist/src/components/skeleton/Skeleton.js +14 -0
  248. package/dist/src/components/skeleton/Skeleton.js.map +1 -0
  249. package/dist/src/components/spinner/Spinner.cjs +20 -0
  250. package/dist/src/components/spinner/Spinner.cjs.map +1 -0
  251. package/dist/src/components/spinner/Spinner.js +20 -0
  252. package/dist/src/components/spinner/Spinner.js.map +1 -0
  253. package/dist/src/components/steps/Steps.cjs +50 -0
  254. package/dist/src/components/steps/Steps.cjs.map +1 -0
  255. package/dist/src/components/steps/Steps.js +50 -0
  256. package/dist/src/components/steps/Steps.js.map +1 -0
  257. package/dist/src/components/steps/useSteps.cjs +56 -0
  258. package/dist/src/components/steps/useSteps.cjs.map +1 -0
  259. package/dist/src/components/steps/useSteps.js +56 -0
  260. package/dist/src/components/steps/useSteps.js.map +1 -0
  261. package/dist/src/components/switch/Switch.cjs +28 -0
  262. package/dist/src/components/switch/Switch.cjs.map +1 -0
  263. package/dist/src/components/switch/Switch.js +28 -0
  264. package/dist/src/components/switch/Switch.js.map +1 -0
  265. package/dist/src/components/table/Table.cjs +117 -0
  266. package/dist/src/components/table/Table.cjs.map +1 -0
  267. package/dist/src/components/table/Table.js +117 -0
  268. package/dist/src/components/table/Table.js.map +1 -0
  269. package/dist/src/components/table/Table.module.css.cjs +12 -0
  270. package/dist/src/components/table/Table.module.css.cjs.map +1 -0
  271. package/dist/src/components/table/Table.module.css.js +12 -0
  272. package/dist/src/components/table/Table.module.css.js.map +1 -0
  273. package/dist/src/components/tabs/Tabs.cjs +10 -0
  274. package/dist/src/components/tabs/Tabs.cjs.map +1 -0
  275. package/dist/src/components/tabs/Tabs.js +10 -0
  276. package/dist/src/components/tabs/Tabs.js.map +1 -0
  277. package/dist/src/components/tag/Tag.cjs +74 -0
  278. package/dist/src/components/tag/Tag.cjs.map +1 -0
  279. package/dist/src/components/tag/Tag.js +57 -0
  280. package/dist/src/components/tag/Tag.js.map +1 -0
  281. package/dist/src/components/tooltip/Tooltip.cjs +14 -0
  282. package/dist/src/components/tooltip/Tooltip.cjs.map +1 -0
  283. package/dist/src/components/tooltip/Tooltip.js +14 -0
  284. package/dist/src/components/tooltip/Tooltip.js.map +1 -0
  285. package/dist/src/components/vennDiagram/VennDiagram.cjs +47 -0
  286. package/dist/src/components/vennDiagram/VennDiagram.cjs.map +1 -0
  287. package/dist/src/components/vennDiagram/VennDiagram.js +47 -0
  288. package/dist/src/components/vennDiagram/VennDiagram.js.map +1 -0
  289. package/dist/src/svgs/ProgressCircle.svg.cjs +22 -0
  290. package/dist/src/svgs/ProgressCircle.svg.cjs.map +1 -0
  291. package/dist/src/svgs/ProgressCircle.svg.js +6 -0
  292. package/dist/src/svgs/ProgressCircle.svg.js.map +1 -0
  293. package/dist/src/svgs/j2-logo-menu-collapse.svg.cjs +22 -0
  294. package/dist/src/svgs/j2-logo-menu-collapse.svg.cjs.map +1 -0
  295. package/dist/src/svgs/j2-logo-menu-collapse.svg.js +6 -0
  296. package/dist/src/svgs/j2-logo-menu-collapse.svg.js.map +1 -0
  297. package/dist/src/svgs/j2-logo-menu.svg.cjs +22 -0
  298. package/dist/src/svgs/j2-logo-menu.svg.cjs.map +1 -0
  299. package/dist/src/svgs/j2-logo-menu.svg.js +6 -0
  300. package/dist/src/svgs/j2-logo-menu.svg.js.map +1 -0
  301. package/dist/src/svgs/menu-sidebar-collapse.svg.cjs +22 -0
  302. package/dist/src/svgs/menu-sidebar-collapse.svg.cjs.map +1 -0
  303. package/dist/src/svgs/menu-sidebar-collapse.svg.js +6 -0
  304. package/dist/src/svgs/menu-sidebar-collapse.svg.js.map +1 -0
  305. package/dist/src/svgs/menu-sidebar-expand.svg.cjs +22 -0
  306. package/dist/src/svgs/menu-sidebar-expand.svg.cjs.map +1 -0
  307. package/dist/src/svgs/menu-sidebar-expand.svg.js +6 -0
  308. package/dist/src/svgs/menu-sidebar-expand.svg.js.map +1 -0
  309. package/dist/style.css +646 -646
  310. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.js","sources":["../../../../src/components/drawer/Drawer.tsx"],"sourcesContent":["import { Drawer as AntdDrawer, DrawerProps, Space } from 'antd'\nimport { Button } from '../button'\nimport { XIcon } from '@phosphor-icons/react'\nimport './Drawer.css'\n\ntype AllProps = Omit<DrawerProps, 'extra' | 'closable'> & {\n fillPage?: boolean\n footer?: React.ReactNode\n extraContent?: React.ReactNode\n}\n\nexport type Props = Expand<AllProps>\n\nexport const Drawer = ({\n fillPage = false,\n footer,\n extraContent,\n ...props\n}: Props) => {\n return (\n <AntdDrawer\n {...props}\n closable={false}\n {...(fillPage && { height: '100vh', width: '100vw' })}\n {...(footer && { footer })}\n extra={\n <Space>\n {extraContent}\n <Button\n className=\"p-0\"\n type=\"link\"\n onClick={props.onClose}\n aria-label=\"Close\"\n >\n <XIcon size={22} weight=\"regular\" />\n </Button>\n </Space>\n }\n className=\"j2-drawer\"\n />\n )\n}\n"],"names":["AntdDrawer"],"mappings":";;;;;AAaO,MAAM,SAAS,CAAC;AAAA,EACrB,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAa;AACX,SACE;AAAA,IAACA;AAAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ,UAAU;AAAA,MACT,GAAI,YAAY,EAAE,QAAQ,SAAS,OAAO,QAAA;AAAA,MAC1C,GAAI,UAAU,EAAE,OAAA;AAAA,MACjB,4BACG,OAAA,EACE,UAAA;AAAA,QAAA;AAAA,QACD;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,MAAK;AAAA,YACL,SAAS,MAAM;AAAA,YACf,cAAW;AAAA,YAEX,UAAA,oBAAC,OAAA,EAAM,MAAM,IAAI,QAAO,UAAA,CAAU;AAAA,UAAA;AAAA,QAAA;AAAA,MACpC,GACF;AAAA,MAEF,WAAU;AAAA,IAAA;AAAA,EAAA;AAGhB;"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const antd = require("antd");
5
+ const cx = require("classnames");
6
+ const react = require("@phosphor-icons/react");
7
+ ;/* empty css */
8
+ const Button = require("../button/Button.cjs");
9
+ const { Link } = antd.Typography;
10
+ const LabelWithCaret = ({ label }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
11
+ label,
12
+ /* @__PURE__ */ jsxRuntime.jsx(react.CaretDownIcon, { weight: "regular" })
13
+ ] });
14
+ const Target = ({ label, type, disabled, icon, className }) => {
15
+ if (type === "basic-inline") {
16
+ return /* @__PURE__ */ jsxRuntime.jsx(Link, { disabled, className: cx("flex gap-1", className), children: icon ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
17
+ icon,
18
+ label
19
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(LabelWithCaret, { label }) });
20
+ }
21
+ return /* @__PURE__ */ jsxRuntime.jsx(Button.Button, { disabled, icon, className, children: icon ? label : /* @__PURE__ */ jsxRuntime.jsx(LabelWithCaret, { label }) });
22
+ };
23
+ const Dropdown = ({
24
+ label,
25
+ type,
26
+ icon,
27
+ menu,
28
+ menuType = "default",
29
+ targetClassName,
30
+ ...props
31
+ }) => {
32
+ let menuProp = menu;
33
+ if (menuType === "slim" && typeof menu === "object") {
34
+ menuProp = {
35
+ ...menu,
36
+ className: cx(menu.className, "j2-dropdown-slim-menu")
37
+ };
38
+ }
39
+ if (type === "twofold") {
40
+ return /* @__PURE__ */ jsxRuntime.jsx(antd.Dropdown.Button, { ...props, menu: menuProp, children: icon ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
41
+ icon,
42
+ " ",
43
+ label
44
+ ] }) : label });
45
+ }
46
+ return /* @__PURE__ */ jsxRuntime.jsx(antd.Dropdown, { ...props, menu: menuProp, children: /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(
47
+ Target,
48
+ {
49
+ label,
50
+ type,
51
+ disabled: props.disabled,
52
+ icon,
53
+ className: targetClassName
54
+ }
55
+ ) }) });
56
+ };
57
+ exports.Dropdown = Dropdown;
58
+ //# sourceMappingURL=Dropdown.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropdown.cjs","sources":["../../../../src/components/dropdown/Dropdown.tsx"],"sourcesContent":["import { Dropdown as AntdDropdown, DropdownProps, Typography } from 'antd'\nimport cx from 'classnames'\nimport { Button } from '../button'\nimport { CaretDownIcon } from '@phosphor-icons/react'\nimport './Dropdown.css'\n\nconst { Link } = Typography\n\nexport type Props = DropdownProps & {\n type?: 'basic' | 'basic-inline' | 'twofold'\n label?: string\n icon?: React.ReactNode\n menuType?: 'default' | 'slim'\n targetClassName?: string\n}\n\nexport type TargetProps = {\n label?: string\n type?: 'basic' | 'basic-inline' | 'twofold'\n disabled?: boolean\n icon?: React.ReactNode\n className?: string\n}\n\nconst LabelWithCaret = ({ label }: { label: string | undefined }) => (\n <div className=\"flex items-center gap-2\">\n {label}\n <CaretDownIcon weight=\"regular\" />\n </div>\n)\n\nconst Target = ({ label, type, disabled, icon, className }: TargetProps) => {\n if (type === 'basic-inline') {\n return (\n <Link disabled={disabled} className={cx('flex gap-1', className)}>\n {icon ? (\n <>\n {icon}\n {label}\n </>\n ) : (\n <LabelWithCaret label={label} />\n )}\n </Link>\n )\n }\n\n return (\n <Button disabled={disabled} icon={icon} className={className}>\n {icon ? label : <LabelWithCaret label={label} />}\n </Button>\n )\n}\n\nconst Dropdown = ({\n label,\n type,\n icon,\n menu,\n menuType = 'default',\n targetClassName,\n ...props\n}: Props) => {\n let menuProp = menu\n\n if (menuType === 'slim' && typeof menu === 'object') {\n menuProp = {\n ...menu,\n className: cx(menu.className, 'j2-dropdown-slim-menu'),\n }\n }\n\n if (type === 'twofold') {\n return (\n <AntdDropdown.Button {...props} menu={menuProp}>\n {icon ? (\n <>\n {icon} {label}\n </>\n ) : (\n label\n )}\n </AntdDropdown.Button>\n )\n }\n\n return (\n <AntdDropdown {...props} menu={menuProp}>\n <div>\n <Target\n label={label}\n type={type}\n disabled={props.disabled}\n icon={icon}\n className={targetClassName}\n />\n </div>\n </AntdDropdown>\n )\n}\n\nexport { Dropdown }\n"],"names":["Typography","jsxs","jsx","CaretDownIcon","Fragment","Button","AntdDropdown"],"mappings":";;;;;;;;AAMA,MAAM,EAAE,SAASA,KAAAA;AAkBjB,MAAM,iBAAiB,CAAC,EAAE,YACxBC,2BAAAA,KAAC,OAAA,EAAI,WAAU,2BACZ,UAAA;AAAA,EAAA;AAAA,EACDC,2BAAAA,IAACC,MAAAA,eAAA,EAAc,QAAO,UAAA,CAAU;AAAA,GAClC;AAGF,MAAM,SAAS,CAAC,EAAE,OAAO,MAAM,UAAU,MAAM,gBAA6B;AAC1E,MAAI,SAAS,gBAAgB;AAC3B,WACED,2BAAAA,IAAC,QAAK,UAAoB,WAAW,GAAG,cAAc,SAAS,GAC5D,UAAA,OACCD,2BAAAA,KAAAG,WAAAA,UAAA,EACG,UAAA;AAAA,MAAA;AAAA,MACA;AAAA,IAAA,EAAA,CACH,IAEAF,2BAAAA,IAAC,gBAAA,EAAe,MAAA,CAAc,EAAA,CAElC;AAAA,EAEJ;AAEA,SACEA,2BAAAA,IAACG,OAAAA,QAAA,EAAO,UAAoB,MAAY,WACrC,iBAAO,QAAQH,2BAAAA,IAAC,gBAAA,EAAe,MAAA,CAAc,EAAA,CAChD;AAEJ;AAEA,MAAM,WAAW,CAAC;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA,GAAG;AACL,MAAa;AACX,MAAI,WAAW;AAEf,MAAI,aAAa,UAAU,OAAO,SAAS,UAAU;AACnD,eAAW;AAAA,MACT,GAAG;AAAA,MACH,WAAW,GAAG,KAAK,WAAW,uBAAuB;AAAA,IAAA;AAAA,EAEzD;AAEA,MAAI,SAAS,WAAW;AACtB,WACEA,2BAAAA,IAACI,KAAAA,SAAa,QAAb,EAAqB,GAAG,OAAO,MAAM,UACnC,UAAA,OACCL,2BAAAA,KAAAG,WAAAA,UAAA,EACG,UAAA;AAAA,MAAA;AAAA,MAAK;AAAA,MAAE;AAAA,IAAA,EAAA,CACV,IAEA,OAEJ;AAAA,EAEJ;AAEA,wCACGE,KAAAA,UAAA,EAAc,GAAG,OAAO,MAAM,UAC7B,yCAAC,OAAA,EACC,UAAAJ,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,UAAU,MAAM;AAAA,MAChB;AAAA,MACA,WAAW;AAAA,IAAA;AAAA,EAAA,GAEf,EAAA,CACF;AAEJ;;"}
@@ -0,0 +1,58 @@
1
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
+ import { Dropdown as Dropdown$1, Typography } from "antd";
3
+ import cx from "classnames";
4
+ import { CaretDownIcon } from "@phosphor-icons/react";
5
+ /* empty css */
6
+ import { Button } from "../button/Button.js";
7
+ const { Link } = Typography;
8
+ const LabelWithCaret = ({ label }) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
9
+ label,
10
+ /* @__PURE__ */ jsx(CaretDownIcon, { weight: "regular" })
11
+ ] });
12
+ const Target = ({ label, type, disabled, icon, className }) => {
13
+ if (type === "basic-inline") {
14
+ return /* @__PURE__ */ jsx(Link, { disabled, className: cx("flex gap-1", className), children: icon ? /* @__PURE__ */ jsxs(Fragment, { children: [
15
+ icon,
16
+ label
17
+ ] }) : /* @__PURE__ */ jsx(LabelWithCaret, { label }) });
18
+ }
19
+ return /* @__PURE__ */ jsx(Button, { disabled, icon, className, children: icon ? label : /* @__PURE__ */ jsx(LabelWithCaret, { label }) });
20
+ };
21
+ const Dropdown = ({
22
+ label,
23
+ type,
24
+ icon,
25
+ menu,
26
+ menuType = "default",
27
+ targetClassName,
28
+ ...props
29
+ }) => {
30
+ let menuProp = menu;
31
+ if (menuType === "slim" && typeof menu === "object") {
32
+ menuProp = {
33
+ ...menu,
34
+ className: cx(menu.className, "j2-dropdown-slim-menu")
35
+ };
36
+ }
37
+ if (type === "twofold") {
38
+ return /* @__PURE__ */ jsx(Dropdown$1.Button, { ...props, menu: menuProp, children: icon ? /* @__PURE__ */ jsxs(Fragment, { children: [
39
+ icon,
40
+ " ",
41
+ label
42
+ ] }) : label });
43
+ }
44
+ return /* @__PURE__ */ jsx(Dropdown$1, { ...props, menu: menuProp, children: /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
45
+ Target,
46
+ {
47
+ label,
48
+ type,
49
+ disabled: props.disabled,
50
+ icon,
51
+ className: targetClassName
52
+ }
53
+ ) }) });
54
+ };
55
+ export {
56
+ Dropdown
57
+ };
58
+ //# sourceMappingURL=Dropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropdown.js","sources":["../../../../src/components/dropdown/Dropdown.tsx"],"sourcesContent":["import { Dropdown as AntdDropdown, DropdownProps, Typography } from 'antd'\nimport cx from 'classnames'\nimport { Button } from '../button'\nimport { CaretDownIcon } from '@phosphor-icons/react'\nimport './Dropdown.css'\n\nconst { Link } = Typography\n\nexport type Props = DropdownProps & {\n type?: 'basic' | 'basic-inline' | 'twofold'\n label?: string\n icon?: React.ReactNode\n menuType?: 'default' | 'slim'\n targetClassName?: string\n}\n\nexport type TargetProps = {\n label?: string\n type?: 'basic' | 'basic-inline' | 'twofold'\n disabled?: boolean\n icon?: React.ReactNode\n className?: string\n}\n\nconst LabelWithCaret = ({ label }: { label: string | undefined }) => (\n <div className=\"flex items-center gap-2\">\n {label}\n <CaretDownIcon weight=\"regular\" />\n </div>\n)\n\nconst Target = ({ label, type, disabled, icon, className }: TargetProps) => {\n if (type === 'basic-inline') {\n return (\n <Link disabled={disabled} className={cx('flex gap-1', className)}>\n {icon ? (\n <>\n {icon}\n {label}\n </>\n ) : (\n <LabelWithCaret label={label} />\n )}\n </Link>\n )\n }\n\n return (\n <Button disabled={disabled} icon={icon} className={className}>\n {icon ? label : <LabelWithCaret label={label} />}\n </Button>\n )\n}\n\nconst Dropdown = ({\n label,\n type,\n icon,\n menu,\n menuType = 'default',\n targetClassName,\n ...props\n}: Props) => {\n let menuProp = menu\n\n if (menuType === 'slim' && typeof menu === 'object') {\n menuProp = {\n ...menu,\n className: cx(menu.className, 'j2-dropdown-slim-menu'),\n }\n }\n\n if (type === 'twofold') {\n return (\n <AntdDropdown.Button {...props} menu={menuProp}>\n {icon ? (\n <>\n {icon} {label}\n </>\n ) : (\n label\n )}\n </AntdDropdown.Button>\n )\n }\n\n return (\n <AntdDropdown {...props} menu={menuProp}>\n <div>\n <Target\n label={label}\n type={type}\n disabled={props.disabled}\n icon={icon}\n className={targetClassName}\n />\n </div>\n </AntdDropdown>\n )\n}\n\nexport { Dropdown }\n"],"names":["AntdDropdown"],"mappings":";;;;;;AAMA,MAAM,EAAE,SAAS;AAkBjB,MAAM,iBAAiB,CAAC,EAAE,YACxB,qBAAC,OAAA,EAAI,WAAU,2BACZ,UAAA;AAAA,EAAA;AAAA,EACD,oBAAC,eAAA,EAAc,QAAO,UAAA,CAAU;AAAA,GAClC;AAGF,MAAM,SAAS,CAAC,EAAE,OAAO,MAAM,UAAU,MAAM,gBAA6B;AAC1E,MAAI,SAAS,gBAAgB;AAC3B,WACE,oBAAC,QAAK,UAAoB,WAAW,GAAG,cAAc,SAAS,GAC5D,UAAA,OACC,qBAAA,UAAA,EACG,UAAA;AAAA,MAAA;AAAA,MACA;AAAA,IAAA,EAAA,CACH,IAEA,oBAAC,gBAAA,EAAe,MAAA,CAAc,EAAA,CAElC;AAAA,EAEJ;AAEA,SACE,oBAAC,QAAA,EAAO,UAAoB,MAAY,WACrC,iBAAO,QAAQ,oBAAC,gBAAA,EAAe,MAAA,CAAc,EAAA,CAChD;AAEJ;AAEA,MAAM,WAAW,CAAC;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA,GAAG;AACL,MAAa;AACX,MAAI,WAAW;AAEf,MAAI,aAAa,UAAU,OAAO,SAAS,UAAU;AACnD,eAAW;AAAA,MACT,GAAG;AAAA,MACH,WAAW,GAAG,KAAK,WAAW,uBAAuB;AAAA,IAAA;AAAA,EAEzD;AAEA,MAAI,SAAS,WAAW;AACtB,WACE,oBAACA,WAAa,QAAb,EAAqB,GAAG,OAAO,MAAM,UACnC,UAAA,OACC,qBAAA,UAAA,EACG,UAAA;AAAA,MAAA;AAAA,MAAK;AAAA,MAAE;AAAA,IAAA,EAAA,CACV,IAEA,OAEJ;AAAA,EAEJ;AAEA,6BACGA,YAAA,EAAc,GAAG,OAAO,MAAM,UAC7B,8BAAC,OAAA,EACC,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,UAAU,MAAM;AAAA,MAChB;AAAA,MACA,WAAW;AAAA,IAAA;AAAA,EAAA,GAEf,EAAA,CACF;AAEJ;"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const react = require("@phosphor-icons/react");
5
+ const FilterInput = require("./FilterInput.cjs");
6
+ const cx = require("classnames");
7
+ const FiltersForm_module = require("./FiltersForm.module.css.cjs");
8
+ const Button = require("../button/Button.cjs");
9
+ const FilterGroup = ({
10
+ filterGroup,
11
+ groupIndex,
12
+ filterConfigs,
13
+ className,
14
+ onRemove,
15
+ onChange,
16
+ onDone
17
+ }) => {
18
+ return /* @__PURE__ */ jsxRuntime.jsx(
19
+ "div",
20
+ {
21
+ className: cx(
22
+ "flex flex-col gap-4",
23
+ {
24
+ [FiltersForm_module.default.filterFormGroupContainer]: filterGroup.filters.length > 1,
25
+ "p-3": filterGroup.filters.length > 1,
26
+ "pr-3": filterGroup.filters.length === 1
27
+ },
28
+ className
29
+ ),
30
+ children: filterGroup.filters.map((filter, filterIndex) => /* @__PURE__ */ jsxRuntime.jsxs(
31
+ "div",
32
+ {
33
+ className: "flex items-center justify-between",
34
+ children: [
35
+ filterIndex >= 1 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cx(FiltersForm_module.default.filterFormConjunction, "mr-3"), children: "and" }),
36
+ /* @__PURE__ */ jsxRuntime.jsx(
37
+ FilterInput.FilterInput,
38
+ {
39
+ value: filter,
40
+ filterConfigs,
41
+ className: "flex-1",
42
+ onChange: (filter2) => onChange(filter2, filterIndex),
43
+ onBlur: (filter2) => onDone(filter2, filterIndex)
44
+ },
45
+ `${groupIndex}:${filterIndex}`
46
+ ),
47
+ /* @__PURE__ */ jsxRuntime.jsx(
48
+ Button.Button,
49
+ {
50
+ type: "text",
51
+ icon: /* @__PURE__ */ jsxRuntime.jsx(react.TrashIcon, {}),
52
+ onClick: () => onRemove(filterIndex)
53
+ }
54
+ )
55
+ ]
56
+ },
57
+ `${groupIndex}:${filterIndex}-input-container`
58
+ ))
59
+ },
60
+ filterGroup.field
61
+ );
62
+ };
63
+ exports.FilterGroup = FilterGroup;
64
+ //# sourceMappingURL=FilterGroup.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterGroup.cjs","sources":["../../../../src/components/filterform/FilterGroup.tsx"],"sourcesContent":["import { Button } from '../button'\nimport { TrashIcon } from '@phosphor-icons/react'\nimport { FilterInput } from './FilterInput'\nimport cx from 'classnames'\nimport s from './FiltersForm.module.css'\nimport { FilterConfig } from '.'\nimport { FormFilter } from './types'\n\ntype FilterGroupProps = {\n filterGroup: {\n field: string\n filters: FormFilter[]\n }\n groupIndex: number\n filterConfigs: FilterConfig[]\n className?: string\n onRemove: (index: number) => void\n onChange: (filter: FormFilter, index: number) => void\n onDone: (filter: FormFilter, index: number) => void\n}\n\nexport const FilterGroup = ({\n filterGroup,\n groupIndex,\n filterConfigs,\n className,\n onRemove,\n onChange,\n onDone,\n}: FilterGroupProps) => {\n return (\n <div\n key={filterGroup.field}\n className={cx(\n 'flex flex-col gap-4',\n {\n [s.filterFormGroupContainer]: filterGroup.filters.length > 1,\n 'p-3': filterGroup.filters.length > 1,\n 'pr-3': filterGroup.filters.length === 1,\n },\n className\n )}\n >\n {filterGroup.filters.map((filter, filterIndex) => (\n <div\n key={`${groupIndex}:${filterIndex}-input-container`}\n className=\"flex items-center justify-between\"\n >\n {filterIndex >= 1 && (\n <span className={cx(s.filterFormConjunction, 'mr-3')}>and</span>\n )}\n <FilterInput\n key={`${groupIndex}:${filterIndex}`}\n value={filter}\n filterConfigs={filterConfigs}\n className=\"flex-1\"\n onChange={(filter) => onChange(filter, filterIndex)}\n onBlur={(filter) => onDone(filter, filterIndex)}\n />\n <Button\n type=\"text\"\n icon={<TrashIcon />}\n onClick={() => onRemove(filterIndex)}\n />\n </div>\n ))}\n </div>\n )\n}\n"],"names":["jsx","s","jsxs","FilterInput","filter","Button","TrashIcon"],"mappings":";;;;;;;;AAqBO,MAAM,cAAc,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAwB;AACtB,SACEA,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MAEC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,UACE,CAACC,mBAAAA,QAAE,wBAAwB,GAAG,YAAY,QAAQ,SAAS;AAAA,UAC3D,OAAO,YAAY,QAAQ,SAAS;AAAA,UACpC,QAAQ,YAAY,QAAQ,WAAW;AAAA,QAAA;AAAA,QAEzC;AAAA,MAAA;AAAA,MAGD,UAAA,YAAY,QAAQ,IAAI,CAAC,QAAQ,gBAChCC,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UAEC,WAAU;AAAA,UAET,UAAA;AAAA,YAAA,eAAe,oCACb,QAAA,EAAK,WAAW,GAAGD,mBAAAA,QAAE,uBAAuB,MAAM,GAAG,UAAA,MAAA,CAAG;AAAA,YAE3DD,2BAAAA;AAAAA,cAACG,YAAAA;AAAAA,cAAA;AAAA,gBAEC,OAAO;AAAA,gBACP;AAAA,gBACA,WAAU;AAAA,gBACV,UAAU,CAACC,YAAW,SAASA,SAAQ,WAAW;AAAA,gBAClD,QAAQ,CAACA,YAAW,OAAOA,SAAQ,WAAW;AAAA,cAAA;AAAA,cALzC,GAAG,UAAU,IAAI,WAAW;AAAA,YAAA;AAAA,YAOnCJ,2BAAAA;AAAAA,cAACK,OAAAA;AAAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,qCAAOC,MAAAA,WAAA,EAAU;AAAA,gBACjB,SAAS,MAAM,SAAS,WAAW;AAAA,cAAA;AAAA,YAAA;AAAA,UACrC;AAAA,QAAA;AAAA,QAlBK,GAAG,UAAU,IAAI,WAAW;AAAA,MAAA,CAoBpC;AAAA,IAAA;AAAA,IAjCI,YAAY;AAAA,EAAA;AAoCvB;;"}
@@ -0,0 +1,64 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { TrashIcon } from "@phosphor-icons/react";
3
+ import { FilterInput } from "./FilterInput.js";
4
+ import cx from "classnames";
5
+ import s from "./FiltersForm.module.css.js";
6
+ import { Button } from "../button/Button.js";
7
+ const FilterGroup = ({
8
+ filterGroup,
9
+ groupIndex,
10
+ filterConfigs,
11
+ className,
12
+ onRemove,
13
+ onChange,
14
+ onDone
15
+ }) => {
16
+ return /* @__PURE__ */ jsx(
17
+ "div",
18
+ {
19
+ className: cx(
20
+ "flex flex-col gap-4",
21
+ {
22
+ [s.filterFormGroupContainer]: filterGroup.filters.length > 1,
23
+ "p-3": filterGroup.filters.length > 1,
24
+ "pr-3": filterGroup.filters.length === 1
25
+ },
26
+ className
27
+ ),
28
+ children: filterGroup.filters.map((filter, filterIndex) => /* @__PURE__ */ jsxs(
29
+ "div",
30
+ {
31
+ className: "flex items-center justify-between",
32
+ children: [
33
+ filterIndex >= 1 && /* @__PURE__ */ jsx("span", { className: cx(s.filterFormConjunction, "mr-3"), children: "and" }),
34
+ /* @__PURE__ */ jsx(
35
+ FilterInput,
36
+ {
37
+ value: filter,
38
+ filterConfigs,
39
+ className: "flex-1",
40
+ onChange: (filter2) => onChange(filter2, filterIndex),
41
+ onBlur: (filter2) => onDone(filter2, filterIndex)
42
+ },
43
+ `${groupIndex}:${filterIndex}`
44
+ ),
45
+ /* @__PURE__ */ jsx(
46
+ Button,
47
+ {
48
+ type: "text",
49
+ icon: /* @__PURE__ */ jsx(TrashIcon, {}),
50
+ onClick: () => onRemove(filterIndex)
51
+ }
52
+ )
53
+ ]
54
+ },
55
+ `${groupIndex}:${filterIndex}-input-container`
56
+ ))
57
+ },
58
+ filterGroup.field
59
+ );
60
+ };
61
+ export {
62
+ FilterGroup
63
+ };
64
+ //# sourceMappingURL=FilterGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterGroup.js","sources":["../../../../src/components/filterform/FilterGroup.tsx"],"sourcesContent":["import { Button } from '../button'\nimport { TrashIcon } from '@phosphor-icons/react'\nimport { FilterInput } from './FilterInput'\nimport cx from 'classnames'\nimport s from './FiltersForm.module.css'\nimport { FilterConfig } from '.'\nimport { FormFilter } from './types'\n\ntype FilterGroupProps = {\n filterGroup: {\n field: string\n filters: FormFilter[]\n }\n groupIndex: number\n filterConfigs: FilterConfig[]\n className?: string\n onRemove: (index: number) => void\n onChange: (filter: FormFilter, index: number) => void\n onDone: (filter: FormFilter, index: number) => void\n}\n\nexport const FilterGroup = ({\n filterGroup,\n groupIndex,\n filterConfigs,\n className,\n onRemove,\n onChange,\n onDone,\n}: FilterGroupProps) => {\n return (\n <div\n key={filterGroup.field}\n className={cx(\n 'flex flex-col gap-4',\n {\n [s.filterFormGroupContainer]: filterGroup.filters.length > 1,\n 'p-3': filterGroup.filters.length > 1,\n 'pr-3': filterGroup.filters.length === 1,\n },\n className\n )}\n >\n {filterGroup.filters.map((filter, filterIndex) => (\n <div\n key={`${groupIndex}:${filterIndex}-input-container`}\n className=\"flex items-center justify-between\"\n >\n {filterIndex >= 1 && (\n <span className={cx(s.filterFormConjunction, 'mr-3')}>and</span>\n )}\n <FilterInput\n key={`${groupIndex}:${filterIndex}`}\n value={filter}\n filterConfigs={filterConfigs}\n className=\"flex-1\"\n onChange={(filter) => onChange(filter, filterIndex)}\n onBlur={(filter) => onDone(filter, filterIndex)}\n />\n <Button\n type=\"text\"\n icon={<TrashIcon />}\n onClick={() => onRemove(filterIndex)}\n />\n </div>\n ))}\n </div>\n )\n}\n"],"names":["filter"],"mappings":";;;;;;AAqBO,MAAM,cAAc,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAwB;AACtB,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MAEC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,UACE,CAAC,EAAE,wBAAwB,GAAG,YAAY,QAAQ,SAAS;AAAA,UAC3D,OAAO,YAAY,QAAQ,SAAS;AAAA,UACpC,QAAQ,YAAY,QAAQ,WAAW;AAAA,QAAA;AAAA,QAEzC;AAAA,MAAA;AAAA,MAGD,UAAA,YAAY,QAAQ,IAAI,CAAC,QAAQ,gBAChC;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,WAAU;AAAA,UAET,UAAA;AAAA,YAAA,eAAe,yBACb,QAAA,EAAK,WAAW,GAAG,EAAE,uBAAuB,MAAM,GAAG,UAAA,MAAA,CAAG;AAAA,YAE3D;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,OAAO;AAAA,gBACP;AAAA,gBACA,WAAU;AAAA,gBACV,UAAU,CAACA,YAAW,SAASA,SAAQ,WAAW;AAAA,gBAClD,QAAQ,CAACA,YAAW,OAAOA,SAAQ,WAAW;AAAA,cAAA;AAAA,cALzC,GAAG,UAAU,IAAI,WAAW;AAAA,YAAA;AAAA,YAOnC;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,0BAAO,WAAA,EAAU;AAAA,gBACjB,SAAS,MAAM,SAAS,WAAW;AAAA,cAAA;AAAA,YAAA;AAAA,UACrC;AAAA,QAAA;AAAA,QAlBK,GAAG,UAAU,IAAI,WAAW;AAAA,MAAA,CAoBpC;AAAA,IAAA;AAAA,IAjCI,YAAY;AAAA,EAAA;AAoCvB;"}
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const React = require("react");
5
+ const useFilterField = require("./useFilterField.cjs");
6
+ const antd = require("antd");
7
+ const cx = require("classnames");
8
+ function _interopNamespaceDefault(e) {
9
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
10
+ if (e) {
11
+ for (const k in e) {
12
+ if (k !== "default") {
13
+ const d = Object.getOwnPropertyDescriptor(e, k);
14
+ Object.defineProperty(n, k, d.get ? d : {
15
+ enumerable: true,
16
+ get: () => e[k]
17
+ });
18
+ }
19
+ }
20
+ }
21
+ n.default = e;
22
+ return Object.freeze(n);
23
+ }
24
+ const React__namespace = /* @__PURE__ */ _interopNamespaceDefault(React);
25
+ const FilterInput = ({
26
+ value,
27
+ filterConfigs,
28
+ onChange,
29
+ onBlur,
30
+ className,
31
+ size = "middle"
32
+ }) => {
33
+ const {
34
+ filter,
35
+ operatorOptions,
36
+ valueInputConfig,
37
+ handleFieldChange,
38
+ handleOperatorChange,
39
+ handleValuesChange
40
+ } = useFilterField.useFilterField({
41
+ filterConfigs,
42
+ filter: value
43
+ });
44
+ const fieldOptions = filterConfigs.map((config) => ({
45
+ label: config.label,
46
+ value: config.field,
47
+ disabled: config.disabled
48
+ }));
49
+ const handleBlur = () => {
50
+ if (filter) {
51
+ onBlur == null ? void 0 : onBlur(filter);
52
+ }
53
+ };
54
+ const isInitialMount = React__namespace.useRef(true);
55
+ const prevFilterRef = React__namespace.useRef(filter);
56
+ React__namespace.useEffect(() => {
57
+ if (isInitialMount.current) {
58
+ isInitialMount.current = false;
59
+ prevFilterRef.current = filter;
60
+ return;
61
+ }
62
+ if (filter && filter !== prevFilterRef.current) {
63
+ prevFilterRef.current = filter;
64
+ onChange == null ? void 0 : onChange(filter);
65
+ }
66
+ }, [filter, onChange]);
67
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cx("grid grid-cols-3 gap-2", className), children: [
68
+ /* @__PURE__ */ jsxRuntime.jsx(
69
+ antd.Select,
70
+ {
71
+ options: fieldOptions,
72
+ value: filter == null ? void 0 : filter.field,
73
+ showSearch: true,
74
+ optionFilterProp: "label",
75
+ onChange: handleFieldChange,
76
+ size
77
+ }
78
+ ),
79
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "col-span-2 flex gap-2", children: [
80
+ /* @__PURE__ */ jsxRuntime.jsx(
81
+ antd.Select,
82
+ {
83
+ options: operatorOptions,
84
+ value: filter == null ? void 0 : filter.operator,
85
+ onChange: handleOperatorChange,
86
+ onBlur: handleBlur,
87
+ size,
88
+ popupMatchSelectWidth: false
89
+ }
90
+ ),
91
+ valueInputConfig && /* @__PURE__ */ jsxRuntime.jsx(
92
+ ValueInput,
93
+ {
94
+ valueInputConfig,
95
+ values: filter == null ? void 0 : filter.values,
96
+ onChange: handleValuesChange,
97
+ onBlur: handleBlur,
98
+ size
99
+ }
100
+ )
101
+ ] })
102
+ ] });
103
+ };
104
+ const ValueInput = ({
105
+ valueInputConfig,
106
+ values,
107
+ onChange,
108
+ onBlur,
109
+ size
110
+ }) => {
111
+ const handleChange = (value) => {
112
+ if (value === null) {
113
+ onChange([]);
114
+ } else {
115
+ onChange([value]);
116
+ }
117
+ };
118
+ const handleNumberChange = (value, index) => {
119
+ const newValues = [
120
+ ...values ?? []
121
+ ];
122
+ newValues[index] = value;
123
+ onChange(newValues);
124
+ };
125
+ switch (valueInputConfig.type) {
126
+ case "select":
127
+ return /* @__PURE__ */ jsxRuntime.jsx(
128
+ antd.Select,
129
+ {
130
+ options: valueInputConfig.valueOptions,
131
+ onChange,
132
+ showSearch: true,
133
+ allowClear: true,
134
+ mode: "multiple",
135
+ onBlur,
136
+ value: values,
137
+ className: "w-full truncate",
138
+ size,
139
+ optionFilterProp: "label"
140
+ }
141
+ );
142
+ case "number":
143
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-2 grow", children: Array.from({ length: valueInputConfig.inputCount }).map(
144
+ (_, index) => /* @__PURE__ */ jsxRuntime.jsxs(React__namespace.Fragment, { children: [
145
+ index !== 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "my-auto", children: "and" }),
146
+ /* @__PURE__ */ jsxRuntime.jsx(
147
+ antd.InputNumber,
148
+ {
149
+ onChange: (value) => handleNumberChange(value, index),
150
+ onBlur,
151
+ value: values == null ? void 0 : values[index],
152
+ className: "basis-1/2",
153
+ size,
154
+ ...valueInputConfig.numberOptions ?? {}
155
+ }
156
+ )
157
+ ] }, `number-input-${index}`)
158
+ ) });
159
+ case "text":
160
+ return /* @__PURE__ */ jsxRuntime.jsx(
161
+ antd.Input,
162
+ {
163
+ onBlur,
164
+ value: (values == null ? void 0 : values[0]) ?? void 0,
165
+ onChange: (e) => handleChange(e.target.value),
166
+ className: "w-full",
167
+ size
168
+ }
169
+ );
170
+ default:
171
+ return null;
172
+ }
173
+ };
174
+ exports.FilterInput = FilterInput;
175
+ //# sourceMappingURL=FilterInput.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterInput.cjs","sources":["../../../../src/components/filterform/FilterInput.tsx"],"sourcesContent":["import * as React from 'react'\nimport { FilterConfig } from '.'\nimport { useFilterField } from './useFilterField'\nimport { Input, InputNumber, Select } from 'antd'\nimport { FormFilter } from './types'\nimport cx from 'classnames'\nimport { SizeType } from 'antd/es/config-provider/SizeContext'\n\ntype SelectValueInputConfig = {\n type: 'select'\n valueOptions: { label: string; value: string }[]\n}\n\ntype NumberValueInputConfig = {\n type: 'number'\n inputCount: number\n numberOptions?: { max: number; min: number; step: number }\n}\n\ntype TextValueInputConfig = {\n type: 'text'\n}\n\ntype ValueInputConfig =\n SelectValueInputConfig | NumberValueInputConfig | TextValueInputConfig\n\ntype FilterInputProps = {\n value?: FormFilter\n filterConfigs: FilterConfig[]\n onChange?: (value: FormFilter) => void\n onBlur?: (value: FormFilter) => void\n className?: string\n size?: SizeType\n}\n\nexport const FilterInput = ({\n value,\n filterConfigs,\n onChange,\n onBlur,\n className,\n size = 'middle',\n}: FilterInputProps) => {\n const {\n filter,\n operatorOptions,\n valueInputConfig,\n handleFieldChange,\n handleOperatorChange,\n handleValuesChange,\n } = useFilterField({\n filterConfigs,\n filter: value,\n })\n\n const fieldOptions = filterConfigs.map((config) => ({\n label: config.label,\n value: config.field,\n disabled: config.disabled,\n }))\n\n const handleBlur = () => {\n if (filter) {\n onBlur?.(filter)\n }\n }\n\n // Track if this is a user-driven change (not initialization)\n const isInitialMount = React.useRef(true)\n const prevFilterRef = React.useRef(filter)\n\n React.useEffect(() => {\n // Skip the initial mount to avoid calling onChange during initialization\n if (isInitialMount.current) {\n isInitialMount.current = false\n prevFilterRef.current = filter\n return\n }\n\n // Only call onChange if the filter actually changed\n if (filter && filter !== prevFilterRef.current) {\n prevFilterRef.current = filter\n onChange?.(filter)\n }\n }, [filter, onChange])\n\n return (\n <div className={cx('grid grid-cols-3 gap-2', className)}>\n <Select\n options={fieldOptions}\n value={filter?.field}\n showSearch\n optionFilterProp=\"label\"\n onChange={handleFieldChange}\n size={size}\n />\n <div className=\"col-span-2 flex gap-2\">\n <Select\n options={operatorOptions}\n value={filter?.operator}\n onChange={handleOperatorChange}\n onBlur={handleBlur}\n size={size}\n popupMatchSelectWidth={false}\n />\n {valueInputConfig && (\n <ValueInput\n valueInputConfig={valueInputConfig}\n values={filter?.values}\n onChange={handleValuesChange}\n onBlur={handleBlur}\n size={size}\n />\n )}\n </div>\n </div>\n )\n}\n\ntype ValueInputProps = {\n valueInputConfig: ValueInputConfig\n values?: (string | number | undefined | null)[]\n onChange: (value: (string | number | undefined | null)[]) => void\n onBlur: () => void\n size: SizeType\n}\n\nconst ValueInput = ({\n valueInputConfig,\n values,\n onChange,\n onBlur,\n size,\n}: ValueInputProps) => {\n const handleChange = (value: string | number | null) => {\n if (value === null) {\n onChange([])\n } else {\n onChange([value])\n }\n }\n\n const handleNumberChange = (value: string | number | null, index: number) => {\n const newValues: (string | number | undefined | null)[] = [\n ...(values ?? []),\n ]\n newValues[index] = value\n onChange(newValues)\n }\n\n switch (valueInputConfig.type) {\n case 'select':\n return (\n <Select\n options={valueInputConfig.valueOptions}\n onChange={onChange}\n showSearch\n allowClear\n mode=\"multiple\"\n onBlur={onBlur}\n value={values}\n className=\"w-full truncate\"\n size={size}\n optionFilterProp=\"label\"\n />\n )\n case 'number':\n return (\n <div className=\"flex gap-2 grow\">\n {Array.from({ length: valueInputConfig.inputCount }).map(\n (_, index) => (\n <React.Fragment key={`number-input-${index}`}>\n {index !== 0 && <span className=\"my-auto\">and</span>}\n <InputNumber\n onChange={(value) => handleNumberChange(value, index)}\n onBlur={onBlur}\n value={values?.[index]}\n className=\"basis-1/2\"\n size={size}\n {...(valueInputConfig.numberOptions ?? {})}\n />\n </React.Fragment>\n )\n )}\n </div>\n )\n case 'text':\n return (\n <Input\n onBlur={onBlur}\n value={values?.[0] ?? undefined}\n onChange={(e) => handleChange(e.target.value)}\n className=\"w-full\"\n size={size}\n />\n )\n default:\n return null\n }\n}\n"],"names":["useFilterField","React","jsx","Select","jsxs","InputNumber","Input"],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { useFilterField } from "./useFilterField.js";
4
+ import { Select, Input, InputNumber } from "antd";
5
+ import cx from "classnames";
6
+ const FilterInput = ({
7
+ value,
8
+ filterConfigs,
9
+ onChange,
10
+ onBlur,
11
+ className,
12
+ size = "middle"
13
+ }) => {
14
+ const {
15
+ filter,
16
+ operatorOptions,
17
+ valueInputConfig,
18
+ handleFieldChange,
19
+ handleOperatorChange,
20
+ handleValuesChange
21
+ } = useFilterField({
22
+ filterConfigs,
23
+ filter: value
24
+ });
25
+ const fieldOptions = filterConfigs.map((config) => ({
26
+ label: config.label,
27
+ value: config.field,
28
+ disabled: config.disabled
29
+ }));
30
+ const handleBlur = () => {
31
+ if (filter) {
32
+ onBlur == null ? void 0 : onBlur(filter);
33
+ }
34
+ };
35
+ const isInitialMount = React.useRef(true);
36
+ const prevFilterRef = React.useRef(filter);
37
+ React.useEffect(() => {
38
+ if (isInitialMount.current) {
39
+ isInitialMount.current = false;
40
+ prevFilterRef.current = filter;
41
+ return;
42
+ }
43
+ if (filter && filter !== prevFilterRef.current) {
44
+ prevFilterRef.current = filter;
45
+ onChange == null ? void 0 : onChange(filter);
46
+ }
47
+ }, [filter, onChange]);
48
+ return /* @__PURE__ */ jsxs("div", { className: cx("grid grid-cols-3 gap-2", className), children: [
49
+ /* @__PURE__ */ jsx(
50
+ Select,
51
+ {
52
+ options: fieldOptions,
53
+ value: filter == null ? void 0 : filter.field,
54
+ showSearch: true,
55
+ optionFilterProp: "label",
56
+ onChange: handleFieldChange,
57
+ size
58
+ }
59
+ ),
60
+ /* @__PURE__ */ jsxs("div", { className: "col-span-2 flex gap-2", children: [
61
+ /* @__PURE__ */ jsx(
62
+ Select,
63
+ {
64
+ options: operatorOptions,
65
+ value: filter == null ? void 0 : filter.operator,
66
+ onChange: handleOperatorChange,
67
+ onBlur: handleBlur,
68
+ size,
69
+ popupMatchSelectWidth: false
70
+ }
71
+ ),
72
+ valueInputConfig && /* @__PURE__ */ jsx(
73
+ ValueInput,
74
+ {
75
+ valueInputConfig,
76
+ values: filter == null ? void 0 : filter.values,
77
+ onChange: handleValuesChange,
78
+ onBlur: handleBlur,
79
+ size
80
+ }
81
+ )
82
+ ] })
83
+ ] });
84
+ };
85
+ const ValueInput = ({
86
+ valueInputConfig,
87
+ values,
88
+ onChange,
89
+ onBlur,
90
+ size
91
+ }) => {
92
+ const handleChange = (value) => {
93
+ if (value === null) {
94
+ onChange([]);
95
+ } else {
96
+ onChange([value]);
97
+ }
98
+ };
99
+ const handleNumberChange = (value, index) => {
100
+ const newValues = [
101
+ ...values ?? []
102
+ ];
103
+ newValues[index] = value;
104
+ onChange(newValues);
105
+ };
106
+ switch (valueInputConfig.type) {
107
+ case "select":
108
+ return /* @__PURE__ */ jsx(
109
+ Select,
110
+ {
111
+ options: valueInputConfig.valueOptions,
112
+ onChange,
113
+ showSearch: true,
114
+ allowClear: true,
115
+ mode: "multiple",
116
+ onBlur,
117
+ value: values,
118
+ className: "w-full truncate",
119
+ size,
120
+ optionFilterProp: "label"
121
+ }
122
+ );
123
+ case "number":
124
+ return /* @__PURE__ */ jsx("div", { className: "flex gap-2 grow", children: Array.from({ length: valueInputConfig.inputCount }).map(
125
+ (_, index) => /* @__PURE__ */ jsxs(React.Fragment, { children: [
126
+ index !== 0 && /* @__PURE__ */ jsx("span", { className: "my-auto", children: "and" }),
127
+ /* @__PURE__ */ jsx(
128
+ InputNumber,
129
+ {
130
+ onChange: (value) => handleNumberChange(value, index),
131
+ onBlur,
132
+ value: values == null ? void 0 : values[index],
133
+ className: "basis-1/2",
134
+ size,
135
+ ...valueInputConfig.numberOptions ?? {}
136
+ }
137
+ )
138
+ ] }, `number-input-${index}`)
139
+ ) });
140
+ case "text":
141
+ return /* @__PURE__ */ jsx(
142
+ Input,
143
+ {
144
+ onBlur,
145
+ value: (values == null ? void 0 : values[0]) ?? void 0,
146
+ onChange: (e) => handleChange(e.target.value),
147
+ className: "w-full",
148
+ size
149
+ }
150
+ );
151
+ default:
152
+ return null;
153
+ }
154
+ };
155
+ export {
156
+ FilterInput
157
+ };
158
+ //# sourceMappingURL=FilterInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterInput.js","sources":["../../../../src/components/filterform/FilterInput.tsx"],"sourcesContent":["import * as React from 'react'\nimport { FilterConfig } from '.'\nimport { useFilterField } from './useFilterField'\nimport { Input, InputNumber, Select } from 'antd'\nimport { FormFilter } from './types'\nimport cx from 'classnames'\nimport { SizeType } from 'antd/es/config-provider/SizeContext'\n\ntype SelectValueInputConfig = {\n type: 'select'\n valueOptions: { label: string; value: string }[]\n}\n\ntype NumberValueInputConfig = {\n type: 'number'\n inputCount: number\n numberOptions?: { max: number; min: number; step: number }\n}\n\ntype TextValueInputConfig = {\n type: 'text'\n}\n\ntype ValueInputConfig =\n SelectValueInputConfig | NumberValueInputConfig | TextValueInputConfig\n\ntype FilterInputProps = {\n value?: FormFilter\n filterConfigs: FilterConfig[]\n onChange?: (value: FormFilter) => void\n onBlur?: (value: FormFilter) => void\n className?: string\n size?: SizeType\n}\n\nexport const FilterInput = ({\n value,\n filterConfigs,\n onChange,\n onBlur,\n className,\n size = 'middle',\n}: FilterInputProps) => {\n const {\n filter,\n operatorOptions,\n valueInputConfig,\n handleFieldChange,\n handleOperatorChange,\n handleValuesChange,\n } = useFilterField({\n filterConfigs,\n filter: value,\n })\n\n const fieldOptions = filterConfigs.map((config) => ({\n label: config.label,\n value: config.field,\n disabled: config.disabled,\n }))\n\n const handleBlur = () => {\n if (filter) {\n onBlur?.(filter)\n }\n }\n\n // Track if this is a user-driven change (not initialization)\n const isInitialMount = React.useRef(true)\n const prevFilterRef = React.useRef(filter)\n\n React.useEffect(() => {\n // Skip the initial mount to avoid calling onChange during initialization\n if (isInitialMount.current) {\n isInitialMount.current = false\n prevFilterRef.current = filter\n return\n }\n\n // Only call onChange if the filter actually changed\n if (filter && filter !== prevFilterRef.current) {\n prevFilterRef.current = filter\n onChange?.(filter)\n }\n }, [filter, onChange])\n\n return (\n <div className={cx('grid grid-cols-3 gap-2', className)}>\n <Select\n options={fieldOptions}\n value={filter?.field}\n showSearch\n optionFilterProp=\"label\"\n onChange={handleFieldChange}\n size={size}\n />\n <div className=\"col-span-2 flex gap-2\">\n <Select\n options={operatorOptions}\n value={filter?.operator}\n onChange={handleOperatorChange}\n onBlur={handleBlur}\n size={size}\n popupMatchSelectWidth={false}\n />\n {valueInputConfig && (\n <ValueInput\n valueInputConfig={valueInputConfig}\n values={filter?.values}\n onChange={handleValuesChange}\n onBlur={handleBlur}\n size={size}\n />\n )}\n </div>\n </div>\n )\n}\n\ntype ValueInputProps = {\n valueInputConfig: ValueInputConfig\n values?: (string | number | undefined | null)[]\n onChange: (value: (string | number | undefined | null)[]) => void\n onBlur: () => void\n size: SizeType\n}\n\nconst ValueInput = ({\n valueInputConfig,\n values,\n onChange,\n onBlur,\n size,\n}: ValueInputProps) => {\n const handleChange = (value: string | number | null) => {\n if (value === null) {\n onChange([])\n } else {\n onChange([value])\n }\n }\n\n const handleNumberChange = (value: string | number | null, index: number) => {\n const newValues: (string | number | undefined | null)[] = [\n ...(values ?? []),\n ]\n newValues[index] = value\n onChange(newValues)\n }\n\n switch (valueInputConfig.type) {\n case 'select':\n return (\n <Select\n options={valueInputConfig.valueOptions}\n onChange={onChange}\n showSearch\n allowClear\n mode=\"multiple\"\n onBlur={onBlur}\n value={values}\n className=\"w-full truncate\"\n size={size}\n optionFilterProp=\"label\"\n />\n )\n case 'number':\n return (\n <div className=\"flex gap-2 grow\">\n {Array.from({ length: valueInputConfig.inputCount }).map(\n (_, index) => (\n <React.Fragment key={`number-input-${index}`}>\n {index !== 0 && <span className=\"my-auto\">and</span>}\n <InputNumber\n onChange={(value) => handleNumberChange(value, index)}\n onBlur={onBlur}\n value={values?.[index]}\n className=\"basis-1/2\"\n size={size}\n {...(valueInputConfig.numberOptions ?? {})}\n />\n </React.Fragment>\n )\n )}\n </div>\n )\n case 'text':\n return (\n <Input\n onBlur={onBlur}\n value={values?.[0] ?? undefined}\n onChange={(e) => handleChange(e.target.value)}\n className=\"w-full\"\n size={size}\n />\n )\n default:\n return null\n }\n}\n"],"names":[],"mappings":"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"}