@canlooks/can-ui 0.0.69 → 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 +39 -34
  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 +40 -35
  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
@@ -15,6 +15,8 @@ function useDescriptionsContext() {
15
15
  }
16
16
  const DescriptionsContext = (0, react_2.createContext)({});
17
17
  exports.Descriptions = (0, react_2.memo)(({ size, labelWidth, colon = ':', labelPlacement = 'left', disableMargin, disablePadding, items, itemComponent: ItemComponent = descriptionItem_1.DescriptionItem, variant = 'grid', columnCount = 3, ...props }) => {
18
+ const theme = (0, theme_1.useTheme)();
19
+ size ??= theme.size;
18
20
  const contextValue = (0, react_2.useMemo)(() => ({
19
21
  size, labelWidth, colon, labelPlacement, disableMargin, disablePadding, variant
20
22
  }), [
@@ -2,8 +2,8 @@ export declare const classes: {
2
2
  col: string;
3
3
  label: string;
4
4
  content: string;
5
- vertical: string;
6
5
  colon: string;
6
+ vertical: string;
7
7
  item: string;
8
8
  labelCol: string;
9
9
  contentCol: string;
@@ -33,4 +33,4 @@ export interface DialogProps extends Omit<ModalProps, 'title' | 'prefix'> {
33
33
  defaultOpen?: boolean;
34
34
  onClose?(closeReason: DialogCloseReason): void;
35
35
  }
36
- export declare function Dialog({ ref, icon, title, footer, prefix, suffix, width, minWidth, maxWidth, showClose, closeProps, showConfirm, confirmText, confirmProps, onConfirm, confirmLoading, showCancel, cancelText, cancelProps, onCancel, draggable, maskClosable, escapeClosable, defaultOpen, open, onClose, ...props }: DialogProps): import("@emotion/react/jsx-runtime").JSX.Element;
36
+ export declare function Dialog({ icon, title, footer, prefix, suffix, width, minWidth, maxWidth, showClose, closeProps, showConfirm, confirmText, confirmProps, onConfirm, confirmLoading, showCancel, cancelText, cancelProps, onCancel, draggable, maskClosable, escapeClosable, defaultOpen, open, onClose, ...props }: DialogProps): import("@emotion/react/jsx-runtime").JSX.Element;
@@ -10,7 +10,7 @@ const button_1 = require("../button");
10
10
  const draggable_1 = require("../draggable");
11
11
  const icon_1 = require("../icon");
12
12
  const faXmark_1 = require("@fortawesome/free-solid-svg-icons/faXmark");
13
- function Dialog({ ref, icon, title, footer, prefix, suffix, width = 420, minWidth, maxWidth = '100%', showClose = true, closeProps, showConfirm = true, confirmText = '确 定', confirmProps, onConfirm, confirmLoading = false, showCancel = true, cancelText = '取 消', cancelProps, onCancel, draggable = true, maskClosable = true, escapeClosable = true, defaultOpen = false, open, onClose, ...props }) {
13
+ function Dialog({ icon, title, footer, prefix, suffix, width = 420, minWidth, maxWidth = '100%', showClose = true, closeProps, showConfirm = true, confirmText = '确 定', confirmProps, onConfirm, confirmLoading = false, showCancel = true, cancelText = '取 消', cancelProps, onCancel, draggable = true, maskClosable = true, escapeClosable = true, defaultOpen = false, open, onClose, ...props }) {
14
14
  const [innerOpen, _setInnerOpen] = (0, utils_1.useControlled)(defaultOpen, open);
15
15
  const close = (closeReason) => {
16
16
  if (!innerLoading.current || closeReason === 'confirmed') {
@@ -81,7 +81,7 @@ function Dialog({ ref, icon, title, footer, prefix, suffix, width = 420, minWidt
81
81
  }
82
82
  return footer;
83
83
  };
84
- return ((0, jsx_runtime_1.jsx)(modal_1.Modal, { ...props, ref: (0, utils_1.cloneRef)(ref, overlayRef), css: dialog_style_1.style, className: (0, utils_1.clsx)(dialog_style_1.classes.root, props.className), open: innerOpen.current, onMaskClick: onMaskClick, "data-draggable": draggable, children: (0, jsx_runtime_1.jsx)(draggable_1.Draggable, { container: () => overlayRef.current, children: (targetProps, handleProps) => (0, jsx_runtime_1.jsxs)("div", { className: dialog_style_1.classes.card, ...targetProps, style: { width, minWidth, maxWidth, ...targetProps.style }, children: [!!icon &&
84
+ return ((0, jsx_runtime_1.jsx)(modal_1.Modal, { ...props, ref: (0, utils_1.cloneRef)(overlayRef, props.ref), css: dialog_style_1.style, className: (0, utils_1.clsx)(dialog_style_1.classes.root, props.className), open: innerOpen.current, onMaskClick: onMaskClick, "data-draggable": draggable, children: (0, jsx_runtime_1.jsx)(draggable_1.Draggable, { container: () => overlayRef.current, children: (targetProps, handleProps) => (0, jsx_runtime_1.jsxs)("div", { className: dialog_style_1.classes.card, ...targetProps, style: { width, minWidth, maxWidth, ...targetProps.style }, children: [!!icon &&
85
85
  (0, jsx_runtime_1.jsx)("div", { className: dialog_style_1.classes.icon, children: icon }), (0, jsx_runtime_1.jsxs)("div", { className: dialog_style_1.classes.content, children: [!!(title || showClose) &&
86
86
  (0, jsx_runtime_1.jsxs)("div", { className: dialog_style_1.classes.titleRow, ...handleProps, children: [(0, jsx_runtime_1.jsx)("div", { className: dialog_style_1.classes.title, children: title }), showClose &&
87
87
  (0, jsx_runtime_1.jsx)(button_1.Button, { shape: "circular", variant: "text", color: "text.secondary", ...closeProps, className: (0, utils_1.clsx)(dialog_style_1.classes.close, closeProps?.className), onClick: closeHandler, children: (0, jsx_runtime_1.jsx)(icon_1.Icon, { icon: faXmark_1.faXmark }) })] }), (0, jsx_runtime_1.jsxs)("div", { ref: bodyRef, className: dialog_style_1.classes.body, onScroll: onScroll, children: [!!prefix &&
@@ -2,11 +2,11 @@ export declare const classes: {
2
2
  body: string;
3
3
  footer: string;
4
4
  title: string;
5
- icon: string;
6
5
  content: string;
6
+ close: string;
7
7
  prefix: string;
8
+ icon: string;
8
9
  suffix: string;
9
- close: string;
10
10
  card: string;
11
11
  titleRow: string;
12
12
  bodyWrap: string;
@@ -1,14 +1,24 @@
1
- import { ReactElement, ReactNode } from 'react';
1
+ import React, { ReactElement, ReactNode, Ref } from 'react';
2
2
  import { DraggableGestureOptions, HandleProps } from '../../utils';
3
3
  import { DefineElement } from '../../types';
4
4
  export type DraggableTargetProps = {
5
+ onTransitionEnd(e: React.TransitionEvent): void;
5
6
  style: {
6
7
  translate: string;
7
8
  };
9
+ 'data-dragging': 'true' | 'false';
10
+ };
11
+ export type DraggableRef = {
12
+ restore(transition?: boolean): void;
8
13
  };
9
14
  export interface DraggableProps extends DraggableGestureOptions {
15
+ ref?: Ref<DraggableRef>;
10
16
  translateLimit?(targetTranslate: [number, number]): [number, number];
17
+ /** 拖拽结束后是否恢复原来的位置,默认为`false` */
18
+ restoreOnDragEnd?: boolean;
19
+ /** 恢复时是否播放过度动画,默认为`true` */
20
+ restoreTransition?: boolean;
11
21
  container?: DefineElement;
12
22
  children: ReactElement | ((targetProps: DraggableTargetProps, handleProps: HandleProps) => ReactNode);
13
23
  }
14
- export declare function Draggable({ translateLimit, container, children, ...draggableOptions }: DraggableProps): ReactNode;
24
+ export declare function Draggable({ ref, translateLimit, restoreOnDragEnd, restoreTransition, container, children, ...draggableOptions }: DraggableProps): React.ReactNode;
@@ -3,13 +3,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Draggable = Draggable;
4
4
  const react_1 = require("react");
5
5
  const utils_1 = require("../../utils");
6
- function Draggable({ translateLimit, container, children, ...draggableOptions }) {
6
+ const theme_1 = require("../theme");
7
+ function Draggable({ ref, translateLimit, restoreOnDragEnd, restoreTransition = true, container, children, ...draggableOptions }) {
8
+ (0, react_1.useImperativeHandle)(ref, () => ({
9
+ restore
10
+ }));
11
+ const [transiting, setTransiting] = (0, react_1.useState)(false);
12
+ const restore = (transition = restoreTransition) => {
13
+ transition && setTransiting(true);
14
+ setTranslate([0, 0]);
15
+ };
16
+ const onTransitionEnd = () => {
17
+ setTransiting(false);
18
+ };
7
19
  const [translate, setTranslate] = (0, react_1.useState)([0, 0]);
20
+ const [isDragging, setIsDragging] = (0, react_1.useState)(false);
8
21
  const props = children.props;
9
22
  const draggableHandles = (0, utils_1.useDraggable)({
10
23
  ...draggableOptions,
11
24
  onDragStart(e) {
12
25
  draggableOptions.onDragStart?.(e);
26
+ setIsDragging(true);
13
27
  return [...translate];
14
28
  },
15
29
  onDrag(info, e) {
@@ -30,20 +44,36 @@ function Draggable({ translateLimit, container, children, ...draggableOptions })
30
44
  }
31
45
  setTranslate([newX, newY]);
32
46
  },
47
+ onDragEnd(info) {
48
+ draggableOptions.onDragEnd?.(info);
49
+ setIsDragging(false);
50
+ restoreOnDragEnd && restore();
51
+ },
33
52
  onClick: props?.onClick
34
53
  });
54
+ const theme = (0, theme_1.useTheme)();
35
55
  const style = (0, react_1.useMemo)(() => ({
36
56
  translate: `${translate[0]}px ${translate[1]}px`,
57
+ ...transiting && { transition: `translate .3s ${theme.easing.bounce}` },
37
58
  ...props?.style
38
- }), [translate, props?.style]);
59
+ }), [translate, transiting, theme, props?.style]);
39
60
  if ((0, react_1.isValidElement)(children)) {
40
61
  return (0, react_1.cloneElement)(children, {
41
62
  style,
42
- ...draggableHandles
63
+ 'data-dragging': String(isDragging),
64
+ onTransitionEnd,
65
+ ...draggableHandles,
43
66
  });
44
67
  }
45
68
  if (typeof children === 'function') {
46
- return children({ style: { translate: `${translate[0]}px ${translate[1]}px` } }, draggableHandles);
69
+ return children({
70
+ style: {
71
+ translate: `${translate[0]}px ${translate[1]}px`,
72
+ ...transiting && { transition: `translate .3s ${theme.easing.bounce}` },
73
+ },
74
+ 'data-dragging': String(isDragging),
75
+ onTransitionEnd
76
+ }, draggableHandles);
47
77
  }
48
78
  return children;
49
79
  }
@@ -1,6 +1,7 @@
1
- import { CSSProperties } from 'react';
2
- import { TransportStyleProps } from '../transportStyle';
3
- export interface FlexProps extends TransportStyleProps {
1
+ import { CSSProperties, ElementType } from 'react';
2
+ import { TransportStyleOwnProps } from '../transportStyle';
3
+ import { OverridableComponent, OverridableProps } from '../../types';
4
+ interface FlexOwnProps extends TransportStyleOwnProps {
4
5
  inline?: boolean;
5
6
  /** 排列方式,默认为`row` */
6
7
  direction?: 'row' | 'row-reverse' | 'column' | 'column-reverse';
@@ -12,4 +13,6 @@ export interface FlexProps extends TransportStyleProps {
12
13
  /** 当compact为true时,gap无效,而且会清除子元素的圆角,让他们拼接起来 */
13
14
  compact?: boolean;
14
15
  }
15
- export declare function Flex({ inline, direction, wrap, gap, columnGap, rowGap, compact, ...props }: FlexProps): import("@emotion/react/jsx-runtime").JSX.Element;
16
+ export type FlexProps<C extends ElementType = 'div'> = OverridableProps<FlexOwnProps, C>;
17
+ export declare const Flex: OverridableComponent<FlexOwnProps>;
18
+ export {};
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Flex = Flex;
3
+ exports.Flex = void 0;
4
4
  const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
5
5
  const react_1 = require("react");
6
6
  const flex_style_1 = require("./flex.style");
7
7
  const utils_1 = require("../../utils");
8
8
  const transportStyle_1 = require("../transportStyle");
9
- function Flex({ inline, direction = 'row', wrap, gap = 0, columnGap, rowGap, compact, ...props }) {
9
+ exports.Flex = (({ inline, direction = 'row', wrap, gap = 0, columnGap, rowGap, compact, ...props }) => {
10
10
  const renderChildren = () => {
11
11
  if (!compact) {
12
12
  return props.children;
@@ -29,4 +29,4 @@ function Flex({ inline, direction = 'row', wrap, gap = 0, columnGap, rowGap, com
29
29
  flexWrap: wrap, columnGap, rowGap, gap,
30
30
  ...props.style
31
31
  }), children: renderChildren() }));
32
- }
32
+ });
@@ -14,7 +14,7 @@ export type FormSharedProps = {
14
14
  size?: Size;
15
15
  };
16
16
  interface FormOwnProps<V extends FormValue = FormValue> extends FormSharedProps, DescriptionsSharedProps, GridOwnProps {
17
- ref?: Ref<FormRef<V> | null>;
17
+ ref?: Ref<FormRef<V>>;
18
18
  /** 最外层元素的ref,默认{@link ref}属性已经被{@link FormRef}取代 */
19
19
  wrapperRef?: Ref<HTMLFormElement>;
20
20
  initialValue?: V;
@@ -24,14 +24,19 @@ interface FormOwnProps<V extends FormValue = FormValue> extends FormSharedProps,
24
24
  descriptionsProps?: DescriptionsProps;
25
25
  }
26
26
  export type FormProps<V extends FormValue = FormValue, C extends ElementType = 'form'> = OverridableProps<FormOwnProps<V>, C>;
27
- interface FormContext<V extends FormValue> extends FormSharedProps {
28
- formValue?: V;
29
- setFieldValue?(field: FieldPath, value: any, silent?: boolean): void;
27
+ type FormContext<V extends FormValue> = {
28
+ inForm?: boolean;
30
29
  itemsContainer?: Map<string, FormItemRef>;
31
30
  formRef?: RefObject<FormRef<V> | null>;
32
- }
31
+ };
33
32
  declare const FormContext: React.Context<FormContext<any>>;
34
33
  export declare function useFormContext<V extends FormValue>(): FormContext<V>;
34
+ type FormValueContextType<V extends FormValue> = {
35
+ formValue?: V;
36
+ setFieldValue?(field: FieldPath, value: any, silent?: boolean): void;
37
+ };
38
+ export declare function useFormValueContext<V extends FormValue>(): FormValueContextType<V>;
39
+ export declare function useFormStyleContext(): FormSharedProps;
35
40
  export type FormRef<V extends FormValue = FormValue> = {
36
41
  /** 存在校验不通过的字段时会得到`null` */
37
42
  submit(): Promise<V | null>;
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Form = void 0;
4
4
  exports.useFormContext = useFormContext;
5
+ exports.useFormValueContext = useFormValueContext;
6
+ exports.useFormStyleContext = useFormStyleContext;
5
7
  const jsx_runtime_1 = require("@emotion/react/jsx-runtime");
6
8
  const react_1 = require("react");
7
9
  const utils_1 = require("../../utils");
@@ -13,11 +15,43 @@ const FormContext = (0, react_1.createContext)({});
13
15
  function useFormContext() {
14
16
  return (0, react_1.useContext)(FormContext);
15
17
  }
16
- exports.Form = (({ component: Component = 'form', ref, wrapperRef, initialValue, onChange, onFinish, items, descriptionsProps, requiredMark = '*', variant = 'grid',
18
+ const FormValueContext = (0, react_1.createContext)({});
19
+ function useFormValueContext() {
20
+ return (0, react_1.useContext)(FormValueContext);
21
+ }
22
+ const FormStyleContext = (0, react_1.createContext)({});
23
+ function useFormStyleContext() {
24
+ return (0, react_1.useContext)(FormStyleContext);
25
+ }
26
+ exports.Form = (({ component: Component = 'form', ref, wrapperRef, initialValue, onChange, onFinish, items, descriptionsProps, requiredMark, variant,
17
27
  // 以下属性从DescriptionsSharedProps继承
18
28
  labelWidth, labelPlacement = 'left', colon = ':', size, disableMargin, disablePadding,
19
29
  // 以下属性从GridOwnProps继承
20
30
  inline, columnCount = 1, gap, columnGap, rowGap, ...props }) => {
31
+ const { inForm, formRef: parentFormRef } = useFormContext();
32
+ const renderChildren = () => {
33
+ return variant === 'plain'
34
+ ? props.children
35
+ : (0, jsx_runtime_1.jsx)(descriptions_1.Descriptions, { ...descriptionsProps, size: size, labelWidth: labelWidth, colon: colon, labelPlacement: labelPlacement, disableMargin: disableMargin, disablePadding: disablePadding, variant: variant, inline: inline, columnCount: columnCount, gap: gap, columnGap: columnGap, rowGap: rowGap, items: items, itemComponent: formItem_1.FormItem, children: props.children });
36
+ };
37
+ /**
38
+ * ------------------------------------------------------------------------
39
+ * 嵌套在另个一个form中,值取最顶层的form,当前组件仅做样式处理
40
+ */
41
+ if (inForm) {
42
+ (0, react_1.useImperativeHandle)(ref, () => parentFormRef.current);
43
+ const context = useFormStyleContext();
44
+ requiredMark ??= context.requiredMark ?? '*';
45
+ variant ??= context.variant ?? 'grid';
46
+ size ??= context.size;
47
+ return ((0, jsx_runtime_1.jsx)(FormStyleContext, { value: (0, react_1.useMemo)(() => ({
48
+ requiredMark, variant, size
49
+ }), [
50
+ requiredMark, variant, size
51
+ ]), children: renderChildren() }));
52
+ }
53
+ requiredMark ??= '*';
54
+ variant ??= 'grid';
21
55
  /**
22
56
  * ------------------------------------------------------------------------
23
57
  * 表单值
@@ -46,8 +80,7 @@ inline, columnCount = 1, gap, columnGap, rowGap, ...props }) => {
46
80
  e?.preventDefault();
47
81
  try {
48
82
  await Promise.all([...itemsContainer.current].map(async ([, item]) => {
49
- const isValid = await item.validate();
50
- return isValid ? void 0 : Promise.reject();
83
+ return await item.validate() || Promise.reject();
51
84
  }));
52
85
  onFinish?.(formValue.current);
53
86
  return formValue.current;
@@ -84,7 +117,7 @@ inline, columnCount = 1, gap, columnGap, rowGap, ...props }) => {
84
117
  setFormValue(newValue);
85
118
  },
86
119
  resetField: field => {
87
- itemsContainer.current.get((0, utils_1.stringifyField)(field))?.reset();
120
+ itemsContainer.current.get((0, utils_1.stringifyField)(field))?.reset(formValue.current, initialValue);
88
121
  setFormValue(o => ({ ...o }));
89
122
  },
90
123
  isFormTouched: () => [...itemsContainer.current].some(([, item]) => item.isTouched),
@@ -92,12 +125,15 @@ inline, columnCount = 1, gap, columnGap, rowGap, ...props }) => {
92
125
  };
93
126
  (0, react_1.useImperativeHandle)(ref, () => formRef.current);
94
127
  return ((0, jsx_runtime_1.jsx)(Component, { ...props, ref: wrapperRef, css: form_style_1.style, className: (0, utils_1.clsx)(form_style_1.classes.root, props.className), onSubmit: submitHandler, children: (0, jsx_runtime_1.jsx)(FormContext, { value: (0, react_1.useMemo)(() => ({
95
- requiredMark, variant, size,
96
- formValue: formValue.current, setFieldValue,
128
+ inForm: true,
97
129
  itemsContainer: itemsContainer.current, formRef
98
- }), [requiredMark, variant, size, formValue.current]), children: variant === 'plain'
99
- ? props.children
100
- : (0, jsx_runtime_1.jsx)(descriptions_1.Descriptions, { ...descriptionsProps, size: size, labelWidth: labelWidth, colon: colon, labelPlacement: labelPlacement, disableMargin: disableMargin, disablePadding: disablePadding, items: items, variant: variant, itemComponent: formItem_1.FormItem, inline: inline, columnCount: columnCount, gap: gap, columnGap: columnGap, rowGap: rowGap, children: props.children }) }) }));
130
+ }), []), children: (0, jsx_runtime_1.jsx)(FormStyleContext, { value: (0, react_1.useMemo)(() => ({
131
+ requiredMark, variant, size
132
+ }), [
133
+ requiredMark, variant, size
134
+ ]), children: (0, jsx_runtime_1.jsx)(FormValueContext, { value: (0, react_1.useMemo)(() => ({
135
+ formValue: formValue.current, setFieldValue
136
+ }), [formValue.current]), children: renderChildren() }) }) }) }));
101
137
  });
102
138
  exports.Form.Item = formItem_1.FormItem;
103
139
  exports.Form.Relatable = formRelatable_1.FormRelatable;
@@ -3,11 +3,11 @@ import { FormRef, FormSharedProps, FormValue } from './form';
3
3
  import { ColorPropsValue, MergeProps, Size } from '../../types';
4
4
  import { FieldPath } from '../../utils';
5
5
  import { DescriptionItemProps } from '../descriptions';
6
- export type FormItemRules<I = any> = {
6
+ export type FormItemRules<I = any, R = FormRef> = {
7
7
  message?: ReactNode;
8
8
  required?: boolean;
9
9
  pattern?: RegExp;
10
- validator?(fieldValue: I | undefined, formValue: any, formRef: FormRef | null): any;
10
+ validator?(fieldValue: I | undefined, formValue: any, formRef: R | null): any;
11
11
  };
12
12
  export type FieldProps<I = any> = {
13
13
  checked?: boolean;
@@ -18,6 +18,7 @@ export type StyleProps = {
18
18
  size?: Size;
19
19
  color?: ColorPropsValue;
20
20
  };
21
+ export type FormItemChildren<T extends ReactNode = ReactNode, I = any> = T | ((fieldProps: FieldProps<I>, styleProps: StyleProps, key: string) => T);
21
22
  export interface FormItemOwnProps<I = any> extends FormSharedProps {
22
23
  ref?: Ref<FormItemRef>;
23
24
  wrapperRef?: Ref<HTMLDivElement>;
@@ -29,11 +30,13 @@ export interface FormItemOwnProps<I = any> extends FormSharedProps {
29
30
  helperText?: ReactNode;
30
31
  dependencies?: FieldPath[];
31
32
  /**
32
- * 若`children`为`function`类型时,第三个参数`key`主要用于强制重渲染,
33
- * 在没有{@link initialValue}时非常有用
33
+ * 若`children`为`function`类型时,
34
+ * 第三个参数`key`主要用于强制重渲染,在没有{@link initialValue}时非常有用
34
35
  */
35
- children?: ReactNode | ((fieldProps: FieldProps<I>, styleProps: StyleProps, key?: string) => ReactNode);
36
+ children?: FormItemChildren;
36
37
  noStyle?: boolean;
38
+ /** @private 内部使用,强制指定字段值 */
39
+ _fieldValue?: I;
37
40
  }
38
41
  export type FormItemProps<I = any, C extends ElementType = 'div'> = MergeProps<FormItemOwnProps<I>, DescriptionItemProps<C>>;
39
42
  export type FieldError = null | {
@@ -42,7 +45,9 @@ export type FieldError = null | {
42
45
  export type FormItemRef = {
43
46
  validate(): Promise<boolean>;
44
47
  error: FieldError;
45
- reset(initialValues?: FormValue): void;
46
- isTouched: boolean;
48
+ reset(): void;
49
+ /** @private */
50
+ reset(currentFormValue: FormValue, initialFormValue?: FormValue): void;
51
+ isTouched(): boolean;
47
52
  };
48
53
  export declare const FormItem: <I = any, C extends ElementType = 'div'>(props: FormItemProps<I, C>) => ReactNode;
@@ -8,46 +8,54 @@ const utils_1 = require("../../utils");
8
8
  const descriptions_1 = require("../descriptions");
9
9
  const form_style_1 = require("./form.style");
10
10
  const transitionBase_1 = require("../transitionBase");
11
- const FormItem = ({ ref, wrapperRef, field, initialValue, label = '', rules, required, error, helperText, dependencies, children, noStyle, requiredMark, variant, size, ...props }) => {
12
- const { formValue, setFieldValue, itemsContainer, formRef, ...context } = (0, form_1.useFormContext)();
11
+ const FormItem = ({ ref, wrapperRef, field, initialValue, label = '', rules, required, error, helperText, dependencies, children, noStyle, requiredMark, variant, size, _fieldValue, ...props }) => {
12
+ const context = (0, form_1.useFormStyleContext)();
13
13
  requiredMark ??= context.requiredMark ?? '*';
14
14
  variant ??= context.variant ?? 'grid';
15
15
  size ??= context.size;
16
+ const { formValue, setFieldValue } = (0, form_1.useFormValueContext)();
17
+ const { itemsContainer, formRef } = (0, form_1.useFormContext)();
16
18
  const shouldValidate = (0, react_1.useRef)(false);
19
+ const isTouched = (0, react_1.useRef)(false);
17
20
  const [innerError, setInnerError] = (0, utils_1.useDerivedState)(error);
21
+ const [innerHelperText, setInnerHelperText] = (0, utils_1.useDerivedState)(helperText);
22
+ const stringField = !(0, utils_1.isUnset)(field) ? (0, utils_1.stringifyField)(field) : void 0;
18
23
  /**
19
24
  * --------------------------------------------------------------------
20
25
  * 重置与初始化
21
26
  */
22
- const isTouched = (0, react_1.useRef)(false);
23
- // formRef的resetForm()方法会传入新的initialValue,否则使用`formValue`
24
- const reset = (value = formValue) => {
27
+ const reset = (currentFormValue = formValue, initialFormValue) => {
28
+ // formRef的resetForm()方法会传入新的formValue,其他情况使用当前的formValue
25
29
  shouldValidate.current = isTouched.current = false;
26
- if (typeof field !== 'undefined' && value && typeof initialValue !== 'undefined') {
27
- (0, utils_1.queryDeep)(value, field, () => initialValue);
30
+ if (!(0, utils_1.isUnset)(field) && currentFormValue) {
31
+ if (typeof initialValue !== 'undefined') {
32
+ (0, utils_1.queryDeep)(currentFormValue, field, () => initialValue);
33
+ }
34
+ else if (typeof initialFormValue !== 'undefined') {
35
+ const initialFieldValue = (0, utils_1.queryDeep)(initialFormValue, field);
36
+ (0, utils_1.queryDeep)(currentFormValue, field, initialFieldValue);
37
+ }
28
38
  }
29
- innerError.current && setInnerError(false);
39
+ setInnerError(false);
30
40
  };
31
- (0, react_1.useMemo)(reset, []);
41
+ (0, react_1.useMemo)(reset, [stringField]);
32
42
  /**
33
43
  * --------------------------------------------------------------------
34
44
  * 字段值
35
45
  */
36
46
  const fieldValue = (0, react_1.useMemo)(() => {
37
- if (typeof field !== 'undefined' && formValue) {
47
+ if (typeof _fieldValue !== 'undefined') {
48
+ return _fieldValue;
49
+ }
50
+ if (!(0, utils_1.isUnset)(field) && formValue) {
38
51
  return (0, utils_1.queryDeep)(formValue, field);
39
52
  }
40
- }, [formValue, field]);
41
- const [randomKey] = (0, utils_1.useDerivedState)(prev => {
42
- // fieldValue变为undefined时,需要更新key以强制重渲染组件
43
- return typeof fieldValue === 'undefined' ? (0, utils_1.getShortID)() : prev;
44
- }, [fieldValue]);
53
+ }, [formValue, field, _fieldValue]);
45
54
  /**
46
55
  * --------------------------------------------------------------------
47
56
  * 校验
48
57
  */
49
58
  const rulesArr = (0, utils_1.toArray)(rules);
50
- const [innerHelperText, setInnerHelperText] = (0, utils_1.useDerivedState)(helperText);
51
59
  const validate = async () => {
52
60
  if (error) {
53
61
  return false;
@@ -56,7 +64,7 @@ const FormItem = ({ ref, wrapperRef, field, initialValue, label = '', rules, req
56
64
  const promises = [];
57
65
  let invalid = false;
58
66
  rulesArr?.some(r => {
59
- if ((r.required && (typeof fieldValue === 'undefined' || fieldValue === null || fieldValue === '')) ||
67
+ if ((r.required && ((0, utils_1.isUnset)(fieldValue) || fieldValue === '')) ||
60
68
  (r.pattern && typeof fieldValue === 'string' && !r.pattern.test(fieldValue))) {
61
69
  setInnerError(true);
62
70
  setInnerHelperText(r.message || defaultMessage);
@@ -86,36 +94,38 @@ const FormItem = ({ ref, wrapperRef, field, initialValue, label = '', rules, req
86
94
  };
87
95
  /**
88
96
  * --------------------------------------------------------------------
89
- * 依赖更新自动校验
97
+ * 自动校验与依赖更新
90
98
  */
91
99
  const dependencyValues = (0, react_1.useMemo)(() => {
92
100
  return formValue && dependencies?.map(d => (0, utils_1.queryDeep)(formValue, d));
93
101
  }, [formValue, ...dependencies || []]);
94
102
  (0, react_1.useMemo)(() => {
95
- // 跳过首次渲染
96
- shouldValidate.current && validate().then();
97
- shouldValidate.current = true;
103
+ if (!shouldValidate.current) {
104
+ // 跳过首次渲染
105
+ shouldValidate.current = true;
106
+ return;
107
+ }
108
+ validate().then();
98
109
  }, [fieldValue, ...dependencyValues || []]);
99
110
  /**
100
111
  * --------------------------------------------------------------------
101
112
  * 挂载formItemRef
102
113
  */
103
- const formItemRef = (0, react_1.useRef)(null);
114
+ const formItemRef = (0, react_1.useRef)(void 0);
104
115
  formItemRef.current = {
105
116
  validate,
106
117
  reset,
107
118
  error: innerError.current ? { message: innerHelperText.current } : null,
108
- isTouched: isTouched.current
119
+ isTouched: () => isTouched.current
109
120
  };
110
121
  (0, react_1.useImperativeHandle)(ref, () => formItemRef.current);
111
122
  (0, react_1.useEffect)(() => {
112
- if (typeof field === 'undefined' || !itemsContainer) {
123
+ if (typeof stringField === 'undefined' || !itemsContainer) {
113
124
  return;
114
125
  }
115
- const fieldStr = (0, utils_1.stringifyField)(field);
116
- itemsContainer.set(fieldStr, formItemRef.current);
126
+ itemsContainer.set(stringField, formItemRef.current);
117
127
  return () => {
118
- itemsContainer.delete(fieldStr);
128
+ itemsContainer.delete(stringField);
119
129
  };
120
130
  });
121
131
  /**
@@ -125,9 +135,13 @@ const FormItem = ({ ref, wrapperRef, field, initialValue, label = '', rules, req
125
135
  const isRequired = (0, react_1.useMemo)(() => {
126
136
  return required ?? rulesArr?.some(r => r.required);
127
137
  }, [rules, required]);
138
+ const [randomKey] = (0, utils_1.useDerivedState)(prev => {
139
+ // fieldValue变为undefined时,需要更新key以强制重渲染组件
140
+ return !prev || typeof fieldValue === 'undefined' ? (0, utils_1.getShortID)() : prev;
141
+ }, [fieldValue]);
128
142
  const renderedChildren = (0, react_1.useMemo)(() => {
129
143
  if (typeof children === 'function') {
130
- return children(typeof field !== 'undefined'
144
+ return children(!(0, utils_1.isUnset)(field)
131
145
  ? {
132
146
  ...typeof fieldValue === 'boolean'
133
147
  ? { checked: fieldValue }
@@ -139,14 +153,14 @@ const FormItem = ({ ref, wrapperRef, field, initialValue, label = '', rules, req
139
153
  }
140
154
  : {}, {
141
155
  ...size && { size },
142
- ...innerError.current ? { color: 'error' } : {}
156
+ ...innerError.current && { color: 'error' }
143
157
  }, randomKey.current);
144
158
  }
145
159
  if ((0, react_1.isValidElement)(children)) {
146
160
  const { props: childProps } = children;
147
161
  return (0, react_1.cloneElement)(children, {
148
- key: randomKey.current,
149
- ...typeof field !== 'undefined' && {
162
+ key: children.key ?? randomKey.current,
163
+ ...!(0, utils_1.isUnset)(field) && {
150
164
  ...typeof fieldValue === 'boolean'
151
165
  ? { checked: childProps.checked ?? fieldValue }
152
166
  : { value: childProps.value ?? fieldValue },
@@ -161,11 +175,11 @@ const FormItem = ({ ref, wrapperRef, field, initialValue, label = '', rules, req
161
175
  });
162
176
  }
163
177
  return children;
164
- }, [children, innerError.current, field, size, randomKey.current, fieldValue]);
178
+ }, [children, fieldValue, size, innerError.current, randomKey.current]);
165
179
  if (noStyle || variant === 'plain') {
166
180
  return renderedChildren;
167
181
  }
168
- return ((0, jsx_runtime_1.jsxs)(descriptions_1.DescriptionItem, { flex: void 0, ...props, ref: wrapperRef, className: (0, utils_1.clsx)(form_style_1.classes.item, props.className), label: !!label &&
182
+ return ((0, jsx_runtime_1.jsxs)(descriptions_1.DescriptionItem, { ...props, ref: wrapperRef, className: (0, utils_1.clsx)(form_style_1.classes.item, props.className), label: !!label &&
169
183
  (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [isRequired && !!requiredMark &&
170
184
  (0, jsx_runtime_1.jsx)("span", { className: form_style_1.classes.requiredMark, children: requiredMark }), label] }), children: [renderedChildren, (0, jsx_runtime_1.jsx)(transitionBase_1.Collapse, { in: innerError.current || !!helperText, children: (0, jsx_runtime_1.jsx)("div", { className: form_style_1.classes.helperText, children: innerHelperText.current }) })] }));
171
185
  };
@@ -5,7 +5,8 @@ const react_1 = require("react");
5
5
  const form_1 = require("./form");
6
6
  const utils_1 = require("../../utils");
7
7
  function FormRelatable(props) {
8
- const { formValue, formRef } = (0, form_1.useFormContext)();
8
+ const { formRef } = (0, form_1.useFormContext)();
9
+ const { formValue } = (0, form_1.useFormValueContext)();
9
10
  const prevFormValue = (0, react_1.useRef)(void 0);
10
11
  (0, react_1.useEffect)(() => {
11
12
  prevFormValue.current = (0, utils_1.cloneDeep)(formValue);
@@ -1,8 +1,8 @@
1
1
  export declare const classes: {
2
2
  button: string;
3
3
  image: string;
4
- counter: string;
5
4
  swap: string;
5
+ counter: string;
6
6
  control: string;
7
7
  galleryContainer: string;
8
8
  galleryWrapper: string;
@@ -47,5 +47,5 @@ function ImageItem({ ref, src, ...props }) {
47
47
  resizeObserver.disconnect();
48
48
  };
49
49
  }, []);
50
- return ((0, jsx_runtime_1.jsx)(pinchable_1.Pinchable, { ref: pinchableRef, className: (0, utils_1.clsx)(gallery_style_1.classes.imageItem, props.className), ...props, children: (0, jsx_runtime_1.jsx)("img", { ref: imgRef, className: gallery_style_1.classes.image, src: src, draggable: false, alt: "" }) }));
50
+ return ((0, jsx_runtime_1.jsx)(pinchable_1.Pinchable, { ...props, ref: pinchableRef, className: (0, utils_1.clsx)(gallery_style_1.classes.imageItem, props.className), children: (0, jsx_runtime_1.jsx)("img", { ref: imgRef, className: gallery_style_1.classes.image, src: src, draggable: false, alt: "" }) }));
51
51
  }
@@ -1,16 +1,16 @@
1
1
  import { ElementType, ReactElement } from 'react';
2
- import { MergeProps, ResponsiveProp } from '../../types';
2
+ import { OverridableProps, ResponsiveProp } from '../../types';
3
3
  import { GridItem } from './gridItem';
4
- import { TransportStyleProps } from '../transportStyle';
5
- export type GridOwnProps = {
4
+ import { TransportStyleOwnProps } from '../transportStyle';
5
+ export interface GridOwnProps extends TransportStyleOwnProps {
6
6
  inline?: boolean;
7
7
  /** 网格列数,默认为`{xs: 12}` */
8
8
  columnCount?: ResponsiveProp;
9
9
  gap?: ResponsiveProp;
10
10
  columnGap?: ResponsiveProp;
11
11
  rowGap?: ResponsiveProp;
12
- };
13
- export type GridProps<C extends ElementType = 'div'> = MergeProps<GridOwnProps, TransportStyleProps<C>>;
12
+ }
13
+ export type GridProps<C extends ElementType = 'div'> = OverridableProps<GridOwnProps, C>;
14
14
  export declare const Grid: {
15
15
  <C extends ElementType = "div">(props: GridProps<C>): ReactElement;
16
16
  Item: typeof GridItem;
@@ -1,9 +1,10 @@
1
- import { MergeProps, ResponsiveProp } from '../../types';
2
- import { TransportStyleProps } from '../transportStyle';
3
- import { ElementType, ReactElement } from 'react';
4
- export type GridItemOwnProps = {
1
+ import { OverridableComponent, OverridableProps, ResponsiveProp } from '../../types';
2
+ import { TransportStyleOwnProps } from '../transportStyle';
3
+ import { ElementType } from 'react';
4
+ interface GridItemOwnProps extends TransportStyleOwnProps {
5
5
  span?: ResponsiveProp;
6
6
  offset?: ResponsiveProp;
7
- };
8
- export type GridItemProps<C extends ElementType = 'div'> = MergeProps<GridItemOwnProps, TransportStyleProps<C>>;
9
- export declare const GridItem: <C extends ElementType = 'div'>(props: GridItemProps<C>) => ReactElement;
7
+ }
8
+ export type GridItemProps<C extends ElementType = 'div'> = OverridableProps<GridItemOwnProps, C>;
9
+ export declare const GridItem: OverridableComponent<GridItemOwnProps>;
10
+ export {};