admins-components 9.0.73 → 9.0.76
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 +29 -29
- package/dist/admins-components100.js +1 -1
- package/dist/admins-components100.js.map +1 -1
- package/dist/admins-components102.js +4 -4
- package/dist/admins-components103.js +96 -96
- package/dist/admins-components103.js.map +1 -1
- package/dist/admins-components105.js +4 -4
- package/dist/admins-components105.js.map +1 -1
- package/dist/admins-components11.js +6 -6
- package/dist/admins-components110.js +1 -1
- package/dist/admins-components110.js.map +1 -1
- package/dist/admins-components111.js +2 -2
- package/dist/admins-components111.js.map +1 -1
- package/dist/admins-components112.js.map +1 -1
- package/dist/admins-components113.js +1 -1
- package/dist/admins-components113.js.map +1 -1
- package/dist/admins-components115.js +144 -126
- package/dist/admins-components115.js.map +1 -1
- package/dist/admins-components116.js +7 -5
- package/dist/admins-components116.js.map +1 -1
- package/dist/admins-components117.js +1 -1
- package/dist/admins-components117.js.map +1 -1
- package/dist/admins-components118.js +75 -27
- package/dist/admins-components118.js.map +1 -1
- package/dist/admins-components119.js +30 -6
- package/dist/admins-components119.js.map +1 -1
- package/dist/admins-components12.js.map +1 -1
- package/dist/admins-components120.js +34 -20
- package/dist/admins-components120.js.map +1 -1
- package/dist/admins-components121.js +1 -3
- package/dist/admins-components121.js.map +1 -1
- package/dist/admins-components122.js +4 -3
- package/dist/admins-components122.js.map +1 -1
- package/dist/admins-components124.js +2 -1
- package/dist/admins-components124.js.map +1 -1
- package/dist/admins-components129.js +1 -1
- package/dist/admins-components129.js.map +1 -1
- package/dist/admins-components13.js +2 -2
- package/dist/admins-components13.js.map +1 -1
- package/dist/admins-components132.js +23 -15
- package/dist/admins-components132.js.map +1 -1
- package/dist/admins-components133.js.map +1 -1
- package/dist/admins-components14.js +4 -4
- package/dist/admins-components141.js +2 -2
- package/dist/admins-components141.js.map +1 -1
- package/dist/admins-components142.js.map +1 -1
- package/dist/admins-components143.js +5 -1
- package/dist/admins-components143.js.map +1 -1
- package/dist/admins-components144.js +1 -1
- package/dist/admins-components144.js.map +1 -1
- package/dist/admins-components145.js +4 -1
- package/dist/admins-components145.js.map +1 -1
- package/dist/admins-components146.js +30 -6
- package/dist/admins-components146.js.map +1 -1
- package/dist/admins-components147.js +64 -54
- package/dist/admins-components147.js.map +1 -1
- package/dist/admins-components148.js +8 -25
- package/dist/admins-components148.js.map +1 -1
- package/dist/admins-components149.js +26 -56
- package/dist/admins-components149.js.map +1 -1
- package/dist/admins-components150.js +56 -21
- package/dist/admins-components150.js.map +1 -1
- package/dist/admins-components151.js +27 -45
- package/dist/admins-components151.js.map +1 -1
- package/dist/admins-components152.js +48 -29
- package/dist/admins-components152.js.map +1 -1
- package/dist/admins-components153.js +48 -3
- package/dist/admins-components153.js.map +1 -1
- package/dist/admins-components154.js +3 -179
- package/dist/admins-components154.js.map +1 -1
- package/dist/admins-components155.js +200 -42
- package/dist/admins-components155.js.map +1 -1
- package/dist/admins-components156.js +44 -35
- package/dist/admins-components156.js.map +1 -1
- package/dist/admins-components157.js +35 -44
- package/dist/admins-components157.js.map +1 -1
- package/dist/admins-components158.js +42 -137
- package/dist/admins-components158.js.map +1 -1
- package/dist/admins-components159.js +146 -51
- package/dist/admins-components159.js.map +1 -1
- package/dist/admins-components16.js +2 -2
- package/dist/admins-components16.js.map +1 -1
- package/dist/admins-components160.js +58 -7
- package/dist/admins-components160.js.map +1 -1
- package/dist/admins-components161.js +6 -5
- package/dist/admins-components161.js.map +1 -1
- package/dist/admins-components162.js +6 -76
- package/dist/admins-components162.js.map +1 -1
- package/dist/admins-components163.js +77 -29
- package/dist/admins-components163.js.map +1 -1
- package/dist/admins-components164.js +29 -1931
- package/dist/admins-components164.js.map +1 -1
- package/dist/admins-components165.js +1743 -24631
- package/dist/admins-components165.js.map +1 -1
- package/dist/admins-components166.js +24788 -8
- package/dist/admins-components166.js.map +1 -1
- package/dist/admins-components167.js +9 -7
- package/dist/admins-components167.js.map +1 -0
- package/dist/admins-components168.js +7 -142
- package/dist/admins-components169.js +141 -8
- package/dist/admins-components169.js.map +1 -1
- package/dist/admins-components17.js +3 -3
- package/dist/admins-components170.js +3 -3
- package/dist/admins-components170.js.map +1 -1
- package/dist/admins-components171.js +10 -0
- package/dist/admins-components171.js.map +1 -0
- package/dist/admins-components173.js +160 -45
- package/dist/admins-components173.js.map +1 -1
- package/dist/admins-components174.js +52 -8
- package/dist/admins-components174.js.map +1 -1
- package/dist/admins-components175.js +8 -49
- package/dist/admins-components175.js.map +1 -1
- package/dist/admins-components176.js +50 -6
- package/dist/admins-components176.js.map +1 -1
- package/dist/admins-components177.js +6 -80
- package/dist/admins-components177.js.map +1 -1
- package/dist/admins-components178.js +71 -48
- package/dist/admins-components178.js.map +1 -1
- package/dist/admins-components179.js +30 -35
- package/dist/admins-components179.js.map +1 -1
- package/dist/admins-components18.js +1 -1
- package/dist/admins-components18.js.map +1 -1
- package/dist/admins-components180.js +62 -8
- package/dist/admins-components180.js.map +1 -1
- package/dist/admins-components181.js +8 -51
- package/dist/admins-components181.js.map +1 -1
- package/dist/admins-components182.js +51 -8
- package/dist/admins-components182.js.map +1 -1
- package/dist/admins-components183.js +10 -0
- package/dist/admins-components183.js.map +1 -0
- package/dist/{admins-components184.js → admins-components185.js} +5 -5
- package/dist/{admins-components184.js.map → admins-components185.js.map} +1 -1
- package/dist/admins-components20.js +1 -1
- package/dist/admins-components21.js +10 -6
- package/dist/admins-components21.js.map +1 -1
- package/dist/admins-components22.js +4 -4
- package/dist/admins-components23.js +1 -1
- package/dist/admins-components23.js.map +1 -1
- package/dist/admins-components25.js +1 -1
- package/dist/admins-components26.js +107 -106
- package/dist/admins-components26.js.map +1 -1
- package/dist/admins-components28.js +4 -4
- package/dist/admins-components28.js.map +1 -1
- package/dist/admins-components29.js +1 -1
- package/dist/admins-components29.js.map +1 -1
- package/dist/admins-components3.js +1 -3
- package/dist/admins-components3.js.map +1 -1
- package/dist/admins-components30.js +1 -1
- package/dist/admins-components31.js.map +1 -1
- package/dist/admins-components32.js +2 -2
- package/dist/admins-components32.js.map +1 -1
- package/dist/admins-components34.js +4 -4
- package/dist/admins-components35.js +2 -2
- package/dist/admins-components35.js.map +1 -1
- package/dist/admins-components37.js +4 -4
- package/dist/admins-components38.js +1 -1
- package/dist/admins-components38.js.map +1 -1
- package/dist/admins-components40.js +1 -1
- package/dist/admins-components41.js +1 -1
- package/dist/admins-components41.js.map +1 -1
- package/dist/admins-components43.js +1 -1
- package/dist/admins-components43.js.map +1 -1
- package/dist/admins-components45.js +1 -1
- package/dist/admins-components46.js +1 -1
- package/dist/admins-components46.js.map +1 -1
- package/dist/admins-components48.js +1 -1
- package/dist/admins-components49.js +1 -1
- package/dist/admins-components49.js.map +1 -1
- package/dist/admins-components5.js +2 -2
- package/dist/admins-components5.js.map +1 -1
- package/dist/admins-components51.js +1 -1
- package/dist/admins-components51.js.map +1 -1
- package/dist/admins-components54.js +1 -1
- package/dist/admins-components54.js.map +1 -1
- package/dist/admins-components56.js +1 -1
- package/dist/admins-components57.js +1 -1
- package/dist/admins-components57.js.map +1 -1
- package/dist/admins-components6.js +3 -3
- package/dist/admins-components62.js +1 -1
- package/dist/admins-components62.js.map +1 -1
- package/dist/admins-components64.js +1 -1
- package/dist/admins-components65.js.map +1 -1
- package/dist/admins-components66.js +1 -1
- package/dist/admins-components66.js.map +1 -1
- package/dist/admins-components68.js +5 -5
- package/dist/admins-components68.js.map +1 -1
- package/dist/admins-components7.js +1 -1
- package/dist/admins-components7.js.map +1 -1
- package/dist/admins-components70.js +1 -1
- package/dist/admins-components71.js +1 -1
- package/dist/admins-components71.js.map +1 -1
- package/dist/admins-components73.js +1 -1
- package/dist/admins-components74.js +1 -1
- package/dist/admins-components74.js.map +1 -1
- package/dist/admins-components75.js +1 -1
- package/dist/admins-components75.js.map +1 -1
- package/dist/admins-components77.js +1 -1
- package/dist/admins-components78.js +1 -1
- package/dist/admins-components79.js +1 -1
- package/dist/admins-components79.js.map +1 -1
- package/dist/admins-components8.js +2 -2
- package/dist/admins-components8.js.map +1 -1
- package/dist/admins-components80.js +2 -2
- package/dist/admins-components80.js.map +1 -1
- package/dist/admins-components82.js +4 -4
- package/dist/admins-components83.js +16 -23
- package/dist/admins-components83.js.map +1 -1
- package/dist/admins-components85.js +4 -4
- package/dist/admins-components85.js.map +1 -1
- package/dist/admins-components86.js.map +1 -1
- package/dist/admins-components87.js +46 -24
- package/dist/admins-components87.js.map +1 -1
- package/dist/admins-components88.js +4 -4
- package/dist/admins-components88.js.map +1 -1
- package/dist/admins-components90.js +1 -1
- package/dist/admins-components91.js +1 -1
- package/dist/admins-components91.js.map +1 -1
- package/dist/admins-components93.js +1 -1
- package/dist/admins-components94.js +1 -1
- package/dist/admins-components94.js.map +1 -1
- package/dist/admins-components96.js +1 -1
- package/dist/admins-components97.js +1 -1
- package/dist/admins-components97.js.map +1 -1
- package/dist/admins-components99.js +1 -1
- package/dist/main.css +1 -1
- package/dist/main.css.map +1 -1
- package/dist/src/composables/useDropdownAnchor.d.ts +0 -11
- package/dist/src/index.d.ts +1 -1
- package/dist/src/utils/dataFilters.d.ts +9 -0
- package/dist/{src/styles → styles}/components/data-table/filter-tags.scss_vue_type_style_index_0_src_true_lang.css +1 -1
- package/dist/styles/components/dropdown-select.scss_vue_type_style_index_0_src_true_lang.css +1 -0
- package/package.json +1 -1
- package/dist/admins-components168.js.map +0 -1
- package/dist/admins-components172.js +0 -169
- package/dist/admins-components172.js.map +0 -1
- package/dist/src/styles/components/dropdown-select.scss_vue_type_style_index_0_src_true_lang.css +0 -1
- /package/dist/{src/styles → styles}/components/calendar.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/copy-to-clipboard.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/data-table/data-cards.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/data-table/data-filters.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/data-table/data-list-guide.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/data-table/data-list-options.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/data-table/data-list.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/data-table/data-paginator.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/data-table/data-search.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/data-table/data-sort.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/data-table/data-table.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/data-table/filters-history.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/data-table/tag-list.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/datepickers.scss_vue_type_style_index_1_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/header.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/image-picker.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/loader.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/modal.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/sidebar.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/toast-notification.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/vueformelements → vueformelements}/ArticlePickerElement.vue_vue_type_style_index_0_scoped_43c54caa_lang.css +0 -0
- /package/dist/{src/vueformelements → vueformelements}/PartnerPickerElement.vue_vue_type_style_index_0_scoped_09bea4ae_lang.css +0 -0
|
@@ -2,32 +2,54 @@ import { getFullStorageKey as e } from "./admins-components78.js";
|
|
|
2
2
|
import { getUrlParam as t, removeUrlParam as n, setUrlParam as r } from "./admins-components79.js";
|
|
3
3
|
//#region src/utils/dataFilters.ts
|
|
4
4
|
function i(e, t, n = !0) {
|
|
5
|
-
let r =
|
|
5
|
+
let r = s(e), i = Object.keys(r).length > 0, a = (i ? null : l(t))?.values ?? {}, o = {};
|
|
6
6
|
for (let t of e) {
|
|
7
7
|
if (t.type === "separator") continue;
|
|
8
8
|
let e;
|
|
9
9
|
if (t.key in r) e = r[t.key];
|
|
10
10
|
else if (i) continue;
|
|
11
|
-
else if (t.key in
|
|
11
|
+
else if (t.key in a) e = a[t.key];
|
|
12
12
|
else if (t.value !== void 0) e = t.value;
|
|
13
13
|
else continue;
|
|
14
|
-
if (e != null)
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
if (e != null) {
|
|
15
|
+
if (n && t.transformer) {
|
|
16
|
+
let n = t.transformer(e);
|
|
17
|
+
n && Object.assign(o, n);
|
|
18
|
+
} else o[t.key] = e;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return o;
|
|
22
|
+
}
|
|
23
|
+
function a(e, t, n = !0) {
|
|
24
|
+
let r = i(e, t, n), a = {};
|
|
25
|
+
for (let t of e) {
|
|
26
|
+
if (t.type !== "dropdown") {
|
|
27
|
+
t.key in r && (a[t.key] = r[t.key]);
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
let e = o(r[t.key]);
|
|
31
|
+
e != null && (a[t.key] = e);
|
|
32
|
+
}
|
|
33
|
+
return a;
|
|
34
|
+
}
|
|
35
|
+
function o(e) {
|
|
36
|
+
if (e == null) return null;
|
|
37
|
+
if (Array.isArray(e)) {
|
|
38
|
+
let t = e.map((e) => e == null ? null : typeof e == "object" && "value" in e ? e.value ?? null : typeof e == "string" ? e : null).filter((e) => e !== null);
|
|
39
|
+
return t.length > 0 ? t : null;
|
|
18
40
|
}
|
|
19
|
-
return
|
|
41
|
+
return typeof e == "object" && "value" in e ? e.value ?? null : typeof e == "string" ? e : null;
|
|
20
42
|
}
|
|
21
|
-
function
|
|
43
|
+
function s(e) {
|
|
22
44
|
let n = {};
|
|
23
45
|
for (let r of e) {
|
|
24
46
|
if (r.type === "separator") continue;
|
|
25
47
|
let e = t(r.key);
|
|
26
|
-
e && (n[r.key] =
|
|
48
|
+
e && (n[r.key] = d(r.type, e, r.value));
|
|
27
49
|
}
|
|
28
50
|
return n;
|
|
29
51
|
}
|
|
30
|
-
function
|
|
52
|
+
function c(t) {
|
|
31
53
|
try {
|
|
32
54
|
let n = e("filters", t), r = JSON.parse(localStorage.getItem(n) ?? "[]");
|
|
33
55
|
return Array.isArray(r) ? r.filter((e) => e && typeof e == "object" && typeof e.id == "string" && e.values && typeof e.savedAt == "string") : [];
|
|
@@ -35,34 +57,34 @@ function o(t) {
|
|
|
35
57
|
return [];
|
|
36
58
|
}
|
|
37
59
|
}
|
|
38
|
-
function
|
|
39
|
-
return
|
|
60
|
+
function l(e) {
|
|
61
|
+
return c(e).find((e) => e.isDefault) ?? null;
|
|
40
62
|
}
|
|
41
|
-
function
|
|
63
|
+
function u(e) {
|
|
42
64
|
return Object.fromEntries(Object.entries(e).filter(([e, t]) => t !== null && t !== "" && t !== void 0));
|
|
43
65
|
}
|
|
44
|
-
function
|
|
66
|
+
function d(e, t, n) {
|
|
45
67
|
if (e === "number") {
|
|
46
68
|
let e = Number(t);
|
|
47
69
|
return isNaN(e) ? n ?? null : e;
|
|
48
70
|
}
|
|
49
|
-
return e === "date" || e === "datetime" ? { utc: t } : e === "daterange" || e === "datetimerange" ?
|
|
71
|
+
return e === "date" || e === "datetime" ? { utc: t } : e === "daterange" || e === "datetimerange" ? m(t, n) : e === "dropdown" ? f(t) : e === "checkbox" ? t === "true" : t;
|
|
50
72
|
}
|
|
51
|
-
function
|
|
73
|
+
function f(e) {
|
|
52
74
|
if (e.startsWith("[") || e.startsWith("{")) try {
|
|
53
75
|
let t = JSON.parse(e);
|
|
54
76
|
if (Array.isArray(t)) {
|
|
55
|
-
let e = t.map(
|
|
77
|
+
let e = t.map(p).filter((e) => e !== null);
|
|
56
78
|
return e.length > 0 ? e : null;
|
|
57
79
|
}
|
|
58
|
-
if (t && typeof t == "object") return
|
|
80
|
+
if (t && typeof t == "object") return p(t);
|
|
59
81
|
} catch {}
|
|
60
82
|
return e ? {
|
|
61
83
|
value: e,
|
|
62
84
|
label: e
|
|
63
85
|
} : null;
|
|
64
86
|
}
|
|
65
|
-
function
|
|
87
|
+
function p(e) {
|
|
66
88
|
if (e == null) return null;
|
|
67
89
|
if (typeof e == "object" && "label" in e) {
|
|
68
90
|
let t = e;
|
|
@@ -76,7 +98,7 @@ function d(e) {
|
|
|
76
98
|
label: e
|
|
77
99
|
} : null;
|
|
78
100
|
}
|
|
79
|
-
function
|
|
101
|
+
function m(e, t) {
|
|
80
102
|
try {
|
|
81
103
|
let t = JSON.parse(e);
|
|
82
104
|
return t && typeof t == "object" && "local" in t && t.local && (t.local = new Date(t.local)), t;
|
|
@@ -84,14 +106,14 @@ function f(e, t) {
|
|
|
84
106
|
return t ?? null;
|
|
85
107
|
}
|
|
86
108
|
}
|
|
87
|
-
function
|
|
109
|
+
function h(e, t) {
|
|
88
110
|
for (let i of e) {
|
|
89
111
|
if (i.type === "separator") continue;
|
|
90
112
|
let e = t[i.key];
|
|
91
|
-
e == null || e === "" ? n(i.key) : i.type === "date" || i.type === "datetime" ? r(i.key, e.utc) : i.type === "dropdown" ? r(i.key, JSON.stringify(
|
|
113
|
+
e == null || e === "" ? n(i.key) : i.type === "date" || i.type === "datetime" ? r(i.key, e.utc) : i.type === "dropdown" ? r(i.key, JSON.stringify(g(e))) : typeof e == "object" ? r(i.key, JSON.stringify(e)) : r(i.key, String(e));
|
|
92
114
|
}
|
|
93
115
|
}
|
|
94
|
-
function
|
|
116
|
+
function g(e, t) {
|
|
95
117
|
if (e == null) return null;
|
|
96
118
|
let n = (e) => {
|
|
97
119
|
if (e == null) return null;
|
|
@@ -109,4 +131,4 @@ function m(e, t) {
|
|
|
109
131
|
return n(e);
|
|
110
132
|
}
|
|
111
133
|
//#endregion
|
|
112
|
-
export {
|
|
134
|
+
export { u as filterEmptyValues, a as getDefaultFilterValues, i as getDefaultFilters, l as getDefaultSavedFilter, s as getFilterUrlParams, c as getSavedFilters, h as writeFilterParams };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components87.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 type { DropdownOption } from '@/components/DropdownSelect.vue'\nimport { getFullStorageKey } from '@/utils/storageKey'\nimport { getUrlParam, setUrlParam, removeUrlParam } from '@/utils/url'\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\nexport function getFilterUrlParams(items: FilterItem[]): Record<string, unknown> {\n const result: Record<string, unknown> = {}\n\n for (const item of items) {\n if (item.type === 'separator') continue\n\n const raw = getUrlParam(item.key)\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 parseDropdownStoredValue(raw)\n }\n if (type === 'checkbox') {\n return raw === 'true'\n }\n\n return raw\n}\n\nfunction parseDropdownStoredValue(raw: string): DropdownOption | DropdownOption[] | null {\n // Try to parse as JSON first (new format or legacy array)\n if (raw.startsWith('[') || raw.startsWith('{')) {\n try {\n const parsed = JSON.parse(raw)\n if (Array.isArray(parsed)) {\n const opts = parsed.map(toDropdownOption).filter((o): o is DropdownOption => o !== null)\n return opts.length > 0 ? opts : null\n }\n if (parsed && typeof parsed === 'object') {\n const opt = toDropdownOption(parsed)\n return opt\n }\n } catch {\n // fall through to legacy handling\n }\n }\n // Legacy: plain string value\n if (raw) return { value: raw, label: raw }\n return null\n}\n\nfunction toDropdownOption(entry: unknown): DropdownOption | null {\n if (entry == null) return null\n if (typeof entry === 'object' && 'label' in (entry as object)) {\n const obj = entry as DropdownOption\n if (obj.value != null && typeof obj.label === 'string') {\n return { value: obj.value, label: obj.label }\n }\n }\n if (typeof entry === 'string') {\n return { value: entry, label: entry }\n }\n return null\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 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 removeUrlParam(item.key)\n } else if (item.type === 'date' || item.type === 'datetime') {\n setUrlParam(item.key, (v as { utc: string }).utc)\n } else if (item.type === 'dropdown') {\n // Store the full option object(s) so the label is preserved even when\n // the options list hasn't been loaded yet (e.g. lazy onInnerSearch).\n setUrlParam(item.key, JSON.stringify(normalizeDropdownValue(v)))\n } else if (typeof v === 'object') {\n setUrlParam(item.key, JSON.stringify(v))\n } else {\n setUrlParam(item.key, String(v))\n }\n }\n}\n\nfunction normalizeDropdownValue(\n v: unknown,\n options?: DropdownOption[],\n): DropdownOption | DropdownOption[] | null {\n if (v == null) return null\n const toOption = (entry: unknown): DropdownOption | null => {\n if (entry == null) return null\n if (typeof entry === 'object' && 'label' in (entry as object)) {\n return entry as DropdownOption\n }\n const value = String(entry)\n const label = options?.find((o) => o.value === value)?.label ?? value\n return { value, label }\n }\n if (Array.isArray(v)) {\n const opts = v.map(toOption).filter((o): o is DropdownOption => o !== null)\n return opts.length > 0 ? opts : null\n }\n const opt = toOption(v)\n return opt\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admins-components87.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 type { DropdownOption } from '@/components/DropdownSelect.vue'\nimport { getFullStorageKey } from '@/utils/storageKey'\nimport { getUrlParam, setUrlParam, removeUrlParam } from '@/utils/url'\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/**\n * Like `getDefaultFilters`, but for `dropdown` items returns plain\n * `string | string[]` values instead of the full `DropdownOption` object(s).\n *\n * Useful for consumers that just want to send the filter payload to an API\n * (e.g. `getDefaultFetchData` callers that prefer not to deal with option\n * objects on the wire).\n */\nexport function getDefaultFilterValues(\n items: FilterItem[],\n storageKey?: string,\n useTransformers = true,\n): Record<string, unknown> {\n const filters = getDefaultFilters(items, storageKey, useTransformers)\n const result: Record<string, unknown> = {}\n\n for (const item of items) {\n if (item.type !== 'dropdown') {\n if (item.key in filters) result[item.key] = filters[item.key]\n continue\n }\n\n const extracted = extractDropdownValues(filters[item.key])\n if (extracted != null) {\n result[item.key] = extracted\n }\n }\n\n return result\n}\n\n/**\n * Extracts plain value(s) from a dropdown filter value.\n * Accepts `DropdownOption | DropdownOption[] | string | string[] | null`\n * and returns `string | string[] | null`.\n */\nfunction extractDropdownValues(val: unknown): string | string[] | null {\n if (val == null) return null\n if (Array.isArray(val)) {\n const values = val\n .map((entry) => {\n if (entry == null) return null\n if (typeof entry === 'object' && 'value' in entry) {\n return (entry as { value?: string }).value ?? null\n }\n if (typeof entry === 'string') return entry\n return null\n })\n .filter((v): v is string => v !== null)\n return values.length > 0 ? values : null\n }\n if (typeof val === 'object' && 'value' in val) {\n return (val as { value?: string }).value ?? null\n }\n if (typeof val === 'string') return val\n return null\n}\n\nexport function getFilterUrlParams(items: FilterItem[]): Record<string, unknown> {\n const result: Record<string, unknown> = {}\n\n for (const item of items) {\n if (item.type === 'separator') continue\n\n const raw = getUrlParam(item.key)\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 parseDropdownStoredValue(raw)\n }\n if (type === 'checkbox') {\n return raw === 'true'\n }\n\n return raw\n}\n\nfunction parseDropdownStoredValue(raw: string): DropdownOption | DropdownOption[] | null {\n // Try to parse as JSON first (new format or legacy array)\n if (raw.startsWith('[') || raw.startsWith('{')) {\n try {\n const parsed = JSON.parse(raw)\n if (Array.isArray(parsed)) {\n const opts = parsed.map(toDropdownOption).filter((o): o is DropdownOption => o !== null)\n return opts.length > 0 ? opts : null\n }\n if (parsed && typeof parsed === 'object') {\n const opt = toDropdownOption(parsed)\n return opt\n }\n } catch {\n // fall through to legacy handling\n }\n }\n // Legacy: plain string value\n if (raw) return { value: raw, label: raw }\n return null\n}\n\nfunction toDropdownOption(entry: unknown): DropdownOption | null {\n if (entry == null) return null\n if (typeof entry === 'object' && 'label' in (entry as object)) {\n const obj = entry as DropdownOption\n if (obj.value != null && typeof obj.label === 'string') {\n return { value: obj.value, label: obj.label }\n }\n }\n if (typeof entry === 'string') {\n return { value: entry, label: entry }\n }\n return null\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 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 removeUrlParam(item.key)\n } else if (item.type === 'date' || item.type === 'datetime') {\n setUrlParam(item.key, (v as { utc: string }).utc)\n } else if (item.type === 'dropdown') {\n // Store the full option object(s) so the label is preserved even when\n // the options list hasn't been loaded yet (e.g. lazy onInnerSearch).\n setUrlParam(item.key, JSON.stringify(normalizeDropdownValue(v)))\n } else if (typeof v === 'object') {\n setUrlParam(item.key, JSON.stringify(v))\n } else {\n setUrlParam(item.key, String(v))\n }\n }\n}\n\nfunction normalizeDropdownValue(\n v: unknown,\n options?: DropdownOption[],\n): DropdownOption | DropdownOption[] | null {\n if (v == null) return null\n const toOption = (entry: unknown): DropdownOption | null => {\n if (entry == null) return null\n if (typeof entry === 'object' && 'label' in (entry as object)) {\n return entry as DropdownOption\n }\n const value = String(entry)\n const label = options?.find((o) => o.value === value)?.label ?? value\n return { value, label }\n }\n if (Array.isArray(v)) {\n const opts = v.map(toOption).filter((o): o is DropdownOption => o !== null)\n return opts.length > 0 ? opts : null\n }\n const opt = toOption(v)\n return opt\n}\n"],"mappings":"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"}
|
|
@@ -41,7 +41,7 @@ var ie = { class: "ac-component" }, ae = { class: "filters-history" }, oe = ["ar
|
|
|
41
41
|
}, F = {
|
|
42
42
|
key: 1,
|
|
43
43
|
class: "filters-history__item-empty"
|
|
44
|
-
}, I = { key: 3 }, L =
|
|
44
|
+
}, I = { key: 3 }, L = /*@__PURE__*/ f({
|
|
45
45
|
__name: "FiltersHistory",
|
|
46
46
|
props: {
|
|
47
47
|
items: {},
|
|
@@ -80,13 +80,13 @@ var ie = { class: "ac-component" }, ae = { class: "filters-history" }, oe = ["ar
|
|
|
80
80
|
let Y = g(!1);
|
|
81
81
|
function X() {
|
|
82
82
|
if (!J.value) return;
|
|
83
|
-
let e = H.value.trim()
|
|
84
|
-
V.value = [{
|
|
83
|
+
let e = H.value.trim(), t = {
|
|
85
84
|
id: me(),
|
|
86
85
|
savedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
87
86
|
name: e || void 0,
|
|
88
87
|
values: { ...R.values }
|
|
89
|
-
}
|
|
88
|
+
};
|
|
89
|
+
V.value = [t, ...V.value].slice(0, 50), H.value = "", q(), p(() => {
|
|
90
90
|
Y.value = !0;
|
|
91
91
|
});
|
|
92
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components88.js","names":[],"sources":["../src/components/data-table/FiltersHistory.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface SavedFilter {\n id: string\n savedAt: string\n name?: string\n values: Record<string, any>\n isDefault?: boolean\n}\n</script>\n\n<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'\nimport { getSavedFilters } from '@/utils/dataFilters'\nimport { getFullStorageKey } from '@/utils/storageKey'\n\nconst props = defineProps<{\n items: FilterItem[]\n values: Record<string, any>\n storageKey?: string\n}>()\n\nconst MAX_ITEM_LIMIT = 50\nconst MAX_ITEM_WARNING_THRESHOLD = 7\n\nconst emit = defineEmits<{\n load: [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 entries.value = getSavedFilters(props.storageKey)\n}\n\nfunction persist() {\n try {\n const fullStorageKey = getFullStorageKey('filters', props.storageKey)\n localStorage.setItem(fullStorageKey, JSON.stringify(entries.value))\n } catch {\n console.warn('Failed to persist saved filters to localStorage')\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().toString(36)\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}\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 sortedEntries = computed(() => {\n const defaultEntry = entries.value.find((e) => e.isDefault)\n if (!defaultEntry) return entries.value\n return [defaultEntry, ...entries.value.filter((e) => !e.isDefault)]\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\nfunction toggleDefault(entry: SavedFilter) {\n if (entry.isDefault) {\n entry.isDefault = false\n } else {\n entries.value.forEach((e) => {\n e.isDefault = false\n })\n entry.isDefault = true\n }\n persist()\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 <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 sortedEntries\"\n :key=\"entry.id\"\n class=\"filters-history__item\"\n :class=\"{ 'is-open': isExpanded(entry.id), 'is-default': entry.isDefault }\"\n >\n <div\n class=\"filters-history__item-header\"\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-name\">{{ entry.name }}</span>\n <span v-if=\"entry.name\" class=\"filters-history__item-date\">{{\n formatSavedAt(entry.savedAt)\n }}</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-default\"\n @click=\"toggleDefault(entry)\"\n :class=\"{ active: entry.isDefault }\"\n :aria-label=\"\n entry.isDefault\n ? 'Alapértelmezett szűrő törlése'\n : 'Alapértelmezett szűrő beállítása'\n \"\n :title=\"\n entry.isDefault\n ? 'Alapértelmezett szűrő törlése'\n : 'Alapértelmezett szűrő beállítása'\n \"\n >\n <i\n class=\"fa-star fix-icon-pos\"\n :class=\"entry.isDefault ? 'fa-solid' : 'fa-regular'\"\n ></i>\n </button>\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-components88.js","names":[],"sources":["../src/components/data-table/FiltersHistory.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface SavedFilter {\n id: string\n savedAt: string\n name?: string\n values: Record<string, any>\n isDefault?: boolean\n}\n</script>\n\n<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'\nimport { getSavedFilters } from '@/utils/dataFilters'\nimport { getFullStorageKey } from '@/utils/storageKey'\n\nconst props = defineProps<{\n items: FilterItem[]\n values: Record<string, any>\n storageKey?: string\n}>()\n\nconst MAX_ITEM_LIMIT = 50\nconst MAX_ITEM_WARNING_THRESHOLD = 7\n\nconst emit = defineEmits<{\n load: [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 entries.value = getSavedFilters(props.storageKey)\n}\n\nfunction persist() {\n try {\n const fullStorageKey = getFullStorageKey('filters', props.storageKey)\n localStorage.setItem(fullStorageKey, JSON.stringify(entries.value))\n } catch {\n console.warn('Failed to persist saved filters to localStorage')\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().toString(36)\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}\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 sortedEntries = computed(() => {\n const defaultEntry = entries.value.find((e) => e.isDefault)\n if (!defaultEntry) return entries.value\n return [defaultEntry, ...entries.value.filter((e) => !e.isDefault)]\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\nfunction toggleDefault(entry: SavedFilter) {\n if (entry.isDefault) {\n entry.isDefault = false\n } else {\n entries.value.forEach((e) => {\n e.isDefault = false\n })\n entry.isDefault = true\n }\n persist()\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 <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 sortedEntries\"\n :key=\"entry.id\"\n class=\"filters-history__item\"\n :class=\"{ 'is-open': isExpanded(entry.id), 'is-default': entry.isDefault }\"\n >\n <div\n class=\"filters-history__item-header\"\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-name\">{{ entry.name }}</span>\n <span v-if=\"entry.name\" class=\"filters-history__item-date\">{{\n formatSavedAt(entry.savedAt)\n }}</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-default\"\n @click=\"toggleDefault(entry)\"\n :class=\"{ active: entry.isDefault }\"\n :aria-label=\"\n entry.isDefault\n ? 'Alapértelmezett szűrő törlése'\n : 'Alapértelmezett szűrő beállítása'\n \"\n :title=\"\n entry.isDefault\n ? 'Alapértelmezett szűrő törlése'\n : 'Alapértelmezett szűrő beállítása'\n \"\n >\n <i\n class=\"fa-star fix-icon-pos\"\n :class=\"entry.isDefault ? 'fa-solid' : 'fa-regular'\"\n ></i>\n </button>\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,4 +1,4 @@
|
|
|
1
|
-
import './
|
|
1
|
+
import './styles/components/data-table/filters-history.scss_vue_type_style_index_0_src_true_lang.css';
|
|
2
2
|
import e from "./admins-components88.js";
|
|
3
3
|
/* empty css */
|
|
4
4
|
//#region src/components/data-table/FiltersHistory.vue
|
|
@@ -12,7 +12,7 @@ import { Fragment as d, computed as f, createBlock as p, createCommentVNode as m
|
|
|
12
12
|
var E = {
|
|
13
13
|
key: 0,
|
|
14
14
|
class: "data-filters__separator"
|
|
15
|
-
}, D = ["for"], O = { class: "c-label" }, k = { class: "c-label" }, A = { class: "data-filters__footer" }, j =
|
|
15
|
+
}, D = ["for"], O = { class: "c-label" }, k = { class: "c-label" }, A = { class: "data-filters__footer" }, j = /*@__PURE__*/ v({
|
|
16
16
|
__name: "DataFilters",
|
|
17
17
|
props: {
|
|
18
18
|
items: {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components91.js","names":[],"sources":["../src/components/data-table/DataFilters.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { DropdownOption } from '@/components/DropdownSelect.vue'\n\nexport interface FilterItem {\n type: FilterItemType\n key: string\n label?: string\n placeholder?: string\n value?: any\n options?: DropdownOption[]\n fullWidth?: boolean\n config?: Record<string, any>\n displayClass?: string\n transformer?: (value: any) => Record<string, any> | null | undefined\n onInnerSearch?: (value: string) => void\n onChange?: (value: any) => void\n}\n\nexport interface FilterResponse {\n values: Record<string, any>\n transformed: Record<string, any>\n}\n\nexport interface DataFiltersProps {\n items: FilterItem[]\n open?: boolean\n position?: SidebarPosition\n lazy?: boolean\n handleUrl?: boolean\n historyEnabled?: boolean\n storageKey?: string\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport Sidebar, { type SidebarPosition } from '@/components/Sidebar.vue'\nimport DatePicker from '@/components/DatePicker.vue'\nimport DateRangePicker from '@/components/DateRangePicker.vue'\nimport DropdownSelect from '@/components/DropdownSelect.vue'\nimport TextInput, { type TextInputType } from '@/components/TextInput.vue'\nimport Button from '@/components/Button.vue'\nimport Checkbox from '@/components/Checkbox.vue'\nimport FiltersHistory from '@/components/data-table/FiltersHistory.vue'\nimport type { DatePickerConfig, DateRangePickerConfig } from '@/types/datepickers'\nimport type { FilterItemType, PickedDate, PickedUtcRange } from '@/types/types'\nimport { filterEmptyValues, getDefaultFilters, writeFilterParams } from '@/utils/dataFilters'\n\nconst props = withDefaults(defineProps<DataFiltersProps>(), {\n open: false,\n position: 'left',\n lazy: true,\n handleUrl: false,\n historyEnabled: true,\n})\n\nconst emit = defineEmits<{\n close: []\n change: [response: FilterResponse]\n}>()\n\nconst values = ref<Record<string, any>>(getDefaultFilters(props.items, props.storageKey, false))\nconst filterRefs = ref<Record<string, any>>({})\n\nfunction setFilterRef(key: string, el: any) {\n if (el) filterRefs.value[key] = el\n else delete filterRefs.value[key]\n}\n\nfunction buildDatePickerConfig(item: FilterItem): DatePickerConfig {\n return {\n ...(item.config ?? {}),\n showTime: item.type === 'datetime',\n placeholder: item.placeholder ?? (item.type === 'datetime' ? 'Időpont' : 'Dátum'),\n }\n}\n\nfunction buildDateRangePickerConfig(item: FilterItem): DateRangePickerConfig {\n return {\n ...(item.config ?? {}),\n ...(!item.fullWidth ? { compact: true } : {}),\n showTime: item.type === 'datetimerange',\n }\n}\n\nfunction update(item: FilterItem, value: any) {\n const stored = typeof value === 'string' ? value.trim() : value\n values.value = { ...values.value, [item.key]: stored }\n if (item.onChange) item.onChange(stored)\n if (!props.lazy) emitChange()\n}\n\nconst hasActiveFilters = computed(() =>\n Object.values(values.value).some((v) => v !== null && v !== '' && v !== undefined),\n)\n\nfunction buildResponse(): FilterResponse {\n const transformed: Record<string, any> = {}\n for (const item of props.items) {\n if (item.type === 'separator') continue\n const val = values.value[item.key]\n if (item.transformer) {\n Object.assign(transformed, item.transformer(val) ?? {})\n } else if (item.type === 'date' || item.type === 'datetime') {\n transformed[item.key] = val?.utc ?? val\n } else if (item.type === 'dropdown') {\n // Emit only the value(s), not the full DropdownOption object(s).\n // The full object is kept internally for label display, but the\n // payload sent to consumers should contain plain values.\n transformed[item.key] = extractDropdownValues(val)\n } else {\n transformed[item.key] = val\n }\n }\n return { values: filterEmptyValues(values.value), transformed: filterEmptyValues(transformed) }\n}\n\n/**\n * Extracts plain value(s) from a dropdown filter value.\n * Accepts `DropdownOption | DropdownOption[] | string | string[] | null`\n * and returns `string | string[] | null`.\n */\nfunction extractDropdownValues(val: unknown): string | string[] | null {\n if (val == null) return null\n if (Array.isArray(val)) {\n const values = val\n .map((entry) => {\n if (entry == null) return null\n if (typeof entry === 'object' && 'value' in entry) {\n return (entry as { value?: string }).value ?? null\n }\n if (typeof entry === 'string') return entry\n return null\n })\n .filter((v): v is string => v !== null)\n return values.length > 0 ? values : null\n }\n if (typeof val === 'object' && 'value' in val) {\n return (val as { value?: string }).value ?? null\n }\n if (typeof val === 'string') return val\n return null\n}\n\nfunction emitChange() {\n if (props.handleUrl) writeFilterParams(props.items, values.value)\n emit('change', buildResponse())\n}\n\nfunction confirm() {\n emitChange()\n emit('close')\n}\n\nfunction clearAll() {\n values.value = {}\n emitChange()\n}\n\nfunction clearFilter(key: string) {\n values.value = { ...values.value, [key]: null }\n emitChange()\n}\n\nfunction focusFilter(key: string) {\n const el = (filterRefs.value as Record<string, any>)[key]\n if (!el) return\n\n if (typeof el.focusAndOpen === 'function') el.focusAndOpen()\n else if (typeof el.focus === 'function') el.focus()\n}\n\nfunction onHistoryLoad(loaded: Record<string, any>) {\n const next: Record<string, any> = { ...values.value }\n for (const item of props.items) {\n if (item.type === 'separator') continue\n if (item.key in loaded) next[item.key] = loaded[item.key] ?? null\n }\n values.value = next\n emitChange()\n}\n\ndefineExpose({ clearFilter, focusFilter })\n\nfunction handleFilterKeydown(event: KeyboardEvent) {\n if (event.key !== 'Enter') return\n\n // Allow Enter in textarea for line breaks\n const target = event.target as HTMLElement\n if (target?.tagName === 'TEXTAREA') return\n\n event.preventDefault()\n confirm()\n}\n\nfunction handleDropdownFilterInput(item: FilterItem, text: string) {\n if (item.onInnerSearch) item.onInnerSearch(text)\n}\n</script>\n\n<template>\n <Sidebar :open=\"open\" title=\"Szűrők\" :position=\"position\" @close=\"emit('close')\">\n <div class=\"data-filters\" @keydown=\"handleFilterKeydown\">\n <div\n v-for=\"item in items\"\n :key=\"item.key\"\n class=\"data-filters__field\"\n :class=\"{ 'data-filters__field--full': item.fullWidth || item.type === 'separator' }\"\n >\n <hr v-if=\"item.type === 'separator'\" class=\"data-filters__separator\" />\n <template v-else-if=\"item.type === 'checkbox'\">\n <Checkbox\n :ref=\"(el: any) => setFilterRef(item.key, el)\"\n :model-value=\"(values[item.key] as boolean) ?? false\"\n :label=\"item.label ?? item.key\"\n @update:model-value=\"(val) => update(item, val)\"\n v-bind=\"item.config\"\n />\n </template>\n <template v-else-if=\"['text', 'number', 'textarea'].includes(item.type)\">\n <TextInput\n :type=\"item.type as TextInputType\"\n :ref=\"(el: any) => setFilterRef(item.key, el)\"\n :id=\"`df-${item.key}`\"\n :model-value=\"(values[item.key] as string) ?? ''\"\n :label=\"item.label ?? item.key\"\n :placeholder=\"item.placeholder\"\n @update:model-value=\"(val) => update(item, val || null)\"\n v-bind=\"item.config\"\n />\n </template>\n <template v-else-if=\"item.type === 'date' || item.type === 'datetime'\">\n <label class=\"c-label\" :for=\"`df-${item.key}`\">{{ item.label ?? item.key }}</label>\n <DatePicker\n :ref=\"(el: any) => setFilterRef(item.key, el)\"\n :id=\"`df-${item.key}`\"\n :model-value=\"(values[item.key] as PickedDate) ?? null\"\n :config=\"buildDatePickerConfig(item)\"\n @update:model-value=\"(val) => update(item, val)\"\n />\n </template>\n <template v-else-if=\"item.type === 'daterange' || item.type === 'datetimerange'\">\n <span class=\"c-label\">{{ item.label ?? item.key }}</span>\n <DateRangePicker\n :ref=\"(el: any) => setFilterRef(item.key, el)\"\n :model-value=\"(values[item.key] as PickedUtcRange) ?? null\"\n :config=\"buildDateRangePickerConfig(item)\"\n @update:model-value=\"(val) => update(item, val)\"\n />\n </template>\n <template v-else-if=\"item.type === 'dropdown'\">\n <span class=\"c-label\">{{ item.label ?? item.key }}</span>\n <DropdownSelect\n :ref=\"(el: any) => setFilterRef(item.key, el)\"\n :model-value=\"(values[item.key] as DropdownOption | DropdownOption[] | null) ?? null\"\n :options=\"item.options ?? []\"\n :config=\"{\n ...(item.config ?? {}),\n placeholder: item.placeholder ?? 'Válassz...',\n clearable: true,\n filterable: true,\n }\"\n @filter-input=\"handleDropdownFilterInput(item, $event)\"\n @update:model-value=\"(val) => update(item, val)\"\n />\n </template>\n </div>\n </div>\n <div class=\"data-filters__footer\">\n <Button\n icon=\"fa-solid fa-trash-can\"\n :disabled=\"!hasActiveFilters\"\n label=\"Szűrők törlése\"\n aria-label=\"Szűrők törlése\"\n size=\"small\"\n @click=\"clearAll\"\n />\n <Button label=\"Szűrés\" aria-label=\"Szűrés\" type=\"success\" @click=\"confirm\" />\n </div>\n <template v-if=\"historyEnabled\">\n <hr class=\"separator my-3\" />\n <FiltersHistory\n :items=\"items\"\n :values=\"values\"\n :storage-key=\"storageKey\"\n @load=\"onHistoryLoad\"\n />\n </template>\n </Sidebar>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/data-filters.scss\"></style>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admins-components91.js","names":[],"sources":["../src/components/data-table/DataFilters.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { DropdownOption } from '@/components/DropdownSelect.vue'\n\nexport interface FilterItem {\n type: FilterItemType\n key: string\n label?: string\n placeholder?: string\n value?: any\n options?: DropdownOption[]\n fullWidth?: boolean\n config?: Record<string, any>\n displayClass?: string\n transformer?: (value: any) => Record<string, any> | null | undefined\n onInnerSearch?: (value: string) => void\n onChange?: (value: any) => void\n}\n\nexport interface FilterResponse {\n values: Record<string, any>\n transformed: Record<string, any>\n}\n\nexport interface DataFiltersProps {\n items: FilterItem[]\n open?: boolean\n position?: SidebarPosition\n lazy?: boolean\n handleUrl?: boolean\n historyEnabled?: boolean\n storageKey?: string\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport Sidebar, { type SidebarPosition } from '@/components/Sidebar.vue'\nimport DatePicker from '@/components/DatePicker.vue'\nimport DateRangePicker from '@/components/DateRangePicker.vue'\nimport DropdownSelect from '@/components/DropdownSelect.vue'\nimport TextInput, { type TextInputType } from '@/components/TextInput.vue'\nimport Button from '@/components/Button.vue'\nimport Checkbox from '@/components/Checkbox.vue'\nimport FiltersHistory from '@/components/data-table/FiltersHistory.vue'\nimport type { DatePickerConfig, DateRangePickerConfig } from '@/types/datepickers'\nimport type { FilterItemType, PickedDate, PickedUtcRange } from '@/types/types'\nimport { filterEmptyValues, getDefaultFilters, writeFilterParams } from '@/utils/dataFilters'\n\nconst props = withDefaults(defineProps<DataFiltersProps>(), {\n open: false,\n position: 'left',\n lazy: true,\n handleUrl: false,\n historyEnabled: true,\n})\n\nconst emit = defineEmits<{\n close: []\n change: [response: FilterResponse]\n}>()\n\nconst values = ref<Record<string, any>>(getDefaultFilters(props.items, props.storageKey, false))\nconst filterRefs = ref<Record<string, any>>({})\n\nfunction setFilterRef(key: string, el: any) {\n if (el) filterRefs.value[key] = el\n else delete filterRefs.value[key]\n}\n\nfunction buildDatePickerConfig(item: FilterItem): DatePickerConfig {\n return {\n ...(item.config ?? {}),\n showTime: item.type === 'datetime',\n placeholder: item.placeholder ?? (item.type === 'datetime' ? 'Időpont' : 'Dátum'),\n }\n}\n\nfunction buildDateRangePickerConfig(item: FilterItem): DateRangePickerConfig {\n return {\n ...(item.config ?? {}),\n ...(!item.fullWidth ? { compact: true } : {}),\n showTime: item.type === 'datetimerange',\n }\n}\n\nfunction update(item: FilterItem, value: any) {\n const stored = typeof value === 'string' ? value.trim() : value\n values.value = { ...values.value, [item.key]: stored }\n if (item.onChange) item.onChange(stored)\n if (!props.lazy) emitChange()\n}\n\nconst hasActiveFilters = computed(() =>\n Object.values(values.value).some((v) => v !== null && v !== '' && v !== undefined),\n)\n\nfunction buildResponse(): FilterResponse {\n const transformed: Record<string, any> = {}\n for (const item of props.items) {\n if (item.type === 'separator') continue\n const val = values.value[item.key]\n if (item.transformer) {\n Object.assign(transformed, item.transformer(val) ?? {})\n } else if (item.type === 'date' || item.type === 'datetime') {\n transformed[item.key] = val?.utc ?? val\n } else if (item.type === 'dropdown') {\n // Emit only the value(s), not the full DropdownOption object(s).\n // The full object is kept internally for label display, but the\n // payload sent to consumers should contain plain values.\n transformed[item.key] = extractDropdownValues(val)\n } else {\n transformed[item.key] = val\n }\n }\n return { values: filterEmptyValues(values.value), transformed: filterEmptyValues(transformed) }\n}\n\n/**\n * Extracts plain value(s) from a dropdown filter value.\n * Accepts `DropdownOption | DropdownOption[] | string | string[] | null`\n * and returns `string | string[] | null`.\n */\nfunction extractDropdownValues(val: unknown): string | string[] | null {\n if (val == null) return null\n if (Array.isArray(val)) {\n const values = val\n .map((entry) => {\n if (entry == null) return null\n if (typeof entry === 'object' && 'value' in entry) {\n return (entry as { value?: string }).value ?? null\n }\n if (typeof entry === 'string') return entry\n return null\n })\n .filter((v): v is string => v !== null)\n return values.length > 0 ? values : null\n }\n if (typeof val === 'object' && 'value' in val) {\n return (val as { value?: string }).value ?? null\n }\n if (typeof val === 'string') return val\n return null\n}\n\nfunction emitChange() {\n if (props.handleUrl) writeFilterParams(props.items, values.value)\n emit('change', buildResponse())\n}\n\nfunction confirm() {\n emitChange()\n emit('close')\n}\n\nfunction clearAll() {\n values.value = {}\n emitChange()\n}\n\nfunction clearFilter(key: string) {\n values.value = { ...values.value, [key]: null }\n emitChange()\n}\n\nfunction focusFilter(key: string) {\n const el = (filterRefs.value as Record<string, any>)[key]\n if (!el) return\n\n if (typeof el.focusAndOpen === 'function') el.focusAndOpen()\n else if (typeof el.focus === 'function') el.focus()\n}\n\nfunction onHistoryLoad(loaded: Record<string, any>) {\n const next: Record<string, any> = { ...values.value }\n for (const item of props.items) {\n if (item.type === 'separator') continue\n if (item.key in loaded) next[item.key] = loaded[item.key] ?? null\n }\n values.value = next\n emitChange()\n}\n\ndefineExpose({ clearFilter, focusFilter })\n\nfunction handleFilterKeydown(event: KeyboardEvent) {\n if (event.key !== 'Enter') return\n\n // Allow Enter in textarea for line breaks\n const target = event.target as HTMLElement\n if (target?.tagName === 'TEXTAREA') return\n\n event.preventDefault()\n confirm()\n}\n\nfunction handleDropdownFilterInput(item: FilterItem, text: string) {\n if (item.onInnerSearch) item.onInnerSearch(text)\n}\n</script>\n\n<template>\n <Sidebar :open=\"open\" title=\"Szűrők\" :position=\"position\" @close=\"emit('close')\">\n <div class=\"data-filters\" @keydown=\"handleFilterKeydown\">\n <div\n v-for=\"item in items\"\n :key=\"item.key\"\n class=\"data-filters__field\"\n :class=\"{ 'data-filters__field--full': item.fullWidth || item.type === 'separator' }\"\n >\n <hr v-if=\"item.type === 'separator'\" class=\"data-filters__separator\" />\n <template v-else-if=\"item.type === 'checkbox'\">\n <Checkbox\n :ref=\"(el: any) => setFilterRef(item.key, el)\"\n :model-value=\"(values[item.key] as boolean) ?? false\"\n :label=\"item.label ?? item.key\"\n @update:model-value=\"(val) => update(item, val)\"\n v-bind=\"item.config\"\n />\n </template>\n <template v-else-if=\"['text', 'number', 'textarea'].includes(item.type)\">\n <TextInput\n :type=\"item.type as TextInputType\"\n :ref=\"(el: any) => setFilterRef(item.key, el)\"\n :id=\"`df-${item.key}`\"\n :model-value=\"(values[item.key] as string) ?? ''\"\n :label=\"item.label ?? item.key\"\n :placeholder=\"item.placeholder\"\n @update:model-value=\"(val) => update(item, val || null)\"\n v-bind=\"item.config\"\n />\n </template>\n <template v-else-if=\"item.type === 'date' || item.type === 'datetime'\">\n <label class=\"c-label\" :for=\"`df-${item.key}`\">{{ item.label ?? item.key }}</label>\n <DatePicker\n :ref=\"(el: any) => setFilterRef(item.key, el)\"\n :id=\"`df-${item.key}`\"\n :model-value=\"(values[item.key] as PickedDate) ?? null\"\n :config=\"buildDatePickerConfig(item)\"\n @update:model-value=\"(val) => update(item, val)\"\n />\n </template>\n <template v-else-if=\"item.type === 'daterange' || item.type === 'datetimerange'\">\n <span class=\"c-label\">{{ item.label ?? item.key }}</span>\n <DateRangePicker\n :ref=\"(el: any) => setFilterRef(item.key, el)\"\n :model-value=\"(values[item.key] as PickedUtcRange) ?? null\"\n :config=\"buildDateRangePickerConfig(item)\"\n @update:model-value=\"(val) => update(item, val)\"\n />\n </template>\n <template v-else-if=\"item.type === 'dropdown'\">\n <span class=\"c-label\">{{ item.label ?? item.key }}</span>\n <DropdownSelect\n :ref=\"(el: any) => setFilterRef(item.key, el)\"\n :model-value=\"(values[item.key] as DropdownOption | DropdownOption[] | null) ?? null\"\n :options=\"item.options ?? []\"\n :config=\"{\n ...(item.config ?? {}),\n placeholder: item.placeholder ?? 'Válassz...',\n clearable: true,\n filterable: true,\n }\"\n @filter-input=\"handleDropdownFilterInput(item, $event)\"\n @update:model-value=\"(val) => update(item, val)\"\n />\n </template>\n </div>\n </div>\n <div class=\"data-filters__footer\">\n <Button\n icon=\"fa-solid fa-trash-can\"\n :disabled=\"!hasActiveFilters\"\n label=\"Szűrők törlése\"\n aria-label=\"Szűrők törlése\"\n size=\"small\"\n @click=\"clearAll\"\n />\n <Button label=\"Szűrés\" aria-label=\"Szűrés\" type=\"success\" @click=\"confirm\" />\n </div>\n <template v-if=\"historyEnabled\">\n <hr class=\"separator my-3\" />\n <FiltersHistory\n :items=\"items\"\n :values=\"values\"\n :storage-key=\"storageKey\"\n @load=\"onHistoryLoad\"\n />\n </template>\n </Sidebar>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/data-filters.scss\"></style>\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import './
|
|
1
|
+
import './styles/components/data-table/data-filters.scss_vue_type_style_index_0_src_true_lang.css';
|
|
2
2
|
import e from "./admins-components91.js";
|
|
3
3
|
/* empty css */
|
|
4
4
|
//#region src/components/data-table/DataFilters.vue
|
|
@@ -2,7 +2,7 @@ import { formatDate as e } from "./admins-components3.js";
|
|
|
2
2
|
import { displayFilterValue as t } from "./admins-components86.js";
|
|
3
3
|
import { Fragment as n, computed as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, defineComponent as s, normalizeClass as c, openBlock as l, renderList as u, toDisplayString as d, unref as f } from "vue";
|
|
4
4
|
//#region src/components/data-table/FilterTags.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
-
var p = { class: "filter-tags ac-component gap-1" }, m = ["onClick"], h = { class: "filter-tags__key" }, g = ["title"], _ = { class: "filter-tags__value-row" }, v = { class: "filter-tags__value-row" }, y = ["title"], b = ["title"], x = ["onClick"], S =
|
|
5
|
+
var p = { class: "filter-tags ac-component gap-1" }, m = ["onClick"], h = { class: "filter-tags__key" }, g = ["title"], _ = { class: "filter-tags__value-row" }, v = { class: "filter-tags__value-row" }, y = ["title"], b = ["title"], x = ["onClick"], S = /*@__PURE__*/ s({
|
|
6
6
|
__name: "FilterTags",
|
|
7
7
|
props: {
|
|
8
8
|
filters: {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components94.js","names":[],"sources":["../src/components/data-table/FilterTags.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport type { FilterItem } from '@/components/data-table/DataFilters.vue'\nimport { displayFilterValue } from '@/utils/filterDisplay'\nimport { formatDate } from '@/utils/date'\n\nconst props = defineProps<{\n filters: Record<string, any>\n items: FilterItem[]\n itemClass?: string\n compact?: boolean\n}>()\nconst emit = defineEmits<{\n remove: [key: string]\n openFilter: [key: string]\n}>()\n\nfunction isRange(key: string): boolean {\n const item = getFilterItem(key)\n return item?.type === 'daterange' || item?.type === 'datetimerange'\n}\n\nfunction getFilterItem(key: string): FilterItem | undefined {\n return props.items.find((i) => i.key === key)\n}\n\nfunction getLabel(key: string): string {\n return getFilterItem(key)?.label ?? key\n}\n\ninterface DateRangeParts {\n from: string\n to: string\n title: string\n}\n\nfunction getDateRangeParts(key: string, value: any): DateRangeParts | null {\n const item = getFilterItem(key)\n if (!item || (item.type !== 'daterange' && item.type !== 'datetimerange')) return null\n if (!value || typeof value !== 'object') return null\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, title: `${from} - ${to}` }\n}\n\nfunction getParts(key: string): DateRangeParts | null {\n return getDateRangeParts(key, props.filters[key])\n}\n\nconst entries = computed(() =>\n Object.entries(props.filters).filter(\n ([, value]) => value != null && value !== '',\n ),\n)\n</script>\n\n<template>\n <div class=\"filter-tags ac-component gap-1\">\n <template v-for=\"([key, value]) in entries\" :key=\"key\">\n <span\n v-if=\"value != null && value !== ''\"\n class=\"filter-tags__tag c-chip\"\n :class=\"[\n itemClass,\n getFilterItem(key)?.displayClass,\n {\n 'filter-tags__tag--daterange':\n compact &&\n (getFilterItem(key)?.type === 'daterange' ||\n getFilterItem(key)?.type === 'datetimerange'),\n },\n ]\"\n >\n <span\n class=\"filter-tags__content align-center-fix\"\n @click=\"emit('openFilter', String(key))\"\n >\n <span class=\"filter-tags__key\">{{ getLabel(key) }}:</span>\n\n <span\n v-if=\"compact && isRange(key) && getParts(key)\"\n class=\"filter-tags__value\"\n :title=\"getParts(key)!.title\"\n >\n <span class=\"filter-tags__value-row\">{{ getParts(key)!.from }}</span>\n <span class=\"filter-tags__value-row\">{{ getParts(key)!.to }}</span>\n </span>\n\n <span\n v-else-if=\"isRange(key) && getParts(key)\"\n class=\"filter-tags__value\"\n :title=\"getParts(key)!.title\"\n >{{ getParts(key)!.from }} - {{ getParts(key)!.to }}</span>\n\n <span\n v-else\n class=\"filter-tags__value\"\n :title=\"displayFilterValue(items, key, value)\"\n >{{ displayFilterValue(items, key, value) }}</span>\n </span>\n\n <button\n type=\"button\"\n class=\"filter-tags__remove\"\n @click=\"emit('remove', String(key))\"\n aria-label=\"Remove filter\"\n >\n <i class=\"fa-solid fa-fw fa-xmark\"></i>\n </button>\n </span>\n </template>\n </div>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/filter-tags.scss\"></style>\n"],"mappings":";;;;;;;;;;;;;;EAMA,IAAM,IAAQ,GAMR,IAAO;EAKb,SAAS,EAAQ,GAAsB;GACrC,IAAM,IAAO,EAAc,CAAG;GAC9B,OAAO,GAAM,SAAS,eAAe,GAAM,SAAS;EACtD;EAEA,SAAS,EAAc,GAAqC;GAC1D,OAAO,EAAM,MAAM,MAAM,MAAM,EAAE,QAAQ,CAAG;EAC9C;EAEA,SAAS,EAAS,GAAqB;GACrC,OAAO,EAAc,CAAG,
|
|
1
|
+
{"version":3,"file":"admins-components94.js","names":[],"sources":["../src/components/data-table/FilterTags.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport type { FilterItem } from '@/components/data-table/DataFilters.vue'\nimport { displayFilterValue } from '@/utils/filterDisplay'\nimport { formatDate } from '@/utils/date'\n\nconst props = defineProps<{\n filters: Record<string, any>\n items: FilterItem[]\n itemClass?: string\n compact?: boolean\n}>()\nconst emit = defineEmits<{\n remove: [key: string]\n openFilter: [key: string]\n}>()\n\nfunction isRange(key: string): boolean {\n const item = getFilterItem(key)\n return item?.type === 'daterange' || item?.type === 'datetimerange'\n}\n\nfunction getFilterItem(key: string): FilterItem | undefined {\n return props.items.find((i) => i.key === key)\n}\n\nfunction getLabel(key: string): string {\n return getFilterItem(key)?.label ?? key\n}\n\ninterface DateRangeParts {\n from: string\n to: string\n title: string\n}\n\nfunction getDateRangeParts(key: string, value: any): DateRangeParts | null {\n const item = getFilterItem(key)\n if (!item || (item.type !== 'daterange' && item.type !== 'datetimerange')) return null\n if (!value || typeof value !== 'object') return null\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, title: `${from} - ${to}` }\n}\n\nfunction getParts(key: string): DateRangeParts | null {\n return getDateRangeParts(key, props.filters[key])\n}\n\nconst entries = computed(() =>\n Object.entries(props.filters).filter(\n ([, value]) => value != null && value !== '',\n ),\n)\n</script>\n\n<template>\n <div class=\"filter-tags ac-component gap-1\">\n <template v-for=\"([key, value]) in entries\" :key=\"key\">\n <span\n v-if=\"value != null && value !== ''\"\n class=\"filter-tags__tag c-chip\"\n :class=\"[\n itemClass,\n getFilterItem(key)?.displayClass,\n {\n 'filter-tags__tag--daterange':\n compact &&\n (getFilterItem(key)?.type === 'daterange' ||\n getFilterItem(key)?.type === 'datetimerange'),\n },\n ]\"\n >\n <span\n class=\"filter-tags__content align-center-fix\"\n @click=\"emit('openFilter', String(key))\"\n >\n <span class=\"filter-tags__key\">{{ getLabel(key) }}:</span>\n\n <span\n v-if=\"compact && isRange(key) && getParts(key)\"\n class=\"filter-tags__value\"\n :title=\"getParts(key)!.title\"\n >\n <span class=\"filter-tags__value-row\">{{ getParts(key)!.from }}</span>\n <span class=\"filter-tags__value-row\">{{ getParts(key)!.to }}</span>\n </span>\n\n <span\n v-else-if=\"isRange(key) && getParts(key)\"\n class=\"filter-tags__value\"\n :title=\"getParts(key)!.title\"\n >{{ getParts(key)!.from }} - {{ getParts(key)!.to }}</span>\n\n <span\n v-else\n class=\"filter-tags__value\"\n :title=\"displayFilterValue(items, key, value)\"\n >{{ displayFilterValue(items, key, value) }}</span>\n </span>\n\n <button\n type=\"button\"\n class=\"filter-tags__remove\"\n @click=\"emit('remove', String(key))\"\n aria-label=\"Remove filter\"\n >\n <i class=\"fa-solid fa-fw fa-xmark\"></i>\n </button>\n </span>\n </template>\n </div>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/filter-tags.scss\"></style>\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import './
|
|
1
|
+
import './styles/components/data-table/filter-tags.scss_vue_type_style_index_0_src_true_lang.css';
|
|
2
2
|
import e from "./admins-components94.js";
|
|
3
3
|
/* empty css */
|
|
4
4
|
//#region src/components/data-table/FilterTags.vue
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import e from "./admins-components34.js";
|
|
2
2
|
import { createBlock as t, createElementVNode as n, createTextVNode as r, defineComponent as i, openBlock as a, ref as o, withCtx as s, withModifiers as c } from "vue";
|
|
3
3
|
//#region src/components/data-table/DataListGuide.vue?vue&type=script&setup=true&lang.ts
|
|
4
|
-
var l = { class: "dl-guide-section" }, u = { class: "dl-guide-toc m-0" }, d = { class: "m-0" }, f = { class: "m-0" }, p = { class: "m-0" }, m = { class: "m-0" }, h = { class: "m-0" }, g = { class: "m-0" }, _ =
|
|
4
|
+
var l = { class: "dl-guide-section" }, u = { class: "dl-guide-toc m-0" }, d = { class: "m-0" }, f = { class: "m-0" }, p = { class: "m-0" }, m = { class: "m-0" }, h = { class: "m-0" }, g = { class: "m-0" }, _ = /*@__PURE__*/ i({
|
|
5
5
|
__name: "DataListGuide",
|
|
6
6
|
props: {
|
|
7
7
|
open: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components97.js","names":[],"sources":["../src/components/data-table/DataListGuide.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport Sidebar, { type SidebarPosition } from '@/components/Sidebar.vue'\n\nwithDefaults(\n defineProps<{\n open?: boolean\n position?: SidebarPosition\n }>(),\n {\n open: false,\n position: 'right',\n },\n)\n\nconst emit = defineEmits<{\n close: []\n}>()\n\nconst root = ref<HTMLElement | null>(null)\n\nfunction scrollToSection(target: string | null | undefined) {\n if (!target || !root.value) return\n const el = root.value.querySelector(`#${target}`)\n if (el) el.scrollIntoView({ behavior: 'smooth', block: 'start' })\n}\n</script>\n\n<template>\n <Sidebar :open=\"open\" title=\"Súgó\" :position=\"position\" @close=\"emit('close')\">\n <div ref=\"root\" class=\"ac-component dl-guide\">\n <section class=\"dl-guide-section\">\n <h3 class=\"dl-guide-title\">Tartalom</h3>\n <ul class=\"dl-guide-toc m-0\">\n <li>\n <a\n href=\"#\"\n class=\"dl-guide-toc-link dl-guide-toc-link--primary\"\n @click.prevent=\"scrollToSection('layout')\"\n >Megjelenés testreszabása</a\n >\n <ul>\n <li class=\"m-0\">\n <a href=\"#\" class=\"dl-guide-toc-link\" @click.prevent=\"scrollToSection('view')\"\n >Nézet</a\n >\n </li>\n <li class=\"m-0\">\n <a href=\"#\" class=\"dl-guide-toc-link\" @click.prevent=\"scrollToSection('appearance')\"\n >Megjelenés</a\n >\n </li>\n <li class=\"m-0\">\n <a href=\"#\" class=\"dl-guide-toc-link\" @click.prevent=\"scrollToSection('columns')\"\n >Oszlopok láthatósága és sorrendje</a\n >\n </li>\n <li class=\"m-0\">\n <a href=\"#\" class=\"dl-guide-toc-link\" @click.prevent=\"scrollToSection('reset')\"\n >Beállítások visszaállítása</a\n >\n </li>\n </ul>\n </li>\n <li>\n <a\n href=\"#\"\n class=\"dl-guide-toc-link dl-guide-toc-link--primary\"\n @click.prevent=\"scrollToSection('filters')\"\n >Szűrők</a\n >\n <ul>\n <li class=\"m-0\">\n <a\n href=\"#\"\n class=\"dl-guide-toc-link\"\n @click.prevent=\"scrollToSection('exact-match')\"\n >Pontos egyezés</a\n >\n </li>\n <li class=\"m-0\">\n <a\n href=\"#\"\n class=\"dl-guide-toc-link\"\n @click.prevent=\"scrollToSection('save-filters')\"\n >Szűrések mentése</a\n >\n </li>\n </ul>\n </li>\n </ul>\n </section>\n <hr class=\"separator\" />\n <section id=\"layout\" class=\"dl-guide-section\">\n <h3 class=\"dl-guide-title\">A táblázat megjelenésének testreszabása</h3>\n <p>\n A <strong><i class=\"fa-solid fa-gear\"></i> Beállítások</strong> gombra kattintva lehetőség\n van a tábla megjelenésének testreszabására. A beállítások az adott táblához kapcsolódóan\n helyi tárolóban kerülnek mentésre, így ugyanazon eszközön és böngészőben megmaradnak a\n következő látogatáskor is.\n </p>\n <hr class=\"separator\" />\n <h4 id=\"view\" class=\"dl-guide-subtitle\">Nézet</h4>\n <ul>\n <li>\n <i class=\"fa-solid fa-display mr-1\"></i>\n <strong>Kijelző méretéhez igazodó</strong> (alapértelmezett): A kijelző méretétől\n függően automatikusan választ a táblázat és a kártyás nézet között.\n </li>\n <li>\n <i class=\"fa-solid fa-table-list mr-1\"></i> <strong>Táblázat:</strong> klasszikus\n táblázatos megjelenés\n </li>\n <li>\n <i class=\"fa-solid fa-list mr-1\"></i> <strong>Kártyák:</strong> sorok kártyás\n megjelenítése, a kártya fejlécére kattintva lenyithatóak a részletes adatok.\n </li>\n </ul>\n <hr class=\"separator\" />\n <h4 id=\"appearance\" class=\"dl-guide-subtitle\">Megjelenés</h4>\n <ul>\n <li>\n <strong>Kompakt:</strong> A sorok közti távolság és a belső margók csökkentésével több\n adat jeleníthető meg egyszerre.\n </li>\n <li>\n <strong>Sávos (striped):</strong> Csak a táblázatos nézetben elérhető, minden második\n sor enyhe szürke hátteret kap, ezzel megkönnyítve a sorok követését.\n </li>\n </ul>\n <hr class=\"separator\" />\n <h4 id=\"columns\" class=\"dl-guide-subtitle\">Oszlopok láthatósága és sorrendje</h4>\n <ul>\n <li>\n <strong>Kártya fejléc:</strong> kártyás nézet esetén a fejlécben megjelenő mezők\n láthatósága és sorrendje.\n </li>\n <li>\n <strong>Oszlopok:</strong> táblázat nézetben az oszlopok láthatósága és sorrendje.\n </li>\n </ul>\n <p>\n A sorrend módosítása történhet az <i class=\"fa-solid fa-grip-vertical\"></i> ikonon\n <strong class=\"nowrap\">drag-n-drop</strong>al vagy az ikonra kattinva a megjelenő nyilak\n segítségével.\n </p>\n <hr class=\"separator\" />\n\n <h4 id=\"reset\" class=\"dl-guide-subtitle\">Beállítások visszaállítása</h4>\n <p>\n Az\n <strong>Alapértelmezés visszaállítása</strong> gomb visszaállítja a gyári értékeket, és\n törli a helyi tárolóban elmentett beállításokat.\n </p>\n </section>\n <hr class=\"separator\" />\n <section id=\"filters\" class=\"dl-guide-section\">\n <h3 class=\"dl-guide-title\">Szűrők</h3>\n <h4 id=\"exact-match\" class=\"dl-guide-subtitle\">Pontos egyezés</h4>\n <p>\n Amennyiben a táblázhoz tartozik szabad szavas keresés, a pontos egyezés opciót használva\n csak azokat a találatokat kapjuk, amelyek teljes mértékben megfelelnek a keresett\n kifejezésnek. Pl. alap esetben <strong><em>\"alma\"</em></strong> keresésre a\n <strong><em>\"piros alma\"</em></strong\n >, <strong><em>\"almafa\"</em></strong\n >, <strong><em>\"alma\"</em></strong> vagy <strong><em>\"almás pite\"</em></strong> is találat\n lehet, míg pontos egyezés esetén csak az <strong><em>\"alma\"</em></strong> található meg.\n </p>\n <hr class=\"separator\" />\n <h4 id=\"save-filters\" class=\"dl-guide-subtitle\">Szűrések mentése</h4>\n <p>\n A <strong><i class=\"fa-solid fa-sliders\"></i> Mentett szűrők</strong>re kattintva\n lehetőség van elmenteni az aktuális szűrési feltételeket, így később egyetlen kattintással\n előhívhatja azokat.\n </p>\n <p>\n A szűrési feltételek megadása után a\n <strong><i class=\"fa-solid fa-bookmark fa-sm\"></i> Mentés</strong> gomb megnyomásával\n elmenthető a szűrőkészlet. Az elnevezés megadása nem kötelező, csak saját magadnak szól a\n későbbi könnyebb azonosítás érdekében.\n </p>\n <p>\n Ezt követően a szűrőkészlet a mentés dátumával és elnevezésével jelenik meg a mentett\n szűrők között. Ezekre kattintva lenyithatók a szűrőkészlet részletei.\n </p>\n <p>A mentett készlet jobb oldalán található 4 ikon:</p>\n <ul>\n <li>\n <i class=\"fa-regular fa-star\"></i>: ikonra kattintva megjelölhető a készlet\n alapértelmezettként. Ekkor az oldal következő betöltésekor automatikusan az itt megadott\n szűrők lesznek alkalmazva.\n </li>\n\n <li>\n <i class=\"fa-solid fa-check\"></i>: ikonra kattintva tölthetők be a készletek.\n Megnyomásakor a szűrési feltételek automatikusan kitöltődnek az elmentett értékekkel.\n </li>\n\n <li>\n <span class=\"c-indicator\">?</span>: azt mutatja, hogy hány szűrési feltétel van a\n készletben.\n </li>\n <li>\n <i class=\"fa-solid fa-xmark\"></i>: a mentett szűrőkészlet törlése (a művelet\n megerősítést kér).\n </li>\n </ul>\n <p class=\"dl-guide-note\">Táblázatonként maximum <strong>20</strong> készlet menthető el.</p>\n <p>\n A lista alján található \"Összes törlése\" gombbal törölhető a táblához tartozó minden\n elmentett szűrőkészlet.\n </p>\n\n <p class=\"dl-guide-note\">\n <strong>Fontos:</strong> a beállítások és a szűrők is csak böngészőben (localStorage)\n kerülnek tárolásra, ezért más eszközön vagy böngészőben nem lesznek elérhetőek.\n </p>\n </section>\n </div>\n </Sidebar>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/data-list-guide.scss\"></style>\n"],"mappings":";;;;;;;;;;;;;;EAeA,IAAM,IAAO,GAIP,IAAO,EAAwB,IAAI;EAEzC,SAAS,EAAgB,GAAmC;GAC1D,IAAI,CAAC,KAAU,CAAC,EAAK,OAAO;GAC5B,IAAM,IAAK,EAAK,MAAM,cAAc,IAAI,GAAQ;GAChD,AAAI,KAAI,EAAG,eAAe;IAAE,UAAU;IAAU,OAAO;GAAQ,CAAC;EAClE;yBAIE,EA8LU,GAAA;GA9LA,MAAM,EAAA;GAAM,OAAM;GAAQ,UAAU,EAAA;GAAW,SAAK,AAAA,EAAA,QAAA,MAAE,EAAI,OAAA;;oBA6L5D,CA5LN,EA4LM,OAAA;aA5LG;IAAJ,KAAI;IAAO,OAAM;;IACpB,EA4DU,WA5DV,GA4DU,CAAA,AAAA,EAAA,OA3DR,EAAwC,MAAA,EAApC,OAAM,iBAAgB,GAAC,YAAQ,EAAA,GACnC,EAyDK,MAzDL,GAyDK,CAxDH,EA6BK,MAAA,MAAA,CA5BH,EAKC,KAAA;KAJC,MAAK;KACL,OAAM;KACL,SAAK,AAAA,EAAA,OAAA,GAAA,MAAU,EAAe,QAAA,GAAA,CAAA,SAAA,CAAA;OAC9B,0BAAwB,GAE3B,EAqBK,MAAA,MAAA;KApBH,EAIK,MAJL,GAIK,CAHH,EAEC,KAAA;MAFE,MAAK;MAAI,OAAM;MAAqB,SAAK,AAAA,EAAA,OAAA,GAAA,MAAU,EAAe,MAAA,GAAA,CAAA,SAAA,CAAA;QAClE,OAAK,CAAA,CAAA;KAGV,EAIK,MAJL,GAIK,CAHH,EAEC,KAAA;MAFE,MAAK;MAAI,OAAM;MAAqB,SAAK,AAAA,EAAA,OAAA,GAAA,MAAU,EAAe,YAAA,GAAA,CAAA,SAAA,CAAA;QAClE,YAAU,CAAA,CAAA;KAGf,EAIK,MAJL,GAIK,CAHH,EAEC,KAAA;MAFE,MAAK;MAAI,OAAM;MAAqB,SAAK,AAAA,EAAA,OAAA,GAAA,MAAU,EAAe,SAAA,GAAA,CAAA,SAAA,CAAA;QAClE,mCAAiC,CAAA,CAAA;KAGtC,EAIK,MAJL,GAIK,CAHH,EAEC,KAAA;MAFE,MAAK;MAAI,OAAM;MAAqB,SAAK,AAAA,EAAA,OAAA,GAAA,MAAU,EAAe,OAAA,GAAA,CAAA,SAAA,CAAA;QAClE,4BAA0B,CAAA,CAAA;UAKnC,EAyBK,MAAA,MAAA,CAxBH,EAKC,KAAA;KAJC,MAAK;KACL,OAAM;KACL,SAAK,AAAA,EAAA,OAAA,GAAA,MAAU,EAAe,SAAA,GAAA,CAAA,SAAA,CAAA;OAC9B,QAAM,GAET,EAiBK,MAAA,MAAA,CAhBH,EAOK,MAPL,GAOK,CANH,EAKC,KAAA;KAJC,MAAK;KACL,OAAM;KACL,SAAK,AAAA,EAAA,OAAA,GAAA,MAAU,EAAe,aAAA,GAAA,CAAA,SAAA,CAAA;OAC9B,gBAAc,CAAA,CAAA,GAGnB,EAOK,MAPL,GAOK,CANH,EAKC,KAAA;KAJC,MAAK;KACL,OAAM;KACL,SAAK,AAAA,EAAA,OAAA,GAAA,MAAU,EAAe,cAAA,GAAA,CAAA,SAAA,CAAA;OAC9B,kBAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;cAO7B,EAAwB,MAAA,EAApB,OAAM,YAAW,GAAA,MAAA,EAAA;cACrB,EA6DU,WAAA;KA7DD,IAAG;KAAS,OAAM;;KACzB,EAAuE,MAAA,EAAnE,OAAM,iBAAgB,GAAC,yCAAuC;KAClE,EAKI,KAAA,MAAA;QALD,KACC;MAAA,EAA6D,UAAA,MAAA,CAArD,EAAgC,KAAA,EAA7B,OAAM,mBAAkB,CAAA,GAAA,EAAK,cAAY,CAAA,CAAA;QAAS,yOAIjE;;KACA,EAAwB,MAAA,EAApB,OAAM,YAAW,CAAA;KACrB,EAAkD,MAAA;MAA9C,IAAG;MAAO,OAAM;QAAoB,OAAK;KAC7C,EAcK,MAAA,MAAA;MAbH,EAIK,MAAA,MAAA;OAHH,EAAwC,KAAA,EAArC,OAAM,2BAA0B,CAAA;OACnC,EAA0C,UAAA,MAAlC,2BAAyB;SAAS,8GAE5C;;MACA,EAGK,MAAA,MAAA;OAFH,EAA2C,KAAA,EAAxC,OAAM,8BAA6B,CAAA;;OAAM,EAA0B,UAAA,MAAlB,WAAS;SAAS,oCAExE;;MACA,EAGK,MAAA,MAAA;OAFH,EAAqC,KAAA,EAAlC,OAAM,wBAAuB,CAAA;;OAAM,EAAyB,UAAA,MAAjB,UAAQ;SAAS,8FAEjE;;;KAEF,EAAwB,MAAA,EAApB,OAAM,YAAW,CAAA;KACrB,EAA6D,MAAA;MAAzD,IAAG;MAAa,OAAM;QAAoB,YAAU;KACxD,EASK,MAAA,MAAA,CARH,EAGK,MAAA,MAAA,CAFH,EAAyB,UAAA,MAAjB,UAAQ,GAAA,EAAS,gGAE3B,CAAA,CAAA,GACA,EAGK,MAAA,MAAA,CAFH,EAAiC,UAAA,MAAzB,kBAAgB,GAAA,EAAS,4HAEnC,CAAA,CAAA,CAAA,CAAA;KAEF,EAAwB,MAAA,EAApB,OAAM,YAAW,CAAA;KACrB,EAAiF,MAAA;MAA7E,IAAG;MAAU,OAAM;QAAoB,mCAAiC;KAC5E,EAQK,MAAA,MAAA,CAPH,EAGK,MAAA,MAAA,CAFH,EAA+B,UAAA,MAAvB,gBAAc,GAAA,EAAS,8EAEjC,CAAA,CAAA,GACA,EAEK,MAAA,MAAA,CADH,EAA0B,UAAA,MAAlB,WAAS,GAAA,EAAS,2DAC5B,CAAA,CAAA,CAAA,CAAA;KAEF,EAII,KAAA,MAAA;QAJD,qCACiC;MAAA,EAAyC,KAAA,EAAtC,OAAM,4BAA2B,CAAA;QAAK,UAC3E;MAAA,EAA2C,UAAA,EAAnC,OAAM,SAAQ,GAAC,aAAW;QAAS,8DAE7C;;KACA,EAAwB,MAAA,EAApB,OAAM,YAAW,CAAA;KAErB,EAAwE,MAAA;MAApE,IAAG;MAAQ,OAAM;QAAoB,4BAA0B;KACnE,EAII,KAAA,MAAA;QAJD,MAED;MAAA,EAA8C,UAAA,MAAtC,+BAA6B;QAAS,6FAEhD;;;cAEF,EAAwB,MAAA,EAApB,OAAM,YAAW,GAAA,MAAA,EAAA;cACrB,EA6DU,WAAA;KA7DD,IAAG;KAAU,OAAM;;KAC1B,EAAsC,MAAA,EAAlC,OAAM,iBAAgB,GAAC,QAAM;KACjC,EAAkE,MAAA;MAA9D,IAAG;MAAc,OAAM;QAAoB,gBAAc;KAC7D,EAQI,KAAA,MAAA;QARD,6MAG8B;MAAA,EAAgC,UAAA,MAAA,CAAxB,EAAe,MAAA,MAAX,UAAM,CAAA,CAAA;QAAc,eAC/D;MAAA,EACC,UAAA,MAAA,CADO,EAAqB,MAAA,MAAjB,gBAAY,CAAA,CAAA;QACvB,IAAE;MAAA,EACF,UAAA,MAAA,CADU,EAAiB,MAAA,MAAb,YAAQ,CAAA,CAAA;QACtB,IAAE;MAAA,EAAgC,UAAA,MAAA,CAAxB,EAAe,MAAA,MAAX,UAAM,CAAA,CAAA;QAAc,QAAM;MAAA,EAAsC,UAAA,MAAA,CAA9B,EAAqB,MAAA,MAAjB,gBAAY,CAAA,CAAA;QAAc,uDACtC;MAAA,EAAgC,UAAA,MAAA,CAAxB,EAAe,MAAA,MAAX,UAAM,CAAA,CAAA;QAAc,kBAC3E;;KACA,EAAwB,MAAA,EAApB,OAAM,YAAW,CAAA;KACrB,EAAqE,MAAA;MAAjE,IAAG;MAAe,OAAM;QAAoB,kBAAgB;KAChE,EAII,KAAA,MAAA;QAJD,KACC;MAAA,EAAmE,UAAA,MAAA,CAA3D,EAAmC,KAAA,EAAhC,OAAM,sBAAqB,CAAA,GAAA,EAAK,iBAAe,CAAA,CAAA;QAAS,8HAGvE;;KACA,EAKI,KAAA,MAAA;QALD,wCAED;MAAA,EAAkE,UAAA,MAAA,CAA1D,EAA0C,KAAA,EAAvC,OAAM,6BAA4B,CAAA,GAAA,EAAK,SAAO,CAAA,CAAA;QAAS,uJAGpE;;KACA,EAGI,KAAA,MAHD,+JAGH;KACA,EAAuD,KAAA,MAApD,kDAAgD;KACnD,EAoBK,MAAA,MAAA;MAnBH,EAIK,MAAA,MAAA,CAHH,EAAkC,KAAA,EAA/B,OAAM,qBAAoB,CAAA,GAAA,EAAK,gKAGpC,CAAA,CAAA;MAEA,EAGK,MAAA,MAAA,CAFH,EAAiC,KAAA,EAA9B,OAAM,oBAAmB,CAAA,GAAA,EAAK,qIAEnC,CAAA,CAAA;MAEA,EAGK,MAAA,MAAA,CAFH,EAAkC,QAAA,EAA5B,OAAM,cAAa,GAAC,GAAC,GAAA,EAAO,8DAEpC,CAAA,CAAA;MACA,EAGK,MAAA,MAAA,CAFH,EAAiC,KAAA,EAA9B,OAAM,oBAAmB,CAAA,GAAA,EAAK,iEAEnC,CAAA,CAAA;;KAEF,EAA4F,KAAA,EAAzF,OAAM,gBAAe,GAAA;QAAC,yBAAuB;MAAA,EAAmB,UAAA,MAAX,IAAE;QAAS,uBAAqB;;KACxF,EAGI,KAAA,MAHD,kHAGH;KAEA,EAGI,KAAA,EAHD,OAAM,gBAAe,GAAA,CACtB,EAAwB,UAAA,MAAhB,SAAO,GAAA,EAAS,gJAE1B,CAAA,CAAA"}
|
|
1
|
+
{"version":3,"file":"admins-components97.js","names":[],"sources":["../src/components/data-table/DataListGuide.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport Sidebar, { type SidebarPosition } from '@/components/Sidebar.vue'\n\nwithDefaults(\n defineProps<{\n open?: boolean\n position?: SidebarPosition\n }>(),\n {\n open: false,\n position: 'right',\n },\n)\n\nconst emit = defineEmits<{\n close: []\n}>()\n\nconst root = ref<HTMLElement | null>(null)\n\nfunction scrollToSection(target: string | null | undefined) {\n if (!target || !root.value) return\n const el = root.value.querySelector(`#${target}`)\n if (el) el.scrollIntoView({ behavior: 'smooth', block: 'start' })\n}\n</script>\n\n<template>\n <Sidebar :open=\"open\" title=\"Súgó\" :position=\"position\" @close=\"emit('close')\">\n <div ref=\"root\" class=\"ac-component dl-guide\">\n <section class=\"dl-guide-section\">\n <h3 class=\"dl-guide-title\">Tartalom</h3>\n <ul class=\"dl-guide-toc m-0\">\n <li>\n <a\n href=\"#\"\n class=\"dl-guide-toc-link dl-guide-toc-link--primary\"\n @click.prevent=\"scrollToSection('layout')\"\n >Megjelenés testreszabása</a\n >\n <ul>\n <li class=\"m-0\">\n <a href=\"#\" class=\"dl-guide-toc-link\" @click.prevent=\"scrollToSection('view')\"\n >Nézet</a\n >\n </li>\n <li class=\"m-0\">\n <a href=\"#\" class=\"dl-guide-toc-link\" @click.prevent=\"scrollToSection('appearance')\"\n >Megjelenés</a\n >\n </li>\n <li class=\"m-0\">\n <a href=\"#\" class=\"dl-guide-toc-link\" @click.prevent=\"scrollToSection('columns')\"\n >Oszlopok láthatósága és sorrendje</a\n >\n </li>\n <li class=\"m-0\">\n <a href=\"#\" class=\"dl-guide-toc-link\" @click.prevent=\"scrollToSection('reset')\"\n >Beállítások visszaállítása</a\n >\n </li>\n </ul>\n </li>\n <li>\n <a\n href=\"#\"\n class=\"dl-guide-toc-link dl-guide-toc-link--primary\"\n @click.prevent=\"scrollToSection('filters')\"\n >Szűrők</a\n >\n <ul>\n <li class=\"m-0\">\n <a\n href=\"#\"\n class=\"dl-guide-toc-link\"\n @click.prevent=\"scrollToSection('exact-match')\"\n >Pontos egyezés</a\n >\n </li>\n <li class=\"m-0\">\n <a\n href=\"#\"\n class=\"dl-guide-toc-link\"\n @click.prevent=\"scrollToSection('save-filters')\"\n >Szűrések mentése</a\n >\n </li>\n </ul>\n </li>\n </ul>\n </section>\n <hr class=\"separator\" />\n <section id=\"layout\" class=\"dl-guide-section\">\n <h3 class=\"dl-guide-title\">A táblázat megjelenésének testreszabása</h3>\n <p>\n A <strong><i class=\"fa-solid fa-gear\"></i> Beállítások</strong> gombra kattintva lehetőség\n van a tábla megjelenésének testreszabására. A beállítások az adott táblához kapcsolódóan\n helyi tárolóban kerülnek mentésre, így ugyanazon eszközön és böngészőben megmaradnak a\n következő látogatáskor is.\n </p>\n <hr class=\"separator\" />\n <h4 id=\"view\" class=\"dl-guide-subtitle\">Nézet</h4>\n <ul>\n <li>\n <i class=\"fa-solid fa-display mr-1\"></i>\n <strong>Kijelző méretéhez igazodó</strong> (alapértelmezett): A kijelző méretétől\n függően automatikusan választ a táblázat és a kártyás nézet között.\n </li>\n <li>\n <i class=\"fa-solid fa-table-list mr-1\"></i> <strong>Táblázat:</strong> klasszikus\n táblázatos megjelenés\n </li>\n <li>\n <i class=\"fa-solid fa-list mr-1\"></i> <strong>Kártyák:</strong> sorok kártyás\n megjelenítése, a kártya fejlécére kattintva lenyithatóak a részletes adatok.\n </li>\n </ul>\n <hr class=\"separator\" />\n <h4 id=\"appearance\" class=\"dl-guide-subtitle\">Megjelenés</h4>\n <ul>\n <li>\n <strong>Kompakt:</strong> A sorok közti távolság és a belső margók csökkentésével több\n adat jeleníthető meg egyszerre.\n </li>\n <li>\n <strong>Sávos (striped):</strong> Csak a táblázatos nézetben elérhető, minden második\n sor enyhe szürke hátteret kap, ezzel megkönnyítve a sorok követését.\n </li>\n </ul>\n <hr class=\"separator\" />\n <h4 id=\"columns\" class=\"dl-guide-subtitle\">Oszlopok láthatósága és sorrendje</h4>\n <ul>\n <li>\n <strong>Kártya fejléc:</strong> kártyás nézet esetén a fejlécben megjelenő mezők\n láthatósága és sorrendje.\n </li>\n <li>\n <strong>Oszlopok:</strong> táblázat nézetben az oszlopok láthatósága és sorrendje.\n </li>\n </ul>\n <p>\n A sorrend módosítása történhet az <i class=\"fa-solid fa-grip-vertical\"></i> ikonon\n <strong class=\"nowrap\">drag-n-drop</strong>al vagy az ikonra kattinva a megjelenő nyilak\n segítségével.\n </p>\n <hr class=\"separator\" />\n\n <h4 id=\"reset\" class=\"dl-guide-subtitle\">Beállítások visszaállítása</h4>\n <p>\n Az\n <strong>Alapértelmezés visszaállítása</strong> gomb visszaállítja a gyári értékeket, és\n törli a helyi tárolóban elmentett beállításokat.\n </p>\n </section>\n <hr class=\"separator\" />\n <section id=\"filters\" class=\"dl-guide-section\">\n <h3 class=\"dl-guide-title\">Szűrők</h3>\n <h4 id=\"exact-match\" class=\"dl-guide-subtitle\">Pontos egyezés</h4>\n <p>\n Amennyiben a táblázhoz tartozik szabad szavas keresés, a pontos egyezés opciót használva\n csak azokat a találatokat kapjuk, amelyek teljes mértékben megfelelnek a keresett\n kifejezésnek. Pl. alap esetben <strong><em>\"alma\"</em></strong> keresésre a\n <strong><em>\"piros alma\"</em></strong\n >, <strong><em>\"almafa\"</em></strong\n >, <strong><em>\"alma\"</em></strong> vagy <strong><em>\"almás pite\"</em></strong> is találat\n lehet, míg pontos egyezés esetén csak az <strong><em>\"alma\"</em></strong> található meg.\n </p>\n <hr class=\"separator\" />\n <h4 id=\"save-filters\" class=\"dl-guide-subtitle\">Szűrések mentése</h4>\n <p>\n A <strong><i class=\"fa-solid fa-sliders\"></i> Mentett szűrők</strong>re kattintva\n lehetőség van elmenteni az aktuális szűrési feltételeket, így később egyetlen kattintással\n előhívhatja azokat.\n </p>\n <p>\n A szűrési feltételek megadása után a\n <strong><i class=\"fa-solid fa-bookmark fa-sm\"></i> Mentés</strong> gomb megnyomásával\n elmenthető a szűrőkészlet. Az elnevezés megadása nem kötelező, csak saját magadnak szól a\n későbbi könnyebb azonosítás érdekében.\n </p>\n <p>\n Ezt követően a szűrőkészlet a mentés dátumával és elnevezésével jelenik meg a mentett\n szűrők között. Ezekre kattintva lenyithatók a szűrőkészlet részletei.\n </p>\n <p>A mentett készlet jobb oldalán található 4 ikon:</p>\n <ul>\n <li>\n <i class=\"fa-regular fa-star\"></i>: ikonra kattintva megjelölhető a készlet\n alapértelmezettként. Ekkor az oldal következő betöltésekor automatikusan az itt megadott\n szűrők lesznek alkalmazva.\n </li>\n\n <li>\n <i class=\"fa-solid fa-check\"></i>: ikonra kattintva tölthetők be a készletek.\n Megnyomásakor a szűrési feltételek automatikusan kitöltődnek az elmentett értékekkel.\n </li>\n\n <li>\n <span class=\"c-indicator\">?</span>: azt mutatja, hogy hány szűrési feltétel van a\n készletben.\n </li>\n <li>\n <i class=\"fa-solid fa-xmark\"></i>: a mentett szűrőkészlet törlése (a művelet\n megerősítést kér).\n </li>\n </ul>\n <p class=\"dl-guide-note\">Táblázatonként maximum <strong>20</strong> készlet menthető el.</p>\n <p>\n A lista alján található \"Összes törlése\" gombbal törölhető a táblához tartozó minden\n elmentett szűrőkészlet.\n </p>\n\n <p class=\"dl-guide-note\">\n <strong>Fontos:</strong> a beállítások és a szűrők is csak böngészőben (localStorage)\n kerülnek tárolásra, ezért más eszközön vagy böngészőben nem lesznek elérhetőek.\n </p>\n </section>\n </div>\n </Sidebar>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/data-list-guide.scss\"></style>\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import './
|
|
1
|
+
import './styles/components/data-table/data-list-guide.scss_vue_type_style_index_0_src_true_lang.css';
|
|
2
2
|
import e from "./admins-components97.js";
|
|
3
3
|
/* empty css */
|
|
4
4
|
//#region src/components/data-table/DataListGuide.vue
|