vxe-table-demonic
Version:
一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...
1 lines • 16 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Cell=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_conf=_interopRequireDefault(require("../../v-x-e-table/src/conf")),_vXETable=require("../../v-x-e-table"),_utils=require("../../tools/utils"),_dom=require("../../tools/dom"),_util=require("./util"),_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 l,t=1,r=arguments.length;t<r;t++)for(var n in l=arguments[t])Object.prototype.hasOwnProperty.call(l,n)&&(e[n]=l[n]);return e}).apply(this,arguments)};function renderTitlePrefixIcon(l){var t=l.$table,e=l.column,r=e.titlePrefix||e.titleHelp;return r?[(0,_vue.h)("i",{class:["vxe-cell-title-prefix-icon",r.icon||_conf.default.icon.TABLE_TITLE_PREFIX],onMouseenter:function(e){t.triggerHeaderTitleEvent(e,r,l)},onMouseleave:function(e){t.handleTargetLeaveEvent(e)}})]:[]}function renderTitleSuffixIcon(l){var t=l.$table,r=l.column.titleSuffix;return r?[(0,_vue.h)("i",{class:["vxe-cell-title-suffix-icon",r.icon||_conf.default.icon.TABLE_TITLE_SUFFIX],onMouseenter:function(e){t.triggerHeaderTitleEvent(e,r,l)},onMouseleave:function(e){t.handleTargetLeaveEvent(e)}})]:[]}function renderTitleContent(l,e){var t=l.$table,r=l.column,n=t.props,o=t.reactData,a=t.getComputeMaps().computeTooltipOpts,n=n.showHeaderOverflow,i=r.type,c=r.showHeaderOverflow,d=a.value.showAll,a=_xeUtils.default.isUndefined(c)||_xeUtils.default.isNull(c)?n:c,s="title"===a,u=!0===a||"tooltip"===a,n={};return(s||u||d)&&(n.onMouseenter=function(e){o._isResize||(s?(0,_dom.updateCellTitle)(e.currentTarget,r):(u||d)&&t.triggerHeaderTooltipEvent(e,l))}),(u||d)&&(n.onMouseleave=function(e){o._isResize||(u||d)&&t.handleTargetLeaveEvent(e)}),["html"===i&&_xeUtils.default.isString(e)?(0,_vue.h)("span",__assign({class:"vxe-cell--title",innerHTML:e},n)):(0,_vue.h)("span",__assign({class:"vxe-cell--title"},n),(0,_vn.getSlotVNs)(e))]}function getFooterContent(e){var l=e.$table,t=e.column,r=e._columnIndex,n=e.items,o=t.slots,a=t.editRender,t=t.cellRender,a=a||t,t=o?o.footer:null;if(t)return l.callSlot(t,e);if(a){o=_vXETable.VXETable.renderer.get(a.name);if(o&&o.renderFooter)return(0,_vn.getSlotVNs)(o.renderFooter(a,e))}return[(0,_utils.formatText)(n[r],1)]}function getDefaultCellLabel(e){var l=e.$table,t=e.row,e=e.column;return(0,_utils.formatText)(l.getCellLabel(t,e),1)}var Cell={createColumn:function(e,l){var t=l.type,r=l.sortable,n=l.filters,o=l.editRender,a=l.treeNode,i=e.props.editConfig,c=e.getComputeMaps(),d=c.computeEditOpts,s=c.computeCheckboxOpts.value,u=d.value,C={renderHeader:Cell.renderDefaultHeader,renderCell:a?Cell.renderTreeCell:Cell.renderDefaultCell,renderFooter:Cell.renderDefaultFooter};switch(t){case"seq":C.renderHeader=Cell.renderSeqHeader,C.renderCell=a?Cell.renderTreeIndexCell:Cell.renderSeqCell;break;case"radio":C.renderHeader=Cell.renderRadioHeader,C.renderCell=a?Cell.renderTreeRadioCell:Cell.renderRadioCell;break;case"checkbox":C.renderHeader=Cell.renderCheckboxHeader,C.renderCell=s.checkField?a?Cell.renderTreeSelectionCellByProp:Cell.renderCheckboxCellByProp:a?Cell.renderTreeSelectionCell:Cell.renderCheckboxCell;break;case"expand":C.renderCell=Cell.renderExpandCell,C.renderData=Cell.renderExpandData;break;case"html":C.renderCell=a?Cell.renderTreeHTMLCell:Cell.renderHTMLCell,n&&r?C.renderHeader=Cell.renderSortAndFilterHeader:r?C.renderHeader=Cell.renderSortHeader:n&&(C.renderHeader=Cell.renderFilterHeader);break;default:i&&o?(C.renderHeader=Cell.renderEditHeader,C.renderCell="cell"===u.mode?a?Cell.renderTreeCellEdit:Cell.renderCellEdit:a?Cell.renderTreeRowEdit:Cell.renderRowEdit):n&&r?C.renderHeader=Cell.renderSortAndFilterHeader:r?C.renderHeader=Cell.renderSortHeader:n&&(C.renderHeader=Cell.renderFilterHeader)}return(0,_util.createColumn)(e,l,C)},renderHeaderTitle:function(e){var l=e.$table,t=e.column,r=t.slots,n=t.editRender,o=t.cellRender,n=n||o,o=r?r.header:null;if(o)return renderTitleContent(e,l.callSlot(o,e));if(n){r=_vXETable.VXETable.renderer.get(n.name);if(r&&r.renderHeader)return renderTitleContent(e,(0,_vn.getSlotVNs)(r.renderHeader(n,e)))}return renderTitleContent(e,(0,_utils.formatText)(t.getTitle(),1))},renderDefaultHeader:function(e){return renderTitlePrefixIcon(e).concat(Cell.renderHeaderTitle(e)).concat(renderTitleSuffixIcon(e))},renderDefaultCell:function(e){var l=e.$table,t=e.row,r=e.column,n=r.slots,o=r.editRender,a=r.cellRender,a=o||a,n=n?n.default:null;if(n)return l.callSlot(n,e);if(a){var n=o?"renderCell":"renderDefault",i=_vXETable.VXETable.renderer.get(a.name),i=i?i[n]:null;if(i)return(0,_vn.getSlotVNs)(i(a,Object.assign({$type:o?"edit":"cell"},e)))}n=l.getCellLabel(t,r),i=o?o.placeholder:"";return[(0,_vue.h)("span",{class:"vxe-cell--label"},o&&(0,_utils.eqEmptyValue)(n)?[(0,_vue.h)("span",{class:"vxe-cell--placeholder"},(0,_utils.formatText)((0,_utils.getFuncText)(i),1))]:(0,_utils.formatText)(n,1))]},renderTreeCell:function(e){return Cell.renderTreeIcon(e,Cell.renderDefaultCell(e))},renderDefaultFooter:function(e){return[(0,_vue.h)("span",{class:"vxe-cell--item"},getFooterContent(e))]},renderTreeIcon:function(l,e){var t=l.$table,r=l.isHidden,n=t.reactData,o=t.getComputeMaps().computeTreeOpts,a=n.treeExpandedMaps,n=n.treeExpandLazyLoadedMaps,o=o.value,i=l.row,c=l.column,d=l.level,c=c.slots,s=o.indent,u=o.lazy,C=o.trigger,f=o.iconLoaded,_=o.showIcon,v=o.iconOpen,p=o.iconClose,E=o.children||o.childrenField,o=o.hasChild||o.hasChildField,E=i[E],c=c?c.icon:null,h=!1,b=!1,x=!1,T={};return c?t.callSlot(c,l):(r||(b=!!a[c=(0,_util.getRowid)(t,i)],u&&(x=!!n[c],h=i[o])),C&&"default"!==C||(T.onClick=function(e){e.stopPropagation(),t.triggerTreeExpandEvent(e,l)}),[(0,_vue.h)("div",{class:["vxe-cell--tree-node",{"is--active":b}],style:{paddingLeft:"".concat(d*s,"px")}},[_&&(E&&E.length||h)?[(0,_vue.h)("div",__assign({class:"vxe-tree--btn-wrapper"},T),[(0,_vue.h)("i",{class:["vxe-tree--node-btn",x?f||_conf.default.icon.TABLE_TREE_LOADED:b?v||_conf.default.icon.TABLE_TREE_OPEN:p||_conf.default.icon.TABLE_TREE_CLOSE]})])]:null,(0,_vue.h)("div",{class:"vxe-tree-cell"},e)])])},renderSeqHeader:function(e){var l=e.$table,t=e.column,r=t.slots,r=r?r.header:null;return renderTitleContent(e,r?l.callSlot(r,e):(0,_utils.formatText)(t.getTitle(),1))},renderSeqCell:function(e){var l=e.$table,t=e.column,r=l.props.treeConfig,n=l.getComputeMaps().computeSeqOpts.value,t=t.slots,t=t?t.default:null;return t?l.callSlot(t,e):(l=e.seq,t=n.seqMethod,[(0,_utils.formatText)(t?t(e):r?l:(n.startIndex||0)+l,1)])},renderTreeIndexCell:function(e){return Cell.renderTreeIcon(e,Cell.renderSeqCell(e))},renderRadioHeader:function(e){var l=e.$table,t=e.column,r=t.slots,n=r?r.header:null,r=r?r.title:null;return renderTitleContent(e,n?l.callSlot(n,e):[(0,_vue.h)("span",{class:"vxe-radio--label"},r?l.callSlot(r,e):(0,_utils.formatText)(t.getTitle(),1))])},renderRadioCell:function(l){var e,t=l.$table,r=l.column,n=l.isHidden,o=t.reactData,a=t.getComputeMaps().computeRadioOpts,o=o.selectRadioRow,a=a.value,r=r.slots,i=a.labelField,c=a.checkMethod,a=a.visibleMethod,d=l.row,s=r?r.default:null,r=r?r.radio:null,o=t.eqRow(d,o),u=!a||a({row:d}),C=!!c,a=(n||(e={onClick:function(e){!C&&u&&(e.stopPropagation(),t.triggerRadioRowEvent(e,l))}},c&&(C=!c({row:d}))),__assign(__assign({},l),{checked:o,disabled:C,visible:u}));return r?t.callSlot(r,a):(n=[],u&&n.push((0,_vue.h)("span",{class:["vxe-radio--icon",o?_conf.default.icon.TABLE_RADIO_CHECKED:_conf.default.icon.TABLE_RADIO_UNCHECKED]})),(s||i)&&n.push((0,_vue.h)("span",{class:"vxe-radio--label"},s?t.callSlot(s,a):_xeUtils.default.get(d,i))),[(0,_vue.h)("span",__assign({class:["vxe-cell--radio",{"is--checked":o,"is--disabled":C}]},e),n)])},renderTreeRadioCell:function(e){return Cell.renderTreeIcon(e,Cell.renderRadioCell(e))},renderCheckboxHeader:function(e){var l,t=e.$table,r=e.column,n=e.isHidden,o=t.reactData,a=t.getComputeMaps(),i=a.computeIsAllCheckboxDisabled,a=a.computeCheckboxOpts,c=o.isAllSelected,d=o.treeIndeterminateMaps,o=o.isIndeterminate,s=i.value,i=r.slots,u=i?i.header:null,i=i?i.title:null,a=a.value,r=r.getTitle(),n=(n||(l={onClick:function(e){s||(e.stopPropagation(),t.triggerCheckAllEvent(e,!c))}}),__assign(__assign({},e),{checked:c,disabled:s,indeterminate:o}));return u?renderTitleContent(n,t.callSlot(u,n)):(a.checkStrictly?a.showHeader:!1!==a.showHeader)?renderTitleContent(n,[(0,_vue.h)("span",__assign({class:["vxe-cell--checkbox",{"is--checked":c,"is--disabled":s,"is--indeterminate":o||0<Object.keys(d).length}],title:_conf.default.i18n("vxe.table.allTitle")},l),[(0,_vue.h)("span",{class:["vxe-checkbox--icon",o||0<Object.keys(d).length?_conf.default.icon.TABLE_CHECKBOX_INDETERMINATE:c?_conf.default.icon.TABLE_CHECKBOX_CHECKED:_conf.default.icon.TABLE_CHECKBOX_UNCHECKED]})].concat(i||r?[(0,_vue.h)("span",{class:"vxe-checkbox--label"},i?t.callSlot(i,n):r)]:[]))]):renderTitleContent(n,[(0,_vue.h)("span",{class:"vxe-checkbox--label"},i?t.callSlot(i,n):r)])},renderCheckboxCell:function(l){var e,t=l.$table,r=l.row,n=l.column,o=l.isHidden,a=t.props,i=t.reactData,a=a.treeConfig,c=i.selectCheckboxMaps,i=i.treeIndeterminateMaps,d=t.getComputeMaps().computeCheckboxOpts.value,s=d.labelField,u=d.checkMethod,d=d.visibleMethod,n=n.slots,C=n?n.default:null,n=n?n.checkbox:null,f=!1,_=!1,v=!d||d({row:r}),p=!!u,o=(o||(d=(0,_util.getRowid)(t,r),_=!!c[d],e={onClick:function(e){!p&&v&&(e.stopPropagation(),t.triggerCheckRowEvent(e,l,!_))}},u&&(p=!u({row:r})),a&&(f=!!i[d])),__assign(__assign({},l),{checked:_,disabled:p,visible:v,indeterminate:f}));return n?t.callSlot(n,o):(c=[],v&&c.push((0,_vue.h)("span",{class:["vxe-checkbox--icon",f?_conf.default.icon.TABLE_CHECKBOX_INDETERMINATE:_?_conf.default.icon.TABLE_CHECKBOX_CHECKED:_conf.default.icon.TABLE_CHECKBOX_UNCHECKED]})),(C||s)&&c.push((0,_vue.h)("span",{class:"vxe-checkbox--label"},C?t.callSlot(C,o):_xeUtils.default.get(r,s))),[(0,_vue.h)("span",__assign({class:["vxe-cell--checkbox",{"is--checked":_,"is--disabled":p,"is--indeterminate":f}]},e),c)])},renderTreeSelectionCell:function(e){return Cell.renderTreeIcon(e,Cell.renderCheckboxCell(e))},renderCheckboxCellByProp:function(l){var e,t=l.$table,r=l.row,n=l.column,o=l.isHidden,a=t.props,i=t.reactData,a=a.treeConfig,i=i.treeIndeterminateMaps,c=t.getComputeMaps().computeCheckboxOpts.value,d=c.labelField,s=c.checkField,u=c.checkMethod,C=c.visibleMethod,c=c.indeterminateField||c.halfField,n=n.slots,f=n?n.default:null,n=n?n.checkbox:null,_=!1,v=!1,p=!C||C({row:r}),E=!!u,o=(o||(C=(0,_util.getRowid)(t,r),v=_xeUtils.default.get(r,s),e={onClick:function(e){!E&&p&&(e.stopPropagation(),t.triggerCheckRowEvent(e,l,!v))}},u&&(E=!u({row:r})),a&&(_=!!i[C])),__assign(__assign({},l),{checked:v,disabled:E,visible:p,indeterminate:_}));return n?t.callSlot(n,o):(s=[],p&&(s.push((0,_vue.h)("span",{class:["vxe-checkbox--icon",_?_conf.default.icon.TABLE_CHECKBOX_INDETERMINATE:v?_conf.default.icon.TABLE_CHECKBOX_CHECKED:_conf.default.icon.TABLE_CHECKBOX_UNCHECKED]})),f||d)&&s.push((0,_vue.h)("span",{class:"vxe-checkbox--label"},f?t.callSlot(f,o):_xeUtils.default.get(r,d))),[(0,_vue.h)("span",__assign({class:["vxe-cell--checkbox",{"is--checked":v,"is--disabled":E,"is--indeterminate":c&&!v?r[c]:_}]},e),s)])},renderTreeSelectionCellByProp:function(e){return Cell.renderTreeIcon(e,Cell.renderCheckboxCellByProp(e))},renderExpandCell:function(l){var t=l.$table,e=l.isHidden,r=l.row,n=l.column,o=t.reactData,a=o.rowExpandedMaps,o=o.rowExpandLazyLoadedMaps,i=t.getComputeMaps().computeExpandOpts.value,c=i.lazy,d=i.labelField,s=i.iconLoaded,u=i.showIcon,C=i.iconOpen,f=i.iconClose,i=i.visibleMethod,n=n.slots,_=n?n.default:null,n=n?n.icon:null,v=!1,p=!1;return n?t.callSlot(n,l):(e||(v=!!a[n=(0,_util.getRowid)(t,r)],c&&(p=!!o[n])),[!u||i&&!i(l)?null:(0,_vue.h)("span",{class:["vxe-table--expanded",{"is--active":v}],onClick:function(e){e.stopPropagation(),t.triggerRowExpandEvent(e,l)}},[(0,_vue.h)("i",{class:["vxe-table--expand-btn",p?s||_conf.default.icon.TABLE_EXPAND_LOADED:v?C||_conf.default.icon.TABLE_EXPAND_OPEN:f||_conf.default.icon.TABLE_EXPAND_CLOSE]})]),_||d?(0,_vue.h)("span",{class:"vxe-table--expand-label"},_?t.callSlot(_,l):_xeUtils.default.get(r,d)):null])},renderExpandData:function(e){var l=e.$table,t=e.column,r=t.slots,t=t.contentRender,r=r?r.content:null;if(r)return l.callSlot(r,e);if(t){l=_vXETable.VXETable.renderer.get(t.name);if(l&&l.renderExpand)return(0,_vn.getSlotVNs)(l.renderExpand(t,e))}return[]},renderHTMLCell:function(e){var l=e.$table,t=e.column.slots,t=t?t.default:null;return t?l.callSlot(t,e):[(0,_vue.h)("span",{class:"vxe-cell--html",innerHTML:getDefaultCellLabel(e)})]},renderTreeHTMLCell:function(e){return Cell.renderTreeIcon(e,Cell.renderHTMLCell(e))},renderSortAndFilterHeader:function(e){return Cell.renderDefaultHeader(e).concat(Cell.renderSortIcon(e)).concat(Cell.renderFilterIcon(e))},renderSortHeader:function(e){return Cell.renderDefaultHeader(e).concat(Cell.renderSortIcon(e))},renderSortIcon:function(e){var l=e.$table,t=e.column,e=l.getComputeMaps().computeSortOpts.value,r=e.showIcon,n=e.iconLayout,o=e.iconAsc,e=e.iconDesc,a=t.order;return r?[(0,_vue.h)("span",{class:["vxe-cell--sort","vxe-cell--sort-".concat(n,"-layout")]},[(0,_vue.h)("i",{class:["vxe-sort--asc-btn",o||_conf.default.icon.TABLE_SORT_ASC,{"sort--active":"asc"===a}],title:_conf.default.i18n("vxe.table.sortAsc"),onClick:function(e){e.stopPropagation(),l.triggerSortEvent(e,t,"asc")}}),(0,_vue.h)("i",{class:["vxe-sort--desc-btn",e||_conf.default.icon.TABLE_SORT_DESC,{"sort--active":"desc"===a}],title:_conf.default.i18n("vxe.table.sortDesc"),onClick:function(e){e.stopPropagation(),l.triggerSortEvent(e,t,"desc")}})])]:[]},renderFilterHeader:function(e){return Cell.renderDefaultHeader(e).concat(Cell.renderFilterIcon(e))},renderFilterIcon:function(l){var t=l.$table,e=l.column,r=l.hasFilter,n=t.reactData.filterStore,o=t.getComputeMaps().computeFilterOpts.value,a=o.showIcon,i=o.iconNone,o=o.iconMatch;return a?[(0,_vue.h)("span",{class:["vxe-cell--filter",{"is--active":n.visible&&n.column===e}]},[(0,_vue.h)("i",{class:["vxe-filter--btn",r?o||_conf.default.icon.TABLE_FILTER_MATCH:i||_conf.default.icon.TABLE_FILTER_NONE],title:_conf.default.i18n("vxe.table.filter"),onClick:function(e){t.triggerFilterEvent&&t.triggerFilterEvent(e,l.column,l)}})])]:[]},renderEditHeader:function(e){var l=e.$table,t=e.column,r=l.props,l=l.getComputeMaps().computeEditOpts,n=r.editConfig,r=r.editRules,l=l.value,o=t.sortable,a=t.filters,i=t.editRender,c=!1;return r&&(r=_xeUtils.default.get(r,t.field))&&(c=r.some(function(e){return e.required})),((0,_utils.isEnableConf)(n)?[c&&l.showAsterisk?(0,_vue.h)("i",{class:"vxe-cell--required-icon"}):null,(0,_utils.isEnableConf)(i)&&l.showIcon?(0,_vue.h)("i",{class:["vxe-cell--edit-icon",l.icon||_conf.default.icon.TABLE_EDIT]}):null]:[]).concat(Cell.renderDefaultHeader(e)).concat(o?Cell.renderSortIcon(e):[]).concat(a?Cell.renderFilterIcon(e):[])},renderRowEdit:function(e){var l=e.$table,t=e.column,l=l.reactData.editStore.actived,t=t.editRender;return Cell.runRenderer(e,(0,_utils.isEnableConf)(t)&&l&&l.row===e.row)},renderTreeRowEdit:function(e){return Cell.renderTreeIcon(e,Cell.renderRowEdit(e))},renderCellEdit:function(e){var l=e.$table,t=e.column,l=l.reactData.editStore.actived,t=t.editRender;return Cell.runRenderer(e,(0,_utils.isEnableConf)(t)&&l&&l.row===e.row&&l.column===e.column)},renderTreeCellEdit:function(e){return Cell.renderTreeIcon(e,Cell.renderCellEdit(e))},runRenderer:function(e,l){var t=e.$table,r=e.column,n=r.slots,o=r.editRender,r=r.formatter,a=n?n.default:null,n=n?n.edit:null,i=_vXETable.VXETable.renderer.get(o.name);return l?n?t.callSlot(n,e):i&&i.renderEdit?(0,_vn.getSlotVNs)(i.renderEdit(o,Object.assign({$type:"edit"},e))):[]:a?t.callSlot(a,e):r?[(0,_vue.h)("span",{class:"vxe-cell--label"},getDefaultCellLabel(e))]:Cell.renderDefaultCell(e)}},_default=exports.Cell=Cell;exports.default=_default;