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,646 @@
1
+ import {
2
+ types,
3
+ getParent,
4
+ Instance,
5
+ SnapshotIn,
6
+ isAlive,
7
+ IAnyModelType,
8
+ flow,
9
+ getEnv
10
+ } from 'mobx-state-tree';
11
+ import find from 'lodash/find';
12
+ import isEqual from 'lodash/isEqual';
13
+
14
+ import {
15
+ isVisible,
16
+ hasVisibleExpression,
17
+ isObjectShallowModified,
18
+ qsstringify,
19
+ guid,
20
+ eachTree,
21
+ createObject,
22
+ flattenTree,
23
+ isObject,
24
+ immutableExtends,
25
+ isEmpty,
26
+ extendObject
27
+ } from '../utils/helper';
28
+ import {normalizeApiResponseData} from '../utils/api';
29
+ import {Api, Payload, fetchOptions, ApiObject} from '../types';
30
+ import {ServiceStore} from './service';
31
+
32
+ class ServerError extends Error {
33
+ type = 'ServerError';
34
+ }
35
+
36
+ export const Column = types
37
+ .model('Column', {
38
+ title: types.optional(types.frozen(), undefined),
39
+ key: '',
40
+ toggled: false,
41
+ breakpoint: types.optional(types.frozen(), undefined),
42
+ pristine: types.optional(types.frozen(), undefined),
43
+ toggable: true,
44
+ index: 0,
45
+ type: '',
46
+ children: types.optional(
47
+ types.array(types.late((): IAnyModelType => Column)),
48
+ []
49
+ )
50
+ })
51
+ .actions(self => ({
52
+ toggleToggle() {
53
+ self.toggled = !self.toggled;
54
+ const table = getParent(self, 2) as ITableStore;
55
+
56
+ if (!table.activeToggaleColumns.length) {
57
+ self.toggled = true;
58
+ }
59
+
60
+ table.persistSaveToggledColumns();
61
+ },
62
+ setToggled(value: boolean) {
63
+ self.toggled = value;
64
+ }
65
+ }));
66
+
67
+ export type IColumn = Instance<typeof Column>;
68
+ export type SColumn = SnapshotIn<typeof Column>;
69
+
70
+ export const Row = types
71
+ .model('Row', {
72
+ storeType: 'Row',
73
+ id: types.identifier,
74
+ key: types.string,
75
+ pristine: types.frozen({} as any), // 原始数据
76
+ data: types.frozen({} as any),
77
+ index: types.number,
78
+ newIndex: types.number,
79
+ depth: types.number, // 当前children位于第几层,便于使用getParent获取最顶层TableStore
80
+ children: types.optional(
81
+ types.array(types.late((): IAnyModelType => Row)),
82
+ []
83
+ ),
84
+ path: '' // 行数据的位置
85
+ })
86
+ .views(self => ({
87
+ get checked(): boolean {
88
+ return (getParent(self, self.depth * 2) as ITableStore).isSelected(
89
+ self as IRow
90
+ );
91
+ },
92
+
93
+ get modified() {
94
+ if (!self.data) {
95
+ return false;
96
+ }
97
+
98
+ return Object.keys(self.data).some(
99
+ key => !isEqual(self.data[key], self.pristine[key])
100
+ );
101
+ },
102
+
103
+ get locals(): any {
104
+ let children: Array<any> | null = null;
105
+ if (self.children.length) {
106
+ children = self.children.map(item => item.locals);
107
+ }
108
+
109
+ const parent = getParent(self, 2) as ITableStore;
110
+ return createObject(
111
+ extendObject((getParent(self, self.depth * 2) as ITableStore).data, {
112
+ index: self.index,
113
+ // todo 以后再支持多层,目前先一层
114
+ parent: parent.storeType === Row.name ? parent.data : undefined
115
+ }),
116
+ children
117
+ ? {
118
+ ...self.data,
119
+ children
120
+ }
121
+ : self.data
122
+ );
123
+ }
124
+ }))
125
+ .actions(self => ({
126
+ replaceWith(data: any) {
127
+ Object.keys(data).forEach(key => {
128
+ if (key !== 'id') {
129
+ (self as any)[key] = data[key];
130
+ }
131
+ });
132
+
133
+ if (Array.isArray(data.children)) {
134
+ const arr = data.children;
135
+ const pool = arr.concat();
136
+
137
+ // 把多的删了先
138
+ if (self.children.length > arr.length) {
139
+ self.children.splice(arr.length, self.children.length - arr.length);
140
+ }
141
+
142
+ let index = 0;
143
+ const len = self.children.length;
144
+ while (pool.length) {
145
+ // 因为父级id未更新,所以需要将子级的parentId正确指向父级id
146
+ const item = {
147
+ ...pool.shift(),
148
+ parentId: self.id
149
+ }!;
150
+
151
+ if (index < len) {
152
+ self.children[index].replaceWith(item);
153
+ } else {
154
+ const row = Row.create(item);
155
+ self.children.push(row);
156
+ }
157
+ index++;
158
+ }
159
+ }
160
+ },
161
+ change(values: object, savePristine?: boolean) {
162
+ self.data = immutableExtends(self.data, values);
163
+ savePristine && (self.pristine = self.data);
164
+ }
165
+ }));
166
+
167
+ export type IRow = Instance<typeof Row>;
168
+ export type SRow = SnapshotIn<typeof Row>;
169
+
170
+ export const TableStoreV2 = ServiceStore
171
+ .named('TableStoreV2')
172
+ .props({
173
+ columns: types.array(Column),
174
+ rows: types.array(Row),
175
+ selectedRowKeys: types.array(types.frozen()),
176
+ selectedRows: types.array(types.reference(Row)),
177
+ expandedRowKeys: types.array(types.frozen()),
178
+ columnsTogglable: types.optional(
179
+ types.union(types.boolean, types.literal('auto')),
180
+ 'auto'
181
+ ),
182
+ orderBy: '',
183
+ order: types.optional(
184
+ types.union(types.literal('asc'), types.literal('desc')),
185
+ 'asc'
186
+ ),
187
+ query: types.optional(types.frozen(), {}),
188
+ pageNo: 1,
189
+ pageSize: 10,
190
+ dragging: false
191
+ })
192
+ .views(self => {
193
+ function getToggable() {
194
+ if (self.columnsTogglable === 'auto') {
195
+ return self.columns.filter.length > 10;
196
+ }
197
+
198
+ return self.columnsTogglable;
199
+ }
200
+
201
+ function hasColumnHidden() {
202
+ return self.columns.findIndex(column => !column.toggled) !== -1;
203
+ }
204
+
205
+ function getToggableColumns() {
206
+ return self.columns.filter(
207
+ item => isVisible(item.pristine, self.data) && item.toggable !== false
208
+ );
209
+ }
210
+
211
+ function getActiveToggableColumns() {
212
+ return getToggableColumns().filter(item => item.toggled);
213
+ }
214
+
215
+ function getAllFilteredColumns(columns?: Array<SColumn>): Array<any> {
216
+ if (columns) {
217
+ return columns.filter(
218
+ item =>
219
+ item &&
220
+ isVisible(
221
+ item.pristine,
222
+ hasVisibleExpression(item.pristine) ? self.data : {}
223
+ ) &&
224
+ (item.toggled || !item.toggable)
225
+ ).map(item => ({
226
+ ...item.pristine,
227
+ type: item.type,
228
+ children: item.children ? getAllFilteredColumns(item.children) : undefined
229
+ }));
230
+ }
231
+ return [];
232
+ }
233
+
234
+ function getFilteredColumns() {
235
+ return getAllFilteredColumns(self.columns);
236
+ }
237
+
238
+ function getUnSelectedRows() {
239
+ return flattenTree<IRow>(self.rows).filter((item: IRow) => !item.checked);
240
+ }
241
+
242
+ function getData(superData: any): any {
243
+ return createObject(superData, {
244
+ items: self.rows.map(item => item.data),
245
+ selectedItems: self.selectedRows.map(item => item.data),
246
+ unSelectedItems: getUnSelectedRows().map(item => item.data)
247
+ });
248
+ }
249
+
250
+ function isSelected(row: IRow): boolean {
251
+ return !!~self.selectedRows.indexOf(row);
252
+ }
253
+
254
+ return {
255
+ get toggable() {
256
+ return getToggable();
257
+ },
258
+
259
+ get columnsData() {
260
+ return self.columns;
261
+ },
262
+
263
+ get toggableColumns() {
264
+ return getToggableColumns();
265
+ },
266
+
267
+ get filteredColumns() {
268
+ return getFilteredColumns();
269
+ },
270
+
271
+ get activeToggaleColumns() {
272
+ return getActiveToggableColumns();
273
+ },
274
+
275
+ get dataSource() {
276
+ return self.rows.map(item => item.data);
277
+ },
278
+
279
+ get currentSelectedRowKeys() {
280
+ return self.selectedRowKeys.map(item => item);
281
+ },
282
+
283
+ get currentExpandedKeys() {
284
+ return self.expandedRowKeys.map(item => item);
285
+ },
286
+
287
+ // 是否隐藏了某列
288
+ hasColumnHidden() {
289
+ return hasColumnHidden();
290
+ },
291
+
292
+ getData,
293
+
294
+ isSelected
295
+ }
296
+ })
297
+ .actions(self => {
298
+ function updateColumns(columns: Array<SColumn>) {
299
+ if (columns && Array.isArray(columns)) {
300
+ let cols: Array<SColumn> = columns
301
+ .filter(column => column)
302
+ .concat();
303
+
304
+ cols = cols.map((item, index) => ({
305
+ ...item,
306
+ index,
307
+ type: item.type || 'plain',
308
+ pristine: item,
309
+ toggled: item.toggled !== false,
310
+ breakpoint: item.breakpoint,
311
+ children: item.children ? updateColumns(item.children) : []
312
+ }));
313
+
314
+ return cols;
315
+ }
316
+ return;
317
+ }
318
+
319
+ function update(config: Partial<STableStore>) {
320
+ config.columnsTogglable !== void 0 &&
321
+ (self.columnsTogglable = config.columnsTogglable);
322
+
323
+ if (typeof config.orderBy === 'string') {
324
+ setOrderByInfo(
325
+ config.orderBy,
326
+ config.order === 'desc' ? 'desc' : 'asc'
327
+ );
328
+ }
329
+
330
+ if (config.columns && Array.isArray(config.columns)) {
331
+ self.columns.replace(updateColumns(config.columns) as any);
332
+ }
333
+ }
334
+
335
+ function persistSaveToggledColumns() {
336
+ const key =
337
+ location.pathname +
338
+ self.path +
339
+ self.toggableColumns.map(item => item.key || item.index).join('-');
340
+ localStorage.setItem(
341
+ key,
342
+ JSON.stringify(self.activeToggaleColumns.map(item => item.index))
343
+ );
344
+ }
345
+
346
+ function setOrderByInfo(key: string, direction: 'asc' | 'desc') {
347
+ self.orderBy = key;
348
+ self.order = direction;
349
+ }
350
+
351
+ function updateQuery(
352
+ values: object,
353
+ updater?: Function,
354
+ pageNoField: string = 'pageNo',
355
+ pageSizeField: string = 'pageSize',
356
+ replace: boolean = false
357
+ ) {
358
+ const originQuery = self.query;
359
+ self.query = replace
360
+ ? {
361
+ ...values
362
+ }
363
+ : {
364
+ ...self.query,
365
+ ...values
366
+ };
367
+
368
+ if (self.query[pageNoField || 'pageNo']) {
369
+ self.pageNo = parseInt(self.query[pageNoField || 'pageNo'], 10);
370
+ }
371
+
372
+ if (self.query[pageSizeField || 'pageSize']) {
373
+ self.pageSize = parseInt(self.query[pageSizeField || 'pageSize'], 10);
374
+ }
375
+
376
+ updater &&
377
+ isObjectShallowModified(originQuery, self.query, false) &&
378
+ setTimeout(updater.bind(null, `?${qsstringify(self.query)}`), 4);
379
+ }
380
+
381
+ function updateSelectedRows(rows: Array<any>, selectedKeys: Array<any>, keyField?: string) {
382
+ eachTree(rows, item => {
383
+ if (~selectedKeys.indexOf(item.pristine[keyField || 'key'])) {
384
+ self.selectedRows.push(item.id);
385
+ self.selectedRowKeys.push(item.pristine[keyField || 'key']);
386
+ } else if (
387
+ find(
388
+ selectedKeys,
389
+ a =>
390
+ a &&
391
+ a == item.pristine[keyField || 'key']
392
+ )
393
+ ) {
394
+ self.selectedRows.push(item.id);
395
+ self.selectedRowKeys.push(item.pristine[keyField || 'key']);
396
+ } else if (item.children) {
397
+ updateSelectedRows(item.children, selectedKeys, keyField);
398
+ }
399
+ });
400
+ }
401
+
402
+ function updateSelected(selectedKeys: Array<any>, keyField?: string) {
403
+ self.selectedRows.clear();
404
+ self.selectedRowKeys.clear();
405
+
406
+ updateSelectedRows(self.rows, selectedKeys, keyField);
407
+ }
408
+
409
+ function updateExpanded(expandedRowKeys: Array<any>, keyField?: string) {
410
+ self.expandedRowKeys.clear();
411
+
412
+ eachTree(self.rows, item => {
413
+ if (~expandedRowKeys.indexOf(item.pristine[keyField || 'key'])) {
414
+ self.expandedRowKeys.push(item.pristine[keyField || 'key']);
415
+ } else if (
416
+ find(
417
+ expandedRowKeys,
418
+ a =>
419
+ a &&
420
+ a == item.pristine[keyField || 'key']
421
+ )
422
+ ) {
423
+ self.expandedRowKeys.push(item.pristine[keyField || 'key']);
424
+ }
425
+ });
426
+ }
427
+
428
+ // 尽可能的复用 row
429
+ function replaceRow(arr: Array<SRow>, reUseRow?: boolean) {
430
+ if (reUseRow === false) {
431
+ self.rows.replace(arr.map(item => Row.create(item)));
432
+ return;
433
+ }
434
+
435
+ const pool = arr.concat();
436
+
437
+ // 把多的删了先
438
+ if (self.rows.length > arr.length) {
439
+ self.rows.splice(arr.length, self.rows.length - arr.length);
440
+ }
441
+
442
+ let index = 0;
443
+ const len = self.rows.length;
444
+ while (pool.length) {
445
+ const item = pool.shift()!;
446
+
447
+ if (index < len) {
448
+ self.rows[index].replaceWith(item);
449
+ } else {
450
+ const row = Row.create(item);
451
+ self.rows.push(row);
452
+ }
453
+ index++;
454
+ }
455
+ }
456
+
457
+ function initChildren(
458
+ children: Array<any>,
459
+ depth: number,
460
+ pindex: number,
461
+ parentId: string,
462
+ path: string = '',
463
+ keyField?: string
464
+ ): any {
465
+ const key = keyField || 'children';
466
+
467
+ depth += 1;
468
+ return children.map((item, index) => {
469
+ item = isObject(item)
470
+ ? item
471
+ : {
472
+ item
473
+ };
474
+ const id = guid();
475
+
476
+ return {
477
+ id: id,
478
+ parentId,
479
+ key: String(`${pindex}-${depth}-${index}`),
480
+ path: `${path}${index}`,
481
+ depth: depth,
482
+ index: index,
483
+ newIndex: index,
484
+ pristine: item,
485
+ data: item,
486
+ rowSpans: {},
487
+ children:
488
+ item && Array.isArray(item[key])
489
+ ? initChildren(
490
+ item[key],
491
+ depth,
492
+ index,
493
+ id,
494
+ `${path}${index}.`,
495
+
496
+ )
497
+ : []
498
+ };
499
+ });
500
+ }
501
+
502
+ function initRows(
503
+ rows: Array<any>,
504
+ getEntryId?: (entry: any, index: number) => string,
505
+ reUseRow?: boolean,
506
+ keyField?: string
507
+ ) {
508
+ self.selectedRows.clear();
509
+
510
+ const key = keyField || 'children';
511
+
512
+ let arr: Array<SRow> = rows.map((item, index) => {
513
+ let id = getEntryId ? getEntryId(item, index) : guid();
514
+
515
+ return {
516
+ id: id,
517
+ key: String(`${index}-1-${index}`),
518
+ index: index,
519
+ newIndex: index,
520
+ pristine: item,
521
+ path: `${index}`,
522
+ data: item,
523
+ depth: 1, // 最大父节点默认为第一层,逐层叠加
524
+ children:
525
+ item && Array.isArray(item[key])
526
+ ? initChildren(item[key], 1, index, id, `${index}.`, key)
527
+ : []
528
+ };
529
+ });
530
+
531
+ replaceRow(arr, reUseRow);
532
+ }
533
+
534
+ const saveRemote: (
535
+ api: Api,
536
+ data?: object,
537
+ options?: fetchOptions
538
+ ) => Promise<any> = flow(function* saveRemote(
539
+ api: Api,
540
+ data: object,
541
+ options: fetchOptions = {}
542
+ ) {
543
+ try {
544
+ options = {
545
+ method: 'post', // 默认走 post
546
+ ...options
547
+ };
548
+
549
+ self.markSaving(true);
550
+ const json: Payload = yield getEnv(self).fetcher(api, data, options);
551
+ self.markSaving(false);
552
+
553
+ if (!isEmpty(json.data) || json.ok) {
554
+ self.updateData(
555
+ normalizeApiResponseData(json.data),
556
+ {
557
+ __saved: Date.now()
558
+ },
559
+ !!api && (api as ApiObject).replaceData
560
+ );
561
+ self.updatedAt = Date.now();
562
+ }
563
+
564
+ if (!json.ok) {
565
+ self.updateMessage(
566
+ json.msg ?? options.errorMessage ?? self.__('saveFailed'),
567
+ true
568
+ );
569
+ getEnv(self).notify(
570
+ 'error',
571
+ self.msg,
572
+ json.msgTimeout !== undefined
573
+ ? {
574
+ closeButton: true,
575
+ timeout: json.msgTimeout
576
+ }
577
+ : undefined
578
+ );
579
+ throw new ServerError(self.msg);
580
+ } else {
581
+ self.updateMessage(json.msg ?? options.successMessage);
582
+ self.msg &&
583
+ getEnv(self).notify(
584
+ 'success',
585
+ self.msg,
586
+ json.msgTimeout !== undefined
587
+ ? {
588
+ closeButton: true,
589
+ timeout: json.msgTimeout
590
+ }
591
+ : undefined
592
+ );
593
+ }
594
+ return json.data;
595
+ } catch (e) {
596
+ self.markSaving(false);
597
+
598
+ if (!isAlive(self) || self.disposed) {
599
+ return;
600
+ }
601
+
602
+ e.type !== 'ServerError' && getEnv(self).notify('error', e.message);
603
+ throw e;
604
+ }
605
+ });
606
+
607
+ return {
608
+ update,
609
+ persistSaveToggledColumns,
610
+ setOrderByInfo,
611
+ updateQuery,
612
+ initRows,
613
+ updateSelected,
614
+ updateExpanded,
615
+
616
+ // events
617
+ afterCreate() {
618
+ setTimeout(() => {
619
+ if (!isAlive(self)) {
620
+ return;
621
+ }
622
+ const key =
623
+ location.pathname +
624
+ self.path +
625
+ self.toggableColumns.map(item => item.key || item.index).join('-');
626
+
627
+ const data = localStorage.getItem(key);
628
+
629
+ if (data) {
630
+ const selectedColumns = JSON.parse(data);
631
+ self.toggableColumns.forEach(item =>
632
+ item.setToggled(!!~selectedColumns.indexOf(item.index))
633
+ );
634
+ }
635
+ }, 200);
636
+ },
637
+ saveRemote,
638
+
639
+ getRowByIndex(rowIndex: number) {
640
+ return self.rows[rowIndex];
641
+ }
642
+ };
643
+ });
644
+
645
+ export type ITableStore = Instance<typeof TableStoreV2>;
646
+ export type STableStore = SnapshotIn<typeof TableStoreV2>;
@@ -497,7 +497,7 @@ export const TableStore = iRendererStore
497
497
  prev.has.push(current);
498
498
  } else {
499
499
  groups.push({
500
- label: current.groupName,
500
+ label: current.groupName || ' ', // 如果中间没有配置groupName,那么样式会错乱,这里加一个空白字符,当做一个占位表头
501
501
  colSpan: 1,
502
502
  rowSpan: 1,
503
503
  index: current.index,