vxe-table
Version:
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、虚拟列表、模态窗口、自定义模板、渲染器、贼灵活的配置项、扩展接口等...
1 lines • 3.28 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _ctor=_interopRequireDefault(require("xe-utils/ctor")),_tools=require("../../tools"),_vXETable=_interopRequireDefault(require("../../v-x-e-table"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default={methods:{_setFilter:function(e,t){return e.filters&&t&&(e.filters=_tools.UtilTools.getFilters(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,a,t){var c=this,u=this.filterStore;if(u.column===a&&u.visible)u.visible=!1;else{var h=e.target,d=e.pageX,p=_tools.DomTools.getDomNode().visibleWidth;Object.assign(u,{args:t,multiple:a.filterMultiple,options:a.filters,column:a,style:null,visible:!0}),u.options.forEach(function(e){e._checked=e.checked}),this.checkFilterOptions(),this.initStore.filter=!0,this.$nextTick(function(){var e,t,i=c.$refs,l=i.tableBody.$el,r=i.filterWrapper.$el.offsetWidth,o=r/2,s={top:"".concat(h.offsetTop+h.offsetParent.offsetTop+h.offsetHeight+8,"px")};if("left"===a.fixed?e=h.offsetLeft+h.offsetParent.offsetLeft-o:"right"===a.fixed?t=h.offsetParent.offsetWidth-h.offsetLeft+(h.offsetParent.offsetParent.offsetWidth-h.offsetParent.offsetLeft)-a.renderWidth-o:e=h.offsetLeft+h.offsetParent.offsetLeft-o-l.scrollLeft,e){var f=d+r-o+32-p;0<f&&(e-=f),s.left="".concat(Math.max(32,e),"px")}else if(t){var n=d+r-o+32-p;0<n&&(t+=n),s.right="".concat(t,"px")}u.style=s})}},_getCheckedFilters:function(){var e=this.visibleColumn,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 t=this,i=this.filterStore,l=this.remoteFilter,r=this.filterOpts,o=this.scrollXLoad,s=this.scrollYLoad,f=i.column,n=f.property,a=[],c=[];f.filters.forEach(function(e){e.checked&&(a.push(e.value),c.push(e.data))}),i.visible=!1,r.remote||l||(this.handleTableData(!0),this.checkSelectionStatus()),this.emitEvent("filter-change",{column:f,property:n,values:a,datas:c,filters:this.getCheckedFilters()},e),this.updateFooter(),(o||s)&&(this.clearScroll(),s&&this.updateScrollYSpace()),this.closeFilter(),this.$nextTick(function(){t.recalculate(),t.updateCellAreas()})},handleClearFilter:function(e){if(e){var t=e.filters,i=e.filterRender;if(t){t.forEach(function(e){e._checked=!1,e.checked=!1,e.data=_ctor.default.clone(e.resetValue,!0)});var l=i?_vXETable.default.renderer.get(i.name):null;l&&l.filterResetMethod&&l.filterResetMethod({options:t,column:e,$table:this})}}},resetFilterEvent:function(e){this.handleClearFilter(this.filterStore.column),this.confirmFilterEvent(e)},_clearFilter:function(e){arguments.length&&_ctor.default.isString(e)&&(e=this.getColumnByField(e));var t=this.filterStore;return e?this.handleClearFilter(e):this.visibleColumn.forEach(this.handleClearFilter),e&&e===t.column||Object.assign(t,{isAllSelected:!1,isIndeterminate:!1,style:null,options:[],column:null,multiple:!1,visible:!1}),this.updateData()}}};exports.default=_default;