vxe-table
Version:
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、虚拟列表、模态窗口、自定义模板、渲染器、贼灵活的配置项、扩展接口等...
1 lines • 11.2 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _ctor=_interopRequireDefault(require("xe-utils/ctor")),_conf=_interopRequireDefault(require("../../conf")),_tools=require("../../tools");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var inputEventTypes=["input","textarea","$input","$textarea"],defaultCompProps={transfer:!0};function isEmptyValue(e){return null==e||""===e}function getChangeEvent(e){return-1<inputEventTypes.indexOf(e.name)?"input":"change"}function parseDate(e,t){return e&&t.valueFormat?_ctor.default.toStringDate(e,t.valueFormat):e}function getFormatDate(e,t,n){var r=t.dateConfig,o=void 0===r?{}:r;return _ctor.default.toDateString(parseDate(e,t),o.labelFormat||n)}function getLabelFormatDate(e,t){return getFormatDate(e,t,_conf.default.i18n("vxe.input.date.labelFormat.".concat(t.type)))}function getDefaultComponentName(e){var t=e.name;return"vxe-".concat(t.replace("$",""))}function handleConfirmFilter(e,t,n){e.$panel.changeOption({},t,n)}function getNativeAttrs(e){var t=e.name,n=e.attrs;return"input"===t&&(n=Object.assign({type:"text"},n)),n}function getCellEditFilterProps(e,t,n,r){var o=t.$table.vSize;return _ctor.default.assign(o?{size:o}:{},defaultCompProps,r,e.props,{value:n})}function getItemProps(e,t,n,r){var o=t.$form.vSize;return _ctor.default.assign(o?{size:o}:{},defaultCompProps,r,e.props,{value:n})}function getNativeOns(e,o){var t=e.nativeEvents,n={};return _ctor.default.objectEach(t,function(r,e){n[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))}}),n}function getOns(e,o,t,r){var a=e.events,n="input",u=getChangeEvent(e),i=u===n,l={};return _ctor.default.objectEach(a,function(r,e){l[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&&(l[n]=function(e){t(e),a&&a[n]&&a[n](o,e),i&&r&&r(e)}),!i&&r&&(l[u]=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[u]&&a[u].apply(a,[o].concat(t))}),l}function getEditOns(e,t){var n=t.$table,r=t.row,o=t.column;return getOns(e,t,function(e){_ctor.default.set(r,o.property,e)},function(){n.updateStatus(t)})}function getFilterOns(e,t,n){return getOns(e,t,function(e){n.data=e},function(){handleConfirmFilter(t,!_ctor.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){_ctor.default.set(r,o,e)},function(){n.updateStatus(t)})}function isSyncCell(e,t){return e.immediate||"cell"===t.$type}function getNativeEditOns(n,r){var o=r.$table,a=r.row,u=r.column,i=u.model;return getOns(n,r,function(e){var t=e.target.value;isSyncCell(n,r)?_tools.UtilTools.setCellValue(a,u,t):(i.update=!0,i.value=t)},function(e){var t=e.target.value;o.updateStatus(r,t)})}function getNativeFilterOns(e,t,n){return getOns(e,t,function(e){n.data=e.target.value},function(){handleConfirmFilter(t,!_ctor.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){var t=e.target.value;_ctor.default.set(r,o,t)},function(){n.updateStatus(t)})}function nativeEditRender(e,t,n){var r=n.row,o=n.column,a=t.name,u=getNativeAttrs(t),i=isSyncCell(t,n)?_tools.UtilTools.getCellValue(r,o):o.model.value;return[e(a,{class:"vxe-default-".concat(a),attrs:u,domProps:{value:i},on:getNativeEditOns(t,n)})]}function defaultEditRender(e,t,n){var r=n.row,o=n.column,a=_tools.UtilTools.getCellValue(r,o);return[e(getDefaultComponentName(t),{props:getCellEditFilterProps(t,n,a),on:getEditOns(t,n),nativeOn:getNativeOns(t,n)})]}function defaultButtonEditRender(e,t,n){return[e("vxe-button",{props:getCellEditFilterProps(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,u=void 0===t?{}:t,i=u.options||"options",l=u.label||"label";return e.map(function(e,t){return n("optgroup",{key:t,domProps:{label:e[l]}},a(n,e[i],r,o))})}function renderNativeOptions(n,e,t,r){var o=t.optionProps,a=void 0===o?{}:o,u=r.row,i=r.column,l=a.label||"label",d=a.value||"value",p=a.disabled||"disabled",s=isSyncCell(t,r)?_tools.UtilTools.getCellValue(u,i):i.model.value;return e.map(function(e,t){return n("option",{key:t,attrs:{value:e[d],disabled:e[p]},domProps:{selected:e[d]==s}},e[l])})}function nativeFilterRender(n,r,o){var e=o.column,a=r.name,u=getNativeAttrs(r);return e.filters.map(function(e,t){return n(a,{key:t,class:"vxe-default-".concat(a),attrs:u,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:getCellEditFilterProps(o,o,n),on:getFilterOns(o,a,e)})})}function handleFilterMethod(e){var t=e.option,n=e.row,r=e.column,o=t.data;return _ctor.default.get(n,r.property)==o}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,u=t.optionProps,i=t.optionGroups,l=t.optionGroupProps,d=_tools.UtilTools.getCellValue(r,o);return[e(getDefaultComponentName(t),{props:getCellEditFilterProps(t,n,d,{options:a,optionProps:u,optionGroups:i,optionGroupProps:l}),on:getEditOns(t,n)})]}function getSelectCellValue(e,t){var r,n=t.row,o=t.column,a=e.props,u=void 0===a?{}:a,i=e.options,l=e.optionGroups,d=e.optionProps,p=void 0===d?{}:d,s=e.optionGroupProps,c=void 0===s?{}:s,f=_ctor.default.get(n,o.property),v=p.label||"label",m=p.value||"value";return isEmptyValue(f)?null:_ctor.default.map(u.multiple?f:[f],l?function(t){for(var e=c.options||"options",n=0;n<l.length&&!(r=_ctor.default.find(l[n][e],function(e){return e[m]==t}));n++);return r?r[v]:t}:function(t){return(r=_ctor.default.find(i,function(e){return e[m]==t}))?r[v]:t}).join(", ")}function nativeItemRender(e,t,n){var r=n.data,o=n.property,a=t.name,u=getNativeAttrs(t),i=_ctor.default.get(r,o);return[e(a,{class:"vxe-default-".concat(a),attrs:u,domProps:!u||"input"!==a||"submit"!==u.type&&"reset"!==u.type?{value:i}:null,on:getNativeItemOns(t,n)})]}function defaultItemRender(e,t,n){var r=n.data,o=n.property,a=_ctor.default.get(r,o);return[e(getDefaultComponentName(t),{props:getItemProps(t,n,a),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,a=r.property,u=t.optionProps,i=void 0===u?{}:u,l=i.label||"label",d=i.value||"value",p=i.disabled||"disabled",s=_ctor.default.get(o,a);return e.map(function(e,t){return n("option",{key:t,attrs:{value:e[d],disabled:e[p]},domProps:{selected:e[d]==s}},e[l])})}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,u=t.data,i=t.property,l=a.label||"label",d=a.value||"value",p=a.disabled||"disabled",s=_ctor.default.get(u,i),c=getDefaultComponentName(e);return[n("".concat(c,"-group"),{props:getItemProps(e,t,s),on:getItemOns(e,t),nativeOn:getNativeOns(e,t)},r.map(function(e,t){return n(c,{key:t,props:{label:e[d],content:e[l],disabled:e[p]}})}))]}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 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,u=n.column,i=o.digits||_conf.default.input.digits,l=_ctor.default.get(a,u.property);if(l)switch(o.type){case"date":case"week":case"month":case"year":l=getLabelFormatDate(l,o);break;case"float":l=_ctor.default.toFixed(_ctor.default.floor(l,i),i)}return l},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 getSelectCellValue(t,n)},renderFilter:function(r,o,a){var e=a.column,u=o.options,i=o.optionProps,l=o.optionGroups,d=o.optionGroupProps,p=getNativeOns(o,a);return e.filters.map(function(e,t){var n=e.data;return r(getDefaultComponentName(o),{key:t,props:getCellEditFilterProps(o,a,n,{options:u,optionProps:i,optionGroups:l,optionGroupProps:d}),on:getFilterOns(o,a,e),nativeOn:p})})},filterMethod:handleFilterMethod,renderItemContent:function(e,t,n){var r=n.data,o=n.property,a=t.options,u=t.optionProps,i=t.optionGroups,l=t.optionGroupProps,d=_ctor.default.get(r,o);return[e(getDefaultComponentName(t),{props:getItemProps(t,n,d,{options:a,optionProps:u,optionGroups:i,optionGroupProps:l}),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 _ctor.default.each(e,function(e,t){return renderer.add(t,e)}),renderer},get:function(e){return renderMap[e]||null},add:function(e,t){if(e&&t){var n=renderMap[e];n?Object.assign(n,t):renderMap[e]=t}return renderer},delete:function(e){return delete renderMap[e],renderer}},_default=renderer;exports.default=_default;