UNPKG

vhb-table

Version:

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

1 lines 13 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_conf=_interopRequireDefault(require("../../v-h-b-table/src/conf")),_vHBTable=_interopRequireDefault(require("../../v-h-b-table")),_size=_interopRequireDefault(require("../../mixins/size")),_utils=_interopRequireDefault(require("../../tools/utils")),_dom=_interopRequireDefault(require("../../tools/dom")),_event=require("../../tools/event"),_log=require("../../tools/log");function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}function _defineProperty(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}var renderDropdowns=function(t,o,e,n){var i=o._e,s=e.dropdowns;return s?s.map(function(e){return!1===e.visible?i():t("vhb-button",{on:{click:function(t){return n?o.btnEvent(t,e):o.tolEvent(t,e)}},props:{disabled:e.disabled,loading:e.loading,type:e.type,icon:e.icon,circle:e.circle,round:e.round,status:e.status,content:e.name}})}):[]};function renderBtns(s,r){var l=r._e,t=r.$scopedSlots,c=r.$xegrid,a=r.$xetable,e=r.buttons,o=void 0===e?[]:e,n=t.buttons;return n?n.call(r,{$grid:c,$table:a},s):o.map(function(e){var t=e.dropdowns,o=e.buttonRender,n=o?_vHBTable.default.renderer.get(o.name):null;if(!1===e.visible)return l();if(n){var i=n.renderToolbarButton||n.renderButton;if(i)return s("span",{class:"vhb-button--item"},i.call(r,s,o,{$grid:c,$table:a,button:e}))}return s("vhb-button",{on:{click:function(t){return r.btnEvent(t,e)}},props:{disabled:e.disabled,loading:e.loading,type:e.type,icon:e.icon,circle:e.circle,round:e.round,status:e.status,content:e.name,destroyOnClose:e.destroyOnClose,placement:e.placement,transfer:e.transfer},scopedSlots:t&&t.length?{dropdowns:function(){return renderDropdowns(s,r,e,!0)}}:null})})}function renderRightTools(s,r){var l=r._e,t=r.$scopedSlots,c=r.$xegrid,a=r.$xetable,e=r.tools,o=void 0===e?[]:e,n=t.tools;return n?n.call(r,{$grid:c,$table:a},s):o.map(function(e){var t=e.dropdowns,o=e.toolRender,n=o?_vHBTable.default.renderer.get(o.name):null;if(!1===e.visible)return l();if(n){var i=n.renderToolbarTool;if(i)return s("span",{class:"vhb-tool--item"},i.call(r,s,o,{$grid:c,$table:a,tool:e}))}return s("vhb-button",{on:{click:function(t){return r.tolEvent(t,e)}},props:{disabled:e.disabled,loading:e.loading,type:e.type,icon:e.icon,circle:e.circle,round:e.round,status:e.status,content:e.name,destroyOnClose:e.destroyOnClose,placement:e.placement,transfer:e.transfer},scopedSlots:t&&t.length?{dropdowns:function(){return renderDropdowns(s,r,e,!1)}}:null})})}function renderCustoms(s,r){var t=r.$xetable,e=r.customStore,o=r.customOpts,n=r.columns,l=[],i={},c={},a=t?t.customOpts.checkMethod:null;return"manual"===o.trigger||("hover"===o.trigger?(i.mouseenter=r.handleMouseenterSettingEvent,i.mouseleave=r.handleMouseleaveSettingEvent,c.mouseenter=r.handleWrapperMouseenterEvent,c.mouseleave=r.handleWrapperMouseleaveEvent):i.click=r.handleClickSettingEvent),_xeUtils.default.eachTree(n,function(t){var e=_utils.default.formatText(t.getTitle(),1),o=t.getKey(),n=t.children&&t.children.length,i=!!a&&!a({column:t});(n||o)&&l.push(s("li",{class:["vhb-custom--option","level--".concat(t.level),{"is--group":n,"is--checked":t.visible,"is--indeterminate":t.halfVisible,"is--disabled":i}],attrs:{title:e},on:{click:function(){i||r.changeCustomOption(t)}}},[s("span",{class:"vhb-checkbox--icon vhb-checkbox--checked-icon"}),s("span",{class:"vhb-checkbox--icon vhb-checkbox--unchecked-icon"}),s("span",{class:"vhb-checkbox--icon vhb-checkbox--indeterminate-icon"}),s("span",{class:"vhb-checkbox--label"},e)]))}),s("div",{class:["vhb-custom--wrapper",{"is--active":e.visible}],ref:"customWrapper"},[s("vhb-button",{props:{circle:!0,icon:o.icon||_conf.default.icon.TOOLBAR_TOOLS_CUSTOM},attrs:{title:_conf.default.i18n("vhb.toolbar.custom")},on:i}),s("div",{class:"vhb-custom--option-wrapper"},[s("ul",{class:"vhb-custom--header"},[s("li",{class:["vhb-custom--option",{"is--checked":e.isAll,"is--indeterminate":e.isIndeterminate}],attrs:{title:_conf.default.i18n("vhb.table.allTitle")},on:{click:r.allCustomEvent}},[s("span",{class:"vhb-checkbox--icon vhb-checkbox--checked-icon"}),s("span",{class:"vhb-checkbox--icon vhb-checkbox--unchecked-icon"}),s("span",{class:"vhb-checkbox--icon vhb-checkbox--indeterminate-icon"}),s("span",{class:"vhb-checkbox--label"},_conf.default.i18n("vhb.toolbar.customAll"))])]),s("ul",{class:"vhb-custom--body",on:c},l),!1===o.isFooter?null:s("div",{class:"vhb-custom--footer"},[s("button",{class:"btn--confirm",on:{click:r.confirmCustomEvent}},_conf.default.i18n("vhb.toolbar.customConfirm")),s("button",{class:"btn--reset",on:{click:r.resetCustomEvent}},_conf.default.i18n("vhb.toolbar.customRestore"))])])])}var _default2={name:"VhbToolbar",mixins:[_size.default],props:{loading:Boolean,refresh:[Boolean,Object],import:[Boolean,Object],export:[Boolean,Object],print:[Boolean,Object],zoom:[Boolean,Object],custom:[Boolean,Object],buttons:{type:Array,default:function(){return _conf.default.toolbar.buttons}},tools:{type:Array,default:function(){return _conf.default.toolbar.tools}},perfect:{type:Boolean,default:function(){return _conf.default.toolbar.perfect}},size:{type:String,default:function(){return _conf.default.toolbar.size||_conf.default.size}},className:[String,Function]},inject:{$xegrid:{default:null}},data:function(){return{$xetable:null,isRefresh:!1,columns:[],customStore:{isAll:!1,isIndeterminate:!1,visible:!1}}},computed:{refreshOpts:function(){return Object.assign({},_conf.default.toolbar.refresh,this.refresh)},importOpts:function(){return Object.assign({},_conf.default.toolbar.import,this.import)},exportOpts:function(){return Object.assign({},_conf.default.toolbar.export,this.export)},printOpts:function(){return Object.assign({},_conf.default.toolbar.print,this.print)},zoomOpts:function(){return Object.assign({},_conf.default.toolbar.zoom,this.zoom)},customOpts:function(){return Object.assign({},_conf.default.toolbar.custom,this.custom)}},created:function(){var e=this,o=this.refresh,n=this.refreshOpts;this.$nextTick(function(){var t=e.fintTable();!o||e.$xegrid||n.query||(0,_log.warnLog)("vhb.error.notFunc",["query"]),t&&t.connect(e),"development"===process.env.NODE_ENV&&e.buttons&&e.buttons.forEach(function(t){var e=t.buttonRender,o=e?_vHBTable.default.renderer.get(e.name):null;o&&o.renderButton&&(0,_log.warnLog)("vhb.error.delFunc",["renderButton","renderToolbarButton"])})}),_event.GlobalEvent.on(this,"mousedown",this.handleGlobalMousedownEvent),_event.GlobalEvent.on(this,"blur",this.handleGlobalBlurEvent)},destroyed:function(){_event.GlobalEvent.off(this,"mousedown"),_event.GlobalEvent.off(this,"blur")},render:function(t){var e,o=this._e,n=this.$xegrid,i=this.perfect,s=this.loading,r=this.importOpts,l=this.exportOpts,c=this.refresh,a=this.refreshOpts,u=this.zoom,h=this.zoomOpts,f=this.custom,d=this.vSize,b=this.className;return t("div",{class:["vhb-toolbar",b?_xeUtils.default.isFunction(b)?b({$toolbar:this}):b:"",(e={},_defineProperty(e,"size--".concat(d),d),_defineProperty(e,"is--perfect",i),_defineProperty(e,"is--loading",s),e)]},[t("div",{class:"vhb-buttons--wrapper"},renderBtns(t,this)),t("div",{class:"vhb-tools--wrapper"},renderRightTools(t,this)),t("div",{class:"vhb-tools--operate"},[this.import?t("vhb-button",{props:{circle:!0,icon:r.icon||_conf.default.icon.TOOLBAR_TOOLS_IMPORT},attrs:{title:_conf.default.i18n("vhb.toolbar.import")},on:{click:this.importEvent}}):o(),this.export?t("vhb-button",{props:{circle:!0,icon:l.icon||_conf.default.icon.TOOLBAR_TOOLS_EXPORT},attrs:{title:_conf.default.i18n("vhb.toolbar.export")},on:{click:this.exportEvent}}):o(),this.print?t("vhb-button",{props:{circle:!0,icon:this.printOpts.icon||_conf.default.icon.TOOLBAR_TOOLS_PRINT},attrs:{title:_conf.default.i18n("vhb.toolbar.print")},on:{click:this.printEvent}}):o(),c?t("vhb-button",{props:{circle:!0,icon:this.isRefresh?a.iconLoading||_conf.default.icon.TOOLBAR_TOOLS_REFRESH_LOADING:a.icon||_conf.default.icon.TOOLBAR_TOOLS_REFRESH},attrs:{title:_conf.default.i18n("vhb.toolbar.refresh")},on:{click:this.refreshEvent}}):o(),u&&n?t("vhb-button",{props:{circle:!0,icon:n.isMaximized()?h.iconOut||_conf.default.icon.TOOLBAR_TOOLS_ZOOM_OUT:h.iconIn||_conf.default.icon.TOOLBAR_TOOLS_ZOOM_IN},attrs:{title:_conf.default.i18n("vhb.toolbar.zoom".concat(n.isMaximized()?"Out":"In"))},on:{click:n.triggerZoomEvent}}):o(),f?renderCustoms(t,this):o()])])},methods:{syncUpdate:function(t){var e=t.collectColumn,o=t.$table;this.$xetable=o,this.columns=e},fintTable:function(){var t=this.$parent.$children,o=t.indexOf(this);return _xeUtils.default.find(t,function(t,e){return t&&t.loadData&&o<e&&"vhb-table"===t.$vnode.componentOptions.tag})},checkTable:function(){if(this.$xetable)return!0;(0,_log.errLog)("vhb.error.barUnableLink")},showCustom:function(){this.customStore.visible=!0,this.checkCustomStatus()},closeCustom:function(){var t=this.custom,e=this.customStore;e.visible&&(e.visible=!1,t&&!e.immediate&&this.handleTableCustom())},confirmCustomEvent:function(t){this.closeCustom(),this.emitCustomEvent("confirm",t)},customOpenEvent:function(t){var e=this.customStore;this.checkTable()&&(e.visible||(this.showCustom(),this.emitCustomEvent("open",t)))},customColseEvent:function(t){this.customStore.visible&&(this.closeCustom(),this.emitCustomEvent("close",t))},resetCustomEvent:function(t){var e=this.$xetable,o=this.columns,n=e.customOpts.checkMethod;_xeUtils.default.eachTree(o,function(t){n&&!n({column:t})||(t.visible=t.defaultVisible,t.halfVisible=!1),t.resizeWidth=0}),e.saveCustomResizable(!0),this.closeCustom(),this.emitCustomEvent("reset",t)},emitCustomEvent:function(t,e){var o=this.$xetable,n=this.$xegrid;(n||o).$emit("custom",{type:t,$table:o,$grid:n,$event:e})},changeCustomOption:function(t){var e=!t.visible;_xeUtils.default.eachTree([t],function(t){t.visible=e,t.halfVisible=!1}),this.handleOptionCheck(t),this.custom&&this.customOpts.immediate&&this.handleTableCustom(),this.checkCustomStatus()},handleOptionCheck:function(e){var t=_xeUtils.default.findTree(this.columns,function(t){return t===e});if(t&&t.parent){var o=t.parent;o.children&&o.children.length&&(o.visible=o.children.every(function(t){return t.visible}),o.halfVisible=!o.visible&&o.children.some(function(t){return t.visible||t.halfVisible}),this.handleOptionCheck(o))}},handleTableCustom:function(){this.$xetable.handleCustom()},checkCustomStatus:function(){var t=this.$xetable,e=this.columns,o=t.customOpts.checkMethod;this.customStore.isAll=e.every(function(t){return!!o&&!o({column:t})||t.visible}),this.customStore.isIndeterminate=!this.customStore.isAll&&e.some(function(t){return(!o||o({column:t}))&&(t.visible||t.halfVisible)})},allCustomEvent:function(){var t=this.$xetable,e=this.columns,o=this.customStore,n=t.customOpts.checkMethod,i=!o.isAll;_xeUtils.default.eachTree(e,function(t){n&&!n({column:t})||(t.visible=i,t.halfVisible=!1)}),o.isAll=i,this.checkCustomStatus()},handleGlobalMousedownEvent:function(t){_dom.default.getEventTargetNode(t,this.$refs.customWrapper).flag||this.customColseEvent(t)},handleGlobalBlurEvent:function(t){this.customColseEvent(t)},handleClickSettingEvent:function(t){this.customStore.visible?this.customColseEvent(t):this.customOpenEvent(t)},handleMouseenterSettingEvent:function(t){this.customStore.activeBtn=!0,this.customOpenEvent(t)},handleMouseleaveSettingEvent:function(t){var e=this,o=this.customStore;o.activeBtn=!1,setTimeout(function(){o.activeBtn||o.activeWrapper||e.customColseEvent(t)},300)},handleWrapperMouseenterEvent:function(t){this.customStore.activeWrapper=!0,this.customOpenEvent(t)},handleWrapperMouseleaveEvent:function(t){var e=this,o=this.customStore;o.activeWrapper=!1,setTimeout(function(){o.activeBtn||o.activeWrapper||e.customColseEvent(t)},300)},refreshEvent:function(){var t=this,e=this.$xegrid,o=this.refreshOpts;if(!this.isRefresh)if(o.query){this.isRefresh=!0;try{Promise.resolve(o.query()).catch(function(t){return t}).then(function(){t.isRefresh=!1})}catch(t){this.isRefresh=!1}}else e&&(this.isRefresh=!0,e.commitProxy("reload").catch(function(t){return t}).then(function(){t.isRefresh=!1}))},btnEvent:function(t,e){var o=this.$xegrid,n=this.$xetable,i=e.code;if(i)if(o)o.triggerToolbarBtnEvent(e,t);else{var s=_vHBTable.default.commands.get(i),r={code:i,button:e,$xegrid:o,$table:n,$event:t};s&&s.call(this,r,t),this.$emit("button-click",r)}},tolEvent:function(t,e){var o=this.$xegrid,n=this.$xetable,i=e.code;if(i)if(o)o.triggerToolbarTolEvent(e,t);else{var s=_vHBTable.default.commands.get(i),r={code:i,tool:e,$xegrid:o,$table:n,$event:t};s&&s.call(this,r,t),this.$emit("tool-click",r)}},importEvent:function(){this.checkTable()&&this.$xetable.openImport(this.importOpts)},exportEvent:function(){this.checkTable()&&this.$xetable.openExport(this.exportOpts)},printEvent:function(){this.checkTable()&&this.$xetable.openPrint(this.printOpts)}}};exports.default=_default2;