UNPKG

vhb-table

Version:

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

1 lines 4.53 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_dom=_interopRequireDefault(require("../../tools/dom")),_util=require("../../table/src/util"),_vHBTable=_interopRequireDefault(require("../../v-h-b-table"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default={methods:{_openFilter:function(e){var i=(0,_util.handleFieldOrColumn)(this,e);if(i&&i.filters){var l=this.elemStore,r=i.fixed;return this.scrollToColumn(i).then(function(){var e=l["".concat(r||"main","-header-wrapper")]||l["main-header-wrapper"];if(e){var t=e.querySelector(".vhb-header--column.".concat(i.id," .vhb-filter--btn"));_dom.default.triggerEvent(t,"click")}})}return this.$nextTick()},_setFilter:function(e,t){var i=(0,_util.handleFieldOrColumn)(this,e);return i&&i.filters&&t&&(i.filters=(0,_util.toFilters)(t)),this.$nextTick()},checkFilterOptions:function(){var e=this.filterStore;e.isAllSelected=e.options.every(function(e){return e._checked}),e.isIndeterminate=!e.isAllSelected&&e.options.some(function(e){return e._checked})},triggerFilterEvent:function(e,v,t){var m=this,_=this.filterStore;if(_.column===v&&_.visible)_.visible=!1;else{var b=e.target,g=e.pageX,i=v.filters,l=v.filterMultiple,r=v.filterRender,o=r?_vHBTable.default.renderer.get(r.name):null,n=v.filterRecoverMethod||(o?o.filterRecoverMethod:null),F=_dom.default.getDomNode().visibleWidth;Object.assign(_,{args:t,multiple:l,options:i,column:v,style:null,visible:!0}),_.options.forEach(function(e){var t=e._checked,i=e.checked;(e._checked=i)||t===i||n&&n({option:e,column:v,$table:m})}),this.checkFilterOptions(),this.initStore.filter=!0,this.$nextTick(function(){var e=m.$refs,t=e.tableBody.$el,i=e.filterWrapper.$el,l=0,r=0,o=null,n=null;i&&(l=i.offsetWidth,r=i.offsetHeight,o=i.querySelector(".vhb-table--filter-header"),n=i.querySelector(".vhb-table--filter-footer"));var s,a,f=l/2,u=t.clientWidth-l-10,c={top:"".concat(b.offsetTop+b.offsetParent.offsetTop+b.offsetHeight+8,"px")},h=null;if(r>=t.clientHeight&&(h=Math.max(60,t.clientHeight-(n?n.offsetHeight:0)-(o?o.offsetHeight:0))),"left"===v.fixed?s=b.offsetLeft+b.offsetParent.offsetLeft-f:"right"===v.fixed?a=b.offsetParent.offsetWidth-b.offsetLeft+(b.offsetParent.offsetParent.offsetWidth-b.offsetParent.offsetLeft)-v.renderWidth-f:s=b.offsetLeft+b.offsetParent.offsetLeft-f-t.scrollLeft,s){var d=g+l-f+10-F;0<d&&(s-=d),c.left="".concat(Math.min(u,Math.max(10,s)),"px")}else if(a){var p=g+l-f+10-F;0<p&&(a+=p),c.right="".concat(Math.max(10,a),"px")}_.style=c,_.maxHeight=h})}this.emitEvent("filter-visible",{column:v,property:v.property,filterList:this.getCheckedFilters(),visible:_.visible},e)},_getCheckedFilters:function(){var e=this.tableFullColumn,o=[];return e.filter(function(e){var t=e.property,i=e.filters,l=[],r=[];i&&i.length&&(i.forEach(function(e){e.checked&&(l.push(e.value),r.push(e.data))}),l.length&&o.push({column:e,property:t,values:l,datas:r}))}),o},confirmFilterEvent:function(e){var i=this,t=this.filterStore,l=this.filterOpts,r=this.scrollXLoad,o=this.scrollYLoad,n=t.column,s=n.property,a=[],f=[];n.filters.forEach(function(e){e.checked&&(a.push(e.value),f.push(e.data))});var u=this.getCheckedFilters();l.remote||(this.handleTableData(!0),this.checkSelectionStatus()),this.emitEvent("filter-change",{column:n,property:s,values:a,datas:f,filters:u,filterList:u},e),this.closeFilter(),this.updateFooter().then(function(){var e=i.scrollXLoad,t=i.scrollYLoad;if(r||e||o||t)return(r||e)&&i.updateScrollXSpace(),(o||t)&&i.updateScrollYSpace(),i.refreshScroll()}).then(function(){return i.updateCellAreas(),i.recalculate(!0)}).then(function(){setTimeout(function(){return i.recalculate()},50)})},handleClearFilter:function(e){if(e){var t=e.filters,i=e.filterRender;if(t){var l=i?_vHBTable.default.renderer.get(i.name):null,r=e.filterResetMethod||(l?l.filterResetMethod:null);t.forEach(function(e){e._checked=!1,e.checked=!1,r||(e.data=_xeUtils.default.clone(e.resetValue,!0))}),r&&r({options:t,column:e,$table:this})}}},resetFilterEvent:function(e){this.handleClearFilter(this.filterStore.column),this.confirmFilterEvent(e)},_clearFilter:function(e){var t,i=this.filterStore;return e?(t=(0,_util.handleFieldOrColumn)(this,e))&&this.handleClearFilter(t):this.visibleColumn.forEach(this.handleClearFilter),e&&t===i.column||Object.assign(i,{isAllSelected:!1,isIndeterminate:!1,style:null,options:[],column:null,multiple:!1,visible:!1}),this.updateData()}}};exports.default=_default;