UNPKG

@progress/kendo-vue-data-tools

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