UNPKG

@progress/kendo-vue-grid

Version:
9 lines (8 loc) 4 kB
/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2026 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 r=require("vue"),b=require("@progress/kendo-vue-buttons"),n=require("../messages/main.js"),d=require("@progress/kendo-vue-dropdowns"),h=require("@progress/kendo-vue-inputs"),S=require("@progress/kendo-vue-dateinputs"),g=require("@progress/kendo-svg-icons"),m=require("@progress/kendo-vue-intl"),c=require("../filterCommon.js"),$=require("@progress/kendo-vue-common"),k=r.defineComponent({name:"KendoGridFilterCell",inheritAttrs:!1,props:{id:String,grid:Object,field:String,filterType:String,colSpan:Number,title:String,value:[String,Number,Boolean,Date],operator:[String,Function],operators:Array,booleanValues:Array,onChange:Function,render:[String,Function,Object],ariaLabel:String,size:String},inject:{kendoLocalizationService:{default:null},kendoIntlService:{default:null}},methods:{inputChange(e,t){const i=c.cellInputChange(e,t,this.$props);this.triggerChange(i)},operatorChange(e,t){const i=c.cellOperatorChange(e.value.operator,t,this.$props.value);this.triggerChange(i)},boolDropdownChange(e,t){const i=c.cellBoolDropdownChange(e.value.operator,t);this.triggerChange(i)},clear(e){e.preventDefault(),this.triggerChange({value:"",operator:"",event:e})},triggerChange(e){e.field=this.$props.field,this.$emit("change",e)}},setup(){const e=r.inject("kendoIntlService",{}),t=r.inject("kendoLocalizationService",{});return{kendoIntlService:e,kendoLocalizationService:t}},render(){const e=m.provideLocalizationService(this),{size:t}=this.$props,i=this.$props.operators.find(l=>l.operator===this.$props.operator)||null,f=function(){if(this.$props.filterType!=="boolean")return r.createVNode(d.DropDownList,{onChange:this.operatorChange,value:i,size:t,class:"k-dropdown-operator",icon:"filter",svgIcon:g.filterIcon,iconClassName:"filter k-button-icon","data-items":this.$props.operators,textField:"text",title:e.toLanguageString(n.filterChooseOperator,n.messages[n.filterChooseOperator]),popupSettings:{width:"",anchor:""},ariaLabel:this.ariaLabel},null)},C=function(l,a){let s;switch(l){case"numeric":return r.createVNode(h.NumericTextBox,{size:t,value:a,onChange:o=>{this.inputChange(o.value,o.event)},title:this.$props.title,ariaLabel:this.ariaLabel},null);case"date":return r.createVNode(S.DatePicker,{size:t,value:a,onChange:o=>{this.inputChange(o.value,o)},title:this.$props.title,ariaLabel:this.ariaLabel},null);case"boolean":return s=this.$props.booleanValues,r.createVNode(d.DropDownList,{onChange:this.boolDropdownChange,size:t,value:s.find(o=>o.operator===(a!==null?a:"")),"data-items":s,textField:"text",title:this.$props.title,ariaLabel:this.ariaLabel},null);default:return r.createVNode(h.TextBox,{value:a||"",size:t,onInput:o=>{this.inputChange(o.target.value,o)},title:this.$props.title,"aria-label":this.ariaLabel},null)}},p={class:"k-filtercell",style:this.$attrs.style},u=r.createVNode("div",{class:"k-filtercell-wrapper"},[C.call(this,this.$props.filterType,this.$props.value),r.createVNode("div",{class:"k-filtercell-operator"},[f.call(this),r.createTextVNode(" "),r.createVNode(b.Button,{type:"button",size:t,icon:"filter-clear",svgIcon:g.filterClearIcon,class:{"k-disabled":!(!(this.$props.value===null||this.$props.value==="")||this.$props.operator)},title:e.toLanguageString(n.filterClearButton,n.messages[n.filterClearButton]),onClick:this.clear},null)])]),v=r.createVNode("div",p,[u]);return $.getTemplate.call(this,{h:r.h,template:this.$props.render,defaultRendering:v,additionalProps:{...this.$props,tdProps:p},additionalListeners:{change:this.triggerChange},defaultSlots:u})}});exports.GridFilterCell=k;