UNPKG

vxe-table

Version:

A PC-end table component based on Vxe UI, supporting copy-paste, data pivot table, and high-performance virtual list table solution.

1 lines • 7.8 kB
var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../../ui"),_util=require("../../src/util"),_dom=require("../../../ui/src/dom"),_utils=require("../../../ui/src/utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{renderer,hooks}=_ui.VxeUI,tableFilterMethodKeys=["openFilter","setFilter","clearFilter","saveFilter","saveFilterByEvent","saveFilterPanel","saveFilterPanelByEvent","resetFilter","resetFilterByEvent","resetFilterPanel","resetFilterPanelByEvent","getCheckedFilters","updateFilterOptionStatus"],sourceType="table";hooks.add("tableFilterModule",{setupTable(s){let a=s.xeGrid,u=s.xeGantt,x=a||u,{props:h,reactData:k,internalData:o}=s,{refElem:l,refTableFilter:r}=s.getRefMaps(),{computeFilterOpts:E,computeMouseOpts:f}=s.getComputeMaps(),d=()=>{let d=k.filterStore,c=o.elemStore,{column:s,targetEl:h}=d;if(!s)return(0,_vue.nextTick)();let f=l.value;let{maxHeight:v,transfer:m,zIndex:F}=E.value;var e=s?s.filterRender:null;let p=e&&(0,_utils.isEnableConf)(e)?renderer.get(e.name):null;if(!(0,_util.getRefElem)(c["main-header-scroll"]))return(0,_vue.nextTick)();e=r.value;let _=e?e.getRefMaps().refElem.value:null;if(!_)return(0,_vue.nextTick)();let C=_.querySelector(".vxe-table--filter-header"),g=_.querySelector(".vxe-table--filter-footer"),t=()=>{let e=h;if(h||(r=(r=(0,_util.getRefElem)(c[`${s.fixed||"main"}-header-wrapper`]||c["main-header-wrapper"]))?r.querySelector(".vxe-header--column."+s.id):null)&&(e=r),!e)return(0,_vue.nextTick)();var t,l,r=e.getBoundingClientRect(),i=f.getBoundingClientRect();let n=0,a=0,u=0,o={};o=m?(0,_dom.updatePanelPlacement)(e,_,{defaultPlacement:"bottom",isMinWidth:!1,teleportTo:m}).style:(t=_.offsetWidth,l=h?t/2:(t-s.renderWidth)/2,n=r.left-i.left-l,a=r.top-i.top+e.clientHeight,u=Math.max(40,f.clientHeight-a-(C?C.clientHeight:0)-(g?g.clientHeight:0)-14),n<1?n=1:n>f.clientWidth-t-1&&(n=f.clientWidth-t-1),x&&(l=x.getRefMaps().refElem.value)&&(r=l.getBoundingClientRect(),a+=i.top-r.top),{top:(0,_dom.toCssUnit)(a),left:(0,_dom.toCssUnit)(n)}),F&&(o.zIndex=F),d.style=o,p&&!p.tableFilterAutoHeight?u=0:v&&(u=v>u?u:v),d.maxHeight=u};return t(),(0,_vue.nextTick)().then(()=>{t()})};var e={checkFilterOptions(){var e=k.filterStore,t=e.column;t&&(t=t.filters||[],e.isAllSelected=t.every(e=>e._checked),e.isIndeterminate=!e.isAllSelected&&t.some(e=>e._checked))},handleOpenFilterColumn(e,t,l,r,i){var{initStore:n,filterStore:a}=k;a.column===r&&a.visible?a.visible=!1:(s.handleFilterOptions(r),o._currFilterParams=i,a.targetEl=t,a.style=null,a.visible=!0,n.filter=!0),(0,_vue.nextTick)().then(()=>{d()}),s.dispatchEvent("filter-visible",{column:r,field:r.field,property:r.field,filterList:s.getCheckedFilters(),visible:a.visible},e)},triggerFilterEvent(e,t,l){var r=o.elemStore,i=t.fixed,i=(0,_util.getRefElem)(r[`${i||"main"}-header-wrapper`]||r["main-header-wrapper"]),r=e.currentTarget,i=i?i.querySelector(".vxe-header--column."+t.id):null;s.handleOpenFilterColumn(e,r,i||r,t,l)},handleClearFilter(e){if(e){var{filters:l,filterRender:r}=e;if(l){r=(0,_utils.isEnableConf)(r)?renderer.get(r.name):null;let t=e.filterResetMethod||(r?r.tableFilterResetMethod||r.filterResetMethod:null);l.forEach(e=>{e._checked=!1,e.checked=!1,t||(e.data=_xeUtils.default.clone(e.resetValue,!0))}),t&&t({options:l,column:e,$table:s})}}},handleColumnConfirmFilter(e,t){var l=h.mouseConfig;let{scrollXLoad:r,scrollYLoad:i}=k;var n=E.value,a=f.value,{field:u,filters:o}=e;let d=[],c=[];(o||[]).forEach(e=>{e.checked&&(d.push(e.value),c.push(e.data))});o=s.getCheckedFilters(),e={$table:s,$event:t,column:e,field:u,property:u,values:d,datas:c,filters:o,filterList:o};return n.remote||(s.handleTableData(!0),s.checkSelectionStatus()),l&&a.area&&s.handleFilterEvent&&s.handleFilterEvent(t,e),t&&s.dispatchEvent("filter-change",e,t),s.closeFilter(),s.updateFooter().then(()=>{var{scrollXLoad:e,scrollYLoad:t}=k;if(r||e||i||t)return(r||e)&&s.updateScrollXSpace(),(i||t)&&s.updateScrollYSpace(),s.refreshScroll()}).then(()=>(s.updateCellAreas(),s.recalculate(!0))).then(()=>{setTimeout(()=>s.recalculate(),50)})},confirmFilterEvent(e,t){t&&s.handleColumnConfirmFilter(t,e)},handleFilterChangeRadioOption(e,t,l){var r=k.filterStore,r=r.column;r&&((r.filters||[]).forEach(e=>{e._checked=!1}),l._checked=t,s.checkFilterOptions(),s.handleFilterConfirmFilter(e,r))},handleFilterChangeMultipleOption(e,t,l){l._checked=t,s.checkFilterOptions()},handleFilterChangeOption(e,t,l){var r=k.filterStore,i=o.fullColumnIdData;let n=r.column;n||(i=i[l._colId])&&(n=i.column,r.column=n),n&&(n.filterMultiple?s.handleFilterChangeMultipleOption(e,t,l):s.handleFilterChangeRadioOption(e,t,l))},handleFilterConfirmFilter(e,t){t&&((t.filters||[]).forEach(e=>{e.checked=e._checked}),s.confirmFilterEvent(e,t))},handleFilterResetFilter(e,t){t&&(s.handleClearFilter(t),s.confirmFilterEvent(e,t),e)&&s.dispatchEvent("clear-filter",{filterList:[]},e)},handleFilterStyle(){var e=k.filterStore;return(e.visible?d:(0,_vue.nextTick))()}};return Object.assign(Object.assign({},{openFilter(e){let n=(0,_util.handleFieldOrColumn)(s,e);if(n&&n.filters){let e=o.elemStore,{fixed:r,filters:i}=n;return s.scrollToColumn(n).then(()=>{var t=(0,_util.getRefElem)(e[`${r||"main"}-header-wrapper`]||e["main-header-wrapper"]);if(t){var l=t.querySelector(`.vxe-header--column.${n.id} .vxe-cell--filter`);if(l)(0,_dom.triggerEvent)(l,"click");else{l=t.querySelector(".vxe-header--column."+n.id);if(l){let e=null;i&&(e=i[0]);t={$table:s,$grid:a,$gantt:u,$rowIndex:-1,column:n,columnIndex:s.getColumnIndex(n),$columnIndex:s.getVMColumnIndex(n),_columnIndex:s.getVTColumnIndex(n),firstFilterOption:e,fixed:r,source:sourceType,type:"header"};s.handleOpenFilterColumn(new Event("click"),null,l,n,t)}}}})}return(0,_vue.nextTick)()},setFilter(e,t,l){var r=k.filterStore,e=(0,_util.handleFieldOrColumn)(s,e);if(e&&e.filters){if(e.filters=(0,_util.toFilters)(t||[],e.id),l)return s.handleColumnConfirmFilter(e,null);r.visible&&s.handleFilterOptions(e)}return(0,_vue.nextTick)()},clearFilter(e){var t=k.filterStore,l=o.tableFullColumn,r=E.value;let i;return e?(i=(0,_util.handleFieldOrColumn)(s,e))&&s.handleClearFilter(i):l.forEach(s.handleClearFilter),e&&i===t.column||Object.assign(t,{isAllSelected:!1,isIndeterminate:!1,style:null,options:[],column:null,multiple:!1,visible:!1}),r.remote?(0,_vue.nextTick)():s.updateData()},saveFilter(e){return e&&(e=(0,_util.handleFieldOrColumn)(s,e),s.handleFilterConfirmFilter(null,e)),(0,_vue.nextTick)()},saveFilterByEvent(e,t){return t&&(t=(0,_util.handleFieldOrColumn)(s,t),s.handleFilterConfirmFilter(e,t)),(0,_vue.nextTick)()},resetFilter(e){return e&&(e=(0,_util.handleFieldOrColumn)(s,e),s.handleFilterResetFilter(null,e)),(0,_vue.nextTick)()},resetFilterByEvent(e,t){return t&&(t=(0,_util.handleFieldOrColumn)(s,t),s.handleFilterResetFilter(e,t)),(0,_vue.nextTick)()},saveFilterPanel(){var e=k.filterStore;return s.handleFilterConfirmFilter(null,e.column||null),(0,_vue.nextTick)()},saveFilterPanelByEvent(e){var t=k.filterStore;return s.handleFilterConfirmFilter(e,t.column||null),(0,_vue.nextTick)()},resetFilterPanel(){var e=k.filterStore;return s.handleFilterResetFilter(null,e.column||null),(0,_vue.nextTick)()},resetFilterPanelByEvent(e){var t=k.filterStore;return s.handleFilterResetFilter(e,t.column||null),(0,_vue.nextTick)()},getCheckedFilters(){var e=o.tableFullColumn;let n=[];return e.forEach(e=>{var{field:t,filters:l}=e,l=l||[];let r=[],i=[];l&&(l.forEach(e=>{e.checked&&(r.push(e.value),i.push(e.data))}),r.length)&&n.push({column:e,field:t,property:t,values:r,datas:i})}),n},updateFilterOptionStatus(e,t){return e._checked=t,e.checked=t,(0,_vue.nextTick)()}}),e)},setupGrid(e){return e.extendTableMethods(tableFilterMethodKeys)},setupGantt(e){return e.extendTableMethods(tableFilterMethodKeys)}});