vxe-table 3.6.13 → 3.6.14-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.
Files changed (47) hide show
  1. package/lib/edit/src/mixin.js +23 -31
  2. package/lib/edit/src/mixin.min.js +1 -1
  3. package/lib/footer/src/footer.js +4 -2
  4. package/lib/footer/src/footer.min.js +1 -1
  5. package/lib/form/src/form-config-item.js +3 -1
  6. package/lib/form/src/form-config-item.min.js +1 -1
  7. package/lib/form/src/form-item.js +3 -1
  8. package/lib/form/src/form-item.min.js +1 -1
  9. package/lib/icon/style/style.css +1 -1
  10. package/lib/icon/style/style.min.css +1 -1
  11. package/lib/index.css +1 -1
  12. package/lib/index.umd.js +375 -354
  13. package/lib/index.umd.min.js +1 -1
  14. package/lib/select/src/select.js +8 -2
  15. package/lib/select/src/select.min.js +1 -1
  16. package/lib/style.css +1 -1
  17. package/lib/style.min.css +1 -1
  18. package/lib/table/src/body.js +8 -6
  19. package/lib/table/src/body.min.js +1 -1
  20. package/lib/table/src/methods.js +320 -307
  21. package/lib/table/src/methods.min.js +1 -1
  22. package/lib/table/src/table.js +3 -1
  23. package/lib/table/src/table.min.js +1 -1
  24. package/lib/tools/dom.js +1 -1
  25. package/lib/tools/dom.min.js +1 -1
  26. package/lib/tools/log.js +1 -1
  27. package/lib/tools/log.min.js +1 -1
  28. package/lib/v-x-e-table/index.js +1 -1
  29. package/lib/v-x-e-table/index.min.js +1 -1
  30. package/package.json +1 -1
  31. package/packages/edit/src/mixin.js +18 -22
  32. package/packages/footer/src/footer.js +4 -2
  33. package/packages/form/src/form-config-item.js +3 -1
  34. package/packages/form/src/form-item.js +3 -1
  35. package/packages/select/src/select.js +4 -2
  36. package/packages/table/src/body.js +8 -7
  37. package/packages/table/src/methods.js +42 -30
  38. package/packages/table/src/table.js +3 -1
  39. package/packages/tools/dom.js +1 -1
  40. package/types/table.d.ts +1 -0
  41. package/types/v-x-e-table/renderer.d.ts +9 -7
  42. /package/lib/icon/style/{iconfont.1681255874086.ttf → iconfont.1683440144042.ttf} +0 -0
  43. /package/lib/icon/style/{iconfont.1681255874086.woff → iconfont.1683440144042.woff} +0 -0
  44. /package/lib/icon/style/{iconfont.1681255874086.woff2 → iconfont.1683440144042.woff2} +0 -0
  45. /package/lib/{iconfont.1681255874086.ttf → iconfont.1683440144042.ttf} +0 -0
  46. /package/lib/{iconfont.1681255874086.woff → iconfont.1683440144042.woff} +0 -0
  47. /package/lib/{iconfont.1681255874086.woff2 → iconfont.1683440144042.woff2} +0 -0
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.browse=exports.DomTools=void 0,exports.getOffsetHeight=getOffsetHeight,exports.getPaddingTopBottomSize=getPaddingTopBottomSize,exports.setScrollLeft=setScrollLeft,exports.setScrollTop=setScrollTop;var _xeUtils=_interopRequireDefault(require("xe-utils"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var browse=_xeUtils.default.browse(),reClsMap=(exports.browse=browse,{});function getClsRE(e){return reClsMap[e]||(reClsMap[e]=new RegExp("(?:^|\\s)".concat(e,"(?!\\S)"),"g")),reClsMap[e]}function getNodeOffset(e,t,o){if(e){var s=e.parentNode;if(o.top+=e.offsetTop,o.left+=e.offsetLeft,s&&s!==document.documentElement&&s!==document.body&&(o.top-=s.scrollTop,o.left-=s.scrollLeft),(!t||e!==t&&e.offsetParent!==t)&&e.offsetParent)return getNodeOffset(e.offsetParent,t,o)}return o}function isScale(e){return e&&/^\d+%$/.test(e)}function hasClass(e,t){return e&&e.className&&e.className.match&&e.className.match(getClsRE(t))}function removeClass(e,t){e&&hasClass(e,t)&&(e.className=e.className.replace(getClsRE(t),""))}function getDomNode(){var e=document.documentElement,t=document.body;return{scrollTop:e.scrollTop||t.scrollTop,scrollLeft:e.scrollLeft||t.scrollLeft,visibleHeight:e.clientHeight||t.clientHeight,visibleWidth:e.clientWidth||t.clientWidth}}function getOffsetHeight(e){return e?e.offsetHeight:0}function getPaddingTopBottomSize(e){return e?(e=getComputedStyle(e),_xeUtils.default.toNumber(e.paddingTop)+_xeUtils.default.toNumber(e.paddingBottom)):0}function setScrollTop(e,t){e&&(e.scrollTop=t)}function setScrollLeft(e,t){e&&(e.scrollLeft=t)}function isNodeElement(e){return e&&1===e.nodeType}var DomTools={browse:browse,isPx:function(e){return e&&/^\d+(px)?$/.test(e)},isScale:isScale,hasClass:hasClass,removeClass:removeClass,addClass:function(e,t){e&&!hasClass(e,t)&&(removeClass(e,t),e.className="".concat(e.className," ").concat(t))},updateCellTitle:function(e,t){t="html"===t.type?e.innerText:e.textContent;e.getAttribute("title")!==t&&e.setAttribute("title",t)},getDomNode:getDomNode,getEventTargetNode:function(e,t,o,s){for(var l,r=e.target;r&&r.nodeType&&r!==document;){if(o&&hasClass(r,o)&&(!s||s(r)))l=r;else if(r===t)return{flag:!o||!!l,container:t,targetElem:l};r=r.parentNode}return{flag:!1}},getOffsetPos:function(e,t){return getNodeOffset(e,t,{left:0,top:0})},getAbsolutePos:function(e){var e=e.getBoundingClientRect(),t=e.top,e=e.left,o=getDomNode();return{boundingTop:t,top:o.scrollTop+t,boundingLeft:e,left:o.scrollLeft+e,visibleHeight:o.visibleHeight,visibleWidth:o.visibleWidth}},scrollToView:function(e){var t="scrollIntoViewIfNeeded",o="scrollIntoView";e&&(e[t]?e[t]():e[o]&&e[o]())},triggerEvent:function(e,t){e&&e.dispatchEvent(new Event(t))},calcHeight:function(e,t){var o,t=e[t],s=0;return s=t?"auto"===t?e.parentHeight:(o=e.getExcludeHeight(),s=isScale(t)?Math.floor((_xeUtils.default.toInteger(t)||1)/100*e.parentHeight):_xeUtils.default.toNumber(t),Math.max(40,s-o)):s},isNodeElement:isNodeElement},_default=exports.DomTools=DomTools;exports.default=_default;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.browse=exports.DomTools=void 0,exports.getOffsetHeight=getOffsetHeight,exports.getPaddingTopBottomSize=getPaddingTopBottomSize,exports.setScrollLeft=setScrollLeft,exports.setScrollTop=setScrollTop;var _xeUtils=_interopRequireDefault(require("xe-utils"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var browse=_xeUtils.default.browse(),reClsMap=(exports.browse=browse,{});function getClsRE(e){return reClsMap[e]||(reClsMap[e]=new RegExp("(?:^|\\s)".concat(e,"(?!\\S)"),"g")),reClsMap[e]}function getNodeOffset(e,t,o){if(e){var s=e.parentNode;if(o.top+=e.offsetTop,o.left+=e.offsetLeft,s&&s!==document.documentElement&&s!==document.body&&(o.top-=s.scrollTop,o.left-=s.scrollLeft),(!t||e!==t&&e.offsetParent!==t)&&e.offsetParent)return getNodeOffset(e.offsetParent,t,o)}return o}function isScale(e){return e&&/^\d+%$/.test(e)}function hasClass(e,t){return e&&e.className&&e.className.match&&e.className.match(getClsRE(t))}function removeClass(e,t){e&&hasClass(e,t)&&(e.className=e.className.replace(getClsRE(t),""))}function getDomNode(){var e=document.documentElement,t=document.body;return{scrollTop:e.scrollTop||t.scrollTop,scrollLeft:e.scrollLeft||t.scrollLeft,visibleHeight:e.clientHeight||t.clientHeight,visibleWidth:e.clientWidth||t.clientWidth}}function getOffsetHeight(e){return e?e.offsetHeight:0}function getPaddingTopBottomSize(e){return e?(e=getComputedStyle(e),_xeUtils.default.toNumber(e.paddingTop)+_xeUtils.default.toNumber(e.paddingBottom)):0}function setScrollTop(e,t){e&&(e.scrollTop=t)}function setScrollLeft(e,t){e&&(e.scrollLeft=t)}function isNodeElement(e){return e&&1===e.nodeType}var DomTools={browse:browse,isPx:function(e){return e&&/^\d+(px)?$/.test(e)},isScale:isScale,hasClass:hasClass,removeClass:removeClass,addClass:function(e,t){e&&!hasClass(e,t)&&(removeClass(e,t),e.className="".concat(e.className," ").concat(t))},updateCellTitle:function(e,t){t="html"===t.type?e.innerText:e.textContent;e.getAttribute("title")!==t&&e.setAttribute("title",t)},getDomNode:getDomNode,getEventTargetNode:function(e,t,o,s){for(var l,r=e.target.shadowRoot&&e.composed&&e.composedPath()[0]||e.target;r&&r.nodeType&&r!==document;){if(o&&hasClass(r,o)&&(!s||s(r)))l=r;else if(r===t)return{flag:!o||!!l,container:t,targetElem:l};r=r.parentNode}return{flag:!1}},getOffsetPos:function(e,t){return getNodeOffset(e,t,{left:0,top:0})},getAbsolutePos:function(e){var e=e.getBoundingClientRect(),t=e.top,e=e.left,o=getDomNode();return{boundingTop:t,top:o.scrollTop+t,boundingLeft:e,left:o.scrollLeft+e,visibleHeight:o.visibleHeight,visibleWidth:o.visibleWidth}},scrollToView:function(e){var t="scrollIntoViewIfNeeded",o="scrollIntoView";e&&(e[t]?e[t]():e[o]&&e[o]())},triggerEvent:function(e,t){e&&e.dispatchEvent(new Event(t))},calcHeight:function(e,t){var o,t=e[t],s=0;return s=t?"auto"===t?e.parentHeight:(o=e.getExcludeHeight(),s=isScale(t)?Math.floor((_xeUtils.default.toInteger(t)||1)/100*e.parentHeight):_xeUtils.default.toNumber(t),Math.max(40,s-o)):s},isNodeElement:isNodeElement},_default=exports.DomTools=DomTools;exports.default=_default;
package/lib/tools/log.js CHANGED
@@ -9,7 +9,7 @@ exports.warnLog = void 0;
9
9
  var _conf = _interopRequireDefault(require("../v-x-e-table/src/conf"));
10
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
11
  function getLog(message, params) {
12
- return "[vxe-table v".concat("3.6.13", "] ", _conf["default"].i18n(message, params));
12
+ return "[vxe-table v".concat("3.6.14-beta.1", "] ", _conf["default"].i18n(message, params));
13
13
  }
14
14
  function outLog(type) {
15
15
  return function (message, params) {
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.errLog=void 0,exports.getLog=getLog,exports.warnLog=void 0;var _conf=_interopRequireDefault(require("../v-x-e-table/src/conf"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function getLog(e,o){return"[vxe-table v".concat("3.6.13","] ",_conf.default.i18n(e,o))}function outLog(r){return function(e,o){e=getLog(e,o);return console[r](e),e}}var warnLog=outLog("warn"),errLog=(exports.warnLog=warnLog,outLog("error"));exports.errLog=errLog;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.errLog=void 0,exports.getLog=getLog,exports.warnLog=void 0;var _conf=_interopRequireDefault(require("../v-x-e-table/src/conf"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function getLog(e,o){return"[vxe-table v".concat("3.6.14-beta.1","] ",_conf.default.i18n(e,o))}function outLog(r){return function(e,o){e=getLog(e,o);return console[r](e),e}}var warnLog=outLog("warn"),errLog=(exports.warnLog=warnLog,outLog("error"));exports.errLog=errLog;
@@ -186,7 +186,7 @@ var v = 'v3';
186
186
  exports.v = v;
187
187
  var VXETable = {
188
188
  v: v,
189
- version: "3.6.13",
189
+ version: "3.6.14-beta.1",
190
190
  reg: reg,
191
191
  use: use,
192
192
  setup: _setup.setup,
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _exportNames={use:!0,config:!0,t:!0,_t:!0,v:!0,VXETable:!0},_xeUtils=(exports.VXETable=void 0,exports._t=_t,exports.default=exports.config=void 0,exports.t=t,exports.use=use,exports.v=void 0,_interopRequireDefault(require("xe-utils"))),_conf=_interopRequireDefault(require("../v-x-e-table/src/conf")),_interceptor=require("./src/interceptor"),_renderer=(Object.keys(_interceptor).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_interceptor[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _interceptor[e]}})}),require("./src/renderer")),_commands=(Object.keys(_renderer).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_renderer[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _renderer[e]}})}),require("./src/commands")),_menus=(Object.keys(_commands).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_commands[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _commands[e]}})}),require("./src/menus")),_formats=(Object.keys(_menus).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_menus[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _menus[e]}})}),require("./src/formats")),_setup=(Object.keys(_formats).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_formats[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _formats[e]}})}),require("./src/setup")),_utils=(Object.keys(_setup).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_setup[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _setup[e]}})}),require("../tools/utils")),_log=require("../tools/log");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}var installedPlugins=[];function use(e,t){return e&&e.install&&-1===installedPlugins.indexOf(e)&&(e.install(VXETable,t),installedPlugins.push(e)),VXETable}function reg(e){"development"===process.env.NODE_ENV&&VXETable.Table&&(0,_log.errLog)("vxe.error.useErr",[e]),VXETable["_".concat(e)]=1}function getExportOrImpotType(e,r){var o=[];return _xeUtils.default.objectEach(e,function(e,t){0!==e&&e!==r||o.push(t)}),o}var VXETableConfig=function(){function e(){_classCallCheck(this,e)}return _createClass(e,[{key:"zIndex",get:function(){return _utils.UtilTools.getLastZIndex()}},{key:"nextZIndex",get:function(){return _utils.UtilTools.nextZIndex()}},{key:"exportTypes",get:function(){return getExportOrImpotType(_conf.default.export.types,1)}},{key:"importTypes",get:function(){return getExportOrImpotType(_conf.default.export.types,2)}}]),e}(),config=new VXETableConfig;function t(e,t){return _conf.default.i18n(e,t)}function _t(e,t){return e?_xeUtils.default.toValueString(_conf.default.translate?_conf.default.translate(e,t):e):""}exports.config=config;var v="v3",VXETable={v:exports.v=v,version:"3.6.13",reg:reg,use:use,setup:_setup.setup,interceptor:_interceptor.interceptor,renderer:_renderer.renderer,commands:_commands.commands,formats:_formats.formats,menus:_menus.menus,config:config,t:t,_t:_t},_default=exports.VXETable=VXETable;exports.default=_default;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _exportNames={use:!0,config:!0,t:!0,_t:!0,v:!0,VXETable:!0},_xeUtils=(exports.VXETable=void 0,exports._t=_t,exports.default=exports.config=void 0,exports.t=t,exports.use=use,exports.v=void 0,_interopRequireDefault(require("xe-utils"))),_conf=_interopRequireDefault(require("../v-x-e-table/src/conf")),_interceptor=require("./src/interceptor"),_renderer=(Object.keys(_interceptor).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_interceptor[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _interceptor[e]}})}),require("./src/renderer")),_commands=(Object.keys(_renderer).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_renderer[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _renderer[e]}})}),require("./src/commands")),_menus=(Object.keys(_commands).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_commands[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _commands[e]}})}),require("./src/menus")),_formats=(Object.keys(_menus).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_menus[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _menus[e]}})}),require("./src/formats")),_setup=(Object.keys(_formats).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_formats[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _formats[e]}})}),require("./src/setup")),_utils=(Object.keys(_setup).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_setup[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _setup[e]}})}),require("../tools/utils")),_log=require("../tools/log");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}var installedPlugins=[];function use(e,t){return e&&e.install&&-1===installedPlugins.indexOf(e)&&(e.install(VXETable,t),installedPlugins.push(e)),VXETable}function reg(e){"development"===process.env.NODE_ENV&&VXETable.Table&&(0,_log.errLog)("vxe.error.useErr",[e]),VXETable["_".concat(e)]=1}function getExportOrImpotType(e,r){var o=[];return _xeUtils.default.objectEach(e,function(e,t){0!==e&&e!==r||o.push(t)}),o}var VXETableConfig=function(){function e(){_classCallCheck(this,e)}return _createClass(e,[{key:"zIndex",get:function(){return _utils.UtilTools.getLastZIndex()}},{key:"nextZIndex",get:function(){return _utils.UtilTools.nextZIndex()}},{key:"exportTypes",get:function(){return getExportOrImpotType(_conf.default.export.types,1)}},{key:"importTypes",get:function(){return getExportOrImpotType(_conf.default.export.types,2)}}]),e}(),config=new VXETableConfig;function t(e,t){return _conf.default.i18n(e,t)}function _t(e,t){return e?_xeUtils.default.toValueString(_conf.default.translate?_conf.default.translate(e,t):e):""}exports.config=config;var v="v3",VXETable={v:exports.v=v,version:"3.6.14-beta.1",reg:reg,use:use,setup:_setup.setup,interceptor:_interceptor.interceptor,renderer:_renderer.renderer,commands:_commands.commands,formats:_formats.formats,menus:_menus.menus,config:config,t:t,_t:_t},_default=exports.VXETable=VXETable;exports.default=_default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-table",
3
- "version": "3.6.13",
3
+ "version": "3.6.14-beta.1",
4
4
  "description": "一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器等...",
5
5
  "scripts": {
6
6
  "update": "npm install --legacy-peer-deps",
@@ -64,7 +64,7 @@ export default {
64
64
  if (!XEUtils.isArray(records)) {
65
65
  records = [records]
66
66
  }
67
- const newRecords = records.map(record => this.defineField(Object.assign({}, record)))
67
+ const newRecords = this.defineField(records.map(record => Object.assign({}, record)))
68
68
  if (!row) {
69
69
  // 如果为虚拟树
70
70
  if (treeConfig && transform) {
@@ -158,13 +158,19 @@ export default {
158
158
  }
159
159
  }
160
160
  }
161
- editStore.insertList.unshift(...newRecords)
161
+ const { insertList, insertMaps } = editStore
162
+ newRecords.forEach(newRow => {
163
+ const rowid = getRowid(this, newRow)
164
+ insertMaps[rowid] = newRow
165
+ })
166
+ insertList.unshift(...newRecords)
167
+ this.cacheRowMap()
168
+ this.updateScrollYStatus()
162
169
  this.handleTableData(treeConfig && transform)
163
170
  if (!(treeConfig && transform)) {
164
171
  this.updateAfterDataIndex()
165
172
  }
166
173
  this.updateFooter()
167
- this.cacheRowMap()
168
174
  this.checkSelectionStatus()
169
175
  if (this.scrollYLoad) {
170
176
  this.updateScrollYSpace()
@@ -188,7 +194,7 @@ export default {
188
194
  _remove (rows) {
189
195
  const { afterFullData, tableFullData, tableFullTreeData, treeConfig, mergeList, editStore, checkboxOpts, selection, isInsertByRow, treeOpts } = this
190
196
  const { transform } = treeOpts
191
- const { actived, removeList, insertList } = editStore
197
+ const { actived, removeList, insertList, insertMaps } = editStore
192
198
  const { checkField } = checkboxOpts
193
199
  let rest = []
194
200
  if (!rows) {
@@ -261,10 +267,12 @@ export default {
261
267
  }
262
268
  // 从新增中移除已删除的数据
263
269
  rows.forEach(row => {
270
+ const rowid = getRowid(this, row)
264
271
  const iIndex = this.findRowIndexOf(insertList, row)
265
272
  if (iIndex > -1) {
266
273
  insertList.splice(iIndex, 1)
267
274
  }
275
+ delete insertMaps[rowid]
268
276
  })
269
277
  this.handleTableData(treeConfig && transform)
270
278
  if (!(treeConfig && transform)) {
@@ -326,27 +334,15 @@ export default {
326
334
  * 获取新增的临时数据
327
335
  */
328
336
  _getInsertRecords () {
329
- const { treeConfig, tableFullTreeData, tableFullData, treeOpts } = this
337
+ const { fullAllDataRowIdData } = this
330
338
  const insertList = this.editStore.insertList
331
339
  const insertRecords = []
332
- if (insertList.length) {
333
- // 如果为虚拟树
334
- if (treeConfig && treeOpts.transform) {
335
- insertList.forEach(row => {
336
- const rowid = getRowid(this, row)
337
- const matchObj = XEUtils.findTree(tableFullTreeData, item => rowid === getRowid(this, item), treeOpts)
338
- if (matchObj) {
339
- insertRecords.push(row)
340
- }
341
- })
342
- } else {
343
- insertList.forEach(row => {
344
- if (tableFullData.indexOf(row) > -1) {
345
- insertRecords.push(row)
346
- }
347
- })
340
+ insertList.forEach(row => {
341
+ const rowid = getRowid(this, row)
342
+ if (fullAllDataRowIdData[rowid]) {
343
+ insertRecords.push(row)
348
344
  }
349
- }
345
+ })
350
346
  return insertRecords
351
347
  },
352
348
  /**
@@ -68,11 +68,13 @@ export default {
68
68
  overflowX,
69
69
  scrollbarWidth,
70
70
  tooltipOpts,
71
- visibleColumn
71
+ visibleColumn,
72
+ expandColumn
72
73
  } = $xetable
73
74
  // 如果是使用优化模式
74
75
  if (fixedType) {
75
- if (scrollXLoad || allColumnFooterOverflow) {
76
+ // 如果存在展开行使用全量渲染
77
+ if (!expandColumn && (scrollXLoad || allColumnFooterOverflow)) {
76
78
  if (!mergeFooterList.length || !footerSpanMethod) {
77
79
  tableColumn = fixedColumn
78
80
  } else {
@@ -31,6 +31,7 @@ const VxeFormConfigItem = {
31
31
  const { slots, title, folding, visible, field, collapseNode, itemRender, showError, errRule, className, titleOverflow, children } = item
32
32
  const compConf = isEnableConf(itemRender) ? VXETable.renderer.get(itemRender.name) : null
33
33
  const itemClassName = compConf ? compConf.itemClassName : ''
34
+ const itemStyle = compConf ? compConf.itemStyle : null
34
35
  const span = item.span || $xeform.span
35
36
  const align = item.align || $xeform.align
36
37
  const titleAlign = XEUtils.eqNull(item.titleAlign) ? allTitleAlign : item.titleAlign
@@ -100,7 +101,8 @@ const VxeFormConfigItem = {
100
101
  'is--active': isActivetem($xeform, item),
101
102
  'is--error': showError
102
103
  }
103
- ]
104
+ ],
105
+ style: XEUtils.isFunction(itemStyle) ? itemStyle(params) : itemStyle
104
106
  }, [
105
107
  h('div', {
106
108
  class: 'vxe-form--item-inner'
@@ -55,6 +55,7 @@ const renderItem = (h, _vm, item, slots) => {
55
55
  const { title, folding, visible, field, collapseNode, itemRender, showError, errRule, className, titleOverflow } = item
56
56
  const compConf = isEnableConf(itemRender) ? VXETable.renderer.get(itemRender.name) : null
57
57
  const itemClassName = compConf ? compConf.itemClassName : ''
58
+ const itemStyle = compConf ? compConf.itemStyle : null
58
59
  const span = item.span || _vm.span
59
60
  const align = item.align || _vm.align
60
61
  const titleAlign = XEUtils.eqNull(item.titleAlign) ? allTitleAlign : item.titleAlign
@@ -109,7 +110,8 @@ const renderItem = (h, _vm, item, slots) => {
109
110
  'is--active': isActivetem(_vm, item),
110
111
  'is--error': showError
111
112
  }
112
- ]
113
+ ],
114
+ style: XEUtils.isFunction(itemStyle) ? itemStyle(params) : itemStyle
113
115
  }, [
114
116
  h('div', {
115
117
  class: 'vxe-form--item-inner'
@@ -706,13 +706,15 @@ export default {
706
706
  })
707
707
  }
708
708
  },
709
- focusEvent () {
709
+ focusEvent (evnt) {
710
710
  if (!this.disabled) {
711
711
  this.isActivated = true
712
712
  }
713
+ this.$emit('focus', { $event: evnt })
713
714
  },
714
- blurEvent () {
715
+ blurEvent (evnt) {
715
716
  this.isActivated = false
717
+ this.$emit('blur', { $event: evnt })
716
718
  },
717
719
  modelSearchEvent (value) {
718
720
  this.searchValue = value
@@ -93,7 +93,8 @@ function renderColumn (h, _vm, $xetable, seq, rowid, fixedType, rowLevel, row, r
93
93
  const { height: rowHeight } = rowOpts
94
94
  const renderOpts = editRender || cellRender
95
95
  const compConf = renderOpts ? VXETable.renderer.get(renderOpts.name) : null
96
- const cellClassName = compConf ? compConf.cellClassName : ''
96
+ const compCellClassName = compConf ? compConf.cellClassName : ''
97
+ const compCellStyle = compConf ? compConf.cellStyle : ''
97
98
  const showAllTip = tooltipOpts.showAll || tooltipOpts.enabled
98
99
  const columnIndex = $xetable.getColumnIndex(column)
99
100
  const _columnIndex = $xetable.getVTColumnIndex(column)
@@ -275,7 +276,7 @@ function renderColumn (h, _vm, $xetable, seq, rowid, fixedType, rowLevel, row, r
275
276
  'col--valid-error': hasValidError,
276
277
  'col--current': currentColumn === column
277
278
  },
278
- UtilTools.getClass(cellClassName, params),
279
+ UtilTools.getClass(compCellClassName, params),
279
280
  UtilTools.getClass(className, params),
280
281
  UtilTools.getClass(allCellClassName, params)
281
282
  ],
@@ -283,7 +284,7 @@ function renderColumn (h, _vm, $xetable, seq, rowid, fixedType, rowLevel, row, r
283
284
  attrs,
284
285
  style: Object.assign({
285
286
  height: hasEllipsis && (scrollYRHeight || rowHeight) ? `${scrollYRHeight || rowHeight}px` : ''
286
- }, cellStyle ? (XEUtils.isFunction(cellStyle) ? cellStyle(params) : cellStyle) : null),
287
+ }, XEUtils.isFunction(compCellStyle) ? compCellStyle(params) : compCellStyle, XEUtils.isFunction(cellStyle) ? cellStyle(params) : cellStyle),
287
288
  on: tdOns
288
289
  }, tdVNs)
289
290
  }
@@ -303,7 +304,6 @@ function renderRows (h, _vm, $xetable, fixedType, tableData, tableColumn) {
303
304
  editOpts,
304
305
  treeExpandeds,
305
306
  scrollYLoad,
306
- editStore,
307
307
  rowExpandeds,
308
308
  radioOpts,
309
309
  checkboxOpts,
@@ -347,7 +347,7 @@ function renderRows (h, _vm, $xetable, fixedType, tableData, tableColumn) {
347
347
  // 是否新增行
348
348
  let isNewRow = false
349
349
  if (editConfig) {
350
- isNewRow = editStore.insertList.indexOf(row) > -1
350
+ isNewRow = $xetable.isInsertByRow(row)
351
351
  }
352
352
  if (treeConfig && !scrollYLoad && !treeOpts.transform && treeExpandeds.length) {
353
353
  rowChildren = row[treeOpts.children]
@@ -520,10 +520,11 @@ export default {
520
520
  },
521
521
  render (h) {
522
522
  const { _e, $parent: $xetable, fixedColumn, fixedType } = this
523
- let { $scopedSlots, tId, tableData, tableColumn, visibleColumn, showOverflow: allColumnOverflow, keyboardConfig, keyboardOpts, mergeList, spanMethod, scrollXLoad, scrollYLoad, isAllOverflow, emptyOpts, mouseConfig, mouseOpts, sYOpts } = $xetable
523
+ let { $scopedSlots, tId, tableData, tableColumn, visibleColumn, expandColumn, showOverflow: allColumnOverflow, keyboardConfig, keyboardOpts, mergeList, spanMethod, scrollXLoad, scrollYLoad, isAllOverflow, emptyOpts, mouseConfig, mouseOpts, sYOpts } = $xetable
524
524
  // 如果是使用优化模式
525
525
  if (fixedType) {
526
- if (scrollXLoad || scrollYLoad || (allColumnOverflow ? isAllOverflow : allColumnOverflow)) {
526
+ // 如果存在展开行使用全量渲染
527
+ if (!expandColumn && (scrollXLoad || scrollYLoad || (allColumnOverflow ? isAllOverflow : allColumnOverflow))) {
527
528
  if (!mergeList.length && !spanMethod && !(keyboardConfig && keyboardOpts.isMerge)) {
528
529
  tableColumn = fixedColumn
529
530
  } else {
@@ -343,8 +343,9 @@ const Methods = {
343
343
  updateScrollYStatus (fullData) {
344
344
  const { treeConfig, treeOpts, sYOpts } = this
345
345
  const { transform } = treeOpts
346
+ const allList = fullData || this.tableFullData
346
347
  // 如果gt为0,则总是启用
347
- const scrollYLoad = (transform || !treeConfig) && !!sYOpts.enabled && sYOpts.gt > -1 && (sYOpts.gt === 0 || sYOpts.gt <= fullData.length)
348
+ const scrollYLoad = (transform || !treeConfig) && !!sYOpts.enabled && sYOpts.gt > -1 && (sYOpts.gt === 0 || sYOpts.gt <= allList.length)
348
349
  this.scrollYLoad = scrollYLoad
349
350
  return scrollYLoad
350
351
  },
@@ -397,7 +398,9 @@ const Methods = {
397
398
  scrollXStore.startIndex = 0
398
399
  scrollXStore.endIndex = 1
399
400
  editStore.insertList = []
401
+ editStore.insertMaps = {}
400
402
  editStore.removeList = []
403
+ editStore.removeMaps = {}
401
404
  const sYLoad = this.updateScrollYStatus(fullData)
402
405
  this.scrollYLoad = sYLoad
403
406
  // 全量数据
@@ -879,40 +882,45 @@ const Methods = {
879
882
  },
880
883
  /**
881
884
  * 定义行数据中的列属性,如果不存在则定义
882
- * @param {Row} record 行数据
885
+ * @param {Row} records 行数据
883
886
  */
884
- defineField (record) {
887
+ defineField (records) {
885
888
  const { radioOpts, checkboxOpts, treeConfig, treeOpts, expandOpts } = this
886
889
  const rowkey = getRowkey(this)
887
- this.tableFullColumn.forEach(column => {
888
- const { field, editRender } = column
889
- if (field && !XEUtils.has(record, field)) {
890
- let cellValue = null
891
- if (editRender) {
892
- const { defaultValue } = editRender
893
- if (XEUtils.isFunction(defaultValue)) {
894
- cellValue = defaultValue({ column })
895
- } else if (!XEUtils.isUndefined(defaultValue)) {
896
- cellValue = defaultValue
890
+ if (!XEUtils.isArray(records)) {
891
+ records = [records]
892
+ }
893
+ return records.map(record => {
894
+ this.tableFullColumn.forEach(column => {
895
+ const { field, editRender } = column
896
+ if (field && !XEUtils.has(record, field)) {
897
+ let cellValue = null
898
+ if (editRender) {
899
+ const { defaultValue } = editRender
900
+ if (XEUtils.isFunction(defaultValue)) {
901
+ cellValue = defaultValue({ column })
902
+ } else if (!XEUtils.isUndefined(defaultValue)) {
903
+ cellValue = defaultValue
904
+ }
897
905
  }
906
+ XEUtils.set(record, field, cellValue)
907
+ }
908
+ })
909
+ const otherFields = [radioOpts.labelField, checkboxOpts.checkField, checkboxOpts.labelField, expandOpts.labelField]
910
+ otherFields.forEach((key) => {
911
+ if (key && eqEmptyValue(XEUtils.get(record, key))) {
912
+ XEUtils.set(record, key, null)
898
913
  }
899
- XEUtils.set(record, field, cellValue)
914
+ })
915
+ if (treeConfig && treeOpts.lazy && XEUtils.isUndefined(record[treeOpts.children])) {
916
+ record[treeOpts.children] = null
900
917
  }
901
- })
902
- const otherFields = [radioOpts.labelField, checkboxOpts.checkField, checkboxOpts.labelField, expandOpts.labelField]
903
- otherFields.forEach((key) => {
904
- if (key && eqEmptyValue(XEUtils.get(record, key))) {
905
- XEUtils.set(record, key, null)
918
+ // 必须有行数据的唯一主键,可以自行设置;也可以默认生成一个随机数
919
+ if (eqEmptyValue(XEUtils.get(record, rowkey))) {
920
+ XEUtils.set(record, rowkey, getRowUniqueId())
906
921
  }
922
+ return record
907
923
  })
908
- if (treeConfig && treeOpts.lazy && XEUtils.isUndefined(record[treeOpts.children])) {
909
- record[treeOpts.children] = null
910
- }
911
- // 必须有行数据的唯一主键,可以自行设置;也可以默认生成一个随机数
912
- if (eqEmptyValue(XEUtils.get(record, rowkey))) {
913
- XEUtils.set(record, rowkey, getRowUniqueId())
914
- }
915
- return record
916
924
  },
917
925
  /**
918
926
  * 创建 data 对象
@@ -1017,7 +1025,9 @@ const Methods = {
1017
1025
  * @param {Row} row 行对象
1018
1026
  */
1019
1027
  isInsertByRow (row) {
1020
- return this.editStore.insertList.indexOf(row) > -1
1028
+ const { editStore } = this
1029
+ const rowid = getRowid(this, row)
1030
+ return editStore.insertList.length && editStore.insertMaps[rowid]
1021
1031
  },
1022
1032
  /**
1023
1033
  * 删除所有新增的临时数据
@@ -2044,7 +2054,8 @@ const Methods = {
2044
2054
 
2045
2055
  // 如果是使用优化模式
2046
2056
  if (fixedType) {
2047
- if (scrollXLoad || scrollYLoad || (allColumnOverflow ? isAllOverflow : allColumnOverflow)) {
2057
+ // 如果存在展开行使用全量渲染
2058
+ if (!this.expandColumn && (scrollXLoad || scrollYLoad || (allColumnOverflow ? isAllOverflow : allColumnOverflow))) {
2048
2059
  if (!mergeList.length && !spanMethod && !(keyboardConfig && keyboardOpts.isMerge)) {
2049
2060
  renderColumnList = fixedColumn
2050
2061
  } else {
@@ -2070,7 +2081,8 @@ const Methods = {
2070
2081
 
2071
2082
  // 如果是使用优化模式
2072
2083
  if (fixedType) {
2073
- if (scrollXLoad || allColumnFooterOverflow) {
2084
+ // 如果存在展开行使用全量渲染
2085
+ if (!this.expandColumn && (scrollXLoad || allColumnFooterOverflow)) {
2074
2086
  if (!mergeFooterList.length || !footerSpanMethod) {
2075
2087
  renderColumnList = fixedColumn
2076
2088
  } else {
@@ -394,7 +394,9 @@ export default {
394
394
  column: null
395
395
  },
396
396
  insertList: [],
397
- removeList: []
397
+ insertMaps: {},
398
+ removeList: [],
399
+ removeMaps: {}
398
400
  },
399
401
  // 存放 tooltip 相关信息
400
402
  tooltipStore: {
@@ -114,7 +114,7 @@ export const DomTools = {
114
114
  */
115
115
  getEventTargetNode (evnt, container, queryCls, queryMethod) {
116
116
  let targetElem
117
- let target = evnt.target
117
+ let target = (evnt.target.shadowRoot && evnt.composed) ? (evnt.composedPath()[0] || evnt.target) : evnt.target
118
118
  while (target && target.nodeType && target !== document) {
119
119
  if (queryCls && hasClass(target, queryCls) && (!queryMethod || queryMethod(target))) {
120
120
  targetElem = target
package/types/table.d.ts CHANGED
@@ -272,6 +272,7 @@ export declare class Table extends VXETableComponent {
272
272
  */
273
273
  clearAll(): Promise<any>;
274
274
  /**
275
+ * 该方法已废弃!!!
275
276
  * 同步 data 数据;如果用了该方法,那么组件将不再记录增删改的状态,只能自行实现对应逻辑
276
277
  * 对于某些特殊的场景,比如深层树节点元素发生变动时可能会用到
277
278
  * @deprecated
@@ -1,5 +1,5 @@
1
- import { CreateElement, VNode } from 'vue'
2
- import { SlotVNodeType, RowInfo } from '../component'
1
+ import { CreateElement } from 'vue'
2
+ import { SlotVNodeType, RowInfo, VNodeStyle } from '../component'
3
3
  import { Table } from '../table'
4
4
  import { Grid } from '../grid'
5
5
  import { ColumnInfo, ColumnCellRenderOptions, ColumnContentRenderOptions } from '../column'
@@ -43,6 +43,7 @@ export interface RendererMapOptions {
43
43
 
44
44
  // 单元格渲染
45
45
  cellClassName?: string | ((params: ColumnCellRenderParams | ColumnEditRenderParams) => string | { [key: string]: boolean })
46
+ cellStyle?: string | VNodeStyle | ((params: ColumnCellRenderParams | ColumnEditRenderParams) => string | VNodeStyle)
46
47
  renderHeader?(h: CreateElement, renderOpts: ColumnCellRenderOptions | ColumnEditRenderOptions, params: ColumnCellRenderParams | ColumnEditRenderParams): SlotVNodeType | SlotVNodeType[];
47
48
  renderDefault?(h: CreateElement, renderOpts: ColumnCellRenderOptions | ColumnEditRenderOptions, params: ColumnCellRenderParams | ColumnEditRenderParams): SlotVNodeType | SlotVNodeType[];
48
49
  renderFooter?(h: CreateElement, renderOpts: ColumnCellRenderOptions | ColumnEditRenderOptions, params: ColumnFooterRenderParams): SlotVNodeType | SlotVNodeType[];
@@ -63,6 +64,7 @@ export interface RendererMapOptions {
63
64
 
64
65
  // 表单-项渲染
65
66
  itemClassName?: string | ((params: FormItemRenderParams) => string | { [key: string]: boolean })
67
+ itemStyle?: string | VNodeStyle | ((params: FormItemRenderParams) => string | VNodeStyle)
66
68
  renderItemTitle?(h: CreateElement, renderOpts: FormItemRenderOptions, params: FormItemRenderParams): SlotVNodeType | SlotVNodeType[];
67
69
  renderItemContent?(h: CreateElement, renderOpts: FormItemRenderOptions, params: FormItemRenderParams): SlotVNodeType | SlotVNodeType[];
68
70
  itemVisibleMethod?(params: FormItemVisibleParams): boolean;
@@ -178,9 +180,9 @@ export class GridRenderParams extends TableRenderParams {
178
180
 
179
181
  export class EmptyRenderParams extends TableRenderParams { }
180
182
 
181
- export interface ColumnDefaultSlotParams extends ColumnCellRenderParams { }
182
- export interface ColumnContentSlotParams extends ColumnContentRenderParams { }
183
- export interface ColumnIconSlotParams extends ColumnIconRenderParams { }
183
+ export type ColumnDefaultSlotParams = ColumnCellRenderParams
184
+ export type ColumnContentSlotParams = ColumnContentRenderParams
185
+ export type ColumnIconSlotParams = ColumnIconRenderParams
184
186
 
185
- export interface ColumnContentRenderParams extends ColumnCellRenderParams { }
186
- export interface ColumnIconRenderParams extends ColumnCellRenderParams { }
187
+ export type ColumnContentRenderParams = ColumnCellRenderParams
188
+ export type ColumnIconRenderParams = ColumnCellRenderParams