UNPKG

@progress/kendo-vue-data-tools

Version:
108 lines (107 loc) 2.86 kB
/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the package root for more information *------------------------------------------------------------------------------------------- */ import { defineComponent as p, createVNode as o } from "vue"; import { isCompositeFilterDescriptor as a } from "@progress/kendo-data-query"; import { GroupToolbar as f } from "./GroupToolbar.mjs"; import { provideLocalizationService as u } from "@progress/kendo-vue-intl"; import { filterGroupFilterAriaLabel as n, messages as h } from "../messages/main.mjs"; import { Expression as m } from "./Expression.mjs"; const c = /* @__PURE__ */ p({ name: "KendoFilterGroup", emits: { change: null, remove: null }, props: { filter: { type: Object, required: !0 }, fields: { type: Array, required: !0 }, defaultGroupFilter: { type: Object, required: !0 } }, inject: { kendoLocalizationService: { default: null } }, render() { const e = u(this), { fields: t, filter: r, filterRender: l } = this.$props; return r.filters.length > 0 ? o("ul", { class: "k-filter-lines", role: "group" }, [r.filters.map(function(i, s) { return o("li", { key: s, class: "k-filter-item", role: "treeitem" }, [a(i) ? [o(f, { filter: i, fields: t, ariaLabel: e.toLanguageString(n, h[n]), onChange: this.onChange, onRemove: this.onRemove, defaultGroupFilter: this.$props.defaultGroupFilter }, null), o(c, { filter: i, fields: t, onChange: this.onChange, onRemove: this.onRemove, defaultGroupFilter: this.$props.defaultGroupFilter }, null)] : o(m, { filter: i, fields: t, onChange: this.onChange, onRemove: this.onRemove }, null)]); }, this)]) : null; }, methods: { replaceFilter(e, t) { const r = this.$props.filter, l = r.filters.map((i) => i === e ? t : i); return { ...r, filters: l }; }, onChange(e) { const r = { nextFilter: this.replaceFilter(e.prevFilter, e.nextFilter), prevFilter: this.$props.filter, event: e.event, target: this }; this.$emit("change", r); }, onRemove(e) { const t = this.$props.filter, r = t.filters.filter((i) => i !== e.filter), l = { nextFilter: { ...t, filters: r }, prevFilter: t, event: e.event, target: this }; this.$emit("change", l); } } }); export { c as GroupFilter };