vxe-table 4.1.4 → 4.1.7

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 (39) hide show
  1. package/es/edit/src/hook.js +189 -69
  2. package/es/form/src/form.js +2 -2
  3. package/es/input/src/input.js +8 -2
  4. package/es/table/src/body.js +6 -3
  5. package/es/table/src/props.js +6 -6
  6. package/es/table/src/table.js +53 -42
  7. package/es/v-x-e-table/src/conf.js +4 -1
  8. package/es/validator/src/hook.js +3 -3
  9. package/lib/edit/src/hook.js +243 -70
  10. package/lib/edit/src/hook.min.js +1 -1
  11. package/lib/form/src/form.js +2 -2
  12. package/lib/form/src/form.min.js +1 -1
  13. package/lib/index.umd.js +340 -224
  14. package/lib/index.umd.min.js +2 -1
  15. package/lib/input/src/input.js +10 -2
  16. package/lib/input/src/input.min.js +1 -1
  17. package/lib/table/src/body.js +6 -3
  18. package/lib/table/src/body.min.js +1 -1
  19. package/lib/table/src/props.js +6 -6
  20. package/lib/table/src/table.js +57 -45
  21. package/lib/table/src/table.min.js +1 -1
  22. package/lib/v-x-e-table/src/conf.js +4 -1
  23. package/lib/v-x-e-table/src/conf.min.js +1 -1
  24. package/lib/validator/src/hook.js +3 -3
  25. package/lib/validator/src/hook.min.js +1 -1
  26. package/package.json +3 -26
  27. package/packages/edit/src/hook.ts +183 -69
  28. package/packages/form/src/form.ts +2 -2
  29. package/packages/input/src/input.ts +9 -2
  30. package/packages/table/src/body.ts +6 -3
  31. package/packages/table/src/props.ts +6 -6
  32. package/packages/table/src/table.ts +52 -40
  33. package/packages/v-x-e-table/src/conf.ts +4 -1
  34. package/packages/v-x-e-table/src/renderer.ts +1 -1
  35. package/packages/validator/src/hook.ts +3 -3
  36. package/types/edit.d.ts +6 -3
  37. package/types/plugins/pro.d.ts +6 -6
  38. package/types/table.d.ts +9 -0
  39. package/types/v-x-e-table/renderer.d.ts +4 -2
@@ -2260,18 +2260,13 @@ export default defineComponent({
2260
2260
  var oRow = tableSourceData[rowIndex];
2261
2261
  if (oRow && row) {
2262
2262
  if (field) {
2263
- XEUtils.set(oRow, field, XEUtils.get(record || row, field));
2263
+ var newValue = XEUtils.get(record || row, field);
2264
+ XEUtils.set(row, field, newValue);
2265
+ XEUtils.set(oRow, field, newValue);
2264
2266
  }
2265
2267
  else {
2266
- if (record) {
2267
- tableSourceData[rowIndex] = record;
2268
- XEUtils.clear(row, undefined);
2269
- Object.assign(row, tablePrivateMethods.defineField(Object.assign({}, record)));
2270
- tablePrivateMethods.cacheRowMap(true);
2271
- }
2272
- else {
2273
- XEUtils.destructuring(oRow, XEUtils.clone(row, true));
2274
- }
2268
+ var newRecord = XEUtils.clone(__assign({}, record), true);
2269
+ XEUtils.destructuring(oRow, Object.assign(row, newRecord));
2275
2270
  }
2276
2271
  }
2277
2272
  reactData.tableData = tableData.slice(0);
@@ -2291,8 +2286,8 @@ export default defineComponent({
2291
2286
  var tableSourceData = internalData.tableSourceData, fullDataRowIdData = internalData.fullDataRowIdData, fullAllDataRowIdData = internalData.fullAllDataRowIdData;
2292
2287
  var treeOpts = computeTreeOpts.value;
2293
2288
  var children = treeOpts.children;
2294
- var rest = fullAllDataRowIdData[getRowid($xetable, row)];
2295
- var parentLevel = rest ? rest.level : 0;
2289
+ var parentRest = fullAllDataRowIdData[getRowid($xetable, row)];
2290
+ var parentLevel = parentRest ? parentRest.level : 0;
2296
2291
  return tableMethods.createData(childRecords).then(function (rows) {
2297
2292
  if (keepSource) {
2298
2293
  var rowid_1 = getRowid($xetable, row);
@@ -3059,6 +3054,17 @@ export default defineComponent({
3059
3054
  var treeOpts = computeTreeOpts.value;
3060
3055
  var reserveSelection = [];
3061
3056
  if (checkboxOpts.reserve) {
3057
+ var afterFullIdMaps_1 = {};
3058
+ if (treeConfig) {
3059
+ XEUtils.eachTree(afterFullData, function (row) {
3060
+ afterFullIdMaps_1[getRowid($xetable, row)] = 1;
3061
+ }, treeOpts);
3062
+ }
3063
+ else {
3064
+ afterFullData.forEach(function (row) {
3065
+ afterFullIdMaps_1[getRowid($xetable, row)] = 1;
3066
+ });
3067
+ }
3062
3068
  XEUtils.each(checkboxReserveRowMap, function (oldRow, oldRowid) {
3063
3069
  if (oldRow) {
3064
3070
  if (isFull) {
@@ -3067,15 +3073,8 @@ export default defineComponent({
3067
3073
  }
3068
3074
  }
3069
3075
  else {
3070
- if (treeConfig) {
3071
- if (!XEUtils.findTree(afterFullData, function (row) { return getRowid($xetable, row) === oldRowid; }, treeOpts)) {
3072
- reserveSelection.push(oldRow);
3073
- }
3074
- }
3075
- else {
3076
- if (!afterFullData.some(function (row) { return getRowid($xetable, row) === oldRowid; })) {
3077
- reserveSelection.push(oldRow);
3078
- }
3076
+ if (!afterFullIdMaps_1[oldRowid]) {
3077
+ reserveSelection.push(oldRow);
3079
3078
  }
3080
3079
  }
3081
3080
  }
@@ -3126,11 +3125,12 @@ export default defineComponent({
3126
3125
  * @param {Row} row 行对象
3127
3126
  */
3128
3127
  setCurrentRow: function (row) {
3128
+ var rowOpts = computeRowOpts.value;
3129
3129
  var el = refElem.value;
3130
3130
  tableMethods.clearCurrentRow();
3131
3131
  tableMethods.clearCurrentColumn();
3132
3132
  reactData.currentRow = row;
3133
- if (props.highlightCurrentRow) {
3133
+ if (rowOpts.isCurrent || props.highlightCurrentRow) {
3134
3134
  if (el) {
3135
3135
  XEUtils.arrayEach(el.querySelectorAll("[rowid=\"" + getRowid($xetable, row) + "\"]"), function (elem) { return addClass(elem, 'row--current'); });
3136
3136
  }
@@ -3176,7 +3176,8 @@ export default defineComponent({
3176
3176
  * 用于当前行,获取当前行的数据
3177
3177
  */
3178
3178
  getCurrentRecord: function () {
3179
- return props.highlightCurrentRow ? reactData.currentRow : null;
3179
+ var rowOpts = computeRowOpts.value;
3180
+ return rowOpts.isCurrent || props.highlightCurrentRow ? reactData.currentRow : null;
3180
3181
  },
3181
3182
  /**
3182
3183
  * 用于单选行,获取当已选中的数据
@@ -3202,7 +3203,7 @@ export default defineComponent({
3202
3203
  }
3203
3204
  }
3204
3205
  else {
3205
- if (afterFullData.indexOf(selectRow) > -1) {
3206
+ if ($xetable.findRowIndexOf(afterFullData, selectRow) > -1) {
3206
3207
  return selectRow;
3207
3208
  }
3208
3209
  }
@@ -3211,7 +3212,8 @@ export default defineComponent({
3211
3212
  return null;
3212
3213
  },
3213
3214
  getCurrentColumn: function () {
3214
- return props.highlightCurrentColumn ? reactData.currentColumn : null;
3215
+ var columnOpts = computeColumnOpts.value;
3216
+ return columnOpts.isCurrent || props.highlightCurrentColumn ? reactData.currentColumn : null;
3215
3217
  },
3216
3218
  /**
3217
3219
  * 用于当前列,设置某列行为高亮状态
@@ -3970,6 +3972,7 @@ export default defineComponent({
3970
3972
  var mouseConfig = props.mouseConfig, keyboardConfig = props.keyboardConfig;
3971
3973
  var filterStore = reactData.filterStore, ctxMenuStore = reactData.ctxMenuStore, editStore = reactData.editStore;
3972
3974
  var mouseOpts = computeMouseOpts.value;
3975
+ var keyboardOpts = computeKeyboardOpts.value;
3973
3976
  var actived = editStore.actived;
3974
3977
  var isEsc = hasEventKey(evnt, EVENT_KEYS.ESCAPE);
3975
3978
  if (isEsc) {
@@ -3984,13 +3987,15 @@ export default defineComponent({
3984
3987
  $xetable.closeMenu();
3985
3988
  }
3986
3989
  tableMethods.closeFilter();
3987
- // 如果是激活编辑状态,则取消编辑
3988
- if (actived.row) {
3989
- var params_1 = actived.args;
3990
- $xetable.clearActived(evnt);
3991
- // 如果配置了选中功能,则为选中状态
3992
- if (mouseOpts.selected) {
3993
- nextTick(function () { return $xetable.handleSelected(params_1, evnt); });
3990
+ if (keyboardConfig && keyboardOpts.isEsc) {
3991
+ // 如果是激活编辑状态,则取消编辑
3992
+ if (actived.row) {
3993
+ var params_1 = actived.args;
3994
+ $xetable.clearActived(evnt);
3995
+ // 如果配置了选中功能,则为选中状态
3996
+ if (mouseOpts.selected) {
3997
+ nextTick(function () { return $xetable.handleSelected(params_1, evnt); });
3998
+ }
3994
3999
  }
3995
4000
  }
3996
4001
  }
@@ -4014,6 +4019,7 @@ export default defineComponent({
4014
4019
  var editOpts = computeEditOpts.value;
4015
4020
  var treeOpts = computeTreeOpts.value;
4016
4021
  var menuList = computeMenuList.value;
4022
+ var rowOpts = computeRowOpts.value;
4017
4023
  var selected = editStore.selected, actived = editStore.actived;
4018
4024
  var keyCode = evnt.keyCode;
4019
4025
  var isEsc = hasEventKey(evnt, EVENT_KEYS.ESCAPE);
@@ -4055,7 +4061,7 @@ export default defineComponent({
4055
4061
  $xetable.closeMenu();
4056
4062
  }
4057
4063
  tableMethods.closeFilter();
4058
- if (actived.row) {
4064
+ if (keyboardConfig && keyboardOpts.isEsc) {
4059
4065
  // 如果是激活编辑状态,则取消编辑
4060
4066
  if (actived.row) {
4061
4067
  var params_2 = actived.args;
@@ -4094,7 +4100,7 @@ export default defineComponent({
4094
4100
  internalData._keyCtx = false;
4095
4101
  }, 1000);
4096
4102
  }
4097
- else if (isEnter && !isAltKey && keyboardConfig && keyboardOpts.isEnter && (selected.row || actived.row || (treeConfig && highlightCurrentRow && currentRow))) {
4103
+ else if (isEnter && !isAltKey && keyboardConfig && keyboardOpts.isEnter && (selected.row || actived.row || (treeConfig && (rowOpts.isCurrent || highlightCurrentRow) && currentRow))) {
4098
4104
  // 退出选中
4099
4105
  if (hasCtrlKey) {
4100
4106
  // 如果是激活编辑状态,则取消编辑
@@ -4128,7 +4134,7 @@ export default defineComponent({
4128
4134
  }
4129
4135
  }
4130
4136
  }
4131
- else if (treeConfig && highlightCurrentRow && currentRow) {
4137
+ else if (treeConfig && (rowOpts.isCurrent || highlightCurrentRow) && currentRow) {
4132
4138
  // 如果是树形表格当前行回车移动到子节点
4133
4139
  var childrens = currentRow[treeOpts.children];
4134
4140
  if (childrens && childrens.length) {
@@ -4153,7 +4159,7 @@ export default defineComponent({
4153
4159
  if (selected.row && selected.column) {
4154
4160
  $xetable.moveSelected(selected.args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow, evnt);
4155
4161
  }
4156
- else if ((isUpArrow || isDwArrow) && highlightCurrentRow) {
4162
+ else if ((isUpArrow || isDwArrow) && (rowOpts.isCurrent || highlightCurrentRow)) {
4157
4163
  // 当前行按键上下移动
4158
4164
  $xetable.moveCurrentRow(isUpArrow, isDwArrow, evnt);
4159
4165
  }
@@ -4168,7 +4174,7 @@ export default defineComponent({
4168
4174
  $xetable.moveTabSelected(actived.args, hasShiftKey, evnt);
4169
4175
  }
4170
4176
  }
4171
- else if (keyboardConfig && isEnableConf(editConfig) && (isDel || (treeConfig && highlightCurrentRow && currentRow ? isBack && keyboardOpts.isArrow : isBack))) {
4177
+ else if (keyboardConfig && isEnableConf(editConfig) && (isDel || (treeConfig && (rowOpts.isCurrent || highlightCurrentRow) && currentRow ? isBack && keyboardOpts.isArrow : isBack))) {
4172
4178
  if (!isEditStatus) {
4173
4179
  var delMethod = keyboardOpts.delMethod, backMethod = keyboardOpts.backMethod;
4174
4180
  // 如果是删除键
@@ -4204,7 +4210,7 @@ export default defineComponent({
4204
4210
  tableMethods.updateFooter();
4205
4211
  }
4206
4212
  }
4207
- else if (isBack && keyboardOpts.isArrow && treeConfig && highlightCurrentRow && currentRow) {
4213
+ else if (isBack && keyboardOpts.isArrow && treeConfig && (rowOpts.isCurrent || highlightCurrentRow) && currentRow) {
4208
4214
  // 如果树形表格回退键关闭当前行返回父节点
4209
4215
  var parentRow_1 = XEUtils.findTree(internalData.afterFullData, function (item) { return item === currentRow; }, treeOpts).parent;
4210
4216
  if (parentRow_1) {
@@ -4845,6 +4851,7 @@ export default defineComponent({
4845
4851
  triggerHeaderCellClickEvent: function (evnt, params) {
4846
4852
  var _lastResizeTime = internalData._lastResizeTime;
4847
4853
  var sortOpts = computeSortOpts.value;
4854
+ var columnOpts = computeColumnOpts.value;
4848
4855
  var column = params.column;
4849
4856
  var cell = evnt.currentTarget;
4850
4857
  var triggerResizable = _lastResizeTime && _lastResizeTime > Date.now() - 300;
@@ -4854,7 +4861,7 @@ export default defineComponent({
4854
4861
  tablePrivateMethods.triggerSortEvent(evnt, column, getNextSortOrder(column));
4855
4862
  }
4856
4863
  tableMethods.dispatchEvent('header-cell-click', Object.assign({ triggerResizable: triggerResizable, triggerSort: triggerSort, triggerFilter: triggerFilter, cell: cell }, params), evnt);
4857
- if (props.highlightCurrentColumn) {
4864
+ if (columnOpts.isCurrent || props.highlightCurrentColumn) {
4858
4865
  tableMethods.setCurrentColumn(column);
4859
4866
  }
4860
4867
  },
@@ -4874,6 +4881,7 @@ export default defineComponent({
4874
4881
  var treeOpts = computeTreeOpts.value;
4875
4882
  var radioOpts = computeRadioOpts.value;
4876
4883
  var checkboxOpts = computeCheckboxOpts.value;
4884
+ var rowOpts = computeRowOpts.value;
4877
4885
  var actived = editStore.actived;
4878
4886
  var row = params.row, column = params.column;
4879
4887
  var type = column.type, treeNode = column.treeNode;
@@ -4900,7 +4908,7 @@ export default defineComponent({
4900
4908
  if (!triggerTreeNode) {
4901
4909
  if (!triggerExpandNode) {
4902
4910
  // 如果是高亮行
4903
- if (highlightCurrentRow) {
4911
+ if (rowOpts.isCurrent || highlightCurrentRow) {
4904
4912
  if (!triggerCheckbox && !triggerRadio) {
4905
4913
  tablePrivateMethods.triggerCurrentRowEvent(evnt, params);
4906
4914
  }
@@ -5214,6 +5222,7 @@ export default defineComponent({
5214
5222
  tablePrivateMethods.handleTableData();
5215
5223
  tablePrivateMethods.updateScrollYSpace();
5216
5224
  },
5225
+ updateVirtualTreeData: updateVirtualTreeData,
5217
5226
  /**
5218
5227
  * 处理固定列的显示状态
5219
5228
  */
@@ -5681,6 +5690,8 @@ export default defineComponent({
5681
5690
  var leftList = columnStore.leftList, rightList = columnStore.rightList;
5682
5691
  var tooltipOpts = computeTooltipOpts.value;
5683
5692
  var treeOpts = computeTreeOpts.value;
5693
+ var rowOpts = computeRowOpts.value;
5694
+ var columnOpts = computeColumnOpts.value;
5684
5695
  var vSize = computeSize.value;
5685
5696
  var tableBorder = computeTableBorder.value;
5686
5697
  var mouseOpts = computeMouseOpts.value;
@@ -5695,8 +5706,8 @@ export default defineComponent({
5695
5706
  _a['cell--highlight'] = highlightCell,
5696
5707
  _a['cell--selected'] = mouseConfig && mouseOpts.selected,
5697
5708
  _a['cell--area'] = mouseConfig && mouseOpts.area,
5698
- _a['row--highlight'] = highlightHoverRow,
5699
- _a['column--highlight'] = highlightHoverColumn,
5709
+ _a['row--highlight'] = rowOpts.isHover || highlightHoverRow,
5710
+ _a['column--highlight'] = columnOpts.isHover || highlightHoverColumn,
5700
5711
  _a['is--header'] = showHeader,
5701
5712
  _a['is--footer'] = showFooter,
5702
5713
  _a['is--group'] = isGroup,
@@ -10,6 +10,7 @@ var GlobalConfig = {
10
10
  showHeader: true,
11
11
  animat: true,
12
12
  delayHover: 250,
13
+ autoResize: true,
13
14
  // keepSource: false,
14
15
  // showOverflow: null,
15
16
  // showHeaderOverflow: null,
@@ -17,7 +18,6 @@ var GlobalConfig = {
17
18
  // resizeInterval: 500,
18
19
  // size: null,
19
20
  // zIndex: null,
20
- // autoResize: false,
21
21
  // stripe: false,
22
22
  // border: false,
23
23
  // round: false,
@@ -90,6 +90,9 @@ var GlobalConfig = {
90
90
  mouseConfig: {
91
91
  extension: true
92
92
  },
93
+ keyboardConfig: {
94
+ isEsc: true
95
+ },
93
96
  areaConfig: {
94
97
  selectCellByHeader: true
95
98
  },
@@ -160,14 +160,14 @@ var validatorHook = {
160
160
  var ruleProps = Object.keys(validRest);
161
161
  return nextTick().then(function () {
162
162
  if (ruleProps.length) {
163
- return Promise.reject(validRest[ruleProps[0]][0]);
163
+ return validRest[ruleProps[0]][0];
164
164
  }
165
165
  if (cb) {
166
166
  cb();
167
167
  }
168
168
  });
169
169
  }).catch(function (firstErrParams) {
170
- return new Promise(function (resolve, reject) {
170
+ return new Promise(function (resolve) {
171
171
  var finish = function () {
172
172
  nextTick(function () {
173
173
  if (cb) {
@@ -175,7 +175,7 @@ var validatorHook = {
175
175
  resolve();
176
176
  }
177
177
  else {
178
- reject(validRest);
178
+ resolve(validRest);
179
179
  }
180
180
  });
181
181
  };