@blueking/vxe-table
Version:
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟树、列拖拽,懒加载、快捷菜单、数据校验、树形结构、打印、导入导出、自定义模板、渲染器、JSON 配置式...
1 lines • 3.6 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_ui=require("../../../ui"),_utils=require("../../../ui/src/utils"),_dom=require("../../../ui/src/dom"),_vn=require("../../../ui/src/vn");let{getI18n,getIcon,renderer}=_ui.VxeUI;var _default=exports.default=(0,_vue.defineComponent)({name:"VxeTableFilterPanel",props:{filterStore:Object},setup(u){let v=(0,_vue.inject)("$xeTable",{}),{reactData:d,internalData:p,getComputeMaps:e}=v,_=e().computeFilterOpts,h=(0,_vue.computed)(()=>{var e=u.filterStore;return e&&e.options.some(e=>e.checked)}),i=(e,t)=>{var l=u.filterStore;l.options.forEach(e=>{e._checked=t,e.checked=t}),l.isAllSelected=t,l.isIndeterminate=!1},b=e=>{v.handleFilterConfirmFilter(e)};let m=e=>{v.handleFilterResetFilter(e)};let f=(e,t,l)=>{v.handleFilterChangeOption(e,t,l)},C=(e,t)=>{var l=u.filterStore;l.multiple?i(0,t):m(e)},x={changeRadioOption:(e,t,l)=>{v.handleFilterChangeRadioOption(e,t,l)},changeMultipleOption:(e,t,l)=>{v.handleFilterChangeMultipleOption(e,t,l)},changeAllOption:C,changeOption:f,confirmFilter:b,resetFilter:m};return()=>{var e=u.filterStore,t=d.initStore,{visible:l,multiple:i,column:r}=e,a=r?r.filterRender:null,n=(0,_utils.isEnableConf)(a)?renderer.get(a.name):null,s=n?n.tableFilterClassName||n.filterClassName:"",o=Object.assign({},p._currFilterParams,{$panel:x,$table:v}),c=_.value.destroyOnClose;return(0,_vue.h)("div",{class:["vxe-table--filter-wrapper","filter--prevent-default",(0,_dom.getPropClass)(s,o),{"is--animat":v.props.animat,"is--multiple":i,"is--active":l}],style:e.style},t.filter&&(!c||l)&&r?((e,t)=>{let l=u.filterStore,{column:i,multiple:r,maxHeight:a}=l;var n=i?i.slots:null,n=n?n.filter:null,s=Object.assign({},p._currFilterParams,{$panel:x,$table:v}),t=t?t.renderTableFilter||t.renderFilter:null;return n?[(0,_vue.h)("div",{class:"vxe-table--filter-template"},v.callSlot(n,s))]:t?[(0,_vue.h)("div",{class:"vxe-table--filter-template"},(0,_vn.getSlotVNs)(t(e,s)))]:(n=r?l.isAllSelected:!l.options.some(e=>e._checked),t=r&&l.isIndeterminate,[(0,_vue.h)("ul",{class:"vxe-table--filter-header"},[(0,_vue.h)("li",{class:["vxe-table--filter-option",{"is--checked":n,"is--indeterminate":t}],title:getI18n(r?"vxe.table.allTitle":"vxe.table.allFilter"),onClick:e=>{C(e,!l.isAllSelected)}},(r?[(0,_vue.h)("span",{class:["vxe-checkbox--icon",t?getIcon().TABLE_CHECKBOX_INDETERMINATE:n?getIcon().TABLE_CHECKBOX_CHECKED:getIcon().TABLE_CHECKBOX_UNCHECKED]})]:[]).concat([(0,_vue.h)("span",{class:"vxe-checkbox--label"},getI18n("vxe.table.allFilter"))]))]),(0,_vue.h)("ul",{class:"vxe-table--filter-body",style:a?{maxHeight:a+"px"}:{}},l.options.map(t=>{var e=t._checked;return(0,_vue.h)("li",{class:["vxe-table--filter-option",{"is--checked":t._checked}],title:t.label,onClick:e=>{f(e,!t._checked,t)}},(r?[(0,_vue.h)("span",{class:["vxe-checkbox--icon",e?getIcon().TABLE_CHECKBOX_CHECKED:getIcon().TABLE_CHECKBOX_UNCHECKED]})]:[]).concat([(0,_vue.h)("span",{class:"vxe-checkbox--label"},(0,_utils.formatText)(t.label,1))]))}))])})(a,n).concat((()=>{var e=u.filterStore,{column:t,multiple:l}=e,i=_.value,r=h.value,t=t.filterRender,t=(0,_utils.isEnableConf)(t)?renderer.get(t.name):null,r=!r&&!e.isAllSelected&&!e.isIndeterminate;return l&&(!t||!1!==t.showTableFilterFooter&&!1!==t.showFilterFooter&&!1!==t.isFooter)?[(0,_vue.h)("div",{class:"vxe-table--filter-footer"},[(0,_vue.h)("button",{class:{"is--disabled":r},disabled:r,onClick:b},i.confirmButtonText||getI18n("vxe.table.confirmFilter")),(0,_vue.h)("button",{onClick:m},i.resetButtonText||getI18n("vxe.table.resetFilter"))])]:[]})()):[])}}});