@progress/kendo-vue-data-tools
Version:
117 lines (116 loc) • 3.23 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 o, createVNode as i } from "vue";
import { GroupFilter as a } from "./GroupFilters.mjs";
import { GroupToolbar as n } from "./GroupToolbar.mjs";
import { templateRendering as s, getListeners as u, validatePackage as p } from "@progress/kendo-vue-common";
import { packageMetadata as d } from "../package-metadata.mjs";
import { provideLocalizationService as m } from "@progress/kendo-vue-intl";
import { filterAriaLabel as r, messages as c } from "../messages/main.mjs";
const V = /* @__PURE__ */ o({
name: "KendoFilter",
emits: {
change: null,
changemodel: null,
"update:modelValue": null
},
model: {
event: "changemodel"
},
props: {
fields: {
type: Array,
required: !0
},
modelValue: {
type: Object,
default: void 0
},
value: Object,
defaultGroupFilter: Object,
upperToolbarAriaLabel: {
type: String,
default: void 0
}
},
inject: {
kendoLocalizationService: {
default: null
}
},
created() {
p(d);
},
computed: {
computedValue() {
let e;
return this.$props.value !== void 0 ? e = this.$props.value : this.$props.modelValue !== void 0 && (e = this.$props.modelValue), e;
}
},
render() {
const e = m(this), t = this.$props.fields.map(function(l) {
return {
...l,
filterRender: s.call(this, l.filterRender, u.call(this))
};
}, this);
return i("div", {
class: "k-filter"
}, [i("ul", {
class: "k-filter-container",
role: "tree",
"aria-label": e.toLanguageString(r, c[r])
}, [i("li", {
class: "k-filter-group-main",
role: "treeitem"
}, [i(n, {
"aria-label": this.$props.upperToolbarAriaLabel,
filter: this.computedValue,
fields: t,
onChange: this.onFilterChange,
onRemove: this.onGroupRemove,
defaultGroupFilter: this.$props.defaultGroupFilter || {
logic: "and",
filters: []
}
}, null), i(a, {
filter: this.computedValue,
fields: t,
onChange: this.onFilterChange,
onRemove: this.onGroupRemove,
defaultGroupFilter: this.$props.defaultGroupFilter || {
logic: "and",
filters: []
}
}, null)])])]);
},
methods: {
onFilterChange(e) {
const t = {
filter: e.nextFilter,
event: e.event,
target: this
};
this.$emit("changemodel", e.nextFilter), this.$emit("update:modelValue", e.nextFilter), this.$emit("change", t);
},
onGroupRemove(e) {
const t = {
...this.computedValue,
filters: []
}, l = {
filter: t,
event: e.event,
target: this
};
this.$emit("changemodel", t), this.$emit("update:modelValue", t), this.$emit("change", l);
}
}
});
export {
V as Filter
};