vxe-table 4.14.0-beta.0 → 4.14.0-beta.1

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.
@@ -9,7 +9,7 @@ import VxeToolbarComponent from '../../toolbar/src/toolbar';
9
9
  import tableComponentProps from '../../table/src/props';
10
10
  import tableComponentEmits from '../../table/src/emits';
11
11
  import { getSlotVNs } from '../../ui/src/vn';
12
- import { errLog } from '../../ui/src/log';
12
+ import { warnLog, errLog } from '../../ui/src/log';
13
13
  const { getConfig, getI18n, commands, hooks, useFns, createEvent, globalEvents, GLOBAL_EVENT_KEYS, renderEmptyElement } = VxeUI;
14
14
  const tableComponentPropKeys = Object.keys(tableComponentProps);
15
15
  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', 'isAggregateRecord', 'isAggregateExpandByRow', 'getAggregateContentByRow', 'getAggregateRowChildren', 'setRowGroups', 'clearRowGroups', 'openTooltip', 'moveColumnTo', 'moveRowTo', 'getCellLabel', 'getCellElement', 'focus', 'blur', 'connect'];
@@ -95,11 +95,11 @@ export default defineVxeComponent({
95
95
  });
96
96
  const computeIsRespMsg = computed(() => {
97
97
  const proxyOpts = computeProxyOpts.value;
98
- return XEUtils.isBoolean(proxyOpts.message) ? proxyOpts.message : proxyOpts.showResponseMsg;
98
+ return !!(XEUtils.isBoolean(proxyOpts.message) ? proxyOpts.message : proxyOpts.showResponseMsg);
99
99
  });
100
100
  const computeIsActiveMsg = computed(() => {
101
101
  const proxyOpts = computeProxyOpts.value;
102
- return proxyOpts.showActiveMsg;
102
+ return !!proxyOpts.showActiveMsg;
103
103
  });
104
104
  const computePagerOpts = computed(() => {
105
105
  return Object.assign({}, getConfig().grid.pagerConfig, props.pagerConfig);
@@ -346,12 +346,12 @@ export default defineVxeComponent({
346
346
  reactData.sortData = params.sortList;
347
347
  if (proxyConfig && isEnableConf(proxyOpts)) {
348
348
  reactData.tablePage.currentPage = 1;
349
- gridMethods.commitProxy('query').then((rest) => {
350
- gridMethods.dispatchEvent('proxy-query', rest, params.$event);
349
+ $xeGrid.commitProxy('query').then((rest) => {
350
+ $xeGrid.dispatchEvent('proxy-query', rest, params.$event);
351
351
  });
352
352
  }
353
353
  }
354
- gridMethods.dispatchEvent('sort-change', params, params.$event);
354
+ $xeGrid.dispatchEvent('sort-change', params, params.$event);
355
355
  };
356
356
  const filterChangeEvent = (params) => {
357
357
  const $xeTable = refTable.value;
@@ -364,12 +364,12 @@ export default defineVxeComponent({
364
364
  reactData.filterData = params.filterList;
365
365
  if (proxyConfig && isEnableConf(proxyOpts)) {
366
366
  reactData.tablePage.currentPage = 1;
367
- gridMethods.commitProxy('query').then((rest) => {
368
- gridMethods.dispatchEvent('proxy-query', rest, params.$event);
367
+ $xeGrid.commitProxy('query').then((rest) => {
368
+ $xeGrid.dispatchEvent('proxy-query', rest, params.$event);
369
369
  });
370
370
  }
371
371
  }
372
- gridMethods.dispatchEvent('filter-change', params, params.$event);
372
+ $xeGrid.dispatchEvent('filter-change', params, params.$event);
373
373
  };
374
374
  const submitFormEvent = (params) => {
375
375
  const { proxyConfig } = props;
@@ -378,32 +378,32 @@ export default defineVxeComponent({
378
378
  return;
379
379
  }
380
380
  if (proxyConfig && isEnableConf(proxyOpts)) {
381
- gridMethods.commitProxy('reload').then((rest) => {
382
- gridMethods.dispatchEvent('proxy-query', Object.assign(Object.assign({}, rest), { isReload: true }), params.$event);
381
+ $xeGrid.commitProxy('reload').then((rest) => {
382
+ $xeGrid.dispatchEvent('proxy-query', Object.assign(Object.assign({}, rest), { isReload: true }), params.$event);
383
383
  });
384
384
  }
385
- gridMethods.dispatchEvent('form-submit', params, params.$event);
385
+ $xeGrid.dispatchEvent('form-submit', params, params.$event);
386
386
  };
387
387
  const resetFormEvent = (params) => {
388
+ const $xeTable = refTable.value;
388
389
  const { proxyConfig } = props;
389
390
  const { $event } = params;
390
391
  const proxyOpts = computeProxyOpts.value;
391
- const $xeTable = refTable.value;
392
392
  if (proxyConfig && isEnableConf(proxyOpts)) {
393
393
  $xeTable.clearScroll();
394
- gridMethods.commitProxy('reload').then((rest) => {
395
- gridMethods.dispatchEvent('proxy-query', Object.assign(Object.assign({}, rest), { isReload: true }), $event);
394
+ $xeGrid.commitProxy('reload').then((rest) => {
395
+ $xeGrid.dispatchEvent('proxy-query', Object.assign(Object.assign({}, rest), { isReload: true }), $event);
396
396
  });
397
397
  }
398
- gridMethods.dispatchEvent('form-reset', params, $event);
398
+ $xeGrid.dispatchEvent('form-reset', params, $event);
399
399
  };
400
400
  const submitInvalidEvent = (params) => {
401
- gridMethods.dispatchEvent('form-submit-invalid', params, params.$event);
401
+ $xeGrid.dispatchEvent('form-submit-invalid', params, params.$event);
402
402
  };
403
403
  const collapseEvent = (params) => {
404
404
  const { $event } = params;
405
- gridMethods.dispatchEvent('form-toggle-collapse', params, $event);
406
- gridMethods.dispatchEvent('form-collapse', params, $event);
405
+ $xeGrid.dispatchEvent('form-toggle-collapse', params, $event);
406
+ $xeGrid.dispatchEvent('form-collapse', params, $event);
407
407
  };
408
408
  const handleZoom = (isMax) => {
409
409
  const { isZMax } = reactData;
@@ -414,9 +414,9 @@ export default defineVxeComponent({
414
414
  }
415
415
  }
416
416
  return nextTick()
417
- .then(() => gridExtendTableMethods.recalculate(true))
417
+ .then(() => $xeGrid.recalculate(true))
418
418
  .then(() => {
419
- setTimeout(() => gridExtendTableMethods.recalculate(true), 15);
419
+ setTimeout(() => $xeGrid.recalculate(true), 15);
420
420
  return reactData.isZMax;
421
421
  });
422
422
  };
@@ -560,12 +560,13 @@ export default defineVxeComponent({
560
560
  * 渲染表格顶部区域
561
561
  */
562
562
  const renderTop = () => {
563
- if (slots.top) {
563
+ const topSlot = slots.top;
564
+ if (topSlot) {
564
565
  return h('div', {
565
566
  ref: refTopWrapper,
566
567
  key: 'top',
567
568
  class: 'vxe-grid--top-wrapper'
568
- }, slots.top({ $grid: $xeGrid }));
569
+ }, topSlot({ $grid: $xeGrid }));
569
570
  }
570
571
  return renderEmptyElement($xeGrid);
571
572
  };
@@ -734,6 +735,30 @@ export default defineVxeComponent({
734
735
  const type = XEUtils.camelCase(`on-${name}`);
735
736
  tableCompEvents[type] = (...args) => emit(name, ...args);
736
737
  });
738
+ const getDefaultFormData = () => {
739
+ const formOpts = computeFormOpts.value;
740
+ if (formOpts.items) {
741
+ const fData = {};
742
+ formOpts.items.forEach(item => {
743
+ const { field, itemRender } = item;
744
+ if (field) {
745
+ let itemValue = null;
746
+ if (itemRender) {
747
+ const { defaultValue } = itemRender;
748
+ if (XEUtils.isFunction(defaultValue)) {
749
+ itemValue = defaultValue({ item });
750
+ }
751
+ else if (!XEUtils.isUndefined(defaultValue)) {
752
+ itemValue = defaultValue;
753
+ }
754
+ }
755
+ fData[field] = itemValue;
756
+ }
757
+ });
758
+ return fData;
759
+ }
760
+ return {};
761
+ };
737
762
  const initProxy = () => {
738
763
  const { proxyConfig, formConfig } = props;
739
764
  const { proxyInited } = reactData;
@@ -741,30 +766,13 @@ export default defineVxeComponent({
741
766
  const formOpts = computeFormOpts.value;
742
767
  if (proxyConfig && isEnableConf(proxyOpts)) {
743
768
  if (formConfig && isEnableConf(formOpts) && proxyOpts.form && formOpts.items) {
744
- const fData = {};
745
- formOpts.items.forEach(item => {
746
- const { field, itemRender } = item;
747
- if (field) {
748
- let itemValue = null;
749
- if (itemRender) {
750
- const { defaultValue } = itemRender;
751
- if (XEUtils.isFunction(defaultValue)) {
752
- itemValue = defaultValue({ item });
753
- }
754
- else if (!XEUtils.isUndefined(defaultValue)) {
755
- itemValue = defaultValue;
756
- }
757
- }
758
- fData[field] = itemValue;
759
- }
760
- });
761
- reactData.formData = fData;
769
+ reactData.formData = getDefaultFormData();
762
770
  }
763
771
  if (!proxyInited) {
764
772
  reactData.proxyInited = true;
765
773
  if (proxyOpts.autoLoad !== false) {
766
- nextTick().then(() => gridMethods.commitProxy('_init')).then((rest) => {
767
- gridMethods.dispatchEvent('proxy-query', Object.assign(Object.assign({}, rest), { isInited: true }), new Event('init'));
774
+ nextTick().then(() => gridMethods.commitProxy('initial')).then((rest) => {
775
+ gridMethods.dispatchEvent('proxy-query', Object.assign(Object.assign({}, rest), { isInited: true }), new Event('initial'));
768
776
  });
769
777
  }
770
778
  }
@@ -774,7 +782,7 @@ export default defineVxeComponent({
774
782
  const zoomOpts = computeZoomOpts.value;
775
783
  const isEsc = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ESCAPE);
776
784
  if (isEsc && reactData.isZMax && zoomOpts.escRestore !== false) {
777
- gridPrivateMethods.triggerZoomEvent(evnt);
785
+ $xeGrid.triggerZoomEvent(evnt);
778
786
  }
779
787
  };
780
788
  const dispatchEvent = (type, params, evnt) => {
@@ -790,7 +798,7 @@ export default defineVxeComponent({
790
798
  * @param {String/Object} code 字符串或对象
791
799
  */
792
800
  commitProxy(proxyTarget, ...args) {
793
- const { toolbarConfig, pagerConfig, editRules, validConfig } = props;
801
+ const { proxyConfig, toolbarConfig, pagerConfig, editRules, validConfig } = props;
794
802
  const { tablePage } = reactData;
795
803
  const isActiveMsg = computeIsActiveMsg.value;
796
804
  const isRespMsg = computeIsRespMsg.value;
@@ -800,7 +808,7 @@ export default defineVxeComponent({
800
808
  const { beforeQuery, afterQuery, beforeDelete, afterDelete, beforeSave, afterSave, ajax = {} } = proxyOpts;
801
809
  const resConfigs = proxyOpts.response || proxyOpts.props || {};
802
810
  const $xeTable = refTable.value;
803
- const formData = getFormData();
811
+ let formData = getFormData();
804
812
  let button = null;
805
813
  let code = null;
806
814
  if (XEUtils.isString(proxyTarget)) {
@@ -842,14 +850,14 @@ export default defineVxeComponent({
842
850
  break;
843
851
  case 'reset_custom':
844
852
  return $xeTable.resetCustom(true);
845
- case '_init':
853
+ case 'initial':
846
854
  case 'reload':
847
855
  case 'query': {
848
856
  const ajaxMethods = ajax.query;
849
857
  const querySuccessMethods = ajax.querySuccess;
850
858
  const queryErrorMethods = ajax.queryError;
851
859
  if (ajaxMethods) {
852
- const isInited = code === '_init';
860
+ const isInited = code === 'initial';
853
861
  const isReload = code === 'reload';
854
862
  if (!isInited && reactData.tableLoading) {
855
863
  return nextTick();
@@ -859,6 +867,7 @@ export default defineVxeComponent({
859
867
  let pageParams = {};
860
868
  if (pagerConfig) {
861
869
  if (isInited || isReload) {
870
+ // 重置分页
862
871
  tablePage.currentPage = 1;
863
872
  }
864
873
  if (isEnableConf(pagerOpts)) {
@@ -866,26 +875,41 @@ export default defineVxeComponent({
866
875
  }
867
876
  }
868
877
  if (isInited) {
869
- let defaultSort = null;
878
+ // 重置代理表单数据
879
+ if (proxyConfig && isEnableConf(proxyOpts) && proxyOpts.form) {
880
+ formData = getDefaultFormData();
881
+ reactData.formData = formData;
882
+ }
870
883
  if ($xeTable) {
884
+ const { internalData: tableInternalData } = $xeTable;
885
+ const { tableFullColumn, fullColumnFieldData } = tableInternalData;
871
886
  const { computeSortOpts } = $xeTable.getComputeMaps();
872
887
  const sortOpts = computeSortOpts.value;
873
- defaultSort = sortOpts.defaultSort;
874
- }
875
- // 如果使用默认排序
876
- if (defaultSort) {
877
- if (!XEUtils.isArray(defaultSort)) {
878
- defaultSort = [defaultSort];
879
- }
880
- sortList = defaultSort.map((item) => {
881
- return {
882
- field: item.field,
883
- property: item.field,
884
- order: item.order
885
- };
888
+ let defaultSort = sortOpts.defaultSort;
889
+ tableFullColumn.forEach((column) => {
890
+ column.order = null;
886
891
  });
887
- }
888
- if ($xeTable) {
892
+ // 如果使用默认排序
893
+ if (defaultSort) {
894
+ if (!XEUtils.isArray(defaultSort)) {
895
+ defaultSort = [defaultSort];
896
+ }
897
+ sortList = defaultSort.map((item) => {
898
+ const { field, order } = item;
899
+ const colRest = fullColumnFieldData[field];
900
+ if (colRest) {
901
+ const column = colRest.column;
902
+ if (column) {
903
+ column.order = order;
904
+ }
905
+ }
906
+ return {
907
+ field,
908
+ property: field,
909
+ order
910
+ };
911
+ });
912
+ }
889
913
  filterList = $xeTable.getCheckedFilters();
890
914
  }
891
915
  }
@@ -1222,23 +1246,23 @@ export default defineVxeComponent({
1222
1246
  },
1223
1247
  triggerToolbarCommitEvent(params, evnt) {
1224
1248
  const { code } = params;
1225
- return gridMethods.commitProxy(params, evnt).then((rest) => {
1249
+ return $xeGrid.commitProxy(params, evnt).then((rest) => {
1226
1250
  if (code && rest && rest.status && ['query', 'reload', 'delete', 'save'].includes(code)) {
1227
- gridMethods.dispatchEvent(code === 'delete' || code === 'save' ? `proxy-${code}` : 'proxy-query', Object.assign(Object.assign({}, rest), { isReload: code === 'reload' }), evnt);
1251
+ $xeGrid.dispatchEvent(code === 'delete' || code === 'save' ? `proxy-${code}` : 'proxy-query', Object.assign(Object.assign({}, rest), { isReload: code === 'reload' }), evnt);
1228
1252
  }
1229
1253
  });
1230
1254
  },
1231
1255
  triggerToolbarBtnEvent(button, evnt) {
1232
- gridPrivateMethods.triggerToolbarCommitEvent(button, evnt);
1233
- gridMethods.dispatchEvent('toolbar-button-click', { code: button.code, button }, evnt);
1256
+ $xeGrid.triggerToolbarCommitEvent(button, evnt);
1257
+ $xeGrid.dispatchEvent('toolbar-button-click', { code: button.code, button }, evnt);
1234
1258
  },
1235
1259
  triggerToolbarTolEvent(tool, evnt) {
1236
- gridPrivateMethods.triggerToolbarCommitEvent(tool, evnt);
1237
- gridMethods.dispatchEvent('toolbar-tool-click', { code: tool.code, tool }, evnt);
1260
+ $xeGrid.triggerToolbarCommitEvent(tool, evnt);
1261
+ $xeGrid.dispatchEvent('toolbar-tool-click', { code: tool.code, tool }, evnt);
1238
1262
  },
1239
1263
  triggerZoomEvent(evnt) {
1240
- gridMethods.zoom();
1241
- gridMethods.dispatchEvent('zoom', { type: reactData.isZMax ? 'max' : 'revert' }, evnt);
1264
+ $xeGrid.zoom();
1265
+ $xeGrid.dispatchEvent('zoom', { type: reactData.isZMax ? 'max' : 'revert' }, evnt);
1242
1266
  }
1243
1267
  };
1244
1268
  Object.assign($xeGrid, gridExtendTableMethods, gridMethods, gridPrivateMethods, {
@@ -1304,6 +1328,7 @@ export default defineVxeComponent({
1304
1328
  onMounted(() => {
1305
1329
  nextTick(() => {
1306
1330
  const { columns } = props;
1331
+ const proxyOpts = computeProxyOpts.value;
1307
1332
  if (props.formConfig) {
1308
1333
  if (!VxeUIFormComponent) {
1309
1334
  errLog('vxe.error.reqComp', ['vxe-form']);
@@ -1315,14 +1340,13 @@ export default defineVxeComponent({
1315
1340
  }
1316
1341
  }
1317
1342
  // const { data, columns, proxyConfig } = props
1318
- // const proxyOpts = computeProxyOpts.value
1319
1343
  // const formOpts = computeFormOpts.value
1320
1344
  // if (isEnableConf(proxyConfig) && (data || (proxyOpts.form && formOpts.data))) {
1321
1345
  // errLog('vxe.error.errConflicts', ['grid.data', 'grid.proxy-config'])
1322
1346
  // }
1323
- // if (proxyOpts.props) {
1324
- // warnLog('vxe.error.delProp', ['proxy-config.props', 'proxy-config.response'])
1325
- // }
1347
+ if (proxyOpts.props) {
1348
+ warnLog('vxe.error.delProp', ['proxy-config.props', 'proxy-config.response']);
1349
+ }
1326
1350
  if (columns && columns.length) {
1327
1351
  $xeGrid.loadColumn(columns);
1328
1352
  }