vxe-table 4.13.25 → 4.13.27

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 (37) hide show
  1. package/es/grid/src/grid.js +1 -1
  2. package/es/style.css +1 -1
  3. package/es/table/module/filter/hook.js +5 -2
  4. package/es/table/src/emits.js +2 -0
  5. package/es/table/src/table.js +126 -17
  6. package/es/table/src/util.js +20 -18
  7. package/es/ui/index.js +1 -1
  8. package/es/ui/src/log.js +1 -1
  9. package/lib/grid/src/grid.js +1 -1
  10. package/lib/grid/src/grid.min.js +1 -1
  11. package/lib/index.umd.js +54 -43
  12. package/lib/index.umd.min.js +1 -1
  13. package/lib/style.css +1 -1
  14. package/lib/table/module/filter/hook.js +7 -2
  15. package/lib/table/module/filter/hook.min.js +1 -1
  16. package/lib/table/src/emits.js +1 -1
  17. package/lib/table/src/emits.min.js +1 -1
  18. package/lib/table/src/table.js +13 -16
  19. package/lib/table/src/table.min.js +1 -1
  20. package/lib/table/src/util.js +31 -21
  21. package/lib/table/src/util.min.js +1 -1
  22. package/lib/ui/index.js +1 -1
  23. package/lib/ui/index.min.js +1 -1
  24. package/lib/ui/src/log.js +1 -1
  25. package/lib/ui/src/log.min.js +1 -1
  26. package/package.json +1 -1
  27. package/packages/grid/src/grid.ts +1 -1
  28. package/packages/table/module/filter/hook.ts +5 -2
  29. package/packages/table/src/emits.ts +2 -0
  30. package/packages/table/src/table.ts +126 -17
  31. package/packages/table/src/util.ts +21 -18
  32. /package/es/{iconfont.1747024932366.ttf → iconfont.1747176259693.ttf} +0 -0
  33. /package/es/{iconfont.1747024932366.woff → iconfont.1747176259693.woff} +0 -0
  34. /package/es/{iconfont.1747024932366.woff2 → iconfont.1747176259693.woff2} +0 -0
  35. /package/lib/{iconfont.1747024932366.ttf → iconfont.1747176259693.ttf} +0 -0
  36. /package/lib/{iconfont.1747024932366.woff → iconfont.1747176259693.woff} +0 -0
  37. /package/lib/{iconfont.1747024932366.woff2 → iconfont.1747176259693.woff2} +0 -0
@@ -43,6 +43,9 @@ hooks.add('tableFilterModule', {
43
43
  const { filterStore } = reactData;
44
44
  $xeTable.handleClearFilter(filterStore.column);
45
45
  $xeTable.confirmFilterEvent(evnt);
46
+ if (evnt) {
47
+ $xeTable.dispatchEvent('clear-filter', { filterList: [] }, evnt);
48
+ }
46
49
  };
47
50
  const filterPrivateMethods = {
48
51
  checkFilterOptions() {
@@ -284,11 +287,11 @@ hooks.add('tableFilterModule', {
284
287
  if (fieldOrColumn) {
285
288
  column = handleFieldOrColumn($xeTable, fieldOrColumn);
286
289
  if (column) {
287
- filterPrivateMethods.handleClearFilter(column);
290
+ $xeTable.handleClearFilter(column);
288
291
  }
289
292
  }
290
293
  else {
291
- tableFullColumn.forEach(filterPrivateMethods.handleClearFilter);
294
+ tableFullColumn.forEach($xeTable.handleClearFilter);
292
295
  }
293
296
  if (!fieldOrColumn || column !== filterStore.column) {
294
297
  Object.assign(filterStore, {
@@ -35,9 +35,11 @@ export default [
35
35
  'clear-merge',
36
36
  'sort-change',
37
37
  'clear-sort',
38
+ 'clear-all-sort',
38
39
  'filter-change',
39
40
  'filter-visible',
40
41
  'clear-filter',
42
+ 'clear-all-filter',
41
43
  'resizable-change',
42
44
  'column-resizable-change',
43
45
  'row-resizable-change',
@@ -9,7 +9,7 @@ import TableHeaderComponent from './header';
9
9
  import TableFooterComponent from './footer';
10
10
  import tableProps from './props';
11
11
  import tableEmits from './emits';
12
- import { getRowUniqueId, clearTableAllStatus, getRowkey, getRowid, rowToVisible, colToVisible, getCellValue, setCellValue, handleRowidOrRow, handleFieldOrColumn, toTreePathSeq, restoreScrollLocation, getRootColumn, getRefElem, getColReMinWidth, createHandleUpdateRowId, createHandleGetRowId, getCellHeight } from './util';
12
+ import { getRowUniqueId, clearTableAllStatus, hasDeepKey, getRowkey, getRowid, rowToVisible, colToVisible, getCellValue, setCellValue, handleRowidOrRow, handleFieldOrColumn, toTreePathSeq, restoreScrollLocation, getRootColumn, getRefElem, getColReMinWidth, createHandleUpdateRowId, createHandleGetRowId, getCellHeight } from './util';
13
13
  import { getSlotVNs } from '../../ui/src/vn';
14
14
  import { warnLog, errLog } from '../../ui/src/log';
15
15
  import TableCustomPanelComponent from '../module/custom/panel';
@@ -272,6 +272,8 @@ export default defineComponent({
272
272
  });
273
273
  const internalData = {
274
274
  tZindex: 0,
275
+ currKeyField: '',
276
+ isCurrDeepKey: false,
275
277
  elemStore: {},
276
278
  // 存放横向 X 虚拟滚动相关的信息
277
279
  scrollXStore: {
@@ -436,6 +438,10 @@ export default defineComponent({
436
438
  }
437
439
  return '';
438
440
  });
441
+ const computeRowField = computed(() => {
442
+ const rowOpts = computeRowOpts.value;
443
+ return `${props.rowId || rowOpts.keyField || '_X_ROW_KEY'}`;
444
+ });
439
445
  const computeValidOpts = computed(() => {
440
446
  return Object.assign({}, getConfig().table.validConfig, props.validConfig);
441
447
  });
@@ -789,6 +795,7 @@ export default defineComponent({
789
795
  computeSize,
790
796
  computeTableId,
791
797
  computeValidOpts,
798
+ computeRowField,
792
799
  computeVirtualXOpts,
793
800
  computeVirtualYOpts,
794
801
  computeScrollbarOpts,
@@ -868,6 +875,11 @@ export default defineComponent({
868
875
  }
869
876
  return XEUtils.isEqual(val1, val2);
870
877
  };
878
+ const handleKeyField = () => {
879
+ const keyField = computeRowField.value;
880
+ internalData.currKeyField = keyField;
881
+ internalData.isCurrDeepKey = hasDeepKey(keyField);
882
+ };
871
883
  const getNextSortOrder = (column) => {
872
884
  const sortOpts = computeSortOpts.value;
873
885
  const { orders } = sortOpts;
@@ -3640,11 +3652,10 @@ export default defineComponent({
3640
3652
  }
3641
3653
  };
3642
3654
  const createGetRowCacheProp = (prop) => {
3643
- const { handleGetRowId } = createHandleGetRowId($xeTable);
3644
3655
  return function (row) {
3645
3656
  const { fullAllDataRowIdData } = internalData;
3646
3657
  if (row) {
3647
- const rowid = handleGetRowId(row);
3658
+ const rowid = getRowid($xeTable, row);
3648
3659
  const rowRest = fullAllDataRowIdData[rowid];
3649
3660
  if (rowRest) {
3650
3661
  return rowRest[prop];
@@ -4394,7 +4405,6 @@ export default defineComponent({
4394
4405
  },
4395
4406
  /**
4396
4407
  * 检查是否为临时行数据
4397
- * @param {Row} row 行对象
4398
4408
  */
4399
4409
  isInsertByRow(row) {
4400
4410
  const rowid = getRowid($xeTable, row);
@@ -4406,16 +4416,13 @@ export default defineComponent({
4406
4416
  },
4407
4417
  /**
4408
4418
  * 删除所有新增的临时数据
4409
- * @returns
4410
4419
  */
4411
4420
  removeInsertRow() {
4412
- internalData.insertRowMaps = {};
4413
- return $xeTable.remove($xeTable.getInsertRecords());
4421
+ const { insertRowMaps } = internalData;
4422
+ return $xeTable.remove(XEUtils.values(insertRowMaps));
4414
4423
  },
4415
4424
  /**
4416
4425
  * 检查行或列数据是否发生改变
4417
- * @param {Row} rowidOrRow 行对象、行主键
4418
- * @param {String} field 字段名
4419
4426
  */
4420
4427
  isUpdateByRow(rowidOrRow, field) {
4421
4428
  const { keepSource } = props;
@@ -5636,6 +5643,42 @@ export default defineComponent({
5636
5643
  return updateStyle();
5637
5644
  });
5638
5645
  },
5646
+ clearSortByEvent(evnt, fieldOrColumn) {
5647
+ const { tableFullColumn } = internalData;
5648
+ const sortOpts = computeSortOpts.value;
5649
+ const sortCols = [];
5650
+ let column = null;
5651
+ if (evnt) {
5652
+ if (fieldOrColumn) {
5653
+ column = handleFieldOrColumn($xeTable, fieldOrColumn);
5654
+ if (column) {
5655
+ column.order = null;
5656
+ }
5657
+ }
5658
+ else {
5659
+ tableFullColumn.forEach((column) => {
5660
+ if (column.order) {
5661
+ column.order = null;
5662
+ sortCols.push(column);
5663
+ }
5664
+ });
5665
+ }
5666
+ if (!sortOpts.remote) {
5667
+ $xeTable.handleTableData(true);
5668
+ }
5669
+ if (sortCols.length) {
5670
+ const params = { $table: $xeTable, $event: evnt, cols: sortCols, sortList: [] };
5671
+ dispatchEvent('clear-all-sort', params, evnt);
5672
+ }
5673
+ else if (column) {
5674
+ $xeTable.handleColumnSortEvent(evnt, column);
5675
+ }
5676
+ }
5677
+ return nextTick().then(() => {
5678
+ updateRowOffsetTop();
5679
+ return updateStyle();
5680
+ });
5681
+ },
5639
5682
  isSort(fieldOrColumn) {
5640
5683
  if (fieldOrColumn) {
5641
5684
  const column = handleFieldOrColumn($xeTable, fieldOrColumn);
@@ -5695,6 +5738,49 @@ export default defineComponent({
5695
5738
  isFilter(fieldOrColumn) {
5696
5739
  return tableMethods.isActiveFilterByColumn(fieldOrColumn);
5697
5740
  },
5741
+ clearFilterByEvent(evnt, fieldOrColumn) {
5742
+ const { filterStore } = reactData;
5743
+ const { tableFullColumn } = internalData;
5744
+ const filterOpts = computeFilterOpts.value;
5745
+ const filterCols = [];
5746
+ let column = null;
5747
+ if (fieldOrColumn) {
5748
+ column = handleFieldOrColumn($xeTable, fieldOrColumn);
5749
+ if (column) {
5750
+ $xeTable.handleClearFilter(column);
5751
+ }
5752
+ }
5753
+ else {
5754
+ tableFullColumn.forEach(column => {
5755
+ if (column.filters) {
5756
+ filterCols.push(column);
5757
+ $xeTable.handleClearFilter(column);
5758
+ }
5759
+ });
5760
+ }
5761
+ if (!fieldOrColumn || column !== filterStore.column) {
5762
+ Object.assign(filterStore, {
5763
+ isAllSelected: false,
5764
+ isIndeterminate: false,
5765
+ style: null,
5766
+ options: [],
5767
+ column: null,
5768
+ multiple: false,
5769
+ visible: false
5770
+ });
5771
+ }
5772
+ if (!filterOpts.remote) {
5773
+ $xeTable.updateData();
5774
+ }
5775
+ if (filterCols.length) {
5776
+ const params = { $table: $xeTable, $event: evnt, cols: filterCols, filterList: [] };
5777
+ dispatchEvent('clear-all-filter', params, evnt);
5778
+ }
5779
+ else if (column) {
5780
+ $xeTable.dispatchEvent('clear-filter', { filterList: () => $xeTable.getCheckedFilters() }, evnt);
5781
+ }
5782
+ return nextTick();
5783
+ },
5698
5784
  /**
5699
5785
  * 判断展开行是否懒加载完成
5700
5786
  * @param {Row} row 行对象
@@ -8348,7 +8434,12 @@ export default defineComponent({
8348
8434
  }
8349
8435
  }
8350
8436
  if (tooltipStore.column !== column || tooltipStore.row !== row || !tooltipStore.visible) {
8351
- handleTooltip(evnt, tdEl, tdEl.querySelector('.vxe-cell--wrapper'), tdEl.querySelector('.vxe-cell--label') || tdEl.querySelector('.vxe-cell--wrapper'), params);
8437
+ const ctEl = tdEl.querySelector('.vxe-cell--wrapper');
8438
+ let ovEl = null;
8439
+ if (column.treeNode) {
8440
+ ovEl = tdEl.querySelector('.vxe-tree-cell');
8441
+ }
8442
+ handleTooltip(evnt, tdEl, ovEl || ctEl, tdEl.querySelector('.vxe-cell--label') || tdEl.querySelector('.vxe-cell--wrapper'), params);
8352
8443
  }
8353
8444
  },
8354
8445
  /**
@@ -8782,12 +8873,15 @@ export default defineComponent({
8782
8873
  handleColumnSortEvent(evnt, column) {
8783
8874
  const { mouseConfig } = props;
8784
8875
  const mouseOpts = computeMouseOpts.value;
8785
- const { field, sortable } = column;
8876
+ const { field, sortable, order } = column;
8786
8877
  if (sortable) {
8787
- const params = { $table: $xeTable, $event: evnt, column, field, property: field, order: column.order, sortList: tableMethods.getSortColumns(), sortTime: column.sortTime };
8878
+ const params = { $table: $xeTable, $event: evnt, column, field, property: field, order, sortList: tableMethods.getSortColumns(), sortTime: column.sortTime };
8788
8879
  if (mouseConfig && mouseOpts.area && $xeTable.handleSortEvent) {
8789
8880
  $xeTable.handleSortEvent(evnt, params);
8790
8881
  }
8882
+ if (!order) {
8883
+ dispatchEvent('clear-sort', params, evnt);
8884
+ }
8791
8885
  dispatchEvent('sort-change', params, evnt);
8792
8886
  }
8793
8887
  },
@@ -8801,11 +8895,11 @@ export default defineComponent({
8801
8895
  if (sortable) {
8802
8896
  if (!order || column.order === order) {
8803
8897
  if (allowClear) {
8804
- tableMethods.clearSort(multiple ? column : null);
8898
+ $xeTable.clearSort(multiple ? column : null);
8805
8899
  }
8806
8900
  }
8807
8901
  else {
8808
- tableMethods.sort({ field, order });
8902
+ $xeTable.sort({ field, order });
8809
8903
  }
8810
8904
  $xeTable.handleColumnSortEvent(evnt, column);
8811
8905
  }
@@ -11053,11 +11147,23 @@ export default defineComponent({
11053
11147
  watch(computeRowGroupFields, (val) => {
11054
11148
  handleUpdateRowGroup(val);
11055
11149
  });
11150
+ watch(computeRowField, () => {
11151
+ const { inited, tableFullData } = internalData;
11152
+ // 行主键被改变,重载表格
11153
+ if (inited) {
11154
+ handleKeyField();
11155
+ reactData.tableData = [];
11156
+ nextTick(() => {
11157
+ $xeTable.reloadData(tableFullData);
11158
+ });
11159
+ }
11160
+ });
11056
11161
  if ($xeTabs) {
11057
11162
  watch(() => $xeTabs ? $xeTabs.reactData.resizeFlag : null, () => {
11058
11163
  handleGlobalResizeEvent();
11059
11164
  });
11060
11165
  }
11166
+ handleKeyField();
11061
11167
  hooks.forEach((options) => {
11062
11168
  const { setupTable } = options;
11063
11169
  if (setupTable) {
@@ -11082,6 +11188,7 @@ export default defineComponent({
11082
11188
  const rowOpts = computeRowOpts.value;
11083
11189
  const customOpts = computeCustomOpts.value;
11084
11190
  const rowGroupOpts = computeRowGroupOpts.value;
11191
+ const virtualYOpts = computeVirtualYOpts.value;
11085
11192
  const { groupFields } = rowGroupOpts;
11086
11193
  if (columnOpts.drag || rowOpts.drag || customOpts.allowSort) {
11087
11194
  initTpImg();
@@ -11285,9 +11392,11 @@ export default defineComponent({
11285
11392
  }
11286
11393
  }
11287
11394
  });
11288
- const tableViewportEl = refTableViewportElem.value;
11289
- if (tableViewportEl) {
11290
- tableViewportEl.addEventListener('wheel', $xeTable.triggerBodyWheelEvent, { passive: false });
11395
+ if (virtualYOpts.mode !== 'scroll') {
11396
+ const tableViewportEl = refTableViewportElem.value;
11397
+ if (tableViewportEl) {
11398
+ tableViewportEl.addEventListener('wheel', $xeTable.triggerBodyWheelEvent, { passive: false });
11399
+ }
11291
11400
  }
11292
11401
  globalEvents.on($xeTable, 'paste', handleGlobalPasteEvent);
11293
11402
  globalEvents.on($xeTable, 'copy', handleGlobalCopyEvent);
@@ -83,37 +83,39 @@ export function restoreScrollLocation($xeTable, scrollLeft, scrollTop) {
83
83
  export function getRowUniqueId() {
84
84
  return XEUtils.uniqueId('row_');
85
85
  }
86
+ export function hasDeepKey(rowKey) {
87
+ return rowKey.indexOf('.') > -1;
88
+ }
86
89
  // 行主键 key
87
90
  export function getRowkey($xeTable) {
88
- const { props } = $xeTable;
89
- const { computeRowOpts } = $xeTable.getComputeMaps();
90
- const rowOpts = computeRowOpts.value;
91
- return `${props.rowId || rowOpts.keyField || '_X_ROW_KEY'}`;
91
+ const { currKeyField } = $xeTable.internalData;
92
+ return currKeyField;
92
93
  }
93
94
  // 行主键 value
94
95
  export function getRowid($xeTable, row) {
95
- const rowid = XEUtils.get(row, getRowkey($xeTable));
96
- return encodeRowid(rowid);
96
+ const internalData = $xeTable.internalData;
97
+ const { isCurrDeepKey, currKeyField } = internalData;
98
+ return row ? encodeRowid((isCurrDeepKey ? getDeepRowIdByKey : getFastRowIdByKey)(row, currKeyField)) : '';
97
99
  }
98
100
  export function createHandleUpdateRowId($xeTable) {
99
- const rowKey = getRowkey($xeTable);
100
- const isDeepKey = rowKey.indexOf('.') > -1;
101
- const updateRId = isDeepKey ? updateDeepRowKey : updateFastRowKey;
101
+ const internalData = $xeTable.internalData;
102
+ const { isCurrDeepKey, currKeyField } = internalData;
103
+ const updateRId = isCurrDeepKey ? updateDeepRowKey : updateFastRowKey;
102
104
  return {
103
- rowKey,
105
+ rowKey: currKeyField,
104
106
  handleUpdateRowId(row) {
105
- return row ? updateRId(row, rowKey) : null;
107
+ return row ? updateRId(row, currKeyField) : '';
106
108
  }
107
109
  };
108
110
  }
109
111
  export function createHandleGetRowId($xeTable) {
110
- const rowKey = getRowkey($xeTable);
111
- const isDeepKey = rowKey.indexOf('.') > -1;
112
- const getRId = isDeepKey ? getDeepRowIdByKey : getFastRowIdByKey;
112
+ const internalData = $xeTable.internalData;
113
+ const { isCurrDeepKey, currKeyField } = internalData;
114
+ const getRId = isCurrDeepKey ? getDeepRowIdByKey : getFastRowIdByKey;
113
115
  return {
114
- rowKey,
116
+ rowKey: currKeyField,
115
117
  handleGetRowId(row) {
116
- return row ? getRId(row, rowKey) : null;
118
+ return row ? encodeRowid(getRId(row, currKeyField)) : '';
117
119
  }
118
120
  };
119
121
  }
@@ -125,7 +127,7 @@ function getDeepRowIdByKey(row, rowKey) {
125
127
  return XEUtils.get(row, rowKey);
126
128
  }
127
129
  export function updateDeepRowKey(row, rowKey) {
128
- let rowid = getDeepRowIdByKey(row, rowKey);
130
+ let rowid = encodeRowid(getDeepRowIdByKey(row, rowKey));
129
131
  if (eqEmptyValue(rowid)) {
130
132
  rowid = getRowUniqueId();
131
133
  XEUtils.set(row, rowKey, rowid);
@@ -136,7 +138,7 @@ function getFastRowIdByKey(row, rowKey) {
136
138
  return row[rowKey];
137
139
  }
138
140
  export function updateFastRowKey(row, rowKey) {
139
- let rowid = getFastRowIdByKey(row, rowKey);
141
+ let rowid = encodeRowid(getFastRowIdByKey(row, rowKey));
140
142
  if (eqEmptyValue(rowid)) {
141
143
  rowid = getRowUniqueId();
142
144
  row[rowKey] = rowid;
package/es/ui/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { VxeUI } from '@vxe-ui/core';
2
2
  import { getFuncText } from './src/utils';
3
- export const version = "4.13.25";
3
+ export const version = "4.13.27";
4
4
  VxeUI.version = version;
5
5
  VxeUI.tableVersion = version;
6
6
  VxeUI.setConfig({
package/es/ui/src/log.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { VxeUI } from '@vxe-ui/core';
2
2
  const { log } = VxeUI;
3
- const version = `table v${"4.13.25"}`;
3
+ const version = `table v${"4.13.27"}`;
4
4
  export const warnLog = log.create('warn', version);
5
5
  export const errLog = log.create('error', version);
@@ -28,7 +28,7 @@ const {
28
28
  renderEmptyElement
29
29
  } = _ui.VxeUI;
30
30
  const tableComponentPropKeys = Object.keys(_props.default);
31
- const tableComponentMethodKeys = ['clearAll', 'syncData', 'updateData', 'loadData', 'reloadData', 'reloadRow', 'loadColumn', 'reloadColumn', 'getRowNode', 'getColumnNode', 'getRowIndex', 'getVTRowIndex', 'getVMRowIndex', 'getColumnIndex', 'getVTColumnIndex', 'getVMColumnIndex', 'setRow', 'createData', 'createRow', 'revertData', 'clearData', 'isRemoveByRow', 'isInsertByRow', 'isUpdateByRow', 'getColumns', 'getColumnById', 'getColumnByField', 'getTableColumn', 'getFullColumns', 'getData', 'getCheckboxRecords', 'getParentRow', 'getTreeRowChildren', 'getTreeParentRow', 'getRowSeq', 'getRowById', 'getRowid', 'getTableData', 'getFullData', 'setColumnFixed', 'clearColumnFixed', 'setColumnWidth', 'getColumnWidth', 'setRowHeightConf', 'getRowHeightConf', 'setRowHeight', 'getRowHeight', 'hideColumn', 'showColumn', 'resetColumn', 'refreshColumn', 'refreshScroll', 'recalculate', 'closeTooltip', 'isAllCheckboxChecked', 'isAllCheckboxIndeterminate', 'getCheckboxIndeterminateRecords', 'setCheckboxRow', 'setCheckboxRowKey', 'isCheckedByCheckboxRow', 'isCheckedByCheckboxRowKey', 'isIndeterminateByCheckboxRow', 'isIndeterminateByCheckboxRowKey', 'toggleCheckboxRow', 'setAllCheckboxRow', 'getRadioReserveRecord', 'clearRadioReserve', 'getCheckboxReserveRecords', 'clearCheckboxReserve', 'toggleAllCheckboxRow', 'clearCheckboxRow', 'setCurrentRow', 'isCheckedByRadioRow', 'isCheckedByRadioRowKey', 'setRadioRow', 'setRadioRowKey', 'clearCurrentRow', 'clearRadioRow', 'getCurrentRecord', 'getRadioRecord', 'getCurrentColumn', 'setCurrentColumn', 'clearCurrentColumn', 'setPendingRow', 'togglePendingRow', 'hasPendingByRow', 'isPendingByRow', 'getPendingRecords', 'clearPendingRow', 'sort', 'setSort', 'clearSort', 'isSort', 'getSortColumns', 'closeFilter', 'isFilter', 'isActiveFilterByColumn', 'isRowExpandLoaded', 'clearRowExpandLoaded', 'reloadRowExpand', 'reloadRowExpand', 'toggleRowExpand', 'setAllRowExpand', 'setRowExpand', 'isExpandByRow', 'isRowExpandByRow', 'clearRowExpand', 'clearRowExpandReserve', 'getRowExpandRecords', 'getTreeExpandRecords', 'isTreeExpandLoaded', 'clearTreeExpandLoaded', 'reloadTreeExpand', 'reloadTreeChilds', 'toggleTreeExpand', 'setAllTreeExpand', 'setTreeExpand', 'isTreeExpandByRow', 'clearTreeExpand', 'clearTreeExpandReserve', 'getScroll', 'scrollTo', 'scrollToRow', 'scrollToColumn', 'clearScroll', 'updateFooter', 'updateStatus', 'setMergeCells', 'removeInsertRow', 'removeMergeCells', 'getMergeCells', 'clearMergeCells', 'setMergeFooterItems', 'removeMergeFooterItems', 'getMergeFooterItems', 'clearMergeFooterItems', 'getCustomStoreData', 'setRowGroupExpand', 'setAllRowGroupExpand', 'clearRowGroupExpand', 'isRowGroupExpandByRow', 'isRowGroupRecord', 'setRowGroups', 'clearRowGroups', 'openTooltip', 'moveColumnTo', 'moveRowTo', 'getCellLabel', 'getCellElement', 'focus', 'blur', 'connect'];
31
+ const tableComponentMethodKeys = ['clearAll', 'syncData', 'updateData', 'loadData', 'reloadData', 'reloadRow', 'loadColumn', 'reloadColumn', 'getRowNode', 'getColumnNode', 'getRowIndex', 'getVTRowIndex', 'getVMRowIndex', 'getColumnIndex', 'getVTColumnIndex', 'getVMColumnIndex', 'setRow', 'createData', 'createRow', 'revertData', 'clearData', 'isRemoveByRow', 'isInsertByRow', 'isUpdateByRow', 'getColumns', 'getColumnById', 'getColumnByField', 'getTableColumn', 'getFullColumns', 'getData', 'getCheckboxRecords', 'getParentRow', 'getTreeRowChildren', 'getTreeParentRow', 'getRowSeq', 'getRowById', 'getRowid', 'getTableData', 'getFullData', 'setColumnFixed', 'clearColumnFixed', 'setColumnWidth', 'getColumnWidth', 'setRowHeightConf', 'getRowHeightConf', 'setRowHeight', 'getRowHeight', 'hideColumn', 'showColumn', 'resetColumn', 'refreshColumn', 'refreshScroll', 'recalculate', 'closeTooltip', 'isAllCheckboxChecked', 'isAllCheckboxIndeterminate', 'getCheckboxIndeterminateRecords', 'setCheckboxRow', 'setCheckboxRowKey', 'isCheckedByCheckboxRow', 'isCheckedByCheckboxRowKey', 'isIndeterminateByCheckboxRow', 'isIndeterminateByCheckboxRowKey', 'toggleCheckboxRow', 'setAllCheckboxRow', 'getRadioReserveRecord', 'clearRadioReserve', 'getCheckboxReserveRecords', 'clearCheckboxReserve', 'toggleAllCheckboxRow', 'clearCheckboxRow', 'setCurrentRow', 'isCheckedByRadioRow', 'isCheckedByRadioRowKey', 'setRadioRow', 'setRadioRowKey', 'clearCurrentRow', 'clearRadioRow', 'getCurrentRecord', 'getRadioRecord', 'getCurrentColumn', 'setCurrentColumn', 'clearCurrentColumn', 'setPendingRow', 'togglePendingRow', 'hasPendingByRow', 'isPendingByRow', 'getPendingRecords', 'clearPendingRow', 'sort', 'setSort', 'clearSort', 'clearSortByEvent', 'isSort', 'getSortColumns', 'closeFilter', 'isFilter', 'clearFilterByEvent', 'isActiveFilterByColumn', 'isRowExpandLoaded', 'clearRowExpandLoaded', 'reloadRowExpand', 'reloadRowExpand', 'toggleRowExpand', 'setAllRowExpand', 'setRowExpand', 'isExpandByRow', 'isRowExpandByRow', 'clearRowExpand', 'clearRowExpandReserve', 'getRowExpandRecords', 'getTreeExpandRecords', 'isTreeExpandLoaded', 'clearTreeExpandLoaded', 'reloadTreeExpand', 'reloadTreeChilds', 'toggleTreeExpand', 'setAllTreeExpand', 'setTreeExpand', 'isTreeExpandByRow', 'clearTreeExpand', 'clearTreeExpandReserve', 'getScroll', 'scrollTo', 'scrollToRow', 'scrollToColumn', 'clearScroll', 'updateFooter', 'updateStatus', 'setMergeCells', 'removeInsertRow', 'removeMergeCells', 'getMergeCells', 'clearMergeCells', 'setMergeFooterItems', 'removeMergeFooterItems', 'getMergeFooterItems', 'clearMergeFooterItems', 'getCustomStoreData', 'setRowGroupExpand', 'setAllRowGroupExpand', 'clearRowGroupExpand', 'isRowGroupExpandByRow', 'isRowGroupRecord', 'setRowGroups', 'clearRowGroups', 'openTooltip', 'moveColumnTo', 'moveRowTo', 'getCellLabel', 'getCellElement', 'focus', 'blur', 'connect'];
32
32
  const gridComponentEmits = [..._emits.default, 'page-change', 'form-submit', 'form-submit-invalid', 'form-reset', 'form-collapse', 'form-toggle-collapse', 'proxy-query', 'proxy-delete', 'proxy-save', 'toolbar-button-click', 'toolbar-tool-click', 'zoom'];
33
33
  var _default = exports.default = (0, _vue.defineComponent)({
34
34
  name: 'VxeGrid',
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_utils=require("../../ui/src/utils"),_dom=require("../../ui/src/dom"),_ui=require("../../ui"),_table=_interopRequireDefault(require("../../table/src/table")),_toolbar=_interopRequireDefault(require("../../toolbar/src/toolbar")),_props=_interopRequireDefault(require("../../table/src/props")),_emits=_interopRequireDefault(require("../../table/src/emits")),_vn=require("../../ui/src/vn"),_log=require("../../ui/src/log");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{getConfig,getI18n,commands,hooks,useFns,createEvent,globalEvents,GLOBAL_EVENT_KEYS,renderEmptyElement}=_ui.VxeUI,tableComponentPropKeys=Object.keys(_props.default),tableComponentMethodKeys=["clearAll","syncData","updateData","loadData","reloadData","reloadRow","loadColumn","reloadColumn","getRowNode","getColumnNode","getRowIndex","getVTRowIndex","getVMRowIndex","getColumnIndex","getVTColumnIndex","getVMColumnIndex","setRow","createData","createRow","revertData","clearData","isRemoveByRow","isInsertByRow","isUpdateByRow","getColumns","getColumnById","getColumnByField","getTableColumn","getFullColumns","getData","getCheckboxRecords","getParentRow","getTreeRowChildren","getTreeParentRow","getRowSeq","getRowById","getRowid","getTableData","getFullData","setColumnFixed","clearColumnFixed","setColumnWidth","getColumnWidth","setRowHeightConf","getRowHeightConf","setRowHeight","getRowHeight","hideColumn","showColumn","resetColumn","refreshColumn","refreshScroll","recalculate","closeTooltip","isAllCheckboxChecked","isAllCheckboxIndeterminate","getCheckboxIndeterminateRecords","setCheckboxRow","setCheckboxRowKey","isCheckedByCheckboxRow","isCheckedByCheckboxRowKey","isIndeterminateByCheckboxRow","isIndeterminateByCheckboxRowKey","toggleCheckboxRow","setAllCheckboxRow","getRadioReserveRecord","clearRadioReserve","getCheckboxReserveRecords","clearCheckboxReserve","toggleAllCheckboxRow","clearCheckboxRow","setCurrentRow","isCheckedByRadioRow","isCheckedByRadioRowKey","setRadioRow","setRadioRowKey","clearCurrentRow","clearRadioRow","getCurrentRecord","getRadioRecord","getCurrentColumn","setCurrentColumn","clearCurrentColumn","setPendingRow","togglePendingRow","hasPendingByRow","isPendingByRow","getPendingRecords","clearPendingRow","sort","setSort","clearSort","isSort","getSortColumns","closeFilter","isFilter","isActiveFilterByColumn","isRowExpandLoaded","clearRowExpandLoaded","reloadRowExpand","reloadRowExpand","toggleRowExpand","setAllRowExpand","setRowExpand","isExpandByRow","isRowExpandByRow","clearRowExpand","clearRowExpandReserve","getRowExpandRecords","getTreeExpandRecords","isTreeExpandLoaded","clearTreeExpandLoaded","reloadTreeExpand","reloadTreeChilds","toggleTreeExpand","setAllTreeExpand","setTreeExpand","isTreeExpandByRow","clearTreeExpand","clearTreeExpandReserve","getScroll","scrollTo","scrollToRow","scrollToColumn","clearScroll","updateFooter","updateStatus","setMergeCells","removeInsertRow","removeMergeCells","getMergeCells","clearMergeCells","setMergeFooterItems","removeMergeFooterItems","getMergeFooterItems","clearMergeFooterItems","getCustomStoreData","setRowGroupExpand","setAllRowGroupExpand","clearRowGroupExpand","isRowGroupExpandByRow","isRowGroupRecord","setRowGroups","clearRowGroups","openTooltip","moveColumnTo","moveRowTo","getCellLabel","getCellElement","focus","blur","connect"],gridComponentEmits=[..._emits.default,"page-change","form-submit","form-submit-invalid","form-reset","form-collapse","form-toggle-collapse","proxy-query","proxy-delete","proxy-save","toolbar-button-click","toolbar-tool-click","zoom"];var _default=exports.default=(0,_vue.defineComponent)({name:"VxeGrid",props:Object.assign(Object.assign({},_props.default),{layouts:Array,columns:Array,pagerConfig:Object,proxyConfig:Object,toolbarConfig:Object,formConfig:Object,zoomConfig:Object,size:{type:String,default:()=>getConfig().grid.size||getConfig().size}}),emits:gridComponentEmits,setup(T,e){let t,{slots:s,emit:r}=e;var R=_xeUtils.default.uniqueId();let i=_ui.VxeUI.getComponent("VxeForm"),l=_ui.VxeUI.getComponent("VxePager"),E=[["Form"],["Toolbar","Top","Table","Bottom","Pager"]],w=useFns.useSize(T).computeSize,j=(0,_vue.reactive)({tableLoading:!1,proxyInited:!1,isZMax:!1,tableData:[],filterData:[],formData:{},sortData:[],tZindex:0,tablePage:{total:0,pageSize:(null==(t=getConfig().pager)?void 0:t.pageSize)||10,currentPage:1}}),u=(0,_vue.ref)(),S=(0,_vue.ref)(),n=(0,_vue.ref)(),d=(0,_vue.ref)(),g=(0,_vue.ref)(),c=(0,_vue.ref)(),v=(0,_vue.ref)(),m=(0,_vue.ref)(),p=(0,_vue.ref)(),f=(0,_vue.ref)();var o=e=>{let t={};return e.forEach(o=>{t[o]=(...e)=>{var t=S.value;if(t&&t[o])return t[o](...e)}}),t};let D=o(tableComponentMethodKeys),M=(tableComponentMethodKeys.forEach(o=>{D[o]=(...e)=>{var t=S.value;if(t&&t[o])return t&&t[o](...e)}}),(0,_vue.computed)(()=>_xeUtils.default.merge({},_xeUtils.default.clone(getConfig().grid.proxyConfig,!0),T.proxyConfig))),A=(0,_vue.computed)(()=>{var e=M.value;return _xeUtils.default.isBoolean(e.message)?e.message:e.showResponseMsg}),q=(0,_vue.computed)(()=>M.value.showActiveMsg),F=(0,_vue.computed)(()=>Object.assign({},getConfig().grid.pagerConfig,T.pagerConfig)),x=(0,_vue.computed)(()=>Object.assign({},getConfig().grid.formConfig,T.formConfig)),L=(0,_vue.computed)(()=>Object.assign({},getConfig().grid.toolbarConfig,T.toolbarConfig)),a=(0,_vue.computed)(()=>Object.assign({},getConfig().grid.zoomConfig,T.zoomConfig)),O=(0,_vue.computed)(()=>{var{height:e,maxHeight:t}=T,{isZMax:o,tZindex:r}=j,a={};return o?a.zIndex=r:(e&&(a.height="auto"===e||"100%"===e?"100%":(0,_dom.toCssUnit)(e)),t&&(a.maxHeight="auto"===t||"100%"===t?"100%":(0,_dom.toCssUnit)(t))),a}),I=(0,_vue.computed)(()=>{let t={},o=T;return tableComponentPropKeys.forEach(e=>{t[e]=o[e]}),t}),k=(0,_vue.computed)(()=>{var{seqConfig:e,pagerConfig:t,loading:o,editConfig:r,proxyConfig:a}=T,{isZMax:l,tableLoading:i,tablePage:n}=j,s=I.value,u=M.value,d=F.value,g=Object.assign({},s);return l&&(s.maxHeight?g.maxHeight="100%":g.height="100%"),a&&(0,_utils.isEnableConf)(u)&&(g.loading=o||i,t)&&u.seq&&(0,_utils.isEnableConf)(d)&&(g.seqConfig=Object.assign({},e,{startIndex:(n.currentPage-1)*n.pageSize})),r&&(g.editConfig=Object.assign({},r)),g}),P=(0,_vue.computed)(()=>{var e=T.layouts;let t=[],o=[],r=[],a=[];return(t=e&&e.length?e:getConfig().grid.layouts||E).length&&(_xeUtils.default.isArray(t[0])?(o=t[0],r=t[1]||[],a=t[2]||[]):r=t),{headKeys:o,bodyKeys:r,footKeys:a}});var U=(0,_vue.computed)(()=>{var e=F.value;return""+e.currentPage+e.pageSize});let K={refElem:u,refTable:S,refForm:n,refToolbar:d,refPager:g},H={computeProxyOpts:M,computePagerOpts:F,computeFormOpts:x,computeToolbarOpts:L,computeZoomOpts:a},V={xID:R,props:T,context:e,reactData:j,getRefMaps:()=>K,getComputeMaps:()=>H},b=()=>{var e=L.value;T.toolbarConfig&&(0,_utils.isEnableConf)(e)&&(0,_vue.nextTick)(()=>{var e=S.value,t=d.value;e&&t&&e.connect(t)})},z=()=>{var e=T.proxyConfig,t=j.formData,o=M.value,r=x.value;return e&&(0,_utils.isEnableConf)(o)&&o.form?t:r.data},_=()=>{var e=j.tablePage,t=T.pagerConfig,o=F.value,{currentPage:r,pageSize:a}=o;t&&(0,_utils.isEnableConf)(o)&&(r&&(e.currentPage=r),a)&&(e.pageSize=a)},$=(e,t)=>{var o=M.value,o=(o.response||o.props||{}).message;let r;return(r=e&&o?_xeUtils.default.isFunction(o)?o({data:e,$grid:V}):_xeUtils.default.get(e,o):r)||getI18n(t)},B=(e,t,o)=>{var r=q.value,a=D.getCheckboxRecords();if(r)if(a.length){if(_ui.VxeUI.modal)return _ui.VxeUI.modal.confirm({id:"cfm_"+e,content:getI18n(t),escClosable:!0}).then(e=>{if("confirm"===e)return o()})}else _ui.VxeUI.modal&&_ui.VxeUI.modal.message({id:"msg_"+e,content:getI18n("vxe.grid.selectOneRecord"),status:"warning"});else a.length&&o();return Promise.resolve()},G=e=>{var t=T.proxyConfig,o=j.tablePage;let{$event:r,currentPage:a,pageSize:l}=e;var i=M.value;o.currentPage=a,o.pageSize=l,V.dispatchEvent("page-change",e,r),t&&(0,_utils.isEnableConf)(i)&&V.commitProxy("query").then(e=>{V.dispatchEvent("proxy-query",e,r)})},N=t=>{var e=S.value,o=T.proxyConfig,e=e.getComputeMaps().computeSortOpts,r=M.value;e.value.remote&&(j.sortData=t.sortList,o)&&(0,_utils.isEnableConf)(r)&&(j.tablePage.currentPage=1,Z.commitProxy("query").then(e=>{Z.dispatchEvent("proxy-query",e,t.$event)})),Z.dispatchEvent("sort-change",t,t.$event)},Q=t=>{var e=S.value,o=T.proxyConfig,e=e.getComputeMaps().computeFilterOpts,r=M.value;e.value.remote&&(j.filterData=t.filterList,o)&&(0,_utils.isEnableConf)(r)&&(j.tablePage.currentPage=1,Z.commitProxy("query").then(e=>{Z.dispatchEvent("proxy-query",e,t.$event)})),Z.dispatchEvent("filter-change",t,t.$event)},W=t=>{var e=T.proxyConfig,o=M.value;j.tableLoading||(e&&(0,_utils.isEnableConf)(o)&&Z.commitProxy("reload").then(e=>{Z.dispatchEvent("proxy-query",Object.assign(Object.assign({},e),{isReload:!0}),t.$event)}),Z.dispatchEvent("form-submit",t,t.$event))},Y=e=>{var t=T.proxyConfig;let o=e.$event;var r=M.value,a=S.value;t&&(0,_utils.isEnableConf)(r)&&(a.clearScroll(),Z.commitProxy("reload").then(e=>{Z.dispatchEvent("proxy-query",Object.assign(Object.assign({},e),{isReload:!0}),o)})),Z.dispatchEvent("form-reset",e,o)},J=e=>{Z.dispatchEvent("form-submit-invalid",e,e.$event)},X=e=>{var t=e.$event;Z.dispatchEvent("form-toggle-collapse",e,t),Z.dispatchEvent("form-collapse",e,t)},ee=e=>{var t=j.isZMax;return(e?!t:t)&&(j.isZMax=!t,j.tZindex<(0,_utils.getLastZIndex)())&&(j.tZindex=(0,_utils.nextZIndex)()),(0,_vue.nextTick)().then(()=>D.recalculate(!0)).then(()=>(setTimeout(()=>D.recalculate(!0),15),j.isZMax))},te=(e,t)=>{e=e[t];if(e){if(!_xeUtils.default.isString(e))return e;if(s[e])return s[e];(0,_log.errLog)("vxe.error.notSlot",[e])}return null},oe=e=>{let o={};return _xeUtils.default.objectMap(e,(e,t)=>{e&&(_xeUtils.default.isString(e)?s[e]?o[t]=s[e]:(0,_log.errLog)("vxe.error.notSlot",[e]):o[t]=e)}),o},re=()=>{var{formConfig:e,proxyConfig:o}=T,r=j.formData,a=M.value,l=x.value;if(e&&(0,_utils.isEnableConf)(l)||s.form){let e=[];if(s.form)e=s.form({$grid:V});else if(l.items){let t={};if(!l.inited){l.inited=!0;let t=a.beforeItem;a&&t&&l.items.forEach(e=>{t({$grid:V,item:e})})}l.items.forEach(e=>{_xeUtils.default.each(e.slots,e=>{_xeUtils.default.isFunction(e)||s[e]&&(t[e]=s[e])})}),i&&e.push((0,_vue.h)(i,Object.assign(Object.assign({ref:n},Object.assign({},l,{data:o&&(0,_utils.isEnableConf)(a)&&a.form?r:l.data})),{onSubmit:W,onReset:Y,onSubmitInvalid:J,onCollapse:X}),t))}return(0,_vue.h)("div",{ref:c,key:"form",class:"vxe-grid--form-wrapper"},e)}return renderEmptyElement(V)},ae=()=>{var t,o,r=T.toolbarConfig,a=L.value;if(r&&(0,_utils.isEnableConf)(a)||s.toolbar){let e=[];return s.toolbar?e=s.toolbar({$grid:V}):(r={},(o=a.slots)&&(t=te(o,"buttons"),o=te(o,"tools"),t&&(r.buttons=t),o)&&(r.tools=o),e.push((0,_vue.h)(_toolbar.default,Object.assign(Object.assign({ref:d},a),{slots:void 0}),r))),(0,_vue.h)("div",{ref:v,key:"toolbar",class:"vxe-grid--toolbar-wrapper"},e)}return renderEmptyElement(V)},le=()=>s.top?(0,_vue.h)("div",{ref:m,key:"top",class:"vxe-grid--top-wrapper"},s.top({$grid:V})):renderEmptyElement(V),ie=()=>{var e=s.left;return e?(0,_vue.h)("div",{class:"vxe-grid--left-wrapper"},e({$grid:V})):renderEmptyElement(V)},ne=()=>{var e=s.right;return e?(0,_vue.h)("div",{class:"vxe-grid--right-wrapper"},e({$grid:V})):renderEmptyElement(V)},se=()=>{var e=T.proxyConfig,t=k.value,o=M.value,r=Object.assign({},ge),a=s.empty,l=s.loading,i=s.rowDragIcon||s["row-drag-icon"],n=s.columnDragIcon||s["column-drag-icon"],e=(e&&(0,_utils.isEnableConf)(o)&&(o.sort&&(r.onSortChange=N),o.filter)&&(r.onFilterChange=Q),{});return a&&(e.empty=a),l&&(e.loading=l),i&&(e.rowDragIcon=i),n&&(e.columnDragIcon=n),(0,_vue.h)("div",{class:"vxe-grid--table-wrapper"},[(0,_vue.h)(_table.default,Object.assign(Object.assign({ref:S},t),r),e)])},ue=()=>s.bottom?(0,_vue.h)("div",{ref:p,key:"bottom",class:"vxe-grid--bottom-wrapper"},s.bottom({$grid:V})):renderEmptyElement(V),de=()=>{var{proxyConfig:e,pagerConfig:t}=T,o=M.value,r=F.value,a=s.pager;return t&&(0,_utils.isEnableConf)(r)||s.pager?(0,_vue.h)("div",{ref:f,key:"pager",class:"vxe-grid--pager-wrapper"},a?a({$grid:V}):[l?(0,_vue.h)(l,Object.assign(Object.assign(Object.assign({ref:g},r),e&&(0,_utils.isEnableConf)(o)?j.tablePage:{}),{onPageChange:G}),oe(r.slots)):renderEmptyElement(V)]):renderEmptyElement(V)},h=e=>{let t=[];return e.forEach(e=>{switch(e){case"Form":t.push(re());break;case"Toolbar":t.push(ae());break;case"Top":t.push(le());break;case"Table":t.push((0,_vue.h)("div",{key:"table",class:"vxe-grid--table-container"},[ie(),se(),ne()]));break;case"Bottom":t.push(ue());break;case"Pager":t.push(de());break;default:(0,_log.errLog)("vxe.error.notProp",["layouts -> "+e])}}),t},ge={},ce=(_emits.default.forEach(t=>{var e=_xeUtils.default.camelCase("on-"+t);ge[e]=(...e)=>r(t,...e)}),()=>{var{proxyConfig:e,formConfig:t}=T,o=j.proxyInited,r=M.value,l=x.value;if(e&&(0,_utils.isEnableConf)(r)){if(t&&(0,_utils.isEnableConf)(l)&&r.form&&l.items){let a={};l.items.forEach(t=>{var{field:o,itemRender:r}=t;if(o){let e=null;r&&(r=r.defaultValue,_xeUtils.default.isFunction(r)?e=r({item:t}):_xeUtils.default.isUndefined(r)||(e=r)),a[o]=e}}),j.formData=a}o||!(j.proxyInited=!0)!==r.autoLoad&&(0,_vue.nextTick)().then(()=>Z.commitProxy("_init")).then(e=>{Z.dispatchEvent("proxy-query",Object.assign(Object.assign({},e),{isInited:!0}),new Event("init"))})}}),ve=e=>{var t=a.value;globalEvents.hasKey(e,GLOBAL_EVENT_KEYS.ESCAPE)&&j.isZMax&&!1!==t.escRestore&&C.triggerZoomEvent(e)};let Z={dispatchEvent:(e,t,o)=>{r(e,createEvent(o,{$grid:V},t))},getEl(){return u.value},commitProxy(t,...d){let{toolbarConfig:e,pagerConfig:i,editRules:g,validConfig:c}=T,n=j.tablePage,v=q.value,m=A.value;var o=M.value;let s=F.value;var r=L.value;let{beforeQuery:u,afterQuery:p,beforeDelete:f,afterDelete:x,beforeSave:b,afterSave:_,ajax:h={}}=o,C=o.response||o.props||{},y=S.value;var R=z();let E=null,w=null;w=_xeUtils.default.isString(t)?(o=r.buttons,r=e&&(0,_utils.isEnableConf)(r)&&o?_xeUtils.default.findTree(o,e=>e.code===t,{children:"dropdowns"}):null,E=r?r.item:null,t):(E=t).code;var a=E?E.params:null;switch(w){case"insert":return y.insert({});case"insert_edit":return y.insert({}).then(({row:e})=>y.setEditRow(e));case"insert_actived":return y.insert({}).then(({row:e})=>y.setEditRow(e));case"mark_cancel":I=w,P=q.value,O=S.value,(k=O.getCheckboxRecords()).length?(O.togglePendingRow(k),D.clearCheckboxRow()):P&&_ui.VxeUI.modal&&_ui.VxeUI.modal.message({id:I,content:getI18n("vxe.grid.selectOneRecord"),status:"warning"});break;case"remove":return B(w,"vxe.grid.removeSelectRecord",()=>y.removeCheckboxRow());case"import":y.importData(a);break;case"open_import":y.openImport(a);break;case"export":y.exportData(a);break;case"open_export":y.openExport(a);break;case"reset_custom":return y.resetCustom(!0);case"_init":case"reload":case"query":{var O=h.query;let l=h.querySuccess,r=h.queryError;if(O){var I,k="_init"===w,P="reload"===w;if(!k&&j.tableLoading)return(0,_vue.nextTick)();let t=[],o=[],e={};if(i&&((k||P)&&(n.currentPage=1),(0,_utils.isEnableConf)(s))&&(e=Object.assign({},n)),k){let e=null;y&&(I=y.getComputeMaps().computeSortOpts,U=I.value,e=U.defaultSort),e&&(_xeUtils.default.isArray(e)||(e=[e]),t=e.map(e=>({field:e.field,property:e.field,order:e.order}))),y&&(o=y.getCheckedFilters())}else y&&(P?y.clearAll():(t=y.getSortColumns(),o=y.getCheckedFilters()));let a={code:w,button:E,isInited:k,isReload:P,$grid:V,page:e,sort:t.length?t[0]:{},sorts:t,filters:o,form:R,options:O};return j.sortData=t,j.filterData=o,j.tableLoading=!0,Promise.resolve((u||O)(a,...d)).then(e=>{let t=[];var o,r;return j.tableLoading=!1,e&&(i&&(0,_utils.isEnableConf)(s)?(r=C.total,r=(_xeUtils.default.isFunction(r)?r({data:e,$grid:V}):_xeUtils.default.get(e,r||"page.total"))||0,n.total=_xeUtils.default.toNumber(r),o=C.result,t=(_xeUtils.default.isFunction(o)?o({data:e,$grid:V}):_xeUtils.default.get(e,o||"result"))||[],o=Math.max(Math.ceil(r/n.pageSize),1),n.currentPage>o&&(n.currentPage=o)):(r=C.list,t=(r?_xeUtils.default.isFunction(r)?r({data:e,$grid:V}):_xeUtils.default.get(e,r):e)||[])),y?y.loadData(t):(0,_vue.nextTick)(()=>{y&&y.loadData(t)}),p&&p(a,...d),l&&l(Object.assign(Object.assign({},a),{response:e})),{status:!0}}).catch(e=>(j.tableLoading=!1,r&&r(Object.assign(Object.assign({},a),{response:e})),{status:!1}))}(0,_log.errLog)("vxe.error.notFunc",["proxy-config.ajax.query"]);break}case"delete":{let r=h.delete,a=h.deleteSuccess,l=h.deleteError;if(r){let e=D.getCheckboxRecords(),t=e.filter(e=>!y.isInsertByRow(e));var U={removeRecords:t};let o={$grid:V,code:w,button:E,body:U,form:R,options:r};if(e.length)return B(w,"vxe.grid.deleteSelectRecord",()=>t.length?(j.tableLoading=!0,Promise.resolve((f||r)(o,...d)).then(e=>(j.tableLoading=!1,y.setPendingRow(t,!1),m&&_ui.VxeUI.modal&&_ui.VxeUI.modal.message({content:$(e,"vxe.grid.delSuccess"),status:"success"}),x?x(o,...d):Z.commitProxy("query"),a&&a(Object.assign(Object.assign({},o),{response:e})),{status:!0})).catch(e=>(j.tableLoading=!1,m&&_ui.VxeUI.modal&&_ui.VxeUI.modal.message({id:w,content:$(e,"vxe.grid.operError"),status:"error"}),l&&l(Object.assign(Object.assign({},o),{response:e})),{status:!1}))):y.remove(e));v&&_ui.VxeUI.modal&&_ui.VxeUI.modal.message({id:w,content:getI18n("vxe.grid.selectOneRecord"),status:"warning"})}else(0,_log.errLog)("vxe.error.notFunc",["proxy-config.ajax.delete"]);break}case"save":{let n=h.save,s=h.saveSuccess,u=h.saveError;if(n){let t=y.getRecordset(),{insertRecords:o,removeRecords:r,updateRecords:a,pendingRecords:l}=t,i={$grid:V,code:w,button:E,body:t,form:R,options:n},e=(o.length&&(t.pendingRecords=l.filter(e=>-1===y.findRowIndexOf(o,e))),l.length&&(t.insertRecords=o.filter(e=>-1===y.findRowIndexOf(l,e))),Promise.resolve());return(e=g?y[c&&"full"===c.msgMode?"fullValidate":"validate"](t.insertRecords.concat(a)):e).then(e=>{if(!e)return t.insertRecords.length||r.length||a.length||t.pendingRecords.length?(j.tableLoading=!0,Promise.resolve((b||n)(i,...d)).then(e=>(j.tableLoading=!1,y.clearPendingRow(),m&&_ui.VxeUI.modal&&_ui.VxeUI.modal.message({content:$(e,"vxe.grid.saveSuccess"),status:"success"}),_?_(i,...d):Z.commitProxy("query"),s&&s(Object.assign(Object.assign({},i),{response:e})),{status:!0})).catch(e=>(j.tableLoading=!1,m&&_ui.VxeUI.modal&&_ui.VxeUI.modal.message({id:w,content:$(e,"vxe.grid.operError"),status:"error"}),u&&u(Object.assign(Object.assign({},i),{response:e})),{status:!1}))):void(v&&_ui.VxeUI.modal&&_ui.VxeUI.modal.message({id:w,content:getI18n("vxe.grid.dataUnchanged"),status:"info"}))})}(0,_log.errLog)("vxe.error.notFunc",["proxy-config.ajax.save"]);break}default:var U=commands.get(w);U&&((U=U.tableCommandMethod||U.commandMethod)?U({code:w,button:E,$grid:V,$table:y},...d):(0,_log.errLog)("vxe.error.notCommands",[w]))}return(0,_vue.nextTick)()},zoom(){return j.isZMax?Z.revert():Z.maximize()},isMaximized(){return j.isZMax},maximize(){return ee(!0)},revert(){return ee()},getFormData:z,getFormItems(e){var t=x.value,o=T.formConfig,r=t.items;let a=[];return _xeUtils.default.eachTree(o&&(0,_utils.isEnableConf)(t)&&r?r:[],e=>{a.push(e)},{children:"children"}),_xeUtils.default.isUndefined(e)?a:a[e]},getProxyInfo(){var e,t=S.value;return T.proxyConfig?(e=j.sortData,{data:t?t.getFullData():[],filter:j.filterData,form:z(),sort:e.length?e[0]:{},sorts:e,pager:j.tablePage,pendingRecords:t?t.getPendingRecords():[]}):null}},C=("development"===process.env.NODE_ENV&&(Z.loadColumn=e=>{var t=S.value;return _xeUtils.default.eachTree(e,e=>{e.slots&&_xeUtils.default.each(e.slots,e=>{_xeUtils.default.isFunction(e)||s[e]||(0,_log.errLog)("vxe.error.notSlot",[e])})}),t?t.loadColumn(e):(0,_vue.nextTick)()},Z.reloadColumn=e=>(D.clearAll(),Z.loadColumn(e))),{extendTableMethods:o,callSlot(e,t){return e&&(_xeUtils.default.isString(e)&&(e=s[e]||null),_xeUtils.default.isFunction(e))?(0,_vn.getSlotVNs)(e(t)):[]},getExcludeHeight(){var e,t,o,r,a,l,i=j.isZMax,n=u.value;return n?(e=c.value,t=v.value,o=m.value,r=p.value,a=f.value,l=n.parentElement,(!i&&l?(0,_dom.getPaddingTopBottomSize)(l):0)+(0,_dom.getPaddingTopBottomSize)(n)+(0,_dom.getOffsetHeight)(e)+(0,_dom.getOffsetHeight)(t)+(0,_dom.getOffsetHeight)(o)+(0,_dom.getOffsetHeight)(r)+(0,_dom.getOffsetHeight)(a)):0},getParentHeight(){var e=u.value;return e?(e=e.parentElement,(j.isZMax?(0,_dom.getDomNode)().visibleHeight:e?_xeUtils.default.toNumber(getComputedStyle(e).height):0)-C.getExcludeHeight()):0},triggerToolbarCommitEvent(e,t){let o=e.code;return Z.commitProxy(e,t).then(e=>{o&&e&&e.status&&["query","reload","delete","save"].includes(o)&&Z.dispatchEvent("delete"===o||"save"===o?"proxy-"+o:"proxy-query",Object.assign(Object.assign({},e),{isReload:"reload"===o}),t)})},triggerToolbarBtnEvent(e,t){C.triggerToolbarCommitEvent(e,t),Z.dispatchEvent("toolbar-button-click",{code:e.code,button:e},t)},triggerToolbarTolEvent(e,t){C.triggerToolbarCommitEvent(e,t),Z.dispatchEvent("toolbar-tool-click",{code:e.code,tool:e},t)},triggerZoomEvent(e){Z.zoom(),Z.dispatchEvent("zoom",{type:j.isZMax?"max":"revert"},e)}}),y=(Object.assign(V,D,Z,C),(0,_vue.ref)(0));(0,_vue.watch)(()=>T.columns?T.columns.length:-1,()=>{y.value++}),(0,_vue.watch)(()=>T.columns,()=>{y.value++}),(0,_vue.watch)(y,()=>{(0,_vue.nextTick)(()=>V.loadColumn(T.columns||[]))}),(0,_vue.watch)(()=>T.toolbarConfig,()=>{b()}),(0,_vue.watch)(U,()=>{_()}),(0,_vue.watch)(()=>T.proxyConfig,()=>{ce()}),hooks.forEach(e=>{var e=e.setupGrid;e&&(e=e(V))&&_xeUtils.default.isObject(e)&&Object.assign(V,e)}),_(),(0,_vue.onMounted)(()=>{(0,_vue.nextTick)(()=>{var e=T.columns;T.formConfig&&!i&&(0,_log.errLog)("vxe.error.reqComp",["vxe-form"]),T.pagerConfig&&!l&&(0,_log.errLog)("vxe.error.reqComp",["vxe-pager"]),e&&e.length&&V.loadColumn(e),b(),ce()}),globalEvents.on(V,"keydown",ve)}),(0,_vue.onUnmounted)(()=>{globalEvents.off(V,"keydown")});return V.renderVN=()=>{var e=w.value,t=O.value;return(0,_vue.h)("div",{ref:u,class:["vxe-grid",{["size--"+e]:e,"is--animat":!!T.animat,"is--round":T.round,"is--maximize":j.isZMax,"is--loading":T.loading||j.tableLoading}],style:t},(()=>{var{headKeys:e,bodyKeys:t,footKeys:o}=P.value,r=s.asideLeft||s["aside-left"],a=s.asideRight||s["aside-right"];return[(0,_vue.h)("div",{class:"vxe-grid--layout-header-wrapper"},h(e)),(0,_vue.h)("div",{class:"vxe-grid--layout-body-wrapper"},[r?(0,_vue.h)("div",{class:"vxe-grid--layout-aside-left-wrapper"},r({})):renderEmptyElement(V),(0,_vue.h)("div",{class:"vxe-grid--layout-body-content-wrapper"},h(t)),a?(0,_vue.h)("div",{class:"vxe-grid--layout-aside-right-wrapper"},a({})):renderEmptyElement(V)]),(0,_vue.h)("div",{class:"vxe-grid--layout-footer-wrapper"},h(o))]})())},(0,_vue.provide)("$xeGrid",V),V},render(){return this.renderVN()}});
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_utils=require("../../ui/src/utils"),_dom=require("../../ui/src/dom"),_ui=require("../../ui"),_table=_interopRequireDefault(require("../../table/src/table")),_toolbar=_interopRequireDefault(require("../../toolbar/src/toolbar")),_props=_interopRequireDefault(require("../../table/src/props")),_emits=_interopRequireDefault(require("../../table/src/emits")),_vn=require("../../ui/src/vn"),_log=require("../../ui/src/log");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{getConfig,getI18n,commands,hooks,useFns,createEvent,globalEvents,GLOBAL_EVENT_KEYS,renderEmptyElement}=_ui.VxeUI,tableComponentPropKeys=Object.keys(_props.default),tableComponentMethodKeys=["clearAll","syncData","updateData","loadData","reloadData","reloadRow","loadColumn","reloadColumn","getRowNode","getColumnNode","getRowIndex","getVTRowIndex","getVMRowIndex","getColumnIndex","getVTColumnIndex","getVMColumnIndex","setRow","createData","createRow","revertData","clearData","isRemoveByRow","isInsertByRow","isUpdateByRow","getColumns","getColumnById","getColumnByField","getTableColumn","getFullColumns","getData","getCheckboxRecords","getParentRow","getTreeRowChildren","getTreeParentRow","getRowSeq","getRowById","getRowid","getTableData","getFullData","setColumnFixed","clearColumnFixed","setColumnWidth","getColumnWidth","setRowHeightConf","getRowHeightConf","setRowHeight","getRowHeight","hideColumn","showColumn","resetColumn","refreshColumn","refreshScroll","recalculate","closeTooltip","isAllCheckboxChecked","isAllCheckboxIndeterminate","getCheckboxIndeterminateRecords","setCheckboxRow","setCheckboxRowKey","isCheckedByCheckboxRow","isCheckedByCheckboxRowKey","isIndeterminateByCheckboxRow","isIndeterminateByCheckboxRowKey","toggleCheckboxRow","setAllCheckboxRow","getRadioReserveRecord","clearRadioReserve","getCheckboxReserveRecords","clearCheckboxReserve","toggleAllCheckboxRow","clearCheckboxRow","setCurrentRow","isCheckedByRadioRow","isCheckedByRadioRowKey","setRadioRow","setRadioRowKey","clearCurrentRow","clearRadioRow","getCurrentRecord","getRadioRecord","getCurrentColumn","setCurrentColumn","clearCurrentColumn","setPendingRow","togglePendingRow","hasPendingByRow","isPendingByRow","getPendingRecords","clearPendingRow","sort","setSort","clearSort","clearSortByEvent","isSort","getSortColumns","closeFilter","isFilter","clearFilterByEvent","isActiveFilterByColumn","isRowExpandLoaded","clearRowExpandLoaded","reloadRowExpand","reloadRowExpand","toggleRowExpand","setAllRowExpand","setRowExpand","isExpandByRow","isRowExpandByRow","clearRowExpand","clearRowExpandReserve","getRowExpandRecords","getTreeExpandRecords","isTreeExpandLoaded","clearTreeExpandLoaded","reloadTreeExpand","reloadTreeChilds","toggleTreeExpand","setAllTreeExpand","setTreeExpand","isTreeExpandByRow","clearTreeExpand","clearTreeExpandReserve","getScroll","scrollTo","scrollToRow","scrollToColumn","clearScroll","updateFooter","updateStatus","setMergeCells","removeInsertRow","removeMergeCells","getMergeCells","clearMergeCells","setMergeFooterItems","removeMergeFooterItems","getMergeFooterItems","clearMergeFooterItems","getCustomStoreData","setRowGroupExpand","setAllRowGroupExpand","clearRowGroupExpand","isRowGroupExpandByRow","isRowGroupRecord","setRowGroups","clearRowGroups","openTooltip","moveColumnTo","moveRowTo","getCellLabel","getCellElement","focus","blur","connect"],gridComponentEmits=[..._emits.default,"page-change","form-submit","form-submit-invalid","form-reset","form-collapse","form-toggle-collapse","proxy-query","proxy-delete","proxy-save","toolbar-button-click","toolbar-tool-click","zoom"];var _default=exports.default=(0,_vue.defineComponent)({name:"VxeGrid",props:Object.assign(Object.assign({},_props.default),{layouts:Array,columns:Array,pagerConfig:Object,proxyConfig:Object,toolbarConfig:Object,formConfig:Object,zoomConfig:Object,size:{type:String,default:()=>getConfig().grid.size||getConfig().size}}),emits:gridComponentEmits,setup(T,e){let t,{slots:s,emit:o}=e;var E=_xeUtils.default.uniqueId();let n=_ui.VxeUI.getComponent("VxeForm"),l=_ui.VxeUI.getComponent("VxePager"),R=[["Form"],["Toolbar","Top","Table","Bottom","Pager"]],w=useFns.useSize(T).computeSize,j=(0,_vue.reactive)({tableLoading:!1,proxyInited:!1,isZMax:!1,tableData:[],filterData:[],formData:{},sortData:[],tZindex:0,tablePage:{total:0,pageSize:(null==(t=getConfig().pager)?void 0:t.pageSize)||10,currentPage:1}}),u=(0,_vue.ref)(),S=(0,_vue.ref)(),i=(0,_vue.ref)(),d=(0,_vue.ref)(),g=(0,_vue.ref)(),c=(0,_vue.ref)(),v=(0,_vue.ref)(),m=(0,_vue.ref)(),p=(0,_vue.ref)(),f=(0,_vue.ref)();var r=e=>{let t={};return e.forEach(r=>{t[r]=(...e)=>{var t=S.value;if(t&&t[r])return t[r](...e)}}),t};let D=r(tableComponentMethodKeys),M=(tableComponentMethodKeys.forEach(r=>{D[r]=(...e)=>{var t=S.value;if(t&&t[r])return t&&t[r](...e)}}),(0,_vue.computed)(()=>_xeUtils.default.merge({},_xeUtils.default.clone(getConfig().grid.proxyConfig,!0),T.proxyConfig))),A=(0,_vue.computed)(()=>{var e=M.value;return _xeUtils.default.isBoolean(e.message)?e.message:e.showResponseMsg}),q=(0,_vue.computed)(()=>M.value.showActiveMsg),F=(0,_vue.computed)(()=>Object.assign({},getConfig().grid.pagerConfig,T.pagerConfig)),x=(0,_vue.computed)(()=>Object.assign({},getConfig().grid.formConfig,T.formConfig)),L=(0,_vue.computed)(()=>Object.assign({},getConfig().grid.toolbarConfig,T.toolbarConfig)),a=(0,_vue.computed)(()=>Object.assign({},getConfig().grid.zoomConfig,T.zoomConfig)),O=(0,_vue.computed)(()=>{var{height:e,maxHeight:t}=T,{isZMax:r,tZindex:o}=j,a={};return r?a.zIndex=o:(e&&(a.height="auto"===e||"100%"===e?"100%":(0,_dom.toCssUnit)(e)),t&&(a.maxHeight="auto"===t||"100%"===t?"100%":(0,_dom.toCssUnit)(t))),a}),I=(0,_vue.computed)(()=>{let t={},r=T;return tableComponentPropKeys.forEach(e=>{t[e]=r[e]}),t}),k=(0,_vue.computed)(()=>{var{seqConfig:e,pagerConfig:t,loading:r,editConfig:o,proxyConfig:a}=T,{isZMax:l,tableLoading:n,tablePage:i}=j,s=I.value,u=M.value,d=F.value,g=Object.assign({},s);return l&&(s.maxHeight?g.maxHeight="100%":g.height="100%"),a&&(0,_utils.isEnableConf)(u)&&(g.loading=r||n,t)&&u.seq&&(0,_utils.isEnableConf)(d)&&(g.seqConfig=Object.assign({},e,{startIndex:(i.currentPage-1)*i.pageSize})),o&&(g.editConfig=Object.assign({},o)),g}),P=(0,_vue.computed)(()=>{var e=T.layouts;let t=[],r=[],o=[],a=[];return(t=e&&e.length?e:getConfig().grid.layouts||R).length&&(_xeUtils.default.isArray(t[0])?(r=t[0],o=t[1]||[],a=t[2]||[]):o=t),{headKeys:r,bodyKeys:o,footKeys:a}});var U=(0,_vue.computed)(()=>{var e=F.value;return""+e.currentPage+e.pageSize});let K={refElem:u,refTable:S,refForm:i,refToolbar:d,refPager:g},H={computeProxyOpts:M,computePagerOpts:F,computeFormOpts:x,computeToolbarOpts:L,computeZoomOpts:a},V={xID:E,props:T,context:e,reactData:j,getRefMaps:()=>K,getComputeMaps:()=>H},b=()=>{var e=L.value;T.toolbarConfig&&(0,_utils.isEnableConf)(e)&&(0,_vue.nextTick)(()=>{var e=S.value,t=d.value;e&&t&&e.connect(t)})},B=()=>{var e=T.proxyConfig,t=j.formData,r=M.value,o=x.value;return e&&(0,_utils.isEnableConf)(r)&&r.form?t:o.data},_=()=>{var e=j.tablePage,t=T.pagerConfig,r=F.value,{currentPage:o,pageSize:a}=r;t&&(0,_utils.isEnableConf)(r)&&(o&&(e.currentPage=o),a)&&(e.pageSize=a)},z=(e,t)=>{var r=M.value,r=(r.response||r.props||{}).message;let o;return(o=e&&r?_xeUtils.default.isFunction(r)?r({data:e,$grid:V}):_xeUtils.default.get(e,r):o)||getI18n(t)},$=(e,t,r)=>{var o=q.value,a=D.getCheckboxRecords();if(o)if(a.length){if(_ui.VxeUI.modal)return _ui.VxeUI.modal.confirm({id:"cfm_"+e,content:getI18n(t),escClosable:!0}).then(e=>{if("confirm"===e)return r()})}else _ui.VxeUI.modal&&_ui.VxeUI.modal.message({id:"msg_"+e,content:getI18n("vxe.grid.selectOneRecord"),status:"warning"});else a.length&&r();return Promise.resolve()},G=e=>{var t=T.proxyConfig,r=j.tablePage;let{$event:o,currentPage:a,pageSize:l}=e;var n=M.value;r.currentPage=a,r.pageSize=l,V.dispatchEvent("page-change",e,o),t&&(0,_utils.isEnableConf)(n)&&V.commitProxy("query").then(e=>{V.dispatchEvent("proxy-query",e,o)})},N=t=>{var e=S.value,r=T.proxyConfig,e=e.getComputeMaps().computeSortOpts,o=M.value;e.value.remote&&(j.sortData=t.sortList,r)&&(0,_utils.isEnableConf)(o)&&(j.tablePage.currentPage=1,Z.commitProxy("query").then(e=>{Z.dispatchEvent("proxy-query",e,t.$event)})),Z.dispatchEvent("sort-change",t,t.$event)},Q=t=>{var e=S.value,r=T.proxyConfig,e=e.getComputeMaps().computeFilterOpts,o=M.value;e.value.remote&&(j.filterData=t.filterList,r)&&(0,_utils.isEnableConf)(o)&&(j.tablePage.currentPage=1,Z.commitProxy("query").then(e=>{Z.dispatchEvent("proxy-query",e,t.$event)})),Z.dispatchEvent("filter-change",t,t.$event)},W=t=>{var e=T.proxyConfig,r=M.value;j.tableLoading||(e&&(0,_utils.isEnableConf)(r)&&Z.commitProxy("reload").then(e=>{Z.dispatchEvent("proxy-query",Object.assign(Object.assign({},e),{isReload:!0}),t.$event)}),Z.dispatchEvent("form-submit",t,t.$event))},Y=e=>{var t=T.proxyConfig;let r=e.$event;var o=M.value,a=S.value;t&&(0,_utils.isEnableConf)(o)&&(a.clearScroll(),Z.commitProxy("reload").then(e=>{Z.dispatchEvent("proxy-query",Object.assign(Object.assign({},e),{isReload:!0}),r)})),Z.dispatchEvent("form-reset",e,r)},J=e=>{Z.dispatchEvent("form-submit-invalid",e,e.$event)},X=e=>{var t=e.$event;Z.dispatchEvent("form-toggle-collapse",e,t),Z.dispatchEvent("form-collapse",e,t)},ee=e=>{var t=j.isZMax;return(e?!t:t)&&(j.isZMax=!t,j.tZindex<(0,_utils.getLastZIndex)())&&(j.tZindex=(0,_utils.nextZIndex)()),(0,_vue.nextTick)().then(()=>D.recalculate(!0)).then(()=>(setTimeout(()=>D.recalculate(!0),15),j.isZMax))},te=(e,t)=>{e=e[t];if(e){if(!_xeUtils.default.isString(e))return e;if(s[e])return s[e];(0,_log.errLog)("vxe.error.notSlot",[e])}return null},re=e=>{let r={};return _xeUtils.default.objectMap(e,(e,t)=>{e&&(_xeUtils.default.isString(e)?s[e]?r[t]=s[e]:(0,_log.errLog)("vxe.error.notSlot",[e]):r[t]=e)}),r},oe=()=>{var{formConfig:e,proxyConfig:r}=T,o=j.formData,a=M.value,l=x.value;if(e&&(0,_utils.isEnableConf)(l)||s.form){let e=[];if(s.form)e=s.form({$grid:V});else if(l.items){let t={};if(!l.inited){l.inited=!0;let t=a.beforeItem;a&&t&&l.items.forEach(e=>{t({$grid:V,item:e})})}l.items.forEach(e=>{_xeUtils.default.each(e.slots,e=>{_xeUtils.default.isFunction(e)||s[e]&&(t[e]=s[e])})}),n&&e.push((0,_vue.h)(n,Object.assign(Object.assign({ref:i},Object.assign({},l,{data:r&&(0,_utils.isEnableConf)(a)&&a.form?o:l.data})),{onSubmit:W,onReset:Y,onSubmitInvalid:J,onCollapse:X}),t))}return(0,_vue.h)("div",{ref:c,key:"form",class:"vxe-grid--form-wrapper"},e)}return renderEmptyElement(V)},ae=()=>{var t,r,o=T.toolbarConfig,a=L.value;if(o&&(0,_utils.isEnableConf)(a)||s.toolbar){let e=[];return s.toolbar?e=s.toolbar({$grid:V}):(o={},(r=a.slots)&&(t=te(r,"buttons"),r=te(r,"tools"),t&&(o.buttons=t),r)&&(o.tools=r),e.push((0,_vue.h)(_toolbar.default,Object.assign(Object.assign({ref:d},a),{slots:void 0}),o))),(0,_vue.h)("div",{ref:v,key:"toolbar",class:"vxe-grid--toolbar-wrapper"},e)}return renderEmptyElement(V)},le=()=>s.top?(0,_vue.h)("div",{ref:m,key:"top",class:"vxe-grid--top-wrapper"},s.top({$grid:V})):renderEmptyElement(V),ne=()=>{var e=s.left;return e?(0,_vue.h)("div",{class:"vxe-grid--left-wrapper"},e({$grid:V})):renderEmptyElement(V)},ie=()=>{var e=s.right;return e?(0,_vue.h)("div",{class:"vxe-grid--right-wrapper"},e({$grid:V})):renderEmptyElement(V)},se=()=>{var e=T.proxyConfig,t=k.value,r=M.value,o=Object.assign({},ge),a=s.empty,l=s.loading,n=s.rowDragIcon||s["row-drag-icon"],i=s.columnDragIcon||s["column-drag-icon"],e=(e&&(0,_utils.isEnableConf)(r)&&(r.sort&&(o.onSortChange=N),r.filter)&&(o.onFilterChange=Q),{});return a&&(e.empty=a),l&&(e.loading=l),n&&(e.rowDragIcon=n),i&&(e.columnDragIcon=i),(0,_vue.h)("div",{class:"vxe-grid--table-wrapper"},[(0,_vue.h)(_table.default,Object.assign(Object.assign({ref:S},t),o),e)])},ue=()=>s.bottom?(0,_vue.h)("div",{ref:p,key:"bottom",class:"vxe-grid--bottom-wrapper"},s.bottom({$grid:V})):renderEmptyElement(V),de=()=>{var{proxyConfig:e,pagerConfig:t}=T,r=M.value,o=F.value,a=s.pager;return t&&(0,_utils.isEnableConf)(o)||s.pager?(0,_vue.h)("div",{ref:f,key:"pager",class:"vxe-grid--pager-wrapper"},a?a({$grid:V}):[l?(0,_vue.h)(l,Object.assign(Object.assign(Object.assign({ref:g},o),e&&(0,_utils.isEnableConf)(r)?j.tablePage:{}),{onPageChange:G}),re(o.slots)):renderEmptyElement(V)]):renderEmptyElement(V)},h=e=>{let t=[];return e.forEach(e=>{switch(e){case"Form":t.push(oe());break;case"Toolbar":t.push(ae());break;case"Top":t.push(le());break;case"Table":t.push((0,_vue.h)("div",{key:"table",class:"vxe-grid--table-container"},[ne(),se(),ie()]));break;case"Bottom":t.push(ue());break;case"Pager":t.push(de());break;default:(0,_log.errLog)("vxe.error.notProp",["layouts -> "+e])}}),t},ge={},ce=(_emits.default.forEach(t=>{var e=_xeUtils.default.camelCase("on-"+t);ge[e]=(...e)=>o(t,...e)}),()=>{var{proxyConfig:e,formConfig:t}=T,r=j.proxyInited,o=M.value,l=x.value;if(e&&(0,_utils.isEnableConf)(o)){if(t&&(0,_utils.isEnableConf)(l)&&o.form&&l.items){let a={};l.items.forEach(t=>{var{field:r,itemRender:o}=t;if(r){let e=null;o&&(o=o.defaultValue,_xeUtils.default.isFunction(o)?e=o({item:t}):_xeUtils.default.isUndefined(o)||(e=o)),a[r]=e}}),j.formData=a}r||!(j.proxyInited=!0)!==o.autoLoad&&(0,_vue.nextTick)().then(()=>Z.commitProxy("_init")).then(e=>{Z.dispatchEvent("proxy-query",Object.assign(Object.assign({},e),{isInited:!0}),new Event("init"))})}}),ve=e=>{var t=a.value;globalEvents.hasKey(e,GLOBAL_EVENT_KEYS.ESCAPE)&&j.isZMax&&!1!==t.escRestore&&C.triggerZoomEvent(e)};let Z={dispatchEvent:(e,t,r)=>{o(e,createEvent(r,{$grid:V},t))},getEl(){return u.value},commitProxy(t,...d){let{toolbarConfig:e,pagerConfig:n,editRules:g,validConfig:c}=T,i=j.tablePage,v=q.value,m=A.value;var r=M.value;let s=F.value;var o=L.value;let{beforeQuery:u,afterQuery:p,beforeDelete:f,afterDelete:x,beforeSave:b,afterSave:_,ajax:h={}}=r,C=r.response||r.props||{},y=S.value;var E=B();let R=null,w=null;w=_xeUtils.default.isString(t)?(r=o.buttons,o=e&&(0,_utils.isEnableConf)(o)&&r?_xeUtils.default.findTree(r,e=>e.code===t,{children:"dropdowns"}):null,R=o?o.item:null,t):(R=t).code;var a=R?R.params:null;switch(w){case"insert":return y.insert({});case"insert_edit":return y.insert({}).then(({row:e})=>y.setEditRow(e));case"insert_actived":return y.insert({}).then(({row:e})=>y.setEditRow(e));case"mark_cancel":I=w,P=q.value,O=S.value,(k=O.getCheckboxRecords()).length?(O.togglePendingRow(k),D.clearCheckboxRow()):P&&_ui.VxeUI.modal&&_ui.VxeUI.modal.message({id:I,content:getI18n("vxe.grid.selectOneRecord"),status:"warning"});break;case"remove":return $(w,"vxe.grid.removeSelectRecord",()=>y.removeCheckboxRow());case"import":y.importData(a);break;case"open_import":y.openImport(a);break;case"export":y.exportData(a);break;case"open_export":y.openExport(a);break;case"reset_custom":return y.resetCustom(!0);case"_init":case"reload":case"query":{var O=h.query;let l=h.querySuccess,o=h.queryError;if(O){var I,k="_init"===w,P="reload"===w;if(!k&&j.tableLoading)return(0,_vue.nextTick)();let t=[],r=[],e={};if(n&&((k||P)&&(i.currentPage=1),(0,_utils.isEnableConf)(s))&&(e=Object.assign({},i)),k){let e=null;y&&(I=y.getComputeMaps().computeSortOpts,U=I.value,e=U.defaultSort),e&&(_xeUtils.default.isArray(e)||(e=[e]),t=e.map(e=>({field:e.field,property:e.field,order:e.order}))),y&&(r=y.getCheckedFilters())}else y&&(P?y.clearAll():(t=y.getSortColumns(),r=y.getCheckedFilters()));let a={code:w,button:R,isInited:k,isReload:P,$grid:V,page:e,sort:t.length?t[0]:{},sorts:t,filters:r,form:E,options:O};return j.sortData=t,j.filterData=r,j.tableLoading=!0,Promise.resolve((u||O)(a,...d)).then(e=>{let t=[];var r,o;return j.tableLoading=!1,e&&(n&&(0,_utils.isEnableConf)(s)?(o=C.total,o=(_xeUtils.default.isFunction(o)?o({data:e,$grid:V}):_xeUtils.default.get(e,o||"page.total"))||0,i.total=_xeUtils.default.toNumber(o),r=C.result,t=(_xeUtils.default.isFunction(r)?r({data:e,$grid:V}):_xeUtils.default.get(e,r||"result"))||[],r=Math.max(Math.ceil(o/i.pageSize),1),i.currentPage>r&&(i.currentPage=r)):(o=C.list,t=(o?_xeUtils.default.isFunction(o)?o({data:e,$grid:V}):_xeUtils.default.get(e,o):e)||[])),y?y.loadData(t):(0,_vue.nextTick)(()=>{y&&y.loadData(t)}),p&&p(a,...d),l&&l(Object.assign(Object.assign({},a),{response:e})),{status:!0}}).catch(e=>(j.tableLoading=!1,o&&o(Object.assign(Object.assign({},a),{response:e})),{status:!1}))}(0,_log.errLog)("vxe.error.notFunc",["proxy-config.ajax.query"]);break}case"delete":{let o=h.delete,a=h.deleteSuccess,l=h.deleteError;if(o){let e=D.getCheckboxRecords(),t=e.filter(e=>!y.isInsertByRow(e));var U={removeRecords:t};let r={$grid:V,code:w,button:R,body:U,form:E,options:o};if(e.length)return $(w,"vxe.grid.deleteSelectRecord",()=>t.length?(j.tableLoading=!0,Promise.resolve((f||o)(r,...d)).then(e=>(j.tableLoading=!1,y.setPendingRow(t,!1),m&&_ui.VxeUI.modal&&_ui.VxeUI.modal.message({content:z(e,"vxe.grid.delSuccess"),status:"success"}),x?x(r,...d):Z.commitProxy("query"),a&&a(Object.assign(Object.assign({},r),{response:e})),{status:!0})).catch(e=>(j.tableLoading=!1,m&&_ui.VxeUI.modal&&_ui.VxeUI.modal.message({id:w,content:z(e,"vxe.grid.operError"),status:"error"}),l&&l(Object.assign(Object.assign({},r),{response:e})),{status:!1}))):y.remove(e));v&&_ui.VxeUI.modal&&_ui.VxeUI.modal.message({id:w,content:getI18n("vxe.grid.selectOneRecord"),status:"warning"})}else(0,_log.errLog)("vxe.error.notFunc",["proxy-config.ajax.delete"]);break}case"save":{let i=h.save,s=h.saveSuccess,u=h.saveError;if(i){let t=y.getRecordset(),{insertRecords:r,removeRecords:o,updateRecords:a,pendingRecords:l}=t,n={$grid:V,code:w,button:R,body:t,form:E,options:i},e=(r.length&&(t.pendingRecords=l.filter(e=>-1===y.findRowIndexOf(r,e))),l.length&&(t.insertRecords=r.filter(e=>-1===y.findRowIndexOf(l,e))),Promise.resolve());return(e=g?y[c&&"full"===c.msgMode?"fullValidate":"validate"](t.insertRecords.concat(a)):e).then(e=>{if(!e)return t.insertRecords.length||o.length||a.length||t.pendingRecords.length?(j.tableLoading=!0,Promise.resolve((b||i)(n,...d)).then(e=>(j.tableLoading=!1,y.clearPendingRow(),m&&_ui.VxeUI.modal&&_ui.VxeUI.modal.message({content:z(e,"vxe.grid.saveSuccess"),status:"success"}),_?_(n,...d):Z.commitProxy("query"),s&&s(Object.assign(Object.assign({},n),{response:e})),{status:!0})).catch(e=>(j.tableLoading=!1,m&&_ui.VxeUI.modal&&_ui.VxeUI.modal.message({id:w,content:z(e,"vxe.grid.operError"),status:"error"}),u&&u(Object.assign(Object.assign({},n),{response:e})),{status:!1}))):void(v&&_ui.VxeUI.modal&&_ui.VxeUI.modal.message({id:w,content:getI18n("vxe.grid.dataUnchanged"),status:"info"}))})}(0,_log.errLog)("vxe.error.notFunc",["proxy-config.ajax.save"]);break}default:var U=commands.get(w);U&&((U=U.tableCommandMethod||U.commandMethod)?U({code:w,button:R,$grid:V,$table:y},...d):(0,_log.errLog)("vxe.error.notCommands",[w]))}return(0,_vue.nextTick)()},zoom(){return j.isZMax?Z.revert():Z.maximize()},isMaximized(){return j.isZMax},maximize(){return ee(!0)},revert(){return ee()},getFormData:B,getFormItems(e){var t=x.value,r=T.formConfig,o=t.items;let a=[];return _xeUtils.default.eachTree(r&&(0,_utils.isEnableConf)(t)&&o?o:[],e=>{a.push(e)},{children:"children"}),_xeUtils.default.isUndefined(e)?a:a[e]},getProxyInfo(){var e,t=S.value;return T.proxyConfig?(e=j.sortData,{data:t?t.getFullData():[],filter:j.filterData,form:B(),sort:e.length?e[0]:{},sorts:e,pager:j.tablePage,pendingRecords:t?t.getPendingRecords():[]}):null}},C=("development"===process.env.NODE_ENV&&(Z.loadColumn=e=>{var t=S.value;return _xeUtils.default.eachTree(e,e=>{e.slots&&_xeUtils.default.each(e.slots,e=>{_xeUtils.default.isFunction(e)||s[e]||(0,_log.errLog)("vxe.error.notSlot",[e])})}),t?t.loadColumn(e):(0,_vue.nextTick)()},Z.reloadColumn=e=>(D.clearAll(),Z.loadColumn(e))),{extendTableMethods:r,callSlot(e,t){return e&&(_xeUtils.default.isString(e)&&(e=s[e]||null),_xeUtils.default.isFunction(e))?(0,_vn.getSlotVNs)(e(t)):[]},getExcludeHeight(){var e,t,r,o,a,l,n=j.isZMax,i=u.value;return i?(e=c.value,t=v.value,r=m.value,o=p.value,a=f.value,l=i.parentElement,(!n&&l?(0,_dom.getPaddingTopBottomSize)(l):0)+(0,_dom.getPaddingTopBottomSize)(i)+(0,_dom.getOffsetHeight)(e)+(0,_dom.getOffsetHeight)(t)+(0,_dom.getOffsetHeight)(r)+(0,_dom.getOffsetHeight)(o)+(0,_dom.getOffsetHeight)(a)):0},getParentHeight(){var e=u.value;return e?(e=e.parentElement,(j.isZMax?(0,_dom.getDomNode)().visibleHeight:e?_xeUtils.default.toNumber(getComputedStyle(e).height):0)-C.getExcludeHeight()):0},triggerToolbarCommitEvent(e,t){let r=e.code;return Z.commitProxy(e,t).then(e=>{r&&e&&e.status&&["query","reload","delete","save"].includes(r)&&Z.dispatchEvent("delete"===r||"save"===r?"proxy-"+r:"proxy-query",Object.assign(Object.assign({},e),{isReload:"reload"===r}),t)})},triggerToolbarBtnEvent(e,t){C.triggerToolbarCommitEvent(e,t),Z.dispatchEvent("toolbar-button-click",{code:e.code,button:e},t)},triggerToolbarTolEvent(e,t){C.triggerToolbarCommitEvent(e,t),Z.dispatchEvent("toolbar-tool-click",{code:e.code,tool:e},t)},triggerZoomEvent(e){Z.zoom(),Z.dispatchEvent("zoom",{type:j.isZMax?"max":"revert"},e)}}),y=(Object.assign(V,D,Z,C),(0,_vue.ref)(0));(0,_vue.watch)(()=>T.columns?T.columns.length:-1,()=>{y.value++}),(0,_vue.watch)(()=>T.columns,()=>{y.value++}),(0,_vue.watch)(y,()=>{(0,_vue.nextTick)(()=>V.loadColumn(T.columns||[]))}),(0,_vue.watch)(()=>T.toolbarConfig,()=>{b()}),(0,_vue.watch)(U,()=>{_()}),(0,_vue.watch)(()=>T.proxyConfig,()=>{ce()}),hooks.forEach(e=>{var e=e.setupGrid;e&&(e=e(V))&&_xeUtils.default.isObject(e)&&Object.assign(V,e)}),_(),(0,_vue.onMounted)(()=>{(0,_vue.nextTick)(()=>{var e=T.columns;T.formConfig&&!n&&(0,_log.errLog)("vxe.error.reqComp",["vxe-form"]),T.pagerConfig&&!l&&(0,_log.errLog)("vxe.error.reqComp",["vxe-pager"]),e&&e.length&&V.loadColumn(e),b(),ce()}),globalEvents.on(V,"keydown",ve)}),(0,_vue.onUnmounted)(()=>{globalEvents.off(V,"keydown")});return V.renderVN=()=>{var e=w.value,t=O.value;return(0,_vue.h)("div",{ref:u,class:["vxe-grid",{["size--"+e]:e,"is--animat":!!T.animat,"is--round":T.round,"is--maximize":j.isZMax,"is--loading":T.loading||j.tableLoading}],style:t},(()=>{var{headKeys:e,bodyKeys:t,footKeys:r}=P.value,o=s.asideLeft||s["aside-left"],a=s.asideRight||s["aside-right"];return[(0,_vue.h)("div",{class:"vxe-grid--layout-header-wrapper"},h(e)),(0,_vue.h)("div",{class:"vxe-grid--layout-body-wrapper"},[o?(0,_vue.h)("div",{class:"vxe-grid--layout-aside-left-wrapper"},o({})):renderEmptyElement(V),(0,_vue.h)("div",{class:"vxe-grid--layout-body-content-wrapper"},h(t)),a?(0,_vue.h)("div",{class:"vxe-grid--layout-aside-right-wrapper"},a({})):renderEmptyElement(V)]),(0,_vue.h)("div",{class:"vxe-grid--layout-footer-wrapper"},h(r))]})())},(0,_vue.provide)("$xeGrid",V),V},render(){return this.renderVN()}});