vxe-table
Version:
一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...
1 lines • 3.83 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_conf=_interopRequireDefault(require("../../v-x-e-table/src/conf")),_vXETable=require("../../v-x-e-table"),_utils=require("../../tools/utils"),_dom=require("../../tools/dom"),_vn=require("../../tools/vn");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=(0,_vue.defineComponent)({name:"VxeTableFilter",props:{filterStore:Object},setup:function(a){function i(e,t,l){a.filterStore.options.forEach(function(e){e._checked=!1}),l._checked=t,u.checkFilterOptions(),v(e)}function n(e,t,l){l._checked=t,u.checkFilterOptions()}var u=(0,_vue.inject)("$xetable",{}),s=u.reactData,f=u.internalData,_=(0,_vue.computed)(function(){var e=a.filterStore;return e&&e.options.some(function(e){return e.checked})}),v=function(e){a.filterStore.options.forEach(function(e){e.checked=e._checked}),u.confirmFilterEvent(e)},d=function(e){var t=a.filterStore;u.handleClearFilter(t.column),u.confirmFilterEvent(e)},p=function(e,t,l){a.filterStore.multiple?n(0,t,l):i(e,t,l)},h=function(e,t){var l;a.filterStore.multiple?(l=t,(t=a.filterStore).options.forEach(function(e){e._checked=l,e.checked=l}),t.isAllSelected=l,t.isIndeterminate=!1):d(e)},b={changeRadioOption:i,changeMultipleOption:n,changeAllOption:h,changeOption:p,confirmFilter:v,resetFilter:d};return function(){var t,l,e=a.filterStore,i=s.initStore,n=e.column,n=n?n.filterRender:null,r=n?_vXETable.VXETable.renderer.get(n.name):null,c=r?r.filterClassName:"",o=Object.assign({},f._currFilterParams,{$panel:b,$table:u});return(0,_vue.h)("div",{class:["vxe-table--filter-wrapper","filter--prevent-default",(0,_dom.getPropClass)(c,o),{"is--animat":u.props.animat,"is--multiple":e.multiple,"is--active":e.visible}],style:e.style},i.filter&&e.visible?(c=n,o=r,t=a.filterStore,i=t.column,l=t.multiple,e=t.maxHeight,i=(i=i.slots)?i.filter:null,n=Object.assign({},f._currFilterParams,{$panel:b,$table:u}),(i?[(0,_vue.h)("div",{class:"vxe-table--filter-template"},u.callSlot(i,n))]:o&&o.renderFilter?[(0,_vue.h)("div",{class:"vxe-table--filter-template"},(0,_vn.getSlotVNs)(o.renderFilter(c,n)))]:(i=l?t.isAllSelected:!t.options.some(function(e){return e._checked}),o=l&&t.isIndeterminate,[(0,_vue.h)("ul",{class:"vxe-table--filter-header"},[(0,_vue.h)("li",{class:["vxe-table--filter-option",{"is--checked":i,"is--indeterminate":o}],title:_conf.default.i18n(l?"vxe.table.allTitle":"vxe.table.allFilter"),onClick:function(e){h(e,!t.isAllSelected)}},(l?[(0,_vue.h)("span",{class:["vxe-checkbox--icon",o?_conf.default.icon.TABLE_CHECKBOX_INDETERMINATE:i?_conf.default.icon.TABLE_CHECKBOX_CHECKED:_conf.default.icon.TABLE_CHECKBOX_UNCHECKED]})]:[]).concat([(0,_vue.h)("span",{class:"vxe-checkbox--label"},_conf.default.i18n("vxe.table.allFilter"))]))]),(0,_vue.h)("ul",{class:"vxe-table--filter-body",style:e?{maxHeight:"".concat(e,"px")}:{}},t.options.map(function(t){var e=t._checked;return(0,_vue.h)("li",{class:["vxe-table--filter-option",{"is--checked":t._checked}],title:t.label,onClick:function(e){p(e,!t._checked,t)}},(l?[(0,_vue.h)("span",{class:["vxe-checkbox--icon",e?_conf.default.icon.TABLE_CHECKBOX_CHECKED:_conf.default.icon.TABLE_CHECKBOX_UNCHECKED]})]:[]).concat([(0,_vue.h)("span",{class:"vxe-checkbox--label"},(0,_utils.formatText)(t.label,1))]))}))])).concat((r=a.filterStore,c=r.column,n=r.multiple,o=_.value,c=(c=c.filterRender)?_vXETable.VXETable.renderer.get(c.name):null,o=!o&&!r.isAllSelected&&!r.isIndeterminate,!n||c&&!1===c.showFilterFooter?[]:[(0,_vue.h)("div",{class:"vxe-table--filter-footer"},[(0,_vue.h)("button",{class:{"is--disabled":o},disabled:o,onClick:v},_conf.default.i18n("vxe.table.confirmFilter")),(0,_vue.h)("button",{onClick:d},_conf.default.i18n("vxe.table.resetFilter"))])]))):[])}}});exports.default=_default;