amis 1.4.2-beta.1 → 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 (381) hide show
  1. package/lib/Schema.d.ts +9 -2
  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/ColorPicker.d.ts +84 -84
  16. package/lib/components/DatePicker.d.ts +84 -84
  17. package/lib/components/DateRangePicker.d.ts +84 -84
  18. package/lib/components/Editor.d.ts +84 -84
  19. package/lib/components/GroupedSelection.d.ts +907 -0
  20. package/lib/components/GroupedSelection.js +48 -0
  21. package/lib/components/GroupedSelection.js.map +13 -0
  22. package/lib/components/Link.d.ts +29 -36
  23. package/lib/components/Link.js +14 -15
  24. package/lib/components/Link.js.map +2 -2
  25. package/lib/components/ListGroup.d.ts +21 -21
  26. package/lib/components/ModalManager.js +1 -1
  27. package/lib/components/ModalManager.js.map +2 -2
  28. package/lib/components/MonthRangePicker.d.ts +84 -84
  29. package/lib/components/NumberInput.d.ts +20 -20
  30. package/lib/components/PickerColumn.d.ts +514 -0
  31. package/lib/components/PickerColumn.js +279 -0
  32. package/lib/components/PickerColumn.js.map +13 -0
  33. package/lib/components/PickerContainer.d.ts +513 -0
  34. package/lib/components/PickerContainer.js +96 -0
  35. package/lib/components/PickerContainer.js.map +13 -0
  36. package/lib/components/Radios.d.ts +22 -21
  37. package/lib/components/Radios.js +1 -0
  38. package/lib/components/Radios.js.map +2 -2
  39. package/lib/components/Rating.d.ts +21 -21
  40. package/lib/components/ResultBox.d.ts +84 -84
  41. package/lib/components/SearchBox.d.ts +84 -84
  42. package/lib/components/SearchBox.js +4 -4
  43. package/lib/components/SearchBox.js.map +2 -2
  44. package/lib/components/Select.d.ts +245 -237
  45. package/lib/components/Select.js +25 -4
  46. package/lib/components/Select.js.map +2 -2
  47. package/lib/components/{Checkboxes.d.ts → Selection.d.ts} +273 -98
  48. package/lib/components/Selection.js +134 -0
  49. package/lib/components/Selection.js.map +13 -0
  50. package/lib/components/{TableCheckboxes.d.ts → TableSelection.d.ts} +266 -96
  51. package/lib/components/{TableCheckboxes.js → TableSelection.js} +30 -30
  52. package/lib/components/TableSelection.js.map +13 -0
  53. package/lib/components/Tabs.d.ts +20 -20
  54. package/lib/components/TabsTransfer.d.ts +84 -84
  55. package/lib/components/TabsTransfer.js +9 -9
  56. package/lib/components/TabsTransfer.js.map +2 -2
  57. package/lib/components/TabsTransferPicker.d.ts +489 -0
  58. package/lib/components/TabsTransferPicker.js +60 -0
  59. package/lib/components/TabsTransferPicker.js.map +13 -0
  60. package/lib/components/Transfer.d.ts +908 -274
  61. package/lib/components/Transfer.js +31 -24
  62. package/lib/components/Transfer.js.map +2 -2
  63. package/lib/components/TransferDropDown.d.ts +487 -0
  64. package/lib/components/TransferDropDown.js +59 -0
  65. package/lib/components/TransferDropDown.js.map +13 -0
  66. package/lib/components/TransferPicker.d.ts +489 -0
  67. package/lib/components/TransferPicker.js +60 -0
  68. package/lib/components/TransferPicker.js.map +13 -0
  69. package/lib/components/Tree.d.ts +84 -84
  70. package/lib/components/{TreeCheckboxes.d.ts → TreeSelection.d.ts} +269 -99
  71. package/lib/components/{TreeCheckboxes.js → TreeSelection.js} +36 -32
  72. package/lib/components/TreeSelection.js.map +13 -0
  73. package/lib/components/WithRemoteConfig.js +1 -1
  74. package/lib/components/WithRemoteConfig.js.map +2 -2
  75. package/lib/components/condition-builder/Field.js +5 -2
  76. package/lib/components/condition-builder/Field.js.map +2 -2
  77. package/lib/components/condition-builder/Func.js +2 -2
  78. package/lib/components/condition-builder/Func.js.map +2 -2
  79. package/lib/components/condition-builder/InputSwitch.js +2 -2
  80. package/lib/components/condition-builder/InputSwitch.js.map +2 -2
  81. package/lib/components/condition-builder/Item.js +3 -3
  82. package/lib/components/condition-builder/Item.js.map +2 -2
  83. package/lib/components/index.d.ts +8 -8
  84. package/lib/components/index.js +16 -16
  85. package/lib/components/index.js.map +2 -2
  86. package/lib/envOverwrite.js.map +2 -2
  87. package/lib/factory.d.ts +4 -0
  88. package/lib/factory.js +4 -2
  89. package/lib/factory.js.map +2 -2
  90. package/lib/helper.css.map +1 -1
  91. package/lib/hooks/index.d.ts +5 -0
  92. package/lib/hooks/index.js +14 -0
  93. package/lib/hooks/index.js.map +13 -0
  94. package/lib/hooks/use-set-state.d.ts +2 -0
  95. package/lib/hooks/use-set-state.js +15 -0
  96. package/lib/hooks/use-set-state.js.map +13 -0
  97. package/lib/hooks/use-touch.d.ts +16 -0
  98. package/lib/hooks/use-touch.js +73 -0
  99. package/lib/hooks/use-touch.js.map +13 -0
  100. package/lib/hooks/use-update-effect.d.ts +3 -0
  101. package/lib/hooks/use-update-effect.js +17 -0
  102. package/lib/hooks/use-update-effect.js.map +13 -0
  103. package/lib/index.d.ts +3 -0
  104. package/lib/index.js +4 -1
  105. package/lib/index.js.map +2 -2
  106. package/lib/locale/de-DE.js +2 -0
  107. package/lib/locale/de-DE.js.map +2 -2
  108. package/lib/locale/en-US.js +2 -0
  109. package/lib/locale/en-US.js.map +2 -2
  110. package/lib/locale/zh-CN.js +4 -2
  111. package/lib/locale/zh-CN.js.map +2 -2
  112. package/lib/renderers/Action.d.ts +4 -3
  113. package/lib/renderers/Action.js +17 -4
  114. package/lib/renderers/Action.js.map +2 -2
  115. package/lib/renderers/AnchorNav.d.ts +1 -0
  116. package/lib/renderers/AnchorNav.js +2 -2
  117. package/lib/renderers/AnchorNav.js.map +2 -2
  118. package/lib/renderers/Avatar.js +3 -3
  119. package/lib/renderers/Avatar.js.map +2 -2
  120. package/lib/renderers/Breadcrumb.js +1 -1
  121. package/lib/renderers/Breadcrumb.js.map +2 -2
  122. package/lib/renderers/CRUD.d.ts +9 -0
  123. package/lib/renderers/CRUD.js +24 -4
  124. package/lib/renderers/CRUD.js.map +2 -2
  125. package/lib/renderers/Card.d.ts +4 -0
  126. package/lib/renderers/Card.js +29 -23
  127. package/lib/renderers/Card.js.map +2 -2
  128. package/lib/renderers/Chart.js +1 -1
  129. package/lib/renderers/Chart.js.map +2 -2
  130. package/lib/renderers/Collapse.js +3 -2
  131. package/lib/renderers/Collapse.js.map +2 -2
  132. package/lib/renderers/DropDownButton.js +1 -1
  133. package/lib/renderers/DropDownButton.js.map +2 -2
  134. package/lib/renderers/Form/DiffEditor.d.ts +4 -3
  135. package/lib/renderers/Form/Editor.d.ts +3 -2
  136. package/lib/renderers/Form/InputCity.d.ts +84 -84
  137. package/lib/renderers/Form/InputCity.js +7 -6
  138. package/lib/renderers/Form/InputCity.js.map +2 -2
  139. package/lib/renderers/Form/InputColor.d.ts +84 -84
  140. package/lib/renderers/Form/InputFile.js +10 -4
  141. package/lib/renderers/Form/InputFile.js.map +2 -2
  142. package/lib/renderers/Form/InputImage.js +11 -4
  143. package/lib/renderers/Form/InputImage.js.map +2 -2
  144. package/lib/renderers/Form/Item.d.ts +1 -1
  145. package/lib/renderers/Form/Item.js.map +1 -1
  146. package/lib/renderers/Form/Options.js +13 -3
  147. package/lib/renderers/Form/Options.js.map +2 -2
  148. package/lib/renderers/Form/Select.d.ts +41 -4
  149. package/lib/renderers/Form/Select.js +23 -3
  150. package/lib/renderers/Form/Select.js.map +2 -2
  151. package/lib/renderers/Form/TabsTransferPicker.d.ts +48 -0
  152. package/lib/renderers/Form/TabsTransferPicker.js +29 -0
  153. package/lib/renderers/Form/TabsTransferPicker.js.map +13 -0
  154. package/lib/renderers/Form/Transfer.js +3 -2
  155. package/lib/renderers/Form/Transfer.js.map +2 -2
  156. package/lib/renderers/Form/TransferPicker.d.ts +48 -0
  157. package/lib/renderers/Form/TransferPicker.js +29 -0
  158. package/lib/renderers/Form/TransferPicker.js.map +13 -0
  159. package/lib/renderers/Form/TreeSelect.js +2 -2
  160. package/lib/renderers/Form/TreeSelect.js.map +2 -2
  161. package/lib/renderers/Form/index.js +1 -1
  162. package/lib/renderers/Form/index.js.map +2 -2
  163. package/lib/renderers/Form/wrapControl.js +13 -1
  164. package/lib/renderers/Form/wrapControl.js.map +2 -2
  165. package/lib/renderers/IFrame.js +1 -3
  166. package/lib/renderers/IFrame.js.map +2 -2
  167. package/lib/renderers/Json.d.ts +4 -0
  168. package/lib/renderers/Json.js +4 -13
  169. package/lib/renderers/Json.js.map +2 -2
  170. package/lib/renderers/Link.d.ts +4 -2
  171. package/lib/renderers/Link.js +15 -6
  172. package/lib/renderers/Link.js.map +2 -2
  173. package/lib/renderers/List.js +1 -1
  174. package/lib/renderers/List.js.map +2 -2
  175. package/lib/renderers/Mapping.d.ts +9 -2
  176. package/lib/renderers/Mapping.js +18 -6
  177. package/lib/renderers/Mapping.js.map +2 -2
  178. package/lib/renderers/Nav.d.ts +21 -21
  179. package/lib/renderers/Nav.js +39 -21
  180. package/lib/renderers/Nav.js.map +2 -2
  181. package/lib/renderers/Portlet.d.ts +125 -0
  182. package/lib/renderers/Portlet.js +156 -0
  183. package/lib/renderers/Portlet.js.map +13 -0
  184. package/lib/renderers/Property.js +2 -1
  185. package/lib/renderers/Property.js.map +2 -2
  186. package/lib/renderers/SearchBox.d.ts +6 -1
  187. package/lib/renderers/SearchBox.js +19 -5
  188. package/lib/renderers/SearchBox.js.map +2 -2
  189. package/lib/renderers/Table/TableContent.d.ts +4 -1
  190. package/lib/renderers/Table/TableContent.js +21 -1
  191. package/lib/renderers/Table/TableContent.js.map +2 -2
  192. package/lib/renderers/Table/index.d.ts +5 -1
  193. package/lib/renderers/Table/index.js +64 -29
  194. package/lib/renderers/Table/index.js.map +2 -2
  195. package/lib/renderers/Tabs.js +9 -1
  196. package/lib/renderers/Tabs.js.map +2 -2
  197. package/lib/renderers/WebComponent.js +1 -1
  198. package/lib/renderers/WebComponent.js.map +2 -2
  199. package/lib/store/combo.d.ts +2 -16
  200. package/lib/store/crud.js +3 -7
  201. package/lib/store/crud.js.map +2 -2
  202. package/lib/store/form.d.ts +1 -1
  203. package/lib/store/form.js +5 -6
  204. package/lib/store/form.js.map +2 -2
  205. package/lib/store/service.js +5 -4
  206. package/lib/store/service.js.map +2 -2
  207. package/lib/store/table.d.ts +2 -2
  208. package/lib/themes/ang-ie11.css +422 -149
  209. package/lib/themes/ang.css +422 -149
  210. package/lib/themes/ang.css.map +1 -1
  211. package/lib/themes/antd-ie11.css +422 -149
  212. package/lib/themes/antd.css +422 -149
  213. package/lib/themes/antd.css.map +1 -1
  214. package/lib/themes/cxd-ie11.css +456 -182
  215. package/lib/themes/cxd.css +456 -182
  216. package/lib/themes/cxd.css.map +1 -1
  217. package/lib/themes/dark-ie11.css +422 -149
  218. package/lib/themes/dark.css +422 -149
  219. package/lib/themes/dark.css.map +1 -1
  220. package/lib/themes/default.css +456 -182
  221. package/lib/themes/default.css.map +1 -1
  222. package/lib/types.d.ts +37 -0
  223. package/lib/types.js +0 -5
  224. package/lib/types.js.map +2 -2
  225. package/lib/utils/api.d.ts +3 -2
  226. package/lib/utils/api.js +28 -12
  227. package/lib/utils/api.js.map +2 -2
  228. package/lib/utils/dom.d.ts +4 -0
  229. package/lib/utils/dom.js +11 -1
  230. package/lib/utils/dom.js.map +2 -2
  231. package/lib/utils/helper.d.ts +2 -0
  232. package/lib/utils/helper.js +11 -2
  233. package/lib/utils/helper.js.map +2 -2
  234. package/lib/utils/icon.js +3 -0
  235. package/lib/utils/icon.js.map +2 -2
  236. package/package.json +1 -1
  237. package/schema.json +3038 -790
  238. package/scss/_mixins.scss +1 -3
  239. package/scss/_properties.scss +25 -1
  240. package/scss/base/_normalize.scss +2 -0
  241. package/scss/components/_anchor-nav.scss +88 -29
  242. package/scss/components/_card.scss +8 -14
  243. package/scss/components/_collapse.scss +16 -1
  244. package/scss/components/_mapping.scss +6 -0
  245. package/scss/components/_nav.scss +1 -1
  246. package/scss/components/_picker-columns.scss +123 -0
  247. package/scss/components/_popover.scss +17 -0
  248. package/scss/components/_portlet.scss +51 -0
  249. package/scss/components/_status.scss +1 -1
  250. package/scss/components/_table.scss +26 -0
  251. package/scss/components/form/_checks.scss +0 -351
  252. package/scss/components/form/_fieldset.scss +5 -1
  253. package/scss/components/form/_selection.scss +354 -0
  254. package/scss/components/form/_transfer.scss +75 -18
  255. package/scss/themes/_common.scss +4 -0
  256. package/scss/themes/_cxd-variables.scss +4 -1
  257. package/scss/themes/cxd.scss +16 -12
  258. package/sdk/ang-ie11.css +457 -152
  259. package/sdk/ang.css +480 -154
  260. package/sdk/antd-ie11.css +456 -151
  261. package/sdk/antd.css +480 -154
  262. package/sdk/charts.js +13 -13
  263. package/sdk/color-picker.js +65 -69
  264. package/sdk/cropperjs.js +2 -2
  265. package/sdk/cxd-ie11.css +496 -194
  266. package/sdk/cxd.css +517 -190
  267. package/sdk/dark-ie11.css +457 -152
  268. package/sdk/dark.css +480 -154
  269. package/sdk/exceljs.js +1 -1
  270. package/sdk/helper.css.map +1 -1
  271. package/sdk/locale/de-DE.js +2 -0
  272. package/sdk/markdown.js +69 -69
  273. package/sdk/papaparse.js +1 -1
  274. package/sdk/renderers/Form/CityDB.js +1 -1
  275. package/sdk/rest.js +20 -28
  276. package/sdk/rich-text.js +62 -62
  277. package/sdk/sdk-ie11.css +496 -194
  278. package/sdk/sdk.css +517 -190
  279. package/sdk/sdk.js +1268 -1236
  280. package/sdk/thirds/hls.js/hls.js +1 -1
  281. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  282. package/sdk/tinymce.js +57 -57
  283. package/src/Schema.ts +14 -0
  284. package/src/components/AnchorNav.tsx +15 -4
  285. package/src/components/{AssociatedCheckboxes.tsx → AssociatedSelection.tsx} +41 -37
  286. package/src/components/Badge.tsx +3 -3
  287. package/src/components/{ChainedCheckboxes.tsx → ChainedSelection.tsx} +57 -40
  288. package/src/components/{ListCheckboxes.tsx → GroupedSelection.tsx} +26 -21
  289. package/src/components/Link.tsx +28 -37
  290. package/src/components/ModalManager.ts +1 -1
  291. package/src/components/PickerColumn.tsx +429 -0
  292. package/src/components/PickerContainer.tsx +128 -0
  293. package/src/components/Radios.tsx +3 -8
  294. package/src/components/SearchBox.tsx +4 -5
  295. package/src/components/Select.tsx +57 -5
  296. package/src/components/{Checkboxes.tsx → Selection.tsx} +75 -21
  297. package/src/components/{TableCheckboxes.tsx → TableSelection.tsx} +46 -25
  298. package/src/components/TabsTransfer.tsx +13 -7
  299. package/src/components/TabsTransferPicker.tsx +85 -0
  300. package/src/components/Transfer.tsx +71 -50
  301. package/src/components/TransferDropDown.tsx +117 -0
  302. package/src/components/TransferPicker.tsx +84 -0
  303. package/src/components/{TreeCheckboxes.tsx → TreeSelection.tsx} +33 -26
  304. package/src/components/WithRemoteConfig.tsx +7 -2
  305. package/src/components/condition-builder/Field.tsx +5 -5
  306. package/src/components/condition-builder/Func.tsx +3 -3
  307. package/src/components/condition-builder/InputSwitch.tsx +3 -3
  308. package/src/components/condition-builder/Item.tsx +5 -12
  309. package/src/components/index.tsx +13 -13
  310. package/src/envOverwrite.ts +0 -1
  311. package/src/factory.tsx +18 -3
  312. package/src/hooks/index.ts +5 -0
  313. package/src/hooks/use-set-state.ts +19 -0
  314. package/src/hooks/use-touch.ts +100 -0
  315. package/src/hooks/use-update-effect.ts +16 -0
  316. package/src/index.tsx +3 -0
  317. package/src/locale/de-DE.ts +2 -0
  318. package/src/locale/en-US.ts +2 -0
  319. package/src/locale/zh-CN.ts +4 -2
  320. package/src/renderers/Action.tsx +28 -2
  321. package/src/renderers/AnchorNav.tsx +4 -0
  322. package/src/renderers/Avatar.tsx +8 -4
  323. package/src/renderers/Breadcrumb.tsx +5 -1
  324. package/src/renderers/CRUD.tsx +33 -3
  325. package/src/renderers/Card.tsx +63 -34
  326. package/src/renderers/Chart.tsx +6 -2
  327. package/src/renderers/Collapse.tsx +4 -2
  328. package/src/renderers/DropDownButton.tsx +1 -1
  329. package/src/renderers/Form/InputCity.tsx +4 -8
  330. package/src/renderers/Form/InputFile.tsx +29 -20
  331. package/src/renderers/Form/InputImage.tsx +11 -3
  332. package/src/renderers/Form/Item.tsx +1 -1
  333. package/src/renderers/Form/Options.tsx +16 -2
  334. package/src/renderers/Form/Select.tsx +144 -21
  335. package/src/renderers/Form/TabsTransferPicker.tsx +123 -0
  336. package/src/renderers/Form/Transfer.tsx +3 -2
  337. package/src/renderers/Form/TransferPicker.tsx +123 -0
  338. package/src/renderers/Form/TreeSelect.tsx +25 -0
  339. package/src/renderers/Form/index.tsx +1 -1
  340. package/src/renderers/Form/wrapControl.tsx +26 -1
  341. package/src/renderers/IFrame.tsx +2 -4
  342. package/src/renderers/Json.tsx +9 -9
  343. package/src/renderers/Link.tsx +27 -13
  344. package/src/renderers/List.tsx +1 -1
  345. package/src/renderers/Mapping.tsx +27 -11
  346. package/src/renderers/Nav.tsx +108 -60
  347. package/src/renderers/Portlet.tsx +423 -0
  348. package/src/renderers/Property.tsx +3 -2
  349. package/src/renderers/SearchBox.tsx +23 -4
  350. package/src/renderers/Table/TableContent.tsx +40 -2
  351. package/src/renderers/Table/index.tsx +87 -41
  352. package/src/renderers/Tabs.tsx +9 -1
  353. package/src/renderers/WebComponent.tsx +2 -2
  354. package/src/store/crud.ts +3 -8
  355. package/src/store/form.ts +5 -10
  356. package/src/store/service.ts +5 -4
  357. package/src/types.ts +57 -0
  358. package/src/utils/api.ts +40 -20
  359. package/src/utils/dom.tsx +12 -0
  360. package/src/utils/helper.ts +8 -0
  361. package/src/utils/icon.tsx +4 -0
  362. package/dump.rdb +0 -0
  363. package/lib/components/AssociatedCheckboxes.d.ts +0 -762
  364. package/lib/components/AssociatedCheckboxes.js +0 -90
  365. package/lib/components/AssociatedCheckboxes.js.map +0 -13
  366. package/lib/components/ChainedCheckboxes.js.map +0 -13
  367. package/lib/components/Checkboxes.js +0 -101
  368. package/lib/components/Checkboxes.js.map +0 -13
  369. package/lib/components/ListCheckboxes.d.ts +0 -739
  370. package/lib/components/ListCheckboxes.js +0 -48
  371. package/lib/components/ListCheckboxes.js.map +0 -13
  372. package/lib/components/ListRadios.d.ts +0 -763
  373. package/lib/components/ListRadios.js +0 -86
  374. package/lib/components/ListRadios.js.map +0 -13
  375. package/lib/components/TableCheckboxes.js.map +0 -13
  376. package/lib/components/TreeCheckboxes.js.map +0 -13
  377. package/lib/components/TreeRadios.d.ts +0 -838
  378. package/lib/components/TreeRadios.js +0 -116
  379. package/lib/components/TreeRadios.js.map +0 -13
  380. package/src/components/ListRadios.tsx +0 -159
  381. 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 {}
@@ -6,7 +6,7 @@ import React from 'react';
6
6
  import {Renderer, RendererProps} from '../factory';
7
7
  import {BaseSchema, SchemaExpression, SchemaObject, SchemaTpl} from '../Schema';
8
8
  import PopOver from './PopOver';
9
- import {resolveVariable} from '../utils/tpl-builtin';
9
+ import {resolveVariable, resolveVariableAndFilter} from '../utils/tpl-builtin';
10
10
  import {visibilityFilter} from '../utils/helper';
11
11
 
12
12
  export type PropertyItemProps = {
@@ -123,7 +123,8 @@ export default class Property extends React.Component<PropertyProps, object> {
123
123
  const propertyItems =
124
124
  (items
125
125
  ? items
126
- : (resolveVariable(source, data) as Array<PropertyItem>)) || [];
126
+ : (resolveVariableAndFilter(source, data) as Array<PropertyItem>)) ||
127
+ [];
127
128
 
128
129
  const rows: PropertyContent[][] = [];
129
130
 
@@ -56,10 +56,17 @@ interface SearchBoxProps
56
56
  onQuery?: (query: {[propName: string]: string}) => void;
57
57
  }
58
58
 
59
+ export interface SearchBoxState {
60
+ value: string;
61
+ }
62
+
59
63
  @Renderer({
60
64
  type: 'search-box'
61
65
  })
62
- export class SearchBoxRenderer extends React.Component<SearchBoxProps> {
66
+ export class SearchBoxRenderer extends React.Component<
67
+ SearchBoxProps,
68
+ SearchBoxState
69
+ > {
63
70
  static defaultProps = {
64
71
  name: 'keywords',
65
72
  mini: false,
@@ -68,6 +75,18 @@ export class SearchBoxRenderer extends React.Component<SearchBoxProps> {
68
75
 
69
76
  static propsList: Array<string> = ['mini', 'searchImediately'];
70
77
 
78
+ constructor(props: SearchBoxProps) {
79
+ super(props);
80
+ this.state = {
81
+ value: getPropValue(props) || ''
82
+ };
83
+ }
84
+
85
+ @autobind
86
+ handleChange(value: string) {
87
+ this.setState({value});
88
+ }
89
+
71
90
  @autobind
72
91
  handleCancel() {
73
92
  const name = this.props.name;
@@ -100,7 +119,7 @@ export class SearchBoxRenderer extends React.Component<SearchBoxProps> {
100
119
  className
101
120
  } = this.props;
102
121
 
103
- const value = getPropValue(this.props);
122
+ const value = this.state.value;
104
123
 
105
124
  return (
106
125
  <SearchBox
@@ -109,13 +128,13 @@ export class SearchBoxRenderer extends React.Component<SearchBoxProps> {
109
128
  disabled={!onQuery}
110
129
  defaultActive={!!value}
111
130
  defaultValue={onChange ? undefined : value}
112
- value={onChange ? value : undefined}
131
+ value={value}
113
132
  mini={mini}
114
133
  searchImediately={searchImediately}
115
134
  onSearch={this.handleSearch}
116
135
  onCancel={this.handleCancel}
117
136
  placeholder={placeholder}
118
- onChange={onChange}
137
+ onChange={this.handleChange}
119
138
  />
120
139
  );
121
140
  }
@@ -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 ? (