amis 1.9.0-beta.12 → 1.9.0-beta.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (365) hide show
  1. package/lib/Schema.d.ts +4 -2
  2. package/lib/Schema.js.map +1 -1
  3. package/lib/SchemaRenderer.d.ts +2 -2
  4. package/lib/SchemaRenderer.js +3 -3
  5. package/lib/SchemaRenderer.js.map +2 -2
  6. package/lib/actions/Action.d.ts +8 -6
  7. package/lib/actions/Action.js.map +2 -2
  8. package/lib/actions/AjaxAction.d.ts +10 -7
  9. package/lib/actions/AjaxAction.js +27 -21
  10. package/lib/actions/AjaxAction.js.map +2 -2
  11. package/lib/actions/BreakAction.d.ts +2 -2
  12. package/lib/actions/BreakAction.js.map +1 -1
  13. package/lib/actions/BroadcastAction.d.ts +3 -3
  14. package/lib/actions/BroadcastAction.js +3 -2
  15. package/lib/actions/BroadcastAction.js.map +2 -2
  16. package/lib/actions/CmptAction.d.ts +2 -2
  17. package/lib/actions/CmptAction.js +7 -9
  18. package/lib/actions/CmptAction.js.map +2 -2
  19. package/lib/actions/ContinueAction.d.ts +2 -2
  20. package/lib/actions/ContinueAction.js.map +1 -1
  21. package/lib/actions/CopyAction.d.ts +7 -4
  22. package/lib/actions/CopyAction.js +8 -6
  23. package/lib/actions/CopyAction.js.map +2 -2
  24. package/lib/actions/CustomAction.d.ts +2 -2
  25. package/lib/actions/CustomAction.js.map +1 -1
  26. package/lib/actions/DialogAction.d.ts +14 -8
  27. package/lib/actions/DialogAction.js +6 -6
  28. package/lib/actions/DialogAction.js.map +2 -2
  29. package/lib/actions/DrawerAction.d.ts +3 -3
  30. package/lib/actions/DrawerAction.js.map +1 -1
  31. package/lib/actions/EmailAction.d.ts +10 -7
  32. package/lib/actions/EmailAction.js +4 -5
  33. package/lib/actions/EmailAction.js.map +2 -2
  34. package/lib/actions/LinkAction.d.ts +19 -11
  35. package/lib/actions/LinkAction.js +6 -5
  36. package/lib/actions/LinkAction.js.map +2 -2
  37. package/lib/actions/LoopAction.d.ts +6 -3
  38. package/lib/actions/LoopAction.js +22 -20
  39. package/lib/actions/LoopAction.js.map +2 -2
  40. package/lib/actions/PageAction.d.ts +8 -5
  41. package/lib/actions/PageAction.js +3 -2
  42. package/lib/actions/PageAction.js.map +2 -2
  43. package/lib/actions/ParallelAction.d.ts +2 -2
  44. package/lib/actions/ParallelAction.js.map +1 -1
  45. package/lib/actions/SwitchAction.d.ts +2 -2
  46. package/lib/actions/SwitchAction.js.map +1 -1
  47. package/lib/actions/ToastAction.d.ts +2 -2
  48. package/lib/actions/ToastAction.js +6 -4
  49. package/lib/actions/ToastAction.js.map +2 -2
  50. package/lib/components/Editor.d.ts +84 -84
  51. package/lib/components/InputBox.js +1 -1
  52. package/lib/components/InputBox.js.map +2 -2
  53. package/lib/components/Pagination.d.ts +1175 -0
  54. package/lib/components/Pagination.js +274 -0
  55. package/lib/components/Pagination.js.map +13 -0
  56. package/lib/components/PickerContainer.d.ts +1 -0
  57. package/lib/components/PickerContainer.js +3 -2
  58. package/lib/components/PickerContainer.js.map +2 -2
  59. package/lib/components/Rating.js +11 -9
  60. package/lib/components/Rating.js.map +2 -2
  61. package/lib/components/Select.js +3 -3
  62. package/lib/components/Select.js.map +2 -2
  63. package/lib/components/Tag.d.ts +148 -0
  64. package/lib/components/Tag.js +96 -0
  65. package/lib/components/Tag.js.map +13 -0
  66. package/lib/components/TooltipWrapper.d.ts +25 -21
  67. package/lib/components/TooltipWrapper.js +11 -1
  68. package/lib/components/TooltipWrapper.js.map +2 -2
  69. package/lib/components/TransferDropDown.d.ts +85 -84
  70. package/lib/components/TransferDropDown.js +2 -2
  71. package/lib/components/TransferDropDown.js.map +2 -2
  72. package/lib/components/Tree.d.ts +84 -84
  73. package/lib/components/formula/VariableList.d.ts +1 -0
  74. package/lib/components/formula/VariableList.js.map +2 -2
  75. package/lib/components/icons.js +2 -0
  76. package/lib/components/icons.js.map +2 -2
  77. package/lib/components/index.d.ts +4 -1
  78. package/lib/components/index.js +7 -1
  79. package/lib/components/index.js.map +2 -2
  80. package/lib/components/schema-editor/Array.d.ts +11 -0
  81. package/lib/components/schema-editor/Array.js +66 -0
  82. package/lib/components/schema-editor/Array.js.map +13 -0
  83. package/lib/components/schema-editor/Common.d.ts +29 -0
  84. package/lib/components/schema-editor/Common.js +69 -0
  85. package/lib/components/schema-editor/Common.js.map +13 -0
  86. package/lib/components/schema-editor/Item.d.ts +9 -0
  87. package/lib/components/schema-editor/Item.js +31 -0
  88. package/lib/components/schema-editor/Item.js.map +13 -0
  89. package/lib/components/schema-editor/Object.d.ts +44 -0
  90. package/lib/components/schema-editor/Object.js +191 -0
  91. package/lib/components/schema-editor/Object.js.map +13 -0
  92. package/lib/components/schema-editor/SchemaVariableList.d.ts +316 -0
  93. package/lib/components/schema-editor/SchemaVariableList.js +74 -0
  94. package/lib/components/schema-editor/SchemaVariableList.js.map +13 -0
  95. package/lib/components/schema-editor/SchemaVariableListPicker.d.ts +305 -0
  96. package/lib/components/schema-editor/SchemaVariableListPicker.js +32 -0
  97. package/lib/components/schema-editor/SchemaVariableListPicker.js.map +13 -0
  98. package/lib/components/schema-editor/index.d.ts +520 -0
  99. package/lib/components/schema-editor/index.js +118 -0
  100. package/lib/components/schema-editor/index.js.map +13 -0
  101. package/lib/components/table/Cell.d.ts +930 -0
  102. package/lib/components/table/Cell.js +36 -0
  103. package/lib/components/table/Cell.js.map +13 -0
  104. package/lib/components/table/HeadCellDropDown.d.ts +514 -0
  105. package/lib/components/table/HeadCellDropDown.js +52 -0
  106. package/lib/components/table/HeadCellDropDown.js.map +13 -0
  107. package/lib/components/table/HeadCellFilter.d.ts +771 -0
  108. package/lib/components/table/HeadCellFilter.js +106 -0
  109. package/lib/components/table/HeadCellFilter.js.map +13 -0
  110. package/lib/components/table/HeadCellSelect.d.ts +672 -0
  111. package/lib/components/table/HeadCellSelect.js +46 -0
  112. package/lib/components/table/HeadCellSelect.js.map +13 -0
  113. package/lib/components/table/HeadCellSort.d.ts +498 -0
  114. package/lib/components/table/HeadCellSort.js +67 -0
  115. package/lib/components/table/HeadCellSort.js.map +13 -0
  116. package/lib/components/table/index.d.ts +1355 -0
  117. package/lib/components/table/index.js +1095 -0
  118. package/lib/components/table/index.js.map +13 -0
  119. package/lib/env.d.ts +2 -4
  120. package/lib/env.js.map +2 -2
  121. package/lib/factory.js +0 -95
  122. package/lib/factory.js.map +2 -2
  123. package/lib/icons/dot.js +11 -0
  124. package/lib/index.d.ts +6 -1
  125. package/lib/index.js +9 -2
  126. package/lib/index.js.map +2 -2
  127. package/lib/locale/de-DE.js +18 -1
  128. package/lib/locale/de-DE.js.map +2 -2
  129. package/lib/locale/en-US.js +18 -1
  130. package/lib/locale/en-US.js.map +2 -2
  131. package/lib/locale/zh-CN.js +20 -1
  132. package/lib/locale/zh-CN.js.map +2 -2
  133. package/lib/renderers/Action.js +0 -2
  134. package/lib/renderers/Action.js.map +2 -2
  135. package/lib/renderers/Carousel.d.ts +5 -1
  136. package/lib/renderers/Carousel.js +18 -5
  137. package/lib/renderers/Carousel.js.map +2 -2
  138. package/lib/renderers/Form/ButtonGroupSelect.d.ts +2 -0
  139. package/lib/renderers/Form/ButtonGroupSelect.js +7 -0
  140. package/lib/renderers/Form/ButtonGroupSelect.js.map +2 -2
  141. package/lib/renderers/Form/Checkbox.js +3 -4
  142. package/lib/renderers/Form/Checkbox.js.map +2 -2
  143. package/lib/renderers/Form/Checkboxes.d.ts +2 -1
  144. package/lib/renderers/Form/Checkboxes.js +19 -14
  145. package/lib/renderers/Form/Checkboxes.js.map +2 -2
  146. package/lib/renderers/Form/Combo.js +23 -4
  147. package/lib/renderers/Form/Combo.js.map +2 -2
  148. package/lib/renderers/Form/DiffEditor.d.ts +126 -18
  149. package/lib/renderers/Form/Editor.d.ts +412 -112
  150. package/lib/renderers/Form/Editor.js +10 -1
  151. package/lib/renderers/Form/Editor.js.map +2 -2
  152. package/lib/renderers/Form/InputExcel.js +6 -1
  153. package/lib/renderers/Form/InputExcel.js.map +2 -2
  154. package/lib/renderers/Form/InputFile.js +1 -2
  155. package/lib/renderers/Form/InputFile.js.map +2 -2
  156. package/lib/renderers/Form/InputTree.js +1 -1
  157. package/lib/renderers/Form/InputTree.js.map +2 -2
  158. package/lib/renderers/Form/Item.d.ts +0 -6
  159. package/lib/renderers/Form/JSONSchemaEditor.d.ts +41 -0
  160. package/lib/renderers/Form/JSONSchemaEditor.js +33 -0
  161. package/lib/renderers/Form/JSONSchemaEditor.js.map +13 -0
  162. package/lib/renderers/Form/ListSelect.d.ts +2 -0
  163. package/lib/renderers/Form/ListSelect.js +7 -0
  164. package/lib/renderers/Form/ListSelect.js.map +2 -2
  165. package/lib/renderers/Form/Options.js +1 -0
  166. package/lib/renderers/Form/Options.js.map +2 -2
  167. package/lib/renderers/Form/Select.js +12 -1
  168. package/lib/renderers/Form/Select.js.map +2 -2
  169. package/lib/renderers/Form/TabsTransfer.d.ts +1 -1
  170. package/lib/renderers/Form/TabsTransfer.js +2 -2
  171. package/lib/renderers/Form/TabsTransfer.js.map +2 -2
  172. package/lib/renderers/Form/TreeSelect.d.ts +4 -0
  173. package/lib/renderers/Form/TreeSelect.js +2 -2
  174. package/lib/renderers/Form/TreeSelect.js.map +2 -2
  175. package/lib/renderers/Form/wrapControl.js +10 -5
  176. package/lib/renderers/Form/wrapControl.js.map +2 -2
  177. package/lib/renderers/Pagination.d.ts +49 -30
  178. package/lib/renderers/Pagination.js +3 -132
  179. package/lib/renderers/Pagination.js.map +2 -2
  180. package/lib/renderers/Table/HeadCellSearchDropdown.js +0 -1
  181. package/lib/renderers/Table/HeadCellSearchDropdown.js.map +2 -2
  182. package/lib/renderers/Table-v2/HeadCellSearchDropdown.d.ts +29 -0
  183. package/lib/renderers/Table-v2/HeadCellSearchDropdown.js +158 -0
  184. package/lib/renderers/Table-v2/HeadCellSearchDropdown.js.map +13 -0
  185. package/lib/renderers/Table-v2/TableCell.d.ts +6 -0
  186. package/lib/renderers/Table-v2/TableCell.js +28 -0
  187. package/lib/renderers/Table-v2/TableCell.js.map +13 -0
  188. package/lib/renderers/Table-v2/index.d.ts +256 -0
  189. package/lib/renderers/Table-v2/index.js +548 -0
  190. package/lib/renderers/Table-v2/index.js.map +13 -0
  191. package/lib/renderers/Tabs.js +1 -1
  192. package/lib/renderers/Tabs.js.map +2 -2
  193. package/lib/renderers/Tag.d.ts +66 -0
  194. package/lib/renderers/Tag.js +53 -0
  195. package/lib/renderers/Tag.js.map +13 -0
  196. package/lib/renderers/Wizard.js +3 -3
  197. package/lib/renderers/Wizard.js.map +2 -2
  198. package/lib/schemaExtend.js +24 -30
  199. package/lib/schemaExtend.js.map +2 -2
  200. package/lib/store/combo.d.ts +140 -20
  201. package/lib/store/form.d.ts +56 -8
  202. package/lib/store/formItem.d.ts +3 -1
  203. package/lib/store/formItem.js +3 -1
  204. package/lib/store/formItem.js.map +2 -2
  205. package/lib/store/index.js +2 -0
  206. package/lib/store/index.js.map +2 -2
  207. package/lib/store/table-v2.d.ts +308 -0
  208. package/lib/store/table-v2.js +452 -0
  209. package/lib/store/table-v2.js.map +13 -0
  210. package/lib/store/table.d.ts +112 -16
  211. package/lib/store/table.js +1 -1
  212. package/lib/store/table.js.map +2 -2
  213. package/lib/themes/ang-ie11.css +1686 -120
  214. package/lib/themes/ang.css +1807 -208
  215. package/lib/themes/ang.css.map +1 -1
  216. package/lib/themes/antd-ie11.css +1667 -101
  217. package/lib/themes/antd.css +1789 -201
  218. package/lib/themes/antd.css.map +1 -1
  219. package/lib/themes/cxd-ie11.css +1662 -97
  220. package/lib/themes/cxd.css +1983 -394
  221. package/lib/themes/cxd.css.map +1 -1
  222. package/lib/themes/dark-ie11.css +1667 -101
  223. package/lib/themes/dark.css +1789 -201
  224. package/lib/themes/dark.css.map +1 -1
  225. package/lib/themes/default-ie11.css +1662 -97
  226. package/lib/themes/default.css +1983 -394
  227. package/lib/themes/default.css.map +1 -1
  228. package/lib/utils/DataSchema.d.ts +25 -0
  229. package/lib/utils/DataSchema.js +104 -0
  230. package/lib/utils/DataSchema.js.map +13 -0
  231. package/lib/utils/DataScope.d.ts +23 -0
  232. package/lib/utils/DataScope.js +140 -0
  233. package/lib/utils/DataScope.js.map +13 -0
  234. package/lib/utils/handleAction.js +1 -1
  235. package/lib/utils/handleAction.js.map +2 -2
  236. package/lib/utils/renderer-event.d.ts +8 -2
  237. package/lib/utils/renderer-event.js +102 -1
  238. package/lib/utils/renderer-event.js.map +2 -2
  239. package/package.json +3 -2
  240. package/schema.json +1476 -469
  241. package/scss/_properties.scss +69 -0
  242. package/scss/components/_button.scss +37 -39
  243. package/scss/components/_context-menu.scss +3 -18
  244. package/scss/components/_json-schema-editor.scss +126 -0
  245. package/scss/components/_pagination.scss +104 -23
  246. package/scss/components/_result-box.scss +2 -2
  247. package/scss/components/_table-v2.scss +912 -0
  248. package/scss/components/_tag.scss +177 -0
  249. package/scss/components/form/_selection.scss +1 -14
  250. package/scss/components/form/_text.scss +1 -1
  251. package/scss/themes/_antd-variables.scss +0 -13
  252. package/scss/themes/_common.scss +3 -0
  253. package/scss/themes/_cxd-variables.scss +7 -17
  254. package/scss/themes/_dark-variables.scss +0 -13
  255. package/scss/themes/cxd.scss +1 -1
  256. package/sdk/ang-ie11.css +2240 -227
  257. package/sdk/ang.css +2905 -859
  258. package/sdk/antd-ie11.css +2233 -220
  259. package/sdk/antd.css +2905 -870
  260. package/sdk/barcode.js +51 -51
  261. package/sdk/charts.js +14 -14
  262. package/sdk/codemirror.js +7 -7
  263. package/sdk/color-picker.js +65 -65
  264. package/sdk/cropperjs.js +2 -2
  265. package/sdk/cxd-ie11.css +2223 -211
  266. package/sdk/cxd.css +2911 -875
  267. package/sdk/dark-ie11.css +2233 -220
  268. package/sdk/dark.css +2905 -870
  269. package/sdk/exceljs.js +1 -1
  270. package/sdk/locale/de-DE.js +18 -1
  271. package/sdk/markdown.js +69 -69
  272. package/sdk/papaparse.js +1 -1
  273. package/sdk/renderers/Form/CityDB.js +1 -1
  274. package/sdk/rest.js +16 -16
  275. package/sdk/rich-text.js +62 -62
  276. package/sdk/sdk-ie11.css +2223 -211
  277. package/sdk/sdk.css +2911 -875
  278. package/sdk/sdk.js +1326 -1270
  279. package/sdk/thirds/hls.js/hls.js +1 -1
  280. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  281. package/sdk/tinymce.js +57 -57
  282. package/src/Schema.ts +7 -0
  283. package/src/SchemaRenderer.tsx +4 -5
  284. package/src/actions/Action.ts +7 -6
  285. package/src/actions/AjaxAction.ts +33 -24
  286. package/src/actions/BreakAction.ts +2 -2
  287. package/src/actions/BroadcastAction.ts +6 -5
  288. package/src/actions/CmptAction.ts +5 -6
  289. package/src/actions/ContinueAction.ts +2 -2
  290. package/src/actions/CopyAction.ts +14 -8
  291. package/src/actions/CustomAction.ts +2 -2
  292. package/src/actions/DialogAction.ts +16 -10
  293. package/src/actions/DrawerAction.ts +3 -3
  294. package/src/actions/EmailAction.ts +12 -12
  295. package/src/actions/LinkAction.ts +34 -14
  296. package/src/actions/LoopAction.ts +13 -8
  297. package/src/actions/PageAction.ts +9 -6
  298. package/src/actions/ParallelAction.ts +2 -2
  299. package/src/actions/SwitchAction.ts +2 -2
  300. package/src/actions/ToastAction.ts +9 -5
  301. package/src/components/InputBox.tsx +1 -0
  302. package/src/components/Pagination.tsx +446 -0
  303. package/src/components/PickerContainer.tsx +8 -5
  304. package/src/components/Rating.tsx +16 -9
  305. package/src/components/Select.tsx +3 -3
  306. package/src/components/Tag.tsx +179 -0
  307. package/src/components/TooltipWrapper.tsx +14 -1
  308. package/src/components/TransferDropDown.tsx +3 -0
  309. package/src/components/formula/VariableList.tsx +1 -0
  310. package/src/components/icons.tsx +2 -0
  311. package/src/components/index.tsx +7 -1
  312. package/src/components/schema-editor/Array.tsx +95 -0
  313. package/src/components/schema-editor/Common.tsx +138 -0
  314. package/src/components/schema-editor/Item.tsx +36 -0
  315. package/src/components/schema-editor/Object.tsx +299 -0
  316. package/src/components/schema-editor/SchemaVariableList.tsx +97 -0
  317. package/src/components/schema-editor/SchemaVariableListPicker.tsx +66 -0
  318. package/src/components/schema-editor/index.tsx +211 -0
  319. package/src/components/table/Cell.tsx +70 -0
  320. package/src/components/table/HeadCellDropDown.tsx +115 -0
  321. package/src/components/table/HeadCellFilter.tsx +193 -0
  322. package/src/components/table/HeadCellSelect.tsx +86 -0
  323. package/src/components/table/HeadCellSort.tsx +102 -0
  324. package/src/components/table/index.tsx +1681 -0
  325. package/src/env.tsx +7 -14
  326. package/src/factory.tsx +3 -106
  327. package/src/icons/dot.svg +11 -0
  328. package/src/index.tsx +8 -1
  329. package/src/locale/de-DE.ts +18 -1
  330. package/src/locale/en-US.ts +18 -1
  331. package/src/locale/zh-CN.ts +20 -1
  332. package/src/renderers/Action.tsx +1 -1
  333. package/src/renderers/Carousel.tsx +21 -6
  334. package/src/renderers/Form/ButtonGroupSelect.tsx +10 -1
  335. package/src/renderers/Form/Checkbox.tsx +4 -4
  336. package/src/renderers/Form/Checkboxes.tsx +31 -25
  337. package/src/renderers/Form/Combo.tsx +20 -4
  338. package/src/renderers/Form/Editor.tsx +15 -1
  339. package/src/renderers/Form/InputExcel.tsx +6 -1
  340. package/src/renderers/Form/InputFile.tsx +1 -2
  341. package/src/renderers/Form/InputTree.tsx +1 -1
  342. package/src/renderers/Form/JSONSchemaEditor.tsx +67 -0
  343. package/src/renderers/Form/ListSelect.tsx +9 -1
  344. package/src/renderers/Form/Options.tsx +1 -1
  345. package/src/renderers/Form/Select.tsx +7 -0
  346. package/src/renderers/Form/TabsTransfer.tsx +2 -2
  347. package/src/renderers/Form/TreeSelect.tsx +8 -1
  348. package/src/renderers/Form/wrapControl.tsx +11 -5
  349. package/src/renderers/Pagination.tsx +65 -253
  350. package/src/renderers/Table/HeadCellSearchDropdown.tsx +0 -1
  351. package/src/renderers/Table-v2/HeadCellSearchDropdown.tsx +244 -0
  352. package/src/renderers/Table-v2/TableCell.tsx +19 -0
  353. package/src/renderers/Table-v2/index.tsx +1140 -0
  354. package/src/renderers/Tabs.tsx +1 -1
  355. package/src/renderers/Tag.tsx +128 -0
  356. package/src/renderers/Wizard.tsx +3 -3
  357. package/src/schemaExtend.ts +24 -28
  358. package/src/store/formItem.ts +5 -1
  359. package/src/store/index.ts +2 -0
  360. package/src/store/table-v2.ts +646 -0
  361. package/src/store/table.ts +1 -1
  362. package/src/utils/DataSchema.ts +131 -0
  363. package/src/utils/DataScope.ts +190 -0
  364. package/src/utils/handleAction.ts +1 -1
  365. package/src/utils/renderer-event.ts +113 -2
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @file table/BodyCell
3
+ * @author fex
4
+ */
5
+
6
+ import React from 'react';
7
+
8
+ import {themeable, ThemeProps} from '../../theme';
9
+ import {LocaleProps, localeable} from '../../locale';
10
+ import {ColumnProps} from './index';
11
+
12
+ const zIndex = 1;
13
+
14
+ export interface Props extends ThemeProps, LocaleProps {
15
+ fixed?: string | boolean; // left | right
16
+ rowSpan?: number | any;
17
+ colSpan?: number | any;
18
+ key?: string | number;
19
+ className?: string;
20
+ children?: any;
21
+ tagName?: string;
22
+ style?: Object;
23
+ column?: ColumnProps;
24
+ wrapperComponent: any;
25
+ groupId?: string; // 表头分组随机生成的id
26
+ depth?: number; // 表头分组
27
+ }
28
+
29
+ export class BodyCell extends React.Component<Props> {
30
+ static defaultProps = {
31
+ fixed: '',
32
+ wrapperComponent: 'td',
33
+ rowSpan: null,
34
+ colSpan: null
35
+ };
36
+
37
+ render() {
38
+ const {
39
+ fixed,
40
+ rowSpan,
41
+ colSpan,
42
+ key,
43
+ children,
44
+ className,
45
+ column,
46
+ style,
47
+ groupId,
48
+ depth,
49
+ wrapperComponent: Component,
50
+ classnames: cx
51
+ } = this.props;
52
+
53
+ return (
54
+ <Component
55
+ key={key || null}
56
+ rowSpan={rowSpan && rowSpan > 1 ? rowSpan : null}
57
+ colSpan={colSpan && colSpan > 1 ? colSpan : null}
58
+ className={cx('Table-cell', className, {
59
+ [cx(`Table-cell-fix-${fixed}`)] : fixed,
60
+ [`text-${column?.align}`] : column?.align
61
+ })}
62
+ style={fixed ? {position: 'sticky', zIndex, ...style} : {...style}}
63
+ data-group-id={groupId || null}
64
+ data-depth={depth || null}
65
+ >{children}</Component>
66
+ );
67
+ }
68
+ }
69
+
70
+ export default themeable(localeable(BodyCell));
@@ -0,0 +1,115 @@
1
+ /**
2
+ * @file table/HeadCellDropDown
3
+ * @author fex
4
+ */
5
+
6
+ import React from 'react';
7
+ import {findDOMNode} from 'react-dom';
8
+
9
+ import {themeable, ThemeProps} from '../../theme';
10
+ import {LocaleProps, localeable} from '../../locale';
11
+ import Overlay from '../Overlay';
12
+ import PopOver from '../PopOver';
13
+
14
+ export interface FilterPayload {
15
+ closeDropdown?: boolean;
16
+ }
17
+
18
+ export interface FilterDropdownProps {
19
+ setSelectedKeys?: (keys: Array<string | number> | string) => void,
20
+ selectedKeys?: Array<string | number> | string,
21
+ confirm: (payload: FilterPayload) => void,
22
+ clearFilters?: () => void
23
+ }
24
+
25
+ export interface Props extends ThemeProps, LocaleProps {
26
+ filterIcon: Function | React.ReactNode; // 图标方法 返回ReactNode
27
+ className: string; // 图标样式
28
+ layerClassName: string; // 展开层样式
29
+ active: boolean; // 图标是否高亮
30
+ popOverContainer?: () => Element | Text | null;
31
+ filterDropdown: (payload: FilterDropdownProps) => JSX.Element | null ; // 菜单内容
32
+ selectedKeys?: Array<string | number> | string;
33
+ setSelectedKeys?: (keys: Array<string | number> | string) => void;
34
+ }
35
+
36
+ export interface State {
37
+ isOpened: boolean;
38
+ }
39
+
40
+ export class HeadCellDropDown extends React.Component<Props, State> {
41
+ constructor(props: Props) {
42
+ super(props);
43
+
44
+ this.state = {
45
+ isOpened: false
46
+ }
47
+
48
+ this.openLayer = this.openLayer.bind(this);
49
+ this.closeLayer = this.closeLayer.bind(this);
50
+ }
51
+
52
+ render() {
53
+ const {isOpened} = this.state;
54
+ const {
55
+ popOverContainer,
56
+ active,
57
+ className,
58
+ layerClassName,
59
+ filterIcon,
60
+ filterDropdown,
61
+ classnames: cx,
62
+ classPrefix: ns
63
+ } = this.props;
64
+
65
+ return (
66
+ <span
67
+ className={cx(
68
+ className,
69
+ active ? 'is-active' : ''
70
+ )}
71
+ >
72
+ <span onClick={this.openLayer}>
73
+ {filterIcon && typeof filterIcon === 'function'
74
+ ? filterIcon(active) : (filterIcon || null)}
75
+ </span>
76
+ {
77
+ isOpened ? (
78
+ <Overlay
79
+ container={popOverContainer || (() => findDOMNode(this))}
80
+ placement="left-bottom-left-top right-bottom-right-top"
81
+ target={
82
+ popOverContainer ? () => findDOMNode(this)!.parentNode : null
83
+ }
84
+ show
85
+ >
86
+ <PopOver
87
+ classPrefix={ns}
88
+ onHide={this.closeLayer}
89
+ className={cx(layerClassName)}
90
+ overlay
91
+ >
92
+ {filterDropdown && typeof filterDropdown === 'function'
93
+ ? filterDropdown({...this.props, confirm: (payload: FilterPayload) => {
94
+ if (!(payload && payload.closeDropdown === false)) {
95
+ this.closeLayer();
96
+ }
97
+ }}) : (filterDropdown || null)}
98
+ </PopOver>
99
+ </Overlay>)
100
+ : null
101
+ }
102
+ </span>
103
+ );
104
+ }
105
+
106
+ openLayer() {
107
+ this.setState({isOpened: true});
108
+ }
109
+
110
+ closeLayer() {
111
+ this.setState({isOpened: false});
112
+ }
113
+ }
114
+
115
+ export default themeable(localeable(HeadCellDropDown));
@@ -0,0 +1,193 @@
1
+ /**
2
+ * @file table/HeadCellFilter
3
+ * @author fex
4
+ */
5
+
6
+ import React from 'react';
7
+ import {findDOMNode} from 'react-dom';
8
+ import isEqual from 'lodash/isEqual';
9
+
10
+ import {themeable, ThemeProps} from '../../theme';
11
+ import {LocaleProps, localeable} from '../../locale';
12
+ import HeadCellDropDown, {FilterDropdownProps, FilterPayload} from './HeadCellDropDown';
13
+ import CheckBox from '../Checkbox';
14
+ import Button from '../Button';
15
+ import {Icon} from '../icons';
16
+
17
+ export interface Props extends ThemeProps, LocaleProps {
18
+ column: any;
19
+ onFilter?: Function;
20
+ filteredValue?: Array<string>;
21
+ filterMultiple?: boolean;
22
+ popOverContainer?: () => Element | Text | null;
23
+ }
24
+
25
+ export interface OptionProps {
26
+ text: string;
27
+ value: string;
28
+ selected?: boolean;
29
+ children?: Array<OptionProps>;
30
+ }
31
+
32
+ export interface State {
33
+ options: Array<OptionProps>;
34
+ filteredValue: Array<string>;
35
+ }
36
+
37
+ export class HeadCellFilter extends React.Component<Props, State> {
38
+ static defaultProps = {
39
+ filteredValue: [],
40
+ filterMultiple: false
41
+ };
42
+
43
+ constructor(props: Props) {
44
+ super(props);
45
+
46
+ this.state = {
47
+ options: [],
48
+ filteredValue: props.filteredValue || []
49
+ }
50
+ }
51
+
52
+ alterOptions(options: Array<any>) {
53
+ options = options.map(option => ({
54
+ ...option,
55
+ selected: this.state.filteredValue.indexOf(option.value) > -1
56
+ }));
57
+
58
+ return options;
59
+ }
60
+
61
+ componentDidMount() {
62
+ const {column} = this.props;
63
+ if (column.filters && column.filters.length > 0) {
64
+ this.setState({options: this.alterOptions(column.filters)});
65
+ }
66
+ }
67
+
68
+ componentDidUpdate(prevProps: Props, prevState: State) {
69
+ const {column} = this.props;
70
+ if (column.filters && column.filters.length > 0
71
+ && !isEqual(prevState.filteredValue, this.state.filteredValue)) {
72
+ this.setState({options: this.alterOptions(column.filters)});
73
+ }
74
+ }
75
+
76
+ render() {
77
+ const {options} = this.state;
78
+ const {
79
+ column,
80
+ popOverContainer,
81
+ classnames: cx,
82
+ classPrefix: ns
83
+ } = this.props;
84
+
85
+ const filterProps = {
86
+ filterDropdown: (payload: FilterDropdownProps) => {
87
+ const {setSelectedKeys, selectedKeys, confirm, clearFilters} = payload
88
+ return options && options.length > 0 ? (
89
+ <ul className={cx('DropDown-menu')}>
90
+ {!column.filterMultiple
91
+ ? options.map((option: any, index) => (
92
+ <li
93
+ key={index}
94
+ className={cx({
95
+ 'is-active': option.selected
96
+ })}
97
+ onClick={() => this.handleClick(confirm, setSelectedKeys, [option.value])}
98
+ >
99
+ {option.text}
100
+ </li>
101
+ ))
102
+ : options.map((option: any, index) => (
103
+ <li key={index}>
104
+ <CheckBox
105
+ classPrefix={ns}
106
+ onChange={e =>
107
+ this.handleCheck(confirm, setSelectedKeys, e
108
+ ? [option.value] : option.value)}
109
+ checked={option.selected}
110
+ >
111
+ {option.text}
112
+ </CheckBox>
113
+ </li>
114
+ ))}
115
+ {column.filterMultiple ? (
116
+ <li
117
+ key="dropDown-multiple-menu"
118
+ className={cx('DropDown-multiple-menu')}
119
+ >
120
+ <Button
121
+ size={'xs'}
122
+ level={'primary'}
123
+ onClick={() => this.handleConfirmClick(confirm)}
124
+ >确定</Button>
125
+ <Button
126
+ size={'xs'}
127
+ onClick={() => this.handleCancelClick(confirm, setSelectedKeys)}
128
+ >取消</Button>
129
+ </li>
130
+ ) : null}
131
+ </ul>
132
+ ) : null
133
+ },
134
+ setSelectedKeys: (keys: Array<string>) => this.setState({filteredValue: keys})
135
+ };
136
+
137
+ return (
138
+ <HeadCellDropDown
139
+ className={`${ns}TableCell-filterBtn`}
140
+ layerClassName={`${ns}TableCell-filterPopOver`}
141
+ filterIcon={<Icon icon="column-filter" className="icon" />}
142
+ active={column.filtered || options && options.some((item: any) => item.selected)}
143
+ popOverContainer={popOverContainer ? popOverContainer : () => findDOMNode(this)}
144
+ selectedKeys={this.state.filteredValue}
145
+ {...filterProps}
146
+ >
147
+ </HeadCellDropDown>
148
+ );
149
+ }
150
+
151
+ handleClick(
152
+ confirm: (payload?: FilterPayload) => void,
153
+ setSelectedKeys?: (keys?: (string | Array<string | number>)) => void,
154
+ selectedKeys?: Array<string>
155
+ ) {
156
+ const {onFilter, column} = this.props;
157
+
158
+ setSelectedKeys && setSelectedKeys(selectedKeys);
159
+
160
+ onFilter && onFilter({[column.key] : selectedKeys});
161
+ confirm();
162
+ }
163
+
164
+ handleCheck(
165
+ confirm: (payload?: FilterPayload) => void,
166
+ setSelectedKeys?: ((keys: (string | Array<string | number>)) => void | undefined),
167
+ selectedKeys?: Array<string>
168
+ ) {
169
+ const filteredValue = this.state.filteredValue;
170
+ // 选中
171
+ if (Array.isArray(selectedKeys)) {
172
+ setSelectedKeys && setSelectedKeys([...filteredValue, ...selectedKeys]);
173
+ } else { // 取消选中
174
+ setSelectedKeys && setSelectedKeys(filteredValue.filter(v => v !== selectedKeys));
175
+ }
176
+ }
177
+
178
+ handleConfirmClick(confirm: (payload?: FilterPayload) => void) {
179
+ const {onFilter, column} = this.props;
180
+ onFilter && onFilter({[column.key] : this.state.filteredValue});
181
+ confirm();
182
+ }
183
+
184
+ handleCancelClick(
185
+ confirm: (payload?: FilterPayload) => void,
186
+ setSelectedKeys?: ((keys: (string | Array<string | number>)) => void | undefined)
187
+ ) {
188
+ setSelectedKeys && setSelectedKeys([]);
189
+ confirm();
190
+ }
191
+ }
192
+
193
+ export default themeable(localeable(HeadCellFilter));
@@ -0,0 +1,86 @@
1
+ /**
2
+ * @file table/HeadCellSelect
3
+ * @author fex
4
+ */
5
+
6
+ import React from 'react';
7
+ import {findDOMNode} from 'react-dom';
8
+
9
+ import {themeable, ThemeProps} from '../../theme';
10
+ import {LocaleProps, localeable} from '../../locale';
11
+ import HeadCellDropDown, {FilterPayload} from './HeadCellDropDown';
12
+ import {RowSelectionOptionProps} from './index';
13
+ import {Icon} from '../icons';
14
+
15
+ export interface Props extends ThemeProps, LocaleProps {
16
+ selections: Array<RowSelectionOptionProps>;
17
+ keys: Array<string | number> | string;
18
+ popOverContainer?: () => Element | Text | null;
19
+ }
20
+
21
+ export interface State {
22
+ key: Array<string | number> | string;
23
+ }
24
+
25
+ export class HeadCellSelect extends React.Component<Props, State> {
26
+ static defaultProps = {
27
+ selections: []
28
+ };
29
+
30
+ constructor(props: Props) {
31
+ super(props);
32
+
33
+ this.state = {
34
+ key: ''
35
+ }
36
+ }
37
+
38
+ render() {
39
+ const {
40
+ selections,
41
+ keys: allKeys,
42
+ popOverContainer,
43
+ classnames: cx,
44
+ classPrefix: ns
45
+ } = this.props;
46
+
47
+ return (
48
+ <HeadCellDropDown
49
+ className={`${ns}TableCell-selectionBtn`}
50
+ layerClassName={`${ns}TableCell-selectionPopOver`}
51
+ filterIcon={<Icon icon="left-arrow" className="icon" />}
52
+ active={false}
53
+ popOverContainer={popOverContainer ? popOverContainer : () => findDOMNode(this)}
54
+ filterDropdown={({setSelectedKeys, selectedKeys, confirm, clearFilters}) => {
55
+ return <ul className={cx('DropDown-menu')}>
56
+ {selections.map((item, index) => (
57
+ <li
58
+ key={index}
59
+ onClick={() => {
60
+ item.onSelect && item.onSelect(allKeys);
61
+ this.handleClick(confirm, setSelectedKeys, item.key);
62
+ }}>
63
+ {item.text}
64
+ </li>
65
+ ))}
66
+ </ul> ;
67
+ }}
68
+ setSelectedKeys={keys => this.setState({key: keys})}
69
+ selectedKeys={this.state.key}
70
+ >
71
+ </HeadCellDropDown>
72
+ );
73
+ }
74
+
75
+ handleClick(
76
+ confirm: (payload?: FilterPayload) => void,
77
+ setSelectedKeys?: (keys?: Array<string | number> | string) => void | undefined,
78
+ selectedKeys?: Array<string> | string
79
+ ) {
80
+ setSelectedKeys && setSelectedKeys(selectedKeys);
81
+
82
+ confirm();
83
+ }
84
+ }
85
+
86
+ export default themeable(localeable(HeadCellSelect));
@@ -0,0 +1,102 @@
1
+ /**
2
+ * @file table/HeadCellSort
3
+ * @author fex
4
+ */
5
+
6
+ import React from 'react';
7
+
8
+ import {themeable, ThemeProps} from '../../theme';
9
+ import {LocaleProps, localeable} from '../../locale';
10
+ import {Icon} from '../icons';
11
+
12
+ export interface Props extends ThemeProps, LocaleProps {
13
+ column: any;
14
+ onSort?: Function;
15
+ }
16
+
17
+ export interface State {
18
+ order: string; // 升序还是降序
19
+ orderBy: string; // 一次只能按一列排序 当前列的key
20
+ }
21
+
22
+ export class HeadCellSort extends React.Component<Props, State> {
23
+ constructor(props: Props) {
24
+ super(props);
25
+
26
+ this.state = {
27
+ order: '',
28
+ orderBy: ''
29
+ };
30
+ }
31
+
32
+ render() {
33
+ const {
34
+ column,
35
+ onSort,
36
+ classnames: cx
37
+ } = this.props;
38
+
39
+ return (
40
+ <span
41
+ className={cx('TableCell-sortBtn')}
42
+ onClick={() => {
43
+ const callback = () => {
44
+ if (onSort) {
45
+ onSort({
46
+ orderBy: this.state.orderBy,
47
+ order: this.state.order
48
+ });
49
+ }
50
+ }
51
+
52
+ let sortPayload = {};
53
+ if (column.key === this.state.orderBy) {
54
+ if (this.state.order === 'descend') {
55
+ // 降序改为取消
56
+ sortPayload = {orderBy: '', order: 'ascend'};
57
+ } else {
58
+ // 升序之后降序
59
+ sortPayload = {order: 'descend'};
60
+ }
61
+ } else {
62
+ // 默认先升序
63
+ sortPayload = {orderBy: column.key, order: 'ascend'};
64
+ }
65
+
66
+ this.setState(sortPayload, callback);
67
+ }}
68
+ >
69
+ <i
70
+ className={cx(
71
+ 'TableCell-sortBtn--down',
72
+ this.state.orderBy === column.key && this.state.order === 'descend'
73
+ ? 'is-active'
74
+ : ''
75
+ )}
76
+ >
77
+ <Icon icon="sort-desc" className="icon" />
78
+ </i>
79
+ <i
80
+ className={cx(
81
+ 'TableCell-sortBtn--up',
82
+ this.state.orderBy === column.key && this.state.order === 'ascend'
83
+ ? 'is-active'
84
+ : ''
85
+ )}
86
+ >
87
+ <Icon icon="sort-asc" className="icon" />
88
+ </i>
89
+ <i
90
+ className={cx(
91
+ 'TableCell-sortBtn--default',
92
+ this.state.orderBy === column.key ? '' : 'is-active'
93
+ )}
94
+ >
95
+ <Icon icon="sort-default" className="icon" />
96
+ </i>
97
+ </span>
98
+ );
99
+ }
100
+ }
101
+
102
+ export default themeable(localeable(HeadCellSort));