vxe-table-demonic
Version:
一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...
1 lines • 3.92 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(),d(e)}function n(e,t,l){l._checked=t,u.checkFilterOptions()}var u=(0,_vue.inject)("$xetable",{}),s=u.reactData,f=u.internalData,v=(0,u.getComputeMaps)().computeFilterOpts,_=(0,_vue.computed)(function(){var e=a.filterStore;return e&&e.options.some(function(e){return e.checked})}),d=function(e){a.filterStore.options.forEach(function(e){e.checked=e._checked}),u.confirmFilterEvent(e)},p=function(e){var t=a.filterStore;u.handleClearFilter(t.column),u.confirmFilterEvent(e)},h=function(e,t,l){a.filterStore.multiple?n(0,t,l):i(e,t,l)},b=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):p(e)},m={changeRadioOption:i,changeMultipleOption:n,changeAllOption:b,changeOption:h,confirmFilter:d,resetFilter:p};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,o=r?r.filterClassName:"",c=Object.assign({},f._currFilterParams,{$panel:m,$table:u});return(0,_vue.h)("div",{class:["vxe-table--filter-wrapper","filter--prevent-default",(0,_dom.getPropClass)(o,c),{"is--animat":u.props.animat,"is--multiple":e.multiple,"is--active":e.visible}],style:e.style},i.filter&&e.visible?(o=n,c=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:m,$table:u}),(i?[(0,_vue.h)("div",{class:"vxe-table--filter-template"},u.callSlot(i,n))]:c&&c.renderFilter?[(0,_vue.h)("div",{class:"vxe-table--filter-template"},(0,_vn.getSlotVNs)(c.renderFilter(o,n)))]:(i=l?t.isAllSelected:!t.options.some(function(e){return e._checked}),c=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":c}],title:_conf.default.i18n(l?"vxe.table.allTitle":"vxe.table.allFilter"),onClick:function(e){b(e,!t.isAllSelected)}},(l?[(0,_vue.h)("span",{class:["vxe-checkbox--icon",c?_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){h(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,o=r.column,n=r.multiple,c=v.value,i=_.value,o=(o=o.filterRender)?_vXETable.VXETable.renderer.get(o.name):null,i=!i&&!r.isAllSelected&&!r.isIndeterminate,!n||o&&!1===o.showFilterFooter?[]:[(0,_vue.h)("div",{class:"vxe-table--filter-footer"},[(0,_vue.h)("button",{class:{"is--disabled":i},disabled:i,onClick:d},c.confirmButtonText||_conf.default.i18n("vxe.table.confirmFilter")),(0,_vue.h)("button",{onClick:p},c.resetButtonText||_conf.default.i18n("vxe.table.resetFilter"))])]))):[])}}});exports.default=_default;