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,230 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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-components25.js";
|
|
7
|
+
import o from "./admins-components31.js";
|
|
8
|
+
import { filterEmptyValues as s, getDefaultFilters as c, writeFilterParams as l } from "./admins-components80.js";
|
|
9
|
+
import u from "./admins-components83.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",
|
|
17
|
+
props: {
|
|
18
|
+
items: {},
|
|
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: {}
|
|
37
|
+
},
|
|
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];
|
|
43
|
+
}
|
|
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
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function B(e, t) {
|
|
59
|
+
F.value = {
|
|
60
|
+
...F.value,
|
|
61
|
+
[e.key]: t
|
|
62
|
+
}, e.onChange && e.onChange(t), N.lazy || U();
|
|
63
|
+
}
|
|
64
|
+
let V = f(() => Object.values(F.value).some((e) => e !== null && e !== "" && e !== void 0));
|
|
65
|
+
function H() {
|
|
66
|
+
let e = {};
|
|
67
|
+
for (let t of N.items) {
|
|
68
|
+
if (t.type === "separator") continue;
|
|
69
|
+
let n = F.value[t.key];
|
|
70
|
+
t.transformer ? Object.assign(e, t.transformer(n) ?? {}) : e[t.key] = n;
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
values: s(F.value),
|
|
74
|
+
transformed: s(e)
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
function U() {
|
|
78
|
+
N.handleUrl && l(N.items, F.value), P("change", H());
|
|
79
|
+
}
|
|
80
|
+
function W() {
|
|
81
|
+
U(), P("close");
|
|
82
|
+
}
|
|
83
|
+
function G() {
|
|
84
|
+
F.value = {}, U();
|
|
85
|
+
}
|
|
86
|
+
function K(e) {
|
|
87
|
+
F.value = {
|
|
88
|
+
...F.value,
|
|
89
|
+
[e]: null
|
|
90
|
+
}, U();
|
|
91
|
+
}
|
|
92
|
+
function q(e) {
|
|
93
|
+
let t = I.value[e];
|
|
94
|
+
t && (typeof t.focusAndOpen == "function" ? t.focusAndOpen() : typeof t.focus == "function" && t.focus());
|
|
95
|
+
}
|
|
96
|
+
function J(e) {
|
|
97
|
+
let t = { ...F.value };
|
|
98
|
+
for (let n of N.items) n.type !== "separator" && n.key in e && (t[n.key] = e[n.key] ?? null);
|
|
99
|
+
F.value = t, U();
|
|
100
|
+
}
|
|
101
|
+
j({
|
|
102
|
+
clearFilter: K,
|
|
103
|
+
focusFilter: q
|
|
104
|
+
});
|
|
105
|
+
function Y(e) {
|
|
106
|
+
e.key === "Enter" && e.target?.tagName !== "TEXTAREA" && (e.preventDefault(), W());
|
|
107
|
+
}
|
|
108
|
+
function X(e, t) {
|
|
109
|
+
e.onInnerSearch && e.onInnerSearch(t);
|
|
110
|
+
}
|
|
111
|
+
return (s, c) => (x(), p(o, {
|
|
112
|
+
open: v.open,
|
|
113
|
+
title: "Szűrők",
|
|
114
|
+
position: v.position,
|
|
115
|
+
onClose: c[0] ||= (e) => P("close")
|
|
116
|
+
}, {
|
|
117
|
+
default: T(() => [
|
|
118
|
+
g("div", {
|
|
119
|
+
class: "data-filters",
|
|
120
|
+
onKeydown: Y
|
|
121
|
+
}, [(x(!0), h(d, null, C(v.items, (e) => (x(), h("div", {
|
|
122
|
+
key: e.key,
|
|
123
|
+
class: b(["data-filters__field", { "data-filters__field--full": e.fullWidth || e.type === "separator" }])
|
|
124
|
+
}, [e.type === "separator" ? (x(), h("hr", E)) : e.type === "checkbox" ? (x(), p(r, y({
|
|
125
|
+
key: 1,
|
|
126
|
+
ref_for: !0,
|
|
127
|
+
ref: (t) => L(e.key, t),
|
|
128
|
+
"model-value": F.value[e.key] ?? !1,
|
|
129
|
+
label: e.label ?? e.key,
|
|
130
|
+
"onUpdate:modelValue": (t) => B(e, t)
|
|
131
|
+
}, { ref_for: !0 }, e.config), null, 16, [
|
|
132
|
+
"model-value",
|
|
133
|
+
"label",
|
|
134
|
+
"onUpdate:modelValue"
|
|
135
|
+
])) : [
|
|
136
|
+
"text",
|
|
137
|
+
"number",
|
|
138
|
+
"textarea"
|
|
139
|
+
].includes(e.type) ? (x(), p(n, y({
|
|
140
|
+
key: 2,
|
|
141
|
+
type: e.type,
|
|
142
|
+
ref_for: !0,
|
|
143
|
+
ref: (t) => L(e.key, t),
|
|
144
|
+
id: `df-${e.key}`,
|
|
145
|
+
"model-value": F.value[e.key] ?? "",
|
|
146
|
+
label: e.label ?? e.key,
|
|
147
|
+
placeholder: e.placeholder,
|
|
148
|
+
"onUpdate:modelValue": (t) => B(e, t || null)
|
|
149
|
+
}, { ref_for: !0 }, e.config), null, 16, [
|
|
150
|
+
"type",
|
|
151
|
+
"id",
|
|
152
|
+
"model-value",
|
|
153
|
+
"label",
|
|
154
|
+
"placeholder",
|
|
155
|
+
"onUpdate:modelValue"
|
|
156
|
+
])) : e.type === "date" || e.type === "datetime" ? (x(), h(d, { key: 3 }, [g("label", {
|
|
157
|
+
class: "c-label",
|
|
158
|
+
for: `df-${e.key}`
|
|
159
|
+
}, w(e.label ?? e.key), 9, D), _(t, {
|
|
160
|
+
ref_for: !0,
|
|
161
|
+
ref: (t) => L(e.key, t),
|
|
162
|
+
id: `df-${e.key}`,
|
|
163
|
+
"model-value": F.value[e.key] ?? null,
|
|
164
|
+
config: R(e),
|
|
165
|
+
"onUpdate:modelValue": (t) => B(e, t)
|
|
166
|
+
}, null, 8, [
|
|
167
|
+
"id",
|
|
168
|
+
"model-value",
|
|
169
|
+
"config",
|
|
170
|
+
"onUpdate:modelValue"
|
|
171
|
+
])], 64)) : e.type === "daterange" || e.type === "datetimerange" ? (x(), h(d, { key: 4 }, [g("span", O, w(e.label ?? e.key), 1), _(i, {
|
|
172
|
+
ref_for: !0,
|
|
173
|
+
ref: (t) => L(e.key, t),
|
|
174
|
+
"model-value": F.value[e.key] ?? null,
|
|
175
|
+
config: z(e),
|
|
176
|
+
"onUpdate:modelValue": (t) => B(e, t)
|
|
177
|
+
}, null, 8, [
|
|
178
|
+
"model-value",
|
|
179
|
+
"config",
|
|
180
|
+
"onUpdate:modelValue"
|
|
181
|
+
])], 64)) : e.type === "dropdown" ? (x(), h(d, { key: 5 }, [g("span", k, w(e.label ?? e.key), 1), _(a, {
|
|
182
|
+
ref_for: !0,
|
|
183
|
+
ref: (t) => L(e.key, t),
|
|
184
|
+
"model-value": F.value[e.key] ?? null,
|
|
185
|
+
options: e.options ?? [],
|
|
186
|
+
config: {
|
|
187
|
+
...e.config ?? {},
|
|
188
|
+
placeholder: e.placeholder ?? "Válassz...",
|
|
189
|
+
clearable: !0,
|
|
190
|
+
filterable: !0
|
|
191
|
+
},
|
|
192
|
+
onFilterInput: (t) => X(e, t),
|
|
193
|
+
"onUpdate:modelValue": (t) => B(e, t)
|
|
194
|
+
}, null, 8, [
|
|
195
|
+
"model-value",
|
|
196
|
+
"options",
|
|
197
|
+
"config",
|
|
198
|
+
"onFilterInput",
|
|
199
|
+
"onUpdate:modelValue"
|
|
200
|
+
])], 64)) : m("", !0)], 2))), 128))], 32),
|
|
201
|
+
g("div", A, [_(e, {
|
|
202
|
+
icon: "fa-solid fa-trash-can",
|
|
203
|
+
disabled: !V.value,
|
|
204
|
+
label: "Szűrők törlése",
|
|
205
|
+
"aria-label": "Szűrők törlése",
|
|
206
|
+
size: "small",
|
|
207
|
+
onClick: G
|
|
208
|
+
}, null, 8, ["disabled"]), _(e, {
|
|
209
|
+
label: "Szűrés",
|
|
210
|
+
"aria-label": "Szűrés",
|
|
211
|
+
type: "success",
|
|
212
|
+
onClick: W
|
|
213
|
+
})]),
|
|
214
|
+
v.historyEnabled ? (x(), h(d, { key: 0 }, [c[1] ||= g("hr", { class: "separator my-3" }, null, -1), _(u, {
|
|
215
|
+
items: v.items,
|
|
216
|
+
values: F.value,
|
|
217
|
+
"storage-key": v.storageKey,
|
|
218
|
+
onLoad: J
|
|
219
|
+
}, null, 8, [
|
|
220
|
+
"items",
|
|
221
|
+
"values",
|
|
222
|
+
"storage-key"
|
|
223
|
+
])], 64)) : m("", !0)
|
|
224
|
+
]),
|
|
225
|
+
_: 1
|
|
226
|
+
}, 8, ["open", "position"]));
|
|
227
|
+
}
|
|
228
|
+
});
|
|
6
229
|
//#endregion
|
|
7
|
-
export {
|
|
230
|
+
export { j as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components84.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 values.value = { ...values.value, [item.key]: value }\n if (item.onChange) item.onChange(value)\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) Object.assign(transformed, item.transformer(val) ?? {})\n else transformed[item.key] = val\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":""}
|
|
1
|
+
{"version":3,"file":"admins-components84.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 values.value = { ...values.value, [item.key]: value }\n if (item.onChange) item.onChange(value)\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) Object.assign(transformed, item.transformer(val) ?? {})\n else transformed[item.key] = val\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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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import './src/styles/components/data-table/data-filters.scss_vue_type_style_index_0_src_true_lang.css';
|
|
2
|
+
import e from "./admins-components84.js";
|
|
3
|
+
/* empty css */
|
|
4
|
+
//#region src/components/data-table/DataFilters.vue
|
|
5
|
+
var t = e;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { t as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components82.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 values.value = { ...values.value, [item.key]: value }\n if (item.onChange) item.onChange(value)\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) Object.assign(transformed, item.transformer(val) ?? {})\n else transformed[item.key] = val\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
|
+
{"version":3,"file":"admins-components86.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 values.value = { ...values.value, [item.key]: value }\n if (item.onChange) item.onChange(value)\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) Object.assign(transformed, item.transformer(val) ?? {})\n else transformed[item.key] = val\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":""}
|
|
@@ -1,7 +1,38 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { displayFilterValue as e } from "./admins-components79.js";
|
|
2
|
+
import { Fragment as t, createCommentVNode as n, createElementBlock as r, createElementVNode as i, defineComponent as a, normalizeClass as o, openBlock as s, renderList as c, toDisplayString as l, unref as u } from "vue";
|
|
3
|
+
//#region src/components/data-table/FilterTags.vue?vue&type=script&setup=true&lang.ts
|
|
4
|
+
var d = { class: "filter-tags ac-component gap-1" }, f = ["onClick"], p = { class: "filter-tags__key" }, m = ["title"], h = ["onClick"], g = /* @__PURE__ */ a({
|
|
5
|
+
__name: "FilterTags",
|
|
6
|
+
props: {
|
|
7
|
+
filters: {},
|
|
8
|
+
items: {},
|
|
9
|
+
itemClass: {}
|
|
10
|
+
},
|
|
11
|
+
emits: ["remove", "openFilter"],
|
|
12
|
+
setup(a, { emit: g }) {
|
|
13
|
+
let _ = a, v = g;
|
|
14
|
+
function y(e) {
|
|
15
|
+
return _.items.find((t) => t.key === e);
|
|
16
|
+
}
|
|
17
|
+
function b(e) {
|
|
18
|
+
return y(e)?.label ?? e;
|
|
19
|
+
}
|
|
20
|
+
return (g, _) => (s(), r("div", d, [(s(!0), r(t, null, c(a.filters, (c, d) => (s(), r(t, { key: d }, [c != null && c !== "" ? (s(), r("span", {
|
|
21
|
+
key: 0,
|
|
22
|
+
class: o(["filter-tags__tag c-chip", [a.itemClass, y(d)?.displayClass]])
|
|
23
|
+
}, [i("span", {
|
|
24
|
+
class: "filter-tags__content align-center-fix",
|
|
25
|
+
onClick: (e) => v("openFilter", String(d))
|
|
26
|
+
}, [i("span", p, l(b(String(d))) + ":", 1), i("span", {
|
|
27
|
+
class: "filter-tags__value",
|
|
28
|
+
title: u(e)(a.items, String(d), c)
|
|
29
|
+
}, l(u(e)(a.items, String(d), c)), 9, m)], 8, f), i("button", {
|
|
30
|
+
type: "button",
|
|
31
|
+
class: "filter-tags__remove",
|
|
32
|
+
onClick: (e) => v("remove", String(d)),
|
|
33
|
+
"aria-label": "Remove filter"
|
|
34
|
+
}, [..._[0] ||= [i("i", { class: "fa-solid fa-fw fa-xmark" }, null, -1)]], 8, h)], 2)) : n("", !0)], 64))), 128))]));
|
|
35
|
+
}
|
|
36
|
+
});
|
|
6
37
|
//#endregion
|
|
7
|
-
export {
|
|
38
|
+
export { g as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components87.js","names":[],"sources":["../src/components/data-table/FilterTags.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { FilterItem } from '@/components/data-table/DataFilters.vue'\nimport { displayFilterValue } from '@/utils/filterDisplay'\n\nconst props = defineProps<{\n filters: Record<string, any>\n items: FilterItem[]\n itemClass?: string\n}>()\nconst emit = defineEmits<{\n remove: [key: string]\n openFilter: [key: string]\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</script>\n\n<template>\n <div class=\"filter-tags ac-component gap-1\">\n <template v-for=\"(value, key) in filters\" :key=\"key\">\n <span\n v-if=\"value != null && value !== ''\"\n class=\"filter-tags__tag c-chip\"\n :class=\"[itemClass, getFilterItem(key)?.displayClass]\"\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(String(key)) }}:</span>\n <span class=\"filter-tags__value\" :title=\"displayFilterValue(items, String(key), value)\">{{\n displayFilterValue(items, String(key), value)\n }}</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":""}
|
|
1
|
+
{"version":3,"file":"admins-components87.js","names":[],"sources":["../src/components/data-table/FilterTags.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { FilterItem } from '@/components/data-table/DataFilters.vue'\nimport { displayFilterValue } from '@/utils/filterDisplay'\n\nconst props = defineProps<{\n filters: Record<string, any>\n items: FilterItem[]\n itemClass?: string\n}>()\nconst emit = defineEmits<{\n remove: [key: string]\n openFilter: [key: string]\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</script>\n\n<template>\n <div class=\"filter-tags ac-component gap-1\">\n <template v-for=\"(value, key) in filters\" :key=\"key\">\n <span\n v-if=\"value != null && value !== ''\"\n class=\"filter-tags__tag c-chip\"\n :class=\"[itemClass, getFilterItem(key)?.displayClass]\"\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(String(key)) }}:</span>\n <span class=\"filter-tags__value\" :title=\"displayFilterValue(items, String(key), value)\">{{\n displayFilterValue(items, String(key), value)\n }}</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":";;;;;;;;;;;;EAIA,IAAM,IAAQ,GAKR,IAAO;EAKb,SAAS,EAAc,GAAqC;GAC1D,OAAO,EAAM,MAAM,MAAM,MAAM,EAAE,QAAQ,CAAG;EAC9C;EAEA,SAAS,EAAS,GAAqB;GACrC,OAAO,EAAc,CAAG,GAAG,SAAS;EACtC;yBAIE,EA2BM,OA3BN,GA2BM,EAAA,EAAA,EAAA,GA1BJ,EAyBW,GAAA,MAAA,EAzBsB,EAAA,UAAf,GAAO,mBAAuB,OAAG,GAAA,CAEzC,KAAK,QAAY,MAAK,MAAA,EAAA,GAD9B,EAuBO,QAAA;;GArBL,OAAK,EAAA,CAAC,2BAAyB,CACtB,EAAA,WAAW,EAAc,CAAG,GAAG,YAAY,CAAA,CAAA;MAEpD,EAQO,QAAA;GAPL,OAAM;GACL,UAAK,MAAE,EAAI,cAAe,OAAO,CAAG,CAAA;MAErC,EAAkE,QAAlE,GAAkE,EAAhC,EAAS,OAAO,CAAG,CAAA,CAAA,IAAK,KAAC,CAAA,GAC3D,EAES,QAAA;GAFH,OAAM;GAAsB,OAAO,EAAA,CAAA,EAAmB,EAAA,OAAO,OAAO,CAAG,GAAG,CAAK;OACnF,EAAA,CAAA,EAAmB,EAAA,OAAO,OAAO,CAAG,GAAG,CAAK,CAAA,GAAA,GAAA,CAAA,CAAA,GAAA,GAAA,CAAA,GAIhD,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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import './src/styles/components/data-table/filter-tags.scss_vue_type_style_index_0_src_true_lang.css';
|
|
2
|
+
import e from "./admins-components87.js";
|
|
3
|
+
/* empty css */
|
|
4
|
+
//#region src/components/data-table/FilterTags.vue
|
|
5
|
+
var t = e;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { t as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-
|
|
1
|
+
{"version":3,"file":"admins-components89.js","names":[],"sources":["../src/components/data-table/FilterTags.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { FilterItem } from '@/components/data-table/DataFilters.vue'\nimport { displayFilterValue } from '@/utils/filterDisplay'\n\nconst props = defineProps<{\n filters: Record<string, any>\n items: FilterItem[]\n itemClass?: string\n}>()\nconst emit = defineEmits<{\n remove: [key: string]\n openFilter: [key: string]\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</script>\n\n<template>\n <div class=\"filter-tags ac-component gap-1\">\n <template v-for=\"(value, key) in filters\" :key=\"key\">\n <span\n v-if=\"value != null && value !== ''\"\n class=\"filter-tags__tag c-chip\"\n :class=\"[itemClass, getFilterItem(key)?.displayClass]\"\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(String(key)) }}:</span>\n <span class=\"filter-tags__value\" :title=\"displayFilterValue(items, String(key), value)\">{{\n displayFilterValue(items, String(key), value)\n }}</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":""}
|