@opengis/admin 0.1.62 → 0.1.63
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/{add-page-CFNh7Zxz.js → add-page-LONm322L.js} +1 -1
- package/dist/{admin-interface-CniNlJEa.js → admin-interface-eocB4uF3.js} +44 -44
- package/dist/admin-view-CEePX3t5.js +640 -0
- package/dist/admin.js +1 -1
- package/dist/admin.umd.cjs +110 -308
- package/dist/{card-page-B16E7Q7m.js → card-page-CnQufGpK.js} +10 -10
- package/dist/{card-view-Fw8T0Ddm.js → card-view-MKU1ijjK.js} +1 -1
- package/dist/{edit-page-BCPO83LG.js → edit-page-C1wXXuPF.js} +1 -1
- package/dist/{import-file-D6JQHFSe.js → import-file-BkyTVz51.js} +14 -16
- package/package.json +1 -1
- package/server/plugins/hook.js +71 -30
- package/server/routes/data/controllers/tableData.js +2 -2
- package/server/routes/templates/controllers/getTemplate.js +3 -2
- package/dist/admin-view-Dw9tWMxP.js +0 -41685
@@ -0,0 +1,640 @@
|
|
1
|
+
import { _ as v, I as F, u as B, V as P, a as O } from "./import-file-BkyTVz51.js";
|
2
|
+
import { openBlock as s, createElementBlock as r, createElementVNode as t, createStaticVNode as R, resolveComponent as b, normalizeClass as E, createTextVNode as M, toDisplayString as y, createVNode as u, Transition as T, withCtx as $, withDirectives as q, Fragment as N, renderList as S, vShow as G, ref as D, createCommentVNode as V, watch as J, onBeforeUnmount as K, createBlock as W, withModifiers as X } from "vue";
|
3
|
+
const Y = {}, ee = {
|
4
|
+
xmlns: "http://www.w3.org/2000/svg",
|
5
|
+
viewBox: "0 0 24 24",
|
6
|
+
fill: "none",
|
7
|
+
stroke: "currentColor",
|
8
|
+
"stroke-width": "2",
|
9
|
+
"stroke-linecap": "round",
|
10
|
+
"stroke-linejoin": "round",
|
11
|
+
class: "icon icon-tabler icons-tabler-outline icon-tabler-logout"
|
12
|
+
};
|
13
|
+
function te(o, e, n, a, l, i) {
|
14
|
+
return s(), r("svg", ee, e[0] || (e[0] = [
|
15
|
+
t("path", {
|
16
|
+
stroke: "none",
|
17
|
+
d: "M0 0h24v24H0z",
|
18
|
+
fill: "none"
|
19
|
+
}, null, -1),
|
20
|
+
t("path", { d: "M14 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2" }, null, -1),
|
21
|
+
t("path", { d: "M9 12h12l-3 -3" }, null, -1),
|
22
|
+
t("path", { d: "M18 15l3 -3" }, null, -1)
|
23
|
+
]));
|
24
|
+
}
|
25
|
+
const oe = /* @__PURE__ */ v(Y, [["render", te]]), ne = {}, se = {
|
26
|
+
viewBox: "0 0 1823 249",
|
27
|
+
fill: "none",
|
28
|
+
xmlns: "http://www.w3.org/2000/svg"
|
29
|
+
};
|
30
|
+
function re(o, e, n, a, l, i) {
|
31
|
+
return s(), r("svg", se, e[0] || (e[0] = [
|
32
|
+
R('<path d="M218.88 96.05C223.55 99.19 228.69 101.56 234.09 103.07V145.42C212.05 151.54 195.83 171.79 195.83 195.75C195.83 200.22 196.41 204.65 197.53 208.94L160.92 230.08C156.82 226.06 152.08 222.73 146.91 220.24V171.62C164.83 163.13 176.59 145.06 176.59 124.48C176.59 123.17 176.54 121.86 176.44 120.56L218.88 96.05ZM220.32 79.09L160.97 113.36C162.04 116.88 162.61 120.61 162.61 124.48C162.61 142.66 149.93 157.87 132.93 161.76V230.05C143.4 232.46 152.23 239.16 157.46 248.21L215 214.99C211.7 209.34 209.81 202.77 209.81 195.75C209.81 174.62 226.94 157.49 248.07 157.49V91.02C237.14 91.02 227.29 86.43 220.32 79.09Z" fill="#CE3936"></path><path d="M161.39 19.13L197.44 39.94C196.39 44.11 195.84 48.42 195.84 52.75C195.84 54.21 195.9 55.65 196.02 57.1L153.9 81.42C145.27 75.5 134.95 72.24 124.36 72.24C113.83 72.24 103.57 75.47 94.96 81.32L52.71 56.93C52.82 55.55 52.88 54.16 52.88 52.76C52.88 48.43 52.34 44.12 51.28 39.95L87.3 19.16C96.98 28.89 110.26 34.58 124.34 34.58C138.42 34.57 151.7 28.87 161.39 19.13ZM157.77 0.919983C151.24 12.66 138.71 20.6 124.33 20.6C109.95 20.6 97.44 12.67 90.9 0.939983L33.9 33.85C37.08 39.43 38.91 45.88 38.91 52.76C38.91 56.71 38.31 60.52 37.2 64.11L96.46 98.32C103.44 90.87 113.36 86.22 124.37 86.22C135.44 86.22 145.41 90.93 152.39 98.44L211.59 64.27C210.45 60.64 209.83 56.78 209.83 52.77C209.83 45.89 211.65 39.44 214.84 33.86L157.77 0.919983Z" fill="#CE3936"></path><path d="M29.97 95.95L72.28 120.38C72.17 121.74 72.12 123.1 72.12 124.47C72.12 145.02 83.86 163.08 101.74 171.58V220.23C96.58 222.71 91.84 226.04 87.75 230.05L51.17 208.93C52.29 204.64 52.87 200.21 52.87 195.74C52.87 171.78 36.65 151.53 14.61 145.41V103.06C20.07 101.55 25.27 99.14 29.97 95.95ZM28.5 78.97C21.52 86.38 11.63 91.02 0.640015 91.02V157.49C21.77 157.49 38.9 174.62 38.9 195.75C38.9 202.77 37 209.33 33.71 214.99L91.2 248.18C96.43 239.14 105.25 232.45 115.71 230.04V161.73C98.74 157.81 86.09 142.62 86.09 124.46C86.09 120.54 86.68 116.75 87.78 113.18L28.5 78.97Z" fill="#CE3936"></path><path d="M498.39 177.5V144.88C498.39 128.55 485.11 115.27 468.78 115.27H343.22C342.69 115.27 342.18 115.32 341.67 115.4H337.19C332.35 115.4 328.42 111.46 328.42 106.63V74C328.42 69.16 332.36 65.23 337.19 65.23H486.33C492.08 65.23 496.75 60.57 496.75 54.81C496.75 49.06 492.08 44.39 486.33 44.39H337.19C320.86 44.39 307.58 57.67 307.58 74V106.62C307.58 122.95 320.86 136.23 337.19 136.23H462.75C463.28 136.23 463.79 136.18 464.3 136.1H468.78C473.62 136.1 477.55 140.04 477.55 144.87V177.49C477.55 182.33 473.61 186.26 468.78 186.26H319.64C313.89 186.26 309.22 190.92 309.22 196.68C309.22 202.43 313.89 207.1 319.64 207.1H468.78C485.11 207.11 498.39 193.83 498.39 177.5Z" fill="#CE3935"></path><path d="M710.7 177.32V75.24C710.7 58.91 697.42 45.63 681.09 45.63H550.05C533.72 45.63 520.44 58.91 520.44 75.24V177.32C520.44 193.65 533.72 206.93 550.05 206.93H681.1C697.42 206.93 710.7 193.65 710.7 177.32ZM541.27 75.24C541.27 70.4 545.21 66.47 550.04 66.47H681.09C685.93 66.47 689.86 70.41 689.86 75.24V177.32C689.86 182.16 685.92 186.09 681.09 186.09H550.05C545.21 186.09 541.28 182.15 541.28 177.32V75.24H541.27Z" fill="#CE3935"></path><path d="M1823 177.32V75.24C1823 58.91 1809.72 45.63 1793.39 45.63H1662.34C1646.01 45.63 1632.73 58.91 1632.73 75.24V177.32C1632.73 193.65 1646.01 206.93 1662.34 206.93H1793.39C1809.72 206.93 1823 193.65 1823 177.32ZM1653.57 75.24C1653.57 70.4 1657.51 66.47 1662.34 66.47H1793.39C1798.23 66.47 1802.16 70.41 1802.16 75.24V177.32C1802.16 182.16 1798.22 186.09 1793.39 186.09H1662.34C1657.5 186.09 1653.57 182.15 1653.57 177.32V75.24Z" fill="#CE3935"></path><path d="M756.76 196.51V152H849.42C855.17 152 859.84 147.34 859.84 141.58C859.84 135.83 855.17 131.16 849.42 131.16H756.76V75.23C756.76 70.39 760.7 66.46 765.53 66.46H893.29C899.04 66.46 903.71 61.8 903.71 56.04C903.71 50.29 899.04 45.62 893.29 45.62H765.53C749.2 45.62 735.92 58.9 735.92 75.23V196.5C735.92 202.25 740.59 206.92 746.34 206.92C752.09 206.93 756.76 202.27 756.76 196.51Z" fill="#CE3935"></path><path d="M933.86 66.47H1006.51V194.32C1006.51 200.07 1011.18 204.74 1016.93 204.74C1022.68 204.74 1027.35 200.07 1027.35 194.32V66.47H1100C1105.75 66.47 1110.42 61.81 1110.42 56.05C1110.42 50.3 1105.76 45.63 1100 45.63H933.86C928.11 45.63 923.44 50.29 923.44 56.05C923.45 61.81 928.11 66.47 933.86 66.47Z" fill="#CE3935"></path><path d="M1218.44 204.19C1224.19 204.19 1228.86 199.53 1228.86 193.77V152H1368.13C1384.46 152 1397.74 138.72 1397.74 122.39V75.24C1397.74 58.91 1384.46 45.63 1368.13 45.63H1237.63C1221.3 45.63 1208.02 58.91 1208.02 75.24V193.77C1208.02 199.53 1212.68 204.19 1218.44 204.19ZM1237.63 66.47H1368.13C1372.97 66.47 1376.9 70.41 1376.9 75.24V122.39C1376.9 127.23 1372.96 131.16 1368.13 131.16H1228.86V75.23C1228.86 70.41 1232.79 66.47 1237.63 66.47Z" fill="#CE3935"></path><path d="M1430.64 204.19C1436.39 204.19 1441.06 199.53 1441.06 193.77V152H1523.95C1524.57 153.18 1525.42 154.26 1526.51 155.17L1581.89 201.23C1583.83 202.85 1586.2 203.64 1588.55 203.64C1591.54 203.64 1594.5 202.36 1596.57 199.88C1600.25 195.46 1599.64 188.89 1595.22 185.21L1555.29 152H1580.33C1596.66 152 1609.94 138.72 1609.94 122.39V75.24C1609.94 58.91 1596.66 45.63 1580.33 45.63H1449.83C1433.5 45.63 1420.22 58.91 1420.22 75.24V193.77C1420.22 199.53 1424.88 204.19 1430.64 204.19ZM1449.83 66.47H1580.33C1585.17 66.47 1589.1 70.41 1589.1 75.24V122.39C1589.1 127.23 1585.17 131.16 1580.33 131.16H1441.06V75.23C1441.05 70.41 1444.99 66.47 1449.83 66.47Z" fill="#CE3935"></path>', 10)
|
33
|
+
]));
|
34
|
+
}
|
35
|
+
const le = /* @__PURE__ */ v(ne, [["render", re]]), ae = {}, ie = {
|
36
|
+
xmlns: "http://www.w3.org/2000/svg",
|
37
|
+
viewBox: "0 0 24 24",
|
38
|
+
fill: "none",
|
39
|
+
stroke: "currentColor",
|
40
|
+
"stroke-width": "2",
|
41
|
+
"stroke-linecap": "round",
|
42
|
+
"stroke-linejoin": "round",
|
43
|
+
class: "icon icon-tabler icons-tabler-outline icon-tabler-chevron-down"
|
44
|
+
};
|
45
|
+
function ce(o, e, n, a, l, i) {
|
46
|
+
return s(), r("svg", ie, e[0] || (e[0] = [
|
47
|
+
t("path", {
|
48
|
+
stroke: "none",
|
49
|
+
d: "M0 0h24v24H0z",
|
50
|
+
fill: "none"
|
51
|
+
}, null, -1),
|
52
|
+
t("path", { d: "M6 9l6 6l6 -6" }, null, -1)
|
53
|
+
]));
|
54
|
+
}
|
55
|
+
const ue = /* @__PURE__ */ v(ae, [["render", ce]]), de = {
|
56
|
+
components: { IconChevronDown: ue },
|
57
|
+
props: { route: Object },
|
58
|
+
mounted() {
|
59
|
+
var o, e, n;
|
60
|
+
(o = this.route) != null && o.menu && (n = (e = this.route) == null ? void 0 : e.menu) != null && n.some(
|
61
|
+
(a) => {
|
62
|
+
var l, i;
|
63
|
+
return (a == null ? void 0 : a.path) === this.$route.path.replace("/", "") || ((i = (l = this.$route) == null ? void 0 : l.params) == null ? void 0 : i.table) === (a == null ? void 0 : a.table) && (a == null ? void 0 : a.table);
|
64
|
+
}
|
65
|
+
) && (this.isOpen = !0);
|
66
|
+
},
|
67
|
+
data() {
|
68
|
+
return {
|
69
|
+
isOpen: !1
|
70
|
+
};
|
71
|
+
}
|
72
|
+
}, pe = {
|
73
|
+
key: 0,
|
74
|
+
class: ""
|
75
|
+
}, he = { class: "ml-[30px] py-[6px] before:block before:absolute relative w-[196px] flex flex-col gap-[6px] inline-block before:w-[2px] before:h-[100%] before:bg-gray-100 before:left-[-14px] cursor-pointer" }, fe = { key: 1 };
|
76
|
+
function ge(o, e, n, a, l, i) {
|
77
|
+
var c, p, g, h, w, C, m, k, H, L, I, z, j;
|
78
|
+
const _ = b("IconChevronDown"), x = b("router-link");
|
79
|
+
return (c = n.route) != null && c.menu ? (s(), r("div", pe, [
|
80
|
+
t("button", {
|
81
|
+
onClick: e[0] || (e[0] = (f) => l.isOpen = !l.isOpen),
|
82
|
+
class: E(["flex cursor-pointer gap-x-3 py-2 px-3 text-sm text-gray-800 justify-start w-full border-none focus:outline-none text-gray-800 rounded-lg items-center hover:bg-gray-100 duration-300", [
|
83
|
+
((g = (p = n.route) == null ? void 0 : p.menu) == null ? void 0 : g.some(
|
84
|
+
(f) => {
|
85
|
+
var d, Z;
|
86
|
+
return (f == null ? void 0 : f.path) === o.$route.path.replace("/", "") || (f == null ? void 0 : f.table) === ((Z = (d = o.$route) == null ? void 0 : d.params) == null ? void 0 : Z.table) && (f == null ? void 0 : f.table);
|
87
|
+
}
|
88
|
+
)) && "bg-gray-100"
|
89
|
+
]])
|
90
|
+
}, [
|
91
|
+
M(y((h = n.route) == null ? void 0 : h.ua) + " ", 1),
|
92
|
+
u(_, {
|
93
|
+
class: E([[l.isOpen && "-rotate-180"], "ml-auto duration-300"]),
|
94
|
+
width: "14",
|
95
|
+
height: "14"
|
96
|
+
}, null, 8, ["class"])
|
97
|
+
], 2),
|
98
|
+
u(T, { name: "fade" }, {
|
99
|
+
default: $(() => {
|
100
|
+
var f;
|
101
|
+
return [
|
102
|
+
q(t("ul", he, [
|
103
|
+
(s(!0), r(N, null, S((f = n.route) == null ? void 0 : f.menu, (d, Z) => {
|
104
|
+
var U, A;
|
105
|
+
return s(), r("li", {
|
106
|
+
key: Z,
|
107
|
+
class: "w-full"
|
108
|
+
}, [
|
109
|
+
u(x, {
|
110
|
+
to: "/" + (d == null ? void 0 : d.path),
|
111
|
+
class: E([[
|
112
|
+
((d == null ? void 0 : d.path) === o.$route.path.replace("/", "") || ((A = (U = o.$route) == null ? void 0 : U.params) == null ? void 0 : A.table) === (d == null ? void 0 : d.table) && (d == null ? void 0 : d.table)) && "bg-gray-100"
|
113
|
+
], "flex gap-x-4 py-2 px-3 text-sm text-gray-800 rounded-lg hover:bg-gray-100 focus:outline-none focus:bg-gray-100"])
|
114
|
+
}, {
|
115
|
+
default: $(() => [
|
116
|
+
M(y(d == null ? void 0 : d.ua), 1)
|
117
|
+
]),
|
118
|
+
_: 2
|
119
|
+
}, 1032, ["to", "class"])
|
120
|
+
]);
|
121
|
+
}), 128))
|
122
|
+
], 512), [
|
123
|
+
[G, l.isOpen]
|
124
|
+
])
|
125
|
+
];
|
126
|
+
}),
|
127
|
+
_: 1
|
128
|
+
})
|
129
|
+
])) : (s(), r("div", fe, [
|
130
|
+
u(x, {
|
131
|
+
to: ((C = (w = n.route) == null ? void 0 : w.path) == null ? void 0 : C[0]) === "/" ? (m = n.route) == null ? void 0 : m.path : "/" + ((k = n.route) == null ? void 0 : k.path),
|
132
|
+
class: E([[
|
133
|
+
(((H = n.route) == null ? void 0 : H.path.replace("/", "")) === o.$route.path.replace("/", "") || ((I = (L = o.$route) == null ? void 0 : L.params) == null ? void 0 : I.table) === ((z = n.route) == null ? void 0 : z.table) && ((j = n.route) == null ? void 0 : j.table)) && "bg-gray-100"
|
134
|
+
], "flex gap-x-3 py-2 w-full font-[400] px-3 text-sm text-gray-800 rounded-lg items-center hover:bg-gray-100 duration-300 hover:text-gray-800"])
|
135
|
+
}, {
|
136
|
+
default: $(() => {
|
137
|
+
var f;
|
138
|
+
return [
|
139
|
+
M(y((f = n.route) == null ? void 0 : f.ua), 1)
|
140
|
+
];
|
141
|
+
}),
|
142
|
+
_: 1
|
143
|
+
}, 8, ["to", "class"])
|
144
|
+
]));
|
145
|
+
}
|
146
|
+
const xe = /* @__PURE__ */ v(de, [["render", ge]]), be = {
|
147
|
+
components: { IconLogout: oe, NavbarItem: xe, IconLogo: le, IconSearch: F },
|
148
|
+
data() {
|
149
|
+
return {
|
150
|
+
activeIndex: null,
|
151
|
+
data: null,
|
152
|
+
searchValue: ""
|
153
|
+
};
|
154
|
+
},
|
155
|
+
computed: {
|
156
|
+
data() {
|
157
|
+
var o, e;
|
158
|
+
return (o = this.searchValue) != null && o.trim() ? (e = this.flattenMenu(B.value)) == null ? void 0 : e.filter(
|
159
|
+
(n) => {
|
160
|
+
var a, l, i;
|
161
|
+
return (i = (a = n == null ? void 0 : n.ua) == null ? void 0 : a.toLowerCase()) == null ? void 0 : i.includes((l = this.searchValue) == null ? void 0 : l.toLowerCase());
|
162
|
+
}
|
163
|
+
) : B.value;
|
164
|
+
}
|
165
|
+
},
|
166
|
+
methods: {
|
167
|
+
flattenMenu(o) {
|
168
|
+
const e = [];
|
169
|
+
return o.forEach((n) => {
|
170
|
+
n.menu ? e.push(...this.flattenMenu(n.menu)) : e.push(n);
|
171
|
+
}), e;
|
172
|
+
}
|
173
|
+
}
|
174
|
+
}, _e = { class: "flex flex-col h-[100vh] border-r w-[260px] shrink-0" }, ve = { class: "relative" }, we = { class: "p-[16px] overflow-y-auto [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-track]:bg-gray-100 [&::-webkit-scrollbar-thumb]:bg-gray-300 dark:[&::-webkit-scrollbar-track]:bg-neutral-700 dark:[&::-webkit-scrollbar-thumb]:bg-neutral-500" }, Ce = { class: "pb-3 w-full flex flex-col flex-wrap" }, me = {
|
175
|
+
key: 0,
|
176
|
+
class: "flex flex-col gap-[6px]"
|
177
|
+
}, ke = {
|
178
|
+
key: 1,
|
179
|
+
class: "text-gray-800 text-lg mt-[20px]"
|
180
|
+
};
|
181
|
+
function ye(o, e, n, a, l, i) {
|
182
|
+
var g;
|
183
|
+
const _ = b("IconLogo"), x = b("IconSearch"), c = b("VsText"), p = b("NavbarItem");
|
184
|
+
return s(), r("div", _e, [
|
185
|
+
u(_, {
|
186
|
+
height: "40",
|
187
|
+
width: "200",
|
188
|
+
class: "my-[20px] ml-[20px]"
|
189
|
+
}),
|
190
|
+
t("div", ve, [
|
191
|
+
u(x, {
|
192
|
+
height: "16",
|
193
|
+
width: "16",
|
194
|
+
class: "absolute top-[12px] left-[30px] text-gray-500 z-[1]"
|
195
|
+
}),
|
196
|
+
u(c, {
|
197
|
+
type: "text",
|
198
|
+
modelValue: l.searchValue,
|
199
|
+
"onUpdate:modelValue": e[0] || (e[0] = (h) => l.searchValue = h),
|
200
|
+
clearable: !0,
|
201
|
+
placeholder: "Пошук по меню",
|
202
|
+
class: "[&>input]:h-[40px] [&>input]:block [&>input]:rounded-none [&>input]:border-x-0 [&>input]:pl-[60px] [&>input:focus]:outline-none [&>input:focus]:focus:ring-0 [&>input:focus]:border-y-gray-200 [&>input:focus]:border-y-1 [&>input:focus]:border-x-0"
|
203
|
+
}, null, 8, ["modelValue"])
|
204
|
+
]),
|
205
|
+
t("div", we, [
|
206
|
+
t("nav", Ce, [
|
207
|
+
(g = i.data) != null && g.length ? (s(), r("ul", me, [
|
208
|
+
(s(!0), r(N, null, S(i.data, (h, w) => (s(), r("li", {
|
209
|
+
key: w,
|
210
|
+
class: "flex flex-col gap-[6px]"
|
211
|
+
}, [
|
212
|
+
u(p, { route: h }, null, 8, ["route"])
|
213
|
+
]))), 128))
|
214
|
+
])) : (s(), r("div", ke, "Не знайдено"))
|
215
|
+
])
|
216
|
+
])
|
217
|
+
]);
|
218
|
+
}
|
219
|
+
const $e = /* @__PURE__ */ v(be, [["render", ye]]), Ve = {}, Me = {
|
220
|
+
class: "shrink-0",
|
221
|
+
xmlns: "http://www.w3.org/2000/svg",
|
222
|
+
width: "24",
|
223
|
+
height: "24",
|
224
|
+
viewBox: "0 0 24 24",
|
225
|
+
fill: "none",
|
226
|
+
stroke: "currentColor",
|
227
|
+
"stroke-width": "2",
|
228
|
+
"stroke-linecap": "round",
|
229
|
+
"stroke-linejoin": "round"
|
230
|
+
};
|
231
|
+
function He(o, e) {
|
232
|
+
return s(), r("svg", Me, e[0] || (e[0] = [
|
233
|
+
t("path", { d: "M18 6 7 17l-5-5" }, null, -1),
|
234
|
+
t("path", { d: "m22 10-7.5 7.5L13 16" }, null, -1)
|
235
|
+
]));
|
236
|
+
}
|
237
|
+
const Le = /* @__PURE__ */ v(Ve, [["render", He]]), Ie = {}, ze = {
|
238
|
+
xmlns: "http://www.w3.org/2000/svg",
|
239
|
+
width: "24",
|
240
|
+
height: "24",
|
241
|
+
viewBox: "0 0 24 24",
|
242
|
+
fill: "currentColor",
|
243
|
+
class: "icon icon-tabler icons-tabler-filled icon-tabler-user"
|
244
|
+
};
|
245
|
+
function je(o, e, n, a, l, i) {
|
246
|
+
return s(), r("svg", ze, e[0] || (e[0] = [
|
247
|
+
t("path", {
|
248
|
+
stroke: "none",
|
249
|
+
d: "M0 0h24v24H0z",
|
250
|
+
fill: "none"
|
251
|
+
}, null, -1),
|
252
|
+
t("path", { d: "M12 2a5 5 0 1 1 -5 5l.005 -.217a5 5 0 0 1 4.995 -4.783z" }, null, -1),
|
253
|
+
t("path", { d: "M14 14a5 5 0 0 1 5 5v1a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-1a5 5 0 0 1 5 -5h4z" }, null, -1)
|
254
|
+
]));
|
255
|
+
}
|
256
|
+
const Q = /* @__PURE__ */ v(Ie, [["render", je]]), Ee = {}, De = {
|
257
|
+
class: "shrink-0 size-4",
|
258
|
+
xmlns: "http://www.w3.org/2000/svg",
|
259
|
+
width: "24",
|
260
|
+
height: "24",
|
261
|
+
viewBox: "0 0 24 24",
|
262
|
+
fill: "none",
|
263
|
+
stroke: "currentColor",
|
264
|
+
"stroke-width": "2",
|
265
|
+
"stroke-linecap": "round",
|
266
|
+
"stroke-linejoin": "round"
|
267
|
+
};
|
268
|
+
function Oe(o, e) {
|
269
|
+
return s(), r("svg", De, e[0] || (e[0] = [
|
270
|
+
t("polyline", { points: "9 11 12 14 22 4" }, null, -1),
|
271
|
+
t("path", { d: "M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11" }, null, -1)
|
272
|
+
]));
|
273
|
+
}
|
274
|
+
const Ze = /* @__PURE__ */ v(Ee, [["render", Oe]]), Ne = { class: "relative shrink-0" }, Be = ["src"], Se = {
|
275
|
+
key: 1,
|
276
|
+
class: "h-[38px] w-[38px] bg-gray-200 rounded-full flex items-center justify-center"
|
277
|
+
}, Ue = {
|
278
|
+
key: 2,
|
279
|
+
class: "absolute top-4 -start-3 size-2 bg-blue-600 rounded-full dark:bg-blue-500"
|
280
|
+
}, Ae = { class: "grow" }, Te = { class: "text-xs text-gray-500 dark:text-neutral-500" }, Qe = { class: "block text-sm font-medium text-gray-800 dark:text-neutral-300" }, Fe = { class: "text-sm text-gray-500 dark:text-neutral-500" }, Pe = {
|
281
|
+
key: 0,
|
282
|
+
class: "sm:group-hover:opacity-100 sm:opacity-0 sm:absolute sm:top-5 sm:end-5 inline-block p-0.5 bg-white border border-gray-200 rounded-lg shadow-sm transition ease-out"
|
283
|
+
}, Re = {
|
284
|
+
__name: "admin-notification-item",
|
285
|
+
props: { item: Object },
|
286
|
+
emits: ["update-notification"],
|
287
|
+
setup(o, { emit: e }) {
|
288
|
+
const n = e, a = D(!1), l = () => a.value = !0, i = () => a.value = !1, _ = async () => {
|
289
|
+
var x;
|
290
|
+
try {
|
291
|
+
await O.get(`/api/notification-read/${(x = o.item) == null ? void 0 : x.id}`), await n("update-notification");
|
292
|
+
} catch {
|
293
|
+
}
|
294
|
+
};
|
295
|
+
return (x, c) => {
|
296
|
+
var g, h, w, C, m, k;
|
297
|
+
const p = b("VsPopover");
|
298
|
+
return s(), r("li", {
|
299
|
+
class: E(["relative group w-full flex gap-x-5 text-start p-5 border-b", [(g = o.item) != null && g.read ? "bg-gray-100" : "bg-white"]]),
|
300
|
+
onMouseenter: l,
|
301
|
+
onMouseleave: i
|
302
|
+
}, [
|
303
|
+
t("div", Ne, [
|
304
|
+
(h = o.item) != null && h.avatar ? (s(), r("img", {
|
305
|
+
key: 0,
|
306
|
+
class: "shrink-0 size-[38px] rounded-full",
|
307
|
+
src: (w = o.item) == null ? void 0 : w.avatar,
|
308
|
+
alt: "Avatar"
|
309
|
+
}, null, 8, Be)) : (s(), r("div", Se, [
|
310
|
+
u(Q)
|
311
|
+
])),
|
312
|
+
(C = o.item) != null && C.read ? (s(), r("span", Ue)) : V("", !0)
|
313
|
+
]),
|
314
|
+
t("div", Ae, [
|
315
|
+
t("p", Te, [
|
316
|
+
u(P, {
|
317
|
+
name: "cdate",
|
318
|
+
data: o.item
|
319
|
+
}, null, 8, ["data"])
|
320
|
+
]),
|
321
|
+
t("span", Qe, y((m = o.item) == null ? void 0 : m.author), 1),
|
322
|
+
t("p", Fe, y((k = o.item) == null ? void 0 : k.subject), 1)
|
323
|
+
]),
|
324
|
+
a.value ? (s(), r("div", Pe, [
|
325
|
+
u(p, {
|
326
|
+
trigger: "hover",
|
327
|
+
placement: "left"
|
328
|
+
}, {
|
329
|
+
reference: $(() => [
|
330
|
+
t("button", {
|
331
|
+
onClick: _,
|
332
|
+
type: "button",
|
333
|
+
class: "hs-tooltip-toggle hs-tooltip relative inline-block size-7 flex shrink-0 justify-center items-center text-gray-500 hover:bg-gray-100 hover:text-gray-800 rounded"
|
334
|
+
}, [
|
335
|
+
u(Ze)
|
336
|
+
])
|
337
|
+
]),
|
338
|
+
default: $(() => [
|
339
|
+
c[0] || (c[0] = M(" Прочитати "))
|
340
|
+
]),
|
341
|
+
_: 1
|
342
|
+
})
|
343
|
+
])) : V("", !0)
|
344
|
+
], 34);
|
345
|
+
};
|
346
|
+
}
|
347
|
+
}, qe = {}, Ge = {
|
348
|
+
class: "flex-shrink-0 size-4",
|
349
|
+
xmlns: "http://www.w3.org/2000/svg",
|
350
|
+
viewBox: "0 0 24 24",
|
351
|
+
fill: "none",
|
352
|
+
stroke: "currentColor",
|
353
|
+
"stroke-width": "2",
|
354
|
+
"stroke-linecap": "round",
|
355
|
+
"stroke-linejoin": "round"
|
356
|
+
};
|
357
|
+
function Je(o, e, n, a, l, i) {
|
358
|
+
return s(), r("svg", Ge, e[0] || (e[0] = [
|
359
|
+
t("path", { d: "M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9" }, null, -1),
|
360
|
+
t("path", { d: "M10.3 21a1.94 1.94 0 0 0 3.4 0" }, null, -1)
|
361
|
+
]));
|
362
|
+
}
|
363
|
+
const Ke = /* @__PURE__ */ v(qe, [["render", Je]]), We = {}, Xe = {
|
364
|
+
class: "shrink-0 size-4",
|
365
|
+
xmlns: "http://www.w3.org/2000/svg",
|
366
|
+
width: "24",
|
367
|
+
height: "24",
|
368
|
+
viewBox: "0 0 24 24",
|
369
|
+
fill: "none",
|
370
|
+
stroke: "currentColor",
|
371
|
+
"stroke-width": "2",
|
372
|
+
"stroke-linecap": "round",
|
373
|
+
"stroke-linejoin": "round"
|
374
|
+
};
|
375
|
+
function Ye(o, e) {
|
376
|
+
return s(), r("svg", Xe, e[0] || (e[0] = [
|
377
|
+
t("path", { d: "M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z" }, null, -1),
|
378
|
+
t("circle", {
|
379
|
+
cx: "12",
|
380
|
+
cy: "12",
|
381
|
+
r: "3"
|
382
|
+
}, null, -1)
|
383
|
+
]));
|
384
|
+
}
|
385
|
+
const et = /* @__PURE__ */ v(We, [["render", Ye]]), tt = {
|
386
|
+
key: 0,
|
387
|
+
class: "flex absolute top-0 end-0 -mt-1.5 -me-1.5"
|
388
|
+
}, ot = { class: "relative min-w-[18px] min-h-[18px] inline-flex justify-center items-center text-[10px] bg-red-500 text-white rounded-full px-1" }, nt = {
|
389
|
+
key: 0,
|
390
|
+
class: "w-96 h-[100px] z-[11] absolute top-[40px] right-0"
|
391
|
+
}, st = { class: "h-[50px] px-[20px] border-b w-full flex items-center justify-between rounded-t-lg bg-white shadow-[0_10px_40px_10px_rgba(0,0,0,0.08)]" }, rt = { class: "h-[30px] w-[30px] inline-flex justify-center items-center gap-x-2 rounded-full border border-transparent text-gray-500 hover:bg-gray-100 focus:outline-none focus:bg-gray-100" }, lt = { class: "max-h-[400px] bg-white overflow-auto [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-track]:bg-gray-100 [&::-webkit-scrollbar-thumb]:bg-gray-300" }, at = { key: 0 }, it = {
|
392
|
+
__name: "admin-notification",
|
393
|
+
setup(o) {
|
394
|
+
const e = D(0), n = D([]), a = D(!1), l = D(null), i = (c) => {
|
395
|
+
l.value && !l.value.contains(c.target) && (a.value = !1);
|
396
|
+
};
|
397
|
+
J(a, (c) => {
|
398
|
+
c ? window.addEventListener("click", i) : window.removeEventListener("click", i);
|
399
|
+
}), K(() => {
|
400
|
+
window.removeEventListener("click", i);
|
401
|
+
});
|
402
|
+
const _ = async () => {
|
403
|
+
try {
|
404
|
+
const { data: c } = await O.get("/api/notification");
|
405
|
+
n.value = (c == null ? void 0 : c.rows) || [];
|
406
|
+
} catch {
|
407
|
+
}
|
408
|
+
};
|
409
|
+
_();
|
410
|
+
const x = async () => {
|
411
|
+
try {
|
412
|
+
await O.get("/api/notification-read"), await _();
|
413
|
+
} catch {
|
414
|
+
}
|
415
|
+
};
|
416
|
+
return (c, p) => (s(), r("div", {
|
417
|
+
ref_key: "notificationRef",
|
418
|
+
ref: l,
|
419
|
+
class: "hs-tooltip [--placement:bottom] inline-block show relative"
|
420
|
+
}, [
|
421
|
+
t("button", {
|
422
|
+
onClick: p[0] || (p[0] = (g) => a.value = !a.value),
|
423
|
+
class: "hs-tooltip-toggle relative size-[38px] inline-flex justify-center items-center gap-x-2 rounded-full border border-transparent text-gray-500 hover:bg-gray-100 disabled:opacity-50 disabled:pointer-events-none focus:outline-none focus:bg-gray-100"
|
424
|
+
}, [
|
425
|
+
u(Ke, {
|
426
|
+
height: "24",
|
427
|
+
width: "24"
|
428
|
+
}),
|
429
|
+
e.value ? (s(), r("span", tt, [
|
430
|
+
p[1] || (p[1] = t("span", { class: "absolute inline-flex bg-red-400 rounded-full opacity-75 animate-ping size-full dark:bg-red-600" }, null, -1)),
|
431
|
+
t("span", ot, y(e.value), 1)
|
432
|
+
])) : V("", !0)
|
433
|
+
]),
|
434
|
+
u(T, null, {
|
435
|
+
default: $(() => {
|
436
|
+
var g;
|
437
|
+
return [
|
438
|
+
a.value ? (s(), r("div", nt, [
|
439
|
+
t("div", st, [
|
440
|
+
p[2] || (p[2] = t("nav", { class: "flex" }, [
|
441
|
+
t("button", {
|
442
|
+
type: "button",
|
443
|
+
class: "px-2 py-1.5 relative inline-flex justify-center items-center gap-x-2 text-nowrap hover:bg-gray-100 text-gray-500 hover:text-gray-800 text-sm rounded-lg focus:outline-none focus:bg-gray-100 after:absolute after:bottom-[-9px] after:left-2.5 after:right-2.5 after:z-10 after:h-0.5 after:bg-gray-800"
|
444
|
+
}, " Всі ")
|
445
|
+
], -1)),
|
446
|
+
t("button", rt, [
|
447
|
+
u(et)
|
448
|
+
])
|
449
|
+
]),
|
450
|
+
t("div", lt, [
|
451
|
+
(g = n.value) != null && g.length ? (s(), r("ul", at, [
|
452
|
+
(s(!0), r(N, null, S(n.value, (h) => (s(), W(Re, {
|
453
|
+
key: h == null ? void 0 : h.id,
|
454
|
+
item: h,
|
455
|
+
onUpdateNotification: _
|
456
|
+
}, null, 8, ["item"]))), 128))
|
457
|
+
])) : V("", !0)
|
458
|
+
]),
|
459
|
+
t("button", {
|
460
|
+
onClick: x,
|
461
|
+
class: "h-[50px] border-t w-full rounded-b-lg bg-white shadow p-4 flex justify-center items-center gap-x-2 text-sm text-gray-500 font-medium sm:rounded-b-lg hover:text-blue-600 focus:outline-none"
|
462
|
+
}, [
|
463
|
+
u(Le, {
|
464
|
+
height: "16",
|
465
|
+
width: "16"
|
466
|
+
}),
|
467
|
+
p[3] || (p[3] = M(" Прочитати усі "))
|
468
|
+
])
|
469
|
+
])) : V("", !0)
|
470
|
+
];
|
471
|
+
}),
|
472
|
+
_: 1
|
473
|
+
})
|
474
|
+
], 512));
|
475
|
+
}
|
476
|
+
}, ct = {}, ut = {
|
477
|
+
class: "flex-shrink-0 size-4",
|
478
|
+
xmlns: "http://www.w3.org/2000/svg",
|
479
|
+
viewBox: "0 0 24 24",
|
480
|
+
fill: "none",
|
481
|
+
stroke: "currentColor",
|
482
|
+
"stroke-width": "2",
|
483
|
+
"stroke-linecap": "round",
|
484
|
+
"stroke-linejoin": "round"
|
485
|
+
};
|
486
|
+
function dt(o, e, n, a, l, i) {
|
487
|
+
return s(), r("svg", ut, e[0] || (e[0] = [
|
488
|
+
t("circle", {
|
489
|
+
cx: "12",
|
490
|
+
cy: "12",
|
491
|
+
r: "10"
|
492
|
+
}, null, -1),
|
493
|
+
t("path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3" }, null, -1),
|
494
|
+
t("path", { d: "M12 17h.01" }, null, -1)
|
495
|
+
]));
|
496
|
+
}
|
497
|
+
const pt = /* @__PURE__ */ v(ct, [["render", dt]]), ht = {
|
498
|
+
components: { IconQuestion: pt, IconUser: Q, AdminNotification: it },
|
499
|
+
mounted() {
|
500
|
+
this.getUserData();
|
501
|
+
},
|
502
|
+
data() {
|
503
|
+
return {
|
504
|
+
userData: null,
|
505
|
+
isVisible: !1
|
506
|
+
};
|
507
|
+
},
|
508
|
+
watch: {
|
509
|
+
isVisible(o) {
|
510
|
+
o ? setTimeout(
|
511
|
+
() => window.addEventListener("click", this.closeOnOutsideClick),
|
512
|
+
0
|
513
|
+
) : window.removeEventListener("click", this.closeOnOutsideClick);
|
514
|
+
}
|
515
|
+
},
|
516
|
+
methods: {
|
517
|
+
async getUserData() {
|
518
|
+
try {
|
519
|
+
const { data: o } = await O.get("/user");
|
520
|
+
this.userData = o;
|
521
|
+
} catch {
|
522
|
+
}
|
523
|
+
},
|
524
|
+
async logout() {
|
525
|
+
try {
|
526
|
+
await O.get("/logout"), await window.history.pushState({}, "", "/login"), await location.reload(), localStorage.removeItem("user");
|
527
|
+
} catch {
|
528
|
+
}
|
529
|
+
},
|
530
|
+
closeOnOutsideClick() {
|
531
|
+
this.isVisible = !1;
|
532
|
+
}
|
533
|
+
},
|
534
|
+
beforeUnmount() {
|
535
|
+
window.removeEventListener("click", this.closeOnOutsideClick);
|
536
|
+
}
|
537
|
+
}, ft = {
|
538
|
+
class: "h-[60px] border-b flex justify-end px-[20px]",
|
539
|
+
style: { width: "calc(100vw - 260px)" }
|
540
|
+
}, gt = { class: "flex items-center gap-[6px]" }, xt = {
|
541
|
+
href: "docs-softpro.com",
|
542
|
+
class: "size-[38px] inline-flex justify-center items-center gap-x-2 rounded-full border border-transparent text-gray-500 hover:bg-gray-100 disabled:opacity-50 disabled:pointer-events-none focus:outline-none focus:bg-gray-100 dark:text-neutral-400 dark:hover:bg-neutral-700 dark:focus:bg-neutral-700"
|
543
|
+
}, bt = { class: "relative" }, _t = ["src"], vt = {
|
544
|
+
key: 1,
|
545
|
+
class: "size-[40px] rounded-full bg-gray-200 flex items-center justify-center"
|
546
|
+
}, wt = { class: "p-[10px] gap-[6px] items-center border-b flex justify-between" }, Ct = ["src"], mt = {
|
547
|
+
key: 1,
|
548
|
+
class: "size-[40px] rounded-full bg-gray-200 flex items-center justify-center"
|
549
|
+
}, kt = { class: "text-[14px] mr-[10px] text-gray-500" }, yt = { class: "flex flex-col p-[4px]" };
|
550
|
+
function $t(o, e, n, a, l, i) {
|
551
|
+
var g, h, w, C, m, k, H, L, I, z;
|
552
|
+
const _ = b("IconQuestion"), x = b("AdminNotification"), c = b("IconUser"), p = b("router-link");
|
553
|
+
return s(), r("div", ft, [
|
554
|
+
t("div", gt, [
|
555
|
+
t("a", xt, [
|
556
|
+
u(_, {
|
557
|
+
height: "24",
|
558
|
+
width: "24"
|
559
|
+
})
|
560
|
+
]),
|
561
|
+
u(x),
|
562
|
+
e[4] || (e[4] = t("div", { class: "h-[30px] w-[1px] bg-gray-200 ml-[10px] mr-[10px]" }, null, -1)),
|
563
|
+
t("div", bt, [
|
564
|
+
t("div", {
|
565
|
+
onClick: e[0] || (e[0] = (j) => l.isVisible = !0),
|
566
|
+
class: "cursor-pointer"
|
567
|
+
}, [
|
568
|
+
(h = (g = l.userData) == null ? void 0 : g.user) != null && h.avatar ? (s(), r("img", {
|
569
|
+
key: 0,
|
570
|
+
class: "flex-shrink-0 size-[30px] rounded-full",
|
571
|
+
src: (C = (w = l.userData) == null ? void 0 : w.user) == null ? void 0 : C.avatar,
|
572
|
+
alt: "Image Description"
|
573
|
+
}, null, 8, _t)) : (s(), r("div", vt, [
|
574
|
+
u(c)
|
575
|
+
]))
|
576
|
+
]),
|
577
|
+
l.isVisible ? (s(), r("div", {
|
578
|
+
key: 0,
|
579
|
+
onClick: e[2] || (e[2] = X(() => {
|
580
|
+
}, ["stop"])),
|
581
|
+
class: "fixed bg-white w-[180px] top-[55px] right-[20px] shadow-xl rounded-xl z-[1]"
|
582
|
+
}, [
|
583
|
+
t("div", wt, [
|
584
|
+
(k = (m = l.userData) == null ? void 0 : m.user) != null && k.avatar ? (s(), r("img", {
|
585
|
+
key: 0,
|
586
|
+
class: "flex-shrink-0 size-[30px] rounded-full",
|
587
|
+
src: (L = (H = l.userData) == null ? void 0 : H.user) == null ? void 0 : L.avatar,
|
588
|
+
alt: "Image Description"
|
589
|
+
}, null, 8, Ct)) : (s(), r("div", mt, [
|
590
|
+
u(c)
|
591
|
+
])),
|
592
|
+
t("div", null, [
|
593
|
+
t("p", kt, y((z = (I = l.userData) == null ? void 0 : I.user) == null ? void 0 : z.username), 1)
|
594
|
+
])
|
595
|
+
]),
|
596
|
+
t("div", yt, [
|
597
|
+
u(p, {
|
598
|
+
to: "profile",
|
599
|
+
disabled: !0,
|
600
|
+
class: "p-[8px] block rounded-lg w-full mb-[4px] text-start hover:bg-gray-100 !duration-300"
|
601
|
+
}, {
|
602
|
+
default: $(() => e[3] || (e[3] = [
|
603
|
+
M("Профіль")
|
604
|
+
])),
|
605
|
+
_: 1
|
606
|
+
}),
|
607
|
+
t("button", {
|
608
|
+
onClick: e[1] || (e[1] = (...j) => i.logout && i.logout(...j)),
|
609
|
+
class: "p-[8px] block rounded-lg w-full text-start hover:bg-gray-100 !duration-300"
|
610
|
+
}, " Вийти ")
|
611
|
+
])
|
612
|
+
])) : V("", !0)
|
613
|
+
])
|
614
|
+
])
|
615
|
+
]);
|
616
|
+
}
|
617
|
+
const Vt = /* @__PURE__ */ v(ht, [["render", $t]]), Mt = {
|
618
|
+
components: { navbar: $e, AdminHeader: Vt },
|
619
|
+
computed: {
|
620
|
+
isMenu() {
|
621
|
+
return B.value;
|
622
|
+
}
|
623
|
+
}
|
624
|
+
}, Ht = { class: "admin-wrapper" }, Lt = { class: "flex flex-col" };
|
625
|
+
function It(o, e, n, a, l, i) {
|
626
|
+
const _ = b("navbar"), x = b("admin-header"), c = b("router-view");
|
627
|
+
return s(), r("div", Ht, [
|
628
|
+
u(_),
|
629
|
+
t("div", Lt, [
|
630
|
+
i.isMenu ? (s(), r(N, { key: 0 }, [
|
631
|
+
u(x),
|
632
|
+
u(c)
|
633
|
+
], 64)) : V("", !0)
|
634
|
+
])
|
635
|
+
]);
|
636
|
+
}
|
637
|
+
const Et = /* @__PURE__ */ v(Mt, [["render", It], ["__scopeId", "data-v-2f422765"]]);
|
638
|
+
export {
|
639
|
+
Et as default
|
640
|
+
};
|
package/dist/admin.js
CHANGED