vhb-table
Version:
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、贼灵活的配置项、扩展接口等...
1 lines • 13.7 kB
JavaScript
;function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.renderer=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_conf=_interopRequireDefault(require("../../v-h-b-table/src/conf")),_utils=_interopRequireWildcard(require("../../tools/utils")),_log=require("../../tools/log");function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(_getRequireWildcardCache=function(e){return e?n:t})(e)}function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==_typeof(e)&&"function"!=typeof e)return{default:e};var n=_getRequireWildcardCache(t);if(n&&n.has(e))return n.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(r,a,i):r[a]=e[a]}return r.default=e,n&&n.set(e,r),r}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,o=void 0===r?{}:r;return _xeUtils.default.toDateString(parseDate(e,t),o.labelFormat||n)}function getLabelFormatDate(e,t){return getFormatDate(e,t,_conf.default.i18n("vhb.input.date.labelFormat.".concat(t.type)))}function getDefaultComponentName(e){var t=e.name;return"vhb-".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 getInputImmediateModel(e){var t=e.name,n=e.immediate,r=e.props;if(n)return n;if("$input"!==t)return"input"!==t&&"textarea"!==t&&"$textarea"!==t;var o=(r||{}).type;return!(!o||"text"===o||"number"===o||"integer"===o||"float"===o)}function isImmediateCell(e,t){return"cell"===t.$type||getInputImmediateModel(e)}function getCellEditProps(e,t,n,r){var o=t.$table.vSize;return _xeUtils.default.assign({immediate:getInputImmediateModel(e)},o?{size:o}:{},defaultCompProps,r,e.props,_defineProperty({},componentDefaultModelProp,n))}function getFilterProps(e,t,n,r){var o=t.$table.vSize;return _xeUtils.default.assign(o?{size:o}:{},defaultCompProps,r,e.props,_defineProperty({},componentDefaultModelProp,n))}function getItemProps(e,t,n,r){var o=t.$form.vSize;return _xeUtils.default.assign(o?{size:o}:{},defaultCompProps,r,e.props,_defineProperty({},componentDefaultModelProp,n))}function getCellLabelVNs(e,t,n,r){var o=t.placeholder;return[e("span",{class:"vhb-cell--label"},o&&isEmptyValue(r)?[e("span",{class:"vhb-cell--placeholder"},_utils.default.formatText((0,_utils.getFuncText)(o),1))]:_utils.default.formatText(r,1))]}function getNativeOns(e,o){var t=e.nativeEvents,n={};return _xeUtils.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 n=e.name,a=e.events,i="input",u=getChangeEvent(e),l=u===i,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[i]=function(e){t("$input"===n||"$textarea"===n?e.value:e),a&&a[i]&&a[i](o,e),l&&r&&r(e)}),!l&&r&&(d[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))}),d}function getEditOns(e,t){var n=t.$table,r=t.row,o=t.column,a=e.name,i=o.model,u=isImmediateCell(e,t);return getOns(e,t,function(e){u?_utils.default.setCellValue(r,o,e):(i.update=!0,i.value=e)},function(e){u||"$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(n,r){var o=r.$table,a=r.row,i=r.column,u=i.model;return getOns(n,r,function(e){var t=e.target.value;isImmediateCell(n,r)?_utils.default.setCellValue(a,i,t):(u.update=!0,u.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,!_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){var t=e.target.value;_xeUtils.default.set(r,o,t)},function(){n.updateStatus(t)})}function nativeEditRender(e,t,n){var r=n.row,o=n.column,a=t.name,i=getNativeAttrs(t),u=isImmediateCell(t,n)?_utils.default.getCellValue(r,o):o.model.value;return[e(a,{class:"vhb-default-".concat(a),attrs:i,domProps:{value:u},on:getNativeEditOns(t,n)})]}function defaultEditRender(e,t,n){var r=n.row,o=n.column,a=_utils.default.getCellValue(r,o);return[e(getDefaultComponentName(t),{props:getCellEditProps(t,n,a),on:getEditOns(t,n),nativeOn:getNativeOns(t,n)})]}function defaultButtonEditRender(e,t,n){return[e("vhb-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,i=void 0===t?{}:t,u=i.options||"options",l=i.label||"label";return e.map(function(e,t){return n("optgroup",{key:t,domProps:{label:e[l]}},a(n,e[u],r,o))})}function renderNativeOptions(n,e,t,r){var o=t.optionProps,a=void 0===o?{}:o,i=r.row,u=r.column,l=a.label||"label",d=a.value||"value",s=a.disabled||"disabled",p=isImmediateCell(t,r)?_utils.default.getCellValue(i,u):u.model.value;return e.map(function(e,t){return n("option",{key:t,attrs:{value:e[d],disabled:e[s]},domProps:{selected:e[d]==p}},e[l])})}function nativeFilterRender(n,r,o){var e=o.column,a=r.name,i=getNativeAttrs(r);return e.filters.map(function(e,t){return n(a,{key:t,class:"vhb-default-".concat(a),attrs:i,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,r=e.column,o=t.data;return _xeUtils.default.get(n,r.property)==o}function nativeSelectEditRender(e,t,n){return[e("select",{class:"vhb-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,i=t.optionProps,u=t.optionGroups,l=t.optionGroupProps,d=_utils.default.getCellValue(r,o);return[e(getDefaultComponentName(t),{props:getCellEditProps(t,n,d,{options:a,optionProps:i,optionGroups:u,optionGroupProps:l}),on:getEditOns(t,n)})]}function getSelectCellValue(e,t){var r,n=t.row,o=t.column,a=e.props,i=void 0===a?{}:a,u=e.options,l=e.optionGroups,d=e.optionProps,s=void 0===d?{}:d,p=e.optionGroupProps,f=void 0===p?{}:p,c=_xeUtils.default.get(n,o.property),v=s.label||"label",m=s.value||"value";return isEmptyValue(c)?null:_xeUtils.default.map(i.multiple?c:[c],l?function(t){for(var e=f.options||"options",n=0;n<l.length&&!(r=_xeUtils.default.find(l[n][e],function(e){return e[m]==t}));n++);return r?r[v]:t}:function(t){return(r=_xeUtils.default.find(u,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,i=getNativeAttrs(t),u=_xeUtils.default.get(r,o);return[e(a,{class:"vhb-default-".concat(a),attrs:i,domProps:!i||"input"!==a||"submit"!==i.type&&"reset"!==i.type?{value:u}:null,on:getNativeItemOns(t,n)})]}function defaultItemRender(e,t,n){var r=n.data,o=n.property,a=_xeUtils.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("vhb-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,i=t.optionProps,u=void 0===i?{}:i,l=u.label||"label",d=u.value||"value",s=u.disabled||"disabled",p=_xeUtils.default.get(o,a);return e.map(function(e,t){return n("option",{key:t,attrs:{value:e[d],disabled:e[s]},domProps:{selected:e[d]==p}},e[l])})}function handleExportSelectMethod(e){var t=e.row,n=e.column;return e.options.original?_utils.default.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,i=t.data,u=t.property,l=a.label||"label",d=a.value||"value",s=a.disabled||"disabled",p=_xeUtils.default.get(i,u),f=getDefaultComponentName(e);return r?[n("".concat(f,"-group"),{props:getItemProps(e,t,p),on:getItemOns(e,t),nativeOn:getNativeOns(e,t)},r.map(function(e,t){return n(f,{key:t,props:{label:e[d],content:e[l],disabled:e[s]}})}))]:[n(f,{props:getItemProps(e,t,p),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:"vhb-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:"vhb-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:".vhb-input--inner",renderEdit:defaultEditRender,renderCell:function(e,t,n){var r=t.props,o=void 0===r?{}:r,a=n.row,i=n.column,u=o.digits||_conf.default.input.digits,l=_xeUtils.default.get(a,i.property);if(l)switch(o.type){case"date":case"week":case"month":case"year":l=getLabelFormatDate(l,o);break;case"float":l=_xeUtils.default.toFixed(_xeUtils.default.floor(l,u),u)}return getCellLabelVNs(e,t,n,l)},renderDefault:defaultEditRender,renderFilter:defaultFilterRender,defaultFilterMethod:handleFilterMethod,renderItemContent:defaultItemRender},$textarea:{autofocus:".vhb-textarea--inner",renderItemContent:defaultItemRender},$button:{renderDefault:defaultButtonEditRender,renderItemContent:defaultButtonItemRender},$buttons:{renderDefault:defaultButtonsEditRender,renderItemContent:defaultButtonsItemRender},$select:{autofocus:".vhb-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,i=o.options,u=o.optionProps,l=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:i,optionProps:u,optionGroups:l,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,i=t.optionProps,u=t.optionGroups,l=t.optionGroupProps,d=_xeUtils.default.get(r,o);return[e(getDefaultComponentName(t),{props:getItemProps(t,n,d,{options:a,optionProps:i,optionGroups:u,optionGroupProps:l}),on:getItemOns(t,n),nativeOn:getNativeOns(t,n)})]},cellExportMethod:handleExportSelectMethod},$radio:{autofocus:".vhb-radio--input",renderItemContent:defaultFormItemRadioAndCheckboxRender},$checkbox:{autofocus:".vhb-checkbox--input",renderItemContent:defaultFormItemRadioAndCheckboxRender},$switch:{autofocus:".vhb-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){if(n&&e){var r=renderMap[n];r?("development"===process.env.NODE_ENV&&_xeUtils.default.each(e,function(e,t){_xeUtils.default.eqNull(r[t])||r[t]===e||(0,_log.warnLog)("vhb.error.coverProp",["Renderer.".concat(n),t])}),Object.assign(r,e)):renderMap[n]=e}return renderer},delete:function(e){return delete renderMap[e],renderer}};exports.renderer=renderer;