@progress/kendo-vue-data-tools
Version:
9 lines (8 loc) • 4.06 kB
JavaScript
/**
* @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 n=require("vue"),g=require("@progress/kendo-vue-common"),d=require("@progress/kendo-vue-buttons"),u=require("@progress/kendo-vue-dropdowns"),h=require("@progress/kendo-vue-intl"),m=require("@progress/kendo-svg-icons"),p=require("./operators.js"),l=require("../messages/main.js"),F=require("./filters/TextFilter.js"),v=require("./filters/NumericFilter.js"),b=require("./filters/BooleanFilter.js"),x=require("./filters/DateFilter.js"),C=n.defineComponent({name:"KendoExpression",emits:{change:null,remove:null},props:{filter:{type:Object,required:!0},fields:{type:Array,required:!0}},inject:{kendoLocalizationService:{default:null}},render(){const{fields:o,filter:e}=this.$props,t=o.find(i=>i.name===e.field),r=h.provideLocalizationService(this),s=(t&&t.operators||[]).map(i=>({...i,text:r.toLanguageString(i.text,l.messages[i.text]||i.text)}));let a=null;const c=function(i,f){switch(i){case"numeric":a=n.createVNode(v.NumericFilter,{filter:e,onFilterchange:this.onInputChange},null);break;case"date":a=n.createVNode(x.DateFilter,{filter:e,onFilterchange:this.onInputChange},null);break;case"boolean":a=n.createVNode(b.BooleanFilter,{filter:e,onFilterchange:this.onInputChange},null);break;default:a=n.createVNode(F.TextFilter,{filter:e,onFilterchange:this.onInputChange},null);break}return g.getTemplate.call(this,{h:n.h,template:f,defaultRendering:a,additionalProps:{filter:e},additionalListeners:{filterchange:this.onInputChange}})};return n.createVNode("div",{class:"k-filter-toolbar"},[n.createVNode(d.Toolbar,{overflow:"none",keyboardNavigation:!1,ariaLabel:e.ariaLabel?e.ariaLabel:void 0},{default:()=>[n.createVNode(d.ToolbarItem,{class:"k-filter-field"},{default:()=>[n.createVNode(u.DropDownList,{class:"k-filter-dropdown",dataItems:o,textField:"label",value:o.find(i=>i.name===e.field),onChange:this.onFieldChange,ariaLabel:r.toLanguageString(l.filterExpressionDropdownAriaLabel,l.messages[l.filterExpressionDropdownAriaLabel])},null)]}),n.createVNode(d.ToolbarItem,{class:"k-filter-operator"},{default:()=>[n.createVNode(u.DropDownList,{dataItems:s,textField:"text",value:s.find(i=>i.operator===e.operator),onChange:this.onOperatorChange,ariaLabel:r.toLanguageString(l.filterExpressionOperatorDropdownAriaLabel,l.messages[l.filterExpressionOperatorDropdownAriaLabel])},null)]}),n.createVNode(d.ToolbarItem,{class:"k-filter-value"},{default:()=>[t&&c.call(this,t.filter,t.filterRender)]}),n.createVNode(d.Button,{title:r.toLanguageString(l.filterClose,l.messages[l.filterClose]),icon:"x",svgIcon:m.xIcon,fillMode:"flat",type:"button",class:"k-toolbar-button",onClick:this.onFilterRemove},null)]})])},methods:{onFieldChange(o){const e=o.value.name,t=this.$props.fields.find(c=>c.name===e),r=this.$props.filter,s=t&&!t.operators.some(c=>c.operator===r.operator)?t.operators[0].operator:r.operator,a={field:e,operator:s};p.unaryOperator(s)||(a.value=p.stringOperator(s)?"":null),this.triggerOnFilterChange(r,a,o)},onOperatorChange(o){const e=o.value.operator,t=this.$props.filter;let r;if(p.unaryOperator(e)){let{value:s,...a}=t;r={...a,operator:e}}else r={...t,operator:e};this.triggerOnFilterChange(t,r,o)},onInputChange(o){const e=this.$props.filter;let t=o.nextFilter;if(p.unaryOperator(t.operator)){const r=this.$props.fields.find(s=>s.name===t.field);t={...t,operator:r&&r.operators[0].operator||t.operator}}this.triggerOnFilterChange(e,t,o)},triggerOnFilterChange(o,e,t){const r={prevFilter:o,nextFilter:e,event:t.event,target:this};this.$emit("change",r)},onFilterRemove(o){const e={filter:this.$props.filter,event:o.event,target:this};this.$emit("remove",e)}}});exports.Expression=C;