UNPKG

@progress/kendo-vue-grid

Version:
9 lines (8 loc) 3.47 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"),d=require("../filterCommon.js"),x=require("../cells/GridFilterCell.js"),I=require("@progress/kendo-vue-intl"),g=require("../messages/main.js"),f=require("@progress/kendo-vue-data-tools");function $(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!o.isVNode(t)}const L=o.defineComponent({name:"kendoFilterRow",props:{grid:Object,columns:Array,filter:Object,filterOperators:Object,sort:[Object,Array],cellRender:[String,Function,Object],isRtl:Boolean,ariaRowIndex:Number,size:String,onFilterchange:Function},inject:{kendoLocalizationService:{default:null}},methods:{headerCellClassName(t,l){let a=l?" k-grid-header-sticky":"";return this.$props.sort&&this.$props.sort.filter(s=>s.field===t).length>0&&(a+=" k-sorted"),a},setFilter(t,l,a,s){const n=[];(t!==""&&t!==null||l!=="")&&n.push({field:a,operator:l,value:t}),this.$props.filter&&this.$props.filter.filters&&(this.$props.filter.filters||[]).forEach(e=>{const r=e;r&&r.field!==a&&n.push(r)});const c=n.length>0?{logic:"and",filters:n}:null;this.$emit("filterchange",c,s)}},setup(){return{kendoLocalizationService:o.inject("kendoLocalizationService",{})}},render(){const t=I.provideLocalizationService(this),l=this.$props.filter&&this.$props.filter.filters||[],a=(e,r=null)=>{const i=l.filter(C=>C.field===e)[0];return i?i.value:r},s=e=>{const r=l.filter(i=>i.field===e)[0];return r?r.operator:null};let n=0,c=-1;const b=this.$props.columns.filter(e=>e.children.length===0).map(function(e){const r=h=>{this.setFilter(h.value,h.operator,e.field,h)},i=d.getFilterType(e.filter),p=(e.title||e.field)+" "+d.getAriaLabel(i,t),u=o.createVNode(x.GridFilterCell,{grid:this.$props.grid,field:e.field,title:e.filterTitle,value:a(e.field,i==="text"?"":null),operator:s(e.field),operators:d.operatorMap(this.$props.filterOperators[i]||[],t),booleanValues:d.operatorMap(d.booleanFilterValues,t),filterType:i,onChange:r,render:e.filterCell||this.$props.cellRender,"aria-label":p,size:this.$props.size},null),F=e.declarationIndex>=0?++c:--n,v={ariaLabel:e.filterable?t.toLanguageString(g.filterAriaLabel,g.messages[g.filterAriaLabel]):void 0,ariaColumnIndex:e.ariaColumnIndex},y=e.left!==void 0?this.$props.isRtl?{left:e.right+"px",right:e.left+"px"}:{left:e.left+"px",right:e.right+"px"}:{},k=o.createVNode(f.HeaderTdElement,{key:F,role:"gridcell",columnId:f.tableKeyboardNavigationTools.getFilterColumnId(e.id),navigatable:e.navigatable,style:y,class:this.headerCellClassName(e.field,e.locked)||void 0,ariaColumnIndex:v.ariaColumnIndex,"aria-label":p},$(u)?u:{default:()=>[u]});return e.filterable&&k||o.createVNode(f.HeaderTdElement,{key:F,role:"gridcell",columnId:f.tableKeyboardNavigationTools.getFilterColumnId(e.id),navigatable:e.navigatable,style:y,class:this.headerCellClassName(e.field,e.locked)||void 0,ariaColumnIndex:v.ariaColumnIndex,"aria-label":p},null)},this);return o.createVNode("tr",{class:"k-table-row k-filter-row","aria-rowindex":this.ariaRowIndex,role:"row"},[b])}});exports.FilterRow=L;