admins-components 9.0.66 → 9.0.68
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 +39 -39
- package/dist/admins-components100.js +75 -249
- package/dist/admins-components100.js.map +1 -1
- package/dist/admins-components102.js +2 -2
- package/dist/admins-components102.js.map +1 -1
- package/dist/admins-components103.js +256 -3
- package/dist/admins-components103.js.map +1 -1
- package/dist/admins-components105.js +6 -52
- package/dist/admins-components105.js.map +1 -1
- package/dist/admins-components106.js +3 -82
- package/dist/admins-components106.js.map +1 -1
- package/dist/admins-components107.js +3 -113
- package/dist/admins-components107.js.map +1 -1
- package/dist/admins-components108.js +49 -44
- package/dist/admins-components108.js.map +1 -1
- package/dist/admins-components109.js +80 -104
- package/dist/admins-components109.js.map +1 -1
- package/dist/admins-components110.js +109 -16
- package/dist/admins-components110.js.map +1 -1
- package/dist/admins-components111.js +46 -6
- package/dist/admins-components111.js.map +1 -1
- package/dist/admins-components112.js +100 -246
- package/dist/admins-components112.js.map +1 -1
- package/dist/admins-components113.js +19 -26
- package/dist/admins-components113.js.map +1 -1
- package/dist/admins-components114.js +6 -27
- package/dist/admins-components114.js.map +1 -1
- package/dist/admins-components115.js +239 -159
- package/dist/admins-components115.js.map +1 -1
- package/dist/admins-components116.js +26 -67
- package/dist/admins-components116.js.map +1 -1
- package/dist/admins-components117.js +25 -64
- package/dist/admins-components117.js.map +1 -1
- package/dist/admins-components118.js +169 -27
- package/dist/admins-components118.js.map +1 -1
- package/dist/admins-components119.js +65 -13
- package/dist/admins-components119.js.map +1 -1
- package/dist/admins-components120.js +64 -24
- package/dist/admins-components120.js.map +1 -1
- package/dist/admins-components121.js +29 -8
- package/dist/admins-components121.js.map +1 -1
- package/dist/admins-components122.js +16 -4
- package/dist/admins-components122.js.map +1 -1
- package/dist/admins-components123.js +27 -3
- package/dist/admins-components123.js.map +1 -1
- package/dist/admins-components124.js +8 -2
- package/dist/admins-components124.js.map +1 -1
- package/dist/admins-components125.js +4 -21
- package/dist/admins-components125.js.map +1 -1
- package/dist/admins-components126.js +3 -14
- package/dist/admins-components126.js.map +1 -1
- package/dist/admins-components127.js +3 -8
- package/dist/admins-components127.js.map +1 -1
- package/dist/admins-components128.js +19 -11
- package/dist/admins-components128.js.map +1 -1
- package/dist/admins-components129.js +14 -26
- package/dist/admins-components129.js.map +1 -1
- package/dist/admins-components130.js +7 -82
- package/dist/admins-components130.js.map +1 -1
- package/dist/admins-components131.js +9 -7
- package/dist/admins-components131.js.map +1 -1
- package/dist/admins-components132.js +25 -4
- package/dist/admins-components132.js.map +1 -1
- package/dist/admins-components133.js +81 -6
- package/dist/admins-components133.js.map +1 -1
- package/dist/admins-components134.js +10 -6
- package/dist/admins-components134.js.map +1 -1
- package/dist/admins-components135.js +2 -3
- package/dist/admins-components135.js.map +1 -1
- package/dist/admins-components136.js +8 -15
- package/dist/admins-components136.js.map +1 -1
- package/dist/admins-components137.js +6 -12
- package/dist/admins-components137.js.map +1 -1
- package/dist/admins-components138.js +6 -30
- package/dist/admins-components138.js.map +1 -1
- package/dist/admins-components139.js +15 -4
- package/dist/admins-components139.js.map +1 -1
- package/dist/admins-components140.js +13 -29
- package/dist/admins-components140.js.map +1 -1
- package/dist/admins-components141.js +30 -5
- package/dist/admins-components141.js.map +1 -1
- package/dist/admins-components142.js +4 -5
- package/dist/admins-components142.js.map +1 -1
- package/dist/admins-components143.js +28 -7
- package/dist/admins-components143.js.map +1 -1
- package/dist/admins-components144.js +4 -73
- package/dist/admins-components144.js.map +1 -1
- package/dist/admins-components145.js +4 -28
- package/dist/admins-components145.js.map +1 -1
- package/dist/admins-components146.js +8 -59
- package/dist/admins-components146.js.map +1 -1
- package/dist/admins-components147.js +72 -22
- package/dist/admins-components147.js.map +1 -1
- package/dist/admins-components148.js +26 -47
- package/dist/admins-components148.js.map +1 -1
- package/dist/admins-components149.js +58 -30
- package/dist/admins-components149.js.map +1 -1
- package/dist/admins-components150.js +24 -3
- package/dist/admins-components150.js.map +1 -1
- package/dist/admins-components151.js +44 -173
- package/dist/admins-components151.js.map +1 -1
- package/dist/admins-components152.js +28 -43
- package/dist/admins-components152.js.map +1 -1
- package/dist/admins-components153.js +3 -37
- package/dist/admins-components153.js.map +1 -1
- package/dist/admins-components154.js +176 -43
- package/dist/admins-components154.js.map +1 -1
- package/dist/admins-components155.js +41 -136
- package/dist/admins-components155.js.map +1 -1
- package/dist/admins-components156.js +36 -57
- package/dist/admins-components156.js.map +1 -1
- package/dist/admins-components157.js +44 -5
- package/dist/admins-components157.js.map +1 -1
- package/dist/admins-components158.js +141 -6
- package/dist/admins-components158.js.map +1 -1
- package/dist/admins-components159.js +57 -75
- package/dist/admins-components159.js.map +1 -1
- package/dist/admins-components160.js +6 -28
- package/dist/admins-components160.js.map +1 -1
- package/dist/admins-components161.js +5 -1930
- package/dist/admins-components161.js.map +1 -1
- package/dist/admins-components162.js +75 -24810
- package/dist/admins-components162.js.map +1 -1
- package/dist/admins-components163.js +28 -8
- package/dist/admins-components163.js.map +1 -1
- package/dist/admins-components164.js +1929 -5
- package/dist/admins-components164.js.map +1 -0
- package/dist/admins-components165.js +24809 -140
- package/dist/admins-components165.js.map +1 -1
- package/dist/admins-components166.js +3 -3
- package/dist/admins-components166.js.map +1 -1
- package/dist/admins-components167.js +7 -9
- package/dist/admins-components168.js +143 -0
- package/dist/admins-components168.js.map +1 -0
- package/dist/admins-components169.js +8 -167
- package/dist/admins-components169.js.map +1 -1
- package/dist/admins-components170.js +8 -52
- package/dist/admins-components170.js.map +1 -1
- package/dist/admins-components172.js +161 -43
- package/dist/admins-components172.js.map +1 -1
- package/dist/admins-components173.js +53 -6
- package/dist/admins-components173.js.map +1 -1
- package/dist/admins-components174.js +8 -79
- package/dist/admins-components174.js.map +1 -1
- package/dist/admins-components175.js +35 -43
- package/dist/admins-components175.js.map +1 -1
- package/dist/admins-components176.js +6 -63
- package/dist/admins-components176.js.map +1 -1
- package/dist/admins-components177.js +79 -8
- package/dist/admins-components177.js.map +1 -1
- package/dist/admins-components178.js +43 -37
- package/dist/admins-components178.js.map +1 -1
- package/dist/admins-components179.js +62 -8
- package/dist/admins-components179.js.map +1 -1
- package/dist/admins-components180.js +10 -0
- package/dist/admins-components180.js.map +1 -0
- package/dist/admins-components181.js +44 -50
- package/dist/admins-components181.js.map +1 -1
- package/dist/admins-components182.js +10 -0
- package/dist/admins-components182.js.map +1 -0
- package/dist/admins-components184.js +59 -0
- package/dist/admins-components184.js.map +1 -0
- package/dist/admins-components29.js.map +1 -1
- package/dist/admins-components30.js.map +1 -1
- package/dist/admins-components5.js.map +1 -1
- package/dist/admins-components6.js.map +1 -1
- package/dist/admins-components60.js +31 -73
- package/dist/admins-components60.js.map +1 -1
- package/dist/admins-components62.js +4 -2
- package/dist/admins-components62.js.map +1 -1
- package/dist/admins-components63.js +95 -88
- package/dist/admins-components63.js.map +1 -1
- package/dist/admins-components64.js +70 -4
- package/dist/admins-components64.js.map +1 -1
- package/dist/admins-components65.js +4 -157
- package/dist/admins-components65.js.map +1 -1
- package/dist/admins-components66.js +90 -0
- package/dist/admins-components66.js.map +1 -0
- package/dist/admins-components67.js +2 -5
- package/dist/admins-components67.js.map +1 -1
- package/dist/admins-components68.js +130 -136
- package/dist/admins-components68.js.map +1 -1
- package/dist/admins-components70.js +2 -2
- package/dist/admins-components70.js.map +1 -1
- package/dist/admins-components71.js +163 -7
- package/dist/admins-components71.js.map +1 -1
- package/dist/admins-components73.js +8 -0
- package/dist/admins-components73.js.map +1 -0
- package/dist/admins-components74.js +7 -6
- package/dist/admins-components74.js.map +1 -1
- package/dist/admins-components75.js +289 -8
- package/dist/admins-components75.js.map +1 -1
- package/dist/admins-components77.js +6 -145
- package/dist/admins-components77.js.map +1 -1
- package/dist/admins-components78.js +10 -0
- package/dist/admins-components78.js.map +1 -0
- package/dist/admins-components79.js +43 -6
- package/dist/admins-components79.js.map +1 -1
- package/dist/admins-components80.js +130 -121
- package/dist/admins-components80.js.map +1 -1
- package/dist/admins-components82.js +2 -2
- package/dist/admins-components82.js.map +1 -1
- package/dist/admins-components83.js +133 -56
- package/dist/admins-components83.js.map +1 -1
- package/dist/admins-components85.js +6 -238
- package/dist/admins-components85.js.map +1 -1
- package/dist/admins-components86.js +60 -0
- package/dist/admins-components86.js.map +1 -0
- package/dist/admins-components87.js +67 -6
- package/dist/admins-components87.js.map +1 -1
- package/dist/admins-components88.js +216 -208
- package/dist/admins-components88.js.map +1 -1
- package/dist/admins-components90.js +2 -2
- package/dist/admins-components90.js.map +1 -1
- package/dist/admins-components91.js +218 -58
- package/dist/admins-components91.js.map +1 -1
- package/dist/admins-components93.js +2 -2
- package/dist/admins-components93.js.map +1 -1
- package/dist/admins-components94.js +65 -194
- package/dist/admins-components94.js.map +1 -1
- package/dist/admins-components96.js +2 -2
- package/dist/admins-components96.js.map +1 -1
- package/dist/admins-components97.js +188 -71
- package/dist/admins-components97.js.map +1 -1
- package/dist/admins-components99.js +2 -2
- package/dist/admins-components99.js.map +1 -1
- package/dist/src/components/Button.vue.d.ts +0 -4
- package/dist/src/components/DropdownMenu.vue.d.ts +0 -4
- package/dist/src/components/data-table/DataList.vue.d.ts +0 -5
- package/dist/src/components/data-table/DataSearch.vue.d.ts +0 -4
- package/dist/src/components/data-table/DataSort.vue.d.ts +0 -5
- package/dist/src/components/data-table/FilterTags.vue.d.ts +0 -6
- package/dist/src/components/data-table/TagList.vue.d.ts +18 -0
- package/dist/src/index.d.ts +1 -1
- package/dist/src/styles/components/data-table/tag-list.scss_vue_type_style_index_0_src_true_lang.css +1 -0
- package/dist/src/utils/dataListConverters.d.ts +16 -1
- package/package.json +1 -1
- package/dist/admins-components104.js +0 -4
- package/dist/admins-components104.js.map +0 -1
- package/dist/admins-components167.js.map +0 -1
- package/dist/admins-components171.js +0 -10
- package/dist/admins-components171.js.map +0 -1
- package/dist/admins-components61.js +0 -71
- package/dist/admins-components61.js.map +0 -1
- package/dist/admins-components72.js +0 -289
- package/dist/admins-components72.js.map +0 -1
- package/dist/admins-components76.js +0 -44
- package/dist/admins-components76.js.map +0 -1
- package/dist/admins-components84.js +0 -68
- package/dist/admins-components84.js.map +0 -1
|
@@ -1,71 +1,231 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import e from "./admins-components6.js";
|
|
2
|
+
import t from "./admins-components14.js";
|
|
3
|
+
import n from "./admins-components17.js";
|
|
4
|
+
import r from "./admins-components19.js";
|
|
5
|
+
import i from "./admins-components22.js";
|
|
6
|
+
import a from "./admins-components28.js";
|
|
7
|
+
import o from "./admins-components34.js";
|
|
8
|
+
import { filterEmptyValues as s, getDefaultFilters as c, writeFilterParams as l } from "./admins-components87.js";
|
|
9
|
+
import u from "./admins-components90.js";
|
|
10
|
+
import { Fragment as d, computed as f, createBlock as p, createCommentVNode as m, createElementBlock as h, createElementVNode as g, createVNode as _, defineComponent as v, mergeProps as y, normalizeClass as b, openBlock as x, ref as S, renderList as C, toDisplayString as w, withCtx as T } from "vue";
|
|
11
|
+
//#region src/components/data-table/DataFilters.vue?vue&type=script&setup=true&lang.ts
|
|
12
|
+
var E = {
|
|
13
|
+
key: 0,
|
|
14
|
+
class: "data-filters__separator"
|
|
15
|
+
}, D = ["for"], O = { class: "c-label" }, k = { class: "c-label" }, A = { class: "data-filters__footer" }, j = /* @__PURE__ */ v({
|
|
16
|
+
__name: "DataFilters",
|
|
7
17
|
props: {
|
|
8
|
-
filters: {},
|
|
9
18
|
items: {},
|
|
10
|
-
|
|
11
|
-
|
|
19
|
+
open: {
|
|
20
|
+
type: Boolean,
|
|
21
|
+
default: !1
|
|
22
|
+
},
|
|
23
|
+
position: { default: "left" },
|
|
24
|
+
lazy: {
|
|
25
|
+
type: Boolean,
|
|
26
|
+
default: !0
|
|
27
|
+
},
|
|
28
|
+
handleUrl: {
|
|
29
|
+
type: Boolean,
|
|
30
|
+
default: !1
|
|
31
|
+
},
|
|
32
|
+
historyEnabled: {
|
|
33
|
+
type: Boolean,
|
|
34
|
+
default: !0
|
|
35
|
+
},
|
|
36
|
+
storageKey: {}
|
|
12
37
|
},
|
|
13
|
-
emits: ["
|
|
14
|
-
setup(
|
|
15
|
-
let
|
|
16
|
-
function
|
|
17
|
-
|
|
18
|
-
return t?.type === "daterange" || t?.type === "datetimerange";
|
|
38
|
+
emits: ["close", "change"],
|
|
39
|
+
setup(v, { expose: j, emit: M }) {
|
|
40
|
+
let N = v, P = M, F = S(c(N.items, N.storageKey, !1)), I = S({});
|
|
41
|
+
function L(e, t) {
|
|
42
|
+
t ? I.value[e] = t : delete I.value[e];
|
|
19
43
|
}
|
|
20
|
-
function
|
|
21
|
-
return
|
|
44
|
+
function R(e) {
|
|
45
|
+
return {
|
|
46
|
+
...e.config ?? {},
|
|
47
|
+
showTime: e.type === "datetime",
|
|
48
|
+
placeholder: e.placeholder ?? (e.type === "datetime" ? "Időpont" : "Dátum")
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function z(e) {
|
|
52
|
+
return {
|
|
53
|
+
...e.config ?? {},
|
|
54
|
+
...e.fullWidth ? {} : { compact: !0 },
|
|
55
|
+
showTime: e.type === "datetimerange"
|
|
56
|
+
};
|
|
22
57
|
}
|
|
23
|
-
function
|
|
24
|
-
|
|
58
|
+
function B(e, t) {
|
|
59
|
+
let n = typeof t == "string" ? t.trim() : t;
|
|
60
|
+
F.value = {
|
|
61
|
+
...F.value,
|
|
62
|
+
[e.key]: n
|
|
63
|
+
}, e.onChange && e.onChange(n), N.lazy || U();
|
|
25
64
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
65
|
+
let V = f(() => Object.values(F.value).some((e) => e !== null && e !== "" && e !== void 0));
|
|
66
|
+
function H() {
|
|
67
|
+
let e = {};
|
|
68
|
+
for (let t of N.items) {
|
|
69
|
+
if (t.type === "separator") continue;
|
|
70
|
+
let n = F.value[t.key];
|
|
71
|
+
t.transformer ? Object.assign(e, t.transformer(n) ?? {}) : t.type === "date" || t.type === "datetime" ? e[t.key] = n?.utc ?? n : e[t.key] = n;
|
|
72
|
+
}
|
|
30
73
|
return {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
title: `${a} - ${o}`
|
|
74
|
+
values: s(F.value),
|
|
75
|
+
transformed: s(e)
|
|
34
76
|
};
|
|
35
77
|
}
|
|
36
|
-
function
|
|
37
|
-
|
|
78
|
+
function U() {
|
|
79
|
+
N.handleUrl && l(N.items, F.value), P("change", H());
|
|
80
|
+
}
|
|
81
|
+
function W() {
|
|
82
|
+
U(), P("close");
|
|
83
|
+
}
|
|
84
|
+
function G() {
|
|
85
|
+
F.value = {}, U();
|
|
86
|
+
}
|
|
87
|
+
function K(e) {
|
|
88
|
+
F.value = {
|
|
89
|
+
...F.value,
|
|
90
|
+
[e]: null
|
|
91
|
+
}, U();
|
|
92
|
+
}
|
|
93
|
+
function q(e) {
|
|
94
|
+
let t = I.value[e];
|
|
95
|
+
t && (typeof t.focusAndOpen == "function" ? t.focusAndOpen() : typeof t.focus == "function" && t.focus());
|
|
96
|
+
}
|
|
97
|
+
function J(e) {
|
|
98
|
+
let t = { ...F.value };
|
|
99
|
+
for (let n of N.items) n.type !== "separator" && n.key in e && (t[n.key] = e[n.key] ?? null);
|
|
100
|
+
F.value = t, U();
|
|
101
|
+
}
|
|
102
|
+
j({
|
|
103
|
+
clearFilter: K,
|
|
104
|
+
focusFilter: q
|
|
105
|
+
});
|
|
106
|
+
function Y(e) {
|
|
107
|
+
e.key === "Enter" && e.target?.tagName !== "TEXTAREA" && (e.preventDefault(), W());
|
|
108
|
+
}
|
|
109
|
+
function X(e, t) {
|
|
110
|
+
e.onInnerSearch && e.onInnerSearch(t);
|
|
38
111
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
112
|
+
return (s, c) => (x(), p(o, {
|
|
113
|
+
open: v.open,
|
|
114
|
+
title: "Szűrők",
|
|
115
|
+
position: v.position,
|
|
116
|
+
onClose: c[0] ||= (e) => P("close")
|
|
117
|
+
}, {
|
|
118
|
+
default: T(() => [
|
|
119
|
+
g("div", {
|
|
120
|
+
class: "data-filters",
|
|
121
|
+
onKeydown: Y
|
|
122
|
+
}, [(x(!0), h(d, null, C(v.items, (e) => (x(), h("div", {
|
|
123
|
+
key: e.key,
|
|
124
|
+
class: b(["data-filters__field", { "data-filters__field--full": e.fullWidth || e.type === "separator" }])
|
|
125
|
+
}, [e.type === "separator" ? (x(), h("hr", E)) : e.type === "checkbox" ? (x(), p(r, y({
|
|
126
|
+
key: 1,
|
|
127
|
+
ref_for: !0,
|
|
128
|
+
ref: (t) => L(e.key, t),
|
|
129
|
+
"model-value": F.value[e.key] ?? !1,
|
|
130
|
+
label: e.label ?? e.key,
|
|
131
|
+
"onUpdate:modelValue": (t) => B(e, t)
|
|
132
|
+
}, { ref_for: !0 }, e.config), null, 16, [
|
|
133
|
+
"model-value",
|
|
134
|
+
"label",
|
|
135
|
+
"onUpdate:modelValue"
|
|
136
|
+
])) : [
|
|
137
|
+
"text",
|
|
138
|
+
"number",
|
|
139
|
+
"textarea"
|
|
140
|
+
].includes(e.type) ? (x(), p(n, y({
|
|
141
|
+
key: 2,
|
|
142
|
+
type: e.type,
|
|
143
|
+
ref_for: !0,
|
|
144
|
+
ref: (t) => L(e.key, t),
|
|
145
|
+
id: `df-${e.key}`,
|
|
146
|
+
"model-value": F.value[e.key] ?? "",
|
|
147
|
+
label: e.label ?? e.key,
|
|
148
|
+
placeholder: e.placeholder,
|
|
149
|
+
"onUpdate:modelValue": (t) => B(e, t || null)
|
|
150
|
+
}, { ref_for: !0 }, e.config), null, 16, [
|
|
151
|
+
"type",
|
|
152
|
+
"id",
|
|
153
|
+
"model-value",
|
|
154
|
+
"label",
|
|
155
|
+
"placeholder",
|
|
156
|
+
"onUpdate:modelValue"
|
|
157
|
+
])) : e.type === "date" || e.type === "datetime" ? (x(), h(d, { key: 3 }, [g("label", {
|
|
158
|
+
class: "c-label",
|
|
159
|
+
for: `df-${e.key}`
|
|
160
|
+
}, w(e.label ?? e.key), 9, D), _(t, {
|
|
161
|
+
ref_for: !0,
|
|
162
|
+
ref: (t) => L(e.key, t),
|
|
163
|
+
id: `df-${e.key}`,
|
|
164
|
+
"model-value": F.value[e.key] ?? null,
|
|
165
|
+
config: R(e),
|
|
166
|
+
"onUpdate:modelValue": (t) => B(e, t)
|
|
167
|
+
}, null, 8, [
|
|
168
|
+
"id",
|
|
169
|
+
"model-value",
|
|
170
|
+
"config",
|
|
171
|
+
"onUpdate:modelValue"
|
|
172
|
+
])], 64)) : e.type === "daterange" || e.type === "datetimerange" ? (x(), h(d, { key: 4 }, [g("span", O, w(e.label ?? e.key), 1), _(i, {
|
|
173
|
+
ref_for: !0,
|
|
174
|
+
ref: (t) => L(e.key, t),
|
|
175
|
+
"model-value": F.value[e.key] ?? null,
|
|
176
|
+
config: z(e),
|
|
177
|
+
"onUpdate:modelValue": (t) => B(e, t)
|
|
178
|
+
}, null, 8, [
|
|
179
|
+
"model-value",
|
|
180
|
+
"config",
|
|
181
|
+
"onUpdate:modelValue"
|
|
182
|
+
])], 64)) : e.type === "dropdown" ? (x(), h(d, { key: 5 }, [g("span", k, w(e.label ?? e.key), 1), _(a, {
|
|
183
|
+
ref_for: !0,
|
|
184
|
+
ref: (t) => L(e.key, t),
|
|
185
|
+
"model-value": F.value[e.key] ?? null,
|
|
186
|
+
options: e.options ?? [],
|
|
187
|
+
config: {
|
|
188
|
+
...e.config ?? {},
|
|
189
|
+
placeholder: e.placeholder ?? "Válassz...",
|
|
190
|
+
clearable: !0,
|
|
191
|
+
filterable: !0
|
|
192
|
+
},
|
|
193
|
+
onFilterInput: (t) => X(e, t),
|
|
194
|
+
"onUpdate:modelValue": (t) => B(e, t)
|
|
195
|
+
}, null, 8, [
|
|
196
|
+
"model-value",
|
|
197
|
+
"options",
|
|
198
|
+
"config",
|
|
199
|
+
"onFilterInput",
|
|
200
|
+
"onUpdate:modelValue"
|
|
201
|
+
])], 64)) : m("", !0)], 2))), 128))], 32),
|
|
202
|
+
g("div", A, [_(e, {
|
|
203
|
+
icon: "fa-solid fa-trash-can",
|
|
204
|
+
disabled: !V.value,
|
|
205
|
+
label: "Szűrők törlése",
|
|
206
|
+
"aria-label": "Szűrők törlése",
|
|
207
|
+
size: "small",
|
|
208
|
+
onClick: G
|
|
209
|
+
}, null, 8, ["disabled"]), _(e, {
|
|
210
|
+
label: "Szűrés",
|
|
211
|
+
"aria-label": "Szűrés",
|
|
212
|
+
type: "success",
|
|
213
|
+
onClick: W
|
|
214
|
+
})]),
|
|
215
|
+
v.historyEnabled ? (x(), h(d, { key: 0 }, [c[1] ||= g("hr", { class: "separator my-3" }, null, -1), _(u, {
|
|
216
|
+
items: v.items,
|
|
217
|
+
values: F.value,
|
|
218
|
+
"storage-key": v.storageKey,
|
|
219
|
+
onLoad: J
|
|
220
|
+
}, null, 8, [
|
|
221
|
+
"items",
|
|
222
|
+
"values",
|
|
223
|
+
"storage-key"
|
|
224
|
+
])], 64)) : m("", !0)
|
|
225
|
+
]),
|
|
226
|
+
_: 1
|
|
227
|
+
}, 8, ["open", "position"]));
|
|
68
228
|
}
|
|
69
229
|
});
|
|
70
230
|
//#endregion
|
|
71
|
-
export {
|
|
231
|
+
export { j as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components91.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 /**\n * When `true`, daterange/datetimerange tags are rendered in compact mode:\n * the two dates stack under the key on separate lines, with a smaller\n * font and tighter line-height. When `false` (the default), daterange\n * tags render inline as a single line, identical to the legacy behavior.\n */\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,GAYR,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,GAAG,SAAS;EACtC;EAQA,SAAS,EAAkB,GAAa,GAAmC;GACzE,IAAM,IAAO,EAAc,CAAG;GAE9B,IADI,CAAC,KAAS,EAAK,SAAS,eAAe,EAAK,SAAS,mBACrD,CAAC,KAAS,OAAO,KAAU,UAAU,OAAO;GAEhD,IAAM,IADW,EAAK,SAAS,kBACR,qBAAqB,cACtC,IAAO,EAAM,UAAU,EAAW,IAAI,KAAK,EAAM,OAAO,GAAG,CAAG,IAAI,KAClE,IAAK,EAAM,QAAQ,EAAW,IAAI,KAAK,EAAM,KAAK,GAAG,CAAG,IAAI;GAClE,OAAO;IAAE;IAAM;IAAI,OAAO,GAAG,EAAK,KAAK;GAAK;EAC9C;EAEA,SAAS,EAAS,GAAoC;GACpD,OAAO,EAAkB,GAAK,EAAM,QAAQ,EAAI;EAClD;EAEA,IAAM,IAAU,QACd,OAAO,QAAQ,EAAM,OAAO,EAAE,QAC3B,GAAG,OAAW,KAAS,QAAQ,MAAU,EAC5C,CACF;yBAIE,EAsDM,OAtDN,GAsDM,EAAA,EAAA,EAAA,GArDJ,EAoDW,GAAA,MAAA,EApDwB,EAAA,QAAO,CAAvB,GAAK,oBAA0B,OAAG,GAAA,CAE3C,KAAK,QAAY,MAAK,MAAA,EAAA,GAD9B,EAkDO,QAAA;;GAhDL,OAAK,EAAA,CAAC,2BAAyB;IACX,EAAA;IAAqB,EAAc,CAAG,GAAG;qCAAmF,EAAA,YAA0B,EAAc,CAAG,GAAG,SAAI,eAAoC,EAAc,CAAG,GAAG,SAAI,iBAAA;;MAW9P,EA0BO,QAAA;GAzBL,OAAM;GACL,UAAK,MAAE,EAAI,cAAe,OAAO,CAAG,CAAA;MAErC,EAA0D,QAA1D,GAA0D,EAAxB,EAAS,CAAG,CAAA,IAAI,KAAC,CAAA,GAG3C,EAAA,WAAW,EAAQ,CAAG,KAAK,EAAS,CAAG,KAAA,EAAA,GAD/C,EAOO,QAAA;;GALL,OAAM;GACL,OAAO,EAAS,CAAG,EAAG;MAEvB,EAAqE,QAArE,GAAqE,EAA7B,EAAS,CAAG,EAAG,IAAI,GAAA,CAAA,GAC3D,EAAmE,QAAnE,GAAmE,EAA3B,EAAS,CAAG,EAAG,EAAE,GAAA,CAAA,CAAA,GAAA,GAAA,CAAA,KAI9C,EAAQ,CAAG,KAAK,EAAS,CAAG,KAAA,EAAA,GADzC,EAI2D,QAAA;;GAFzD,OAAM;GACL,OAAO,EAAS,CAAG,EAAG;OACrB,EAAS,CAAG,EAAG,IAAI,IAAG,QAAG,EAAG,EAAS,CAAG,EAAG,EAAE,GAAA,GAAA,CAAA,MAAA,EAAA,GAEjD,EAImD,QAAA;;GAFjD,OAAM;GACL,OAAO,EAAA,CAAA,EAAmB,EAAA,OAAO,GAAK,CAAK;OAC1C,EAAA,CAAA,EAAmB,EAAA,OAAO,GAAK,CAAK,CAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAA,CAAA,GAG1C,EAOS,UAAA;GANP,MAAK;GACL,OAAM;GACL,UAAK,MAAE,EAAI,UAAW,OAAO,CAAG,CAAA;GACjC,cAAW;mBAEX,EAAuC,KAAA,EAApC,OAAM,0BAAyB,GAAA,MAAA,EAAA,CAAA,CAAA,GAAA,GAAA,CAAA,CAAA,GAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,GAAA,EAAA"}
|
|
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 {\n transformed[item.key] = val\n }\n }\n return { values: filterEmptyValues(values.value), transformed: filterEmptyValues(transformed) }\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 string) ?? 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,7 +1,7 @@
|
|
|
1
|
-
import './src/styles/components/data-table/
|
|
1
|
+
import './src/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
|
-
//#region src/components/data-table/
|
|
4
|
+
//#region src/components/data-table/DataFilters.vue
|
|
5
5
|
var t = e;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { t as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components93.js","names":[],"sources":["../src/components/data-table/
|
|
1
|
+
{"version":3,"file":"admins-components93.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 {\n transformed[item.key] = val\n }\n }\n return { values: filterEmptyValues(values.value), transformed: filterEmptyValues(transformed) }\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 string) ?? 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":""}
|