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
@@ -1,20 +1,29 @@
1
1
  import React from 'react';
2
+ import {findDOMNode} from 'react-dom';
2
3
  import {Renderer, RendererEnv, RendererProps} from '../factory';
3
4
  import getExprProperties from '../utils/filter-schema';
4
5
  import {filter, evalExpression} from '../utils/tpl';
5
6
  import {
7
+ guid,
6
8
  autobind,
7
9
  createObject,
8
10
  findTree,
9
11
  isUnfolded,
10
12
  mapTree,
11
13
  someTree,
12
- spliceTree
14
+ spliceTree,
15
+ findTreeIndex
13
16
  } from '../utils/helper';
14
17
  import {ScopedContext, IScopedContext} from '../Scoped';
15
18
  import {themeable, ThemeProps} from '../theme';
16
19
  import {Icon} from '../components/icons';
17
- import {BaseSchema, SchemaApi, SchemaIcon, SchemaUrlPath, SchemaCollection} from '../Schema';
20
+ import {
21
+ BaseSchema,
22
+ SchemaApi,
23
+ SchemaIcon,
24
+ SchemaUrlPath,
25
+ SchemaCollection
26
+ } from '../Schema';
18
27
  import {generateIcon} from '../utils/icon';
19
28
  import {
20
29
  RemoteOptionsProps,
@@ -22,6 +31,8 @@ import {
22
31
  } from '../components/WithRemoteConfig';
23
32
  import {Payload} from '../types';
24
33
  import Spinner from '../components/Spinner';
34
+ import {isEffectiveApi} from '../utils/api';
35
+ import {Badge, BadgeSchema} from '../components/Badge';
25
36
 
26
37
  export type NavItemSchema = {
27
38
  /**
@@ -81,6 +92,31 @@ export interface NavSchema extends BaseSchema {
81
92
  * true 为垂直排列,false 为水平排列类似如 tabs。
82
93
  */
83
94
  stacked?: boolean;
95
+
96
+ /**
97
+ * 更多操作菜单列表
98
+ */
99
+ itemActions?: SchemaCollection;
100
+
101
+ /**
102
+ * 可拖拽
103
+ */
104
+ draggable?: boolean;
105
+
106
+ /**
107
+ * 保存排序的 api
108
+ */
109
+ saveOrderApi?: SchemaApi;
110
+
111
+ /**
112
+ * 角标
113
+ */
114
+ itemBadge?: BadgeSchema;
115
+
116
+ /**
117
+ * 仅允许同层级拖拽
118
+ */
119
+ dragOnSameLevel?: boolean;
84
120
  }
85
121
 
86
122
  export interface Link {
@@ -97,23 +133,44 @@ export interface Link {
97
133
  loading?: boolean;
98
134
  loaded?: boolean;
99
135
  [propName: string]: any;
136
+ itemBadge?: BadgeSchema;
100
137
  }
101
138
  export interface Links extends Array<Link> {}
102
139
 
103
140
  export interface NavigationState {
104
- links: Links;
141
+ links?: Links;
105
142
  error?: string;
143
+ dropIndicator?: {
144
+ top: number;
145
+ left: number;
146
+ width: number;
147
+ height?: number;
148
+ opacity?: number;
149
+ };
106
150
  }
107
151
 
108
152
  export interface NavigationProps
109
153
  extends ThemeProps,
110
154
  Omit<NavSchema, 'type' | 'className'> {
111
155
  onSelect?: (item: Link) => void | false;
112
- onToggle?: (item: Link) => void;
156
+ onToggle?: (item: Link, forceFold?: boolean) => void;
157
+ onDragUpdate?: (dropInfo: IDropInfo) => void;
113
158
  togglerClassName?: string;
114
159
  links?: Array<Link>;
115
160
  loading?: boolean;
116
- render: RendererProps['render']
161
+ render: RendererProps['render'];
162
+ env: RendererEnv;
163
+ data: Object;
164
+ reload?: any;
165
+ }
166
+
167
+ export interface IDropInfo {
168
+ dragLink: Link | null;
169
+ nodeId: string;
170
+ position: string;
171
+ rect: DOMRect;
172
+ height: number;
173
+ left: number;
117
174
  }
118
175
 
119
176
  export class Navigation extends React.Component<
@@ -124,14 +181,173 @@ export class Navigation extends React.Component<
124
181
  indentSize: 24
125
182
  };
126
183
 
184
+ dragNode: {
185
+ node: HTMLElement;
186
+ link: Link | null;
187
+ } | null;
188
+ dropInfo: IDropInfo | null;
189
+ startPoint: {
190
+ y: number;
191
+ x: number;
192
+ } = {
193
+ y: 0,
194
+ x: 0
195
+ };
196
+ state: NavigationState = {};
197
+
127
198
  @autobind
128
199
  handleClick(link: Link) {
129
- this.props.onSelect?.(link);
200
+ const {env, onSelect} = this.props;
201
+ // 和 action 里命名一致方便分析
202
+ if (link && link.to) {
203
+ env?.tracker({
204
+ eventType: 'link',
205
+ eventData: {
206
+ label: link.label,
207
+ link: link.to
208
+ }
209
+ });
210
+ }
211
+
212
+ onSelect?.(link);
130
213
  }
131
214
 
132
215
  @autobind
133
- toggleLink(target: Link) {
134
- this.props.onToggle?.(target);
216
+ toggleLink(target: Link, forceFold?: boolean) {
217
+ this.props.onToggle?.(target, forceFold);
218
+ }
219
+
220
+ @autobind
221
+ getDropInfo(e: DragEvent, id: string, depth: number): IDropInfo {
222
+ const {dragOnSameLevel, indentSize} = this.props;
223
+ let rect = (e.target as HTMLElement).getBoundingClientRect();
224
+ const dragLink = this.dragNode?.link as Link;
225
+ const {top, height, width} = rect;
226
+ let {clientY, clientX} = e;
227
+ const left = depth * (parseInt(indentSize as any, 10) ?? 24);
228
+ const deltaX = left + width * 0.2;
229
+ let position;
230
+ if (clientY >= top + height / 2) {
231
+ position = 'bottom';
232
+ } else {
233
+ position = 'top';
234
+ }
235
+ if (
236
+ !dragOnSameLevel &&
237
+ position === 'bottom' &&
238
+ clientX >= this.startPoint.x + deltaX
239
+ ) {
240
+ position = 'self';
241
+ }
242
+ return {
243
+ nodeId: id,
244
+ dragLink,
245
+ position,
246
+ rect,
247
+ height,
248
+ left
249
+ };
250
+ }
251
+ @autobind
252
+ updateDropIndicator(e: DragEvent) {
253
+ const {dragOnSameLevel} = this.props;
254
+ const target = e.target as HTMLElement; // a标签
255
+ const targetId = target.getAttribute('data-id') as string;
256
+ const targetDepth = Number(target.getAttribute('data-depth'));
257
+ if (
258
+ dragOnSameLevel &&
259
+ this.dragNode?.node.parentElement !== target.parentElement?.parentElement
260
+ ) {
261
+ this.setState({dropIndicator: undefined});
262
+ this.dropInfo = null;
263
+ return;
264
+ }
265
+ this.dropInfo = this.getDropInfo(e, targetId, targetDepth);
266
+ let {position, rect, dragLink, height, left} = this.dropInfo;
267
+ if (targetId === dragLink?.__id) {
268
+ this.setState({dropIndicator: undefined});
269
+ this.dropInfo = null;
270
+ return;
271
+ }
272
+ const ul = (findDOMNode(this) as HTMLElement).firstChild as HTMLElement;
273
+ if (position === 'self') {
274
+ this.setState({
275
+ dropIndicator: {
276
+ top: rect.top - ul.getBoundingClientRect().top,
277
+ left,
278
+ width: ul.getBoundingClientRect().width - left,
279
+ height,
280
+ opacity: 0.2
281
+ }
282
+ });
283
+ } else {
284
+ this.setState({
285
+ dropIndicator: {
286
+ top:
287
+ (position === 'bottom' ? rect.top + rect.height : rect.top) -
288
+ ul.getBoundingClientRect().top,
289
+ left,
290
+ width: ul.getBoundingClientRect().width - left
291
+ }
292
+ });
293
+ }
294
+ }
295
+
296
+ @autobind
297
+ handleDragStart(link: Link) {
298
+ return (e: React.DragEvent) => {
299
+ e.stopPropagation();
300
+ const currentTarget = e.currentTarget as HTMLElement;
301
+ e.dataTransfer.effectAllowed = 'copyMove';
302
+ e.dataTransfer.setDragImage(currentTarget, 0, 0);
303
+ this.dragNode = {
304
+ node: currentTarget,
305
+ link: link
306
+ };
307
+ this.dropInfo = null;
308
+ this.startPoint = {
309
+ x: e.clientX,
310
+ y: e.clientY
311
+ };
312
+ currentTarget.addEventListener('dragend', this.handleDragEnd);
313
+ document.body.addEventListener('dragover', this.handleDragOver);
314
+ };
315
+ }
316
+
317
+ @autobind
318
+ handleDragOver(e: DragEvent) {
319
+ e.preventDefault();
320
+ e.stopPropagation();
321
+ if (!this.dragNode) {
322
+ return;
323
+ }
324
+ const target = e.target as HTMLElement;
325
+ const id = target.getAttribute('data-id');
326
+ if (!id) {
327
+ return;
328
+ }
329
+ this.updateDropIndicator(e);
330
+ }
331
+
332
+ @autobind
333
+ handleDragEnd(e: DragEvent) {
334
+ e.preventDefault();
335
+ e.stopPropagation();
336
+ this.setState({
337
+ dropIndicator: undefined
338
+ });
339
+ const currentTarget = e.currentTarget as HTMLElement;
340
+ const id = currentTarget.getAttribute('data-id');
341
+ let nodeId = this.dropInfo?.nodeId;
342
+ if (!this.dropInfo || !nodeId || id === nodeId) {
343
+ return;
344
+ }
345
+ currentTarget.removeEventListener('dragend', this.handleDragEnd);
346
+ document.body.removeEventListener('dragover', this.handleDragOver);
347
+
348
+ this.props.onDragUpdate?.(this.dropInfo);
349
+ this.dragNode = null;
350
+ this.dropInfo = null;
135
351
  }
136
352
 
137
353
  renderItem(link: Link, index: number, depth = 1) {
@@ -139,72 +355,122 @@ export class Navigation extends React.Component<
139
355
  return null;
140
356
  }
141
357
  const isActive: boolean = !!link.active;
142
- const {disabled, togglerClassName, classnames: cx, indentSize} = this.props;
358
+ const {
359
+ disabled,
360
+ togglerClassName,
361
+ classnames: cx,
362
+ indentSize,
363
+ render,
364
+ itemActions,
365
+ draggable,
366
+ links,
367
+ itemBadge,
368
+ data: defaultData
369
+ } = this.props;
143
370
  const hasSub =
144
371
  (link.defer && !link.loaded) || (link.children && link.children.length);
145
-
146
372
  return (
147
373
  <li
148
- key={index}
374
+ key={link.__id}
375
+ data-id={link.__id}
149
376
  className={cx('Nav-item', link.className, {
150
377
  'is-disabled': disabled || link.disabled || link.loading,
151
378
  'is-active': isActive,
152
379
  'is-unfolded': link.unfolded,
153
380
  'has-sub': hasSub
154
381
  })}
382
+ onDragStart={this.handleDragStart(link)}
155
383
  >
156
- <a
157
- onClick={this.handleClick.bind(this, link)}
158
- style={{paddingLeft: depth * (parseInt(indentSize as any, 10) ?? 24)}}
384
+ <Badge
385
+ classnames={cx}
386
+ badge={itemBadge}
387
+ data={createObject(defaultData, link)}
159
388
  >
160
- {generateIcon(cx, link.icon, 'Nav-itemIcon')}
389
+ <a
390
+ data-id={link.__id}
391
+ data-depth={depth}
392
+ onClick={this.handleClick.bind(this, link)}
393
+ style={{
394
+ paddingLeft: depth * (parseInt(indentSize as any, 10) ?? 24)
395
+ }}
396
+ >
397
+ {!disabled && draggable ? (
398
+ <div
399
+ className={cx('Nav-itemDrager')}
400
+ draggable
401
+ onMouseDown={e => {
402
+ this.toggleLink(link, true);
403
+ e.stopPropagation();
404
+ }}
405
+ >
406
+ <Icon icon="drag-bar" className="icon" />
407
+ </div>
408
+ ) : null}
409
+ {link.loading ? (
410
+ <Spinner
411
+ size="sm"
412
+ show
413
+ icon="reload"
414
+ spinnerClassName={cx('Nav-spinner')}
415
+ />
416
+ ) : hasSub ? (
417
+ <span
418
+ onClick={() => this.toggleLink(link)}
419
+ className={cx('Nav-itemToggler', togglerClassName)}
420
+ >
421
+ <Icon icon="caret" className="icon" />
422
+ </span>
423
+ ) : null}
424
+ {generateIcon(cx, link.icon, 'Nav-itemIcon')}
425
+ {link.label &&
426
+ (typeof link.label === 'string'
427
+ ? link.label
428
+ : render('inline', link.label as SchemaCollection))}
429
+ </a>
161
430
  {
162
- link.label && (typeof link.label === 'string'
163
- ? link.label
164
- : this.props.render('inline', link.label as SchemaCollection))
431
+ // 更多操作
432
+ itemActions ? (
433
+ <div className={cx('Nav-item-atcions')}>
434
+ {render('inline', itemActions, {
435
+ data: createObject(defaultData, link)
436
+ })}
437
+ </div>
438
+ ) : null
165
439
  }
166
- </a>
167
-
168
- {link.loading ? (
169
- <Spinner
170
- size="sm"
171
- show
172
- icon="reload"
173
- spinnerClassName={cx('Nav-spinner')}
174
- />
175
- ) : hasSub ? (
176
- <span
177
- onClick={() => this.toggleLink(link)}
178
- className={cx('Nav-itemToggler', togglerClassName)}
179
- >
180
- <Icon icon="caret" className="icon" />
181
- </span>
182
- ) : null}
183
-
184
- {Array.isArray(link.children) && link.children.length ? (
185
- <ul className={cx('Nav-subItems')}>
186
- {link.children.map((link, index) =>
187
- this.renderItem(link, index, depth + 1)
188
- )}
189
- </ul>
190
- ) : null}
440
+ {Array.isArray(link.children) && link.children.length ? (
441
+ <ul className={cx('Nav-subItems')}>
442
+ {link.children.map((link, index) =>
443
+ this.renderItem(link, index, depth + 1)
444
+ )}
445
+ </ul>
446
+ ) : null}
447
+ </Badge>
191
448
  </li>
192
449
  );
193
450
  }
194
451
 
195
452
  render(): JSX.Element {
196
453
  const {className, stacked, classnames: cx, links, loading} = this.props;
197
-
454
+ const {dropIndicator} = this.state;
198
455
  return (
199
- <ul
200
- className={cx('Nav', className, stacked ? 'Nav--stacked' : 'Nav--tabs')}
201
- >
202
- {Array.isArray(links)
203
- ? links.map((item, index) => this.renderItem(item, index))
204
- : null}
205
-
206
- <Spinner show={!!loading} overlay icon="reload" />
207
- </ul>
456
+ <div className={cx('Nav')}>
457
+ <ul
458
+ className={cx(
459
+ 'Nav-list',
460
+ className,
461
+ stacked ? 'Nav-list--stacked' : 'Nav-list--tabs'
462
+ )}
463
+ >
464
+ {Array.isArray(links)
465
+ ? links.map((item, index) => this.renderItem(item, index))
466
+ : null}
467
+
468
+ <Spinner show={!!loading} overlay icon="reload" />
469
+ </ul>
470
+ {dropIndicator ? (
471
+ <div className={cx('Nav-dropIndicator')} style={dropIndicator} />
472
+ ) : null}
473
+ </div>
208
474
  );
209
475
  }
210
476
  }
@@ -218,7 +484,7 @@ const ConditionBuilderWithRemoteOptions = withRemoteConfig({
218
484
  : config.links || config.options || config.items || config.rows;
219
485
 
220
486
  if (!Array.isArray(links)) {
221
- throw new Error('payload.data.options is not array.');
487
+ throw new Error('payload.data.options is not array.');
222
488
  }
223
489
 
224
490
  return links;
@@ -253,7 +519,8 @@ const ConditionBuilderWithRemoteOptions = withRemoteConfig({
253
519
  link.hasOwnProperty('to') &&
254
520
  env &&
255
521
  env.isCurrentUrl(filter(link.to as string, data))
256
- ))
522
+ )),
523
+ __id: link.__id || guid()
257
524
  };
258
525
 
259
526
  item.unfolded =
@@ -310,12 +577,14 @@ const ConditionBuilderWithRemoteOptions = withRemoteConfig({
310
577
  data?: any;
311
578
  unfoldedField?: string;
312
579
  foldedField?: string;
580
+ reload?: any;
313
581
  }
314
582
  > {
315
583
  constructor(props: any) {
316
584
  super(props);
317
585
  this.toggleLink = this.toggleLink.bind(this);
318
586
  this.handleSelect = this.handleSelect.bind(this);
587
+ this.dragUpdate = this.dragUpdate.bind(this);
319
588
  }
320
589
 
321
590
  componentDidMount() {
@@ -332,7 +601,7 @@ const ConditionBuilderWithRemoteOptions = withRemoteConfig({
332
601
  }
333
602
  }
334
603
 
335
- toggleLink(target: Link) {
604
+ toggleLink(target: Link, forceFold?: boolean) {
336
605
  const {config, updateConfig, deferLoad} = this.props;
337
606
 
338
607
  if (target.defer && !target.loaded) {
@@ -343,7 +612,7 @@ const ConditionBuilderWithRemoteOptions = withRemoteConfig({
343
612
  target === link
344
613
  ? {
345
614
  ...link,
346
- unfolded: !link.unfolded
615
+ unfolded: forceFold ? false : !link.unfolded
347
616
  }
348
617
  : link
349
618
  ),
@@ -352,6 +621,69 @@ const ConditionBuilderWithRemoteOptions = withRemoteConfig({
352
621
  }
353
622
  }
354
623
 
624
+ async dragUpdate(dropInfo: IDropInfo) {
625
+ let links = this.props.config;
626
+ const {nodeId, dragLink, position} = dropInfo;
627
+ if (dragLink) {
628
+ // 删除原节点
629
+ const sourceIdx = findTreeIndex(
630
+ links,
631
+ link => link.__id === dragLink.__id
632
+ ) as number[];
633
+ links = spliceTree(links, sourceIdx, 1);
634
+
635
+ if (position === 'self') {
636
+ // 插入到对应节点的children中
637
+ mapTree(links, link => {
638
+ if (link.__id === nodeId) {
639
+ if (!link.children) {
640
+ link.children = [];
641
+ }
642
+ link.children.push(dragLink);
643
+ }
644
+ return link;
645
+ });
646
+ } else {
647
+ // 找到需要插入的节点
648
+ const idx = findTreeIndex(
649
+ links,
650
+ link => link.__id === nodeId
651
+ ) as number[];
652
+ // 插入节点之后
653
+ if (position === 'bottom') {
654
+ idx.push((idx.pop() as number) + 1);
655
+ }
656
+ links = spliceTree(links, idx, 0, dragLink);
657
+ }
658
+ }
659
+ this.props.updateConfig(links, 'update');
660
+ await this.saveOrder(
661
+ mapTree(links, (link: Link) => {
662
+ // 清除内部加的字段
663
+ for (let key in link) {
664
+ if (/^__.*$/.test(key)) {
665
+ delete link[key];
666
+ }
667
+ }
668
+ return link;
669
+ })
670
+ );
671
+ }
672
+
673
+ async saveOrder(links: Links) {
674
+ const {saveOrderApi, env, data, reload} = this.props;
675
+ if (saveOrderApi && isEffectiveApi(saveOrderApi)) {
676
+ await env.fetcher(
677
+ saveOrderApi as SchemaApi,
678
+ createObject(data, {data: links}),
679
+ {method: 'post'}
680
+ );
681
+ reload();
682
+ } else {
683
+ env.alert('NAV saveOrderApi is required!');
684
+ }
685
+ }
686
+
355
687
  handleSelect(link: Link) {
356
688
  const {onSelect, env, data} = this.props;
357
689
  if (onSelect && onSelect(link) === false) {
@@ -372,15 +704,15 @@ const ConditionBuilderWithRemoteOptions = withRemoteConfig({
372
704
 
373
705
  render() {
374
706
  const {loading, config, deferLoad, updateConfig, ...rest} = this.props;
375
-
376
707
  return (
377
708
  <ThemedNavigation
378
709
  {...rest}
379
710
  loading={loading}
380
- links={config || rest.links || []}
711
+ links={config || []}
381
712
  disabled={loading}
382
713
  onSelect={this.handleSelect}
383
714
  onToggle={this.toggleLink}
715
+ onDragUpdate={this.dragUpdate}
384
716
  />
385
717
  );
386
718
  }
@@ -438,10 +770,10 @@ export class NavigationRenderer extends React.Component<RendererProps> {
438
770
 
439
771
  render() {
440
772
  const {...rest} = this.props;
441
-
442
773
  return (
443
774
  <ConditionBuilderWithRemoteOptions
444
775
  {...rest}
776
+ reload={this.reload}
445
777
  remoteConfigRef={this.remoteConfigRef}
446
778
  />
447
779
  );
@@ -371,6 +371,8 @@ export default class Page extends React.Component<PageProps> {
371
371
  JSON.stringify(props.cssVars) !== JSON.stringify(prevProps.cssVars)
372
372
  ) {
373
373
  this.updateVarStyle();
374
+ } else if (props.defaultData !== prevProps.defaultData) {
375
+ store.reInitData(props.defaultData);
374
376
  }
375
377
  }
376
378
 
@@ -663,7 +665,7 @@ export default class Page extends React.Component<PageProps> {
663
665
  onAction: this.handleAction,
664
666
  onQuery: initApi ? this.handleQuery : undefined,
665
667
  onChange: this.handleChange,
666
- loading: store.loading
668
+ pageLoading: store.loading
667
669
  };
668
670
 
669
671
  const hasAside = Array.isArray(regions)