admins-components 9.0.34 → 9.0.35

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