@progress/kendo-react-grid 9.0.0-develop.2 → 9.0.0-develop.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Grid.js +1 -1
- package/Grid.mjs +927 -1042
- package/GridNoRecords.js +1 -1
- package/GridNoRecords.mjs +7 -14
- package/GridToolbar.js +1 -1
- package/GridToolbar.mjs +23 -28
- package/README.md +34 -33
- package/VirtualScroll.js +1 -1
- package/VirtualScroll.mjs +63 -58
- package/VirtualScrollFixed.js +1 -1
- package/VirtualScrollFixed.mjs +16 -14
- package/cells/GridCell.mjs +6 -3
- package/cells/GridDetailCell.mjs +6 -3
- package/cells/GridEditCell.mjs +10 -38
- package/cells/GridFilterCell.js +1 -1
- package/cells/GridFilterCell.mjs +99 -113
- package/cells/GridGroupCell.mjs +24 -30
- package/cells/GridHierarchyCell.mjs +2 -13
- package/cells/GridSelectionCell.mjs +3 -24
- package/columnMenu/GridColumnMenuCheckboxFilter.js +1 -1
- package/columnMenu/GridColumnMenuCheckboxFilter.mjs +132 -184
- package/columnMenu/GridColumnMenuFilter.js +1 -1
- package/columnMenu/GridColumnMenuFilter.mjs +127 -170
- package/columnMenu/GridColumnMenuFilterCell.js +1 -1
- package/columnMenu/GridColumnMenuFilterCell.mjs +42 -61
- package/columnMenu/GridColumnMenuFilterUI.js +1 -1
- package/columnMenu/GridColumnMenuFilterUI.mjs +15 -24
- package/columnMenu/GridColumnMenuGroup.js +1 -1
- package/columnMenu/GridColumnMenuGroup.mjs +29 -40
- package/columnMenu/GridColumnMenuItemContent.js +1 -1
- package/columnMenu/GridColumnMenuItemContent.mjs +7 -20
- package/columnMenu/GridColumnMenuItemGroup.js +1 -1
- package/columnMenu/GridColumnMenuItemGroup.mjs +7 -20
- package/columnMenu/GridColumnMenuSort.js +1 -1
- package/columnMenu/GridColumnMenuSort.mjs +42 -53
- package/columnMenu/GridColumnMenuWrapper.mjs +6 -18
- package/dist/cdn/js/kendo-react-grid.js +1 -1
- package/drag/ColumnDraggable.js +1 -1
- package/drag/ColumnDraggable.mjs +34 -33
- package/drag/ColumnResize.js +1 -1
- package/drag/ColumnResize.mjs +36 -44
- package/drag/GroupingIndicator.js +1 -1
- package/drag/GroupingIndicator.mjs +51 -83
- package/filterCommon.mjs +1 -3
- package/footer/Footer.js +1 -1
- package/footer/Footer.mjs +40 -57
- package/footer/FooterRow.mjs +6 -5
- package/header/FilterRow.js +1 -1
- package/header/FilterRow.mjs +69 -82
- package/header/GridHeaderSelectionCell.js +1 -1
- package/header/GridHeaderSelectionCell.mjs +28 -35
- package/header/GroupPanel.js +1 -1
- package/header/GroupPanel.mjs +43 -49
- package/header/Header.js +1 -1
- package/header/Header.mjs +70 -74
- package/header/HeaderRow.mjs +24 -27
- package/index.d.mts +259 -724
- package/index.d.ts +259 -724
- package/index.js +1 -1
- package/index.mjs +78 -80
- package/messages/index.mjs +4 -1
- package/package-metadata.mjs +1 -1
- package/package.json +11 -11
- package/rows/GridDetailRow.js +1 -1
- package/rows/GridDetailRow.mjs +2 -10
- package/rows/GridRow.mjs +10 -8
- package/utils/index.js +1 -1
- package/utils/index.mjs +35 -39
|
@@ -6,194 +6,142 @@
|
|
|
6
6
|
*-------------------------------------------------------------------------------------------
|
|
7
7
|
*/
|
|
8
8
|
"use client";
|
|
9
|
-
import * as
|
|
10
|
-
import { GridColumnMenuItem as
|
|
11
|
-
import { GridColumnMenuItemGroup as
|
|
12
|
-
import { GridColumnMenuItemContent as
|
|
13
|
-
import { Input as
|
|
14
|
-
import {
|
|
15
|
-
import { searchPlaceholder as
|
|
16
|
-
import { filterBy as
|
|
17
|
-
import {
|
|
18
|
-
import { Button as
|
|
19
|
-
import { getNestedValue as
|
|
20
|
-
import { searchIcon as
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
});
|
|
45
|
-
}, this.handleClear = () => {
|
|
46
|
-
const e = this.props.searchBoxFilterOperator ? this.props.searchBoxFilterOperator : "startswith", t = {
|
|
47
|
-
logic: "and",
|
|
48
|
-
filters: [
|
|
49
|
-
{ field: this.props.column.field, operator: e, value: "", ignoreCase: !0 }
|
|
50
|
-
]
|
|
51
|
-
};
|
|
52
|
-
this.setState({
|
|
53
|
-
value: "",
|
|
54
|
-
data: this.parseData(v(this.props.data || [], t), this.props.uniqueData)
|
|
55
|
-
});
|
|
56
|
-
}, this.clear = (e) => {
|
|
57
|
-
if (e.preventDefault(), !this.props.onFilterChange)
|
|
58
|
-
return;
|
|
59
|
-
const t = this.state.currentFilter || null;
|
|
60
|
-
t !== null && t.filters.length > 0 ? (this.compositeFilterIndex >= 0 && t.filters.splice(this.compositeFilterIndex, 1), this.props.onFilterChange(t, e)) : this.props.onFilterChange(null, e), this.props.onCloseMenu && this.props.onCloseMenu();
|
|
61
|
-
}, this.submit = (e) => {
|
|
62
|
-
if (e.preventDefault(), !this.props.onFilterChange)
|
|
63
|
-
return;
|
|
64
|
-
const t = this.state.currentFilter || null;
|
|
65
|
-
this.props.onFilterChange(t, e), this.props.onCloseMenu && this.props.onCloseMenu();
|
|
66
|
-
}, this.handleCheckBoxChange = (e, t) => {
|
|
67
|
-
const n = this.props.column.field || "", r = { ...this.state.currentFilter }, a = [...this.state.currentFilter.filters];
|
|
68
|
-
let i = [];
|
|
69
|
-
if (this.compositeFilterIndex !== -1 && r.filters[this.compositeFilterIndex].filters && t !== "all" && (i = r.filters[this.compositeFilterIndex].filters), e.value && t === "all")
|
|
70
|
-
this.state.data.forEach((l) => {
|
|
71
|
-
i.push({ field: n, operator: "eq", value: l });
|
|
72
|
-
});
|
|
73
|
-
else if (e.value)
|
|
74
|
-
i.push({ field: n, operator: "eq", value: t });
|
|
75
|
-
else if (this.state.currentFilter) {
|
|
76
|
-
const l = i.findIndex((c) => c.value === t);
|
|
77
|
-
i.splice(l, 1);
|
|
78
|
-
}
|
|
79
|
-
r.logic = "and", this.compositeFilterIndex !== -1 ? a[this.compositeFilterIndex] = {
|
|
80
|
-
logic: "or",
|
|
81
|
-
filters: i
|
|
82
|
-
} : a.push({
|
|
83
|
-
logic: "or",
|
|
84
|
-
filters: i
|
|
85
|
-
}), (!e.value && t === "all" || i.length === 0) && a.splice(this.compositeFilterIndex, 1), r.filters = a, this.setState({ currentFilter: r });
|
|
86
|
-
}, this.isAllSelected = () => {
|
|
87
|
-
let e = !1;
|
|
88
|
-
if (this.state.currentFilter) {
|
|
89
|
-
const t = [...this.state.currentFilter.filters];
|
|
90
|
-
return this.compositeFilterIndex === -1 ? !1 : (e = this.state.data.every((n) => this.compositeFilterIndex !== -1 && t[this.compositeFilterIndex].filters ? t[this.compositeFilterIndex].filters.findIndex((a) => a.value === n) >= 0 : !1), e);
|
|
91
|
-
}
|
|
92
|
-
return e;
|
|
93
|
-
}, this.compositeFilterIndex = this.getFilterIndex(), this.state = {
|
|
94
|
-
expanded: o.expanded || !1,
|
|
95
|
-
value: "",
|
|
96
|
-
data: this.parseData(this.props.data, this.props.uniqueData) || [],
|
|
97
|
-
dataFromProps: this.parseData(this.props.data, !1) || [],
|
|
98
|
-
currentFilter: this.defaultFilter()
|
|
9
|
+
import * as l from "react";
|
|
10
|
+
import { GridColumnMenuItem as Z } from "./GridColumnMenuItem.mjs";
|
|
11
|
+
import { GridColumnMenuItemGroup as _ } from "./GridColumnMenuItemGroup.mjs";
|
|
12
|
+
import { GridColumnMenuItemContent as $ } from "./GridColumnMenuItemContent.mjs";
|
|
13
|
+
import { Input as p, Checkbox as M } from "@progress/kendo-react-inputs";
|
|
14
|
+
import { useLocalization as ee } from "@progress/kendo-react-intl";
|
|
15
|
+
import { searchPlaceholder as O, messages as m, filterTitle as q, filterCheckAll as L, filterSelectedItems as w, filterSubmitButton as V, filterClearButton as G } from "../messages/index.mjs";
|
|
16
|
+
import { filterBy as P } from "@progress/kendo-data-query";
|
|
17
|
+
import { IconWrap as te, clone as ne } from "@progress/kendo-react-common";
|
|
18
|
+
import { Button as F } from "@progress/kendo-react-buttons";
|
|
19
|
+
import { getNestedValue as R } from "../utils/index.mjs";
|
|
20
|
+
import { searchIcon as le, xIcon as re, filterIcon as ae } from "@progress/kendo-svg-icons";
|
|
21
|
+
const ie = (e, u) => e.length !== u.length ? !1 : e.every((h, f) => h === u[f]), ce = {
|
|
22
|
+
uniqueData: !0
|
|
23
|
+
}, Ee = (e) => {
|
|
24
|
+
const { uniqueData: u = ce.uniqueData } = e, h = () => {
|
|
25
|
+
const t = e.column.field;
|
|
26
|
+
return v().filters.findIndex(
|
|
27
|
+
(a) => a.filters && a.filters.length > 0 && a.filters[0].field === t
|
|
28
|
+
);
|
|
29
|
+
}, f = (t, n) => {
|
|
30
|
+
const i = e.column.field || "", a = t.map((c) => R(i, c));
|
|
31
|
+
return n ? a.filter((c, o) => a.indexOf(c) === o) : a;
|
|
32
|
+
}, v = () => e.filter ? ne(e.filter) : { filters: [], logic: "and" }, r = l.useRef(h()), [S, z] = l.useState(e.expanded || !1), [I, b] = l.useState(""), [g, x] = l.useState(f(e.data, u) || []), [A, j] = l.useState(f(e.data, !1) || []), [s, T] = l.useState(v());
|
|
33
|
+
l.useEffect(() => {
|
|
34
|
+
const t = e.column.field || "", n = e.data.map((i) => R(t, i));
|
|
35
|
+
ie(n, A) || (x(n), j(n));
|
|
36
|
+
}, [e.column, e.data]);
|
|
37
|
+
const N = () => e.expanded !== void 0, W = () => {
|
|
38
|
+
const t = N(), n = !(t ? e.expanded : S);
|
|
39
|
+
e.onExpandChange && e.onExpandChange(n), t || z(n);
|
|
40
|
+
}, B = (t) => {
|
|
41
|
+
const n = e.searchBoxFilterOperator ? e.searchBoxFilterOperator : "startswith", i = {
|
|
42
|
+
logic: "and",
|
|
43
|
+
filters: [{ field: e.column.field, operator: n, value: t.target.value, ignoreCase: !0 }]
|
|
99
44
|
};
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
P(e,
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
45
|
+
b(t.target.value), x(f(P(e.data || [], i), u));
|
|
46
|
+
}, H = () => {
|
|
47
|
+
const t = e.searchBoxFilterOperator ? e.searchBoxFilterOperator : "startswith", n = {
|
|
48
|
+
logic: "and",
|
|
49
|
+
filters: [{ field: e.column.field, operator: t, value: "", ignoreCase: !0 }]
|
|
50
|
+
};
|
|
51
|
+
b(""), x(f(P(e.data || [], n), u));
|
|
52
|
+
}, J = (t) => {
|
|
53
|
+
if (t.preventDefault(), !e.onFilterChange)
|
|
54
|
+
return;
|
|
55
|
+
const n = s || null;
|
|
56
|
+
n !== null && n.filters.length > 0 ? (r.current >= 0 && n.filters.splice(r.current, 1), e.onFilterChange(n, t)) : e.onFilterChange(null, t), e.onCloseMenu && e.onCloseMenu();
|
|
57
|
+
}, K = (t) => {
|
|
58
|
+
if (t.preventDefault(), !e.onFilterChange)
|
|
59
|
+
return;
|
|
60
|
+
const n = s || null;
|
|
61
|
+
e.onFilterChange(n, t), e.onCloseMenu && e.onCloseMenu();
|
|
62
|
+
}, D = (t, n) => {
|
|
63
|
+
const i = e.column.field || "", a = { ...s }, c = [...s.filters];
|
|
64
|
+
let o = [];
|
|
65
|
+
if (r.current !== -1 && a.filters[r.current].filters && n !== "all" && (o = a.filters[r.current].filters), t.value && n === "all")
|
|
66
|
+
g.forEach((E) => {
|
|
67
|
+
o.push({ field: i, operator: "eq", value: E });
|
|
123
68
|
});
|
|
69
|
+
else if (t.value)
|
|
70
|
+
o.push({ field: i, operator: "eq", value: n });
|
|
71
|
+
else if (s) {
|
|
72
|
+
const E = o.findIndex((Y) => Y.value === n);
|
|
73
|
+
o.splice(E, 1);
|
|
74
|
+
}
|
|
75
|
+
a.logic = "and", r.current !== -1 ? c[r.current] = {
|
|
76
|
+
logic: "or",
|
|
77
|
+
filters: o
|
|
78
|
+
} : c.push({
|
|
79
|
+
logic: "or",
|
|
80
|
+
filters: o
|
|
81
|
+
}), (!t.value && n === "all" || o.length === 0) && c.splice(r.current, 1), a.filters = c, T(a);
|
|
82
|
+
}, Q = () => {
|
|
83
|
+
let t = !1;
|
|
84
|
+
if (s) {
|
|
85
|
+
const n = [...s.filters];
|
|
86
|
+
return r.current === -1 ? !1 : (t = g.every((i) => r.current !== -1 && n[r.current].filters ? n[r.current].filters.findIndex(
|
|
87
|
+
(c) => c.value === i
|
|
88
|
+
) >= 0 : !1), t);
|
|
124
89
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
)
|
|
135
|
-
p,
|
|
136
|
-
{
|
|
137
|
-
type: "button",
|
|
138
|
-
rounded: null,
|
|
139
|
-
className: "k-input-button",
|
|
140
|
-
onClick: this.handleClear,
|
|
141
|
-
icon: "x",
|
|
142
|
-
svgIcon: w
|
|
143
|
-
}
|
|
144
|
-
)), a = n.filter((i, l) => n.indexOf(i) === l);
|
|
145
|
-
return /* @__PURE__ */ s.createElement(B, null, /* @__PURE__ */ s.createElement(
|
|
146
|
-
S,
|
|
147
|
-
{
|
|
148
|
-
title: e.toLanguageString(g, h[g]),
|
|
149
|
-
iconClass: "k-i-filter",
|
|
150
|
-
svgIcon: M,
|
|
151
|
-
onClick: this.onFilterExpand
|
|
152
|
-
}
|
|
153
|
-
), /* @__PURE__ */ s.createElement(N, { show: !!t }, /* @__PURE__ */ s.createElement(
|
|
154
|
-
"form",
|
|
155
|
-
{
|
|
156
|
-
className: "k-filter-menu",
|
|
157
|
-
onSubmit: this.submit,
|
|
158
|
-
onReset: this.clear
|
|
159
|
-
},
|
|
160
|
-
/* @__PURE__ */ s.createElement("div", { className: "k-filter-menu-container" }, r, /* @__PURE__ */ s.createElement("ul", { className: "k-reset k-multicheck-wrap" }, /* @__PURE__ */ s.createElement("li", { className: "k-item k-check-all-wrap" }, /* @__PURE__ */ s.createElement(
|
|
161
|
-
m,
|
|
162
|
-
{
|
|
163
|
-
label: e.toLanguageString(F, h[F]),
|
|
164
|
-
onChange: (i) => this.handleCheckBoxChange(i, "all"),
|
|
165
|
-
checked: this.isAllSelected()
|
|
166
|
-
}
|
|
167
|
-
)), this.state.data.map((i, l) => /* @__PURE__ */ s.createElement("li", { className: "k-item", key: l }, /* @__PURE__ */ s.createElement(
|
|
168
|
-
m,
|
|
169
|
-
{
|
|
170
|
-
label: String(i),
|
|
171
|
-
onChange: (c) => this.handleCheckBoxChange(c, i),
|
|
172
|
-
checked: a.includes(i)
|
|
173
|
-
}
|
|
174
|
-
)))), /* @__PURE__ */ s.createElement("div", { className: "k-filter-selected-items" }, a.length + " " + e.toLanguageString(C, h[C])), /* @__PURE__ */ s.createElement("div", { className: "k-actions k-hstack k-justify-content-stretch" }, /* @__PURE__ */ s.createElement(
|
|
175
|
-
p,
|
|
176
|
-
{
|
|
177
|
-
themeColor: "primary",
|
|
178
|
-
type: "submit"
|
|
179
|
-
},
|
|
180
|
-
e.toLanguageString(I, h[I])
|
|
181
|
-
), /* @__PURE__ */ s.createElement(
|
|
182
|
-
p,
|
|
183
|
-
{
|
|
184
|
-
className: "k-button",
|
|
185
|
-
type: "reset"
|
|
186
|
-
},
|
|
187
|
-
e.toLanguageString(k, h[k])
|
|
188
|
-
)))
|
|
189
|
-
)));
|
|
90
|
+
return t;
|
|
91
|
+
}, d = ee(), { column: C } = e;
|
|
92
|
+
if (!C || !C.field)
|
|
93
|
+
return /* @__PURE__ */ l.createElement("div", null);
|
|
94
|
+
const U = N() ? e.expanded : S, k = [];
|
|
95
|
+
if (s) {
|
|
96
|
+
const t = [...s.filters];
|
|
97
|
+
r.current = t.findIndex((n) => n.filters && n.filters.length > 0 ? n.filters[0].field === C.field : !1), r.current !== -1 && t[r.current].filters.length > 0 && t[r.current].filters.forEach((n) => {
|
|
98
|
+
n.field === e.column.field && k.push(n.value);
|
|
99
|
+
});
|
|
190
100
|
}
|
|
101
|
+
const X = e.searchBox ? /* @__PURE__ */ l.createElement(e.searchBox, { value: I, onChange: B }) : /* @__PURE__ */ l.createElement("div", { className: "k-searchbox k-textbox k-input k-input-md k-input-solid" }, /* @__PURE__ */ l.createElement(te, { className: "k-input-icon", name: "search", icon: le }), /* @__PURE__ */ l.createElement(
|
|
102
|
+
p,
|
|
103
|
+
{
|
|
104
|
+
className: "k-input-inner",
|
|
105
|
+
type: "text",
|
|
106
|
+
placeholder: d.toLanguageString(O, m[O]),
|
|
107
|
+
value: I,
|
|
108
|
+
onChange: (t) => B(t.nativeEvent)
|
|
109
|
+
}
|
|
110
|
+
), /* @__PURE__ */ l.createElement(
|
|
111
|
+
F,
|
|
112
|
+
{
|
|
113
|
+
type: "button",
|
|
114
|
+
rounded: null,
|
|
115
|
+
className: "k-input-button",
|
|
116
|
+
onClick: H,
|
|
117
|
+
icon: "x",
|
|
118
|
+
svgIcon: re
|
|
119
|
+
}
|
|
120
|
+
)), y = k.filter((t, n) => k.indexOf(t) === n);
|
|
121
|
+
return /* @__PURE__ */ l.createElement(_, null, /* @__PURE__ */ l.createElement(
|
|
122
|
+
Z,
|
|
123
|
+
{
|
|
124
|
+
title: d.toLanguageString(q, m[q]),
|
|
125
|
+
iconClass: "k-i-filter",
|
|
126
|
+
svgIcon: ae,
|
|
127
|
+
onClick: W
|
|
128
|
+
}
|
|
129
|
+
), /* @__PURE__ */ l.createElement($, { show: !!U }, /* @__PURE__ */ l.createElement("form", { className: "k-filter-menu", onSubmit: K, onReset: J }, /* @__PURE__ */ l.createElement("div", { className: "k-filter-menu-container" }, X, /* @__PURE__ */ l.createElement("ul", { className: "k-reset k-multicheck-wrap" }, /* @__PURE__ */ l.createElement("li", { className: "k-item k-check-all-wrap" }, /* @__PURE__ */ l.createElement(
|
|
130
|
+
M,
|
|
131
|
+
{
|
|
132
|
+
label: d.toLanguageString(L, m[L]),
|
|
133
|
+
onChange: (t) => D(t, "all"),
|
|
134
|
+
checked: Q()
|
|
135
|
+
}
|
|
136
|
+
)), g.map((t, n) => /* @__PURE__ */ l.createElement("li", { className: "k-item", key: n }, /* @__PURE__ */ l.createElement(
|
|
137
|
+
M,
|
|
138
|
+
{
|
|
139
|
+
label: String(t),
|
|
140
|
+
onChange: (i) => D(i, t),
|
|
141
|
+
checked: y.includes(t)
|
|
142
|
+
}
|
|
143
|
+
)))), /* @__PURE__ */ l.createElement("div", { className: "k-filter-selected-items" }, y.length + " " + d.toLanguageString(w, m[w])), /* @__PURE__ */ l.createElement("div", { className: "k-actions k-hstack k-justify-content-stretch" }, /* @__PURE__ */ l.createElement(F, { themeColor: "primary", type: "submit" }, d.toLanguageString(V, m[V])), /* @__PURE__ */ l.createElement(F, { className: "k-button", type: "reset" }, d.toLanguageString(G, m[G])))))));
|
|
191
144
|
};
|
|
192
|
-
u.defaultProps = {
|
|
193
|
-
uniqueData: !0
|
|
194
|
-
};
|
|
195
|
-
let d = u;
|
|
196
|
-
y(d);
|
|
197
145
|
export {
|
|
198
|
-
|
|
146
|
+
Ee as GridColumnMenuCheckboxFilter
|
|
199
147
|
};
|
|
@@ -5,4 +5,4 @@
|
|
|
5
5
|
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
6
|
*-------------------------------------------------------------------------------------------
|
|
7
7
|
*/
|
|
8
|
-
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
8
|
+
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const X=require("react"),L=require("@progress/kendo-data-query"),Y=require("./GridColumnMenuItem.js"),Z=require("./GridColumnMenuItemGroup.js"),$=require("./GridColumnMenuItemContent.js"),ee=require("@progress/kendo-react-intl"),i=require("../filterCommon.js"),c=require("../messages/index.js"),te=require("./GridColumnMenuFilterUI.js"),T=require("@progress/kendo-react-buttons"),re=require("@progress/kendo-svg-icons");function le(e){const u=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const f in e)if(f!=="default"){const F=Object.getOwnPropertyDescriptor(e,f);Object.defineProperty(u,f,F.get?F:{enumerable:!0,get:()=>e[f]})}}return u.default=e,Object.freeze(u)}const l=le(X),I=e=>e||{filters:[],logic:"and"},v=(e,u)=>I(u).filters.filter(n=>L.isCompositeFilterDescriptor(n)?n.filters&&n.filters.length&&n.filters.length<=2&&!n.filters.find(C=>L.isCompositeFilterDescriptor(C)||C.field!==e):!1)[0]||null,ne=(e,u)=>!!v(e,u),ie=e=>{const u=l.useCallback(()=>{let t;if(e.column&&e.column.field){const a=i.getFilterType(e.column.filter),r=i.getDefaultOperator(e.filterOperators,a);t=v(e.column.field,e.filter),t=t?{...t,filters:t.filters.map(o=>({...o}))}:{logic:"and",filters:[{field:e.column.field,operator:r,value:i.IsUnaryFilter(r)?null:void 0},{field:e.column.field,operator:r,value:i.IsUnaryFilter(r)?null:void 0}]},t.filters.filter(o=>o.field===e.column.field).length===1&&t.filters.splice(1,0,{field:e.column.field,operator:r})}return t},[e.column]),[f,F]=l.useState(e.expanded||!1),[n,C]=l.useState(u()),S=()=>e.expanded!==void 0,_=()=>{const t=S(),a=!(t?e.expanded:f);e.onExpandChange&&e.onExpandChange(a),t||F(a)},j=t=>{p(0,t)},R=t=>{p(1,t)},p=(t,a)=>{const r=n.filters.map((o,s)=>s===t?{...o,value:a.value,operator:a.operator}:o);C({...n,filters:r})},V=t=>{C({...n,logic:t.target.value.operator})},w=t=>{if(t.preventDefault(),!e.onFilterChange)return;const a=e.column.field,r=I(e.filter),o=v(a,e.filter),s=r.filters.filter(g=>g!==o);s.length?e.onFilterChange({...r,filters:s},t):e.onFilterChange(null,t),e.onCloseMenu&&e.onCloseMenu()},b=()=>({...n,filters:n.filters.filter(t=>t.value!==void 0&&t.value!==null&&t.value!==""||t.value===null&&t.operator)}),N=t=>{if(t.preventDefault(),!e.onFilterChange)return;const a=e.column.field,r=I(e.filter),o=v(a,e.filter),s=b();let g=null;if(o&&s.filters.length>0){const M=r.filters.map(y=>y===o?s:y);g={...r,filters:M}}else if(s.filters.length===0){const M=r.filters.filter(y=>y!==o);M.length&&(g={...r,filters:M})}else g={...r,filters:[...r.filters,s]};e.onFilterChange(g,t),e.onCloseMenu&&e.onCloseMenu()},{column:h,filterUI:z,hideSecondFilter:x,filterOperators:A}=e,d=ee.useLocalization();if(!h||!h.field)return l.createElement("div",null);const G=i.getFilterType(h.filter),H=x!==void 0?x:i.defaultHideSecondFilter[G],m=n.filters,O=i.operatorMap(A[G],d),k=i.operatorMap(i.booleanFilterValues,d),Q={field:h.field,value:m[0].value,operator:m[0].operator,operators:O,booleanValues:k,onChange:j,filterType:G},J={field:h.field,value:m[1].value,operator:m[1].operator,operators:O,booleanValues:k,onChange:R,filterType:G},D=n.logic,q=i.operatorMap(i.filterLogicList,d),E={value:q.find(t=>t.operator===(D===null?"":D)),onChange:V,data:q},B=z,P={firstFilterProps:Q,secondFilterProps:J,logicData:E.data,logicValue:E.value,onLogicChange:E.onChange,hideSecondFilter:H},K=b().filters.length!==0||i.IsUnaryFilter(m[0].operator)||i.IsUnaryFilter(m[1].operator),W=S()?e.expanded:f,U=e.alwaysExpand;return l.createElement(Z.GridColumnMenuItemGroup,null,!U&&l.createElement(Y.GridColumnMenuItem,{title:d.toLanguageString(c.filterTitle,c.messages[c.filterTitle]),iconClass:"k-i-filter",svgIcon:re.filterIcon,onClick:_}),l.createElement($.GridColumnMenuItemContent,{show:U||!!W},l.createElement("form",{className:"k-filter-menu",onSubmit:N,onReset:w},l.createElement("div",{className:"k-filter-menu-container"},B?l.createElement(B,{...P}):l.createElement(te.GridColumnMenuFilterUI,{...P}),l.createElement("div",{className:"k-actions k-actions-stretched"},l.createElement(T.Button,{themeColor:"primary",disabled:!K},d.toLanguageString(c.filterSubmitButton,c.messages[c.filterSubmitButton])),l.createElement(T.Button,{type:"reset"},d.toLanguageString(c.filterClearButton,c.messages[c.filterClearButton])))))))};exports.GridColumnMenuFilter=ie;exports.filterGroupByField=v;exports.isColumnMenuFilterActive=ne;exports.rootFilterOrDefault=I;
|