UNPKG

@progress/kendo-vue-grid

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