@canlooks/can-ui 0.0.70 → 0.0.72

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 (392) hide show
  1. package/LICENSE +1 -1
  2. package/dist/cjs/components/actionSheet/actionSheet.js +9 -4
  3. package/dist/cjs/components/alert/alert.style.d.ts +2 -2
  4. package/dist/cjs/components/app/appDialog.js +28 -24
  5. package/dist/cjs/components/autocomplete/autocomplete.js +21 -27
  6. package/dist/cjs/components/avatar/avatar.d.ts +2 -2
  7. package/dist/cjs/components/avatar/avatar.js +6 -5
  8. package/dist/cjs/components/avatar/avatarGroup.js +1 -1
  9. package/dist/cjs/components/bubbleConfirm/bubbleConfirm.js +9 -2
  10. package/dist/cjs/components/bubbleConfirm/bubbleConfirm.style.d.ts +1 -1
  11. package/dist/cjs/components/calendar/calendar.style.js +124 -124
  12. package/dist/cjs/components/cascade/cascade.d.ts +2 -2
  13. package/dist/cjs/components/cascade/cascade.js +33 -21
  14. package/dist/cjs/components/cascade/cascadePanel.js +23 -13
  15. package/dist/cjs/components/checkboxBase/checkboxBase.d.ts +2 -2
  16. package/dist/cjs/components/checkboxBase/checkboxBase.js +9 -2
  17. package/dist/cjs/components/checkboxBase/checkboxBase.style.d.ts +1 -1
  18. package/dist/cjs/components/checkboxBaseGroup/checkboxBaseGroup.js +2 -2
  19. package/dist/cjs/components/clickAway/clickAway.d.ts +28 -28
  20. package/dist/cjs/components/colorPicker/colorPicker.d.ts +2 -2
  21. package/dist/cjs/components/colorPicker/colorPicker.js +2 -2
  22. package/dist/cjs/components/counter/counter.js +9 -10
  23. package/dist/cjs/components/curd/curd.d.ts +10 -12
  24. package/dist/cjs/components/curd/curd.js +38 -33
  25. package/dist/cjs/components/curd/curd.style.d.ts +2 -1
  26. package/dist/cjs/components/curd/curd.style.js +14 -4
  27. package/dist/cjs/components/curd/curdDialog.js +2 -1
  28. package/dist/cjs/components/curd/curdFilterable.d.ts +21 -0
  29. package/dist/cjs/components/curd/{curdFilter.js → curdFilterable.js} +19 -24
  30. package/dist/cjs/components/curd/index.d.ts +1 -1
  31. package/dist/cjs/components/curd/index.js +1 -1
  32. package/dist/cjs/components/dataGrid/columnResize.js +2 -2
  33. package/dist/cjs/components/dataGrid/dataGrid.d.ts +29 -12
  34. package/dist/cjs/components/dataGrid/dataGrid.js +46 -20
  35. package/dist/cjs/components/dataGrid/dataGrid.style.d.ts +5 -3
  36. package/dist/cjs/components/dataGrid/dataGrid.style.js +38 -33
  37. package/dist/cjs/components/dataGrid/dataGridHead.d.ts +4 -1
  38. package/dist/cjs/components/dataGrid/dataGridHead.js +28 -19
  39. package/dist/cjs/components/dataGrid/dataGridRows.js +1 -1
  40. package/dist/cjs/components/dataGrid/filterBubbleContent.d.ts +19 -0
  41. package/dist/cjs/components/dataGrid/filterBubbleContent.js +42 -0
  42. package/dist/cjs/components/dateTimePicker/dateTimePicker.d.ts +2 -2
  43. package/dist/cjs/components/dateTimePicker/dateTimePicker.js +27 -9
  44. package/dist/cjs/components/dateTimePicker/dateTimePicker.style.d.ts +1 -1
  45. package/dist/cjs/components/dateTimeRangePicker/dateTimeRangePicker.d.ts +4 -3
  46. package/dist/cjs/components/dateTimeRangePicker/dateTimeRangePicker.js +45 -23
  47. package/dist/cjs/components/descriptions/descriptions.js +2 -0
  48. package/dist/cjs/components/descriptions/descriptions.style.d.ts +1 -1
  49. package/dist/cjs/components/dialog/dialog.d.ts +1 -1
  50. package/dist/cjs/components/dialog/dialog.js +2 -2
  51. package/dist/cjs/components/dialog/dialog.style.d.ts +2 -2
  52. package/dist/cjs/components/draggable/draggable.d.ts +12 -2
  53. package/dist/cjs/components/draggable/draggable.js +34 -4
  54. package/dist/cjs/components/flex/flex.d.ts +7 -4
  55. package/dist/cjs/components/flex/flex.js +3 -3
  56. package/dist/cjs/components/form/form.d.ts +10 -5
  57. package/dist/cjs/components/form/form.js +45 -9
  58. package/dist/cjs/components/form/formItem.d.ts +12 -7
  59. package/dist/cjs/components/form/formItem.js +47 -33
  60. package/dist/cjs/components/form/formRelatable.js +2 -1
  61. package/dist/cjs/components/gallery/gallery.style.d.ts +1 -1
  62. package/dist/cjs/components/gallery/imageItem.js +1 -1
  63. package/dist/cjs/components/grid/grid.d.ts +5 -5
  64. package/dist/cjs/components/grid/gridItem.d.ts +8 -7
  65. package/dist/cjs/components/grid/gridItem.js +2 -3
  66. package/dist/cjs/components/image/image.d.ts +4 -4
  67. package/dist/cjs/components/input/input.d.ts +2 -2
  68. package/dist/cjs/components/input/input.js +9 -2
  69. package/dist/cjs/components/inputBase/inputBase.d.ts +16 -11
  70. package/dist/cjs/components/inputBase/inputBase.js +23 -12
  71. package/dist/cjs/components/loading/loading.d.ts +3 -1
  72. package/dist/cjs/components/loading/loading.js +2 -2
  73. package/dist/cjs/components/loading/loading.style.js +4 -3
  74. package/dist/cjs/components/loadingIndicator/loadingIndicator.d.ts +4 -2
  75. package/dist/cjs/components/loadingIndicator/loadingIndicator.js +2 -2
  76. package/dist/cjs/components/loadingIndicator/loadingIndicator.style.d.ts +1 -1
  77. package/dist/cjs/components/loadingIndicator/loadingIndicator.style.js +1 -2
  78. package/dist/cjs/components/loadingMask/loadingMask.js +1 -1
  79. package/dist/cjs/components/menu/menu.js +1 -1
  80. package/dist/cjs/components/menuItem/menuItem.d.ts +2 -2
  81. package/dist/cjs/components/optionsBase/optionsBase.js +1 -0
  82. package/dist/cjs/components/overlayBase/overlayBase.js +9 -6
  83. package/dist/cjs/components/overlayBase/overlayBase.style.js +0 -3
  84. package/dist/cjs/components/palette/palette.style.d.ts +1 -1
  85. package/dist/cjs/components/pickerDialog/pickerDialog.js +20 -7
  86. package/dist/cjs/components/pickerDialog/pickerDialog.style.d.ts +1 -1
  87. package/dist/cjs/components/popper/popper.d.ts +5 -2
  88. package/dist/cjs/components/popper/popper.js +31 -12
  89. package/dist/cjs/components/popper/popper.style.js +1 -2
  90. package/dist/cjs/components/progress/progress.js +1 -1
  91. package/dist/cjs/components/resizable/resizable.style.d.ts +1 -1
  92. package/dist/cjs/components/segmented/segmented.style.d.ts +1 -1
  93. package/dist/cjs/components/select/select.d.ts +2 -2
  94. package/dist/cjs/components/select/select.js +44 -20
  95. package/dist/cjs/components/selectedList/selectedItem.d.ts +1 -1
  96. package/dist/cjs/components/selectedList/selectedItem.js +2 -2
  97. package/dist/cjs/components/selectionContext/selectionContext.d.ts +0 -1
  98. package/dist/cjs/components/selectionContext/selectionHook.d.ts +1 -1
  99. package/dist/cjs/components/selectionContext/selectionHook.js +2 -2
  100. package/dist/cjs/components/serialInput/index.d.ts +1 -0
  101. package/dist/cjs/components/serialInput/index.js +4 -0
  102. package/dist/cjs/components/serialInput/serialInput.d.ts +21 -0
  103. package/dist/cjs/components/serialInput/serialInput.js +58 -0
  104. package/dist/cjs/components/serialInput/serialInput.style.d.ts +6 -0
  105. package/dist/cjs/components/serialInput/serialInput.style.js +13 -0
  106. package/dist/cjs/components/skeleton/skeleton.d.ts +2 -2
  107. package/dist/cjs/components/slidableActions/slidableActionsAction.js +15 -6
  108. package/dist/cjs/components/slider/slider.d.ts +2 -2
  109. package/dist/cjs/components/slider/slider.js +15 -21
  110. package/dist/cjs/components/snackbarBase/snackbarBase.style.d.ts +1 -1
  111. package/dist/cjs/components/snackbarBase/snackbarBase.style.js +1 -3
  112. package/dist/cjs/components/sortableItem/sortableItem.js +9 -10
  113. package/dist/cjs/components/status/status.d.ts +6 -6
  114. package/dist/cjs/components/switch/switch.d.ts +2 -2
  115. package/dist/cjs/components/table/table.d.ts +3 -3
  116. package/dist/cjs/components/table/table.style.d.ts +1 -1
  117. package/dist/cjs/components/table/tableSticky.d.ts +5 -5
  118. package/dist/cjs/components/table/tableSticky.js +4 -4
  119. package/dist/cjs/components/tabs/tabs.style.d.ts +3 -3
  120. package/dist/cjs/components/tag/tag.d.ts +1 -1
  121. package/dist/cjs/components/tag/tag.js +2 -1
  122. package/dist/cjs/components/tag/tag.style.d.ts +1 -1
  123. package/dist/cjs/components/textarea/textarea.d.ts +2 -2
  124. package/dist/cjs/components/textarea/textarea.js +5 -1
  125. package/dist/cjs/components/toggleButton/toggleButton.js +1 -1
  126. package/dist/cjs/components/transfer/transfer.style.d.ts +2 -2
  127. package/dist/cjs/components/transitionBase/collapse.js +36 -14
  128. package/dist/cjs/components/transitionBase/transitionBase.js +1 -1
  129. package/dist/cjs/components/transitionBase/transitionBase.style.js +1 -1
  130. package/dist/cjs/components/transportStyle/transportStyle.d.ts +1 -1
  131. package/dist/cjs/components/transportStyle/transportStyle.js +2 -3
  132. package/dist/cjs/components/tree/tree.d.ts +17 -4
  133. package/dist/cjs/components/tree/tree.js +15 -14
  134. package/dist/cjs/components/tree/tree.style.d.ts +9 -3
  135. package/dist/cjs/components/tree/tree.style.js +135 -4
  136. package/dist/cjs/components/tree/treeDnd.d.ts +25 -0
  137. package/dist/cjs/components/tree/treeDnd.js +23 -0
  138. package/dist/cjs/components/tree/treeNode.d.ts +2 -2
  139. package/dist/cjs/components/tree/treeNode.js +94 -16
  140. package/dist/cjs/components/treeSelect/treeSelect.d.ts +2 -2
  141. package/dist/cjs/components/treeSelect/treeSelect.js +3 -3
  142. package/dist/cjs/components/upload/upload.d.ts +2 -2
  143. package/dist/cjs/components/upload/upload.js +5 -2
  144. package/dist/cjs/components/upload/upload.style.d.ts +2 -2
  145. package/dist/cjs/extensions/curd/curd.d.ts +20 -0
  146. package/dist/cjs/extensions/curd/curd.js +20 -0
  147. package/dist/cjs/extensions/documentViewer/pdfViewer.d.ts +2 -2
  148. package/dist/cjs/extensions/reactiveForm/index.d.ts +2 -0
  149. package/dist/cjs/extensions/reactiveForm/index.js +5 -0
  150. package/dist/cjs/extensions/reactiveForm/reactiveForm.d.ts +40 -0
  151. package/dist/cjs/extensions/reactiveForm/reactiveForm.js +50 -0
  152. package/dist/cjs/extensions/reactiveForm/reactiveFormItem.d.ts +7 -0
  153. package/dist/cjs/extensions/reactiveForm/reactiveFormItem.js +39 -0
  154. package/dist/cjs/index.d.ts +1 -0
  155. package/dist/cjs/index.js +1 -0
  156. package/dist/cjs/types.d.ts +2 -2
  157. package/dist/cjs/utils/curd.js +5 -2
  158. package/dist/cjs/utils/dataGrid.d.ts +3 -2
  159. package/dist/cjs/utils/hooks.js +3 -3
  160. package/dist/cjs/utils/index.d.ts +2 -2
  161. package/dist/cjs/utils/index.js +2 -2
  162. package/dist/cjs/utils/utils.d.ts +17 -9
  163. package/dist/cjs/utils/utils.js +59 -16
  164. package/dist/esm/components/actionSheet/actionSheet.js +10 -5
  165. package/dist/esm/components/alert/alert.style.d.ts +2 -2
  166. package/dist/esm/components/app/appDialog.js +28 -24
  167. package/dist/esm/components/autocomplete/autocomplete.js +22 -28
  168. package/dist/esm/components/avatar/avatar.d.ts +2 -2
  169. package/dist/esm/components/avatar/avatar.js +7 -6
  170. package/dist/esm/components/avatar/avatarGroup.js +1 -1
  171. package/dist/esm/components/bubbleConfirm/bubbleConfirm.js +10 -3
  172. package/dist/esm/components/bubbleConfirm/bubbleConfirm.style.d.ts +1 -1
  173. package/dist/esm/components/calendar/calendar.style.js +124 -124
  174. package/dist/esm/components/cascade/cascade.d.ts +2 -2
  175. package/dist/esm/components/cascade/cascade.js +34 -22
  176. package/dist/esm/components/cascade/cascadePanel.js +24 -14
  177. package/dist/esm/components/checkboxBase/checkboxBase.d.ts +2 -2
  178. package/dist/esm/components/checkboxBase/checkboxBase.js +10 -3
  179. package/dist/esm/components/checkboxBase/checkboxBase.style.d.ts +1 -1
  180. package/dist/esm/components/checkboxBaseGroup/checkboxBaseGroup.js +3 -3
  181. package/dist/esm/components/clickAway/clickAway.d.ts +28 -28
  182. package/dist/esm/components/colorPicker/colorPicker.d.ts +2 -2
  183. package/dist/esm/components/colorPicker/colorPicker.js +3 -3
  184. package/dist/esm/components/counter/counter.js +10 -11
  185. package/dist/esm/components/curd/curd.d.ts +10 -12
  186. package/dist/esm/components/curd/curd.js +39 -34
  187. package/dist/esm/components/curd/curd.style.d.ts +2 -1
  188. package/dist/esm/components/curd/curd.style.js +14 -4
  189. package/dist/esm/components/curd/curdDialog.js +2 -1
  190. package/dist/esm/components/curd/curdFilterable.d.ts +21 -0
  191. package/dist/esm/components/curd/{curdFilter.js → curdFilterable.js} +20 -25
  192. package/dist/esm/components/curd/index.d.ts +1 -1
  193. package/dist/esm/components/curd/index.js +1 -1
  194. package/dist/esm/components/dataGrid/columnResize.js +3 -3
  195. package/dist/esm/components/dataGrid/dataGrid.d.ts +29 -12
  196. package/dist/esm/components/dataGrid/dataGrid.js +48 -22
  197. package/dist/esm/components/dataGrid/dataGrid.style.d.ts +5 -3
  198. package/dist/esm/components/dataGrid/dataGrid.style.js +38 -33
  199. package/dist/esm/components/dataGrid/dataGridHead.d.ts +4 -1
  200. package/dist/esm/components/dataGrid/dataGridHead.js +29 -20
  201. package/dist/esm/components/dataGrid/dataGridRows.js +1 -1
  202. package/dist/esm/components/dataGrid/filterBubbleContent.d.ts +19 -0
  203. package/dist/esm/components/dataGrid/filterBubbleContent.js +39 -0
  204. package/dist/esm/components/dateTimePicker/dateTimePicker.d.ts +2 -2
  205. package/dist/esm/components/dateTimePicker/dateTimePicker.js +28 -10
  206. package/dist/esm/components/dateTimePicker/dateTimePicker.style.d.ts +1 -1
  207. package/dist/esm/components/dateTimeRangePicker/dateTimeRangePicker.d.ts +4 -3
  208. package/dist/esm/components/dateTimeRangePicker/dateTimeRangePicker.js +46 -24
  209. package/dist/esm/components/descriptions/descriptions.js +2 -0
  210. package/dist/esm/components/descriptions/descriptions.style.d.ts +1 -1
  211. package/dist/esm/components/dialog/dialog.d.ts +1 -1
  212. package/dist/esm/components/dialog/dialog.js +2 -2
  213. package/dist/esm/components/dialog/dialog.style.d.ts +2 -2
  214. package/dist/esm/components/draggable/draggable.d.ts +12 -2
  215. package/dist/esm/components/draggable/draggable.js +35 -5
  216. package/dist/esm/components/flex/flex.d.ts +7 -4
  217. package/dist/esm/components/flex/flex.js +2 -2
  218. package/dist/esm/components/form/form.d.ts +10 -5
  219. package/dist/esm/components/form/form.js +43 -9
  220. package/dist/esm/components/form/formItem.d.ts +12 -7
  221. package/dist/esm/components/form/formItem.js +49 -35
  222. package/dist/esm/components/form/formRelatable.js +3 -2
  223. package/dist/esm/components/gallery/gallery.style.d.ts +1 -1
  224. package/dist/esm/components/gallery/imageItem.js +1 -1
  225. package/dist/esm/components/grid/grid.d.ts +5 -5
  226. package/dist/esm/components/grid/gridItem.d.ts +8 -7
  227. package/dist/esm/components/grid/gridItem.js +2 -2
  228. package/dist/esm/components/image/image.d.ts +4 -4
  229. package/dist/esm/components/input/input.d.ts +2 -2
  230. package/dist/esm/components/input/input.js +10 -3
  231. package/dist/esm/components/inputBase/inputBase.d.ts +16 -11
  232. package/dist/esm/components/inputBase/inputBase.js +25 -14
  233. package/dist/esm/components/loading/loading.d.ts +3 -1
  234. package/dist/esm/components/loading/loading.js +2 -2
  235. package/dist/esm/components/loading/loading.style.js +4 -3
  236. package/dist/esm/components/loadingIndicator/loadingIndicator.d.ts +4 -2
  237. package/dist/esm/components/loadingIndicator/loadingIndicator.js +2 -2
  238. package/dist/esm/components/loadingIndicator/loadingIndicator.style.d.ts +1 -1
  239. package/dist/esm/components/loadingIndicator/loadingIndicator.style.js +1 -2
  240. package/dist/esm/components/loadingMask/loadingMask.js +1 -1
  241. package/dist/esm/components/menu/menu.js +2 -2
  242. package/dist/esm/components/menuItem/menuItem.d.ts +2 -2
  243. package/dist/esm/components/optionsBase/optionsBase.js +1 -0
  244. package/dist/esm/components/overlayBase/overlayBase.js +10 -7
  245. package/dist/esm/components/overlayBase/overlayBase.style.js +0 -3
  246. package/dist/esm/components/palette/palette.style.d.ts +1 -1
  247. package/dist/esm/components/pickerDialog/pickerDialog.js +21 -8
  248. package/dist/esm/components/pickerDialog/pickerDialog.style.d.ts +1 -1
  249. package/dist/esm/components/popper/popper.d.ts +5 -2
  250. package/dist/esm/components/popper/popper.js +31 -12
  251. package/dist/esm/components/popper/popper.style.js +1 -2
  252. package/dist/esm/components/progress/progress.js +1 -1
  253. package/dist/esm/components/resizable/resizable.style.d.ts +1 -1
  254. package/dist/esm/components/segmented/segmented.style.d.ts +1 -1
  255. package/dist/esm/components/select/select.d.ts +2 -2
  256. package/dist/esm/components/select/select.js +46 -22
  257. package/dist/esm/components/selectedList/selectedItem.d.ts +1 -1
  258. package/dist/esm/components/selectedList/selectedItem.js +2 -2
  259. package/dist/esm/components/selectionContext/selectionContext.d.ts +0 -1
  260. package/dist/esm/components/selectionContext/selectionHook.d.ts +1 -1
  261. package/dist/esm/components/selectionContext/selectionHook.js +1 -1
  262. package/dist/esm/components/serialInput/index.d.ts +1 -0
  263. package/dist/esm/components/serialInput/index.js +1 -0
  264. package/dist/esm/components/serialInput/serialInput.d.ts +21 -0
  265. package/dist/esm/components/serialInput/serialInput.js +55 -0
  266. package/dist/esm/components/serialInput/serialInput.style.d.ts +6 -0
  267. package/dist/esm/components/serialInput/serialInput.style.js +10 -0
  268. package/dist/esm/components/skeleton/skeleton.d.ts +2 -2
  269. package/dist/esm/components/slidableActions/slidableActionsAction.js +16 -7
  270. package/dist/esm/components/slider/slider.d.ts +2 -2
  271. package/dist/esm/components/slider/slider.js +16 -22
  272. package/dist/esm/components/snackbarBase/snackbarBase.style.d.ts +1 -1
  273. package/dist/esm/components/snackbarBase/snackbarBase.style.js +1 -3
  274. package/dist/esm/components/sortableItem/sortableItem.js +10 -11
  275. package/dist/esm/components/status/status.d.ts +6 -6
  276. package/dist/esm/components/switch/switch.d.ts +2 -2
  277. package/dist/esm/components/table/table.d.ts +3 -3
  278. package/dist/esm/components/table/table.style.d.ts +1 -1
  279. package/dist/esm/components/table/tableSticky.d.ts +5 -5
  280. package/dist/esm/components/table/tableSticky.js +3 -3
  281. package/dist/esm/components/tabs/tabs.style.d.ts +3 -3
  282. package/dist/esm/components/tag/tag.d.ts +1 -1
  283. package/dist/esm/components/tag/tag.js +2 -1
  284. package/dist/esm/components/tag/tag.style.d.ts +1 -1
  285. package/dist/esm/components/textarea/textarea.d.ts +2 -2
  286. package/dist/esm/components/textarea/textarea.js +6 -2
  287. package/dist/esm/components/toggleButton/toggleButton.js +2 -2
  288. package/dist/esm/components/transfer/transfer.style.d.ts +2 -2
  289. package/dist/esm/components/transitionBase/collapse.js +38 -16
  290. package/dist/esm/components/transitionBase/transitionBase.js +1 -1
  291. package/dist/esm/components/transitionBase/transitionBase.style.js +1 -1
  292. package/dist/esm/components/transportStyle/transportStyle.d.ts +1 -1
  293. package/dist/esm/components/transportStyle/transportStyle.js +2 -2
  294. package/dist/esm/components/tree/tree.d.ts +17 -4
  295. package/dist/esm/components/tree/tree.js +17 -16
  296. package/dist/esm/components/tree/tree.style.d.ts +9 -3
  297. package/dist/esm/components/tree/tree.style.js +135 -4
  298. package/dist/esm/components/tree/treeDnd.d.ts +25 -0
  299. package/dist/esm/components/tree/treeDnd.js +19 -0
  300. package/dist/esm/components/tree/treeNode.d.ts +2 -2
  301. package/dist/esm/components/tree/treeNode.js +96 -18
  302. package/dist/esm/components/treeSelect/treeSelect.d.ts +2 -2
  303. package/dist/esm/components/treeSelect/treeSelect.js +4 -4
  304. package/dist/esm/components/upload/upload.d.ts +2 -2
  305. package/dist/esm/components/upload/upload.js +6 -3
  306. package/dist/esm/components/upload/upload.style.d.ts +2 -2
  307. package/dist/esm/extensions/curd/curd.d.ts +20 -0
  308. package/dist/esm/extensions/curd/curd.js +20 -0
  309. package/dist/esm/extensions/documentViewer/pdfViewer.d.ts +2 -2
  310. package/dist/esm/extensions/reactiveForm/index.d.ts +2 -0
  311. package/dist/esm/extensions/reactiveForm/index.js +2 -0
  312. package/dist/esm/extensions/reactiveForm/reactiveForm.d.ts +40 -0
  313. package/dist/esm/extensions/reactiveForm/reactiveForm.js +46 -0
  314. package/dist/esm/extensions/reactiveForm/reactiveFormItem.d.ts +7 -0
  315. package/dist/esm/extensions/reactiveForm/reactiveFormItem.js +36 -0
  316. package/dist/esm/index.d.ts +1 -0
  317. package/dist/esm/index.js +1 -0
  318. package/dist/esm/types.d.ts +2 -2
  319. package/dist/esm/utils/curd.js +5 -2
  320. package/dist/esm/utils/dataGrid.d.ts +3 -2
  321. package/dist/esm/utils/hooks.js +3 -3
  322. package/dist/esm/utils/index.d.ts +2 -2
  323. package/dist/esm/utils/index.js +2 -2
  324. package/dist/esm/utils/utils.d.ts +17 -9
  325. package/dist/esm/utils/utils.js +58 -16
  326. package/extensions/curd.cjs +5 -5
  327. package/extensions/documentViewer.cjs +5 -5
  328. package/extensions/reactiveForm.cjs +5 -0
  329. package/extensions/reactiveForm.d.ts +1 -0
  330. package/extensions/reactiveForm.js +1 -0
  331. package/extensions/textFormatter.cjs +5 -5
  332. package/package.json +6 -6
  333. package/dist/cjs/components/curd/curdFilter.d.ts +0 -16
  334. package/dist/esm/components/curd/curdFilter.d.ts +0 -16
  335. package/documentation/bootstrap.mjs +0 -8
  336. package/documentation/dist/assets/index-DvrKS6Tv.js +0 -7747
  337. package/documentation/dist/atom-one-dark.min.css +0 -1
  338. package/documentation/dist/components/accordion.md +0 -38
  339. package/documentation/dist/components/actionSheet.md +0 -49
  340. package/documentation/dist/components/alert.md +0 -38
  341. package/documentation/dist/components/anchorList.md +0 -36
  342. package/documentation/dist/components/autocomplete.md +0 -68
  343. package/documentation/dist/components/avatar.md +0 -79
  344. package/documentation/dist/components/badge.md +0 -33
  345. package/documentation/dist/components/bottomNavigation.md +0 -39
  346. package/documentation/dist/components/breadcrumb.md +0 -28
  347. package/documentation/dist/components/bubbleConfirm.md +0 -34
  348. package/documentation/dist/components/button.md +0 -62
  349. package/documentation/dist/components/card.md +0 -30
  350. package/documentation/dist/components/cascade.md +0 -48
  351. package/documentation/dist/components/checkbox.md +0 -36
  352. package/documentation/dist/components/colorPicker.md +0 -27
  353. package/documentation/dist/components/contextMenu.md +0 -27
  354. package/documentation/dist/components/counter.md +0 -29
  355. package/documentation/dist/components/dataGrid.md +0 -112
  356. package/documentation/dist/components/dateTimePicker.md +0 -35
  357. package/documentation/dist/components/dateTimeRangePicker.md +0 -36
  358. package/documentation/dist/components/descriptions.md +0 -35
  359. package/documentation/dist/components/dialog.md +0 -56
  360. package/documentation/dist/components/divider.md +0 -26
  361. package/documentation/dist/components/drawer.md +0 -40
  362. package/documentation/dist/components/flex.md +0 -20
  363. package/documentation/dist/components/form.md +0 -131
  364. package/documentation/dist/components/formDialog.md +0 -36
  365. package/documentation/dist/components/grid.md +0 -34
  366. package/documentation/dist/components/highlight.md +0 -26
  367. package/documentation/dist/components/image.md +0 -90
  368. package/documentation/dist/components/input.md +0 -39
  369. package/documentation/dist/components/loading.md +0 -46
  370. package/documentation/dist/components/menu.md +0 -85
  371. package/documentation/dist/components/pagination.md +0 -38
  372. package/documentation/dist/components/pickerDialog.md +0 -56
  373. package/documentation/dist/components/placeholder.md +0 -30
  374. package/documentation/dist/components/progress.md +0 -43
  375. package/documentation/dist/components/radio.md +0 -37
  376. package/documentation/dist/components/rating.md +0 -35
  377. package/documentation/dist/components/resizable.md +0 -41
  378. package/documentation/dist/components/scrollbar.md +0 -31
  379. package/documentation/dist/components/segmented.md +0 -57
  380. package/documentation/dist/components/select.md +0 -30
  381. package/documentation/dist/components/skeleton.md +0 -26
  382. package/documentation/dist/components/slidableActions.md +0 -53
  383. package/documentation/dist/guide/appComponent.md +0 -30
  384. package/documentation/dist/guide/globalMethods.md +0 -238
  385. package/documentation/dist/guide/icon.md +0 -57
  386. package/documentation/dist/guide/introduction.md +0 -2
  387. package/documentation/dist/guide/overrideProps.md +0 -0
  388. package/documentation/dist/guide/startup.md +0 -23
  389. package/documentation/dist/guide/theme.md +0 -249
  390. package/documentation/dist/index.html +0 -13
  391. package/documentation/dist/logo.png +0 -0
  392. package/documentation/vite.config.mjs +0 -18
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CurdFilter = void 0;
3
+ exports.CurdFilterable = void 0;
4
4
  const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
5
5
  const react_1 = require("@emotion/react");
6
6
  const react_2 = require("react");
@@ -14,7 +14,7 @@ const theme_1 = require("../theme");
14
14
  const icon_1 = require("../icon");
15
15
  const faChevronDown_1 = require("@fortawesome/free-solid-svg-icons/faChevronDown");
16
16
  const faFilter_1 = require("@fortawesome/free-solid-svg-icons/faFilter");
17
- exports.CurdFilter = (0, react_2.memo)(({ ref, columns, expandable, showButton, renderConditions, buttonProps, onFilter, ...props }) => {
17
+ exports.CurdFilterable = (0, react_2.memo)(({ columns, expandable, showButton = true, renderFilterConditions, buttonProps, ...props }) => {
18
18
  const { spacing } = (0, theme_1.useTheme)();
19
19
  const items = (0, react_2.useMemo)(() => {
20
20
  return (0, utils_1.columnsToFilterItem)(columns);
@@ -34,29 +34,24 @@ exports.CurdFilter = (0, react_2.memo)(({ ref, columns, expandable, showButton,
34
34
  * --------------------------------------------------------------
35
35
  * 触发筛选
36
36
  */
37
- const formRef = (0, react_2.useRef)(null);
38
- const clickHandler = (e) => {
37
+ const { formRef } = (0, form_1.useFormContext)();
38
+ const filterButtonClick = (e) => {
39
39
  buttonProps?.onClick?.(e);
40
- const filterValue = formRef.current.getFormValue();
41
- onFilter?.(filterValue);
42
- renderConditions && setFilteredConditions(filterValue);
40
+ formRef.current.submit().then();
43
41
  };
44
- const changeHandler = (field, value, formValue) => {
45
- props.onChange?.(field, value, formValue);
46
- !showButton && onFilter?.(formValue);
47
- renderConditions && setFilteredConditions(formValue);
48
- };
49
- /**
50
- * --------------------------------------------------------------
51
- * 已生效的筛选条件
52
- */
53
- const [filteredConditions, setFilteredConditions] = (0, react_2.useState)({});
54
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(form_1.Form, { ...props, ref: (0, utils_1.cloneRef)(ref, formRef), className: (0, utils_1.clsx)(curd_style_1.classes.filter, props.className), variant: "plain", onChange: changeHandler, children: !!items?.length &&
55
- (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [expandable
56
- ? (0, jsx_runtime_1.jsx)(transitionBase_1.Collapse, { className: curd_style_1.classes.filterGridContainer, in: expanded, collapsedSize: () => firstItemRef.current?.offsetHeight || 56, appear: false, children: renderedGrid })
57
- : renderedGrid, (expandable || showButton) &&
58
- (0, jsx_runtime_1.jsxs)("div", { className: curd_style_1.classes.filterControl, children: [expandable &&
42
+ const _expandable = expandable && items && items.length > 1;
43
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { ...props, className: (0, utils_1.clsx)(curd_style_1.classes.filter, props.className), children: !!items?.length &&
44
+ (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [_expandable
45
+ ? (0, jsx_runtime_1.jsx)(transitionBase_1.Collapse, { className: curd_style_1.classes.filterGridContainer, in: expanded, collapsedSize: () => firstItemRef.current?.offsetHeight || 50, appear: false, children: renderedGrid })
46
+ : renderedGrid, (_expandable || showButton) &&
47
+ (0, jsx_runtime_1.jsxs)("div", { className: curd_style_1.classes.filterControl, children: [_expandable &&
59
48
  (0, jsx_runtime_1.jsx)(button_1.Button, { variant: "text", suffix: (0, jsx_runtime_1.jsx)(icon_1.Icon, { icon: faChevronDown_1.faChevronDown, style: { rotate: expanded ? '180deg' : void 0 } }), onClick: () => setExpanded(o => !o), children: expanded ? '收起' : '展开' }), showButton &&
60
- (0, jsx_runtime_1.jsx)(button_1.Button, { prefix: (0, jsx_runtime_1.jsx)(icon_1.Icon, { icon: faFilter_1.faFilter }), variant: "outlined", ...buttonProps, onClick: clickHandler, children: buttonProps?.children ?? '筛选' })] })] }) }), !!renderConditions &&
61
- (0, jsx_runtime_1.jsxs)("div", { className: curd_style_1.classes.filtered, children: [(0, jsx_runtime_1.jsx)("div", { className: curd_style_1.classes.filteredTitle, children: "\u5DF2\u7B5B\u9009\uFF1A" }), renderConditions(filteredConditions, formRef.current)] })] }));
49
+ (0, jsx_runtime_1.jsx)(button_1.Button, { prefix: (0, jsx_runtime_1.jsx)(icon_1.Icon, { icon: faFilter_1.faFilter }), variant: "outlined", ...buttonProps, onClick: filterButtonClick, children: buttonProps?.children ?? '筛选' })] })] }) }), (0, jsx_runtime_1.jsx)(FilterConditions, { renderFilterConditions: renderFilterConditions })] }));
50
+ });
51
+ const FilterConditions = (0, react_2.memo)(({ renderFilterConditions }) => {
52
+ const { formRef } = (0, form_1.useFormContext)();
53
+ const { formValue } = (0, form_1.useFormValueContext)();
54
+ const filterConditions = renderFilterConditions?.(formValue, formRef.current);
55
+ return !(0, utils_1.isUnset)(filterConditions) &&
56
+ (0, jsx_runtime_1.jsxs)("div", { className: curd_style_1.classes.filtered, children: [(0, jsx_runtime_1.jsx)("div", { className: curd_style_1.classes.filteredTitle, children: "\u5DF2\u7B5B\u9009\uFF1A" }), (0, jsx_runtime_1.jsx)("div", { className: curd_style_1.classes.filteredContent, children: filterConditions })] });
62
57
  });
@@ -1,4 +1,4 @@
1
1
  export * from './curd';
2
2
  export * from './curdDialog';
3
- export * from './curdFilter';
3
+ export * from './curdFilterable';
4
4
  export * from './curdResizable';
@@ -3,5 +3,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./curd"), exports);
5
5
  tslib_1.__exportStar(require("./curdDialog"), exports);
6
- tslib_1.__exportStar(require("./curdFilter"), exports);
6
+ tslib_1.__exportStar(require("./curdFilterable"), exports);
7
7
  tslib_1.__exportStar(require("./curdResizable"), exports);
@@ -61,10 +61,10 @@ function ResizableColumn(props) {
61
61
  if (!columnResizable) {
62
62
  return (0, jsx_runtime_1.jsx)(table_1.ThCell, { ...props });
63
63
  }
64
- return ((0, jsx_runtime_1.jsxs)(table_1.ThCell, { ...props, ref: r => {
64
+ return ((0, jsx_runtime_1.jsxs)(table_1.ThCell, { ...props, ref: (0, utils_1.cloneRef)(r => {
65
65
  if (r) {
66
66
  columnRefs.current.push(r);
67
67
  cellRef.current = r;
68
68
  }
69
- }, children: [props.children, (0, jsx_runtime_1.jsx)("div", { className: dataGrid_style_1.classes.resizeHandle, ...draggableHandles })] }));
69
+ }, props.ref), children: [props.children, (0, jsx_runtime_1.jsx)("div", { className: dataGrid_style_1.classes.resizeHandle, ...draggableHandles })] }));
70
70
  }
@@ -1,4 +1,4 @@
1
- import { JSX, ReactElement, ReactNode } from 'react';
1
+ import React, { ComponentProps, ReactElement, ReactNode } from 'react';
2
2
  import { DivProps, Id, Obj, ToRequired } from '../../types';
3
3
  import { SelectionContextProps } from '../selectionContext';
4
4
  import { PaginationProps } from '../pagination';
@@ -6,9 +6,10 @@ import { TableProps } from '../table';
6
6
  import { CheckboxProps } from '../checkbox';
7
7
  import { RadioProps } from '../radio';
8
8
  import { FieldPath } from '../../utils';
9
+ import { FormProps, FormValue } from '../form';
10
+ import { FilterControlProps, FilterOptionsProps } from './filterBubbleContent';
9
11
  export type RowType = Obj;
10
- export type OrderType = 'ascend' | 'descend';
11
- export interface ColumnType<R extends RowType = RowType> extends Omit<JSX.IntrinsicElements['td'], 'key' | 'ref' | 'title' | 'children'>, Omit<JSX.IntrinsicElements['th'], 'key' | 'ref' | 'title' | 'children'> {
12
+ export interface ColumnType<R extends RowType = RowType> extends Omit<ComponentProps<'td'>, 'key' | 'ref' | 'title' | 'children'>, Omit<ComponentProps<'th'>, 'key' | 'ref' | 'title' | 'children'> {
12
13
  title?: ReactNode;
13
14
  /** 若不指定key,默认使用{@link field}作为key */
14
15
  key?: string | number;
@@ -18,15 +19,24 @@ export interface ColumnType<R extends RowType = RowType> extends Omit<JSX.Intrin
18
19
  /** 指定children后,下列属性均不生效 */
19
20
  field?: FieldPath;
20
21
  render?(row: R, index?: number, rows?: R[]): ReactNode;
21
- /** 指定为true时表示使用服务端排序,组件只做样式处理,不做数据排序处理;本地排序需指定 “正序” 的排序方法,倒序会自动处理 */
22
+ /**
23
+ * @enum true 使用服务端排序,组件只做样式处理,不做数据排序处理;
24
+ * @enum function 本地排序需指定 `正序` 的排序方法,倒序会自动处理
25
+ */
22
26
  sorter?: boolean | ((a: R, b: R) => number);
27
+ /**
28
+ * @enum true 不会弹出气泡框,需配合{@link DataGridBaseProps.onFilterClick}实现筛选逻辑
29
+ * @enum FilterOptionsProps 传递至`OptionsBase`组件
30
+ * @enum FilterControlProps 自定义渲染气泡内容
31
+ */
32
+ filter?: boolean | FilterOptionsProps | FilterControlProps;
23
33
  /** @private 内部使用,在{@link useDataGridColumns}内赋值 */
24
- _key?: string | number;
34
+ _key?: Id;
25
35
  /** @private 内部使用,在{@link DataGridHead}内计算 */
26
36
  _negativeRowSpan?: number;
27
37
  }
28
- type DataGridSharedProps<R extends RowType> = {
29
- rowProps?(row: R, index: number, rows: R[]): JSX.IntrinsicElements['tr'];
38
+ type DataGridSharedProps<R extends RowType = RowType> = {
39
+ rowProps?(row: R, index: number, rows: R[]): ComponentProps<'tr'>;
30
40
  /** 数据的主键名,默认为`id` */
31
41
  primaryKey?: keyof R;
32
42
  /**
@@ -41,9 +51,16 @@ type DataGridSharedProps<R extends RowType> = {
41
51
  indent?: number;
42
52
  renderExpandIcon?(key: Id, isExpand: boolean, expanded: Id[]): ReactNode;
43
53
  };
44
- export interface DataGridBaseProps<R extends RowType> extends DataGridSharedProps<R>, Omit<DivProps, 'defaultValue' | 'onChange'> {
54
+ export type OrderType = 'ascend' | 'descend';
55
+ export interface DataGridBaseProps<R extends RowType = RowType> extends DataGridSharedProps<R>, Omit<DivProps, 'defaultValue' | 'onChange'> {
45
56
  columns?: (ColumnType<R> | symbol)[];
46
57
  rows?: R[];
58
+ filterProps?: FormProps;
59
+ initialFilterValue?: FormValue;
60
+ onFilter?(filterValue: FormValue): void;
61
+ onFilterClick?(column: Id, e: React.MouseEvent<HTMLButtonElement>): void;
62
+ /** 若需要本地筛选,必须指定该方法 */
63
+ filterPredicate?(row: R, index: number, filterValue: FormValue): any;
47
64
  defaultOrderColumn?: Id;
48
65
  orderColumn?: Id;
49
66
  defaultOrderType?: OrderType;
@@ -78,20 +95,20 @@ export interface DataGridBaseProps<R extends RowType> extends DataGridSharedProp
78
95
  striped?: TableProps['striped'];
79
96
  tableProps?: TableProps;
80
97
  }
81
- export interface DataGridSingleProps<R extends RowType, V extends Id = Id> extends DataGridBaseProps<R> {
98
+ export interface DataGridSingleProps<R extends RowType = RowType, V extends Id = Id> extends DataGridBaseProps<R> {
82
99
  multiple?: false;
83
100
  defaultValue?: V;
84
101
  value?: V;
85
102
  onChange?(value: V): void;
86
103
  }
87
- export interface DataGridMultipleProps<R extends RowType, V extends Id = Id> extends DataGridBaseProps<R> {
104
+ export interface DataGridMultipleProps<R extends RowType = RowType, V extends Id = Id> extends DataGridBaseProps<R> {
88
105
  multiple: true;
89
106
  defaultValue?: V[];
90
107
  value?: V[];
91
108
  onChange?(value: V[]): void;
92
109
  }
93
- export type DataGridProps<R extends RowType, V extends Id = Id> = DataGridSingleProps<R, V> | DataGridMultipleProps<R, V>;
94
- interface IDataGridContext<R extends RowType> extends ToRequired<DataGridSharedProps<R>, 'primaryKey' | 'childrenKey' | 'clickRowToSelect' | 'indent'> {
110
+ export type DataGridProps<R extends RowType = RowType, V extends Id = Id> = DataGridSingleProps<R, V> | DataGridMultipleProps<R, V>;
111
+ interface IDataGridContext<R extends RowType = RowType> extends ToRequired<DataGridSharedProps<R>, 'primaryKey' | 'childrenKey' | 'clickRowToSelect' | 'indent'> {
95
112
  expandedSet: Set<Id>;
96
113
  flattedColumns: (symbol | ColumnType<R>)[] | undefined;
97
114
  toggleExpanded(key: Id): void;
@@ -14,11 +14,12 @@ const dataGridHead_1 = require("./dataGridHead");
14
14
  const placeholder_1 = require("../placeholder");
15
15
  const dataGridRows_1 = require("./dataGridRows");
16
16
  const columnResize_1 = require("./columnResize");
17
+ const form_1 = require("../form");
17
18
  const DataGridContext = (0, react_1.createContext)({});
18
19
  function useDataGridContext() {
19
20
  return (0, react_1.useContext)(DataGridContext);
20
21
  }
21
- exports.DataGrid = (0, react_1.memo)(({ columns, rows, rowProps, primaryKey = 'id', childrenKey = null, defaultOrderColumn, orderColumn, defaultOrderType = 'descend', orderType, onOrderChange, selectable, relation = 'dependent', integration = 'shallowest', allowSelectAll = true, clickRowToSelect = true, selectorProps, indent = 24, renderExpandIcon, defaultExpanded, expanded, onExpandedChange, paginatable = true, paginationProps, renderPagination, loading, emptyPlaceholder, columnResizable = false, size, bordered, striped, tableProps, multiple, defaultValue, value, onChange, ...props }) => {
22
+ exports.DataGrid = (0, react_1.memo)(({ columns, rows, rowProps, primaryKey = 'id', childrenKey = null, filterProps, initialFilterValue, onFilter, onFilterClick, filterPredicate, defaultOrderColumn, orderColumn, defaultOrderType = 'descend', orderType, onOrderChange, selectable, relation = 'dependent', integration = 'shallowest', allowSelectAll = true, clickRowToSelect = true, selectorProps, indent = 24, renderExpandIcon, defaultExpanded, expanded, onExpandedChange, paginatable = true, paginationProps, renderPagination, loading, emptyPlaceholder, columnResizable = false, size, bordered, striped, tableProps, multiple, defaultValue, value, onChange, ...props }) => {
22
23
  /**
23
24
  * ---------------------------------------------------------------
24
25
  * 选择行
@@ -35,7 +36,24 @@ exports.DataGrid = (0, react_1.memo)(({ columns, rows, rowProps, primaryKey = 'i
35
36
  });
36
37
  /**
37
38
  * ---------------------------------------------------------------
38
- * 行排序
39
+ * 筛选
40
+ */
41
+ const [innerFilterValue, setInnerFilterValue] = (0, react_1.useState)(initialFilterValue || {});
42
+ const filterHandler = (value) => {
43
+ onFilter?.(value);
44
+ filterPredicate && setInnerFilterValue(value);
45
+ };
46
+ const filteredRows = (0, react_1.useMemo)(() => {
47
+ if (!filterPredicate) {
48
+ return rows;
49
+ }
50
+ return rows?.filter((row, index) => {
51
+ return filterPredicate(row, index, innerFilterValue);
52
+ });
53
+ }, [rows, innerFilterValue, filterPredicate]);
54
+ /**
55
+ * ---------------------------------------------------------------
56
+ * 排序
39
57
  */
40
58
  const [innerOrderColumn, setInnerOrderColumn] = (0, utils_1.useControlled)(() => {
41
59
  return defaultOrderColumn ?? flattedColumns
@@ -43,24 +61,25 @@ exports.DataGrid = (0, react_1.memo)(({ columns, rows, rowProps, primaryKey = 'i
43
61
  ?._key;
44
62
  }, orderColumn);
45
63
  const [innerOrderType, setInnerOrderType] = (0, utils_1.useControlled)(defaultOrderType, orderType);
46
- const orderChangeHandler = (orderColumn, orderType) => {
47
- onOrderChange?.(orderColumn, orderType);
64
+ const syncOnOrderChange = (0, utils_1.useSync)(onOrderChange);
65
+ const orderChangeHandler = (0, react_1.useCallback)((orderColumn, orderType) => {
66
+ syncOnOrderChange.current?.(orderColumn, orderType);
48
67
  setInnerOrderColumn(orderColumn);
49
68
  setInnerOrderType(orderType);
50
- };
69
+ }, []);
51
70
  const orderedRows = (0, react_1.useMemo)(() => {
52
71
  if (!innerOrderColumn.current) {
53
- return rows;
72
+ return filteredRows;
54
73
  }
55
74
  const orderingColumn = columnMapByKey.get(innerOrderColumn.current);
56
75
  if (!orderingColumn?.sorter || typeof orderingColumn.sorter !== 'function') {
57
- return rows;
76
+ return filteredRows;
58
77
  }
59
- return rows?.toSorted((a, b) => {
78
+ return filteredRows?.toSorted((a, b) => {
60
79
  const ret = orderingColumn.sorter(a, b);
61
80
  return innerOrderType.current === 'ascend' ? ret : -ret;
62
81
  });
63
- }, [rows, innerOrderColumn.current, innerOrderType.current]);
82
+ }, [filteredRows, innerOrderColumn.current, innerOrderType.current, columnMapByKey]);
64
83
  /**
65
84
  * ---------------------------------------------------------------
66
85
  * 展开行
@@ -69,16 +88,17 @@ exports.DataGrid = (0, react_1.memo)(({ columns, rows, rowProps, primaryKey = 'i
69
88
  const expandedSet = (0, react_1.useMemo)(() => {
70
89
  return new Set(innerExpanded.current);
71
90
  }, [innerExpanded.current]);
72
- const toggleExpanded = (key) => {
91
+ const syncOnExpandedChange = (0, utils_1.useSync)(onExpandedChange);
92
+ const toggleExpanded = (0, react_1.useCallback)((key) => {
73
93
  const currentExpanded = expandedSet.has(key);
74
94
  setInnerExpanded(o => {
75
95
  const newExpanded = currentExpanded
76
96
  ? o.filter(v => v !== key)
77
97
  : [...o, key];
78
- onExpandedChange?.(newExpanded, key, !currentExpanded);
98
+ syncOnExpandedChange.current?.(newExpanded, key, !currentExpanded);
79
99
  return newExpanded;
80
100
  });
81
- };
101
+ }, []);
82
102
  /**
83
103
  * ---------------------------------------------------------------
84
104
  * 分页
@@ -110,14 +130,20 @@ exports.DataGrid = (0, react_1.memo)(({ columns, rows, rowProps, primaryKey = 'i
110
130
  const { page, pageSize } = _paginationProps;
111
131
  return orderedRows?.slice((page - 1) * pageSize, page * pageSize);
112
132
  }, [orderedRows, _paginationProps.page, _paginationProps.pageSize, paginatable]);
113
- return ((0, jsx_runtime_1.jsxs)(loading_1.Loading, { ...props, css: dataGrid_style_1.style, className: (0, utils_1.clsx)(dataGrid_style_1.classes.root, props.className), open: loading, "data-column-resizable": columnResizable, children: [(0, jsx_runtime_1.jsx)(columnResize_1.ColumnResizeContext, { columnResizable: columnResizable, children: ({ scrollerRef, tableRef }) => (0, jsx_runtime_1.jsxs)(table_1.TableContainer, { ref: scrollerRef, className: dataGrid_style_1.classes.container, children: [(0, jsx_runtime_1.jsx)(table_1.Table, { size: size, bordered: bordered, striped: striped, ...tableProps, ref: (0, utils_1.cloneRef)(tableProps?.ref, tableRef), children: (0, jsx_runtime_1.jsxs)(selectionContext_1.SelectionContext, { options: rows, primaryKey: primaryKey, childrenKey: childrenKey !== null ? childrenKey : void 0, relation: relation, integration: integration, disabled: !selectable, multiple: multiple, defaultValue: defaultValue, value: value, onChange: onChange, children: [(0, jsx_runtime_1.jsx)(dataGridHead_1.DataGridHead, { flattedColumns: flattedColumns, completedColumns: completedColumns, rows: rows, primaryKey: primaryKey, orderColumn: innerOrderColumn.current, orderType: innerOrderType.current, onOrderChange: orderChangeHandler, allowSelectAll: allowSelectAll, columnResizable: columnResizable }), (0, jsx_runtime_1.jsx)("tbody", { children: (0, jsx_runtime_1.jsx)(DataGridContext, { value: (0, react_1.useMemo)(() => ({
114
- rowProps, primaryKey, childrenKey, clickRowToSelect, indent, renderExpandIcon,
115
- expandedSet, flattedColumns, toggleExpanded
116
- }), [
117
- rowProps, primaryKey, childrenKey, clickRowToSelect, indent, renderExpandIcon,
118
- expandedSet, flattedColumns
119
- ]), children: !!paginatedRows?.length &&
120
- (0, jsx_runtime_1.jsx)(dataGridRows_1.DataGridRows, { rows: paginatedRows }) }) })] }) }), !paginatedRows?.length && (emptyPlaceholder ?? (0, jsx_runtime_1.jsx)(placeholder_1.Placeholder, { className: dataGrid_style_1.classes.empty }))] }) }), renderPaginationFn()] }));
133
+ return ((0, jsx_runtime_1.jsxs)(loading_1.Loading, { fill: false, ...props, css: dataGrid_style_1.style, className: (0, utils_1.clsx)(dataGrid_style_1.classes.root, props.className), open: loading, "data-column-resizable": columnResizable, children: [(0, jsx_runtime_1.jsx)(form_1.Form, { ...(0, utils_1.mergeComponentProps)({
134
+ variant: 'plain',
135
+ initialValue: innerFilterValue
136
+ }, filterProps, {
137
+ className: dataGrid_style_1.classes.filterForm,
138
+ onFinish: filterHandler
139
+ }), children: (0, jsx_runtime_1.jsx)(columnResize_1.ColumnResizeContext, { columnResizable: columnResizable, children: ({ scrollerRef, tableRef }) => (0, jsx_runtime_1.jsxs)(table_1.TableContainer, { ref: scrollerRef, className: dataGrid_style_1.classes.container, children: [(0, jsx_runtime_1.jsx)(table_1.Table, { size: size, bordered: bordered, striped: striped, ...tableProps, ref: (0, utils_1.cloneRef)(tableProps?.ref, tableRef), children: (0, jsx_runtime_1.jsxs)(selectionContext_1.SelectionContext, { options: rows, primaryKey: primaryKey, childrenKey: childrenKey !== null ? childrenKey : void 0, relation: relation, integration: integration, disabled: !selectable, multiple: multiple, defaultValue: defaultValue, value: value, onChange: onChange, children: [(0, jsx_runtime_1.jsx)(dataGridHead_1.DataGridHead, { rows: rows, flattedColumns: flattedColumns, completedColumns: completedColumns, primaryKey: primaryKey, allowSelectAll: allowSelectAll, columnResizable: columnResizable, orderColumn: innerOrderColumn.current, orderType: innerOrderType.current, onOrderChange: orderChangeHandler, onFilterClick: onFilterClick }), (0, jsx_runtime_1.jsx)("tbody", { children: (0, jsx_runtime_1.jsx)(DataGridContext, { value: (0, react_1.useMemo)(() => ({
140
+ rowProps, primaryKey, childrenKey, clickRowToSelect, indent, renderExpandIcon,
141
+ expandedSet, flattedColumns, toggleExpanded
142
+ }), [
143
+ rowProps, primaryKey, childrenKey, clickRowToSelect, indent, renderExpandIcon,
144
+ expandedSet, flattedColumns
145
+ ]), children: !!paginatedRows?.length &&
146
+ (0, jsx_runtime_1.jsx)(dataGridRows_1.DataGridRows, { rows: paginatedRows }) }) })] }) }), !paginatedRows?.length && (emptyPlaceholder ?? (0, jsx_runtime_1.jsx)(placeholder_1.Placeholder, { className: dataGrid_style_1.classes.empty }))] }) }) }), renderPaginationFn()] }));
121
147
  });
122
148
  exports.DataGrid.EXPAND_COLUMN = Symbol('expand-column');
123
149
  exports.DataGrid.SELECT_COLUMN = Symbol('select-column');
@@ -1,14 +1,16 @@
1
1
  export declare const classes: {
2
2
  sub: string;
3
3
  title: string;
4
+ children: string;
4
5
  container: string;
5
- sorter: string;
6
- icon: string;
6
+ filterForm: string;
7
+ functionalCell: string;
8
+ sortIcon: string;
9
+ filterButton: string;
7
10
  expandable: string;
8
11
  expandableWrap: string;
9
12
  selectable: string;
10
13
  subTd: string;
11
- children: string;
12
14
  empty: string;
13
15
  resizeHandle: string;
14
16
  } & {
@@ -5,10 +5,12 @@ const react_1 = require("@emotion/react");
5
5
  const utils_1 = require("../../utils");
6
6
  const loading_style_1 = require("../loading/loading.style");
7
7
  exports.classes = (0, utils_1.defineInnerClasses)('data-grid', [
8
+ 'filterForm',
8
9
  'container',
9
10
  'title',
10
- 'sorter',
11
- 'icon',
11
+ 'functionalCell',
12
+ 'sortIcon',
13
+ 'filterButton',
12
14
  'expandable',
13
15
  'expandableWrap',
14
16
  'selectable',
@@ -19,20 +21,37 @@ exports.classes = (0, utils_1.defineInnerClasses)('data-grid', [
19
21
  'resizeHandle'
20
22
  ]);
21
23
  exports.style = (0, utils_1.defineCss)(({ spacing, mode, gray, text, colors, easing }) => (0, react_1.css) `
22
- max-height: 100%;
23
- min-height: 0;
24
-
25
24
  .${loading_style_1.classes.container} {
26
- height: auto;
27
25
  display: flex;
28
26
  flex-direction: column;
27
+ gap: ${spacing[5]}px;
28
+ }
29
+
30
+ .${exports.classes.filterForm} {
31
+ min-height: 0;
29
32
  }
30
33
 
31
34
  .${exports.classes.container} {
32
- flex: 1;
33
-
34
- &:not(:last-of-type) {
35
- margin-bottom: ${spacing[5]}px;
35
+ height: 100%;
36
+ }
37
+
38
+ .${exports.classes.functionalCell} {
39
+ display: flex;
40
+ align-items: center;
41
+
42
+ .${exports.classes.title} {
43
+ flex: 1;
44
+ }
45
+
46
+ .${exports.classes.sortIcon} {
47
+ color: ${text.placeholder};
48
+ transition: translate .25s ${easing.swing};
49
+ }
50
+
51
+ .${exports.classes.filterButton} {
52
+ width: ${20 / 14}em;
53
+ height: ${20 / 14}em;
54
+ margin-left: ${spacing[2]}px;
36
55
  }
37
56
  }
38
57
 
@@ -50,35 +69,21 @@ exports.style = (0, utils_1.defineCss)(({ spacing, mode, gray, text, colors, eas
50
69
  background-color: ${gray(mode === 'light' ? .01 : .22)};
51
70
  }
52
71
 
53
- .${exports.classes.sorter} {
54
- display: flex;
55
- align-items: center;
56
-
57
- .${exports.classes.title} {
58
- flex: 1;
59
- }
60
-
61
- .${exports.classes.icon} {
62
- color: ${text.placeholder};
63
- transition: translate .25s ${easing.swing};
64
- }
65
- }
66
-
67
72
  &[data-ordering=true] {
68
- .${exports.classes.icon} {
73
+ .${exports.classes.sortIcon} {
69
74
  color: ${colors.primary.main};
70
75
  }
71
76
  }
72
77
 
73
78
  &[data-order-type=ascend] {
74
- .${exports.classes.icon} {
79
+ .${exports.classes.sortIcon} {
75
80
  translate: 0 -3px;
76
81
  rotate: 180deg;
77
82
  }
78
83
  }
79
84
 
80
85
  &[data-order-type=descend] {
81
- .${exports.classes.icon} {
86
+ .${exports.classes.sortIcon} {
82
87
  translate: 0 3px;
83
88
  rotate: 0deg;
84
89
  }
@@ -93,7 +98,7 @@ exports.style = (0, utils_1.defineCss)(({ spacing, mode, gray, text, colors, eas
93
98
  .${exports.classes.subTd} {
94
99
  padding: 0;
95
100
  border: none;
96
-
101
+
97
102
  .${exports.classes.children} {
98
103
  padding: ${spacing[4]}px ${spacing[5]}px;
99
104
  border-bottom: 1px solid ${gray(mode === 'light' ? .12 : .32)};
@@ -125,19 +130,19 @@ exports.style = (0, utils_1.defineCss)(({ spacing, mode, gray, text, colors, eas
125
130
  padding-top: 0;
126
131
  padding-bottom: 0;
127
132
  padding-left: 0;
128
-
133
+
129
134
  .${exports.classes.expandableWrap} {
130
135
  display: flex;
131
136
  align-items: center;
132
137
  gap: ${spacing[1]}px;
133
138
  }
134
139
  }
135
-
140
+
136
141
  .${exports.classes.empty} {
137
142
  position: sticky;
138
143
  left: 0;
139
144
  }
140
-
145
+
141
146
  .${exports.classes.resizeHandle} {
142
147
  width: 8px;
143
148
  height: 100%;
@@ -148,12 +153,12 @@ exports.style = (0, utils_1.defineCss)(({ spacing, mode, gray, text, colors, eas
148
153
  right: -4px;
149
154
  z-index: 1;
150
155
  }
151
-
156
+
152
157
  &[data-column-resizable=true] table {
153
158
  width: max-content;
154
159
  table-layout: fixed;
155
160
  }
156
-
161
+
157
162
  th:last-of-type {
158
163
  .${exports.classes.resizeHandle} {
159
164
  width: 4px;
@@ -1,9 +1,12 @@
1
1
  import { ReactElement } from 'react';
2
2
  import { ColumnType, DataGridProps, RowType } from './dataGrid';
3
3
  import { Id } from '../../types';
4
- interface DataGridHeadProps<R extends RowType, V extends Id = Id> extends Required<Pick<DataGridProps<R, V>, 'primaryKey' | 'orderType' | 'onOrderChange' | 'allowSelectAll' | 'columnResizable'>>, Pick<DataGridProps<R, V>, 'rows' | 'orderColumn'> {
4
+ interface DataGridHeadProps<R extends RowType, V extends Id = Id> extends Required<Pick<DataGridProps<R, V>, 'primaryKey' | 'orderType' | 'onOrderChange' | 'allowSelectAll' | 'columnResizable'>> {
5
+ rows: R[] | undefined;
6
+ orderColumn: Id | undefined;
5
7
  flattedColumns: (symbol | ColumnType<R>)[] | undefined;
6
8
  completedColumns: (symbol | ColumnType<R>)[] | undefined;
9
+ onFilterClick: DataGridProps<R, V>['onFilterClick'];
7
10
  }
8
11
  export declare const DataGridHead: <R extends RowType, V extends Id = Id>(props: DataGridHeadProps<R, V>) => ReactElement;
9
12
  export {};
@@ -8,12 +8,15 @@ const dataGrid_style_1 = require("./dataGrid.style");
8
8
  const dataGrid_1 = require("./dataGrid");
9
9
  const columnResize_1 = require("./columnResize");
10
10
  const checkbox_1 = require("../checkbox");
11
- const utils_1 = require("../../utils");
12
11
  const icon_1 = require("../icon");
13
12
  const selectionContext_1 = require("../selectionContext");
14
13
  const tooltip_1 = require("../tooltip");
15
14
  const faCaretDown_1 = require("@fortawesome/free-solid-svg-icons/faCaretDown");
16
- exports.DataGridHead = (0, react_2.memo)(({ flattedColumns, completedColumns, rows, primaryKey, orderColumn, orderType, onOrderChange, allowSelectAll, columnResizable }) => {
15
+ const button_1 = require("../button");
16
+ const faFilter_1 = require("@fortawesome/free-solid-svg-icons/faFilter");
17
+ const bubble_1 = require("../bubble");
18
+ const filterBubbleContent_1 = require("./filterBubbleContent");
19
+ exports.DataGridHead = (0, react_2.memo)(({ allowSelectAll, columnResizable, flattedColumns, completedColumns, rows, primaryKey, orderColumn, orderType, onOrderChange, onFilterClick }) => {
17
20
  const { multiple, setValue, selectionStatus } = (0, selectionContext_1.useSelectionContext)();
18
21
  const allSelectionStatus = (0, react_2.useMemo)(() => {
19
22
  if (multiple && allowSelectAll) {
@@ -69,29 +72,35 @@ exports.DataGridHead = (0, react_2.memo)(({ flattedColumns, completedColumns, ro
69
72
  return [];
70
73
  }
71
74
  // col === DataGrid.SELECT_COLUMN
72
- return ((0, jsx_runtime_1.jsx)(Column, { className: dataGrid_style_1.classes.selectable, rowSpan: headRows.length, sticky: j === 0 ? 'left' : void 0, children: multiple && allowSelectAll &&
73
- (0, jsx_runtime_1.jsx)(checkbox_1.Checkbox, { checked: allSelectionStatus === 2, indeterminate: allSelectionStatus === 1, onChange: selectAllChangeHandler }) }, j + '_selectable'));
75
+ return [
76
+ (0, jsx_runtime_1.jsx)(Column, { className: dataGrid_style_1.classes.selectable, rowSpan: headRows.length, sticky: j === 0 ? 'left' : void 0, children: multiple && allowSelectAll &&
77
+ (0, jsx_runtime_1.jsx)(checkbox_1.Checkbox, { checked: allSelectionStatus === 2, indeterminate: allSelectionStatus === 1, onChange: selectAllChangeHandler }) }, j + '_selectable')
78
+ ];
74
79
  }
75
80
  const {
76
81
  // 排除无需加入dom节点的属性
77
- title, key, children, sticky, field, render, sorter, _key, _negativeRowSpan = 0, ...colProps } = col;
78
- const sortable = sorter && children?.length;
82
+ title, key, children, sticky, field, render, sorter, filter, _key, _negativeRowSpan = 0, ...colProps } = col;
83
+ const sortable = sorter && !children?.length;
79
84
  const isOrderingColumn = orderColumn === _key;
80
85
  const currentOrderType = isOrderingColumn ? orderType : 'descend';
81
- const renderedTh = ((0, react_1.createElement)(Column, { rowSpan: headRows.length - _negativeRowSpan, ...colProps, key: _key, sticky: sticky, "data-sortable": !!sortable, "data-ordering": isOrderingColumn, "data-order-type": currentOrderType, onClick: e => {
82
- colProps.onClick?.(e);
83
- if (sortable && !(0, utils_1.isUnset)(_key)) {
84
- onOrderChange?.(_key, currentOrderType === 'descend' ? 'ascend' : 'descend');
85
- }
86
- } }, sorter
87
- ? (0, jsx_runtime_1.jsxs)("div", { className: dataGrid_style_1.classes.sorter, children: [(0, jsx_runtime_1.jsx)("div", { className: dataGrid_style_1.classes.title, children: title }), (0, jsx_runtime_1.jsx)(icon_1.Icon, { icon: faCaretDown_1.faCaretDown, className: dataGrid_style_1.classes.icon })] })
88
- : title));
86
+ const filterButton = ((0, jsx_runtime_1.jsx)(button_1.Button, { className: dataGrid_style_1.classes.filterButton, variant: "plain", color: "text.placeholder", onClick: e => {
87
+ e.stopPropagation();
88
+ onFilterClick?.(_key, e);
89
+ }, children: (0, jsx_runtime_1.jsx)(icon_1.Icon, { icon: faFilter_1.faFilter }) }));
89
90
  return [
90
- sortable
91
- ? (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { title: currentOrderType === 'descend'
92
- ? '点击升序'
93
- : '点击降序', children: renderedTh }, _key)
94
- : renderedTh
91
+ (0, react_1.createElement)(Column, { rowSpan: headRows.length - _negativeRowSpan, ...colProps, key: _key, sticky: sticky, "data-sortable": !!sortable, "data-ordering": isOrderingColumn, "data-order-type": currentOrderType, onClick: e => {
92
+ colProps.onClick?.(e);
93
+ sortable && onOrderChange?.(_key, currentOrderType === 'descend' ? 'ascend' : 'descend');
94
+ } }, sortable || filter
95
+ ? (0, jsx_runtime_1.jsxs)("div", { className: dataGrid_style_1.classes.functionalCell, children: [sortable
96
+ ? (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { title: currentOrderType === 'descend'
97
+ ? '点击升序'
98
+ : '点击降序', children: (0, jsx_runtime_1.jsx)("div", { className: dataGrid_style_1.classes.title, children: title }) }), (0, jsx_runtime_1.jsx)(icon_1.Icon, { icon: faCaretDown_1.faCaretDown, className: dataGrid_style_1.classes.sortIcon })] })
99
+ : (0, jsx_runtime_1.jsx)("div", { className: dataGrid_style_1.classes.title, children: title }), filter &&
100
+ (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { title: "\u7B5B\u9009", placement: "top", clickToClose: true, children: filter === true
101
+ ? filterButton
102
+ : (0, jsx_runtime_1.jsx)(bubble_1.Bubble, { style: { maxWidth: 360 }, trigger: "click", placement: "bottomRight", autoClose: false, content: (0, jsx_runtime_1.jsx)(filterBubbleContent_1.FilterBubbleContent, { columnKey: _key, columnFilterProps: filter }), onClick: e => e.stopPropagation(), children: filterButton }) })] })
103
+ : title)
95
104
  ];
96
105
  }) }, i));
97
106
  });
@@ -54,7 +54,7 @@ exports.DataGridRows = (0, react_2.memo)(({ rows, _level = 0 }) => {
54
54
  // 排除无需加入dom节点的属性
55
55
  // width属性只需加入thead列中,普通列需排除
56
56
  // rowSpan与colSpan需排除
57
- title, key, children, sticky, field, render, sorter, width, _key, _negativeRowSpan, rowSpan, colSpan, ..._colProps } = col;
57
+ title, key, children, sticky, field, render, sorter, filter, width, _key, _negativeRowSpan, rowSpan, colSpan, ..._colProps } = col;
58
58
  const renderedContent = (0, utils_1.renderCell)({ render, field }, row, i, arr);
59
59
  const shouldRenderExpand = expandableIndex === j - 1;
60
60
  return ((0, react_1.createElement)(table_1.TdCell, { ..._colProps, key: _key, className: shouldRenderExpand ? dataGrid_style_1.classes.expandable : void 0, sticky: sticky }, shouldRenderExpand
@@ -0,0 +1,19 @@
1
+ import { MenuOptionType, OptionsBaseProps } from '../optionsBase';
2
+ import { Id } from '../../types';
3
+ import { FormItemChildren } from '../form';
4
+ type FilterSharedProps = {
5
+ /** 是否显示`重置`与`确定`按钮,默认为`true` */
6
+ showButton?: boolean;
7
+ };
8
+ export interface FilterOptionsProps extends FilterSharedProps, OptionsBaseProps<MenuOptionType> {
9
+ /** 默认为`true` */
10
+ multiple?: boolean;
11
+ }
12
+ export interface FilterControlProps extends FilterSharedProps {
13
+ control: FormItemChildren;
14
+ }
15
+ export declare const FilterBubbleContent: import("react").MemoExoticComponent<({ columnKey, columnFilterProps }: {
16
+ columnKey: Id;
17
+ columnFilterProps: FilterOptionsProps | FilterControlProps;
18
+ }) => import("@emotion/react/jsx-runtime").JSX.Element>;
19
+ export {};