UNPKG

@progress/kendo-vue-data-tools

Version:
9 lines (8 loc) 7.25 kB
/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the package root for more information *------------------------------------------------------------------------------------------- */ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("vue"),h=require("@progress/kendo-vue-common"),O=require("@progress/kendo-data-query"),R=require("./ColumnMenuItem.js"),w=require("./ColumnMenuItemGroup.js"),U=require("./ColumnMenuItemContent.js"),S=require("@progress/kendo-vue-buttons"),_=require("@progress/kendo-vue-intl"),f=require("../filterCommon.js"),u=require("../messages/main.js"),k=require("./ColumnMenuFilterCell.js"),L=require("./ColumnMenuFilterOperators.js"),K=require("@progress/kendo-vue-dropdowns"),Q=require("@progress/kendo-svg-icons");function N(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!o.isVNode(e)}const C=e=>e||{filters:[],logic:"and"},F=(e,r)=>C(r).filters.filter(i=>O.isCompositeFilterDescriptor(i)?i.filters&&i.filters.length&&i.filters.length<=2&&!i.filters.find(n=>O.isCompositeFilterDescriptor(n)||n.field!==e):!1)[0]||null,A=o.defineComponent({name:"KendoColumnMenuFilter",props:{column:Object,filter:Object,expanded:{type:Boolean,default:void 0},filterable:Boolean,filterOperators:{type:Object,default:f.operators},hideSecondFilter:{type:[Boolean,Object],default:void 0},filterUI:[String,Function,Object],onFilterchange:Function,onExpandchange:Function,onFilterfocus:Function,onClosemenu:Function},inject:{kendoLocalizationService:{default:null}},data(){return{currentExpanded:!1,filterGroup:null}},created(){let e;if(this.$props.column&&this.$props.column.field){const r=f.getFilterType(this.$props.column.filter),t=f.getDefaultOperator(this.$props.filterOperators,r);e=F(this.$props.column.field,this.$props.filter),e=e?{...e,filters:e.filters.map(l=>({...l}))}:{logic:"and",filters:[{field:this.$props.column.field,operator:t},{field:this.$props.column.field,operator:t}]},e.filters.filter(l=>l.field===this.$props.column.field).length===1&&e.filters.splice(1,0,{field:this.$props.column.field,operator:t})}this.currentExpanded=this.$props.expanded||!1,this.filterGroup=e},methods:{removeGroup(e,r){const t=[...r.filters],l=t.findIndex(i=>i===e);return l>-1&&t.splice(l,1),{...r,filters:t}},insertGroup(e,r){return{...r,filters:[e,...r.filters]}},isControlled(){return this.$props.expanded!==void 0},onFilterExpand(){const e=this.isControlled(),r=!(e?this.$props.expanded:this.currentExpanded);this.$emit("expandchange",r),e||(this.currentExpanded=r)},filterChangeHandler(e,r){this.filterChange(r||0,e)},firstFilterChange(e){this.filterChange(0,e)},secondFilterChange(e){this.filterChange(1,e)},filterChange(e,r){const t=this.filterGroup.filters.map((l,i)=>i===e?{...l,value:r.value,operator:r.operator}:l);this.filterGroup={...this.filterGroup,filters:t}},logicChange(e){this.filterGroup={...this.filterGroup,logic:e.target.value.operator}},clear(e){if(e.preventDefault(),!h.hasListener.call(this,"filterchange"))return;const r=this.$props.column.field,t=C(this.$props.filter),l=F(r,this.$props.filter),i=t.filters.filter(n=>n!==l);i.length?this.$emit("filterchange",{...t,filters:i},{event:e,field:this.$props.column.field}):this.$emit("filterchange",null,{event:e,field:this.$props.column.field}),this.$emit("closemenu")},currentFilterGroup(){return{...this.filterGroup,filters:this.filterGroup.filters.filter(e=>e.value!==void 0&&e.value!==null&&e.value!==""||e.value===null&&e.operator)}},submit(e){if(e.preventDefault(),!h.hasListener.call(this,"filterchange"))return;const r=this.$props.column.field,t=C(this.$props.filter),l=F(r,this.$props.filter),i=this.currentFilterGroup();let n=null;if(l&&i.filters.length>0){const c=t.filters.map(s=>s===l?i:s);n={...t,filters:c}}else if(i.filters.length===0){const c=t.filters.filter(s=>s!==l);c.length&&(n={...t,filters:c})}else n={...t,filters:[...t.filters,i]};this.$emit("filterchange",n,{event:e,field:this.$props.column.field}),this.$emit("closemenu")},handleFocus(e){this.$emit("filterfocus",e)}},setup(){return{kendoLocalizationService:o.inject("kendoLocalizationService",{})}},render(){let e,r;const{column:t,filterUI:l,hideSecondFilter:i,filterOperators:n}=this.$props;if(!t||!t.field)return o.createVNode("div",null,null);const c=t.filter||"text",s=_.provideLocalizationService(this),m=this.filterGroup.filters,g=f.operatorMap(n[c],s),v=f.operatorMap(f.booleanFilterValues,s),p={field:t.field,value:m[0].value,operator:m[0].operator,booleanValues:v,filterType:c},d={field:t.field,value:m[1].value,operator:m[1].operator,booleanValues:v,filterType:c},V=this.filterGroup.logic,$=f.operatorMap(f.filterLogicList,s),M={value:$.find(a=>a.operator===(V===null?"":V)),data:$},I=this.currentFilterGroup().filters.length!==0,T=this.isControlled()?this.$props.expanded:this.currentExpanded,q=p.field,B=p.value,b=p.operator,D=p.booleanValues,G=p.filterType,j=d.field,E=d.value,y=d.operator,z=d.booleanValues,x=d.filterType,H=l&&h.templateRendering.call(this,l,h.getListeners.call(this)),P=h.getTemplate.call(this,{h:o.h,template:H,defaultRendering:void 0,additionalProps:this.$props,additionalListeners:{change:this.filterChangeHandler,logicchange:this.logicChange}});return o.createVNode(w.ColumnMenuItemGroup,null,{default:()=>[o.createVNode(R.ColumnMenuItem,{title:s.toLanguageString(u.columnMenuFilterTitle,u.messages[u.columnMenuFilterTitle]),icon:"filter",svgIcon:Q.filterIcon,onMenuitemclick:this.onFilterExpand},null),o.createVNode(U.ColumnMenuItemContent,{show:!!T},{default:()=>[o.createVNode("div",{class:"kendo-grid-filter-menu-container"},[o.createVNode("form",{class:"k-filter-menu k-border-up",onSubmit:this.submit,onReset:this.clear},[o.createVNode("div",{class:"k-filter-menu-container"},[!l&&[o.createVNode(L.ColumnMenuFilterOperators,{operator:b,filterType:G,onChange:a=>{this.filterChangeHandler(a,0)},operators:g},null),o.createVNode(k.ColumnMenuFilterCell,{field:q,value:B,operator:b,booleanValues:D,filterType:G,onFiltercellfocus:this.handleFocus,onChange:a=>{this.filterChangeHandler(a,0)},operators:g},null)],!i&&!l&&[o.createVNode(K.DropDownList,{onChange:this.logicChange,class:"k-filter-and","data-items":M.data,value:M.value,textField:"text"},null),o.createVNode(L.ColumnMenuFilterOperators,{operator:y,filterType:x,onChange:a=>{this.filterChangeHandler(a,1)},operators:g},null),o.createVNode(k.ColumnMenuFilterCell,{field:j,value:E,operator:y,booleanValues:z,filterType:x,onFiltercellfocus:this.handleFocus,onChange:a=>{this.filterChangeHandler(a,1)},operators:g},null)],l&&P,o.createVNode("div",{class:"k-columnmenu-actions"},[o.createVNode(S.Button,{type:"reset"},N(e=s.toLanguageString(u.columnMenuFilterClearButton,u.messages[u.columnMenuFilterClearButton]))?e:{default:()=>[e]}),o.createVNode(S.Button,{themeColor:"primary",disabled:!I},N(r=s.toLanguageString(u.columnMenuFilterSubmitButton,u.messages[u.columnMenuFilterSubmitButton]))?r:{default:()=>[r]})])])])])]})]})}});exports.ColumnMenuFilter=A;exports.filterGroupByField=F;exports.rootFilterOrDefault=C;