admins-components 9.0.34 → 9.0.36
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/dist/admins-components.js +35 -34
- package/dist/admins-components100.js +50 -80
- package/dist/admins-components100.js.map +1 -1
- package/dist/admins-components101.js +78 -109
- package/dist/admins-components101.js.map +1 -1
- package/dist/admins-components102.js +110 -44
- package/dist/admins-components102.js.map +1 -1
- package/dist/admins-components103.js +42 -101
- package/dist/admins-components103.js.map +1 -1
- package/dist/admins-components104.js +104 -18
- package/dist/admins-components104.js.map +1 -1
- package/dist/admins-components105.js +19 -6
- package/dist/admins-components105.js.map +1 -1
- package/dist/admins-components106.js +5 -250
- package/dist/admins-components106.js.map +1 -1
- package/dist/admins-components107.js +250 -25
- package/dist/admins-components107.js.map +1 -1
- package/dist/admins-components108.js +26 -27
- package/dist/admins-components108.js.map +1 -1
- package/dist/admins-components109.js +25 -169
- package/dist/admins-components109.js.map +1 -1
- package/dist/admins-components110.js +165 -61
- package/dist/admins-components110.js.map +1 -1
- package/dist/admins-components111.js +61 -60
- package/dist/admins-components111.js.map +1 -1
- package/dist/admins-components112.js +65 -28
- package/dist/admins-components112.js.map +1 -1
- package/dist/admins-components113.js +28 -14
- package/dist/admins-components113.js.map +1 -1
- package/dist/admins-components114.js +15 -26
- package/dist/admins-components114.js.map +1 -1
- package/dist/admins-components115.js +26 -8
- package/dist/admins-components115.js.map +1 -1
- package/dist/admins-components116.js +9 -4
- package/dist/admins-components116.js.map +1 -1
- package/dist/admins-components117.js +4 -3
- package/dist/admins-components117.js.map +1 -1
- package/dist/admins-components118.js +2 -2
- package/dist/admins-components118.js.map +1 -1
- package/dist/admins-components119.js +3 -21
- package/dist/admins-components119.js.map +1 -1
- package/dist/admins-components120.js +21 -14
- package/dist/admins-components120.js.map +1 -1
- package/dist/admins-components121.js +14 -8
- package/dist/admins-components121.js.map +1 -1
- package/dist/admins-components122.js +8 -13
- package/dist/admins-components122.js.map +1 -1
- package/dist/admins-components123.js +11 -24
- package/dist/admins-components123.js.map +1 -1
- package/dist/admins-components124.js +24 -81
- package/dist/admins-components124.js.map +1 -1
- package/dist/admins-components125.js +82 -10
- package/dist/admins-components125.js.map +1 -1
- package/dist/admins-components126.js +10 -4
- package/dist/admins-components126.js.map +1 -1
- package/dist/admins-components127.js +5 -8
- package/dist/admins-components127.js.map +1 -1
- package/dist/admins-components128.js +7 -6
- package/dist/admins-components128.js.map +1 -1
- package/dist/admins-components129.js +6 -5
- package/dist/admins-components129.js.map +1 -1
- package/dist/admins-components130.js +4 -13
- package/dist/admins-components130.js.map +1 -1
- package/dist/admins-components131.js +11 -9
- package/dist/admins-components131.js.map +1 -1
- package/dist/admins-components132.js +13 -30
- package/dist/admins-components132.js.map +1 -1
- package/dist/admins-components133.js +30 -4
- package/dist/admins-components133.js.map +1 -1
- package/dist/admins-components134.js +4 -29
- package/dist/admins-components134.js.map +1 -1
- package/dist/admins-components135.js +29 -5
- package/dist/admins-components135.js.map +1 -1
- package/dist/admins-components136.js +3 -3
- package/dist/admins-components136.js.map +1 -1
- package/dist/admins-components137.js +4 -7
- package/dist/admins-components137.js.map +1 -1
- package/dist/admins-components138.js +7 -73
- package/dist/admins-components138.js.map +1 -1
- package/dist/admins-components139.js +71 -26
- package/dist/admins-components139.js.map +1 -1
- package/dist/admins-components140.js +27 -57
- package/dist/admins-components140.js.map +1 -1
- package/dist/admins-components141.js +57 -22
- package/dist/admins-components141.js.map +1 -1
- package/dist/admins-components142.js +21 -47
- package/dist/admins-components142.js.map +1 -1
- package/dist/admins-components143.js +48 -29
- package/dist/admins-components143.js.map +1 -1
- package/dist/admins-components144.js +31 -3
- package/dist/admins-components144.js.map +1 -1
- package/dist/admins-components145.js +3 -179
- package/dist/admins-components145.js.map +1 -1
- package/dist/admins-components146.js +176 -43
- package/dist/admins-components146.js.map +1 -1
- package/dist/admins-components147.js +44 -35
- package/dist/admins-components147.js.map +1 -1
- package/dist/admins-components148.js +34 -43
- package/dist/admins-components148.js.map +1 -1
- package/dist/admins-components149.js +42 -137
- package/dist/admins-components149.js.map +1 -1
- package/dist/admins-components150.js +134 -51
- package/dist/admins-components150.js.map +1 -1
- package/dist/admins-components151.js +58 -7
- package/dist/admins-components151.js.map +1 -1
- package/dist/admins-components152.js +6 -5
- package/dist/admins-components152.js.map +1 -1
- package/dist/admins-components153.js +6 -76
- package/dist/admins-components153.js.map +1 -1
- package/dist/admins-components154.js +76 -29
- package/dist/admins-components154.js.map +1 -1
- package/dist/admins-components155.js +29 -1931
- package/dist/admins-components155.js.map +1 -1
- package/dist/admins-components156.js +1748 -24628
- package/dist/admins-components156.js.map +1 -1
- package/dist/admins-components157.js +24810 -8
- package/dist/admins-components157.js.map +1 -1
- package/dist/admins-components158.js +9 -7
- package/dist/admins-components158.js.map +1 -0
- package/dist/admins-components159.js +7 -142
- package/dist/admins-components160.js +141 -8
- package/dist/admins-components160.js.map +1 -1
- package/dist/admins-components161.js +3 -3
- package/dist/admins-components161.js.map +1 -1
- package/dist/admins-components162.js +10 -0
- package/dist/admins-components162.js.map +1 -0
- package/dist/admins-components164.js +161 -44
- package/dist/admins-components164.js.map +1 -1
- package/dist/admins-components165.js +50 -8
- package/dist/admins-components165.js.map +1 -1
- package/dist/admins-components166.js +8 -49
- package/dist/admins-components166.js.map +1 -1
- package/dist/admins-components167.js +50 -6
- package/dist/admins-components167.js.map +1 -1
- package/dist/admins-components168.js +6 -80
- package/dist/admins-components168.js.map +1 -1
- package/dist/admins-components169.js +70 -48
- package/dist/admins-components169.js.map +1 -1
- package/dist/admins-components170.js +30 -31
- package/dist/admins-components170.js.map +1 -1
- package/dist/admins-components171.js +58 -8
- package/dist/admins-components171.js.map +1 -1
- package/dist/admins-components172.js +8 -51
- package/dist/admins-components172.js.map +1 -1
- package/dist/admins-components173.js +51 -8
- package/dist/admins-components173.js.map +1 -1
- package/dist/admins-components174.js +10 -0
- package/dist/admins-components174.js.map +1 -0
- package/dist/{admins-components175.js → admins-components176.js} +3 -3
- package/dist/{admins-components175.js.map → admins-components176.js.map} +1 -1
- package/dist/admins-components21.js +114 -114
- package/dist/admins-components21.js.map +1 -1
- package/dist/admins-components22.js.map +1 -1
- package/dist/admins-components73.js +7 -122
- package/dist/admins-components73.js.map +1 -1
- package/dist/admins-components74.js +127 -0
- package/dist/admins-components74.js.map +1 -0
- package/dist/admins-components76.js +6 -59
- package/dist/admins-components76.js.map +1 -1
- package/dist/admins-components77.js +55 -217
- package/dist/admins-components77.js.map +1 -1
- package/dist/admins-components78.js +70 -0
- package/dist/admins-components78.js.map +1 -0
- package/dist/admins-components79.js +238 -6
- package/dist/admins-components79.js.map +1 -1
- package/dist/admins-components81.js +6 -251
- package/dist/admins-components81.js.map +1 -1
- package/dist/admins-components82.js +225 -0
- package/dist/admins-components82.js.map +1 -0
- package/dist/admins-components84.js +6 -37
- package/dist/admins-components84.js.map +1 -1
- package/dist/admins-components85.js +38 -0
- package/dist/{admins-components86.js.map → admins-components85.js.map} +1 -1
- package/dist/admins-components87.js +6 -198
- package/dist/admins-components87.js.map +1 -1
- package/dist/admins-components88.js +200 -0
- package/dist/admins-components88.js.map +1 -0
- package/dist/admins-components90.js +6 -16
- package/dist/admins-components90.js.map +1 -1
- package/dist/admins-components91.js +16 -75
- package/dist/admins-components91.js.map +1 -1
- package/dist/admins-components92.js +76 -0
- package/dist/{admins-components93.js.map → admins-components92.js.map} +1 -1
- package/dist/admins-components94.js +6 -203
- package/dist/admins-components94.js.map +1 -1
- package/dist/admins-components95.js +205 -0
- package/dist/admins-components95.js.map +1 -0
- package/dist/admins-components97.js +6 -3
- package/dist/admins-components97.js.map +1 -1
- package/dist/admins-components98.js +3 -3
- package/dist/admins-components98.js.map +1 -1
- package/dist/admins-components99.js +3 -52
- package/dist/admins-components99.js.map +1 -1
- package/dist/main.css +1 -1
- package/dist/main.css.map +1 -1
- package/dist/src/components/data-table/DataList.vue.d.ts +2 -0
- package/dist/src/components/data-table/FiltersHistory.vue.d.ts +10 -8
- package/dist/src/index.d.ts +3 -1
- package/dist/src/styles/components/data-table/filters-history.scss_vue_type_style_index_0_src_true_lang.css +1 -1
- package/dist/src/utils/dataFilters.d.ts +5 -2
- package/dist/src/utils/storageKey.d.ts +4 -0
- package/package.json +1 -1
- package/dist/admins-components159.js.map +0 -1
- package/dist/admins-components163.js +0 -169
- package/dist/admins-components163.js.map +0 -1
- package/dist/admins-components75.js +0 -7
- package/dist/admins-components75.js.map +0 -1
- package/dist/admins-components80.js +0 -53
- package/dist/admins-components80.js.map +0 -1
- package/dist/admins-components83.js +0 -7
- package/dist/admins-components83.js.map +0 -1
- package/dist/admins-components86.js +0 -7
- package/dist/admins-components89.js +0 -7
- package/dist/admins-components89.js.map +0 -1
- package/dist/admins-components93.js +0 -7
- package/dist/admins-components96.js +0 -7
- package/dist/admins-components96.js.map +0 -1
|
@@ -1,222 +1,60 @@
|
|
|
1
1
|
import { formatDate as e } from "./admins-components3.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
], fe = { class: "filters-history__item-header-text" }, T = { class: "filters-history__item-date" }, E = {
|
|
27
|
-
key: 0,
|
|
28
|
-
class: "filters-history__item-name"
|
|
29
|
-
}, D = ["onClick"], O = ["onClick"], k = ["onClick"], A = {
|
|
30
|
-
key: 0,
|
|
31
|
-
class: "filters-history__item-content"
|
|
32
|
-
}, j = {
|
|
33
|
-
key: 0,
|
|
34
|
-
class: "filters-history__item-body"
|
|
35
|
-
}, M = {
|
|
36
|
-
key: 1,
|
|
37
|
-
class: "filters-history__item-empty"
|
|
38
|
-
}, N = { key: 3 }, P = 50, F = 7, I = /* @__PURE__ */ d({
|
|
39
|
-
__name: "FiltersHistory",
|
|
40
|
-
props: {
|
|
41
|
-
items: {},
|
|
42
|
-
values: {},
|
|
43
|
-
storageKey: {}
|
|
44
|
-
},
|
|
45
|
-
emits: ["load", "change"],
|
|
46
|
-
setup(d, { emit: I }) {
|
|
47
|
-
let L = d, R = a(() => `data-filters-${L.storageKey}`), z = I, B = g(!1), V = g([]), H = g(""), U = g(/* @__PURE__ */ new Set()), W = g(!1);
|
|
48
|
-
function G(e) {
|
|
49
|
-
return U.value.has(e);
|
|
50
|
-
}
|
|
51
|
-
function K(e) {
|
|
52
|
-
let t = new Set(U.value);
|
|
53
|
-
t.has(e) ? t.delete(e) : t.add(e), U.value = t;
|
|
54
|
-
}
|
|
55
|
-
function pe() {
|
|
56
|
-
try {
|
|
57
|
-
let e = localStorage.getItem(R.value);
|
|
58
|
-
if (!e) {
|
|
59
|
-
V.value = [];
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
let t = JSON.parse(e);
|
|
63
|
-
Array.isArray(t) ? V.value = t.filter((e) => e && typeof e == "object" && typeof e.id == "string" && e.values && typeof e.savedAt == "string") : V.value = [];
|
|
64
|
-
} catch {
|
|
65
|
-
V.value = [];
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
function q() {
|
|
69
|
-
try {
|
|
70
|
-
localStorage.setItem(R.value, JSON.stringify(V.value));
|
|
71
|
-
} catch {}
|
|
72
|
-
}
|
|
73
|
-
m(pe);
|
|
74
|
-
let J = a(() => Object.values(L.values).some((e) => e !== null && e !== "" && e !== void 0));
|
|
75
|
-
function me() {
|
|
76
|
-
return `${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
77
|
-
}
|
|
78
|
-
x(() => [L.values, H.value], () => {
|
|
79
|
-
Y.value &&= !1;
|
|
80
|
-
}, { deep: !0 });
|
|
81
|
-
let Y = g(!1);
|
|
82
|
-
function X() {
|
|
83
|
-
if (!J.value) return;
|
|
84
|
-
let e = H.value.trim();
|
|
85
|
-
V.value = [{
|
|
86
|
-
id: me(),
|
|
87
|
-
savedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
88
|
-
name: e || void 0,
|
|
89
|
-
values: { ...L.values }
|
|
90
|
-
}, ...V.value].slice(0, P), H.value = "", q(), f(() => {
|
|
91
|
-
Y.value = !0;
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
function he(e) {
|
|
95
|
-
z("load", { ...e.values }), z("change", { ...e.values });
|
|
96
|
-
}
|
|
97
|
-
function Z(e) {
|
|
98
|
-
if (V.value = V.value.filter((t) => t.id !== e.id), U.value.has(e.id)) {
|
|
99
|
-
let t = new Set(U.value);
|
|
100
|
-
t.delete(e.id), U.value = t;
|
|
101
|
-
}
|
|
102
|
-
q();
|
|
103
|
-
}
|
|
104
|
-
function ge() {
|
|
105
|
-
V.value = [], U.value = /* @__PURE__ */ new Set(), q(), W.value = !1;
|
|
106
|
-
}
|
|
107
|
-
function Q(e) {
|
|
108
|
-
return r(L.items, e.values);
|
|
2
|
+
//#region src/utils/filterDisplay.ts
|
|
3
|
+
function t(t, r, i) {
|
|
4
|
+
if (i == null || i === "") return "";
|
|
5
|
+
let a = t.find((e) => e.key === r);
|
|
6
|
+
if (a?.type === "dropdown" && a.options) {
|
|
7
|
+
let e = n(i);
|
|
8
|
+
if (Array.isArray(e)) return e.map((e) => {
|
|
9
|
+
let t = a.options?.find((t) => t.value === e);
|
|
10
|
+
return t ? t.label : String(e);
|
|
11
|
+
}).join(", ");
|
|
12
|
+
let t = a.options.find((t) => t.value === e);
|
|
13
|
+
if (t) return t.label;
|
|
14
|
+
}
|
|
15
|
+
if (a?.type === "checkbox") return i ? "Bekapcsolva" : "";
|
|
16
|
+
if (a?.type === "date" || a?.type === "datetime") {
|
|
17
|
+
if (typeof i == "object" && i) {
|
|
18
|
+
let t = i.local ?? i.utc ?? null;
|
|
19
|
+
if (t == null) return "";
|
|
20
|
+
let n = t instanceof Date ? t : new Date(t);
|
|
21
|
+
if (!isNaN(n.getTime())) return e(n, a.type === "datetime" ? "YYYY-MM-DD HH:mm" : "YYYY-MM-DD");
|
|
22
|
+
}
|
|
23
|
+
if (typeof i == "string" && i) {
|
|
24
|
+
let t = new Date(i);
|
|
25
|
+
if (!isNaN(t.getTime())) return e(t, a.type === "datetime" ? "YYYY-MM-DD HH:mm" : "YYYY-MM-DD");
|
|
109
26
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
27
|
+
}
|
|
28
|
+
if ((a?.type === "daterange" || a?.type === "datetimerange") && typeof i == "object") {
|
|
29
|
+
let t = a.type === "datetimerange" ? "YYYY-MM-DD HH:mm" : "YYYY-MM-DD";
|
|
30
|
+
return `${i.fromUtc ? e(new Date(i.fromUtc), t) : "…"} - ${i.toUtc ? e(new Date(i.toUtc), t) : "…"}`;
|
|
31
|
+
}
|
|
32
|
+
return typeof i == "object" ? JSON.stringify(i) : String(i);
|
|
33
|
+
}
|
|
34
|
+
function n(e) {
|
|
35
|
+
if (Array.isArray(e)) return e;
|
|
36
|
+
if (typeof e == "string") {
|
|
37
|
+
if (e.startsWith("[") && e.endsWith("]")) try {
|
|
38
|
+
let t = JSON.parse(e);
|
|
39
|
+
if (Array.isArray(t)) return t;
|
|
40
|
+
} catch {}
|
|
41
|
+
return e;
|
|
42
|
+
}
|
|
43
|
+
return e;
|
|
44
|
+
}
|
|
45
|
+
function r(e, n) {
|
|
46
|
+
let r = [];
|
|
47
|
+
for (let [i, a] of Object.entries(n)) {
|
|
48
|
+
let n = t(e, i, a);
|
|
49
|
+
if (!n) continue;
|
|
50
|
+
let o = e.find((e) => e.key === i), s = o?.label ?? i;
|
|
51
|
+
r.push({
|
|
52
|
+
key: i,
|
|
53
|
+
text: `${s}: ${n}`,
|
|
54
|
+
displayClass: o?.displayClass
|
|
114
55
|
});
|
|
115
|
-
function $(e) {
|
|
116
|
-
return _e.value.get(e.id) ?? Q(e);
|
|
117
|
-
}
|
|
118
|
-
let ve = a(() => V.value.length >= P - F);
|
|
119
|
-
function ye(t) {
|
|
120
|
-
let n = new Date(t);
|
|
121
|
-
return isNaN(n.getTime()) ? t : e(n, "YYYY-MM-DD HH:mm");
|
|
122
|
-
}
|
|
123
|
-
return (e, r) => {
|
|
124
|
-
let a = v("tooltip");
|
|
125
|
-
return h(), c("div", te, [l("div", ne, [l("button", {
|
|
126
|
-
type: "button",
|
|
127
|
-
class: p(["filters-history__toggle", { "is-open": B.value }]),
|
|
128
|
-
"aria-expanded": B.value,
|
|
129
|
-
onClick: r[0] ||= (e) => B.value = !B.value
|
|
130
|
-
}, [
|
|
131
|
-
r[6] ||= l("i", { class: "fa-solid fa-sliders filters-history__toggle-icon" }, null, -1),
|
|
132
|
-
r[7] ||= l("span", { class: "filters-history__toggle-label" }, "Mentett szűrők", -1),
|
|
133
|
-
V.value.length ? (h(), c("span", ie, y(V.value.length), 1)) : s("", !0),
|
|
134
|
-
ve.value ? S((h(), c("span", ae, [u("/ " + y(P))])), [[a, `Maximum ${P} szűrő menthető`]]) : s("", !0),
|
|
135
|
-
l("i", { class: p(["fa-solid filters-history__chevron", B.value ? "fa-chevron-up" : "fa-chevron-down"]) }, null, 2)
|
|
136
|
-
], 10, re), B.value ? (h(), c("div", oe, [
|
|
137
|
-
l("div", se, [S(l("input", {
|
|
138
|
-
"onUpdate:modelValue": r[1] ||= (e) => H.value = e,
|
|
139
|
-
type: "text",
|
|
140
|
-
class: "c-input-row c-input-row--sm",
|
|
141
|
-
placeholder: "Elnevezés",
|
|
142
|
-
onKeydown: C(X, ["enter"])
|
|
143
|
-
}, null, 544), [[b, H.value]]), ee(t, {
|
|
144
|
-
icon: "fa-solid fa-bookmark",
|
|
145
|
-
label: "Mentés",
|
|
146
|
-
size: "small",
|
|
147
|
-
type: "info",
|
|
148
|
-
disabled: !J.value || Y.value,
|
|
149
|
-
onClick: X
|
|
150
|
-
}, null, 8, ["disabled"])]),
|
|
151
|
-
!J.value && V.value.length === 0 ? (h(), c("p", ce, " Nincs aktív szűrő. Adj meg értékeket a mentéshez. ")) : V.value.length === 0 ? (h(), c("p", le, [...r[8] ||= [
|
|
152
|
-
u(" Még nincs mentett szűrő.", -1),
|
|
153
|
-
l("br", null, null, -1),
|
|
154
|
-
u(" Az aktuális beállítások a „Mentés\" gombbal menthetők.", -1),
|
|
155
|
-
l("br", null, null, -1),
|
|
156
|
-
u(" Az „Elnevezés\" mező csak a könnyebb azonosítás miatt van, megadása nem kötelező. ", -1)
|
|
157
|
-
]])) : s("", !0),
|
|
158
|
-
V.value.length > 0 ? (h(), c("ul", ue, [(h(!0), c(i, null, _(V.value, (e) => (h(), c("li", {
|
|
159
|
-
key: e.id,
|
|
160
|
-
class: p(["filters-history__item", { "is-open": G(e.id) }])
|
|
161
|
-
}, [l("div", {
|
|
162
|
-
class: p(["filters-history__item-header", { "is-open": G(e.id) }]),
|
|
163
|
-
role: "button",
|
|
164
|
-
tabindex: "0",
|
|
165
|
-
"aria-expanded": G(e.id),
|
|
166
|
-
onClick: (t) => K(e.id),
|
|
167
|
-
onKeydown: [C(w((t) => K(e.id), ["prevent"]), ["enter"]), C(w((t) => K(e.id), ["prevent"]), ["space"])]
|
|
168
|
-
}, [
|
|
169
|
-
l("i", { class: p(["fa-solid filters-history__item-chevron", G(e.id) ? "fa-chevron-down" : "fa-chevron-right"]) }, null, 2),
|
|
170
|
-
l("span", fe, [l("span", T, y(ye(e.savedAt)), 1), e.name ? (h(), c("span", E, y(e.name), 1)) : s("", !0)]),
|
|
171
|
-
l("div", {
|
|
172
|
-
class: "filters-history__item-actions",
|
|
173
|
-
onClick: r[2] ||= w(() => {}, ["stop"])
|
|
174
|
-
}, [
|
|
175
|
-
l("button", {
|
|
176
|
-
type: "button",
|
|
177
|
-
class: "c-indicator filters-history__item-btn filters-history__item-load",
|
|
178
|
-
"aria-label": "Betöltés",
|
|
179
|
-
title: "Betöltés",
|
|
180
|
-
onClick: (t) => he(e)
|
|
181
|
-
}, [...r[9] ||= [l("i", { class: "fa-solid fa-check" }, null, -1)]], 8, D),
|
|
182
|
-
$(e).length ? S((h(), c("span", {
|
|
183
|
-
key: 0,
|
|
184
|
-
class: "c-indicator",
|
|
185
|
-
onClick: w((t) => K(e.id), ["stop"])
|
|
186
|
-
}, [u(y($(e).length), 1)], 8, O)), [[a, `${$(e).length} szűrési feltétel`]]) : s("", !0),
|
|
187
|
-
l("button", {
|
|
188
|
-
type: "button",
|
|
189
|
-
class: "c-indicator filters-history__item-btn filters-history__item-remove",
|
|
190
|
-
"aria-label": "Törlés",
|
|
191
|
-
title: "Törlés",
|
|
192
|
-
onClick: (t) => Z(e)
|
|
193
|
-
}, [...r[10] ||= [l("i", { class: "fa-solid fa-xmark" }, null, -1)]], 8, k)
|
|
194
|
-
])
|
|
195
|
-
], 42, de), G(e.id) ? (h(), c("div", A, [$(e).length ? (h(), c("div", j, [(h(!0), c(i, null, _($(e), (e, t) => (h(), c("span", {
|
|
196
|
-
key: t,
|
|
197
|
-
class: p(["c-chip", e.displayClass])
|
|
198
|
-
}, y(e.text), 3))), 128))])) : (h(), c("p", M, "Nincs megjeleníthető szűrő."))])) : s("", !0)], 2))), 128))])) : s("", !0),
|
|
199
|
-
V.value.length > 3 ? (h(), c("div", N, [
|
|
200
|
-
r[11] ||= l("hr", { class: "separator my-1" }, null, -1),
|
|
201
|
-
V.value.length ? (h(), c("a", {
|
|
202
|
-
key: 0,
|
|
203
|
-
class: "filters-history__clear-all px-2",
|
|
204
|
-
onClick: r[3] ||= (e) => W.value = !0
|
|
205
|
-
}, "Összes törlése")) : s("", !0),
|
|
206
|
-
W.value ? (h(), o(n, {
|
|
207
|
-
key: 1,
|
|
208
|
-
title: "Mentett szűrők törlése",
|
|
209
|
-
message: "Biztosan törlöd az összes mentett szűrőt?",
|
|
210
|
-
"confirm-label": "Törlés",
|
|
211
|
-
"cancel-label": "Mégse",
|
|
212
|
-
type: "error",
|
|
213
|
-
onConfirm: r[4] ||= (e) => ge(),
|
|
214
|
-
onCancel: r[5] ||= (e) => W.value = !1
|
|
215
|
-
})) : s("", !0)
|
|
216
|
-
])) : s("", !0)
|
|
217
|
-
])) : s("", !0)])]);
|
|
218
|
-
};
|
|
219
56
|
}
|
|
220
|
-
|
|
57
|
+
return r;
|
|
58
|
+
}
|
|
221
59
|
//#endregion
|
|
222
|
-
export {
|
|
60
|
+
export { r as buildFilterDisplay, t as displayFilterValue, n as parseDropdownValue };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components77.js","names":[],"sources":["../src/components/data-table/FiltersHistory.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onMounted, ref, watch, nextTick } from 'vue'\nimport Button from '@/components/Button.vue'\nimport ConfirmModal from '@/components/ConfirmModal.vue'\nimport type { FilterItem } from '@/components/data-table/DataFilters.vue'\nimport { formatDate } from '@/utils/date'\nimport { buildFilterDisplay } from '@/utils/filterDisplay'\n\nexport interface SavedFilter {\n id: string\n savedAt: string\n name?: string\n values: Record<string, any>\n}\n\nconst props = defineProps<{\n items: FilterItem[]\n values: Record<string, any>\n storageKey?: string\n}>()\n\nconst storageKey = computed(() => `data-filters-${props.storageKey}`)\n\nconst MAX_ITEM_LIMIT = 50\nconst MAX_ITEM_WARNING_THRESHOLD = 7\n\nconst emit = defineEmits<{\n load: [values: Record<string, any>]\n change: [values: Record<string, any>]\n}>()\n\nconst open = ref(false)\nconst entries = ref<SavedFilter[]>([])\nconst filterSetName = ref('')\nconst expandedIds = ref<Set<string>>(new Set())\nconst confirmingClearAll = ref(false)\n\nfunction isExpanded(id: string): boolean {\n return expandedIds.value.has(id)\n}\n\nfunction toggleExpanded(id: string): void {\n const next = new Set(expandedIds.value)\n if (next.has(id)) {\n next.delete(id)\n } else {\n next.add(id)\n }\n expandedIds.value = next\n}\n\nfunction loadFromStorage() {\n try {\n const raw = localStorage.getItem(storageKey.value)\n if (!raw) {\n entries.value = []\n return\n }\n const parsed = JSON.parse(raw)\n if (Array.isArray(parsed)) {\n entries.value = parsed.filter(\n (e) =>\n e &&\n typeof e === 'object' &&\n typeof e.id === 'string' &&\n e.values &&\n typeof e.savedAt === 'string',\n )\n } else {\n entries.value = []\n }\n } catch {\n entries.value = []\n }\n}\n\nfunction persist() {\n try {\n localStorage.setItem(storageKey.value, JSON.stringify(entries.value))\n } catch {\n /* quota / privacy mode - ignore */\n }\n}\n\nonMounted(loadFromStorage)\n\nconst hasActiveFilters = computed(() =>\n Object.values(props.values).some((v) => v !== null && v !== '' && v !== undefined),\n)\n\nfunction makeId(): string {\n return `${Date.now()}-${Math.random().toString(36).slice(2, 8)}`\n}\n\nwatch(\n () => [props.values, filterSetName.value],\n () => {\n if (justSaved.value) {\n justSaved.value = false\n }\n },\n { deep: true },\n)\n\nconst justSaved = ref(false)\n\nfunction save() {\n if (!hasActiveFilters.value) return\n\n const trimmed = filterSetName.value.trim()\n const entry: SavedFilter = {\n id: makeId(),\n savedAt: new Date().toISOString(),\n name: trimmed || undefined,\n values: { ...props.values },\n }\n entries.value = [entry, ...entries.value].slice(0, MAX_ITEM_LIMIT)\n filterSetName.value = ''\n\n persist()\n nextTick(() => {\n justSaved.value = true\n })\n}\n\nfunction load(entry: SavedFilter) {\n emit('load', { ...entry.values })\n emit('change', { ...entry.values })\n}\n\nfunction remove(entry: SavedFilter) {\n entries.value = entries.value.filter((e) => e.id !== entry.id)\n if (expandedIds.value.has(entry.id)) {\n const next = new Set(expandedIds.value)\n next.delete(entry.id)\n expandedIds.value = next\n }\n persist()\n}\n\nfunction clearAll() {\n entries.value = []\n expandedIds.value = new Set()\n persist()\n confirmingClearAll.value = false\n}\n\nfunction buildEntry(entry: SavedFilter) {\n return buildFilterDisplay(props.items, entry.values)\n}\n\nconst entryDisplays = computed(() => {\n const map = new Map<string, ReturnType<typeof buildEntry>>()\n for (const entry of entries.value) {\n map.set(entry.id, buildEntry(entry))\n }\n return map\n})\n\nfunction getEntryDisplay(entry: SavedFilter) {\n return entryDisplays.value.get(entry.id) ?? buildEntry(entry)\n}\n\nconst hasWarning = computed(() => {\n return entries.value.length >= MAX_ITEM_LIMIT - MAX_ITEM_WARNING_THRESHOLD\n})\n\nfunction formatSavedAt(iso: string): string {\n const d = new Date(iso)\n if (isNaN(d.getTime())) return iso\n return formatDate(d, 'YYYY-MM-DD HH:mm')\n}\n</script>\n\n<template>\n <div class=\"ac-component\">\n <div class=\"filters-history\">\n <button\n type=\"button\"\n class=\"filters-history__toggle\"\n :class=\"{ 'is-open': open }\"\n :aria-expanded=\"open\"\n @click=\"open = !open\"\n >\n <i class=\"fa-solid fa-sliders filters-history__toggle-icon\"></i>\n <span class=\"filters-history__toggle-label\">Mentett szűrők</span>\n <span v-if=\"entries.length\" class=\"c-indicator\">{{ entries.length }}</span>\n <span v-if=\"hasWarning\" v-tooltip=\"`Maximum ${MAX_ITEM_LIMIT} szűrő menthető`\"\n >/ {{ MAX_ITEM_LIMIT }}</span\n >\n <i\n class=\"fa-solid filters-history__chevron\"\n :class=\"open ? 'fa-chevron-up' : 'fa-chevron-down'\"\n ></i>\n </button>\n\n <div v-if=\"open\" class=\"filters-history__panel c-scroll\">\n <div class=\"filters-history__save-row\">\n\n <input\n v-model=\"filterSetName\"\n type=\"text\"\n class=\"c-input-row c-input-row--sm\"\n placeholder=\"Elnevezés\"\n @keydown.enter=\"save\"\n />\n <Button\n icon=\"fa-solid fa-bookmark\"\n label=\"Mentés\"\n size=\"small\"\n type=\"info\"\n :disabled=\"!hasActiveFilters || justSaved\"\n @click=\"save\"\n />\n </div>\n\n <p v-if=\"!hasActiveFilters && entries.length === 0\" class=\"filters-history__hint\">\n Nincs aktív szűrő. Adj meg értékeket a mentéshez.\n </p>\n <p v-else-if=\"entries.length === 0\" class=\"filters-history__hint\">\n Még nincs mentett szűrő.<br />\n Az aktuális beállítások a „Mentés\" gombbal menthetők.<br />\n Az „Elnevezés\" mező csak a könnyebb azonosítás miatt van, megadása nem kötelező.\n </p>\n\n <template v-if=\"entries.length > 0\">\n <ul class=\"filters-history__list\">\n <li\n v-for=\"entry in entries\"\n :key=\"entry.id\"\n class=\"filters-history__item\"\n :class=\"{ 'is-open': isExpanded(entry.id) }\"\n >\n <div\n class=\"filters-history__item-header\"\n :class=\"{ 'is-open': isExpanded(entry.id) }\"\n role=\"button\"\n tabindex=\"0\"\n :aria-expanded=\"isExpanded(entry.id)\"\n @click=\"toggleExpanded(entry.id)\"\n @keydown.enter.prevent=\"toggleExpanded(entry.id)\"\n @keydown.space.prevent=\"toggleExpanded(entry.id)\"\n >\n <i\n class=\"fa-solid filters-history__item-chevron\"\n :class=\"isExpanded(entry.id) ? 'fa-chevron-down' : 'fa-chevron-right'\"\n ></i>\n <span class=\"filters-history__item-header-text\">\n <span class=\"filters-history__item-date\">{{ formatSavedAt(entry.savedAt) }}</span>\n <span v-if=\"entry.name\" class=\"filters-history__item-name\">{{ entry.name }}</span>\n </span>\n <div class=\"filters-history__item-actions\" @click.stop>\n <button\n type=\"button\"\n class=\"c-indicator filters-history__item-btn filters-history__item-load\"\n aria-label=\"Betöltés\"\n title=\"Betöltés\"\n @click=\"load(entry)\"\n >\n <i class=\"fa-solid fa-check\"></i>\n </button>\n <span\n v-if=\"getEntryDisplay(entry).length\"\n class=\"c-indicator\"\n @click.stop=\"toggleExpanded(entry.id)\"\n v-tooltip=\"`${getEntryDisplay(entry).length} szűrési feltétel`\"\n >{{ getEntryDisplay(entry).length }}</span\n >\n <button\n type=\"button\"\n class=\"c-indicator filters-history__item-btn filters-history__item-remove\"\n aria-label=\"Törlés\"\n title=\"Törlés\"\n @click=\"remove(entry)\"\n >\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n </div>\n <div v-if=\"isExpanded(entry.id)\" class=\"filters-history__item-content\">\n <div v-if=\"getEntryDisplay(entry).length\" class=\"filters-history__item-body\">\n <span\n v-for=\"(part, idx) in getEntryDisplay(entry)\"\n :key=\"idx\"\n class=\"c-chip\"\n :class=\"part.displayClass\"\n >\n {{ part.text }}\n </span>\n </div>\n <p v-else class=\"filters-history__item-empty\">Nincs megjeleníthető szűrő.</p>\n </div>\n </li>\n </ul>\n </template>\n\n <div v-if=\"entries.length > 3\">\n <hr class=\"separator my-1\" />\n <a\n v-if=\"entries.length\"\n class=\"filters-history__clear-all px-2\"\n @click=\"confirmingClearAll = true\"\n >Összes törlése</a\n >\n <ConfirmModal\n v-if=\"confirmingClearAll\"\n title=\"Mentett szűrők törlése\"\n message=\"Biztosan törlöd az összes mentett szűrőt?\"\n confirm-label=\"Törlés\"\n cancel-label=\"Mégse\"\n type=\"error\"\n @confirm=\"clearAll()\"\n @cancel=\"confirmingClearAll = false\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/filters-history.scss\"></style>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admins-components77.js","names":[],"sources":["../src/utils/filterDisplay.ts"],"sourcesContent":["import { formatDate } from '@/utils/date'\nimport type { FilterItem } from '@/components/data-table/DataFilters.vue'\n\nexport function displayFilterValue(items: FilterItem[], key: string, value: any): string {\n if (value === null || value === undefined || value === '') return ''\n\n const item = items.find((i) => i.key === key)\n\n if (item?.type === 'dropdown' && item.options) {\n const parsedValue = parseDropdownValue(value)\n\n if (Array.isArray(parsedValue)) {\n const labels = parsedValue.map((v) => {\n const opt = item.options?.find((o) => o.value === v)\n return opt ? opt.label : String(v)\n })\n return labels.join(', ')\n }\n\n const opt = item.options.find((o) => o.value === parsedValue)\n if (opt) return opt.label\n }\n if (item?.type === 'checkbox') {\n return value ? 'Bekapcsolva' : ''\n }\n\n if (item?.type === 'date' || item?.type === 'datetime') {\n if (typeof value === 'object' && value !== null) {\n const local: Date | string | null | undefined = value.local ?? value.utc ?? null\n if (local == null) return ''\n const d = local instanceof Date ? local : new Date(local)\n if (!isNaN(d.getTime())) {\n return formatDate(d, item.type === 'datetime' ? 'YYYY-MM-DD HH:mm' : 'YYYY-MM-DD')\n }\n }\n if (typeof value === 'string' && value) {\n const d = new Date(value)\n if (!isNaN(d.getTime())) {\n return formatDate(d, item.type === 'datetime' ? 'YYYY-MM-DD HH:mm' : 'YYYY-MM-DD')\n }\n }\n }\n\n if ((item?.type === 'daterange' || item?.type === 'datetimerange') && typeof value === 'object') {\n const showTime = item.type === 'datetimerange'\n const fmt = showTime ? 'YYYY-MM-DD HH:mm' : 'YYYY-MM-DD'\n const from = value.fromUtc ? formatDate(new Date(value.fromUtc), fmt) : '…'\n const to = value.toUtc ? formatDate(new Date(value.toUtc), fmt) : '…'\n return `${from} - ${to}`\n }\n\n if (typeof value === 'object') return JSON.stringify(value)\n\n return String(value)\n}\n\nexport function parseDropdownValue(value: any): unknown {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'string') {\n if (value.startsWith('[') && value.endsWith(']')) {\n try {\n const parsed = JSON.parse(value)\n if (Array.isArray(parsed)) {\n return parsed\n }\n } catch {\n // If parsing fails, treat as string\n }\n }\n return value\n }\n\n return value\n}\n\nexport interface FilterDisplayPart {\n key: string\n text: string\n displayClass?: string\n}\n\nexport function buildFilterDisplay(\n items: FilterItem[],\n values: Record<string, any>,\n): FilterDisplayPart[] {\n const parts: FilterDisplayPart[] = []\n for (const [key, rawValue] of Object.entries(values)) {\n const v = displayFilterValue(items, key, rawValue)\n if (!v) continue\n const item = items.find((i) => i.key === key)\n const labelText = item?.label ?? key\n parts.push({ key, text: `${labelText}: ${v}`, displayClass: item?.displayClass })\n }\n\n return parts\n}\n\nexport function buildFilterValues(items: FilterItem[], values: Record<string, any>): string[] {\n return buildFilterDisplay(items, values).map((p) => p.text)\n}\n"],"mappings":";;AAGA,SAAgB,EAAmB,GAAqB,GAAa,GAAoB;CACvF,IAAI,KAAU,QAA+B,MAAU,IAAI,OAAO;CAElE,IAAM,IAAO,EAAM,MAAM,MAAM,EAAE,QAAQ,CAAG;CAE5C,IAAI,GAAM,SAAS,cAAc,EAAK,SAAS;EAC7C,IAAM,IAAc,EAAmB,CAAK;EAE5C,IAAI,MAAM,QAAQ,CAAW,GAK3B,OAJe,EAAY,KAAK,MAAM;GACpC,IAAM,IAAM,EAAK,SAAS,MAAM,MAAM,EAAE,UAAU,CAAC;GACnD,OAAO,IAAM,EAAI,QAAQ,OAAO,CAAC;EACnC,CACO,EAAO,KAAK,IAAI;EAGzB,IAAM,IAAM,EAAK,QAAQ,MAAM,MAAM,EAAE,UAAU,CAAW;EAC5D,IAAI,GAAK,OAAO,EAAI;CACtB;CACA,IAAI,GAAM,SAAS,YACjB,OAAO,IAAQ,gBAAgB;CAGjC,IAAI,GAAM,SAAS,UAAU,GAAM,SAAS,YAAY;EACtD,IAAI,OAAO,KAAU,YAAY,GAAgB;GAC/C,IAAM,IAA0C,EAAM,SAAS,EAAM,OAAO;GAC5E,IAAI,KAAS,MAAM,OAAO;GAC1B,IAAM,IAAI,aAAiB,OAAO,IAAQ,IAAI,KAAK,CAAK;GACxD,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GACpB,OAAO,EAAW,GAAG,EAAK,SAAS,aAAa,qBAAqB,YAAY;EAErF;EACA,IAAI,OAAO,KAAU,YAAY,GAAO;GACtC,IAAM,IAAI,IAAI,KAAK,CAAK;GACxB,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GACpB,OAAO,EAAW,GAAG,EAAK,SAAS,aAAa,qBAAqB,YAAY;EAErF;CACF;CAEA,KAAK,GAAM,SAAS,eAAe,GAAM,SAAS,oBAAoB,OAAO,KAAU,UAAU;EAE/F,IAAM,IADW,EAAK,SAAS,kBACR,qBAAqB;EAG5C,OAAO,GAFM,EAAM,UAAU,EAAW,IAAI,KAAK,EAAM,OAAO,GAAG,CAAG,IAAI,IAEzD,KADJ,EAAM,QAAQ,EAAW,IAAI,KAAK,EAAM,KAAK,GAAG,CAAG,IAAI;CAEpE;CAIA,OAFI,OAAO,KAAU,WAAiB,KAAK,UAAU,CAAK,IAEnD,OAAO,CAAK;AACrB;AAEA,SAAgB,EAAmB,GAAqB;CACtD,IAAI,MAAM,QAAQ,CAAK,GACrB,OAAO;CAGT,IAAI,OAAO,KAAU,UAAU;EAC7B,IAAI,EAAM,WAAW,GAAG,KAAK,EAAM,SAAS,GAAG,GAC7C,IAAI;GACF,IAAM,IAAS,KAAK,MAAM,CAAK;GAC/B,IAAI,MAAM,QAAQ,CAAM,GACtB,OAAO;EAEX,QAAQ,CAER;EAEF,OAAO;CACT;CAEA,OAAO;AACT;AAQA,SAAgB,EACd,GACA,GACqB;CACrB,IAAM,IAA6B,CAAC;CACpC,KAAK,IAAM,CAAC,GAAK,MAAa,OAAO,QAAQ,CAAM,GAAG;EACpD,IAAM,IAAI,EAAmB,GAAO,GAAK,CAAQ;EACjD,IAAI,CAAC,GAAG;EACR,IAAM,IAAO,EAAM,MAAM,MAAM,EAAE,QAAQ,CAAG,GACtC,IAAY,GAAM,SAAS;EACjC,EAAM,KAAK;GAAE;GAAK,MAAM,GAAG,EAAU,IAAI;GAAK,cAAc,GAAM;EAAa,CAAC;CAClF;CAEA,OAAO;AACT"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { getFullStorageKey as e } from "./admins-components73.js";
|
|
2
|
+
import { parseDropdownValue as t } from "./admins-components77.js";
|
|
3
|
+
//#region src/utils/dataFilters.ts
|
|
4
|
+
function n(e, t, n = !0) {
|
|
5
|
+
let i = r(e), o = Object.keys(i).length > 0, s = (o ? null : a(t))?.values ?? {}, c = {};
|
|
6
|
+
for (let t of e) {
|
|
7
|
+
if (t.type === "separator") continue;
|
|
8
|
+
let e;
|
|
9
|
+
if (t.key in i) e = i[t.key];
|
|
10
|
+
else if (o) continue;
|
|
11
|
+
else if (t.key in s) e = s[t.key];
|
|
12
|
+
else if (t.value !== void 0) e = t.value;
|
|
13
|
+
else continue;
|
|
14
|
+
if (e != null) if (n && t.transformer) {
|
|
15
|
+
let n = t.transformer(e);
|
|
16
|
+
n && Object.assign(c, n);
|
|
17
|
+
} else c[t.key] = e;
|
|
18
|
+
}
|
|
19
|
+
return c;
|
|
20
|
+
}
|
|
21
|
+
function r(e) {
|
|
22
|
+
let t = new URLSearchParams(window.location.search), n = {};
|
|
23
|
+
for (let r of e) {
|
|
24
|
+
if (r.type === "separator") continue;
|
|
25
|
+
let e = window.location.search ? t.get(r.key) : null;
|
|
26
|
+
e && (n[r.key] = s(r.type, e, r.value));
|
|
27
|
+
}
|
|
28
|
+
return n;
|
|
29
|
+
}
|
|
30
|
+
function i(t) {
|
|
31
|
+
try {
|
|
32
|
+
let n = e("filters", t), r = JSON.parse(localStorage.getItem(n) ?? "[]");
|
|
33
|
+
return Array.isArray(r) ? r.filter((e) => e && typeof e == "object" && typeof e.id == "string" && e.values && typeof e.savedAt == "string") : [];
|
|
34
|
+
} catch {
|
|
35
|
+
return [];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function a(e) {
|
|
39
|
+
return i(e).find((e) => e.isDefault) ?? null;
|
|
40
|
+
}
|
|
41
|
+
function o(e) {
|
|
42
|
+
return Object.fromEntries(Object.entries(e).filter(([e, t]) => t !== null && t !== "" && t !== void 0));
|
|
43
|
+
}
|
|
44
|
+
function s(e, n, r) {
|
|
45
|
+
if (e === "number") {
|
|
46
|
+
let e = Number(n);
|
|
47
|
+
return isNaN(e) ? r ?? null : e;
|
|
48
|
+
}
|
|
49
|
+
return e === "date" || e === "datetime" ? { utc: n } : e === "daterange" || e === "datetimerange" ? c(n, r) : e === "dropdown" ? t(n) : e === "checkbox" ? n === "true" : n;
|
|
50
|
+
}
|
|
51
|
+
function c(e, t) {
|
|
52
|
+
try {
|
|
53
|
+
let t = JSON.parse(e);
|
|
54
|
+
return t && typeof t == "object" && "local" in t && t.local && (t.local = new Date(t.local)), t;
|
|
55
|
+
} catch {
|
|
56
|
+
return t ?? null;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function l(e, t) {
|
|
60
|
+
let n = new URLSearchParams(window.location.search);
|
|
61
|
+
for (let r of e) {
|
|
62
|
+
if (r.type === "separator") continue;
|
|
63
|
+
let e = t[r.key];
|
|
64
|
+
e == null || e === "" ? n.delete(r.key) : r.type === "date" || r.type === "datetime" ? n.set(r.key, e.utc) : typeof e == "object" ? n.set(r.key, JSON.stringify(e)) : n.set(r.key, String(e));
|
|
65
|
+
}
|
|
66
|
+
let r = n.toString(), i = window.location.pathname + (r ? `?${r}` : "");
|
|
67
|
+
window.history.replaceState(null, "", i);
|
|
68
|
+
}
|
|
69
|
+
//#endregion
|
|
70
|
+
export { o as filterEmptyValues, n as getDefaultFilters, a as getDefaultSavedFilter, r as getFilterUrlParams, i as getSavedFilters, l as writeFilterParams };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admins-components78.js","names":[],"sources":["../src/utils/dataFilters.ts"],"sourcesContent":["import type { FilterItem } from '@/components/data-table/DataFilters.vue'\nimport type { SavedFilter } from '@/components/data-table/FiltersHistory.vue'\nimport { parseDropdownValue } from '@/utils/filterDisplay'\nimport { getFullStorageKey } from '@/utils/storageKey'\n\n export function getDefaultFilters(\n items: FilterItem[],\n storageKey?: string,\n useTransformers = true,\n): Record<string, unknown> {\n const urlFilters = getFilterUrlParams(items)\n const hasUrlParams = Object.keys(urlFilters).length > 0\n const defaultFilter = hasUrlParams ? null : getDefaultSavedFilter(storageKey)\n const defaultSavedValues = defaultFilter?.values ?? {}\n\n const result: Record<string, unknown> = {}\n\n for (const item of items) {\n if (item.type === 'separator') continue\n\n let value: unknown\n\n if (item.key in urlFilters) {\n value = urlFilters[item.key]\n } else if (hasUrlParams) {\n continue\n } else if (item.key in defaultSavedValues) {\n value = defaultSavedValues[item.key]\n } else if (item.value !== undefined) {\n value = item.value\n } else {\n continue\n }\n\n if (value == null) continue\n\n if (useTransformers && item.transformer) {\n const transformed = item.transformer(value)\n if (transformed) {\n Object.assign(result, transformed)\n }\n } else {\n result[item.key] = value\n }\n }\n\n return result\n}\n\n/* export function getDefaultFilters(\n items: FilterItem[],\n storageKey?: string,\n): Record<string, unknown> {\n return getDefaultFilterRaws(items, storageKey, true)\n} */\n\nexport function getFilterUrlParams(items: FilterItem[]): Record<string, unknown> {\n const params = new URLSearchParams(window.location.search)\n const result: Record<string, unknown> = {}\n\n for (const item of items) {\n if (item.type === 'separator') continue\n\n const raw = window.location.search ? params.get(item.key) : null\n if (raw) {\n result[item.key] = parseFilterValue(item.type, raw, item.value)\n }\n }\n return result\n}\n\nexport function getSavedFilters(storageKey?: string): SavedFilter[] {\n try {\n const fullStorageKey = getFullStorageKey('filters', storageKey)\n const parsed = JSON.parse(localStorage.getItem(fullStorageKey) ?? '[]')\n return Array.isArray(parsed)\n ? parsed.filter(\n (e) =>\n e &&\n typeof e === 'object' &&\n typeof e.id === 'string' &&\n e.values &&\n typeof e.savedAt === 'string',\n )\n : []\n } catch {\n return []\n }\n}\n\nexport function getDefaultSavedFilter(storageKey?: string): SavedFilter | null {\n const savedFilters = getSavedFilters(storageKey)\n return savedFilters.find((f) => f.isDefault) ?? null\n}\n\nexport function filterEmptyValues(filters: Record<string, any>): Record<string, any> {\n return Object.fromEntries(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Object.entries(filters).filter(([_, val]) => val !== null && val !== '' && val !== undefined),\n )\n}\n\nfunction parseFilterValue(type: FilterItem['type'], raw: string, fallback: unknown): unknown {\n if (type === 'number') {\n const n = Number(raw)\n return isNaN(n) ? (fallback ?? null) : n\n }\n if (type === 'date' || type === 'datetime') {\n return { utc: raw }\n }\n if (type === 'daterange' || type === 'datetimerange') {\n return parseRangeValue(raw, fallback)\n }\n if (type === 'dropdown') {\n return parseDropdownValue(raw)\n }\n if (type === 'checkbox') {\n return raw === 'true'\n }\n\n return raw\n}\n\nfunction parseRangeValue(raw: string, fallback: unknown): unknown {\n try {\n const parsed = JSON.parse(raw)\n if (parsed && typeof parsed === 'object' && 'local' in parsed && parsed.local) {\n parsed.local = new Date(parsed.local)\n }\n return parsed\n } catch {\n return fallback ?? null\n }\n}\n\nexport function writeFilterParams(items: FilterItem[], vals: Record<string, unknown>) {\n const params = new URLSearchParams(window.location.search)\n for (const item of items) {\n if (item.type === 'separator') continue\n const v = vals[item.key]\n if (v === null || v === undefined || v === '') {\n params.delete(item.key)\n } else if (item.type === 'date' || item.type === 'datetime') {\n params.set(item.key, (v as { utc: string }).utc)\n } else if (typeof v === 'object') {\n params.set(item.key, JSON.stringify(v))\n } else {\n params.set(item.key, String(v))\n }\n }\n const qs = params.toString()\n const url = window.location.pathname + (qs ? `?${qs}` : '')\n window.history.replaceState(null, '', url)\n}\n"],"mappings":"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"}
|