impact-nova 1.7.39 → 1.7.41

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.
Files changed (44) hide show
  1. package/dist/components/ui/ag-grid-react/cell-renderers/editors/date-cell-editor.js +58 -48
  2. package/dist/components/ui/ag-grid-react/headers/advanced-filter/advanced-filter-dialog.d.ts +0 -2
  3. package/dist/components/ui/ag-grid-react/headers/advanced-filter/advanced-filter-dialog.js +212 -218
  4. package/dist/components/ui/ag-grid-react/headers/advanced-filter/column-filter-section.d.ts +2 -2
  5. package/dist/components/ui/ag-grid-react/headers/advanced-filter/column-filter-section.js +97 -127
  6. package/dist/components/ui/ag-grid-react/headers/components/date-filter-picker.d.ts +39 -0
  7. package/dist/components/ui/ag-grid-react/headers/header-search-input.js +433 -299
  8. package/dist/components/ui/ag-grid-react/headers/utils/date-utils.d.ts +33 -1
  9. package/dist/components/ui/ag-grid-react/headers/utils/date-utils.js +60 -26
  10. package/dist/components/ui/ag-grid-react/headers/utils/filter-utils.d.ts +11 -10
  11. package/dist/components/ui/ag-grid-react/headers/utils/filter-utils.js +284 -260
  12. package/dist/components/ui/ag-grid-react/index.js +24 -25
  13. package/dist/components/ui/data-table/column-indicator.d.ts +17 -0
  14. package/dist/components/ui/data-table/column-indicator.js +30 -0
  15. package/dist/components/ui/data-table/data-table-column-list.js +210 -154
  16. package/dist/components/ui/data-table/data-table.js +60 -59
  17. package/dist/components/ui/data-table/index.d.ts +3 -0
  18. package/dist/components/ui/data-table/index.js +34 -28
  19. package/dist/components/ui/data-table/indicator-legend.d.ts +8 -0
  20. package/dist/components/ui/data-table/indicator-legend.js +20 -0
  21. package/dist/components/ui/data-table/pin-switch.d.ts +30 -0
  22. package/dist/components/ui/data-table/pin-switch.js +75 -0
  23. package/dist/components/ui/date-picker/date-picker.js +65 -63
  24. package/dist/components/ui/date-picker/date-range-picker.js +77 -75
  25. package/dist/components/ui/nested-list/components/NestedListContent.js +7 -7
  26. package/dist/components/ui/nested-list/components/SortableItem.d.ts +10 -0
  27. package/dist/components/ui/nested-list/components/SortableItem.js +91 -83
  28. package/dist/components/ui/nested-list/nested-list.js +184 -178
  29. package/dist/components/ui/types/ag-grid.types.d.ts +16 -2
  30. package/dist/components/ui/types/date-picker.types.d.ts +4 -0
  31. package/dist/components/ui/types/nested-list.types.d.ts +12 -0
  32. package/dist/i18n/defaultMessages.d.ts +10 -0
  33. package/dist/i18n/defaultMessages.js +16 -8
  34. package/dist/i18n/locales/de.js +8 -0
  35. package/dist/i18n/locales/es.js +8 -0
  36. package/dist/i18n/locales/hi.js +8 -0
  37. package/dist/i18n/locales/kn.js +8 -0
  38. package/dist/icons/assets/archive.svg.js +5 -0
  39. package/dist/icons/index.d.ts +1 -0
  40. package/dist/icons/index.js +280 -278
  41. package/dist/impact-nova.css +1 -1
  42. package/dist/index.js +180 -174
  43. package/package.json +1 -1
  44. package/tailwind.config.js +16 -0
@@ -1,4 +1,4 @@
1
- import { getTodayStr as M, getYesterdayStr as F, getMonthRange as S, getYearRange as W } from "./date-utils.js";
1
+ import { DEFAULT_DATE_DISPLAY_FORMAT as O, isoToDisplay as S, getTodayStr as b, getYesterdayStr as W, getMonthRange as F, getYearRange as x } from "./date-utils.js";
2
2
  const v = {
3
3
  yes: !0,
4
4
  true: !0,
@@ -11,7 +11,7 @@ const v = {
11
11
  "[ ]": !1,
12
12
  inactive: !1,
13
13
  disabled: !1
14
- }, C = {
14
+ }, $ = {
15
15
  jan: 1,
16
16
  january: 1,
17
17
  feb: 2,
@@ -36,145 +36,146 @@ const v = {
36
36
  dec: 12,
37
37
  december: 12
38
38
  };
39
- function w(a) {
40
- const t = a?.filterParams?.filters || [];
39
+ function L(i) {
40
+ const n = i?.filterParams?.filters || [];
41
41
  return {
42
- text: t.findIndex((n) => (typeof n == "string" ? n : n.filter) === "agTextColumnFilter"),
43
- number: t.findIndex((n) => (typeof n == "string" ? n : n.filter) === "agNumberColumnFilter"),
44
- set: t.findIndex((n) => (typeof n == "string" ? n : n.filter) === "agSetColumnFilter"),
45
- date: t.findIndex((n) => (typeof n == "string" ? n : n.filter) === "agDateColumnFilter")
42
+ text: n.findIndex((e) => (typeof e == "string" ? e : e.filter) === "agTextColumnFilter"),
43
+ number: n.findIndex((e) => (typeof e == "string" ? e : e.filter) === "agNumberColumnFilter"),
44
+ set: n.findIndex((e) => (typeof e == "string" ? e : e.filter) === "agSetColumnFilter"),
45
+ date: n.findIndex((e) => (typeof e == "string" ? e : e.filter) === "agDateColumnFilter")
46
46
  };
47
47
  }
48
- function d(a) {
49
- const t = a.toLowerCase().trim();
50
- return t === "today" ? M() : t === "yesterday" ? F() : a;
48
+ function g(i) {
49
+ const n = i.toLowerCase().trim();
50
+ return n === "today" ? b() : n === "yesterday" ? W() : i;
51
51
  }
52
- function q(a, t = !1, n = !1) {
53
- const r = a.trim();
54
- if (!r)
52
+ function E(i, n = !1, e = !1) {
53
+ const t = i.trim();
54
+ if (!t)
55
55
  return { operator: "contains", value: "" };
56
- if (r === '""') return { operator: "empty", value: "" };
57
- if (r === '!""') return { operator: "notEmpty", value: "" };
58
- if (r.startsWith("!="))
59
- return { operator: "notEqual", value: d(r.slice(2)) };
60
- if (r.startsWith("=="))
61
- return { operator: "equals", value: d(r.slice(2)) };
62
- if (r.startsWith("=")) {
63
- const e = r.slice(1).trim(), l = e.toLowerCase();
64
- return v[l] !== void 0 ? { operator: "equals", value: String(v[l]) } : { operator: "equals", value: d(e) };
56
+ if (t === '""') return { operator: "empty", value: "" };
57
+ if (t === '!""') return { operator: "notEmpty", value: "" };
58
+ if (t.startsWith("!="))
59
+ return { operator: "notEqual", value: g(t.slice(2)) };
60
+ if (t.startsWith("=="))
61
+ return { operator: "equals", value: g(t.slice(2)) };
62
+ if (t.startsWith("=")) {
63
+ const o = t.slice(1).trim(), r = o.toLowerCase();
64
+ return v[r] !== void 0 ? { operator: "equals", value: String(v[r]) } : { operator: "equals", value: g(o) };
65
65
  }
66
- if (r.startsWith("!"))
67
- return { operator: "notContains", value: d(r.slice(1)) };
68
- if (r.startsWith(">="))
69
- return { operator: "greaterThanOrEqual", value: d(r.slice(2)) };
70
- if (r.startsWith(">"))
71
- return { operator: "greaterThan", value: d(r.slice(1)) };
72
- if (r.startsWith("<="))
73
- return { operator: "lessThanOrEqual", value: d(r.slice(2)) };
74
- if (r.startsWith("<"))
75
- return { operator: "lessThan", value: d(r.slice(1)) };
76
- if (r.startsWith("*") && r.length > 1 && !r.endsWith("*"))
77
- return { operator: "endsWith", value: r.slice(1).trim() };
78
- if (r.endsWith("*") && r.length > 1 && !r.startsWith("*"))
79
- return { operator: "startsWith", value: r.slice(0, -1).trim() };
80
- const i = r.match(/^(\d+(?:\.\d+)?)\s*-\s*(\d+(?:\.\d+)?)$/);
81
- if (i)
82
- return { operator: "inRange", value: i[1], valueTo: i[2] };
83
- const f = r.match(/^(\d{4}-\d{2}-\d{2})\s*-\s*(\d{4}-\d{2}-\d{2})$/);
84
- if (f)
85
- return { operator: "inRange", value: f[1], valueTo: f[2] };
86
- const c = r.toLowerCase();
87
- if (t && v[c] !== void 0)
88
- return { operator: "equals", value: String(v[c]) };
89
- if (n) {
90
- if (c === "today") return { operator: "equals", value: M() };
91
- if (c === "yesterday") return { operator: "equals", value: F() };
92
- if (/^\d{4}$/.test(r)) {
93
- const l = W(Number(r));
94
- return { operator: "inRange", value: l.from, valueTo: l.to };
66
+ if (t.startsWith("!"))
67
+ return { operator: "notContains", value: g(t.slice(1)) };
68
+ if (t.startsWith(">="))
69
+ return { operator: "greaterThanOrEqual", value: g(t.slice(2)) };
70
+ if (t.startsWith(">"))
71
+ return { operator: "greaterThan", value: g(t.slice(1)) };
72
+ if (t.startsWith("<="))
73
+ return { operator: "lessThanOrEqual", value: g(t.slice(2)) };
74
+ if (t.startsWith("<"))
75
+ return { operator: "lessThan", value: g(t.slice(1)) };
76
+ if (t.startsWith("*") && t.length > 1 && !t.endsWith("*"))
77
+ return { operator: "endsWith", value: t.slice(1).trim() };
78
+ if (t.endsWith("*") && t.length > 1 && !t.startsWith("*"))
79
+ return { operator: "startsWith", value: t.slice(0, -1).trim() };
80
+ const s = t.match(/^(\d+(?:\.\d+)?)\s*~\s*(\d+(?:\.\d+)?)$/);
81
+ if (s)
82
+ return { operator: "inRange", value: s[1], valueTo: s[2] };
83
+ const c = t.match(/^(\d{4}-\d{2}-\d{2})\s*~\s*(\d{4}-\d{2}-\d{2})$/);
84
+ if (c)
85
+ return { operator: "inRange", value: c[1], valueTo: c[2] };
86
+ const p = t.match(/^([^~]+)~([^~]+)$/);
87
+ if (p) {
88
+ const o = p[1].trim(), r = p[2].trim();
89
+ if (/\d/.test(o) && /\d/.test(r))
90
+ return { operator: "inRange", value: o, valueTo: r };
91
+ }
92
+ const a = t.toLowerCase();
93
+ if (n && v[a] !== void 0)
94
+ return { operator: "equals", value: String(v[a]) };
95
+ if (e) {
96
+ if (a === "today") return { operator: "equals", value: b() };
97
+ if (a === "yesterday") return { operator: "equals", value: W() };
98
+ if (/^\d{4}$/.test(t)) {
99
+ const r = x(Number(t));
100
+ return { operator: "inRange", value: r.from, valueTo: r.to };
95
101
  }
96
- const e = r.match(/^([a-zA-Z]+)\s*(\d{4})$/);
97
- if (e) {
98
- const l = C[e[1].toLowerCase()];
99
- if (l) {
100
- const u = S(l, Number(e[2]));
102
+ const o = t.match(/^([a-zA-Z]+)\s*(\d{4})$/);
103
+ if (o) {
104
+ const r = $[o[1].toLowerCase()];
105
+ if (r) {
106
+ const u = F(r, Number(o[2]));
101
107
  return { operator: "inRange", value: u.from, valueTo: u.to };
102
108
  }
103
109
  }
104
110
  }
105
- return { operator: "contains", value: r };
111
+ return { operator: "contains", value: t };
106
112
  }
107
- function I(a, t = !1, n = !1, r = !1) {
108
- if (!a || a.trim() === "")
113
+ function w(i, n = !1, e = !1, t = !1) {
114
+ if (!i || i.trim() === "")
109
115
  return { conditions: [], logic: "OR" };
110
- const i = a.trim();
111
- if (i === "*")
116
+ const s = i.trim();
117
+ if (s === "*")
112
118
  return { conditions: [], logic: "OR", matchAll: !0 };
113
- const f = i.includes("+") || i.includes("&"), c = i.includes(",") || i.includes(";");
114
- if (f)
115
- return { conditions: i.split(/\s*[+&]\s*/).filter((o) => !!o.trim()).map((o) => q(o, n, r)).filter((o) => !!o.value), logic: "AND" };
119
+ const c = s.includes("+") || s.includes("&"), p = s.includes(",") || s.includes(";");
116
120
  if (c)
117
- return { conditions: i.split(/\s*[,;]\s*/).filter((o) => !!o.trim()).map((o) => q(o, n, r)).filter((o) => !!o.value), logic: "OR" };
118
- if (t) {
119
- const l = i.split(/\s+/).filter((u) => !!u.trim());
120
- if (l.length > 1) {
121
- const u = l.map((o) => q(o, n, r)).filter((o) => !!o.value);
122
- if (u.length > 1)
123
- return { conditions: u, logic: "OR" };
121
+ return { conditions: s.split(/\s*[+&]\s*/).filter((u) => !!u.trim()).map((u) => E(u, e, t)).filter((u) => !!u.value), logic: "AND" };
122
+ if (p)
123
+ return { conditions: s.split(/\s*[,;]\s*/).filter((u) => !!u.trim()).map((u) => E(u, e, t)).filter((u) => !!u.value), logic: "OR" };
124
+ if (n) {
125
+ const o = s.split(/\s+/).filter((r) => !!r.trim());
126
+ if (o.length > 1) {
127
+ const r = o.map((u) => E(u, e, t)).filter((u) => !!u.value);
128
+ if (r.length > 1)
129
+ return { conditions: r, logic: "OR" };
124
130
  }
125
131
  }
126
- const e = q(i, n, r);
127
- return !e.value && e.operator === "contains" ? { conditions: [], logic: "OR" } : { conditions: [e], logic: "OR" };
132
+ const a = E(s, e, t);
133
+ return !a.value && a.operator === "contains" ? { conditions: [], logic: "OR" } : { conditions: [a], logic: "OR" };
128
134
  }
129
- function m(a) {
130
- if (!a) return "";
131
- if (Array.isArray(a))
132
- return a.map((t) => m(t)).join(", ");
133
- if (/^\d{4}-\d{2}-\d{2}/.test(a))
134
- try {
135
- const t = new Date(a);
136
- if (!isNaN(t.getTime())) {
137
- const n = String(t.getMonth() + 1).padStart(2, "0"), r = String(t.getDate()).padStart(2, "0");
138
- return `${n}/${r}`;
139
- }
140
- } catch {
141
- }
142
- return a;
135
+ function m(i, n = O) {
136
+ if (!i) return "";
137
+ if (Array.isArray(i))
138
+ return i.map((e) => m(e, n)).join(", ");
139
+ if (/^\d{4}-\d{2}-\d{2}/.test(i)) {
140
+ const e = S(i, n);
141
+ if (e) return e;
142
+ }
143
+ return i;
143
144
  }
144
- function $(a) {
145
- const t = m(a.value), n = m(a.valueTo || "");
146
- switch (a.operator) {
145
+ function N(i, n = O) {
146
+ const e = m(i.value, n), t = m(i.valueTo || "", n);
147
+ switch (i.operator) {
147
148
  case "contains":
148
- return t;
149
+ return e;
149
150
  case "notContains":
150
- return `!${t}`;
151
+ return `!${e}`;
151
152
  case "equals":
152
- return a.columnType === "number" || a.columnType === "date" || a.columnType === "select" ? t : `=${t}`;
153
+ return i.columnType === "number" || i.columnType === "date" || i.columnType === "select" ? e : `=${e}`;
153
154
  case "notEqual":
154
- return `!=${t}`;
155
+ return `!=${e}`;
155
156
  case "startsWith":
156
- return `${t}*`;
157
+ return `${e}*`;
157
158
  case "endsWith":
158
- return `*${t}`;
159
+ return `*${e}`;
159
160
  case "greaterThan":
160
- return `>${t}`;
161
+ return `>${e}`;
161
162
  case "greaterThanOrEqual":
162
- return `≥${t}`;
163
+ return `>=${e}`;
163
164
  case "lessThan":
164
- return `<${t}`;
165
+ return `<${e}`;
165
166
  case "lessThanOrEqual":
166
- return `≤${t}`;
167
+ return `<=${e}`;
167
168
  case "inRange":
168
- return `${t}–${n}`;
169
+ return `${e}~${t}`;
169
170
  case "empty":
170
171
  return "∅";
171
172
  case "notEmpty":
172
173
  return "≠∅";
173
174
  default:
174
- return t;
175
+ return e;
175
176
  }
176
177
  }
177
- const b = {
178
+ const C = {
178
179
  contains: "contains",
179
180
  notContains: "notContains",
180
181
  equals: "equals",
@@ -196,47 +197,47 @@ const b = {
196
197
  lt: "lessThan",
197
198
  lte: "lessThanOrEqual"
198
199
  };
199
- function O(a, t) {
200
- if (!t) return "";
201
- if ("filterType" in t && t.filterType === "multi" && t.filterModels)
202
- return t.filterModels.map((r) => O(a, r)).filter((r) => !!r).join(", ");
203
- if ("filterType" in t && t.filterType === "set" && t.values) {
204
- const i = t.values || [];
205
- return i.length === 0 ? "" : i.length === 1 ? m(i[0]) : `${m(i[0])} (+${i.length - 1})`;
200
+ function A(i, n, e = O) {
201
+ if (!n) return "";
202
+ if ("filterType" in n && n.filterType === "multi" && n.filterModels)
203
+ return n.filterModels.map((s) => A(i, s, e)).filter((s) => !!s).join(", ");
204
+ if ("filterType" in n && n.filterType === "set" && n.values) {
205
+ const c = n.values || [];
206
+ return c.length === 0 ? "" : c.length === 1 ? m(c[0]) : `${m(c[0])} (+${c.length - 1})`;
206
207
  }
207
- if ("conditions" in t && t.conditions && t.operator) {
208
- const r = t.operator === "AND" ? " + " : ", ";
209
- return t.conditions.map((i) => O(a, i)).filter((i) => !!i).join(r);
208
+ if ("conditions" in n && n.conditions && n.operator) {
209
+ const s = n.operator === "AND" ? " + " : ", ";
210
+ return n.conditions.map((c) => A(i, c, e)).filter((c) => !!c).join(s);
210
211
  }
211
- const n = t;
212
- if ("type" in n && n.type) {
213
- const r = n.type, i = b[r] || r, f = n.filter !== void 0 ? String(n.filter) : n.dateFrom !== void 0 ? String(n.dateFrom) : "", c = n.filterTo !== void 0 ? String(n.filterTo) : n.dateTo !== void 0 ? String(n.dateTo) : void 0;
214
- return $({
215
- operator: i,
216
- value: f,
217
- valueTo: c,
212
+ const t = n;
213
+ if ("type" in t && t.type) {
214
+ const s = t.type, c = C[s] || s, p = t.filter !== void 0 ? String(t.filter) : t.dateFrom !== void 0 ? String(t.dateFrom) : "", a = t.filterTo !== void 0 ? String(t.filterTo) : t.dateTo !== void 0 ? String(t.dateTo) : void 0;
215
+ return N({
216
+ operator: c,
217
+ value: p,
218
+ valueTo: a,
218
219
  // Optimization: determine type roughly for '=' vs contains logic
219
- columnType: n.filterType === "number" ? "number" : n.filterType === "date" ? "date" : "text"
220
- });
220
+ columnType: t.filterType === "number" ? "number" : t.filterType === "date" ? "date" : "text"
221
+ }, e);
221
222
  }
222
223
  return "";
223
224
  }
224
- function A() {
225
+ function R() {
225
226
  return Math.random().toString(36).substring(2, 11);
226
227
  }
227
- function j(a = "", t) {
228
- const n = t === "number" || t === "date" || t === "select" ? "equals" : "contains";
228
+ function D(i = "", n) {
229
+ const e = n === "number" || n === "date" || n === "select" ? "equals" : "contains";
229
230
  return {
230
- id: A(),
231
- columnId: a,
232
- operator: n,
231
+ id: R(),
232
+ columnId: i,
233
+ operator: e,
233
234
  value: "",
234
- columnType: t
235
+ columnType: n
235
236
  // Store for proper filterType in AG Grid conversion
236
237
  };
237
238
  }
238
- function h(a) {
239
- switch (a) {
239
+ function h(i) {
240
+ switch (i) {
240
241
  case "contains":
241
242
  return "contains";
242
243
  case "notContains":
@@ -267,185 +268,208 @@ function h(a) {
267
268
  return "contains";
268
269
  }
269
270
  }
270
- function R(a, t, n) {
271
- return n === "number" ? "number" : n === "date" ? "date" : n === "select" || n === "set" || Array.isArray(t) ? a === "notEqual" || a === "notContains" ? "text" : "set" : typeof t == "string" && /^\d{4}-\d{2}-\d{2}/.test(t) ? "date" : ["greaterThan", "greaterThanOrEqual", "lessThan", "lessThanOrEqual", "inRange"].includes(a) && t && !x(t) && !isNaN(Number(t)) || typeof t == "string" && t && /^-?\d+(\.\d+)?$/.test(t.trim()) ? "number" : "text";
271
+ function M(i, n, e) {
272
+ return e === "number" ? "number" : e === "date" ? "date" : e === "select" || e === "set" || Array.isArray(n) ? i === "notEqual" || i === "notContains" ? "text" : "set" : typeof n == "string" && /^\d{4}-\d{2}-\d{2}/.test(n) ? "date" : ["greaterThan", "greaterThanOrEqual", "lessThan", "lessThanOrEqual", "inRange"].includes(i) && n && !I(n) && !isNaN(Number(n)) || typeof n == "string" && n && /^-?\d+(\.\d+)?$/.test(n.trim()) ? "number" : "text";
272
273
  }
273
- function x(a) {
274
- return Array.isArray(a);
274
+ function I(i) {
275
+ return Array.isArray(i);
275
276
  }
276
- function D(a) {
277
- if (console.log("[AdvancedFilter] convertToAgGridFilterModel input:", a), !a || !a.rules || a.rules.length === 0)
278
- return console.log("[AdvancedFilter] No model or empty rules, returning empty"), {};
279
- const t = {}, n = {}, r = (i) => {
280
- "logic" in i ? (i.conditions || []).forEach(r) : i.columnId && (i.value || i.operator === "empty" || i.operator === "notEmpty") && (n[i.columnId] || (n[i.columnId] = []), n[i.columnId].push(i));
277
+ function k(i) {
278
+ if (!i || !i.rules || i.rules.length === 0)
279
+ return {};
280
+ const n = {}, e = {}, t = (s) => {
281
+ "logic" in s ? (s.conditions || []).forEach(t) : s.columnId && (s.value || s.operator === "empty" || s.operator === "notEmpty") && (e[s.columnId] || (e[s.columnId] = []), e[s.columnId].push(s));
281
282
  };
282
- a.rules.forEach(r), console.log("[AdvancedFilter] Rules by column:", n);
283
- for (const [i, f] of Object.entries(n)) {
284
- if (f.length === 0) continue;
285
- if (f[0].columnType === "multi") {
286
- const e = (s) => s.operator !== "equals" ? !1 : !!(Array.isArray(s.value) || ["select", "multi"].includes(s.columnType)), l = f.filter(e), u = f.filter((s) => !e(s)), o = [null, null];
283
+ i.rules.forEach(t);
284
+ for (const [s, c] of Object.entries(e)) {
285
+ if (c.length === 0) continue;
286
+ const p = i.columnLogic?.[s] || i.logic;
287
+ if (c[0].columnType === "multi") {
288
+ const o = (f) => f.operator !== "equals" ? !1 : !!(Array.isArray(f.value) || ["select", "multi"].includes(f.columnType)), r = c.filter(o), u = c.filter((f) => !o(f)), l = [null, null];
287
289
  if (u.length > 0) {
288
- const s = E(u, "text", a.logic);
289
- s && (o[0] = s);
290
+ const f = q(u, "text", p);
291
+ f && (l[0] = f);
290
292
  }
291
- if (l.length > 0) {
292
- const s = E(l, "set", a.logic);
293
- s && (o[1] = s);
293
+ if (r.length > 0) {
294
+ const f = q(r, "set", p);
295
+ f && (l[1] = f);
294
296
  }
295
- (o[0] || o[1]) && (t[i] = {
297
+ (l[0] || l[1]) && (n[s] = {
296
298
  filterType: "multi",
297
- filterModels: o
299
+ filterModels: l
298
300
  });
299
301
  } else {
300
- const e = E(f, f[0].columnType, a.logic);
301
- e && (t[i] = e);
302
+ const o = q(c, c[0].columnType, p);
303
+ o && (n[s] = o);
302
304
  }
303
305
  }
304
- return console.log("[AdvancedFilter] Converted AG Grid filter model:", t), t;
306
+ return n;
305
307
  }
306
- function E(a, t, n = "OR") {
307
- if (a.length === 0) return null;
308
- const r = [];
309
- a.forEach((e) => {
310
- Array.isArray(e.value) && (e.operator === "notEqual" || e.operator === "notContains") ? e.value.forEach((l) => {
311
- r.push({
312
- ...e,
313
- value: l,
314
- id: A()
308
+ function q(i, n, e = "OR") {
309
+ if (i.length === 0) return null;
310
+ const t = [];
311
+ i.forEach((a) => {
312
+ Array.isArray(a.value) && (a.operator === "notEqual" || a.operator === "notContains") ? a.value.forEach((o) => {
313
+ t.push({
314
+ ...a,
315
+ value: o,
316
+ id: R()
315
317
  // Unique ID for each condition
316
318
  });
317
- }) : r.push(e);
319
+ }) : t.push(a);
318
320
  });
319
- const i = r.some((e) => e.operator === "notEqual" || e.operator === "notContains");
320
- if (t === "set" || r.some((e) => Array.isArray(e.value) || e.columnType === "select") && !i) {
321
- const e = /* @__PURE__ */ new Set();
322
- return r.forEach((l) => {
323
- Array.isArray(l.value) ? l.value.forEach((u) => e.add(u)) : l.value && e.add(l.value);
321
+ const s = t.some((a) => a.operator === "notEqual" || a.operator === "notContains");
322
+ if (n === "set" || t.some((a) => Array.isArray(a.value) || a.columnType === "select") && !s) {
323
+ const a = /* @__PURE__ */ new Set();
324
+ return t.forEach((o) => {
325
+ Array.isArray(o.value) ? o.value.forEach((r) => a.add(r)) : o.value && a.add(o.value);
324
326
  }), {
325
327
  filterType: "set",
326
- values: Array.from(e)
328
+ values: Array.from(a)
327
329
  };
328
330
  }
329
- const c = r;
330
- if (c.length === 1) {
331
- const e = c[0], l = R(e.operator, e.value, e.columnType);
332
- if (l === "date" && typeof e.value == "string") {
333
- const o = (s) => {
334
- if (!s || Array.isArray(s)) return null;
335
- if (/^\d{4}-\d{2}-\d{2}$/.test(s)) return s;
331
+ const p = t;
332
+ if (p.length === 1) {
333
+ const a = p[0], o = M(a.operator, a.value, a.columnType);
334
+ if (o === "date" && typeof a.value == "string") {
335
+ const u = (l) => {
336
+ if (!l || Array.isArray(l)) return null;
337
+ if (/^\d{4}-\d{2}-\d{2}$/.test(l)) return l;
336
338
  try {
337
- const p = new Date(s), y = p.getFullYear(), g = String(p.getMonth() + 1).padStart(2, "0"), T = String(p.getDate()).padStart(2, "0");
338
- return `${y}-${g}-${T}`;
339
+ const f = new Date(l), d = f.getFullYear(), y = String(f.getMonth() + 1).padStart(2, "0"), T = String(f.getDate()).padStart(2, "0");
340
+ return `${d}-${y}-${T}`;
339
341
  } catch {
340
- return s;
342
+ return l;
341
343
  }
342
344
  };
343
- return e.operator === "inRange" ? {
345
+ return a.operator === "inRange" ? {
344
346
  type: "inRange",
345
- dateFrom: o(e.value),
346
- dateTo: o(e.valueTo || ""),
347
+ dateFrom: u(a.value),
348
+ dateTo: u(a.valueTo || ""),
347
349
  filterType: "date"
348
350
  } : {
349
- type: h(e.operator),
350
- dateFrom: o(e.value),
351
+ type: h(a.operator),
352
+ dateFrom: u(a.value),
351
353
  filterType: "date"
352
354
  };
353
355
  }
354
- const u = (o) => {
355
- if (Array.isArray(o)) return o;
356
- const s = e.columnType === "number";
357
- if (l === "number" || s) {
358
- const p = parseFloat(o);
359
- return isNaN(p) ? o : p;
356
+ const r = (u) => {
357
+ if (Array.isArray(u)) return u;
358
+ const l = a.columnType === "number";
359
+ if (o === "number" || l) {
360
+ const f = parseFloat(u);
361
+ return isNaN(f) ? u : f;
360
362
  }
361
- return o;
363
+ return u;
362
364
  };
363
- return e.operator === "inRange" ? {
364
- type: h(e.operator),
365
- filter: u(e.value),
366
- filterTo: u(e.valueTo || ""),
367
- filterType: l
368
- } : e.operator === "empty" || e.operator === "notEmpty" ? {
369
- type: h(e.operator),
365
+ return a.operator === "inRange" ? {
366
+ type: h(a.operator),
367
+ filter: r(a.value),
368
+ filterTo: r(a.valueTo || ""),
369
+ filterType: o
370
+ } : a.operator === "empty" || a.operator === "notEmpty" ? {
371
+ type: h(a.operator),
370
372
  filterType: "text"
371
373
  // Empty checks usually run on text filter or generic
372
374
  } : {
373
- type: h(e.operator),
374
- filter: u(e.value),
375
- filterType: l
375
+ type: h(a.operator),
376
+ filter: r(a.value),
377
+ filterType: o
376
378
  };
377
379
  } else {
378
- let e = "text";
379
- const l = a.map((u) => {
380
- const o = h(u.operator), s = R(u.operator, u.value, u.columnType);
381
- e === "text" && s !== "text" && s !== "set" && (e = s);
382
- const p = (g) => {
383
- if (Array.isArray(g)) return g;
384
- if (s === "number") {
385
- const T = parseFloat(g);
386
- return isNaN(T) ? g : T;
380
+ let a = "text";
381
+ const o = i.map((r) => {
382
+ const u = h(r.operator), l = M(r.operator, r.value, r.columnType);
383
+ a === "text" && l !== "text" && l !== "set" && (a = l);
384
+ const f = (y) => {
385
+ if (Array.isArray(y)) return y;
386
+ if (l === "number") {
387
+ const T = parseFloat(y);
388
+ return isNaN(T) ? y : T;
387
389
  }
388
- return g;
390
+ return y;
389
391
  };
390
- let y = o;
391
- return s === "number" && (["contains", "startsWith", "endsWith"].includes(o) ? y = "equals" : o === "notContains" && (y = "notEqual")), u.operator === "inRange" ? {
392
- type: o,
393
- filter: p(u.value),
394
- filterTo: p(u.valueTo || ""),
395
- filterType: s
396
- } : u.operator === "empty" || u.operator === "notEmpty" ? {
397
- type: o,
392
+ let d = u;
393
+ return l === "number" && (["contains", "startsWith", "endsWith"].includes(u) ? d = "equals" : u === "notContains" && (d = "notEqual")), r.operator === "inRange" ? l === "date" ? {
394
+ type: "inRange",
395
+ dateFrom: r.value,
396
+ dateTo: r.valueTo || "",
397
+ filterType: "date"
398
+ } : {
399
+ type: u,
400
+ filter: f(r.value),
401
+ filterTo: f(r.valueTo || ""),
402
+ filterType: l
403
+ } : r.operator === "empty" || r.operator === "notEmpty" ? {
404
+ type: u,
398
405
  filterType: "text"
406
+ } : l === "date" && typeof r.value == "string" ? {
407
+ type: d,
408
+ dateFrom: r.value,
409
+ filterType: "date"
399
410
  } : {
400
- type: y,
401
- filter: p(u.value),
402
- filterType: s
411
+ type: d,
412
+ filter: f(r.value),
413
+ filterType: l
403
414
  };
404
415
  });
405
416
  return {
406
- filterType: e,
407
- operator: n,
408
- conditions: l
417
+ filterType: a,
418
+ operator: e,
419
+ conditions: o
409
420
  };
410
421
  }
411
422
  }
412
- function k(a) {
413
- if (!a || Object.keys(a).length === 0) return null;
414
- const t = [];
415
- for (const [n, r] of Object.entries(a)) {
416
- if (!r) continue;
417
- const i = (c) => {
418
- if (!c) return [];
419
- if ("conditions" in c && c.conditions && c.operator)
420
- return c.conditions.flatMap((s) => i(s));
421
- if ("filterType" in c && c.filterType === "multi" && c.filterModels)
422
- return c.filterModels.flatMap((s) => s ? i(s) : []);
423
- const e = c, l = "type" in e ? e.type : "equals", u = e.filterType === "set" ? "equals" : b[l] || "contains", o = e.filter !== void 0 ? String(e.filter) : e.dateFrom !== void 0 ? String(e.dateFrom) : e.values ? e.values : "";
423
+ function _(i) {
424
+ if (!i || Object.keys(i).length === 0) return null;
425
+ const n = [], e = {};
426
+ for (const [t, s] of Object.entries(i)) {
427
+ if (!s) continue;
428
+ ((o) => {
429
+ const r = o;
430
+ if (r.conditions && r.operator && (e[t] = r.operator), "filterType" in o && o.filterType === "multi" && o.filterModels)
431
+ for (const u of o.filterModels) {
432
+ if (!u) continue;
433
+ const l = u;
434
+ if (l.conditions && l.operator) {
435
+ e[t] = l.operator;
436
+ break;
437
+ }
438
+ }
439
+ })(s);
440
+ const p = (o) => {
441
+ if (!o) return [];
442
+ if ("conditions" in o && o.conditions && o.operator)
443
+ return o.conditions.flatMap((d) => p(d));
444
+ if ("filterType" in o && o.filterType === "multi" && o.filterModels)
445
+ return o.filterModels.flatMap((d) => d ? p(d) : []);
446
+ const r = o, u = "type" in r ? r.type : "equals", l = r.filterType === "set" ? "equals" : C[u] || "contains", f = r.filter !== void 0 ? String(r.filter) : r.dateFrom !== void 0 ? String(r.dateFrom) : r.values ? r.values : "";
424
447
  return [{
425
- id: A(),
426
- columnId: n,
427
- operator: u,
428
- value: o,
429
- valueTo: e.filterTo || e.dateTo,
430
- columnType: e.filterType
448
+ id: R(),
449
+ columnId: t,
450
+ operator: l,
451
+ value: f,
452
+ valueTo: r.filterTo || r.dateTo,
453
+ columnType: r.filterType
431
454
  }];
432
- }, f = i(r);
433
- t.push(...f);
455
+ }, a = p(s);
456
+ n.push(...a);
434
457
  }
435
- return t.length === 0 ? null : {
436
- logic: "AND",
437
- // Default top-level logic
438
- rules: t
458
+ return n.length === 0 ? null : {
459
+ logic: "OR",
460
+ rules: n,
461
+ columnLogic: Object.keys(e).length > 0 ? e : void 0
439
462
  };
440
463
  }
441
464
  export {
442
- k as convertFromAgGridFilterModel,
443
- D as convertToAgGridFilterModel,
444
- j as createEmptyRule,
445
- $ as formatRuleForDisplay,
446
- A as generateFilterId,
447
- O as getDisplayStringFromFilterModel,
448
- w as getMultiFilterIndices,
465
+ C as agToInternalOperator,
466
+ _ as convertFromAgGridFilterModel,
467
+ k as convertToAgGridFilterModel,
468
+ D as createEmptyRule,
469
+ N as formatRuleForDisplay,
470
+ R as generateFilterId,
471
+ A as getDisplayStringFromFilterModel,
472
+ L as getMultiFilterIndices,
449
473
  h as mapOperatorToAgGrid,
450
- I as parseInputPattern
474
+ w as parseInputPattern
451
475
  };