vxe-table-select-area
Version:
一个基于 vxe-table 的可区域选中复制、粘贴的组件
1 lines • 13.7 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_conf=_interopRequireDefault(require("../../v-x-e-table/src/conf")),_vXETable=_interopRequireDefault(require("../../v-x-e-table")),_size=_interopRequireDefault(require("../../mixins/size")),_utils=_interopRequireDefault(require("../../tools/utils")),_dom=_interopRequireDefault(require("../../tools/dom")),_vn=require("../../tools/vn"),_event=require("../../tools/event"),_log=require("../../tools/log");function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _defineProperty(t,e,o){return(e=_toPropertyKey(e))in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}function _toPropertyKey(t){t=_toPrimitive(t,"string");return"symbol"===_typeof(t)?t:String(t)}function _toPrimitive(t,e){if("object"!==_typeof(t)||null===t)return t;var o=t[Symbol.toPrimitive];if(void 0===o)return("string"===e?String:Number)(t);o=o.call(t,e||"default");if("object"!==_typeof(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}var renderDropdowns=function(t,o,e,n){var i=o._e,e=e.dropdowns;return e?e.map(function(e){return!1===e.visible?i():t("vxe-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(i,s){var r=s._e,t=s.$scopedSlots,l=s.$xegrid,c=s.$xetable,e=s.buttons,e=void 0===e?[]:e,t=t.buttons;return t?t.call(s,{$grid:l,$table:c},i):e.map(function(e){var t=e.dropdowns,o=e.buttonRender,n=o?_vXETable.default.renderer.get(o.name):null;if(!1===e.visible)return r();if(n){n=n.renderToolbarButton||n.renderButton;if(n)return i("span",{class:"vxe-button--item"},(0,_vn.getSlotVNs)(n.call(s,i,o,{$grid:l,$table:c,button:e})))}return i("vxe-button",{on:{click:function(t){return s.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(i,s,e,!0)}}:null})})}function renderRightTools(i,s){var r=s._e,t=s.$scopedSlots,l=s.$xetable,c=s.$xegrid,e=s.tools,e=void 0===e?[]:e,t=t.tools;return t?t.call(s,{$table:l,$grid:c},i):e.map(function(e){var t=e.dropdowns,o=e.toolRender,n=o?_vXETable.default.renderer.get(o.name):null;if(!1===e.visible)return r();if(n){n=n.renderToolbarTool;if(n)return i("span",{class:"vxe-tool--item"},(0,_vn.getSlotVNs)(n.call(s,i,o,{$table:l,$grid:c,tool:e})))}return i("vxe-button",{on:{click:function(t){return s.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(i,s,e,!1)}}:null})})}function renderCustoms(r,l){var t=l.$xetable,e=l.customStore,o=l.customOpts,n=l.columns,c=[],i={},s={},u=t?t.customOpts.checkMethod:null,t=("manual"!==o.trigger&&("hover"===o.trigger?(i.mouseenter=l.handleMouseenterSettingEvent,i.mouseleave=l.handleMouseleaveSettingEvent,s.mouseenter=l.handleWrapperMouseenterEvent,s.mouseleave=l.handleWrapperMouseleaveEvent):i.click=l.handleClickSettingEvent),_xeUtils.default.eachTree(n,function(t){var e,o=_utils.default.formatText(t.getTitle(),1),n=t.getKey(),i=t.children&&t.children.length,s=!!u&&!u({column:t});(i||n)&&(n=t.visible,e=t.halfVisible,c.push(r("li",{class:["vxe-custom--option","level--".concat(t.level),{"is--group":i,"is--checked":n,"is--indeterminate":e,"is--disabled":s}],attrs:{title:o},on:{click:function(){s||l.changeCustomOption(t)}}},[r("span",{class:["vxe-checkbox--icon",e?_conf.default.icon.TABLE_CHECKBOX_INDETERMINATE:n?_conf.default.icon.TABLE_CHECKBOX_CHECKED:_conf.default.icon.TABLE_CHECKBOX_UNCHECKED]}),r("span",{class:"vxe-checkbox--label"},o)])))}),e.isAll),n=e.isIndeterminate;return r("div",{class:["vxe-custom--wrapper",{"is--active":e.visible}],ref:"customWrapper"},[r("vxe-button",{props:{circle:!0,icon:o.icon||_conf.default.icon.TOOLBAR_TOOLS_CUSTOM},attrs:{title:_conf.default.i18n("vxe.toolbar.custom")},on:i}),r("div",{class:"vxe-custom--option-wrapper"},[r("ul",{class:"vxe-custom--header"},[r("li",{class:["vxe-custom--option",{"is--checked":t,"is--indeterminate":n}],attrs:{title:_conf.default.i18n("vxe.table.allTitle")},on:{click:l.allCustomEvent}},[r("span",{class:["vxe-checkbox--icon",n?_conf.default.icon.TABLE_CHECKBOX_INDETERMINATE:t?_conf.default.icon.TABLE_CHECKBOX_CHECKED:_conf.default.icon.TABLE_CHECKBOX_UNCHECKED]}),r("span",{class:"vxe-checkbox--label"},_conf.default.i18n("vxe.toolbar.customAll"))])]),r("ul",{class:"vxe-custom--body",on:s},c),!1===o.isFooter?null:r("div",{class:"vxe-custom--footer"},[r("button",{class:"btn--confirm",on:{click:l.confirmCustomEvent}},_conf.default.i18n("vxe.toolbar.customConfirm")),r("button",{class:"btn--reset",on:{click:l.resetCustomEvent}},_conf.default.i18n("vxe.toolbar.customRestore"))])])])}var _default2={name:"VxeToolbar",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 o=this,n=this.refresh,i=this.refreshOpts;this.$nextTick(function(){var t=o.fintTable(),e=i.queryMethod||i.query;!n||o.$xegrid||e||(0,_log.warnLog)("vxe.error.notFunc",["queryMethod"]),t&&t.connect(o),"development"===process.env.NODE_ENV&&o.buttons&&o.buttons.forEach(function(t){t=t.buttonRender,t=t?_vXETable.default.renderer.get(t.name):null;t&&t.renderButton&&(0,_log.warnLog)("vxe.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=this._e,o=this.$xegrid,n=this.perfect,i=this.loading,s=this.importOpts,r=this.exportOpts,l=this.refresh,c=this.refreshOpts,u=this.zoom,a=this.zoomOpts,f=this.custom,d=this.vSize,h=this.className;return t("div",{class:["vxe-toolbar",h?_xeUtils.default.isFunction(h)?h({$toolbar:this}):h:"",(_defineProperty(h={},"size--".concat(d),d),_defineProperty(h,"is--perfect",n),_defineProperty(h,"is--loading",i),h)]},[t("div",{class:"vxe-buttons--wrapper"},renderBtns(t,this)),t("div",{class:"vxe-tools--wrapper"},renderRightTools(t,this)),t("div",{class:"vxe-tools--operate"},[this.import?t("vxe-button",{props:{circle:!0,icon:s.icon||_conf.default.icon.TOOLBAR_TOOLS_IMPORT},attrs:{title:_conf.default.i18n("vxe.toolbar.import")},on:{click:this.importEvent}}):e(),this.export?t("vxe-button",{props:{circle:!0,icon:r.icon||_conf.default.icon.TOOLBAR_TOOLS_EXPORT},attrs:{title:_conf.default.i18n("vxe.toolbar.export")},on:{click:this.exportEvent}}):e(),this.print?t("vxe-button",{props:{circle:!0,icon:this.printOpts.icon||_conf.default.icon.TOOLBAR_TOOLS_PRINT},attrs:{title:_conf.default.i18n("vxe.toolbar.print")},on:{click:this.printEvent}}):e(),l?t("vxe-button",{props:{circle:!0,icon:this.isRefresh?c.iconLoading||_conf.default.icon.TOOLBAR_TOOLS_REFRESH_LOADING:c.icon||_conf.default.icon.TOOLBAR_TOOLS_REFRESH},attrs:{title:_conf.default.i18n("vxe.toolbar.refresh")},on:{click:this.refreshEvent}}):e(),u&&o?t("vxe-button",{props:{circle:!0,icon:o.isMaximized()?a.iconOut||_conf.default.icon.TOOLBAR_TOOLS_MINIMIZE:a.iconIn||_conf.default.icon.TOOLBAR_TOOLS_FULLSCREEN},attrs:{title:_conf.default.i18n("vxe.toolbar.zoom".concat(o.isMaximized()?"Out":"In"))},on:{click:o.triggerZoomEvent}}):e(),f?renderCustoms(t,this):e()])])},methods:{syncUpdate:function(t){var e=t.collectColumn,t=t.$table;this.$xetable=t,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&&"vxe-table"===t.$vnode.componentOptions.tag})},checkTable:function(){if(this.$xetable)return!0;(0,_log.errLog)("vxe.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});t&&t.parent&&(t=t.parent).children&&t.children.length&&(t.visible=t.children.every(function(t){return t.visible}),t.halfVisible=!t.visible&&t.children.some(function(t){return t.visible||t.halfVisible}),this.handleOptionCheck(t))},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(t){var e=this,o=this.$xegrid,n=this.refreshOpts;if(!this.isRefresh){var i=n.queryMethod||n.query;if(i){this.isRefresh=!0;try{Promise.resolve(i({})).catch(function(t){return t}).then(function(){e.isRefresh=!1})}catch(t){this.isRefresh=!1}}else o&&(this.isRefresh=!0,o.triggerToolbarCommitEvent({code:n.code||"reload"},t).catch(function(t){return t}).then(function(){e.isRefresh=!1}))}},btnEvent:function(t,e){var o=this.$xegrid,n=this.$xetable,i=e.code;i&&(o?o.triggerToolbarBtnEvent(e,t):(e={code:i,button:e,$table:n,$grid:o,$event:t},(n=_vXETable.default.commands.get(i))&&n.call(this,e,t),this.$emit("button-click",e)))},tolEvent:function(t,e){var o=this.$xegrid,n=this.$xetable,i=e.code;i&&(o?o.triggerToolbarTolEvent(e,t):(e={code:i,tool:e,$xegrid:o,$table:n,$event:t},(o=_vXETable.default.commands.get(i))&&o.call(this,e,t),this.$emit("tool-click",e)))},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;