amis 1.9.1-beta.12 → 1.9.1-beta.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. package/README.md +1 -1
  2. package/lib/components/formula/Picker.js +1 -2
  3. package/lib/components/formula/Picker.js.map +2 -2
  4. package/lib/components/table/HeadCellFilter.js +4 -1
  5. package/lib/components/table/HeadCellFilter.js.map +2 -2
  6. package/lib/components/table/HeadCellSort.js +30 -24
  7. package/lib/components/table/HeadCellSort.js.map +2 -2
  8. package/lib/components/table/index.d.ts +6 -3
  9. package/lib/components/table/index.js +72 -86
  10. package/lib/components/table/index.js.map +2 -2
  11. package/lib/index.js +1 -1
  12. package/lib/renderers/Action.d.ts +21 -4
  13. package/lib/renderers/Action.js +42 -19
  14. package/lib/renderers/Action.js.map +2 -2
  15. package/lib/renderers/Breadcrumb.js +2 -2
  16. package/lib/renderers/Breadcrumb.js.map +2 -2
  17. package/lib/renderers/Form/Picker.d.ts +1 -1
  18. package/lib/renderers/Form/Picker.js +38 -23
  19. package/lib/renderers/Form/Picker.js.map +2 -2
  20. package/lib/renderers/Form/wrapControl.js +10 -10
  21. package/lib/renderers/Form/wrapControl.js.map +2 -2
  22. package/lib/renderers/Service.js +0 -1
  23. package/lib/renderers/Service.js.map +2 -2
  24. package/lib/renderers/Steps.d.ts +2 -2
  25. package/lib/renderers/Steps.js +1 -1
  26. package/lib/renderers/Steps.js.map +2 -2
  27. package/lib/renderers/Table-v2/HeadCellSearchDropdown.d.ts +1 -1
  28. package/lib/renderers/Table-v2/HeadCellSearchDropdown.js +38 -24
  29. package/lib/renderers/Table-v2/HeadCellSearchDropdown.js.map +2 -2
  30. package/lib/renderers/Table-v2/index.d.ts +10 -4
  31. package/lib/renderers/Table-v2/index.js +109 -58
  32. package/lib/renderers/Table-v2/index.js.map +2 -2
  33. package/lib/store/table-v2.d.ts +210 -4
  34. package/lib/store/table-v2.js +82 -5
  35. package/lib/store/table-v2.js.map +2 -2
  36. package/lib/themes/ang-ie11.css +14 -11
  37. package/lib/themes/ang.css +14 -6
  38. package/lib/themes/ang.css.map +1 -1
  39. package/lib/themes/antd-ie11.css +14 -11
  40. package/lib/themes/antd.css +14 -6
  41. package/lib/themes/antd.css.map +1 -1
  42. package/lib/themes/cxd-ie11.css +165 -162
  43. package/lib/themes/cxd.css +15 -7
  44. package/lib/themes/cxd.css.map +1 -1
  45. package/lib/themes/dark-ie11.css +14 -11
  46. package/lib/themes/dark.css +14 -6
  47. package/lib/themes/dark.css.map +1 -1
  48. package/lib/themes/default-ie11.css +165 -162
  49. package/lib/themes/default.css +15 -7
  50. package/lib/themes/default.css.map +1 -1
  51. package/lib/types.d.ts +1 -1
  52. package/lib/types.js.map +1 -1
  53. package/package.json +1 -1
  54. package/scss/components/_modal.scss +1 -1
  55. package/scss/components/form/_icon-picker.scss +10 -6
  56. package/scss/components/form/_switch.scss +1 -0
  57. package/scss/components/form/_text.scss +2 -0
  58. package/scss/themes/_cxd-variables.scss +1 -1
  59. package/sdk/ang-ie11.css +14 -11
  60. package/sdk/ang.css +14 -6
  61. package/sdk/antd-ie11.css +14 -11
  62. package/sdk/antd.css +14 -6
  63. package/sdk/barcode.js +51 -51
  64. package/sdk/charts.js +14 -14
  65. package/sdk/codemirror.js +7 -7
  66. package/sdk/color-picker.js +65 -65
  67. package/sdk/cropperjs.js +2 -2
  68. package/sdk/cxd-ie11.css +165 -162
  69. package/sdk/cxd.css +15 -7
  70. package/sdk/dark-ie11.css +14 -11
  71. package/sdk/dark.css +14 -6
  72. package/sdk/exceljs.js +1 -1
  73. package/sdk/markdown.js +69 -69
  74. package/sdk/papaparse.js +1 -1
  75. package/sdk/renderers/Form/CityDB.js +1 -1
  76. package/sdk/rest.js +16 -16
  77. package/sdk/rich-text.js +62 -62
  78. package/sdk/sdk-ie11.css +165 -162
  79. package/sdk/sdk.css +15 -7
  80. package/sdk/sdk.js +1336 -1336
  81. package/sdk/thirds/hls.js/hls.js +1 -1
  82. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  83. package/sdk/tinymce.js +57 -57
  84. package/src/components/formula/Picker.tsx +1 -3
  85. package/src/components/table/HeadCellFilter.tsx +4 -1
  86. package/src/components/table/HeadCellSort.tsx +1 -1
  87. package/src/components/table/index.tsx +66 -90
  88. package/src/renderers/Action.tsx +62 -18
  89. package/src/renderers/Breadcrumb.tsx +11 -12
  90. package/src/renderers/Form/Picker.tsx +11 -1
  91. package/src/renderers/Form/wrapControl.tsx +10 -10
  92. package/src/renderers/Service.tsx +0 -1
  93. package/src/renderers/Steps.tsx +5 -5
  94. package/src/renderers/Table-v2/HeadCellSearchDropdown.tsx +14 -9
  95. package/src/renderers/Table-v2/index.tsx +130 -58
  96. package/src/store/table-v2.ts +104 -7
  97. package/src/types.ts +2 -1
@@ -143,8 +143,8 @@ export class HeadCellSearchDropDown extends React.Component<
143
143
  return schema || 'error';
144
144
  }
145
145
 
146
- handleAction(e: any, action: Action, ctx: object, confirm: Function) {
147
- const {onAction} = this.props;
146
+ async handleAction(e: any, action: Action, ctx: object, confirm: Function) {
147
+ const {onAction, data, dispatchEvent, name} = this.props;
148
148
 
149
149
  if (action.actionType === 'cancel' || action.actionType === 'close') {
150
150
  confirm();
@@ -157,17 +157,14 @@ export class HeadCellSearchDropDown extends React.Component<
157
157
  return;
158
158
  }
159
159
 
160
- onAction && onAction(e, action, ctx);
161
- }
162
-
163
- async handleReset() {
164
- const {onSearch, data, name, store, dispatchEvent} = this.props;
165
160
  const values = {...data};
161
+ this.formItems.forEach(key => setVariable(values, key, undefined));
166
162
 
167
163
  const rendererEvent = await dispatchEvent(
168
164
  'columnSearch',
169
165
  createObject(data, {
170
- ...values
166
+ searchName: name,
167
+ searchValue: values
171
168
  })
172
169
  );
173
170
 
@@ -175,6 +172,13 @@ export class HeadCellSearchDropDown extends React.Component<
175
172
  return;
176
173
  }
177
174
 
175
+ onAction && onAction(e, action, ctx);
176
+ }
177
+
178
+ async handleReset() {
179
+ const {onSearch, data, name, store} = this.props;
180
+ const values = {...data};
181
+
178
182
  this.formItems.forEach(key => setVariable(values, key, undefined));
179
183
 
180
184
  if (values.orderBy === name) {
@@ -200,7 +204,8 @@ export class HeadCellSearchDropDown extends React.Component<
200
204
  const rendererEvent = await dispatchEvent(
201
205
  'columnSearch',
202
206
  createObject(data, {
203
- ...values
207
+ searchName: name,
208
+ searchValue: values
204
209
  })
205
210
  );
206
211
 
@@ -25,6 +25,7 @@ import {evalExpression, filter} from '../../utils/tpl';
25
25
  import {isEffectiveApi} from '../../utils/api';
26
26
  import Checkbox from '../../components/Checkbox';
27
27
  import {BadgeSchema} from '../../components/Badge';
28
+ import {Icon} from '../../components/icons';
28
29
  import {TableStoreV2, ITableStore, IColumn, IRow} from '../../store/table-v2';
29
30
 
30
31
  import {HeadCellSearchDropDown} from './HeadCellSearchDropdown';
@@ -383,10 +384,8 @@ export default class TableRenderer extends React.Component<
383
384
 
384
385
  onSelect &&
385
386
  onSelect(
386
- null,
387
- false,
388
- store.selectedRowKeys.map(item => item),
389
- store.selectedRows.map(item => item.data)
387
+ store.selectedRows.map(item => item.data),
388
+ store.unSelectedRows.map(item => item.data)
390
389
  );
391
390
  }
392
391
 
@@ -431,11 +430,11 @@ export default class TableRenderer extends React.Component<
431
430
  // selectedRowKeysExpr比selectedRowKeys优先级高
432
431
  if (props.rowSelection && props.rowSelection.selectedRowKeysExpr) {
433
432
  rows.forEach((row: any, index: number) => {
434
- const flag = filter(props.rowSelection.selectedRowKeysExpr, {
433
+ const flag = evalExpression(props.rowSelection.selectedRowKeysExpr, {
435
434
  record: row,
436
435
  rowIndex: index
437
436
  });
438
- if (flag === 'true') {
437
+ if (flag) {
439
438
  selectedRowKeys.push(row[props?.rowSelection?.keyField || 'key']);
440
439
  }
441
440
  });
@@ -450,11 +449,11 @@ export default class TableRenderer extends React.Component<
450
449
  let expandedRowKeys: Array<string | number> = [];
451
450
  if (props.expandable && props.expandable.expandedRowKeysExpr) {
452
451
  rows.forEach((row: any, index: number) => {
453
- const flag = filter(props.expandable.expandedRowKeysExpr, {
452
+ const flag = evalExpression(props.expandable.expandedRowKeysExpr, {
454
453
  record: row,
455
454
  rowIndex: index
456
455
  });
457
- if (flag === 'true') {
456
+ if (flag) {
458
457
  expandedRowKeys.push(row[props?.expandable?.keyField || 'key']);
459
458
  }
460
459
  });
@@ -1019,19 +1018,16 @@ export default class TableRenderer extends React.Component<
1019
1018
 
1020
1019
  @autobind
1021
1020
  async handleSelected(
1022
- record: any,
1023
- value: boolean,
1024
1021
  selectedRows: Array<any>,
1025
- selectedRowKeys: Array<string | number>
1022
+ selectedRowKeys: Array<string | number>,
1023
+ unSelectedRows: Array<string | number>
1026
1024
  ) {
1027
1025
  const {dispatchEvent, data, rowSelection, onSelect, store} = this.props;
1028
1026
  const rendererEvent = await dispatchEvent(
1029
- 'selected',
1027
+ 'selectedChange',
1030
1028
  createObject(data, {
1031
- record,
1032
- value,
1033
- selectedRows,
1034
- selectedRowKeys
1029
+ selectedItems: selectedRows,
1030
+ unSelectedItems: unSelectedRows
1035
1031
  })
1036
1032
  );
1037
1033
 
@@ -1040,24 +1036,17 @@ export default class TableRenderer extends React.Component<
1040
1036
  }
1041
1037
 
1042
1038
  store.updateSelected(selectedRowKeys, rowSelection.keyField);
1043
- onSelect && onSelect(record, value, selectedRows, selectedRowKeys);
1039
+ onSelect && onSelect(selectedRows, unSelectedRows);
1044
1040
  }
1045
1041
 
1046
1042
  @autobind
1047
- async handleSelectedAll(
1048
- value: boolean,
1049
- selectedRowKeys: Array<string | number>,
1050
- selectedRows: Array<any>,
1051
- changeRows: Array<any>
1052
- ) {
1053
- const {dispatchEvent, data, rowSelection, onSelectAll, store} = this.props;
1043
+ async handleSort(payload: SortProps) {
1044
+ const {dispatchEvent, data, onSort} = this.props;
1054
1045
  const rendererEvent = await dispatchEvent(
1055
- 'selectedAll',
1046
+ 'columnSort',
1056
1047
  createObject(data, {
1057
- value,
1058
- selectedRowKeys,
1059
- selectedRows,
1060
- changeRows
1048
+ orderBy: payload.orderBy,
1049
+ orderDir: payload.order
1061
1050
  })
1062
1051
  );
1063
1052
 
@@ -1065,64 +1054,88 @@ export default class TableRenderer extends React.Component<
1065
1054
  return rendererEvent?.prevented;
1066
1055
  }
1067
1056
 
1068
- store.updateSelected(selectedRowKeys, rowSelection.keyField);
1069
- onSelectAll &&
1070
- onSelectAll(value, selectedRowKeys, selectedRows, selectedRowKeys);
1057
+ onSort && onSort(payload);
1071
1058
  }
1072
1059
 
1073
1060
  @autobind
1074
- async handleSort(payload: SortProps) {
1075
- const {dispatchEvent, data, onSort} = this.props;
1061
+ async handleFilter(payload: {
1062
+ filterName: string,
1063
+ filterValue: string
1064
+ }) {
1065
+ const {dispatchEvent, data, onFilter} = this.props;
1076
1066
  const rendererEvent = await dispatchEvent(
1077
- 'columnSort',
1078
- createObject(data, {
1079
- ...payload
1080
- })
1067
+ 'columnFilter',
1068
+ createObject(data, payload)
1081
1069
  );
1082
1070
 
1083
1071
  if (rendererEvent?.prevented) {
1084
1072
  return rendererEvent?.prevented;
1085
1073
  }
1086
1074
 
1087
- onSort && onSort(payload);
1075
+ onFilter && onFilter(payload);
1088
1076
  }
1089
1077
 
1090
1078
  @autobind
1091
- async handleFilter(payload: any) {
1092
- const {dispatchEvent, data, onFilter} = this.props;
1079
+ async handleRowClick(event: React.ChangeEvent<any>, rowItem: any, rowIndex?: number) {
1080
+ const {dispatchEvent, data, onRow} = this.props;
1081
+
1093
1082
  const rendererEvent = await dispatchEvent(
1094
- 'columnFilter',
1095
- createObject(data, {
1096
- payload
1097
- })
1083
+ 'rowClick',
1084
+ createObject(data, {rowItem})
1098
1085
  );
1099
1086
 
1100
1087
  if (rendererEvent?.prevented) {
1101
1088
  return rendererEvent?.prevented;
1102
1089
  }
1103
1090
 
1104
- onFilter && onFilter(payload);
1091
+ if (rowItem && onRow) {
1092
+ onRow.onRowClick && onRow.onRowClick(event, rowItem, rowIndex);
1093
+ }
1094
+ }
1095
+
1096
+ @autobind
1097
+ async handleOrderChange(oldIndex: number, newIndex: number, levels: Array<string>) {
1098
+ const {store} = this.props;
1099
+ const rowItem = store.getRowByIndex(oldIndex, levels);
1100
+
1101
+ store.exchange(oldIndex, newIndex, rowItem);
1105
1102
  }
1106
1103
 
1107
1104
  @autobind
1108
- async handleDragOver(dataSource: Array<any>) {
1109
- const {dispatchEvent, data, onDrag} = this.props;
1105
+ async handleSaveOrder() {
1106
+ const {store, onSaveOrder, data, dispatchEvent} = this.props;
1107
+
1108
+ const movedItems = store.movedRows.map(item => item.data);
1109
+ const items = store.rows.map(item => item.getDataWithModifiedChilden());
1110
+
1110
1111
  const rendererEvent = await dispatchEvent(
1111
- 'dragOver',
1112
- createObject(data, {
1113
- dataSource
1114
- })
1112
+ 'orderChange',
1113
+ createObject(data, {movedItems})
1115
1114
  );
1116
1115
 
1117
1116
  if (rendererEvent?.prevented) {
1118
- return rendererEvent?.prevented;
1117
+ return;
1118
+ }
1119
+
1120
+ if (!onSaveOrder || !store.movedRows.length) {
1121
+ return;
1119
1122
  }
1120
1123
 
1121
- onDrag && onDrag(dataSource);
1124
+ onSaveOrder(
1125
+ movedItems,
1126
+ items
1127
+ );
1128
+ }
1129
+
1130
+ @autobind
1131
+ reset() {
1132
+ const {store} = this.props;
1133
+
1134
+ store.reset();
1122
1135
  }
1123
1136
 
1124
1137
  doAction(action: Action, args: any, throwErrors: boolean): any {
1125
- const {store, rowSelection} = this.props;
1138
+ const {store, rowSelection, data} = this.props;
1126
1139
 
1127
1140
  const actionType = action?.actionType as string;
1128
1141
  const keyField = rowSelection?.keyField;
@@ -1135,7 +1148,15 @@ export default class TableRenderer extends React.Component<
1135
1148
  store.updateSelected([], keyField);
1136
1149
  break;
1137
1150
  case 'select':
1138
- store.updateSelected(args?.selectedRowKeys, keyField);
1151
+ const dataSource = store.getData(data);
1152
+ const selected: Array<any> = [];
1153
+ dataSource.items.forEach((item: any, rowIndex: number) => {
1154
+ const flag = evalExpression(args?.selectedRowKeysExpr, {record: item, rowIndex});
1155
+ if (flag) {
1156
+ selected.push(item[keyField]);
1157
+ }
1158
+ });
1159
+ store.updateSelected(selected, keyField);
1139
1160
  break;
1140
1161
  default:
1141
1162
  break;
@@ -1158,6 +1179,7 @@ export default class TableRenderer extends React.Component<
1158
1179
  placeholder,
1159
1180
  rowClassNameExpr,
1160
1181
  itemActions,
1182
+ onRow,
1161
1183
  store,
1162
1184
  ...rest
1163
1185
  } = this.props;
@@ -1310,23 +1332,73 @@ export default class TableRenderer extends React.Component<
1310
1332
  loading={this.renderSchema('loading', loading)}
1311
1333
  placeholder={this.renderSchema('placeholder', placeholder)}
1312
1334
  onSelect={this.handleSelected}
1313
- onSelectAll={this.handleSelectedAll}
1335
+ onSelectAll={this.handleSelected}
1314
1336
  onSort={this.handleSort}
1315
1337
  onFilter={this.handleFilter}
1316
- onDrag={this.handleDragOver}
1338
+ onDrag={this.handleOrderChange}
1317
1339
  itemActions={itemActionsConfig}
1340
+ onRow={{
1341
+ ...onRow,
1342
+ onRowClick: this.handleRowClick
1343
+ }}
1318
1344
  ></Table>
1319
1345
  );
1320
1346
  }
1321
1347
 
1348
+ renderHeading() {
1349
+ let {
1350
+ store,
1351
+ classnames: cx,
1352
+ headingClassName,
1353
+ translate: __
1354
+ } = this.props;
1355
+
1356
+ if (store.moved) {
1357
+ return (
1358
+ <div className={cx('Table-heading', headingClassName)} key="heading">
1359
+ {
1360
+ store.moved ? (
1361
+ <span>
1362
+ {__('Table.moved', {
1363
+ moved: store.moved
1364
+ })}
1365
+ <button
1366
+ type="button"
1367
+ className={cx('Button Button--xs Button--success m-l-sm')}
1368
+ onClick={this.handleSaveOrder}
1369
+ >
1370
+ <Icon icon="check" className="icon m-r-xs" />
1371
+ {__('Form.submit')}
1372
+ </button>
1373
+ <button
1374
+ type="button"
1375
+ className={cx('Button Button--xs Button--danger m-l-sm')}
1376
+ onClick={this.reset}
1377
+ >
1378
+ <Icon icon="close" className="icon m-r-xs" />
1379
+ {__('Table.discard')}
1380
+ </button>
1381
+ </span>
1382
+ ) : null
1383
+ }
1384
+ </div>
1385
+ );
1386
+ }
1387
+
1388
+ return null;
1389
+ }
1390
+
1322
1391
  render() {
1323
1392
  const {classnames: cx} = this.props;
1324
1393
 
1325
1394
  this.renderedToolbars = []; // 用来记录哪些 toolbar 已经渲染了
1395
+
1396
+ const heading = this.renderHeading();
1326
1397
 
1327
1398
  return (
1328
1399
  <div className={cx('Table-render-wrapper')}>
1329
1400
  {this.renderActions('header')}
1401
+ {heading}
1330
1402
  {this.renderTable()}
1331
1403
  </div>
1332
1404
  );
@@ -23,7 +23,8 @@ import {
23
23
  isObject,
24
24
  immutableExtends,
25
25
  isEmpty,
26
- extendObject
26
+ extendObject,
27
+ findTree
27
28
  } from '../utils/helper';
28
29
  import {normalizeApiResponseData} from '../utils/api';
29
30
  import {Api, Payload, fetchOptions, ApiObject} from '../types';
@@ -71,6 +72,7 @@ export const Row = types
71
72
  .model('Row', {
72
73
  storeType: 'Row',
73
74
  id: types.identifier,
75
+ parentId: '',
74
76
  key: types.string,
75
77
  pristine: types.frozen({} as any), // 原始数据
76
78
  data: types.frozen({} as any),
@@ -100,6 +102,10 @@ export const Row = types
100
102
  );
101
103
  },
102
104
 
105
+ get moved() {
106
+ return self.index !== self.newIndex;
107
+ },
108
+
103
109
  get locals(): any {
104
110
  let children: Array<any> | null = null;
105
111
  if (self.children.length) {
@@ -120,6 +126,20 @@ export const Row = types
120
126
  }
121
127
  : self.data
122
128
  );
129
+ },
130
+
131
+ getDataWithModifiedChilden() {
132
+ let data = {
133
+ ...self.data
134
+ };
135
+
136
+ if (data.children && self.children) {
137
+ data.children = self.children.map(item =>
138
+ item.getDataWithModifiedChilden()
139
+ );
140
+ }
141
+
142
+ return data;
123
143
  }
124
144
  }))
125
145
  .actions(self => ({
@@ -161,6 +181,10 @@ export const Row = types
161
181
  change(values: object, savePristine?: boolean) {
162
182
  self.data = immutableExtends(self.data, values);
163
183
  savePristine && (self.pristine = self.data);
184
+ },
185
+ reset() {
186
+ self.newIndex = self.index;
187
+ self.data = self.pristine;
164
188
  }
165
189
  }));
166
190
 
@@ -250,10 +274,26 @@ export const TableStoreV2 = ServiceStore.named('TableStoreV2')
250
274
  });
251
275
  }
252
276
 
277
+ function getRowByIndex(rowIndex: number, levels?: Array<string>): IRow {
278
+ if (levels && levels.length > 0) {
279
+ const index = +(levels.shift() || 0);
280
+ return getRowByIndex(index, levels);
281
+ }
282
+ return self.rows[rowIndex];
283
+ }
284
+
253
285
  function isSelected(row: IRow): boolean {
254
286
  return !!~self.selectedRows.indexOf(row);
255
287
  }
256
288
 
289
+ function getMovedRows() {
290
+ return flattenTree(self.rows).filter((item: IRow) => item.moved);
291
+ }
292
+
293
+ function getMoved() {
294
+ return getMovedRows().length;
295
+ }
296
+
257
297
  return {
258
298
  get toggable() {
259
299
  return getToggable();
@@ -287,6 +327,10 @@ export const TableStoreV2 = ServiceStore.named('TableStoreV2')
287
327
  return self.expandedRowKeys.map(item => item);
288
328
  },
289
329
 
330
+ get unSelectedRows() {
331
+ return getUnSelectedRows();
332
+ },
333
+
290
334
  // 是否隐藏了某列
291
335
  hasColumnHidden() {
292
336
  return hasColumnHidden();
@@ -294,7 +338,21 @@ export const TableStoreV2 = ServiceStore.named('TableStoreV2')
294
338
 
295
339
  getData,
296
340
 
297
- isSelected
341
+ getRowById(id: string) {
342
+ return findTree(self.rows, item => item.id === id);
343
+ },
344
+
345
+ isSelected,
346
+
347
+ getRowByIndex,
348
+
349
+ get moved() {
350
+ return getMoved();
351
+ },
352
+
353
+ get movedRows() {
354
+ return getMovedRows();
355
+ },
298
356
  };
299
357
  })
300
358
  .actions(self => {
@@ -333,6 +391,31 @@ export const TableStoreV2 = ServiceStore.named('TableStoreV2')
333
391
  }
334
392
  }
335
393
 
394
+ function exchange(fromIndex: number, toIndex: number, item?: IRow) {
395
+ item = item || self.rows[fromIndex];
396
+
397
+ if (item.parentId) {
398
+ const parent: IRow = self.getRowById(item.parentId) as any;
399
+ const offset = parent.children.indexOf(item) - fromIndex;
400
+ toIndex += offset;
401
+ fromIndex += offset;
402
+
403
+ const newRows = parent.children.concat();
404
+ newRows.splice(fromIndex, 1);
405
+ newRows.splice(toIndex, 0, item);
406
+ newRows.forEach((item, index) => (item.newIndex = index));
407
+ parent.children.replace(newRows);
408
+ return;
409
+ }
410
+
411
+ const newRows = self.rows.concat();
412
+ newRows.splice(fromIndex, 1);
413
+ newRows.splice(toIndex, 0, item);
414
+
415
+ newRows.forEach((item, index) => (item.newIndex = index));
416
+ self.rows.replace(newRows);
417
+ }
418
+
336
419
  function persistSaveToggledColumns() {
337
420
  const key =
338
421
  location.pathname +
@@ -600,6 +683,22 @@ export const TableStoreV2 = ServiceStore.named('TableStoreV2')
600
683
  }
601
684
  });
602
685
 
686
+ function reset() {
687
+ self.rows.forEach(item => item.reset());
688
+ let rows = self.rows.concat();
689
+ eachTree(rows, item => {
690
+ if (item.children) {
691
+ let rows = item.children.concat().sort((a, b) => a.index - b.index);
692
+ rows.forEach(item => item.reset());
693
+ item.children.replace(rows);
694
+ }
695
+ });
696
+ rows.forEach(item => item.reset());
697
+ rows = rows.sort((a, b) => a.index - b.index);
698
+ self.rows.replace(rows);
699
+ self.dragging = false;
700
+ }
701
+
603
702
  return {
604
703
  update,
605
704
  persistSaveToggledColumns,
@@ -609,6 +708,8 @@ export const TableStoreV2 = ServiceStore.named('TableStoreV2')
609
708
  updateSelected,
610
709
  updateSelectedAll,
611
710
  updateExpanded,
711
+ exchange,
712
+ reset,
612
713
 
613
714
  // events
614
715
  afterCreate() {
@@ -631,11 +732,7 @@ export const TableStoreV2 = ServiceStore.named('TableStoreV2')
631
732
  }
632
733
  }, 200);
633
734
  },
634
- saveRemote,
635
-
636
- getRowByIndex(rowIndex: number) {
637
- return self.rows[rowIndex];
638
- }
735
+ saveRemote
639
736
  };
640
737
  });
641
738
 
package/src/types.ts CHANGED
@@ -113,7 +113,8 @@ export interface Action extends Button {
113
113
  | 'collapse'
114
114
  | 'step-submit'
115
115
  | 'selectAll'
116
- | 'changeTabKey';
116
+ | 'changeTabKey'
117
+ | 'click';
117
118
  api?: Api;
118
119
  asyncApi?: Api;
119
120
  payload?: any;