@progress/kendo-vue-data-tools
Version:
108 lines (107 loc) • 2.86 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
*-------------------------------------------------------------------------------------------
*/
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
};