vxe-table 4.1.5 → 4.1.8

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.
@@ -16,6 +16,7 @@ var GlobalConfig = {
16
16
  showHeader: true,
17
17
  animat: true,
18
18
  delayHover: 250,
19
+ autoResize: true,
19
20
  // keepSource: false,
20
21
  // showOverflow: null,
21
22
  // showHeaderOverflow: null,
@@ -23,7 +24,6 @@ var GlobalConfig = {
23
24
  // resizeInterval: 500,
24
25
  // size: null,
25
26
  // zIndex: null,
26
- // autoResize: false,
27
27
  // stripe: false,
28
28
  // border: false,
29
29
  // round: false,
@@ -96,6 +96,9 @@ var GlobalConfig = {
96
96
  mouseConfig: {
97
97
  extension: true
98
98
  },
99
+ keyboardConfig: {
100
+ isEsc: true
101
+ },
99
102
  areaConfig: {
100
103
  selectCellByHeader: true
101
104
  },
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var iconPrefix="vxe-icon--",GlobalConfig={size:null,zIndex:999,version:0,emptyCell:" ",table:{fit:!0,showHeader:!0,animat:!0,delayHover:250,radioConfig:{strict:!0},checkboxConfig:{strict:!0},validConfig:{showMessage:!0,message:"default"},sortConfig:{showIcon:!0},filterConfig:{showIcon:!0},treeConfig:{rowField:"id",parentField:"parentId",children:"children",hasChild:"hasChild",indent:20,showIcon:!0},expandConfig:{showIcon:!0},editConfig:{showIcon:!0,showAsterisk:!0},importConfig:{modes:["insert","covering"]},exportConfig:{modes:["current","selected"]},printConfig:{modes:["current","selected"]},mouseConfig:{extension:!0},areaConfig:{selectCellByHeader:!0},clipConfig:{isCopy:!0,isCut:!0,isPaste:!0},fnrConfig:{isFind:!0,isReplace:!0},scrollX:{enabled:!0,gt:60},scrollY:{enabled:!0,gt:100}},export:{types:{}},icon:{TABLE_SORT_ASC:iconPrefix+"caret-top",TABLE_SORT_DESC:iconPrefix+"caret-bottom",TABLE_FILTER_NONE:iconPrefix+"funnel",TABLE_FILTER_MATCH:iconPrefix+"funnel",TABLE_EDIT:iconPrefix+"edit-outline",TABLE_HELP:iconPrefix+"question",TABLE_TREE_LOADED:iconPrefix+"refresh roll",TABLE_TREE_OPEN:iconPrefix+"caret-right rotate90",TABLE_TREE_CLOSE:iconPrefix+"caret-right",TABLE_EXPAND_LOADED:iconPrefix+"refresh roll",TABLE_EXPAND_OPEN:iconPrefix+"arrow-right rotate90",TABLE_EXPAND_CLOSE:iconPrefix+"arrow-right",BUTTON_DROPDOWN:iconPrefix+"arrow-bottom",BUTTON_LOADING:iconPrefix+"refresh roll",SELECT_LOADED:iconPrefix+"refresh roll",SELECT_OPEN:iconPrefix+"caret-bottom rotate180",SELECT_CLOSE:iconPrefix+"caret-bottom",PAGER_JUMP_PREV:iconPrefix+"d-arrow-left",PAGER_JUMP_NEXT:iconPrefix+"d-arrow-right",PAGER_PREV_PAGE:iconPrefix+"arrow-left",PAGER_NEXT_PAGE:iconPrefix+"arrow-right",PAGER_JUMP_MORE:iconPrefix+"more",INPUT_CLEAR:iconPrefix+"close",INPUT_PWD:iconPrefix+"eye-slash",INPUT_SHOW_PWD:iconPrefix+"eye",INPUT_PREV_NUM:iconPrefix+"caret-top",INPUT_NEXT_NUM:iconPrefix+"caret-bottom",INPUT_DATE:iconPrefix+"calendar",INPUT_SEARCH:iconPrefix+"search",MODAL_ZOOM_IN:iconPrefix+"square",MODAL_ZOOM_OUT:iconPrefix+"zoomout",MODAL_CLOSE:iconPrefix+"close",MODAL_INFO:iconPrefix+"info",MODAL_SUCCESS:iconPrefix+"success",MODAL_WARNING:iconPrefix+"warning",MODAL_ERROR:iconPrefix+"error",MODAL_QUESTION:iconPrefix+"question",MODAL_LOADING:iconPrefix+"refresh roll",TOOLBAR_TOOLS_REFRESH:iconPrefix+"refresh",TOOLBAR_TOOLS_REFRESH_LOADING:iconPrefix+"refresh roll",TOOLBAR_TOOLS_IMPORT:iconPrefix+"upload",TOOLBAR_TOOLS_EXPORT:iconPrefix+"download",TOOLBAR_TOOLS_PRINT:iconPrefix+"print",TOOLBAR_TOOLS_ZOOM_IN:iconPrefix+"zoomin",TOOLBAR_TOOLS_ZOOM_OUT:iconPrefix+"zoomout",TOOLBAR_TOOLS_CUSTOM:iconPrefix+"menu",FORM_PREFIX:iconPrefix+"question",FORM_SUFFIX:iconPrefix+"question",FORM_FOLDING:iconPrefix+"arrow-top rotate180",FORM_UNFOLDING:iconPrefix+"arrow-top"},grid:{formConfig:{enabled:!0},pagerConfig:{enabled:!0},toolbarConfig:{enabled:!0},proxyConfig:{enabled:!0,autoLoad:!0,message:!0,props:{list:null,result:"result",total:"page.total",message:"message"}}},tooltip:{trigger:"hover",theme:"dark",leaveDelay:300},pager:{},form:{validConfig:{showMessage:!0,autoPos:!0},titleAsterisk:!0},input:{minDate:new Date(1900,0,1),maxDate:new Date(2100,0,1),startDay:1,selectDay:1,digits:2,controls:!0},textarea:{},select:{multiCharOverflow:8},toolbar:{},button:{},radio:{},checkbox:{},switch:{},modal:{top:15,showHeader:!0,minWidth:340,minHeight:140,lockView:!0,mask:!0,duration:3e3,marginSize:0,dblclickZoom:!0,showTitleOverflow:!0,animat:!0,showClose:!0,draggable:!0,storageKey:"VXE_MODAL_POSITION"},list:{scrollY:{enabled:!0,gt:100}},i18n:function(e){return e}},_default=GlobalConfig;exports.default=_default;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var iconPrefix="vxe-icon--",GlobalConfig={size:null,zIndex:999,version:0,emptyCell:" ",table:{fit:!0,showHeader:!0,animat:!0,delayHover:250,autoResize:!0,radioConfig:{strict:!0},checkboxConfig:{strict:!0},validConfig:{showMessage:!0,message:"default"},sortConfig:{showIcon:!0},filterConfig:{showIcon:!0},treeConfig:{rowField:"id",parentField:"parentId",children:"children",hasChild:"hasChild",indent:20,showIcon:!0},expandConfig:{showIcon:!0},editConfig:{showIcon:!0,showAsterisk:!0},importConfig:{modes:["insert","covering"]},exportConfig:{modes:["current","selected"]},printConfig:{modes:["current","selected"]},mouseConfig:{extension:!0},keyboardConfig:{isEsc:!0},areaConfig:{selectCellByHeader:!0},clipConfig:{isCopy:!0,isCut:!0,isPaste:!0},fnrConfig:{isFind:!0,isReplace:!0},scrollX:{enabled:!0,gt:60},scrollY:{enabled:!0,gt:100}},export:{types:{}},icon:{TABLE_SORT_ASC:iconPrefix+"caret-top",TABLE_SORT_DESC:iconPrefix+"caret-bottom",TABLE_FILTER_NONE:iconPrefix+"funnel",TABLE_FILTER_MATCH:iconPrefix+"funnel",TABLE_EDIT:iconPrefix+"edit-outline",TABLE_HELP:iconPrefix+"question",TABLE_TREE_LOADED:iconPrefix+"refresh roll",TABLE_TREE_OPEN:iconPrefix+"caret-right rotate90",TABLE_TREE_CLOSE:iconPrefix+"caret-right",TABLE_EXPAND_LOADED:iconPrefix+"refresh roll",TABLE_EXPAND_OPEN:iconPrefix+"arrow-right rotate90",TABLE_EXPAND_CLOSE:iconPrefix+"arrow-right",BUTTON_DROPDOWN:iconPrefix+"arrow-bottom",BUTTON_LOADING:iconPrefix+"refresh roll",SELECT_LOADED:iconPrefix+"refresh roll",SELECT_OPEN:iconPrefix+"caret-bottom rotate180",SELECT_CLOSE:iconPrefix+"caret-bottom",PAGER_JUMP_PREV:iconPrefix+"d-arrow-left",PAGER_JUMP_NEXT:iconPrefix+"d-arrow-right",PAGER_PREV_PAGE:iconPrefix+"arrow-left",PAGER_NEXT_PAGE:iconPrefix+"arrow-right",PAGER_JUMP_MORE:iconPrefix+"more",INPUT_CLEAR:iconPrefix+"close",INPUT_PWD:iconPrefix+"eye-slash",INPUT_SHOW_PWD:iconPrefix+"eye",INPUT_PREV_NUM:iconPrefix+"caret-top",INPUT_NEXT_NUM:iconPrefix+"caret-bottom",INPUT_DATE:iconPrefix+"calendar",INPUT_SEARCH:iconPrefix+"search",MODAL_ZOOM_IN:iconPrefix+"square",MODAL_ZOOM_OUT:iconPrefix+"zoomout",MODAL_CLOSE:iconPrefix+"close",MODAL_INFO:iconPrefix+"info",MODAL_SUCCESS:iconPrefix+"success",MODAL_WARNING:iconPrefix+"warning",MODAL_ERROR:iconPrefix+"error",MODAL_QUESTION:iconPrefix+"question",MODAL_LOADING:iconPrefix+"refresh roll",TOOLBAR_TOOLS_REFRESH:iconPrefix+"refresh",TOOLBAR_TOOLS_REFRESH_LOADING:iconPrefix+"refresh roll",TOOLBAR_TOOLS_IMPORT:iconPrefix+"upload",TOOLBAR_TOOLS_EXPORT:iconPrefix+"download",TOOLBAR_TOOLS_PRINT:iconPrefix+"print",TOOLBAR_TOOLS_ZOOM_IN:iconPrefix+"zoomin",TOOLBAR_TOOLS_ZOOM_OUT:iconPrefix+"zoomout",TOOLBAR_TOOLS_CUSTOM:iconPrefix+"menu",FORM_PREFIX:iconPrefix+"question",FORM_SUFFIX:iconPrefix+"question",FORM_FOLDING:iconPrefix+"arrow-top rotate180",FORM_UNFOLDING:iconPrefix+"arrow-top"},grid:{formConfig:{enabled:!0},pagerConfig:{enabled:!0},toolbarConfig:{enabled:!0},proxyConfig:{enabled:!0,autoLoad:!0,message:!0,props:{list:null,result:"result",total:"page.total",message:"message"}}},tooltip:{trigger:"hover",theme:"dark",leaveDelay:300},pager:{},form:{validConfig:{showMessage:!0,autoPos:!0},titleAsterisk:!0},input:{minDate:new Date(1900,0,1),maxDate:new Date(2100,0,1),startDay:1,selectDay:1,digits:2,controls:!0},textarea:{},select:{multiCharOverflow:8},toolbar:{},button:{},radio:{},checkbox:{},switch:{},modal:{top:15,showHeader:!0,minWidth:340,minHeight:140,lockView:!0,mask:!0,duration:3e3,marginSize:0,dblclickZoom:!0,showTitleOverflow:!0,animat:!0,showClose:!0,draggable:!0,storageKey:"VXE_MODAL_POSITION"},list:{scrollY:{enabled:!0,gt:100}},i18n:function(e){return e}},_default=GlobalConfig;exports.default=_default;
@@ -203,7 +203,7 @@ var validatorHook = {
203
203
  var ruleProps = Object.keys(validRest);
204
204
  return (0, _vue.nextTick)().then(function () {
205
205
  if (ruleProps.length) {
206
- return Promise.reject(validRest[ruleProps[0]][0]);
206
+ return validRest[ruleProps[0]][0];
207
207
  }
208
208
 
209
209
  if (cb) {
@@ -211,14 +211,14 @@ var validatorHook = {
211
211
  }
212
212
  });
213
213
  }).catch(function (firstErrParams) {
214
- return new Promise(function (resolve, reject) {
214
+ return new Promise(function (resolve) {
215
215
  var finish = function finish() {
216
216
  (0, _vue.nextTick)(function () {
217
217
  if (cb) {
218
218
  cb(validRest);
219
219
  resolve();
220
220
  } else {
221
- reject(validRest);
221
+ resolve(validRest);
222
222
  }
223
223
  });
224
224
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_utils=require("../../tools/utils"),_dom=require("../../tools/dom");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var __assign=function(){return(__assign=Object.assign||function(e){for(var t,r=1,l=arguments.length;r<l;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}).apply(this,arguments)},Rule=function(){function e(e){Object.assign(this,{$options:e,required:e.required,min:e.min,max:e.max,type:e.type,pattern:e.pattern,validator:e.validator,trigger:e.trigger,maxWidth:e.maxWidth})}return Object.defineProperty(e.prototype,"content",{get:function(){return(0,_utils.getFuncText)(this.$options.content||this.$options.message)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"message",{get:function(){return this.content},enumerable:!1,configurable:!0}),e}(),tableValidatorMethodKeys=["fullValidate","validate","clearValidate"],validatorHook={setupTable:function(f){function r(e,o,l){var a={},n=v.editRules,s=v.treeConfig,c=m.afterFullData,t=x.value,d=_.value;!0===e?r=c:e&&(_xeUtils.default.isFunction(e)?o=e:r=_xeUtils.default.isArray(e)?e:[e]);var r=r||(f.getInsertRecords?f.getInsertRecords().concat(f.getUpdateRecords()):[]),i=[];if(m._lastCallTime=Date.now(),g=!1,w.clearValidate(),n){var u=f.getColumns(),e=function(r){var e;!l&&g||(e=[],u.forEach(function(t){!l&&g||!_xeUtils.default.has(n,t.property)||e.push(b.validCellRules("all",r,t).catch(function(e){e={rule:e.rule,rules:e.rules,rowIndex:f.getRowIndex(r),row:r,columnIndex:f.getColumnIndex(t),column:t,$table:f};if(a[t.property]||(a[t.property]=[]),a[t.property].push(e),!l)return g=!0,Promise.reject(e)}))}),i.push(Promise.all(e)))};return s?_xeUtils.default.eachTree(r,e,t):r.forEach(e),Promise.all(i).then(function(){var e=Object.keys(a);return(0,_vue.nextTick)().then(function(){return e.length?Promise.reject(a[e[0]][0]):void(o&&o())})}).catch(function(u){return new Promise(function(e,t){function r(){var t;u.cell=f.getCell(u.row,u.column),(0,_dom.scrollToView)(u.cell),t=u,new Promise(function(e){!1===_.value.autoPos?(f.dispatchEvent("valid-error",t,null),e()):f.handleActived(t,{type:"valid-error",trigger:"call"}).then(function(){setTimeout(function(){e(b.showValidTooltip(t))},10)})}).then(l)}var l=function(){(0,_vue.nextTick)(function(){o?(o(a),e()):t(a)})},n=u.row,i=c.indexOf(n),n=0<i?c[i-1]:n;!1===d.autoPos?l():(s?f.scrollToTreeRow(n):f.scrollToRow(n)).then(r)})})}return(0,_vue.nextTick)().then(function(){o&&o()})}function p(e,t){var r=e.type,l=e.min,n=e.max,i=e.pattern,r=(e="number"===r)?_xeUtils.default.toNumber(t):_xeUtils.default.getSize(t);return!(!e||!isNaN(t))||(!_xeUtils.default.eqNull(l)&&r<_xeUtils.default.toNumber(l)||(!_xeUtils.default.eqNull(n)&&r>_xeUtils.default.toNumber(n)||!(!i||(_xeUtils.default.isRegExp(i)?i:new RegExp(i)).test(t))))}var g,v=f.props,d=f.reactData,m=f.internalData,h=f.getRefMaps().refValidTooltip,e=f.getComputeMaps(),_=e.computeValidOpts,x=e.computeTreeOpts,s=e.computeEditOpts,w={},b={},b={validCellRules:function(i,u,o,e){var a,s,t=v.editRules,r=o.property,c=[],d=[];return r&&t&&((a=_xeUtils.default.get(t,r))&&(s=_xeUtils.default.isUndefined(e)?_xeUtils.default.get(u,r):e,a.forEach(function(t){var e,r=t.type,l=t.trigger,n=t.required;"all"!==i&&l&&i!==l||(_xeUtils.default.isFunction(t.validator)?(e=t.validator({cellValue:s,rule:t,rules:a,row:u,rowIndex:f.getRowIndex(u),column:o,columnIndex:f.getColumnIndex(o),$table:f}))&&(_xeUtils.default.isError(e)?(g=!0,c.push(new Rule({type:"custom",trigger:l,content:e.message,rule:new Rule(t)}))):e.catch&&d.push(e.catch(function(e){g=!0,c.push(new Rule({type:"custom",trigger:l,content:e&&e.message?e.message:t.content||t.message,rule:new Rule(t)}))}))):(r="array"===r?!_xeUtils.default.isArray(s)||!s.length:(0,_utils.eqEmptyValue)(s),(n?r||p(t,s):!r&&p(t,s))&&(g=!0,c.push(new Rule(t)))))}))),Promise.all(d).then(function(){if(c.length){var e={rules:c,rule:c[0]};return Promise.reject(e)}})},hasCellRules:function(t,e,r){var l=v.editRules,r=r.property;if(r&&l){r=_xeUtils.default.get(l,r);return r&&!!_xeUtils.default.find(r,function(e){return"all"===t||!e.trigger||t===e.trigger})}return!1},triggerValidate:function(t){var e=v.editConfig,r=v.editRules,l=d.editStore,n=d.validStore,l=l.actived,i=s.value;if(e&&r&&l.row){var l=l.args,u=l.row,o=l.column,a=l.cell;if(b.hasCellRules(t,u,o))return b.validCellRules(t,u,o).then(function(){"row"===i.mode&&n.visible&&n.row===u&&n.column===o&&w.clearValidate()}).catch(function(e){e=e.rule;if(e.trigger&&t!==e.trigger)return Promise.resolve();e={rule:e,row:u,column:o,cell:a};return b.showValidTooltip(e),Promise.reject(e)})}return Promise.resolve()},showValidTooltip:function(e){var t=v.height,r=d.tableData,l=d.validStore,n=_.value,i=e.rule,u=e.row,o=e.column,a=e.cell,s=h.value,c=i.content;return(0,_vue.nextTick)().then(function(){if(Object.assign(l,{row:u,column:o,rule:i,content:c,visible:!0}),f.dispatchEvent("valid-error",e,null),s&&("tooltip"===n.message||"default"===n.message&&!t&&r.length<2))return s.open(a,c)})}};return __assign(__assign({},w={fullValidate:function(e,t){return r(e,t,!0)},validate:function(e,t){return r(e,t)},clearValidate:function(){var e=d.validStore,t=h.value;return Object.assign(e,{visible:!1,row:null,column:null,content:"",rule:null}),t&&t.reactData.visible&&t.close(),(0,_vue.nextTick)()}}),b)},setupGrid:function(e){return e.extendTableMethods(tableValidatorMethodKeys)}},_default=validatorHook;exports.default=_default;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_utils=require("../../tools/utils"),_dom=require("../../tools/dom");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var __assign=function(){return(__assign=Object.assign||function(e){for(var t,r=1,l=arguments.length;r<l;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}).apply(this,arguments)},Rule=function(){function e(e){Object.assign(this,{$options:e,required:e.required,min:e.min,max:e.max,type:e.type,pattern:e.pattern,validator:e.validator,trigger:e.trigger,maxWidth:e.maxWidth})}return Object.defineProperty(e.prototype,"content",{get:function(){return(0,_utils.getFuncText)(this.$options.content||this.$options.message)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"message",{get:function(){return this.content},enumerable:!1,configurable:!0}),e}(),tableValidatorMethodKeys=["fullValidate","validate","clearValidate"],validatorHook={setupTable:function(f){function r(e,u,l){var o={},n=v.editRules,a=v.treeConfig,s=m.afterFullData,t=x.value,c=_.value;!0===e?r=s:e&&(_xeUtils.default.isFunction(e)?u=e:r=_xeUtils.default.isArray(e)?e:[e]);var r=r||(f.getInsertRecords?f.getInsertRecords().concat(f.getUpdateRecords()):[]),i=[];if(m._lastCallTime=Date.now(),g=!1,w.clearValidate(),n){var d=f.getColumns(),e=function(r){var e;!l&&g||(e=[],d.forEach(function(t){!l&&g||!_xeUtils.default.has(n,t.property)||e.push(b.validCellRules("all",r,t).catch(function(e){e={rule:e.rule,rules:e.rules,rowIndex:f.getRowIndex(r),row:r,columnIndex:f.getColumnIndex(t),column:t,$table:f};if(o[t.property]||(o[t.property]=[]),o[t.property].push(e),!l)return g=!0,Promise.reject(e)}))}),i.push(Promise.all(e)))};return a?_xeUtils.default.eachTree(r,e,t):r.forEach(e),Promise.all(i).then(function(){var e=Object.keys(o);return(0,_vue.nextTick)().then(function(){return e.length?o[e[0]][0]:void(u&&u())})}).catch(function(i){return new Promise(function(e){function t(){var t;i.cell=f.getCell(i.row,i.column),(0,_dom.scrollToView)(i.cell),t=i,new Promise(function(e){!1===_.value.autoPos?(f.dispatchEvent("valid-error",t,null),e()):f.handleActived(t,{type:"valid-error",trigger:"call"}).then(function(){setTimeout(function(){e(b.showValidTooltip(t))},10)})}).then(r)}var r=function(){(0,_vue.nextTick)(function(){u?(u(o),e()):e(o)})},l=i.row,n=s.indexOf(l),l=0<n?s[n-1]:l;!1===c.autoPos?r():(a?f.scrollToTreeRow(l):f.scrollToRow(l)).then(t)})})}return(0,_vue.nextTick)().then(function(){u&&u()})}function p(e,t){var r=e.type,l=e.min,n=e.max,i=e.pattern,r=(e="number"===r)?_xeUtils.default.toNumber(t):_xeUtils.default.getSize(t);return!(!e||!isNaN(t))||(!_xeUtils.default.eqNull(l)&&r<_xeUtils.default.toNumber(l)||(!_xeUtils.default.eqNull(n)&&r>_xeUtils.default.toNumber(n)||!(!i||(_xeUtils.default.isRegExp(i)?i:new RegExp(i)).test(t))))}var g,v=f.props,d=f.reactData,m=f.internalData,h=f.getRefMaps().refValidTooltip,e=f.getComputeMaps(),_=e.computeValidOpts,x=e.computeTreeOpts,s=e.computeEditOpts,w={},b={},b={validCellRules:function(i,u,o,e){var a,s,t=v.editRules,r=o.property,c=[],d=[];return r&&t&&((a=_xeUtils.default.get(t,r))&&(s=_xeUtils.default.isUndefined(e)?_xeUtils.default.get(u,r):e,a.forEach(function(t){var e,r=t.type,l=t.trigger,n=t.required;"all"!==i&&l&&i!==l||(_xeUtils.default.isFunction(t.validator)?(e=t.validator({cellValue:s,rule:t,rules:a,row:u,rowIndex:f.getRowIndex(u),column:o,columnIndex:f.getColumnIndex(o),$table:f}))&&(_xeUtils.default.isError(e)?(g=!0,c.push(new Rule({type:"custom",trigger:l,content:e.message,rule:new Rule(t)}))):e.catch&&d.push(e.catch(function(e){g=!0,c.push(new Rule({type:"custom",trigger:l,content:e&&e.message?e.message:t.content||t.message,rule:new Rule(t)}))}))):(r="array"===r?!_xeUtils.default.isArray(s)||!s.length:(0,_utils.eqEmptyValue)(s),(n?r||p(t,s):!r&&p(t,s))&&(g=!0,c.push(new Rule(t)))))}))),Promise.all(d).then(function(){if(c.length){var e={rules:c,rule:c[0]};return Promise.reject(e)}})},hasCellRules:function(t,e,r){var l=v.editRules,r=r.property;if(r&&l){r=_xeUtils.default.get(l,r);return r&&!!_xeUtils.default.find(r,function(e){return"all"===t||!e.trigger||t===e.trigger})}return!1},triggerValidate:function(t){var e=v.editConfig,r=v.editRules,l=d.editStore,n=d.validStore,l=l.actived,i=s.value;if(e&&r&&l.row){var l=l.args,u=l.row,o=l.column,a=l.cell;if(b.hasCellRules(t,u,o))return b.validCellRules(t,u,o).then(function(){"row"===i.mode&&n.visible&&n.row===u&&n.column===o&&w.clearValidate()}).catch(function(e){e=e.rule;if(e.trigger&&t!==e.trigger)return Promise.resolve();e={rule:e,row:u,column:o,cell:a};return b.showValidTooltip(e),Promise.reject(e)})}return Promise.resolve()},showValidTooltip:function(e){var t=v.height,r=d.tableData,l=d.validStore,n=_.value,i=e.rule,u=e.row,o=e.column,a=e.cell,s=h.value,c=i.content;return(0,_vue.nextTick)().then(function(){if(Object.assign(l,{row:u,column:o,rule:i,content:c,visible:!0}),f.dispatchEvent("valid-error",e,null),s&&("tooltip"===n.message||"default"===n.message&&!t&&r.length<2))return s.open(a,c)})}};return __assign(__assign({},w={fullValidate:function(e,t){return r(e,t,!0)},validate:function(e,t){return r(e,t)},clearValidate:function(){var e=d.validStore,t=h.value;return Object.assign(e,{visible:!1,row:null,column:null,content:"",rule:null}),t&&t.reactData.visible&&t.close(),(0,_vue.nextTick)()}}),b)},setupGrid:function(e){return e.extendTableMethods(tableValidatorMethodKeys)}},_default=validatorHook;exports.default=_default;
package/package.json CHANGED
@@ -1,13 +1,11 @@
1
1
  {
2
2
  "name": "vxe-table",
3
- "version": "4.1.5",
3
+ "version": "4.1.8",
4
4
  "description": "一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、贼灵活的配置项、扩展接口等...",
5
5
  "scripts": {
6
6
  "serve": "vue-cli-service serve",
7
7
  "lint": "vue-cli-service lint",
8
- "build": "npm run build:examples & npm run build:docs",
9
- "build:examples": "vue-cli-service build",
10
- "build:docs": "gulp update_docs",
8
+ "build": "vue-cli-service build",
11
9
  "lib:modules": "gulp build",
12
10
  "lib:pack": "vue-cli-service build --target lib --name index --dest lib_temp index.ts",
13
11
  "lib": "npm run lib:pack && npm run lib:modules",
@@ -29,9 +27,7 @@
29
27
  "style": "lib/style.css",
30
28
  "typings": "types/index.d.ts",
31
29
  "devDependencies": {
32
- "@types/qrcode": "^1.4.1",
33
30
  "@types/resize-observer-browser": "^0.1.6",
34
- "@types/sortablejs": "^1.10.7",
35
31
  "@typescript-eslint/eslint-plugin": "^4.18.0",
36
32
  "@typescript-eslint/parser": "^4.18.0",
37
33
  "@vue/cli-plugin-babel": "~4.5.0",
@@ -43,18 +39,13 @@
43
39
  "@vue/compiler-sfc": "^3.2.18",
44
40
  "@vue/eslint-config-standard": "^5.1.2",
45
41
  "@vue/eslint-config-typescript": "^7.0.0",
46
- "ant-design-vue": "^2.2.8",
47
42
  "core-js": "^3.6.5",
48
- "dayjs": "^1.10.7",
49
- "element-plus": "^1.1.0-beta.24",
50
43
  "eslint": "^6.7.2",
51
44
  "eslint-plugin-import": "^2.20.2",
52
45
  "eslint-plugin-node": "^11.1.0",
53
46
  "eslint-plugin-promise": "^4.2.1",
54
47
  "eslint-plugin-standard": "^4.0.0",
55
48
  "eslint-plugin-vue": "^7.0.0",
56
- "exceljs": "^4.3.0",
57
- "font-awesome": "^4.7.0",
58
49
  "gulp": "^4.0.2",
59
50
  "gulp-autoprefixer": "^6.1.0",
60
51
  "gulp-babel": "^8.0.0",
@@ -67,29 +58,15 @@
67
58
  "gulp-sourcemaps": "^2.6.5",
68
59
  "gulp-typescript": "^5.0.1",
69
60
  "gulp-uglify": "^3.0.2",
70
- "highlight.js": "^11.2.0",
71
- "jsbarcode": "^3.11.0",
72
- "jspdf": "^2.4.0",
73
61
  "node-sass": "^6.0.1",
74
- "qrcode": "^1.4.4",
75
62
  "sass-loader": "^10.0.5",
76
- "sortablejs": "^1.14.0",
77
63
  "typescript": "~4.3.5",
78
64
  "vue": "^3.2.21",
79
65
  "vue-i18n": "^9.1.7",
80
66
  "vue-router": "^4.0.11",
81
67
  "vuex": "^4.0.2",
82
- "vxe-table-plugin-antd": "^3.0.5",
83
- "vxe-table-plugin-element": "^3.0.5",
84
- "vxe-table-plugin-export-pdf": "^3.0.2",
85
- "vxe-table-plugin-export-xlsx": "^3.0.3",
86
- "vxe-table-plugin-menus": "^3.0.6",
87
- "vxe-table-plugin-renderer": "^3.0.2",
88
- "vxe-table-plugin-shortcut-key": "^3.0.2",
89
68
  "xe-ajax": "^4.0.5",
90
- "xe-clipboard": "^1.10.1",
91
- "xe-utils": "^3.4.0",
92
- "xlsx": "^0.17.2"
69
+ "xe-utils": "^3.4.0"
93
70
  },
94
71
  "peerDependencies": {
95
72
  "vue": "^3.2.2",
@@ -100,6 +100,9 @@ function getFooterData (opts: any, footerTableData: any) {
100
100
 
101
101
  function getCsvCellTypeLabel (column: any, cellValue: any) {
102
102
  if (cellValue) {
103
+ if (column.type === 'seq') {
104
+ return `\t${cellValue}`
105
+ }
103
106
  switch (column.cellType) {
104
107
  case 'string':
105
108
  if (!isNaN(cellValue)) {
@@ -292,10 +295,16 @@ const tableExportHook: VxeGlobalHooksHandles.HookOptions = {
292
295
  return row[treeOpts.children] && row[treeOpts.children].length
293
296
  }
294
297
 
295
- const getSeq = (row: any, rowIndex: any, column: any, columnIndex: any) => {
298
+ const getSeq = (row: any, rowIndex: any, column: any, columnIndex: any, paths: string[] | null) => {
296
299
  const seqOpts = computeSeqOpts.value
297
300
  const seqMethod = seqOpts.seqMethod || column.seqMethod
298
- return seqMethod ? seqMethod({ row, rowIndex, column, columnIndex }) : (seqOpts.startIndex + rowIndex + 1)
301
+ if (seqMethod) {
302
+ return seqMethod({ row, rowIndex, column, columnIndex })
303
+ }
304
+ if (paths) {
305
+ return paths.map((num, i) => i % 2 === 0 ? (Number(num) + 1) : '.').join('')
306
+ }
307
+ return seqOpts.startIndex + rowIndex + 1
299
308
  }
300
309
 
301
310
  const toBooleanValue = (cellValue: any) => {
@@ -314,10 +323,11 @@ const tableExportHook: VxeGlobalHooksHandles.HookOptions = {
314
323
  if (treeConfig) {
315
324
  // 如果是树表格只允许导出数据源
316
325
  const rest: any[] = []
326
+ const expandMaps: Map<any, number> = new Map()
317
327
  XEUtils.eachTree(datas, (item, rowIndex, items, path, parent, nodes) => {
318
328
  const row = item._row || item
319
329
  const parentRow = parent && parent._row ? parent._row : parent
320
- if ((isAllExpand || !parentRow || $xetable.isTreeExpandByRow(parentRow))) {
330
+ if ((isAllExpand || !parentRow || (expandMaps.has(parentRow) && $xetable.isTreeExpandByRow(parentRow)))) {
321
331
  const hasRowChild = hasTreeChildren(row)
322
332
  const item: any = {
323
333
  _row: row,
@@ -340,7 +350,7 @@ const tableExportHook: VxeGlobalHooksHandles.HookOptions = {
340
350
  } else {
341
351
  switch (column.type) {
342
352
  case 'seq':
343
- cellValue = getSeq(row, rowIndex, column, columnIndex)
353
+ cellValue = getSeq(row, rowIndex, column, columnIndex, path)
344
354
  break
345
355
  case 'checkbox':
346
356
  cellValue = toBooleanValue($xetable.isCheckedByCheckboxRow(row))
@@ -371,6 +381,7 @@ const tableExportHook: VxeGlobalHooksHandles.HookOptions = {
371
381
  }
372
382
  item[column.id] = XEUtils.toValueString(cellValue)
373
383
  })
384
+ expandMaps.set(row, 1)
374
385
  rest.push(Object.assign(item, row))
375
386
  }
376
387
  }, treeOpts)
@@ -395,7 +406,7 @@ const tableExportHook: VxeGlobalHooksHandles.HookOptions = {
395
406
  } else {
396
407
  switch (column.type) {
397
408
  case 'seq':
398
- cellValue = getSeq(row, rowIndex, column, columnIndex)
409
+ cellValue = getSeq(row, rowIndex, column, columnIndex, [])
399
410
  break
400
411
  case 'checkbox':
401
412
  cellValue = toBooleanValue($xetable.isCheckedByCheckboxRow(row))
@@ -395,7 +395,7 @@ export default defineComponent({
395
395
  callback()
396
396
  }
397
397
  }).catch(() => {
398
- return new Promise<void>((resolve, reject) => {
398
+ return new Promise<void>((resolve) => {
399
399
  showErrTime = window.setTimeout(() => {
400
400
  itemList.forEach((item) => {
401
401
  if (item.errRule) {
@@ -412,7 +412,7 @@ export default defineComponent({
412
412
  callback(validRest)
413
413
  resolve()
414
414
  } else {
415
- reject(validRest)
415
+ resolve(validRest)
416
416
  }
417
417
  })
418
418
  })
@@ -871,7 +871,11 @@ export default defineComponent({
871
871
  body.insertRecords = insertRecords.filter((row) => $xetable.findRowIndexOf(pendingRecords, row) === -1)
872
872
  }
873
873
  // 只校验新增和修改的数据
874
- return $xetable.validate(body.insertRecords.concat(updateRecords)).then(() => {
874
+ return $xetable.validate(body.insertRecords.concat(updateRecords)).then((errMap) => {
875
+ if (errMap) {
876
+ // 如果校验不通过
877
+ return
878
+ }
875
879
  if (body.insertRecords.length || removeRecords.length || updateRecords.length || body.pendingRecords.length) {
876
880
  reactData.tableLoading = true
877
881
  return Promise.resolve((beforeSave || ajaxMethods)(...applyArgs))
@@ -916,7 +920,7 @@ export default defineComponent({
916
920
  VXETable.modal.message({ id: code, content: GlobalConfig.i18n('vxe.grid.dataUnchanged'), status: 'info' })
917
921
  }
918
922
  }
919
- }).catch((errMap: any) => errMap)
923
+ })
920
924
  } else {
921
925
  if (process.env.VUE_APP_VXE_TABLE_ENV === 'development') {
922
926
  errLog('vxe.error.notFunc', ['proxy-config.ajax.save'])
@@ -34,15 +34,15 @@ export default {
34
34
  footerAlign: { type: String as PropType<VxeTablePropTypes.FooterAlign>, default: () => GlobalConfig.table.footerAlign },
35
35
  // 是否显示表头
36
36
  showHeader: { type: Boolean as PropType<VxeTablePropTypes.ShowHeader>, default: () => GlobalConfig.table.showHeader },
37
- // 是否要高亮当前选中行
37
+ // (即将废弃)是否要高亮当前选中行
38
38
  highlightCurrentRow: { type: Boolean as PropType<VxeTablePropTypes.HighlightCurrentRow>, default: () => GlobalConfig.table.highlightCurrentRow },
39
- // 鼠标移到行是否要高亮显示
39
+ // (即将废弃)鼠标移到行是否要高亮显示
40
40
  highlightHoverRow: { type: Boolean as PropType<VxeTablePropTypes.HighlightHoverRow>, default: () => GlobalConfig.table.highlightHoverRow },
41
- // 是否要高亮当前选中列
41
+ // (即将废弃)是否要高亮当前选中列
42
42
  highlightCurrentColumn: { type: Boolean as PropType<VxeTablePropTypes.HighlightCurrentColumn>, default: () => GlobalConfig.table.highlightCurrentColumn },
43
- // 鼠标移到列是否要高亮显示
43
+ // (即将废弃)鼠标移到列是否要高亮显示
44
44
  highlightHoverColumn: { type: Boolean as PropType<VxeTablePropTypes.HighlightHoverColumn>, default: () => GlobalConfig.table.highlightHoverColumn },
45
- // 激活单元格编辑时是否高亮显示
45
+ // (即将废弃)激活单元格编辑时是否高亮显示
46
46
  highlightCell: Boolean as PropType<VxeTablePropTypes.HighlightCell>,
47
47
  // 是否显示表尾合计
48
48
  showFooter: Boolean as PropType<VxeTablePropTypes.ShowFooter>,
@@ -153,7 +153,7 @@ export default {
153
153
  scrollX: Object as PropType<VxeTablePropTypes.ScrollX>,
154
154
  // 纵向虚拟滚动配置项
155
155
  scrollY: Object as PropType<VxeTablePropTypes.ScrollY>,
156
- // 优化相关
156
+ // (即将废弃)优化相关
157
157
  animat: { type: Boolean as PropType<VxeTablePropTypes.Animat>, default: () => GlobalConfig.table.animat },
158
158
  delayHover: { type: Number as PropType<VxeTablePropTypes.DelayHover>, default: () => GlobalConfig.table.delayHover as number },
159
159
  // 额外的参数
@@ -3086,6 +3086,16 @@ export default defineComponent({
3086
3086
  const treeOpts = computeTreeOpts.value
3087
3087
  const reserveSelection: any[] = []
3088
3088
  if (checkboxOpts.reserve) {
3089
+ const afterFullIdMaps: { [key: string]: number } = {}
3090
+ if (treeConfig) {
3091
+ XEUtils.eachTree(afterFullData, row => {
3092
+ afterFullIdMaps[getRowid($xetable, row)] = 1
3093
+ }, treeOpts)
3094
+ } else {
3095
+ afterFullData.forEach(row => {
3096
+ afterFullIdMaps[getRowid($xetable, row)] = 1
3097
+ })
3098
+ }
3089
3099
  XEUtils.each(checkboxReserveRowMap, (oldRow, oldRowid) => {
3090
3100
  if (oldRow) {
3091
3101
  if (isFull) {
@@ -3093,14 +3103,8 @@ export default defineComponent({
3093
3103
  reserveSelection.push(oldRow)
3094
3104
  }
3095
3105
  } else {
3096
- if (treeConfig) {
3097
- if (!XEUtils.findTree(afterFullData, row => getRowid($xetable, row) === oldRowid, treeOpts)) {
3098
- reserveSelection.push(oldRow)
3099
- }
3100
- } else {
3101
- if (!afterFullData.some(row => getRowid($xetable, row) === oldRowid)) {
3102
- reserveSelection.push(oldRow)
3103
- }
3106
+ if (!afterFullIdMaps[oldRowid]) {
3107
+ reserveSelection.push(oldRow)
3104
3108
  }
3105
3109
  }
3106
3110
  }
@@ -3226,7 +3230,7 @@ export default defineComponent({
3226
3230
  return selectRow
3227
3231
  }
3228
3232
  } else {
3229
- if (afterFullData.indexOf(selectRow) > -1) {
3233
+ if ($xetable.findRowIndexOf(afterFullData, selectRow) > -1) {
3230
3234
  return selectRow
3231
3235
  }
3232
3236
  }
@@ -3989,6 +3993,7 @@ export default defineComponent({
3989
3993
  const { mouseConfig, keyboardConfig } = props
3990
3994
  const { filterStore, ctxMenuStore, editStore } = reactData
3991
3995
  const mouseOpts = computeMouseOpts.value
3996
+ const keyboardOpts = computeKeyboardOpts.value
3992
3997
  const { actived } = editStore
3993
3998
  const isEsc = hasEventKey(evnt, EVENT_KEYS.ESCAPE)
3994
3999
  if (isEsc) {
@@ -4002,13 +4007,15 @@ export default defineComponent({
4002
4007
  $xetable.closeMenu()
4003
4008
  }
4004
4009
  tableMethods.closeFilter()
4005
- // 如果是激活编辑状态,则取消编辑
4006
- if (actived.row) {
4007
- const params = actived.args
4008
- $xetable.clearActived(evnt)
4009
- // 如果配置了选中功能,则为选中状态
4010
- if (mouseOpts.selected) {
4011
- nextTick(() => $xetable.handleSelected(params, evnt))
4010
+ if (keyboardConfig && keyboardOpts.isEsc) {
4011
+ // 如果是激活编辑状态,则取消编辑
4012
+ if (actived.row) {
4013
+ const params = actived.args
4014
+ $xetable.clearActived(evnt)
4015
+ // 如果配置了选中功能,则为选中状态
4016
+ if (mouseOpts.selected) {
4017
+ nextTick(() => $xetable.handleSelected(params, evnt))
4018
+ }
4012
4019
  }
4013
4020
  }
4014
4021
  }
@@ -4072,7 +4079,7 @@ export default defineComponent({
4072
4079
  $xetable.closeMenu()
4073
4080
  }
4074
4081
  tableMethods.closeFilter()
4075
- if (actived.row) {
4082
+ if (keyboardConfig && keyboardOpts.isEsc) {
4076
4083
  // 如果是激活编辑状态,则取消编辑
4077
4084
  if (actived.row) {
4078
4085
  const params = actived.args
@@ -13,6 +13,7 @@ const GlobalConfig: VXETableGlobalConfig = {
13
13
  showHeader: true,
14
14
  animat: true,
15
15
  delayHover: 250,
16
+ autoResize: true,
16
17
  // keepSource: false,
17
18
  // showOverflow: null,
18
19
  // showHeaderOverflow: null,
@@ -20,7 +21,6 @@ const GlobalConfig: VXETableGlobalConfig = {
20
21
  // resizeInterval: 500,
21
22
  // size: null,
22
23
  // zIndex: null,
23
- // autoResize: false,
24
24
  // stripe: false,
25
25
  // border: false,
26
26
  // round: false,
@@ -93,6 +93,9 @@ const GlobalConfig: VXETableGlobalConfig = {
93
93
  mouseConfig: {
94
94
  extension: true
95
95
  },
96
+ keyboardConfig: {
97
+ isEsc: true
98
+ },
96
99
  areaConfig: {
97
100
  selectCellByHeader: true
98
101
  },
@@ -685,7 +685,7 @@ export const renderer: VxeGlobalRenderer = {
685
685
  XEUtils.each(opts, (options, name) => renderer.add(name, options))
686
686
  return renderer
687
687
  },
688
- get (name) {
688
+ get (name: string) {
689
689
  return renderMap[name] || null
690
690
  },
691
691
  add (name, options) {
@@ -149,21 +149,21 @@ const validatorHook: VxeGlobalHooksHandles.HookOptions = {
149
149
  const ruleProps = Object.keys(validRest)
150
150
  return nextTick().then(() => {
151
151
  if (ruleProps.length) {
152
- return Promise.reject(validRest[ruleProps[0]][0])
152
+ return validRest[ruleProps[0]][0]
153
153
  }
154
154
  if (cb) {
155
155
  cb()
156
156
  }
157
157
  })
158
158
  }).catch(firstErrParams => {
159
- return new Promise<void>((resolve, reject) => {
159
+ return new Promise<void>((resolve) => {
160
160
  const finish = () => {
161
161
  nextTick(() => {
162
162
  if (cb) {
163
163
  cb(validRest)
164
164
  resolve()
165
165
  } else {
166
- reject(validRest)
166
+ resolve(validRest)
167
167
  }
168
168
  })
169
169
  }
package/types/table.d.ts CHANGED
@@ -1555,6 +1555,10 @@ export namespace VxeTablePropTypes {
1555
1555
  * 是否开启非编辑状态下,上下左右移动功能
1556
1556
  */
1557
1557
  isArrow?: boolean;
1558
+ /**
1559
+ * 是否开启Esc键退出编辑功能
1560
+ */
1561
+ isEsc?: boolean;
1558
1562
  /**
1559
1563
  * 是否开启删除键功能
1560
1564
  */
@@ -17,6 +17,8 @@ export interface DefineRendererOption<T> {
17
17
  filterRemoteMethod?(params: VxeGlobalRendererHandles.FilterRemoteMethod): boolean;
18
18
  filterResetMethod?(params: VxeGlobalRendererHandles.FilterResetMethodParams): void;
19
19
  filterRecoverMethod?(params: VxeGlobalRendererHandles.FilterRecoverMethodParams): void;
20
+ // 默认行为
21
+ defaultFilterMethod?(params: VxeGlobalRendererHandles.FilterMethodParams): boolean;
20
22
 
21
23
  // 单元格渲染
22
24
  renderHeader?(renderOpts: VxeGlobalRendererHandles.RenderHeaderOptions, params: VxeGlobalRendererHandles.RenderHeaderParams): T;
@@ -197,7 +199,7 @@ export namespace VxeGlobalRendererHandles {
197
199
  /**
198
200
  * 渲染器名称
199
201
  */
200
- name: string;
202
+ name?: string;
201
203
  /**
202
204
  * 目标组件渲染的参数
203
205
  */
@@ -246,7 +248,7 @@ export interface VxeGlobalRenderer {
246
248
  mixin(options: {
247
249
  [name: string]: RendererOptions;
248
250
  }): VxeGlobalRenderer;
249
- get(name: string): DefineRendererOption<VxeGlobalRendererHandles.RenderResult>;
251
+ get(name: string | null | undefined): DefineRendererOption<VxeGlobalRendererHandles.RenderResult>;
250
252
  add(name: string, options: RendererOptions): VxeGlobalRenderer;
251
253
  delete(name: string): void;
252
254
  }