UNPKG

vxe-table-demonic

Version:

一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...

1 lines 13.9 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.renderer=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_conf=_interopRequireDefault(require("./conf")),_util=require("../../table/src/util"),_utils=require("../../tools/utils"),_log=require("../../tools/log"),_vn=require("../../tools/vn");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var __assign=function(){return(__assign=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},__spreadArray=function(e,t,n){if(n||2===arguments.length)for(var r,o=0,a=t.length;o<a;o++)!r&&o in t||((r=r||Array.prototype.slice.call(t,0,o))[o]=t[o]);return e.concat(r||Array.prototype.slice.call(t))},componentDefaultModelProp="modelValue",defaultCompProps={transfer:!0};function getModelEvent(e){switch(e.name){case"input":case"textarea":return"input"}return"update:modelValue"}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 getComponentName(e){return"vxe-".concat(e.replace("$",""))}function getDefaultComponent(e){e=e.name;return(0,_vue.resolveComponent)(getComponentName(e))}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;return n||("$input"===t?!(!(n=(e||{}).type)||"text"===n||"number"===n||"integer"===n||"float"===n):"input"!==t&&"textarea"!==t&&"$textarea"!==t)}function getCellEditProps(e,t,n,r){return _xeUtils.default.assign({immediate:getInputImmediateModel(e)},defaultCompProps,r,e.props,((r={})[componentDefaultModelProp]=n,r))}function getCellEditFilterProps(e,t,n,r){return _xeUtils.default.assign({},defaultCompProps,r,e.props,((r={})[componentDefaultModelProp]=n,r))}function getComponentFormItemProps(e,t,n,r){return _xeUtils.default.assign({},defaultCompProps,r,e.props,((r={})[componentDefaultModelProp]=n,r))}function isImmediateCell(e,t){return"cell"===t.$type||getInputImmediateModel(e)}function getCellLabelVNs(e,t,n){e=e.placeholder;return[(0,_vue.h)("span",{class:"vxe-cell--label"},e&&(0,_utils.isEmptyValue)(n)?[(0,_vue.h)("span",{class:"vxe-cell--placeholder"},(0,_utils.formatText)((0,_utils.getFuncText)(e),1))]:(0,_utils.formatText)(n,1))]}function getElementOns(e,r,t,n){var o=e.events,a=getModelEvent(e),u=getChangeEvent(e),l=u===a,i={};return o&&_xeUtils.default.objectEach(o,function(n,e){i[(0,_vn.getOnName)(e)]=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];n.apply(void 0,__spreadArray([r],e,!1))}}),t&&(i[(0,_vn.getOnName)(a)]=function(e){t(e),l&&n&&n(e),o&&o[a]&&o[a](r,e)}),!l&&n&&(i[(0,_vn.getOnName)(u)]=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];n.apply(void 0,e),o&&o[u]&&o[u].apply(o,__spreadArray([r],e,!1))}),i}function getComponentOns(e,r,t,n){var o=e.events,a=getModelEvent(e),u=getChangeEvent(e),l={};return _xeUtils.default.objectEach(o,function(n,e){l[(0,_vn.getOnName)(e)]=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];"development"!==process.env.NODE_ENV||_xeUtils.default.isFunction(n)||(0,_log.errLog)("vxe.error.errFunc",[n]),n.apply(void 0,__spreadArray([r],e,!1))}}),t&&(l[(0,_vn.getOnName)(a)]=function(e){t(e),o&&o[a]&&o[a](r,e)}),n&&(l[(0,_vn.getOnName)(u)]=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];n.apply(void 0,e),o&&o[u]&&o[u].apply(o,__spreadArray([r],e,!1))}),l}function getEditOns(e,t){var n=t.$table,r=t.row,o=t.column,a=e.name,u=o.model,l=isImmediateCell(e,t);return getComponentOns(e,t,function(e){l?(0,_util.setCellValue)(r,o,e):(u.update=!0,u.value=e)},function(e){l||"$input"!==a&&"$textarea"!==a?n.updateStatus(t):(e=e.value,u.update=!0,u.value=e,n.updateStatus(t,e))})}function getFilterOns(e,t,n){return getComponentOns(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 getComponentOns(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,u=a.model;return getElementOns(t,n,function(e){e=e.target.value;isImmediateCell(t,n)?(0,_util.setCellValue)(o,a,e):(u.update=!0,u.value=e)},function(e){e=e.target.value;r.updateStatus(n,e)})}function getNativeFilterOns(e,t,n){return getElementOns(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 getElementOns(e,t,function(e){e=e.target.value;_xeUtils.default.set(r,o,e)},function(){n.updateStatus(t)})}function nativeEditRender(e,t){var n=t.row,r=t.column,o=e.name,n=isImmediateCell(e,t)?(0,_util.getCellValue)(n,r):r.model.value;return[(0,_vue.h)(o,__assign(__assign(__assign({class:"vxe-default-".concat(o)},getNativeAttrs(e)),{value:n}),getNativeEditOns(e,t)))]}function defaultEditRender(e,t){var n=t.row,r=t.column,n=(0,_util.getCellValue)(n,r);return[(0,_vue.h)(getDefaultComponent(e),__assign(__assign({},getCellEditProps(e,t,n)),getEditOns(e,t)))]}function defaultButtonEditRender(e,t){return[(0,_vue.h)((0,_vue.resolveComponent)("vxe-button"),__assign(__assign({},getCellEditProps(e,t,null)),getComponentOns(e,t)))]}function defaultButtonsEditRender(e,t){return e.children.map(function(e){return defaultButtonEditRender(e,t)[0]})}function renderNativeOptgroups(n,r,o){var e=n.optionGroups,t=n.optionGroupProps,t=void 0===t?{}:t,a=t.options||"options",u=t.label||"label";return e.map(function(e,t){return(0,_vue.h)("optgroup",{key:t,label:e[u]},o(e[a],n,r))})}function renderNativeOptions(e,t,n){var r=t.optionProps,r=void 0===r?{}:r,o=n.row,a=n.column,u=r.label||"label",l=r.value||"value",i=r.disabled||"disabled",s=isImmediateCell(t,n)?(0,_util.getCellValue)(o,a):a.model.value;return e.map(function(e,t){return(0,_vue.h)("option",{key:t,value:e[l],disabled:e[i],selected:e[l]==s},e[u])})}function nativeFilterRender(n,r){var e=r.column,o=n.name,a=getNativeAttrs(n);return e.filters.map(function(e,t){return(0,_vue.h)(o,__assign(__assign(__assign({key:t,class:"vxe-default-".concat(o)},a),{value:e.data}),getNativeFilterOns(n,r,e)))})}function defaultFilterRender(r,o){return o.column.filters.map(function(e,t){var n=e.data;return(0,_vue.h)(getDefaultComponent(r),__assign(__assign({key:t},getCellEditFilterProps(r,r,n)),getFilterOns(r,o,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){return[(0,_vue.h)("select",__assign(__assign({class:"vxe-default-select"},getNativeAttrs(e)),getNativeEditOns(e,t)),e.optionGroups?renderNativeOptgroups(e,t,renderNativeOptions):renderNativeOptions(e.options,e,t))]}function defaultSelectEditRender(e,t){var n=t.row,r=t.column,o=e.options,a=e.optionProps,u=e.optionGroups,l=e.optionGroupProps,n=(0,_util.getCellValue)(n,r);return[(0,_vue.h)(getDefaultComponent(e),__assign(__assign({},getCellEditProps(e,t,n,{options:o,optionProps:a,optionGroups:u,optionGroupProps:l})),getEditOns(e,t)))]}function getSelectCellValue(e,t){var r,n=t.row,t=t.column,o=e.props,o=void 0===o?{}:o,a=e.options,u=e.optionGroups,l=e.optionProps,l=void 0===l?{}:l,e=e.optionGroupProps,i=void 0===e?{}:e,e=_xeUtils.default.get(n,t.property),s=l.label||"label",d=l.value||"value";return(0,_utils.isEmptyValue)(e)?"":_xeUtils.default.map(o.multiple?e:[e],u?function(t){for(var e=i.options||"options",n=0;n<u.length&&!(r=_xeUtils.default.find(u[n][e],function(e){return e[d]==t}));n++);return r?r[s]:t}:function(t){return(r=_xeUtils.default.find(a,function(e){return e[d]==t}))?r[s]:t}).join(", ")}function nativeItemRender(e,t){var n=t.data,r=t.property,o=e.name,a=getNativeAttrs(e),n=_xeUtils.default.get(n,r);return[(0,_vue.h)(o,__assign(__assign(__assign({class:"vxe-default-".concat(o)},a),{value:!a||"input"!==o||"submit"!==a.type&&"reset"!==a.type?n:null}),getNativeItemOns(e,t)))]}function defaultItemRender(e,t){var n=t.data,r=t.property,n=_xeUtils.default.get(n,r);return[(0,_vue.h)(getDefaultComponent(e),__assign(__assign({},getComponentFormItemProps(e,t,n)),getItemOns(e,t)))]}function defaultButtonItemRender(e,t){return[(0,_vue.h)((0,_vue.resolveComponent)("vxe-button"),__assign(__assign({},getComponentFormItemProps(e,t,null)),getComponentOns(e,t)))]}function defaultButtonsItemRender(e,t){return e.children.map(function(e){return defaultButtonItemRender(e,t)[0]})}function renderNativeFormOptions(e,t,n){var r=n.data,n=n.property,t=t.optionProps,t=void 0===t?{}:t,o=t.label||"label",a=t.value||"value",u=t.disabled||"disabled",l=_xeUtils.default.get(r,n);return e.map(function(e,t){return(0,_vue.h)("option",{key:t,value:e[a],disabled:e[u],selected:e[a]==l},e[o])})}function handleExportSelectMethod(e){var t=e.row,n=e.column;return e.options.original?(0,_util.getCellValue)(t,n):getSelectCellValue(n.editRender||n.cellRender,e)}function defaultFormItemRadioAndCheckboxRender(e,t){var n=e.name,r=e.options,o=e.optionProps,o=void 0===o?{}:o,a=t.data,u=t.property,l=o.label||"label",i=o.value||"value",s=o.disabled||"disabled",o=_xeUtils.default.get(a,u),d=getComponentName(n);return r?[(0,_vue.h)((0,_vue.resolveComponent)("".concat(d,"-group")),__assign(__assign({},getComponentFormItemProps(e,t,o)),getItemOns(e,t)),{default:function(){return r.map(function(e,t){return(0,_vue.h)((0,_vue.resolveComponent)(d),{key:t,label:e[i],content:e[l],disabled:e[s]})})}})]:[(0,_vue.h)((0,_vue.resolveComponent)(d),__assign(__assign({},getComponentFormItemProps(e,t,o)),getItemOns(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){return getCellLabelVNs(e,t,getSelectCellValue(e,t))},renderFilter:function(n,r){return r.column.filters.map(function(e,t){return(0,_vue.h)("select",__assign(__assign({key:t,class:"vxe-default-select"},getNativeAttrs(n)),getNativeFilterOns(n,r,e)),n.optionGroups?renderNativeOptgroups(n,r,renderNativeOptions):renderNativeOptions(n.options,n,r))})},defaultFilterMethod:handleFilterMethod,renderItemContent:function(e,t){return[(0,_vue.h)("select",__assign(__assign({class:"vxe-default-select"},getNativeAttrs(e)),getNativeItemOns(e,t)),e.optionGroups?renderNativeOptgroups(e,t,renderNativeFormOptions):renderNativeFormOptions(e.options,e,t))]},cellExportMethod:handleExportSelectMethod},$input:{autofocus:".vxe-input--inner",renderEdit:defaultEditRender,renderCell:function(e,t){var n=e.props,r=void 0===n?{}:n,n=t.row,o=t.column,a=r.digits||_conf.default.input.digits,u=_xeUtils.default.get(n,o.property);if(u)switch(r.type){case"date":case"week":case"month":case"year":u=getLabelFormatDate(u,r);break;case"float":u=_xeUtils.default.toFixed(_xeUtils.default.floor(u,a),a)}return getCellLabelVNs(e,t,u)},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){return getCellLabelVNs(e,t,getSelectCellValue(e,t))},renderFilter:function(r,o){var e=o.column,a=r.options,u=r.optionProps,l=r.optionGroups,i=r.optionGroupProps;return e.filters.map(function(e,t){var n=e.data;return(0,_vue.h)(getDefaultComponent(r),__assign(__assign({key:t},getCellEditFilterProps(r,o,n,{options:a,optionProps:u,optionGroups:l,optionGroupProps:i})),getFilterOns(r,o,e)))})},defaultFilterMethod:handleFilterMethod,renderItemContent:function(e,t){var n=t.data,r=t.property,o=e.options,a=e.optionProps,u=e.optionGroups,l=e.optionGroupProps,n=_xeUtils.default.get(n,r);return[(0,_vue.h)(getDefaultComponent(e),__assign(__assign({},getComponentFormItemProps(e,t,n,{options:o,optionProps:a,optionGroups:u,optionGroupProps:l})),getItemOns(e,t)))]},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||(0,_log.warnLog)("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;