amis 1.6.5-beta.3 → 1.8.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/lib/Schema.d.ts +3 -2
  2. package/lib/Schema.js +0 -1
  3. package/lib/Schema.js.map +2 -2
  4. package/lib/components/Alert2.js +4 -2
  5. package/lib/components/Alert2.js.map +2 -2
  6. package/lib/components/AssociatedSelection.d.ts +84 -84
  7. package/lib/components/Avatar.d.ts +20 -20
  8. package/lib/components/Breadcrumb.d.ts +130 -0
  9. package/lib/components/Breadcrumb.js +161 -0
  10. package/lib/components/Breadcrumb.js.map +13 -0
  11. package/lib/components/Card.d.ts +20 -20
  12. package/lib/components/ChainedSelection.d.ts +84 -84
  13. package/lib/components/CityArea.js +3 -0
  14. package/lib/components/CityArea.js.map +2 -2
  15. package/lib/components/Collapse.d.ts +20 -20
  16. package/lib/components/CollapseGroup.d.ts +20 -20
  17. package/lib/components/DatePicker.d.ts +84 -84
  18. package/lib/components/DateRangePicker.d.ts +2 -2
  19. package/lib/components/DateRangePicker.js +36 -45
  20. package/lib/components/DateRangePicker.js.map +2 -2
  21. package/lib/components/GroupedSelection.d.ts +84 -84
  22. package/lib/components/Layout.d.ts +21 -21
  23. package/lib/components/ListGroup.d.ts +21 -21
  24. package/lib/components/PopUp.js +2 -1
  25. package/lib/components/PopUp.js.map +2 -2
  26. package/lib/components/Radios.d.ts +21 -21
  27. package/lib/components/Range.js.map +2 -2
  28. package/lib/components/Selection.d.ts +84 -84
  29. package/lib/components/TableSelection.d.ts +84 -84
  30. package/lib/components/Tabs.d.ts +52 -23
  31. package/lib/components/Tabs.js +198 -46
  32. package/lib/components/Tabs.js.map +2 -2
  33. package/lib/components/TooltipWrapper.d.ts +21 -20
  34. package/lib/components/TooltipWrapper.js +2 -2
  35. package/lib/components/TooltipWrapper.js.map +2 -2
  36. package/lib/components/Transfer.d.ts +84 -84
  37. package/lib/components/TransferDropDown.d.ts +84 -84
  38. package/lib/components/Tree.d.ts +84 -84
  39. package/lib/components/TreeSelection.d.ts +84 -84
  40. package/lib/components/calendar/Calendar.js +5 -0
  41. package/lib/components/calendar/Calendar.js.map +2 -2
  42. package/lib/components/calendar/DaysView.js.map +1 -1
  43. package/lib/components/icons.js +8 -0
  44. package/lib/components/icons.js.map +2 -2
  45. package/lib/components/index.d.ts +2 -1
  46. package/lib/components/index.js +4 -2
  47. package/lib/components/index.js.map +2 -2
  48. package/lib/icons/cloud-upload.js +17 -0
  49. package/lib/icons/image.js +7 -0
  50. package/lib/icons/refresh.js +9 -0
  51. package/lib/icons/trash.js +10 -0
  52. package/lib/icons/upload.js +3 -8
  53. package/lib/index.d.ts +1 -0
  54. package/lib/index.js +2 -1
  55. package/lib/index.js.map +2 -2
  56. package/lib/locale/en-US.js +3 -1
  57. package/lib/locale/en-US.js.map +2 -2
  58. package/lib/locale/zh-CN.js +4 -2
  59. package/lib/locale/zh-CN.js.map +2 -2
  60. package/lib/renderers/Action.d.ts +1 -1
  61. package/lib/renderers/Action.js.map +2 -2
  62. package/lib/renderers/Breadcrumb.d.ts +41 -6
  63. package/lib/renderers/Breadcrumb.js +23 -19
  64. package/lib/renderers/Breadcrumb.js.map +2 -2
  65. package/lib/renderers/ButtonGroup.d.ts +2 -2
  66. package/lib/renderers/ButtonGroup.js.map +1 -1
  67. package/lib/renderers/Form/ChainedSelect.d.ts +4 -1
  68. package/lib/renderers/Form/ChainedSelect.js +83 -34
  69. package/lib/renderers/Form/ChainedSelect.js.map +2 -2
  70. package/lib/renderers/Form/Checkbox.d.ts +3 -0
  71. package/lib/renderers/Form/Checkbox.js +38 -1
  72. package/lib/renderers/Form/Checkbox.js.map +2 -2
  73. package/lib/renderers/Form/Combo.d.ts +4 -3
  74. package/lib/renderers/Form/Combo.js +81 -32
  75. package/lib/renderers/Form/Combo.js.map +2 -2
  76. package/lib/renderers/Form/DiffEditor.d.ts +1 -1
  77. package/lib/renderers/Form/InputCity.d.ts +84 -84
  78. package/lib/renderers/Form/InputCity.js +4 -1
  79. package/lib/renderers/Form/InputCity.js.map +2 -2
  80. package/lib/renderers/Form/InputColor.js +3 -1
  81. package/lib/renderers/Form/InputColor.js.map +2 -2
  82. package/lib/renderers/Form/InputDate.js +3 -1
  83. package/lib/renderers/Form/InputDate.js.map +2 -2
  84. package/lib/renderers/Form/InputDateRange.js +3 -1
  85. package/lib/renderers/Form/InputDateRange.js.map +2 -2
  86. package/lib/renderers/Form/InputExcel.d.ts +4 -0
  87. package/lib/renderers/Form/InputExcel.js +33 -6
  88. package/lib/renderers/Form/InputExcel.js.map +2 -2
  89. package/lib/renderers/Form/InputFile.d.ts +8 -1
  90. package/lib/renderers/Form/InputFile.js +71 -42
  91. package/lib/renderers/Form/InputFile.js.map +2 -2
  92. package/lib/renderers/Form/InputImage.d.ts +4 -1
  93. package/lib/renderers/Form/InputImage.js +21 -9
  94. package/lib/renderers/Form/InputImage.js.map +2 -2
  95. package/lib/renderers/Form/InputRange.d.ts +27 -9
  96. package/lib/renderers/Form/InputRange.js +88 -23
  97. package/lib/renderers/Form/InputRange.js.map +2 -2
  98. package/lib/renderers/Form/InputSubForm.js +2 -1
  99. package/lib/renderers/Form/InputSubForm.js.map +2 -2
  100. package/lib/renderers/Form/InputTag.js +2 -1
  101. package/lib/renderers/Form/InputTag.js.map +2 -2
  102. package/lib/renderers/Form/MatrixCheckboxes.js +2 -1
  103. package/lib/renderers/Form/MatrixCheckboxes.js.map +2 -2
  104. package/lib/renderers/Form/NestedSelect.d.ts +9 -6
  105. package/lib/renderers/Form/NestedSelect.js +247 -130
  106. package/lib/renderers/Form/NestedSelect.js.map +2 -2
  107. package/lib/renderers/Form/Options.js +2 -1
  108. package/lib/renderers/Form/Options.js.map +2 -2
  109. package/lib/renderers/Form/Radios.js +2 -1
  110. package/lib/renderers/Form/Radios.js.map +2 -2
  111. package/lib/renderers/Form/Select.js +6 -3
  112. package/lib/renderers/Form/Select.js.map +2 -2
  113. package/lib/renderers/Form/Switch.d.ts +7 -6
  114. package/lib/renderers/Form/Switch.js +4 -1
  115. package/lib/renderers/Form/Switch.js.map +2 -2
  116. package/lib/renderers/Log.js +2 -1
  117. package/lib/renderers/Log.js.map +2 -2
  118. package/lib/renderers/PopOver.js +1 -1
  119. package/lib/renderers/PopOver.js.map +2 -2
  120. package/lib/renderers/Tabs.d.ts +58 -5
  121. package/lib/renderers/Tabs.js +170 -58
  122. package/lib/renderers/Tabs.js.map +2 -2
  123. package/lib/renderers/TooltipWrapper.d.ts +104 -0
  124. package/lib/renderers/TooltipWrapper.js +59 -0
  125. package/lib/renderers/TooltipWrapper.js.map +13 -0
  126. package/lib/renderers/Video.d.ts +6 -0
  127. package/lib/renderers/Video.js +13 -6
  128. package/lib/renderers/Video.js.map +2 -2
  129. package/lib/store/form.js +4 -13
  130. package/lib/store/form.js.map +2 -2
  131. package/lib/store/table.js +1 -1
  132. package/lib/store/table.js.map +2 -2
  133. package/lib/themes/ang-ie11.css +742 -160
  134. package/lib/themes/ang.css +793 -163
  135. package/lib/themes/ang.css.map +1 -1
  136. package/lib/themes/antd-ie11.css +757 -175
  137. package/lib/themes/antd.css +793 -163
  138. package/lib/themes/antd.css.map +1 -1
  139. package/lib/themes/cxd-ie11.css +1249 -667
  140. package/lib/themes/cxd.css +970 -321
  141. package/lib/themes/cxd.css.map +1 -1
  142. package/lib/themes/dark-ie11.css +742 -160
  143. package/lib/themes/dark.css +793 -163
  144. package/lib/themes/dark.css.map +1 -1
  145. package/lib/themes/default-ie11.css +1249 -667
  146. package/lib/themes/default.css +970 -321
  147. package/lib/themes/default.css.map +1 -1
  148. package/package.json +1 -1
  149. package/schema.json +16012 -736
  150. package/scss/_properties.scss +56 -2
  151. package/scss/components/_alert.scss +1 -1
  152. package/scss/components/_breadcrumb.scss +90 -1
  153. package/scss/components/_button-group.scss +15 -0
  154. package/scss/components/_city-area.scss +2 -0
  155. package/scss/components/_popup.scss +13 -3
  156. package/scss/components/_tabs.scss +629 -132
  157. package/scss/components/_tooltip.scss +72 -0
  158. package/scss/components/form/_file.scss +82 -24
  159. package/scss/components/form/_image.scss +30 -25
  160. package/scss/components/form/_number.scss +2 -0
  161. package/scss/components/form/_switch.scss +1 -3
  162. package/scss/themes/_cxd-colors.scss +47 -47
  163. package/scss/themes/_cxd-variables.scss +20 -0
  164. package/sdk/ang-ie11.css +879 -196
  165. package/sdk/ang.css +931 -200
  166. package/sdk/antd-ie11.css +951 -268
  167. package/sdk/antd.css +931 -200
  168. package/sdk/barcode.js +51 -51
  169. package/sdk/charts.js +14 -14
  170. package/sdk/codemirror.js +7 -7
  171. package/sdk/color-picker.js +65 -65
  172. package/sdk/cropperjs.js +2 -2
  173. package/sdk/cxd-ie11.css +1386 -703
  174. package/sdk/cxd.css +1107 -357
  175. package/sdk/dark-ie11.css +879 -196
  176. package/sdk/dark.css +931 -200
  177. package/sdk/exceljs.js +1 -1
  178. package/sdk/markdown.js +69 -69
  179. package/sdk/papaparse.js +1 -1
  180. package/sdk/renderers/Form/CityDB.js +1 -1
  181. package/sdk/rest.js +17 -17
  182. package/sdk/rich-text.js +62 -62
  183. package/sdk/sdk-ie11.css +1386 -703
  184. package/sdk/sdk.css +1107 -357
  185. package/sdk/sdk.js +1260 -1248
  186. package/sdk/thirds/hls.js/hls.js +1 -1
  187. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  188. package/sdk/tinymce.js +57 -57
  189. package/src/Schema.ts +5 -2
  190. package/src/components/Alert2.tsx +9 -3
  191. package/src/components/Breadcrumb.tsx +294 -0
  192. package/src/components/CityArea.tsx +3 -0
  193. package/src/components/DateRangePicker.tsx +40 -68
  194. package/src/components/PopUp.tsx +6 -5
  195. package/src/components/Range.tsx +7 -1
  196. package/src/components/Tabs.tsx +300 -54
  197. package/src/components/TooltipWrapper.tsx +4 -1
  198. package/src/components/calendar/Calendar.tsx +5 -0
  199. package/src/components/calendar/DaysView.tsx +2 -2
  200. package/src/components/icons.tsx +8 -0
  201. package/src/components/index.tsx +2 -0
  202. package/src/icons/cloud-upload.svg +22 -0
  203. package/src/icons/image.svg +1 -0
  204. package/src/icons/refresh.svg +7 -0
  205. package/src/icons/trash.svg +8 -0
  206. package/src/icons/upload.svg +4 -9
  207. package/src/index.tsx +1 -0
  208. package/src/locale/en-US.ts +3 -1
  209. package/src/locale/zh-CN.ts +4 -2
  210. package/src/renderers/Action.tsx +2 -1
  211. package/src/renderers/Breadcrumb.tsx +89 -45
  212. package/src/renderers/ButtonGroup.tsx +2 -2
  213. package/src/renderers/Form/ChainedSelect.tsx +56 -12
  214. package/src/renderers/Form/Checkbox.tsx +30 -1
  215. package/src/renderers/Form/Combo.tsx +84 -26
  216. package/src/renderers/Form/InputCity.tsx +13 -1
  217. package/src/renderers/Form/InputColor.tsx +2 -0
  218. package/src/renderers/Form/InputDate.tsx +2 -0
  219. package/src/renderers/Form/InputDateRange.tsx +2 -0
  220. package/src/renderers/Form/InputExcel.tsx +27 -5
  221. package/src/renderers/Form/InputFile.tsx +167 -115
  222. package/src/renderers/Form/InputImage.tsx +61 -35
  223. package/src/renderers/Form/InputRange.tsx +95 -40
  224. package/src/renderers/Form/InputSubForm.tsx +2 -1
  225. package/src/renderers/Form/InputTag.tsx +3 -1
  226. package/src/renderers/Form/MatrixCheckboxes.tsx +3 -1
  227. package/src/renderers/Form/NestedSelect.tsx +75 -26
  228. package/src/renderers/Form/Options.tsx +3 -1
  229. package/src/renderers/Form/Radios.tsx +3 -1
  230. package/src/renderers/Form/Select.tsx +6 -2
  231. package/src/renderers/Form/Switch.tsx +16 -9
  232. package/src/renderers/Log.tsx +2 -1
  233. package/src/renderers/PopOver.tsx +1 -1
  234. package/src/renderers/Tabs.tsx +254 -93
  235. package/src/renderers/TooltipWrapper.tsx +219 -0
  236. package/src/renderers/Video.tsx +21 -6
  237. package/src/store/form.ts +0 -9
  238. package/src/store/table.ts +1 -1
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import {findDOMNode} from 'react-dom';
3
+ import cloneDeep from 'lodash/cloneDeep';
3
4
  import {
4
5
  FormItem,
5
6
  FormControlProps,
@@ -9,6 +10,7 @@ import {
9
10
  import {Schema, Action, Api} from '../../types';
10
11
  import {ComboStore, IComboStore} from '../../store/combo';
11
12
  import {default as CTabs, Tab} from '../../components/Tabs';
13
+ import Button from '../../components/Button';
12
14
 
13
15
  import {
14
16
  guid,
@@ -255,6 +257,8 @@ export interface ComboControlSchema extends FormBaseControl {
255
257
  };
256
258
  }
257
259
 
260
+ export type ComboRendererEvent = 'add' | 'delete' | 'tabsChange';
261
+
258
262
  function pickVars(vars: any, fields: Array<string>) {
259
263
  return fields.reduce((data: any, key: string) => {
260
264
  data[key] = resolveVariable(key, vars);
@@ -291,6 +295,8 @@ export default class ComboControl extends React.Component<ComboProps> {
291
295
  | 'tabsMode'
292
296
  | 'tabsStyle'
293
297
  | 'placeholder'
298
+ | 'itemClassName'
299
+ | 'itemsWrapperClassName'
294
300
  > = {
295
301
  minLength: 0,
296
302
  maxLength: 0,
@@ -307,7 +313,9 @@ export default class ComboControl extends React.Component<ComboProps> {
307
313
  deleteIcon: '',
308
314
  tabsMode: false,
309
315
  tabsStyle: '',
310
- placeholder: 'placeholder.empty'
316
+ placeholder: 'placeholder.empty',
317
+ itemClassName: '',
318
+ itemsWrapperClassName: ''
311
319
  };
312
320
  static propsList: Array<string> = [
313
321
  'minLength',
@@ -334,7 +342,9 @@ export default class ComboControl extends React.Component<ComboProps> {
334
342
  'items',
335
343
  'conditions',
336
344
  'messages',
337
- 'formStore'
345
+ 'formStore',
346
+ 'itemClassName',
347
+ 'itemsWrapperClassName'
338
348
  ];
339
349
 
340
350
  subForms: Array<any> = [];
@@ -469,9 +479,17 @@ export default class ComboControl extends React.Component<ComboProps> {
469
479
  this.props.onChange(value, submitOnChange, true);
470
480
  }
471
481
 
472
- addItem() {
473
- const {flat, joinValues, delimiter, scaffold, disabled, submitOnChange} =
474
- this.props;
482
+ async addItem() {
483
+ const {
484
+ flat,
485
+ joinValues,
486
+ delimiter,
487
+ scaffold,
488
+ disabled,
489
+ submitOnChange,
490
+ data,
491
+ dispatchEvent
492
+ } = this.props;
475
493
 
476
494
  if (disabled) {
477
495
  return;
@@ -479,6 +497,18 @@ export default class ComboControl extends React.Component<ComboProps> {
479
497
 
480
498
  let value = this.getValueAsArray();
481
499
 
500
+ const rendererEvent = await dispatchEvent(
501
+ 'add',
502
+ createObject(data, {
503
+ value:
504
+ flat && joinValues ? value.join(delimiter || ',') : cloneDeep(value)
505
+ })
506
+ );
507
+
508
+ if (rendererEvent?.prevented) {
509
+ return;
510
+ }
511
+
482
512
  value.push(
483
513
  flat
484
514
  ? scaffold || ''
@@ -505,7 +535,8 @@ export default class ComboControl extends React.Component<ComboProps> {
505
535
  deleteConfirmText,
506
536
  data,
507
537
  env,
508
- translate: __
538
+ translate: __,
539
+ dispatchEvent
509
540
  } = this.props;
510
541
 
511
542
  if (disabled) {
@@ -515,6 +546,19 @@ export default class ComboControl extends React.Component<ComboProps> {
515
546
  let value = this.getValueAsArray();
516
547
  const ctx = createObject(data, value[key]);
517
548
 
549
+ const rendererEvent = await dispatchEvent(
550
+ 'delete',
551
+ createObject(data, {
552
+ key,
553
+ value:
554
+ flat && joinValues ? value.join(delimiter || ',') : cloneDeep(value)
555
+ })
556
+ );
557
+
558
+ if (rendererEvent?.prevented) {
559
+ return;
560
+ }
561
+
518
562
  if (isEffectiveApi(deleteApi, ctx)) {
519
563
  const confirmed = await env.confirm(
520
564
  deleteConfirmText ? filter(deleteConfirmText, ctx) : __('deleteConfirm')
@@ -866,8 +910,19 @@ export default class ComboControl extends React.Component<ComboProps> {
866
910
  }
867
911
 
868
912
  @autobind
869
- handleTabSelect(key: number) {
870
- const {store} = this.props;
913
+ async handleTabSelect(key: number) {
914
+ const {store, data, dispatchEvent} = this.props;
915
+
916
+ const rendererEvent = await dispatchEvent(
917
+ 'tabsChange',
918
+ createObject(data, {
919
+ key
920
+ })
921
+ );
922
+
923
+ if (rendererEvent?.prevented) {
924
+ return;
925
+ }
871
926
 
872
927
  store.setActiveKey(key);
873
928
  }
@@ -1138,7 +1193,9 @@ export default class ComboControl extends React.Component<ComboProps> {
1138
1193
  lazyLoad,
1139
1194
  changeImmediately,
1140
1195
  placeholder,
1141
- translate: __
1196
+ translate: __,
1197
+ itemClassName,
1198
+ itemsWrapperClassName
1142
1199
  } = this.props;
1143
1200
 
1144
1201
  let items = this.props.items;
@@ -1165,7 +1222,7 @@ export default class ComboControl extends React.Component<ComboProps> {
1165
1222
  : ''
1166
1223
  )}
1167
1224
  >
1168
- <div className={cx(`Combo-items`)}>
1225
+ <div className={cx(`Combo-items`, itemsWrapperClassName)}>
1169
1226
  {Array.isArray(value) && value.length ? (
1170
1227
  value.map((value, index, thelist) => {
1171
1228
  let delBtn: any = null;
@@ -1176,21 +1233,20 @@ export default class ComboControl extends React.Component<ComboProps> {
1176
1233
  evalExpression(itemRemovableOn, value) !== false)
1177
1234
  ) {
1178
1235
  delBtn = (
1179
- <a
1180
- onClick={this.removeItem.bind(this, index)}
1236
+ <Button
1181
1237
  key="remove"
1182
- className={cx(
1183
- `Combo-delBtn ${!store.removable ? 'is-disabled' : ''}`
1184
- )}
1185
- data-tooltip={__('delete')}
1186
- data-position="bottom"
1238
+ className={cx('Combo-delBtn')}
1239
+ disabled={!store.removable}
1240
+ tooltip={__('delete')}
1241
+ tooltipPlacement="bottom"
1242
+ onClick={this.removeItem.bind(this, index)}
1187
1243
  >
1188
1244
  {deleteIcon ? (
1189
1245
  <i className={deleteIcon} />
1190
1246
  ) : (
1191
1247
  <Icon icon="status-close" className="icon" />
1192
1248
  )}
1193
- </a>
1249
+ </Button>
1194
1250
  );
1195
1251
  }
1196
1252
 
@@ -1214,7 +1270,7 @@ export default class ComboControl extends React.Component<ComboProps> {
1214
1270
 
1215
1271
  return (
1216
1272
  <div
1217
- className={cx(`Combo-item`)}
1273
+ className={cx(`Combo-item`, itemClassName)}
1218
1274
  key={this.keys[index] || (this.keys[index] = guid())}
1219
1275
  >
1220
1276
  {!disabled && draggable && thelist.length > 1 ? (
@@ -1315,15 +1371,16 @@ export default class ComboControl extends React.Component<ComboProps> {
1315
1371
  }
1316
1372
  )
1317
1373
  ) : (
1318
- <button
1319
- type="button"
1374
+ <Button
1375
+ level="default"
1376
+ className={cx(`Combo-addBtn`, addButtonClassName)}
1377
+ block
1378
+ tooltip={__('Combo.add')}
1320
1379
  onClick={this.addItem}
1321
- className={cx(`Button Combo-addBtn`, addButtonClassName)}
1322
- data-tooltip={__('Combo.add')}
1323
1380
  >
1324
1381
  {addIcon ? <Icon icon="plus" className="icon" /> : null}
1325
1382
  <span>{__(addButtonText || 'Combo.add')}</span>
1326
- </button>
1383
+ </Button>
1327
1384
  )
1328
1385
  ) : null}
1329
1386
  {draggable ? (
@@ -1352,7 +1409,8 @@ export default class ComboControl extends React.Component<ComboProps> {
1352
1409
  disabled,
1353
1410
  typeSwitchable,
1354
1411
  nullable,
1355
- translate: __
1412
+ translate: __,
1413
+ itemClassName
1356
1414
  } = this.props;
1357
1415
 
1358
1416
  let items = this.props.items;
@@ -1373,7 +1431,7 @@ export default class ComboControl extends React.Component<ComboProps> {
1373
1431
  disabled ? 'is-disabled' : ''
1374
1432
  )}
1375
1433
  >
1376
- <div className={cx(`Combo-item`)}>
1434
+ <div className={cx(`Combo-item`, itemClassName)}>
1377
1435
  {condition && typeSwitchable !== false ? (
1378
1436
  <div className={cx('Combo-itemTag')}>
1379
1437
  <label>{__('Combo.type')}</label>
@@ -299,7 +299,16 @@ export class CityPicker extends React.Component<
299
299
  const {onChange, allowStreet, joinValues, extractValue, delimiter} =
300
300
  this.props;
301
301
 
302
- const {code, province, city, district, street} = this.state;
302
+ const {
303
+ code,
304
+ province,
305
+ city,
306
+ district,
307
+ street,
308
+ provinceCode,
309
+ cityCode,
310
+ districtCode
311
+ } = this.state;
303
312
 
304
313
  if (typeof extractValue === 'undefined' ? joinValues : extractValue) {
305
314
  code
@@ -312,8 +321,11 @@ export class CityPicker extends React.Component<
312
321
  } else {
313
322
  onChange({
314
323
  code,
324
+ provinceCode,
315
325
  province,
326
+ cityCode,
316
327
  city,
328
+ districtCode,
317
329
  district,
318
330
  street
319
331
  });
@@ -88,6 +88,8 @@ export default class ColorControl extends React.PureComponent<
88
88
  popOverContainer={
89
89
  mobileUI && env && env.getModalContainer
90
90
  ? env.getModalContainer
91
+ : mobileUI
92
+ ? undefined
91
93
  : rest.popOverContainer
92
94
  }
93
95
  value={value || ''}
@@ -472,6 +472,8 @@ export default class DateControl extends React.PureComponent<
472
472
  popOverContainer={
473
473
  mobileUI && env && env.getModalContainer
474
474
  ? env.getModalContainer
475
+ : mobileUI
476
+ ? undefined
475
477
  : rest.popOverContainer
476
478
  }
477
479
  timeFormat={timeFormat}
@@ -215,6 +215,8 @@ export default class DateRangeControl extends React.Component<DateRangeProps> {
215
215
  popOverContainer={
216
216
  mobileUI && env && env.getModalContainer
217
217
  ? env.getModalContainer
218
+ : mobileUI
219
+ ? undefined
218
220
  : rest.popOverContainer
219
221
  }
220
222
  data={data}
@@ -2,7 +2,7 @@ import React, {Suspense} from 'react';
2
2
  import Dropzone from 'react-dropzone';
3
3
  import {FileRejection} from 'react-dropzone';
4
4
  import {Icon} from '../../components/icons';
5
- import {autobind} from '../../utils/helper';
5
+ import {autobind, createObject} from '../../utils/helper';
6
6
  import {FormItem, FormControlProps, FormBaseControl} from './Item';
7
7
 
8
8
  /**
@@ -47,6 +47,8 @@ export interface ExcelControlState {
47
47
  filename: string;
48
48
  }
49
49
 
50
+ export type InputExcelRendererEvent = 'change';
51
+ export type InputExcelRendererAction = 'clear';
50
52
  export default class ExcelControl extends React.PureComponent<
51
53
  ExcelProps,
52
54
  ExcelControlState
@@ -66,7 +68,7 @@ export default class ExcelControl extends React.PureComponent<
66
68
 
67
69
  @autobind
68
70
  handleDrop(files: File[]) {
69
- const {allSheets, onChange} = this.props;
71
+ const {allSheets, onChange, dispatchEvent, data} = this.props;
70
72
  const excel = files[0];
71
73
  const reader = new FileReader();
72
74
  reader.readAsArrayBuffer(excel);
@@ -76,25 +78,38 @@ export default class ExcelControl extends React.PureComponent<
76
78
  this.ExcelJS = ExcelJS;
77
79
  const workbook = new ExcelJS.Workbook();
78
80
  await workbook.xlsx.load(reader.result);
81
+ let sheetsResult: any[] = [];
79
82
  if (allSheets) {
80
- const sheetsResult: any[] = [];
81
83
  workbook.eachSheet((worksheet: any) => {
82
84
  sheetsResult.push({
83
85
  sheetName: worksheet.name,
84
86
  data: this.readWorksheet(worksheet)
85
87
  });
86
- onChange(sheetsResult);
87
88
  });
88
89
  } else {
89
90
  const worksheet = workbook.worksheets[0];
90
- onChange(this.readWorksheet(worksheet));
91
+ sheetsResult = this.readWorksheet(worksheet);
91
92
  }
93
+ const dispatcher = await this.dispatchEvent('change', sheetsResult);
94
+ if (dispatcher?.prevented) {
95
+ return;
96
+ }
97
+ onChange(sheetsResult);
92
98
  this.setState({filename: files[0].name});
93
99
  });
94
100
  }
95
101
  };
96
102
  }
97
103
 
104
+ async dispatchEvent(eventName: string, eventData?: Record<string, any>) {
105
+ const {dispatchEvent, data} = this.props;
106
+ return await dispatchEvent(
107
+ eventName,
108
+ createObject(data, {
109
+ value: eventData
110
+ })
111
+ );
112
+ }
98
113
  /**
99
114
  * 读取单个 sheet 的内容
100
115
  */
@@ -145,6 +160,13 @@ export default class ExcelControl extends React.PureComponent<
145
160
  }
146
161
  }
147
162
 
163
+ doAction(action: any, data: object, throwErrors: boolean) {
164
+ const {onChange} = this.props;
165
+ if (action.actionType === 'clear') {
166
+ onChange('');
167
+ }
168
+ }
169
+
148
170
  render() {
149
171
  const {
150
172
  className,