amis 1.4.2-beta.1 → 1.4.2-beta.15

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 (449) hide show
  1. package/lib/Schema.d.ts +11 -3
  2. package/lib/Schema.js.map +1 -1
  3. package/lib/components/AnchorNav.d.ts +22 -21
  4. package/lib/components/AnchorNav.js +7 -3
  5. package/lib/components/AnchorNav.js.map +2 -2
  6. package/lib/components/ArrayInput.d.ts +84 -84
  7. package/lib/components/AssociatedSelection.d.ts +930 -0
  8. package/lib/components/AssociatedSelection.js +89 -0
  9. package/lib/components/AssociatedSelection.js.map +13 -0
  10. package/lib/components/Badge.js +2 -2
  11. package/lib/components/Badge.js.map +2 -2
  12. package/lib/components/{ChainedCheckboxes.d.ts → ChainedSelection.d.ts} +267 -98
  13. package/lib/components/{ChainedCheckboxes.js → ChainedSelection.js} +30 -24
  14. package/lib/components/ChainedSelection.js.map +13 -0
  15. package/lib/components/Checkbox.d.ts +20 -20
  16. package/lib/components/Collapse.d.ts +51 -23
  17. package/lib/components/Collapse.js +69 -11
  18. package/lib/components/Collapse.js.map +2 -2
  19. package/lib/components/CollapseGroup.d.ts +88 -0
  20. package/lib/components/CollapseGroup.js +81 -0
  21. package/lib/components/CollapseGroup.js.map +13 -0
  22. package/lib/components/ColorPicker.d.ts +84 -84
  23. package/lib/components/DatePicker.d.ts +84 -84
  24. package/lib/components/DateRangePicker.d.ts +84 -84
  25. package/lib/components/Editor.d.ts +84 -84
  26. package/lib/components/GridNav.d.ts +52 -0
  27. package/lib/components/GridNav.js +123 -0
  28. package/lib/components/GridNav.js.map +13 -0
  29. package/lib/components/GroupedSelection.d.ts +907 -0
  30. package/lib/components/GroupedSelection.js +48 -0
  31. package/lib/components/GroupedSelection.js.map +13 -0
  32. package/lib/components/InputBox.d.ts +22 -21
  33. package/lib/components/InputBox.js +10 -2
  34. package/lib/components/InputBox.js.map +2 -2
  35. package/lib/components/Link.d.ts +29 -36
  36. package/lib/components/Link.js +14 -15
  37. package/lib/components/Link.js.map +2 -2
  38. package/lib/components/ListGroup.d.ts +21 -21
  39. package/lib/components/ModalManager.js +1 -1
  40. package/lib/components/ModalManager.js.map +2 -2
  41. package/lib/components/MonthRangePicker.d.ts +84 -84
  42. package/lib/components/NumberInput.d.ts +20 -20
  43. package/lib/components/PickerColumn.d.ts +514 -0
  44. package/lib/components/PickerColumn.js +279 -0
  45. package/lib/components/PickerColumn.js.map +13 -0
  46. package/lib/components/PickerContainer.d.ts +513 -0
  47. package/lib/components/PickerContainer.js +96 -0
  48. package/lib/components/PickerContainer.js.map +13 -0
  49. package/lib/components/Radios.d.ts +22 -21
  50. package/lib/components/Radios.js +1 -0
  51. package/lib/components/Radios.js.map +2 -2
  52. package/lib/components/Rating.d.ts +21 -21
  53. package/lib/components/ResultBox.d.ts +84 -84
  54. package/lib/components/ResultBox.js +10 -2
  55. package/lib/components/ResultBox.js.map +2 -2
  56. package/lib/components/SearchBox.d.ts +84 -84
  57. package/lib/components/SearchBox.js +4 -4
  58. package/lib/components/SearchBox.js.map +2 -2
  59. package/lib/components/Select.d.ts +245 -237
  60. package/lib/components/Select.js +25 -4
  61. package/lib/components/Select.js.map +2 -2
  62. package/lib/components/{Checkboxes.d.ts → Selection.d.ts} +273 -98
  63. package/lib/components/Selection.js +134 -0
  64. package/lib/components/Selection.js.map +13 -0
  65. package/lib/components/{TableCheckboxes.d.ts → TableSelection.d.ts} +266 -96
  66. package/lib/components/{TableCheckboxes.js → TableSelection.js} +30 -30
  67. package/lib/components/TableSelection.js.map +13 -0
  68. package/lib/components/Tabs.d.ts +20 -20
  69. package/lib/components/TabsTransfer.d.ts +84 -84
  70. package/lib/components/TabsTransfer.js +9 -9
  71. package/lib/components/TabsTransfer.js.map +2 -2
  72. package/lib/components/TabsTransferPicker.d.ts +489 -0
  73. package/lib/components/TabsTransferPicker.js +60 -0
  74. package/lib/components/TabsTransferPicker.js.map +13 -0
  75. package/lib/components/Toast.d.ts +86 -85
  76. package/lib/components/Toast.js +6 -3
  77. package/lib/components/Toast.js.map +2 -2
  78. package/lib/components/Transfer.d.ts +908 -274
  79. package/lib/components/Transfer.js +31 -24
  80. package/lib/components/Transfer.js.map +2 -2
  81. package/lib/components/TransferDropDown.d.ts +488 -0
  82. package/lib/components/TransferDropDown.js +59 -0
  83. package/lib/components/TransferDropDown.js.map +13 -0
  84. package/lib/components/TransferPicker.d.ts +493 -0
  85. package/lib/components/TransferPicker.js +60 -0
  86. package/lib/components/TransferPicker.js.map +13 -0
  87. package/lib/components/Tree.d.ts +115 -84
  88. package/lib/components/Tree.js +183 -30
  89. package/lib/components/Tree.js.map +2 -2
  90. package/lib/components/{TreeCheckboxes.d.ts → TreeSelection.d.ts} +269 -99
  91. package/lib/components/{TreeCheckboxes.js → TreeSelection.js} +36 -32
  92. package/lib/components/TreeSelection.js.map +13 -0
  93. package/lib/components/WithRemoteConfig.js +1 -1
  94. package/lib/components/WithRemoteConfig.js.map +2 -2
  95. package/lib/components/condition-builder/Field.js +5 -2
  96. package/lib/components/condition-builder/Field.js.map +2 -2
  97. package/lib/components/condition-builder/Func.js +2 -2
  98. package/lib/components/condition-builder/Func.js.map +2 -2
  99. package/lib/components/condition-builder/InputSwitch.js +2 -2
  100. package/lib/components/condition-builder/InputSwitch.js.map +2 -2
  101. package/lib/components/condition-builder/Item.js +3 -3
  102. package/lib/components/condition-builder/Item.js.map +2 -2
  103. package/lib/components/icons.js +2 -0
  104. package/lib/components/icons.js.map +2 -2
  105. package/lib/components/index.d.ts +8 -8
  106. package/lib/components/index.js +16 -16
  107. package/lib/components/index.js.map +2 -2
  108. package/lib/envOverwrite.d.ts +1 -1
  109. package/lib/envOverwrite.js +24 -9
  110. package/lib/envOverwrite.js.map +2 -2
  111. package/lib/factory.d.ts +15 -1
  112. package/lib/factory.js +35 -6
  113. package/lib/factory.js.map +2 -2
  114. package/lib/helper.css.map +1 -1
  115. package/lib/hooks/index.d.ts +5 -0
  116. package/lib/hooks/index.js +14 -0
  117. package/lib/hooks/index.js.map +13 -0
  118. package/lib/hooks/use-set-state.d.ts +2 -0
  119. package/lib/hooks/use-set-state.js +15 -0
  120. package/lib/hooks/use-set-state.js.map +13 -0
  121. package/lib/hooks/use-touch.d.ts +16 -0
  122. package/lib/hooks/use-touch.js +73 -0
  123. package/lib/hooks/use-touch.js.map +13 -0
  124. package/lib/hooks/use-update-effect.d.ts +3 -0
  125. package/lib/hooks/use-update-effect.js +17 -0
  126. package/lib/hooks/use-update-effect.js.map +13 -0
  127. package/lib/icons/download.js +7 -0
  128. package/lib/icons/drag-bar.js +10 -3
  129. package/lib/index.d.ts +5 -0
  130. package/lib/index.js +6 -1
  131. package/lib/index.js.map +2 -2
  132. package/lib/locale/de-DE.js +2 -0
  133. package/lib/locale/de-DE.js.map +2 -2
  134. package/lib/locale/en-US.js +3 -0
  135. package/lib/locale/en-US.js.map +2 -2
  136. package/lib/locale/zh-CN.js +5 -2
  137. package/lib/locale/zh-CN.js.map +2 -2
  138. package/lib/renderers/Action.d.ts +4 -3
  139. package/lib/renderers/Action.js +17 -4
  140. package/lib/renderers/Action.js.map +2 -2
  141. package/lib/renderers/AnchorNav.d.ts +1 -0
  142. package/lib/renderers/AnchorNav.js +2 -2
  143. package/lib/renderers/AnchorNav.js.map +2 -2
  144. package/lib/renderers/Avatar.js +3 -3
  145. package/lib/renderers/Avatar.js.map +2 -2
  146. package/lib/renderers/Breadcrumb.js +1 -1
  147. package/lib/renderers/Breadcrumb.js.map +2 -2
  148. package/lib/renderers/CRUD.d.ts +9 -0
  149. package/lib/renderers/CRUD.js +24 -4
  150. package/lib/renderers/CRUD.js.map +2 -2
  151. package/lib/renderers/Card.d.ts +4 -0
  152. package/lib/renderers/Card.js +29 -23
  153. package/lib/renderers/Card.js.map +2 -2
  154. package/lib/renderers/Chart.js +1 -1
  155. package/lib/renderers/Chart.js.map +2 -2
  156. package/lib/renderers/Collapse.d.ts +25 -20
  157. package/lib/renderers/Collapse.js +10 -72
  158. package/lib/renderers/Collapse.js.map +2 -2
  159. package/lib/renderers/CollapseGroup.d.ts +42 -0
  160. package/lib/renderers/CollapseGroup.js +33 -0
  161. package/lib/renderers/CollapseGroup.js.map +13 -0
  162. package/lib/renderers/DropDownButton.js +1 -1
  163. package/lib/renderers/DropDownButton.js.map +2 -2
  164. package/lib/renderers/Form/DiffEditor.d.ts +4 -3
  165. package/lib/renderers/Form/Editor.d.ts +3 -2
  166. package/lib/renderers/Form/InputCity.d.ts +84 -84
  167. package/lib/renderers/Form/InputCity.js +7 -6
  168. package/lib/renderers/Form/InputCity.js.map +2 -2
  169. package/lib/renderers/Form/InputColor.d.ts +84 -84
  170. package/lib/renderers/Form/InputFile.d.ts +6 -0
  171. package/lib/renderers/Form/InputFile.js +28 -8
  172. package/lib/renderers/Form/InputFile.js.map +2 -2
  173. package/lib/renderers/Form/InputImage.js +11 -4
  174. package/lib/renderers/Form/InputImage.js.map +2 -2
  175. package/lib/renderers/Form/Item.d.ts +1 -1
  176. package/lib/renderers/Form/Item.js +2 -1
  177. package/lib/renderers/Form/Item.js.map +2 -2
  178. package/lib/renderers/Form/Options.js +13 -3
  179. package/lib/renderers/Form/Options.js.map +2 -2
  180. package/lib/renderers/Form/Select.d.ts +42 -4
  181. package/lib/renderers/Form/Select.js +37 -3
  182. package/lib/renderers/Form/Select.js.map +2 -2
  183. package/lib/renderers/Form/TabsTransferPicker.d.ts +48 -0
  184. package/lib/renderers/Form/TabsTransferPicker.js +29 -0
  185. package/lib/renderers/Form/TabsTransferPicker.js.map +13 -0
  186. package/lib/renderers/Form/Transfer.js +18 -3
  187. package/lib/renderers/Form/Transfer.js.map +2 -2
  188. package/lib/renderers/Form/TransferPicker.d.ts +52 -0
  189. package/lib/renderers/Form/TransferPicker.js +43 -0
  190. package/lib/renderers/Form/TransferPicker.js.map +13 -0
  191. package/lib/renderers/Form/TreeSelect.js +2 -2
  192. package/lib/renderers/Form/TreeSelect.js.map +2 -2
  193. package/lib/renderers/Form/index.d.ts +5 -0
  194. package/lib/renderers/Form/index.js +5 -3
  195. package/lib/renderers/Form/index.js.map +2 -2
  196. package/lib/renderers/Form/wrapControl.js +13 -1
  197. package/lib/renderers/Form/wrapControl.js.map +2 -2
  198. package/lib/renderers/GridNav.d.ts +99 -0
  199. package/lib/renderers/GridNav.js +82 -0
  200. package/lib/renderers/GridNav.js.map +13 -0
  201. package/lib/renderers/IFrame.js +1 -3
  202. package/lib/renderers/IFrame.js.map +2 -2
  203. package/lib/renderers/Json.d.ts +4 -0
  204. package/lib/renderers/Json.js +4 -13
  205. package/lib/renderers/Json.js.map +2 -2
  206. package/lib/renderers/Link.d.ts +4 -2
  207. package/lib/renderers/Link.js +15 -6
  208. package/lib/renderers/Link.js.map +2 -2
  209. package/lib/renderers/List.js +1 -1
  210. package/lib/renderers/List.js.map +2 -2
  211. package/lib/renderers/Mapping.d.ts +9 -2
  212. package/lib/renderers/Mapping.js +18 -6
  213. package/lib/renderers/Mapping.js.map +2 -2
  214. package/lib/renderers/Nav.d.ts +21 -21
  215. package/lib/renderers/Nav.js +39 -21
  216. package/lib/renderers/Nav.js.map +2 -2
  217. package/lib/renderers/Portlet.d.ts +125 -0
  218. package/lib/renderers/Portlet.js +156 -0
  219. package/lib/renderers/Portlet.js.map +13 -0
  220. package/lib/renderers/Property.js +2 -1
  221. package/lib/renderers/Property.js.map +2 -2
  222. package/lib/renderers/SearchBox.d.ts +6 -1
  223. package/lib/renderers/SearchBox.js +19 -5
  224. package/lib/renderers/SearchBox.js.map +2 -2
  225. package/lib/renderers/Table/TableContent.d.ts +4 -1
  226. package/lib/renderers/Table/TableContent.js +21 -1
  227. package/lib/renderers/Table/TableContent.js.map +2 -2
  228. package/lib/renderers/Table/index.d.ts +5 -1
  229. package/lib/renderers/Table/index.js +65 -30
  230. package/lib/renderers/Table/index.js.map +2 -2
  231. package/lib/renderers/Tabs.js +9 -1
  232. package/lib/renderers/Tabs.js.map +2 -2
  233. package/lib/renderers/WebComponent.js +1 -1
  234. package/lib/renderers/WebComponent.js.map +2 -2
  235. package/lib/store/combo.d.ts +2 -16
  236. package/lib/store/crud.js +3 -7
  237. package/lib/store/crud.js.map +2 -2
  238. package/lib/store/form.d.ts +1 -1
  239. package/lib/store/form.js +5 -6
  240. package/lib/store/form.js.map +2 -2
  241. package/lib/store/formItem.js +44 -4
  242. package/lib/store/formItem.js.map +2 -2
  243. package/lib/store/service.js +5 -4
  244. package/lib/store/service.js.map +2 -2
  245. package/lib/store/table.d.ts +3 -2
  246. package/lib/store/table.js +35 -12
  247. package/lib/store/table.js.map +2 -2
  248. package/lib/themes/ang-ie11.css +689 -175
  249. package/lib/themes/ang.css +689 -175
  250. package/lib/themes/ang.css.map +1 -1
  251. package/lib/themes/antd-ie11.css +689 -175
  252. package/lib/themes/antd.css +689 -175
  253. package/lib/themes/antd.css.map +1 -1
  254. package/lib/themes/cxd-ie11.css +728 -213
  255. package/lib/themes/cxd.css +728 -213
  256. package/lib/themes/cxd.css.map +1 -1
  257. package/lib/themes/dark-ie11.css +689 -175
  258. package/lib/themes/dark.css +689 -175
  259. package/lib/themes/dark.css.map +1 -1
  260. package/lib/themes/default.css +728 -213
  261. package/lib/themes/default.css.map +1 -1
  262. package/lib/types.d.ts +38 -1
  263. package/lib/types.js +0 -5
  264. package/lib/types.js.map +2 -2
  265. package/lib/utils/api.d.ts +4 -2
  266. package/lib/utils/api.js +104 -17
  267. package/lib/utils/api.js.map +2 -2
  268. package/lib/utils/dom.d.ts +4 -0
  269. package/lib/utils/dom.js +11 -1
  270. package/lib/utils/dom.js.map +2 -2
  271. package/lib/utils/helper.d.ts +8 -0
  272. package/lib/utils/helper.js +28 -2
  273. package/lib/utils/helper.js.map +2 -2
  274. package/lib/utils/icon.js +3 -0
  275. package/lib/utils/icon.js.map +2 -2
  276. package/package.json +1 -1
  277. package/schema.json +3326 -836
  278. package/scss/_mixins.scss +1 -3
  279. package/scss/_properties.scss +25 -1
  280. package/scss/base/_common.scss +3 -0
  281. package/scss/base/_normalize.scss +2 -0
  282. package/scss/components/_anchor-nav.scss +89 -29
  283. package/scss/components/_card.scss +8 -14
  284. package/scss/components/_collapse-group.scss +11 -0
  285. package/scss/components/_collapse.scss +48 -22
  286. package/scss/components/_grid-nav.scss +128 -0
  287. package/scss/components/_input-box.scss +1 -0
  288. package/scss/components/_mapping.scss +6 -0
  289. package/scss/components/_nav.scss +2 -2
  290. package/scss/components/_picker-columns.scss +124 -0
  291. package/scss/components/_popover.scss +13 -0
  292. package/scss/components/_portlet.scss +51 -0
  293. package/scss/components/_result-box.scss +1 -0
  294. package/scss/components/_spinner.scss +5 -4
  295. package/scss/components/_status.scss +1 -1
  296. package/scss/components/_table.scss +32 -0
  297. package/scss/components/form/_checks.scss +0 -351
  298. package/scss/components/form/_combo.scss +4 -0
  299. package/scss/components/form/_fieldset.scss +5 -1
  300. package/scss/components/form/_file.scss +11 -0
  301. package/scss/components/form/_form.scss +48 -0
  302. package/scss/components/form/_selection.scss +354 -0
  303. package/scss/components/form/_transfer.scss +75 -18
  304. package/scss/components/form/_tree.scss +42 -0
  305. package/scss/themes/_common.scss +7 -0
  306. package/scss/themes/_cxd-variables.scss +8 -6
  307. package/scss/themes/cxd.scss +17 -12
  308. package/sdk/ang-ie11.css +786 -196
  309. package/sdk/ang.css +820 -213
  310. package/sdk/antd-ie11.css +786 -196
  311. package/sdk/antd.css +820 -213
  312. package/sdk/charts.js +13 -13
  313. package/sdk/color-picker.js +65 -69
  314. package/sdk/cropperjs.js +2 -2
  315. package/sdk/cxd-ie11.css +825 -236
  316. package/sdk/cxd.css +862 -254
  317. package/sdk/dark-ie11.css +787 -197
  318. package/sdk/dark.css +820 -213
  319. package/sdk/exceljs.js +1 -1
  320. package/sdk/helper.css.map +1 -1
  321. package/sdk/iconfont.svg +2513 -0
  322. package/sdk/iconfont.ttf +0 -0
  323. package/sdk/iconfont.woff +0 -0
  324. package/sdk/locale/de-DE.js +2 -0
  325. package/sdk/markdown.js +69 -69
  326. package/sdk/papaparse.js +1 -1
  327. package/sdk/renderers/Form/CityDB.js +1 -1
  328. package/sdk/rest.js +20 -28
  329. package/sdk/rich-text.js +62 -62
  330. package/sdk/sdk-ie11.css +825 -236
  331. package/sdk/sdk.css +862 -254
  332. package/sdk/sdk.js +1243 -1175
  333. package/sdk/thirds/hls.js/hls.js +1 -1
  334. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  335. package/sdk/tinymce.js +57 -57
  336. package/src/Schema.ts +19 -1
  337. package/src/components/AnchorNav.tsx +15 -4
  338. package/src/components/{AssociatedCheckboxes.tsx → AssociatedSelection.tsx} +43 -37
  339. package/src/components/Badge.tsx +3 -3
  340. package/src/components/{ChainedCheckboxes.tsx → ChainedSelection.tsx} +57 -40
  341. package/src/components/Collapse.tsx +144 -20
  342. package/src/components/CollapseGroup.tsx +130 -0
  343. package/src/components/GridNav.tsx +233 -0
  344. package/src/components/{ListCheckboxes.tsx → GroupedSelection.tsx} +26 -21
  345. package/src/components/InputBox.tsx +10 -9
  346. package/src/components/Link.tsx +28 -37
  347. package/src/components/ModalManager.ts +1 -1
  348. package/src/components/PickerColumn.tsx +429 -0
  349. package/src/components/PickerContainer.tsx +128 -0
  350. package/src/components/Radios.tsx +3 -8
  351. package/src/components/ResultBox.tsx +9 -9
  352. package/src/components/SearchBox.tsx +4 -5
  353. package/src/components/Select.tsx +57 -5
  354. package/src/components/{Checkboxes.tsx → Selection.tsx} +75 -21
  355. package/src/components/{TableCheckboxes.tsx → TableSelection.tsx} +46 -25
  356. package/src/components/TabsTransfer.tsx +13 -7
  357. package/src/components/TabsTransferPicker.tsx +85 -0
  358. package/src/components/Toast.tsx +23 -16
  359. package/src/components/Transfer.tsx +71 -50
  360. package/src/components/TransferDropDown.tsx +120 -0
  361. package/src/components/TransferPicker.tsx +91 -0
  362. package/src/components/Tree.tsx +194 -8
  363. package/src/components/{TreeCheckboxes.tsx → TreeSelection.tsx} +33 -26
  364. package/src/components/WithRemoteConfig.tsx +7 -2
  365. package/src/components/condition-builder/Field.tsx +5 -5
  366. package/src/components/condition-builder/Func.tsx +3 -3
  367. package/src/components/condition-builder/InputSwitch.tsx +3 -3
  368. package/src/components/condition-builder/Item.tsx +5 -12
  369. package/src/components/icons.tsx +2 -0
  370. package/src/components/index.tsx +13 -13
  371. package/src/envOverwrite.ts +20 -8
  372. package/src/factory.tsx +70 -9
  373. package/src/hooks/index.ts +5 -0
  374. package/src/hooks/use-set-state.ts +19 -0
  375. package/src/hooks/use-touch.ts +100 -0
  376. package/src/hooks/use-update-effect.ts +16 -0
  377. package/src/icons/download.svg +4 -0
  378. package/src/icons/drag-bar.svg +12 -6
  379. package/src/index.tsx +5 -0
  380. package/src/locale/de-DE.ts +2 -0
  381. package/src/locale/en-US.ts +3 -0
  382. package/src/locale/zh-CN.ts +5 -2
  383. package/src/renderers/Action.tsx +28 -2
  384. package/src/renderers/AnchorNav.tsx +4 -0
  385. package/src/renderers/Avatar.tsx +8 -4
  386. package/src/renderers/Breadcrumb.tsx +5 -1
  387. package/src/renderers/CRUD.tsx +33 -3
  388. package/src/renderers/Card.tsx +63 -34
  389. package/src/renderers/Chart.tsx +6 -2
  390. package/src/renderers/Collapse.tsx +70 -115
  391. package/src/renderers/CollapseGroup.tsx +80 -0
  392. package/src/renderers/DropDownButton.tsx +1 -1
  393. package/src/renderers/Form/InputCity.tsx +4 -8
  394. package/src/renderers/Form/InputFile.tsx +65 -24
  395. package/src/renderers/Form/InputImage.tsx +11 -3
  396. package/src/renderers/Form/Item.tsx +3 -2
  397. package/src/renderers/Form/Options.tsx +16 -2
  398. package/src/renderers/Form/Select.tsx +162 -21
  399. package/src/renderers/Form/TabsTransferPicker.tsx +123 -0
  400. package/src/renderers/Form/Transfer.tsx +19 -4
  401. package/src/renderers/Form/TransferPicker.tsx +145 -0
  402. package/src/renderers/Form/TreeSelect.tsx +25 -0
  403. package/src/renderers/Form/index.tsx +15 -2
  404. package/src/renderers/Form/wrapControl.tsx +26 -1
  405. package/src/renderers/GridNav.tsx +204 -0
  406. package/src/renderers/IFrame.tsx +2 -4
  407. package/src/renderers/Json.tsx +9 -9
  408. package/src/renderers/Link.tsx +27 -13
  409. package/src/renderers/List.tsx +1 -1
  410. package/src/renderers/Mapping.tsx +27 -11
  411. package/src/renderers/Nav.tsx +108 -60
  412. package/src/renderers/Portlet.tsx +423 -0
  413. package/src/renderers/Property.tsx +3 -2
  414. package/src/renderers/SearchBox.tsx +23 -4
  415. package/src/renderers/Table/TableContent.tsx +40 -2
  416. package/src/renderers/Table/index.tsx +88 -43
  417. package/src/renderers/Tabs.tsx +9 -1
  418. package/src/renderers/WebComponent.tsx +2 -2
  419. package/src/store/crud.ts +3 -8
  420. package/src/store/form.ts +5 -10
  421. package/src/store/formItem.ts +94 -2
  422. package/src/store/service.ts +5 -4
  423. package/src/store/table.ts +55 -14
  424. package/src/types.ts +58 -1
  425. package/src/utils/api.ts +133 -26
  426. package/src/utils/dom.tsx +12 -0
  427. package/src/utils/helper.ts +27 -0
  428. package/src/utils/icon.tsx +4 -0
  429. package/tsconfig-for-declaration.json +1 -1
  430. package/dump.rdb +0 -0
  431. package/lib/components/AssociatedCheckboxes.d.ts +0 -762
  432. package/lib/components/AssociatedCheckboxes.js +0 -90
  433. package/lib/components/AssociatedCheckboxes.js.map +0 -13
  434. package/lib/components/ChainedCheckboxes.js.map +0 -13
  435. package/lib/components/Checkboxes.js +0 -101
  436. package/lib/components/Checkboxes.js.map +0 -13
  437. package/lib/components/ListCheckboxes.d.ts +0 -739
  438. package/lib/components/ListCheckboxes.js +0 -48
  439. package/lib/components/ListCheckboxes.js.map +0 -13
  440. package/lib/components/ListRadios.d.ts +0 -763
  441. package/lib/components/ListRadios.js +0 -86
  442. package/lib/components/ListRadios.js.map +0 -13
  443. package/lib/components/TableCheckboxes.js.map +0 -13
  444. package/lib/components/TreeCheckboxes.js.map +0 -13
  445. package/lib/components/TreeRadios.d.ts +0 -838
  446. package/lib/components/TreeRadios.js +0 -116
  447. package/lib/components/TreeRadios.js.map +0 -13
  448. package/src/components/ListRadios.tsx +0 -159
  449. package/src/components/TreeRadios.tsx +0 -202
@@ -18,8 +18,10 @@ import {dataMapping} from '../../utils/tpl-builtin';
18
18
  import {
19
19
  SchemaApi,
20
20
  SchemaClassName,
21
- SchemaTokenizeableString
21
+ SchemaTokenizeableString,
22
+ SchemaUrlPath
22
23
  } from '../../Schema';
24
+ import merge from 'lodash/merge';
23
25
 
24
26
  /**
25
27
  * File 文件上传控件
@@ -88,6 +90,11 @@ export interface FileControlSchema extends FormBaseControl {
88
90
  */
89
91
  downloadUrl?: SchemaApi;
90
92
 
93
+ /**
94
+ * 模板下载地址
95
+ */
96
+ templateUrl?: SchemaApi;
97
+
91
98
  /**
92
99
  * 默认 `file`, 如果你不想自己存储,则可以忽略此属性。
93
100
  * @default file
@@ -275,6 +282,7 @@ export default class FileControl extends React.Component<FileProps, FileState> {
275
282
  extractValue: false,
276
283
  delimiter: ',',
277
284
  downloadUrl: '', // '/api/file/'
285
+ templateUrl: '',
278
286
  useChunk: 'auto',
279
287
  chunkSize: 5 * 1024 * 1024, // 文件大于5M, 自动分块上传
280
288
  startChunkApi: '/api/upload/startChunk',
@@ -356,11 +364,12 @@ export default class FileControl extends React.Component<FileProps, FileState> {
356
364
  if (value && value instanceof Blob) {
357
365
  files = [value as any];
358
366
  } else if (value) {
359
- files = (Array.isArray(value)
360
- ? value
361
- : joinValues
362
- ? `${(value as any)[valueField] || value}`.split(delimiter)
363
- : [value as any]
367
+ files = (
368
+ Array.isArray(value)
369
+ ? value
370
+ : joinValues
371
+ ? `${(value as any)[valueField] || value}`.split(delimiter)
372
+ : [value as any]
364
373
  )
365
374
  .map(item => FileControl.valueToFile(item, props) as FileValue)
366
375
  .filter(item => item);
@@ -386,6 +395,7 @@ export default class FileControl extends React.Component<FileProps, FileState> {
386
395
  this.uploadBigFile = this.uploadBigFile.bind(this);
387
396
  this.handleSelect = this.handleSelect.bind(this);
388
397
  this.syncAutoFill = this.syncAutoFill.bind(this);
398
+ this.downloadTpl = this.downloadTpl.bind(this);
389
399
  }
390
400
 
391
401
  componentDidMount() {
@@ -402,11 +412,12 @@ export default class FileControl extends React.Component<FileProps, FileState> {
402
412
  let files: Array<FileValue> = [];
403
413
 
404
414
  if (value) {
405
- files = (Array.isArray(value)
406
- ? value
407
- : joinValues && typeof value === 'string'
408
- ? value.split(delimiter)
409
- : [value as any]
415
+ files = (
416
+ Array.isArray(value)
417
+ ? value
418
+ : joinValues && typeof value === 'string'
419
+ ? value.split(delimiter)
420
+ : [value as any]
410
421
  )
411
422
  .map(item => {
412
423
  let obj = FileControl.valueToFile(
@@ -532,7 +543,7 @@ export default class FileControl extends React.Component<FileProps, FileState> {
532
543
  e.preventDefault();
533
544
  e.stopPropagation();
534
545
 
535
- const {data, env, downloadUrl} = this.props;
546
+ const {downloadUrl} = this.props;
536
547
  const urlField = this.props.urlField || 'url';
537
548
  const valueField = this.props.valueField || 'value';
538
549
 
@@ -547,10 +558,23 @@ export default class FileControl extends React.Component<FileProps, FileState> {
547
558
  ? downloadUrl
548
559
  : `${fileUrl}`;
549
560
 
561
+ this.handleApi(api, file);
562
+ }
563
+
564
+ downloadTpl(e: React.MouseEvent) {
565
+ e.preventDefault();
566
+ e.stopPropagation();
567
+
568
+ this.handleApi(this.props.templateUrl || '');
569
+ }
570
+
571
+ handleApi(api: SchemaApi, payload?: object) {
572
+ const {data, env} = this.props;
550
573
  if (api) {
551
574
  const ctx = createObject(data, {
552
- ...file
575
+ ...payload
553
576
  });
577
+
554
578
  const apiObject = normalizeApi(api);
555
579
 
556
580
  if (apiObject.method?.toLowerCase() === 'get' && !apiObject.data) {
@@ -851,8 +875,8 @@ export default class FileControl extends React.Component<FileProps, FileState> {
851
875
  }
852
876
 
853
877
  syncAutoFill() {
854
- const {autoFill, multiple, onBulkChange} = this.props;
855
- if (!isEmpty(autoFill)) {
878
+ const {autoFill, multiple, onBulkChange, data} = this.props;
879
+ if (!isEmpty(autoFill) && onBulkChange) {
856
880
  const files = this.state.files.filter(
857
881
  file => ~['uploaded', 'init', 'ready'].indexOf(file.state as string)
858
882
  );
@@ -864,7 +888,12 @@ export default class FileControl extends React.Component<FileProps, FileState> {
864
888
  }
865
889
  : files[0]
866
890
  );
867
- onBulkChange && onBulkChange(toSync);
891
+ Object.keys(toSync).forEach(key => {
892
+ if (isPlainObject(toSync[key]) && isPlainObject(data[key])) {
893
+ toSync[key] = merge({}, data[key], toSync[key]);
894
+ }
895
+ });
896
+ onBulkChange(toSync);
868
897
  }
869
898
  }
870
899
 
@@ -1163,7 +1192,8 @@ export default class FileControl extends React.Component<FileProps, FileState> {
1163
1192
  classnames: cx,
1164
1193
  translate: __,
1165
1194
  render,
1166
- downloadUrl
1195
+ downloadUrl,
1196
+ templateUrl
1167
1197
  } = this.props;
1168
1198
  let {files, uploading, error} = this.state;
1169
1199
  const nameField = this.props.nameField || 'name';
@@ -1186,6 +1216,16 @@ export default class FileControl extends React.Component<FileProps, FileState> {
1186
1216
 
1187
1217
  return (
1188
1218
  <div className={cx('FileControl', className)}>
1219
+ {templateUrl ? (
1220
+ <a
1221
+ className={cx('FileControl-templateInfo')}
1222
+ onClick={this.downloadTpl.bind(this)}
1223
+ >
1224
+ <Icon icon="download" className="icon" />
1225
+ <span>{__('File.downloadTpl')}</span>
1226
+ </a>
1227
+ ) : null}
1228
+
1189
1229
  <DropZone
1190
1230
  disabled={disabled}
1191
1231
  key="drop-zone"
@@ -1223,13 +1263,14 @@ export default class FileControl extends React.Component<FileProps, FileState> {
1223
1263
  onClick={this.handleSelect}
1224
1264
  >
1225
1265
  <Icon icon="upload" className="icon" />
1226
- <span>{!multiple && files.length
1227
- ? __('File.repick')
1228
- : multiple && files.length
1229
- ? __('File.continueAdd')
1230
- : btnLabel
1231
- ? btnLabel
1232
- : __('File.upload')}
1266
+ <span>
1267
+ {!multiple && files.length
1268
+ ? __('File.repick')
1269
+ : multiple && files.length
1270
+ ? __('File.continueAdd')
1271
+ : btnLabel
1272
+ ? btnLabel
1273
+ : __('File.upload')}
1233
1274
  </span>
1234
1275
  </Button>
1235
1276
  ) : null}
@@ -29,6 +29,8 @@ import {
29
29
  SchemaUrlPath
30
30
  } from '../../Schema';
31
31
  import {filter} from '../../utils/tpl';
32
+ import isPlainObject from 'lodash/isPlainObject';
33
+ import merge from 'lodash/merge';
32
34
 
33
35
  /**
34
36
  * Image 图片上传控件
@@ -790,8 +792,8 @@ export default class ImageControl extends React.Component<
790
792
  }
791
793
 
792
794
  syncAutoFill() {
793
- const {autoFill, multiple, onBulkChange} = this.props;
794
- if (!isEmpty(autoFill)) {
795
+ const {autoFill, multiple, onBulkChange, data} = this.props;
796
+ if (!isEmpty(autoFill) && onBulkChange) {
795
797
  const files = this.state.files.filter(
796
798
  file => ~['uploaded', 'init', 'ready'].indexOf(file.state as string)
797
799
  );
@@ -803,7 +805,13 @@ export default class ImageControl extends React.Component<
803
805
  }
804
806
  : files[0]
805
807
  );
806
- onBulkChange && onBulkChange(toSync);
808
+
809
+ Object.keys(toSync).forEach(key => {
810
+ if (isPlainObject(toSync[key]) && isPlainObject(data[key])) {
811
+ toSync[key] = merge({}, data[key], toSync[key]);
812
+ }
813
+ });
814
+ onBulkChange(toSync);
807
815
  }
808
816
  }
809
817
 
@@ -314,7 +314,7 @@ export interface FormItemProps extends RendererProps {
314
314
  submitOnChange?: boolean,
315
315
  changeImmediately?: boolean
316
316
  ) => void;
317
- onBulkChange: (
317
+ onBulkChange?: (
318
318
  values: {[propName: string]: any},
319
319
  submitOnChange?: boolean
320
320
  ) => void;
@@ -1089,7 +1089,8 @@ export const detectProps = [
1089
1089
  'items',
1090
1090
  'showCounter',
1091
1091
  'minLength',
1092
- 'maxLength'
1092
+ 'maxLength',
1093
+ 'embed'
1093
1094
  ];
1094
1095
 
1095
1096
  export function asFormItem(config: Omit<FormItemConfig, 'component'>) {
@@ -48,6 +48,8 @@ import {
48
48
  SchemaObject,
49
49
  SchemaTokenizeableString
50
50
  } from '../../Schema';
51
+ import isPlainObject from 'lodash/isPlainObject';
52
+ import merge from 'lodash/merge';
51
53
 
52
54
  export {Option};
53
55
 
@@ -450,7 +452,12 @@ export function registerOptionsControl(config: OptionsConfig) {
450
452
  const {autoFill, multiple, onBulkChange, data} = this.props;
451
453
  const formItem = this.props.formItem as IFormItemStore;
452
454
 
453
- if (autoFill && !isEmpty(autoFill) && formItem.filteredOptions.length) {
455
+ if (
456
+ onBulkChange &&
457
+ autoFill &&
458
+ !isEmpty(autoFill) &&
459
+ formItem.filteredOptions.length
460
+ ) {
454
461
  const selectedOptions = formItem.getSelectedOptions(value);
455
462
  const toSync = dataMapping(
456
463
  autoFill,
@@ -482,7 +489,14 @@ export function registerOptionsControl(config: OptionsConfig) {
482
489
  selectedOptions[0]
483
490
  )
484
491
  );
485
- onBulkChange?.(toSync);
492
+
493
+ Object.keys(toSync).forEach(key => {
494
+ if (isPlainObject(toSync[key]) && isPlainObject(data[key])) {
495
+ toSync[key] = merge({}, data[key], toSync[key]);
496
+ }
497
+ });
498
+
499
+ onBulkChange(toSync);
486
500
  }
487
501
  }
488
502
 
@@ -14,6 +14,9 @@ import {isEffectiveApi} from '../../utils/api';
14
14
  import {isEmpty, createObject, autobind} from '../../utils/helper';
15
15
  import {dataMapping} from '../../utils/tpl-builtin';
16
16
  import {SchemaApi} from '../../Schema';
17
+ import Spinner from '../../components/Spinner';
18
+ import {BaseTransferRenderer, TransferControlSchema} from './Transfer';
19
+ import TransferDropDown from '../../components/TransferDropDown';
17
20
 
18
21
  /**
19
22
  * Select 下拉选择框。
@@ -28,11 +31,6 @@ export interface SelectControlSchema extends FormOptionsControl {
28
31
  */
29
32
  autoComplete?: SchemaApi;
30
33
 
31
- /**
32
- * 是否可以搜索值
33
- */
34
- searchable?: boolean;
35
-
36
34
  /**
37
35
  * 可以自定义菜单展示。
38
36
  */
@@ -42,6 +40,51 @@ export interface SelectControlSchema extends FormOptionsControl {
42
40
  * 边框模式,全边框,还是半边框,或者没边框。
43
41
  */
44
42
  borderMode?: 'full' | 'half' | 'none';
43
+
44
+ /**
45
+ * 勾选展示模式
46
+ */
47
+ selectMode?: 'table' | 'group' | 'tree' | 'chained' | 'associated';
48
+
49
+ /**
50
+ * 当 selectMode 为 associated 时用来定义左侧的选项
51
+ */
52
+ leftOptions?: Array<Option>;
53
+
54
+ /**
55
+ * 当 selectMode 为 associated 时用来定义左侧的选择模式
56
+ */
57
+ leftMode?: 'tree' | 'list';
58
+
59
+ /**
60
+ * 当 selectMode 为 associated 时用来定义右侧的选择模式
61
+ */
62
+ rightMode?: 'table' | 'list' | 'tree' | 'chained';
63
+
64
+ /**
65
+ * 搜索结果展示模式
66
+ */
67
+ searchResultMode?: 'table' | 'list' | 'tree' | 'chained';
68
+
69
+ /**
70
+ * 当 selectMode 为 table 时定义表格列信息。
71
+ */
72
+ columns?: Array<any>;
73
+
74
+ /**
75
+ * 当 searchResultMode 为 table 时定义表格列信息。
76
+ */
77
+ searchResultColumns?: Array<any>;
78
+
79
+ /**
80
+ * 可搜索?
81
+ */
82
+ searchable?: boolean;
83
+
84
+ /**
85
+ * 搜索 API
86
+ */
87
+ searchApi?: SchemaApi;
45
88
  }
46
89
 
47
90
  export interface SelectProps extends OptionsControlProps {
@@ -220,6 +263,18 @@ export default class SelectControl extends React.Component<SelectProps, any> {
220
263
  reload && reload();
221
264
  }
222
265
 
266
+ option2value() {}
267
+
268
+ renderOtherMode() {
269
+ const {selectMode, ...rest} = this.props;
270
+ return (
271
+ <TransferDropdownRenderer
272
+ {...rest}
273
+ selectMode={selectMode === 'group' ? 'list' : selectMode}
274
+ />
275
+ );
276
+ }
277
+
223
278
  render() {
224
279
  let {
225
280
  autoComplete,
@@ -241,6 +296,7 @@ export default class SelectControl extends React.Component<SelectProps, any> {
241
296
  render,
242
297
  menuTpl,
243
298
  borderMode,
299
+ selectMode,
244
300
  ...rest
245
301
  } = this.props;
246
302
 
@@ -250,25 +306,110 @@ export default class SelectControl extends React.Component<SelectProps, any> {
250
306
 
251
307
  return (
252
308
  <div className={cx(`${classPrefix}SelectControl`, className)}>
253
- <Select
254
- {...rest}
255
- borderMode={borderMode}
256
- placeholder={placeholder}
257
- multiple={multiple || multi}
258
- ref={this.inputRef}
309
+ {['table', 'list', 'group', 'tree', 'chained', 'associated'].includes(
310
+ selectMode
311
+ ) ? (
312
+ this.renderOtherMode()
313
+ ) : (
314
+ <Select
315
+ {...rest}
316
+ borderMode={borderMode}
317
+ placeholder={placeholder}
318
+ multiple={multiple || multi}
319
+ ref={this.inputRef}
320
+ value={selectedOptions}
321
+ options={options}
322
+ loadOptions={
323
+ isEffectiveApi(autoComplete) ? this.lazyloadRemote : undefined
324
+ }
325
+ creatable={creatable}
326
+ searchable={searchable || !!autoComplete}
327
+ onChange={this.changeValue}
328
+ loading={loading}
329
+ noResultsText={noResultsText}
330
+ renderMenu={menuTpl ? this.renderMenu : undefined}
331
+ />
332
+ )}
333
+ </div>
334
+ );
335
+ }
336
+ }
337
+
338
+ export interface TransferDropDownProps
339
+ extends OptionsControlProps,
340
+ Omit<
341
+ TransferControlSchema,
342
+ | 'type'
343
+ | 'options'
344
+ | 'inputClassName'
345
+ | 'className'
346
+ | 'descriptionClassName'
347
+ > {
348
+ borderMode?: 'full' | 'half' | 'none';
349
+ }
350
+
351
+ class TransferDropdownRenderer extends BaseTransferRenderer<TransferDropDownProps> {
352
+ render() {
353
+ const {
354
+ className,
355
+ classnames: cx,
356
+ selectedOptions,
357
+ sortable,
358
+ loading,
359
+ searchable,
360
+ searchResultMode,
361
+ showArrow,
362
+ deferLoad,
363
+ disabled,
364
+ selectTitle,
365
+ selectMode,
366
+ multiple,
367
+ columns,
368
+ leftMode,
369
+ borderMode
370
+ } = this.props;
371
+
372
+ // 目前 LeftOptions 没有接口可以动态加载
373
+ // 为了方便可以快速实现动态化,让选项的第一个成员携带
374
+ // LeftOptions 信息
375
+ let {options, leftOptions, leftDefaultValue} = this.props;
376
+ if (
377
+ selectMode === 'associated' &&
378
+ options &&
379
+ options.length === 1 &&
380
+ options[0].leftOptions &&
381
+ Array.isArray(options[0].children)
382
+ ) {
383
+ leftOptions = options[0].leftOptions;
384
+ leftDefaultValue = options[0].leftDefaultValue ?? leftDefaultValue;
385
+ options = options[0].children;
386
+ }
387
+
388
+ return (
389
+ <>
390
+ <TransferDropDown
391
+ selectMode={selectMode}
392
+ className={className}
259
393
  value={selectedOptions}
394
+ disabled={disabled}
260
395
  options={options}
261
- loadOptions={
262
- isEffectiveApi(autoComplete) ? this.lazyloadRemote : undefined
263
- }
264
- creatable={creatable}
265
- searchable={searchable || !!autoComplete}
266
- onChange={this.changeValue}
267
- loading={loading}
268
- noResultsText={noResultsText}
269
- renderMenu={menuTpl ? this.renderMenu : undefined}
396
+ onChange={this.handleChange}
397
+ option2value={this.option2value}
398
+ sortable={sortable}
399
+ searchResultMode={searchResultMode}
400
+ onSearch={searchable ? this.handleSearch : undefined}
401
+ showArrow={showArrow}
402
+ onDeferLoad={deferLoad}
403
+ selectTitle={selectTitle}
404
+ multiple={multiple}
405
+ columns={columns}
406
+ leftMode={leftMode}
407
+ leftOptions={leftOptions}
408
+ borderMode={borderMode}
270
409
  />
271
- </div>
410
+
411
+ <Spinner overlay key="info" show={loading} />
412
+ </>
272
413
  );
273
414
  }
274
415
  }
@@ -0,0 +1,123 @@
1
+ import {
2
+ OptionsControlProps,
3
+ OptionsControl,
4
+ FormOptionsControl
5
+ } from './Options';
6
+ import React from 'react';
7
+ import {Api} from '../../types';
8
+ import Spinner from '../../components/Spinner';
9
+ import {BaseTransferRenderer} from './Transfer';
10
+ import TabsTransfer from '../../components/TabsTransfer';
11
+ import {SchemaApi} from '../../Schema';
12
+ import TransferPicker from '../../components/TransferPicker';
13
+ import TabsTransferPicker from '../../components/TabsTransferPicker';
14
+
15
+ /**
16
+ * TabsTransferPicker 穿梭器的弹框形态
17
+ * 文档:https://baidu.gitee.io/amis/docs/components/form/tabs-transfer-picker
18
+ */
19
+ export interface TabsTransferPickerControlSchema extends FormOptionsControl {
20
+ type: 'tabs-transfer-picker';
21
+
22
+ /**
23
+ * 是否显示剪头
24
+ */
25
+ showArrow?: boolean;
26
+
27
+ /**
28
+ * 可排序?
29
+ */
30
+ sortable?: boolean;
31
+
32
+ /**
33
+ * 搜索结果展示模式
34
+ */
35
+ searchResultMode?: 'table' | 'list' | 'tree' | 'chained';
36
+
37
+ /**
38
+ * 可搜索?
39
+ */
40
+ searchable?: boolean;
41
+
42
+ /**
43
+ * 搜索 API
44
+ */
45
+ searchApi?: SchemaApi;
46
+
47
+ /**
48
+ * 左侧的标题文字
49
+ */
50
+ selectTitle?: string;
51
+
52
+ /**
53
+ * 右侧结果的标题文字
54
+ */
55
+ resultTitle?: string;
56
+
57
+ /**
58
+ * 弹窗大小
59
+ */
60
+ pickerSize?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full';
61
+ }
62
+
63
+ export interface TabsTransferProps
64
+ extends OptionsControlProps,
65
+ Omit<
66
+ TabsTransferPickerControlSchema,
67
+ | 'type'
68
+ | 'options'
69
+ | 'inputClassName'
70
+ | 'className'
71
+ | 'descriptionClassName'
72
+ > {}
73
+
74
+ @OptionsControl({
75
+ type: 'tabs-transfer-picker'
76
+ })
77
+ export class TabsTransferPickerRenderer extends BaseTransferRenderer<TabsTransferProps> {
78
+ render() {
79
+ const {
80
+ className,
81
+ classnames: cx,
82
+ options,
83
+ selectedOptions,
84
+ sortable,
85
+ loading,
86
+ searchable,
87
+ searchResultMode,
88
+ showArrow,
89
+ deferLoad,
90
+ disabled,
91
+ selectTitle,
92
+ resultTitle,
93
+ pickerSize,
94
+ columns,
95
+ leftMode,
96
+ leftOptions
97
+ } = this.props;
98
+
99
+ return (
100
+ <div className={cx('TabsTransferControl', className)}>
101
+ <TabsTransferPicker
102
+ value={selectedOptions}
103
+ disabled={disabled}
104
+ options={options}
105
+ onChange={this.handleChange}
106
+ option2value={this.option2value}
107
+ sortable={sortable}
108
+ searchResultMode={searchResultMode}
109
+ onSearch={searchable ? this.handleSearch : undefined}
110
+ showArrow={showArrow}
111
+ onDeferLoad={deferLoad}
112
+ selectTitle={selectTitle}
113
+ resultTitle={resultTitle}
114
+ size={pickerSize}
115
+ leftMode={leftMode}
116
+ leftOptions={leftOptions}
117
+ />
118
+
119
+ <Spinner overlay key="info" show={loading} />
120
+ </div>
121
+ );
122
+ }
123
+ }
@@ -207,8 +207,9 @@ export class BaseTransferRenderer<
207
207
  (option: Option) => {
208
208
  return !!(
209
209
  (Array.isArray(option.children) && option.children.length) ||
210
- regexp.test(option[(labelField as string) || 'label']) ||
211
- regexp.test(option[(valueField as string) || 'value'])
210
+ (option[(valueField as string) || 'value'] &&
211
+ (regexp.test(option[(labelField as string) || 'label']) ||
212
+ regexp.test(option[(valueField as string) || 'value'])))
212
213
  );
213
214
  },
214
215
  0,
@@ -248,7 +249,6 @@ export class BaseTransferRenderer<
248
249
  const {
249
250
  className,
250
251
  classnames: cx,
251
- options,
252
252
  selectedOptions,
253
253
  showArrow,
254
254
  sortable,
@@ -259,7 +259,6 @@ export class BaseTransferRenderer<
259
259
  searchResultMode,
260
260
  searchResultColumns,
261
261
  deferLoad,
262
- leftOptions,
263
262
  leftMode,
264
263
  rightMode,
265
264
  disabled,
@@ -269,6 +268,22 @@ export class BaseTransferRenderer<
269
268
  resultItemRender
270
269
  } = this.props;
271
270
 
271
+ // 目前 LeftOptions 没有接口可以动态加载
272
+ // 为了方便可以快速实现动态化,让选项的第一个成员携带
273
+ // LeftOptions 信息
274
+ let {options, leftOptions, leftDefaultValue} = this.props;
275
+ if (
276
+ selectMode === 'associated' &&
277
+ options &&
278
+ options.length === 1 &&
279
+ options[0].leftOptions &&
280
+ Array.isArray(options[0].children)
281
+ ) {
282
+ leftOptions = options[0].leftOptions;
283
+ leftDefaultValue = options[0].leftDefaultValue ?? leftDefaultValue;
284
+ options = options[0].children;
285
+ }
286
+
272
287
  return (
273
288
  <div className={cx('TransferControl', className)}>
274
289
  <Transfer