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