amis 1.8.0-beta.5 → 1.8.0-beta.9

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 (273) hide show
  1. package/lib/Schema.d.ts +9 -2
  2. package/lib/Schema.js.map +1 -1
  3. package/lib/actions/PageAction.d.ts +32 -0
  4. package/lib/actions/PageAction.js +72 -0
  5. package/lib/actions/PageAction.js.map +13 -0
  6. package/lib/actions/index.d.ts +1 -0
  7. package/lib/actions/index.js +1 -0
  8. package/lib/actions/index.js.map +2 -2
  9. package/lib/components/CalendarMobile.d.ts +84 -84
  10. package/lib/components/Cascader.d.ts +2 -0
  11. package/lib/components/Cascader.js +28 -12
  12. package/lib/components/Cascader.js.map +2 -2
  13. package/lib/components/Checkbox.js +2 -2
  14. package/lib/components/Checkbox.js.map +2 -2
  15. package/lib/components/Collapse.d.ts +20 -20
  16. package/lib/components/DatePicker.d.ts +84 -84
  17. package/lib/components/DatePicker.js +5 -5
  18. package/lib/components/DatePicker.js.map +2 -2
  19. package/lib/components/Drawer.js +1 -1
  20. package/lib/components/Drawer.js.map +2 -2
  21. package/lib/components/ListGroup.d.ts +21 -21
  22. package/lib/components/Modal.js +1 -1
  23. package/lib/components/Modal.js.map +2 -2
  24. package/lib/components/Overlay.d.ts +1 -0
  25. package/lib/components/Overlay.js +4 -3
  26. package/lib/components/Overlay.js.map +2 -2
  27. package/lib/components/PullRefresh.d.ts +86 -0
  28. package/lib/components/PullRefresh.js +135 -0
  29. package/lib/components/PullRefresh.js.map +13 -0
  30. package/lib/components/Spinner.d.ts +200 -107
  31. package/lib/components/Spinner.js +30 -26
  32. package/lib/components/Spinner.js.map +2 -2
  33. package/lib/components/Tooltip.d.ts +4 -0
  34. package/lib/components/Tooltip.js +6 -4
  35. package/lib/components/Tooltip.js.map +2 -2
  36. package/lib/components/TooltipWrapper.d.ts +60 -4
  37. package/lib/components/TooltipWrapper.js +27 -8
  38. package/lib/components/TooltipWrapper.js.map +2 -2
  39. package/lib/components/Transfer.d.ts +84 -84
  40. package/lib/components/TransferDropDown.d.ts +84 -84
  41. package/lib/components/Tree.d.ts +87 -85
  42. package/lib/components/Tree.js +13 -5
  43. package/lib/components/Tree.js.map +2 -2
  44. package/lib/components/TreeSelection.d.ts +84 -84
  45. package/lib/components/calendar/TimeView.d.ts +1 -0
  46. package/lib/components/calendar/TimeView.js +7 -0
  47. package/lib/components/calendar/TimeView.js.map +2 -2
  48. package/lib/components/condition-builder/Expression.d.ts +1 -0
  49. package/lib/components/condition-builder/Expression.js +4 -4
  50. package/lib/components/condition-builder/Expression.js.map +2 -2
  51. package/lib/components/condition-builder/Field.d.ts +1 -0
  52. package/lib/components/condition-builder/Field.js +3 -2
  53. package/lib/components/condition-builder/Field.js.map +2 -2
  54. package/lib/components/condition-builder/Group.d.ts +1 -0
  55. package/lib/components/condition-builder/Group.js +2 -2
  56. package/lib/components/condition-builder/Group.js.map +2 -2
  57. package/lib/components/condition-builder/GroupOrItem.d.ts +1 -0
  58. package/lib/components/condition-builder/GroupOrItem.js +2 -2
  59. package/lib/components/condition-builder/GroupOrItem.js.map +2 -2
  60. package/lib/components/condition-builder/InputSwitch.d.ts +2 -1
  61. package/lib/components/condition-builder/InputSwitch.js +2 -2
  62. package/lib/components/condition-builder/InputSwitch.js.map +2 -2
  63. package/lib/components/condition-builder/Item.d.ts +1 -0
  64. package/lib/components/condition-builder/Item.js +9 -8
  65. package/lib/components/condition-builder/Item.js.map +2 -2
  66. package/lib/components/condition-builder/Value.d.ts +1 -0
  67. package/lib/components/condition-builder/Value.js +5 -5
  68. package/lib/components/condition-builder/Value.js.map +2 -2
  69. package/lib/components/condition-builder/index.d.ts +1 -0
  70. package/lib/components/condition-builder/index.js +2 -2
  71. package/lib/components/condition-builder/index.js.map +2 -2
  72. package/lib/components/formula/Editor.d.ts +87 -85
  73. package/lib/components/formula/Editor.js +10 -6
  74. package/lib/components/formula/Editor.js.map +2 -2
  75. package/lib/components/formula/Picker.js +3 -1
  76. package/lib/components/formula/Picker.js.map +2 -2
  77. package/lib/index.js +1 -1
  78. package/lib/locale/de-DE.js +5 -1
  79. package/lib/locale/de-DE.js.map +2 -2
  80. package/lib/locale/en-US.js +5 -1
  81. package/lib/locale/en-US.js.map +2 -2
  82. package/lib/locale/zh-CN.js +5 -1
  83. package/lib/locale/zh-CN.js.map +2 -2
  84. package/lib/renderers/CRUD.js +1 -1
  85. package/lib/renderers/CRUD.js.map +2 -2
  86. package/lib/renderers/Form/Combo.d.ts +2 -1
  87. package/lib/renderers/Form/Combo.js +51 -14
  88. package/lib/renderers/Form/Combo.js.map +2 -2
  89. package/lib/renderers/Form/DiffEditor.d.ts +1 -0
  90. package/lib/renderers/Form/InputCity.d.ts +84 -84
  91. package/lib/renderers/Form/InputDate.js +10 -3
  92. package/lib/renderers/Form/InputDate.js.map +2 -2
  93. package/lib/renderers/Form/InputDateRange.js +12 -3
  94. package/lib/renderers/Form/InputDateRange.js.map +2 -2
  95. package/lib/renderers/Form/InputFile.js +13 -5
  96. package/lib/renderers/Form/InputFile.js.map +2 -2
  97. package/lib/renderers/Form/InputImage.js +12 -4
  98. package/lib/renderers/Form/InputImage.js.map +2 -2
  99. package/lib/renderers/Form/InputMonthRange.js +5 -1
  100. package/lib/renderers/Form/InputMonthRange.js.map +2 -2
  101. package/lib/renderers/Form/InputText.js +8 -4
  102. package/lib/renderers/Form/InputText.js.map +2 -2
  103. package/lib/renderers/Form/InputTree.d.ts +5 -0
  104. package/lib/renderers/Form/InputTree.js +51 -2
  105. package/lib/renderers/Form/InputTree.js.map +2 -2
  106. package/lib/renderers/Form/Item.d.ts +68 -70
  107. package/lib/renderers/Form/Item.js.map +2 -2
  108. package/lib/renderers/Form/NestedSelect.d.ts +4 -0
  109. package/lib/renderers/Form/NestedSelect.js +14 -5
  110. package/lib/renderers/Form/NestedSelect.js.map +2 -2
  111. package/lib/renderers/Form/Options.js +61 -27
  112. package/lib/renderers/Form/Options.js.map +2 -2
  113. package/lib/renderers/Form/Select.js +4 -2
  114. package/lib/renderers/Form/Select.js.map +2 -2
  115. package/lib/renderers/Form/TreeSelect.d.ts +11 -2
  116. package/lib/renderers/Form/TreeSelect.js +56 -10
  117. package/lib/renderers/Form/TreeSelect.js.map +2 -2
  118. package/lib/renderers/Form/wrapControl.js +3 -3
  119. package/lib/renderers/Form/wrapControl.js.map +2 -2
  120. package/lib/renderers/Nav.d.ts +82 -67
  121. package/lib/renderers/Nav.js +47 -11
  122. package/lib/renderers/Nav.js.map +2 -2
  123. package/lib/renderers/Page.d.ts +20 -0
  124. package/lib/renderers/Page.js +51 -14
  125. package/lib/renderers/Page.js.map +2 -2
  126. package/lib/renderers/Service.d.ts +2 -0
  127. package/lib/renderers/Service.js +52 -20
  128. package/lib/renderers/Service.js.map +2 -2
  129. package/lib/renderers/Spinner.d.ts +58 -2
  130. package/lib/renderers/Spinner.js +8 -1
  131. package/lib/renderers/Spinner.js.map +2 -2
  132. package/lib/renderers/Table/ColumnToggler.d.ts +4 -0
  133. package/lib/renderers/Table/ColumnToggler.js +11 -6
  134. package/lib/renderers/Table/ColumnToggler.js.map +2 -2
  135. package/lib/renderers/Table/TableCell.js +27 -1
  136. package/lib/renderers/Table/TableCell.js.map +2 -2
  137. package/lib/renderers/Table/index.d.ts +1 -0
  138. package/lib/renderers/Table/index.js +19 -11
  139. package/lib/renderers/Table/index.js.map +2 -2
  140. package/lib/renderers/TooltipWrapper.d.ts +31 -6
  141. package/lib/renderers/TooltipWrapper.js +18 -8
  142. package/lib/renderers/TooltipWrapper.js.map +2 -2
  143. package/lib/renderers/Wizard.js +23 -14
  144. package/lib/renderers/Wizard.js.map +2 -2
  145. package/lib/store/crud.js +23 -13
  146. package/lib/store/crud.js.map +2 -2
  147. package/lib/themes/ang-ie11.css +313 -100
  148. package/lib/themes/ang.css +322 -103
  149. package/lib/themes/ang.css.map +1 -1
  150. package/lib/themes/antd-ie11.css +429 -216
  151. package/lib/themes/antd.css +323 -104
  152. package/lib/themes/antd.css.map +1 -1
  153. package/lib/themes/cxd-ie11.css +424 -211
  154. package/lib/themes/cxd.css +324 -105
  155. package/lib/themes/cxd.css.map +1 -1
  156. package/lib/themes/dark-ie11.css +313 -100
  157. package/lib/themes/dark.css +322 -103
  158. package/lib/themes/dark.css.map +1 -1
  159. package/lib/themes/default-ie11.css +424 -211
  160. package/lib/themes/default.css +324 -105
  161. package/lib/themes/default.css.map +1 -1
  162. package/lib/types.d.ts +3 -1
  163. package/lib/types.js.map +1 -1
  164. package/lib/utils/ColorScale.d.ts +19 -0
  165. package/lib/utils/ColorScale.js +104 -0
  166. package/lib/utils/ColorScale.js.map +13 -0
  167. package/lib/utils/api.js +20 -4
  168. package/lib/utils/api.js.map +2 -2
  169. package/lib/utils/dom.d.ts +1 -1
  170. package/lib/utils/dom.js +7 -5
  171. package/lib/utils/dom.js.map +2 -2
  172. package/package.json +3 -2
  173. package/schema.json +29645 -29137
  174. package/scss/_properties.scss +33 -15
  175. package/scss/components/_column-toggler.scss +21 -11
  176. package/scss/components/_formula.scss +1 -1
  177. package/scss/components/_nav.scss +51 -6
  178. package/scss/components/_pull-refresh.scss +25 -0
  179. package/scss/components/_spinner.scss +134 -56
  180. package/scss/components/_tooltip.scss +4 -9
  181. package/scss/components/form/_checks.scss +1 -0
  182. package/scss/components/form/_combo.scss +13 -1
  183. package/scss/components/form/_date-range.scss +11 -2
  184. package/scss/components/form/_date.scss +11 -0
  185. package/scss/components/form/_file.scss +4 -0
  186. package/scss/components/form/_form.scss +15 -8
  187. package/scss/components/form/_transfer.scss +3 -2
  188. package/scss/themes/_antd-variables.scss +1 -1
  189. package/scss/themes/_common.scss +1 -0
  190. package/scss/themes/_cxd-variables.scss +2 -2
  191. package/sdk/ang-ie11.css +286 -80
  192. package/sdk/ang.css +294 -82
  193. package/sdk/antd-ie11.css +402 -196
  194. package/sdk/antd.css +295 -83
  195. package/sdk/barcode.js +51 -51
  196. package/sdk/charts.js +14 -14
  197. package/sdk/codemirror.js +7 -7
  198. package/sdk/color-picker.js +65 -65
  199. package/sdk/cropperjs.js +2 -2
  200. package/sdk/cxd-ie11.css +397 -191
  201. package/sdk/cxd.css +296 -84
  202. package/sdk/dark-ie11.css +286 -80
  203. package/sdk/dark.css +294 -82
  204. package/sdk/exceljs.js +1 -1
  205. package/sdk/locale/de-DE.js +5 -1
  206. package/sdk/markdown.js +69 -69
  207. package/sdk/papaparse.js +1 -1
  208. package/sdk/renderers/Form/CityDB.js +1 -1
  209. package/sdk/rest.js +17 -17
  210. package/sdk/rich-text.js +62 -62
  211. package/sdk/sdk-ie11.css +397 -191
  212. package/sdk/sdk.css +296 -84
  213. package/sdk/sdk.js +1300 -1260
  214. package/sdk/thirds/hls.js/hls.js +1 -1
  215. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  216. package/sdk/tinymce.js +57 -57
  217. package/src/Schema.ts +10 -0
  218. package/src/actions/PageAction.ts +62 -0
  219. package/src/actions/index.ts +1 -0
  220. package/src/components/Cascader.tsx +37 -11
  221. package/src/components/Checkbox.tsx +1 -1
  222. package/src/components/DatePicker.tsx +7 -5
  223. package/src/components/Drawer.tsx +1 -0
  224. package/src/components/Modal.tsx +1 -0
  225. package/src/components/Overlay.tsx +6 -3
  226. package/src/components/PullRefresh.tsx +197 -0
  227. package/src/components/Spinner.tsx +77 -42
  228. package/src/components/Tooltip.tsx +12 -3
  229. package/src/components/TooltipWrapper.tsx +120 -33
  230. package/src/components/Tree.tsx +19 -5
  231. package/src/components/calendar/TimeView.tsx +12 -0
  232. package/src/components/condition-builder/Expression.tsx +6 -1
  233. package/src/components/condition-builder/Field.tsx +5 -1
  234. package/src/components/condition-builder/Group.tsx +4 -1
  235. package/src/components/condition-builder/GroupOrItem.tsx +4 -1
  236. package/src/components/condition-builder/InputSwitch.tsx +4 -1
  237. package/src/components/condition-builder/Item.tsx +28 -4
  238. package/src/components/condition-builder/Value.tsx +7 -1
  239. package/src/components/condition-builder/index.tsx +4 -2
  240. package/src/components/formula/Editor.tsx +20 -15
  241. package/src/components/formula/Picker.tsx +9 -5
  242. package/src/locale/de-DE.ts +5 -1
  243. package/src/locale/en-US.ts +5 -1
  244. package/src/locale/zh-CN.ts +5 -1
  245. package/src/renderers/CRUD.tsx +1 -1
  246. package/src/renderers/Form/Combo.tsx +102 -46
  247. package/src/renderers/Form/InputDate.tsx +18 -4
  248. package/src/renderers/Form/InputDateRange.tsx +19 -2
  249. package/src/renderers/Form/InputFile.tsx +16 -4
  250. package/src/renderers/Form/InputImage.tsx +15 -3
  251. package/src/renderers/Form/InputMonthRange.tsx +7 -1
  252. package/src/renderers/Form/InputText.tsx +14 -2
  253. package/src/renderers/Form/InputTree.tsx +40 -2
  254. package/src/renderers/Form/Item.tsx +6 -0
  255. package/src/renderers/Form/NestedSelect.tsx +23 -4
  256. package/src/renderers/Form/Options.tsx +26 -7
  257. package/src/renderers/Form/Select.tsx +5 -3
  258. package/src/renderers/Form/TreeSelect.tsx +47 -9
  259. package/src/renderers/Form/wrapControl.tsx +2 -2
  260. package/src/renderers/Nav.tsx +230 -32
  261. package/src/renderers/Page.tsx +89 -33
  262. package/src/renderers/Service.tsx +62 -27
  263. package/src/renderers/Spinner.tsx +85 -3
  264. package/src/renderers/Table/ColumnToggler.tsx +36 -11
  265. package/src/renderers/Table/TableCell.tsx +39 -1
  266. package/src/renderers/Table/index.tsx +34 -21
  267. package/src/renderers/TooltipWrapper.tsx +64 -28
  268. package/src/renderers/Wizard.tsx +36 -25
  269. package/src/store/crud.ts +10 -0
  270. package/src/types.ts +4 -0
  271. package/src/utils/ColorScale.ts +138 -0
  272. package/src/utils/api.ts +26 -4
  273. package/src/utils/dom.tsx +7 -6
@@ -1,14 +1,96 @@
1
1
  import Spinner from '../components/Spinner';
2
2
  import {Renderer, RendererProps} from '../factory';
3
3
  import React from 'react';
4
+ import {BaseSchema, SchemaCollection} from '../Schema';
4
5
 
5
- interface SpinnerProps extends RendererProps {}
6
+ export interface SpinnerSchema extends BaseSchema {
7
+ /**
8
+ * 组件类型
9
+ */
10
+ type: 'spinner';
11
+
12
+ /**
13
+ * 控制Spinner显示与隐藏
14
+ */
15
+ show: boolean;
16
+
17
+ /**
18
+ * 自定义spinner的class
19
+ */
20
+ className?: string;
21
+
22
+ /**
23
+ * spin图标位置包裹元素的自定义class
24
+ */
25
+ spinnerClassName?: string;
26
+
27
+ /**
28
+ * 作为容器使用时最外层元素的class
29
+ */
30
+ spinnerWrapClassName?: string;
31
+
32
+ /**
33
+ * @deprecated 已废弃,没有作用
34
+ */
35
+ mode?: string;
36
+
37
+ /**
38
+ * spinner Icon 大小
39
+ */
40
+ size?: 'sm' | 'lg' | '';
41
+
42
+ /**
43
+ * 自定义icon
44
+ */
45
+ icon?: string;
46
+
47
+ /**
48
+ * spinner文案
49
+ */
50
+ tip?: string;
51
+
52
+ /**
53
+ * spinner文案位置
54
+ */
55
+ tipPlacement?: 'top' | 'right' | 'bottom' | 'left';
56
+
57
+ /**
58
+ * 延迟显示
59
+ */
60
+ delay?: number;
61
+
62
+ /**
63
+ * 是否显示遮罩层
64
+ */
65
+ overlay?: boolean;
66
+
67
+ /**
68
+ * 作为容器使用时内容
69
+ */
70
+ body?: SchemaCollection;
71
+ }
72
+
73
+ interface SpinnerRenderProps
74
+ extends RendererProps,
75
+ Omit<SpinnerSchema, 'className'> {}
6
76
 
7
77
  @Renderer({
8
78
  type: 'spinner'
9
79
  })
10
- export class SpinnerRenderer extends React.Component<SpinnerProps> {
80
+ export class SpinnerRenderer extends React.Component<SpinnerRenderProps> {
81
+ renderBody() {
82
+ const {body, render} = this.props;
83
+ return body ? render('body', body) : null;
84
+ }
11
85
  render() {
12
- return <Spinner {...this.props} />;
86
+ const {classnames: cx, spinnerWrapClassName, body, ...rest} = this.props;
87
+ return body ? (
88
+ <div className={cx(`Spinner-wrap`, spinnerWrapClassName)}>
89
+ <Spinner {...rest}></Spinner>
90
+ {this.renderBody()}
91
+ </div>
92
+ ) : (
93
+ <Spinner {...rest}></Spinner>
94
+ );
13
95
  }
14
96
  }
@@ -13,6 +13,8 @@ import type {TooltipObject} from '../../components/TooltipWrapper';
13
13
  import {noop, autobind} from '../../utils/helper';
14
14
  import {filter} from '../../utils/tpl';
15
15
  import {Icon} from '../../components/icons';
16
+ import {getIcon} from '../../components/icons';
17
+ import {generateIcon} from '../../utils/icon';
16
18
  import {RootClose} from '../../utils/RootClose';
17
19
  import {IColumn} from '../../store/table';
18
20
 
@@ -112,6 +114,11 @@ export interface ColumnTogglerProps extends RendererProps {
112
114
  */
113
115
  columns: Array<IColumn>;
114
116
 
117
+ /**
118
+ * 弹窗底部按钮大小
119
+ */
120
+ footerBtnSize?: 'xs' | 'sm' | 'md' | 'lg';
121
+
115
122
  onColumnToggle: (columns: Array<IColumn>) => void;
116
123
  modalContainer?: () => HTMLElement;
117
124
  }
@@ -326,7 +333,8 @@ export default class ColumnToggler extends React.Component<
326
333
  modalContainer,
327
334
  draggable,
328
335
  overlay,
329
- translate: __
336
+ translate: __,
337
+ footerBtnSize
330
338
  } = this.props;
331
339
 
332
340
  const {enableSorting, tempColumns} = this.state;
@@ -372,13 +380,14 @@ export default class ColumnToggler extends React.Component<
372
380
  <a className={cx('ColumnToggler-menuItem-dragBar')}>
373
381
  <Icon icon="drag-bar" className={cx('icon')} />
374
382
  </a>
375
- <span>
376
- {column.label ? render('tpl', column.label) : null}
383
+ <span className={cx('ColumnToggler-menuItem-label')}>
384
+ <span>{column.label || '-'}</span>
377
385
  </span>
378
386
  </>
379
387
  ) : (
380
388
  <Checkbox
381
389
  size="sm"
390
+ labelClassName={cx('ColumnToggler-menuItem-label')}
382
391
  classPrefix={ns}
383
392
  checked={column.toggled}
384
393
  disabled={!column.toggable || enableSorting}
@@ -388,9 +397,7 @@ export default class ColumnToggler extends React.Component<
388
397
  index
389
398
  )}
390
399
  >
391
- <span>
392
- {column.label ? render('tpl', column.label) : null}
393
- </span>
400
+ <span>{column.label || '-'}</span>
394
401
  </Checkbox>
395
402
  )}
396
403
  </li>
@@ -430,10 +437,18 @@ export default class ColumnToggler extends React.Component<
430
437
  </Button>
431
438
  </div>
432
439
  <div>
433
- <Button className="mr-4" onClick={this.close}>
440
+ <Button
441
+ size={footerBtnSize}
442
+ className="mr-3"
443
+ onClick={this.close}
444
+ >
434
445
  {__('cancel')}
435
446
  </Button>
436
- <Button level="primary" onClick={this.onConfirm}>
447
+ <Button
448
+ size={footerBtnSize}
449
+ level="primary"
450
+ onClick={this.onConfirm}
451
+ >
437
452
  {__('confirm')}
438
453
  </Button>
439
454
  </div>
@@ -492,11 +507,21 @@ export default class ColumnToggler extends React.Component<
492
507
  >
493
508
  {icon ? (
494
509
  typeof icon === 'string' ? (
495
- <i className={cx(icon, 'm-r-xs')} />
510
+ getIcon(icon!) ? (
511
+ <Icon icon={icon} className={cx('icon', {'m-r-xs': !!label})} />
512
+ ) : (
513
+ generateIcon(cx, icon, label ? 'm-r-xs' : '')
514
+ )
515
+ ) : React.isValidElement(icon) ? (
516
+ React.cloneElement(icon, {
517
+ className: cx({'m-r-xs': !!label})
518
+ })
496
519
  ) : (
497
- icon
520
+ <Icon icon="columns" className="icon m-r-none" />
498
521
  )
499
- ) : null}
522
+ ) : (
523
+ <Icon icon="columns" className="icon m-r-none" />
524
+ )}
500
525
  {typeof label === 'string' ? filter(label, data) : label}
501
526
  {hideExpandIcon || draggable ? null : (
502
527
  <span className={cx('ColumnToggler-caret')}>
@@ -7,6 +7,11 @@ import {observer} from 'mobx-react';
7
7
  import omit = require('lodash/omit');
8
8
  import {filter} from '../../utils/tpl';
9
9
  import {Badge} from '../../components/Badge';
10
+ import ColorScale from '../../utils/ColorScale';
11
+ import {
12
+ isPureVariable,
13
+ resolveVariableAndFilter
14
+ } from '../../utils/tpl-builtin';
10
15
 
11
16
  export interface TableCellProps extends RendererProps {
12
17
  wrapperComponent?: React.ReactType;
@@ -34,7 +39,7 @@ export class TableCell extends React.Component<RendererProps> {
34
39
  className,
35
40
  classNameExpr,
36
41
  render,
37
- style,
42
+ style = {},
38
43
  wrapperComponent: Component,
39
44
  column,
40
45
  value,
@@ -106,6 +111,39 @@ export class TableCell extends React.Component<RendererProps> {
106
111
  };
107
112
  }
108
113
 
114
+ if (column.backgroundScale) {
115
+ const backgroundScale = column.backgroundScale;
116
+ let min = backgroundScale.min;
117
+ let max = backgroundScale.max;
118
+
119
+ if (isPureVariable(min)) {
120
+ min = resolveVariableAndFilter(min, data, '| raw');
121
+ }
122
+ if (isPureVariable(max)) {
123
+ max = resolveVariableAndFilter(max, data, '| raw');
124
+ }
125
+
126
+ if (typeof min === 'undefined') {
127
+ min = Math.min(...data.rows.map((r: any) => r[column.name]));
128
+ }
129
+ if (typeof max === 'undefined') {
130
+ max = Math.max(...data.rows.map((r: any) => r[column.name]));
131
+ }
132
+
133
+ const colorScale = new ColorScale(
134
+ min,
135
+ max,
136
+ backgroundScale.colors || ['#FFEF9C', '#FF7127']
137
+ );
138
+ let value = data[column.name];
139
+ if (isPureVariable(backgroundScale.source)) {
140
+ value = resolveVariableAndFilter(backgroundScale.source, data, '| raw');
141
+ }
142
+
143
+ const color = colorScale.getColor(Number(value)).toHexString();
144
+ style.background = color;
145
+ }
146
+
109
147
  if (!Component) {
110
148
  return body as JSX.Element;
111
149
  }
@@ -370,6 +370,7 @@ export interface TableProps extends RendererProps {
370
370
  type ExportExcelToolbar = SchemaNode & {
371
371
  api?: SchemaApi;
372
372
  columns?: string[];
373
+ exportColumns?: any[];
373
374
  filename?: string;
374
375
  };
375
376
 
@@ -2202,9 +2203,8 @@ export default class Table extends React.Component<TableProps, object> {
2202
2203
  classPrefix={ns}
2203
2204
  key="columns-toggable"
2204
2205
  size={config?.size || 'sm'}
2205
- label={
2206
- config?.label || <Icon icon="columns" className="icon m-r-none" />
2207
- }
2206
+ icon={config?.icon}
2207
+ label={config?.label}
2208
2208
  draggable={config?.draggable}
2209
2209
  columns={store.columnsData}
2210
2210
  onColumnToggle={this.handleColumnToggle}
@@ -2261,18 +2261,25 @@ export default class Table extends React.Component<TableProps, object> {
2261
2261
  classPrefix: ns,
2262
2262
  classnames: cx,
2263
2263
  translate: __,
2264
- columns,
2265
- data
2264
+ data,
2265
+ render
2266
2266
  } = this.props;
2267
2267
 
2268
+ let columns = store.filteredColumns || [];
2269
+
2268
2270
  if (!columns) {
2269
2271
  return null;
2270
2272
  }
2271
2273
 
2272
- return (
2273
- <Button
2274
- classPrefix={ns}
2275
- onClick={() => {
2274
+ return render(
2275
+ 'exportExcel',
2276
+ {
2277
+ label: __('CRUD.exportExcel'),
2278
+ ...(toolbar as any),
2279
+ type: 'button'
2280
+ },
2281
+ {
2282
+ onAction: () => {
2276
2283
  import('exceljs').then(async (ExcelJS: any) => {
2277
2284
  let rows = [];
2278
2285
  let tmpStore;
@@ -2312,19 +2319,28 @@ export default class Table extends React.Component<TableProps, object> {
2312
2319
  });
2313
2320
  worksheet.views = [{state: 'frozen', xSplit: 0, ySplit: 1}];
2314
2321
 
2315
- let exportColumns = toolbar.columns;
2316
- if (isPureVariable(exportColumns)) {
2317
- exportColumns = resolveVariableAndFilter(
2318
- exportColumns,
2322
+ let exportColumnNames = toolbar.columns;
2323
+
2324
+ if (isPureVariable(exportColumnNames)) {
2325
+ exportColumnNames = resolveVariableAndFilter(
2326
+ exportColumnNames,
2319
2327
  data,
2320
2328
  '| raw'
2321
2329
  );
2322
2330
  }
2323
2331
 
2324
- const filteredColumns = exportColumns
2332
+ // 自定义导出列配置
2333
+ if (toolbar.exportColumns && Array.isArray(toolbar.exportColumns)) {
2334
+ columns = toolbar.exportColumns;
2335
+ }
2336
+
2337
+ const filteredColumns = exportColumnNames
2325
2338
  ? columns.filter(column => {
2326
- const filterColumnsNames = exportColumns!;
2327
- if (filterColumnsNames.indexOf(column.name) !== -1) {
2339
+ const filterColumnsNames = exportColumnNames!;
2340
+ if (
2341
+ column.name &&
2342
+ filterColumnsNames.indexOf(column.name) !== -1
2343
+ ) {
2328
2344
  return true;
2329
2345
  }
2330
2346
  return false;
@@ -2505,11 +2521,8 @@ export default class Table extends React.Component<TableProps, object> {
2505
2521
  saveAs(blob, filename + '.xlsx');
2506
2522
  }
2507
2523
  });
2508
- }}
2509
- size="sm"
2510
- >
2511
- {(toolbar as Schema).label || __('CRUD.exportExcel')}
2512
- </Button>
2524
+ }
2525
+ }
2513
2526
  );
2514
2527
  }
2515
2528
 
@@ -6,7 +6,7 @@ import {escapeHtml} from '../utils/tpl-builtin';
6
6
  import {buildStyle} from '../utils/style';
7
7
  import {TooltipWrapper as TooltipWrapperComp} from '../components';
8
8
 
9
- import type {Trigger} from '../components/TooltipWrapper';
9
+ import type {Trigger, TooltipObject} from '../components/TooltipWrapper';
10
10
 
11
11
  export interface TooltipWrapperSchema extends BaseSchema {
12
12
  /**
@@ -20,7 +20,12 @@ export interface TooltipWrapperSchema extends BaseSchema {
20
20
  title?: string;
21
21
 
22
22
  /**
23
- * 文字提示
23
+ * 文字提示内容,兼容 tooltip,但建议通过 content 来实现提示内容
24
+ */
25
+ content?: string;
26
+
27
+ /**
28
+ * @deprecated 文字提示内容
24
29
  */
25
30
  tooltip?: string;
26
31
 
@@ -29,15 +34,35 @@ export interface TooltipWrapperSchema extends BaseSchema {
29
34
  */
30
35
  placement?: 'top' | 'right' | 'bottom' | 'left';
31
36
 
37
+ /**
38
+ * 浮层位置相对偏移量
39
+ */
40
+ offset?: [number, number];
41
+
42
+ /**
43
+ * 是否展示浮层指向箭头
44
+ */
45
+ showArrow?: boolean;
46
+
47
+ /**
48
+ * 是否禁用提示
49
+ */
50
+ disabled?: boolean;
51
+
32
52
  /**
33
53
  * 浮层触发方式,默认为hover
34
54
  */
35
55
  trigger?: Trigger | Array<Trigger>;
36
56
 
37
57
  /**
38
- * 浮层隐藏延迟时间,单位ms,默认0
58
+ * 浮层延迟显示时间, 单位 ms
59
+ */
60
+
61
+ mouseEnterDelay?: number;
62
+ /**
63
+ * 浮层延迟隐藏时间, 单位 ms
39
64
  */
40
- delay?: number;
65
+ mouseLeaveDelay?: number;
41
66
 
42
67
  /**
43
68
  * 是否点击非内容区域关闭提示,默认为true
@@ -60,7 +85,7 @@ export interface TooltipWrapperSchema extends BaseSchema {
60
85
  inline?: boolean;
61
86
 
62
87
  /**
63
- * 浮层主题色,默认为light
88
+ * 主题样式, 默认为light
64
89
  */
65
90
  tooltipTheme?: 'light' | 'dark';
66
91
 
@@ -97,6 +122,7 @@ export interface TooltipWrapperProps extends RendererProps {
97
122
  /**
98
123
  * 文字提示
99
124
  */
125
+ content?: string;
100
126
  tooltip?: string;
101
127
  /**
102
128
  * 文字提示位置
@@ -105,7 +131,11 @@ export interface TooltipWrapperProps extends RendererProps {
105
131
  inline?: boolean;
106
132
  trigger: Trigger | Array<Trigger>;
107
133
  rootClose?: boolean;
108
- delay?: number;
134
+ showArrow?: boolean;
135
+ offset?: [number, number];
136
+ disabled?: boolean;
137
+ mouseEnterDelay?: number;
138
+ mouseLeaveDelay?: number;
109
139
  container?: React.ReactNode;
110
140
  style?: React.CSSProperties;
111
141
  tooltipStyle?: React.CSSProperties;
@@ -124,7 +154,8 @@ export default class TooltipWrapper extends React.Component<
124
154
  | 'placement'
125
155
  | 'trigger'
126
156
  | 'rootClose'
127
- | 'delay'
157
+ | 'mouseEnterDelay'
158
+ | 'mouseLeaveDelay'
128
159
  | 'inline'
129
160
  | 'wrap'
130
161
  | 'tooltipTheme'
@@ -132,7 +163,8 @@ export default class TooltipWrapper extends React.Component<
132
163
  placement: 'top',
133
164
  trigger: 'hover',
134
165
  rootClose: true,
135
- delay: 0,
166
+ mouseEnterDelay: 0,
167
+ mouseLeaveDelay: 200,
136
168
  inline: false,
137
169
  wrap: false,
138
170
  tooltipTheme: 'light'
@@ -172,41 +204,45 @@ export default class TooltipWrapper extends React.Component<
172
204
 
173
205
  render() {
174
206
  const {
175
- tooltipClassName,
176
207
  classPrefix: ns,
177
208
  classnames: cx,
209
+ tooltipClassName,
210
+ tooltipTheme,
178
211
  container,
179
212
  placement,
180
213
  rootClose,
181
214
  tooltipStyle,
182
215
  title,
216
+ content,
183
217
  tooltip,
184
- delay,
218
+ mouseEnterDelay,
219
+ mouseLeaveDelay,
185
220
  trigger,
186
- tooltipTheme,
221
+ offset,
222
+ showArrow,
223
+ disabled,
187
224
  data
188
225
  } = this.props;
189
226
 
190
- const tooltipObj = {
191
- title: escapeHtml(filter(title, data)),
192
- content: escapeHtml(filter(tooltip, data))
227
+ const tooltipObj: TooltipObject = {
228
+ title: filter(title, data),
229
+ content: filter(content || tooltip, data),
230
+ style: buildStyle(tooltipStyle, data),
231
+ placement,
232
+ trigger,
233
+ rootClose,
234
+ container,
235
+ tooltipTheme,
236
+ tooltipClassName,
237
+ mouseEnterDelay,
238
+ mouseLeaveDelay,
239
+ offset,
240
+ showArrow,
241
+ disabled
193
242
  };
194
243
 
195
244
  return (
196
- <TooltipWrapperComp
197
- classPrefix={ns}
198
- classnames={cx}
199
- style={buildStyle(tooltipStyle, data)}
200
- placement={placement}
201
- tooltip={tooltipObj}
202
- trigger={trigger}
203
- rootClose={rootClose}
204
- delay={delay}
205
- container={container}
206
- tooltipClassName={cx(tooltipClassName, {
207
- 'Tooltip--dark': tooltipTheme === 'dark'
208
- })}
209
- >
245
+ <TooltipWrapperComp classPrefix={ns} classnames={cx} tooltip={tooltipObj}>
210
246
  {this.renderBody()}
211
247
  </TooltipWrapperComp>
212
248
  );