@progress/kendo-vue-data-tools
Version:
9 lines (8 loc) • 3.18 kB
JavaScript
/**
* @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 r=require("vue"),i=require("@progress/kendo-vue-buttons"),c=require("@progress/kendo-vue-intl"),u=require("./operators.js"),t=require("../messages/main.js"),s=require("@progress/kendo-svg-icons");function a(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!r.isVNode(e)}const d=r.defineComponent({name:"KendoFilterGroup",emits:{change:null,remove:null},props:{filter:{type:Object,required:!0},fields:{type:Array,required:!0},defaultGroupFilter:{type:Object,required:!0},ariaLabel:{type:String,default:void 0}},inject:{kendoLocalizationService:{default:null}},render(){let e,o;const{filter:n}=this.$props,l=c.provideLocalizationService(this);return r.createVNode("div",{class:"k-filter-toolbar"},[r.createVNode(i.Toolbar,{overflow:"none",keyboardNavigation:!1,"aria-label":this.$props.ariaLabel},{default:()=>[r.createVNode(i.ButtonGroup,{class:"k-toolbar-button-group"},{default:()=>[r.createVNode(i.Button,{togglable:!0,onClick:this.onLogicAnd,class:"k-toolbar-button",selected:n.logic==="and",type:"button"},a(e=l.toLanguageString(t.filterAndLogic,t.messages[t.filterAndLogic]))?e:{default:()=>[e]}),r.createVNode(i.Button,{togglable:!0,onClick:this.onLogicOr,class:"k-toolbar-button",selected:n.logic==="or",type:"button"},a(o=l.toLanguageString(t.filterOrLogic,t.messages[t.filterOrLogic]))?o:{default:()=>[o]})]}),r.createVNode(i.Button,{title:l.toLanguageString(t.filterAddExpression,t.messages[t.filterAddExpression]),icon:"filter-add-expression",svgIcon:s.filterAddExpressionIcon,type:"button",class:"k-toolbar-button",onClick:this.onAddExpression},null),r.createVNode(i.Button,{title:l.toLanguageString(t.filterAddGroup,t.messages[t.filterAddGroup]),icon:"filter-add-group",svgIcon:s.filterAddGroupIcon,type:"button",class:"k-toolbar-button",onClick:this.onAddGroup},null),r.createVNode(i.Button,{title:l.toLanguageString(t.filterClose,t.messages[t.filterClose]),icon:"x",svgIcon:s.xIcon,fillMode:"flat",type:"button",class:"k-toolbar-button",onClick:this.onGroupRemove},null)]})])},methods:{onGroupRemove(){this.$emit("remove",{filter:this.$props.filter})},onAddExpression(){const e=this.$props.filter,o=this.$props.fields[0],n={field:o.name,operator:o.operators[0].operator};n.value=u.stringOperator(n.operator)?"":null,this.$emit("change",{nextFilter:{...e,filters:[...e.filters,n]},prevFilter:e})},onAddGroup(){const e=this.$props.filter;this.$emit("change",{nextFilter:{...e,filters:[...e.filters,{...this.$props.defaultGroupFilter}]},prevFilter:e})},onLogicAnd(){this.changeLogic("and")},onLogicOr(){this.changeLogic("or")},changeLogic(e){const o=this.$props.filter;o.logic!==e&&this.$emit("change",{nextFilter:{...o,logic:e},prevFilter:o})}}});exports.GroupToolbar=d;