admins-components 9.0.39 → 9.0.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admins-components.js +38 -38
- package/dist/admins-components100.js +3 -52
- package/dist/admins-components100.js.map +1 -1
- package/dist/admins-components101.js +3 -82
- package/dist/admins-components101.js.map +1 -1
- package/dist/admins-components102.js +49 -110
- package/dist/admins-components102.js.map +1 -1
- package/dist/admins-components103.js +80 -45
- package/dist/admins-components103.js.map +1 -1
- package/dist/admins-components104.js +108 -101
- package/dist/admins-components104.js.map +1 -1
- package/dist/admins-components105.js +41 -14
- package/dist/admins-components105.js.map +1 -1
- package/dist/admins-components106.js +105 -6
- package/dist/admins-components106.js.map +1 -1
- package/dist/admins-components107.js +16 -248
- package/dist/admins-components107.js.map +1 -1
- package/dist/admins-components108.js +7 -27
- package/dist/admins-components108.js.map +1 -1
- package/dist/admins-components109.js +247 -23
- package/dist/admins-components109.js.map +1 -1
- package/dist/admins-components110.js +26 -171
- package/dist/admins-components110.js.map +1 -1
- package/dist/admins-components111.js +25 -65
- package/dist/admins-components111.js.map +1 -1
- package/dist/admins-components112.js +163 -58
- package/dist/admins-components112.js.map +1 -1
- package/dist/admins-components113.js +65 -27
- package/dist/admins-components113.js.map +1 -1
- package/dist/admins-components114.js +63 -12
- package/dist/admins-components114.js.map +1 -1
- package/dist/admins-components115.js +29 -26
- package/dist/admins-components115.js.map +1 -1
- package/dist/admins-components116.js +16 -9
- package/dist/admins-components116.js.map +1 -1
- package/dist/admins-components117.js +26 -3
- package/dist/admins-components117.js.map +1 -1
- package/dist/admins-components118.js +8 -2
- package/dist/admins-components118.js.map +1 -1
- package/dist/admins-components119.js +4 -3
- package/dist/admins-components119.js.map +1 -1
- package/dist/admins-components120.js +3 -21
- package/dist/admins-components120.js.map +1 -1
- package/dist/admins-components121.js +3 -14
- package/dist/admins-components121.js.map +1 -1
- package/dist/admins-components122.js +20 -7
- package/dist/admins-components122.js.map +1 -1
- package/dist/admins-components123.js +14 -13
- package/dist/admins-components123.js.map +1 -1
- package/dist/admins-components124.js +8 -26
- package/dist/admins-components124.js.map +1 -1
- package/dist/admins-components125.js +12 -82
- package/dist/admins-components125.js.map +1 -1
- package/dist/admins-components126.js +24 -9
- package/dist/admins-components126.js.map +1 -1
- package/dist/admins-components127.js +82 -4
- package/dist/admins-components127.js.map +1 -1
- package/dist/admins-components128.js +11 -8
- package/dist/admins-components128.js.map +1 -1
- package/dist/admins-components129.js +4 -6
- package/dist/admins-components129.js.map +1 -1
- package/dist/admins-components130.js +8 -6
- package/dist/admins-components130.js.map +1 -1
- package/dist/admins-components131.js +6 -14
- package/dist/admins-components131.js.map +1 -1
- package/dist/admins-components132.js +4 -11
- package/dist/admins-components132.js.map +1 -1
- package/dist/admins-components133.js +15 -30
- package/dist/admins-components133.js.map +1 -1
- package/dist/admins-components134.js +13 -4
- package/dist/admins-components134.js.map +1 -1
- package/dist/admins-components135.js +30 -29
- package/dist/admins-components135.js.map +1 -1
- package/dist/admins-components136.js +4 -5
- package/dist/admins-components136.js.map +1 -1
- package/dist/admins-components137.js +29 -5
- package/dist/admins-components137.js.map +1 -1
- package/dist/admins-components138.js +4 -7
- package/dist/admins-components138.js.map +1 -1
- package/dist/admins-components139.js +4 -73
- package/dist/admins-components139.js.map +1 -1
- package/dist/admins-components140.js +7 -28
- package/dist/admins-components140.js.map +1 -1
- package/dist/admins-components141.js +73 -58
- package/dist/admins-components141.js.map +1 -1
- package/dist/admins-components142.js +29 -24
- package/dist/admins-components142.js.map +1 -1
- package/dist/admins-components143.js +56 -47
- package/dist/admins-components143.js.map +1 -1
- package/dist/admins-components144.js +23 -30
- package/dist/admins-components144.js.map +1 -1
- package/dist/admins-components145.js +50 -3
- package/dist/admins-components145.js.map +1 -1
- package/dist/admins-components146.js +29 -177
- package/dist/admins-components146.js.map +1 -1
- package/dist/admins-components147.js +3 -46
- package/dist/admins-components147.js.map +1 -1
- package/dist/admins-components148.js +177 -35
- package/dist/admins-components148.js.map +1 -1
- package/dist/admins-components149.js +41 -41
- package/dist/admins-components149.js.map +1 -1
- package/dist/admins-components150.js +32 -136
- package/dist/admins-components150.js.map +1 -1
- package/dist/admins-components151.js +42 -54
- package/dist/admins-components151.js.map +1 -1
- package/dist/admins-components152.js +140 -6
- package/dist/admins-components152.js.map +1 -1
- package/dist/admins-components153.js +57 -5
- package/dist/admins-components153.js.map +1 -1
- package/dist/admins-components154.js +6 -75
- package/dist/admins-components154.js.map +1 -1
- package/dist/admins-components155.js +5 -28
- package/dist/admins-components155.js.map +1 -1
- package/dist/admins-components156.js +74 -1929
- package/dist/admins-components156.js.map +1 -1
- package/dist/admins-components157.js +29 -24811
- package/dist/admins-components157.js.map +1 -1
- package/dist/admins-components158.js +1930 -8
- package/dist/admins-components158.js.map +1 -1
- package/dist/admins-components159.js +24809 -5
- package/dist/admins-components159.js.map +1 -0
- package/dist/admins-components160.js +8 -141
- package/dist/admins-components160.js.map +1 -1
- package/dist/admins-components161.js +7 -9
- package/dist/admins-components162.js +141 -8
- package/dist/admins-components162.js.map +1 -1
- package/dist/admins-components163.js +10 -0
- package/dist/{admins-components161.js.map → admins-components163.js.map} +1 -1
- package/dist/admins-components164.js +8 -167
- package/dist/admins-components164.js.map +1 -1
- package/dist/admins-components166.js +167 -8
- package/dist/admins-components166.js.map +1 -1
- package/dist/admins-components167.js +39 -38
- package/dist/admins-components167.js.map +1 -1
- package/dist/admins-components168.js +9 -6
- package/dist/admins-components168.js.map +1 -1
- package/dist/admins-components169.js +42 -72
- package/dist/admins-components169.js.map +1 -1
- package/dist/admins-components170.js +6 -58
- package/dist/admins-components170.js.map +1 -1
- package/dist/admins-components171.js +72 -51
- package/dist/admins-components171.js.map +1 -1
- package/dist/admins-components172.js +57 -8
- package/dist/admins-components172.js.map +1 -1
- package/dist/admins-components173.js +40 -33
- package/dist/admins-components173.js.map +1 -1
- package/dist/admins-components174.js +3 -3
- package/dist/admins-components174.js.map +1 -1
- package/dist/admins-components175.js +53 -0
- package/dist/admins-components175.js.map +1 -0
- package/dist/admins-components176.js +8 -57
- package/dist/admins-components176.js.map +1 -1
- package/dist/admins-components178.js +59 -0
- package/dist/admins-components178.js.map +1 -0
- package/dist/admins-components38.js +2 -2
- package/dist/admins-components38.js.map +1 -1
- package/dist/admins-components39.js.map +1 -1
- package/dist/admins-components58.js.map +1 -1
- package/dist/admins-components59.js +1 -13
- package/dist/admins-components59.js.map +1 -1
- package/dist/admins-components61.js +22 -22
- package/dist/admins-components61.js.map +1 -1
- package/dist/admins-components62.js.map +1 -1
- package/dist/admins-components63.js +69 -133
- package/dist/admins-components63.js.map +1 -1
- package/dist/admins-components64.js +5 -0
- package/dist/admins-components64.js.map +1 -0
- package/dist/admins-components65.js +118 -7
- package/dist/admins-components65.js.map +1 -1
- package/dist/admins-components67.js +8 -0
- package/dist/admins-components67.js.map +1 -0
- package/dist/admins-components68.js +144 -7
- package/dist/admins-components68.js.map +1 -1
- package/dist/admins-components70.js +7 -279
- package/dist/admins-components70.js.map +1 -1
- package/dist/{admins-components69.js.map → admins-components71.js.map} +1 -1
- package/dist/admins-components72.js +279 -6
- package/dist/admins-components72.js.map +1 -1
- package/dist/admins-components74.js +6 -126
- package/dist/admins-components74.js.map +1 -1
- package/dist/{admins-components73.js.map → admins-components75.js.map} +1 -1
- package/dist/admins-components76.js +126 -6
- package/dist/admins-components76.js.map +1 -1
- package/dist/admins-components78.js +6 -69
- package/dist/admins-components78.js.map +1 -1
- package/dist/admins-components79.js +55 -234
- package/dist/admins-components79.js.map +1 -1
- package/dist/admins-components80.js +70 -0
- package/dist/admins-components80.js.map +1 -0
- package/dist/admins-components81.js +238 -6
- package/dist/admins-components81.js.map +1 -1
- package/dist/admins-components83.js +7 -0
- package/dist/admins-components83.js.map +1 -0
- package/dist/admins-components84.js +229 -6
- package/dist/admins-components84.js.map +1 -1
- package/dist/admins-components86.js +7 -0
- package/dist/{admins-components82.js.map → admins-components86.js.map} +1 -1
- package/dist/admins-components87.js +37 -6
- package/dist/admins-components87.js.map +1 -1
- package/dist/admins-components89.js +7 -0
- package/dist/{admins-components85.js.map → admins-components89.js.map} +1 -1
- package/dist/admins-components90.js +199 -6
- package/dist/admins-components90.js.map +1 -1
- package/dist/admins-components92.js +6 -75
- package/dist/admins-components92.js.map +1 -1
- package/dist/{admins-components91.js.map → admins-components93.js.map} +1 -1
- package/dist/admins-components94.js +75 -6
- package/dist/admins-components94.js.map +1 -1
- package/dist/admins-components96.js +7 -0
- package/dist/admins-components96.js.map +1 -0
- package/dist/admins-components97.js +204 -6
- package/dist/admins-components97.js.map +1 -1
- package/dist/admins-components99.js +6 -3
- package/dist/admins-components99.js.map +1 -1
- package/dist/src/components/ConfirmModal.vue.d.ts +1 -1
- package/dist/src/components/data-table/DataListActions.vue.d.ts +8 -0
- package/dist/src/styles/components/modal.scss_vue_type_style_index_0_src_true_lang.css +1 -1
- package/dist/src/types/data-list.d.ts +5 -1
- package/package.json +1 -1
- package/dist/admins-components165.js +0 -52
- package/dist/admins-components165.js.map +0 -1
- package/dist/admins-components66.js +0 -171
- package/dist/admins-components66.js.map +0 -1
- package/dist/admins-components77.js +0 -60
- package/dist/admins-components77.js.map +0 -1
- package/dist/admins-components82.js +0 -230
- package/dist/admins-components85.js +0 -38
- package/dist/admins-components88.js +0 -200
- package/dist/admins-components88.js.map +0 -1
- package/dist/admins-components95.js +0 -205
- package/dist/admins-components95.js.map +0 -1
- package/dist/admins-components98.js +0 -4
- package/dist/admins-components98.js.map +0 -1
- /package/dist/{admins-components69.js → admins-components71.js} +0 -0
- /package/dist/{admins-components73.js → admins-components75.js} +0 -0
- /package/dist/{admins-components91.js → admins-components93.js} +0 -0
|
@@ -1,7 +1,127 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
//#region src/components/data-table/DataPaginator.vue
|
|
5
|
-
var
|
|
1
|
+
import e from "./admins-components6.js";
|
|
2
|
+
import { getFullStorageKey as t } from "./admins-components75.js";
|
|
3
|
+
import { Fragment as n, computed as r, createElementBlock as i, createElementVNode as a, createVNode as o, defineComponent as s, normalizeClass as c, openBlock as l, renderList as u, toDisplayString as d } from "vue";
|
|
4
|
+
//#region src/components/data-table/DataPaginator.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
+
var f = { class: "ac-component" }, p = { class: "c-paginator-wrapper" }, m = { class: "c-paginator" }, h = { class: "c-paginator__info" }, g = { class: "c-paginator__range" }, _ = { class: "c-paginator__total" }, v = {
|
|
6
|
+
class: "c-paginator__nav",
|
|
7
|
+
"aria-label": "Pagination"
|
|
8
|
+
}, y = {
|
|
9
|
+
key: 0,
|
|
10
|
+
class: "c-paginator__ellipsis"
|
|
11
|
+
}, b = ["onClick"], x = { class: "c-paginator__size" }, S = ["value"], C = ["value"], w = [
|
|
12
|
+
10,
|
|
13
|
+
25,
|
|
14
|
+
50,
|
|
15
|
+
100
|
|
16
|
+
], T = 100;
|
|
17
|
+
function E(e) {
|
|
18
|
+
try {
|
|
19
|
+
let n = t("pagination", e), r = localStorage.getItem(n);
|
|
20
|
+
if (r) {
|
|
21
|
+
let e = Number(r);
|
|
22
|
+
if (e > 0) return e;
|
|
23
|
+
}
|
|
24
|
+
} catch {
|
|
25
|
+
console.warn("Failed to read page size from localStorage");
|
|
26
|
+
}
|
|
27
|
+
return T;
|
|
28
|
+
}
|
|
29
|
+
function D(e) {
|
|
30
|
+
return {
|
|
31
|
+
total: 0,
|
|
32
|
+
page: 1,
|
|
33
|
+
pageSize: E(e)
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
var O = /* @__PURE__ */ s({
|
|
37
|
+
__name: "DataPaginator",
|
|
38
|
+
props: {
|
|
39
|
+
settings: {},
|
|
40
|
+
storageKey: {}
|
|
41
|
+
},
|
|
42
|
+
emits: ["update:pagination"],
|
|
43
|
+
setup(s, { emit: T }) {
|
|
44
|
+
let E = s, D = T;
|
|
45
|
+
function O(e) {
|
|
46
|
+
try {
|
|
47
|
+
let n = t("pagination", E.storageKey);
|
|
48
|
+
localStorage.setItem(n, String(e));
|
|
49
|
+
} catch {
|
|
50
|
+
console.warn("Failed to save page size to localStorage");
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
let k = r(() => Math.max(1, Math.ceil(E.settings.total / E.settings.pageSize))), A = r(() => E.settings.total === 0 ? 0 : (E.settings.page - 1) * E.settings.pageSize + 1), j = r(() => Math.min(E.settings.page * E.settings.pageSize, E.settings.total)), M = r(() => {
|
|
54
|
+
let e = k.value, t = E.settings.page;
|
|
55
|
+
if (e <= N) {
|
|
56
|
+
let t = [];
|
|
57
|
+
for (let n = 1; n <= e; n++) t.push(n);
|
|
58
|
+
return t;
|
|
59
|
+
}
|
|
60
|
+
let n = N - 2, r = t - 1, i = t + 1;
|
|
61
|
+
for (r < 2 && (i = Math.min(e - 1, i + (2 - r)), r = 2), i > e - 1 && (r = Math.max(2, r - (i - (e - 1))), i = e - 1); i - r + 1 < n;) {
|
|
62
|
+
let t = r > 2, a = i < e - 1;
|
|
63
|
+
if (!t && !a) break;
|
|
64
|
+
let o = r - 2, s = e - 1 - i, c = +((t ? r - 1 : 0) > 2) + +(i < e - 1), l = +(r > 2) + +((a ? i + 1 : 0) < e - 1), u = i - r + 2, d = !1;
|
|
65
|
+
if (t && (o >= s || !a) && u + c <= n ? (r--, d = !0) : a && u + l <= n && (i++, d = !0), !d) break;
|
|
66
|
+
}
|
|
67
|
+
let a = r > 2, o = i < e - 1, s = [];
|
|
68
|
+
s.push(1), a && s.push("...");
|
|
69
|
+
for (let e = r; e <= i; e++) s.push(e);
|
|
70
|
+
return o && s.push("..."), s.push(e), s;
|
|
71
|
+
}), N = 7;
|
|
72
|
+
function P(e) {
|
|
73
|
+
let t = E.settings.page, n = k.value, r = e === 1 || e === n, i = e === t;
|
|
74
|
+
return t > 3 && t < n - 2 && !r && !i;
|
|
75
|
+
}
|
|
76
|
+
function F(e) {
|
|
77
|
+
e < 1 || e > k.value || e === E.settings.page || D("update:pagination", {
|
|
78
|
+
page: e,
|
|
79
|
+
pageSize: E.settings.pageSize
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
function I(e) {
|
|
83
|
+
let t = Number(e.target.value);
|
|
84
|
+
O(t), D("update:pagination", {
|
|
85
|
+
page: 1,
|
|
86
|
+
pageSize: t
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
return (t, r) => (l(), i("div", f, [a("div", p, [a("div", m, [
|
|
90
|
+
a("div", h, [a("span", g, d(A.value) + "–" + d(j.value), 1), a("span", _, " / " + d(s.settings.total), 1)]),
|
|
91
|
+
a("nav", v, [
|
|
92
|
+
o(e, {
|
|
93
|
+
icon: "fa-solid fa-chevron-left",
|
|
94
|
+
rel: "prev",
|
|
95
|
+
disabled: s.settings.page <= 1,
|
|
96
|
+
callback: () => F(s.settings.page - 1)
|
|
97
|
+
}, null, 8, ["disabled", "callback"]),
|
|
98
|
+
(l(!0), i(n, null, u(M.value, (e, t) => (l(), i(n, { key: t }, [e === "..." ? (l(), i("span", y, "…")) : (l(), i("button", {
|
|
99
|
+
key: 1,
|
|
100
|
+
type: "button",
|
|
101
|
+
class: c(["c-paginator__page", {
|
|
102
|
+
"is-active": e === s.settings.page,
|
|
103
|
+
"is-hidden-sm": P(e)
|
|
104
|
+
}]),
|
|
105
|
+
onClick: (t) => F(e)
|
|
106
|
+
}, d(e), 11, b))], 64))), 128)),
|
|
107
|
+
o(e, {
|
|
108
|
+
icon: "fa-solid fa-chevron-right",
|
|
109
|
+
rel: "next",
|
|
110
|
+
disabled: s.settings.page >= k.value,
|
|
111
|
+
callback: () => F(s.settings.page + 1)
|
|
112
|
+
}, null, 8, ["disabled", "callback"])
|
|
113
|
+
]),
|
|
114
|
+
a("div", x, [a("select", {
|
|
115
|
+
class: "c-paginator__select",
|
|
116
|
+
id: "page-size-select",
|
|
117
|
+
value: s.settings.pageSize,
|
|
118
|
+
onChange: I
|
|
119
|
+
}, [(l(), i(n, null, u(w, (e) => a("option", {
|
|
120
|
+
key: e,
|
|
121
|
+
value: e
|
|
122
|
+
}, d(e) + " elem / oldal", 9, C)), 64))], 40, S)])
|
|
123
|
+
])])]));
|
|
124
|
+
}
|
|
125
|
+
});
|
|
6
126
|
//#endregion
|
|
7
|
-
export {
|
|
127
|
+
export { O as default, D as getDefaultPaginator, E as getPageSize };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components76.js","names":[],"sources":["../src/components/data-table/DataPaginator.vue"],"sourcesContent":["<script lang=\"ts\">\nconst SIZE_OPTIONS = [10, 25, 50, 100]\nconst DEFAULT_PAGE_SIZE = 100\n\nexport function getPageSize(storageKey: string): number {\n try {\n const fullStorageKey = getFullStorageKey('pagination', storageKey)\n const raw = localStorage.getItem(fullStorageKey)\n if (raw) {\n const size = Number(raw)\n if (size > 0) return size\n }\n } catch {\n console.warn('Failed to read page size from localStorage')\n }\n return DEFAULT_PAGE_SIZE\n}\n\nexport function getDefaultPaginator(storageKey: string) {\n return {\n total: 0,\n page: 1,\n pageSize: getPageSize(storageKey),\n } as PaginatorSettings\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport Button from '@/components/Button.vue'\nimport type { PaginatorSettings, PageSettings } from '@/types/data-list'\nimport { getFullStorageKey } from '@/utils/storageKey'\n\nconst props = defineProps<{ settings: PaginatorSettings; storageKey: string }>()\n\nconst emit = defineEmits<{\n 'update:pagination': [pagination: PageSettings]\n}>()\n\nfunction savePageSize(size: number) {\n try {\n const fullStorageKey = getFullStorageKey('pagination', props.storageKey)\n localStorage.setItem(fullStorageKey, String(size))\n } catch {\n console.warn('Failed to save page size to localStorage')\n }\n}\n\nconst totalPages = computed(() =>\n Math.max(1, Math.ceil(props.settings.total / props.settings.pageSize)),\n)\n\nconst rangeStart = computed(() =>\n props.settings.total === 0 ? 0 : (props.settings.page - 1) * props.settings.pageSize + 1,\n)\nconst rangeEnd = computed(() =>\n Math.min(props.settings.page * props.settings.pageSize, props.settings.total),\n)\n\nconst visiblePages = computed<(number | '...')[]>(() => {\n const total = totalPages.value\n const current = props.settings.page\n\n if (total <= SLOT_COUNT) {\n const pages: number[] = []\n for (let i = 1; i <= total; i++) pages.push(i)\n return pages\n }\n\n const inner = SLOT_COUNT - 2\n let winStart = current - 1\n let winEnd = current + 1\n if (winStart < 2) {\n winEnd = Math.min(total - 1, winEnd + (2 - winStart))\n winStart = 2\n }\n if (winEnd > total - 1) {\n winStart = Math.max(2, winStart - (winEnd - (total - 1)))\n winEnd = total - 1\n }\n\n while (winEnd - winStart + 1 < inner) {\n const canExtendLeft = winStart > 2\n const canExtendRight = winEnd < total - 1\n if (!canExtendLeft && !canExtendRight) break\n\n const roomLeft = winStart - 2\n const roomRight = total - 1 - winEnd\n\n const ellipsisIfExtendLeft =\n ((canExtendLeft ? winStart - 1 : 0) > 2 ? 1 : 0) + (winEnd < total - 1 ? 1 : 0)\n const ellipsisIfExtendRight =\n (winStart > 2 ? 1 : 0) + ((canExtendRight ? winEnd + 1 : 0) < total - 1 ? 1 : 0)\n\n const newSize = winEnd - winStart + 2\n\n let extended = false\n if (\n canExtendLeft &&\n (roomLeft >= roomRight || !canExtendRight) &&\n newSize + ellipsisIfExtendLeft <= inner\n ) {\n winStart--\n extended = true\n } else if (canExtendRight && newSize + ellipsisIfExtendRight <= inner) {\n winEnd++\n extended = true\n }\n if (!extended) break\n }\n const showLeftEllipsis = winStart > 2\n const showRightEllipsis = winEnd < total - 1\n\n const pages: (number | '...')[] = []\n pages.push(1)\n if (showLeftEllipsis) pages.push('...')\n for (let p = winStart; p <= winEnd; p++) pages.push(p)\n if (showRightEllipsis) pages.push('...')\n pages.push(total)\n\n return pages\n})\n\nconst SLOT_COUNT = 7\n\nfunction shouldHideOnSmall(page: number) {\n const current = props.settings.page\n const total = totalPages.value\n\n const isEdge = page === 1 || page === total\n const isCurrent = page === current\n\n const isMiddleRange = current > 3 && current < total - 2\n\n return isMiddleRange && !isEdge && !isCurrent\n}\n\nfunction goToPage(page: number) {\n if (page < 1 || page > totalPages.value || page === props.settings.page) return\n emit('update:pagination', { page, pageSize: props.settings.pageSize })\n}\n\nfunction changePageSize(event: Event) {\n const size = Number((event.target as HTMLSelectElement).value)\n savePageSize(size)\n emit('update:pagination', { page: 1, pageSize: size })\n}\n</script>\n\n<template>\n <div class=\"ac-component\">\n <div class=\"c-paginator-wrapper\">\n <div class=\"c-paginator\">\n <div class=\"c-paginator__info\">\n <span class=\"c-paginator__range\">{{ rangeStart }}–{{ rangeEnd }}</span>\n <span class=\"c-paginator__total\"> / {{ settings.total }}</span>\n </div>\n\n <nav class=\"c-paginator__nav\" aria-label=\"Pagination\">\n <Button\n icon=\"fa-solid fa-chevron-left\"\n rel=\"prev\"\n :disabled=\"settings.page <= 1\"\n :callback=\"() => goToPage(settings.page - 1)\"\n />\n\n <template v-for=\"(p, i) in visiblePages\" :key=\"i\">\n <span v-if=\"p === '...'\" class=\"c-paginator__ellipsis\">…</span>\n <button\n v-else\n type=\"button\"\n class=\"c-paginator__page\"\n :class=\"{\n 'is-active': p === settings.page,\n 'is-hidden-sm': shouldHideOnSmall(p),\n }\"\n @click=\"goToPage(p)\"\n >\n {{ p }}\n </button>\n </template>\n\n <Button\n icon=\"fa-solid fa-chevron-right\"\n rel=\"next\"\n :disabled=\"settings.page >= totalPages\"\n :callback=\"() => goToPage(settings.page + 1)\"\n />\n </nav>\n\n <div class=\"c-paginator__size\">\n <select\n class=\"c-paginator__select\"\n id=\"page-size-select\"\n :value=\"settings.pageSize\"\n @change=\"changePageSize\"\n >\n <option v-for=\"s in SIZE_OPTIONS\" :key=\"s\" :value=\"s\">{{ s }} elem / oldal</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/data-paginator.scss\"></style>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"admins-components76.js","names":[],"sources":["../src/components/data-table/DataPaginator.vue"],"sourcesContent":["<script lang=\"ts\">\nconst SIZE_OPTIONS = [10, 25, 50, 100]\nconst DEFAULT_PAGE_SIZE = 100\n\nexport function getPageSize(storageKey: string): number {\n try {\n const fullStorageKey = getFullStorageKey('pagination', storageKey)\n const raw = localStorage.getItem(fullStorageKey)\n if (raw) {\n const size = Number(raw)\n if (size > 0) return size\n }\n } catch {\n console.warn('Failed to read page size from localStorage')\n }\n return DEFAULT_PAGE_SIZE\n}\n\nexport function getDefaultPaginator(storageKey: string) {\n return {\n total: 0,\n page: 1,\n pageSize: getPageSize(storageKey),\n } as PaginatorSettings\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport Button from '@/components/Button.vue'\nimport type { PaginatorSettings, PageSettings } from '@/types/data-list'\nimport { getFullStorageKey } from '@/utils/storageKey'\n\nconst props = defineProps<{ settings: PaginatorSettings; storageKey: string }>()\n\nconst emit = defineEmits<{\n 'update:pagination': [pagination: PageSettings]\n}>()\n\nfunction savePageSize(size: number) {\n try {\n const fullStorageKey = getFullStorageKey('pagination', props.storageKey)\n localStorage.setItem(fullStorageKey, String(size))\n } catch {\n console.warn('Failed to save page size to localStorage')\n }\n}\n\nconst totalPages = computed(() =>\n Math.max(1, Math.ceil(props.settings.total / props.settings.pageSize)),\n)\n\nconst rangeStart = computed(() =>\n props.settings.total === 0 ? 0 : (props.settings.page - 1) * props.settings.pageSize + 1,\n)\nconst rangeEnd = computed(() =>\n Math.min(props.settings.page * props.settings.pageSize, props.settings.total),\n)\n\nconst visiblePages = computed<(number | '...')[]>(() => {\n const total = totalPages.value\n const current = props.settings.page\n\n if (total <= SLOT_COUNT) {\n const pages: number[] = []\n for (let i = 1; i <= total; i++) pages.push(i)\n return pages\n }\n\n const inner = SLOT_COUNT - 2\n let winStart = current - 1\n let winEnd = current + 1\n if (winStart < 2) {\n winEnd = Math.min(total - 1, winEnd + (2 - winStart))\n winStart = 2\n }\n if (winEnd > total - 1) {\n winStart = Math.max(2, winStart - (winEnd - (total - 1)))\n winEnd = total - 1\n }\n\n while (winEnd - winStart + 1 < inner) {\n const canExtendLeft = winStart > 2\n const canExtendRight = winEnd < total - 1\n if (!canExtendLeft && !canExtendRight) break\n\n const roomLeft = winStart - 2\n const roomRight = total - 1 - winEnd\n\n const ellipsisIfExtendLeft =\n ((canExtendLeft ? winStart - 1 : 0) > 2 ? 1 : 0) + (winEnd < total - 1 ? 1 : 0)\n const ellipsisIfExtendRight =\n (winStart > 2 ? 1 : 0) + ((canExtendRight ? winEnd + 1 : 0) < total - 1 ? 1 : 0)\n\n const newSize = winEnd - winStart + 2\n\n let extended = false\n if (\n canExtendLeft &&\n (roomLeft >= roomRight || !canExtendRight) &&\n newSize + ellipsisIfExtendLeft <= inner\n ) {\n winStart--\n extended = true\n } else if (canExtendRight && newSize + ellipsisIfExtendRight <= inner) {\n winEnd++\n extended = true\n }\n if (!extended) break\n }\n const showLeftEllipsis = winStart > 2\n const showRightEllipsis = winEnd < total - 1\n\n const pages: (number | '...')[] = []\n pages.push(1)\n if (showLeftEllipsis) pages.push('...')\n for (let p = winStart; p <= winEnd; p++) pages.push(p)\n if (showRightEllipsis) pages.push('...')\n pages.push(total)\n\n return pages\n})\n\nconst SLOT_COUNT = 7\n\nfunction shouldHideOnSmall(page: number) {\n const current = props.settings.page\n const total = totalPages.value\n\n const isEdge = page === 1 || page === total\n const isCurrent = page === current\n\n const isMiddleRange = current > 3 && current < total - 2\n\n return isMiddleRange && !isEdge && !isCurrent\n}\n\nfunction goToPage(page: number) {\n if (page < 1 || page > totalPages.value || page === props.settings.page) return\n emit('update:pagination', { page, pageSize: props.settings.pageSize })\n}\n\nfunction changePageSize(event: Event) {\n const size = Number((event.target as HTMLSelectElement).value)\n savePageSize(size)\n emit('update:pagination', { page: 1, pageSize: size })\n}\n</script>\n\n<template>\n <div class=\"ac-component\">\n <div class=\"c-paginator-wrapper\">\n <div class=\"c-paginator\">\n <div class=\"c-paginator__info\">\n <span class=\"c-paginator__range\">{{ rangeStart }}–{{ rangeEnd }}</span>\n <span class=\"c-paginator__total\"> / {{ settings.total }}</span>\n </div>\n\n <nav class=\"c-paginator__nav\" aria-label=\"Pagination\">\n <Button\n icon=\"fa-solid fa-chevron-left\"\n rel=\"prev\"\n :disabled=\"settings.page <= 1\"\n :callback=\"() => goToPage(settings.page - 1)\"\n />\n\n <template v-for=\"(p, i) in visiblePages\" :key=\"i\">\n <span v-if=\"p === '...'\" class=\"c-paginator__ellipsis\">…</span>\n <button\n v-else\n type=\"button\"\n class=\"c-paginator__page\"\n :class=\"{\n 'is-active': p === settings.page,\n 'is-hidden-sm': shouldHideOnSmall(p),\n }\"\n @click=\"goToPage(p)\"\n >\n {{ p }}\n </button>\n </template>\n\n <Button\n icon=\"fa-solid fa-chevron-right\"\n rel=\"next\"\n :disabled=\"settings.page >= totalPages\"\n :callback=\"() => goToPage(settings.page + 1)\"\n />\n </nav>\n\n <div class=\"c-paginator__size\">\n <select\n class=\"c-paginator__select\"\n id=\"page-size-select\"\n :value=\"settings.pageSize\"\n @change=\"changePageSize\"\n >\n <option v-for=\"s in SIZE_OPTIONS\" :key=\"s\" :value=\"s\">{{ s }} elem / oldal</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/data-paginator.scss\"></style>\n"],"mappings":"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"}
|
|
@@ -1,70 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
for (let t of e) {
|
|
7
|
-
if (t.type === "separator") continue;
|
|
8
|
-
let e;
|
|
9
|
-
if (t.key in i) e = i[t.key];
|
|
10
|
-
else if (o) continue;
|
|
11
|
-
else if (t.key in s) e = s[t.key];
|
|
12
|
-
else if (t.value !== void 0) e = t.value;
|
|
13
|
-
else continue;
|
|
14
|
-
if (e != null) if (n && t.transformer) {
|
|
15
|
-
let n = t.transformer(e);
|
|
16
|
-
n && Object.assign(c, n);
|
|
17
|
-
} else c[t.key] = e;
|
|
18
|
-
}
|
|
19
|
-
return c;
|
|
20
|
-
}
|
|
21
|
-
function r(e) {
|
|
22
|
-
let t = new URLSearchParams(window.location.search), n = {};
|
|
23
|
-
for (let r of e) {
|
|
24
|
-
if (r.type === "separator") continue;
|
|
25
|
-
let e = window.location.search ? t.get(r.key) : null;
|
|
26
|
-
e && (n[r.key] = s(r.type, e, r.value));
|
|
27
|
-
}
|
|
28
|
-
return n;
|
|
29
|
-
}
|
|
30
|
-
function i(t) {
|
|
31
|
-
try {
|
|
32
|
-
let n = e("filters", t), r = JSON.parse(localStorage.getItem(n) ?? "[]");
|
|
33
|
-
return Array.isArray(r) ? r.filter((e) => e && typeof e == "object" && typeof e.id == "string" && e.values && typeof e.savedAt == "string") : [];
|
|
34
|
-
} catch {
|
|
35
|
-
return [];
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
function a(e) {
|
|
39
|
-
return i(e).find((e) => e.isDefault) ?? null;
|
|
40
|
-
}
|
|
41
|
-
function o(e) {
|
|
42
|
-
return Object.fromEntries(Object.entries(e).filter(([e, t]) => t !== null && t !== "" && t !== void 0));
|
|
43
|
-
}
|
|
44
|
-
function s(e, n, r) {
|
|
45
|
-
if (e === "number") {
|
|
46
|
-
let e = Number(n);
|
|
47
|
-
return isNaN(e) ? r ?? null : e;
|
|
48
|
-
}
|
|
49
|
-
return e === "date" || e === "datetime" ? { utc: n } : e === "daterange" || e === "datetimerange" ? c(n, r) : e === "dropdown" ? t(n) : e === "checkbox" ? n === "true" : n;
|
|
50
|
-
}
|
|
51
|
-
function c(e, t) {
|
|
52
|
-
try {
|
|
53
|
-
let t = JSON.parse(e);
|
|
54
|
-
return t && typeof t == "object" && "local" in t && t.local && (t.local = new Date(t.local)), t;
|
|
55
|
-
} catch {
|
|
56
|
-
return t ?? null;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
function l(e, t) {
|
|
60
|
-
let n = new URLSearchParams(window.location.search);
|
|
61
|
-
for (let r of e) {
|
|
62
|
-
if (r.type === "separator") continue;
|
|
63
|
-
let e = t[r.key];
|
|
64
|
-
e == null || e === "" ? n.delete(r.key) : r.type === "date" || r.type === "datetime" ? n.set(r.key, e.utc) : typeof e == "object" ? n.set(r.key, JSON.stringify(e)) : n.set(r.key, String(e));
|
|
65
|
-
}
|
|
66
|
-
let r = n.toString(), i = window.location.pathname + (r ? `?${r}` : "");
|
|
67
|
-
window.history.replaceState(null, "", i);
|
|
68
|
-
}
|
|
1
|
+
import './src/styles/components/data-table/data-paginator.scss_vue_type_style_index_0_src_true_lang.css';
|
|
2
|
+
import e from "./admins-components76.js";
|
|
3
|
+
/* empty css */
|
|
4
|
+
//#region src/components/data-table/DataPaginator.vue
|
|
5
|
+
var t = e;
|
|
69
6
|
//#endregion
|
|
70
|
-
export {
|
|
7
|
+
export { t as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components78.js","names":[],"sources":["../src/
|
|
1
|
+
{"version":3,"file":"admins-components78.js","names":[],"sources":["../src/components/data-table/DataPaginator.vue"],"sourcesContent":["<script lang=\"ts\">\nconst SIZE_OPTIONS = [10, 25, 50, 100]\nconst DEFAULT_PAGE_SIZE = 100\n\nexport function getPageSize(storageKey: string): number {\n try {\n const fullStorageKey = getFullStorageKey('pagination', storageKey)\n const raw = localStorage.getItem(fullStorageKey)\n if (raw) {\n const size = Number(raw)\n if (size > 0) return size\n }\n } catch {\n console.warn('Failed to read page size from localStorage')\n }\n return DEFAULT_PAGE_SIZE\n}\n\nexport function getDefaultPaginator(storageKey: string) {\n return {\n total: 0,\n page: 1,\n pageSize: getPageSize(storageKey),\n } as PaginatorSettings\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport Button from '@/components/Button.vue'\nimport type { PaginatorSettings, PageSettings } from '@/types/data-list'\nimport { getFullStorageKey } from '@/utils/storageKey'\n\nconst props = defineProps<{ settings: PaginatorSettings; storageKey: string }>()\n\nconst emit = defineEmits<{\n 'update:pagination': [pagination: PageSettings]\n}>()\n\nfunction savePageSize(size: number) {\n try {\n const fullStorageKey = getFullStorageKey('pagination', props.storageKey)\n localStorage.setItem(fullStorageKey, String(size))\n } catch {\n console.warn('Failed to save page size to localStorage')\n }\n}\n\nconst totalPages = computed(() =>\n Math.max(1, Math.ceil(props.settings.total / props.settings.pageSize)),\n)\n\nconst rangeStart = computed(() =>\n props.settings.total === 0 ? 0 : (props.settings.page - 1) * props.settings.pageSize + 1,\n)\nconst rangeEnd = computed(() =>\n Math.min(props.settings.page * props.settings.pageSize, props.settings.total),\n)\n\nconst visiblePages = computed<(number | '...')[]>(() => {\n const total = totalPages.value\n const current = props.settings.page\n\n if (total <= SLOT_COUNT) {\n const pages: number[] = []\n for (let i = 1; i <= total; i++) pages.push(i)\n return pages\n }\n\n const inner = SLOT_COUNT - 2\n let winStart = current - 1\n let winEnd = current + 1\n if (winStart < 2) {\n winEnd = Math.min(total - 1, winEnd + (2 - winStart))\n winStart = 2\n }\n if (winEnd > total - 1) {\n winStart = Math.max(2, winStart - (winEnd - (total - 1)))\n winEnd = total - 1\n }\n\n while (winEnd - winStart + 1 < inner) {\n const canExtendLeft = winStart > 2\n const canExtendRight = winEnd < total - 1\n if (!canExtendLeft && !canExtendRight) break\n\n const roomLeft = winStart - 2\n const roomRight = total - 1 - winEnd\n\n const ellipsisIfExtendLeft =\n ((canExtendLeft ? winStart - 1 : 0) > 2 ? 1 : 0) + (winEnd < total - 1 ? 1 : 0)\n const ellipsisIfExtendRight =\n (winStart > 2 ? 1 : 0) + ((canExtendRight ? winEnd + 1 : 0) < total - 1 ? 1 : 0)\n\n const newSize = winEnd - winStart + 2\n\n let extended = false\n if (\n canExtendLeft &&\n (roomLeft >= roomRight || !canExtendRight) &&\n newSize + ellipsisIfExtendLeft <= inner\n ) {\n winStart--\n extended = true\n } else if (canExtendRight && newSize + ellipsisIfExtendRight <= inner) {\n winEnd++\n extended = true\n }\n if (!extended) break\n }\n const showLeftEllipsis = winStart > 2\n const showRightEllipsis = winEnd < total - 1\n\n const pages: (number | '...')[] = []\n pages.push(1)\n if (showLeftEllipsis) pages.push('...')\n for (let p = winStart; p <= winEnd; p++) pages.push(p)\n if (showRightEllipsis) pages.push('...')\n pages.push(total)\n\n return pages\n})\n\nconst SLOT_COUNT = 7\n\nfunction shouldHideOnSmall(page: number) {\n const current = props.settings.page\n const total = totalPages.value\n\n const isEdge = page === 1 || page === total\n const isCurrent = page === current\n\n const isMiddleRange = current > 3 && current < total - 2\n\n return isMiddleRange && !isEdge && !isCurrent\n}\n\nfunction goToPage(page: number) {\n if (page < 1 || page > totalPages.value || page === props.settings.page) return\n emit('update:pagination', { page, pageSize: props.settings.pageSize })\n}\n\nfunction changePageSize(event: Event) {\n const size = Number((event.target as HTMLSelectElement).value)\n savePageSize(size)\n emit('update:pagination', { page: 1, pageSize: size })\n}\n</script>\n\n<template>\n <div class=\"ac-component\">\n <div class=\"c-paginator-wrapper\">\n <div class=\"c-paginator\">\n <div class=\"c-paginator__info\">\n <span class=\"c-paginator__range\">{{ rangeStart }}–{{ rangeEnd }}</span>\n <span class=\"c-paginator__total\"> / {{ settings.total }}</span>\n </div>\n\n <nav class=\"c-paginator__nav\" aria-label=\"Pagination\">\n <Button\n icon=\"fa-solid fa-chevron-left\"\n rel=\"prev\"\n :disabled=\"settings.page <= 1\"\n :callback=\"() => goToPage(settings.page - 1)\"\n />\n\n <template v-for=\"(p, i) in visiblePages\" :key=\"i\">\n <span v-if=\"p === '...'\" class=\"c-paginator__ellipsis\">…</span>\n <button\n v-else\n type=\"button\"\n class=\"c-paginator__page\"\n :class=\"{\n 'is-active': p === settings.page,\n 'is-hidden-sm': shouldHideOnSmall(p),\n }\"\n @click=\"goToPage(p)\"\n >\n {{ p }}\n </button>\n </template>\n\n <Button\n icon=\"fa-solid fa-chevron-right\"\n rel=\"next\"\n :disabled=\"settings.page >= totalPages\"\n :callback=\"() => goToPage(settings.page + 1)\"\n />\n </nav>\n\n <div class=\"c-paginator__size\">\n <select\n class=\"c-paginator__select\"\n id=\"page-size-select\"\n :value=\"settings.pageSize\"\n @change=\"changePageSize\"\n >\n <option v-for=\"s in SIZE_OPTIONS\" :key=\"s\" :value=\"s\">{{ s }} elem / oldal</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/data-paginator.scss\"></style>\n"],"mappings":""}
|
|
@@ -1,239 +1,60 @@
|
|
|
1
1
|
import { formatDate as e } from "./admins-components3.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
"onClick",
|
|
27
|
-
"onKeydown"
|
|
28
|
-
], E = { class: "filters-history__item-header-text" }, D = { class: "filters-history__item-name" }, O = {
|
|
29
|
-
key: 0,
|
|
30
|
-
class: "filters-history__item-date"
|
|
31
|
-
}, k = [
|
|
32
|
-
"onClick",
|
|
33
|
-
"aria-label",
|
|
34
|
-
"title"
|
|
35
|
-
], A = ["onClick"], j = ["onClick"], M = ["onClick"], N = {
|
|
36
|
-
key: 0,
|
|
37
|
-
class: "filters-history__item-content"
|
|
38
|
-
}, P = {
|
|
39
|
-
key: 0,
|
|
40
|
-
class: "filters-history__item-body"
|
|
41
|
-
}, F = {
|
|
42
|
-
key: 1,
|
|
43
|
-
class: "filters-history__item-empty"
|
|
44
|
-
}, I = { key: 3 }, L = /* @__PURE__ */ f({
|
|
45
|
-
__name: "FiltersHistory",
|
|
46
|
-
props: {
|
|
47
|
-
items: {},
|
|
48
|
-
values: {},
|
|
49
|
-
storageKey: {}
|
|
50
|
-
},
|
|
51
|
-
emits: ["load"],
|
|
52
|
-
setup(f, { emit: L }) {
|
|
53
|
-
let R = f, z = L, B = g(!1), V = g([]), H = g(""), U = g(/* @__PURE__ */ new Set()), W = g(!1);
|
|
54
|
-
function G(e) {
|
|
55
|
-
return U.value.has(e);
|
|
56
|
-
}
|
|
57
|
-
function K(e) {
|
|
58
|
-
let t = new Set(U.value);
|
|
59
|
-
t.has(e) ? t.delete(e) : t.add(e), U.value = t;
|
|
60
|
-
}
|
|
61
|
-
function pe() {
|
|
62
|
-
V.value = ee(R.storageKey);
|
|
63
|
-
}
|
|
64
|
-
function q() {
|
|
65
|
-
try {
|
|
66
|
-
let e = r("filters", R.storageKey);
|
|
67
|
-
localStorage.setItem(e, JSON.stringify(V.value));
|
|
68
|
-
} catch {
|
|
69
|
-
console.warn("Failed to persist saved filters to localStorage");
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
ne(pe);
|
|
73
|
-
let J = o(() => Object.values(R.values).some((e) => e !== null && e !== "" && e !== void 0));
|
|
74
|
-
function me() {
|
|
75
|
-
return Date.now().toString(36);
|
|
76
|
-
}
|
|
77
|
-
re(() => [R.values, H.value], () => {
|
|
78
|
-
Y.value &&= !1;
|
|
79
|
-
}, { deep: !0 });
|
|
80
|
-
let Y = g(!1);
|
|
81
|
-
function X() {
|
|
82
|
-
if (!J.value) return;
|
|
83
|
-
let e = H.value.trim();
|
|
84
|
-
V.value = [{
|
|
85
|
-
id: me(),
|
|
86
|
-
savedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
87
|
-
name: e || void 0,
|
|
88
|
-
values: { ...R.values }
|
|
89
|
-
}, ...V.value].slice(0, 50), H.value = "", q(), p(() => {
|
|
90
|
-
Y.value = !0;
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
function he(e) {
|
|
94
|
-
z("load", { ...e.values });
|
|
95
|
-
}
|
|
96
|
-
function Z(e) {
|
|
97
|
-
if (V.value = V.value.filter((t) => t.id !== e.id), U.value.has(e.id)) {
|
|
98
|
-
let t = new Set(U.value);
|
|
99
|
-
t.delete(e.id), U.value = t;
|
|
100
|
-
}
|
|
101
|
-
q();
|
|
102
|
-
}
|
|
103
|
-
function ge() {
|
|
104
|
-
V.value = [], U.value = /* @__PURE__ */ new Set(), q(), W.value = !1;
|
|
105
|
-
}
|
|
106
|
-
function Q(e) {
|
|
107
|
-
return i(R.items, e.values);
|
|
2
|
+
//#region src/utils/filterDisplay.ts
|
|
3
|
+
function t(t, r, i) {
|
|
4
|
+
if (i == null || i === "") return "";
|
|
5
|
+
let a = t.find((e) => e.key === r);
|
|
6
|
+
if (a?.type === "dropdown" && a.options) {
|
|
7
|
+
let e = n(i);
|
|
8
|
+
if (Array.isArray(e)) return e.map((e) => {
|
|
9
|
+
let t = a.options?.find((t) => t.value === e);
|
|
10
|
+
return t ? t.label : String(e);
|
|
11
|
+
}).join(", ");
|
|
12
|
+
let t = a.options.find((t) => t.value === e);
|
|
13
|
+
if (t) return t.label;
|
|
14
|
+
}
|
|
15
|
+
if (a?.type === "checkbox") return i ? "Bekapcsolva" : "";
|
|
16
|
+
if (a?.type === "date" || a?.type === "datetime") {
|
|
17
|
+
if (typeof i == "object" && i) {
|
|
18
|
+
let t = i.local ?? i.utc ?? null;
|
|
19
|
+
if (t == null) return "";
|
|
20
|
+
let n = t instanceof Date ? t : new Date(t);
|
|
21
|
+
if (!isNaN(n.getTime())) return e(n, a.type === "datetime" ? "YYYY-MM-DD HH:mm" : "YYYY-MM-DD");
|
|
22
|
+
}
|
|
23
|
+
if (typeof i == "string" && i) {
|
|
24
|
+
let t = new Date(i);
|
|
25
|
+
if (!isNaN(t.getTime())) return e(t, a.type === "datetime" ? "YYYY-MM-DD HH:mm" : "YYYY-MM-DD");
|
|
108
26
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
27
|
+
}
|
|
28
|
+
if ((a?.type === "daterange" || a?.type === "datetimerange") && typeof i == "object") {
|
|
29
|
+
let t = a.type === "datetimerange" ? "YYYY-MM-DD HH:mm" : "YYYY-MM-DD";
|
|
30
|
+
return `${i.fromUtc ? e(new Date(i.fromUtc), t) : "…"} - ${i.toUtc ? e(new Date(i.toUtc), t) : "…"}`;
|
|
31
|
+
}
|
|
32
|
+
return typeof i == "object" ? JSON.stringify(i) : String(i);
|
|
33
|
+
}
|
|
34
|
+
function n(e) {
|
|
35
|
+
if (Array.isArray(e)) return e;
|
|
36
|
+
if (typeof e == "string") {
|
|
37
|
+
if (e.startsWith("[") && e.endsWith("]")) try {
|
|
38
|
+
let t = JSON.parse(e);
|
|
39
|
+
if (Array.isArray(t)) return t;
|
|
40
|
+
} catch {}
|
|
41
|
+
return e;
|
|
42
|
+
}
|
|
43
|
+
return e;
|
|
44
|
+
}
|
|
45
|
+
function r(e, n) {
|
|
46
|
+
let r = [];
|
|
47
|
+
for (let [i, a] of Object.entries(n)) {
|
|
48
|
+
let n = t(e, i, a);
|
|
49
|
+
if (!n) continue;
|
|
50
|
+
let o = e.find((e) => e.key === i), s = o?.label ?? i;
|
|
51
|
+
r.push({
|
|
52
|
+
key: i,
|
|
53
|
+
text: `${s}: ${n}`,
|
|
54
|
+
displayClass: o?.displayClass
|
|
113
55
|
});
|
|
114
|
-
function $(e) {
|
|
115
|
-
return _e.value.get(e.id) ?? Q(e);
|
|
116
|
-
}
|
|
117
|
-
let ve = o(() => {
|
|
118
|
-
let e = V.value.find((e) => e.isDefault);
|
|
119
|
-
return e ? [e, ...V.value.filter((e) => !e.isDefault)] : V.value;
|
|
120
|
-
}), ye = o(() => V.value.length >= 43);
|
|
121
|
-
function be(t) {
|
|
122
|
-
let n = new Date(t);
|
|
123
|
-
return isNaN(n.getTime()) ? t : e(n, "YYYY-MM-DD HH:mm");
|
|
124
|
-
}
|
|
125
|
-
function xe(e) {
|
|
126
|
-
e.isDefault ? e.isDefault = !1 : (V.value.forEach((e) => {
|
|
127
|
-
e.isDefault = !1;
|
|
128
|
-
}), e.isDefault = !0), q();
|
|
129
|
-
}
|
|
130
|
-
return (e, r) => {
|
|
131
|
-
let i = v("tooltip");
|
|
132
|
-
return h(), l("div", ie, [u("div", ae, [u("button", {
|
|
133
|
-
type: "button",
|
|
134
|
-
class: m(["filters-history__toggle", { "is-open": B.value }]),
|
|
135
|
-
"aria-expanded": B.value,
|
|
136
|
-
onClick: r[0] ||= (e) => B.value = !B.value
|
|
137
|
-
}, [
|
|
138
|
-
r[6] ||= u("i", { class: "fa-solid fa-sliders filters-history__toggle-icon" }, null, -1),
|
|
139
|
-
r[7] ||= u("span", { class: "filters-history__toggle-label" }, "Mentett szűrők", -1),
|
|
140
|
-
V.value.length ? (h(), l("span", se, y(V.value.length), 1)) : c("", !0),
|
|
141
|
-
ye.value ? x((h(), l("span", ce, [d("/ " + y(50))])), [[i, "Maximum 50 szűrő menthető"]]) : c("", !0),
|
|
142
|
-
u("i", { class: m(["fa-solid filters-history__chevron", B.value ? "fa-chevron-up" : "fa-chevron-down"]) }, null, 2)
|
|
143
|
-
], 10, oe), B.value ? (h(), l("div", le, [
|
|
144
|
-
u("div", ue, [x(u("input", {
|
|
145
|
-
"onUpdate:modelValue": r[1] ||= (e) => H.value = e,
|
|
146
|
-
type: "text",
|
|
147
|
-
class: "c-input-row c-input-row--sm",
|
|
148
|
-
placeholder: "Elnevezés",
|
|
149
|
-
onKeydown: S(X, ["enter"])
|
|
150
|
-
}, null, 544), [[b, H.value]]), te(t, {
|
|
151
|
-
icon: "fa-solid fa-bookmark",
|
|
152
|
-
label: "Mentés",
|
|
153
|
-
size: "small",
|
|
154
|
-
type: "info",
|
|
155
|
-
disabled: !J.value || Y.value,
|
|
156
|
-
onClick: X
|
|
157
|
-
}, null, 8, ["disabled"])]),
|
|
158
|
-
!J.value && V.value.length === 0 ? (h(), l("p", de, " Nincs aktív szűrő. Adj meg értékeket a mentéshez. ")) : V.value.length === 0 ? (h(), l("p", fe, [...r[8] ||= [
|
|
159
|
-
d(" Még nincs mentett szűrő.", -1),
|
|
160
|
-
u("br", null, null, -1),
|
|
161
|
-
d(" Az aktuális beállítások a „Mentés\" gombbal menthetők.", -1),
|
|
162
|
-
u("br", null, null, -1),
|
|
163
|
-
d(" Az „Elnevezés\" mező csak a könnyebb azonosítás miatt van, megadása nem kötelező. ", -1)
|
|
164
|
-
]])) : c("", !0),
|
|
165
|
-
V.value.length > 0 ? (h(), l("ul", w, [(h(!0), l(a, null, _(ve.value, (e) => (h(), l("li", {
|
|
166
|
-
key: e.id,
|
|
167
|
-
class: m(["filters-history__item", {
|
|
168
|
-
"is-open": G(e.id),
|
|
169
|
-
"is-default": e.isDefault
|
|
170
|
-
}])
|
|
171
|
-
}, [u("div", {
|
|
172
|
-
class: "filters-history__item-header",
|
|
173
|
-
role: "button",
|
|
174
|
-
tabindex: "0",
|
|
175
|
-
"aria-expanded": G(e.id),
|
|
176
|
-
onClick: (t) => K(e.id),
|
|
177
|
-
onKeydown: [S(C((t) => K(e.id), ["prevent"]), ["enter"]), S(C((t) => K(e.id), ["prevent"]), ["space"])]
|
|
178
|
-
}, [
|
|
179
|
-
u("i", { class: m(["fa-solid filters-history__item-chevron", G(e.id) ? "fa-chevron-down" : "fa-chevron-right"]) }, null, 2),
|
|
180
|
-
u("span", E, [u("span", D, y(e.name), 1), e.name ? (h(), l("span", O, y(be(e.savedAt)), 1)) : c("", !0)]),
|
|
181
|
-
u("div", {
|
|
182
|
-
class: "filters-history__item-actions",
|
|
183
|
-
onClick: r[2] ||= C(() => {}, ["stop"])
|
|
184
|
-
}, [
|
|
185
|
-
u("button", {
|
|
186
|
-
type: "button",
|
|
187
|
-
class: m(["c-indicator filters-history__item-btn filters-history__item-default", { active: e.isDefault }]),
|
|
188
|
-
onClick: (t) => xe(e),
|
|
189
|
-
"aria-label": e.isDefault ? "Alapértelmezett szűrő törlése" : "Alapértelmezett szűrő beállítása",
|
|
190
|
-
title: e.isDefault ? "Alapértelmezett szűrő törlése" : "Alapértelmezett szűrő beállítása"
|
|
191
|
-
}, [u("i", { class: m(["fa-star fix-icon-pos", e.isDefault ? "fa-solid" : "fa-regular"]) }, null, 2)], 10, k),
|
|
192
|
-
u("button", {
|
|
193
|
-
type: "button",
|
|
194
|
-
class: "c-indicator filters-history__item-btn filters-history__item-load",
|
|
195
|
-
"aria-label": "Betöltés",
|
|
196
|
-
title: "Betöltés",
|
|
197
|
-
onClick: (t) => he(e)
|
|
198
|
-
}, [...r[9] ||= [u("i", { class: "fa-solid fa-check" }, null, -1)]], 8, A),
|
|
199
|
-
$(e).length ? x((h(), l("span", {
|
|
200
|
-
key: 0,
|
|
201
|
-
class: "c-indicator",
|
|
202
|
-
onClick: C((t) => K(e.id), ["stop"])
|
|
203
|
-
}, [d(y($(e).length), 1)], 8, j)), [[i, `${$(e).length} szűrési feltétel`]]) : c("", !0),
|
|
204
|
-
u("button", {
|
|
205
|
-
type: "button",
|
|
206
|
-
class: "c-indicator filters-history__item-btn filters-history__item-remove",
|
|
207
|
-
"aria-label": "Törlés",
|
|
208
|
-
title: "Törlés",
|
|
209
|
-
onClick: (t) => Z(e)
|
|
210
|
-
}, [...r[10] ||= [u("i", { class: "fa-solid fa-xmark" }, null, -1)]], 8, M)
|
|
211
|
-
])
|
|
212
|
-
], 40, T), G(e.id) ? (h(), l("div", N, [$(e).length ? (h(), l("div", P, [(h(!0), l(a, null, _($(e), (e, t) => (h(), l("span", {
|
|
213
|
-
key: t,
|
|
214
|
-
class: m(["c-chip", e.displayClass])
|
|
215
|
-
}, y(e.text), 3))), 128))])) : (h(), l("p", F, "Nincs megjeleníthető szűrő."))])) : c("", !0)], 2))), 128))])) : c("", !0),
|
|
216
|
-
V.value.length > 3 ? (h(), l("div", I, [
|
|
217
|
-
r[11] ||= u("hr", { class: "separator my-1" }, null, -1),
|
|
218
|
-
V.value.length ? (h(), l("a", {
|
|
219
|
-
key: 0,
|
|
220
|
-
class: "filters-history__clear-all px-2",
|
|
221
|
-
onClick: r[3] ||= (e) => W.value = !0
|
|
222
|
-
}, "Összes törlése")) : c("", !0),
|
|
223
|
-
W.value ? (h(), s(n, {
|
|
224
|
-
key: 1,
|
|
225
|
-
title: "Mentett szűrők törlése",
|
|
226
|
-
message: "Biztosan törlöd az összes mentett szűrőt?",
|
|
227
|
-
"confirm-label": "Törlés",
|
|
228
|
-
"cancel-label": "Mégse",
|
|
229
|
-
type: "error",
|
|
230
|
-
onConfirm: r[4] ||= (e) => ge(),
|
|
231
|
-
onCancel: r[5] ||= (e) => W.value = !1
|
|
232
|
-
})) : c("", !0)
|
|
233
|
-
])) : c("", !0)
|
|
234
|
-
])) : c("", !0)])]);
|
|
235
|
-
};
|
|
236
56
|
}
|
|
237
|
-
|
|
57
|
+
return r;
|
|
58
|
+
}
|
|
238
59
|
//#endregion
|
|
239
|
-
export {
|
|
60
|
+
export { r as buildFilterDisplay, t as displayFilterValue, n as parseDropdownValue };
|