@canlooks/can-ui 0.0.70 → 0.0.71

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 (328) hide show
  1. package/dist/cjs/components/actionSheet/actionSheet.js +9 -4
  2. package/dist/cjs/components/alert/alert.style.d.ts +2 -2
  3. package/dist/cjs/components/app/appDialog.js +28 -24
  4. package/dist/cjs/components/autocomplete/autocomplete.js +21 -27
  5. package/dist/cjs/components/avatar/avatar.d.ts +2 -2
  6. package/dist/cjs/components/avatar/avatar.js +6 -5
  7. package/dist/cjs/components/avatar/avatarGroup.js +1 -1
  8. package/dist/cjs/components/bubbleConfirm/bubbleConfirm.js +9 -2
  9. package/dist/cjs/components/bubbleConfirm/bubbleConfirm.style.d.ts +1 -1
  10. package/dist/cjs/components/cascade/cascade.d.ts +2 -2
  11. package/dist/cjs/components/cascade/cascade.js +33 -21
  12. package/dist/cjs/components/cascade/cascadePanel.js +23 -13
  13. package/dist/cjs/components/checkboxBase/checkboxBase.d.ts +2 -2
  14. package/dist/cjs/components/checkboxBase/checkboxBase.js +9 -2
  15. package/dist/cjs/components/checkboxBase/checkboxBase.style.d.ts +1 -1
  16. package/dist/cjs/components/checkboxBaseGroup/checkboxBaseGroup.js +2 -2
  17. package/dist/cjs/components/clickAway/clickAway.d.ts +27 -27
  18. package/dist/cjs/components/colorPicker/colorPicker.d.ts +2 -2
  19. package/dist/cjs/components/colorPicker/colorPicker.js +2 -2
  20. package/dist/cjs/components/counter/counter.js +9 -10
  21. package/dist/cjs/components/curd/curd.d.ts +10 -12
  22. package/dist/cjs/components/curd/curd.js +38 -33
  23. package/dist/cjs/components/curd/curd.style.d.ts +2 -1
  24. package/dist/cjs/components/curd/curd.style.js +14 -4
  25. package/dist/cjs/components/curd/curdDialog.js +2 -1
  26. package/dist/cjs/components/curd/curdFilterable.d.ts +21 -0
  27. package/dist/cjs/components/curd/{curdFilter.js → curdFilterable.js} +19 -24
  28. package/dist/cjs/components/curd/index.d.ts +1 -1
  29. package/dist/cjs/components/curd/index.js +1 -1
  30. package/dist/cjs/components/dataGrid/columnResize.js +2 -2
  31. package/dist/cjs/components/dataGrid/dataGrid.d.ts +29 -12
  32. package/dist/cjs/components/dataGrid/dataGrid.js +46 -20
  33. package/dist/cjs/components/dataGrid/dataGrid.style.d.ts +5 -3
  34. package/dist/cjs/components/dataGrid/dataGrid.style.js +38 -33
  35. package/dist/cjs/components/dataGrid/dataGridHead.d.ts +4 -1
  36. package/dist/cjs/components/dataGrid/dataGridHead.js +28 -19
  37. package/dist/cjs/components/dataGrid/dataGridRows.js +1 -1
  38. package/dist/cjs/components/dataGrid/filterBubbleContent.d.ts +19 -0
  39. package/dist/cjs/components/dataGrid/filterBubbleContent.js +42 -0
  40. package/dist/cjs/components/dateTimePicker/dateTimePicker.d.ts +2 -2
  41. package/dist/cjs/components/dateTimePicker/dateTimePicker.js +27 -9
  42. package/dist/cjs/components/dateTimePicker/dateTimePicker.style.d.ts +1 -1
  43. package/dist/cjs/components/dateTimeRangePicker/dateTimeRangePicker.d.ts +4 -3
  44. package/dist/cjs/components/dateTimeRangePicker/dateTimeRangePicker.js +45 -23
  45. package/dist/cjs/components/descriptions/descriptions.js +2 -0
  46. package/dist/cjs/components/descriptions/descriptions.style.d.ts +1 -1
  47. package/dist/cjs/components/dialog/dialog.d.ts +1 -1
  48. package/dist/cjs/components/dialog/dialog.js +2 -2
  49. package/dist/cjs/components/dialog/dialog.style.d.ts +2 -2
  50. package/dist/cjs/components/draggable/draggable.d.ts +12 -2
  51. package/dist/cjs/components/draggable/draggable.js +34 -4
  52. package/dist/cjs/components/flex/flex.d.ts +7 -4
  53. package/dist/cjs/components/flex/flex.js +3 -3
  54. package/dist/cjs/components/form/form.d.ts +10 -5
  55. package/dist/cjs/components/form/form.js +45 -9
  56. package/dist/cjs/components/form/formItem.d.ts +12 -7
  57. package/dist/cjs/components/form/formItem.js +47 -33
  58. package/dist/cjs/components/form/formRelatable.js +2 -1
  59. package/dist/cjs/components/gallery/gallery.style.d.ts +1 -1
  60. package/dist/cjs/components/gallery/imageItem.js +1 -1
  61. package/dist/cjs/components/grid/grid.d.ts +5 -5
  62. package/dist/cjs/components/grid/gridItem.d.ts +8 -7
  63. package/dist/cjs/components/grid/gridItem.js +2 -3
  64. package/dist/cjs/components/image/image.d.ts +4 -4
  65. package/dist/cjs/components/input/input.d.ts +2 -2
  66. package/dist/cjs/components/input/input.js +9 -2
  67. package/dist/cjs/components/inputBase/inputBase.d.ts +16 -11
  68. package/dist/cjs/components/inputBase/inputBase.js +23 -12
  69. package/dist/cjs/components/loading/loading.d.ts +3 -1
  70. package/dist/cjs/components/loading/loading.js +2 -2
  71. package/dist/cjs/components/loading/loading.style.js +4 -3
  72. package/dist/cjs/components/loadingIndicator/loadingIndicator.d.ts +4 -2
  73. package/dist/cjs/components/loadingIndicator/loadingIndicator.js +2 -2
  74. package/dist/cjs/components/loadingIndicator/loadingIndicator.style.d.ts +1 -1
  75. package/dist/cjs/components/loadingIndicator/loadingIndicator.style.js +1 -2
  76. package/dist/cjs/components/loadingMask/loadingMask.js +1 -1
  77. package/dist/cjs/components/menu/menu.js +1 -1
  78. package/dist/cjs/components/menuItem/menuItem.d.ts +2 -2
  79. package/dist/cjs/components/optionsBase/optionsBase.js +1 -0
  80. package/dist/cjs/components/overlayBase/overlayBase.js +9 -6
  81. package/dist/cjs/components/overlayBase/overlayBase.style.js +0 -3
  82. package/dist/cjs/components/palette/palette.style.d.ts +1 -1
  83. package/dist/cjs/components/pickerDialog/pickerDialog.js +20 -7
  84. package/dist/cjs/components/pickerDialog/pickerDialog.style.d.ts +1 -1
  85. package/dist/cjs/components/popper/popper.d.ts +5 -2
  86. package/dist/cjs/components/popper/popper.js +31 -12
  87. package/dist/cjs/components/popper/popper.style.js +1 -2
  88. package/dist/cjs/components/progress/progress.js +1 -1
  89. package/dist/cjs/components/resizable/resizable.style.d.ts +1 -1
  90. package/dist/cjs/components/segmented/segmented.style.d.ts +1 -1
  91. package/dist/cjs/components/select/select.d.ts +2 -2
  92. package/dist/cjs/components/select/select.js +44 -20
  93. package/dist/cjs/components/selectedList/selectedItem.d.ts +1 -1
  94. package/dist/cjs/components/selectedList/selectedItem.js +2 -2
  95. package/dist/cjs/components/selectionContext/selectionContext.d.ts +0 -1
  96. package/dist/cjs/components/selectionContext/selectionHook.d.ts +1 -1
  97. package/dist/cjs/components/selectionContext/selectionHook.js +2 -2
  98. package/dist/cjs/components/serialInput/index.d.ts +1 -0
  99. package/dist/cjs/components/serialInput/index.js +4 -0
  100. package/dist/cjs/components/serialInput/serialInput.d.ts +21 -0
  101. package/dist/cjs/components/serialInput/serialInput.js +58 -0
  102. package/dist/cjs/components/serialInput/serialInput.style.d.ts +6 -0
  103. package/dist/cjs/components/serialInput/serialInput.style.js +13 -0
  104. package/dist/cjs/components/skeleton/skeleton.d.ts +2 -2
  105. package/dist/cjs/components/slidableActions/slidableActionsAction.js +15 -6
  106. package/dist/cjs/components/slider/slider.d.ts +2 -2
  107. package/dist/cjs/components/slider/slider.js +15 -21
  108. package/dist/cjs/components/snackbarBase/snackbarBase.style.d.ts +1 -1
  109. package/dist/cjs/components/snackbarBase/snackbarBase.style.js +1 -3
  110. package/dist/cjs/components/sortableItem/sortableItem.js +9 -10
  111. package/dist/cjs/components/switch/switch.d.ts +2 -2
  112. package/dist/cjs/components/table/table.d.ts +3 -3
  113. package/dist/cjs/components/table/table.style.d.ts +1 -1
  114. package/dist/cjs/components/table/tableSticky.d.ts +5 -5
  115. package/dist/cjs/components/table/tableSticky.js +4 -4
  116. package/dist/cjs/components/tabs/tabs.style.d.ts +3 -3
  117. package/dist/cjs/components/tag/tag.d.ts +1 -1
  118. package/dist/cjs/components/tag/tag.js +2 -1
  119. package/dist/cjs/components/tag/tag.style.d.ts +1 -1
  120. package/dist/cjs/components/textarea/textarea.d.ts +2 -2
  121. package/dist/cjs/components/textarea/textarea.js +5 -1
  122. package/dist/cjs/components/toggleButton/toggleButton.js +1 -1
  123. package/dist/cjs/components/transfer/transfer.style.d.ts +2 -2
  124. package/dist/cjs/components/transitionBase/collapse.js +36 -14
  125. package/dist/cjs/components/transitionBase/transitionBase.js +1 -1
  126. package/dist/cjs/components/transitionBase/transitionBase.style.js +1 -1
  127. package/dist/cjs/components/transportStyle/transportStyle.d.ts +1 -1
  128. package/dist/cjs/components/transportStyle/transportStyle.js +2 -3
  129. package/dist/cjs/components/tree/tree.d.ts +17 -4
  130. package/dist/cjs/components/tree/tree.js +15 -14
  131. package/dist/cjs/components/tree/tree.style.d.ts +9 -3
  132. package/dist/cjs/components/tree/tree.style.js +135 -4
  133. package/dist/cjs/components/tree/treeDnd.d.ts +25 -0
  134. package/dist/cjs/components/tree/treeDnd.js +23 -0
  135. package/dist/cjs/components/tree/treeNode.d.ts +2 -2
  136. package/dist/cjs/components/tree/treeNode.js +94 -16
  137. package/dist/cjs/components/treeSelect/treeSelect.d.ts +2 -2
  138. package/dist/cjs/components/treeSelect/treeSelect.js +3 -3
  139. package/dist/cjs/components/upload/upload.d.ts +2 -2
  140. package/dist/cjs/components/upload/upload.js +5 -2
  141. package/dist/cjs/components/upload/upload.style.d.ts +2 -2
  142. package/dist/cjs/extensions/curd/curd.d.ts +20 -0
  143. package/dist/cjs/extensions/curd/curd.js +20 -0
  144. package/dist/cjs/extensions/documentViewer/pdfViewer.d.ts +2 -2
  145. package/dist/cjs/extensions/reactiveForm/index.d.ts +2 -0
  146. package/dist/cjs/extensions/reactiveForm/index.js +5 -0
  147. package/dist/cjs/extensions/reactiveForm/reactiveForm.d.ts +19 -0
  148. package/dist/cjs/extensions/reactiveForm/reactiveForm.js +29 -0
  149. package/dist/cjs/extensions/reactiveForm/reactiveFormItem.d.ts +7 -0
  150. package/dist/cjs/extensions/reactiveForm/reactiveFormItem.js +39 -0
  151. package/dist/cjs/index.d.ts +1 -0
  152. package/dist/cjs/index.js +1 -0
  153. package/dist/cjs/types.d.ts +2 -2
  154. package/dist/cjs/utils/curd.js +5 -2
  155. package/dist/cjs/utils/dataGrid.d.ts +3 -2
  156. package/dist/cjs/utils/hooks.js +3 -3
  157. package/dist/cjs/utils/index.d.ts +2 -2
  158. package/dist/cjs/utils/index.js +2 -2
  159. package/dist/cjs/utils/utils.d.ts +17 -9
  160. package/dist/cjs/utils/utils.js +59 -16
  161. package/dist/esm/components/actionSheet/actionSheet.js +10 -5
  162. package/dist/esm/components/alert/alert.style.d.ts +2 -2
  163. package/dist/esm/components/app/appDialog.js +28 -24
  164. package/dist/esm/components/autocomplete/autocomplete.js +22 -28
  165. package/dist/esm/components/avatar/avatar.d.ts +2 -2
  166. package/dist/esm/components/avatar/avatar.js +7 -6
  167. package/dist/esm/components/avatar/avatarGroup.js +1 -1
  168. package/dist/esm/components/bubbleConfirm/bubbleConfirm.js +10 -3
  169. package/dist/esm/components/bubbleConfirm/bubbleConfirm.style.d.ts +1 -1
  170. package/dist/esm/components/cascade/cascade.d.ts +2 -2
  171. package/dist/esm/components/cascade/cascade.js +34 -22
  172. package/dist/esm/components/cascade/cascadePanel.js +24 -14
  173. package/dist/esm/components/checkboxBase/checkboxBase.d.ts +2 -2
  174. package/dist/esm/components/checkboxBase/checkboxBase.js +10 -3
  175. package/dist/esm/components/checkboxBase/checkboxBase.style.d.ts +1 -1
  176. package/dist/esm/components/checkboxBaseGroup/checkboxBaseGroup.js +3 -3
  177. package/dist/esm/components/clickAway/clickAway.d.ts +27 -27
  178. package/dist/esm/components/colorPicker/colorPicker.d.ts +2 -2
  179. package/dist/esm/components/colorPicker/colorPicker.js +3 -3
  180. package/dist/esm/components/counter/counter.js +10 -11
  181. package/dist/esm/components/curd/curd.d.ts +10 -12
  182. package/dist/esm/components/curd/curd.js +39 -34
  183. package/dist/esm/components/curd/curd.style.d.ts +2 -1
  184. package/dist/esm/components/curd/curd.style.js +14 -4
  185. package/dist/esm/components/curd/curdDialog.js +2 -1
  186. package/dist/esm/components/curd/curdFilterable.d.ts +21 -0
  187. package/dist/esm/components/curd/{curdFilter.js → curdFilterable.js} +20 -25
  188. package/dist/esm/components/curd/index.d.ts +1 -1
  189. package/dist/esm/components/curd/index.js +1 -1
  190. package/dist/esm/components/dataGrid/columnResize.js +3 -3
  191. package/dist/esm/components/dataGrid/dataGrid.d.ts +29 -12
  192. package/dist/esm/components/dataGrid/dataGrid.js +48 -22
  193. package/dist/esm/components/dataGrid/dataGrid.style.d.ts +5 -3
  194. package/dist/esm/components/dataGrid/dataGrid.style.js +38 -33
  195. package/dist/esm/components/dataGrid/dataGridHead.d.ts +4 -1
  196. package/dist/esm/components/dataGrid/dataGridHead.js +29 -20
  197. package/dist/esm/components/dataGrid/dataGridRows.js +1 -1
  198. package/dist/esm/components/dataGrid/filterBubbleContent.d.ts +19 -0
  199. package/dist/esm/components/dataGrid/filterBubbleContent.js +39 -0
  200. package/dist/esm/components/dateTimePicker/dateTimePicker.d.ts +2 -2
  201. package/dist/esm/components/dateTimePicker/dateTimePicker.js +28 -10
  202. package/dist/esm/components/dateTimePicker/dateTimePicker.style.d.ts +1 -1
  203. package/dist/esm/components/dateTimeRangePicker/dateTimeRangePicker.d.ts +4 -3
  204. package/dist/esm/components/dateTimeRangePicker/dateTimeRangePicker.js +46 -24
  205. package/dist/esm/components/descriptions/descriptions.js +2 -0
  206. package/dist/esm/components/descriptions/descriptions.style.d.ts +1 -1
  207. package/dist/esm/components/dialog/dialog.d.ts +1 -1
  208. package/dist/esm/components/dialog/dialog.js +2 -2
  209. package/dist/esm/components/dialog/dialog.style.d.ts +2 -2
  210. package/dist/esm/components/draggable/draggable.d.ts +12 -2
  211. package/dist/esm/components/draggable/draggable.js +35 -5
  212. package/dist/esm/components/flex/flex.d.ts +7 -4
  213. package/dist/esm/components/flex/flex.js +2 -2
  214. package/dist/esm/components/form/form.d.ts +10 -5
  215. package/dist/esm/components/form/form.js +43 -9
  216. package/dist/esm/components/form/formItem.d.ts +12 -7
  217. package/dist/esm/components/form/formItem.js +49 -35
  218. package/dist/esm/components/form/formRelatable.js +3 -2
  219. package/dist/esm/components/gallery/gallery.style.d.ts +1 -1
  220. package/dist/esm/components/gallery/imageItem.js +1 -1
  221. package/dist/esm/components/grid/grid.d.ts +5 -5
  222. package/dist/esm/components/grid/gridItem.d.ts +8 -7
  223. package/dist/esm/components/grid/gridItem.js +2 -2
  224. package/dist/esm/components/image/image.d.ts +4 -4
  225. package/dist/esm/components/input/input.d.ts +2 -2
  226. package/dist/esm/components/input/input.js +10 -3
  227. package/dist/esm/components/inputBase/inputBase.d.ts +16 -11
  228. package/dist/esm/components/inputBase/inputBase.js +25 -14
  229. package/dist/esm/components/loading/loading.d.ts +3 -1
  230. package/dist/esm/components/loading/loading.js +2 -2
  231. package/dist/esm/components/loading/loading.style.js +4 -3
  232. package/dist/esm/components/loadingIndicator/loadingIndicator.d.ts +4 -2
  233. package/dist/esm/components/loadingIndicator/loadingIndicator.js +2 -2
  234. package/dist/esm/components/loadingIndicator/loadingIndicator.style.d.ts +1 -1
  235. package/dist/esm/components/loadingIndicator/loadingIndicator.style.js +1 -2
  236. package/dist/esm/components/loadingMask/loadingMask.js +1 -1
  237. package/dist/esm/components/menu/menu.js +2 -2
  238. package/dist/esm/components/menuItem/menuItem.d.ts +2 -2
  239. package/dist/esm/components/optionsBase/optionsBase.js +1 -0
  240. package/dist/esm/components/overlayBase/overlayBase.js +10 -7
  241. package/dist/esm/components/overlayBase/overlayBase.style.js +0 -3
  242. package/dist/esm/components/palette/palette.style.d.ts +1 -1
  243. package/dist/esm/components/pickerDialog/pickerDialog.js +21 -8
  244. package/dist/esm/components/pickerDialog/pickerDialog.style.d.ts +1 -1
  245. package/dist/esm/components/popper/popper.d.ts +5 -2
  246. package/dist/esm/components/popper/popper.js +31 -12
  247. package/dist/esm/components/popper/popper.style.js +1 -2
  248. package/dist/esm/components/progress/progress.js +1 -1
  249. package/dist/esm/components/resizable/resizable.style.d.ts +1 -1
  250. package/dist/esm/components/segmented/segmented.style.d.ts +1 -1
  251. package/dist/esm/components/select/select.d.ts +2 -2
  252. package/dist/esm/components/select/select.js +46 -22
  253. package/dist/esm/components/selectedList/selectedItem.d.ts +1 -1
  254. package/dist/esm/components/selectedList/selectedItem.js +2 -2
  255. package/dist/esm/components/selectionContext/selectionContext.d.ts +0 -1
  256. package/dist/esm/components/selectionContext/selectionHook.d.ts +1 -1
  257. package/dist/esm/components/selectionContext/selectionHook.js +1 -1
  258. package/dist/esm/components/serialInput/index.d.ts +1 -0
  259. package/dist/esm/components/serialInput/index.js +1 -0
  260. package/dist/esm/components/serialInput/serialInput.d.ts +21 -0
  261. package/dist/esm/components/serialInput/serialInput.js +55 -0
  262. package/dist/esm/components/serialInput/serialInput.style.d.ts +6 -0
  263. package/dist/esm/components/serialInput/serialInput.style.js +10 -0
  264. package/dist/esm/components/skeleton/skeleton.d.ts +2 -2
  265. package/dist/esm/components/slidableActions/slidableActionsAction.js +16 -7
  266. package/dist/esm/components/slider/slider.d.ts +2 -2
  267. package/dist/esm/components/slider/slider.js +16 -22
  268. package/dist/esm/components/snackbarBase/snackbarBase.style.d.ts +1 -1
  269. package/dist/esm/components/snackbarBase/snackbarBase.style.js +1 -3
  270. package/dist/esm/components/sortableItem/sortableItem.js +10 -11
  271. package/dist/esm/components/switch/switch.d.ts +2 -2
  272. package/dist/esm/components/table/table.d.ts +3 -3
  273. package/dist/esm/components/table/table.style.d.ts +1 -1
  274. package/dist/esm/components/table/tableSticky.d.ts +5 -5
  275. package/dist/esm/components/table/tableSticky.js +3 -3
  276. package/dist/esm/components/tabs/tabs.style.d.ts +3 -3
  277. package/dist/esm/components/tag/tag.d.ts +1 -1
  278. package/dist/esm/components/tag/tag.js +2 -1
  279. package/dist/esm/components/tag/tag.style.d.ts +1 -1
  280. package/dist/esm/components/textarea/textarea.d.ts +2 -2
  281. package/dist/esm/components/textarea/textarea.js +6 -2
  282. package/dist/esm/components/toggleButton/toggleButton.js +2 -2
  283. package/dist/esm/components/transfer/transfer.style.d.ts +2 -2
  284. package/dist/esm/components/transitionBase/collapse.js +38 -16
  285. package/dist/esm/components/transitionBase/transitionBase.js +1 -1
  286. package/dist/esm/components/transitionBase/transitionBase.style.js +1 -1
  287. package/dist/esm/components/transportStyle/transportStyle.d.ts +1 -1
  288. package/dist/esm/components/transportStyle/transportStyle.js +2 -2
  289. package/dist/esm/components/tree/tree.d.ts +17 -4
  290. package/dist/esm/components/tree/tree.js +17 -16
  291. package/dist/esm/components/tree/tree.style.d.ts +9 -3
  292. package/dist/esm/components/tree/tree.style.js +135 -4
  293. package/dist/esm/components/tree/treeDnd.d.ts +25 -0
  294. package/dist/esm/components/tree/treeDnd.js +19 -0
  295. package/dist/esm/components/tree/treeNode.d.ts +2 -2
  296. package/dist/esm/components/tree/treeNode.js +96 -18
  297. package/dist/esm/components/treeSelect/treeSelect.d.ts +2 -2
  298. package/dist/esm/components/treeSelect/treeSelect.js +4 -4
  299. package/dist/esm/components/upload/upload.d.ts +2 -2
  300. package/dist/esm/components/upload/upload.js +6 -3
  301. package/dist/esm/components/upload/upload.style.d.ts +2 -2
  302. package/dist/esm/extensions/curd/curd.d.ts +20 -0
  303. package/dist/esm/extensions/curd/curd.js +20 -0
  304. package/dist/esm/extensions/documentViewer/pdfViewer.d.ts +2 -2
  305. package/dist/esm/extensions/reactiveForm/index.d.ts +2 -0
  306. package/dist/esm/extensions/reactiveForm/index.js +2 -0
  307. package/dist/esm/extensions/reactiveForm/reactiveForm.d.ts +19 -0
  308. package/dist/esm/extensions/reactiveForm/reactiveForm.js +25 -0
  309. package/dist/esm/extensions/reactiveForm/reactiveFormItem.d.ts +7 -0
  310. package/dist/esm/extensions/reactiveForm/reactiveFormItem.js +36 -0
  311. package/dist/esm/index.d.ts +1 -0
  312. package/dist/esm/index.js +1 -0
  313. package/dist/esm/types.d.ts +2 -2
  314. package/dist/esm/utils/curd.js +5 -2
  315. package/dist/esm/utils/dataGrid.d.ts +3 -2
  316. package/dist/esm/utils/hooks.js +3 -3
  317. package/dist/esm/utils/index.d.ts +2 -2
  318. package/dist/esm/utils/index.js +2 -2
  319. package/dist/esm/utils/utils.d.ts +17 -9
  320. package/dist/esm/utils/utils.js +58 -16
  321. package/extensions/reactiveForm.cjs +5 -0
  322. package/extensions/reactiveForm.d.ts +1 -0
  323. package/extensions/reactiveForm.js +1 -0
  324. package/package.json +2 -1
  325. package/dist/cjs/components/curd/curdFilter.d.ts +0 -16
  326. package/dist/esm/components/curd/curdFilter.d.ts +0 -16
  327. package/documentation/bootstrap.mjs +0 -8
  328. package/documentation/vite.config.mjs +0 -18
@@ -7,6 +7,7 @@ const tag_style_1 = require("./tag.style");
7
7
  const utils_1 = require("../../utils");
8
8
  const icon_1 = require("../icon");
9
9
  const faXmark_1 = require("@fortawesome/free-solid-svg-icons/faXmark");
10
+ const button_1 = require("../button");
10
11
  exports.Tag = (0, react_1.memo)(({ variant = 'outlined', color = 'text.secondary', shape = 'square', size = 'small', prefix, suffix, clickable, closable, onClose, ...props }) => {
11
12
  const closeHandler = (e) => {
12
13
  e.preventDefault();
@@ -16,5 +17,5 @@ exports.Tag = (0, react_1.memo)(({ variant = 'outlined', color = 'text.secondary
16
17
  return ((0, jsx_runtime_1.jsxs)("div", { ...props, css: (0, tag_style_1.useStyle)({ color: color || 'text.secondary' }), className: (0, utils_1.clsx)(tag_style_1.classes.root, props.className), "data-variant": variant, "data-size": size, "data-shape": shape, "data-clickable": clickable, children: [!!prefix &&
17
18
  (0, jsx_runtime_1.jsx)("div", { className: tag_style_1.classes.prefix, children: prefix }), (0, jsx_runtime_1.jsx)("div", { className: tag_style_1.classes.content, children: props.children }), !!suffix &&
18
19
  (0, jsx_runtime_1.jsx)("div", { className: tag_style_1.classes.suffix, children: suffix }), closable &&
19
- (0, jsx_runtime_1.jsx)("div", { className: tag_style_1.classes.close, onClick: closeHandler, children: (0, jsx_runtime_1.jsx)(icon_1.Icon, { icon: faXmark_1.faXmark }) })] }));
20
+ (0, jsx_runtime_1.jsx)(button_1.Button, { variant: "plain", className: tag_style_1.classes.close, onClick: closeHandler, children: (0, jsx_runtime_1.jsx)(icon_1.Icon, { icon: faXmark_1.faXmark }) })] }));
20
21
  });
@@ -1,9 +1,9 @@
1
1
  import { TagProps } from './tag';
2
2
  export declare const classes: {
3
3
  content: string;
4
+ close: string;
4
5
  prefix: string;
5
6
  suffix: string;
6
- close: string;
7
7
  } & {
8
8
  root: string;
9
9
  };
@@ -1,7 +1,7 @@
1
- import { Ref, JSX } from 'react';
1
+ import { Ref, ComponentProps } from 'react';
2
2
  import { InputBaseProps } from '../inputBase';
3
3
  export interface TextareaProps extends Omit<InputBaseProps<'textarea'>, 'children' | 'prefix' | 'suffix'> {
4
- textareaProps?: JSX.IntrinsicElements['textarea'];
4
+ textareaProps?: ComponentProps<'textarea'>;
5
5
  textareaRef?: Ref<HTMLTextAreaElement>;
6
6
  rows?: number;
7
7
  fullWidth?: boolean;
@@ -7,5 +7,9 @@ const inputBase_1 = require("../inputBase");
7
7
  const textarea_style_1 = require("./textarea.style");
8
8
  const utils_1 = require("../../utils");
9
9
  exports.Textarea = (0, react_1.memo)(({ textareaProps, textareaRef, rows, fullWidth = false, ...props }) => {
10
- return ((0, jsx_runtime_1.jsx)(inputBase_1.InputBase, { ...props, css: textarea_style_1.style, className: (0, utils_1.clsx)(textarea_style_1.classes.root, props.className), "data-full-width": fullWidth, children: ({ ref, ...rest }) => (0, jsx_runtime_1.jsx)("textarea", { rows: rows, ...rest, ...textareaProps, ref: (0, utils_1.cloneRef)(ref, textareaRef), className: (0, utils_1.clsx)(textarea_style_1.classes.textarea, textareaProps?.className) }) }));
10
+ return ((0, jsx_runtime_1.jsx)(inputBase_1.InputBase, { ...props, css: textarea_style_1.style, className: (0, utils_1.clsx)(textarea_style_1.classes.root, props.className), "data-full-width": fullWidth, children: inputBaseProps => (0, jsx_runtime_1.jsx)("textarea", { ...(0, utils_1.mergeComponentProps)(inputBaseProps, {
11
+ rows,
12
+ ref: textareaRef,
13
+ className: textarea_style_1.classes.textarea
14
+ }) }) }));
11
15
  });
@@ -10,7 +10,7 @@ const toggleButton_style_1 = require("./toggleButton.style");
10
10
  const button_1 = require("../button");
11
11
  const selectionContext_1 = require("../selectionContext");
12
12
  exports.ToggleButton = (({ variant = 'filled', size, color = 'primary', disabled, readOnly, items, primaryKey = 'value', multiple, defaultValue, value, onChange, ...props }) => {
13
- const [innerValue, toggleSelected] = (0, selectionContext_1.useShallowSelection)({
13
+ const [innerValue, toggleSelected] = (0, selectionContext_1.useFlatSelection)({
14
14
  disabled: disabled ?? readOnly,
15
15
  multiple,
16
16
  defaultValue,
@@ -2,11 +2,11 @@ export declare const classes: {
2
2
  info: string;
3
3
  header: string;
4
4
  title: string;
5
- checkbox: string;
6
5
  list: string;
7
- buttons: string;
6
+ checkbox: string;
8
7
  count: string;
9
8
  panel: string;
9
+ buttons: string;
10
10
  } & {
11
11
  root: string;
12
12
  };
@@ -12,22 +12,44 @@ const Collapse = ({ transitionType = 'sweeping', ...props }) => {
12
12
  exports.Collapse = Collapse;
13
13
  const Sweeping = ({ ref, in: _in = false, appear = true, orientation = 'vertical', collapsedSize = 0, ...props }) => {
14
14
  const innerRef = (0, react_1.useRef)(null);
15
- const [size, setSize] = (0, utils_1.useDerivedState)((prev) => {
16
- return typeof prev === 'undefined' && _in && !appear
17
- // 首次展开,如果appear为false,则返回auto,表示直接展开
18
- ? 'auto'
19
- // 其余情况均返回折叠尺寸,若是展开,展开尺寸需要在requestAnimationFrame后设置
20
- : typeof collapsedSize === 'function' ? collapsedSize() : collapsedSize;
21
- }, [_in]);
15
+ const getCollapsedSize = () => {
16
+ return typeof collapsedSize === 'function' ? collapsedSize() : collapsedSize;
17
+ };
18
+ const [size, setSize] = (0, react_1.useState)(() => {
19
+ if (_in && !appear) {
20
+ return 'auto';
21
+ }
22
+ return getCollapsedSize();
23
+ });
24
+ const [isEntered, setIsEntered] = (0, react_1.useState)(_in && !appear);
25
+ const expand = () => {
26
+ requestAnimationFrame(() => {
27
+ innerRef.current && setSize(innerRef.current[orientation === 'vertical' ? 'scrollHeight' : 'scrollWidth']);
28
+ });
29
+ };
30
+ const collapse = () => {
31
+ setIsEntered(false);
32
+ requestAnimationFrame(() => {
33
+ setSize(getCollapsedSize());
34
+ });
35
+ };
36
+ const initialized = (0, react_1.useRef)(false);
22
37
  (0, react_1.useEffect)(() => {
23
- if (_in && size.current !== 'auto') {
24
- requestAnimationFrame(() => {
25
- innerRef.current && setSize(innerRef.current[orientation === 'vertical' ? 'scrollHeight' : 'scrollWidth']);
26
- });
38
+ if (!initialized.current) {
39
+ // 首次渲染
40
+ initialized.current = true;
41
+ if (!appear) {
42
+ // 若appear为false,则跳过首次动画
43
+ return;
44
+ }
27
45
  }
46
+ _in
47
+ ? expand()
48
+ : collapse();
28
49
  }, [_in]);
29
- return ((0, jsx_runtime_1.jsx)(transitionBase_1.TransitionBase, { ...props, in: _in, ref: (0, utils_1.cloneRef)(ref, innerRef), style: {
30
- [orientation === 'vertical' ? 'height' : 'width']: size.current,
50
+ return ((0, jsx_runtime_1.jsx)(transitionBase_1.TransitionBase, { ...props, appear: appear, orientation: orientation, in: _in, ref: (0, utils_1.cloneRef)(ref, innerRef), style: {
51
+ [orientation === 'vertical' ? 'height' : 'width']: isEntered ? 'auto' : size,
52
+ ...!isEntered ? { overflow: 'hidden' } : {},
31
53
  ...props.style
32
- } }));
54
+ }, onEntered: () => setIsEntered(true) }));
33
55
  };
@@ -25,5 +25,5 @@ exports.TransitionBase = (({ ref, component: Component = 'div', orientation = 'v
25
25
  }
26
26
  }
27
27
  const innerRef = (0, react_1.useRef)(null);
28
- return ((0, jsx_runtime_1.jsx)(react_transition_group_1.CSSTransition, { ...props, nodeRef: innerRef, className: (0, utils_1.clsx)(transitionBase_style_1.classes.root, props.className), timeout: timeout, appear: appear, children: (0, jsx_runtime_1.jsx)(Component, { ref: (0, utils_1.cloneRef)(ref, innerRef), css: cssArr, children: props.children }) }));
28
+ return ((0, jsx_runtime_1.jsx)(react_transition_group_1.CSSTransition, { ...props, css: cssArr, nodeRef: innerRef, className: (0, utils_1.clsx)(transitionBase_style_1.classes.root, props.className), timeout: timeout, appear: appear, children: (0, jsx_runtime_1.jsx)(Component, { ref: (0, utils_1.cloneRef)(ref, innerRef), children: props.children }) }));
29
29
  });
@@ -48,7 +48,7 @@ exports.fadeStyle = (0, utils_1.defineCss)(({ easing }) => (0, react_1.css) `
48
48
  }
49
49
  `);
50
50
  exports.sweepingStyle = (0, utils_1.defineCss)(({ easing }) => (0, react_1.css) `
51
- overflow: hidden;
51
+ //overflow: hidden;
52
52
  transition-property: opacity, width, height;
53
53
 
54
54
  &.appear-active,
@@ -31,4 +31,4 @@ export type TransportStyleOwnProps = {
31
31
  overflow?: CSSProperties['overflow'];
32
32
  };
33
33
  export type TransportStyleProps<C extends ElementType = 'div'> = OverridableProps<TransportStyleOwnProps, C>;
34
- export declare const TransportStyle: OverridableComponent<TransportStyleProps>;
34
+ export declare const TransportStyle: OverridableComponent<TransportStyleOwnProps>;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TransportStyle = void 0;
4
4
  const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
5
5
  const utils_1 = require("../../utils");
6
- const TransportStyle = ({ component: Component = 'div', alignItems, justifyContent, alignSelf, justifySelf, flex, width, minWidth, maxWidth, height, minHeight, maxHeight, lineHeight, paddingTop, paddingRight, paddingBottom, paddingLeft, padding, marginTop, marginRight, marginBottom, marginLeft, margin, overflowX, overflowY, overflow, ...props }) => {
6
+ exports.TransportStyle = (({ component: Component = 'div', alignItems, justifyContent, alignSelf, justifySelf, flex, width, minWidth, maxWidth, height, minHeight, maxHeight, lineHeight, paddingTop, paddingRight, paddingBottom, paddingLeft, padding, marginTop, marginRight, marginBottom, marginLeft, margin, overflowX, overflowY, overflow, ...props }) => {
7
7
  return ((0, jsx_runtime_1.jsx)(Component, { ...props, style: (0, utils_1.filterProperties)({
8
8
  alignItems, justifyContent, alignSelf, justifySelf, flex,
9
9
  width, minWidth, maxWidth, height, minHeight, maxHeight, lineHeight,
@@ -12,5 +12,4 @@ const TransportStyle = ({ component: Component = 'div', alignItems, justifyConte
12
12
  overflow, overflowX, overflowY,
13
13
  ...props.style
14
14
  }) }));
15
- };
16
- exports.TransportStyle = TransportStyle;
15
+ });
@@ -6,13 +6,21 @@ import { TreeNode, TreeNodeProps } from './treeNode';
6
6
  export interface NodeType<V extends Id = Id> extends Partial<Omit<TreeNodeProps, 'children'>>, Omit<OptionType<V>, 'children'> {
7
7
  children?: NodeType<V>[];
8
8
  }
9
+ export type SortPlacement = 'before' | 'after';
10
+ export type SortInfo<V extends Id = Id> = {
11
+ source: V;
12
+ destination: V;
13
+ placement: SortPlacement | 'child';
14
+ };
9
15
  export interface TreeBaseProps<N extends NodeType<V>, V extends Id = Id> extends Omit<SelectionContextBaseProps<N, V>, 'options'>, Omit<DivProps, 'defaultValue' | 'onChange' | 'onToggle'> {
10
16
  nodes?: N[];
17
+ /** 默认为`label` */
11
18
  labelKey?: keyof N;
12
19
  searchTokenKey?: keyof N;
13
20
  showLine?: boolean;
14
21
  indent?: number;
15
22
  renderExpandIcon?(nodeValue: V, isExpand: boolean, expanded: V[]): ReactNode;
23
+ /** 是否显示`checkbox`选择框,`multiple`为`true`时,默认为`true`,否则默认为`false` */
16
24
  showCheckbox?: boolean;
17
25
  readOnly?: boolean;
18
26
  /** 为true时,点击标签也会展开节点,默认为`false`, 仅点击展开按钮才能展开节点 */
@@ -20,6 +28,11 @@ export interface TreeBaseProps<N extends NodeType<V>, V extends Id = Id> extends
20
28
  defaultExpanded?: V[];
21
29
  expanded?: V[];
22
30
  onExpandedChange?(expanded: V[], nodeValue: V, isExpand: boolean): void;
31
+ /** 是否可以拖拽排序,默认为`false` */
32
+ sortable?: boolean;
33
+ /** 是否显示拖拽把手,默认为`true` */
34
+ showDragHandle?: boolean;
35
+ onSort?(info: SortInfo<V>): void;
23
36
  searchable?: boolean;
24
37
  searchInputProps?: InputProps;
25
38
  defaultSearchValue?: string;
@@ -28,11 +41,11 @@ export interface TreeBaseProps<N extends NodeType<V>, V extends Id = Id> extends
28
41
  }
29
42
  export type TreeProps<N extends NodeType<V>, V extends Id = Id> = TreeBaseProps<N, V> & SelectableProps<V>;
30
43
  type TreeContext<V extends Id = Id> = {
31
- expandedSet?: Set<V>;
32
- toggleExpanded?(value: V): void;
33
- indent?: number;
44
+ expandedSet: Set<V>;
45
+ toggleExpanded(value: V): void;
46
+ indent: number;
34
47
  renderExpandIcon?: TreeBaseProps<any, V>['renderExpandIcon'];
35
- showCheckbox?: boolean;
48
+ showCheckbox: boolean;
36
49
  readOnly?: boolean;
37
50
  disabled?: boolean;
38
51
  clickLabelToExpand?: boolean;
@@ -10,21 +10,22 @@ const input_1 = require("../input");
10
10
  const tree_style_1 = require("./tree.style");
11
11
  const utils_1 = require("../../utils");
12
12
  const highlight_1 = require("../highlight");
13
- const placeholder_1 = require("../placeholder");
14
13
  const treeNode_1 = require("./treeNode");
15
14
  const icon_1 = require("../icon");
16
15
  const faMagnifyingGlass_1 = require("@fortawesome/free-solid-svg-icons/faMagnifyingGlass");
16
+ const treeDnd_1 = require("./treeDnd");
17
17
  const TreeContext = (0, react_2.createContext)({});
18
18
  function useTreeContext() {
19
19
  return (0, react_2.useContext)(TreeContext);
20
20
  }
21
- exports.Tree = (0, react_2.memo)(({ nodes, labelKey = 'label', searchTokenKey, showLine = true, indent = 24, renderExpandIcon, multiple, showCheckbox = !!multiple, readOnly, clickLabelToExpand, defaultExpanded, expanded, onExpandedChange, searchable, searchInputProps, defaultSearchValue, searchValue, onSearchChange,
21
+ exports.Tree = (0, react_2.memo)(({ nodes, labelKey = 'label', searchTokenKey, showLine = true, indent = 24, renderExpandIcon, multiple, showCheckbox = !!multiple, readOnly, clickLabelToExpand, defaultExpanded, expanded, onExpandedChange, sortable = false, showDragHandle = true, onSort, searchable, searchInputProps, defaultSearchValue, searchValue, onSearchChange,
22
22
  // 从SelectionContext继承来的属性
23
- primaryKey = 'value', childrenKey = 'children', relation = 'dependent', integration = 'shallowest', clearable, disabled, defaultValue, value, onChange, onToggle, ...props }) => {
23
+ primaryKey = 'id', childrenKey = 'children', relation = 'dependent', integration = 'shallowest', clearable, disabled, defaultValue, value, onChange, onToggle, ...props }) => {
24
24
  const selectionContextProps = {
25
25
  options: nodes, primaryKey, childrenKey, relation, integration,
26
26
  multiple, defaultValue, value, onChange, disabled
27
27
  };
28
+ const containerRef = (0, react_2.useRef)(null);
28
29
  /**
29
30
  * --------------------------------------------------------------
30
31
  * 统一处理nodes与children
@@ -56,20 +57,22 @@ primaryKey = 'value', childrenKey = 'children', relation = 'dependent', integrat
56
57
  defaultExpanded, expanded, onExpandedChange,
57
58
  defaultSearchValue, searchValue, onSearchChange
58
59
  });
59
- return ((0, jsx_runtime_1.jsxs)("div", { ...props, css: tree_style_1.style, className: (0, utils_1.clsx)(tree_style_1.classes.root, props.className), "data-show-line": showLine, children: [searchable &&
60
+ return ((0, jsx_runtime_1.jsxs)("div", { ...props, ref: (0, utils_1.cloneRef)(containerRef, props.ref), css: tree_style_1.style, className: (0, utils_1.clsx)(tree_style_1.classes.root, tree_style_1.classes.levelBlock, props.className), "data-show-line": showLine, "data-sortable": sortable, children: [searchable &&
60
61
  (0, jsx_runtime_1.jsx)(input_1.Input, { className: tree_style_1.classes.search, prefix: (0, jsx_runtime_1.jsx)(icon_1.Icon, { icon: faMagnifyingGlass_1.faMagnifyingGlass }), placeholder: "\u641C\u7D22", value: innerSearchValue.current, ...searchInputProps, onChange: e => {
61
62
  searchInputProps?.onChange?.(e);
62
63
  setInnerSearchValue(e.target.value);
63
64
  } }), (0, jsx_runtime_1.jsx)(selectionContext_1.SelectionContext, { ...selectionContextProps, children: (0, jsx_runtime_1.jsx)(TreeContext, { value: (0, react_2.useMemo)(() => ({
64
- expandedSet, toggleExpanded, indent, renderExpandIcon,
65
- showCheckbox, readOnly, disabled, clickLabelToExpand
65
+ expandedSet, toggleExpanded, indent, renderExpandIcon, clickLabelToExpand,
66
+ showCheckbox, readOnly, disabled
66
67
  }), [
67
- expandedSet, indent, renderExpandIcon,
68
- showCheckbox, readOnly, disabled, clickLabelToExpand
69
- ]), children: (0, react_2.useMemo)(() => {
70
- if (filteredTreeData?.length) {
68
+ expandedSet, indent, renderExpandIcon, clickLabelToExpand,
69
+ showCheckbox, readOnly, disabled
70
+ ]), children: (0, jsx_runtime_1.jsx)(treeDnd_1.TreeDnd, { sortable: sortable, showDragHandle: showDragHandle, onSort: onSort, containerRef: containerRef, children: (0, react_2.useMemo)(() => {
71
+ if (!filteredTreeData?.length) {
72
+ return null;
73
+ }
71
74
  const fn = (arr) => {
72
- return arr?.map(({ _parentId, ...nodeProps }) => {
75
+ return arr?.map(({ _parentId, ...nodeProps }, i) => {
73
76
  const currentValue = nodeProps[primaryKey];
74
77
  const label = nodeProps[labelKey];
75
78
  return ((0, react_1.createElement)(treeNode_1.TreeNode, { ...nodeProps, key: currentValue, value: currentValue, label: typeof label === 'string' && deferredSearchValue
@@ -78,8 +81,6 @@ primaryKey = 'value', childrenKey = 'children', relation = 'dependent', integrat
78
81
  });
79
82
  };
80
83
  return fn(filteredTreeData);
81
- }
82
- return (0, jsx_runtime_1.jsx)(placeholder_1.Placeholder, {});
83
- }, [filteredTreeData]) }) })] }));
84
+ }, [filteredTreeData]) }) }) })] }));
84
85
  });
85
86
  exports.Tree.Node = treeNode_1.TreeNode;
@@ -1,13 +1,19 @@
1
1
  export declare const classes: {
2
2
  label: string;
3
3
  search: string;
4
- icon: string;
5
4
  prefix: string;
6
- checkbox: string;
7
- suffix: string;
5
+ icon: string;
8
6
  expand: string;
9
7
  indent: string;
10
8
  node: string;
9
+ checkbox: string;
10
+ suffix: string;
11
+ contentWrap: string;
12
+ levelBlock: string;
13
+ dragHandle: string;
14
+ dragMask: string;
15
+ dragMaskPrev: string;
16
+ dragMaskNext: string;
11
17
  } & {
12
18
  root: string;
13
19
  };
@@ -6,15 +6,21 @@ const react_1 = require("@emotion/react");
6
6
  const utils_1 = require("../../utils");
7
7
  const color_1 = tslib_1.__importDefault(require("color"));
8
8
  exports.classes = (0, utils_1.defineInnerClasses)('tree', [
9
+ 'levelBlock',
9
10
  'search',
10
11
  'node',
12
+ 'contentWrap',
11
13
  'indent',
12
14
  'expand',
13
15
  'checkbox',
16
+ 'dragHandle',
14
17
  'icon',
15
18
  'label',
16
19
  'prefix',
17
- 'suffix'
20
+ 'suffix',
21
+ 'dragMask',
22
+ 'dragMaskPrev',
23
+ 'dragMaskNext'
18
24
  ]);
19
25
  exports.style = (0, utils_1.defineCss)(({ spacing, mode, borderRadius, text, easing, gray, divider, colors }) => {
20
26
  const c = (0, color_1.default)(colors.primary.main);
@@ -32,10 +38,9 @@ exports.style = (0, utils_1.defineCss)(({ spacing, mode, borderRadius, text, eas
32
38
  display: flex;
33
39
  align-items: center;
34
40
  padding-right: ${spacing[2]}px;
35
- margin-bottom: 1px;
36
- cursor: pointer;
37
41
  border-radius: ${borderRadius}px;
38
42
  transition: background-color .25s ${easing.easeOut};
43
+ touch-action: none;
39
44
  -webkit-tap-highlight-color: transparent;
40
45
 
41
46
  &[data-disabled=true] {
@@ -43,6 +48,10 @@ exports.style = (0, utils_1.defineCss)(({ spacing, mode, borderRadius, text, eas
43
48
  cursor: not-allowed;
44
49
  }
45
50
 
51
+ &:not([data-read-only=true]) {
52
+ cursor: pointer;
53
+ }
54
+
46
55
  &[data-selected=true] {
47
56
  background-color: ${selectedBg};
48
57
 
@@ -55,7 +64,7 @@ exports.style = (0, utils_1.defineCss)(({ spacing, mode, borderRadius, text, eas
55
64
  background-color: ${selectedActive};
56
65
  }
57
66
  }
58
-
67
+
59
68
  &:not([data-disabled=true]):not([data-selected=true]):hover {
60
69
  background-color: ${hover};
61
70
  }
@@ -81,6 +90,21 @@ exports.style = (0, utils_1.defineCss)(({ spacing, mode, borderRadius, text, eas
81
90
  }
82
91
  }
83
92
 
93
+ .${exports.classes.contentWrap} {
94
+ flex: 1;
95
+ display: flex;
96
+ align-items: center;
97
+ position: relative;
98
+ }
99
+
100
+ .${exports.classes.dragHandle} {
101
+ width: 20px;
102
+ margin-right: ${spacing[3]}px;
103
+ text-align: center;
104
+ color: ${gray(.12)};
105
+ cursor: grab;
106
+ }
107
+
84
108
  .${exports.classes.checkbox} {
85
109
  margin-right: ${spacing[3]}px;
86
110
  }
@@ -88,6 +112,7 @@ exports.style = (0, utils_1.defineCss)(({ spacing, mode, borderRadius, text, eas
88
112
  .${exports.classes.label} {
89
113
  flex: 1;
90
114
  padding: 5px 0;
115
+
91
116
  }
92
117
 
93
118
  .${exports.classes.prefix} {
@@ -99,6 +124,88 @@ exports.style = (0, utils_1.defineCss)(({ spacing, mode, borderRadius, text, eas
99
124
  color: ${text.disabled};
100
125
  margin-left: ${spacing[2]}px;
101
126
  }
127
+
128
+ .${exports.classes.dragMask} {
129
+ position: absolute;
130
+ inset: 0;
131
+
132
+ > div {
133
+ width: 100%;
134
+ height: 50%;
135
+ position: absolute;
136
+ left: 0;
137
+
138
+ &:before, &:after {
139
+ content: '';
140
+ display: none;
141
+ position: absolute;
142
+ pointer-events: none;
143
+ }
144
+
145
+ &:before {
146
+ width: 8px;
147
+ height: 8px;
148
+ border: 2px solid ${colors.primary.main};
149
+ border-radius: 50%;
150
+ left: 0;
151
+ }
152
+
153
+ &:after {
154
+ width: 100%;
155
+ height: 2px;
156
+ background: ${colors.primary.main};
157
+ left: 8px;
158
+ }
159
+
160
+ &.${exports.classes.dragMaskPrev} {
161
+ top: 0;
162
+
163
+ &:before {
164
+ top: -4px;
165
+ }
166
+
167
+ &:after {
168
+ top: -1px;
169
+ }
170
+ }
171
+
172
+ &.${exports.classes.dragMaskNext} {
173
+ bottom: 0;
174
+
175
+ &:before {
176
+ bottom: -4px;
177
+ }
178
+
179
+ &:after {
180
+ bottom: -1px;
181
+ }
182
+ }
183
+
184
+ &[data-offset=true] {
185
+ &:before {
186
+ width: 10px;
187
+ border-top: 0;
188
+ border-right: 0;
189
+ border-bottom: 2px dashed ${colors.primary.main};
190
+ border-left: 2px dashed ${colors.primary.main};
191
+ border-radius: 0;
192
+ left: 24px;
193
+ bottom: -1px;
194
+ }
195
+
196
+ &:after {
197
+ width: calc(100% - 36px);
198
+ left: 36px;
199
+ }
200
+ }
201
+
202
+ &[data-overing=true] {
203
+ &:before, &:after {
204
+ display: block;
205
+ }
206
+ }
207
+ }
208
+ }
102
209
  }
103
210
 
104
211
  &[data-show-line=true] {
@@ -110,5 +217,29 @@ exports.style = (0, utils_1.defineCss)(({ spacing, mode, borderRadius, text, eas
110
217
  background-color: ${divider};
111
218
  }
112
219
  }
220
+
221
+ &, .${exports.classes.levelBlock} {
222
+ &[data-active=true] {
223
+ outline: 1px dashed ${colors.primary.main};
224
+ }
225
+ }
226
+
227
+ &[data-sortable=true] {
228
+ .${exports.classes.node} {
229
+ &:not(:has(.${exports.classes.dragHandle})) {
230
+ cursor: grab;
231
+ }
232
+
233
+ &[data-dragging=true] {
234
+ &, &:active {
235
+ background-color: ${selectedBg};
236
+ }
237
+ }
238
+
239
+ &:has(+ .${exports.classes.levelBlock}[data-active=true]) {
240
+ outline: 1px solid ${colors.primary.main};
241
+ }
242
+ }
243
+ }
113
244
  `;
114
245
  });
@@ -0,0 +1,25 @@
1
+ import { Dispatch, ReactNode, RefObject, SetStateAction } from 'react';
2
+ import { Id } from '../../types';
3
+ import { SortPlacement, TreeBaseProps } from './tree';
4
+ type TreeDndContextItem<T> = [T | undefined, Dispatch<SetStateAction<T | undefined>>];
5
+ type ITreeDndContext = {
6
+ sortable: boolean;
7
+ showDragHandle: boolean;
8
+ containerRef: RefObject<HTMLDivElement | null>;
9
+ isOffsetSatisfied: [boolean, Dispatch<SetStateAction<boolean>>];
10
+ dragging: TreeDndContextItem<Id>;
11
+ overing: TreeDndContextItem<Id>;
12
+ placement: [RefObject<SortPlacement | undefined>, Dispatch<SetStateAction<SortPlacement | undefined>>];
13
+ onSort: TreeBaseProps<any>['onSort'];
14
+ overingTimer: RefObject<any>;
15
+ };
16
+ export declare const TreeDndContext: import("react").Context<ITreeDndContext>;
17
+ export declare function useTreeDndContext(): ITreeDndContext;
18
+ export declare const TreeDnd: import("react").MemoExoticComponent<({ sortable, showDragHandle, onSort, containerRef, children }: {
19
+ sortable: boolean;
20
+ showDragHandle: boolean;
21
+ onSort: TreeBaseProps<any>["onSort"];
22
+ containerRef: RefObject<HTMLDivElement | null>;
23
+ children: ReactNode;
24
+ }) => import("@emotion/react/jsx-runtime").JSX.Element>;
25
+ export {};
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TreeDnd = exports.TreeDndContext = void 0;
4
+ exports.useTreeDndContext = useTreeDndContext;
5
+ const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
6
+ const react_1 = require("react");
7
+ const utils_1 = require("../../utils");
8
+ exports.TreeDndContext = (0, react_1.createContext)({});
9
+ function useTreeDndContext() {
10
+ return (0, react_1.useContext)(exports.TreeDndContext);
11
+ }
12
+ exports.TreeDnd = (0, react_1.memo)(({ sortable, showDragHandle, onSort, containerRef, children }) => {
13
+ const isOffsetSatisfied = (0, react_1.useState)(false);
14
+ const dragging = (0, react_1.useState)(void 0);
15
+ const overing = (0, react_1.useState)(void 0);
16
+ const placement = (0, utils_1.useSyncState)(void 0);
17
+ const overingTimer = (0, react_1.useRef)(void 0);
18
+ return ((0, jsx_runtime_1.jsx)(exports.TreeDndContext, { value: {
19
+ sortable, showDragHandle, onSort, containerRef,
20
+ isOffsetSatisfied, dragging, overing, placement,
21
+ overingTimer
22
+ }, children: children }));
23
+ });
@@ -1,4 +1,4 @@
1
- import { ReactNode } from 'react';
1
+ import React, { ReactNode } from 'react';
2
2
  import { DivProps, Id } from '../../types';
3
3
  export interface TreeNodeProps extends Omit<DivProps, 'prefix'> {
4
4
  value: Id;
@@ -9,4 +9,4 @@ export interface TreeNodeProps extends Omit<DivProps, 'prefix'> {
9
9
  /** @private 内部使用,表明该节点的层级 */
10
10
  _level?: number;
11
11
  }
12
- export declare const TreeNode: import("react").MemoExoticComponent<({ value, label, prefix, suffix, disabled, _level, ...props }: TreeNodeProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
12
+ export declare const TreeNode: React.MemoExoticComponent<({ value, label, prefix, suffix, disabled, _level, ...props }: TreeNodeProps) => import("@emotion/react/jsx-runtime").JSX.Element>;