amis 1.4.2-beta.6 → 1.5.0

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 (488) hide show
  1. package/lib/Schema.d.ts +11 -3
  2. package/lib/Schema.js.map +1 -1
  3. package/lib/components/Alert2.d.ts +26 -21
  4. package/lib/components/Alert2.js +11 -4
  5. package/lib/components/Alert2.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.js +2 -2
  14. package/lib/components/Badge.js.map +2 -2
  15. package/lib/components/Button.js +1 -1
  16. package/lib/components/Button.js.map +2 -2
  17. package/lib/components/{ChainedCheckboxes.d.ts → ChainedSelection.d.ts} +267 -98
  18. package/lib/components/{ChainedCheckboxes.js → ChainedSelection.js} +30 -24
  19. package/lib/components/ChainedSelection.js.map +13 -0
  20. package/lib/components/Checkbox.d.ts +20 -20
  21. package/lib/components/Collapse.d.ts +51 -23
  22. package/lib/components/Collapse.js +70 -11
  23. package/lib/components/Collapse.js.map +2 -2
  24. package/lib/components/CollapseGroup.d.ts +88 -0
  25. package/lib/components/CollapseGroup.js +81 -0
  26. package/lib/components/CollapseGroup.js.map +13 -0
  27. package/lib/components/ColorPicker.d.ts +89 -85
  28. package/lib/components/ColorPicker.js +17 -4
  29. package/lib/components/ColorPicker.js.map +2 -2
  30. package/lib/components/DatePicker.d.ts +84 -84
  31. package/lib/components/DateRangePicker.d.ts +84 -84
  32. package/lib/components/Drawer.js +2 -2
  33. package/lib/components/Drawer.js.map +2 -2
  34. package/lib/components/Editor.d.ts +84 -84
  35. package/lib/components/GridNav.d.ts +52 -0
  36. package/lib/components/GridNav.js +123 -0
  37. package/lib/components/GridNav.js.map +13 -0
  38. package/lib/components/GroupedSelection.d.ts +907 -0
  39. package/lib/components/GroupedSelection.js +48 -0
  40. package/lib/components/GroupedSelection.js.map +13 -0
  41. package/lib/components/InputBox.d.ts +22 -21
  42. package/lib/components/InputBox.js +10 -2
  43. package/lib/components/InputBox.js.map +2 -2
  44. package/lib/components/Link.d.ts +29 -36
  45. package/lib/components/Link.js +14 -15
  46. package/lib/components/Link.js.map +2 -2
  47. package/lib/components/ListGroup.d.ts +21 -21
  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/NumberInput.d.ts +20 -20
  52. package/lib/components/Overlay.js +5 -0
  53. package/lib/components/Overlay.js.map +2 -2
  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/PopOver.d.ts +1 -0
  61. package/lib/components/PopOver.js +12 -1
  62. package/lib/components/PopOver.js.map +2 -2
  63. package/lib/components/Progress.d.ts +85 -0
  64. package/lib/components/Progress.js +81 -0
  65. package/lib/components/Progress.js.map +13 -0
  66. package/lib/components/Radios.d.ts +22 -21
  67. package/lib/components/Radios.js +1 -0
  68. package/lib/components/Radios.js.map +2 -2
  69. package/lib/components/Rating.d.ts +21 -21
  70. package/lib/components/ResultBox.d.ts +84 -84
  71. package/lib/components/ResultBox.js +10 -2
  72. package/lib/components/ResultBox.js.map +2 -2
  73. package/lib/components/SearchBox.d.ts +84 -84
  74. package/lib/components/Select.d.ts +245 -237
  75. package/lib/components/Select.js +25 -4
  76. package/lib/components/Select.js.map +2 -2
  77. package/lib/components/{Checkboxes.d.ts → Selection.d.ts} +273 -98
  78. package/lib/components/Selection.js +134 -0
  79. package/lib/components/Selection.js.map +13 -0
  80. package/lib/components/{TableCheckboxes.d.ts → TableSelection.d.ts} +266 -96
  81. package/lib/components/{TableCheckboxes.js → TableSelection.js} +30 -30
  82. package/lib/components/TableSelection.js.map +13 -0
  83. package/lib/components/Tabs.d.ts +20 -20
  84. package/lib/components/TabsTransfer.d.ts +84 -84
  85. package/lib/components/TabsTransfer.js +9 -9
  86. package/lib/components/TabsTransfer.js.map +2 -2
  87. package/lib/components/TabsTransferPicker.d.ts +489 -0
  88. package/lib/components/TabsTransferPicker.js +60 -0
  89. package/lib/components/TabsTransferPicker.js.map +13 -0
  90. package/lib/components/Toast.d.ts +90 -87
  91. package/lib/components/Toast.js +15 -5
  92. package/lib/components/Toast.js.map +2 -2
  93. package/lib/components/Transfer.d.ts +908 -274
  94. package/lib/components/Transfer.js +31 -24
  95. package/lib/components/Transfer.js.map +2 -2
  96. package/lib/components/TransferDropDown.d.ts +488 -0
  97. package/lib/components/TransferDropDown.js +59 -0
  98. package/lib/components/TransferDropDown.js.map +13 -0
  99. package/lib/components/TransferPicker.d.ts +493 -0
  100. package/lib/components/TransferPicker.js +60 -0
  101. package/lib/components/TransferPicker.js.map +13 -0
  102. package/lib/components/Tree.d.ts +115 -84
  103. package/lib/components/Tree.js +183 -30
  104. package/lib/components/Tree.js.map +2 -2
  105. package/lib/components/{TreeCheckboxes.d.ts → TreeSelection.d.ts} +269 -99
  106. package/lib/components/{TreeCheckboxes.js → TreeSelection.js} +36 -32
  107. package/lib/components/TreeSelection.js.map +13 -0
  108. package/lib/components/condition-builder/Field.js +4 -2
  109. package/lib/components/condition-builder/Field.js.map +2 -2
  110. package/lib/components/condition-builder/Func.js +2 -2
  111. package/lib/components/condition-builder/Func.js.map +2 -2
  112. package/lib/components/condition-builder/InputSwitch.js +2 -2
  113. package/lib/components/condition-builder/InputSwitch.js.map +2 -2
  114. package/lib/components/condition-builder/Item.js +3 -3
  115. package/lib/components/condition-builder/Item.js.map +2 -2
  116. package/lib/components/icons.js +10 -0
  117. package/lib/components/icons.js.map +2 -2
  118. package/lib/components/index.d.ts +8 -8
  119. package/lib/components/index.js +16 -16
  120. package/lib/components/index.js.map +2 -2
  121. package/lib/envOverwrite.d.ts +1 -1
  122. package/lib/envOverwrite.js +24 -9
  123. package/lib/envOverwrite.js.map +2 -2
  124. package/lib/factory.d.ts +15 -1
  125. package/lib/factory.js +35 -6
  126. package/lib/factory.js.map +2 -2
  127. package/lib/helper.css.map +1 -1
  128. package/lib/hooks/index.d.ts +5 -0
  129. package/lib/hooks/index.js +14 -0
  130. package/lib/hooks/index.js.map +13 -0
  131. package/lib/hooks/use-set-state.d.ts +2 -0
  132. package/lib/hooks/use-set-state.js +15 -0
  133. package/lib/hooks/use-set-state.js.map +13 -0
  134. package/lib/hooks/use-touch.d.ts +16 -0
  135. package/lib/hooks/use-touch.js +73 -0
  136. package/lib/hooks/use-touch.js.map +13 -0
  137. package/lib/hooks/use-update-effect.d.ts +3 -0
  138. package/lib/hooks/use-update-effect.js +17 -0
  139. package/lib/hooks/use-update-effect.js.map +13 -0
  140. package/lib/icons/alert-danger.js +7 -0
  141. package/lib/icons/alert-info.js +7 -0
  142. package/lib/icons/alert-success.js +7 -0
  143. package/lib/icons/alert-warning.js +7 -0
  144. package/lib/icons/download.js +7 -0
  145. package/lib/icons/drag-bar.js +10 -3
  146. package/lib/index.d.ts +5 -0
  147. package/lib/index.js +6 -1
  148. package/lib/index.js.map +2 -2
  149. package/lib/locale/de-DE.js +2 -0
  150. package/lib/locale/de-DE.js.map +2 -2
  151. package/lib/locale/en-US.js +3 -0
  152. package/lib/locale/en-US.js.map +2 -2
  153. package/lib/locale/zh-CN.js +5 -2
  154. package/lib/locale/zh-CN.js.map +2 -2
  155. package/lib/renderers/Action.d.ts +10 -5
  156. package/lib/renderers/Action.js +23 -5
  157. package/lib/renderers/Action.js.map +2 -2
  158. package/lib/renderers/Alert.d.ts +21 -1
  159. package/lib/renderers/Alert.js.map +2 -2
  160. package/lib/renderers/AnchorNav.d.ts +1 -0
  161. package/lib/renderers/AnchorNav.js +2 -2
  162. package/lib/renderers/AnchorNav.js.map +2 -2
  163. package/lib/renderers/Avatar.js +3 -3
  164. package/lib/renderers/Avatar.js.map +2 -2
  165. package/lib/renderers/Breadcrumb.js +1 -1
  166. package/lib/renderers/Breadcrumb.js.map +2 -2
  167. package/lib/renderers/CRUD.d.ts +5 -0
  168. package/lib/renderers/CRUD.js +25 -4
  169. package/lib/renderers/CRUD.js.map +2 -2
  170. package/lib/renderers/Card.d.ts +5 -0
  171. package/lib/renderers/Card.js +34 -23
  172. package/lib/renderers/Card.js.map +2 -2
  173. package/lib/renderers/Collapse.d.ts +25 -20
  174. package/lib/renderers/Collapse.js +10 -72
  175. package/lib/renderers/Collapse.js.map +2 -2
  176. package/lib/renderers/CollapseGroup.d.ts +42 -0
  177. package/lib/renderers/CollapseGroup.js +33 -0
  178. package/lib/renderers/CollapseGroup.js.map +13 -0
  179. package/lib/renderers/Form/ConditionBuilder.js +2 -2
  180. package/lib/renderers/Form/ConditionBuilder.js.map +2 -2
  181. package/lib/renderers/Form/DiffEditor.d.ts +4 -3
  182. package/lib/renderers/Form/Editor.d.ts +3 -2
  183. package/lib/renderers/Form/InputCity.d.ts +84 -84
  184. package/lib/renderers/Form/InputCity.js +7 -6
  185. package/lib/renderers/Form/InputCity.js.map +2 -2
  186. package/lib/renderers/Form/InputColor.d.ts +86 -85
  187. package/lib/renderers/Form/InputColor.js +1 -1
  188. package/lib/renderers/Form/InputColor.js.map +2 -2
  189. package/lib/renderers/Form/InputFile.d.ts +6 -0
  190. package/lib/renderers/Form/InputFile.js +28 -8
  191. package/lib/renderers/Form/InputFile.js.map +2 -2
  192. package/lib/renderers/Form/InputImage.js +11 -4
  193. package/lib/renderers/Form/InputImage.js.map +2 -2
  194. package/lib/renderers/Form/Item.d.ts +1 -1
  195. package/lib/renderers/Form/Item.js +2 -1
  196. package/lib/renderers/Form/Item.js.map +2 -2
  197. package/lib/renderers/Form/Options.js +25 -4
  198. package/lib/renderers/Form/Options.js.map +2 -2
  199. package/lib/renderers/Form/Select.d.ts +42 -4
  200. package/lib/renderers/Form/Select.js +37 -3
  201. package/lib/renderers/Form/Select.js.map +2 -2
  202. package/lib/renderers/Form/TabsTransferPicker.d.ts +48 -0
  203. package/lib/renderers/Form/TabsTransferPicker.js +29 -0
  204. package/lib/renderers/Form/TabsTransferPicker.js.map +13 -0
  205. package/lib/renderers/Form/Transfer.js +18 -3
  206. package/lib/renderers/Form/Transfer.js.map +2 -2
  207. package/lib/renderers/Form/TransferPicker.d.ts +52 -0
  208. package/lib/renderers/Form/TransferPicker.js +43 -0
  209. package/lib/renderers/Form/TransferPicker.js.map +13 -0
  210. package/lib/renderers/Form/TreeSelect.js +2 -2
  211. package/lib/renderers/Form/TreeSelect.js.map +2 -2
  212. package/lib/renderers/Form/index.d.ts +5 -0
  213. package/lib/renderers/Form/index.js +5 -3
  214. package/lib/renderers/Form/index.js.map +2 -2
  215. package/lib/renderers/Form/wrapControl.js +13 -1
  216. package/lib/renderers/Form/wrapControl.js.map +2 -2
  217. package/lib/renderers/GridNav.d.ts +99 -0
  218. package/lib/renderers/GridNav.js +82 -0
  219. package/lib/renderers/GridNav.js.map +13 -0
  220. package/lib/renderers/IFrame.js +1 -3
  221. package/lib/renderers/IFrame.js.map +2 -2
  222. package/lib/renderers/Image.js +7 -5
  223. package/lib/renderers/Image.js.map +2 -2
  224. package/lib/renderers/Json.d.ts +4 -0
  225. package/lib/renderers/Json.js +4 -13
  226. package/lib/renderers/Json.js.map +2 -2
  227. package/lib/renderers/Link.d.ts +4 -2
  228. package/lib/renderers/Link.js +15 -8
  229. package/lib/renderers/Link.js.map +2 -2
  230. package/lib/renderers/List.js +1 -1
  231. package/lib/renderers/List.js.map +2 -2
  232. package/lib/renderers/Nav.d.ts +21 -21
  233. package/lib/renderers/Nav.js +37 -19
  234. package/lib/renderers/Nav.js.map +2 -2
  235. package/lib/renderers/Page.d.ts +18 -0
  236. package/lib/renderers/Page.js +53 -9
  237. package/lib/renderers/Page.js.map +2 -2
  238. package/lib/renderers/Portlet.d.ts +125 -0
  239. package/lib/renderers/Portlet.js +156 -0
  240. package/lib/renderers/Portlet.js.map +13 -0
  241. package/lib/renderers/Progress.d.ts +23 -3
  242. package/lib/renderers/Progress.js +15 -19
  243. package/lib/renderers/Progress.js.map +2 -2
  244. package/lib/renderers/Property.js +1 -1
  245. package/lib/renderers/Property.js.map +2 -2
  246. package/lib/renderers/Table/ColumnToggler.js +1 -1
  247. package/lib/renderers/Table/ColumnToggler.js.map +2 -2
  248. package/lib/renderers/Table/TableContent.d.ts +4 -1
  249. package/lib/renderers/Table/TableContent.js +21 -1
  250. package/lib/renderers/Table/TableContent.js.map +2 -2
  251. package/lib/renderers/Table/index.d.ts +5 -1
  252. package/lib/renderers/Table/index.js +65 -30
  253. package/lib/renderers/Table/index.js.map +2 -2
  254. package/lib/renderers/Tabs.js +9 -1
  255. package/lib/renderers/Tabs.js.map +2 -2
  256. package/lib/renderers/WebComponent.js +1 -1
  257. package/lib/renderers/WebComponent.js.map +2 -2
  258. package/lib/store/combo.d.ts +2 -2
  259. package/lib/store/form.d.ts +1 -1
  260. package/lib/store/form.js +3 -5
  261. package/lib/store/form.js.map +2 -2
  262. package/lib/store/formItem.js +44 -4
  263. package/lib/store/formItem.js.map +2 -2
  264. package/lib/store/table.d.ts +3 -2
  265. package/lib/store/table.js +35 -12
  266. package/lib/store/table.js.map +2 -2
  267. package/lib/themes/ang-ie11.css +934 -222
  268. package/lib/themes/ang.css +934 -222
  269. package/lib/themes/ang.css.map +1 -1
  270. package/lib/themes/antd-ie11.css +934 -222
  271. package/lib/themes/antd.css +934 -222
  272. package/lib/themes/antd.css.map +1 -1
  273. package/lib/themes/cxd-ie11.css +970 -260
  274. package/lib/themes/cxd.css +970 -260
  275. package/lib/themes/cxd.css.map +1 -1
  276. package/lib/themes/dark-ie11.css +934 -222
  277. package/lib/themes/dark.css +934 -222
  278. package/lib/themes/dark.css.map +1 -1
  279. package/lib/themes/default.css +970 -260
  280. package/lib/themes/default.css.map +1 -1
  281. package/lib/types.d.ts +38 -1
  282. package/lib/types.js +0 -5
  283. package/lib/types.js.map +2 -2
  284. package/lib/utils/api.d.ts +3 -2
  285. package/lib/utils/api.js +90 -17
  286. package/lib/utils/api.js.map +2 -2
  287. package/lib/utils/dom.d.ts +4 -0
  288. package/lib/utils/dom.js +11 -1
  289. package/lib/utils/dom.js.map +2 -2
  290. package/lib/utils/helper.d.ts +12 -23
  291. package/lib/utils/helper.js +62 -166
  292. package/lib/utils/helper.js.map +2 -2
  293. package/lib/utils/tpl-builtin.d.ts +2 -20
  294. package/lib/utils/tpl-builtin.js +25 -743
  295. package/lib/utils/tpl-builtin.js.map +2 -2
  296. package/lib/utils/tpl.js +24 -0
  297. package/lib/utils/tpl.js.map +2 -2
  298. package/package.json +5 -2
  299. package/schema.json +3966 -1263
  300. package/scss/_mixins.scss +1 -3
  301. package/scss/_properties.scss +42 -13
  302. package/scss/base/_common.scss +3 -0
  303. package/scss/base/_normalize.scss +2 -0
  304. package/scss/components/_alert.scss +28 -5
  305. package/scss/components/_anchor-nav.scss +89 -29
  306. package/scss/components/_button.scss +12 -0
  307. package/scss/components/_card.scss +9 -15
  308. package/scss/components/_collapse-group.scss +15 -0
  309. package/scss/components/_collapse.scss +48 -23
  310. package/scss/components/_grid-nav.scss +128 -0
  311. package/scss/components/_images.scss +1 -0
  312. package/scss/components/_input-box.scss +1 -0
  313. package/scss/components/_nav.scss +2 -7
  314. package/scss/components/_page.scss +35 -2
  315. package/scss/components/_picker-columns.scss +124 -0
  316. package/scss/components/_popover.scss +13 -0
  317. package/scss/components/_portlet.scss +51 -0
  318. package/scss/components/_progress.scss +141 -33
  319. package/scss/components/_result-box.scss +1 -0
  320. package/scss/components/_spinner.scss +5 -4
  321. package/scss/components/_status.scss +1 -1
  322. package/scss/components/_table.scss +32 -0
  323. package/scss/components/_toast.scss +41 -11
  324. package/scss/components/form/_checks.scss +0 -351
  325. package/scss/components/form/_color.scss +32 -3
  326. package/scss/components/form/_combo.scss +4 -0
  327. package/scss/components/form/_fieldset.scss +6 -1
  328. package/scss/components/form/_file.scss +11 -0
  329. package/scss/components/form/_form.scss +48 -0
  330. package/scss/components/form/_selection.scss +354 -0
  331. package/scss/components/form/_transfer.scss +76 -18
  332. package/scss/components/form/_tree.scss +42 -0
  333. package/scss/themes/_common.scss +6 -0
  334. package/scss/themes/_cxd-variables.scss +13 -6
  335. package/scss/themes/cxd.scss +19 -20
  336. package/sdk/ang-ie11.css +1065 -246
  337. package/sdk/ang.css +1069 -230
  338. package/sdk/antd-ie11.css +1068 -249
  339. package/sdk/antd.css +1069 -230
  340. package/sdk/charts.js +17 -17
  341. package/sdk/color-picker.js +65 -69
  342. package/sdk/cropperjs.js +3 -3
  343. package/sdk/cxd-ie11.css +1081 -268
  344. package/sdk/cxd.css +1116 -279
  345. package/sdk/dark-ie11.css +1069 -250
  346. package/sdk/dark.css +1069 -230
  347. package/sdk/exceljs.js +1 -1
  348. package/sdk/helper.css.map +1 -1
  349. package/sdk/iconfont.svg +2513 -0
  350. package/sdk/iconfont.ttf +0 -0
  351. package/sdk/iconfont.woff +0 -0
  352. package/sdk/locale/de-DE.js +2 -0
  353. package/sdk/markdown.js +69 -69
  354. package/sdk/papaparse.js +1 -1
  355. package/sdk/renderers/Form/CityDB.js +1 -1
  356. package/sdk/rest.js +20 -28
  357. package/sdk/rich-text.js +62 -62
  358. package/sdk/sdk-ie11.css +1081 -268
  359. package/sdk/sdk.css +1116 -279
  360. package/sdk/sdk.js +1371 -1189
  361. package/sdk/thirds/hls.js/hls.js +18 -18
  362. package/sdk/thirds/mpegts.js/mpegts.js +2 -2
  363. package/sdk/tinymce.js +57 -57
  364. package/src/Schema.ts +19 -1
  365. package/src/components/Alert2.tsx +32 -4
  366. package/src/components/AnchorNav.tsx +15 -4
  367. package/src/components/{AssociatedCheckboxes.tsx → AssociatedSelection.tsx} +43 -37
  368. package/src/components/Badge.tsx +3 -3
  369. package/src/components/Button.tsx +1 -0
  370. package/src/components/{ChainedCheckboxes.tsx → ChainedSelection.tsx} +57 -40
  371. package/src/components/Collapse.tsx +139 -20
  372. package/src/components/CollapseGroup.tsx +130 -0
  373. package/src/components/ColorPicker.tsx +32 -10
  374. package/src/components/Drawer.tsx +8 -6
  375. package/src/components/GridNav.tsx +233 -0
  376. package/src/components/{ListCheckboxes.tsx → GroupedSelection.tsx} +26 -21
  377. package/src/components/InputBox.tsx +10 -9
  378. package/src/components/Link.tsx +28 -37
  379. package/src/components/ModalManager.ts +1 -1
  380. package/src/components/Overlay.tsx +6 -0
  381. package/src/components/PickerColumn.tsx +429 -0
  382. package/src/components/PickerContainer.tsx +128 -0
  383. package/src/components/PopOver.tsx +15 -1
  384. package/src/components/Progress.tsx +140 -0
  385. package/src/components/Radios.tsx +3 -8
  386. package/src/components/ResultBox.tsx +9 -9
  387. package/src/components/Select.tsx +57 -5
  388. package/src/components/{Checkboxes.tsx → Selection.tsx} +75 -21
  389. package/src/components/{TableCheckboxes.tsx → TableSelection.tsx} +46 -25
  390. package/src/components/TabsTransfer.tsx +13 -7
  391. package/src/components/TabsTransferPicker.tsx +85 -0
  392. package/src/components/Toast.tsx +48 -21
  393. package/src/components/Transfer.tsx +71 -50
  394. package/src/components/TransferDropDown.tsx +120 -0
  395. package/src/components/TransferPicker.tsx +91 -0
  396. package/src/components/Tree.tsx +194 -8
  397. package/src/components/{TreeCheckboxes.tsx → TreeSelection.tsx} +33 -26
  398. package/src/components/condition-builder/Field.tsx +7 -5
  399. package/src/components/condition-builder/Func.tsx +3 -3
  400. package/src/components/condition-builder/InputSwitch.tsx +3 -3
  401. package/src/components/condition-builder/Item.tsx +5 -12
  402. package/src/components/icons.tsx +10 -0
  403. package/src/components/index.tsx +13 -13
  404. package/src/envOverwrite.ts +20 -8
  405. package/src/factory.tsx +70 -9
  406. package/src/hooks/index.ts +5 -0
  407. package/src/hooks/use-set-state.ts +19 -0
  408. package/src/hooks/use-touch.ts +100 -0
  409. package/src/hooks/use-update-effect.ts +16 -0
  410. package/src/icons/alert-danger.svg +1 -0
  411. package/src/icons/alert-info.svg +1 -0
  412. package/src/icons/alert-success.svg +1 -0
  413. package/src/icons/alert-warning.svg +1 -0
  414. package/src/icons/download.svg +4 -0
  415. package/src/icons/drag-bar.svg +12 -6
  416. package/src/index.tsx +5 -0
  417. package/src/locale/de-DE.ts +2 -0
  418. package/src/locale/en-US.ts +3 -0
  419. package/src/locale/zh-CN.ts +5 -2
  420. package/src/renderers/Action.tsx +58 -3
  421. package/src/renderers/Alert.tsx +31 -1
  422. package/src/renderers/AnchorNav.tsx +4 -0
  423. package/src/renderers/Avatar.tsx +8 -4
  424. package/src/renderers/Breadcrumb.tsx +5 -1
  425. package/src/renderers/CRUD.tsx +29 -3
  426. package/src/renderers/Card.tsx +76 -36
  427. package/src/renderers/Collapse.tsx +70 -115
  428. package/src/renderers/CollapseGroup.tsx +80 -0
  429. package/src/renderers/Form/ConditionBuilder.tsx +2 -2
  430. package/src/renderers/Form/InputCity.tsx +4 -8
  431. package/src/renderers/Form/InputColor.tsx +4 -2
  432. package/src/renderers/Form/InputFile.tsx +65 -24
  433. package/src/renderers/Form/InputImage.tsx +11 -3
  434. package/src/renderers/Form/Item.tsx +3 -2
  435. package/src/renderers/Form/Options.tsx +29 -3
  436. package/src/renderers/Form/Select.tsx +162 -21
  437. package/src/renderers/Form/TabsTransferPicker.tsx +123 -0
  438. package/src/renderers/Form/Transfer.tsx +19 -4
  439. package/src/renderers/Form/TransferPicker.tsx +145 -0
  440. package/src/renderers/Form/TreeSelect.tsx +25 -0
  441. package/src/renderers/Form/index.tsx +15 -2
  442. package/src/renderers/Form/wrapControl.tsx +26 -1
  443. package/src/renderers/GridNav.tsx +204 -0
  444. package/src/renderers/IFrame.tsx +2 -4
  445. package/src/renderers/Image.tsx +19 -15
  446. package/src/renderers/Json.tsx +9 -9
  447. package/src/renderers/Link.tsx +29 -16
  448. package/src/renderers/List.tsx +1 -1
  449. package/src/renderers/Nav.tsx +105 -56
  450. package/src/renderers/Page.tsx +62 -1
  451. package/src/renderers/Portlet.tsx +423 -0
  452. package/src/renderers/Progress.tsx +56 -38
  453. package/src/renderers/Property.tsx +6 -4
  454. package/src/renderers/Table/ColumnToggler.tsx +1 -1
  455. package/src/renderers/Table/TableContent.tsx +40 -2
  456. package/src/renderers/Table/index.tsx +88 -43
  457. package/src/renderers/Tabs.tsx +9 -1
  458. package/src/renderers/WebComponent.tsx +2 -2
  459. package/src/store/form.ts +3 -9
  460. package/src/store/formItem.ts +94 -2
  461. package/src/store/table.ts +55 -14
  462. package/src/types.ts +58 -1
  463. package/src/utils/api.ts +120 -26
  464. package/src/utils/dom.tsx +12 -0
  465. package/src/utils/helper.ts +55 -185
  466. package/src/utils/tpl-builtin.ts +40 -866
  467. package/src/utils/tpl.ts +33 -0
  468. package/tsconfig-for-declaration.json +1 -1
  469. package/dump.rdb +0 -0
  470. package/lib/components/AssociatedCheckboxes.d.ts +0 -762
  471. package/lib/components/AssociatedCheckboxes.js +0 -90
  472. package/lib/components/AssociatedCheckboxes.js.map +0 -13
  473. package/lib/components/ChainedCheckboxes.js.map +0 -13
  474. package/lib/components/Checkboxes.js +0 -101
  475. package/lib/components/Checkboxes.js.map +0 -13
  476. package/lib/components/ListCheckboxes.d.ts +0 -739
  477. package/lib/components/ListCheckboxes.js +0 -48
  478. package/lib/components/ListCheckboxes.js.map +0 -13
  479. package/lib/components/ListRadios.d.ts +0 -763
  480. package/lib/components/ListRadios.js +0 -86
  481. package/lib/components/ListRadios.js.map +0 -13
  482. package/lib/components/TableCheckboxes.js.map +0 -13
  483. package/lib/components/TreeCheckboxes.js.map +0 -13
  484. package/lib/components/TreeRadios.d.ts +0 -838
  485. package/lib/components/TreeRadios.js +0 -116
  486. package/lib/components/TreeRadios.js.map +0 -13
  487. package/src/components/ListRadios.tsx +0 -159
  488. package/src/components/TreeRadios.tsx +0 -202
@@ -0,0 +1,423 @@
1
+ import React from 'react';
2
+ import mapValues from 'lodash/mapValues';
3
+
4
+ import {Tabs as CTabs, Tab} from '../components/Tabs';
5
+ import {Renderer, RendererProps} from '../factory';
6
+ import {resolveVariable} from '../utils/tpl-builtin';
7
+ import {str2AsyncFunction} from '../utils/api';
8
+ import {
9
+ isVisible,
10
+ autobind,
11
+ isDisabled,
12
+ isObject,
13
+ createObject
14
+ } from '../utils/helper';
15
+
16
+ import {filter} from '../utils/tpl';
17
+ import {
18
+ SchemaTpl,
19
+ SchemaClassName,
20
+ BaseSchema,
21
+ SchemaCollection,
22
+ SchemaIcon
23
+ } from '../Schema';
24
+
25
+ import {ActionSchema} from './Action';
26
+
27
+ /**
28
+ * 栏目容器渲染器。
29
+ * 文档:https://baidu.gitee.io/amis/docs/components/portlet
30
+ */
31
+ export interface PortletTabSchema extends Omit<BaseSchema, 'type'> {
32
+ /**
33
+ * Tab 标题
34
+ */
35
+ title?: string;
36
+
37
+ /**
38
+ * 内容
39
+ * @deprecated 用 body 属性
40
+ */
41
+ tab?: SchemaCollection;
42
+
43
+ /**
44
+ * 可以在右侧配置点其他功能按钮,随着tab切换而切换
45
+ */
46
+ toolbar?: Array<ActionSchema>;
47
+
48
+ /**
49
+ * 内容
50
+ */
51
+ body?: SchemaCollection;
52
+
53
+ /**
54
+ * 按钮图标
55
+ */
56
+ icon?: SchemaIcon;
57
+
58
+ iconPosition?: 'left' | 'right';
59
+
60
+ /**
61
+ * 设置以后内容每次都会重新渲染
62
+ */
63
+ reload?: boolean;
64
+
65
+ /**
66
+ * 点开时才加载卡片内容
67
+ */
68
+ mountOnEnter?: boolean;
69
+
70
+ /**
71
+ * 卡片隐藏就销毁卡片节点。
72
+ */
73
+ unmountOnExit?: boolean;
74
+ }
75
+
76
+ export interface PortletSchema extends Omit<BaseSchema, 'type'> {
77
+ /**
78
+ * 指定为 portlet 类型
79
+ */
80
+ type: 'portlet';
81
+
82
+ tabs: Array<PortletTabSchema>;
83
+
84
+ /**
85
+ * 关联已有数据,选项卡直接根据目标数据重复。
86
+ */
87
+ source?: string;
88
+
89
+ /**
90
+ * 类名
91
+ */
92
+ tabsClassName?: SchemaClassName;
93
+
94
+ /**
95
+ * 展示形式
96
+ */
97
+ tabsMode?: '' | 'line' | 'card' | 'radio' | 'vertical' | 'tiled';
98
+
99
+ /**
100
+ * 内容类名
101
+ */
102
+ contentClassName?: SchemaClassName;
103
+
104
+ /**
105
+ * 链接外层类名
106
+ */
107
+ linksClassName?: SchemaClassName;
108
+
109
+ /**
110
+ * 卡片是否只有在点开的时候加载?
111
+ */
112
+ mountOnEnter?: boolean;
113
+
114
+ /**
115
+ * 卡片隐藏的时候是否销毁卡片内容
116
+ */
117
+ unmountOnExit?: boolean;
118
+
119
+ /**
120
+ * 可以在右侧配置点其他功能按钮。不会随着tab切换
121
+ */
122
+ toolbar?: Array<ActionSchema>;
123
+
124
+ /**
125
+ * 是否支持溢出滚动
126
+ */
127
+ scrollable?: boolean;
128
+
129
+ /**
130
+ * header和内容是否展示分割线
131
+ */
132
+ divider?: boolean;
133
+
134
+ /**
135
+ * 标题右侧的描述
136
+ */
137
+ description?: SchemaTpl;
138
+
139
+ /**
140
+ * 隐藏头部
141
+ */
142
+ hideHeader?: boolean;
143
+
144
+ /**
145
+ * 自定义样式
146
+ */
147
+ style?:
148
+ | string
149
+ | {
150
+ [propName: string]: any;
151
+ };
152
+ }
153
+
154
+ export interface PortletProps
155
+ extends RendererProps,
156
+ Omit<PortletSchema, 'className' | 'contentClassName'> {
157
+ activeKey?: number;
158
+ tabRender?: (
159
+ tab: PortletTabSchema,
160
+ props: PortletProps,
161
+ index: number
162
+ ) => JSX.Element;
163
+ }
164
+
165
+ export interface PortletState {
166
+ activeKey?: number;
167
+ }
168
+
169
+ export class Portlet extends React.Component<PortletProps, PortletState> {
170
+ static defaultProps: Partial<PortletProps> = {
171
+ className: '',
172
+ mode: 'line',
173
+ divider: true
174
+ };
175
+ renderTab?: (
176
+ tab: PortletTabSchema,
177
+ props: PortletProps,
178
+ index: number
179
+ ) => JSX.Element;
180
+ constructor(props: PortletProps) {
181
+ super(props);
182
+
183
+ const activeKey = props.activeKey || 0;
184
+
185
+ this.state = {
186
+ activeKey
187
+ };
188
+ }
189
+
190
+ @autobind
191
+ handleSelect(key: number) {
192
+ const {onSelect, tabs} = this.props;
193
+ if (typeof key === 'number' && key < tabs.length) {
194
+ this.setState({
195
+ activeKey: key
196
+ });
197
+ }
198
+
199
+ if (typeof onSelect === 'string') {
200
+ const selectFunc = str2AsyncFunction(onSelect, 'key', 'props');
201
+ selectFunc && selectFunc(key, this.props);
202
+ } else if (typeof onSelect === 'function') {
203
+ onSelect(key, this.props);
204
+ }
205
+ }
206
+
207
+ renderToolbarItem(toolbar: Array<ActionSchema>) {
208
+ const {render} = this.props;
209
+ let actions: Array<JSX.Element> = [];
210
+ if (Array.isArray(toolbar)) {
211
+ toolbar.forEach((action, index) =>
212
+ actions.push(
213
+ render(
214
+ `toolbar/${index}`,
215
+ {
216
+ type: 'button',
217
+ level: 'link',
218
+ size: 'sm',
219
+ ...(action as any)
220
+ },
221
+ {
222
+ key: index
223
+ }
224
+ )
225
+ )
226
+ );
227
+ }
228
+ return actions;
229
+ }
230
+
231
+ renderToolbar() {
232
+ const {toolbar, classnames: cx, classPrefix: ns, tabs} = this.props;
233
+ const activeKey = this.state.activeKey;
234
+ let tabToolbar = null;
235
+ let tabToolbarTpl = null;
236
+ // tabs里的toolbar
237
+ const toolbarTpl = toolbar ? (
238
+ <div className={cx(`${ns}toolbar`)}>
239
+ {this.renderToolbarItem(toolbar)}
240
+ </div>
241
+ ) : null;
242
+
243
+ // tab里的toolbar
244
+ if (typeof activeKey !== 'undefined') {
245
+ tabToolbar = tabs[activeKey]!.toolbar;
246
+ tabToolbarTpl = tabToolbar ? (
247
+ <div className={cx(`${ns}tab-toolbar`)}>
248
+ {this.renderToolbarItem(tabToolbar)}
249
+ </div>
250
+ ) : null;
251
+ }
252
+
253
+ return toolbarTpl || tabToolbarTpl ? (
254
+ <div className={cx(`${ns}Portlet-toolbar`)}>
255
+ {toolbarTpl}
256
+ {tabToolbarTpl}
257
+ </div>
258
+ ) : null;
259
+ }
260
+
261
+ renderDesc() {
262
+ const {
263
+ description: descTpl,
264
+ render,
265
+ classnames: cx,
266
+ classPrefix: ns,
267
+ data
268
+ } = this.props;
269
+ const desc = filter(descTpl, data);
270
+ return desc ? (
271
+ <span className={cx(`${ns}Portlet-header-desc`)}>{desc}</span>
272
+ ) : null;
273
+ }
274
+
275
+ renderTabs() {
276
+ const {
277
+ classnames: cx,
278
+ classPrefix: ns,
279
+ tabsClassName,
280
+ contentClassName,
281
+ linksClassName,
282
+ tabRender,
283
+ render,
284
+ data,
285
+ mode: dMode,
286
+ tabsMode,
287
+ unmountOnExit,
288
+ source,
289
+ mountOnEnter,
290
+ scrollable,
291
+ divider
292
+ } = this.props;
293
+ const mode = tabsMode || dMode;
294
+ const arr = resolveVariable(source, data);
295
+
296
+ let tabs = this.props.tabs;
297
+ if (!tabs) {
298
+ return null;
299
+ }
300
+
301
+ tabs = Array.isArray(tabs) ? tabs : [tabs];
302
+ let children: Array<JSX.Element | null> = [];
303
+
304
+ const tabClassname = cx(`${ns}Portlet-tab`, tabsClassName, {
305
+ ['unactive-select']: tabs.length <= 1,
306
+ ['no-divider']: !divider
307
+ });
308
+ if (Array.isArray(arr)) {
309
+ arr.forEach((value, index) => {
310
+ const ctx = createObject(
311
+ data,
312
+ isObject(value) ? {index, ...value} : {item: value, index}
313
+ );
314
+
315
+ children.push(
316
+ ...tabs.map((tab, tabIndex) =>
317
+ isVisible(tab, ctx) ? (
318
+ <Tab
319
+ {...(tab as any)}
320
+ title={filter(tab.title, ctx)}
321
+ disabled={isDisabled(tab, ctx)}
322
+ key={`${index * 1000 + tabIndex}`}
323
+ eventKey={index * 1000 + tabIndex}
324
+ mountOnEnter={mountOnEnter}
325
+ unmountOnExit={
326
+ typeof tab.reload === 'boolean'
327
+ ? tab.reload
328
+ : typeof tab.unmountOnExit === 'boolean'
329
+ ? tab.unmountOnExit
330
+ : unmountOnExit
331
+ }
332
+ >
333
+ {render(
334
+ `item/${index}/${tabIndex}`,
335
+ (tab as any)?.type ? (tab as any) : tab.tab || tab.body,
336
+ {
337
+ data: ctx
338
+ }
339
+ )}
340
+ </Tab>
341
+ ) : null
342
+ )
343
+ );
344
+ });
345
+ } else {
346
+ children = tabs.map((tab, index) =>
347
+ isVisible(tab, data) ? (
348
+ <Tab
349
+ {...(tab as any)}
350
+ title={filter(tab.title, data)}
351
+ disabled={isDisabled(tab, data)}
352
+ key={index}
353
+ eventKey={index}
354
+ mountOnEnter={mountOnEnter}
355
+ unmountOnExit={
356
+ typeof tab.reload === 'boolean'
357
+ ? tab.reload
358
+ : typeof tab.unmountOnExit === 'boolean'
359
+ ? tab.unmountOnExit
360
+ : unmountOnExit
361
+ }
362
+ >
363
+ {this.renderTab
364
+ ? this.renderTab(tab, this.props, index)
365
+ : tabRender
366
+ ? tabRender(tab, this.props, index)
367
+ : render(
368
+ `tab/${index}`,
369
+ (tab as any)?.type ? (tab as any) : tab.tab || tab.body
370
+ )}
371
+ </Tab>
372
+ ) : null
373
+ );
374
+ }
375
+
376
+ return (
377
+ <CTabs
378
+ classPrefix={ns}
379
+ classnames={cx}
380
+ mode={mode}
381
+ className={tabClassname}
382
+ contentClassName={contentClassName}
383
+ linksClassName={linksClassName}
384
+ activeKey={this.state.activeKey}
385
+ onSelect={this.handleSelect}
386
+ toolbar={this.renderToolbar()}
387
+ additionBtns={this.renderDesc()}
388
+ scrollable={scrollable}
389
+ >
390
+ {children}
391
+ </CTabs>
392
+ );
393
+ }
394
+
395
+ render() {
396
+ const {
397
+ className,
398
+ data,
399
+ classnames: cx,
400
+ classPrefix: ns,
401
+ style,
402
+ hideHeader
403
+ } = this.props;
404
+ const portletClassname = cx(`${ns}Portlet`, className, {
405
+ ['no-header']: hideHeader
406
+ });
407
+ const styleVar =
408
+ typeof style === 'string'
409
+ ? resolveVariable(style, data) || {}
410
+ : mapValues(style, s => resolveVariable(s, data) || s);
411
+
412
+ return (
413
+ <div className={portletClassname} style={styleVar}>
414
+ {this.renderTabs()}
415
+ </div>
416
+ );
417
+ }
418
+ }
419
+
420
+ @Renderer({
421
+ type: 'portlet'
422
+ })
423
+ export class PortletRenderer extends Portlet {}
@@ -1,12 +1,11 @@
1
1
  import React from 'react';
2
2
  import {Renderer, RendererProps} from '../factory';
3
- import {ServiceStore, IServiceStore} from '../store/service';
4
- import {Api, SchemaNode, PlainObject} from '../types';
5
- import {filter} from '../utils/tpl';
6
3
  import cx from 'classnames';
7
4
  import {BaseSchema, SchemaClassName} from '../Schema';
8
- import {getPropValue} from '../utils/helper';
5
+ import {autobind, getPropValue, createObject} from '../utils/helper';
6
+ import {filter} from '../utils/tpl';
9
7
 
8
+ import Progress from '../components/Progress';
10
9
  /**
11
10
  * 进度展示控件。
12
11
  * 文档:https://baidu.gitee.io/amis/docs/components/progress
@@ -19,6 +18,11 @@ export interface ProgressSchema extends BaseSchema {
19
18
  */
20
19
  name?: string;
21
20
 
21
+ /**
22
+ * 进度条类型。
23
+ */
24
+ mode: 'line' | 'circle' | 'dashboard';
25
+
22
26
  /**
23
27
  * 进度条 CSS 类名
24
28
  */
@@ -32,7 +36,7 @@ export interface ProgressSchema extends BaseSchema {
32
36
  /**
33
37
  * 配置不通的值段,用不通的样式提示用户
34
38
  */
35
- map?: Array<SchemaClassName>;
39
+ map?: Array<string>;
36
40
 
37
41
  /**
38
42
  * 是否显示值
@@ -53,13 +57,28 @@ export interface ProgressSchema extends BaseSchema {
53
57
  * 是否显示动画(只有在开启的时候才能看出来)
54
58
  */
55
59
  animate?: boolean;
60
+
61
+ /**
62
+ * 圆形进度条线的宽度
63
+ */
64
+ strokeWidth?: number;
65
+ /**
66
+ * 仪表盘进度条缺口角度,可取值 0 ~ 295
67
+ */
68
+ gapDegree?: number;
69
+ /**
70
+ * 仪表盘进度条缺口位置
71
+ */
72
+ gapPosition?: 'top' | 'bottom' | 'left' | 'right';
73
+ /**
74
+ * 内容的模板函数
75
+ */
76
+ valueTpl?: string;
56
77
  }
57
78
 
58
79
  export interface ProgressProps
59
80
  extends RendererProps,
60
- Omit<ProgressSchema, 'type' | 'className'> {
61
- map: Array<SchemaClassName>;
62
- }
81
+ Omit<ProgressSchema, 'type' | 'className'> {}
63
82
 
64
83
  export class ProgressField extends React.Component<ProgressProps, object> {
65
84
  static defaultProps = {
@@ -67,20 +86,23 @@ export class ProgressField extends React.Component<ProgressProps, object> {
67
86
  progressClassName: '',
68
87
  progressBarClassName: '',
69
88
  map: ['bg-danger', 'bg-warning', 'bg-info', 'bg-success', 'bg-success'],
89
+ valueTpl: '${value}%',
70
90
  showLabel: true,
71
91
  stripe: false,
72
92
  animate: false
73
93
  };
74
94
 
75
- autoClassName(value: number) {
76
- const map = this.props.map;
77
- let index = Math.floor((value * map.length) / 100);
78
- index = Math.max(0, Math.min(map.length - 1, index));
79
- return map[index];
95
+ @autobind
96
+ format(value: number) {
97
+ const {valueTpl, render, data} = this.props;
98
+ return render(`progress-value`, valueTpl + '', {
99
+ data: createObject(data, {value})
100
+ });
80
101
  }
81
102
 
82
103
  render() {
83
104
  const {
105
+ mode,
84
106
  className,
85
107
  placeholder,
86
108
  progressClassName,
@@ -89,39 +111,35 @@ export class ProgressField extends React.Component<ProgressProps, object> {
89
111
  stripe,
90
112
  animate,
91
113
  showLabel,
114
+ strokeWidth,
115
+ gapDegree,
116
+ gapPosition,
92
117
  classnames: cx
93
118
  } = this.props;
94
119
 
95
120
  let value = getPropValue(this.props);
96
- let viewValue: React.ReactNode = (
97
- <span className="text-muted">{placeholder}</span>
98
- );
99
121
 
100
122
  if (/^\d*\.?\d+$/.test(value)) {
101
123
  value = parseFloat(value);
102
124
  }
103
-
104
- if (typeof value === 'number') {
105
- viewValue = [
106
- <div key="progress" className={cx('Progress', progressClassName)}>
107
- <div
108
- className={cx(
109
- 'Progress-bar',
110
- progressBarClassName || this.autoClassName(value),
111
- {'Progress-bar--stripe': stripe},
112
- {'Progress-bar--animate': animate}
113
- )}
114
- title={`${value}%`}
115
- style={{
116
- width: `${value}%`
117
- }}
118
- />
119
- </div>,
120
- showLabel ? <div key="value">{value}%</div> : null
121
- ];
122
- }
123
-
124
- return <span className={cx('ProgressField', className)}>{viewValue}</span>;
125
+ return (
126
+ <Progress
127
+ value={value}
128
+ type={mode}
129
+ map={map}
130
+ stripe={stripe}
131
+ animate={animate}
132
+ showLabel={showLabel}
133
+ placeholder={placeholder}
134
+ format={this.format}
135
+ strokeWidth={strokeWidth}
136
+ gapDegree={gapDegree}
137
+ gapPosition={gapPosition}
138
+ className={className}
139
+ progressClassName={progressClassName}
140
+ progressBarClassName={progressBarClassName}
141
+ />
142
+ );
125
143
  }
126
144
  }
127
145
 
@@ -5,8 +5,7 @@
5
5
  import React from 'react';
6
6
  import {Renderer, RendererProps} from '../factory';
7
7
  import {BaseSchema, SchemaExpression, SchemaObject, SchemaTpl} from '../Schema';
8
- import PopOver from './PopOver';
9
- import {resolveVariable} from '../utils/tpl-builtin';
8
+ import {resolveVariableAndFilter} from '../utils/tpl-builtin';
10
9
  import {visibilityFilter} from '../utils/helper';
11
10
 
12
11
  export type PropertyItemProps = {
@@ -119,11 +118,14 @@ export default class Property extends React.Component<PropertyProps, object> {
119
118
  */
120
119
  prepareRows() {
121
120
  const {column = 3, items, source, data} = this.props;
122
-
123
121
  const propertyItems =
124
122
  (items
125
123
  ? items
126
- : (resolveVariable(source, data) as Array<PropertyItem>)) || [];
124
+ : (resolveVariableAndFilter(
125
+ source,
126
+ data,
127
+ '| raw'
128
+ ) as Array<PropertyItem>)) || [];
127
129
 
128
130
  const rows: PropertyContent[][] = [];
129
131
 
@@ -360,7 +360,7 @@ export default class ColumnToggler extends React.Component<
360
360
  tooltipClassName={cx('ColumnToggler-tooltip')}
361
361
  placement="top"
362
362
  tooltip={column.label || ''}
363
- trigger={enableSorting ? 'click' : 'hover'}
363
+ trigger={enableSorting ? [] : 'hover'}
364
364
  key={column.index}
365
365
  >
366
366
  <li
@@ -1,11 +1,12 @@
1
1
  import React from 'react';
2
2
  import {ClassNamesFn} from '../../theme';
3
- import {IColumn, IRow} from '../../store/table';
3
+ import {IColumn, IRow, ITableStore} from '../../store/table';
4
4
  import {SchemaNode, Action} from '../../types';
5
5
  import {TableBody} from './TableBody';
6
6
  import {LocaleProps} from '../../locale';
7
7
  import {observer} from 'mobx-react';
8
8
  import {ActionSchema} from '../Action';
9
+ import ItemActionsWrapper from './ItemActionsWrapper';
9
10
 
10
11
  export interface TableContentProps extends LocaleProps {
11
12
  className?: string;
@@ -50,10 +51,45 @@ export interface TableContentProps extends LocaleProps {
50
51
  prefixRow?: Array<any>;
51
52
  affixRow?: Array<any>;
52
53
  itemAction?: ActionSchema;
54
+ itemActions?: Array<Action>;
55
+ store: ITableStore;
53
56
  }
54
57
 
55
58
  @observer
56
59
  export class TableContent extends React.Component<TableContentProps> {
60
+ renderItemActions() {
61
+ const {itemActions, render, store, classnames: cx} = this.props;
62
+ const finalActions = Array.isArray(itemActions)
63
+ ? itemActions.filter(action => !action.hiddenOnHover)
64
+ : [];
65
+
66
+ if (!finalActions.length) {
67
+ return null;
68
+ }
69
+
70
+ return (
71
+ <ItemActionsWrapper store={store} classnames={cx}>
72
+ <div className={cx('Table-itemActions')}>
73
+ {finalActions.map((action, index) =>
74
+ render(
75
+ `itemAction/${index}`,
76
+ {
77
+ ...(action as any),
78
+ isMenuItem: true
79
+ },
80
+ {
81
+ key: index,
82
+ item: store.hoverRow,
83
+ data: store.hoverRow!.locals,
84
+ rowIndex: store.hoverRow!.index
85
+ }
86
+ )
87
+ )}
88
+ </div>
89
+ </ItemActionsWrapper>
90
+ );
91
+ }
92
+
57
93
  render() {
58
94
  const {
59
95
  placeholder,
@@ -82,7 +118,8 @@ export class TableContent extends React.Component<TableContentProps> {
82
118
  locale,
83
119
  translate,
84
120
  itemAction,
85
- affixRow
121
+ affixRow,
122
+ store
86
123
  } = this.props;
87
124
 
88
125
  const tableClassName = cx('Table-table', this.props.tableClassName);
@@ -94,6 +131,7 @@ export class TableContent extends React.Component<TableContentProps> {
94
131
  className={cx('Table-content', className)}
95
132
  onScroll={onScroll}
96
133
  >
134
+ {store.hoverRow ? this.renderItemActions() : null}
97
135
  <table ref={tableRef} className={tableClassName}>
98
136
  <thead>
99
137
  {columnsGroup.length ? (