amis 1.3.5-beta.7 → 1.4.2-beta.11

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 (577) hide show
  1. package/README.md +1 -1
  2. package/lib/Schema.d.ts +26 -2
  3. package/lib/Schema.js.map +1 -1
  4. package/lib/components/Alert.js +3 -1
  5. package/lib/components/Alert.js.map +2 -2
  6. package/lib/components/AnchorNav.d.ts +22 -21
  7. package/lib/components/AnchorNav.js +7 -3
  8. package/lib/components/AnchorNav.js.map +2 -2
  9. package/lib/components/ArrayInput.d.ts +84 -84
  10. package/lib/components/AssociatedSelection.d.ts +930 -0
  11. package/lib/components/AssociatedSelection.js +89 -0
  12. package/lib/components/AssociatedSelection.js.map +13 -0
  13. package/lib/components/Badge.d.ts +16 -3
  14. package/lib/components/Badge.js +54 -5
  15. package/lib/components/Badge.js.map +2 -2
  16. package/lib/components/Button.d.ts +24 -22
  17. package/lib/components/Button.js +13 -7
  18. package/lib/components/Button.js.map +2 -2
  19. package/lib/components/{ChainedCheckboxes.d.ts → ChainedSelection.d.ts} +267 -98
  20. package/lib/components/{ChainedCheckboxes.js → ChainedSelection.js} +30 -24
  21. package/lib/components/ChainedSelection.js.map +13 -0
  22. package/lib/components/Checkbox.d.ts +1 -1
  23. package/lib/components/Checkbox.js +1 -1
  24. package/lib/components/Checkbox.js.map +2 -2
  25. package/lib/components/Collapse.js +1 -1
  26. package/lib/components/Collapse.js.map +2 -2
  27. package/lib/components/ColorPicker.d.ts +84 -84
  28. package/lib/components/DatePicker.d.ts +84 -84
  29. package/lib/components/DatePicker.js +1 -1
  30. package/lib/components/DatePicker.js.map +2 -2
  31. package/lib/components/DateRangePicker.d.ts +84 -84
  32. package/lib/components/DateRangePicker.js +1 -1
  33. package/lib/components/DateRangePicker.js.map +2 -2
  34. package/lib/components/Drawer.js +1 -1
  35. package/lib/components/Drawer.js.map +2 -2
  36. package/lib/components/Editor.d.ts +84 -84
  37. package/lib/components/GroupedSelection.d.ts +907 -0
  38. package/lib/components/GroupedSelection.js +48 -0
  39. package/lib/components/GroupedSelection.js.map +13 -0
  40. package/lib/components/InputBox.js +1 -1
  41. package/lib/components/InputBox.js.map +2 -2
  42. package/lib/components/Link.d.ts +84 -0
  43. package/lib/components/Link.js +43 -0
  44. package/lib/components/Link.js.map +13 -0
  45. package/lib/components/ListGroup.d.ts +21 -21
  46. package/lib/components/Modal.js +1 -1
  47. package/lib/components/Modal.js.map +2 -2
  48. package/lib/components/ModalManager.js +1 -1
  49. package/lib/components/ModalManager.js.map +2 -2
  50. package/lib/components/MonthRangePicker.d.ts +84 -84
  51. package/lib/components/MonthRangePicker.js +1 -1
  52. package/lib/components/MonthRangePicker.js.map +2 -2
  53. package/lib/components/NumberInput.d.ts +20 -20
  54. package/lib/components/PickerColumn.d.ts +514 -0
  55. package/lib/components/PickerColumn.js +279 -0
  56. package/lib/components/PickerColumn.js.map +13 -0
  57. package/lib/components/PickerContainer.d.ts +513 -0
  58. package/lib/components/PickerContainer.js +96 -0
  59. package/lib/components/PickerContainer.js.map +13 -0
  60. package/lib/components/Radios.d.ts +22 -21
  61. package/lib/components/Radios.js +1 -0
  62. package/lib/components/Radios.js.map +2 -2
  63. package/lib/components/Rating.d.ts +21 -21
  64. package/lib/components/ResultBox.d.ts +84 -84
  65. package/lib/components/RichText.d.ts +6 -1
  66. package/lib/components/RichText.js +207 -8
  67. package/lib/components/RichText.js.map +2 -2
  68. package/lib/components/SearchBox.d.ts +84 -84
  69. package/lib/components/SearchBox.js +4 -4
  70. package/lib/components/SearchBox.js.map +2 -2
  71. package/lib/components/Select.d.ts +252 -237
  72. package/lib/components/Select.js +28 -4
  73. package/lib/components/Select.js.map +2 -2
  74. package/lib/components/{Checkboxes.d.ts → Selection.d.ts} +273 -98
  75. package/lib/components/Selection.js +134 -0
  76. package/lib/components/Selection.js.map +13 -0
  77. package/lib/components/SparkLine.d.ts +85 -84
  78. package/lib/components/SparkLine.js +2 -2
  79. package/lib/components/SparkLine.js.map +2 -2
  80. package/lib/components/Steps.d.ts +3 -3
  81. package/lib/components/Steps.js.map +1 -1
  82. package/lib/components/{TableCheckboxes.d.ts → TableSelection.d.ts} +266 -96
  83. package/lib/components/{TableCheckboxes.js → TableSelection.js} +30 -30
  84. package/lib/components/TableSelection.js.map +13 -0
  85. package/lib/components/Tabs.d.ts +20 -20
  86. package/lib/components/TabsTransfer.d.ts +84 -84
  87. package/lib/components/TabsTransfer.js +9 -9
  88. package/lib/components/TabsTransfer.js.map +2 -2
  89. package/lib/components/TabsTransferPicker.d.ts +489 -0
  90. package/lib/components/TabsTransferPicker.js +60 -0
  91. package/lib/components/TabsTransferPicker.js.map +13 -0
  92. package/lib/components/Toast.js +2 -2
  93. package/lib/components/Toast.js.map +2 -2
  94. package/lib/components/Transfer.d.ts +908 -274
  95. package/lib/components/Transfer.js +31 -24
  96. package/lib/components/Transfer.js.map +2 -2
  97. package/lib/components/TransferDropDown.d.ts +487 -0
  98. package/lib/components/TransferDropDown.js +59 -0
  99. package/lib/components/TransferDropDown.js.map +13 -0
  100. package/lib/components/TransferPicker.d.ts +489 -0
  101. package/lib/components/TransferPicker.js +60 -0
  102. package/lib/components/TransferPicker.js.map +13 -0
  103. package/lib/components/Tree.d.ts +84 -84
  104. package/lib/components/Tree.js +5 -3
  105. package/lib/components/Tree.js.map +2 -2
  106. package/lib/components/{TreeCheckboxes.d.ts → TreeSelection.d.ts} +269 -99
  107. package/lib/components/{TreeCheckboxes.js → TreeSelection.js} +36 -32
  108. package/lib/components/TreeSelection.js.map +13 -0
  109. package/lib/components/WithRemoteConfig.d.ts +8 -0
  110. package/lib/components/WithRemoteConfig.js +29 -3
  111. package/lib/components/WithRemoteConfig.js.map +2 -2
  112. package/lib/components/calendar/DaysView.js +2 -2
  113. package/lib/components/calendar/DaysView.js.map +2 -2
  114. package/lib/components/condition-builder/Field.js +5 -3
  115. package/lib/components/condition-builder/Field.js.map +2 -2
  116. package/lib/components/condition-builder/Func.js +2 -2
  117. package/lib/components/condition-builder/Func.js.map +2 -2
  118. package/lib/components/condition-builder/InputSwitch.js +2 -2
  119. package/lib/components/condition-builder/InputSwitch.js.map +2 -2
  120. package/lib/components/condition-builder/Item.js +3 -3
  121. package/lib/components/condition-builder/Item.js.map +2 -2
  122. package/lib/components/condition-builder/Value.js +2 -1
  123. package/lib/components/condition-builder/Value.js.map +2 -2
  124. package/lib/components/condition-builder/types.d.ts +5 -0
  125. package/lib/components/condition-builder/types.js.map +1 -1
  126. package/lib/components/icons.js +14 -0
  127. package/lib/components/icons.js.map +2 -2
  128. package/lib/components/index.d.ts +8 -8
  129. package/lib/components/index.js +16 -16
  130. package/lib/components/index.js.map +2 -2
  131. package/lib/envOverwrite.js.map +2 -2
  132. package/lib/factory.d.ts +9 -1
  133. package/lib/factory.js +13 -6
  134. package/lib/factory.js.map +2 -2
  135. package/lib/helper.css.map +1 -1
  136. package/lib/hooks/index.d.ts +5 -0
  137. package/lib/hooks/index.js +14 -0
  138. package/lib/hooks/index.js.map +13 -0
  139. package/lib/hooks/use-set-state.d.ts +2 -0
  140. package/lib/hooks/use-set-state.js +15 -0
  141. package/lib/hooks/use-set-state.js.map +13 -0
  142. package/lib/hooks/use-touch.d.ts +16 -0
  143. package/lib/hooks/use-touch.js +73 -0
  144. package/lib/hooks/use-touch.js.map +13 -0
  145. package/lib/hooks/use-update-effect.d.ts +3 -0
  146. package/lib/hooks/use-update-effect.js +17 -0
  147. package/lib/hooks/use-update-effect.js.map +13 -0
  148. package/lib/icons/clock.js +10 -0
  149. package/lib/icons/loading-outline.js +7 -0
  150. package/lib/icons/status-close.js +11 -0
  151. package/lib/icons/status-fail.js +11 -0
  152. package/lib/icons/status-info.js +10 -0
  153. package/lib/icons/status-success.js +11 -0
  154. package/lib/icons/status-warning.js +10 -0
  155. package/lib/index.d.ts +3 -0
  156. package/lib/index.js +4 -1
  157. package/lib/index.js.map +2 -2
  158. package/lib/locale/de-DE.js +5 -0
  159. package/lib/locale/de-DE.js.map +2 -2
  160. package/lib/locale/en-US.js +6 -1
  161. package/lib/locale/en-US.js.map +2 -2
  162. package/lib/locale/zh-CN.js +9 -4
  163. package/lib/locale/zh-CN.js.map +2 -2
  164. package/lib/renderers/Action.d.ts +17 -1
  165. package/lib/renderers/Action.js +21 -8
  166. package/lib/renderers/Action.js.map +2 -2
  167. package/lib/renderers/AnchorNav.d.ts +1 -0
  168. package/lib/renderers/AnchorNav.js +2 -2
  169. package/lib/renderers/AnchorNav.js.map +2 -2
  170. package/lib/renderers/Avatar.js +3 -3
  171. package/lib/renderers/Avatar.js.map +2 -2
  172. package/lib/renderers/Breadcrumb.js +1 -1
  173. package/lib/renderers/Breadcrumb.js.map +2 -2
  174. package/lib/renderers/CRUD.d.ts +9 -0
  175. package/lib/renderers/CRUD.js +48 -23
  176. package/lib/renderers/CRUD.js.map +2 -2
  177. package/lib/renderers/Card.d.ts +4 -0
  178. package/lib/renderers/Card.js +29 -23
  179. package/lib/renderers/Card.js.map +2 -2
  180. package/lib/renderers/Chart.js +1 -1
  181. package/lib/renderers/Chart.js.map +2 -2
  182. package/lib/renderers/Collapse.d.ts +1 -1
  183. package/lib/renderers/Collapse.js +8 -3
  184. package/lib/renderers/Collapse.js.map +2 -2
  185. package/lib/renderers/Dialog.d.ts +0 -252
  186. package/lib/renderers/Dialog.js +1 -4
  187. package/lib/renderers/Dialog.js.map +2 -2
  188. package/lib/renderers/Drawer.js +0 -3
  189. package/lib/renderers/Drawer.js.map +2 -2
  190. package/lib/renderers/DropDownButton.d.ts +13 -1
  191. package/lib/renderers/DropDownButton.js +9 -5
  192. package/lib/renderers/DropDownButton.js.map +2 -2
  193. package/lib/renderers/Form/Checkbox.d.ts +5 -0
  194. package/lib/renderers/Form/Checkbox.js +4 -0
  195. package/lib/renderers/Form/Checkbox.js.map +2 -2
  196. package/lib/renderers/Form/Combo.js +2 -2
  197. package/lib/renderers/Form/Combo.js.map +2 -2
  198. package/lib/renderers/Form/DiffEditor.d.ts +4 -5
  199. package/lib/renderers/Form/Editor.d.ts +3 -4
  200. package/lib/renderers/Form/Editor.js +1 -1
  201. package/lib/renderers/Form/Editor.js.map +2 -2
  202. package/lib/renderers/Form/InputCity.d.ts +84 -84
  203. package/lib/renderers/Form/InputCity.js +7 -6
  204. package/lib/renderers/Form/InputCity.js.map +2 -2
  205. package/lib/renderers/Form/InputColor.d.ts +84 -84
  206. package/lib/renderers/Form/InputExcel.d.ts +5 -0
  207. package/lib/renderers/Form/InputExcel.js +24 -3
  208. package/lib/renderers/Form/InputExcel.js.map +2 -2
  209. package/lib/renderers/Form/InputFile.js +12 -6
  210. package/lib/renderers/Form/InputFile.js.map +2 -2
  211. package/lib/renderers/Form/InputImage.d.ts +8 -0
  212. package/lib/renderers/Form/InputImage.js +18 -8
  213. package/lib/renderers/Form/InputImage.js.map +2 -2
  214. package/lib/renderers/Form/InputTable.d.ts +23 -5
  215. package/lib/renderers/Form/InputTable.js +32 -3
  216. package/lib/renderers/Form/InputTable.js.map +2 -2
  217. package/lib/renderers/Form/Item.d.ts +1 -1
  218. package/lib/renderers/Form/Item.js.map +1 -1
  219. package/lib/renderers/Form/Options.js +19 -6
  220. package/lib/renderers/Form/Options.js.map +2 -2
  221. package/lib/renderers/Form/Picker.js +2 -2
  222. package/lib/renderers/Form/Picker.js.map +2 -2
  223. package/lib/renderers/Form/Select.d.ts +41 -4
  224. package/lib/renderers/Form/Select.js +23 -3
  225. package/lib/renderers/Form/Select.js.map +2 -2
  226. package/lib/renderers/Form/TabsTransferPicker.d.ts +48 -0
  227. package/lib/renderers/Form/TabsTransferPicker.js +29 -0
  228. package/lib/renderers/Form/TabsTransferPicker.js.map +13 -0
  229. package/lib/renderers/Form/Transfer.js +3 -2
  230. package/lib/renderers/Form/Transfer.js.map +2 -2
  231. package/lib/renderers/Form/TransferPicker.d.ts +48 -0
  232. package/lib/renderers/Form/TransferPicker.js +29 -0
  233. package/lib/renderers/Form/TransferPicker.js.map +13 -0
  234. package/lib/renderers/Form/TreeSelect.js +2 -2
  235. package/lib/renderers/Form/TreeSelect.js.map +2 -2
  236. package/lib/renderers/Form/index.js +1 -1
  237. package/lib/renderers/Form/index.js.map +2 -2
  238. package/lib/renderers/Form/wrapControl.js +15 -3
  239. package/lib/renderers/Form/wrapControl.js.map +2 -2
  240. package/lib/renderers/IFrame.js +3 -5
  241. package/lib/renderers/IFrame.js.map +2 -2
  242. package/lib/renderers/Image.d.ts +1 -0
  243. package/lib/renderers/Image.js +15 -1
  244. package/lib/renderers/Image.js.map +2 -2
  245. package/lib/renderers/Json.d.ts +4 -0
  246. package/lib/renderers/Json.js +7 -12
  247. package/lib/renderers/Json.js.map +2 -2
  248. package/lib/renderers/Link.d.ts +18 -3
  249. package/lib/renderers/Link.js +27 -15
  250. package/lib/renderers/Link.js.map +2 -2
  251. package/lib/renderers/List.js +1 -1
  252. package/lib/renderers/List.js.map +2 -2
  253. package/lib/renderers/Log.d.ts +2 -2
  254. package/lib/renderers/Log.js +7 -1
  255. package/lib/renderers/Log.js.map +2 -2
  256. package/lib/renderers/Mapping.d.ts +9 -2
  257. package/lib/renderers/Mapping.js +18 -6
  258. package/lib/renderers/Mapping.js.map +2 -2
  259. package/lib/renderers/Nav.d.ts +81 -25
  260. package/lib/renderers/Nav.js +292 -31
  261. package/lib/renderers/Nav.js.map +2 -2
  262. package/lib/renderers/Page.js +4 -1
  263. package/lib/renderers/Page.js.map +2 -2
  264. package/lib/renderers/Portlet.d.ts +125 -0
  265. package/lib/renderers/Portlet.js +156 -0
  266. package/lib/renderers/Portlet.js.map +13 -0
  267. package/lib/renderers/Property.js +2 -1
  268. package/lib/renderers/Property.js.map +2 -2
  269. package/lib/renderers/SearchBox.d.ts +6 -1
  270. package/lib/renderers/SearchBox.js +19 -5
  271. package/lib/renderers/SearchBox.js.map +2 -2
  272. package/lib/renderers/Service.d.ts +10 -1
  273. package/lib/renderers/Service.js +85 -3
  274. package/lib/renderers/Service.js.map +2 -2
  275. package/lib/renderers/SparkLine.d.ts +4 -0
  276. package/lib/renderers/SparkLine.js.map +2 -2
  277. package/lib/renderers/Steps.d.ts +4 -4
  278. package/lib/renderers/Steps.js +5 -2
  279. package/lib/renderers/Steps.js.map +2 -2
  280. package/lib/renderers/Table/ColumnToggler.d.ts +113 -0
  281. package/lib/renderers/Table/ColumnToggler.js +216 -0
  282. package/lib/renderers/Table/ColumnToggler.js.map +13 -0
  283. package/lib/renderers/Table/ItemActionsWrapper.d.ts +11 -0
  284. package/lib/renderers/Table/ItemActionsWrapper.js +31 -0
  285. package/lib/renderers/Table/ItemActionsWrapper.js.map +13 -0
  286. package/lib/renderers/Table/TableBody.d.ts +5 -1
  287. package/lib/renderers/Table/TableBody.js.map +1 -1
  288. package/lib/renderers/Table/TableCell.js +3 -1
  289. package/lib/renderers/Table/TableCell.js.map +2 -2
  290. package/lib/renderers/Table/TableContent.d.ts +5 -2
  291. package/lib/renderers/Table/TableContent.js +21 -1
  292. package/lib/renderers/Table/TableContent.js.map +2 -2
  293. package/lib/renderers/Table/index.d.ts +27 -5
  294. package/lib/renderers/Table/index.js +251 -101
  295. package/lib/renderers/Table/index.js.map +2 -2
  296. package/lib/renderers/Tabs.js +9 -1
  297. package/lib/renderers/Tabs.js.map +2 -2
  298. package/lib/renderers/WebComponent.js +1 -1
  299. package/lib/renderers/WebComponent.js.map +2 -2
  300. package/lib/store/app.d.ts +0 -1
  301. package/lib/store/combo.d.ts +2 -18
  302. package/lib/store/crud.d.ts +0 -1
  303. package/lib/store/crud.js +3 -7
  304. package/lib/store/crud.js.map +2 -2
  305. package/lib/store/form.d.ts +1 -2
  306. package/lib/store/form.js +5 -6
  307. package/lib/store/form.js.map +2 -2
  308. package/lib/store/modal.d.ts +1 -1
  309. package/lib/store/modal.js +4 -0
  310. package/lib/store/modal.js.map +2 -2
  311. package/lib/store/root.d.ts +0 -1
  312. package/lib/store/service.d.ts +0 -1
  313. package/lib/store/service.js +5 -17
  314. package/lib/store/service.js.map +2 -2
  315. package/lib/store/table.d.ts +260 -5
  316. package/lib/store/table.js +83 -7
  317. package/lib/store/table.js.map +2 -2
  318. package/lib/themes/ang-ie11.css +1360 -244
  319. package/lib/themes/ang.css +1360 -244
  320. package/lib/themes/ang.css.map +1 -1
  321. package/lib/themes/antd-ie11.css +1360 -244
  322. package/lib/themes/antd.css +1360 -244
  323. package/lib/themes/antd.css.map +1 -1
  324. package/lib/themes/cxd-ie11.css +1960 -517
  325. package/lib/themes/cxd.css +1960 -517
  326. package/lib/themes/cxd.css.map +1 -1
  327. package/lib/themes/dark-ie11.css +1360 -244
  328. package/lib/themes/dark.css +1360 -244
  329. package/lib/themes/dark.css.map +1 -1
  330. package/lib/themes/default.css +1960 -517
  331. package/lib/themes/default.css.map +1 -1
  332. package/lib/types.d.ts +37 -0
  333. package/lib/types.js +0 -5
  334. package/lib/types.js.map +2 -2
  335. package/lib/utils/api.d.ts +3 -2
  336. package/lib/utils/api.js +43 -15
  337. package/lib/utils/api.js.map +2 -2
  338. package/lib/utils/attachmentAdpator.d.ts +7 -0
  339. package/lib/utils/attachmentAdpator.js +82 -0
  340. package/lib/utils/attachmentAdpator.js.map +13 -0
  341. package/lib/utils/dom.d.ts +4 -0
  342. package/lib/utils/dom.js +11 -1
  343. package/lib/utils/dom.js.map +2 -2
  344. package/lib/utils/handleAction.d.ts +7 -0
  345. package/lib/utils/handleAction.js +30 -0
  346. package/lib/utils/handleAction.js.map +13 -0
  347. package/lib/utils/helper.d.ts +3 -1
  348. package/lib/utils/helper.js +14 -5
  349. package/lib/utils/helper.js.map +2 -2
  350. package/lib/utils/icon.js +3 -0
  351. package/lib/utils/icon.js.map +2 -2
  352. package/lib/utils/tpl-builtin.d.ts +1 -1
  353. package/lib/utils/tpl-builtin.js +25 -15
  354. package/lib/utils/tpl-builtin.js.map +2 -2
  355. package/lib/utils/validations.js +62 -5
  356. package/lib/utils/validations.js.map +2 -2
  357. package/package.json +1 -2
  358. package/schema.json +3638 -1030
  359. package/scss/_mixins.scss +27 -0
  360. package/scss/_properties.scss +88 -13
  361. package/scss/_utilities.scss +4 -0
  362. package/scss/base/_normalize.scss +2 -0
  363. package/scss/components/_anchor-nav.scss +88 -29
  364. package/scss/components/_badge.scss +67 -2
  365. package/scss/components/_button.scss +34 -3
  366. package/scss/components/_card.scss +8 -14
  367. package/scss/components/_collapse.scss +41 -8
  368. package/scss/components/_column-toggler.scss +234 -0
  369. package/scss/components/_dropdown.scss +2 -1
  370. package/scss/components/_image-gallery.scss +1 -1
  371. package/scss/components/_images.scss +2 -1
  372. package/scss/components/_link.scss +6 -0
  373. package/scss/components/_mapping.scss +6 -0
  374. package/scss/components/_markdown.scss +266 -0
  375. package/scss/components/_nav.scss +236 -154
  376. package/scss/components/_page.scss +5 -4
  377. package/scss/components/_picker-columns.scss +123 -0
  378. package/scss/components/_popover.scss +17 -0
  379. package/scss/components/_portlet.scss +51 -0
  380. package/scss/components/_progress.scss +2 -0
  381. package/scss/components/_spinner.scss +6 -2
  382. package/scss/components/_status.scss +1 -1
  383. package/scss/components/_steps.scss +1 -1
  384. package/scss/components/_table.scss +51 -1
  385. package/scss/components/form/_checks.scss +0 -351
  386. package/scss/components/form/_color.scss +1 -0
  387. package/scss/components/form/_date-range.scss +2 -0
  388. package/scss/components/form/_date.scss +2 -0
  389. package/scss/components/form/_fieldset.scss +6 -3
  390. package/scss/components/form/_file.scss +5 -4
  391. package/scss/components/form/_group.scss +4 -0
  392. package/scss/components/form/_image.scss +7 -2
  393. package/scss/components/form/_list.scss +1 -0
  394. package/scss/components/form/_location.scss +1 -1
  395. package/scss/components/form/_selection.scss +354 -0
  396. package/scss/components/form/_text.scss +13 -0
  397. package/scss/components/form/_textarea.scss +10 -0
  398. package/scss/components/form/_transfer.scss +77 -18
  399. package/scss/themes/_common.scss +7 -0
  400. package/scss/themes/_cxd-colors.scss +56 -0
  401. package/scss/themes/_cxd-variables.scss +219 -91
  402. package/scss/themes/cxd.scss +370 -0
  403. package/sdk/ang-ie11.css +1752 -431
  404. package/sdk/ang.css +1706 -323
  405. package/sdk/antd-ie11.css +1739 -420
  406. package/sdk/antd.css +1706 -323
  407. package/sdk/charts.js +13 -13
  408. package/sdk/color-picker.js +65 -69
  409. package/sdk/cropperjs.js +2 -2
  410. package/sdk/cxd-ie11.css +3015 -1397
  411. package/sdk/cxd.css +2402 -651
  412. package/sdk/dark-ie11.css +1750 -429
  413. package/sdk/dark.css +1706 -323
  414. package/sdk/exceljs.js +1 -1
  415. package/sdk/helper.css.map +1 -1
  416. package/sdk/ie11-patch.css +1 -0
  417. package/sdk/locale/de-DE.js +5 -0
  418. package/sdk/markdown.js +69 -69
  419. package/sdk/papaparse.js +1 -1
  420. package/sdk/renderers/Form/CityDB.js +1 -1
  421. package/sdk/rest.js +20 -30
  422. package/sdk/rich-text.js +62 -64
  423. package/sdk/sdk-ie11.css +3015 -1397
  424. package/sdk/sdk.css +2402 -651
  425. package/sdk/sdk.js +1278 -1220
  426. package/sdk/thirds/hls.js/hls.js +1 -1
  427. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  428. package/sdk/tinymce.js +57 -57
  429. package/src/Schema.ts +32 -0
  430. package/src/components/Alert.tsx +3 -1
  431. package/src/components/AnchorNav.tsx +15 -4
  432. package/src/components/{AssociatedCheckboxes.tsx → AssociatedSelection.tsx} +41 -37
  433. package/src/components/Badge.tsx +126 -23
  434. package/src/components/Button.tsx +23 -7
  435. package/src/components/{ChainedCheckboxes.tsx → ChainedSelection.tsx} +57 -40
  436. package/src/components/Checkbox.tsx +5 -2
  437. package/src/components/Collapse.tsx +14 -9
  438. package/src/components/DatePicker.tsx +1 -1
  439. package/src/components/DateRangePicker.tsx +23 -11
  440. package/src/components/Drawer.tsx +3 -2
  441. package/src/components/{ListCheckboxes.tsx → GroupedSelection.tsx} +26 -21
  442. package/src/components/InputBox.tsx +1 -1
  443. package/src/components/Link.tsx +85 -0
  444. package/src/components/Modal.tsx +3 -2
  445. package/src/components/ModalManager.ts +1 -1
  446. package/src/components/MonthRangePicker.tsx +10 -2
  447. package/src/components/PickerColumn.tsx +429 -0
  448. package/src/components/PickerContainer.tsx +128 -0
  449. package/src/components/Radios.tsx +3 -8
  450. package/src/components/RichText.tsx +244 -3
  451. package/src/components/SearchBox.tsx +4 -5
  452. package/src/components/Select.tsx +61 -5
  453. package/src/components/{Checkboxes.tsx → Selection.tsx} +75 -21
  454. package/src/components/SparkLine.tsx +4 -1
  455. package/src/components/Steps.tsx +3 -3
  456. package/src/components/{TableCheckboxes.tsx → TableSelection.tsx} +46 -25
  457. package/src/components/TabsTransfer.tsx +13 -7
  458. package/src/components/TabsTransferPicker.tsx +85 -0
  459. package/src/components/Toast.tsx +5 -5
  460. package/src/components/Transfer.tsx +71 -50
  461. package/src/components/TransferDropDown.tsx +117 -0
  462. package/src/components/TransferPicker.tsx +84 -0
  463. package/src/components/Tree.tsx +6 -8
  464. package/src/components/{TreeCheckboxes.tsx → TreeSelection.tsx} +33 -26
  465. package/src/components/WithRemoteConfig.tsx +44 -4
  466. package/src/components/calendar/DaysView.tsx +2 -2
  467. package/src/components/condition-builder/Field.tsx +6 -7
  468. package/src/components/condition-builder/Func.tsx +3 -3
  469. package/src/components/condition-builder/InputSwitch.tsx +3 -3
  470. package/src/components/condition-builder/Item.tsx +5 -12
  471. package/src/components/condition-builder/Value.tsx +3 -0
  472. package/src/components/condition-builder/types.ts +6 -0
  473. package/src/components/icons.tsx +15 -0
  474. package/src/components/index.tsx +13 -13
  475. package/src/envOverwrite.ts +0 -1
  476. package/src/factory.tsx +31 -6
  477. package/src/hooks/index.ts +5 -0
  478. package/src/hooks/use-set-state.ts +19 -0
  479. package/src/hooks/use-touch.ts +100 -0
  480. package/src/hooks/use-update-effect.ts +16 -0
  481. package/src/icons/clock.svg +1 -0
  482. package/src/icons/loading-outline.svg +4 -0
  483. package/src/icons/status-close.svg +10 -0
  484. package/src/icons/status-fail.svg +10 -0
  485. package/src/icons/status-info.svg +8 -0
  486. package/src/icons/status-success.svg +10 -0
  487. package/src/icons/status-warning.svg +8 -0
  488. package/src/index.tsx +3 -0
  489. package/src/locale/de-DE.ts +5 -0
  490. package/src/locale/en-US.ts +6 -1
  491. package/src/locale/zh-CN.ts +9 -4
  492. package/src/renderers/Action.tsx +99 -15
  493. package/src/renderers/AnchorNav.tsx +4 -0
  494. package/src/renderers/Avatar.tsx +8 -4
  495. package/src/renderers/Breadcrumb.tsx +5 -1
  496. package/src/renderers/CRUD.tsx +70 -56
  497. package/src/renderers/Card.tsx +63 -34
  498. package/src/renderers/Chart.tsx +6 -2
  499. package/src/renderers/Collapse.tsx +9 -3
  500. package/src/renderers/Dialog.tsx +1 -5
  501. package/src/renderers/Drawer.tsx +0 -4
  502. package/src/renderers/DropDownButton.tsx +34 -12
  503. package/src/renderers/Form/Checkbox.tsx +8 -0
  504. package/src/renderers/Form/Combo.tsx +2 -3
  505. package/src/renderers/Form/Editor.tsx +19 -20
  506. package/src/renderers/Form/InputCity.tsx +4 -8
  507. package/src/renderers/Form/InputExcel.tsx +28 -3
  508. package/src/renderers/Form/InputFile.tsx +30 -20
  509. package/src/renderers/Form/InputImage.tsx +39 -13
  510. package/src/renderers/Form/InputTable.tsx +88 -9
  511. package/src/renderers/Form/Item.tsx +1 -1
  512. package/src/renderers/Form/Options.tsx +32 -7
  513. package/src/renderers/Form/Picker.tsx +3 -2
  514. package/src/renderers/Form/Select.tsx +144 -21
  515. package/src/renderers/Form/TabsTransferPicker.tsx +123 -0
  516. package/src/renderers/Form/Transfer.tsx +3 -2
  517. package/src/renderers/Form/TransferPicker.tsx +123 -0
  518. package/src/renderers/Form/TreeSelect.tsx +25 -0
  519. package/src/renderers/Form/index.tsx +1 -1
  520. package/src/renderers/Form/wrapControl.tsx +28 -3
  521. package/src/renderers/IFrame.tsx +4 -5
  522. package/src/renderers/Image.tsx +10 -0
  523. package/src/renderers/Json.tsx +19 -10
  524. package/src/renderers/Link.tsx +53 -14
  525. package/src/renderers/List.tsx +1 -1
  526. package/src/renderers/Log.tsx +16 -3
  527. package/src/renderers/Mapping.tsx +27 -11
  528. package/src/renderers/Nav.tsx +392 -60
  529. package/src/renderers/Page.tsx +3 -1
  530. package/src/renderers/Portlet.tsx +423 -0
  531. package/src/renderers/Property.tsx +3 -2
  532. package/src/renderers/SearchBox.tsx +23 -4
  533. package/src/renderers/Service.tsx +101 -3
  534. package/src/renderers/SparkLine.tsx +5 -0
  535. package/src/renderers/Steps.tsx +12 -9
  536. package/src/renderers/Table/ColumnToggler.tsx +544 -0
  537. package/src/renderers/Table/ItemActionsWrapper.tsx +44 -0
  538. package/src/renderers/Table/TableBody.tsx +1 -1
  539. package/src/renderers/Table/TableCell.tsx +16 -1
  540. package/src/renderers/Table/TableContent.tsx +41 -3
  541. package/src/renderers/Table/index.tsx +318 -92
  542. package/src/renderers/Tabs.tsx +9 -1
  543. package/src/renderers/WebComponent.tsx +2 -2
  544. package/src/store/crud.ts +3 -8
  545. package/src/store/form.ts +5 -10
  546. package/src/store/modal.ts +4 -0
  547. package/src/store/service.ts +5 -23
  548. package/src/store/table.ts +103 -4
  549. package/src/types.ts +57 -0
  550. package/src/utils/api.ts +63 -23
  551. package/src/utils/attachmentAdpator.ts +90 -0
  552. package/src/utils/dom.tsx +12 -0
  553. package/src/utils/handleAction.ts +41 -0
  554. package/src/utils/helper.ts +12 -3
  555. package/src/utils/icon.tsx +4 -0
  556. package/src/utils/tpl-builtin.ts +48 -17
  557. package/src/utils/validations.ts +80 -12
  558. package/dump.rdb +0 -0
  559. package/lib/components/AssociatedCheckboxes.d.ts +0 -762
  560. package/lib/components/AssociatedCheckboxes.js +0 -90
  561. package/lib/components/AssociatedCheckboxes.js.map +0 -13
  562. package/lib/components/ChainedCheckboxes.js.map +0 -13
  563. package/lib/components/Checkboxes.js +0 -101
  564. package/lib/components/Checkboxes.js.map +0 -13
  565. package/lib/components/ListCheckboxes.d.ts +0 -739
  566. package/lib/components/ListCheckboxes.js +0 -48
  567. package/lib/components/ListCheckboxes.js.map +0 -13
  568. package/lib/components/ListRadios.d.ts +0 -763
  569. package/lib/components/ListRadios.js +0 -86
  570. package/lib/components/ListRadios.js.map +0 -13
  571. package/lib/components/TableCheckboxes.js.map +0 -13
  572. package/lib/components/TreeCheckboxes.js.map +0 -13
  573. package/lib/components/TreeRadios.d.ts +0 -838
  574. package/lib/components/TreeRadios.js +0 -116
  575. package/lib/components/TreeRadios.js.map +0 -13
  576. package/src/components/ListRadios.tsx +0 -159
  577. package/src/components/TreeRadios.tsx +0 -202
@@ -6,8 +6,8 @@
6
6
  "/src/renderers/Form/InputTable.tsx"
7
7
  ],
8
8
  "names": [],
9
- "mappings": "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",
9
+ "mappings": "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",
10
10
  "sourcesContent": [
11
- "import React from 'react';\nimport {FormItem, FormControlProps, FormBaseControl} from './Item';\nimport Button from '../../components/Button';\nimport {\n createObject,\n getTree,\n getVariable,\n setVariable,\n spliceTree\n} from '../../utils/helper';\nimport {RendererData, Action, Api, Payload, ApiObject} from '../../types';\nimport {isEffectiveApi} from '../../utils/api';\nimport {filter} from '../../utils/tpl';\nimport omit from 'lodash/omit';\nimport {dataMapping} from '../../utils/tpl-builtin';\nimport findIndex from 'lodash/findIndex';\nimport {SimpleMap} from '../../utils/SimpleMap';\nimport {Icon} from '../../components/icons';\nimport {TableSchema} from '../Table';\nimport {SchemaApi} from '../../Schema';\nimport find from 'lodash/find';\n\nexport interface TableControlSchema\n extends FormBaseControl,\n Omit<TableSchema, 'type'> {\n type: 'input-table';\n\n /**\n * 可新增\n */\n addable?: boolean;\n\n /**\n * 是否可以拖拽排序\n */\n draggable?: boolean;\n\n /**\n * 新增 API\n */\n addApi?: SchemaApi;\n\n /**\n * 新增按钮\n */\n addBtnLabel?: string;\n\n /**\n * 新增图标\n */\n addBtnIcon?: string;\n\n /**\n * 显示新增按钮\n */\n showAddBtn?: boolean;\n\n /**\n * 可否删除\n */\n removable?: boolean;\n\n /**\n * 删除的 API\n */\n deleteApi?: SchemaApi;\n\n /**\n * 可否编辑\n */\n editable?: boolean;\n\n /**\n * 更新按钮名称\n */\n updateBtnLabel?: string;\n\n /**\n * 更新按钮图标\n */\n updateBtnIcon?: string;\n\n /**\n * 确认按钮文字\n */\n confirmBtnLabel?: string;\n\n /**\n * 确认按钮图标\n */\n confirmBtnIcon?: string;\n\n /**\n * 取消按钮文字\n */\n cancelBtnLabel?: string;\n\n /**\n * 取消按钮图标\n */\n cancelBtnIcon?: string;\n\n /**\n * 删除按钮文字\n */\n deleteBtnLabel?: string;\n\n /**\n * 删除按钮图标\n */\n deleteBtnIcon?: string;\n\n /**\n * 更新 API\n */\n updateApi?: SchemaApi;\n\n /**\n * 初始值,新增的时候\n */\n scaffold?: any;\n\n /**\n * 删除确认文字\n */\n deleteConfirmText?: string;\n\n /**\n * 值字段\n */\n valueField?: string;\n\n /**\n * 是否为确认的编辑模式。\n */\n needConfirm?: boolean;\n\n /**\n * 是否可以访问父级数据,正常 combo 已经关联到数组成员,是不能访问父级数据的。\n */\n canAccessSuperData?: boolean;\n\n /**\n * 是否显示序号\n */\n showIndex?: boolean;\n\n /**\n * 分页个数,默认不分页\n */\n perPage?: number;\n}\n\nexport interface TableProps\n extends FormControlProps,\n Omit<\n TableControlSchema,\n 'type' | 'className' | 'descriptionClassName' | 'inputClassName'\n > {}\n\nexport interface TableState {\n items: Array<any>;\n raw?: any;\n columns: Array<any>;\n editIndex: number;\n isCreateMode?: boolean;\n page?: number;\n}\n\nexport default class FormTable extends React.Component<TableProps, TableState> {\n static defaultProps = {\n placeholder: '空',\n scaffold: {},\n addBtnIcon: 'plus',\n updateBtnIcon: 'pencil',\n deleteBtnIcon: 'minus',\n confirmBtnIcon: 'check',\n cancelBtnIcon: 'close',\n valueField: ''\n };\n\n static propsList: Array<string> = [\n 'onChange',\n 'name',\n 'columns',\n 'label',\n 'scaffold',\n 'showAddBtn',\n 'addable',\n 'removable',\n 'editable',\n 'addApi',\n 'updateApi',\n 'deleteApi',\n 'needConfirm',\n 'canAccessSuperData',\n 'formStore'\n ];\n\n entries: SimpleMap<any, number>;\n entityId: number = 1;\n subForms: any = {};\n rowPrinstine: Array<any> = [];\n editting: any = {};\n constructor(props: TableProps) {\n super(props);\n\n this.state = {\n columns: this.buildColumns(props),\n editIndex: -1,\n items: Array.isArray(props.value) ? props.value.concat() : []\n };\n\n this.entries = new SimpleMap();\n this.buildItemProps = this.buildItemProps.bind(this);\n this.confirmEdit = this.confirmEdit.bind(this);\n this.cancelEdit = this.cancelEdit.bind(this);\n this.handleSaveTableOrder = this.handleSaveTableOrder.bind(this);\n this.handleTableSave = this.handleTableSave.bind(this);\n this.getEntryId = this.getEntryId.bind(this);\n this.subFormRef = this.subFormRef.bind(this);\n this.handlePageChange = this.handlePageChange.bind(this);\n this.emitValue = this.emitValue.bind(this);\n }\n\n componentDidUpdate(nextProps: TableProps) {\n const props = this.props;\n let toUpdate: any = null;\n\n if (props.columns !== nextProps.columns) {\n toUpdate = {\n ...toUpdate,\n columns: this.buildColumns(props)\n };\n }\n\n if (props.value !== nextProps.value) {\n toUpdate = {\n ...toUpdate,\n items: Array.isArray(props.value) ? props.value.concat() : [],\n editIndex: -1,\n raw: undefined\n };\n }\n\n toUpdate && this.setState(toUpdate);\n }\n\n componentWillUnmount() {\n this.entries.dispose();\n }\n\n subFormRef(form: any, x: number, y: number) {\n this.subForms[`${x}-${y}`] = form;\n }\n\n async validate(): Promise<string | void> {\n const {value, minLength, maxLength, translate: __, columns} = this.props;\n\n // todo: 如果当前正在编辑中,表单提交了,应该先让正在编辑的东西提交然后再做验证。\n if (~this.state.editIndex) {\n return __('Table.editing');\n }\n\n if (minLength && (!Array.isArray(value) || value.length < minLength)) {\n return __('Combo.minLength', {minLength});\n } else if (maxLength && Array.isArray(value) && value.length > maxLength) {\n return __('Combo.maxLength', {maxLength});\n } else {\n const subForms: Array<any> = [];\n Object.keys(this.subForms).forEach(\n key => this.subForms[key] && subForms.push(this.subForms[key])\n );\n if (subForms.length) {\n const results = await Promise.all(\n subForms.map(item => item.validate())\n );\n\n let msg = ~results.indexOf(false) ? __('Form.validateFailed') : '';\n let uniqueColumn = '';\n\n if (\n !msg &&\n Array.isArray(columns) &&\n Array.isArray(value) &&\n columns.some(item => {\n if (item.unique && item.name) {\n let exists: Array<any> = [];\n\n return value.some((obj: any) => {\n const value = getVariable(obj, item.name);\n\n if (~exists.indexOf(value)) {\n uniqueColumn = `${item.label || item.name}`;\n return true;\n }\n\n exists.push(value);\n return false;\n });\n }\n\n return false;\n })\n ) {\n msg = __('InputTable.uniqueError', {\n label: uniqueColumn\n });\n }\n\n return msg;\n }\n }\n }\n\n emitValue() {\n const items = this.state.items.filter(item => !item.__isPlaceholder);\n const {onChange} = this.props;\n onChange?.(items);\n }\n\n async doAction(action: Action, ctx: RendererData, ...rest: Array<any>) {\n const {\n onAction,\n valueField,\n env,\n onChange,\n editable,\n needConfirm,\n addable,\n addApi,\n translate: __\n } = this.props;\n\n if (action.actionType === 'add') {\n if (addable === false) {\n return;\n }\n\n const items = this.state.items.concat();\n\n if (addApi || action.payload) {\n let toAdd = null;\n\n if (isEffectiveApi(addApi, ctx)) {\n const payload = await env.fetcher(addApi, ctx);\n if (payload && !payload.ok) {\n env.notify('error', payload.msg || __('fetchFailed'));\n return;\n } else if (payload && payload.ok) {\n toAdd = payload.data;\n }\n } else {\n toAdd = dataMapping(action.payload, ctx);\n }\n\n toAdd = Array.isArray(toAdd) ? toAdd : [toAdd];\n toAdd.forEach((toAdd: any) => {\n if (\n !valueField ||\n !find(\n items,\n item => item[valueField as string] == toAdd[valueField as string]\n )\n ) {\n // 不要重复加入\n items.push(toAdd);\n }\n });\n\n this.setState(\n {\n items\n },\n () => {\n this.emitValue();\n\n if (toAdd.length === 1 && needConfirm !== false) {\n this.startEdit(items.length - 1, true);\n }\n }\n );\n\n return;\n } else {\n return this.addItem(items.length - 1);\n }\n } else if (\n action.actionType === 'remove' ||\n action.actionType === 'delete'\n ) {\n if (!valueField) {\n return env.alert(__('Table.valueField'));\n } else if (!action.payload) {\n return env.alert(__('Table.playload'));\n }\n\n const items = this.state.items.concat();\n let toRemove: any = dataMapping(action.payload, ctx);\n toRemove = Array.isArray(toRemove) ? toRemove : [toRemove];\n\n toRemove.forEach((toRemove: any) => {\n const idx = findIndex(\n items,\n item => item[valueField as string] == toRemove[valueField as string]\n );\n if (~idx) {\n items.splice(idx, 1);\n }\n });\n\n this.setState(\n {\n items\n },\n () => this.emitValue()\n );\n\n // todo 如果配置删除 Api 怎么办?\n return;\n }\n\n return onAction && onAction(action, ctx, ...rest);\n }\n\n addItem(index: number) {\n const {needConfirm, scaffold, columns} = this.props;\n const items = this.state.items.concat();\n let value: any = {\n __isPlaceholder: true\n };\n\n if (Array.isArray(columns)) {\n columns.forEach(column => {\n if (\n typeof column.value !== 'undefined' &&\n typeof column.name === 'string'\n ) {\n setVariable(value, column.name, column.value);\n }\n });\n }\n\n value = {\n ...value,\n ...scaffold\n };\n\n if (needConfirm === false) {\n delete value.__isPlaceholder;\n }\n\n items.splice(index + 1, 0, value);\n index = Math.min(index + 1, items.length - 1);\n\n this.setState(\n {\n items\n },\n () => {\n if (needConfirm === false) {\n this.emitValue();\n } else {\n this.startEdit(index, true);\n }\n }\n );\n }\n\n startEdit(index: number, isCreate: boolean = false) {\n this.setState({\n editIndex: index,\n isCreateMode: isCreate,\n raw: this.state.items[index],\n\n columns: this.buildColumns(this.props, isCreate)\n });\n }\n\n async confirmEdit() {\n const {addApi, updateApi, data, env, translate: __} = this.props;\n\n // form 是 lazyChange 的,先让他们 flush, 即把未提交的数据提交。\n const subForms: Array<any> = [];\n Object.keys(this.subForms).forEach(\n key => this.subForms[key] && subForms.push(this.subForms[key])\n );\n subForms.forEach(form => form.flush());\n\n const items = this.state.items.concat();\n let item = {\n ...items[this.state.editIndex]\n };\n const isNew = item.__isPlaceholder;\n\n let remote: Payload | null = null;\n if (isNew && isEffectiveApi(addApi, createObject(data, item))) {\n remote = await env.fetcher(addApi, createObject(data, item));\n } else if (isEffectiveApi(updateApi, createObject(data, item))) {\n remote = await env.fetcher(updateApi, createObject(data, item));\n }\n\n if (remote && !remote.ok) {\n env.notify('error', remote.msg || __('saveFailed'));\n return;\n } else if (remote && remote.ok) {\n item = {\n ...(((isNew ? addApi : updateApi) as ApiObject).replaceData\n ? {}\n : item),\n ...remote.data\n };\n }\n\n delete item.__isPlaceholder;\n items.splice(this.state.editIndex, 1, item);\n\n this.setState(\n {\n editIndex: -1,\n items: items,\n raw: undefined\n },\n this.emitValue\n );\n }\n\n cancelEdit() {\n let items = this.state.items.concat();\n\n if (this.state.isCreateMode) {\n items = items.filter(item => !item.__isPlaceholder);\n } else if (this.state.raw) {\n items.splice(this.state.editIndex, 1, this.state.raw);\n }\n\n this.setState(\n {\n editIndex: -1,\n raw: undefined,\n items: items\n },\n this.emitValue\n );\n }\n\n async removeItem(index: number) {\n const {\n value,\n onChange,\n deleteApi,\n deleteConfirmText,\n env,\n data,\n translate: __\n } = this.props;\n\n let newValue = Array.isArray(value) ? value.concat() : [];\n const item = newValue[index];\n\n if (!item) {\n return;\n }\n\n const ctx = createObject(data, item);\n if (isEffectiveApi(deleteApi, ctx)) {\n const confirmed = await env.confirm(\n deleteConfirmText ? filter(deleteConfirmText, ctx) : __('deleteConfirm')\n );\n if (!confirmed) {\n // 如果不确认,则跳过!\n return;\n }\n\n const result = await env.fetcher(deleteApi, ctx);\n\n if (!result.ok) {\n env.notify('error', __('deleteFailed'));\n return;\n }\n }\n\n this.removeEntry(item);\n newValue.splice(index, 1);\n onChange(newValue);\n }\n\n buildItemProps(item: any, index: number) {\n if (this.props.needConfirm === false) {\n return {\n quickEditEnabled: true\n };\n } else if (\n !this.props.editable &&\n !this.props.addable &&\n !this.state.isCreateMode\n ) {\n return null;\n }\n\n const perPage = this.props.perPage;\n const page = this.state.page || 1;\n let offset = 0;\n if (typeof perPage === 'number' && perPage) {\n offset = (page - 1) * perPage;\n }\n\n return {\n quickEditEnabled: this.state.editIndex === index + offset\n };\n }\n\n buildColumns(props: TableProps, isCreateMode = false): Array<any> {\n const env = this.props.env;\n let columns: Array<any> = Array.isArray(props.columns)\n ? props.columns.concat()\n : [];\n const ns = this.props.classPrefix;\n const __ = this.props.translate;\n const needConfirm = this.props.needConfirm;\n const showIndex = this.props.showIndex;\n\n let btns = [];\n if (props.addable && props.showAddBtn !== false) {\n btns.push({\n children: ({\n key,\n rowIndex,\n offset\n }: {\n key: any;\n rowIndex: number;\n offset: number;\n }) =>\n ~this.state.editIndex && needConfirm !== false ? null : (\n <Button\n classPrefix={ns}\n size=\"sm\"\n key={key}\n level=\"link\"\n tooltip={__('Table.addRow')}\n tooltipContainer={\n env && env.getModalContainer ? env.getModalContainer : undefined\n }\n onClick={this.addItem.bind(this, rowIndex + offset, undefined)}\n >\n {props.addBtnLabel ? <span>{props.addBtnLabel}</span> : null}\n {props.addBtnIcon ? (\n <Icon icon={props.addBtnIcon} className=\"icon\" />\n ) : null}\n </Button>\n )\n });\n }\n\n if (props.needConfirm === false) {\n columns = columns.map(column => {\n const quickEdit = column.quickEdit;\n\n return quickEdit === false\n ? omit(column, ['quickEdit'])\n : {\n ...column,\n quickEdit: {\n ...this.columnToQuickEdit(column),\n ...quickEdit,\n saveImmediately: true,\n mode: 'inline'\n }\n };\n });\n } else if (props.addable || props.editable || isCreateMode) {\n columns = columns.map(column => {\n const quickEdit =\n !isCreateMode && column.hasOwnProperty('quickEditOnUpdate')\n ? column.quickEditOnUpdate\n : column.quickEdit;\n\n return quickEdit === false\n ? omit(column, ['quickEdit'])\n : {\n ...column,\n quickEdit: {\n ...this.columnToQuickEdit(column),\n ...quickEdit,\n saveImmediately: true,\n mode: 'inline'\n }\n };\n });\n\n props.editable &&\n btns.push({\n children: ({\n key,\n rowIndex,\n data,\n offset\n }: {\n key: any;\n rowIndex: number;\n data: any;\n offset: number;\n }) =>\n ~this.state.editIndex || (data && data.__isPlaceholder) ? null : (\n <Button\n classPrefix={ns}\n size=\"sm\"\n key={key}\n level=\"link\"\n tooltip={__('Table.editRow')}\n tooltipContainer={\n env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n }\n onClick={() => this.startEdit(rowIndex + offset)}\n >\n {props.updateBtnLabel ? (\n <span>{props.updateBtnLabel}</span>\n ) : null}\n {props.updateBtnIcon ? (\n <Icon icon={props.updateBtnIcon} className=\"icon\" />\n ) : null}\n </Button>\n )\n });\n\n btns.push({\n children: ({\n key,\n rowIndex,\n offset\n }: {\n key: any;\n rowIndex: number;\n offset: number;\n }) =>\n this.state.editIndex === rowIndex + offset ? (\n <Button\n classPrefix={ns}\n size=\"sm\"\n key={key}\n level=\"link\"\n tooltip={__('save')}\n tooltipContainer={\n env && env.getModalContainer ? env.getModalContainer : undefined\n }\n onClick={this.confirmEdit}\n >\n {props.confirmBtnLabel ? (\n <span>{props.confirmBtnLabel}</span>\n ) : null}\n {props.confirmBtnIcon ? (\n <Icon icon={props.confirmBtnIcon} className=\"icon\" />\n ) : null}\n </Button>\n ) : null\n });\n\n btns.push({\n children: ({\n key,\n rowIndex,\n offset\n }: {\n key: any;\n rowIndex: number;\n offset: number;\n }) =>\n this.state.editIndex === rowIndex + offset ? (\n <Button\n classPrefix={ns}\n size=\"sm\"\n key={key}\n level=\"link\"\n tooltip={__('cancel')}\n tooltipContainer={\n env && env.getModalContainer ? env.getModalContainer : undefined\n }\n onClick={this.cancelEdit}\n >\n {props.cancelBtnLabel ? (\n <span>{props.cancelBtnLabel}</span>\n ) : null}\n {props.cancelBtnIcon ? (\n <Icon icon={props.cancelBtnIcon} className=\"icon\" />\n ) : null}\n </Button>\n ) : null\n });\n }\n\n if (props.removable) {\n btns.push({\n children: ({\n key,\n rowIndex,\n data,\n offset\n }: {\n key: any;\n rowIndex: number;\n data: any;\n offset: number;\n }) =>\n (~this.state.editIndex || (data && data.__isPlaceholder)) &&\n needConfirm !== false ? null : (\n <Button\n classPrefix={ns}\n size=\"sm\"\n key={key}\n level=\"link\"\n tooltip={__('Table.deleteRow')}\n tooltipContainer={\n env && env.getModalContainer ? env.getModalContainer : undefined\n }\n onClick={this.removeItem.bind(this, rowIndex + offset)}\n >\n {props.deleteBtnLabel ? (\n <span>{props.deleteBtnLabel}</span>\n ) : null}\n {props.deleteBtnIcon ? (\n <Icon icon={props.deleteBtnIcon} className=\"icon\" />\n ) : null}\n </Button>\n )\n });\n }\n\n if (btns.length) {\n let operation = columns.find(item => item.type === 'operation');\n\n if (!operation) {\n operation = {\n type: 'operation',\n buttons: [],\n label: __('Table.operation'),\n className: 'v-middle nowrap',\n fixed: 'right',\n width: '1%',\n innerClassName: 'm-n'\n };\n columns.push(operation);\n }\n\n operation.buttons = Array.isArray(operation.buttons)\n ? operation.buttons.concat()\n : [];\n operation.buttons.unshift.apply(operation.buttons, btns);\n }\n\n if (showIndex) {\n columns.unshift({\n label: __('Table.index'),\n width: '1%',\n children: (props: any) => {\n return <td>{props.offset + props.data.index + 1}</td>;\n }\n });\n }\n\n return columns;\n }\n\n columnToQuickEdit(column: any) {\n const quickEdit: any = {\n type: 'input-text'\n };\n\n if (\n (column.type &&\n /^input\\-|(?:select|picker|checkbox|checkboxes|editor|transfer|radios)$/i.test(\n column.type\n )) ||\n ~['textarea', 'combo', 'condition-builder', 'group'].indexOf(column.type)\n ) {\n return {\n ...column,\n label: ''\n };\n }\n\n return quickEdit;\n }\n\n handleTableSave(\n rows: Array<object> | object,\n diff: Array<object> | object,\n rowIndexes: Array<string> | string\n ) {\n const {perPage} = this.props;\n\n if (~this.state.editIndex) {\n const items = this.state.items.concat();\n const origin = items[this.state.editIndex];\n\n if (!origin) {\n return;\n }\n\n const value: any = {\n ...rows\n };\n this.entries.set(value, this.entries.get(origin) || this.entityId++);\n this.entries.delete(origin);\n items.splice(this.state.editIndex, 1, value);\n\n this.setState({\n items\n });\n return;\n }\n\n const page = this.state.page;\n let items = this.state.items.concat();\n\n if (Array.isArray(rows)) {\n (rowIndexes as Array<string>).forEach((rowIndex, index) => {\n const indexes = rowIndex.split('.').map(item => parseInt(item, 10));\n\n if (page && page > 1 && typeof perPage === 'number') {\n indexes[0] += (page - 1) * perPage;\n }\n const origin = getTree(items, indexes);\n\n const data = {\n ...origin,\n ...(diff as Array<object>)[index]\n };\n\n items = spliceTree(items, indexes, 1, data);\n });\n } else {\n const indexes = (rowIndexes as string)\n .split('.')\n .map(item => parseInt(item, 10));\n\n if (page && page > 1 && typeof perPage === 'number') {\n indexes[0] += (page - 1) * perPage;\n }\n\n const origin = getTree(items, indexes);\n const data = {\n ...origin,\n ...diff\n };\n\n items = spliceTree(items, indexes, 1, data);\n this.entries.set(data, this.entries.get(origin) || this.entityId++);\n // this.entries.delete(origin); // 反正最后都会清理的,先不删了吧。\n }\n\n this.setState(\n {\n items\n },\n this.emitValue\n );\n }\n\n handleSaveTableOrder(moved: Array<object>, rows: Array<object>) {\n const {onChange} = this.props;\n\n onChange(rows.map((item: object) => ({...item})));\n }\n\n handlePageChange(page: number) {\n this.setState({page});\n }\n\n removeEntry(entry: any) {\n if (this.entries.has(entry)) {\n this.entries.delete(entry);\n }\n }\n\n getEntryId(entry: any) {\n if (!this.entries.has(entry)) {\n this.entries.set(entry, this.entityId++);\n }\n\n return String(this.entries.get(entry));\n }\n\n render() {\n const {\n className,\n value,\n showAddBtn,\n disabled,\n render,\n placeholder,\n draggable,\n addable,\n columnsTogglable,\n combineNum,\n combineFromIndex,\n translate: __,\n canAccessSuperData,\n expandConfig,\n affixRow,\n prefixRow,\n formInited,\n perPage,\n classnames: cx\n } = this.props;\n\n if (formInited === false) {\n return null;\n }\n\n let items = this.state.items;\n\n let showPager = false;\n const page = this.state.page || 1;\n let offset = 0;\n let lastPage = 1;\n if (typeof perPage === 'number' && perPage && items.length > perPage) {\n lastPage = Math.ceil(items.length / perPage);\n items = items.slice((page - 1) * perPage, page * perPage);\n showPager = true;\n offset = (page - 1) * perPage;\n }\n\n return (\n <div className={cx('InputTable', className)}>\n {render(\n 'body',\n {\n type: 'table',\n placeholder: __(placeholder),\n columns: this.state.columns,\n affixHeader: false,\n prefixRow,\n affixRow\n },\n {\n value: undefined,\n saveImmediately: true,\n disabled,\n draggable: draggable && !~this.state.editIndex,\n items: items,\n getEntryId: this.getEntryId,\n onSave: this.handleTableSave,\n onSaveOrder: this.handleSaveTableOrder,\n buildItemProps: this.buildItemProps,\n quickEditFormRef: this.subFormRef,\n columnsTogglable: columnsTogglable,\n combineNum: combineNum,\n combineFromIndex: combineFromIndex,\n expandConfig,\n canAccessSuperData,\n reUseRow: false,\n offset\n }\n )}\n {(addable && showAddBtn !== false) || showPager ? (\n <div className={cx('InputTable-toolbar')}>\n {addable && showAddBtn !== false ? (\n <Button\n disabled={disabled}\n size=\"sm\"\n onClick={() => this.addItem(this.state.items.length)}\n >\n <Icon icon=\"plus\" className=\"icon\" />\n <span>{__('Combo.add')}</span>\n </Button>\n ) : null}\n\n {showPager\n ? render(\n 'pager',\n {\n type: 'pagination'\n },\n {\n activePage: page,\n lastPage: lastPage,\n onPageChange: this.handlePageChange,\n className: 'InputTable-pager'\n }\n )\n : null}\n </div>\n ) : null}\n </div>\n );\n }\n}\n\n@FormItem({\n type: 'input-table'\n})\nexport class TableControlRenderer extends FormTable {}\n"
11
+ "import React from 'react';\nimport {FormItem, FormControlProps, FormBaseControl} from './Item';\nimport Button from '../../components/Button';\nimport {\n createObject,\n getTree,\n getVariable,\n setVariable,\n spliceTree\n} from '../../utils/helper';\nimport {RendererData, Action, Api, Payload, ApiObject} from '../../types';\nimport {isEffectiveApi} from '../../utils/api';\nimport {filter} from '../../utils/tpl';\nimport omit from 'lodash/omit';\nimport {dataMapping} from '../../utils/tpl-builtin';\nimport findIndex from 'lodash/findIndex';\nimport {SimpleMap} from '../../utils/SimpleMap';\nimport {Icon} from '../../components/icons';\nimport {TableSchema} from '../Table';\nimport {SchemaApi} from '../../Schema';\nimport find from 'lodash/find';\n\nexport interface TableControlSchema\n extends FormBaseControl,\n Omit<TableSchema, 'type'> {\n type: 'input-table';\n\n /**\n * 可新增\n */\n addable?: boolean;\n\n /**\n * 可复制新增\n */\n copyable?: boolean;\n\n /**\n * 复制按钮文字\n */\n copyBtnLabel?: string;\n\n /**\n * 复制按钮图标\n */\n copyBtnIcon?: string;\n\n /**\n * 是否显示复制按钮\n */\n copyAddBtn?: boolean;\n\n /**\n * 是否可以拖拽排序\n */\n draggable?: boolean;\n\n /**\n * 新增 API\n */\n addApi?: SchemaApi;\n\n /**\n * 新增按钮文字\n */\n addBtnLabel?: string;\n\n /**\n * 新增按钮图标\n */\n addBtnIcon?: string;\n\n /**\n * 显示新增按钮\n */\n showAddBtn?: boolean;\n\n /**\n * 可否删除\n */\n removable?: boolean;\n\n /**\n * 删除的 API\n */\n deleteApi?: SchemaApi;\n\n /**\n * 可否编辑\n */\n editable?: boolean;\n\n /**\n * 更新按钮名称\n */\n editBtnLabel?: string;\n\n /**\n * 更新按钮图标\n */\n editBtnIcon?: string;\n\n /**\n * 确认按钮文字\n */\n confirmBtnLabel?: string;\n\n /**\n * 确认按钮图标\n */\n confirmBtnIcon?: string;\n\n /**\n * 取消按钮文字\n */\n cancelBtnLabel?: string;\n\n /**\n * 取消按钮图标\n */\n cancelBtnIcon?: string;\n\n /**\n * 删除按钮文字\n */\n deleteBtnLabel?: string;\n\n /**\n * 删除按钮图标\n */\n deleteBtnIcon?: string;\n\n /**\n * 更新 API\n */\n updateApi?: SchemaApi;\n\n /**\n * 初始值,新增的时候\n */\n scaffold?: any;\n\n /**\n * 删除确认文字\n */\n deleteConfirmText?: string;\n\n /**\n * 值字段\n */\n valueField?: string;\n\n /**\n * 是否为确认的编辑模式。\n */\n needConfirm?: boolean;\n\n /**\n * 是否可以访问父级数据,正常 combo 已经关联到数组成员,是不能访问父级数据的。\n */\n canAccessSuperData?: boolean;\n\n /**\n * 是否显示序号\n */\n showIndex?: boolean;\n\n /**\n * 分页个数,默认不分页\n */\n perPage?: number;\n}\n\nexport interface TableProps\n extends FormControlProps,\n Omit<\n TableControlSchema,\n 'type' | 'className' | 'descriptionClassName' | 'inputClassName'\n > {}\n\nexport interface TableState {\n items: Array<any>;\n raw?: any;\n columns: Array<any>;\n editIndex: number;\n isCreateMode?: boolean;\n page?: number;\n}\n\nexport default class FormTable extends React.Component<TableProps, TableState> {\n static defaultProps = {\n placeholder: '空',\n scaffold: {},\n addBtnIcon: 'plus',\n copyBtnIcon: 'copy',\n editBtnIcon: 'pencil',\n deleteBtnIcon: 'minus',\n confirmBtnIcon: 'check',\n cancelBtnIcon: 'close',\n valueField: ''\n };\n\n static propsList: Array<string> = [\n 'onChange',\n 'name',\n 'columns',\n 'label',\n 'scaffold',\n 'showAddBtn',\n 'addable',\n 'removable',\n 'copyable',\n 'editable',\n 'addApi',\n 'updateApi',\n 'deleteApi',\n 'needConfirm',\n 'canAccessSuperData',\n 'formStore'\n ];\n\n entries: SimpleMap<any, number>;\n entityId: number = 1;\n subForms: any = {};\n rowPrinstine: Array<any> = [];\n editting: any = {};\n constructor(props: TableProps) {\n super(props);\n\n this.state = {\n columns: this.buildColumns(props),\n editIndex: -1,\n items: Array.isArray(props.value) ? props.value.concat() : []\n };\n\n this.entries = new SimpleMap();\n this.buildItemProps = this.buildItemProps.bind(this);\n this.confirmEdit = this.confirmEdit.bind(this);\n this.cancelEdit = this.cancelEdit.bind(this);\n this.handleSaveTableOrder = this.handleSaveTableOrder.bind(this);\n this.handleTableSave = this.handleTableSave.bind(this);\n this.getEntryId = this.getEntryId.bind(this);\n this.subFormRef = this.subFormRef.bind(this);\n this.handlePageChange = this.handlePageChange.bind(this);\n this.emitValue = this.emitValue.bind(this);\n }\n\n componentDidUpdate(nextProps: TableProps) {\n const props = this.props;\n let toUpdate: any = null;\n\n if (props.columns !== nextProps.columns) {\n toUpdate = {\n ...toUpdate,\n columns: this.buildColumns(props)\n };\n }\n\n if (props.value !== nextProps.value) {\n toUpdate = {\n ...toUpdate,\n items: Array.isArray(props.value) ? props.value.concat() : [],\n editIndex: -1,\n raw: undefined\n };\n }\n\n toUpdate && this.setState(toUpdate);\n }\n\n componentWillUnmount() {\n this.entries.dispose();\n }\n\n subFormRef(form: any, x: number, y: number) {\n this.subForms[`${x}-${y}`] = form;\n }\n\n async validate(): Promise<string | void> {\n const {value, minLength, maxLength, translate: __, columns} = this.props;\n\n // todo: 如果当前正在编辑中,表单提交了,应该先让正在编辑的东西提交然后再做验证。\n if (~this.state.editIndex) {\n return __('Table.editing');\n }\n\n if (minLength && (!Array.isArray(value) || value.length < minLength)) {\n return __('Combo.minLength', {minLength});\n } else if (maxLength && Array.isArray(value) && value.length > maxLength) {\n return __('Combo.maxLength', {maxLength});\n } else {\n const subForms: Array<any> = [];\n Object.keys(this.subForms).forEach(\n key => this.subForms[key] && subForms.push(this.subForms[key])\n );\n if (subForms.length) {\n const results = await Promise.all(\n subForms.map(item => item.validate())\n );\n\n let msg = ~results.indexOf(false) ? __('Form.validateFailed') : '';\n let uniqueColumn = '';\n\n if (\n !msg &&\n Array.isArray(columns) &&\n Array.isArray(value) &&\n columns.some(item => {\n if (item.unique && item.name) {\n let exists: Array<any> = [];\n\n return value.some((obj: any) => {\n const value = getVariable(obj, item.name);\n\n if (~exists.indexOf(value)) {\n uniqueColumn = `${item.label || item.name}`;\n return true;\n }\n\n exists.push(value);\n return false;\n });\n }\n\n return false;\n })\n ) {\n msg = __('InputTable.uniqueError', {\n label: uniqueColumn\n });\n }\n\n return msg;\n }\n }\n }\n\n emitValue() {\n const items = this.state.items.filter(item => !item.__isPlaceholder);\n const {onChange} = this.props;\n onChange?.(items);\n }\n\n async doAction(action: Action, ctx: RendererData, ...rest: Array<any>) {\n const {\n onAction,\n valueField,\n env,\n onChange,\n editable,\n needConfirm,\n addable,\n addApi,\n translate: __\n } = this.props;\n\n if (action.actionType === 'add') {\n if (addable === false) {\n return;\n }\n\n const items = this.state.items.concat();\n\n if (addApi || action.payload) {\n let toAdd = null;\n\n if (isEffectiveApi(addApi, ctx)) {\n const payload = await env.fetcher(addApi, ctx);\n if (payload && !payload.ok) {\n env.notify('error', payload.msg || __('fetchFailed'));\n return;\n } else if (payload && payload.ok) {\n toAdd = payload.data;\n }\n } else {\n toAdd = dataMapping(action.payload, ctx);\n }\n\n toAdd = Array.isArray(toAdd) ? toAdd : [toAdd];\n toAdd.forEach((toAdd: any) => {\n if (\n !valueField ||\n !find(\n items,\n item => item[valueField as string] == toAdd[valueField as string]\n )\n ) {\n // 不要重复加入\n items.push(toAdd);\n }\n });\n\n this.setState(\n {\n items\n },\n () => {\n this.emitValue();\n\n if (toAdd.length === 1 && needConfirm !== false) {\n this.startEdit(items.length - 1, true);\n }\n }\n );\n\n return;\n } else {\n return this.addItem(items.length - 1);\n }\n } else if (\n action.actionType === 'remove' ||\n action.actionType === 'delete'\n ) {\n if (!valueField) {\n return env.alert(__('Table.valueField'));\n } else if (!action.payload) {\n return env.alert(__('Table.playload'));\n }\n\n const items = this.state.items.concat();\n let toRemove: any = dataMapping(action.payload, ctx);\n toRemove = Array.isArray(toRemove) ? toRemove : [toRemove];\n\n toRemove.forEach((toRemove: any) => {\n const idx = findIndex(\n items,\n item => item[valueField as string] == toRemove[valueField as string]\n );\n if (~idx) {\n items.splice(idx, 1);\n }\n });\n\n this.setState(\n {\n items\n },\n () => this.emitValue()\n );\n\n // todo 如果配置删除 Api 怎么办?\n return;\n }\n\n return onAction && onAction(action, ctx, ...rest);\n }\n\n copyItem(index: number) {\n const {needConfirm} = this.props;\n const items = this.state.items.concat();\n\n items.splice(index + 1, 0, items[index]);\n index = Math.min(index + 1, items.length - 1);\n this.setState(\n {\n items\n },\n () => {\n if (needConfirm === false) {\n this.emitValue();\n } else {\n this.startEdit(index, true);\n }\n }\n );\n }\n\n addItem(index: number) {\n const {needConfirm, scaffold, columns} = this.props;\n const items = this.state.items.concat();\n let value: any = {\n __isPlaceholder: true\n };\n\n if (Array.isArray(columns)) {\n columns.forEach(column => {\n if (\n typeof column.value !== 'undefined' &&\n typeof column.name === 'string'\n ) {\n setVariable(value, column.name, column.value);\n }\n });\n }\n\n value = {\n ...value,\n ...scaffold\n };\n\n if (needConfirm === false) {\n delete value.__isPlaceholder;\n }\n\n items.splice(index + 1, 0, value);\n index = Math.min(index + 1, items.length - 1);\n\n this.setState(\n {\n items\n },\n () => {\n if (needConfirm === false) {\n this.emitValue();\n } else {\n this.startEdit(index, true);\n }\n }\n );\n }\n\n startEdit(index: number, isCreate: boolean = false) {\n this.setState({\n editIndex: index,\n isCreateMode: isCreate,\n raw: this.state.items[index],\n\n columns: this.buildColumns(this.props, isCreate)\n });\n }\n\n async confirmEdit() {\n const {addApi, updateApi, data, env, translate: __} = this.props;\n\n // form 是 lazyChange 的,先让他们 flush, 即把未提交的数据提交。\n const subForms: Array<any> = [];\n Object.keys(this.subForms).forEach(\n key => this.subForms[key] && subForms.push(this.subForms[key])\n );\n subForms.forEach(form => form.flush());\n\n const items = this.state.items.concat();\n let item = {\n ...items[this.state.editIndex]\n };\n const isNew = item.__isPlaceholder;\n\n let remote: Payload | null = null;\n if (isNew && isEffectiveApi(addApi, createObject(data, item))) {\n remote = await env.fetcher(addApi, createObject(data, item));\n } else if (isEffectiveApi(updateApi, createObject(data, item))) {\n remote = await env.fetcher(updateApi, createObject(data, item));\n }\n\n if (remote && !remote.ok) {\n env.notify('error', remote.msg || __('saveFailed'));\n return;\n } else if (remote && remote.ok) {\n item = {\n ...(((isNew ? addApi : updateApi) as ApiObject).replaceData\n ? {}\n : item),\n ...remote.data\n };\n }\n\n delete item.__isPlaceholder;\n items.splice(this.state.editIndex, 1, item);\n\n this.setState(\n {\n editIndex: -1,\n items: items,\n raw: undefined\n },\n this.emitValue\n );\n }\n\n cancelEdit() {\n let items = this.state.items.concat();\n\n if (this.state.isCreateMode) {\n items = items.filter(item => !item.__isPlaceholder);\n } else if (this.state.raw) {\n items.splice(this.state.editIndex, 1, this.state.raw);\n }\n\n this.setState(\n {\n editIndex: -1,\n raw: undefined,\n items: items\n },\n this.emitValue\n );\n }\n\n async removeItem(index: number) {\n const {\n value,\n onChange,\n deleteApi,\n deleteConfirmText,\n env,\n data,\n translate: __\n } = this.props;\n\n let newValue = Array.isArray(value) ? value.concat() : [];\n const item = newValue[index];\n\n if (!item) {\n return;\n }\n\n const ctx = createObject(data, item);\n if (isEffectiveApi(deleteApi, ctx)) {\n const confirmed = await env.confirm(\n deleteConfirmText ? filter(deleteConfirmText, ctx) : __('deleteConfirm')\n );\n if (!confirmed) {\n // 如果不确认,则跳过!\n return;\n }\n\n const result = await env.fetcher(deleteApi, ctx);\n\n if (!result.ok) {\n env.notify('error', __('deleteFailed'));\n return;\n }\n }\n\n this.removeEntry(item);\n newValue.splice(index, 1);\n onChange(newValue);\n }\n\n buildItemProps(item: any, index: number) {\n if (this.props.needConfirm === false) {\n return {\n quickEditEnabled: true\n };\n } else if (\n !this.props.editable &&\n !this.props.addable &&\n !this.state.isCreateMode\n ) {\n return null;\n }\n\n const perPage = this.props.perPage;\n const page = this.state.page || 1;\n let offset = 0;\n if (typeof perPage === 'number' && perPage) {\n offset = (page - 1) * perPage;\n }\n\n return {\n quickEditEnabled: this.state.editIndex === index + offset\n };\n }\n\n buildColumns(props: TableProps, isCreateMode = false): Array<any> {\n const env = this.props.env;\n let columns: Array<any> = Array.isArray(props.columns)\n ? props.columns.concat()\n : [];\n const ns = this.props.classPrefix;\n const __ = this.props.translate;\n const needConfirm = this.props.needConfirm;\n const showIndex = this.props.showIndex;\n\n let btns = [];\n if (props.addable && props.showAddBtn !== false) {\n btns.push({\n children: ({\n key,\n rowIndex,\n offset\n }: {\n key: any;\n rowIndex: number;\n offset: number;\n }) =>\n ~this.state.editIndex && needConfirm !== false ? null : (\n <Button\n classPrefix={ns}\n size=\"sm\"\n key={key}\n level=\"link\"\n tooltip={__('Table.addRow')}\n tooltipContainer={\n env && env.getModalContainer ? env.getModalContainer : undefined\n }\n onClick={this.addItem.bind(this, rowIndex + offset, undefined)}\n >\n {props.addBtnLabel ? <span>{props.addBtnLabel}</span> : null}\n {props.addBtnIcon ? (\n <Icon icon={props.addBtnIcon} className=\"icon\" />\n ) : null}\n </Button>\n )\n });\n }\n\n if (props.copyable && props.showCopyBtn !== false) {\n btns.push({\n children: ({\n key,\n rowIndex,\n offset\n }: {\n key: any;\n rowIndex: number;\n offset: number;\n }) =>\n ~this.state.editIndex && needConfirm !== false ? null : (\n <Button\n classPrefix={ns}\n size=\"sm\"\n key={key}\n level=\"link\"\n tooltip={__('Table.copyRow')}\n tooltipContainer={\n env && env.getModalContainer ? env.getModalContainer : undefined\n }\n onClick={this.copyItem.bind(this, rowIndex + offset, undefined)}\n >\n {props.copyBtnLabel ? <span>{props.copyBtnLabel}</span> : null}\n {props.copyBtnIcon ? (\n <Icon icon={props.copyBtnIcon} className=\"icon\" />\n ) : null}\n </Button>\n )\n });\n }\n\n if (props.needConfirm === false) {\n columns = columns.map(column => {\n const quickEdit = column.quickEdit;\n\n return quickEdit === false\n ? omit(column, ['quickEdit'])\n : {\n ...column,\n quickEdit: {\n ...this.columnToQuickEdit(column),\n ...quickEdit,\n saveImmediately: true,\n mode: 'inline'\n }\n };\n });\n } else if (props.addable || props.editable || isCreateMode) {\n columns = columns.map(column => {\n const quickEdit =\n !isCreateMode && column.hasOwnProperty('quickEditOnUpdate')\n ? column.quickEditOnUpdate\n : column.quickEdit;\n\n return quickEdit === false\n ? omit(column, ['quickEdit'])\n : {\n ...column,\n quickEdit: {\n ...this.columnToQuickEdit(column),\n ...quickEdit,\n saveImmediately: true,\n mode: 'inline'\n }\n };\n });\n\n props.editable &&\n btns.push({\n children: ({\n key,\n rowIndex,\n data,\n offset\n }: {\n key: any;\n rowIndex: number;\n data: any;\n offset: number;\n }) =>\n ~this.state.editIndex || (data && data.__isPlaceholder) ? null : (\n <Button\n classPrefix={ns}\n size=\"sm\"\n key={key}\n level=\"link\"\n tooltip={__('Table.editRow')}\n tooltipContainer={\n env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n }\n onClick={() => this.startEdit(rowIndex + offset)}\n >\n {props.updateBtnLabel || props.editBtnLabel ? (\n <span>{props.updateBtnLabel || props.editBtnLabel}</span>\n ) : null}\n {/* 兼容之前的写法 */}\n {typeof props.updateBtnIcon !== 'undefined' ? (\n props.updateBtnIcon ? (\n <Icon icon={props.updateBtnIcon} className=\"icon\" />\n ) : null\n ) : props.editBtnIcon ? (\n <Icon icon={props.editBtnIcon} className=\"icon\" />\n ) : null}\n </Button>\n )\n });\n\n btns.push({\n children: ({\n key,\n rowIndex,\n offset\n }: {\n key: any;\n rowIndex: number;\n offset: number;\n }) =>\n this.state.editIndex === rowIndex + offset ? (\n <Button\n classPrefix={ns}\n size=\"sm\"\n key={key}\n level=\"link\"\n tooltip={__('save')}\n tooltipContainer={\n env && env.getModalContainer ? env.getModalContainer : undefined\n }\n onClick={this.confirmEdit}\n >\n {props.confirmBtnLabel ? (\n <span>{props.confirmBtnLabel}</span>\n ) : null}\n {props.confirmBtnIcon ? (\n <Icon icon={props.confirmBtnIcon} className=\"icon\" />\n ) : null}\n </Button>\n ) : null\n });\n\n btns.push({\n children: ({\n key,\n rowIndex,\n offset\n }: {\n key: any;\n rowIndex: number;\n offset: number;\n }) =>\n this.state.editIndex === rowIndex + offset ? (\n <Button\n classPrefix={ns}\n size=\"sm\"\n key={key}\n level=\"link\"\n tooltip={__('cancel')}\n tooltipContainer={\n env && env.getModalContainer ? env.getModalContainer : undefined\n }\n onClick={this.cancelEdit}\n >\n {props.cancelBtnLabel ? (\n <span>{props.cancelBtnLabel}</span>\n ) : null}\n {props.cancelBtnIcon ? (\n <Icon icon={props.cancelBtnIcon} className=\"icon\" />\n ) : null}\n </Button>\n ) : null\n });\n }\n\n if (props.removable) {\n btns.push({\n children: ({\n key,\n rowIndex,\n data,\n offset\n }: {\n key: any;\n rowIndex: number;\n data: any;\n offset: number;\n }) =>\n (~this.state.editIndex || (data && data.__isPlaceholder)) &&\n needConfirm !== false ? null : (\n <Button\n classPrefix={ns}\n size=\"sm\"\n key={key}\n level=\"link\"\n tooltip={__('Table.deleteRow')}\n tooltipContainer={\n env && env.getModalContainer ? env.getModalContainer : undefined\n }\n onClick={this.removeItem.bind(this, rowIndex + offset)}\n >\n {props.deleteBtnLabel ? (\n <span>{props.deleteBtnLabel}</span>\n ) : null}\n {props.deleteBtnIcon ? (\n <Icon icon={props.deleteBtnIcon} className=\"icon\" />\n ) : null}\n </Button>\n )\n });\n }\n\n if (btns.length) {\n let operation = columns.find(item => item.type === 'operation');\n\n if (!operation) {\n operation = {\n type: 'operation',\n buttons: [],\n label: __('Table.operation'),\n className: 'v-middle nowrap',\n fixed: 'right',\n width: '1%',\n innerClassName: 'm-n'\n };\n columns.push(operation);\n }\n\n operation.buttons = Array.isArray(operation.buttons)\n ? operation.buttons.concat()\n : [];\n operation.buttons.unshift.apply(operation.buttons, btns);\n }\n\n if (showIndex) {\n columns.unshift({\n label: __('Table.index'),\n width: '1%',\n children: (props: any) => {\n return <td>{props.offset + props.data.index + 1}</td>;\n }\n });\n }\n\n return columns;\n }\n\n columnToQuickEdit(column: any) {\n const quickEdit: any = {\n type: 'input-text'\n };\n\n if (\n (column.type &&\n /^input\\-|(?:select|picker|checkbox|checkboxes|editor|transfer|radios)$/i.test(\n column.type\n )) ||\n ~['textarea', 'combo', 'condition-builder', 'group'].indexOf(column.type)\n ) {\n return {\n ...column,\n label: ''\n };\n }\n\n return quickEdit;\n }\n\n handleTableSave(\n rows: Array<object> | object,\n diff: Array<object> | object,\n rowIndexes: Array<string> | string\n ) {\n const {perPage} = this.props;\n\n if (~this.state.editIndex) {\n const items = this.state.items.concat();\n const origin = items[this.state.editIndex];\n\n if (!origin) {\n return;\n }\n\n const value: any = {\n ...rows\n };\n this.entries.set(value, this.entries.get(origin) || this.entityId++);\n this.entries.delete(origin);\n items.splice(this.state.editIndex, 1, value);\n\n this.setState({\n items\n });\n return;\n }\n\n const page = this.state.page;\n let items = this.state.items.concat();\n\n if (Array.isArray(rows)) {\n (rowIndexes as Array<string>).forEach((rowIndex, index) => {\n const indexes = rowIndex.split('.').map(item => parseInt(item, 10));\n\n if (page && page > 1 && typeof perPage === 'number') {\n indexes[0] += (page - 1) * perPage;\n }\n const origin = getTree(items, indexes);\n\n const data = {\n ...origin,\n ...(diff as Array<object>)[index]\n };\n\n items = spliceTree(items, indexes, 1, data);\n });\n } else {\n const indexes = (rowIndexes as string)\n .split('.')\n .map(item => parseInt(item, 10));\n\n if (page && page > 1 && typeof perPage === 'number') {\n indexes[0] += (page - 1) * perPage;\n }\n\n const origin = getTree(items, indexes);\n const data = {\n ...origin,\n ...diff\n };\n\n items = spliceTree(items, indexes, 1, data);\n this.entries.set(data, this.entries.get(origin) || this.entityId++);\n // this.entries.delete(origin); // 反正最后都会清理的,先不删了吧。\n }\n\n this.setState(\n {\n items\n },\n this.emitValue\n );\n }\n\n handleSaveTableOrder(moved: Array<object>, rows: Array<object>) {\n const {onChange} = this.props;\n\n onChange(rows.map((item: object) => ({...item})));\n }\n\n handlePageChange(page: number) {\n this.setState({page});\n }\n\n removeEntry(entry: any) {\n if (this.entries.has(entry)) {\n this.entries.delete(entry);\n }\n }\n\n getEntryId(entry: any) {\n if (!this.entries.has(entry)) {\n this.entries.set(entry, this.entityId++);\n }\n\n return String(this.entries.get(entry));\n }\n\n render() {\n const {\n className,\n value,\n showAddBtn,\n disabled,\n render,\n placeholder,\n draggable,\n addable,\n columnsTogglable,\n combineNum,\n combineFromIndex,\n translate: __,\n canAccessSuperData,\n expandConfig,\n affixRow,\n prefixRow,\n formInited,\n perPage,\n classnames: cx\n } = this.props;\n\n if (formInited === false) {\n return null;\n }\n\n let items = this.state.items;\n\n let showPager = false;\n const page = this.state.page || 1;\n let offset = 0;\n let lastPage = 1;\n if (typeof perPage === 'number' && perPage && items.length > perPage) {\n lastPage = Math.ceil(items.length / perPage);\n items = items.slice((page - 1) * perPage, page * perPage);\n showPager = true;\n offset = (page - 1) * perPage;\n }\n\n return (\n <div className={cx('InputTable', className)}>\n {render(\n 'body',\n {\n type: 'table',\n placeholder: __(placeholder),\n columns: this.state.columns,\n affixHeader: false,\n prefixRow,\n affixRow\n },\n {\n value: undefined,\n saveImmediately: true,\n disabled,\n draggable: draggable && !~this.state.editIndex,\n items: items,\n getEntryId: this.getEntryId,\n onSave: this.handleTableSave,\n onSaveOrder: this.handleSaveTableOrder,\n buildItemProps: this.buildItemProps,\n quickEditFormRef: this.subFormRef,\n columnsTogglable: columnsTogglable,\n combineNum: combineNum,\n combineFromIndex: combineFromIndex,\n expandConfig,\n canAccessSuperData,\n reUseRow: false,\n offset\n }\n )}\n {(addable && showAddBtn !== false) || showPager ? (\n <div className={cx('InputTable-toolbar')}>\n {addable && showAddBtn !== false ? (\n <Button\n disabled={disabled}\n size=\"sm\"\n onClick={() => this.addItem(this.state.items.length)}\n >\n <Icon icon=\"plus\" className=\"icon\" />\n <span>{__('Combo.add')}</span>\n </Button>\n ) : null}\n\n {showPager\n ? render(\n 'pager',\n {\n type: 'pagination'\n },\n {\n activePage: page,\n lastPage: lastPage,\n onPageChange: this.handlePageChange,\n className: 'InputTable-pager'\n }\n )\n : null}\n </div>\n ) : null}\n </div>\n );\n }\n}\n\n@FormItem({\n type: 'input-table'\n})\nexport class TableControlRenderer extends FormTable {}\n"
12
12
  ]
13
13
  }
@@ -243,7 +243,7 @@ export interface FormItemProps extends RendererProps {
243
243
  prinstine: any;
244
244
  setPrinstineValue: (value: any) => void;
245
245
  onChange: (value: any, submitOnChange?: boolean, changeImmediately?: boolean) => void;
246
- onBulkChange: (values: {
246
+ onBulkChange?: (values: {
247
247
  [propName: string]: any;
248
248
  }, submitOnChange?: boolean) => void;
249
249
  addHook: (fn: Function, mode?: 'validate' | 'init' | 'flush') => () => void;
@@ -8,6 +8,6 @@
8
8
  "names": [],
9
9
  "mappings": "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",
10
10
  "sourcesContent": [
11
- "import React from 'react';\nimport hoistNonReactStatic from 'hoist-non-react-statics';\nimport {IFormItemStore, IFormStore} from '../../store/form';\nimport {reaction} from 'mobx';\n\nimport {\n RendererProps,\n registerRenderer,\n TestFunc,\n RendererConfig\n} from '../../factory';\nimport {anyChanged, ucFirst, getWidthRate, autobind} from '../../utils/helper';\nimport {observer} from 'mobx-react';\nimport {FormHorizontal, FormSchema, FormSchemaHorizontal} from '.';\nimport {Api, Schema} from '../../types';\nimport {filter} from '../../utils/tpl';\nimport {SchemaRemark} from '../Remark';\nimport {\n BaseSchema,\n SchemaApi,\n SchemaClassName,\n SchemaObject,\n SchemaType\n} from '../../Schema';\nimport {HocStoreFactory} from '../../WithStore';\nimport {wrapControl} from './wrapControl';\n\nexport type FormControlSchemaAlias = SchemaObject;\n\nexport interface FormBaseControl extends Omit<BaseSchema, 'type'> {\n /**\n * 表单项类型\n */\n type: SchemaType;\n\n /**\n * 表单项大小\n */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'full';\n\n /**\n * 描述标题\n */\n label?: string | false;\n\n /**\n * 配置 label className\n */\n labelClassName?: SchemaClassName;\n\n /**\n * 字段名,表单提交时的 key,支持多层级,用.连接,如: a.b.c\n */\n name?: string;\n\n /**\n * 显示一个小图标, 鼠标放上去的时候显示提示内容\n */\n remark?: SchemaRemark;\n\n /**\n * 显示一个小图标, 鼠标放上去的时候显示提示内容, 这个小图标跟 label 在一起\n */\n labelRemark?: SchemaRemark;\n\n /**\n * 输入提示,聚焦的时候显示\n */\n hint?: string;\n\n /**\n * 当修改完的时候是否提交表单。\n */\n submitOnChange?: boolean;\n\n /**\n * 是否只读\n */\n readOnly?: boolean;\n\n /**\n * 不设置时,当表单提交过后表单项每次修改都会触发重新验证,\n * 如果设置了,则由此配置项来决定要不要每次修改都触发验证。\n */\n validateOnChange?: boolean;\n\n /**\n * 描述内容,支持 Html 片段。\n */\n description?: string;\n\n /**\n * @deprecated 用 description 代替\n */\n desc?: string;\n\n /**\n * 配置描述上的 className\n */\n descriptionClassName?: SchemaClassName;\n\n /**\n * 配置当前表单项展示模式\n */\n mode?: 'normal' | 'inline' | 'horizontal';\n\n /**\n * 当配置为水平布局的时候,用来配置具体的左右分配。\n */\n horizontal?: FormSchemaHorizontal;\n\n /**\n * 表单 control 是否为 inline 模式。\n */\n inline?: boolean;\n\n /**\n * 配置 input className\n */\n inputClassName?: SchemaClassName;\n\n /**\n * 占位符\n */\n placeholder?: string;\n\n /**\n * 是否为必填\n */\n required?: boolean;\n\n /**\n * 验证失败的提示信息\n */\n validationErrors?: {\n isAlpha?: string;\n isAlphanumeric?: string;\n isEmail?: string;\n isFloat?: string;\n isInt?: string;\n isJson?: string;\n isLength?: string;\n isNumeric?: string;\n isRequired?: string;\n isUrl?: string;\n matchRegexp?: string;\n matchRegexp2?: string;\n matchRegexp3?: string;\n matchRegexp4?: string;\n matchRegexp5?: string;\n maxLength?: string;\n maximum?: string;\n minLength?: string;\n minimum?: string;\n\n [propName: string]: any;\n };\n\n validations?:\n | string\n | {\n /**\n * 是否是字母\n */\n isAlpha?: boolean;\n\n /**\n * 是否为字母数字\n */\n isAlphanumeric?: boolean;\n\n /**\n * 是否为邮箱地址\n */\n isEmail?: boolean;\n\n /**\n * 是否为浮点型\n */\n isFloat?: boolean;\n\n /**\n * 是否为整型\n */\n isInt?: boolean;\n\n /**\n * 是否为 json\n */\n isJson?: boolean;\n\n /**\n * 长度等于指定值\n */\n isLength?: number;\n\n /**\n * 是否为数字\n */\n isNumeric?: boolean;\n\n /**\n * 是否为必填\n */\n isRequired?: boolean;\n\n /**\n * 是否为 URL 地址\n */\n isUrl?: boolean;\n\n /**\n * 内容命中指定正则\n */\n matchRegexp?: string;\n /**\n * 内容命中指定正则\n */\n matchRegexp1?: string;\n /**\n * 内容命中指定正则\n */\n matchRegexp2?: string;\n /**\n * 内容命中指定正则\n */\n matchRegexp3?: string;\n /**\n * 内容命中指定正则\n */\n matchRegexp4?: string;\n /**\n * 内容命中指定正则\n */\n matchRegexp5?: string;\n\n /**\n * 最大长度为指定值\n */\n maxLength?: number;\n\n /**\n * 最大值为指定值\n */\n maximum?: number;\n\n /**\n * 最小长度为指定值\n */\n minLength?: number;\n\n /**\n * 最小值为指定值\n */\n minimum?: number;\n\n [propName: string]: any;\n };\n\n /**\n * 默认值,切记只能是静态值,不支持取变量,跟数据关联是通过设置 name 属性来实现的。\n */\n value?: any;\n\n /**\n * 表单项隐藏时,是否在当前 Form 中删除掉该表单项值。注意同名的未隐藏的表单项值也会删掉\n */\n clearValueOnHidden?: boolean;\n\n /**\n * 远端校验表单项接口\n */\n validateApi?: SchemaApi;\n}\n\nexport interface FormItemBasicConfig extends Partial<RendererConfig> {\n type?: string;\n wrap?: boolean;\n renderLabel?: boolean;\n renderDescription?: boolean;\n test?: RegExp | TestFunc;\n storeType?: string;\n validations?: string;\n strictMode?: boolean;\n descriptionClassName?: string;\n storeExtendsData?: boolean;\n sizeMutable?: boolean;\n weight?: number;\n extendsData?: boolean;\n showErrorMsg?: boolean;\n\n // 兼容老用法,新用法直接在 Component 里面定义 validate 方法即可。\n validate?: (values: any, value: any) => string | boolean;\n}\n\n// 自己接收到属性。\nexport interface FormItemProps extends RendererProps {\n name?: string;\n formStore?: IFormStore;\n formItem?: IFormItemStore;\n formInited: boolean;\n formMode: 'normal' | 'horizontal' | 'inline' | 'row' | 'default';\n formHorizontal: FormHorizontal;\n defaultSize?: 'xs' | 'sm' | 'md' | 'lg' | 'full';\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'full';\n disabled?: boolean;\n btnDisabled: boolean;\n defaultValue: any;\n value?: any;\n prinstine: any;\n setPrinstineValue: (value: any) => void;\n onChange: (\n value: any,\n submitOnChange?: boolean,\n changeImmediately?: boolean\n ) => void;\n onBulkChange: (\n values: {[propName: string]: any},\n submitOnChange?: boolean\n ) => void;\n addHook: (fn: Function, mode?: 'validate' | 'init' | 'flush') => () => void;\n removeHook: (fn: Function, mode?: 'validate' | 'init' | 'flush') => void;\n renderFormItems: (\n schema: Partial<FormSchema>,\n region: string,\n props: any\n ) => JSX.Element;\n onFocus: (e: any) => void;\n onBlur: (e: any) => void;\n\n formItemValue: any; // 不建议使用 为了兼容 v1\n getValue: () => any; // 不建议使用 为了兼容 v1\n setValue: (value: any, key: string) => void; // 不建议使用 为了兼容 v1\n\n inputClassName?: string;\n renderControl?: (props: FormControlProps) => JSX.Element;\n\n inputOnly?: boolean;\n renderLabel?: boolean;\n renderDescription?: boolean;\n sizeMutable?: boolean;\n wrap?: boolean;\n hint?: string;\n description?: string;\n descriptionClassName?: string;\n // error 详情\n errors?: {\n [propName: string]: string;\n };\n // error string\n error?: string;\n showErrorMsg?: boolean;\n}\n\n// 下发下去的属性\nexport type FormControlProps = RendererProps & {\n onOpenDialog: (schema: Schema, data: any) => Promise<any>;\n} & Exclude<\n FormItemProps,\n | 'inputClassName'\n | 'renderControl'\n | 'defaultSize'\n | 'size'\n | 'error'\n | 'errors'\n | 'hint'\n | 'descriptionClassName'\n | 'inputOnly'\n | 'renderLabel'\n | 'renderDescription'\n | 'sizeMutable'\n | 'wrap'\n >;\n\nexport type FormItemComponent = React.ComponentType<FormItemProps>;\nexport type FormControlComponent = React.ComponentType<FormControlProps>;\n\nexport interface FormItemConfig extends FormItemBasicConfig {\n component: FormControlComponent;\n}\n\nexport class FormItemWrap extends React.Component<FormItemProps> {\n reaction: any;\n\n constructor(props: FormItemProps) {\n super(props);\n\n const {formItem: model} = props;\n\n if (model) {\n this.reaction = reaction(\n () => `${model.errors.join('')}${model.isFocused}${model.dialogOpen}`,\n () => this.forceUpdate()\n );\n }\n }\n\n componentWillUnmount() {\n this.reaction && this.reaction();\n }\n\n @autobind\n handleFocus(e: any) {\n const {formItem: model} = this.props;\n model && model.focus();\n this.props.onFocus && this.props.onFocus(e);\n }\n\n @autobind\n handleBlur(e: any) {\n const {formItem: model} = this.props;\n model && model.blur();\n this.props.onBlur && this.props.onBlur(e);\n }\n\n @autobind\n async handleOpenDialog(schema: Schema, data: any) {\n const {formItem: model} = this.props;\n if (!model) {\n return;\n }\n\n return new Promise(resolve =>\n model.openDialog(schema, data, (result?: any) => resolve(result))\n );\n }\n\n @autobind\n handleDialogConfirm([values]: Array<any>) {\n const {formItem: model} = this.props;\n if (!model) {\n return;\n }\n\n model.closeDialog(values);\n }\n\n @autobind\n handleDialogClose() {\n const {formItem: model} = this.props;\n if (!model) {\n return;\n }\n model.closeDialog();\n }\n\n renderControl(): JSX.Element | null {\n const {\n inputClassName,\n formItem: model,\n classnames: cx,\n children,\n type,\n renderControl,\n formItemConfig,\n sizeMutable,\n size,\n defaultSize,\n ...rest\n } = this.props;\n\n if (renderControl) {\n const controlSize = size || defaultSize;\n return renderControl({\n ...rest,\n onOpenDialog: this.handleOpenDialog,\n type,\n classnames: cx,\n formItem: model,\n className: cx(\n `Form-control`,\n {\n 'is-inline': !!rest.inline,\n 'is-error': model && !model.valid,\n [`Form-control--withSize Form-control--size${ucFirst(\n controlSize\n )}`]:\n sizeMutable !== false &&\n typeof controlSize === 'string' &&\n !!controlSize &&\n controlSize !== 'full'\n },\n model?.errClassNames,\n inputClassName\n )\n });\n }\n\n return null;\n }\n\n /**\n * 布局扩充点,可以自己扩充表单项的布局方式\n */\n static layoutRenderers: {\n [propsName: string]: (\n props: FormItemProps,\n renderControl: () => JSX.Element | null\n ) => JSX.Element;\n } = {\n horizontal: (props: FormItemProps, renderControl: () => JSX.Element) => {\n let {\n className,\n classnames: cx,\n description,\n descriptionClassName,\n captionClassName,\n desc,\n label,\n labelClassName,\n render,\n required,\n caption,\n remark,\n labelRemark,\n env,\n formItem: model,\n renderLabel,\n renderDescription,\n hint,\n data,\n showErrorMsg\n } = props;\n\n // 强制不渲染 label 的话\n if (renderLabel === false) {\n label = label === false ? false : '';\n }\n\n description = description || desc;\n const horizontal = props.horizontal || props.formHorizontal || {};\n const left = getWidthRate(horizontal.left);\n const right = getWidthRate(horizontal.right);\n\n return (\n <div\n data-role=\"form-item\"\n className={cx(\n `Form-item Form-item--horizontal`,\n className,\n {\n [`is-error`]: model && !model.valid,\n [`is-required`]: required\n },\n model?.errClassNames\n )}\n >\n {label !== false ? (\n <label\n className={cx(\n `Form-label`,\n {\n [`Form-itemColumn--${\n typeof horizontal.leftFixed === 'string'\n ? horizontal.leftFixed\n : 'normal'\n }`]: horizontal.leftFixed,\n [`Form-itemColumn--${left}`]: !horizontal.leftFixed\n },\n labelClassName\n )}\n >\n <span>\n {label\n ? render(\n 'label',\n typeof label === 'string' ? filter(label, data) : label\n )\n : null}\n {required && (label || labelRemark) ? (\n <span className={cx(`Form-star`)}>*</span>\n ) : null}\n {labelRemark\n ? render('label-remark', {\n type: 'remark',\n icon: labelRemark.icon || 'warning-mark',\n tooltip: labelRemark,\n className: cx(`Form-labelRemark`),\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n </span>\n </label>\n ) : null}\n\n <div\n className={cx(`Form-value`, {\n // [`Form-itemColumn--offset${getWidthRate(horizontal.offset)}`]: !label && label !== false,\n [`Form-itemColumn--${right}`]:\n !horizontal.leftFixed && !!right && right !== 12 - left\n })}\n >\n {renderControl()}\n\n {caption\n ? render('caption', caption, {\n className: cx(`Form-caption`, captionClassName)\n })\n : null}\n\n {remark\n ? render('remark', {\n type: 'remark',\n icon: remark.icon || 'warning-mark',\n tooltip: remark,\n className: cx(`Form-remark`),\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n\n {hint && model && model.isFocused\n ? render('hint', hint, {\n className: cx(`Form-hint`)\n })\n : null}\n\n {model &&\n !model.valid &&\n showErrorMsg !== false &&\n Array.isArray(model.errors) ? (\n <ul className={cx(`Form-feedback`)}>\n {model.errors.map((msg: string, key: number) => (\n <li key={key}>{msg}</li>\n ))}\n </ul>\n ) : null}\n\n {renderDescription !== false && description\n ? render('description', description, {\n className: cx(`Form-description`, descriptionClassName)\n })\n : null}\n </div>\n </div>\n );\n },\n\n normal: (props: FormItemProps, renderControl: () => JSX.Element) => {\n let {\n className,\n classnames: cx,\n desc,\n description,\n label,\n labelClassName,\n render,\n required,\n caption,\n remark,\n labelRemark,\n env,\n descriptionClassName,\n captionClassName,\n formItem: model,\n renderLabel,\n renderDescription,\n hint,\n data,\n showErrorMsg\n } = props;\n\n description = description || desc;\n\n return (\n <div\n data-role=\"form-item\"\n className={cx(\n `Form-item Form-item--normal`,\n className,\n {\n 'is-error': model && !model.valid,\n [`is-required`]: required\n },\n model?.errClassNames\n )}\n >\n {label && renderLabel !== false ? (\n <label className={cx(`Form-label`, labelClassName)}>\n <span>\n {label\n ? render(\n 'label',\n typeof label === 'string' ? filter(label, data) : label\n )\n : null}\n {required && (label || labelRemark) ? (\n <span className={cx(`Form-star`)}>*</span>\n ) : null}\n {labelRemark\n ? render('label-remark', {\n type: 'remark',\n icon: labelRemark.icon || 'warning-mark',\n tooltip: labelRemark,\n className: cx(`Form-lableRemark`),\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n </span>\n </label>\n ) : null}\n\n {renderControl()}\n\n {caption\n ? render('caption', caption, {\n className: cx(`Form-caption`, captionClassName)\n })\n : null}\n\n {remark\n ? render('remark', {\n type: 'remark',\n icon: remark.icon || 'warning-mark',\n className: cx(`Form-remark`),\n tooltip: remark,\n container:\n env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n\n {hint && model && model.isFocused\n ? render('hint', hint, {\n className: cx(`Form-hint`)\n })\n : null}\n\n {model &&\n !model.valid &&\n showErrorMsg !== false &&\n Array.isArray(model.errors) ? (\n <ul className={cx(`Form-feedback`)}>\n {model.errors.map((msg: string, key: number) => (\n <li key={key}>{msg}</li>\n ))}\n </ul>\n ) : null}\n\n {renderDescription !== false && description\n ? render('description', description, {\n className: cx(`Form-description`, descriptionClassName)\n })\n : null}\n </div>\n );\n },\n\n inline: (props: FormItemProps, renderControl: () => JSX.Element) => {\n let {\n className,\n classnames: cx,\n desc,\n description,\n label,\n labelClassName,\n render,\n required,\n caption,\n descriptionClassName,\n captionClassName,\n formItem: model,\n remark,\n labelRemark,\n env,\n hint,\n renderLabel,\n renderDescription,\n data,\n showErrorMsg\n } = props;\n\n description = description || desc;\n\n return (\n <div\n data-role=\"form-item\"\n className={cx(\n `Form-item Form-item--inline`,\n className,\n {\n 'is-error': model && !model.valid,\n [`is-required`]: required\n },\n model?.errClassNames\n )}\n >\n {label && renderLabel !== false ? (\n <label className={cx(`Form-label`, labelClassName)}>\n <span>\n {label\n ? render(\n 'label',\n typeof label === 'string' ? filter(label, data) : label\n )\n : label}\n {required && (label || labelRemark) ? (\n <span className={cx(`Form-star`)}>*</span>\n ) : null}\n {labelRemark\n ? render('label-remark', {\n type: 'remark',\n icon: labelRemark.icon || 'warning-mark',\n tooltip: labelRemark,\n className: cx(`Form-lableRemark`),\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n </span>\n </label>\n ) : null}\n\n <div className={cx(`Form-value`)}>\n {renderControl()}\n\n {caption\n ? render('caption', caption, {\n className: cx(`Form-caption`, captionClassName)\n })\n : null}\n\n {remark\n ? render('remark', {\n type: 'remark',\n icon: remark.icon || 'warning-mark',\n className: cx(`Form-remark`),\n tooltip: remark,\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n\n {hint && model && model.isFocused\n ? render('hint', hint, {\n className: cx(`Form-hint`)\n })\n : null}\n\n {model &&\n !model.valid &&\n showErrorMsg !== false &&\n Array.isArray(model.errors) ? (\n <ul className={cx(`Form-feedback`)}>\n {model.errors.map((msg: string, key: number) => (\n <li key={key}>{msg}</li>\n ))}\n </ul>\n ) : null}\n\n {renderDescription !== false && description\n ? render('description', description, {\n className: cx(`Form-description`, descriptionClassName)\n })\n : null}\n </div>\n </div>\n );\n },\n\n row: (props: FormItemProps, renderControl: () => JSX.Element) => {\n let {\n className,\n classnames: cx,\n desc,\n description,\n label,\n labelClassName,\n render,\n required,\n caption,\n remark,\n labelRemark,\n env,\n descriptionClassName,\n captionClassName,\n formItem: model,\n renderLabel,\n renderDescription,\n hint,\n data,\n showErrorMsg\n } = props;\n\n description = description || desc;\n\n return (\n <div\n data-role=\"form-item\"\n className={cx(\n `Form-item Form-item--row`,\n className,\n {\n 'is-error': model && !model.valid,\n [`is-required`]: required\n },\n model?.errClassNames\n )}\n >\n <div className={cx('Form-rowInner')}>\n {label && renderLabel !== false ? (\n <label className={cx(`Form-label`, labelClassName)}>\n <span>\n {render(\n 'label',\n typeof label === 'string' ? filter(label, data) : label\n )}\n {required && (label || labelRemark) ? (\n <span className={cx(`Form-star`)}>*</span>\n ) : null}\n {labelRemark\n ? render('label-remark', {\n type: 'remark',\n icon: labelRemark.icon || 'warning-mark',\n tooltip: labelRemark,\n className: cx(`Form-lableRemark`),\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n </span>\n </label>\n ) : null}\n\n {renderControl()}\n\n {caption\n ? render('caption', caption, {\n className: cx(`Form-caption`, captionClassName)\n })\n : null}\n\n {remark\n ? render('remark', {\n type: 'remark',\n icon: remark.icon || 'warning-mark',\n className: cx(`Form-remark`),\n tooltip: remark,\n container:\n env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n </div>\n\n {hint && model && model.isFocused\n ? render('hint', hint, {\n className: cx(`Form-hint`)\n })\n : null}\n\n {model &&\n !model.valid &&\n showErrorMsg !== false &&\n Array.isArray(model.errors) ? (\n <ul className={cx('Form-feedback')}>\n {model.errors.map((msg: string, key: number) => (\n <li key={key}>{msg}</li>\n ))}\n </ul>\n ) : null}\n\n {description && renderDescription !== false\n ? render('description', description, {\n className: cx(`Form-description`, descriptionClassName)\n })\n : null}\n </div>\n );\n }\n };\n\n render() {\n const {formMode, inputOnly, wrap, render, formItem: model} = this.props;\n const mode = this.props.mode || formMode;\n\n if (wrap === false || inputOnly) {\n return this.renderControl();\n }\n\n const renderLayout =\n FormItemWrap.layoutRenderers[mode] ||\n FormItemWrap.layoutRenderers['normal'];\n\n return (\n <>\n {renderLayout(this.props, this.renderControl.bind(this))}\n\n {model\n ? render(\n 'modal',\n {\n type: 'dialog',\n ...model.dialogSchema\n },\n {\n show: model.dialogOpen,\n onClose: this.handleDialogClose,\n onConfirm: this.handleDialogConfirm,\n data: model.dialogData,\n formStore: undefined\n }\n )\n : null}\n </>\n );\n }\n}\n\n// 白名单形式,只有这些属性发生变化,才会往下更新。\n// 除非配置 strictMode\nexport const detectProps = [\n 'formPristine', // 这个千万不能干掉。\n 'formInited',\n 'addable',\n 'addButtonClassName',\n 'addButtonText',\n 'addOn',\n 'btnClassName',\n 'btnLabel',\n 'btnDisabled',\n 'className',\n 'clearable',\n 'columns',\n 'columnsCount',\n 'controls',\n 'desc',\n 'description',\n 'disabled',\n 'draggable',\n 'editable',\n 'editButtonClassName',\n 'formHorizontal',\n 'formMode',\n 'hideRoot',\n 'horizontal',\n 'icon',\n 'inline',\n 'inputClassName',\n 'label',\n 'labelClassName',\n 'labelField',\n 'language',\n 'level',\n 'max',\n 'maxRows',\n 'min',\n 'minRows',\n 'multiLine',\n 'multiple',\n 'option',\n 'placeholder',\n 'removable',\n 'required',\n 'remark',\n 'hint',\n 'rows',\n 'searchable',\n 'showCompressOptions',\n 'size',\n 'step',\n 'showInput',\n 'unit',\n 'value',\n 'diffValue',\n 'borderMode',\n 'items',\n 'showCounter',\n 'minLength',\n 'maxLength'\n];\n\nexport function asFormItem(config: Omit<FormItemConfig, 'component'>) {\n return (Control: FormControlComponent) => {\n const isSFC = !(Control.prototype instanceof React.Component);\n\n // 兼容老的 FormItem 用法。\n if (config.validate && !Control.prototype.validate) {\n const fn = config.validate;\n Control.prototype.validate = function () {\n const host = {\n input: this\n };\n\n return fn.apply(host, arguments);\n };\n } else if (config.validate) {\n console.error(\n 'FormItem配置中的 validate 将不起作用,因为类的成员函数中已经定义了 validate 方法,将优先使用类里面的实现。'\n );\n }\n\n if (config.storeType) {\n Control = HocStoreFactory({\n storeType: config.storeType,\n extendsData: config.extendsData\n })(observer(Control));\n delete config.storeType;\n }\n\n return wrapControl(\n hoistNonReactStatic(\n class extends FormItemWrap {\n static defaultProps = {\n className: '',\n renderLabel: config.renderLabel,\n renderDescription: config.renderDescription,\n sizeMutable: config.sizeMutable,\n wrap: config.wrap,\n showErrorMsg: config.showErrorMsg,\n ...Control.defaultProps\n };\n static propsList: any = [\n 'value',\n 'defaultValue',\n 'onChange',\n 'setPrinstineValue',\n 'readOnly',\n 'strictMode',\n ...((Control as any).propsList || [])\n ];\n\n static displayName = `FormItem${\n config.type ? `(${config.type})` : ''\n }`;\n static ComposedComponent = Control;\n\n ref: any;\n\n constructor(props: FormItemProps) {\n super(props);\n this.refFn = this.refFn.bind(this);\n\n const {validations, formItem: model} = props;\n\n // 组件注册的时候可能默认指定验证器类型\n if (model && !validations && config.validations) {\n model.config({\n rules: config.validations\n });\n }\n }\n\n shouldComponentUpdate(nextProps: FormControlProps) {\n if (nextProps.strictMode === false || config.strictMode === false) {\n return true;\n }\n\n // 把可能会影响视图的白名单弄出来,减少重新渲染次数。\n if (anyChanged(detectProps, this.props, nextProps)) {\n return true;\n }\n\n return false;\n }\n\n getWrappedInstance() {\n return this.ref;\n }\n\n refFn(ref: any) {\n this.ref = ref;\n }\n\n renderControl() {\n const {\n inputClassName,\n formItem: model,\n classnames: cx,\n children,\n type,\n size,\n defaultSize,\n ...rest\n } = this.props;\n\n const controlSize = size || defaultSize;\n\n return (\n <Control\n {...rest}\n onOpenDialog={this.handleOpenDialog}\n size={config.sizeMutable !== false ? undefined : size}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n type={type}\n classnames={cx}\n ref={isSFC ? undefined : this.refFn}\n forwardedRef={isSFC ? this.refFn : undefined}\n formItem={model}\n className={cx(\n `Form-control`,\n {\n 'is-inline': !!rest.inline,\n 'is-error': model && !model.valid,\n [`Form-control--withSize Form-control--size${ucFirst(\n controlSize\n )}`]:\n config.sizeMutable !== false &&\n typeof controlSize === 'string' &&\n !!controlSize &&\n controlSize !== 'full'\n },\n model?.errClassNames,\n inputClassName\n )}\n />\n );\n }\n },\n Control\n ) as any\n );\n };\n}\n\nexport function registerFormItem(config: FormItemConfig): RendererConfig {\n let Control = asFormItem(config)(config.component);\n\n return registerRenderer({\n ...config,\n weight: typeof config.weight !== 'undefined' ? config.weight : -100, // 优先级高点\n component: Control as any,\n isFormItem: true\n });\n}\n\nexport function FormItem(config: FormItemBasicConfig) {\n return function (component: FormControlComponent): any {\n const renderer = registerFormItem({\n ...config,\n component\n });\n\n return renderer.component as any;\n };\n}\n\nexport default FormItem;\n"
11
+ "import React from 'react';\nimport hoistNonReactStatic from 'hoist-non-react-statics';\nimport {IFormItemStore, IFormStore} from '../../store/form';\nimport {reaction} from 'mobx';\n\nimport {\n RendererProps,\n registerRenderer,\n TestFunc,\n RendererConfig\n} from '../../factory';\nimport {anyChanged, ucFirst, getWidthRate, autobind} from '../../utils/helper';\nimport {observer} from 'mobx-react';\nimport {FormHorizontal, FormSchema, FormSchemaHorizontal} from '.';\nimport {Api, Schema} from '../../types';\nimport {filter} from '../../utils/tpl';\nimport {SchemaRemark} from '../Remark';\nimport {\n BaseSchema,\n SchemaApi,\n SchemaClassName,\n SchemaObject,\n SchemaType\n} from '../../Schema';\nimport {HocStoreFactory} from '../../WithStore';\nimport {wrapControl} from './wrapControl';\n\nexport type FormControlSchemaAlias = SchemaObject;\n\nexport interface FormBaseControl extends Omit<BaseSchema, 'type'> {\n /**\n * 表单项类型\n */\n type: SchemaType;\n\n /**\n * 表单项大小\n */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'full';\n\n /**\n * 描述标题\n */\n label?: string | false;\n\n /**\n * 配置 label className\n */\n labelClassName?: SchemaClassName;\n\n /**\n * 字段名,表单提交时的 key,支持多层级,用.连接,如: a.b.c\n */\n name?: string;\n\n /**\n * 显示一个小图标, 鼠标放上去的时候显示提示内容\n */\n remark?: SchemaRemark;\n\n /**\n * 显示一个小图标, 鼠标放上去的时候显示提示内容, 这个小图标跟 label 在一起\n */\n labelRemark?: SchemaRemark;\n\n /**\n * 输入提示,聚焦的时候显示\n */\n hint?: string;\n\n /**\n * 当修改完的时候是否提交表单。\n */\n submitOnChange?: boolean;\n\n /**\n * 是否只读\n */\n readOnly?: boolean;\n\n /**\n * 不设置时,当表单提交过后表单项每次修改都会触发重新验证,\n * 如果设置了,则由此配置项来决定要不要每次修改都触发验证。\n */\n validateOnChange?: boolean;\n\n /**\n * 描述内容,支持 Html 片段。\n */\n description?: string;\n\n /**\n * @deprecated 用 description 代替\n */\n desc?: string;\n\n /**\n * 配置描述上的 className\n */\n descriptionClassName?: SchemaClassName;\n\n /**\n * 配置当前表单项展示模式\n */\n mode?: 'normal' | 'inline' | 'horizontal';\n\n /**\n * 当配置为水平布局的时候,用来配置具体的左右分配。\n */\n horizontal?: FormSchemaHorizontal;\n\n /**\n * 表单 control 是否为 inline 模式。\n */\n inline?: boolean;\n\n /**\n * 配置 input className\n */\n inputClassName?: SchemaClassName;\n\n /**\n * 占位符\n */\n placeholder?: string;\n\n /**\n * 是否为必填\n */\n required?: boolean;\n\n /**\n * 验证失败的提示信息\n */\n validationErrors?: {\n isAlpha?: string;\n isAlphanumeric?: string;\n isEmail?: string;\n isFloat?: string;\n isInt?: string;\n isJson?: string;\n isLength?: string;\n isNumeric?: string;\n isRequired?: string;\n isUrl?: string;\n matchRegexp?: string;\n matchRegexp2?: string;\n matchRegexp3?: string;\n matchRegexp4?: string;\n matchRegexp5?: string;\n maxLength?: string;\n maximum?: string;\n minLength?: string;\n minimum?: string;\n\n [propName: string]: any;\n };\n\n validations?:\n | string\n | {\n /**\n * 是否是字母\n */\n isAlpha?: boolean;\n\n /**\n * 是否为字母数字\n */\n isAlphanumeric?: boolean;\n\n /**\n * 是否为邮箱地址\n */\n isEmail?: boolean;\n\n /**\n * 是否为浮点型\n */\n isFloat?: boolean;\n\n /**\n * 是否为整型\n */\n isInt?: boolean;\n\n /**\n * 是否为 json\n */\n isJson?: boolean;\n\n /**\n * 长度等于指定值\n */\n isLength?: number;\n\n /**\n * 是否为数字\n */\n isNumeric?: boolean;\n\n /**\n * 是否为必填\n */\n isRequired?: boolean;\n\n /**\n * 是否为 URL 地址\n */\n isUrl?: boolean;\n\n /**\n * 内容命中指定正则\n */\n matchRegexp?: string;\n /**\n * 内容命中指定正则\n */\n matchRegexp1?: string;\n /**\n * 内容命中指定正则\n */\n matchRegexp2?: string;\n /**\n * 内容命中指定正则\n */\n matchRegexp3?: string;\n /**\n * 内容命中指定正则\n */\n matchRegexp4?: string;\n /**\n * 内容命中指定正则\n */\n matchRegexp5?: string;\n\n /**\n * 最大长度为指定值\n */\n maxLength?: number;\n\n /**\n * 最大值为指定值\n */\n maximum?: number;\n\n /**\n * 最小长度为指定值\n */\n minLength?: number;\n\n /**\n * 最小值为指定值\n */\n minimum?: number;\n\n [propName: string]: any;\n };\n\n /**\n * 默认值,切记只能是静态值,不支持取变量,跟数据关联是通过设置 name 属性来实现的。\n */\n value?: any;\n\n /**\n * 表单项隐藏时,是否在当前 Form 中删除掉该表单项值。注意同名的未隐藏的表单项值也会删掉\n */\n clearValueOnHidden?: boolean;\n\n /**\n * 远端校验表单项接口\n */\n validateApi?: SchemaApi;\n}\n\nexport interface FormItemBasicConfig extends Partial<RendererConfig> {\n type?: string;\n wrap?: boolean;\n renderLabel?: boolean;\n renderDescription?: boolean;\n test?: RegExp | TestFunc;\n storeType?: string;\n validations?: string;\n strictMode?: boolean;\n descriptionClassName?: string;\n storeExtendsData?: boolean;\n sizeMutable?: boolean;\n weight?: number;\n extendsData?: boolean;\n showErrorMsg?: boolean;\n\n // 兼容老用法,新用法直接在 Component 里面定义 validate 方法即可。\n validate?: (values: any, value: any) => string | boolean;\n}\n\n// 自己接收到属性。\nexport interface FormItemProps extends RendererProps {\n name?: string;\n formStore?: IFormStore;\n formItem?: IFormItemStore;\n formInited: boolean;\n formMode: 'normal' | 'horizontal' | 'inline' | 'row' | 'default';\n formHorizontal: FormHorizontal;\n defaultSize?: 'xs' | 'sm' | 'md' | 'lg' | 'full';\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'full';\n disabled?: boolean;\n btnDisabled: boolean;\n defaultValue: any;\n value?: any;\n prinstine: any;\n setPrinstineValue: (value: any) => void;\n onChange: (\n value: any,\n submitOnChange?: boolean,\n changeImmediately?: boolean\n ) => void;\n onBulkChange?: (\n values: {[propName: string]: any},\n submitOnChange?: boolean\n ) => void;\n addHook: (fn: Function, mode?: 'validate' | 'init' | 'flush') => () => void;\n removeHook: (fn: Function, mode?: 'validate' | 'init' | 'flush') => void;\n renderFormItems: (\n schema: Partial<FormSchema>,\n region: string,\n props: any\n ) => JSX.Element;\n onFocus: (e: any) => void;\n onBlur: (e: any) => void;\n\n formItemValue: any; // 不建议使用 为了兼容 v1\n getValue: () => any; // 不建议使用 为了兼容 v1\n setValue: (value: any, key: string) => void; // 不建议使用 为了兼容 v1\n\n inputClassName?: string;\n renderControl?: (props: FormControlProps) => JSX.Element;\n\n inputOnly?: boolean;\n renderLabel?: boolean;\n renderDescription?: boolean;\n sizeMutable?: boolean;\n wrap?: boolean;\n hint?: string;\n description?: string;\n descriptionClassName?: string;\n // error 详情\n errors?: {\n [propName: string]: string;\n };\n // error string\n error?: string;\n showErrorMsg?: boolean;\n}\n\n// 下发下去的属性\nexport type FormControlProps = RendererProps & {\n onOpenDialog: (schema: Schema, data: any) => Promise<any>;\n} & Exclude<\n FormItemProps,\n | 'inputClassName'\n | 'renderControl'\n | 'defaultSize'\n | 'size'\n | 'error'\n | 'errors'\n | 'hint'\n | 'descriptionClassName'\n | 'inputOnly'\n | 'renderLabel'\n | 'renderDescription'\n | 'sizeMutable'\n | 'wrap'\n >;\n\nexport type FormItemComponent = React.ComponentType<FormItemProps>;\nexport type FormControlComponent = React.ComponentType<FormControlProps>;\n\nexport interface FormItemConfig extends FormItemBasicConfig {\n component: FormControlComponent;\n}\n\nexport class FormItemWrap extends React.Component<FormItemProps> {\n reaction: any;\n\n constructor(props: FormItemProps) {\n super(props);\n\n const {formItem: model} = props;\n\n if (model) {\n this.reaction = reaction(\n () => `${model.errors.join('')}${model.isFocused}${model.dialogOpen}`,\n () => this.forceUpdate()\n );\n }\n }\n\n componentWillUnmount() {\n this.reaction && this.reaction();\n }\n\n @autobind\n handleFocus(e: any) {\n const {formItem: model} = this.props;\n model && model.focus();\n this.props.onFocus && this.props.onFocus(e);\n }\n\n @autobind\n handleBlur(e: any) {\n const {formItem: model} = this.props;\n model && model.blur();\n this.props.onBlur && this.props.onBlur(e);\n }\n\n @autobind\n async handleOpenDialog(schema: Schema, data: any) {\n const {formItem: model} = this.props;\n if (!model) {\n return;\n }\n\n return new Promise(resolve =>\n model.openDialog(schema, data, (result?: any) => resolve(result))\n );\n }\n\n @autobind\n handleDialogConfirm([values]: Array<any>) {\n const {formItem: model} = this.props;\n if (!model) {\n return;\n }\n\n model.closeDialog(values);\n }\n\n @autobind\n handleDialogClose() {\n const {formItem: model} = this.props;\n if (!model) {\n return;\n }\n model.closeDialog();\n }\n\n renderControl(): JSX.Element | null {\n const {\n inputClassName,\n formItem: model,\n classnames: cx,\n children,\n type,\n renderControl,\n formItemConfig,\n sizeMutable,\n size,\n defaultSize,\n ...rest\n } = this.props;\n\n if (renderControl) {\n const controlSize = size || defaultSize;\n return renderControl({\n ...rest,\n onOpenDialog: this.handleOpenDialog,\n type,\n classnames: cx,\n formItem: model,\n className: cx(\n `Form-control`,\n {\n 'is-inline': !!rest.inline,\n 'is-error': model && !model.valid,\n [`Form-control--withSize Form-control--size${ucFirst(\n controlSize\n )}`]:\n sizeMutable !== false &&\n typeof controlSize === 'string' &&\n !!controlSize &&\n controlSize !== 'full'\n },\n model?.errClassNames,\n inputClassName\n )\n });\n }\n\n return null;\n }\n\n /**\n * 布局扩充点,可以自己扩充表单项的布局方式\n */\n static layoutRenderers: {\n [propsName: string]: (\n props: FormItemProps,\n renderControl: () => JSX.Element | null\n ) => JSX.Element;\n } = {\n horizontal: (props: FormItemProps, renderControl: () => JSX.Element) => {\n let {\n className,\n classnames: cx,\n description,\n descriptionClassName,\n captionClassName,\n desc,\n label,\n labelClassName,\n render,\n required,\n caption,\n remark,\n labelRemark,\n env,\n formItem: model,\n renderLabel,\n renderDescription,\n hint,\n data,\n showErrorMsg\n } = props;\n\n // 强制不渲染 label 的话\n if (renderLabel === false) {\n label = label === false ? false : '';\n }\n\n description = description || desc;\n const horizontal = props.horizontal || props.formHorizontal || {};\n const left = getWidthRate(horizontal.left);\n const right = getWidthRate(horizontal.right);\n\n return (\n <div\n data-role=\"form-item\"\n className={cx(\n `Form-item Form-item--horizontal`,\n className,\n {\n [`is-error`]: model && !model.valid,\n [`is-required`]: required\n },\n model?.errClassNames\n )}\n >\n {label !== false ? (\n <label\n className={cx(\n `Form-label`,\n {\n [`Form-itemColumn--${\n typeof horizontal.leftFixed === 'string'\n ? horizontal.leftFixed\n : 'normal'\n }`]: horizontal.leftFixed,\n [`Form-itemColumn--${left}`]: !horizontal.leftFixed\n },\n labelClassName\n )}\n >\n <span>\n {label\n ? render(\n 'label',\n typeof label === 'string' ? filter(label, data) : label\n )\n : null}\n {required && (label || labelRemark) ? (\n <span className={cx(`Form-star`)}>*</span>\n ) : null}\n {labelRemark\n ? render('label-remark', {\n type: 'remark',\n icon: labelRemark.icon || 'warning-mark',\n tooltip: labelRemark,\n className: cx(`Form-labelRemark`),\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n </span>\n </label>\n ) : null}\n\n <div\n className={cx(`Form-value`, {\n // [`Form-itemColumn--offset${getWidthRate(horizontal.offset)}`]: !label && label !== false,\n [`Form-itemColumn--${right}`]:\n !horizontal.leftFixed && !!right && right !== 12 - left\n })}\n >\n {renderControl()}\n\n {caption\n ? render('caption', caption, {\n className: cx(`Form-caption`, captionClassName)\n })\n : null}\n\n {remark\n ? render('remark', {\n type: 'remark',\n icon: remark.icon || 'warning-mark',\n tooltip: remark,\n className: cx(`Form-remark`),\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n\n {hint && model && model.isFocused\n ? render('hint', hint, {\n className: cx(`Form-hint`)\n })\n : null}\n\n {model &&\n !model.valid &&\n showErrorMsg !== false &&\n Array.isArray(model.errors) ? (\n <ul className={cx(`Form-feedback`)}>\n {model.errors.map((msg: string, key: number) => (\n <li key={key}>{msg}</li>\n ))}\n </ul>\n ) : null}\n\n {renderDescription !== false && description\n ? render('description', description, {\n className: cx(`Form-description`, descriptionClassName)\n })\n : null}\n </div>\n </div>\n );\n },\n\n normal: (props: FormItemProps, renderControl: () => JSX.Element) => {\n let {\n className,\n classnames: cx,\n desc,\n description,\n label,\n labelClassName,\n render,\n required,\n caption,\n remark,\n labelRemark,\n env,\n descriptionClassName,\n captionClassName,\n formItem: model,\n renderLabel,\n renderDescription,\n hint,\n data,\n showErrorMsg\n } = props;\n\n description = description || desc;\n\n return (\n <div\n data-role=\"form-item\"\n className={cx(\n `Form-item Form-item--normal`,\n className,\n {\n 'is-error': model && !model.valid,\n [`is-required`]: required\n },\n model?.errClassNames\n )}\n >\n {label && renderLabel !== false ? (\n <label className={cx(`Form-label`, labelClassName)}>\n <span>\n {label\n ? render(\n 'label',\n typeof label === 'string' ? filter(label, data) : label\n )\n : null}\n {required && (label || labelRemark) ? (\n <span className={cx(`Form-star`)}>*</span>\n ) : null}\n {labelRemark\n ? render('label-remark', {\n type: 'remark',\n icon: labelRemark.icon || 'warning-mark',\n tooltip: labelRemark,\n className: cx(`Form-lableRemark`),\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n </span>\n </label>\n ) : null}\n\n {renderControl()}\n\n {caption\n ? render('caption', caption, {\n className: cx(`Form-caption`, captionClassName)\n })\n : null}\n\n {remark\n ? render('remark', {\n type: 'remark',\n icon: remark.icon || 'warning-mark',\n className: cx(`Form-remark`),\n tooltip: remark,\n container:\n env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n\n {hint && model && model.isFocused\n ? render('hint', hint, {\n className: cx(`Form-hint`)\n })\n : null}\n\n {model &&\n !model.valid &&\n showErrorMsg !== false &&\n Array.isArray(model.errors) ? (\n <ul className={cx(`Form-feedback`)}>\n {model.errors.map((msg: string, key: number) => (\n <li key={key}>{msg}</li>\n ))}\n </ul>\n ) : null}\n\n {renderDescription !== false && description\n ? render('description', description, {\n className: cx(`Form-description`, descriptionClassName)\n })\n : null}\n </div>\n );\n },\n\n inline: (props: FormItemProps, renderControl: () => JSX.Element) => {\n let {\n className,\n classnames: cx,\n desc,\n description,\n label,\n labelClassName,\n render,\n required,\n caption,\n descriptionClassName,\n captionClassName,\n formItem: model,\n remark,\n labelRemark,\n env,\n hint,\n renderLabel,\n renderDescription,\n data,\n showErrorMsg\n } = props;\n\n description = description || desc;\n\n return (\n <div\n data-role=\"form-item\"\n className={cx(\n `Form-item Form-item--inline`,\n className,\n {\n 'is-error': model && !model.valid,\n [`is-required`]: required\n },\n model?.errClassNames\n )}\n >\n {label && renderLabel !== false ? (\n <label className={cx(`Form-label`, labelClassName)}>\n <span>\n {label\n ? render(\n 'label',\n typeof label === 'string' ? filter(label, data) : label\n )\n : label}\n {required && (label || labelRemark) ? (\n <span className={cx(`Form-star`)}>*</span>\n ) : null}\n {labelRemark\n ? render('label-remark', {\n type: 'remark',\n icon: labelRemark.icon || 'warning-mark',\n tooltip: labelRemark,\n className: cx(`Form-lableRemark`),\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n </span>\n </label>\n ) : null}\n\n <div className={cx(`Form-value`)}>\n {renderControl()}\n\n {caption\n ? render('caption', caption, {\n className: cx(`Form-caption`, captionClassName)\n })\n : null}\n\n {remark\n ? render('remark', {\n type: 'remark',\n icon: remark.icon || 'warning-mark',\n className: cx(`Form-remark`),\n tooltip: remark,\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n\n {hint && model && model.isFocused\n ? render('hint', hint, {\n className: cx(`Form-hint`)\n })\n : null}\n\n {model &&\n !model.valid &&\n showErrorMsg !== false &&\n Array.isArray(model.errors) ? (\n <ul className={cx(`Form-feedback`)}>\n {model.errors.map((msg: string, key: number) => (\n <li key={key}>{msg}</li>\n ))}\n </ul>\n ) : null}\n\n {renderDescription !== false && description\n ? render('description', description, {\n className: cx(`Form-description`, descriptionClassName)\n })\n : null}\n </div>\n </div>\n );\n },\n\n row: (props: FormItemProps, renderControl: () => JSX.Element) => {\n let {\n className,\n classnames: cx,\n desc,\n description,\n label,\n labelClassName,\n render,\n required,\n caption,\n remark,\n labelRemark,\n env,\n descriptionClassName,\n captionClassName,\n formItem: model,\n renderLabel,\n renderDescription,\n hint,\n data,\n showErrorMsg\n } = props;\n\n description = description || desc;\n\n return (\n <div\n data-role=\"form-item\"\n className={cx(\n `Form-item Form-item--row`,\n className,\n {\n 'is-error': model && !model.valid,\n [`is-required`]: required\n },\n model?.errClassNames\n )}\n >\n <div className={cx('Form-rowInner')}>\n {label && renderLabel !== false ? (\n <label className={cx(`Form-label`, labelClassName)}>\n <span>\n {render(\n 'label',\n typeof label === 'string' ? filter(label, data) : label\n )}\n {required && (label || labelRemark) ? (\n <span className={cx(`Form-star`)}>*</span>\n ) : null}\n {labelRemark\n ? render('label-remark', {\n type: 'remark',\n icon: labelRemark.icon || 'warning-mark',\n tooltip: labelRemark,\n className: cx(`Form-lableRemark`),\n container: props.popOverContainer\n ? props.popOverContainer\n : env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n </span>\n </label>\n ) : null}\n\n {renderControl()}\n\n {caption\n ? render('caption', caption, {\n className: cx(`Form-caption`, captionClassName)\n })\n : null}\n\n {remark\n ? render('remark', {\n type: 'remark',\n icon: remark.icon || 'warning-mark',\n className: cx(`Form-remark`),\n tooltip: remark,\n container:\n env && env.getModalContainer\n ? env.getModalContainer\n : undefined\n })\n : null}\n </div>\n\n {hint && model && model.isFocused\n ? render('hint', hint, {\n className: cx(`Form-hint`)\n })\n : null}\n\n {model &&\n !model.valid &&\n showErrorMsg !== false &&\n Array.isArray(model.errors) ? (\n <ul className={cx('Form-feedback')}>\n {model.errors.map((msg: string, key: number) => (\n <li key={key}>{msg}</li>\n ))}\n </ul>\n ) : null}\n\n {description && renderDescription !== false\n ? render('description', description, {\n className: cx(`Form-description`, descriptionClassName)\n })\n : null}\n </div>\n );\n }\n };\n\n render() {\n const {formMode, inputOnly, wrap, render, formItem: model} = this.props;\n const mode = this.props.mode || formMode;\n\n if (wrap === false || inputOnly) {\n return this.renderControl();\n }\n\n const renderLayout =\n FormItemWrap.layoutRenderers[mode] ||\n FormItemWrap.layoutRenderers['normal'];\n\n return (\n <>\n {renderLayout(this.props, this.renderControl.bind(this))}\n\n {model\n ? render(\n 'modal',\n {\n type: 'dialog',\n ...model.dialogSchema\n },\n {\n show: model.dialogOpen,\n onClose: this.handleDialogClose,\n onConfirm: this.handleDialogConfirm,\n data: model.dialogData,\n formStore: undefined\n }\n )\n : null}\n </>\n );\n }\n}\n\n// 白名单形式,只有这些属性发生变化,才会往下更新。\n// 除非配置 strictMode\nexport const detectProps = [\n 'formPristine', // 这个千万不能干掉。\n 'formInited',\n 'addable',\n 'addButtonClassName',\n 'addButtonText',\n 'addOn',\n 'btnClassName',\n 'btnLabel',\n 'btnDisabled',\n 'className',\n 'clearable',\n 'columns',\n 'columnsCount',\n 'controls',\n 'desc',\n 'description',\n 'disabled',\n 'draggable',\n 'editable',\n 'editButtonClassName',\n 'formHorizontal',\n 'formMode',\n 'hideRoot',\n 'horizontal',\n 'icon',\n 'inline',\n 'inputClassName',\n 'label',\n 'labelClassName',\n 'labelField',\n 'language',\n 'level',\n 'max',\n 'maxRows',\n 'min',\n 'minRows',\n 'multiLine',\n 'multiple',\n 'option',\n 'placeholder',\n 'removable',\n 'required',\n 'remark',\n 'hint',\n 'rows',\n 'searchable',\n 'showCompressOptions',\n 'size',\n 'step',\n 'showInput',\n 'unit',\n 'value',\n 'diffValue',\n 'borderMode',\n 'items',\n 'showCounter',\n 'minLength',\n 'maxLength'\n];\n\nexport function asFormItem(config: Omit<FormItemConfig, 'component'>) {\n return (Control: FormControlComponent) => {\n const isSFC = !(Control.prototype instanceof React.Component);\n\n // 兼容老的 FormItem 用法。\n if (config.validate && !Control.prototype.validate) {\n const fn = config.validate;\n Control.prototype.validate = function () {\n const host = {\n input: this\n };\n\n return fn.apply(host, arguments);\n };\n } else if (config.validate) {\n console.error(\n 'FormItem配置中的 validate 将不起作用,因为类的成员函数中已经定义了 validate 方法,将优先使用类里面的实现。'\n );\n }\n\n if (config.storeType) {\n Control = HocStoreFactory({\n storeType: config.storeType,\n extendsData: config.extendsData\n })(observer(Control));\n delete config.storeType;\n }\n\n return wrapControl(\n hoistNonReactStatic(\n class extends FormItemWrap {\n static defaultProps = {\n className: '',\n renderLabel: config.renderLabel,\n renderDescription: config.renderDescription,\n sizeMutable: config.sizeMutable,\n wrap: config.wrap,\n showErrorMsg: config.showErrorMsg,\n ...Control.defaultProps\n };\n static propsList: any = [\n 'value',\n 'defaultValue',\n 'onChange',\n 'setPrinstineValue',\n 'readOnly',\n 'strictMode',\n ...((Control as any).propsList || [])\n ];\n\n static displayName = `FormItem${\n config.type ? `(${config.type})` : ''\n }`;\n static ComposedComponent = Control;\n\n ref: any;\n\n constructor(props: FormItemProps) {\n super(props);\n this.refFn = this.refFn.bind(this);\n\n const {validations, formItem: model} = props;\n\n // 组件注册的时候可能默认指定验证器类型\n if (model && !validations && config.validations) {\n model.config({\n rules: config.validations\n });\n }\n }\n\n shouldComponentUpdate(nextProps: FormControlProps) {\n if (nextProps.strictMode === false || config.strictMode === false) {\n return true;\n }\n\n // 把可能会影响视图的白名单弄出来,减少重新渲染次数。\n if (anyChanged(detectProps, this.props, nextProps)) {\n return true;\n }\n\n return false;\n }\n\n getWrappedInstance() {\n return this.ref;\n }\n\n refFn(ref: any) {\n this.ref = ref;\n }\n\n renderControl() {\n const {\n inputClassName,\n formItem: model,\n classnames: cx,\n children,\n type,\n size,\n defaultSize,\n ...rest\n } = this.props;\n\n const controlSize = size || defaultSize;\n\n return (\n <Control\n {...rest}\n onOpenDialog={this.handleOpenDialog}\n size={config.sizeMutable !== false ? undefined : size}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n type={type}\n classnames={cx}\n ref={isSFC ? undefined : this.refFn}\n forwardedRef={isSFC ? this.refFn : undefined}\n formItem={model}\n className={cx(\n `Form-control`,\n {\n 'is-inline': !!rest.inline,\n 'is-error': model && !model.valid,\n [`Form-control--withSize Form-control--size${ucFirst(\n controlSize\n )}`]:\n config.sizeMutable !== false &&\n typeof controlSize === 'string' &&\n !!controlSize &&\n controlSize !== 'full'\n },\n model?.errClassNames,\n inputClassName\n )}\n />\n );\n }\n },\n Control\n ) as any\n );\n };\n}\n\nexport function registerFormItem(config: FormItemConfig): RendererConfig {\n let Control = asFormItem(config)(config.component);\n\n return registerRenderer({\n ...config,\n weight: typeof config.weight !== 'undefined' ? config.weight : -100, // 优先级高点\n component: Control as any,\n isFormItem: true\n });\n}\n\nexport function FormItem(config: FormItemBasicConfig) {\n return function (component: FormControlComponent): any {\n const renderer = registerFormItem({\n ...config,\n component\n });\n\n return renderer.component as any;\n };\n}\n\nexport default FormItem;\n"
12
12
  ]
13
13
  }
@@ -13,6 +13,8 @@ var Select_1 = require("../../components/Select");
13
13
  Object.defineProperty(exports, "Option", { enumerable: true, get: function () { return Select_1.Option; } });
14
14
  var tpl_1 = require("../../utils/tpl");
15
15
  var findIndex_1 = (0, tslib_1.__importDefault)(require("lodash/findIndex"));
16
+ var isPlainObject_1 = (0, tslib_1.__importDefault)(require("lodash/isPlainObject"));
17
+ var merge_1 = (0, tslib_1.__importDefault)(require("lodash/merge"));
16
18
  exports.detectProps = Item_1.detectProps.concat([
17
19
  'value',
18
20
  'options',
@@ -37,11 +39,13 @@ function registerOptionsControl(config) {
37
39
  function FormOptionsItem(props) {
38
40
  var _a;
39
41
  var _this = _super.call(this, props) || this;
42
+ _this.toDispose = [];
40
43
  _this.mounted = false;
41
44
  var initFetch = props.initFetch, formItem = props.formItem, source = props.source, data = props.data, setPrinstineValue = props.setPrinstineValue, defaultValue = props.defaultValue, multiple = props.multiple, joinValues = props.joinValues, extractValue = props.extractValue, addHook = props.addHook, formInited = props.formInited, valueField = props.valueField, options = props.options, value = props.value, defaultCheckAll = props.defaultCheckAll;
42
45
  if (formItem) {
43
46
  formItem.setOptions((0, Select_1.normalizeOptions)(options), _this.changeOptionValue, data);
44
- _this.reaction = (0, mobx_1.reaction)(function () { return JSON.stringify([formItem.loading, formItem.filteredOptions]); }, function () { return _this.mounted && _this.forceUpdate(); });
47
+ _this.toDispose.push((0, mobx_1.reaction)(function () { return JSON.stringify([formItem.loading, formItem.filteredOptions]); }, function () { return _this.mounted && _this.forceUpdate(); }));
48
+ _this.toDispose.push((0, mobx_1.reaction)(function () { return JSON.stringify(formItem.options); }, function () { return _this.mounted && _this.syncAutoFill(formItem.tmpValue); }));
45
49
  // 默认全选。这里会和默认值\回填值逻辑冲突,所以如果有配置source则不执行默认全选
46
50
  if (multiple &&
47
51
  defaultCheckAll &&
@@ -125,23 +129,32 @@ function registerOptionsControl(config) {
125
129
  }
126
130
  };
127
131
  FormOptionsItem.prototype.componentWillUnmount = function () {
128
- var _a, _b, _c;
132
+ var _a, _b;
129
133
  (_b = (_a = this.props).removeHook) === null || _b === void 0 ? void 0 : _b.call(_a, this.reload, 'init');
130
- (_c = this.reaction) === null || _c === void 0 ? void 0 : _c.call(this);
134
+ this.toDispose.forEach(function (fn) { return fn(); });
135
+ this.toDispose = [];
131
136
  };
132
137
  FormOptionsItem.prototype.syncAutoFill = function (value) {
133
138
  var _a = this.props, autoFill = _a.autoFill, multiple = _a.multiple, onBulkChange = _a.onBulkChange, data = _a.data;
134
139
  var formItem = this.props.formItem;
135
- if (autoFill && !(0, helper_1.isEmpty)(autoFill) && formItem.filteredOptions.length) {
140
+ if (onBulkChange &&
141
+ autoFill &&
142
+ !(0, helper_1.isEmpty)(autoFill) &&
143
+ formItem.filteredOptions.length) {
136
144
  var selectedOptions = formItem.getSelectedOptions(value);
137
- var toSync = (0, tpl_builtin_1.dataMapping)(autoFill, multiple
145
+ var toSync_1 = (0, tpl_builtin_1.dataMapping)(autoFill, multiple
138
146
  ? {
139
147
  items: selectedOptions.map(function (item) {
140
148
  return (0, helper_1.createObject)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, data), { ancestors: (0, helper_1.getTreeAncestors)(formItem.filteredOptions, item, true) }), item);
141
149
  })
142
150
  }
143
151
  : (0, helper_1.createObject)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, data), { ancestors: (0, helper_1.getTreeAncestors)(formItem.filteredOptions, selectedOptions[0], true) }), selectedOptions[0]));
144
- onBulkChange === null || onBulkChange === void 0 ? void 0 : onBulkChange(toSync);
152
+ Object.keys(toSync_1).forEach(function (key) {
153
+ if ((0, isPlainObject_1.default)(toSync_1[key]) && (0, isPlainObject_1.default)(data[key])) {
154
+ toSync_1[key] = (0, merge_1.default)({}, data[key], toSync_1[key]);
155
+ }
156
+ });
157
+ onBulkChange(toSync_1);
145
158
  }
146
159
  };
147
160
  // 当前值,跟设置预期的值格式不一致时自动转换。