vxe-table 3.3.14-beta.0 → 3.3.16

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 (124) hide show
  1. package/helper/vetur/attributes.json +8 -0
  2. package/helper/vetur/tags.json +2 -0
  3. package/lib/button/index.min.js +1 -1
  4. package/lib/checkbox/index.min.js +1 -1
  5. package/lib/checkbox-group/index.min.js +1 -1
  6. package/lib/colgroup/index.min.js +1 -1
  7. package/lib/column/index.min.js +1 -1
  8. package/lib/edit/index.min.js +1 -1
  9. package/lib/edit/src/mixin.js +1 -1
  10. package/lib/edit/src/mixin.min.js +1 -1
  11. package/lib/export/index.js +7 -7
  12. package/lib/export/index.min.js +1 -1
  13. package/lib/export/src/mixin.js +4 -4
  14. package/lib/export/src/mixin.min.js +1 -1
  15. package/lib/filter/index.min.js +1 -1
  16. package/lib/filter/src/mixin.js +8 -2
  17. package/lib/filter/src/mixin.min.js +1 -1
  18. package/lib/footer/index.min.js +1 -1
  19. package/lib/form/index.min.js +1 -1
  20. package/lib/form/src/form-gather.js +13 -0
  21. package/lib/form/src/form-gather.min.js +1 -1
  22. package/lib/form/src/form-item.js +123 -1
  23. package/lib/form/src/form-item.min.js +1 -1
  24. package/lib/form/src/form.js +73 -103
  25. package/lib/form/src/form.min.js +1 -1
  26. package/lib/form/src/render.js +81 -0
  27. package/lib/form/src/render.min.js +1 -0
  28. package/lib/form/src/util.js +3 -3
  29. package/lib/form/src/util.min.js +1 -1
  30. package/lib/form-gather/index.min.js +1 -1
  31. package/lib/form-item/index.min.js +1 -1
  32. package/lib/grid/index.min.js +1 -1
  33. package/lib/grid/src/grid.js +8 -5
  34. package/lib/grid/src/grid.min.js +1 -1
  35. package/lib/header/index.min.js +1 -1
  36. package/lib/header/src/util.js +1 -1
  37. package/lib/header/src/util.min.js +1 -1
  38. package/lib/header/style/style.css +3 -10
  39. package/lib/header/style/style.min.css +1 -1
  40. package/lib/icon/index.min.js +1 -1
  41. package/lib/index.common.js +2 -2
  42. package/lib/index.common.min.js +1 -1
  43. package/lib/index.css +1 -1
  44. package/lib/index.umd.js +1894 -907
  45. package/lib/index.umd.min.js +1 -1
  46. package/lib/input/index.min.js +1 -1
  47. package/lib/input/src/input.js +1 -1
  48. package/lib/input/src/input.min.js +1 -1
  49. package/lib/keyboard/index.min.js +1 -1
  50. package/lib/keyboard/src/mixin.min.js +1 -1
  51. package/lib/list/index.min.js +1 -1
  52. package/lib/menu/index.min.js +1 -1
  53. package/lib/modal/index.js +3 -3
  54. package/lib/modal/index.min.js +1 -1
  55. package/lib/modal/src/modal.js +2 -2
  56. package/lib/modal/src/modal.min.js +1 -1
  57. package/lib/optgroup/index.min.js +1 -1
  58. package/lib/option/index.min.js +1 -1
  59. package/lib/pager/index.min.js +1 -1
  60. package/lib/pager/src/pager.js +1 -1
  61. package/lib/pulldown/index.min.js +1 -1
  62. package/lib/radio/index.min.js +1 -1
  63. package/lib/radio-button/index.min.js +1 -1
  64. package/lib/radio-group/index.min.js +1 -1
  65. package/lib/select/index.min.js +1 -1
  66. package/lib/select/src/select.js +2 -2
  67. package/lib/select/src/select.min.js +1 -1
  68. package/lib/select/src/util.js +3 -3
  69. package/lib/select/src/util.min.js +1 -1
  70. package/lib/style.css +1 -1
  71. package/lib/style.min.css +1 -1
  72. package/lib/switch/index.min.js +1 -1
  73. package/lib/table/index.min.js +1 -1
  74. package/lib/table/src/body.js +16 -2
  75. package/lib/table/src/body.min.js +1 -1
  76. package/lib/table/src/cell.js +1 -1
  77. package/lib/table/src/cell.min.js +1 -1
  78. package/lib/table/src/methods.js +56 -3
  79. package/lib/table/src/methods.min.js +1 -1
  80. package/lib/table/src/util.js +7 -7
  81. package/lib/table/src/util.min.js +1 -1
  82. package/lib/table/style/style.css +13 -10
  83. package/lib/table/style/style.min.css +1 -1
  84. package/lib/textarea/index.min.js +1 -1
  85. package/lib/textarea/src/textarea.js +11 -3
  86. package/lib/textarea/src/textarea.min.js +1 -1
  87. package/lib/textarea/style/style.css +11 -12
  88. package/lib/textarea/style/style.min.css +1 -1
  89. package/lib/toolbar/index.min.js +1 -1
  90. package/lib/tools/index.js +2 -2
  91. package/lib/tools/index.min.js +1 -1
  92. package/lib/tools/src/dom.js +2 -2
  93. package/lib/tools/src/dom.min.js +1 -1
  94. package/lib/tools/src/event.js +1 -1
  95. package/lib/tools/src/event.min.js +1 -1
  96. package/lib/tools/src/utils.js +3 -3
  97. package/lib/tools/src/utils.min.js +1 -1
  98. package/lib/tooltip/index.min.js +1 -1
  99. package/lib/v-x-e-table/index.js +5 -3
  100. package/lib/v-x-e-table/index.min.js +1 -1
  101. package/lib/v-x-e-table/src/conf.js +2 -0
  102. package/lib/v-x-e-table/src/conf.min.js +1 -1
  103. package/lib/v-x-e-table/src/renderer.js +4 -4
  104. package/lib/v-x-e-table/src/renderer.min.js +1 -1
  105. package/lib/v-x-e-table/src/store.min.js +1 -1
  106. package/lib/validator/index.min.js +1 -1
  107. package/package.json +7 -7
  108. package/packages/filter/src/mixin.js +2 -2
  109. package/packages/form/src/form-gather.js +10 -0
  110. package/packages/form/src/form-item.js +101 -1
  111. package/packages/form/src/form.js +49 -107
  112. package/packages/form/src/render.js +79 -0
  113. package/packages/grid/src/grid.js +4 -3
  114. package/packages/table/src/body.js +12 -4
  115. package/packages/table/src/methods.js +28 -2
  116. package/packages/textarea/src/textarea.js +8 -3
  117. package/packages/v-x-e-table/src/conf.js +2 -0
  118. package/packages/v-x-e-table/src/renderer.js +4 -4
  119. package/styles/button.scss +4 -4
  120. package/styles/header.scss +9 -12
  121. package/styles/modal.scss +4 -4
  122. package/styles/table.scss +13 -7
  123. package/styles/textarea.scss +11 -11
  124. package/styles/variable.scss +198 -198
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.renderer=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_conf=_interopRequireDefault(require("../../v-x-e-table/src/conf")),_tools=require("../../tools");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _defineProperty(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var defaultCompProps={transfer:!0},componentDefaultModelProp="value";function isEmptyValue(e){return null==e||""===e}function getChangeEvent(e){switch(e.name){case"input":case"textarea":case"$input":case"$textarea":return"input"}return"change"}function parseDate(e,t){return e&&t.valueFormat?_xeUtils.default.toStringDate(e,t.valueFormat):e}function getFormatDate(e,t,n){var r=t.dateConfig,r=void 0===r?{}:r;return _xeUtils.default.toDateString(parseDate(e,t),r.labelFormat||n)}function getLabelFormatDate(e,t){return getFormatDate(e,t,_conf.default.i18n("vxe.input.date.labelFormat.".concat(t.type)))}function getDefaultComponentName(e){e=e.name;return"vxe-".concat(e.replace("$",""))}function handleConfirmFilter(e,t,n){e.$panel.changeOption({},t,n)}function getNativeAttrs(e){var t=e.name,e=e.attrs;return e="input"===t?Object.assign({type:"text"},e):e}function getInputImmediateModel(e){var t=e.name,n=e.immediate,e=e.props;if(n)return n;if("$input"!==t)return"input"!==t&&"textarea"!==t&&"$textarea"!==t;e=(e||{}).type;return!(!e||"text"===e||"number"===e||"integer"===e||"float"===e)}function isImmediateCell(e,t){return"cell"===t.$type||getInputImmediateModel(e)}function getCellEditProps(e,t,n,r){t=t.$table.vSize;return _xeUtils.default.assign({immediate:getInputImmediateModel(e)},t?{size:t}:{},defaultCompProps,r,e.props,_defineProperty({},componentDefaultModelProp,n))}function getFilterProps(e,t,n,r){t=t.$table.vSize;return _xeUtils.default.assign(t?{size:t}:{},defaultCompProps,r,e.props,_defineProperty({},componentDefaultModelProp,n))}function getItemProps(e,t,n,r){t=t.$form.vSize;return _xeUtils.default.assign(t?{size:t}:{},defaultCompProps,r,e.props,_defineProperty({},componentDefaultModelProp,n))}function getCellLabelVNs(e,t,n,r){t=t.placeholder;return[e("span",{class:"vxe-cell--label"},t&&isEmptyValue(r)?[e("span",{class:"vxe-cell--placeholder"},_tools.UtilTools.formatText(_tools.UtilTools.getFuncText(t),1))]:_tools.UtilTools.formatText(r,1))]}function getNativeOns(e,o){var e=e.nativeEvents,t={};return _xeUtils.default.objectEach(e,function(r,e){t[e]=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];r.apply(void 0,[o].concat(t))}}),t}function getOns(e,o,t,r){var n=e.name,a=e.events,l="input",i=getChangeEvent(e),u=i===l,d={};return _xeUtils.default.objectEach(a,function(r,e){d[e]=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];r.apply(void 0,[o].concat(t))}}),t&&(d[l]=function(e){t("$input"===n||"$textarea"===n?e.value:e),a&&a[l]&&a[l](o,e),u&&r&&r(e)}),!u&&r&&(d[i]=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];r.apply(void 0,t),a&&a[i]&&a[i].apply(a,[o].concat(t))}),d}function getEditOns(e,t){var n=t.$table,r=t.row,o=t.column,a=e.name,l=o.model,i=isImmediateCell(e,t);return getOns(e,t,function(e){i?_tools.UtilTools.setCellValue(r,o,e):(l.update=!0,l.value=e)},function(e){i||"$input"!==a&&"$textarea"!==a?n.updateStatus(t):n.updateStatus(t,e.value)})}function getFilterOns(e,t,n){return getOns(e,t,function(e){n.data=e},function(){handleConfirmFilter(t,!_xeUtils.default.eqNull(n.data),n)})}function getItemOns(e,t){var n=t.$form,r=t.data,o=t.property;return getOns(e,t,function(e){_xeUtils.default.set(r,o,e)},function(){n.updateStatus(t)})}function getNativeEditOns(t,n){var r=n.$table,o=n.row,a=n.column,l=a.model;return getOns(t,n,function(e){e=e.target.value;isImmediateCell(t,n)?_tools.UtilTools.setCellValue(o,a,e):(l.update=!0,l.value=e)},function(e){e=e.target.value;r.updateStatus(n,e)})}function getNativeFilterOns(e,t,n){return getOns(e,t,function(e){n.data=e.target.value},function(){handleConfirmFilter(t,!_xeUtils.default.eqNull(n.data),n)})}function getNativeItemOns(e,t){var n=t.$form,r=t.data,o=t.property;return getOns(e,t,function(e){e=e.target.value;_xeUtils.default.set(r,o,e)},function(){n.updateStatus(t)})}function nativeEditRender(e,t,n){var r=n.row,o=n.column,a=t.name,l=getNativeAttrs(t),o=isImmediateCell(t,n)?_tools.UtilTools.getCellValue(r,o):o.model.value;return[e(a,{class:"vxe-default-".concat(a),attrs:l,domProps:{value:o},on:getNativeEditOns(t,n)})]}function defaultEditRender(e,t,n){var r=n.row,o=n.column,o=_tools.UtilTools.getCellValue(r,o);return[e(getDefaultComponentName(t),{props:getCellEditProps(t,n,o),on:getEditOns(t,n),nativeOn:getNativeOns(t,n)})]}function defaultButtonEditRender(e,t,n){return[e("vxe-button",{props:getCellEditProps(t,n),on:getOns(t,n),nativeOn:getNativeOns(t,n)})]}function defaultButtonsEditRender(t,e,n){return e.children.map(function(e){return defaultButtonEditRender(t,e,n)[0]})}function renderNativeOptgroups(n,r,o,a){var e=r.optionGroups,t=r.optionGroupProps,t=void 0===t?{}:t,l=t.options||"options",i=t.label||"label";return e.map(function(e,t){return n("optgroup",{key:t,domProps:{label:e[i]}},a(n,e[l],r,o))})}function renderNativeOptions(n,e,t,r){var o=t.optionProps,a=void 0===o?{}:o,l=r.row,o=r.column,i=a.label||"label",u=a.value||"value",d=a.disabled||"disabled",s=isImmediateCell(t,r)?_tools.UtilTools.getCellValue(l,o):o.model.value;return e.map(function(e,t){return n("option",{key:t,attrs:{value:e[u],disabled:e[d]},domProps:{selected:e[u]==s}},e[i])})}function nativeFilterRender(n,r,o){var e=o.column,a=r.name,l=getNativeAttrs(r);return e.filters.map(function(e,t){return n(a,{key:t,class:"vxe-default-".concat(a),attrs:l,domProps:{value:e.data},on:getNativeFilterOns(r,o,e)})})}function defaultFilterRender(r,o,a){return a.column.filters.map(function(e,t){var n=e.data;return r(getDefaultComponentName(o),{key:t,props:getFilterProps(o,o,n),on:getFilterOns(o,a,e)})})}function handleFilterMethod(e){var t=e.option,n=e.row,e=e.column,t=t.data;return _xeUtils.default.get(n,e.property)==t}function nativeSelectEditRender(e,t,n){return[e("select",{class:"vxe-default-select",attrs:getNativeAttrs(t),on:getNativeEditOns(t,n)},t.optionGroups?renderNativeOptgroups(e,t,n,renderNativeOptions):renderNativeOptions(e,t.options,t,n))]}function defaultSelectEditRender(e,t,n){var r=n.row,o=n.column,a=t.options,l=t.optionProps,i=t.optionGroups,u=t.optionGroupProps,o=_tools.UtilTools.getCellValue(r,o);return[e(getDefaultComponentName(t),{props:getCellEditProps(t,n,o,{options:a,optionProps:l,optionGroups:i,optionGroupProps:u}),on:getEditOns(t,n)})]}function getSelectCellValue(e,t){var r,n=t.row,o=t.column,a=e.props,t=void 0===a?{}:a,l=e.options,i=e.optionGroups,a=e.optionProps,a=void 0===a?{}:a,e=e.optionGroupProps,u=void 0===e?{}:e,o=_xeUtils.default.get(n,o.property),d=a.label||"label",s=a.value||"value";return isEmptyValue(o)?null:_xeUtils.default.map(t.multiple?o:[o],i?function(t){for(var e=u.options||"options",n=0;n<i.length&&!(r=_xeUtils.default.find(i[n][e],function(e){return e[s]==t}));n++);return r?r[d]:t}:function(t){return(r=_xeUtils.default.find(l,function(e){return e[s]==t}))?r[d]:t}).join(", ")}function nativeItemRender(e,t,n){var r=n.data,o=n.property,a=t.name,l=getNativeAttrs(t),o=_xeUtils.default.get(r,o);return[e(a,{class:"vxe-default-".concat(a),attrs:l,domProps:!l||"input"!==a||"submit"!==l.type&&"reset"!==l.type?{value:o}:null,on:getNativeItemOns(t,n)})]}function defaultItemRender(e,t,n){var r=n.data,o=n.property,o=_xeUtils.default.get(r,o);return[e(getDefaultComponentName(t),{props:getItemProps(t,n,o),on:getItemOns(t,n),nativeOn:getNativeOns(t,n)})]}function defaultButtonItemRender(e,t,n){return[e("vxe-button",{props:getItemProps(t,n),on:getOns(t,n),nativeOn:getNativeOns(t,n)})]}function defaultButtonsItemRender(t,e,n){return e.children.map(function(e){return defaultButtonItemRender(t,e,n)[0]})}function renderNativeFormOptions(n,e,t,r){var o=r.data,r=r.property,t=t.optionProps,t=void 0===t?{}:t,a=t.label||"label",l=t.value||"value",i=t.disabled||"disabled",u=_xeUtils.default.get(o,r);return e.map(function(e,t){return n("option",{key:t,attrs:{value:e[l],disabled:e[i]},domProps:{selected:e[l]==u}},e[a])})}function handleExportSelectMethod(e){var t=e.row,n=e.column;return e.options.original?_tools.UtilTools.getCellValue(t,n):getSelectCellValue(n.editRender||n.cellRender,e)}function defaultFormItemRadioAndCheckboxRender(n,e,t){var r=e.options,o=e.optionProps,a=void 0===o?{}:o,l=t.data,o=t.property,i=a.label||"label",u=a.value||"value",d=a.disabled||"disabled",o=_xeUtils.default.get(l,o),s=getDefaultComponentName(e);return r?[n("".concat(s,"-group"),{props:getItemProps(e,t,o),on:getItemOns(e,t),nativeOn:getNativeOns(e,t)},r.map(function(e,t){return n(s,{key:t,props:{label:e[u],content:e[i],disabled:e[d]}})}))]:[n(s,{props:getItemProps(e,t,o),on:getItemOns(e,t),nativeOn:getNativeOns(e,t)})]}var renderMap={input:{autofocus:"input",renderEdit:nativeEditRender,renderDefault:nativeEditRender,renderFilter:nativeFilterRender,filterMethod:handleFilterMethod,renderItemContent:nativeItemRender},textarea:{autofocus:"textarea",renderEdit:nativeEditRender,renderItemContent:nativeItemRender},select:{renderEdit:nativeSelectEditRender,renderDefault:nativeSelectEditRender,renderCell:function(e,t,n){return getCellLabelVNs(e,t,n,getSelectCellValue(t,n))},renderFilter:function(n,r,o){return o.column.filters.map(function(e,t){return n("select",{key:t,class:"vxe-default-select",attrs:getNativeAttrs(r),on:getNativeFilterOns(r,o,e)},r.optionGroups?renderNativeOptgroups(n,r,o,renderNativeOptions):renderNativeOptions(n,r.options,r,o))})},filterMethod:handleFilterMethod,renderItemContent:function(e,t,n){return[e("select",{class:"vxe-default-select",attrs:getNativeAttrs(t),on:getNativeItemOns(t,n)},t.optionGroups?renderNativeOptgroups(e,t,n,renderNativeFormOptions):renderNativeFormOptions(e,t.options,t,n))]},cellExportMethod:handleExportSelectMethod},$input:{autofocus:".vxe-input--inner",renderEdit:defaultEditRender,renderCell:function(e,t,n){var r=t.props,o=void 0===r?{}:r,a=n.row,r=n.column,l=o.digits||_conf.default.input.digits,i=_xeUtils.default.get(a,r.property);if(i)switch(o.type){case"date":case"week":case"month":case"year":i=getLabelFormatDate(i,o);break;case"float":i=_xeUtils.default.toFixed(_xeUtils.default.floor(i,l),l)}return getCellLabelVNs(e,t,n,i)},renderDefault:defaultEditRender,renderFilter:defaultFilterRender,filterMethod:handleFilterMethod,renderItemContent:defaultItemRender},$textarea:{autofocus:".vxe-textarea--inner",renderItemContent:defaultItemRender},$button:{renderDefault:defaultButtonEditRender,renderItemContent:defaultButtonItemRender},$buttons:{renderDefault:defaultButtonsEditRender,renderItemContent:defaultButtonsItemRender},$select:{autofocus:".vxe-input--inner",renderEdit:defaultSelectEditRender,renderDefault:defaultSelectEditRender,renderCell:function(e,t,n){return getCellLabelVNs(e,t,n,getSelectCellValue(t,n))},renderFilter:function(r,o,a){var e=a.column,l=o.options,i=o.optionProps,u=o.optionGroups,d=o.optionGroupProps,s=getNativeOns(o,a);return e.filters.map(function(e,t){var n=e.data;return r(getDefaultComponentName(o),{key:t,props:getFilterProps(o,a,n,{options:l,optionProps:i,optionGroups:u,optionGroupProps:d}),on:getFilterOns(o,a,e),nativeOn:s})})},filterMethod:handleFilterMethod,renderItemContent:function(e,t,n){var r=n.data,o=n.property,a=t.options,l=t.optionProps,i=t.optionGroups,u=t.optionGroupProps,o=_xeUtils.default.get(r,o);return[e(getDefaultComponentName(t),{props:getItemProps(t,n,o,{options:a,optionProps:l,optionGroups:i,optionGroupProps:u}),on:getItemOns(t,n),nativeOn:getNativeOns(t,n)})]},cellExportMethod:handleExportSelectMethod},$radio:{autofocus:".vxe-radio--input",renderItemContent:defaultFormItemRadioAndCheckboxRender},$checkbox:{autofocus:".vxe-checkbox--input",renderItemContent:defaultFormItemRadioAndCheckboxRender},$switch:{autofocus:".vxe-switch--button",renderEdit:defaultEditRender,renderDefault:defaultEditRender,renderItemContent:defaultItemRender}},renderer={mixin:function(e){return _xeUtils.default.each(e,function(e,t){return renderer.add(t,e)}),renderer},get:function(e){return renderMap[e]||null},add:function(n,e){var r;return n&&e&&((r=renderMap[n])?("development"===process.env.NODE_ENV&&_xeUtils.default.each(e,function(e,t){_xeUtils.default.eqNull(r[t])||r[t]===e||_tools.UtilTools.warn("vxe.error.coverProp",["Renderer.".concat(n),t])}),Object.assign(r,e)):renderMap[n]=e),renderer},delete:function(e){return delete renderMap[e],renderer}};exports.renderer=renderer;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.renderer=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_conf=_interopRequireDefault(require("../../v-x-e-table/src/conf")),_tools=require("../../tools");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _defineProperty(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var defaultCompProps={transfer:!0},componentDefaultModelProp="value";function isEmptyValue(e){return null==e||""===e}function getChangeEvent(e){switch(e.name){case"input":case"textarea":case"$input":case"$textarea":return"input"}return"change"}function parseDate(e,t){return e&&t.valueFormat?_xeUtils.default.toStringDate(e,t.valueFormat):e}function getFormatDate(e,t,n){var r=t.dateConfig,r=void 0===r?{}:r;return _xeUtils.default.toDateString(parseDate(e,t),r.labelFormat||n)}function getLabelFormatDate(e,t){return getFormatDate(e,t,_conf.default.i18n("vxe.input.date.labelFormat.".concat(t.type)))}function getDefaultComponentName(e){e=e.name;return"vxe-".concat(e.replace("$",""))}function handleConfirmFilter(e,t,n){e.$panel.changeOption({},t,n)}function getNativeAttrs(e){var t=e.name,e=e.attrs;return e="input"===t?Object.assign({type:"text"},e):e}function getInputImmediateModel(e){var t=e.name,n=e.immediate,e=e.props;if(n)return n;if("$input"!==t)return"input"!==t&&"textarea"!==t&&"$textarea"!==t;e=(e||{}).type;return!(!e||"text"===e||"number"===e||"integer"===e||"float"===e)}function isImmediateCell(e,t){return"cell"===t.$type||getInputImmediateModel(e)}function getCellEditProps(e,t,n,r){t=t.$table.vSize;return _xeUtils.default.assign({immediate:getInputImmediateModel(e)},t?{size:t}:{},defaultCompProps,r,e.props,_defineProperty({},componentDefaultModelProp,n))}function getFilterProps(e,t,n,r){t=t.$table.vSize;return _xeUtils.default.assign(t?{size:t}:{},defaultCompProps,r,e.props,_defineProperty({},componentDefaultModelProp,n))}function getItemProps(e,t,n,r){t=t.$form.vSize;return _xeUtils.default.assign(t?{size:t}:{},defaultCompProps,r,e.props,_defineProperty({},componentDefaultModelProp,n))}function getCellLabelVNs(e,t,n,r){t=t.placeholder;return[e("span",{class:"vxe-cell--label"},t&&isEmptyValue(r)?[e("span",{class:"vxe-cell--placeholder"},_tools.UtilTools.formatText(_tools.UtilTools.getFuncText(t),1))]:_tools.UtilTools.formatText(r,1))]}function getNativeOns(e,o){var e=e.nativeEvents,t={};return _xeUtils.default.objectEach(e,function(r,e){t[e]=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];r.apply(void 0,[o].concat(t))}}),t}function getOns(e,o,t,r){var n=e.name,a=e.events,l="input",i=getChangeEvent(e),u=i===l,d={};return _xeUtils.default.objectEach(a,function(r,e){d[e]=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];r.apply(void 0,[o].concat(t))}}),t&&(d[l]=function(e){t("$input"===n||"$textarea"===n?e.value:e),a&&a[l]&&a[l](o,e),u&&r&&r(e)}),!u&&r&&(d[i]=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];r.apply(void 0,t),a&&a[i]&&a[i].apply(a,[o].concat(t))}),d}function getEditOns(e,t){var n=t.$table,r=t.row,o=t.column,a=e.name,l=o.model,i=isImmediateCell(e,t);return getOns(e,t,function(e){i?_tools.UtilTools.setCellValue(r,o,e):(l.update=!0,l.value=e)},function(e){i||"$input"!==a&&"$textarea"!==a?n.updateStatus(t):n.updateStatus(t,e.value)})}function getFilterOns(e,t,n){return getOns(e,t,function(e){n.data=e},function(){handleConfirmFilter(t,!_xeUtils.default.eqNull(n.data),n)})}function getItemOns(e,t){var n=t.$form,r=t.data,o=t.property;return getOns(e,t,function(e){_xeUtils.default.set(r,o,e)},function(){n.updateStatus(t)})}function getNativeEditOns(t,n){var r=n.$table,o=n.row,a=n.column,l=a.model;return getOns(t,n,function(e){e=e.target.value;isImmediateCell(t,n)?_tools.UtilTools.setCellValue(o,a,e):(l.update=!0,l.value=e)},function(e){e=e.target.value;r.updateStatus(n,e)})}function getNativeFilterOns(e,t,n){return getOns(e,t,function(e){n.data=e.target.value},function(){handleConfirmFilter(t,!_xeUtils.default.eqNull(n.data),n)})}function getNativeItemOns(e,t){var n=t.$form,r=t.data,o=t.property;return getOns(e,t,function(e){e=e.target.value;_xeUtils.default.set(r,o,e)},function(){n.updateStatus(t)})}function nativeEditRender(e,t,n){var r=n.row,o=n.column,a=t.name,l=getNativeAttrs(t),o=isImmediateCell(t,n)?_tools.UtilTools.getCellValue(r,o):o.model.value;return[e(a,{class:"vxe-default-".concat(a),attrs:l,domProps:{value:o},on:getNativeEditOns(t,n)})]}function defaultEditRender(e,t,n){var r=n.row,o=n.column,o=_tools.UtilTools.getCellValue(r,o);return[e(getDefaultComponentName(t),{props:getCellEditProps(t,n,o),on:getEditOns(t,n),nativeOn:getNativeOns(t,n)})]}function defaultButtonEditRender(e,t,n){return[e("vxe-button",{props:getCellEditProps(t,n),on:getOns(t,n),nativeOn:getNativeOns(t,n)})]}function defaultButtonsEditRender(t,e,n){return e.children.map(function(e){return defaultButtonEditRender(t,e,n)[0]})}function renderNativeOptgroups(n,r,o,a){var e=r.optionGroups,t=r.optionGroupProps,t=void 0===t?{}:t,l=t.options||"options",i=t.label||"label";return e.map(function(e,t){return n("optgroup",{key:t,domProps:{label:e[i]}},a(n,e[l],r,o))})}function renderNativeOptions(n,e,t,r){var o=t.optionProps,a=void 0===o?{}:o,l=r.row,o=r.column,i=a.label||"label",u=a.value||"value",d=a.disabled||"disabled",s=isImmediateCell(t,r)?_tools.UtilTools.getCellValue(l,o):o.model.value;return e.map(function(e,t){return n("option",{key:t,attrs:{value:e[u],disabled:e[d]},domProps:{selected:e[u]==s}},e[i])})}function nativeFilterRender(n,r,o){var e=o.column,a=r.name,l=getNativeAttrs(r);return e.filters.map(function(e,t){return n(a,{key:t,class:"vxe-default-".concat(a),attrs:l,domProps:{value:e.data},on:getNativeFilterOns(r,o,e)})})}function defaultFilterRender(r,o,a){return a.column.filters.map(function(e,t){var n=e.data;return r(getDefaultComponentName(o),{key:t,props:getFilterProps(o,o,n),on:getFilterOns(o,a,e)})})}function handleFilterMethod(e){var t=e.option,n=e.row,e=e.column,t=t.data;return _xeUtils.default.get(n,e.property)==t}function nativeSelectEditRender(e,t,n){return[e("select",{class:"vxe-default-select",attrs:getNativeAttrs(t),on:getNativeEditOns(t,n)},t.optionGroups?renderNativeOptgroups(e,t,n,renderNativeOptions):renderNativeOptions(e,t.options,t,n))]}function defaultSelectEditRender(e,t,n){var r=n.row,o=n.column,a=t.options,l=t.optionProps,i=t.optionGroups,u=t.optionGroupProps,o=_tools.UtilTools.getCellValue(r,o);return[e(getDefaultComponentName(t),{props:getCellEditProps(t,n,o,{options:a,optionProps:l,optionGroups:i,optionGroupProps:u}),on:getEditOns(t,n)})]}function getSelectCellValue(e,t){var r,n=t.row,o=t.column,a=e.props,t=void 0===a?{}:a,l=e.options,i=e.optionGroups,a=e.optionProps,a=void 0===a?{}:a,e=e.optionGroupProps,u=void 0===e?{}:e,o=_xeUtils.default.get(n,o.property),d=a.label||"label",s=a.value||"value";return isEmptyValue(o)?null:_xeUtils.default.map(t.multiple?o:[o],i?function(t){for(var e=u.options||"options",n=0;n<i.length&&!(r=_xeUtils.default.find(i[n][e],function(e){return e[s]==t}));n++);return r?r[d]:t}:function(t){return(r=_xeUtils.default.find(l,function(e){return e[s]==t}))?r[d]:t}).join(", ")}function nativeItemRender(e,t,n){var r=n.data,o=n.property,a=t.name,l=getNativeAttrs(t),o=_xeUtils.default.get(r,o);return[e(a,{class:"vxe-default-".concat(a),attrs:l,domProps:!l||"input"!==a||"submit"!==l.type&&"reset"!==l.type?{value:o}:null,on:getNativeItemOns(t,n)})]}function defaultItemRender(e,t,n){var r=n.data,o=n.property,o=_xeUtils.default.get(r,o);return[e(getDefaultComponentName(t),{props:getItemProps(t,n,o),on:getItemOns(t,n),nativeOn:getNativeOns(t,n)})]}function defaultButtonItemRender(e,t,n){return[e("vxe-button",{props:getItemProps(t,n),on:getOns(t,n),nativeOn:getNativeOns(t,n)})]}function defaultButtonsItemRender(t,e,n){return e.children.map(function(e){return defaultButtonItemRender(t,e,n)[0]})}function renderNativeFormOptions(n,e,t,r){var o=r.data,r=r.property,t=t.optionProps,t=void 0===t?{}:t,a=t.label||"label",l=t.value||"value",i=t.disabled||"disabled",u=_xeUtils.default.get(o,r);return e.map(function(e,t){return n("option",{key:t,attrs:{value:e[l],disabled:e[i]},domProps:{selected:e[l]==u}},e[a])})}function handleExportSelectMethod(e){var t=e.row,n=e.column;return e.options.original?_tools.UtilTools.getCellValue(t,n):getSelectCellValue(n.editRender||n.cellRender,e)}function defaultFormItemRadioAndCheckboxRender(n,e,t){var r=e.options,o=e.optionProps,a=void 0===o?{}:o,l=t.data,o=t.property,i=a.label||"label",u=a.value||"value",d=a.disabled||"disabled",o=_xeUtils.default.get(l,o),s=getDefaultComponentName(e);return r?[n("".concat(s,"-group"),{props:getItemProps(e,t,o),on:getItemOns(e,t),nativeOn:getNativeOns(e,t)},r.map(function(e,t){return n(s,{key:t,props:{label:e[u],content:e[i],disabled:e[d]}})}))]:[n(s,{props:getItemProps(e,t,o),on:getItemOns(e,t),nativeOn:getNativeOns(e,t)})]}var renderMap={input:{autofocus:"input",renderEdit:nativeEditRender,renderDefault:nativeEditRender,renderFilter:nativeFilterRender,defaultFilterMethod:handleFilterMethod,renderItemContent:nativeItemRender},textarea:{autofocus:"textarea",renderEdit:nativeEditRender,renderItemContent:nativeItemRender},select:{renderEdit:nativeSelectEditRender,renderDefault:nativeSelectEditRender,renderCell:function(e,t,n){return getCellLabelVNs(e,t,n,getSelectCellValue(t,n))},renderFilter:function(n,r,o){return o.column.filters.map(function(e,t){return n("select",{key:t,class:"vxe-default-select",attrs:getNativeAttrs(r),on:getNativeFilterOns(r,o,e)},r.optionGroups?renderNativeOptgroups(n,r,o,renderNativeOptions):renderNativeOptions(n,r.options,r,o))})},defaultFilterMethod:handleFilterMethod,renderItemContent:function(e,t,n){return[e("select",{class:"vxe-default-select",attrs:getNativeAttrs(t),on:getNativeItemOns(t,n)},t.optionGroups?renderNativeOptgroups(e,t,n,renderNativeFormOptions):renderNativeFormOptions(e,t.options,t,n))]},cellExportMethod:handleExportSelectMethod},$input:{autofocus:".vxe-input--inner",renderEdit:defaultEditRender,renderCell:function(e,t,n){var r=t.props,o=void 0===r?{}:r,a=n.row,r=n.column,l=o.digits||_conf.default.input.digits,i=_xeUtils.default.get(a,r.property);if(i)switch(o.type){case"date":case"week":case"month":case"year":i=getLabelFormatDate(i,o);break;case"float":i=_xeUtils.default.toFixed(_xeUtils.default.floor(i,l),l)}return getCellLabelVNs(e,t,n,i)},renderDefault:defaultEditRender,renderFilter:defaultFilterRender,defaultFilterMethod:handleFilterMethod,renderItemContent:defaultItemRender},$textarea:{autofocus:".vxe-textarea--inner",renderItemContent:defaultItemRender},$button:{renderDefault:defaultButtonEditRender,renderItemContent:defaultButtonItemRender},$buttons:{renderDefault:defaultButtonsEditRender,renderItemContent:defaultButtonsItemRender},$select:{autofocus:".vxe-input--inner",renderEdit:defaultSelectEditRender,renderDefault:defaultSelectEditRender,renderCell:function(e,t,n){return getCellLabelVNs(e,t,n,getSelectCellValue(t,n))},renderFilter:function(r,o,a){var e=a.column,l=o.options,i=o.optionProps,u=o.optionGroups,d=o.optionGroupProps,s=getNativeOns(o,a);return e.filters.map(function(e,t){var n=e.data;return r(getDefaultComponentName(o),{key:t,props:getFilterProps(o,a,n,{options:l,optionProps:i,optionGroups:u,optionGroupProps:d}),on:getFilterOns(o,a,e),nativeOn:s})})},defaultFilterMethod:handleFilterMethod,renderItemContent:function(e,t,n){var r=n.data,o=n.property,a=t.options,l=t.optionProps,i=t.optionGroups,u=t.optionGroupProps,o=_xeUtils.default.get(r,o);return[e(getDefaultComponentName(t),{props:getItemProps(t,n,o,{options:a,optionProps:l,optionGroups:i,optionGroupProps:u}),on:getItemOns(t,n),nativeOn:getNativeOns(t,n)})]},cellExportMethod:handleExportSelectMethod},$radio:{autofocus:".vxe-radio--input",renderItemContent:defaultFormItemRadioAndCheckboxRender},$checkbox:{autofocus:".vxe-checkbox--input",renderItemContent:defaultFormItemRadioAndCheckboxRender},$switch:{autofocus:".vxe-switch--button",renderEdit:defaultEditRender,renderDefault:defaultEditRender,renderItemContent:defaultItemRender}},renderer={mixin:function(e){return _xeUtils.default.each(e,function(e,t){return renderer.add(t,e)}),renderer},get:function(e){return renderMap[e]||null},add:function(n,e){var r;return n&&e&&((r=renderMap[n])?("development"===process.env.NODE_ENV&&_xeUtils.default.each(e,function(e,t){_xeUtils.default.eqNull(r[t])||r[t]===e||_tools.UtilTools.warn("vxe.error.coverProp",["Renderer.".concat(n),t])}),Object.assign(r,e)):renderMap[n]=e),renderer},delete:function(e){return delete renderMap[e],renderer}};exports.renderer=renderer;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _tools=require("../../tools"),_xeUtils=_interopRequireDefault(require("xe-utils"));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),e}var Store=function(){function r(){_classCallCheck(this,r),this.store={}}return _createClass(r,[{key:"mixin",value:function(e){return Object.assign(this.store,e),r}},{key:"get",value:function(e){return this.store[e]}},{key:"add",value:function(e,t){return"development"===process.env.NODE_ENV&&(_xeUtils.default.eqNull(this.store[e])||this.store[e]===t||_tools.UtilTools.warn("vxe.error.coverProp",[this._name,e])),this.store[e]=t,r}},{key:"delete",value:function(e){return delete this.store[e],r}}]),r}(),_default=Store;exports.default=Store;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _tools=require("../../tools"),_xeUtils=_interopRequireDefault(require("xe-utils"));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),e}var Store=function(){function r(){_classCallCheck(this,r),this.store={}}return _createClass(r,[{key:"mixin",value:function(e){return Object.assign(this.store,e),r}},{key:"get",value:function(e){return this.store[e]}},{key:"add",value:function(e,t){return"development"===process.env.NODE_ENV&&(_xeUtils.default.eqNull(this.store[e])||this.store[e]===t||_tools.UtilTools.warn("vxe.error.coverProp",[this._name,e])),this.store[e]=t,r}},{key:"delete",value:function(e){return delete this.store[e],r}}]),r}(),_default=Store;exports.default=_default;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Validator=void 0;var _table=_interopRequireDefault(require("../table")),_mixin=_interopRequireDefault(require("./src/mixin")),_vXETable=_interopRequireDefault(require("../v-x-e-table"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var Validator={install:function(){_vXETable.default.reg("valid"),_table.default.mixins.push(_mixin.default)}},_default=exports.Validator=Validator;exports.default=Validator;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Validator=void 0;var _table=_interopRequireDefault(require("../table")),_mixin=_interopRequireDefault(require("./src/mixin")),_vXETable=_interopRequireDefault(require("../v-x-e-table"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var Validator={install:function(){_vXETable.default.reg("valid"),_table.default.mixins.push(_mixin.default)}},_default=exports.Validator=Validator;exports.default=_default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-table",
3
- "version": "3.3.14-beta.0",
3
+ "version": "3.3.16",
4
4
  "description": "一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、虚拟列表、弹窗、自定义模板、渲染器、贼灵活的配置项、扩展接口等...",
5
5
  "scripts": {
6
6
  "serve": "vue-cli-service serve",
@@ -76,19 +76,19 @@
76
76
  "vue-router": "^3.2.0",
77
77
  "vue-template-compiler": "^2.6.14",
78
78
  "vuex": "^3.4.0",
79
- "vxe-table-plugin-antd": "^1.11.2",
79
+ "vxe-table-plugin-antd": "^1.11.3",
80
80
  "vxe-table-plugin-charts": "^1.7.1",
81
- "vxe-table-plugin-element": "^1.11.2",
81
+ "vxe-table-plugin-element": "^1.11.3",
82
82
  "vxe-table-plugin-export-pdf": "^1.9.2",
83
83
  "vxe-table-plugin-export-xlsx": "^2.2.1",
84
- "vxe-table-plugin-iview": "^1.11.3",
85
- "vxe-table-plugin-menus": "^2.0.1",
84
+ "vxe-table-plugin-iview": "^1.11.4",
85
+ "vxe-table-plugin-menus": "^2.0.2",
86
86
  "vxe-table-plugin-renderer": "^1.3.5",
87
87
  "vxe-table-plugin-shortcut-key": "^1.5.1",
88
- "vxe-table-plugin-virtual-tree": "0.6.10",
88
+ "vxe-table-plugin-virtual-tree": "0.6.11",
89
89
  "xe-ajax": "^4.0.5",
90
90
  "xe-clipboard": "^1.10.1",
91
- "xe-utils": "^3.3.4",
91
+ "xe-utils": "^3.4.0",
92
92
  "xlsx": "^0.17.0"
93
93
  },
94
94
  "peerDependencies": {
@@ -85,7 +85,7 @@ export default {
85
85
  // 判断面板不能大于表格高度
86
86
  let maxHeight = null
87
87
  if (filterHeight >= bodyElem.clientHeight) {
88
- maxHeight = bodyElem.clientHeight - (filterFootElem ? filterFootElem.offsetHeight : 0) - (filterHeadElem ? filterHeadElem.offsetHeight : 0)
88
+ maxHeight = Math.max(40, bodyElem.clientHeight - (filterFootElem ? filterFootElem.offsetHeight : 0) - (filterHeadElem ? filterHeadElem.offsetHeight : 0))
89
89
  }
90
90
  if (column.fixed === 'left') {
91
91
  left = targetElem.offsetLeft + targetElem.offsetParent.offsetLeft - centerWidth
@@ -111,6 +111,7 @@ export default {
111
111
  filterStore.maxHeight = maxHeight
112
112
  })
113
113
  }
114
+ this.emitEvent('filter-visible', { column, property: column.property, filterList: this.getCheckedFilters(), visible: filterStore.visible }, evnt)
114
115
  },
115
116
  _getCheckedFilters () {
116
117
  const { tableFullColumn } = this
@@ -150,7 +151,6 @@ export default {
150
151
  datas.push(item.data)
151
152
  }
152
153
  })
153
- filterStore.visible = false
154
154
  const filterList = this.getCheckedFilters()
155
155
  // 如果是服务端筛选,则跳过本地筛选处理
156
156
  if (!filterOpts.remote) {
@@ -1,4 +1,5 @@
1
1
  import VxeFormItem from './form-item'
2
+ import { UtilTools } from '../../tools'
2
3
 
3
4
  export default {
4
5
  name: 'VxeFormGather',
@@ -8,6 +9,15 @@ export default {
8
9
  xeformgather: this
9
10
  }
10
11
  },
12
+ created () {
13
+ if (process.env.VUE_APP_VXE_TABLE_ENV === 'development') {
14
+ this.$nextTick(() => {
15
+ if (this.$xeform && this.$xeform.customLayout) {
16
+ UtilTools.error('vxe.error.errConflicts', ['custom-layout', '<form-gather ...>'])
17
+ }
18
+ })
19
+ }
20
+ },
11
21
  render (h) {
12
22
  return h('div', this.$slots.default)
13
23
  }
@@ -1,4 +1,9 @@
1
+ import XEUtils from 'xe-utils'
2
+ import GlobalConfig from '../../v-x-e-table/src/conf'
3
+ import VXETable from '../../v-x-e-table'
4
+ import { UtilTools, isEnableConf } from '../../tools'
1
5
  import { createItem, destroyItem, assemItem } from './util'
6
+ import { renderTitle } from './render'
2
7
 
3
8
  const props = {
4
9
  title: String,
@@ -27,6 +32,100 @@ Object.keys(props).forEach(name => {
27
32
  }
28
33
  })
29
34
 
35
+ const renderItem = (h, _vm, item, slots) => {
36
+ const { rules, data, collapseAll, validOpts, titleOverflow: allTitleOverflow } = _vm
37
+ const { title, folding, visible, visibleMethod, field, collapseNode, itemRender, showError, errRule, className, titleOverflow } = item
38
+ const compConf = isEnableConf(itemRender) ? VXETable.renderer.get(itemRender.name) : null
39
+ const span = item.span || _vm.span
40
+ const align = item.align || _vm.align
41
+ const titleAlign = item.titleAlign || _vm.titleAlign
42
+ const titleWidth = item.titleWidth || _vm.titleWidth
43
+ let itemVisibleMethod = visibleMethod
44
+ const itemOverflow = (XEUtils.isUndefined(titleOverflow) || XEUtils.isNull(titleOverflow)) ? allTitleOverflow : titleOverflow
45
+ const showEllipsis = itemOverflow === 'ellipsis'
46
+ const showTitle = itemOverflow === 'title'
47
+ const showTooltip = itemOverflow === true || itemOverflow === 'tooltip'
48
+ const hasEllipsis = showTitle || showTooltip || showEllipsis
49
+ const params = { data, property: field, item, $form: _vm }
50
+ let isRequired
51
+ if (!itemVisibleMethod && compConf && compConf.itemVisibleMethod) {
52
+ itemVisibleMethod = compConf.itemVisibleMethod
53
+ }
54
+ if (rules) {
55
+ const itemRules = rules[field]
56
+ if (itemRules) {
57
+ isRequired = itemRules.some(rule => rule.required)
58
+ }
59
+ }
60
+ let contentVNs = []
61
+ if (slots && slots.default) {
62
+ contentVNs = _vm.callSlot(slots.default, params, h)
63
+ } else if (compConf && compConf.renderItemContent) {
64
+ contentVNs = compConf.renderItemContent.call(_vm, h, itemRender, params)
65
+ } else if (compConf && compConf.renderItem) {
66
+ contentVNs = compConf.renderItem.call(_vm, h, itemRender, params)
67
+ } else if (field) {
68
+ contentVNs = [`${XEUtils.get(data, field)}`]
69
+ }
70
+ const ons = showTooltip ? {
71
+ mouseenter (evnt) {
72
+ _vm.triggerHeaderHelpEvent(evnt, params)
73
+ },
74
+ mouseleave: _vm.handleTargetLeaveEvent
75
+ } : {}
76
+ return h('div', {
77
+ class: ['vxe-form--item', item.id, span ? `vxe-col--${span} is--span` : null, className ? (XEUtils.isFunction(className) ? className(params) : className) : '', {
78
+ 'is--title': title,
79
+ 'is--required': isRequired,
80
+ 'is--hidden': visible === false || (folding && collapseAll),
81
+ 'is--active': !itemVisibleMethod || itemVisibleMethod(params),
82
+ 'is--error': showError
83
+ }]
84
+ }, [
85
+ h('div', {
86
+ class: 'vxe-form--item-inner'
87
+ }, [
88
+ title || (slots && slots.title) ? h('div', {
89
+ class: ['vxe-form--item-title', titleAlign ? `align--${titleAlign}` : null, {
90
+ 'is--ellipsis': hasEllipsis
91
+ }],
92
+ style: titleWidth ? {
93
+ width: isNaN(titleWidth) ? titleWidth : `${titleWidth}px`
94
+ } : null,
95
+ attrs: {
96
+ title: showTitle ? UtilTools.getFuncText(title) : null
97
+ },
98
+ on: ons
99
+ }, renderTitle(h, _vm, item)) : null,
100
+ h('div', {
101
+ class: ['vxe-form--item-content', align ? `align--${align}` : null]
102
+ }, contentVNs.concat(
103
+ [
104
+ collapseNode ? h('div', {
105
+ class: 'vxe-form--item-trigger-node',
106
+ on: {
107
+ click: _vm.toggleCollapseEvent
108
+ }
109
+ }, [
110
+ h('span', {
111
+ class: 'vxe-form--item-trigger-text'
112
+ }, collapseAll ? GlobalConfig.i18n('vxe.form.unfolding') : GlobalConfig.i18n('vxe.form.folding')),
113
+ h('i', {
114
+ class: ['vxe-form--item-trigger-icon', collapseAll ? GlobalConfig.icon.FORM_FOLDING : GlobalConfig.icon.FORM_UNFOLDING]
115
+ })
116
+ ]) : null,
117
+ errRule && validOpts.showMessage ? h('div', {
118
+ class: 'vxe-form--item-valid',
119
+ style: errRule.maxWidth ? {
120
+ width: `${errRule.maxWidth}px`
121
+ } : null
122
+ }, errRule.message) : null
123
+ ])
124
+ )
125
+ ])
126
+ ])
127
+ }
128
+
30
129
  export default {
31
130
  name: 'VxeFormItem',
32
131
  props,
@@ -49,6 +148,7 @@ export default {
49
148
  destroyItem(this)
50
149
  },
51
150
  render (h) {
52
- return h('div')
151
+ const { $xeform } = this
152
+ return $xeform && $xeform.customLayout ? renderItem(h, $xeform, this.itemConfig, this.$scopedSlots) : h('div')
53
153
  }
54
154
  }
@@ -2,8 +2,9 @@ import XEUtils from 'xe-utils'
2
2
  import GlobalConfig from '../../v-x-e-table/src/conf'
3
3
  import vSize from '../../mixins/size'
4
4
  import VXETable from '../../v-x-e-table'
5
- import { UtilTools, isEnableConf } from '../../tools'
5
+ import { UtilTools, DomTools, isEnableConf } from '../../tools'
6
6
  import { createItem } from './util'
7
+ import { renderTitle } from './render'
7
8
  import { eqEmptyValue } from '../../tools/src/utils'
8
9
  import { browse } from '../../tools/src/dom'
9
10
 
@@ -57,95 +58,6 @@ function getResetValue (value, resetValue) {
57
58
  return resetValue
58
59
  }
59
60
 
60
- function callSlot (_vm, slotFunc, params, h) {
61
- if (slotFunc) {
62
- const { $scopedSlots } = _vm
63
- if (XEUtils.isString(slotFunc)) {
64
- slotFunc = $scopedSlots[slotFunc] || null
65
- }
66
- if (XEUtils.isFunction(slotFunc)) {
67
- return slotFunc.call(_vm, params, h)
68
- }
69
- }
70
- return []
71
- }
72
-
73
- function renderPrefixIcon (h, titlePrefix) {
74
- return h('span', {
75
- class: 'vxe-form--item-title-prefix'
76
- }, [
77
- h('i', {
78
- class: titlePrefix.icon || GlobalConfig.icon.FORM_PREFIX
79
- })
80
- ])
81
- }
82
-
83
- function renderSuffixIcon (h, titleSuffix) {
84
- return h('span', {
85
- class: 'vxe-form--item-title-suffix'
86
- }, [
87
- h('i', {
88
- class: titleSuffix.icon || GlobalConfig.icon.FORM_SUFFIX
89
- })
90
- ])
91
- }
92
-
93
- function renderTitle (h, _vm, item) {
94
- const { data } = _vm
95
- const { slots, field, itemRender, titlePrefix, titleSuffix } = item
96
- const compConf = isEnableConf(itemRender) ? VXETable.renderer.get(itemRender.name) : null
97
- const params = { data, property: field, item, $form: _vm }
98
- const contVNs = []
99
- const titVNs = []
100
- if (titlePrefix) {
101
- titVNs.push(
102
- titlePrefix.message
103
- ? h('vxe-tooltip', {
104
- props: {
105
- content: UtilTools.getFuncText(titlePrefix.message),
106
- enterable: titlePrefix.enterable,
107
- theme: titlePrefix.theme
108
- }
109
- }, [
110
- renderPrefixIcon(h, titlePrefix)
111
- ])
112
- : renderPrefixIcon(h, titlePrefix)
113
- )
114
- }
115
- titVNs.push(
116
- h('span', {
117
- class: 'vxe-form--item-title-label'
118
- }, compConf && compConf.renderItemTitle ? compConf.renderItemTitle(itemRender, params) : (slots && slots.title ? callSlot(_vm, slots.title, params, h) : UtilTools.getFuncText(item.title)))
119
- )
120
- contVNs.push(
121
- h('div', {
122
- class: 'vxe-form--item-title-content'
123
- }, titVNs)
124
- )
125
- const fixVNs = []
126
- if (titleSuffix) {
127
- fixVNs.push(
128
- titleSuffix.message
129
- ? h('vxe-tooltip', {
130
- props: {
131
- content: UtilTools.getFuncText(titleSuffix.message),
132
- enterable: titleSuffix.enterable,
133
- theme: titleSuffix.theme
134
- }
135
- }, [
136
- renderSuffixIcon(h, titleSuffix)
137
- ])
138
- : renderSuffixIcon(h, titleSuffix)
139
- )
140
- }
141
- contVNs.push(
142
- h('div', {
143
- class: 'vxe-form--item-title-postfix'
144
- }, fixVNs)
145
- )
146
- return contVNs
147
- }
148
-
149
61
  function renderItems (h, _vm, itemList) {
150
62
  const { _e, rules, data, collapseAll, validOpts, titleOverflow: allTitleOverflow } = _vm
151
63
  return itemList.map((item, index) => {
@@ -185,7 +97,7 @@ function renderItems (h, _vm, itemList) {
185
97
  }
186
98
  let contentVNs = []
187
99
  if (slots && slots.default) {
188
- contentVNs = callSlot(_vm, slots.default, params, h)
100
+ contentVNs = _vm.callSlot(slots.default, params, h)
189
101
  } else if (compConf && compConf.renderItemContent) {
190
102
  contentVNs = compConf.renderItemContent.call(_vm, h, itemRender, params)
191
103
  } else if (compConf && compConf.renderItem) {
@@ -258,6 +170,7 @@ export default {
258
170
  name: 'VxeForm',
259
171
  mixins: [vSize],
260
172
  props: {
173
+ collapseStatus: { type: Boolean, default: true },
261
174
  loading: Boolean,
262
175
  data: Object,
263
176
  size: { type: String, default: () => GlobalConfig.form.size || GlobalConfig.size },
@@ -272,11 +185,12 @@ export default {
272
185
  items: Array,
273
186
  rules: Object,
274
187
  preventSubmit: { type: Boolean, default: () => GlobalConfig.form.preventSubmit },
275
- validConfig: Object
188
+ validConfig: Object,
189
+ customLayout: { type: Boolean, default: () => GlobalConfig.form.customLayout }
276
190
  },
277
191
  data () {
278
192
  return {
279
- collapseAll: true,
193
+ collapseAll: this.collapseStatus,
280
194
  staticItems: [],
281
195
  formItems: [],
282
196
 
@@ -305,24 +219,32 @@ export default {
305
219
  return opts
306
220
  }
307
221
  },
308
- created () {
309
- this.$nextTick(() => {
310
- const { items } = this
311
- if (items) {
312
- this.loadItem(items)
313
- }
314
- })
315
- },
316
222
  watch: {
317
223
  staticItems (value) {
318
224
  this.formItems = value
319
225
  },
320
226
  items (value) {
321
227
  this.loadItem(value)
228
+ },
229
+ collapseStatus (value) {
230
+ this.collapseAll = !!value
322
231
  }
323
232
  },
233
+ created () {
234
+ this.$nextTick(() => {
235
+ const { items } = this
236
+ if (process.env.VUE_APP_VXE_TABLE_ENV === 'development') {
237
+ if (this.customLayout && this.items) {
238
+ UtilTools.error('vxe.error.errConflicts', ['custom-layout', 'items'])
239
+ }
240
+ }
241
+ if (items) {
242
+ this.loadItem(items)
243
+ }
244
+ })
245
+ },
324
246
  render (h) {
325
- const { _e, loading, className, data, vSize, tooltipOpts, formItems } = this
247
+ const { _e, loading, className, data, vSize, tooltipOpts, formItems, customLayout } = this
326
248
  const hasUseTooltip = VXETable._tooltip
327
249
  return h('form', {
328
250
  class: ['vxe-form', className ? (XEUtils.isFunction(className) ? className({ items: formItems, data, $form: this }) : className) : '', {
@@ -338,11 +260,11 @@ export default {
338
260
  }, [
339
261
  h('div', {
340
262
  class: 'vxe-form--wrapper vxe-row'
341
- }, renderItems(h, this, formItems)),
263
+ }, customLayout ? this.$slots.default : renderItems(h, this, formItems)),
342
264
  h('div', {
343
265
  class: 'vxe-form-slots',
344
266
  ref: 'hideItem'
345
- }, this.$slots.default),
267
+ }, customLayout ? [] : this.$slots.default),
346
268
  h('div', {
347
269
  class: ['vxe-loading', {
348
270
  'is--visible': loading
@@ -362,6 +284,18 @@ export default {
362
284
  ])
363
285
  },
364
286
  methods: {
287
+ callSlot (slotFunc, params, h) {
288
+ if (slotFunc) {
289
+ const { $scopedSlots } = this
290
+ if (XEUtils.isString(slotFunc)) {
291
+ slotFunc = $scopedSlots[slotFunc] || null
292
+ }
293
+ if (XEUtils.isFunction(slotFunc)) {
294
+ return slotFunc.call(this, params, h)
295
+ }
296
+ }
297
+ return []
298
+ },
365
299
  loadItem (list) {
366
300
  if (process.env.VUE_APP_VXE_TABLE_ENV === 'development') {
367
301
  const { $scopedSlots } = this
@@ -388,12 +322,16 @@ export default {
388
322
  return itemList
389
323
  },
390
324
  toggleCollapse () {
391
- this.collapseAll = !this.collapseAll
325
+ const status = !this.collapseAll
326
+ this.collapseAll = status
327
+ this.$emit('update:collapseStatus', status)
392
328
  return this.$nextTick()
393
329
  },
394
330
  toggleCollapseEvent (evnt) {
395
331
  this.toggleCollapse()
396
- this.$emit('toggle-collapse', { collapse: !this.collapseAll, data: this.data, $form: this, $event: evnt }, evnt)
332
+ const status = this.collapseAll
333
+ this.$emit('toggle-collapse', { status, collapse: status, data: this.data, $form: this, $event: evnt }, evnt)
334
+ this.$emit('collapse', { status, collapse: status, data: this.data, $form: this, $event: evnt }, evnt)
397
335
  },
398
336
  submitEvent (evnt) {
399
337
  evnt.preventDefault()
@@ -631,12 +569,16 @@ export default {
631
569
  handleFocus (fields) {
632
570
  const { $el } = this
633
571
  const itemList = this.getItems()
634
- fields.some(property => {
572
+ fields.some((property, index) => {
635
573
  const item = itemList.find(item => item.field === property)
636
574
  if (item && isEnableConf(item.itemRender)) {
637
575
  const { itemRender } = item
638
576
  const compConf = VXETable.renderer.get(itemRender.name)
639
577
  let inputElem
578
+ // 定位到第一个
579
+ if (!index) {
580
+ DomTools.scrollToView($el.querySelector(`.${item.id}`))
581
+ }
640
582
  // 如果指定了聚焦 class
641
583
  if (itemRender.autofocus) {
642
584
  inputElem = $el.querySelector(`.${item.id} ${itemRender.autofocus}`)
@@ -0,0 +1,79 @@
1
+ import GlobalConfig from '../../v-x-e-table/src/conf'
2
+ import VXETable from '../../v-x-e-table'
3
+ import { UtilTools, isEnableConf } from '../../tools'
4
+
5
+ function renderPrefixIcon (h, titlePrefix) {
6
+ return h('span', {
7
+ class: 'vxe-form--item-title-prefix'
8
+ }, [
9
+ h('i', {
10
+ class: titlePrefix.icon || GlobalConfig.icon.FORM_PREFIX
11
+ })
12
+ ])
13
+ }
14
+
15
+ function renderSuffixIcon (h, titleSuffix) {
16
+ return h('span', {
17
+ class: 'vxe-form--item-title-suffix'
18
+ }, [
19
+ h('i', {
20
+ class: titleSuffix.icon || GlobalConfig.icon.FORM_SUFFIX
21
+ })
22
+ ])
23
+ }
24
+
25
+ export function renderTitle (h, _vm, item) {
26
+ const { data } = _vm
27
+ const { slots, field, itemRender, titlePrefix, titleSuffix } = item
28
+ const compConf = isEnableConf(itemRender) ? VXETable.renderer.get(itemRender.name) : null
29
+ const params = { data, property: field, item, $form: _vm }
30
+ const contVNs = []
31
+ const titVNs = []
32
+ if (titlePrefix) {
33
+ titVNs.push(
34
+ titlePrefix.message
35
+ ? h('vxe-tooltip', {
36
+ props: {
37
+ content: UtilTools.getFuncText(titlePrefix.message),
38
+ enterable: titlePrefix.enterable,
39
+ theme: titlePrefix.theme
40
+ }
41
+ }, [
42
+ renderPrefixIcon(h, titlePrefix)
43
+ ])
44
+ : renderPrefixIcon(h, titlePrefix)
45
+ )
46
+ }
47
+ titVNs.push(
48
+ h('span', {
49
+ class: 'vxe-form--item-title-label'
50
+ }, compConf && compConf.renderItemTitle ? compConf.renderItemTitle(itemRender, params) : (slots && slots.title ? _vm.callSlot(slots.title, params, h) : UtilTools.getFuncText(item.title)))
51
+ )
52
+ contVNs.push(
53
+ h('div', {
54
+ class: 'vxe-form--item-title-content'
55
+ }, titVNs)
56
+ )
57
+ const fixVNs = []
58
+ if (titleSuffix) {
59
+ fixVNs.push(
60
+ titleSuffix.message
61
+ ? h('vxe-tooltip', {
62
+ props: {
63
+ content: UtilTools.getFuncText(titleSuffix.message),
64
+ enterable: titleSuffix.enterable,
65
+ theme: titleSuffix.theme
66
+ }
67
+ }, [
68
+ renderSuffixIcon(h, titleSuffix)
69
+ ])
70
+ : renderSuffixIcon(h, titleSuffix)
71
+ )
72
+ }
73
+ contVNs.push(
74
+ h('div', {
75
+ class: 'vxe-form--item-title-postfix'
76
+ }, fixVNs)
77
+ )
78
+ return contVNs
79
+ }
@@ -40,8 +40,8 @@ function renderDefaultForm (h, _vm) {
40
40
  on: {
41
41
  submit: _vm.submitEvent,
42
42
  reset: _vm.resetEvent,
43
- 'submit-invalid': _vm.submitInvalidEvent,
44
- 'toggle-collapse': _vm.togglCollapseEvent
43
+ collapse: _vm.collapseEvent,
44
+ 'submit-invalid': _vm.submitInvalidEvent
45
45
  },
46
46
  scopedSlots: formSlots
47
47
  })
@@ -819,9 +819,10 @@ export default {
819
819
  submitInvalidEvent (params) {
820
820
  this.$emit('form-submit-invalid', Object.assign({ $grid: this }, params))
821
821
  },
822
- togglCollapseEvent (params) {
822
+ collapseEvent (params) {
823
823
  this.$nextTick(() => this.recalculate(true))
824
824
  this.$emit('form-toggle-collapse', Object.assign({ $grid: this }, params))
825
+ this.$emit('form-collapse', Object.assign({ $grid: this }, params))
825
826
  },
826
827
  triggerZoomEvent (evnt) {
827
828
  this.zoom()