vxe-table 4.1.18 → 4.1.20

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 (68) hide show
  1. package/README.md +2 -2
  2. package/README.zh-TW.md +3 -3
  3. package/es/edit/src/hook.js +3 -2
  4. package/es/export/style.css +2 -0
  5. package/es/filter/style.css +2 -0
  6. package/es/footer/src/footer.js +11 -1
  7. package/es/form/src/form.js +6 -4
  8. package/es/grid/src/grid.js +3 -3
  9. package/es/header/src/header.js +13 -1
  10. package/es/input/src/input.js +5 -2
  11. package/es/style.css +1 -1
  12. package/es/style.min.css +1 -1
  13. package/es/table/src/body.js +42 -7
  14. package/es/table/src/cell.js +4 -6
  15. package/es/table/src/table.js +38 -12
  16. package/es/table/style.css +2 -0
  17. package/es/toolbar/style.css +2 -0
  18. package/es/validator/src/hook.js +2 -0
  19. package/lib/edit/src/hook.js +5 -2
  20. package/lib/edit/src/hook.min.js +1 -1
  21. package/lib/export/style/style.css +2 -0
  22. package/lib/export/style/style.min.css +1 -1
  23. package/lib/filter/style/style.css +2 -0
  24. package/lib/filter/style/style.min.css +1 -1
  25. package/lib/footer/src/footer.js +10 -0
  26. package/lib/footer/src/footer.min.js +1 -1
  27. package/lib/form/src/form.js +6 -1
  28. package/lib/form/src/form.min.js +1 -1
  29. package/lib/grid/src/grid.js +5 -3
  30. package/lib/grid/src/grid.min.js +1 -1
  31. package/lib/header/src/header.js +12 -0
  32. package/lib/header/src/header.min.js +1 -1
  33. package/lib/index.umd.js +115 -33
  34. package/lib/index.umd.min.js +1 -1
  35. package/lib/input/src/input.js +6 -2
  36. package/lib/input/src/input.min.js +1 -1
  37. package/lib/style.css +1 -1
  38. package/lib/style.min.css +1 -1
  39. package/lib/table/src/body.js +22 -4
  40. package/lib/table/src/body.min.js +1 -1
  41. package/lib/table/src/cell.js +5 -7
  42. package/lib/table/src/cell.min.js +1 -1
  43. package/lib/table/src/table.js +42 -14
  44. package/lib/table/src/table.min.js +1 -1
  45. package/lib/table/style/style.css +2 -0
  46. package/lib/table/style/style.min.css +1 -1
  47. package/lib/toolbar/style/style.css +2 -0
  48. package/lib/toolbar/style/style.min.css +1 -1
  49. package/lib/validator/src/hook.js +2 -0
  50. package/lib/validator/src/hook.min.js +1 -1
  51. package/package.json +2 -2
  52. package/packages/edit/src/hook.ts +3 -2
  53. package/packages/footer/src/footer.ts +12 -1
  54. package/packages/form/src/form.ts +6 -4
  55. package/packages/grid/src/grid.ts +3 -3
  56. package/packages/header/src/header.ts +14 -1
  57. package/packages/input/src/input.ts +6 -2
  58. package/packages/table/src/body.ts +43 -7
  59. package/packages/table/src/cell.ts +6 -8
  60. package/packages/table/src/table.ts +40 -14
  61. package/packages/table/src/util.ts +4 -4
  62. package/packages/validator/src/hook.ts +2 -0
  63. package/styles/base/checked.scss +5 -0
  64. package/types/form-item.d.ts +5 -0
  65. package/types/form.d.ts +4 -0
  66. package/types/plugins/pro.d.ts +6 -2
  67. package/types/table.d.ts +13 -2
  68. package/types/validator.d.ts +1 -0
package/README.md CHANGED
@@ -108,7 +108,7 @@ createApp(App).use(VXETable).mount('#app')
108
108
 
109
109
  ### CDN
110
110
 
111
- 不建议将公共的 CDN 地址用于生产,因为该连接随时都可能会失效,导致项目挂掉;
111
+ 不建议将第三方的 CDN 地址用于生产,因为该连接随时都可能会失效,导致项目挂掉;
112
112
  使用 CDN 方式记得锁定版本号,避免受到非兼容性更新的影响
113
113
 
114
114
  ```HTML
@@ -157,7 +157,7 @@ export default defineComponent({
157
157
  ## 文档
158
158
 
159
159
  💡 [使用指南](https://github.com/xuliangzhan/vxe-table-demo)
160
- 👉 [查看演示](https://xuliangzhan_admin.gitee.io/vxe-table/#/table/base/basic) [👀备用地址](https://x-extends.github.io/vxe-table/#/table/base/basic)
160
+ 👉 [查看演示](https://xuliangzhan_admin.gitee.io/vxe-table/) [👀备用地址](https://x-extends.github.io/vxe-table/#/table/base/basic)
161
161
  👉 [查看文档](https://xuliangzhan_admin.gitee.io/vxe-table/#/table/api) [👀备用地址](https://x-extends.github.io/vxe-table/#/table/api)
162
162
 
163
163
  ## 运行项目
package/README.zh-TW.md CHANGED
@@ -106,7 +106,7 @@ createApp(App).use(VXETable).mount('#app')
106
106
 
107
107
  ### CDN
108
108
 
109
- 不建議將公共的CDN地址用於生產,因為該連接隨時都可能會失效,導致項目掛掉;
109
+ 不建議將第三方的CDN地址用於生產,因為該連接隨時都可能會失效,導致項目掛掉;
110
110
  使用CDN管道記得鎖定版本號,避免受到非相容性更新的影響
111
111
 
112
112
  ```HTML
@@ -155,8 +155,8 @@ export default defineComponent({
155
155
  ## 檔案
156
156
 
157
157
  💡 [使用指南](https://github.com/xuliangzhan/vxe-table-demo)
158
- 👉 [查看演示](https://xuliangzhan_admin.gitee.io/vxe-table/#/table/base/basic) [👀備用地址](https://x-extends.github.io/vxe-table/#/table/base/basic)
159
- 👉 [查看檔案](https://xuliangzhan_admin.gitee.io/vxe-table/#/table/api) [👀備用地址](https://x-extends.github.io/vxe-table/#/table/api)
158
+ 👉 [查看檔案](https://xuliangzhan_admin.gitee.io/vxe-table/) [👀備用地址1](https://x-extends.github.io/vxe-table/#/table/base/basic)
159
+ 👉 [查看檔案](https://xuliangzhan_admin.gitee.io/vxe-table/#/table/api) [👀備用地址1](https://x-extends.github.io/vxe-table/#/table/api)
160
160
 
161
161
  ## 運行項目
162
162
 
@@ -579,12 +579,13 @@ var editHook = {
579
579
  var actived = editStore.actived;
580
580
  var row = params.row, column = params.column;
581
581
  var editRender = column.editRender;
582
- var cell = params.cell = (params.cell || $xetable.getCell(row, column));
582
+ var cell = (params.cell || $xetable.getCell(row, column));
583
+ params.cell = cell;
583
584
  if (isEnableConf(editConfig) && isEnableConf(editRender) && cell) {
584
585
  if (actived.row !== row || (mode === 'cell' ? actived.column !== column : false)) {
585
586
  // 判断是否禁用编辑
586
587
  var type = 'edit-disabled';
587
- if (!activeMethod || activeMethod(params)) {
588
+ if (!activeMethod || activeMethod(__assign(__assign({}, params), { $table: $xetable }))) {
588
589
  if (mouseConfig) {
589
590
  editMethods.clearSelected();
590
591
  if ($xetable.clearCellAreas) {
@@ -100,6 +100,8 @@
100
100
  background-color: #f3f3f3; }
101
101
  .is--disabled.vxe-export--panel-column-option .vxe-checkbox--icon:after {
102
102
  border-color: #c0c4cc; }
103
+ .is--disabled.vxe-export--panel-column-option .vxe-checkbox--indeterminate-icon:after {
104
+ background-color: #c0c4cc; }
103
105
 
104
106
  .vxe-export--panel-column > ul {
105
107
  list-style-type: none;
@@ -101,6 +101,8 @@
101
101
  background-color: #f3f3f3; }
102
102
  .is--disabled.vxe-table--filter-option .vxe-checkbox--icon:after {
103
103
  border-color: #c0c4cc; }
104
+ .is--disabled.vxe-table--filter-option .vxe-checkbox--indeterminate-icon:after {
105
+ background-color: #c0c4cc; }
104
106
 
105
107
  /*筛选*/
106
108
  .vxe-cell--filter {
@@ -9,7 +9,7 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
- import { createCommentVNode, defineComponent, h, ref, inject, nextTick, onMounted } from 'vue';
12
+ import { createCommentVNode, defineComponent, h, ref, inject, nextTick, onMounted, onUnmounted } from 'vue';
13
13
  import XEUtils from 'xe-utils';
14
14
  import { getPropClass } from '../../table/src/util';
15
15
  import { updateCellTitle } from '../../tools/dom';
@@ -90,6 +90,16 @@ export default defineComponent({
90
90
  elemStore[prefix + "xSpace"] = refFooterXSpace.value;
91
91
  });
92
92
  });
93
+ onUnmounted(function () {
94
+ var fixedType = props.fixedType;
95
+ var elemStore = tableInternalData.elemStore;
96
+ var prefix = (fixedType || 'main') + "-footer-";
97
+ elemStore[prefix + "wrapper"] = null;
98
+ elemStore[prefix + "table"] = null;
99
+ elemStore[prefix + "colgroup"] = null;
100
+ elemStore[prefix + "list"] = null;
101
+ elemStore[prefix + "xSpace"] = null;
102
+ });
93
103
  var renderVN = function () {
94
104
  var fixedType = props.fixedType, fixedColumn = props.fixedColumn, tableColumn = props.tableColumn, footerTableData = props.footerTableData;
95
105
  var footerRowClassName = tableProps.footerRowClassName, footerCellClassName = tableProps.footerCellClassName, footerRowStyle = tableProps.footerRowStyle, footerCellStyle = tableProps.footerCellStyle, allFooterAlign = tableProps.footerAlign, footerSpanMethod = tableProps.footerSpanMethod, allAlign = tableProps.align, columnKey = tableProps.columnKey, allColumnFooterOverflow = tableProps.showFooterOverflow;
@@ -239,7 +239,7 @@ export default defineComponent({
239
239
  if (isEnableConf(itemRender)) {
240
240
  var compConf = VXETable.renderer.get(itemRender.name);
241
241
  if (compConf && compConf.itemResetMethod) {
242
- compConf.itemResetMethod({ data: data, property: field, item: item, $form: $xeform });
242
+ compConf.itemResetMethod({ data: data, field: field, property: field, item: item, $form: $xeform });
243
243
  }
244
244
  else if (field) {
245
245
  XEUtils.set(data, field, resetValue === null ? getResetValue(XEUtils.get(data, field), undefined) : resetValue);
@@ -313,6 +313,7 @@ export default defineComponent({
313
313
  rule: rule,
314
314
  rules: rules_1,
315
315
  data: data,
316
+ field: property,
316
317
  property: property,
317
318
  $form: $xeform
318
319
  });
@@ -353,7 +354,6 @@ export default defineComponent({
353
354
  var validRest = {};
354
355
  var validFields = [];
355
356
  var itemValids = [];
356
- clearValidate();
357
357
  clearTimeout(showErrTime);
358
358
  if (data && formRules) {
359
359
  itemList.forEach(function (item) {
@@ -363,7 +363,7 @@ export default defineComponent({
363
363
  item.errRule = null;
364
364
  }).catch(function (_a) {
365
365
  var rule = _a.rule, rules = _a.rules;
366
- var rest = { rule: rule, rules: rules, data: data, property: field, $form: $xeform };
366
+ var rest = { rule: rule, rules: rules, data: data, field: field, property: field, $form: $xeform };
367
367
  if (!validRest[field]) {
368
368
  validRest[field] = [];
369
369
  }
@@ -408,6 +408,7 @@ export default defineComponent({
408
408
  return Promise.resolve();
409
409
  };
410
410
  var validate = function (callback) {
411
+ clearValidate();
411
412
  return beginValidate(getItems(), '', callback);
412
413
  };
413
414
  var validateField = function (field, callback) {
@@ -416,6 +417,7 @@ export default defineComponent({
416
417
  var submitEvent = function (evnt) {
417
418
  evnt.preventDefault();
418
419
  if (!props.preventSubmit) {
420
+ clearValidate();
419
421
  beginValidate(getItems()).then(function () {
420
422
  formMethods.dispatchEvent('submit', { data: props.data }, evnt);
421
423
  }).catch(function (errMap) {
@@ -514,7 +516,7 @@ export default defineComponent({
514
516
  var showTooltip = itemOverflow === true || itemOverflow === 'tooltip';
515
517
  var hasEllipsis = showTitle || showTooltip || showEllipsis;
516
518
  var itemVisibleMethod = visibleMethod;
517
- var params = { data: data, property: field, item: item, $form: $xeform };
519
+ var params = { data: data, field: field, property: field, item: item, $form: $xeform };
518
520
  if (visible === false) {
519
521
  return createCommentVNode();
520
522
  }
@@ -166,7 +166,7 @@ export default defineComponent({
166
166
  var pendingRecords = reactData.pendingRecords;
167
167
  var $xetable = refTable.value;
168
168
  var activeMethod = editConfig ? editConfig.activeMethod : null;
169
- return $xetable.findRowIndexOf(pendingRecords, params.row) === -1 && (!activeMethod || activeMethod(params));
169
+ return $xetable.findRowIndexOf(pendingRecords, params.row) === -1 && (!activeMethod || activeMethod(__assign(__assign({}, params), { $grid: $xegrid })));
170
170
  };
171
171
  var computeTableProps = computed(function () {
172
172
  var seqConfig = props.seqConfig, pagerConfig = props.pagerConfig, loading = props.loading, editConfig = props.editConfig, proxyConfig = props.proxyConfig;
@@ -550,10 +550,10 @@ export default defineComponent({
550
550
  leftSlot = getFuncSlot(pagerOptSlots, 'left');
551
551
  rightSlot = getFuncSlot(pagerOptSlots, 'right');
552
552
  if (leftSlot) {
553
- pagerSlots.buttons = leftSlot;
553
+ pagerSlots.left = leftSlot;
554
554
  }
555
555
  if (rightSlot) {
556
- pagerSlots.tools = rightSlot;
556
+ pagerSlots.right = rightSlot;
557
557
  }
558
558
  }
559
559
  slotVNs.push(h(resolveComponent('vxe-pager'), __assign(__assign(__assign({ ref: refPager }, pagerOpts), (props.proxyConfig ? reactData.tablePage : {})), { onPageChange: pageChangeEvent }), pagerSlots));
@@ -9,7 +9,7 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
- import { createCommentVNode, defineComponent, h, ref, inject, nextTick, watch, onMounted } from 'vue';
12
+ import { createCommentVNode, defineComponent, h, ref, inject, nextTick, watch, onMounted, onUnmounted } from 'vue';
13
13
  import XEUtils from 'xe-utils';
14
14
  import { convertToRows } from './util';
15
15
  import { getColMinWidth } from '../../table/src/util';
@@ -145,6 +145,18 @@ export default defineComponent({
145
145
  uploadColumn();
146
146
  });
147
147
  });
148
+ onUnmounted(function () {
149
+ var fixedType = props.fixedType;
150
+ var internalData = $xetable.internalData;
151
+ var elemStore = internalData.elemStore;
152
+ var prefix = (fixedType || 'main') + "-header-";
153
+ elemStore[prefix + "wrapper"] = null;
154
+ elemStore[prefix + "table"] = null;
155
+ elemStore[prefix + "colgroup"] = null;
156
+ elemStore[prefix + "list"] = null;
157
+ elemStore[prefix + "xSpace"] = null;
158
+ elemStore[prefix + "repair"] = null;
159
+ });
148
160
  var renderVN = function () {
149
161
  var fixedType = props.fixedType, fixedColumn = props.fixedColumn, tableColumn = props.tableColumn;
150
162
  var resizable = tableProps.resizable, border = tableProps.border, columnKey = tableProps.columnKey, headerRowClassName = tableProps.headerRowClassName, headerCellClassName = tableProps.headerCellClassName, headerRowStyle = tableProps.headerRowStyle, headerCellStyle = tableProps.headerCellStyle, allColumnHeaderOverflow = tableProps.showHeaderOverflow, allHeaderAlign = tableProps.headerAlign, allAlign = tableProps.align, mouseConfig = tableProps.mouseConfig;
@@ -516,6 +516,9 @@ export default defineComponent({
516
516
  var type = props.type, immediate = props.immediate;
517
517
  return immediate || !(type === 'text' || type === 'number' || type === 'integer' || type === 'float');
518
518
  });
519
+ var handleNumber = function (val) {
520
+ return XEUtils.isString(val) ? val.replace(/,/g, '') : val;
521
+ };
519
522
  function toFloatValueFixed(inputValue, digitsValue) {
520
523
  if (/^-/.test('' + inputValue)) {
521
524
  return XEUtils.toFixed(XEUtils.ceil(inputValue, digitsValue), digitsValue);
@@ -720,7 +723,7 @@ export default defineComponent({
720
723
  if (!inpReadonly) {
721
724
  if (isNumType) {
722
725
  if (inputValue) {
723
- var inpNumVal = type === 'integer' ? XEUtils.toInteger(inputValue) : XEUtils.toNumber(inputValue);
726
+ var inpNumVal = type === 'integer' ? XEUtils.toInteger(handleNumber(inputValue)) : XEUtils.toNumber(handleNumber(inputValue));
724
727
  if (!vaildMinNum(inpNumVal)) {
725
728
  inpNumVal = min;
726
729
  }
@@ -810,7 +813,7 @@ export default defineComponent({
810
813
  var min = props.min, max = props.max, type = props.type;
811
814
  var inputValue = reactData.inputValue;
812
815
  var stepValue = computeStepValue.value;
813
- var numValue = type === 'integer' ? XEUtils.toInteger(inputValue) : XEUtils.toNumber(inputValue);
816
+ var numValue = type === 'integer' ? XEUtils.toInteger(handleNumber(inputValue)) : XEUtils.toNumber(handleNumber(inputValue));
814
817
  var newValue = isPlus ? XEUtils.add(numValue, stepValue) : XEUtils.subtract(numValue, stepValue);
815
818
  var restNum;
816
819
  if (!vaildMinNum(newValue)) {