@opengis/widgets 0.0.16 → 0.0.18
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/components.d.ts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1299 -1029
- package/dist/index.umd.cjs +27 -27
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/widgets/card/Card.vue.d.ts +14 -4
- package/dist/widgets/card/Card.vue.d.ts.map +1 -1
- package/dist/widgets/card/CardItem.vue.d.ts +1 -1
- package/dist/widgets/card/CardItem.vue.d.ts.map +1 -1
- package/dist/widgets/comments/CommentsWidget.vue.d.ts +1 -1
- package/dist/widgets/comments/CommentsWidget.vue.d.ts.map +1 -1
- package/dist/widgets/group-interface/GroupInterfaceWidget.vue.d.ts +17 -0
- package/dist/widgets/group-interface/GroupInterfaceWidget.vue.d.ts.map +1 -0
- package/dist/widgets/map/MapWidget.vue.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { h as
|
|
1
|
+
import { h as le, defineComponent as V, mergeModels as se, useModel as ge, ref as M, createElementBlock as a, openBlock as t, createElementVNode as e, createVNode as z, unref as D, withDirectives as R, vModelText as he, createCommentVNode as $, createTextVNode as O, onMounted as ee, onUnmounted as Ce, resolveComponent as ne, normalizeClass as I, createBlock as H, toDisplayString as _, Fragment as T, renderList as j, normalizeStyle as J, resolveDynamicComponent as B, withModifiers as U, computed as N, renderSlot as W, getCurrentInstance as Le, vModelRadio as He, vModelCheckbox as be, createStaticVNode as Se, mergeProps as K, nextTick as xe, onBeforeUnmount as Fe, watch as Oe, vShow as ke, Teleport as Ne, TransitionGroup as Pe, withCtx as Be } from "vue";
|
|
2
2
|
/**
|
|
3
3
|
* @license lucide-vue-next v0.535.0 - ISC
|
|
4
4
|
*
|
|
5
5
|
* This source code is licensed under the ISC license.
|
|
6
6
|
* See the LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/
|
|
8
|
-
const
|
|
8
|
+
const _e = (c) => c.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), We = (c) => c.replace(
|
|
9
9
|
/^([A-Z])|[\s-_]+(\w)/g,
|
|
10
|
-
(
|
|
11
|
-
),
|
|
12
|
-
const
|
|
13
|
-
return
|
|
14
|
-
},
|
|
10
|
+
(l, s, n) => n ? n.toUpperCase() : s.toLowerCase()
|
|
11
|
+
), Re = (c) => {
|
|
12
|
+
const l = We(c);
|
|
13
|
+
return l.charAt(0).toUpperCase() + l.slice(1);
|
|
14
|
+
}, Ue = (...c) => c.filter((l, s, n) => !!l && l.trim() !== "" && n.indexOf(l) === s).join(" ").trim();
|
|
15
15
|
/**
|
|
16
16
|
* @license lucide-vue-next v0.535.0 - ISC
|
|
17
17
|
*
|
|
18
18
|
* This source code is licensed under the ISC license.
|
|
19
19
|
* See the LICENSE file in the root directory of this source tree.
|
|
20
20
|
*/
|
|
21
|
-
var
|
|
21
|
+
var te = {
|
|
22
22
|
xmlns: "http://www.w3.org/2000/svg",
|
|
23
23
|
width: 24,
|
|
24
24
|
height: 24,
|
|
@@ -35,21 +35,21 @@ var Y = {
|
|
|
35
35
|
* This source code is licensed under the ISC license.
|
|
36
36
|
* See the LICENSE file in the root directory of this source tree.
|
|
37
37
|
*/
|
|
38
|
-
const
|
|
38
|
+
const Ge = ({ size: c, strokeWidth: l = 2, absoluteStrokeWidth: s, color: n, iconNode: o, name: f, class: r, ...v }, { slots: g }) => le(
|
|
39
39
|
"svg",
|
|
40
40
|
{
|
|
41
|
-
...
|
|
42
|
-
width:
|
|
43
|
-
height:
|
|
44
|
-
stroke:
|
|
45
|
-
"stroke-width":
|
|
46
|
-
class:
|
|
41
|
+
...te,
|
|
42
|
+
width: c || te.width,
|
|
43
|
+
height: c || te.height,
|
|
44
|
+
stroke: n || te.stroke,
|
|
45
|
+
"stroke-width": s ? Number(l) * 24 / Number(c) : l,
|
|
46
|
+
class: Ue(
|
|
47
47
|
"lucide",
|
|
48
|
-
...
|
|
48
|
+
...f ? [`lucide-${_e(Re(f))}-icon`, `lucide-${_e(f)}`] : ["lucide-icon"]
|
|
49
49
|
),
|
|
50
50
|
...v
|
|
51
51
|
},
|
|
52
|
-
[...
|
|
52
|
+
[...o.map((k) => le(...k)), ...g.default ? [g.default()] : []]
|
|
53
53
|
);
|
|
54
54
|
/**
|
|
55
55
|
* @license lucide-vue-next v0.535.0 - ISC
|
|
@@ -57,14 +57,14 @@ const Ne = ({ size: r, strokeWidth: i = 2, absoluteStrokeWidth: o, color: e, ico
|
|
|
57
57
|
* This source code is licensed under the ISC license.
|
|
58
58
|
* See the LICENSE file in the root directory of this source tree.
|
|
59
59
|
*/
|
|
60
|
-
const
|
|
61
|
-
|
|
60
|
+
const S = (c, l) => (s, { slots: n }) => le(
|
|
61
|
+
Ge,
|
|
62
62
|
{
|
|
63
|
-
...
|
|
64
|
-
iconNode:
|
|
65
|
-
name:
|
|
63
|
+
...s,
|
|
64
|
+
iconNode: l,
|
|
65
|
+
name: c
|
|
66
66
|
},
|
|
67
|
-
|
|
67
|
+
n
|
|
68
68
|
);
|
|
69
69
|
/**
|
|
70
70
|
* @license lucide-vue-next v0.535.0 - ISC
|
|
@@ -72,7 +72,7 @@ const V = (r, i) => (o, { slots: e }) => ne(
|
|
|
72
72
|
* This source code is licensed under the ISC license.
|
|
73
73
|
* See the LICENSE file in the root directory of this source tree.
|
|
74
74
|
*/
|
|
75
|
-
const
|
|
75
|
+
const qe = S("archive", [
|
|
76
76
|
["rect", { width: "20", height: "5", x: "2", y: "3", rx: "1", key: "1wp1u1" }],
|
|
77
77
|
["path", { d: "M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8", key: "1s80jp" }],
|
|
78
78
|
["path", { d: "M10 12h4", key: "a56b0p" }]
|
|
@@ -83,7 +83,7 @@ const Pe = V("archive", [
|
|
|
83
83
|
* This source code is licensed under the ISC license.
|
|
84
84
|
* See the LICENSE file in the root directory of this source tree.
|
|
85
85
|
*/
|
|
86
|
-
const
|
|
86
|
+
const Ke = S("arrow-right", [
|
|
87
87
|
["path", { d: "M5 12h14", key: "1ays0h" }],
|
|
88
88
|
["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]
|
|
89
89
|
]);
|
|
@@ -93,7 +93,7 @@ const Ue = V("arrow-right", [
|
|
|
93
93
|
* This source code is licensed under the ISC license.
|
|
94
94
|
* See the LICENSE file in the root directory of this source tree.
|
|
95
95
|
*/
|
|
96
|
-
const
|
|
96
|
+
const Ze = S("circle-check-big", [
|
|
97
97
|
["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
|
|
98
98
|
["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
|
|
99
99
|
]);
|
|
@@ -103,7 +103,7 @@ const Re = V("circle-check-big", [
|
|
|
103
103
|
* This source code is licensed under the ISC license.
|
|
104
104
|
* See the LICENSE file in the root directory of this source tree.
|
|
105
105
|
*/
|
|
106
|
-
const
|
|
106
|
+
const Me = S("download", [
|
|
107
107
|
["path", { d: "M12 15V3", key: "m9g1x1" }],
|
|
108
108
|
["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
|
|
109
109
|
["path", { d: "m7 10 5 5 5-5", key: "brsn70" }]
|
|
@@ -114,7 +114,7 @@ const _e = V("download", [
|
|
|
114
114
|
* This source code is licensed under the ISC license.
|
|
115
115
|
* See the LICENSE file in the root directory of this source tree.
|
|
116
116
|
*/
|
|
117
|
-
const
|
|
117
|
+
const Je = S("ellipsis", [
|
|
118
118
|
["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
|
|
119
119
|
["circle", { cx: "19", cy: "12", r: "1", key: "1wjl8i" }],
|
|
120
120
|
["circle", { cx: "5", cy: "12", r: "1", key: "1pcz8c" }]
|
|
@@ -125,7 +125,7 @@ const We = V("ellipsis", [
|
|
|
125
125
|
* This source code is licensed under the ISC license.
|
|
126
126
|
* See the LICENSE file in the root directory of this source tree.
|
|
127
127
|
*/
|
|
128
|
-
const
|
|
128
|
+
const Z = S("file-text", [
|
|
129
129
|
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
|
|
130
130
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
131
131
|
["path", { d: "M10 9H8", key: "b1mrlr" }],
|
|
@@ -138,7 +138,7 @@ const G = V("file-text", [
|
|
|
138
138
|
* This source code is licensed under the ISC license.
|
|
139
139
|
* See the LICENSE file in the root directory of this source tree.
|
|
140
140
|
*/
|
|
141
|
-
const
|
|
141
|
+
const Xe = S("file", [
|
|
142
142
|
["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
|
|
143
143
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }]
|
|
144
144
|
]);
|
|
@@ -148,7 +148,7 @@ const qe = V("file", [
|
|
|
148
148
|
* This source code is licensed under the ISC license.
|
|
149
149
|
* See the LICENSE file in the root directory of this source tree.
|
|
150
150
|
*/
|
|
151
|
-
const
|
|
151
|
+
const Qe = S("grid-3x3", [
|
|
152
152
|
["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
|
|
153
153
|
["path", { d: "M3 9h18", key: "1pudct" }],
|
|
154
154
|
["path", { d: "M3 15h18", key: "5xshup" }],
|
|
@@ -161,7 +161,7 @@ const Ge = V("grid-3x3", [
|
|
|
161
161
|
* This source code is licensed under the ISC license.
|
|
162
162
|
* See the LICENSE file in the root directory of this source tree.
|
|
163
163
|
*/
|
|
164
|
-
const
|
|
164
|
+
const Ye = S("heart", [
|
|
165
165
|
[
|
|
166
166
|
"path",
|
|
167
167
|
{
|
|
@@ -176,7 +176,7 @@ const Ke = V("heart", [
|
|
|
176
176
|
* This source code is licensed under the ISC license.
|
|
177
177
|
* See the LICENSE file in the root directory of this source tree.
|
|
178
178
|
*/
|
|
179
|
-
const
|
|
179
|
+
const et = S("history", [
|
|
180
180
|
["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
|
|
181
181
|
["path", { d: "M3 3v5h5", key: "1xhq8a" }],
|
|
182
182
|
["path", { d: "M12 7v5l4 2", key: "1fdv2h" }]
|
|
@@ -187,7 +187,7 @@ const Ze = V("history", [
|
|
|
187
187
|
* This source code is licensed under the ISC license.
|
|
188
188
|
* See the LICENSE file in the root directory of this source tree.
|
|
189
189
|
*/
|
|
190
|
-
const
|
|
190
|
+
const we = S("image", [
|
|
191
191
|
["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }],
|
|
192
192
|
["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }],
|
|
193
193
|
["path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21", key: "1xmnt7" }]
|
|
@@ -198,7 +198,7 @@ const ye = V("image", [
|
|
|
198
198
|
* This source code is licensed under the ISC license.
|
|
199
199
|
* See the LICENSE file in the root directory of this source tree.
|
|
200
200
|
*/
|
|
201
|
-
const
|
|
201
|
+
const tt = S("list", [
|
|
202
202
|
["path", { d: "M3 12h.01", key: "nlz23k" }],
|
|
203
203
|
["path", { d: "M3 18h.01", key: "1tta3j" }],
|
|
204
204
|
["path", { d: "M3 6h.01", key: "1rqtza" }],
|
|
@@ -212,7 +212,7 @@ const Je = V("list", [
|
|
|
212
212
|
* This source code is licensed under the ISC license.
|
|
213
213
|
* See the LICENSE file in the root directory of this source tree.
|
|
214
214
|
*/
|
|
215
|
-
const
|
|
215
|
+
const Te = S("plus", [
|
|
216
216
|
["path", { d: "M5 12h14", key: "1ays0h" }],
|
|
217
217
|
["path", { d: "M12 5v14", key: "s699le" }]
|
|
218
218
|
]);
|
|
@@ -222,7 +222,7 @@ const we = V("plus", [
|
|
|
222
222
|
* This source code is licensed under the ISC license.
|
|
223
223
|
* See the LICENSE file in the root directory of this source tree.
|
|
224
224
|
*/
|
|
225
|
-
const
|
|
225
|
+
const st = S("reply", [
|
|
226
226
|
["path", { d: "M20 18v-2a4 4 0 0 0-4-4H4", key: "5vmcpk" }],
|
|
227
227
|
["path", { d: "m9 17-5-5 5-5", key: "nvlc11" }]
|
|
228
228
|
]);
|
|
@@ -232,7 +232,7 @@ const Xe = V("reply", [
|
|
|
232
232
|
* This source code is licensed under the ISC license.
|
|
233
233
|
* See the LICENSE file in the root directory of this source tree.
|
|
234
234
|
*/
|
|
235
|
-
const
|
|
235
|
+
const De = S("send", [
|
|
236
236
|
[
|
|
237
237
|
"path",
|
|
238
238
|
{
|
|
@@ -248,7 +248,7 @@ const $e = V("send", [
|
|
|
248
248
|
* This source code is licensed under the ISC license.
|
|
249
249
|
* See the LICENSE file in the root directory of this source tree.
|
|
250
250
|
*/
|
|
251
|
-
const
|
|
251
|
+
const nt = S("sheet", [
|
|
252
252
|
["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }],
|
|
253
253
|
["line", { x1: "3", x2: "21", y1: "9", y2: "9", key: "1vqk6q" }],
|
|
254
254
|
["line", { x1: "3", x2: "21", y1: "15", y2: "15", key: "o2sbyz" }],
|
|
@@ -261,7 +261,7 @@ const Qe = V("sheet", [
|
|
|
261
261
|
* This source code is licensed under the ISC license.
|
|
262
262
|
* See the LICENSE file in the root directory of this source tree.
|
|
263
263
|
*/
|
|
264
|
-
const
|
|
264
|
+
const ot = S("square-pen", [
|
|
265
265
|
["path", { d: "M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7", key: "1m0v6g" }],
|
|
266
266
|
[
|
|
267
267
|
"path",
|
|
@@ -277,7 +277,7 @@ const Ye = V("square-pen", [
|
|
|
277
277
|
* This source code is licensed under the ISC license.
|
|
278
278
|
* See the LICENSE file in the root directory of this source tree.
|
|
279
279
|
*/
|
|
280
|
-
const
|
|
280
|
+
const fe = S("trash-2", [
|
|
281
281
|
["path", { d: "M10 11v6", key: "nco0om" }],
|
|
282
282
|
["path", { d: "M14 11v6", key: "outv1u" }],
|
|
283
283
|
["path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6", key: "miytrc" }],
|
|
@@ -290,7 +290,7 @@ const pe = V("trash-2", [
|
|
|
290
290
|
* This source code is licensed under the ISC license.
|
|
291
291
|
* See the LICENSE file in the root directory of this source tree.
|
|
292
292
|
*/
|
|
293
|
-
const
|
|
293
|
+
const at = S("user-check", [
|
|
294
294
|
["path", { d: "m16 11 2 2 4-4", key: "9rsbq5" }],
|
|
295
295
|
["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" }],
|
|
296
296
|
["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }]
|
|
@@ -301,7 +301,7 @@ const et = V("user-check", [
|
|
|
301
301
|
* This source code is licensed under the ISC license.
|
|
302
302
|
* See the LICENSE file in the root directory of this source tree.
|
|
303
303
|
*/
|
|
304
|
-
const
|
|
304
|
+
const ye = S("user", [
|
|
305
305
|
["path", { d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2", key: "975kel" }],
|
|
306
306
|
["circle", { cx: "12", cy: "7", r: "4", key: "17ys0d" }]
|
|
307
307
|
]);
|
|
@@ -311,7 +311,7 @@ const me = V("user", [
|
|
|
311
311
|
* This source code is licensed under the ISC license.
|
|
312
312
|
* See the LICENSE file in the root directory of this source tree.
|
|
313
313
|
*/
|
|
314
|
-
const
|
|
314
|
+
const lt = S("video", [
|
|
315
315
|
[
|
|
316
316
|
"path",
|
|
317
317
|
{
|
|
@@ -327,234 +327,234 @@ const tt = V("video", [
|
|
|
327
327
|
* This source code is licensed under the ISC license.
|
|
328
328
|
* See the LICENSE file in the root directory of this source tree.
|
|
329
329
|
*/
|
|
330
|
-
const
|
|
330
|
+
const ve = S("x", [
|
|
331
331
|
["path", { d: "M18 6 6 18", key: "1bl5f8" }],
|
|
332
332
|
["path", { d: "m6 6 12 12", key: "d8bk6v" }]
|
|
333
|
-
]),
|
|
333
|
+
]), it = { class: "border-t pt-3 mt-4" }, rt = { class: "flex gap-2" }, dt = { class: "relative flex items-center justify-center shrink-0 overflow-hidden rounded-full h-5 w-5 bg-gray-200" }, ct = { class: "flex-1 space-y-2" }, ut = { class: "flex justify-between items-center" }, pt = { class: "flex gap-2" }, mt = ["disabled"], je = /* @__PURE__ */ V({
|
|
334
334
|
__name: "CommentInputZone",
|
|
335
335
|
props: {
|
|
336
336
|
isReply: { type: Boolean, required: !1, default: !1 },
|
|
337
337
|
isReplyModifiers: {}
|
|
338
338
|
},
|
|
339
|
-
emits: /* @__PURE__ */
|
|
340
|
-
setup(
|
|
341
|
-
const
|
|
342
|
-
|
|
343
|
-
},
|
|
344
|
-
(v.ctrlKey || v.metaKey) && v.key === "Enter" && (v.preventDefault(),
|
|
339
|
+
emits: /* @__PURE__ */ se(["sendComment"], ["update:isReply"]),
|
|
340
|
+
setup(c, { emit: l }) {
|
|
341
|
+
const s = ge(c, "isReply"), n = M(""), o = l, f = () => {
|
|
342
|
+
n.value.trim() && (o("sendComment", n.value), n.value = "");
|
|
343
|
+
}, r = (v) => {
|
|
344
|
+
(v.ctrlKey || v.metaKey) && v.key === "Enter" && (v.preventDefault(), f());
|
|
345
345
|
};
|
|
346
|
-
return (v,
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
346
|
+
return (v, g) => (t(), a("div", it, [
|
|
347
|
+
e("div", rt, [
|
|
348
|
+
e("span", dt, [
|
|
349
|
+
z(D(ye), { class: "h-3 w-3 text-gray-500" })
|
|
350
350
|
]),
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
"onUpdate:modelValue":
|
|
354
|
-
onKeydown:
|
|
351
|
+
e("div", ct, [
|
|
352
|
+
R(e("textarea", {
|
|
353
|
+
"onUpdate:modelValue": g[0] || (g[0] = (k) => n.value = k),
|
|
354
|
+
onKeydown: r,
|
|
355
355
|
placeholder: "Add a comment...",
|
|
356
356
|
class: "w-full min-h-[60px] p-2 border border-gray-200 rounded text-xs resize-none focus:outline-none focus:ring-1 focus:ring-blue-500 focus:border-transparent"
|
|
357
357
|
}, null, 544), [
|
|
358
|
-
[
|
|
358
|
+
[he, n.value]
|
|
359
359
|
]),
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
360
|
+
e("div", ut, [
|
|
361
|
+
g[4] || (g[4] = e("span", { class: "text-xs text-gray-500 hidden sm:inline" }, "Cmd+Enter to send", -1)),
|
|
362
|
+
e("div", pt, [
|
|
363
|
+
s.value ? (t(), a("button", {
|
|
364
364
|
key: 0,
|
|
365
365
|
class: "inline-flex items-center justify-center gap-2 text-white whitespace-nowrap font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 bg-red-500 hover:bg-opacity-80 rounded-md h-6 text-xs px-2",
|
|
366
|
-
onClick:
|
|
366
|
+
onClick: g[1] || (g[1] = (k) => s.value = !1)
|
|
367
367
|
}, [
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
])) :
|
|
371
|
-
|
|
368
|
+
z(D(ve), { class: "h-3 w-3" }),
|
|
369
|
+
g[2] || (g[2] = O(" Cancel ", -1))
|
|
370
|
+
])) : $("", !0),
|
|
371
|
+
e("button", {
|
|
372
372
|
class: "inline-flex items-center justify-center gap-2 text-white whitespace-nowrap font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 bg-black text-primary-foreground hover:bg-opacity-80 rounded-md h-6 text-xs px-2",
|
|
373
|
-
disabled: !
|
|
374
|
-
onClick:
|
|
373
|
+
disabled: !n.value.trim(),
|
|
374
|
+
onClick: f
|
|
375
375
|
}, [
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
], 8,
|
|
376
|
+
z(D(De), { class: "h-3 w-3 mr-1" }),
|
|
377
|
+
g[3] || (g[3] = O(" Send ", -1))
|
|
378
|
+
], 8, mt)
|
|
379
379
|
])
|
|
380
380
|
])
|
|
381
381
|
])
|
|
382
382
|
])
|
|
383
383
|
]));
|
|
384
384
|
}
|
|
385
|
-
}),
|
|
385
|
+
}), gt = { class: "z-50 min-w-32 overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md w-32 outline-none pointer-events-auto" }, ht = /* @__PURE__ */ V({
|
|
386
386
|
__name: "CommentDetails",
|
|
387
387
|
props: {
|
|
388
388
|
showMoreOptions: { type: Boolean, required: !0, default: !1 },
|
|
389
389
|
showMoreOptionsModifiers: {}
|
|
390
390
|
},
|
|
391
|
-
emits: /* @__PURE__ */
|
|
392
|
-
setup(
|
|
393
|
-
const
|
|
394
|
-
|
|
391
|
+
emits: /* @__PURE__ */ se(["edit", "delete"], ["update:showMoreOptions"]),
|
|
392
|
+
setup(c, { emit: l }) {
|
|
393
|
+
const s = l, n = ge(c, "showMoreOptions"), o = M(), f = M(!0), r = async (k) => {
|
|
394
|
+
n.value && o.value && !o.value.contains(k.target) && !f.value && (n.value = !1), f.value = !1;
|
|
395
395
|
}, v = () => {
|
|
396
|
-
|
|
397
|
-
},
|
|
398
|
-
|
|
396
|
+
n.value = !1, s("edit");
|
|
397
|
+
}, g = () => {
|
|
398
|
+
n.value = !1, s("delete");
|
|
399
399
|
};
|
|
400
|
-
return
|
|
401
|
-
document.addEventListener("click",
|
|
402
|
-
}),
|
|
403
|
-
document.removeEventListener("click",
|
|
404
|
-
}), (
|
|
400
|
+
return ee(() => {
|
|
401
|
+
document.addEventListener("click", r);
|
|
402
|
+
}), Ce(() => {
|
|
403
|
+
document.removeEventListener("click", r);
|
|
404
|
+
}), (k, x) => (t(), a("div", {
|
|
405
405
|
class: "absolute bg-white left-0 top-full transform min-w-max z-50",
|
|
406
406
|
ref_key: "moreOptionsRef",
|
|
407
|
-
ref:
|
|
407
|
+
ref: o
|
|
408
408
|
}, [
|
|
409
|
-
|
|
410
|
-
|
|
409
|
+
e("div", gt, [
|
|
410
|
+
e("div", {
|
|
411
411
|
class: "relative cursor-pointer flex select-none items-center gap-2 rounded-sm px-2 py-2 outline-hidden transition-colors disabled:pointer-events-none disabled:opacity-50 text-xs hover:bg-gray-100 transition-colors duration-300",
|
|
412
412
|
onClick: v
|
|
413
413
|
}, [
|
|
414
|
-
|
|
415
|
-
|
|
414
|
+
z(D(ot), { class: "h-3 w-3 mr-2" }),
|
|
415
|
+
x[0] || (x[0] = O(" Edit ", -1))
|
|
416
416
|
]),
|
|
417
|
-
|
|
417
|
+
e("div", {
|
|
418
418
|
class: "relative cursor-pointer flex select-none items-center gap-2 rounded-sm px-2 py-2 outline-hidden transition-colors disabled:pointer-events-none disabled:opacity-50 text-xs text-red-600 hover:bg-gray-100 transition-colors duration-300",
|
|
419
|
-
onClick:
|
|
419
|
+
onClick: g
|
|
420
420
|
}, [
|
|
421
|
-
|
|
422
|
-
|
|
421
|
+
z(D(fe), { class: "h-3 w-3 mr-2" }),
|
|
422
|
+
x[1] || (x[1] = O(" Delete ", -1))
|
|
423
423
|
])
|
|
424
424
|
])
|
|
425
425
|
], 512));
|
|
426
426
|
}
|
|
427
|
-
}),
|
|
427
|
+
}), ft = { class: "space-y-2" }, yt = { class: "relative flex items-center justify-center shrink-0 overflow-hidden rounded-full h-5 w-5 bg-gray-200" }, vt = { class: "flex-1 min-w-0 space-y-1 relative" }, bt = { class: "flex items-center gap-2" }, xt = { class: "font-medium text-xs" }, kt = { class: "text-xs text-gray-500" }, _t = {
|
|
428
428
|
key: 0,
|
|
429
429
|
class: "text-xs text-gray-700 leading-relaxed"
|
|
430
|
-
},
|
|
430
|
+
}, wt = { class: "flex justify-between text-xs" }, $t = { class: "flex items-center gap-2" }, Ct = {
|
|
431
431
|
key: 0,
|
|
432
432
|
class: "flex gap-2"
|
|
433
|
-
},
|
|
433
|
+
}, Lt = ["disabled"], Mt = {
|
|
434
434
|
key: 0,
|
|
435
435
|
class: "ml-8 space-y-1 border-l-2 border-gray-100 pl-3"
|
|
436
|
-
},
|
|
436
|
+
}, Tt = /* @__PURE__ */ V({
|
|
437
437
|
__name: "CommentItem",
|
|
438
438
|
props: {
|
|
439
439
|
comment: {},
|
|
440
440
|
isInside: { type: Boolean }
|
|
441
441
|
},
|
|
442
442
|
emits: ["like", "reply", "edit", "delete"],
|
|
443
|
-
setup(
|
|
444
|
-
const
|
|
445
|
-
const
|
|
446
|
-
(
|
|
443
|
+
setup(c, { emit: l }) {
|
|
444
|
+
const s = l, n = c, o = M(n.comment.text), f = M("w-full p-2 rounded text-xs resize-none bg-transparent outline-none"), r = M("w-full min-h-[60px] p-2 border border-gray-200 rounded text-xs resize-none focus:outline-none focus:ring-1 focus:ring-blue-500 focus:border-transparent"), v = M(!1), g = M(!1), k = M(!1), x = M(!1), m = (i) => {
|
|
445
|
+
const p = /* @__PURE__ */ new Date(), u = Math.floor(
|
|
446
|
+
(p.getTime() - i.getTime()) / (1e3 * 60 * 60)
|
|
447
447
|
);
|
|
448
|
-
return
|
|
449
|
-
(
|
|
450
|
-
)}m` :
|
|
451
|
-
},
|
|
452
|
-
|
|
453
|
-
},
|
|
454
|
-
|
|
455
|
-
},
|
|
456
|
-
|
|
457
|
-
},
|
|
458
|
-
|
|
448
|
+
return u < 1 ? `${Math.floor(
|
|
449
|
+
(p.getTime() - i.getTime()) / 6e4
|
|
450
|
+
)}m` : u < 24 ? `${u}h` : `${Math.floor(u / 24)}d`;
|
|
451
|
+
}, b = () => {
|
|
452
|
+
x.value = !x.value, x.value ? s("like", n.comment.id, "add") : s("like", n.comment.id, "delete");
|
|
453
|
+
}, F = () => {
|
|
454
|
+
s("edit", n.comment.id, o.value), k.value = !1;
|
|
455
|
+
}, w = (i, p) => {
|
|
456
|
+
s("like", i, p);
|
|
457
|
+
}, C = (i, p) => {
|
|
458
|
+
s("edit", i, p);
|
|
459
459
|
};
|
|
460
|
-
return (
|
|
461
|
-
const
|
|
462
|
-
return
|
|
463
|
-
|
|
464
|
-
class:
|
|
460
|
+
return (i, p) => {
|
|
461
|
+
const u = ne("CommentItem", !0);
|
|
462
|
+
return t(), a("div", ft, [
|
|
463
|
+
e("div", {
|
|
464
|
+
class: I(["group flex gap-2 p-2 rounded hover:bg-gray-50 transition-colors relative", k.value ? "bg-gray-50" : ""])
|
|
465
465
|
}, [
|
|
466
|
-
|
|
467
|
-
|
|
466
|
+
e("span", yt, [
|
|
467
|
+
z(D(ye), { class: "h-3 w-3 text-gray-500" })
|
|
468
468
|
]),
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
469
|
+
e("div", vt, [
|
|
470
|
+
e("div", bt, [
|
|
471
|
+
e("span", xt, _(i.comment?.author), 1),
|
|
472
|
+
e("span", kt, _(m(i.comment?.createdAt)), 1)
|
|
473
473
|
]),
|
|
474
|
-
|
|
474
|
+
k.value ? R((t(), a("textarea", {
|
|
475
475
|
key: 1,
|
|
476
|
-
"onUpdate:modelValue":
|
|
477
|
-
class:
|
|
476
|
+
"onUpdate:modelValue": p[0] || (p[0] = (h) => o.value = h),
|
|
477
|
+
class: I(k.value ? r.value : f.value)
|
|
478
478
|
}, null, 2)), [
|
|
479
|
-
[
|
|
480
|
-
]) : (
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
class:
|
|
485
|
-
onClick:
|
|
479
|
+
[he, o.value]
|
|
480
|
+
]) : (t(), a("p", _t, _(i.comment?.text), 1)),
|
|
481
|
+
e("div", wt, [
|
|
482
|
+
e("div", $t, [
|
|
483
|
+
e("button", {
|
|
484
|
+
class: I(["flex items-center gap-1", x.value ? "text-blue-600" : "text-gray-500 hover:text-blue-600 transition-colors"]),
|
|
485
|
+
onClick: p[1] || (p[1] = (h) => b())
|
|
486
486
|
}, [
|
|
487
|
-
|
|
488
|
-
class:
|
|
487
|
+
z(D(Ye), {
|
|
488
|
+
class: I(["h-3 w-3", x.value ? "fill-blue-600" : ""])
|
|
489
489
|
}, null, 8, ["class"]),
|
|
490
|
-
|
|
490
|
+
O(" " + _(i.comment?.likes), 1)
|
|
491
491
|
], 2),
|
|
492
|
-
|
|
492
|
+
i.isInside ? $("", !0) : (t(), a("button", {
|
|
493
493
|
key: 0,
|
|
494
494
|
class: "text-gray-500 hover:text-blue-600 transition-colors",
|
|
495
|
-
onClick:
|
|
495
|
+
onClick: p[2] || (p[2] = (h) => g.value = !0)
|
|
496
496
|
}, [
|
|
497
|
-
|
|
497
|
+
z(D(st), { class: "h-3 w-3" })
|
|
498
498
|
])),
|
|
499
|
-
|
|
499
|
+
e("button", {
|
|
500
500
|
class: "text-gray-400 hover:text-gray-600 transition-colors opacity-0 group-hover:opacity-100",
|
|
501
501
|
type: "button",
|
|
502
|
-
onClick:
|
|
502
|
+
onClick: p[3] || (p[3] = (h) => v.value = !0)
|
|
503
503
|
}, [
|
|
504
|
-
|
|
504
|
+
z(D(Je), { class: "h-3 w-3" })
|
|
505
505
|
])
|
|
506
506
|
]),
|
|
507
|
-
|
|
508
|
-
|
|
507
|
+
k.value ? (t(), a("div", Ct, [
|
|
508
|
+
e("button", {
|
|
509
509
|
class: "inline-flex items-center justify-center gap-2 text-white whitespace-nowrap font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 bg-red-500 hover:bg-opacity-80 rounded-md h-6 text-xs px-2",
|
|
510
|
-
onClick:
|
|
510
|
+
onClick: p[4] || (p[4] = (h) => k.value = !1)
|
|
511
511
|
}, [
|
|
512
|
-
|
|
513
|
-
|
|
512
|
+
z(D(ve), { class: "h-3 w-3" }),
|
|
513
|
+
p[11] || (p[11] = O(" Cancel ", -1))
|
|
514
514
|
]),
|
|
515
|
-
|
|
515
|
+
e("button", {
|
|
516
516
|
class: "inline-flex items-center justify-center gap-2 text-white whitespace-nowrap font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 bg-black text-primary-foreground hover:bg-opacity-80 rounded-md h-6 text-xs px-2",
|
|
517
|
-
disabled: !
|
|
518
|
-
onClick:
|
|
517
|
+
disabled: !o.value.trim(),
|
|
518
|
+
onClick: p[5] || (p[5] = (h) => F())
|
|
519
519
|
}, [
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
], 8,
|
|
523
|
-
])) :
|
|
520
|
+
z(D(De), { class: "h-3 w-3 mr-1" }),
|
|
521
|
+
p[12] || (p[12] = O(" Send ", -1))
|
|
522
|
+
], 8, Lt)
|
|
523
|
+
])) : $("", !0)
|
|
524
524
|
])
|
|
525
525
|
]),
|
|
526
|
-
v.value ? (
|
|
526
|
+
v.value ? (t(), H(ht, {
|
|
527
527
|
key: 0,
|
|
528
528
|
showMoreOptions: v.value,
|
|
529
|
-
"onUpdate:showMoreOptions":
|
|
530
|
-
onEdit:
|
|
531
|
-
onDelete:
|
|
532
|
-
comment:
|
|
533
|
-
}, null, 8, ["showMoreOptions", "comment"])) :
|
|
529
|
+
"onUpdate:showMoreOptions": p[6] || (p[6] = (h) => v.value = h),
|
|
530
|
+
onEdit: p[7] || (p[7] = (h) => k.value = !0),
|
|
531
|
+
onDelete: p[8] || (p[8] = (h) => i.$emit("delete", i.comment?.id)),
|
|
532
|
+
comment: i.comment
|
|
533
|
+
}, null, 8, ["showMoreOptions", "comment"])) : $("", !0)
|
|
534
534
|
], 2),
|
|
535
|
-
|
|
536
|
-
(
|
|
537
|
-
key:
|
|
538
|
-
comment:
|
|
535
|
+
i.isInside ? $("", !0) : (t(), a("div", Mt, [
|
|
536
|
+
(t(!0), a(T, null, j(i.comment?.replies, (h) => (t(), H(u, {
|
|
537
|
+
key: h.id,
|
|
538
|
+
comment: h,
|
|
539
539
|
isInside: !0,
|
|
540
|
-
onDelete: (
|
|
541
|
-
onLike:
|
|
542
|
-
onEdit:
|
|
540
|
+
onDelete: (y) => i.$emit("delete", h.id),
|
|
541
|
+
onLike: w,
|
|
542
|
+
onEdit: C
|
|
543
543
|
}, null, 8, ["comment", "onDelete"]))), 128)),
|
|
544
|
-
|
|
544
|
+
g.value && !i.isInside ? (t(), H(je, {
|
|
545
545
|
key: 0,
|
|
546
|
-
onSendComment:
|
|
547
|
-
isReply:
|
|
548
|
-
"onUpdate:isReply":
|
|
549
|
-
}, null, 8, ["isReply"])) :
|
|
546
|
+
onSendComment: p[9] || (p[9] = (h) => i.$emit("reply", i.comment?.id, h)),
|
|
547
|
+
isReply: g.value,
|
|
548
|
+
"onUpdate:isReply": p[10] || (p[10] = (h) => g.value = h)
|
|
549
|
+
}, null, 8, ["isReply"])) : $("", !0)
|
|
550
550
|
]))
|
|
551
551
|
]);
|
|
552
552
|
};
|
|
553
553
|
}
|
|
554
|
-
}),
|
|
554
|
+
}), Dt = ["id"], jt = {
|
|
555
555
|
key: 0,
|
|
556
556
|
class: "text-xl font-semibold text-gray-900 mb-4"
|
|
557
|
-
}, ie = /* @__PURE__ */
|
|
557
|
+
}, ie = /* @__PURE__ */ V({
|
|
558
558
|
__name: "CommentsWidget",
|
|
559
559
|
props: {
|
|
560
560
|
title: {},
|
|
@@ -570,79 +570,101 @@ const ge = V("x", [
|
|
|
570
570
|
style: {}
|
|
571
571
|
},
|
|
572
572
|
emits: ["add", "reply", "like", "delete", "edit"],
|
|
573
|
-
setup(
|
|
574
|
-
const
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
573
|
+
setup(c, { emit: l }) {
|
|
574
|
+
const s = c, n = l, o = M(s.comments ?? []);
|
|
575
|
+
async function f() {
|
|
576
|
+
if (!s.id) return;
|
|
577
|
+
const m = await fetch(`/api/widget/comment/${s.id}`).then((b) => b.json());
|
|
578
|
+
o.value = m.rows.map((b) => ({
|
|
579
|
+
id: b.communication_id,
|
|
580
|
+
author: b.username,
|
|
581
|
+
text: b.body,
|
|
582
|
+
createdAt: new Date(b.cdate)
|
|
583
|
+
}));
|
|
584
|
+
}
|
|
585
|
+
o.value.length === 0 && f();
|
|
586
|
+
const r = async (m) => {
|
|
587
|
+
s.onAddComment ? s.onAddComment(m) : s.id && (await fetch(`/api/widget/comment/${s.id}`, {
|
|
588
|
+
method: "POST",
|
|
589
|
+
headers: { "Content-Type": "application/json" },
|
|
590
|
+
body: JSON.stringify({ body: m })
|
|
591
|
+
}), await f()), n("add", m);
|
|
592
|
+
}, v = (m, b) => {
|
|
593
|
+
s?.onLike?.(m, b), n("like", m, b);
|
|
594
|
+
}, g = (m, b) => {
|
|
595
|
+
s.onReply?.(m, b), n("reply", m, b);
|
|
596
|
+
}, k = async (m, b) => {
|
|
597
|
+
s.onEdit ? s.onEdit(m, b) : s.id && (await fetch(`/api/widget/comment/${s.id}/${m}`, {
|
|
598
|
+
method: "POST",
|
|
599
|
+
headers: { "Content-Type": "application/json" },
|
|
600
|
+
body: JSON.stringify({ body: b })
|
|
601
|
+
}), await f()), n("edit", m, b);
|
|
602
|
+
}, x = async (m) => {
|
|
603
|
+
s.onDelete ? s.onDelete(m) : s.id && (await fetch(`/api/widget/comment/${s.id}/${m}`, {
|
|
604
|
+
method: "DELETE"
|
|
605
|
+
}), await f()), n("delete", m);
|
|
584
606
|
};
|
|
585
|
-
return (
|
|
586
|
-
class:
|
|
587
|
-
id:
|
|
588
|
-
style:
|
|
607
|
+
return (m, b) => (t(), a("div", {
|
|
608
|
+
class: I(["mx-auto font-sans", m.className]),
|
|
609
|
+
id: m.id,
|
|
610
|
+
style: J(m.style)
|
|
589
611
|
}, [
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
class:
|
|
593
|
-
style:
|
|
612
|
+
m.title ? (t(), a("h3", jt, _(m.title), 1)) : $("", !0),
|
|
613
|
+
e("div", {
|
|
614
|
+
class: I([m.maxHeight ? "overflow-y-auto" : "", "space-y-3"]),
|
|
615
|
+
style: J({ maxHeight: m.maxHeight + "px" })
|
|
594
616
|
}, [
|
|
595
|
-
(
|
|
596
|
-
key:
|
|
597
|
-
comment:
|
|
598
|
-
onReply:
|
|
599
|
-
onLike:
|
|
600
|
-
onDelete:
|
|
601
|
-
onEdit:
|
|
617
|
+
(t(!0), a(T, null, j(o.value, (F) => (t(), H(Tt, {
|
|
618
|
+
key: F.id,
|
|
619
|
+
comment: F,
|
|
620
|
+
onReply: g,
|
|
621
|
+
onLike: v,
|
|
622
|
+
onDelete: b[0] || (b[0] = (w) => x(w)),
|
|
623
|
+
onEdit: k
|
|
602
624
|
}, null, 8, ["comment"]))), 128))
|
|
603
625
|
], 6),
|
|
604
|
-
|
|
605
|
-
onSendComment:
|
|
626
|
+
z(je, {
|
|
627
|
+
onSendComment: b[1] || (b[1] = (F) => r(F))
|
|
606
628
|
})
|
|
607
|
-
], 14,
|
|
629
|
+
], 14, Dt));
|
|
608
630
|
}
|
|
609
|
-
}),
|
|
631
|
+
}), $e = /* @__PURE__ */ new Map([
|
|
610
632
|
["file", {
|
|
611
633
|
name: "File",
|
|
612
634
|
color: "bg-green-100 text-green-700 border-green-200",
|
|
613
|
-
icon:
|
|
635
|
+
icon: Z
|
|
614
636
|
}],
|
|
615
637
|
["post", {
|
|
616
638
|
name: "Post",
|
|
617
639
|
color: "bg-blue-100 text-blue-700 border-blue-200",
|
|
618
|
-
icon:
|
|
640
|
+
icon: nt
|
|
619
641
|
}],
|
|
620
642
|
["user", {
|
|
621
643
|
name: "User",
|
|
622
644
|
color: "bg-purple-100 text-purple-700 border-purple-200",
|
|
623
|
-
icon:
|
|
645
|
+
icon: at
|
|
624
646
|
}],
|
|
625
647
|
["custom", {
|
|
626
648
|
name: "Custom",
|
|
627
649
|
color: "bg-gray-100 text-gray-700 border-gray-200",
|
|
628
|
-
icon:
|
|
650
|
+
icon: et
|
|
629
651
|
}]
|
|
630
|
-
]),
|
|
652
|
+
]), It = { class: "mx-auto font-sans" }, At = {
|
|
631
653
|
key: 0,
|
|
632
654
|
class: "text-xl font-semibold text-gray-900 mb-4"
|
|
633
|
-
},
|
|
655
|
+
}, zt = { class: "relative" }, Vt = { class: "space-y-3" }, Et = { class: "flex-1 min-w-0 pb-2" }, Ht = { class: "flex items-center gap-1.5 mb-1 mt-0.5" }, St = { class: "relative flex items-center justify-center shrink-0 overflow-hidden rounded-full h-5 w-5 bg-gray-200" }, Ft = { class: "font-medium text-xs" }, Ot = { class: "text-xs text-gray-500" }, Nt = { class: "space-y-1" }, Pt = { class: "text-xs text-gray-700" }, Bt = { class: "capitalize mr-1" }, Wt = {
|
|
634
656
|
key: 0,
|
|
635
657
|
class: "inline-flex items-center rounded-full border py-0.5 font-semibold transition-colors text-foreground text-xs h-4 px-1 capitalize"
|
|
636
|
-
},
|
|
658
|
+
}, Rt = {
|
|
637
659
|
key: 0,
|
|
638
660
|
class: "flex items-center gap-1 text-xs"
|
|
639
|
-
},
|
|
661
|
+
}, Ut = {
|
|
640
662
|
key: 0,
|
|
641
663
|
class: "bg-red-50 text-red-600 px-1.5 py-0.5 rounded text-xs border border-red-200"
|
|
642
|
-
},
|
|
664
|
+
}, Gt = {
|
|
643
665
|
key: 2,
|
|
644
666
|
class: "bg-green-50 text-green-600 px-1.5 py-0.5 rounded text-xs border border-green-200"
|
|
645
|
-
},
|
|
667
|
+
}, re = /* @__PURE__ */ V({
|
|
646
668
|
__name: "HistoryWidget",
|
|
647
669
|
props: {
|
|
648
670
|
data: {},
|
|
@@ -652,57 +674,57 @@ const ge = V("x", [
|
|
|
652
674
|
className: {},
|
|
653
675
|
style: {}
|
|
654
676
|
},
|
|
655
|
-
setup(
|
|
656
|
-
const
|
|
657
|
-
|
|
658
|
-
async function
|
|
659
|
-
const
|
|
660
|
-
if (!
|
|
677
|
+
setup(c) {
|
|
678
|
+
const l = c, s = M(Array.isArray(l.data) ? l.data : []);
|
|
679
|
+
s.value.length === 0 && l.id && n();
|
|
680
|
+
async function n() {
|
|
681
|
+
const o = await fetch(`/api/widget/history/${l.id}`);
|
|
682
|
+
if (!o.ok)
|
|
661
683
|
return { data: [] };
|
|
662
|
-
const
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
}),
|
|
684
|
+
const f = await o.json();
|
|
685
|
+
f.rows.forEach((r) => {
|
|
686
|
+
r.timestamp = new Date(r.cdate), r.id = r.entity_id, r.entityType = r.entity_type, r.entityId = r.entity_id, r.action = r.change_type, r.userId = r.change_user_id, r.userName = r.username, r.timestamp = new Date(r.cdate), r.description = r.username, r.status = r.username;
|
|
687
|
+
}), s.value = f.rows;
|
|
666
688
|
}
|
|
667
|
-
return (
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
class:
|
|
671
|
-
style:
|
|
689
|
+
return (o, f) => (t(), a("div", It, [
|
|
690
|
+
o.title ? (t(), a("h3", At, _(o.title), 1)) : $("", !0),
|
|
691
|
+
e("div", {
|
|
692
|
+
class: I(o.maxHeight ? "overflow-y-auto" : ""),
|
|
693
|
+
style: J({ maxHeight: o.maxHeight + "px" })
|
|
672
694
|
}, [
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
(
|
|
695
|
+
e("div", zt, [
|
|
696
|
+
f[0] || (f[0] = e("div", { class: "absolute left-3 top-0 bottom-0 w-0.5 bg-gray-200" }, null, -1)),
|
|
697
|
+
e("div", Vt, [
|
|
698
|
+
(t(!0), a(T, null, j(s.value, (r) => (t(), a("div", {
|
|
677
699
|
class: "relative flex items-start gap-2",
|
|
678
|
-
key:
|
|
700
|
+
key: r?.id
|
|
679
701
|
}, [
|
|
680
|
-
|
|
681
|
-
class:
|
|
702
|
+
e("div", {
|
|
703
|
+
class: I(`flex-shrink-0 w-6 h-6 rounded-full flex items-center justify-center border bg-white relative z-10 ${D($e).get(r?.entityType)?.color}`)
|
|
682
704
|
}, [
|
|
683
|
-
(
|
|
705
|
+
(t(), H(B(D($e).get(r?.entityType)?.icon), { class: "h-3 w-3" }))
|
|
684
706
|
], 2),
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
707
|
+
e("div", Et, [
|
|
708
|
+
e("div", Ht, [
|
|
709
|
+
e("span", St, [
|
|
710
|
+
z(D(ye), { class: "h-3 w-3 text-gray-500" })
|
|
689
711
|
]),
|
|
690
|
-
|
|
691
|
-
|
|
712
|
+
e("span", Ft, _(r?.userName), 1),
|
|
713
|
+
e("span", Ot, _(r?.timestamp.toLocaleTimeString("ua-UA", { hour: "2-digit", minute: "2-digit" })), 1)
|
|
692
714
|
]),
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
715
|
+
e("div", Nt, [
|
|
716
|
+
e("div", Pt, [
|
|
717
|
+
e("span", Bt, _(r?.action), 1),
|
|
718
|
+
r?.entityId ? (t(), a("span", Wt, _(r?.entityId), 1)) : $("", !0)
|
|
697
719
|
]),
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
720
|
+
r?.changes?.[r?.entityId] ? (t(), a("div", Rt, [
|
|
721
|
+
r?.changes?.[r?.entityId]?.old ? (t(), a("span", Ut, _(r?.changes?.[r?.entityId]?.old), 1)) : $("", !0),
|
|
722
|
+
r?.changes?.[r?.entityId]?.old && r?.changes?.[r?.entityId]?.new ? (t(), H(D(Ke), {
|
|
701
723
|
key: 1,
|
|
702
724
|
class: "h-2 w-2 text-gray-400"
|
|
703
|
-
})) :
|
|
704
|
-
|
|
705
|
-
])) :
|
|
725
|
+
})) : $("", !0),
|
|
726
|
+
r?.changes?.[r?.entityId]?.new ? (t(), a("span", Gt, _(r?.changes?.[r?.entityId]?.new), 1)) : $("", !0)
|
|
727
|
+
])) : $("", !0)
|
|
706
728
|
])
|
|
707
729
|
])
|
|
708
730
|
]))), 128))
|
|
@@ -711,209 +733,209 @@ const ge = V("x", [
|
|
|
711
733
|
], 6)
|
|
712
734
|
]));
|
|
713
735
|
}
|
|
714
|
-
}),
|
|
736
|
+
}), qt = {
|
|
715
737
|
key: 0,
|
|
716
738
|
class: "text-xl font-semibold"
|
|
717
|
-
},
|
|
739
|
+
}, Kt = { class: "flex gap-1" }, Zt = { class: "ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border-input bg-background hover:bg-accent hover:text-accent-foreground border rounded-md text-xs h-7 px-2 cursor-pointer" }, Jt = /* @__PURE__ */ V({
|
|
718
740
|
__name: "FileHeader",
|
|
719
|
-
props: /* @__PURE__ */
|
|
741
|
+
props: /* @__PURE__ */ se({
|
|
720
742
|
title: {}
|
|
721
743
|
}, {
|
|
722
744
|
modelValue: {},
|
|
723
745
|
modelModifiers: {}
|
|
724
746
|
}),
|
|
725
|
-
emits: /* @__PURE__ */
|
|
726
|
-
setup(
|
|
727
|
-
const
|
|
747
|
+
emits: /* @__PURE__ */ se(["onAddFile"], ["update:modelValue"]),
|
|
748
|
+
setup(c) {
|
|
749
|
+
const l = ge(c, "modelValue"), s = {
|
|
728
750
|
active: "bg-blue-100 text-black hover:bg-blue-100",
|
|
729
751
|
inactive: "bg-white text-black hover:bg-blue-100"
|
|
730
752
|
};
|
|
731
|
-
return (
|
|
732
|
-
class:
|
|
753
|
+
return (n, o) => (t(), a("div", {
|
|
754
|
+
class: I(["flex flex-col sm:flex-row gap-3 mb-4", n.title ? "justify-between sm:items-center" : "justify-end sm:items-center"])
|
|
733
755
|
}, [
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
class:
|
|
738
|
-
onClick:
|
|
756
|
+
n.title ? (t(), a("h3", qt, _(n.title), 1)) : $("", !0),
|
|
757
|
+
e("div", Kt, [
|
|
758
|
+
e("button", {
|
|
759
|
+
class: I(["ring-offset-background inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors border-input border rounded-md text-xs h-7 px-2", l.value === "list" ? s.active : s.inactive]),
|
|
760
|
+
onClick: o[0] || (o[0] = (f) => l.value = "list")
|
|
739
761
|
}, [
|
|
740
|
-
|
|
762
|
+
z(D(tt), { class: "h-4 w-4" })
|
|
741
763
|
], 2),
|
|
742
|
-
|
|
743
|
-
class:
|
|
744
|
-
onClick:
|
|
764
|
+
e("button", {
|
|
765
|
+
class: I(["ring-offset-background inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors border-input border rounded-md text-xs h-7 px-2", l.value === "grid" ? s.active : s.inactive]),
|
|
766
|
+
onClick: o[1] || (o[1] = (f) => l.value = "grid")
|
|
745
767
|
}, [
|
|
746
|
-
|
|
768
|
+
z(D(Qe), { class: "h-4 w-4" })
|
|
747
769
|
], 2),
|
|
748
|
-
|
|
749
|
-
|
|
770
|
+
e("label", null, [
|
|
771
|
+
e("input", {
|
|
750
772
|
type: "file",
|
|
751
773
|
class: "hidden",
|
|
752
|
-
onChange:
|
|
774
|
+
onChange: o[2] || (o[2] = (f) => n.$emit("onAddFile", f))
|
|
753
775
|
}, null, 32),
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
776
|
+
e("div", Zt, [
|
|
777
|
+
z(D(Te), { class: "h-4 w-4" }),
|
|
778
|
+
o[3] || (o[3] = O(" Додати файл ", -1))
|
|
757
779
|
])
|
|
758
780
|
])
|
|
759
781
|
])
|
|
760
782
|
], 2));
|
|
761
783
|
}
|
|
762
|
-
}),
|
|
784
|
+
}), ae = {
|
|
763
785
|
pdf: {
|
|
764
786
|
color: "bg-red-100 text-red-700 border-red-200",
|
|
765
|
-
icon:
|
|
787
|
+
icon: Z,
|
|
766
788
|
label: "PDF"
|
|
767
789
|
},
|
|
768
790
|
sketch: {
|
|
769
791
|
color: "bg-gray-100 text-gray-700 border-gray-200",
|
|
770
|
-
icon:
|
|
792
|
+
icon: Xe,
|
|
771
793
|
label: "SKETCH"
|
|
772
794
|
},
|
|
773
795
|
mp4: {
|
|
774
796
|
color: "bg-purple-100 text-purple-700 border-purple-200",
|
|
775
|
-
icon:
|
|
797
|
+
icon: lt,
|
|
776
798
|
label: "VIDEO"
|
|
777
799
|
},
|
|
778
800
|
docx: {
|
|
779
801
|
color: "bg-blue-100 text-blue-700 border-blue-200",
|
|
780
|
-
icon:
|
|
802
|
+
icon: Z,
|
|
781
803
|
label: "DOC"
|
|
782
804
|
},
|
|
783
805
|
zip: {
|
|
784
806
|
color: "bg-orange-100 text-orange-700 border-orange-200",
|
|
785
|
-
icon:
|
|
807
|
+
icon: qe,
|
|
786
808
|
label: "ARCHIVE"
|
|
787
809
|
},
|
|
788
810
|
png: {
|
|
789
811
|
color: "bg-green-100 text-green-700 border-green-200",
|
|
790
|
-
icon:
|
|
812
|
+
icon: we,
|
|
791
813
|
label: "IMAGE"
|
|
792
814
|
},
|
|
793
815
|
jpg: {
|
|
794
816
|
color: "bg-green-100 text-green-700 border-green-200",
|
|
795
|
-
icon:
|
|
817
|
+
icon: we,
|
|
796
818
|
label: "IMAGE"
|
|
797
819
|
},
|
|
798
820
|
xlsx: {
|
|
799
821
|
color: "bg-emerald-100 text-emerald-700 border-emerald-200",
|
|
800
|
-
icon:
|
|
822
|
+
icon: Z,
|
|
801
823
|
label: "EXCEL"
|
|
802
824
|
},
|
|
803
825
|
pptx: {
|
|
804
826
|
color: "bg-amber-100 text-amber-700 border-amber-200",
|
|
805
|
-
icon:
|
|
827
|
+
icon: Z,
|
|
806
828
|
label: "PPT"
|
|
807
829
|
}
|
|
808
830
|
};
|
|
809
|
-
function
|
|
810
|
-
const
|
|
831
|
+
function Ie(c, l = "en") {
|
|
832
|
+
const s = {
|
|
811
833
|
month: "short",
|
|
812
834
|
day: "numeric"
|
|
813
835
|
};
|
|
814
|
-
return new Intl.DateTimeFormat(
|
|
836
|
+
return new Intl.DateTimeFormat(l, s).format(c);
|
|
815
837
|
}
|
|
816
|
-
function
|
|
817
|
-
if (
|
|
818
|
-
const
|
|
819
|
-
return `${parseFloat((
|
|
838
|
+
function Ae(c) {
|
|
839
|
+
if (c === 0) return "0 B";
|
|
840
|
+
const l = 1024, s = ["B", "KB", "MB", "GB", "TB"], n = Math.floor(Math.log(c) / Math.log(l));
|
|
841
|
+
return `${parseFloat((c / Math.pow(l, n)).toFixed(1))} ${s[n]}`;
|
|
820
842
|
}
|
|
821
|
-
const
|
|
843
|
+
const Xt = { class: "space-y-0.5" }, Qt = ["onClick"], Yt = ["onClick"], es = { class: "flex items-center gap-2" }, ts = { class: "font-medium text-xs truncate hover:text-blue-600 cursor-pointer" }, ss = { class: "hidden sm:block text-xs text-gray-500 w-16 text-right" }, ns = { class: "hidden md:block text-xs text-gray-500 w-12 text-right" }, os = { class: "flex items-center gap-1" }, as = ["onClick"], ls = ["onClick"], is = /* @__PURE__ */ V({
|
|
822
844
|
__name: "FileList",
|
|
823
845
|
props: {
|
|
824
846
|
files: {}
|
|
825
847
|
},
|
|
826
848
|
emits: ["delete", "download", "openLightbox"],
|
|
827
|
-
setup(
|
|
828
|
-
return (
|
|
829
|
-
(
|
|
849
|
+
setup(c) {
|
|
850
|
+
return (l, s) => (t(), a("div", Xt, [
|
|
851
|
+
(t(!0), a(T, null, j(l.files, (n) => (t(), a("div", {
|
|
830
852
|
class: "flex items-center gap-2 p-1.5 rounded hover:bg-gray-50 group border-b border-gray-100 last:border-b-0",
|
|
831
|
-
key:
|
|
832
|
-
onClick:
|
|
853
|
+
key: n.id,
|
|
854
|
+
onClick: U((o) => l.$emit("openLightbox", n), ["stop"])
|
|
833
855
|
}, [
|
|
834
|
-
|
|
835
|
-
class:
|
|
856
|
+
e("div", {
|
|
857
|
+
class: I(["p-1 rounded", D(ae)[n?.ext]?.color || "bg-blue-100 text-blue-700 border-blue-200"])
|
|
836
858
|
}, [
|
|
837
|
-
(
|
|
859
|
+
(t(), H(B(D(ae)[n?.ext]?.icon || D(ae).pdf.icon), { class: "h-3 w-3" }))
|
|
838
860
|
], 2),
|
|
839
|
-
|
|
861
|
+
e("div", {
|
|
840
862
|
class: "flex-1 min-w-0",
|
|
841
|
-
onClick: (
|
|
863
|
+
onClick: (o) => l.$emit("openLightbox", n)
|
|
842
864
|
}, [
|
|
843
|
-
|
|
844
|
-
|
|
865
|
+
e("div", es, [
|
|
866
|
+
e("span", ts, _(n?.uploaded_name || n?.name), 1)
|
|
845
867
|
])
|
|
846
|
-
], 8,
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
onClick:
|
|
868
|
+
], 8, Yt),
|
|
869
|
+
e("div", ss, _(D(Ae)(n.size)), 1),
|
|
870
|
+
e("div", ns, _(D(Ie)(n.createdAt)), 1),
|
|
871
|
+
e("div", os, [
|
|
872
|
+
e("button", {
|
|
873
|
+
onClick: U((o) => l.$emit("download", n), ["stop"]),
|
|
852
874
|
class: "ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity"
|
|
853
875
|
}, [
|
|
854
|
-
|
|
855
|
-
], 8,
|
|
856
|
-
|
|
876
|
+
z(D(Me), { class: "h-3 w-3" })
|
|
877
|
+
], 8, as),
|
|
878
|
+
e("button", {
|
|
857
879
|
class: "ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:bg-accent rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity text-red-600 hover:text-red-700",
|
|
858
|
-
onClick:
|
|
880
|
+
onClick: U((o) => l.$emit("delete", o, n?.file_id), ["stop"])
|
|
859
881
|
}, [
|
|
860
|
-
|
|
861
|
-
], 8,
|
|
882
|
+
z(D(fe), { class: "h-3 w-3" })
|
|
883
|
+
], 8, ls)
|
|
862
884
|
])
|
|
863
|
-
], 8,
|
|
885
|
+
], 8, Qt))), 128))
|
|
864
886
|
]));
|
|
865
887
|
}
|
|
866
|
-
}),
|
|
888
|
+
}), rs = { class: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3" }, ds = ["onClick"], cs = { class: "space-y-2" }, us = { class: "flex justify-center items-center w-full aspect-[4/3] bg-gray-100 rounded overflow-hidden" }, ps = ["src"], ms = { class: "space-y-1" }, gs = ["title"], hs = { class: "text-xs text-gray-500 text-left" }, fs = { class: "absolute top-2 right-1 flex items-center gap-1" }, ys = ["onClick"], vs = ["onClick"], bs = /* @__PURE__ */ V({
|
|
867
889
|
__name: "FileGrid",
|
|
868
890
|
props: {
|
|
869
891
|
files: {}
|
|
870
892
|
},
|
|
871
893
|
emits: ["delete", "download", "openLightbox"],
|
|
872
|
-
setup(
|
|
873
|
-
return (
|
|
874
|
-
(
|
|
875
|
-
key:
|
|
876
|
-
onClick:
|
|
894
|
+
setup(c) {
|
|
895
|
+
return (l, s) => (t(), a("div", rs, [
|
|
896
|
+
(t(!0), a(T, null, j(l.files, (n) => (t(), a("div", {
|
|
897
|
+
key: n.id,
|
|
898
|
+
onClick: U((o) => l.$emit("openLightbox", n), ["stop"]),
|
|
877
899
|
class: "group relative border rounded-lg p-2 hover:shadow-md transition-all bg-white hover:bg-gray-50 cursor-pointer"
|
|
878
900
|
}, [
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
901
|
+
e("div", cs, [
|
|
902
|
+
e("div", us, [
|
|
903
|
+
n.ext === "png" || n.ext === "jpg" || n.ext === "jpeg" || n.ext === "gif" || n.ext === "svg" || n.ext === "webp" ? (t(), a("img", {
|
|
882
904
|
key: 0,
|
|
883
|
-
src: `/file/resize?filepath=${
|
|
905
|
+
src: `/file/resize?filepath=${n?.file_path}&w=500`,
|
|
884
906
|
alt: "file",
|
|
885
907
|
class: "w-full h-full object-cover"
|
|
886
|
-
}, null, 8,
|
|
908
|
+
}, null, 8, ps)) : (t(), H(D(Z), {
|
|
887
909
|
key: 1,
|
|
888
910
|
class: "h-10 w-10 text-gray-500"
|
|
889
911
|
}))
|
|
890
912
|
]),
|
|
891
|
-
|
|
892
|
-
|
|
913
|
+
e("div", ms, [
|
|
914
|
+
e("h3", {
|
|
893
915
|
class: "font-medium text-xs leading-tight text-left",
|
|
894
|
-
title:
|
|
895
|
-
}, _(
|
|
896
|
-
|
|
916
|
+
title: n.uploaded_name || n.name
|
|
917
|
+
}, _(n.uploaded_name || n.name), 9, gs),
|
|
918
|
+
e("p", hs, _(D(Ie)(n.createdAt)) + ", " + _(D(Ae)(n.size)), 1)
|
|
897
919
|
])
|
|
898
920
|
]),
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
onClick:
|
|
921
|
+
e("div", fs, [
|
|
922
|
+
e("button", {
|
|
923
|
+
onClick: U((o) => l.$emit("download", n), ["stop"]),
|
|
902
924
|
class: "ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity hover:bg-red-50"
|
|
903
925
|
}, [
|
|
904
|
-
|
|
905
|
-
], 8,
|
|
906
|
-
|
|
926
|
+
z(D(Me), { class: "h-3 w-3" })
|
|
927
|
+
], 8, ys),
|
|
928
|
+
e("button", {
|
|
907
929
|
class: "ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 rounded-md h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity text-red-600 hover:text-red-700 hover:bg-red-50",
|
|
908
|
-
onClick:
|
|
930
|
+
onClick: U((o) => l.$emit("delete", o, n?.file_id), ["stop"])
|
|
909
931
|
}, [
|
|
910
|
-
|
|
911
|
-
], 8,
|
|
932
|
+
z(D(fe), { class: "h-3 w-3" })
|
|
933
|
+
], 8, vs)
|
|
912
934
|
])
|
|
913
|
-
], 8,
|
|
935
|
+
], 8, ds))), 128))
|
|
914
936
|
]));
|
|
915
937
|
}
|
|
916
|
-
}),
|
|
938
|
+
}), xs = { class: "mx-auto font-sans" }, ks = { key: 1 }, de = /* @__PURE__ */ V({
|
|
917
939
|
__name: "FilesWidget",
|
|
918
940
|
props: {
|
|
919
941
|
title: {},
|
|
@@ -927,128 +949,128 @@ const qt = { class: "space-y-0.5" }, Gt = ["onClick"], Kt = ["onClick"], Zt = {
|
|
|
927
949
|
onDelete: {}
|
|
928
950
|
},
|
|
929
951
|
emits: ["delete", "add", "openLightbox"],
|
|
930
|
-
setup(
|
|
931
|
-
const
|
|
932
|
-
v.value.length === 0 &&
|
|
933
|
-
const
|
|
934
|
-
|
|
935
|
-
},
|
|
936
|
-
|
|
937
|
-
},
|
|
938
|
-
const
|
|
939
|
-
|
|
940
|
-
},
|
|
941
|
-
|
|
942
|
-
},
|
|
943
|
-
|
|
944
|
-
},
|
|
945
|
-
const
|
|
946
|
-
|
|
947
|
-
},
|
|
948
|
-
async function
|
|
949
|
-
if (!
|
|
952
|
+
setup(c, { emit: l }) {
|
|
953
|
+
const s = c, n = M(!1), o = M(null), f = M(!1), r = M(0), v = M(s.files ?? []), g = l;
|
|
954
|
+
v.value.length === 0 && p();
|
|
955
|
+
const k = (y, d) => {
|
|
956
|
+
o.value = d, n.value = !0;
|
|
957
|
+
}, x = () => {
|
|
958
|
+
o.value && (w(o.value), o.value = null, n.value = !1);
|
|
959
|
+
}, m = N(() => Array.isArray(v.value) ? v.value.map((y) => y?.file_path) : []), b = (y) => {
|
|
960
|
+
const d = m.value.findIndex((A) => A === y.file_path);
|
|
961
|
+
d !== -1 && (f.value = !0, r.value = d);
|
|
962
|
+
}, F = (y) => {
|
|
963
|
+
s.onAddFile ? s.onAddFile(y) : u(y), g("add", y);
|
|
964
|
+
}, w = (y) => {
|
|
965
|
+
s.onDelete ? s.onDelete(y) : h(y), g("delete", y);
|
|
966
|
+
}, C = (y) => {
|
|
967
|
+
const d = document.createElement("a");
|
|
968
|
+
d.setAttribute("download", y?.uploaded_name || y?.name), d.href = y?.file_path || y?.path, d.click();
|
|
969
|
+
}, i = M("list");
|
|
970
|
+
async function p() {
|
|
971
|
+
if (!s.id)
|
|
950
972
|
return;
|
|
951
|
-
const
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
}), v.value =
|
|
973
|
+
const y = await fetch(`/api/widget/file/${s.id}`).then((d) => d.json());
|
|
974
|
+
y.rows.forEach((d) => {
|
|
975
|
+
d.timestamp = new Date(d.cdate), d.id = d.entity_id, d.entityType = d.entity_type, d.entityId = d.entity_id, d.entityType = d.entity_type, d.action = d.change_type, d.userId = d.change_user_id, d.userName = d.username, d.timestamp = new Date(d.cdate), d.description = d.username, d.status = d.username;
|
|
976
|
+
}), v.value = y.rows;
|
|
955
977
|
}
|
|
956
|
-
const
|
|
957
|
-
if (!(!
|
|
978
|
+
const u = async (y) => {
|
|
979
|
+
if (!(!y.target || !y.target.files || y.target.files.length === 0))
|
|
958
980
|
try {
|
|
959
981
|
await Promise.all(
|
|
960
|
-
Array.from(
|
|
961
|
-
const
|
|
962
|
-
|
|
963
|
-
const
|
|
982
|
+
Array.from(y.target.files).map(async (d) => {
|
|
983
|
+
const A = new FormData();
|
|
984
|
+
A.append("file", d);
|
|
985
|
+
const P = `/api/widget/file/${s.id}`, E = await fetch(P, {
|
|
964
986
|
method: "POST",
|
|
965
|
-
body:
|
|
987
|
+
body: A
|
|
966
988
|
});
|
|
967
|
-
if (!
|
|
968
|
-
throw new Error(`HTTP error! status: ${
|
|
969
|
-
return
|
|
989
|
+
if (!E.ok)
|
|
990
|
+
throw new Error(`HTTP error! status: ${E.status}`);
|
|
991
|
+
return d;
|
|
970
992
|
})
|
|
971
|
-
), await
|
|
972
|
-
} catch (
|
|
973
|
-
console.error("Помилка при завантаженні файлів:",
|
|
993
|
+
), await p();
|
|
994
|
+
} catch (d) {
|
|
995
|
+
console.error("Помилка при завантаженні файлів:", d);
|
|
974
996
|
}
|
|
975
|
-
},
|
|
997
|
+
}, h = async (y) => {
|
|
976
998
|
try {
|
|
977
999
|
await fetch(
|
|
978
|
-
`/api/widget/file/${
|
|
1000
|
+
`/api/widget/file/${s.id}/${y}`,
|
|
979
1001
|
{
|
|
980
1002
|
method: "DELETE"
|
|
981
1003
|
}
|
|
982
|
-
), await
|
|
983
|
-
} catch (
|
|
984
|
-
console.error(
|
|
1004
|
+
), await p();
|
|
1005
|
+
} catch (d) {
|
|
1006
|
+
console.error(d);
|
|
985
1007
|
}
|
|
986
1008
|
};
|
|
987
|
-
return (
|
|
988
|
-
const
|
|
989
|
-
return
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
modelValue:
|
|
993
|
-
"onUpdate:modelValue":
|
|
994
|
-
title:
|
|
995
|
-
onOnAddFile:
|
|
1009
|
+
return (y, d) => {
|
|
1010
|
+
const A = ne("MessageBox"), P = ne("Lightbox");
|
|
1011
|
+
return t(), a(T, null, [
|
|
1012
|
+
e("div", xs, [
|
|
1013
|
+
z(Jt, {
|
|
1014
|
+
modelValue: i.value,
|
|
1015
|
+
"onUpdate:modelValue": d[0] || (d[0] = (E) => i.value = E),
|
|
1016
|
+
title: s.title,
|
|
1017
|
+
onOnAddFile: d[1] || (d[1] = (E) => F(E))
|
|
996
1018
|
}, null, 8, ["modelValue", "title"]),
|
|
997
|
-
v.value.length > 0 ? (
|
|
1019
|
+
v.value.length > 0 ? (t(), a("div", {
|
|
998
1020
|
key: 0,
|
|
999
|
-
class:
|
|
1000
|
-
style:
|
|
1021
|
+
class: I(y.maxHeight ? "overflow-y-auto" : ""),
|
|
1022
|
+
style: J({ maxHeight: y.maxHeight + "px" })
|
|
1001
1023
|
}, [
|
|
1002
|
-
|
|
1024
|
+
i.value === "list" ? (t(), H(is, {
|
|
1003
1025
|
key: 0,
|
|
1004
|
-
onDelete:
|
|
1005
|
-
onDownload:
|
|
1006
|
-
onOpenLightbox:
|
|
1026
|
+
onDelete: k,
|
|
1027
|
+
onDownload: C,
|
|
1028
|
+
onOpenLightbox: d[2] || (d[2] = (E) => b(E)),
|
|
1007
1029
|
files: v.value
|
|
1008
|
-
}, null, 8, ["files"])) :
|
|
1009
|
-
|
|
1030
|
+
}, null, 8, ["files"])) : $("", !0),
|
|
1031
|
+
i.value === "grid" ? (t(), H(bs, {
|
|
1010
1032
|
key: 1,
|
|
1011
|
-
onDelete:
|
|
1012
|
-
onDownload:
|
|
1013
|
-
onOpenLightbox:
|
|
1033
|
+
onDelete: k,
|
|
1034
|
+
onDownload: C,
|
|
1035
|
+
onOpenLightbox: d[3] || (d[3] = (E) => b(E)),
|
|
1014
1036
|
files: v.value
|
|
1015
|
-
}, null, 8, ["files"])) :
|
|
1016
|
-
], 6)) : (
|
|
1017
|
-
|
|
1018
|
-
|
|
1037
|
+
}, null, 8, ["files"])) : $("", !0)
|
|
1038
|
+
], 6)) : (t(), a("div", ks, d[6] || (d[6] = [
|
|
1039
|
+
e("div", { class: "flex items-center justify-center h-full" }, [
|
|
1040
|
+
e("p", { class: "text-gray-500 leading-[3]" }, "Файлів не знайдено")
|
|
1019
1041
|
], -1)
|
|
1020
1042
|
])))
|
|
1021
1043
|
]),
|
|
1022
|
-
|
|
1023
|
-
modelValue:
|
|
1024
|
-
"onUpdate:modelValue":
|
|
1025
|
-
onConfirm:
|
|
1044
|
+
z(A, {
|
|
1045
|
+
modelValue: n.value,
|
|
1046
|
+
"onUpdate:modelValue": d[4] || (d[4] = (E) => n.value = E),
|
|
1047
|
+
onConfirm: x,
|
|
1026
1048
|
title: "Ви впевнені?",
|
|
1027
1049
|
message: "Ви впевнені, що хочете видалити цей файл?",
|
|
1028
1050
|
confirmButtonText: "Так, я впевнена/ий",
|
|
1029
1051
|
cancelButtonText: "Скасувати"
|
|
1030
1052
|
}, null, 8, ["modelValue"]),
|
|
1031
|
-
|
|
1032
|
-
modelValue:
|
|
1033
|
-
"onUpdate:modelValue":
|
|
1034
|
-
images:
|
|
1035
|
-
"start-index":
|
|
1053
|
+
z(P, {
|
|
1054
|
+
modelValue: f.value,
|
|
1055
|
+
"onUpdate:modelValue": d[5] || (d[5] = (E) => f.value = E),
|
|
1056
|
+
images: m.value,
|
|
1057
|
+
"start-index": r.value
|
|
1036
1058
|
}, null, 8, ["modelValue", "images", "start-index"])
|
|
1037
1059
|
], 64);
|
|
1038
1060
|
};
|
|
1039
1061
|
}
|
|
1040
|
-
}),
|
|
1062
|
+
}), _s = {
|
|
1041
1063
|
key: 0,
|
|
1042
1064
|
class: "image-wrapper h-full max-h-[400px]",
|
|
1043
1065
|
id: "lightbox-gallery"
|
|
1044
|
-
},
|
|
1066
|
+
}, ws = ["onClick"], $s = {
|
|
1045
1067
|
key: 0,
|
|
1046
1068
|
rel: "noreferrer",
|
|
1047
1069
|
class: "relative block h-full w-full"
|
|
1048
|
-
},
|
|
1070
|
+
}, Cs = ["src"], Ls = {
|
|
1049
1071
|
key: 0,
|
|
1050
1072
|
class: "thumb-cover"
|
|
1051
|
-
},
|
|
1073
|
+
}, Ms = /* @__PURE__ */ V({
|
|
1052
1074
|
__name: "GalleryContent",
|
|
1053
1075
|
props: {
|
|
1054
1076
|
title: {},
|
|
@@ -1062,86 +1084,86 @@ const qt = { class: "space-y-0.5" }, Gt = ["onClick"], Kt = ["onClick"], Zt = {
|
|
|
1062
1084
|
style: {}
|
|
1063
1085
|
},
|
|
1064
1086
|
emits: ["delete"],
|
|
1065
|
-
setup(
|
|
1066
|
-
const
|
|
1067
|
-
() => Array.isArray(
|
|
1068
|
-
), v = (
|
|
1069
|
-
const
|
|
1070
|
-
(
|
|
1087
|
+
setup(c, { emit: l }) {
|
|
1088
|
+
const s = l, n = M(!1), o = M(0), f = c, r = N(
|
|
1089
|
+
() => Array.isArray(f.items) ? f.items.map((g) => g?.file_path) : []
|
|
1090
|
+
), v = (g) => {
|
|
1091
|
+
const k = r.value.findIndex(
|
|
1092
|
+
(x) => x === g.file_path
|
|
1071
1093
|
);
|
|
1072
|
-
|
|
1094
|
+
k !== -1 && (n.value = !0, o.value = k);
|
|
1073
1095
|
};
|
|
1074
|
-
return (
|
|
1075
|
-
const
|
|
1076
|
-
return
|
|
1077
|
-
(
|
|
1078
|
-
class:
|
|
1079
|
-
key:
|
|
1080
|
-
onClick:
|
|
1096
|
+
return (g, k) => {
|
|
1097
|
+
const x = ne("Lightbox");
|
|
1098
|
+
return g.items?.length >= 1 ? (t(), a("div", _s, [
|
|
1099
|
+
(t(!0), a(T, null, j(g.items, (m, b) => (t(), a("div", {
|
|
1100
|
+
class: I(["h-full w-full image" + b, "cursor-pointer bg-teal-500 rounded-[3px]"]),
|
|
1101
|
+
key: b,
|
|
1102
|
+
onClick: U((F) => v(m), ["stop"])
|
|
1081
1103
|
}, [
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
src: `/file/resize?filepath=${
|
|
1104
|
+
b < 5 ? (t(), a("div", $s, [
|
|
1105
|
+
e("img", {
|
|
1106
|
+
src: `/file/resize?filepath=${m?.file_path}&w=500`,
|
|
1085
1107
|
alt: "alt",
|
|
1086
1108
|
height: "auto",
|
|
1087
1109
|
width: "100%",
|
|
1088
|
-
class:
|
|
1110
|
+
class: I([
|
|
1089
1111
|
"object-cover h-full w-full bg-gray-200 rounded-[3px]",
|
|
1090
|
-
|
|
1112
|
+
b === 0 ? "max-h-[411px]" : "max-h-[calc((411px-3px)/2)]"
|
|
1091
1113
|
])
|
|
1092
|
-
}, null, 10,
|
|
1093
|
-
|
|
1094
|
-
])) :
|
|
1095
|
-
], 10,
|
|
1096
|
-
(
|
|
1097
|
-
key: "empty-" +
|
|
1098
|
-
class:
|
|
1114
|
+
}, null, 10, Cs),
|
|
1115
|
+
b === 4 && g.items?.length > 5 ? (t(), a("div", Ls, " +" + _(g.items?.length - 5), 1)) : $("", !0)
|
|
1116
|
+
])) : $("", !0)
|
|
1117
|
+
], 10, ws))), 128)),
|
|
1118
|
+
(t(!0), a(T, null, j(Math.max(0, 5 - g.items.length), (m) => (t(), a("div", {
|
|
1119
|
+
key: "empty-" + m,
|
|
1120
|
+
class: I(["h-full w-full image" + (g.items.length + m - 1), "bg-gray-300 rounded-[3px]"])
|
|
1099
1121
|
}, null, 2))), 128)),
|
|
1100
|
-
|
|
1101
|
-
modelValue:
|
|
1102
|
-
"onUpdate:modelValue":
|
|
1103
|
-
images:
|
|
1104
|
-
"start-index":
|
|
1122
|
+
z(x, {
|
|
1123
|
+
modelValue: n.value,
|
|
1124
|
+
"onUpdate:modelValue": k[0] || (k[0] = (m) => n.value = m),
|
|
1125
|
+
images: r.value,
|
|
1126
|
+
"start-index": o.value,
|
|
1105
1127
|
delete: "true",
|
|
1106
1128
|
download: "true",
|
|
1107
|
-
onDelete:
|
|
1129
|
+
onDelete: k[1] || (k[1] = (m) => s("delete", m))
|
|
1108
1130
|
}, null, 8, ["modelValue", "images", "start-index"])
|
|
1109
|
-
])) :
|
|
1131
|
+
])) : $("", !0);
|
|
1110
1132
|
};
|
|
1111
1133
|
}
|
|
1112
|
-
}),
|
|
1134
|
+
}), Ts = {
|
|
1113
1135
|
key: 0,
|
|
1114
1136
|
class: "text-xl font-semibold"
|
|
1115
|
-
},
|
|
1137
|
+
}, Ds = { class: "flex gap-1" }, js = { class: "ring-offset-background focus-visible:outline-hidden focus-visible:ring-ring inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border-input bg-background hover:bg-accent hover:text-accent-foreground border rounded-md text-xs h-7 px-2 cursor-pointer" }, Is = /* @__PURE__ */ V({
|
|
1116
1138
|
__name: "widgetHeader",
|
|
1117
1139
|
props: {
|
|
1118
1140
|
title: {}
|
|
1119
1141
|
},
|
|
1120
1142
|
emits: ["onAddImage"],
|
|
1121
|
-
setup(
|
|
1122
|
-
return (
|
|
1123
|
-
class:
|
|
1143
|
+
setup(c) {
|
|
1144
|
+
return (l, s) => (t(), a("div", {
|
|
1145
|
+
class: I(["flex flex-col sm:flex-row gap-3 mb-4", l.title ? "justify-between sm:items-center" : "justify-end sm:items-center"])
|
|
1124
1146
|
}, [
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1147
|
+
l.title ? (t(), a("h3", Ts, _(l.title), 1)) : $("", !0),
|
|
1148
|
+
e("div", Ds, [
|
|
1149
|
+
e("label", null, [
|
|
1150
|
+
e("input", {
|
|
1129
1151
|
type: "file",
|
|
1130
1152
|
class: "hidden",
|
|
1131
|
-
onChange:
|
|
1153
|
+
onChange: s[0] || (s[0] = (n) => l.$emit("onAddImage", n))
|
|
1132
1154
|
}, null, 32),
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1155
|
+
e("div", js, [
|
|
1156
|
+
z(D(Te), { class: "h-4 w-4" }),
|
|
1157
|
+
s[1] || (s[1] = O(" Додати зображення ", -1))
|
|
1136
1158
|
])
|
|
1137
1159
|
])
|
|
1138
1160
|
])
|
|
1139
1161
|
], 2));
|
|
1140
1162
|
}
|
|
1141
|
-
}),
|
|
1163
|
+
}), As = {
|
|
1142
1164
|
class: "w-full mx-auto font-sans",
|
|
1143
1165
|
ref: "containerRef"
|
|
1144
|
-
},
|
|
1166
|
+
}, zs = { key: 1 }, ce = /* @__PURE__ */ V({
|
|
1145
1167
|
__name: "GalleryWidget",
|
|
1146
1168
|
props: {
|
|
1147
1169
|
title: {},
|
|
@@ -1155,135 +1177,135 @@ const qt = { class: "space-y-0.5" }, Gt = ["onClick"], Kt = ["onClick"], Zt = {
|
|
|
1155
1177
|
style: {}
|
|
1156
1178
|
},
|
|
1157
1179
|
emits: ["delete", "add", "openLightbox"],
|
|
1158
|
-
setup(
|
|
1159
|
-
const
|
|
1160
|
-
|
|
1161
|
-
const
|
|
1162
|
-
|
|
1163
|
-
},
|
|
1164
|
-
const
|
|
1165
|
-
(
|
|
1180
|
+
setup(c, { emit: l }) {
|
|
1181
|
+
const s = c, n = M(s.items ?? []), o = l;
|
|
1182
|
+
n.value.length === 0 && g();
|
|
1183
|
+
const f = (x) => {
|
|
1184
|
+
s.onAddImage ? s.onAddImage(x) : v(x), o("add", x);
|
|
1185
|
+
}, r = (x) => {
|
|
1186
|
+
const m = n.value.find(
|
|
1187
|
+
(b) => b.file_path === x
|
|
1166
1188
|
)?.file_id;
|
|
1167
|
-
|
|
1168
|
-
}, v = async (
|
|
1169
|
-
if (!(!
|
|
1189
|
+
m && (s.onDelete ? s.onDelete(m) : k(m));
|
|
1190
|
+
}, v = async (x) => {
|
|
1191
|
+
if (!(!x.target || !x.target.files || x.target.files.length === 0))
|
|
1170
1192
|
try {
|
|
1171
1193
|
await Promise.all(
|
|
1172
|
-
Array.from(
|
|
1173
|
-
const
|
|
1174
|
-
|
|
1175
|
-
const
|
|
1194
|
+
Array.from(x.target.files).map(async (m) => {
|
|
1195
|
+
const b = new FormData();
|
|
1196
|
+
b.append("file", m);
|
|
1197
|
+
const F = `/api/widget/file/${s.id}`, w = await fetch(F, {
|
|
1176
1198
|
method: "POST",
|
|
1177
|
-
body:
|
|
1199
|
+
body: b
|
|
1178
1200
|
});
|
|
1179
|
-
if (!
|
|
1180
|
-
throw new Error(`HTTP error! status: ${
|
|
1181
|
-
return
|
|
1201
|
+
if (!w.ok)
|
|
1202
|
+
throw new Error(`HTTP error! status: ${w.status}`);
|
|
1203
|
+
return m;
|
|
1182
1204
|
})
|
|
1183
|
-
), await
|
|
1184
|
-
} catch (
|
|
1185
|
-
console.error("Помилка при завантаженні файлів:",
|
|
1205
|
+
), await g();
|
|
1206
|
+
} catch (m) {
|
|
1207
|
+
console.error("Помилка при завантаженні файлів:", m);
|
|
1186
1208
|
}
|
|
1187
1209
|
};
|
|
1188
|
-
async function
|
|
1189
|
-
if (!
|
|
1210
|
+
async function g() {
|
|
1211
|
+
if (!s.id)
|
|
1190
1212
|
return;
|
|
1191
|
-
const
|
|
1192
|
-
(
|
|
1213
|
+
const x = await fetch(`/api/widget/file/${s.id}`).then(
|
|
1214
|
+
(m) => m.json()
|
|
1193
1215
|
);
|
|
1194
|
-
|
|
1216
|
+
n.value = x.rows;
|
|
1195
1217
|
}
|
|
1196
|
-
const
|
|
1218
|
+
const k = async (x) => {
|
|
1197
1219
|
try {
|
|
1198
|
-
await fetch(`/api/widget/file/${
|
|
1220
|
+
await fetch(`/api/widget/file/${s.id}/${x}`, {
|
|
1199
1221
|
method: "DELETE"
|
|
1200
|
-
}), await
|
|
1201
|
-
} catch (
|
|
1202
|
-
console.error(
|
|
1222
|
+
}), await g();
|
|
1223
|
+
} catch (m) {
|
|
1224
|
+
console.error(m);
|
|
1203
1225
|
}
|
|
1204
1226
|
};
|
|
1205
|
-
return (
|
|
1206
|
-
|
|
1207
|
-
title:
|
|
1208
|
-
onOnAddImage:
|
|
1227
|
+
return (x, m) => (t(), a("div", As, [
|
|
1228
|
+
z(Is, {
|
|
1229
|
+
title: x.title,
|
|
1230
|
+
onOnAddImage: m[0] || (m[0] = (b) => f(b))
|
|
1209
1231
|
}, null, 8, ["title"]),
|
|
1210
|
-
|
|
1232
|
+
n.value.length > 0 ? (t(), H(Ms, {
|
|
1211
1233
|
key: 0,
|
|
1212
|
-
items:
|
|
1213
|
-
onDelete:
|
|
1214
|
-
}, null, 8, ["items"])) : (
|
|
1215
|
-
|
|
1216
|
-
|
|
1234
|
+
items: n.value,
|
|
1235
|
+
onDelete: m[1] || (m[1] = (b) => r(b))
|
|
1236
|
+
}, null, 8, ["items"])) : (t(), a("div", zs, m[2] || (m[2] = [
|
|
1237
|
+
e("div", { class: "flex items-center justify-center h-full" }, [
|
|
1238
|
+
e("p", { class: "text-gray-500 leading-[3]" }, "Зображень не знайдено")
|
|
1217
1239
|
], -1)
|
|
1218
1240
|
])))
|
|
1219
1241
|
], 512));
|
|
1220
1242
|
}
|
|
1221
|
-
}),
|
|
1243
|
+
}), Vs = { class: "text-value" }, Es = { class: "text-sm text-gray-900" }, Hs = /* @__PURE__ */ V({
|
|
1222
1244
|
__name: "TextValue",
|
|
1223
1245
|
props: {
|
|
1224
1246
|
item: {}
|
|
1225
1247
|
},
|
|
1226
|
-
setup(
|
|
1227
|
-
const
|
|
1228
|
-
const
|
|
1229
|
-
return typeof
|
|
1248
|
+
setup(c) {
|
|
1249
|
+
const l = c, s = N(() => {
|
|
1250
|
+
const n = l.item.value;
|
|
1251
|
+
return typeof n == "boolean" ? n ? "Так" : "Ні" : n == null ? "—" : String(n);
|
|
1230
1252
|
});
|
|
1231
|
-
return (
|
|
1232
|
-
|
|
1253
|
+
return (n, o) => (t(), a("div", Vs, [
|
|
1254
|
+
e("span", Es, _(s.value), 1)
|
|
1233
1255
|
]));
|
|
1234
1256
|
}
|
|
1235
|
-
}),
|
|
1236
|
-
const
|
|
1237
|
-
for (const [
|
|
1238
|
-
|
|
1239
|
-
return
|
|
1240
|
-
},
|
|
1257
|
+
}), G = (c, l) => {
|
|
1258
|
+
const s = c.__vccOpts || c;
|
|
1259
|
+
for (const [n, o] of l)
|
|
1260
|
+
s[n] = o;
|
|
1261
|
+
return s;
|
|
1262
|
+
}, Ss = /* @__PURE__ */ G(Hs, [["__scopeId", "data-v-c14550b7"]]), Fs = { class: "link-value" }, Os = ["href"], Ns = /* @__PURE__ */ V({
|
|
1241
1263
|
__name: "LinkValue",
|
|
1242
1264
|
props: {
|
|
1243
1265
|
item: {}
|
|
1244
1266
|
},
|
|
1245
|
-
setup(
|
|
1246
|
-
const
|
|
1247
|
-
const
|
|
1267
|
+
setup(c) {
|
|
1268
|
+
const l = c, s = N(() => {
|
|
1269
|
+
const n = String(l.item.value);
|
|
1248
1270
|
try {
|
|
1249
|
-
const
|
|
1250
|
-
return
|
|
1271
|
+
const o = new URL(n);
|
|
1272
|
+
return o.hostname + o.pathname;
|
|
1251
1273
|
} catch {
|
|
1252
|
-
return
|
|
1274
|
+
return n;
|
|
1253
1275
|
}
|
|
1254
1276
|
});
|
|
1255
|
-
return (
|
|
1256
|
-
|
|
1257
|
-
href: String(
|
|
1277
|
+
return (n, o) => (t(), a("div", Fs, [
|
|
1278
|
+
e("a", {
|
|
1279
|
+
href: String(n.item.value),
|
|
1258
1280
|
target: "_blank",
|
|
1259
1281
|
rel: "noopener noreferrer",
|
|
1260
1282
|
class: "text-blue-600 hover:text-blue-800 underline text-sm"
|
|
1261
1283
|
}, [
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
], 8,
|
|
1284
|
+
O(_(s.value) + " ", 1),
|
|
1285
|
+
o[0] || (o[0] = e("i", { class: "fas fa-external-link-alt ml-1 text-xs" }, null, -1))
|
|
1286
|
+
], 8, Os)
|
|
1265
1287
|
]));
|
|
1266
1288
|
}
|
|
1267
|
-
}),
|
|
1289
|
+
}), Ps = /* @__PURE__ */ G(Ns, [["__scopeId", "data-v-e6eb07a6"]]), Bs = { class: "date-value" }, Ws = { class: "text-sm text-gray-900" }, Rs = /* @__PURE__ */ V({
|
|
1268
1290
|
__name: "DateValue",
|
|
1269
1291
|
props: {
|
|
1270
1292
|
item: {}
|
|
1271
1293
|
},
|
|
1272
|
-
setup(
|
|
1273
|
-
const
|
|
1274
|
-
const
|
|
1275
|
-
if (
|
|
1276
|
-
return
|
|
1294
|
+
setup(c) {
|
|
1295
|
+
const l = c, s = N(() => {
|
|
1296
|
+
const n = l.item.value;
|
|
1297
|
+
if (n instanceof Date)
|
|
1298
|
+
return n.toLocaleDateString("uk-UA", {
|
|
1277
1299
|
year: "numeric",
|
|
1278
1300
|
month: "long",
|
|
1279
1301
|
day: "numeric",
|
|
1280
1302
|
hour: "2-digit",
|
|
1281
1303
|
minute: "2-digit"
|
|
1282
1304
|
});
|
|
1283
|
-
if (typeof
|
|
1284
|
-
const
|
|
1285
|
-
if (!isNaN(
|
|
1286
|
-
return
|
|
1305
|
+
if (typeof n == "string") {
|
|
1306
|
+
const o = new Date(n);
|
|
1307
|
+
if (!isNaN(o.getTime()))
|
|
1308
|
+
return o.toLocaleDateString("uk-UA", {
|
|
1287
1309
|
year: "numeric",
|
|
1288
1310
|
month: "long",
|
|
1289
1311
|
day: "numeric",
|
|
@@ -1291,23 +1313,23 @@ const qt = { class: "space-y-0.5" }, Gt = ["onClick"], Kt = ["onClick"], Zt = {
|
|
|
1291
1313
|
minute: "2-digit"
|
|
1292
1314
|
});
|
|
1293
1315
|
}
|
|
1294
|
-
return String(
|
|
1316
|
+
return String(n);
|
|
1295
1317
|
});
|
|
1296
|
-
return (
|
|
1297
|
-
|
|
1318
|
+
return (n, o) => (t(), a("div", Bs, [
|
|
1319
|
+
e("span", Ws, _(s.value), 1)
|
|
1298
1320
|
]));
|
|
1299
1321
|
}
|
|
1300
|
-
}),
|
|
1322
|
+
}), Us = /* @__PURE__ */ G(Rs, [["__scopeId", "data-v-b9600618"]]), Gs = { class: "status-value" }, qs = {
|
|
1301
1323
|
key: 0,
|
|
1302
1324
|
class: "mr-1"
|
|
1303
|
-
},
|
|
1325
|
+
}, Ks = /* @__PURE__ */ V({
|
|
1304
1326
|
__name: "StatusValue",
|
|
1305
1327
|
props: {
|
|
1306
1328
|
item: {}
|
|
1307
1329
|
},
|
|
1308
|
-
setup(
|
|
1309
|
-
const
|
|
1310
|
-
switch (String(
|
|
1330
|
+
setup(c) {
|
|
1331
|
+
const l = c, s = N(() => {
|
|
1332
|
+
switch (String(l.item.value).toLowerCase()) {
|
|
1311
1333
|
case "active":
|
|
1312
1334
|
case "активний":
|
|
1313
1335
|
case "успішно":
|
|
@@ -1329,8 +1351,8 @@ const qt = { class: "space-y-0.5" }, Gt = ["onClick"], Kt = ["onClick"], Zt = {
|
|
|
1329
1351
|
default:
|
|
1330
1352
|
return "bg-blue-100 text-blue-800";
|
|
1331
1353
|
}
|
|
1332
|
-
}),
|
|
1333
|
-
switch (String(
|
|
1354
|
+
}), n = N(() => {
|
|
1355
|
+
switch (String(l.item.value).toLowerCase()) {
|
|
1334
1356
|
case "active":
|
|
1335
1357
|
case "активний":
|
|
1336
1358
|
case "успішно":
|
|
@@ -1353,50 +1375,50 @@ const qt = { class: "space-y-0.5" }, Gt = ["onClick"], Kt = ["onClick"], Zt = {
|
|
|
1353
1375
|
return "fas fa-info-circle";
|
|
1354
1376
|
}
|
|
1355
1377
|
});
|
|
1356
|
-
return (
|
|
1357
|
-
|
|
1358
|
-
class:
|
|
1378
|
+
return (o, f) => (t(), a("div", Gs, [
|
|
1379
|
+
e("span", {
|
|
1380
|
+
class: I(["inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium", s.value])
|
|
1359
1381
|
}, [
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
class:
|
|
1382
|
+
n.value ? (t(), a("span", qs, [
|
|
1383
|
+
e("i", {
|
|
1384
|
+
class: I(n.value)
|
|
1363
1385
|
}, null, 2)
|
|
1364
|
-
])) :
|
|
1365
|
-
|
|
1386
|
+
])) : $("", !0),
|
|
1387
|
+
O(" " + _(String(o.item.value)), 1)
|
|
1366
1388
|
], 2)
|
|
1367
1389
|
]));
|
|
1368
1390
|
}
|
|
1369
|
-
}),
|
|
1391
|
+
}), Zs = /* @__PURE__ */ G(Ks, [["__scopeId", "data-v-c72e0b01"]]), Js = { class: "custom-value" }, Xs = { class: "text-sm text-gray-900" }, Qs = /* @__PURE__ */ V({
|
|
1370
1392
|
__name: "CustomValue",
|
|
1371
1393
|
props: {
|
|
1372
1394
|
item: {}
|
|
1373
1395
|
},
|
|
1374
|
-
setup(
|
|
1375
|
-
return (
|
|
1376
|
-
|
|
1377
|
-
item:
|
|
1378
|
-
value:
|
|
1396
|
+
setup(c) {
|
|
1397
|
+
return (l, s) => (t(), a("div", Js, [
|
|
1398
|
+
W(l.$slots, "default", {
|
|
1399
|
+
item: l.item,
|
|
1400
|
+
value: l.item.value
|
|
1379
1401
|
}, () => [
|
|
1380
|
-
|
|
1402
|
+
e("span", Xs, _(String(l.item.value)), 1)
|
|
1381
1403
|
], !0)
|
|
1382
1404
|
]));
|
|
1383
1405
|
}
|
|
1384
|
-
}),
|
|
1406
|
+
}), Ys = /* @__PURE__ */ G(Qs, [["__scopeId", "data-v-11a73810"]]), en = ["id"], tn = {
|
|
1385
1407
|
key: 0,
|
|
1386
1408
|
class: "text-xl font-semibold text-gray-900 mb-4"
|
|
1387
|
-
},
|
|
1409
|
+
}, sn = {
|
|
1388
1410
|
key: 1,
|
|
1389
1411
|
class: "overflow-x-auto"
|
|
1390
|
-
},
|
|
1412
|
+
}, nn = { class: "min-w-full divide-y divide-gray-200" }, on = { class: "bg-white divide-y divide-gray-200" }, an = { class: "px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900" }, ln = { class: "flex items-center gap-2" }, rn = ["title"], dn = { class: "px-6 py-4 whitespace-nowrap text-sm text-gray-500" }, cn = {
|
|
1391
1413
|
key: 2,
|
|
1392
1414
|
class: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"
|
|
1393
|
-
},
|
|
1415
|
+
}, un = { class: "flex items-start gap-3" }, pn = {
|
|
1394
1416
|
key: 0,
|
|
1395
1417
|
class: "flex-shrink-0"
|
|
1396
|
-
},
|
|
1418
|
+
}, mn = { class: "flex-1 min-w-0" }, gn = { class: "flex items-center gap-2 mb-2" }, hn = { class: "text-sm font-medium text-gray-900" }, fn = ["title"], yn = {
|
|
1397
1419
|
key: 3,
|
|
1398
1420
|
class: "overflow-x-auto"
|
|
1399
|
-
},
|
|
1421
|
+
}, vn = { class: "min-w-full divide-y divide-gray-200" }, bn = { class: "bg-white divide-y divide-gray-200" }, xn = { class: "px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900" }, kn = { class: "flex items-center gap-2" }, _n = ["title"], wn = { class: "px-6 py-4 whitespace-nowrap text-sm text-gray-500" }, $n = /* @__PURE__ */ V({
|
|
1400
1422
|
__name: "DescriptionListWidget",
|
|
1401
1423
|
props: {
|
|
1402
1424
|
title: {},
|
|
@@ -1406,113 +1428,113 @@ const qt = { class: "space-y-0.5" }, Gt = ["onClick"], Kt = ["onClick"], Zt = {
|
|
|
1406
1428
|
className: {},
|
|
1407
1429
|
style: {}
|
|
1408
1430
|
},
|
|
1409
|
-
setup(
|
|
1410
|
-
const
|
|
1411
|
-
switch (
|
|
1431
|
+
setup(c) {
|
|
1432
|
+
const l = (s) => {
|
|
1433
|
+
switch (s.type) {
|
|
1412
1434
|
case "link":
|
|
1413
|
-
return
|
|
1435
|
+
return Ps;
|
|
1414
1436
|
case "date":
|
|
1415
|
-
return Os;
|
|
1416
|
-
case "status":
|
|
1417
1437
|
return Us;
|
|
1438
|
+
case "status":
|
|
1439
|
+
return Zs;
|
|
1418
1440
|
case "custom":
|
|
1419
|
-
return
|
|
1441
|
+
return Ys;
|
|
1420
1442
|
default:
|
|
1421
|
-
return
|
|
1443
|
+
return Ss;
|
|
1422
1444
|
}
|
|
1423
1445
|
};
|
|
1424
|
-
return (
|
|
1425
|
-
class:
|
|
1426
|
-
id:
|
|
1427
|
-
style:
|
|
1446
|
+
return (s, n) => (t(), a("div", {
|
|
1447
|
+
class: I(["description-list-widget", s.className]),
|
|
1448
|
+
id: s.id,
|
|
1449
|
+
style: J(s.style)
|
|
1428
1450
|
}, [
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
(
|
|
1434
|
-
key:
|
|
1451
|
+
s.title ? (t(), a("h3", tn, _(s.title), 1)) : $("", !0),
|
|
1452
|
+
s.view === "table" ? (t(), a("div", sn, [
|
|
1453
|
+
e("table", nn, [
|
|
1454
|
+
e("tbody", on, [
|
|
1455
|
+
(t(!0), a(T, null, j(s.items, (o) => (t(), a("tr", {
|
|
1456
|
+
key: o.id || o.label
|
|
1435
1457
|
}, [
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1458
|
+
e("td", an, [
|
|
1459
|
+
e("div", ln, [
|
|
1460
|
+
o.icon ? (t(), a("i", {
|
|
1439
1461
|
key: 0,
|
|
1440
|
-
class:
|
|
1441
|
-
}, null, 2)) :
|
|
1442
|
-
|
|
1443
|
-
|
|
1462
|
+
class: I([o.icon, "text-gray-500"])
|
|
1463
|
+
}, null, 2)) : $("", !0),
|
|
1464
|
+
O(" " + _(o.label) + " ", 1),
|
|
1465
|
+
o.tooltip ? (t(), a("span", {
|
|
1444
1466
|
key: 1,
|
|
1445
1467
|
class: "text-gray-400 cursor-help",
|
|
1446
|
-
title:
|
|
1447
|
-
},
|
|
1448
|
-
|
|
1449
|
-
]), 8,
|
|
1468
|
+
title: o.tooltip
|
|
1469
|
+
}, n[0] || (n[0] = [
|
|
1470
|
+
e("i", { class: "fas fa-info-circle text-xs" }, null, -1)
|
|
1471
|
+
]), 8, rn)) : $("", !0)
|
|
1450
1472
|
])
|
|
1451
1473
|
]),
|
|
1452
|
-
|
|
1453
|
-
(
|
|
1474
|
+
e("td", dn, [
|
|
1475
|
+
(t(), H(B(l(o)), { item: o }, null, 8, ["item"]))
|
|
1454
1476
|
])
|
|
1455
1477
|
]))), 128))
|
|
1456
1478
|
])
|
|
1457
1479
|
])
|
|
1458
|
-
])) :
|
|
1459
|
-
(
|
|
1460
|
-
key:
|
|
1480
|
+
])) : s.view === "grid" ? (t(), a("div", cn, [
|
|
1481
|
+
(t(!0), a(T, null, j(s.items, (o) => (t(), a("div", {
|
|
1482
|
+
key: o.id || o.label,
|
|
1461
1483
|
class: "description-item-card bg-white border border-gray-200 rounded-lg p-4"
|
|
1462
1484
|
}, [
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
class:
|
|
1485
|
+
e("div", un, [
|
|
1486
|
+
o.icon ? (t(), a("div", pn, [
|
|
1487
|
+
e("i", {
|
|
1488
|
+
class: I([o.icon, "text-gray-500 text-lg"])
|
|
1467
1489
|
}, null, 2)
|
|
1468
|
-
])) :
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1490
|
+
])) : $("", !0),
|
|
1491
|
+
e("div", mn, [
|
|
1492
|
+
e("div", gn, [
|
|
1493
|
+
e("h4", hn, _(o.label), 1),
|
|
1494
|
+
o.tooltip ? (t(), a("span", {
|
|
1473
1495
|
key: 0,
|
|
1474
1496
|
class: "text-gray-400 cursor-help",
|
|
1475
|
-
title:
|
|
1476
|
-
},
|
|
1477
|
-
|
|
1478
|
-
]), 8,
|
|
1497
|
+
title: o.tooltip
|
|
1498
|
+
}, n[1] || (n[1] = [
|
|
1499
|
+
e("i", { class: "fas fa-info-circle text-xs" }, null, -1)
|
|
1500
|
+
]), 8, fn)) : $("", !0)
|
|
1479
1501
|
]),
|
|
1480
|
-
(
|
|
1502
|
+
(t(), H(B(l(o)), { item: o }, null, 8, ["item"]))
|
|
1481
1503
|
])
|
|
1482
1504
|
])
|
|
1483
1505
|
]))), 128))
|
|
1484
|
-
])) : (
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
(
|
|
1488
|
-
key:
|
|
1506
|
+
])) : (t(), a("div", yn, [
|
|
1507
|
+
e("table", vn, [
|
|
1508
|
+
e("tbody", bn, [
|
|
1509
|
+
(t(!0), a(T, null, j(s.items, (o) => (t(), a("tr", {
|
|
1510
|
+
key: o.id || o.label
|
|
1489
1511
|
}, [
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1512
|
+
e("td", xn, [
|
|
1513
|
+
e("div", kn, [
|
|
1514
|
+
o.icon ? (t(), a("i", {
|
|
1493
1515
|
key: 0,
|
|
1494
|
-
class:
|
|
1495
|
-
}, null, 2)) :
|
|
1496
|
-
|
|
1497
|
-
|
|
1516
|
+
class: I([o.icon, "text-gray-500"])
|
|
1517
|
+
}, null, 2)) : $("", !0),
|
|
1518
|
+
O(" " + _(o.label) + " ", 1),
|
|
1519
|
+
o.tooltip ? (t(), a("span", {
|
|
1498
1520
|
key: 1,
|
|
1499
1521
|
class: "text-gray-400 cursor-help",
|
|
1500
|
-
title:
|
|
1501
|
-
},
|
|
1502
|
-
|
|
1503
|
-
]), 8,
|
|
1522
|
+
title: o.tooltip
|
|
1523
|
+
}, n[2] || (n[2] = [
|
|
1524
|
+
e("i", { class: "fas fa-info-circle text-xs" }, null, -1)
|
|
1525
|
+
]), 8, _n)) : $("", !0)
|
|
1504
1526
|
])
|
|
1505
1527
|
]),
|
|
1506
|
-
|
|
1507
|
-
(
|
|
1528
|
+
e("td", wn, [
|
|
1529
|
+
(t(), H(B(l(o)), { item: o }, null, 8, ["item"]))
|
|
1508
1530
|
])
|
|
1509
1531
|
]))), 128))
|
|
1510
1532
|
])
|
|
1511
1533
|
])
|
|
1512
1534
|
]))
|
|
1513
|
-
], 14,
|
|
1535
|
+
], 14, en));
|
|
1514
1536
|
}
|
|
1515
|
-
}),
|
|
1537
|
+
}), ze = /* @__PURE__ */ G($n, [["__scopeId", "data-v-36d43e50"]]), Cn = {
|
|
1516
1538
|
draw: {
|
|
1517
1539
|
toolbar: {
|
|
1518
1540
|
actions: {
|
|
@@ -1620,24 +1642,24 @@ const qt = { class: "space-y-0.5" }, Gt = ["onClick"], Kt = ["onClick"], Zt = {
|
|
|
1620
1642
|
}
|
|
1621
1643
|
}
|
|
1622
1644
|
};
|
|
1623
|
-
function
|
|
1624
|
-
return
|
|
1645
|
+
function Ln(c) {
|
|
1646
|
+
return c ? c.type === "FeatureCollection" || c.type === "Feature" ? c : c.geom ? {
|
|
1625
1647
|
type: "Feature",
|
|
1626
1648
|
geometry: {
|
|
1627
|
-
type:
|
|
1628
|
-
coordinates:
|
|
1649
|
+
type: c.geom.type,
|
|
1650
|
+
coordinates: c.geom.coordinates
|
|
1629
1651
|
},
|
|
1630
1652
|
properties: {}
|
|
1631
|
-
} :
|
|
1653
|
+
} : c.type && c.coordinates ? {
|
|
1632
1654
|
type: "Feature",
|
|
1633
|
-
geometry:
|
|
1655
|
+
geometry: c,
|
|
1634
1656
|
properties: {}
|
|
1635
1657
|
} : null : null;
|
|
1636
1658
|
}
|
|
1637
|
-
const
|
|
1659
|
+
const Mn = { class: "relative min-h-[300px] h-full pb-[3.25rem]" }, Tn = {
|
|
1638
1660
|
key: 1,
|
|
1639
1661
|
class: "bg-white absolute top-[10px] right-[10px] z-[500] border rounded-lg cursor-pointer"
|
|
1640
|
-
},
|
|
1662
|
+
}, Dn = { class: "flex items-center justify-between p-2 border-b" }, jn = { class: "p-2 border-b" }, In = { class: "flex items-center" }, An = ["value"], zn = { class: "ml-2" }, Vn = { class: "p-2" }, En = { class: "flex items-center" }, Hn = { class: "flex items-center" }, Sn = ["onUpdate:modelValue", "onChange"], Fn = { class: "ml-2" }, ue = /* @__PURE__ */ V({
|
|
1641
1663
|
__name: "MapWidget",
|
|
1642
1664
|
props: {
|
|
1643
1665
|
pattern: {},
|
|
@@ -1645,89 +1667,94 @@ const ko = { class: "relative min-h-[300px] h-full pb-[3.25rem]" }, _o = {
|
|
|
1645
1667
|
id: {},
|
|
1646
1668
|
tms: {}
|
|
1647
1669
|
},
|
|
1648
|
-
setup(
|
|
1649
|
-
const
|
|
1650
|
-
let
|
|
1651
|
-
const
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
url: "https://data.gki.com.ua/api-user/rtile/orto10/ua/{z}/{x}/{y}.png"
|
|
1657
|
-
},
|
|
1658
|
-
osmb: {
|
|
1659
|
-
url: "https://tile.openstreetmap.org.ua/styles/osm-bright/{z}/{x}/{y}.png"
|
|
1660
|
-
}
|
|
1661
|
-
}, l = $("topo100");
|
|
1662
|
-
let v;
|
|
1663
|
-
const u = $(!0), p = $(!1), d = $(y());
|
|
1664
|
-
function y() {
|
|
1665
|
-
return i.tms ? (Array.isArray(i.tms) ? i.tms : i.tms?.split(",")).map((c, f) => ({ url: i.pattern ? i.pattern.replace("{{id}}", c) : c, name: "Шар " + f, visible: !0, i: f })) : [];
|
|
1670
|
+
setup(c) {
|
|
1671
|
+
const l = Le(), s = c, n = M(null);
|
|
1672
|
+
let o, f;
|
|
1673
|
+
const r = h(), v = M(Object.keys(r)[0]);
|
|
1674
|
+
let g;
|
|
1675
|
+
const k = M(!0), x = M(!1), m = M(b());
|
|
1676
|
+
function b() {
|
|
1677
|
+
return s.tms ? (Array.isArray(s.tms) ? s.tms : s.tms?.split(",")).map((d, A) => ({ url: s.pattern ? s.pattern.replace("{{id}}", d) : d, name: "Шар " + A, visible: !0, i: A })) : [];
|
|
1666
1678
|
}
|
|
1667
|
-
function
|
|
1668
|
-
return new Promise((
|
|
1669
|
-
if (window.L && window.L.Draw) return
|
|
1670
|
-
const
|
|
1671
|
-
if (Array.from(document.styleSheets).some((
|
|
1672
|
-
const
|
|
1673
|
-
|
|
1674
|
-
},
|
|
1675
|
-
const
|
|
1676
|
-
if (
|
|
1677
|
-
|
|
1679
|
+
function F() {
|
|
1680
|
+
return new Promise((y, d) => {
|
|
1681
|
+
if (window.L && window.L.Draw) return y(0);
|
|
1682
|
+
const A = (E) => {
|
|
1683
|
+
if (Array.from(document.styleSheets).some((X) => X?.href?.includes(E))) return;
|
|
1684
|
+
const q = document.createElement("link");
|
|
1685
|
+
q.rel = "stylesheet", q.href = E, document.head.appendChild(q);
|
|
1686
|
+
}, P = (E) => new Promise((oe, q) => {
|
|
1687
|
+
const X = Array.from(document.scripts).find((Y) => Y.src === E);
|
|
1688
|
+
if (X) {
|
|
1689
|
+
X.addEventListener("load", () => oe()), X.addEventListener("error", (Y) => q(Y));
|
|
1678
1690
|
return;
|
|
1679
1691
|
}
|
|
1680
|
-
const
|
|
1681
|
-
|
|
1692
|
+
const Q = document.createElement("script");
|
|
1693
|
+
Q.src = E, Q.async = !0, Q.onload = () => oe(), Q.onerror = (Y) => q(Y), document.body.appendChild(Q);
|
|
1682
1694
|
});
|
|
1683
|
-
|
|
1695
|
+
A("https://unpkg.com/leaflet@1.9.4/dist/leaflet.css"), A("https://unpkg.com/leaflet-draw@1.0.4/dist/leaflet.draw.css"), P("https://unpkg.com/leaflet@1.9.4/dist/leaflet.js").then(() => P("https://unpkg.com/leaflet-draw@1.0.4/dist/leaflet.draw.js")).then(() => y(0)).catch(d);
|
|
1684
1696
|
});
|
|
1685
1697
|
}
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1698
|
+
let w = !1;
|
|
1699
|
+
ee(async () => {
|
|
1700
|
+
await F(), L.drawLocal = Cn;
|
|
1701
|
+
const y = l?.appContext.config.globalProperties.$settings?.center || [50, 30];
|
|
1702
|
+
o = L.map(n.value, { zoomControl: !1 }).setView(y, 10), o.on("mousemove", (A) => {
|
|
1703
|
+
w || (o.invalidateSize(), w = !0);
|
|
1704
|
+
}), L.control.zoom({ position: "bottomright" }).addTo(o), g = L.tileLayer(r[v.value].url, { maxZoom: 19 }).addTo(o), v.value = "topo100", f = new L.FeatureGroup().addTo(o), m.value.length && u(0);
|
|
1705
|
+
const d = Ln(s.geom);
|
|
1706
|
+
if (d) {
|
|
1707
|
+
const A = [];
|
|
1708
|
+
L.geoJSON(d).eachLayer((P) => A.push(P)), A.length && f.addLayer(A[0]), f.toGeoJSON();
|
|
1692
1709
|
}
|
|
1693
1710
|
});
|
|
1694
|
-
function
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
g && g.isValid() && e.fitBounds(g, { padding: [w, w] });
|
|
1711
|
+
function C(y) {
|
|
1712
|
+
g && g.removeFrom(o);
|
|
1713
|
+
const d = r[y];
|
|
1714
|
+
g = L.tileLayer(d.url, d.options || {}).addTo(o), v.value = y;
|
|
1699
1715
|
}
|
|
1700
|
-
function
|
|
1701
|
-
v
|
|
1702
|
-
const c = b[w];
|
|
1703
|
-
v = L.tileLayer(c.url, c.options || {}).addTo(e), l.value = w;
|
|
1716
|
+
function i() {
|
|
1717
|
+
C(v.value);
|
|
1704
1718
|
}
|
|
1705
|
-
function
|
|
1706
|
-
|
|
1719
|
+
function p() {
|
|
1720
|
+
f && (k.value ? f.addTo(o) : f.removeFrom(o));
|
|
1707
1721
|
}
|
|
1708
|
-
function
|
|
1709
|
-
|
|
1722
|
+
function u(y) {
|
|
1723
|
+
const d = m.value[y];
|
|
1724
|
+
d.layer || (d.layer = L.tileLayer(d.url, { maxZoom: 19 })), d.visible ? d.layer.addTo(o) : d.layer.removeFrom(o);
|
|
1710
1725
|
}
|
|
1711
|
-
function h(
|
|
1712
|
-
|
|
1713
|
-
|
|
1726
|
+
function h() {
|
|
1727
|
+
return l?.appContext.config.globalProperties.$settings?.basemaps ? l?.appContext.config.globalProperties.$settings?.basemaps.map((y, d) => Object.assign(y, { key: `b${d}`, preview: y.preview || y.url.replace("{z}/{x}/{y}.png", "13/4790/2762.png") })).reduce((y, d) => ({ ...y, [d.key]: d }), {}) : {
|
|
1728
|
+
topo100: {
|
|
1729
|
+
url: "https://data.gki.com.ua/api-user/rtile/voyager/ua/{z}/{x}/{y}.png",
|
|
1730
|
+
preview: "https://data.gki.com.ua/api-user/rtile/voyager/ua/13/4790/2762.png"
|
|
1731
|
+
},
|
|
1732
|
+
orto10: {
|
|
1733
|
+
url: "https://data.gki.com.ua/api-user/rtile/orto10/ua/{z}/{x}/{y}.png",
|
|
1734
|
+
preview: "https://data.gki.com.ua/api-user/rtile/orto10/ua/13/4790/2762.png"
|
|
1735
|
+
},
|
|
1736
|
+
osmb: {
|
|
1737
|
+
url: "https://tile.openstreetmap.org.ua/styles/osm-bright/{z}/{x}/{y}.png",
|
|
1738
|
+
preview: "https://tile.openstreetmap.org.ua/styles/osm-bright/13/4790/2762.png"
|
|
1739
|
+
}
|
|
1740
|
+
};
|
|
1714
1741
|
}
|
|
1715
|
-
return (
|
|
1716
|
-
|
|
1742
|
+
return (y, d) => (t(), a("div", Mn, [
|
|
1743
|
+
e("div", {
|
|
1717
1744
|
ref_key: "mapContainer",
|
|
1718
|
-
ref:
|
|
1745
|
+
ref: n,
|
|
1719
1746
|
class: "w-full h-full min-h-[300px]"
|
|
1720
1747
|
}, null, 512),
|
|
1721
|
-
|
|
1748
|
+
x.value ? $("", !0) : (t(), a("div", {
|
|
1722
1749
|
key: 0,
|
|
1723
|
-
onClick:
|
|
1750
|
+
onClick: d[0] || (d[0] = (A) => x.value = !0),
|
|
1724
1751
|
class: "z-[500] bg-white absolute top-[10px] right-[10px] p-2 border rounded-lg cursor-pointer"
|
|
1725
1752
|
}, " Шари ")),
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
(
|
|
1730
|
-
onClick:
|
|
1753
|
+
x.value ? (t(), a("div", Tn, [
|
|
1754
|
+
e("div", Dn, [
|
|
1755
|
+
d[5] || (d[5] = e("div", null, "Шари", -1)),
|
|
1756
|
+
(t(), a("svg", {
|
|
1757
|
+
onClick: d[1] || (d[1] = (A) => x.value = !1),
|
|
1731
1758
|
xmlns: "http://www.w3.org/2000/svg",
|
|
1732
1759
|
viewBox: "0 0 24 24",
|
|
1733
1760
|
fill: "none",
|
|
@@ -1736,89 +1763,61 @@ const ko = { class: "relative min-h-[300px] h-full pb-[3.25rem]" }, _o = {
|
|
|
1736
1763
|
"stroke-linecap": "round",
|
|
1737
1764
|
"stroke-linejoin": "round",
|
|
1738
1765
|
class: "icon icon-tabler icons-tabler-outline icon-tabler-x w-4 h-4"
|
|
1739
|
-
},
|
|
1740
|
-
|
|
1766
|
+
}, d[4] || (d[4] = [
|
|
1767
|
+
e("path", {
|
|
1741
1768
|
stroke: "none",
|
|
1742
1769
|
d: "M0 0h24v24H0z",
|
|
1743
1770
|
fill: "none"
|
|
1744
1771
|
}, null, -1),
|
|
1745
|
-
|
|
1746
|
-
|
|
1772
|
+
e("path", { d: "M18 6l-12 12" }, null, -1),
|
|
1773
|
+
e("path", { d: "M6 6l12 12" }, null, -1)
|
|
1747
1774
|
])))
|
|
1748
1775
|
]),
|
|
1749
|
-
|
|
1750
|
-
t("div", null, [
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
type: "radio",
|
|
1754
|
-
name: "base-layer",
|
|
1755
|
-
value: "topo100",
|
|
1756
|
-
"onUpdate:modelValue": c[2] || (c[2] = (f) => l.value = f),
|
|
1757
|
-
onChange: B
|
|
1758
|
-
}, null, 544), [
|
|
1759
|
-
[se, l.value]
|
|
1760
|
-
]),
|
|
1761
|
-
c[8] || (c[8] = t("span", { class: "ml-2" }, "Карта України", -1))
|
|
1762
|
-
])
|
|
1763
|
-
]),
|
|
1764
|
-
t("div", null, [
|
|
1765
|
-
t("label", Mo, [
|
|
1766
|
-
P(t("input", {
|
|
1767
|
-
type: "radio",
|
|
1768
|
-
name: "base-layer",
|
|
1769
|
-
value: "orto10",
|
|
1770
|
-
"onUpdate:modelValue": c[3] || (c[3] = (f) => l.value = f),
|
|
1771
|
-
onChange: B
|
|
1772
|
-
}, null, 544), [
|
|
1773
|
-
[se, l.value]
|
|
1774
|
-
]),
|
|
1775
|
-
c[9] || (c[9] = t("span", { class: "ml-2" }, "Ortophoto 1:10К", -1))
|
|
1776
|
-
])
|
|
1777
|
-
]),
|
|
1778
|
-
t("div", null, [
|
|
1779
|
-
t("label", Lo, [
|
|
1780
|
-
P(t("input", {
|
|
1776
|
+
e("div", jn, [
|
|
1777
|
+
(t(!0), a(T, null, j(D(r), (A, P) => (t(), a("div", null, [
|
|
1778
|
+
e("label", In, [
|
|
1779
|
+
R(e("input", {
|
|
1781
1780
|
type: "radio",
|
|
1782
1781
|
name: "base-layer",
|
|
1783
|
-
value:
|
|
1784
|
-
"onUpdate:modelValue":
|
|
1785
|
-
onChange:
|
|
1786
|
-
}, null,
|
|
1787
|
-
[
|
|
1782
|
+
value: P,
|
|
1783
|
+
"onUpdate:modelValue": d[2] || (d[2] = (E) => v.value = E),
|
|
1784
|
+
onChange: i
|
|
1785
|
+
}, null, 40, An), [
|
|
1786
|
+
[He, v.value]
|
|
1788
1787
|
]),
|
|
1789
|
-
|
|
1788
|
+
e("span", zn, _(A.name || P), 1)
|
|
1790
1789
|
])
|
|
1791
|
-
])
|
|
1790
|
+
]))), 256))
|
|
1792
1791
|
]),
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1792
|
+
e("div", Vn, [
|
|
1793
|
+
e("label", En, [
|
|
1794
|
+
R(e("input", {
|
|
1796
1795
|
type: "checkbox",
|
|
1797
|
-
"onUpdate:modelValue":
|
|
1798
|
-
onChange:
|
|
1796
|
+
"onUpdate:modelValue": d[3] || (d[3] = (A) => k.value = A),
|
|
1797
|
+
onChange: p
|
|
1799
1798
|
}, null, 544), [
|
|
1800
|
-
[
|
|
1799
|
+
[be, k.value]
|
|
1801
1800
|
]),
|
|
1802
|
-
|
|
1801
|
+
d[6] || (d[6] = e("span", { class: "ml-2" }, " Геометрія/Межі ", -1))
|
|
1803
1802
|
]),
|
|
1804
|
-
|
|
1805
|
-
|
|
1803
|
+
s.tms ? (t(!0), a(T, { key: 0 }, j(m.value, (A) => (t(), a("label", Hn, [
|
|
1804
|
+
R(e("input", {
|
|
1806
1805
|
type: "checkbox",
|
|
1807
|
-
"onUpdate:modelValue": (
|
|
1808
|
-
onChange: (
|
|
1809
|
-
}, null, 40,
|
|
1810
|
-
[
|
|
1806
|
+
"onUpdate:modelValue": (P) => A.visible = P,
|
|
1807
|
+
onChange: (P) => u(A.i)
|
|
1808
|
+
}, null, 40, Sn), [
|
|
1809
|
+
[be, A.visible]
|
|
1811
1810
|
]),
|
|
1812
|
-
|
|
1813
|
-
]))), 256)) :
|
|
1811
|
+
e("span", Fn, _(A.name), 1)
|
|
1812
|
+
]))), 256)) : $("", !0)
|
|
1814
1813
|
])
|
|
1815
|
-
])) :
|
|
1814
|
+
])) : $("", !0)
|
|
1816
1815
|
]));
|
|
1817
1816
|
}
|
|
1818
|
-
}),
|
|
1817
|
+
}), On = { class: "flex justify-between items-center mb-[15px]" }, Nn = { class: "font-semibold text-[16px]" }, Pn = { class: "overflow-x-auto" }, Bn = { class: "min-w-full relative divide-y-2 divide-gray-200 bg-white min-w-full overflow-auto divide-y-2 divide-gray-200 bg-white text-[12px] text-gray-600" }, Wn = { class: "text-left font-medium text-gray-700" }, Rn = { class: "py-2 min-w-[200px]" }, Un = {
|
|
1819
1818
|
key: 0,
|
|
1820
1819
|
class: "py-2 min-w-[200px]"
|
|
1821
|
-
},
|
|
1820
|
+
}, Gn = { class: "divide-y divide-gray-200" }, qn = { class: "bg-white odd:bg-gray-50" }, Kn = { class: "py-2 pr-5" }, Zn = ["href"], Jn = { class: "py-2 pr-5 gap-2 inline-flex" }, Xn = ["onClick"], Qn = ["onClick"], Yn = /* @__PURE__ */ V({
|
|
1822
1821
|
__name: "TableWidget",
|
|
1823
1822
|
props: {
|
|
1824
1823
|
name: {},
|
|
@@ -1835,76 +1834,76 @@ const ko = { class: "relative min-h-[300px] h-full pb-[3.25rem]" }, _o = {
|
|
|
1835
1834
|
props: {},
|
|
1836
1835
|
items: {}
|
|
1837
1836
|
},
|
|
1838
|
-
setup(
|
|
1839
|
-
const
|
|
1840
|
-
async function
|
|
1841
|
-
const
|
|
1842
|
-
|
|
1837
|
+
setup(c) {
|
|
1838
|
+
const l = Le(), s = M([]), n = M([]), o = c, f = M([]), r = M(""), v = M("");
|
|
1839
|
+
async function g() {
|
|
1840
|
+
const i = await fetch("/api/data/" + o.token).then((p) => p.json());
|
|
1841
|
+
s.value = i.rows, n.value = i.columns, f.value = i.actions, r.value = i.form, v.value = i.addToken;
|
|
1843
1842
|
}
|
|
1844
|
-
const { $notify:
|
|
1845
|
-
async function
|
|
1846
|
-
await
|
|
1843
|
+
const { $notify: k = console.log, $confirm: x, $form: m } = l?.appContext?.config?.globalProperties || {};
|
|
1844
|
+
async function b(i) {
|
|
1845
|
+
await m({ token: i.token }), g();
|
|
1847
1846
|
}
|
|
1848
|
-
function
|
|
1849
|
-
|
|
1847
|
+
function F() {
|
|
1848
|
+
m({ token: v.value });
|
|
1850
1849
|
}
|
|
1851
|
-
function
|
|
1852
|
-
|
|
1850
|
+
function w(i) {
|
|
1851
|
+
x({
|
|
1853
1852
|
title: "Підтвердіть дію",
|
|
1854
1853
|
type: "error",
|
|
1855
1854
|
message: "Ви впевненні що бажаєте видалити даний рядок?",
|
|
1856
1855
|
onConfirm: async () => {
|
|
1857
|
-
const
|
|
1858
|
-
if (!
|
|
1859
|
-
const { error:
|
|
1860
|
-
|
|
1856
|
+
const p = await fetch(`/api/table/${i.token}`, { method: "DELETE" });
|
|
1857
|
+
if (!p.ok) {
|
|
1858
|
+
const { error: u, code: h } = await p.json();
|
|
1859
|
+
k({ title: "Помилка", type: "warning", message: u });
|
|
1861
1860
|
return;
|
|
1862
1861
|
}
|
|
1863
|
-
|
|
1862
|
+
k({ title: "Видаленно", message: "Успішно видалено" }), await g();
|
|
1864
1863
|
}
|
|
1865
1864
|
});
|
|
1866
1865
|
}
|
|
1867
|
-
|
|
1868
|
-
await
|
|
1866
|
+
ee(async () => {
|
|
1867
|
+
await g();
|
|
1869
1868
|
});
|
|
1870
|
-
function
|
|
1871
|
-
return
|
|
1869
|
+
function C(i, p) {
|
|
1870
|
+
return p.format?.toLowerCase() === "text" ? i[p.name] : i[p.name + "_data"] ?? i[p.name + "_text"] ?? "-";
|
|
1872
1871
|
}
|
|
1873
|
-
return (
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1872
|
+
return (i, p) => (t(), a("div", null, [
|
|
1873
|
+
e("div", On, [
|
|
1874
|
+
e("div", Nn, _(i.title), 1),
|
|
1875
|
+
f.value.includes("add") && v.value ? (t(), a("button", {
|
|
1877
1876
|
key: 0,
|
|
1878
|
-
onClick:
|
|
1877
|
+
onClick: F,
|
|
1879
1878
|
class: "px-2 py-1 inline-flex border-solid justify-center items-center gap-2 rounded-md font-semibold focus:outline-none text-sm transition-all border border-transparent hover:text-white ring-offset-white bg-blue-100 text-blue-500 hover:bg-blue-500 focus:ring-blue-500"
|
|
1880
|
-
}, "Додати")) :
|
|
1879
|
+
}, "Додати")) : $("", !0)
|
|
1881
1880
|
]),
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
(
|
|
1887
|
-
|
|
1881
|
+
e("div", Pn, [
|
|
1882
|
+
e("table", Bn, [
|
|
1883
|
+
e("thead", Wn, [
|
|
1884
|
+
e("tr", null, [
|
|
1885
|
+
(t(!0), a(T, null, j(n.value, (u) => (t(), a("th", Rn, _(u.ua), 1))), 256)),
|
|
1886
|
+
f.value.includes("edit") ? (t(), a("th", Un, " Дії ")) : $("", !0)
|
|
1888
1887
|
])
|
|
1889
1888
|
]),
|
|
1890
|
-
|
|
1891
|
-
(
|
|
1892
|
-
(
|
|
1893
|
-
|
|
1889
|
+
e("tbody", Gn, [
|
|
1890
|
+
(t(!0), a(T, null, j(s.value, (u) => (t(), a("tr", qn, [
|
|
1891
|
+
(t(!0), a(T, null, j(n.value, (h) => (t(), a("td", Kn, [
|
|
1892
|
+
h.link ? (t(), a("a", {
|
|
1894
1893
|
key: 0,
|
|
1895
|
-
href:
|
|
1894
|
+
href: h.link.replace("{{id}}", u.id),
|
|
1896
1895
|
class: "font-medium cursor-pointer text-start text-wrap text-cyan-800 decoration-2 focus:outline-none focus:underline hover:text-cyan-700 hover:underline"
|
|
1897
|
-
}, _(
|
|
1898
|
-
|
|
1896
|
+
}, _(C(u, h)), 9, Zn)) : (t(), a(T, { key: 1 }, [
|
|
1897
|
+
O(_(C(u, h)), 1)
|
|
1899
1898
|
], 64))
|
|
1900
1899
|
]))), 256)),
|
|
1901
|
-
|
|
1902
|
-
|
|
1900
|
+
e("td", Jn, [
|
|
1901
|
+
u.token ? (t(), a("button", {
|
|
1903
1902
|
key: 0,
|
|
1904
|
-
onClick: (
|
|
1903
|
+
onClick: (h) => b(u),
|
|
1905
1904
|
class: "inline-flex items-center justify-center bg-white border rounded-md size-7 gap-x-2 hover:bg-gray-100"
|
|
1906
|
-
},
|
|
1907
|
-
|
|
1905
|
+
}, p[0] || (p[0] = [
|
|
1906
|
+
e("svg", {
|
|
1908
1907
|
xmlns: "http://www.w3.org/2000/svg",
|
|
1909
1908
|
width: "12px",
|
|
1910
1909
|
height: "24",
|
|
@@ -1915,7 +1914,7 @@ const ko = { class: "relative min-h-[300px] h-full pb-[3.25rem]" }, _o = {
|
|
|
1915
1914
|
"stroke-linecap": "round",
|
|
1916
1915
|
"stroke-linejoin": "round"
|
|
1917
1916
|
}, [
|
|
1918
|
-
|
|
1917
|
+
e("path", {
|
|
1919
1918
|
d: "M20,16v4a2,2,0,0,1-2,2H4a2,2,0,0,1-2-2V6A2,2,0,0,1,4,4H8",
|
|
1920
1919
|
fill: "none",
|
|
1921
1920
|
stroke: "#000000",
|
|
@@ -1923,7 +1922,7 @@ const ko = { class: "relative min-h-[300px] h-full pb-[3.25rem]" }, _o = {
|
|
|
1923
1922
|
"stroke-linejoin": "round",
|
|
1924
1923
|
"stroke-width": "2"
|
|
1925
1924
|
}),
|
|
1926
|
-
|
|
1925
|
+
e("polygon", {
|
|
1927
1926
|
fill: "none",
|
|
1928
1927
|
points: "12.5 15.8 22 6.2 17.8 2 8.3 11.5 8 16 12.5 15.8",
|
|
1929
1928
|
stroke: "#000000",
|
|
@@ -1932,14 +1931,14 @@ const ko = { class: "relative min-h-[300px] h-full pb-[3.25rem]" }, _o = {
|
|
|
1932
1931
|
"stroke-width": "2"
|
|
1933
1932
|
})
|
|
1934
1933
|
], -1)
|
|
1935
|
-
]), 8,
|
|
1936
|
-
|
|
1934
|
+
]), 8, Xn)) : $("", !0),
|
|
1935
|
+
u.token ? (t(), a("button", {
|
|
1937
1936
|
key: 1,
|
|
1938
|
-
onClick: (
|
|
1937
|
+
onClick: (h) => w(u),
|
|
1939
1938
|
class: "inline-flex items-center justify-center bg-white border rounded-md size-7 gap-x-2 hover:bg-gray-100"
|
|
1940
|
-
},
|
|
1941
|
-
|
|
1942
|
-
]), 8,
|
|
1939
|
+
}, p[1] || (p[1] = [
|
|
1940
|
+
Se('<svg class="flex-shrink-0 size-3.5" xmlns="http://www.w3.org/2000/svg" width="12px" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"></path><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"></path><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"></path><line x1="10" x2="10" y1="11" y2="17"></line><line x1="14" x2="14" y1="11" y2="17"></line></svg>', 1)
|
|
1941
|
+
]), 8, Qn)) : $("", !0)
|
|
1943
1942
|
])
|
|
1944
1943
|
]))), 256))
|
|
1945
1944
|
])
|
|
@@ -1947,21 +1946,192 @@ const ko = { class: "relative min-h-[300px] h-full pb-[3.25rem]" }, _o = {
|
|
|
1947
1946
|
])
|
|
1948
1947
|
]));
|
|
1949
1948
|
}
|
|
1950
|
-
}),
|
|
1951
|
-
"
|
|
1949
|
+
}), eo = { class: "p-[20px]" }, to = { class: "flex gap-[6px] mb-5" }, so = { class: "vs-form-text relative bg-white rounded-lg flex-grow" }, no = { class: "grid p-3 lg:gap-x-3 md:gap-x-6 md:p-5 grid-cols-6" }, oo = { class: "mt-2 text-sm font-medium text-gray-800 dark:text-neutral-200" }, ao = { class: "space-y-8" }, lo = { key: 0 }, io = { class: "grid p-3 bg-gray-100 rounded-lg md:gap-x-6 md:p-5 dark:bg-neutral-700 grid-cols-6" }, ro = ["onClick"], co = { class: "md:col-span-2" }, uo = { class: "text-sm font-medium text-gray-800 dark:text-neutral-200" }, po = { class: "text-sm text-gray-500 dark:text-neutral-500" }, mo = { class: "grid items-center grid-cols-2 md:block text-end md:text-center" }, go = ["checked", "onChange"], ho = { class: "grid p-3 bg-gray-100 rounded-lg md:gap-x-6 md:p-5 dark:bg-neutral-700 grid-cols-6" }, fo = { class: "md:col-span-2" }, yo = { class: "font-semibold text-gray-800 dark:text-neutral-200" }, vo = ["onClick"], bo = { class: "md:col-span-2" }, xo = { class: "text-sm font-medium text-gray-800 dark:text-neutral-200" }, ko = { class: "text-sm text-gray-500 dark:text-neutral-500" }, _o = { class: "grid items-center grid-cols-2 md:block text-end md:text-center" }, wo = ["checked", "onChange"], pe = /* @__PURE__ */ V({
|
|
1950
|
+
__name: "GroupInterfaceWidget",
|
|
1951
|
+
props: {
|
|
1952
|
+
data: {},
|
|
1953
|
+
id: {}
|
|
1954
|
+
},
|
|
1955
|
+
setup(c) {
|
|
1956
|
+
const l = c, s = M(""), n = ["view", "add", "edit", "del"], o = M({});
|
|
1957
|
+
ee(async () => {
|
|
1958
|
+
const C = await (await fetch(
|
|
1959
|
+
`/api/access-group/${l.id}?tab=vs-group-interface`
|
|
1960
|
+
)).json();
|
|
1961
|
+
C.routes && C.routes.forEach((i) => {
|
|
1962
|
+
o.value[i.path] = new Set(i.actions);
|
|
1963
|
+
});
|
|
1964
|
+
});
|
|
1965
|
+
const f = (w, C) => o.value[w]?.has(C) ?? !1, r = (w, C) => {
|
|
1966
|
+
o.value[w] || (o.value[w] = /* @__PURE__ */ new Set()), o.value[w].has(C) ? o.value[w].delete(C) : o.value[w].add(C);
|
|
1967
|
+
}, v = (w, C) => {
|
|
1968
|
+
w.forEach((i) => {
|
|
1969
|
+
i.path && (o.value[i.path] || (o.value[i.path] = /* @__PURE__ */ new Set()), o.value[i.path].has(C) ? o.value[i.path].delete(C) : o.value[i.path].add(C));
|
|
1970
|
+
});
|
|
1971
|
+
}, g = N(
|
|
1972
|
+
() => Object.entries(o.value).map(([w, C]) => ({
|
|
1973
|
+
path: w,
|
|
1974
|
+
actions: Array.from(C)
|
|
1975
|
+
}))
|
|
1976
|
+
), k = async () => {
|
|
1977
|
+
await fetch(
|
|
1978
|
+
`/api/access-group/${l.id}?tab=vs-group-interface`,
|
|
1979
|
+
{
|
|
1980
|
+
method: "POST",
|
|
1981
|
+
headers: { "Content-Type": "application/json" },
|
|
1982
|
+
body: JSON.stringify({ routes: g.value })
|
|
1983
|
+
}
|
|
1984
|
+
), console.log("Saved", g.value);
|
|
1985
|
+
}, x = () => {
|
|
1986
|
+
o.value = {};
|
|
1987
|
+
}, m = (w) => {
|
|
1988
|
+
if (!s.value.trim()) return w;
|
|
1989
|
+
const C = s.value.toLowerCase();
|
|
1990
|
+
return w.filter(
|
|
1991
|
+
(i) => i.ua.toLowerCase().includes(C) || i.path && i.path.toLowerCase().includes(C)
|
|
1992
|
+
);
|
|
1993
|
+
}, b = N(
|
|
1994
|
+
() => m(l.data.routers.filter((w) => !w.menu))
|
|
1995
|
+
), F = N(
|
|
1996
|
+
() => l.data.routers.filter((w) => w.menu).map((w) => ({
|
|
1997
|
+
...w,
|
|
1998
|
+
menu: m(w.menu || [])
|
|
1999
|
+
})).filter((w) => w.menu && w.menu.length > 0)
|
|
2000
|
+
);
|
|
2001
|
+
return (w, C) => (t(), a("div", eo, [
|
|
2002
|
+
e("div", to, [
|
|
2003
|
+
e("div", so, [
|
|
2004
|
+
C[1] || (C[1] = e("i", { class: "absolute bottom-2/4 translate-y-2/4 text-gray-500 cursor-pointer ti" }, null, -1)),
|
|
2005
|
+
R(e("input", {
|
|
2006
|
+
type: "text",
|
|
2007
|
+
placeholder: "Пошук",
|
|
2008
|
+
"onUpdate:modelValue": C[0] || (C[0] = (i) => s.value = i),
|
|
2009
|
+
class: "bg-white h-[38px] text-sm py-2 px-3 block w-full border border-solid placeholder:text-nowrap border-stone-200 rounded-lg text-sm text-stone-800 placeholder:text-stone-400 focus:outline focus:z-10 focus:border-blue-500 focus:ring-blue-500 focus:outline-blue-500"
|
|
2010
|
+
}, null, 512), [
|
|
2011
|
+
[he, s.value]
|
|
2012
|
+
])
|
|
2013
|
+
]),
|
|
2014
|
+
e("button", {
|
|
2015
|
+
onClick: x,
|
|
2016
|
+
class: "inline-flex items-center px-3 py-2 text-sm font-medium duration-300 bg-white border rounded-lg gap-x-2 hover:bg-gray-100"
|
|
2017
|
+
}, " Скинути всі "),
|
|
2018
|
+
e("button", {
|
|
2019
|
+
onClick: k,
|
|
2020
|
+
class: "inline-flex items-center px-3 py-2 text-sm font-medium text-white duration-300 bg-blue-600 border border-transparent rounded-lg gap-x-2 hover:bg-blue-700 hover:text-white"
|
|
2021
|
+
}, " Зберегти ")
|
|
2022
|
+
]),
|
|
2023
|
+
e("div", no, [
|
|
2024
|
+
C[2] || (C[2] = e("div", { class: "self-center col-span-2" }, [
|
|
2025
|
+
e("h2", { class: "font-semibold text-gray-800 dark:text-neutral-200" }, "Групи")
|
|
2026
|
+
], -1)),
|
|
2027
|
+
(t(), a(T, null, j(n, (i, p) => e("div", {
|
|
2028
|
+
class: "col-span-1 text-center",
|
|
2029
|
+
key: p
|
|
2030
|
+
}, [
|
|
2031
|
+
e("h3", oo, _(i), 1)
|
|
2032
|
+
])), 64))
|
|
2033
|
+
]),
|
|
2034
|
+
e("div", ao, [
|
|
2035
|
+
b.value.length ? (t(), a("div", lo, [
|
|
2036
|
+
e("ul", io, [
|
|
2037
|
+
C[3] || (C[3] = e("li", { class: "md:col-span-2" }, [
|
|
2038
|
+
e("h3", { class: "font-semibold text-gray-800 dark:text-neutral-200" }, "Без категорії")
|
|
2039
|
+
], -1)),
|
|
2040
|
+
(t(), a(T, null, j(n, (i, p) => e("li", {
|
|
2041
|
+
key: p,
|
|
2042
|
+
class: "md:block md:col-span-1 md:text-center"
|
|
2043
|
+
}, [
|
|
2044
|
+
e("button", {
|
|
2045
|
+
type: "button",
|
|
2046
|
+
class: "text-xs font-medium text-blue-600 decoration-2 hover:underline",
|
|
2047
|
+
onClick: (u) => v(b.value, n[p])
|
|
2048
|
+
}, " Toggle all ", 8, ro)
|
|
2049
|
+
])), 64))
|
|
2050
|
+
]),
|
|
2051
|
+
(t(!0), a(T, null, j(b.value, (i, p) => (t(), a("ul", {
|
|
2052
|
+
key: "uncat-" + p,
|
|
2053
|
+
class: "grid md:items-center gap-1.5 md:gap-6 px-3 md:px-5 mt-3 grid-cols-6"
|
|
2054
|
+
}, [
|
|
2055
|
+
e("li", co, [
|
|
2056
|
+
e("p", uo, _(i.ua), 1),
|
|
2057
|
+
e("p", po, _(i.path), 1)
|
|
2058
|
+
]),
|
|
2059
|
+
(t(), a(T, null, j(n, (u, h) => e("li", {
|
|
2060
|
+
key: h,
|
|
2061
|
+
class: "col-span-1"
|
|
2062
|
+
}, [
|
|
2063
|
+
e("div", mo, [
|
|
2064
|
+
e("input", {
|
|
2065
|
+
type: "checkbox",
|
|
2066
|
+
checked: f(i.path, u),
|
|
2067
|
+
onChange: (y) => r(i.path, u),
|
|
2068
|
+
class: "text-blue-600 border-gray-300 rounded shrink-0 focus:ring-blue-500"
|
|
2069
|
+
}, null, 40, go)
|
|
2070
|
+
])
|
|
2071
|
+
])), 64))
|
|
2072
|
+
]))), 128))
|
|
2073
|
+
])) : $("", !0),
|
|
2074
|
+
(t(!0), a(T, null, j(F.value, (i, p) => (t(), a("div", {
|
|
2075
|
+
key: p,
|
|
2076
|
+
class: "space-y-5"
|
|
2077
|
+
}, [
|
|
2078
|
+
e("ul", ho, [
|
|
2079
|
+
e("li", fo, [
|
|
2080
|
+
e("h3", yo, _(i.ua), 1)
|
|
2081
|
+
]),
|
|
2082
|
+
(t(), a(T, null, j(n, (u, h) => e("li", {
|
|
2083
|
+
key: h,
|
|
2084
|
+
class: "md:block md:col-span-1 md:text-center"
|
|
2085
|
+
}, [
|
|
2086
|
+
e("button", {
|
|
2087
|
+
type: "button",
|
|
2088
|
+
class: "text-xs font-medium text-blue-600 decoration-2 hover:underline",
|
|
2089
|
+
onClick: (y) => v(i.menu, n[h])
|
|
2090
|
+
}, " Toggle all ", 8, vo)
|
|
2091
|
+
])), 64))
|
|
2092
|
+
]),
|
|
2093
|
+
(t(!0), a(T, null, j(i.menu, (u, h) => (t(), a("ul", {
|
|
2094
|
+
key: h,
|
|
2095
|
+
class: "grid md:items-center gap-1.5 md:gap-6 px-3 md:px-5 mt-3 grid-cols-6"
|
|
2096
|
+
}, [
|
|
2097
|
+
e("li", bo, [
|
|
2098
|
+
e("p", xo, _(u.ua), 1),
|
|
2099
|
+
e("p", ko, _(u.path), 1)
|
|
2100
|
+
]),
|
|
2101
|
+
(t(), a(T, null, j(n, (y, d) => e("li", {
|
|
2102
|
+
key: d,
|
|
2103
|
+
class: "col-span-1"
|
|
2104
|
+
}, [
|
|
2105
|
+
e("div", _o, [
|
|
2106
|
+
e("input", {
|
|
2107
|
+
type: "checkbox",
|
|
2108
|
+
checked: f(u.path, y),
|
|
2109
|
+
onChange: (A) => r(u.path, y),
|
|
2110
|
+
class: "text-blue-600 border-gray-300 rounded shrink-0 focus:ring-blue-500"
|
|
2111
|
+
}, null, 40, wo)
|
|
2112
|
+
])
|
|
2113
|
+
])), 64))
|
|
2114
|
+
]))), 128))
|
|
2115
|
+
]))), 128))
|
|
2116
|
+
])
|
|
2117
|
+
]));
|
|
2118
|
+
}
|
|
2119
|
+
}), Ve = {
|
|
2120
|
+
"vs-widget-map": ue,
|
|
1952
2121
|
"vs-widget-comments": ie,
|
|
1953
|
-
"vs-widget-history":
|
|
1954
|
-
"vs-widget-gallery":
|
|
1955
|
-
"vs-widget-file":
|
|
1956
|
-
"vs-widget-list":
|
|
1957
|
-
"vs-widget-table":
|
|
1958
|
-
|
|
2122
|
+
"vs-widget-history": re,
|
|
2123
|
+
"vs-widget-gallery": ce,
|
|
2124
|
+
"vs-widget-file": de,
|
|
2125
|
+
"vs-widget-list": ze,
|
|
2126
|
+
"vs-widget-table": Yn,
|
|
2127
|
+
"vs-group-interface": pe
|
|
2128
|
+
}, $o = {
|
|
1959
2129
|
key: 0,
|
|
1960
2130
|
class: "mb-4 pb-2 border-b border-gray-200"
|
|
1961
|
-
},
|
|
2131
|
+
}, Co = { class: "text-lg font-semibold text-gray-900" }, Lo = ["innerHTML"], Mo = {
|
|
1962
2132
|
key: 0,
|
|
1963
2133
|
class: "mb-4 pb-2 border-b border-gray-200"
|
|
1964
|
-
},
|
|
2134
|
+
}, To = { class: "text-lg font-semibold text-gray-900" }, Do = ["innerHTML"], Ee = /* @__PURE__ */ V({
|
|
1965
2135
|
__name: "CardItem",
|
|
1966
2136
|
props: {
|
|
1967
2137
|
items: {},
|
|
@@ -1978,61 +2148,69 @@ const ko = { class: "relative min-h-[300px] h-full pb-[3.25rem]" }, _o = {
|
|
|
1978
2148
|
className: {},
|
|
1979
2149
|
style: {}
|
|
1980
2150
|
},
|
|
1981
|
-
setup(
|
|
1982
|
-
const
|
|
1983
|
-
|
|
2151
|
+
setup(c) {
|
|
2152
|
+
const l = c;
|
|
2153
|
+
console.log(l.data);
|
|
2154
|
+
const s = N(() => l.col ? {
|
|
2155
|
+
[`lg:col-span-${l.col}`]: !0
|
|
1984
2156
|
} : {});
|
|
1985
|
-
function
|
|
1986
|
-
return
|
|
2157
|
+
function n(r) {
|
|
2158
|
+
return Ve[r] || r;
|
|
1987
2159
|
}
|
|
1988
|
-
const
|
|
1989
|
-
return
|
|
1990
|
-
|
|
1991
|
-
}),
|
|
1992
|
-
},
|
|
1993
|
-
const
|
|
1994
|
-
return l.col && (
|
|
2160
|
+
const o = function(r = {}) {
|
|
2161
|
+
return r.props && Object.entries(r.props).forEach(([v, g]) => {
|
|
2162
|
+
r[v] = l.data[g];
|
|
2163
|
+
}), r;
|
|
2164
|
+
}, f = N(() => {
|
|
2165
|
+
const r = {};
|
|
2166
|
+
return l.col && (r.col = l.col), r;
|
|
1995
2167
|
});
|
|
1996
|
-
return (
|
|
1997
|
-
class:
|
|
2168
|
+
return (r, v) => (t(), a("div", {
|
|
2169
|
+
class: I(["w-full bg-gray-50 rounded-lg p-4 col-span-12", s.value])
|
|
1998
2170
|
}, [
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
])) :
|
|
2002
|
-
|
|
2171
|
+
r.title ? (t(), a("div", $o, [
|
|
2172
|
+
e("h3", Co, _(r.title), 1)
|
|
2173
|
+
])) : $("", !0),
|
|
2174
|
+
r.html ? (t(), a("div", {
|
|
2003
2175
|
key: 1,
|
|
2004
|
-
innerHTML:
|
|
2005
|
-
class: "text-gray-900 leading-relaxed
|
|
2006
|
-
}, null, 8,
|
|
2176
|
+
innerHTML: r.html,
|
|
2177
|
+
class: "text-gray-900 leading-relaxed"
|
|
2178
|
+
}, null, 8, Lo)) : r.type?.includes("tabs") ? (t(), H(me, {
|
|
2007
2179
|
key: 2,
|
|
2008
|
-
view:
|
|
2009
|
-
panels:
|
|
2010
|
-
data:
|
|
2011
|
-
}, null, 8, ["panels", "data"])) : (
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
])) :
|
|
2015
|
-
|
|
2180
|
+
view: r.type,
|
|
2181
|
+
panels: r.items,
|
|
2182
|
+
data: r.data
|
|
2183
|
+
}, null, 8, ["view", "panels", "data"])) : (t(!0), a(T, { key: 3 }, j(r.items, (g) => (t(), a(T, null, [
|
|
2184
|
+
g.title || g.label ? (t(), a("div", Mo, [
|
|
2185
|
+
e("h3", To, _(g.title || g.label), 1)
|
|
2186
|
+
])) : $("", !0),
|
|
2187
|
+
g.html ? (t(), a("div", {
|
|
2016
2188
|
key: 1,
|
|
2017
|
-
innerHTML:
|
|
2018
|
-
class: "text-gray-900 leading-relaxed
|
|
2019
|
-
}, null, 8,
|
|
2189
|
+
innerHTML: g.html,
|
|
2190
|
+
class: "text-gray-900 leading-relaxed"
|
|
2191
|
+
}, null, 8, Do)) : g.component ? (t(), H(B(n(g.component)), K({
|
|
2020
2192
|
key: 2,
|
|
2021
2193
|
ref_for: !0
|
|
2022
|
-
}, { geom:
|
|
2194
|
+
}, { geom: r.data.geom, id: r.data.id, ...f.value, ...o(g), data: r.data }, { class: "w-full" }), null, 16)) : W(r.$slots, "default", { key: 3 })
|
|
2023
2195
|
], 64))), 256))
|
|
2024
2196
|
], 2));
|
|
2025
2197
|
}
|
|
2026
|
-
}),
|
|
2198
|
+
}), jo = { class: "grid grid-cols-12 gap-[20px]" }, Io = {
|
|
2027
2199
|
key: 0,
|
|
2028
2200
|
class: "col-span-4"
|
|
2029
|
-
},
|
|
2030
|
-
key:
|
|
2201
|
+
}, Ao = ["innerHTML"], zo = {
|
|
2202
|
+
key: 0,
|
|
2031
2203
|
class: "overflow-hidden w-full"
|
|
2032
|
-
},
|
|
2204
|
+
}, Vo = { class: "flex border-b border-gray-200 bg-gray-50 relative" }, Eo = ["onClick"], Ho = { class: "p-1" }, So = ["innerHTML"], Fo = {
|
|
2205
|
+
key: 1,
|
|
2206
|
+
class: "flex w-full"
|
|
2207
|
+
}, Oo = { class: "flex flex-col w-56 border-r border-gray-200 bg-gray-50 relative" }, No = ["onClick"], Po = {
|
|
2208
|
+
key: 0,
|
|
2209
|
+
class: "absolute right-3 top-1/2 -translate-y-1/2 transition-all duration-300"
|
|
2210
|
+
}, Bo = { class: "flex-1 p-4" }, Wo = ["innerHTML"], Ro = {
|
|
2033
2211
|
key: 2,
|
|
2034
2212
|
class: "p-1 w-full"
|
|
2035
|
-
},
|
|
2213
|
+
}, Uo = { class: "grid grid-cols-12 gap-4" }, me = /* @__PURE__ */ V({
|
|
2036
2214
|
__name: "Card",
|
|
2037
2215
|
props: {
|
|
2038
2216
|
panels: { default: () => [] },
|
|
@@ -2045,185 +2223,277 @@ const ko = { class: "relative min-h-[300px] h-full pb-[3.25rem]" }, _o = {
|
|
|
2045
2223
|
className: {},
|
|
2046
2224
|
style: {}
|
|
2047
2225
|
},
|
|
2048
|
-
setup(
|
|
2049
|
-
const
|
|
2050
|
-
function
|
|
2051
|
-
return
|
|
2226
|
+
setup(c) {
|
|
2227
|
+
const l = c, s = M(0), n = M([]);
|
|
2228
|
+
function o(i) {
|
|
2229
|
+
return Ve[i] || i;
|
|
2052
2230
|
}
|
|
2053
|
-
function
|
|
2054
|
-
return
|
|
2231
|
+
function f(i) {
|
|
2232
|
+
return i.forEach((p) => {
|
|
2233
|
+
p.type && (p.view = p.type);
|
|
2234
|
+
}), n.value = i.filter((p) => p.type === "pin"), i.filter((p) => p.type !== "pin");
|
|
2055
2235
|
}
|
|
2056
|
-
const
|
|
2057
|
-
[`view-${
|
|
2058
|
-
})),
|
|
2059
|
-
const
|
|
2060
|
-
return
|
|
2061
|
-
};
|
|
2062
|
-
|
|
2063
|
-
|
|
2236
|
+
const r = N(() => l.panels && l.panels.length > 0 ? l.normalizeTabs ? f(l.panels) : l.panels : l.data && Array.isArray(l.data) ? l.data.filter((p) => p.type.includes("tabs"))[0]?.items || [] : []), v = N(() => l.panels && l.panels.length > 0 ? l.normalizeTabs ? f(l.panels) : l.panels : l.data && Array.isArray(l.data) ? l.data : []), g = N(() => ({
|
|
2237
|
+
[`view-${l.view}`]: !0
|
|
2238
|
+
})), k = (i) => {
|
|
2239
|
+
const p = { ...i };
|
|
2240
|
+
return l.data && (p.data = l.data), p;
|
|
2241
|
+
}, x = M([]), m = M([]), b = M([]);
|
|
2242
|
+
function F(i, p) {
|
|
2243
|
+
i && i instanceof HTMLElement && (x.value[p] = i);
|
|
2244
|
+
}
|
|
2245
|
+
function w() {
|
|
2246
|
+
m.value = x.value.map((i) => i.offsetWidth), b.value = x.value.map((i) => i.offsetLeft);
|
|
2247
|
+
}
|
|
2248
|
+
let C = null;
|
|
2249
|
+
return ee(() => {
|
|
2250
|
+
xe(() => {
|
|
2251
|
+
w();
|
|
2252
|
+
}), C = new ResizeObserver(() => w()), C.observe(document.body);
|
|
2253
|
+
}), Fe(() => {
|
|
2254
|
+
C?.disconnect();
|
|
2255
|
+
}), Oe(s, () => {
|
|
2256
|
+
xe(() => {
|
|
2257
|
+
w();
|
|
2258
|
+
});
|
|
2259
|
+
}), (i, p) => (t(), a("div", {
|
|
2260
|
+
class: I(i.classWrapper || g.value)
|
|
2064
2261
|
}, [
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
(
|
|
2068
|
-
key:
|
|
2069
|
-
class: "w-full bg-gray-50 rounded-lg p-4 col-span-12
|
|
2262
|
+
e("div", jo, [
|
|
2263
|
+
n.value.length !== 0 ? (t(), a("div", Io, [
|
|
2264
|
+
(t(!0), a(T, null, j(n.value[0].items, (u, h) => (t(), a("div", {
|
|
2265
|
+
key: u.name || h,
|
|
2266
|
+
class: "w-full bg-gray-50 rounded-lg p-4 col-span-12 m-1 mb-3"
|
|
2070
2267
|
}, [
|
|
2071
|
-
|
|
2268
|
+
u.html ? (t(), a("div", {
|
|
2072
2269
|
key: 0,
|
|
2073
|
-
innerHTML:
|
|
2270
|
+
innerHTML: u.html,
|
|
2074
2271
|
class: "text-gray-900 leading-relaxed"
|
|
2075
|
-
}, null, 8,
|
|
2272
|
+
}, null, 8, Ao)) : u.component ? (t(), H(B(o(u.component)), K({
|
|
2076
2273
|
key: 1,
|
|
2077
2274
|
ref_for: !0
|
|
2078
|
-
},
|
|
2079
|
-
id:
|
|
2275
|
+
}, u.component === "Card" ? u : k(u), {
|
|
2276
|
+
id: i.data.id,
|
|
2080
2277
|
class: "w-full h-full"
|
|
2081
|
-
}), null, 16, ["id"])) :
|
|
2278
|
+
}), null, 16, ["id"])) : $("", !0)
|
|
2082
2279
|
]))), 128))
|
|
2083
|
-
])) :
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
"px-4 py-3 text-sm font-medium text-gray-600 hover:text-gray-800 hover:bg-gray-100 transition-colors",
|
|
2091
|
-
{ "text-blue-600 bg-white border-b-2 border-blue-600": o.value === T }
|
|
2092
|
-
])
|
|
2093
|
-
}, _(m.title || m.label || m.name || `Tab ${T + 1}`), 11, ln))), 128))
|
|
2094
|
-
]),
|
|
2095
|
-
t("div", an, [
|
|
2096
|
-
(s(!0), a(I, null, H(l.value, (m, T) => P((s(), a("div", {
|
|
2097
|
-
key: m.name || T,
|
|
2098
|
-
class: D([
|
|
2099
|
-
d.classPanel || "w-full border-gray-100 py-2",
|
|
2100
|
-
`col-span-${m.col || 12}`
|
|
2101
|
-
])
|
|
2102
|
-
}, [
|
|
2103
|
-
m.html ? (s(), a("div", {
|
|
2104
|
-
key: 0,
|
|
2105
|
-
innerHTML: m.html,
|
|
2106
|
-
class: "text-gray-900 leading-relaxed"
|
|
2107
|
-
}, null, 8, rn)) : d.$slots[`tab-${T}`] ? q(d.$slots, `tab-${T}`, {
|
|
2108
|
-
key: 1,
|
|
2109
|
-
item: m,
|
|
2110
|
-
data: d.data
|
|
2111
|
-
}) : m.component || m.name ? (s(), z(N(n(m.component || m.name)), X({
|
|
2112
|
-
key: 2,
|
|
2113
|
-
ref_for: !0
|
|
2114
|
-
}, m.component === "Card" ? m : p(m), {
|
|
2115
|
-
id: d.data.id,
|
|
2116
|
-
class: "w-full h-full"
|
|
2117
|
-
}), null, 16, ["id"])) : q(d.$slots, m.slot || `tab-${T}`, {
|
|
2118
|
-
key: 3,
|
|
2119
|
-
item: m,
|
|
2120
|
-
data: d.data
|
|
2121
|
-
})
|
|
2122
|
-
], 2)), [
|
|
2123
|
-
[ze, o.value === T]
|
|
2124
|
-
])), 128))
|
|
2125
|
-
])
|
|
2126
|
-
])) : (s(), a("div", dn, [
|
|
2127
|
-
t("div", cn, [
|
|
2128
|
-
(s(!0), a(I, null, H(v.value, (m, T) => (s(), a(I, {
|
|
2129
|
-
key: m.name || T
|
|
2130
|
-
}, [
|
|
2131
|
-
d.$slots[`panel-${T}`] ? q(d.$slots, `panel-${T}`, {
|
|
2280
|
+
])) : $("", !0),
|
|
2281
|
+
e("div", {
|
|
2282
|
+
class: I(n.value.length !== 0 ? "col-span-8" : "col-span-12")
|
|
2283
|
+
}, [
|
|
2284
|
+
i.view === "tabs" ? (t(), a("div", zo, [
|
|
2285
|
+
e("div", Vo, [
|
|
2286
|
+
m.value.length ? (t(), a("div", {
|
|
2132
2287
|
key: 0,
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
},
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
})
|
|
2149
|
-
]
|
|
2150
|
-
|
|
2151
|
-
|
|
2288
|
+
class: "absolute bottom-0 h-[2px] bg-blue-600 transition-all duration-300",
|
|
2289
|
+
style: J({
|
|
2290
|
+
width: m.value[s.value] + "px",
|
|
2291
|
+
left: b.value[s.value] + "px"
|
|
2292
|
+
})
|
|
2293
|
+
}, null, 4)) : $("", !0),
|
|
2294
|
+
(t(!0), a(T, null, j(r.value, (u, h) => (t(), a("button", {
|
|
2295
|
+
key: u.name || h,
|
|
2296
|
+
ref_for: !0,
|
|
2297
|
+
ref: (y) => F(y, h),
|
|
2298
|
+
onClick: (y) => s.value = h,
|
|
2299
|
+
class: I([
|
|
2300
|
+
"relative px-4 py-3 text-sm font-medium transition-colors duration-300",
|
|
2301
|
+
s.value === h ? "text-blue-600" : "text-gray-600 hover:text-gray-800"
|
|
2302
|
+
])
|
|
2303
|
+
}, _(u.title || u.label || u.name || `Tab ${h + 1}`), 11, Eo))), 128))
|
|
2304
|
+
]),
|
|
2305
|
+
e("div", Ho, [
|
|
2306
|
+
(t(!0), a(T, null, j(r.value, (u, h) => R((t(), a("div", {
|
|
2307
|
+
key: u.name || h,
|
|
2308
|
+
class: I([
|
|
2309
|
+
"transition-all duration-300 ease-in-out",
|
|
2310
|
+
s.value === h ? "opacity-100 translate-y-0" : "opacity-0 -translate-y-2",
|
|
2311
|
+
i.classPanel || "w-full border-gray-100 py-2"
|
|
2312
|
+
])
|
|
2313
|
+
}, [
|
|
2314
|
+
u.html ? (t(), a("div", {
|
|
2315
|
+
key: 0,
|
|
2316
|
+
innerHTML: u.html,
|
|
2317
|
+
class: "text-gray-900 leading-relaxed"
|
|
2318
|
+
}, null, 8, So)) : i.$slots[`tab-${h}`] ? W(i.$slots, `tab-${h}`, {
|
|
2319
|
+
key: 1,
|
|
2320
|
+
item: u,
|
|
2321
|
+
data: i.data
|
|
2322
|
+
}) : u.component || u.name ? (t(), H(B(o(u.component || u.name)), K({
|
|
2323
|
+
key: 2,
|
|
2324
|
+
ref_for: !0
|
|
2325
|
+
}, u.component === "Card" ? u : k(u), {
|
|
2326
|
+
id: i.data.id,
|
|
2327
|
+
class: "w-full h-full"
|
|
2328
|
+
}), null, 16, ["id"])) : W(i.$slots, u.slot || `tab-${h}`, {
|
|
2329
|
+
key: 3,
|
|
2330
|
+
item: u,
|
|
2331
|
+
data: i.data
|
|
2332
|
+
})
|
|
2333
|
+
], 2)), [
|
|
2334
|
+
[ke, s.value === h]
|
|
2335
|
+
])), 128))
|
|
2336
|
+
])
|
|
2337
|
+
])) : i.view === "vertical-tabs" ? (t(), a("div", Fo, [
|
|
2338
|
+
e("div", Oo, [
|
|
2339
|
+
(t(!0), a(T, null, j(r.value, (u, h) => (t(), a("button", {
|
|
2340
|
+
key: u.name || h,
|
|
2341
|
+
onClick: (y) => s.value = h,
|
|
2342
|
+
class: I([
|
|
2343
|
+
"relative px-4 py-3 text-sm font-medium text-left transition-colors duration-300",
|
|
2344
|
+
s.value === h ? "text-blue-600 bg-white" : "text-gray-600 hover:text-gray-800 hover:bg-gray-100"
|
|
2345
|
+
])
|
|
2346
|
+
}, [
|
|
2347
|
+
O(_(u.title || u.label || u.name || `Tab ${h + 1}`) + " ", 1),
|
|
2348
|
+
s.value === h ? (t(), a("span", Po, p[0] || (p[0] = [
|
|
2349
|
+
e("svg", {
|
|
2350
|
+
viewBox: "0 0 24 24",
|
|
2351
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
2352
|
+
width: "20",
|
|
2353
|
+
height: "20",
|
|
2354
|
+
fill: "currentColor",
|
|
2355
|
+
class: "remixicon text-blue-600 rounded-full bg-white shadow scale-90 opacity-100 transition ease-out"
|
|
2356
|
+
}, [
|
|
2357
|
+
e("path", { d: "M13.1717 12.0007L8.22192 7.05093L9.63614 5.63672L16.0001 12.0007L9.63614 18.3646L8.22192 16.9504L13.1717 12.0007Z" })
|
|
2358
|
+
], -1)
|
|
2359
|
+
]))) : $("", !0)
|
|
2360
|
+
], 10, No))), 128))
|
|
2361
|
+
]),
|
|
2362
|
+
e("div", Bo, [
|
|
2363
|
+
(t(!0), a(T, null, j(r.value, (u, h) => R((t(), a("div", {
|
|
2364
|
+
key: u.name || h,
|
|
2365
|
+
class: I([
|
|
2366
|
+
"transition-all duration-300 ease-in-out",
|
|
2367
|
+
s.value === h ? "opacity-100 translate-y-0" : "opacity-0 -translate-y-2",
|
|
2368
|
+
i.classPanel || "w-full border-gray-100 py-2"
|
|
2369
|
+
])
|
|
2370
|
+
}, [
|
|
2371
|
+
u.html ? (t(), a("div", {
|
|
2372
|
+
key: 0,
|
|
2373
|
+
innerHTML: u.html,
|
|
2374
|
+
class: "text-gray-900 leading-relaxed"
|
|
2375
|
+
}, null, 8, Wo)) : i.$slots[`tab-${h}`] ? W(i.$slots, `tab-${h}`, {
|
|
2376
|
+
key: 1,
|
|
2377
|
+
item: u,
|
|
2378
|
+
data: i.data
|
|
2379
|
+
}) : u.component || u.name ? (t(), H(B(o(u.component || u.name)), K({
|
|
2380
|
+
key: 2,
|
|
2381
|
+
ref_for: !0
|
|
2382
|
+
}, u.component === "Card" ? u : k(u), {
|
|
2383
|
+
id: i.data.id,
|
|
2384
|
+
class: "w-full h-full"
|
|
2385
|
+
}), null, 16, ["id"])) : W(i.$slots, u.slot || `tab-${h}`, {
|
|
2386
|
+
key: 3,
|
|
2387
|
+
item: u,
|
|
2388
|
+
data: i.data
|
|
2389
|
+
})
|
|
2390
|
+
], 2)), [
|
|
2391
|
+
[ke, s.value === h]
|
|
2392
|
+
])), 128))
|
|
2393
|
+
])
|
|
2394
|
+
])) : (t(), a("div", Ro, [
|
|
2395
|
+
e("div", Uo, [
|
|
2396
|
+
(t(!0), a(T, null, j(v.value, (u, h) => (t(), a(T, {
|
|
2397
|
+
key: u.name || h
|
|
2398
|
+
}, [
|
|
2399
|
+
i.$slots[`panel-${h}`] ? W(i.$slots, `panel-${h}`, {
|
|
2400
|
+
key: 0,
|
|
2401
|
+
item: u,
|
|
2402
|
+
data: i.data
|
|
2403
|
+
}) : u.items || u.html ? (t(), H(B(Ee), K({
|
|
2404
|
+
key: 1,
|
|
2405
|
+
ref_for: !0
|
|
2406
|
+
}, k(u), {
|
|
2407
|
+
items: u.items,
|
|
2408
|
+
class: "w-full h-full"
|
|
2409
|
+
}), null, 16, ["items"])) : u.component ? (t(), H(B(o(u.component)), K({
|
|
2410
|
+
key: 2,
|
|
2411
|
+
ref_for: !0
|
|
2412
|
+
}, k(u), { class: "w-full h-full" }), null, 16)) : W(i.$slots, u.slot || `panel-${h}`, {
|
|
2413
|
+
key: 3,
|
|
2414
|
+
item: u,
|
|
2415
|
+
data: i.data
|
|
2416
|
+
})
|
|
2417
|
+
], 64))), 128))
|
|
2418
|
+
])
|
|
2419
|
+
]))
|
|
2420
|
+
], 2)
|
|
2152
2421
|
])
|
|
2153
2422
|
], 2));
|
|
2154
2423
|
}
|
|
2155
|
-
}),
|
|
2424
|
+
}), Go = ["onClick"], qo = /* @__PURE__ */ V({
|
|
2156
2425
|
__name: "CopyNotification",
|
|
2157
|
-
setup(
|
|
2158
|
-
const
|
|
2159
|
-
let
|
|
2160
|
-
const
|
|
2161
|
-
if (
|
|
2162
|
-
const v =
|
|
2163
|
-
clearTimeout(v.timer),
|
|
2426
|
+
setup(c, { expose: l }) {
|
|
2427
|
+
const s = M([]);
|
|
2428
|
+
let n = 1;
|
|
2429
|
+
const o = () => {
|
|
2430
|
+
if (s.value.length >= 10) {
|
|
2431
|
+
const v = s.value[0];
|
|
2432
|
+
clearTimeout(v.timer), s.value.shift();
|
|
2164
2433
|
}
|
|
2165
|
-
const
|
|
2166
|
-
id:
|
|
2434
|
+
const r = {
|
|
2435
|
+
id: n++,
|
|
2167
2436
|
timer: setTimeout(() => {
|
|
2168
|
-
|
|
2437
|
+
f(r.id);
|
|
2169
2438
|
}, 1500)
|
|
2170
2439
|
};
|
|
2171
|
-
|
|
2172
|
-
},
|
|
2173
|
-
const v =
|
|
2440
|
+
s.value.push(r);
|
|
2441
|
+
}, f = (r) => {
|
|
2442
|
+
const v = s.value.findIndex((g) => g.id === r);
|
|
2174
2443
|
if (v !== -1) {
|
|
2175
|
-
const
|
|
2176
|
-
clearTimeout(
|
|
2444
|
+
const g = s.value[v];
|
|
2445
|
+
clearTimeout(g.timer), s.value.splice(v, 1);
|
|
2177
2446
|
}
|
|
2178
2447
|
};
|
|
2179
|
-
return
|
|
2180
|
-
addNotification:
|
|
2181
|
-
}),
|
|
2182
|
-
|
|
2183
|
-
clearTimeout(
|
|
2448
|
+
return l({
|
|
2449
|
+
addNotification: o
|
|
2450
|
+
}), Ce(() => {
|
|
2451
|
+
s.value.forEach((r) => {
|
|
2452
|
+
clearTimeout(r.timer);
|
|
2184
2453
|
});
|
|
2185
|
-
}), (
|
|
2186
|
-
|
|
2454
|
+
}), (r, v) => (t(), H(Ne, { to: "body" }, [
|
|
2455
|
+
z(Pe, {
|
|
2187
2456
|
name: "notification",
|
|
2188
2457
|
tag: "div",
|
|
2189
2458
|
class: "fixed top-4 right-4 z-50 space-y-2"
|
|
2190
2459
|
}, {
|
|
2191
|
-
default:
|
|
2192
|
-
(
|
|
2193
|
-
key:
|
|
2460
|
+
default: Be(() => [
|
|
2461
|
+
(t(!0), a(T, null, j(s.value, (g) => (t(), a("div", {
|
|
2462
|
+
key: g.id,
|
|
2194
2463
|
class: "bg-green-500 text-white px-4 py-3 rounded-lg shadow-lg flex items-center gap-3 min-w-64 max-w-sm"
|
|
2195
2464
|
}, [
|
|
2196
|
-
|
|
2197
|
-
v[0] || (v[0] =
|
|
2198
|
-
|
|
2199
|
-
|
|
2465
|
+
z(D(Ze), { class: "h-5 w-5 text-green-100 flex-shrink-0" }),
|
|
2466
|
+
v[0] || (v[0] = e("div", { class: "flex-1" }, [
|
|
2467
|
+
e("p", { class: "font-medium text-sm" }, "Ссылка скопирована!"),
|
|
2468
|
+
e("p", { class: "text-xs text-green-100 opacity-90" }, "Файл добавлен в буфер обмена")
|
|
2200
2469
|
], -1)),
|
|
2201
|
-
|
|
2202
|
-
onClick: (
|
|
2470
|
+
e("button", {
|
|
2471
|
+
onClick: (k) => f(g.id),
|
|
2203
2472
|
class: "text-green-100 hover:text-white transition-colors flex-shrink-0"
|
|
2204
2473
|
}, [
|
|
2205
|
-
|
|
2206
|
-
], 8,
|
|
2474
|
+
z(D(ve), { class: "h-4 w-4" })
|
|
2475
|
+
], 8, Go)
|
|
2207
2476
|
]))), 128))
|
|
2208
2477
|
]),
|
|
2209
2478
|
_: 1
|
|
2210
2479
|
})
|
|
2211
2480
|
]));
|
|
2212
2481
|
}
|
|
2213
|
-
}),
|
|
2214
|
-
|
|
2215
|
-
|
|
2482
|
+
}), Ko = /* @__PURE__ */ G(qo, [["__scopeId", "data-v-55903525"]]);
|
|
2483
|
+
me.install = function(c) {
|
|
2484
|
+
c.component("vs-widget-file", de), c.component("vs-widget-comments", ie), c.component("vs-widget-history", re), c.component("vs-widget-gallery", ce), c.component("vs-widget-map", ue), c.component("vs-group-interface", pe), c.component("CommentsWidget", ie), c.component("HistoryWidget", re), c.component("GalleryWidget", ce), c.component("FilesWidget", de), c.component("MapWidget", ue), c.component("Card", me), c.component("CardItem", Ee), c.component("DescriptionListWidget", ze), c.component("CopyNotification", Ko), c.component("GroupInterfaceWidget", pe);
|
|
2216
2485
|
};
|
|
2217
2486
|
export {
|
|
2218
|
-
|
|
2219
|
-
|
|
2487
|
+
me as Card,
|
|
2488
|
+
Ee as CardItem,
|
|
2220
2489
|
ie as CommentsWidget,
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
re as
|
|
2227
|
-
|
|
2228
|
-
|
|
2490
|
+
Ko as CopyNotification,
|
|
2491
|
+
ze as DescriptionListWidget,
|
|
2492
|
+
de as FilesWidget,
|
|
2493
|
+
ce as GalleryWidget,
|
|
2494
|
+
pe as GroupInterfaceWidget,
|
|
2495
|
+
re as HistoryWidget,
|
|
2496
|
+
ue as MapWidget,
|
|
2497
|
+
Yn as TableWidget,
|
|
2498
|
+
me as default
|
|
2229
2499
|
};
|