@opengis/cms 0.0.58 → 0.0.59
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/README.md +131 -131
- package/dist/{ArticlesPage-CFjE_cw_.js → ArticlesPage-BjYzvTWM.js} +3 -3
- package/dist/{CollectionsBreadcrumb-BCxeRikP.js → CollectionsBreadcrumb-HePNJb-d.js} +1 -1
- package/dist/CollectionsBreadcrumb.vue_vue_type_script_setup_true_lang-BJh-tjam.js +53 -0
- package/dist/{Dashboard-C1eGscNd.js → Dashboard-CXkg_pk8.js} +132 -132
- package/dist/{EditCollectionPage-DIr1tdtn.js → EditCollectionPage-CqYHpEON.js} +2 -2
- package/dist/{MenuAddPage-D-p3gFgm.js → MenuAddPage-QTnwCoGh.js} +1 -1
- package/dist/{MenuBody-rN5j4YBu.js → MenuBody-Bi0ONVZf.js} +2 -2
- package/dist/{MenuItemPage-BoJw885D.js → MenuItemPage-B7Y9KFyb.js} +3 -3
- package/dist/{MenuList-DFEBS0NB.js → MenuList-BLIpeqSd.js} +53 -53
- package/dist/{MenuPage-BCZB_S8j.js → MenuPage-3W6jZ15H.js} +1 -1
- package/dist/{MenuWrapper-AZ_8s-zd.js → MenuWrapper-OrOv6sOb.js} +1 -1
- package/dist/{MonacoEditor-Db-3Jc3E.js → MonacoEditor-ByPT8pnv.js} +1 -1
- package/dist/MonacoEditor.vue_vue_type_script_setup_true_lang-C8cip9Ci.js +84 -0
- package/dist/{UniversalTable-CzqPG-tY.js → UniversalTable-GBd_pStq.js} +80 -80
- package/dist/{UniversalTablePagination-4gL47A7I.js → UniversalTablePagination-Dw2hc0nc.js} +46 -46
- package/dist/{contentForm-CtMhQTG0.js → contentForm-Buku-lel.js} +1 -1
- package/dist/index.html +29 -29
- package/dist/index.js +5 -5
- package/dist/{vs-builder-monaco-B3Jj0V31.js → vs-builder-monaco-Cw-f19gc.js} +1 -1
- package/input-types.json +9 -9
- package/locales/en.json +815 -815
- package/locales/uk.json +813 -813
- package/module/cms/cls/content.status.json +17 -17
- package/module/cms/cls/user_type.json +9 -9
- package/module/cms/form/admin.users.form.json +77 -77
- package/module/cms/select/cms.page_type.sql +1 -1
- package/module/cms/select/news_tag_id.sql +11 -11
- package/module/cms/table/admin.users.table.json +53 -53
- package/module/cms/table/collection.default.table.json +96 -96
- package/module/cms/table/single.default.table.json +116 -116
- package/package.json +2 -1
- package/plugin.js +43 -43
- package/server/app.js +35 -35
- package/server/config.js +4 -4
- package/server/functions/getContent.js +45 -45
- package/server/functions/getDraftKey.js +22 -22
- package/server/functions/getSearchData.js +31 -31
- package/server/functions/getTags.js +30 -30
- package/server/functions/getUser.js +27 -27
- package/server/functions/utils/mock.reply.js +55 -55
- package/server/index.js +22 -22
- package/server/migrations/fixes.sql +129 -129
- package/server/migrations/site.sql +595 -595
- package/server/plugins/adminHook.js +78 -78
- package/server/plugins/hook.js +59 -59
- package/server/plugins/vite.js +75 -75
- package/server/routes/category/controllers/cms.category.delete.js +21 -21
- package/server/routes/category/controllers/cms.category.get.js +17 -17
- package/server/routes/category/controllers/cms.category.list.js +16 -16
- package/server/routes/category/controllers/cms.category.post.js +21 -21
- package/server/routes/category/controllers/cms.category.put.js +23 -23
- package/server/routes/category/index.mjs +22 -22
- package/server/routes/cms/controllers/cmsStat.js +55 -55
- package/server/routes/cms/controllers/cmsSuggest.js +57 -57
- package/server/routes/cms/controllers/deleteContent.js +113 -113
- package/server/routes/cms/controllers/deleteMedia.js +76 -76
- package/server/routes/cms/controllers/downloadMedia.js +84 -84
- package/server/routes/cms/controllers/getContent.js +113 -113
- package/server/routes/cms/controllers/getContentBySlug.js +93 -93
- package/server/routes/cms/controllers/getPermissions.js +15 -15
- package/server/routes/cms/controllers/insertContent.js +217 -217
- package/server/routes/cms/controllers/listMedia.js +155 -155
- package/server/routes/cms/controllers/metadataMedia.js +39 -39
- package/server/routes/cms/controllers/properties.get.js +18 -18
- package/server/routes/cms/controllers/properties.post.js +99 -99
- package/server/routes/cms/controllers/searchContent.js +214 -214
- package/server/routes/cms/controllers/setPermissions.js +49 -49
- package/server/routes/cms/controllers/translate.js +89 -89
- package/server/routes/cms/controllers/updateContent.js +266 -266
- package/server/routes/cms/controllers/uploadMedia.js +79 -79
- package/server/routes/cms/functions/getSettings.js +48 -48
- package/server/routes/cms/index.mjs +112 -112
- package/server/routes/cms/utils/additionalData.js +35 -35
- package/server/routes/cms/utils/getCollection.js +89 -89
- package/server/routes/cms/utils/getSingle.js +188 -188
- package/server/routes/cms/utils/inputTypes.js +5 -5
- package/server/routes/cms/utils/insertContentLocalization.js +104 -104
- package/server/routes/cms/utils/requestTranslation.js +85 -85
- package/server/routes/cms/utils/updateLocalization.js +47 -47
- package/server/routes/cmsSpace/controllers/deleteSpace.js +25 -25
- package/server/routes/cmsSpace/controllers/getSpaces.js +27 -27
- package/server/routes/cmsSpace/controllers/insertSpace.js +21 -21
- package/server/routes/cmsSpace/controllers/updateSpace.js +23 -23
- package/server/routes/cmsSpace/index.mjs +20 -20
- package/server/routes/contentType/controllers/addContentType.js +160 -160
- package/server/routes/contentType/controllers/contentTypeList.js +54 -54
- package/server/routes/contentType/controllers/delContentType.js +75 -75
- package/server/routes/contentType/controllers/editContentType.js +88 -88
- package/server/routes/contentType/controllers/getContentType.js +65 -65
- package/server/routes/contentType/index.mjs +35 -35
- package/server/routes/contentType/utils/updateContents.js +44 -44
- package/server/routes/contentType/utils/updateCustomContentTable.js +53 -53
- package/server/routes/feedback/controllers/email.list.js +24 -24
- package/server/routes/feedback/controllers/feedback.js +48 -48
- package/server/routes/feedback/controllers/feedback.list.js +37 -37
- package/server/routes/feedback/controllers/news.subscriptions.js +44 -44
- package/server/routes/feedback/index.mjs +71 -71
- package/server/routes/logs/controllers/export.user.logs.js +77 -77
- package/server/routes/logs/controllers/user.logs.js +44 -44
- package/server/routes/logs/index.mjs +9 -9
- package/server/routes/menu/controllers/addMenu.js +37 -37
- package/server/routes/menu/controllers/delMenu.js +31 -31
- package/server/routes/menu/controllers/editMenu.js +41 -41
- package/server/routes/menu/controllers/getMenu.js +24 -24
- package/server/routes/menu/functions/getMenu.js +50 -50
- package/server/routes/menu/index.mjs +13 -13
- package/server/routes/migration/controllers/collectionToCustom.js +137 -137
- package/server/routes/migration/index.mjs +8 -8
- package/server/routes/root.mjs +8 -8
- package/server/routes/tags/controllers/add.tags.js +24 -24
- package/server/routes/tags/controllers/del.tags.js +19 -19
- package/server/routes/tags/controllers/edit.tags.js +25 -25
- package/server/routes/tags/controllers/get.tags.js +15 -15
- package/server/routes/tags/index.mjs +14 -14
- package/server/templates/cls/cms.category_type.json +9 -9
- package/server/templates/cls/cms.content_review_status.json +9 -9
- package/server/templates/cls/cms.content_status.json +9 -9
- package/server/templates/cls/cms.content_type.json +9 -9
- package/server/templates/cls/cms.lang.json +9 -9
- package/server/templates/page/login.html +126 -126
- package/server/templates/select/core.user_mentioned.sql +1 -1
- package/utils.d.ts +52 -52
- package/utils.js +8 -8
- package/dist/CollectionsBreadcrumb.vue_vue_type_script_setup_true_lang-umRzB5mY.js +0 -53
- package/dist/MonacoEditor.vue_vue_type_script_setup_true_lang-B1DrxmQX.js +0 -84
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { openBlock as
|
|
1
|
+
import { openBlock as a, createElementBlock as d, createStaticVNode as D, defineComponent as E, ref as b, normalizeClass as z, createTextVNode as M, toDisplayString as h, createCommentVNode as _, createBlock as C, unref as p, withModifiers as f, createVNode as v, createElementVNode as m, withDirectives as $, withKeys as w, vModelText as I, watch as N, resolveComponent as T, withCtx as U, nextTick as V } from "vue";
|
|
2
2
|
import { d as A } from "./vuedraggable-CoAPPFYd.js";
|
|
3
3
|
import { _ as L } from "./_plugin-vue_export-helper-CHgC5LLL.js";
|
|
4
4
|
import { Pencil as S, Trash2 as j, Check as K, X as O } from "lucide-vue-next";
|
|
@@ -15,8 +15,8 @@ const q = {}, F = {
|
|
|
15
15
|
"stroke-linecap": "round",
|
|
16
16
|
"stroke-linejoin": "round"
|
|
17
17
|
};
|
|
18
|
-
function G(
|
|
19
|
-
return
|
|
18
|
+
function G(u, o) {
|
|
19
|
+
return a(), d("svg", F, [...o[0] || (o[0] = [
|
|
20
20
|
D('<circle cx="9" cy="12" r="1"></circle><circle cx="9" cy="5" r="1"></circle><circle cx="9" cy="19" r="1"></circle><circle cx="15" cy="12" r="1"></circle><circle cx="15" cy="5" r="1"></circle><circle cx="15" cy="19" r="1"></circle>', 6)
|
|
21
21
|
])]);
|
|
22
22
|
}
|
|
@@ -36,21 +36,21 @@ const H = /* @__PURE__ */ L(q, [["render", G]]), J = {
|
|
|
36
36
|
value: {}
|
|
37
37
|
},
|
|
38
38
|
emits: ["delete", "update:value"],
|
|
39
|
-
setup(
|
|
40
|
-
const i =
|
|
41
|
-
typeof i.value == "string" && (e.value = i.value,
|
|
39
|
+
setup(u, { emit: o }) {
|
|
40
|
+
const i = u, g = o, r = b(!1), e = b(""), k = () => {
|
|
41
|
+
typeof i.value == "string" && (e.value = i.value, r.value = !0);
|
|
42
42
|
}, c = () => {
|
|
43
|
-
typeof i.value == "string" && (
|
|
43
|
+
typeof i.value == "string" && (g("update:value", e.value), r.value = !1);
|
|
44
44
|
}, x = () => {
|
|
45
|
-
|
|
45
|
+
r.value = !1, e.value = "";
|
|
46
46
|
};
|
|
47
|
-
return (
|
|
48
|
-
class: z([{ "space-y-1": typeof
|
|
47
|
+
return (s, t) => (a(), d("div", {
|
|
48
|
+
class: z([{ "space-y-1": typeof s.value != "string" }, "dark:bg-transparent"])
|
|
49
49
|
}, [
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
$(
|
|
53
|
-
"onUpdate:modelValue": t[1] || (t[1] = (
|
|
50
|
+
r.value ? (a(), d("div", R, [
|
|
51
|
+
m("span", W, h(s.title) + ":", 1),
|
|
52
|
+
$(m("input", {
|
|
53
|
+
"onUpdate:modelValue": t[1] || (t[1] = (l) => e.value = l),
|
|
54
54
|
onKeyup: [
|
|
55
55
|
w(c, ["enter"]),
|
|
56
56
|
w(x, ["esc"])
|
|
@@ -62,33 +62,33 @@ const H = /* @__PURE__ */ L(q, [["render", G]]), J = {
|
|
|
62
62
|
}, null, 544), [
|
|
63
63
|
[I, e.value]
|
|
64
64
|
]),
|
|
65
|
-
|
|
66
|
-
onClick:
|
|
65
|
+
m("button", {
|
|
66
|
+
onClick: f(c, ["stop"]),
|
|
67
67
|
class: "shrink-0 p-1 text-green-600 dark:text-green-400 hover:bg-green-50 dark:hover:bg-green-900/20 rounded",
|
|
68
68
|
title: "Save"
|
|
69
69
|
}, [
|
|
70
|
-
p(
|
|
70
|
+
v(p(K), { class: "size-4" })
|
|
71
71
|
]),
|
|
72
|
-
|
|
73
|
-
onClick:
|
|
72
|
+
m("button", {
|
|
73
|
+
onClick: f(x, ["stop"]),
|
|
74
74
|
class: "shrink-0 p-1 text-red-600 dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-900/20 rounded",
|
|
75
75
|
title: "Cancel"
|
|
76
76
|
}, [
|
|
77
|
-
p(
|
|
77
|
+
v(p(O), { class: "size-4" })
|
|
78
78
|
])
|
|
79
|
-
])) : (
|
|
80
|
-
M(
|
|
81
|
-
typeof
|
|
82
|
-
typeof
|
|
79
|
+
])) : (a(), d("div", J, [
|
|
80
|
+
M(h(s.title) + " ", 1),
|
|
81
|
+
typeof s.value == "string" ? (a(), d("span", Q, h(s.value), 1)) : _("", !0),
|
|
82
|
+
typeof s.value == "string" ? (a(), C(p(S), {
|
|
83
83
|
key: 1,
|
|
84
84
|
class: "shrink-0 size-4 ml-auto text-gray-500 dark:text-neutral-500 cursor-pointer hover:text-blue-600 dark:hover:text-blue-400",
|
|
85
|
-
onClick:
|
|
86
|
-
})) :
|
|
87
|
-
p(
|
|
85
|
+
onClick: f(k, ["stop"])
|
|
86
|
+
})) : _("", !0),
|
|
87
|
+
v(p(j), {
|
|
88
88
|
class: "shrink-0 size-4 text-gray-500 dark:text-neutral-500 cursor-pointer hover:text-red-600 dark:hover:text-red-400",
|
|
89
|
-
onClick: t[0] || (t[0] =
|
|
89
|
+
onClick: t[0] || (t[0] = f((l) => g("delete"), ["stop"]))
|
|
90
90
|
}),
|
|
91
|
-
|
|
91
|
+
v(H, { class: "shrink-0 size-4 cursor-pointer text-gray-500 dark:text-neutral-500" })
|
|
92
92
|
]))
|
|
93
93
|
], 2));
|
|
94
94
|
}
|
|
@@ -105,61 +105,61 @@ const H = /* @__PURE__ */ L(q, [["render", G]]), J = {
|
|
|
105
105
|
}
|
|
106
106
|
},
|
|
107
107
|
emits: ["update:list", "delete:item"],
|
|
108
|
-
setup(
|
|
109
|
-
const { t: i } = X(),
|
|
108
|
+
setup(u, { emit: o }) {
|
|
109
|
+
const { t: i } = X(), g = u, r = o, e = b([]);
|
|
110
110
|
N(
|
|
111
|
-
() =>
|
|
111
|
+
() => g.list,
|
|
112
112
|
(t) => {
|
|
113
113
|
e.value = t ? [...t] : [];
|
|
114
114
|
},
|
|
115
115
|
{ immediate: !0, deep: !0 }
|
|
116
116
|
);
|
|
117
|
-
const
|
|
118
|
-
|
|
117
|
+
const k = () => {
|
|
118
|
+
r("update:list", e.value);
|
|
119
119
|
}, c = (t) => {
|
|
120
120
|
P({
|
|
121
121
|
title: i("cms.builder.deleteTitle"),
|
|
122
122
|
message: i("cms.builder.deleteObject"),
|
|
123
123
|
type: "error",
|
|
124
124
|
onConfirm: () => {
|
|
125
|
-
|
|
125
|
+
r("update:list", e.value), r("delete:item", t);
|
|
126
126
|
}
|
|
127
127
|
});
|
|
128
|
-
}, x = (t,
|
|
129
|
-
t.value =
|
|
130
|
-
e.value = [...e.value],
|
|
128
|
+
}, x = (t, l) => {
|
|
129
|
+
t.value = l, V(() => {
|
|
130
|
+
e.value = [...e.value], r("update:list", e.value);
|
|
131
131
|
});
|
|
132
|
-
},
|
|
133
|
-
t.children =
|
|
134
|
-
e.value = [...e.value],
|
|
132
|
+
}, s = (t, l) => {
|
|
133
|
+
t.children = l, V(() => {
|
|
134
|
+
e.value = [...e.value], r("update:list", e.value);
|
|
135
135
|
});
|
|
136
136
|
};
|
|
137
|
-
return (t,
|
|
137
|
+
return (t, l) => {
|
|
138
138
|
const B = T("MenuList", !0);
|
|
139
|
-
return
|
|
139
|
+
return a(), C(p(A), {
|
|
140
140
|
tag: "ul",
|
|
141
141
|
list: e.value,
|
|
142
142
|
group: { name: "nested", pull: !0, put: !0 },
|
|
143
143
|
"item-key": "id",
|
|
144
|
-
class: z(["nested-sortable space-y-1", { "ps-5 dark:bg-transparent":
|
|
145
|
-
onChange:
|
|
146
|
-
onEnd:
|
|
144
|
+
class: z(["nested-sortable space-y-1", { "ps-5 dark:bg-transparent": u.inside }]),
|
|
145
|
+
onChange: k,
|
|
146
|
+
onEnd: k
|
|
147
147
|
}, {
|
|
148
148
|
item: U(({ element: n }) => [
|
|
149
|
-
|
|
150
|
-
|
|
149
|
+
m("div", Z, [
|
|
150
|
+
v(Y, {
|
|
151
151
|
title: n.title,
|
|
152
152
|
value: n.value,
|
|
153
|
-
onDelete: (
|
|
154
|
-
"onUpdate:value": (
|
|
153
|
+
onDelete: (y) => c(n),
|
|
154
|
+
"onUpdate:value": (y) => x(n, y)
|
|
155
155
|
}, null, 8, ["title", "value", "onDelete", "onUpdate:value"]),
|
|
156
|
-
Array.isArray(n.children) ? (
|
|
156
|
+
Array.isArray(n.children) ? (a(), C(B, {
|
|
157
157
|
key: 0,
|
|
158
158
|
list: n.children,
|
|
159
159
|
inside: !0,
|
|
160
|
-
"onUpdate:list": (
|
|
160
|
+
"onUpdate:list": (y) => s(n, y),
|
|
161
161
|
"onDelete:item": c
|
|
162
|
-
}, null, 8, ["list", "onUpdate:list"])) :
|
|
162
|
+
}, null, 8, ["list", "onUpdate:list"])) : _("", !0)
|
|
163
163
|
])
|
|
164
164
|
]),
|
|
165
165
|
_: 1
|
|
@@ -11,7 +11,7 @@ const H = { class: "space-y-6 max-w-7xl mx-auto" }, I = { class: "flex flex-col
|
|
|
11
11
|
__name: "MenuPage",
|
|
12
12
|
setup(J) {
|
|
13
13
|
const g = V(
|
|
14
|
-
() => import("./UniversalTable-
|
|
14
|
+
() => import("./UniversalTable-GBd_pStq.js")
|
|
15
15
|
), { t: o, locale: v } = M(), y = q(), x = a(""), d = a([]), i = a([]), b = a(""), h = a([
|
|
16
16
|
{ name: "name", title: o("cms.menu.form.name"), type: "text" },
|
|
17
17
|
{ name: "description", title: o("cms.menu.form.description"), type: "text" },
|
|
@@ -3,7 +3,7 @@ import { useRoute as d } from "vue-router";
|
|
|
3
3
|
const C = /* @__PURE__ */ m({
|
|
4
4
|
__name: "MenuWrapper",
|
|
5
5
|
setup(f) {
|
|
6
|
-
const o = n(() => import("./MenuPage-
|
|
6
|
+
const o = n(() => import("./MenuPage-3W6jZ15H.js")), r = n(() => import("./MenuAddPage-QTnwCoGh.js")), p = n(() => import("./MenuItemPage-B7Y9KFyb.js")), e = d(), a = t(() => e.params.id ? e.params.id === "create" ? r : p : o), c = t(() => String(e.params.id ?? "index"));
|
|
7
7
|
return (_, l) => (u(), s(i(a.value), { key: c.value }));
|
|
8
8
|
}
|
|
9
9
|
});
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { defineComponent as s, mergeModels as m, useModel as c, ref as f, onMounted as h, watch as d, onBeforeUnmount as p, openBlock as g, createElementBlock as v, normalizeStyle as w } from "vue";
|
|
2
|
+
async function M() {
|
|
3
|
+
if (window.monaco)
|
|
4
|
+
return window.monaco;
|
|
5
|
+
const i = "https://cdn.jsdelivr.net/npm/monaco-editor@0.45.0/min";
|
|
6
|
+
return window.require || (window.require = { paths: { vs: `${i}/vs` } }, await new Promise((t, l) => {
|
|
7
|
+
const n = document.createElement("script");
|
|
8
|
+
n.src = `${i}/vs/loader.min.js`, n.onload = () => t(), n.onerror = l, document.head.appendChild(n);
|
|
9
|
+
})), new Promise((t) => {
|
|
10
|
+
window.require(["vs/editor/editor.main"], () => t(window.monaco));
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
const C = /* @__PURE__ */ s({
|
|
14
|
+
__name: "MonacoEditor",
|
|
15
|
+
props: /* @__PURE__ */ m({
|
|
16
|
+
language: { default: "javascript" },
|
|
17
|
+
theme: { default: "vs-dark" },
|
|
18
|
+
width: { default: "100%" },
|
|
19
|
+
height: { default: "100%" },
|
|
20
|
+
options: { default: () => ({
|
|
21
|
+
minimap: { enabled: !1 }
|
|
22
|
+
}) }
|
|
23
|
+
}, {
|
|
24
|
+
modelValue: {
|
|
25
|
+
required: !0
|
|
26
|
+
},
|
|
27
|
+
modelModifiers: {}
|
|
28
|
+
}),
|
|
29
|
+
emits: ["update:modelValue"],
|
|
30
|
+
setup(i) {
|
|
31
|
+
const t = i, l = c(i, "modelValue"), n = f(null);
|
|
32
|
+
let o = null, r = null;
|
|
33
|
+
return h(async () => {
|
|
34
|
+
var e;
|
|
35
|
+
if (n.value)
|
|
36
|
+
try {
|
|
37
|
+
r = await M();
|
|
38
|
+
const a = ((e = l.value) == null ? void 0 : e.replace(/\\n/g, `
|
|
39
|
+
`)) || "";
|
|
40
|
+
o = r.editor.create(n.value, {
|
|
41
|
+
value: a,
|
|
42
|
+
language: t.language,
|
|
43
|
+
theme: t.theme,
|
|
44
|
+
automaticLayout: !0,
|
|
45
|
+
...t.options
|
|
46
|
+
}), o.onDidChangeModelContent(() => {
|
|
47
|
+
const u = (o == null ? void 0 : o.getValue()) || "";
|
|
48
|
+
l.value = u;
|
|
49
|
+
});
|
|
50
|
+
} catch (a) {
|
|
51
|
+
console.error("Failed to load Monaco Editor:", a);
|
|
52
|
+
}
|
|
53
|
+
}), d(
|
|
54
|
+
() => l.value,
|
|
55
|
+
(e) => {
|
|
56
|
+
if (o) {
|
|
57
|
+
const a = (e == null ? void 0 : e.replace(/\\n/g, `
|
|
58
|
+
`)) || "";
|
|
59
|
+
a !== o.getValue() && o.setValue(a);
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
{ immediate: !0 }
|
|
63
|
+
), d(
|
|
64
|
+
() => t.language,
|
|
65
|
+
(e) => {
|
|
66
|
+
o && e && r && r.editor.setModelLanguage(o.getModel(), e);
|
|
67
|
+
}
|
|
68
|
+
), d(
|
|
69
|
+
() => t.theme,
|
|
70
|
+
(e) => {
|
|
71
|
+
o && e && r && r.editor.setTheme(e);
|
|
72
|
+
}
|
|
73
|
+
), p(() => {
|
|
74
|
+
o && (o.dispose(), o = null);
|
|
75
|
+
}), (e, a) => (g(), v("div", {
|
|
76
|
+
ref_key: "editorContainer",
|
|
77
|
+
ref: n,
|
|
78
|
+
style: w({ width: e.width, height: e.height })
|
|
79
|
+
}, null, 4));
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
export {
|
|
83
|
+
C as _
|
|
84
|
+
};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { defineComponent as j, ref as L, computed as $, openBlock as s, createElementBlock as
|
|
1
|
+
import { defineComponent as j, ref as L, computed as $, openBlock as s, createElementBlock as r, createElementVNode as a, Fragment as y, renderList as w, normalizeClass as h, createBlock as g, resolveDynamicComponent as C, createCommentVNode as A, createTextVNode as v, toDisplayString as l, createVNode as M, unref as f, withModifiers as D, renderSlot as B } from "vue";
|
|
2
2
|
import { useI18n as q } from "vue-i18n";
|
|
3
3
|
import { Eye as U, File as P, Layers as z, Pencil as H, Trash2 as W, XCircle as X, Edit as G, CheckCircle as J } from "lucide-vue-next";
|
|
4
4
|
const K = { class: "text-card-foreground border-0 bg-white/80 dark:bg-slate-800/80 backdrop-blur-sm" }, O = { class: "p-0" }, Q = { class: "table-scroll overflow-x-auto" }, Y = { class: "relative w-full overflow-auto max-h-[calc(100vh-270px)]" }, Z = { class: "w-full caption-bottom text-sm" }, I = { class: "border-b border-slate-200 dark:border-slate-700 bg-slate-50/50 dark:bg-slate-700/50 hover:bg-slate-50/80 dark:hover:bg-slate-700/80 transition-colors" }, ee = { class: "flex items-center gap-2" }, te = { class: "h-10 text-center px-4 font-semibold text-slate-700 dark:text-slate-300 max-w-32" }, se = ["onClick"], ne = {
|
|
5
5
|
key: 1,
|
|
6
6
|
class: "whitespace-nowrap"
|
|
7
|
-
},
|
|
7
|
+
}, re = {
|
|
8
8
|
key: 2,
|
|
9
9
|
class: "whitespace-nowrap"
|
|
10
|
-
},
|
|
10
|
+
}, ae = {
|
|
11
11
|
key: 3,
|
|
12
12
|
class: "flex items-center"
|
|
13
13
|
}, ie = {
|
|
@@ -22,10 +22,10 @@ const K = { class: "text-card-foreground border-0 bg-white/80 dark:bg-slate-800/
|
|
|
22
22
|
}, le = {
|
|
23
23
|
key: 8,
|
|
24
24
|
class: "flex items-center gap-3"
|
|
25
|
-
},
|
|
25
|
+
}, me = {
|
|
26
26
|
key: 11,
|
|
27
27
|
class: "flex items-center gap-3"
|
|
28
|
-
},
|
|
28
|
+
}, ce = { class: "line-clamp-2" }, ue = { class: "flex justify-end py-2 px-4 align-middle max-w-40" }, be = { class: "flex items-center justify-center gap-1" }, he = ["onClick"], pe = ["onClick"], ye = /* @__PURE__ */ j({
|
|
29
29
|
__name: "UniversalTable",
|
|
30
30
|
props: {
|
|
31
31
|
rows: {},
|
|
@@ -39,16 +39,16 @@ const K = { class: "text-card-foreground border-0 bg-white/80 dark:bg-slate-800/
|
|
|
39
39
|
customRender: {}
|
|
40
40
|
},
|
|
41
41
|
emits: ["edit", "view", "delete", "more"],
|
|
42
|
-
setup(
|
|
42
|
+
setup(N, { emit: E }) {
|
|
43
43
|
const { t: o } = q();
|
|
44
44
|
L(null);
|
|
45
|
-
const d =
|
|
46
|
-
if (!
|
|
45
|
+
const d = N, x = E, T = $(() => !d.query || !d.filterFn ? d.rows : d.rows.filter((n) => d.filterFn(n, d.query))), V = (n) => {
|
|
46
|
+
if (!n)
|
|
47
47
|
return "";
|
|
48
|
-
const i = new Date(
|
|
49
|
-
return isNaN(i.getTime()) ? "" :
|
|
50
|
-
},
|
|
51
|
-
switch (
|
|
48
|
+
const i = new Date(n);
|
|
49
|
+
return isNaN(i.getTime()) ? "" : n.includes("T") || n.includes(" ") || n.includes(":") ? i.toLocaleString("uk-UA", { dateStyle: "medium", timeStyle: "medium" }) : i.toLocaleDateString("uk-UA", { dateStyle: "medium" });
|
|
50
|
+
}, k = (n) => {
|
|
51
|
+
switch (n) {
|
|
52
52
|
case "published":
|
|
53
53
|
return {
|
|
54
54
|
icon: J,
|
|
@@ -70,130 +70,130 @@ const K = { class: "text-card-foreground border-0 bg-white/80 dark:bg-slate-800/
|
|
|
70
70
|
default:
|
|
71
71
|
return null;
|
|
72
72
|
}
|
|
73
|
-
},
|
|
74
|
-
switch (
|
|
73
|
+
}, _ = (n, i) => {
|
|
74
|
+
switch (n) {
|
|
75
75
|
case "edit":
|
|
76
|
-
|
|
76
|
+
x("edit", i), d.onEdit && d.onEdit(i);
|
|
77
77
|
break;
|
|
78
78
|
case "view":
|
|
79
|
-
|
|
79
|
+
x("view", i), d.onView && d.onView(i);
|
|
80
80
|
break;
|
|
81
81
|
case "delete":
|
|
82
|
-
|
|
82
|
+
x("delete", i);
|
|
83
83
|
break;
|
|
84
84
|
case "more":
|
|
85
|
-
|
|
85
|
+
x("more", i), d.onMore && d.onMore(i);
|
|
86
86
|
break;
|
|
87
87
|
}
|
|
88
|
-
}, R = (
|
|
89
|
-
|
|
90
|
-
}, S = (
|
|
91
|
-
const i = /* @__PURE__ */ new Date(), e = new Date(
|
|
92
|
-
return
|
|
88
|
+
}, R = (n) => {
|
|
89
|
+
_("edit", n);
|
|
90
|
+
}, S = (n) => {
|
|
91
|
+
const i = /* @__PURE__ */ new Date(), e = new Date(n), t = i - e, p = Math.floor(t / 1e3), m = Math.floor(p / 60), c = Math.floor(m / 60), u = Number(Math.floor(c / 24)), b = Number(Math.floor(u / 7));
|
|
92
|
+
return b >= 2 ? o("cms.table.time.weeksAgo", { count: b }) : b === 1 ? o("cms.table.time.weekAgo") : u >= 2 ? o("cms.table.time.daysAgo", { count: u }) : u === 1 ? o("cms.table.time.dayAgo") : c >= 2 ? o("cms.table.time.hoursAgo", { count: c }) : c === 1 ? o("cms.table.time.hourAgo") : m >= 2 ? o("cms.table.time.minutesAgo", { count: m }) : o(m === 1 ? "cms.table.time.minuteAgo" : "cms.table.time.justNow");
|
|
93
93
|
};
|
|
94
|
-
return (
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
(s(!0),
|
|
94
|
+
return (n, i) => (s(), r("div", K, [
|
|
95
|
+
a("div", O, [
|
|
96
|
+
a("div", Q, [
|
|
97
|
+
a("div", Y, [
|
|
98
|
+
a("table", Z, [
|
|
99
|
+
a("thead", null, [
|
|
100
|
+
a("tr", I, [
|
|
101
|
+
(s(!0), r(y, null, w(n.columns, (e) => (s(), r("th", {
|
|
102
102
|
key: e.name,
|
|
103
|
-
class:
|
|
103
|
+
class: h(["h-10 px-4 text-left align-middle font-semibold text-slate-700 dark:text-slate-300 max-w-80", {
|
|
104
104
|
"min-w-[200px]": ["title", "name"].includes(e.name),
|
|
105
105
|
"min-w-[150px]": e.name === "slug",
|
|
106
106
|
"min-w-[250px]": e.name === "description"
|
|
107
107
|
}])
|
|
108
108
|
}, [
|
|
109
|
-
|
|
110
|
-
e.icon ? (s(),
|
|
109
|
+
a("div", ee, [
|
|
110
|
+
e.icon ? (s(), g(C(e.icon), {
|
|
111
111
|
key: 0,
|
|
112
112
|
class: "w-5 h-5"
|
|
113
|
-
})) :
|
|
114
|
-
|
|
113
|
+
})) : A("", !0),
|
|
114
|
+
v(" " + l(e.label || e.title || e.ua || e.name), 1)
|
|
115
115
|
])
|
|
116
116
|
], 2))), 128)),
|
|
117
|
-
|
|
117
|
+
a("th", te, l(n.$t("cms.table.actions")), 1)
|
|
118
118
|
])
|
|
119
119
|
]),
|
|
120
|
-
|
|
121
|
-
(s(!0),
|
|
120
|
+
a("tbody", null, [
|
|
121
|
+
(s(!0), r(y, null, w(T.value, (e) => (s(), r("tr", {
|
|
122
122
|
key: e.id || e._id || e.name,
|
|
123
123
|
class: "transition-all duration-200 hover:bg-slate-100 dark:hover:bg-slate-700/60"
|
|
124
124
|
}, [
|
|
125
|
-
(s(!0),
|
|
126
|
-
var
|
|
127
|
-
return s(),
|
|
125
|
+
(s(!0), r(y, null, w(n.columns, (t, p) => {
|
|
126
|
+
var m, c, u, b, F;
|
|
127
|
+
return s(), r("td", {
|
|
128
128
|
key: t.name,
|
|
129
|
-
class:
|
|
130
|
-
"font-medium text-slate-800 dark:text-white cursor-pointer":
|
|
131
|
-
"text-slate-600 dark:text-slate-400 font-mono text-sm":
|
|
129
|
+
class: h(["py-2 px-4 align-middle max-w-80", {
|
|
130
|
+
"font-medium text-slate-800 dark:text-white cursor-pointer": p === 0,
|
|
131
|
+
"text-slate-600 dark:text-slate-400 font-mono text-sm": p !== 0
|
|
132
132
|
}]),
|
|
133
|
-
onClick: (
|
|
133
|
+
onClick: (ge) => p === 0 ? R(e) : void 0
|
|
134
134
|
}, [
|
|
135
|
-
|
|
135
|
+
n.customRender && n.customRender[t.name] ? (s(), g(C(n.customRender[t.name](e[t.name], e)), { key: 0 })) : A("", !0),
|
|
136
136
|
[
|
|
137
137
|
"published_at",
|
|
138
138
|
"publish_at",
|
|
139
139
|
"created_at",
|
|
140
140
|
"date"
|
|
141
|
-
].includes(t.name) && e[t.name] ? (s(),
|
|
141
|
+
].includes(t.name) && e[t.name] ? (s(), r("span", ne, l(V(e[t.name])), 1)) : [
|
|
142
142
|
"updated_at",
|
|
143
143
|
"lastModified",
|
|
144
144
|
"last_edit"
|
|
145
|
-
].includes(t.name) ? (s(),
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
])) : ["entries", "fields"].includes(t.name) ? (s(),
|
|
149
|
-
|
|
150
|
-
class:
|
|
145
|
+
].includes(t.name) ? (s(), r("span", re, l(S(e[t.name]) || "--"), 1)) : t.name === "views" ? (s(), r("div", ae, [
|
|
146
|
+
M(f(U), { class: "w-4 h-4 mr-1" }),
|
|
147
|
+
v(" " + l(((c = (m = e[t.name]) == null ? void 0 : m.toLocaleString) == null ? void 0 : c.call(m)) ?? e[t.name]), 1)
|
|
148
|
+
])) : ["entries", "fields"].includes(t.name) ? (s(), r("div", ie, l(e[t.name] || "-"), 1)) : t.name === "type" ? (s(), r("div", oe, [
|
|
149
|
+
a("div", {
|
|
150
|
+
class: h(["whitespace-nowrap inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors border-transparent hover:bg-secondary/80", e[t.name] === "pages" ? "bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-300" : "bg-purple-100 text-purple-800 dark:bg-purple-900/30 dark:text-purple-300"])
|
|
151
151
|
}, l(e[t.name] || "-"), 3)
|
|
152
|
-
])) : t.name === "name" ? (s(),
|
|
153
|
-
e.type === "single" ? (s(),
|
|
152
|
+
])) : t.name === "name" ? (s(), r("div", de, [
|
|
153
|
+
e.type === "single" ? (s(), g(f(P), {
|
|
154
154
|
key: 0,
|
|
155
155
|
class: "shrink-0 lucide lucide-page w-5 h-5 text-blue-600"
|
|
156
|
-
})) : (s(),
|
|
156
|
+
})) : (s(), g(f(z), {
|
|
157
157
|
key: 1,
|
|
158
158
|
class: "shrink-0 lucide lucide-layers w-5 h-5 text-blue-600"
|
|
159
159
|
})),
|
|
160
|
-
|
|
161
|
-
])) : t.name === "status" ? (s(),
|
|
162
|
-
|
|
160
|
+
v(" " + l(e[t.name]), 1)
|
|
161
|
+
])) : t.name === "status" ? (s(), r(y, { key: 7 }, [
|
|
162
|
+
k(e[t.name]) ? (s(), r("div", {
|
|
163
163
|
key: 0,
|
|
164
|
-
class:
|
|
164
|
+
class: h(["whitespace-nowrap rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors hover:bg-secondary/80 flex items-center w-fit bg-green-100 text-green-800 border-green-200 dark:bg-green-900/30 dark:text-green-300 dark:border-green-700", (u = k(e[t.name])) == null ? void 0 : u.classes])
|
|
165
165
|
}, [
|
|
166
|
-
(s(),
|
|
167
|
-
|
|
168
|
-
], 2)) :
|
|
169
|
-
], 64)) : t.name === "slug" ? (s(),
|
|
166
|
+
(s(), g(C((b = k(e[t.name])) == null ? void 0 : b.icon), { class: "w-3 h-3 mr-1" })),
|
|
167
|
+
v(" " + l((F = k(e[t.name])) == null ? void 0 : F.text), 1)
|
|
168
|
+
], 2)) : A("", !0)
|
|
169
|
+
], 64)) : t.name === "slug" ? (s(), r("div", le, l(e[t.name] ? "/" + e[t.name] : "-"), 1)) : t.name === "color" ? (s(), r("span", {
|
|
170
170
|
key: 9,
|
|
171
|
-
class:
|
|
172
|
-
}, null, 2)) : t.name === "enabled" ? (s(),
|
|
171
|
+
class: h(["w-4 h-4 rounded-full block ml-2", "bg-[" + e[t.name] + "]"])
|
|
172
|
+
}, null, 2)) : t.name === "enabled" ? (s(), r("span", {
|
|
173
173
|
key: 10,
|
|
174
|
-
class:
|
|
175
|
-
}, l(e[t.name] ? "Доступ" : "Заборонено"), 3)) : (s(),
|
|
176
|
-
|
|
174
|
+
class: h(["whitespace-nowrap rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors hover:bg-secondary/80 flex items-center w-fit", e[t.name] ? "bg-green-100 text-green-800 border-green-200" : "bg-red-100 text-red-800 border-red-200"])
|
|
175
|
+
}, l(e[t.name] ? "Доступ" : "Заборонено"), 3)) : (s(), r("div", me, [
|
|
176
|
+
a("p", ce, l(e[t.name] || "-"), 1)
|
|
177
177
|
]))
|
|
178
178
|
], 10, se);
|
|
179
179
|
}), 128)),
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
onClick:
|
|
180
|
+
a("td", ue, [
|
|
181
|
+
a("div", be, [
|
|
182
|
+
a("button", {
|
|
183
|
+
onClick: D((t) => _("edit", e), ["stop"]),
|
|
184
184
|
class: "inline-flex items-center justify-center whitespace-nowrap font-medium border rounded-md text-xs h-8 w-8 p-0 border-slate-300 bg-white transition-all duration-200 shadow-sm dark:border-slate-600 dark:bg-slate-700 dark:hover:bg-slate-600 dark:hover:text-slate-200 hover:border-blue-300 hover:bg-blue-50 hover:text-blue-600",
|
|
185
185
|
title: "Edit"
|
|
186
186
|
}, [
|
|
187
|
-
|
|
187
|
+
M(f(H), { class: "text-slate-800 dark:text-slate-200 w-4 h-4 group-hover:text-green-600 dark:group-hover:text-blue-50" })
|
|
188
188
|
], 8, he),
|
|
189
|
-
|
|
190
|
-
onClick:
|
|
189
|
+
a("button", {
|
|
190
|
+
onClick: D((t) => _("delete", e), ["stop"]),
|
|
191
191
|
class: "inline-flex items-center justify-center whitespace-nowrap font-medium border rounded-md text-xs h-8 w-8 p-0 border-slate-300 bg-white transition-all duration-200 shadow-sm dark:border-slate-600 dark:bg-slate-700 dark:hover:bg-slate-600 dark:hover:text-slate-200 hover:border-blue-300 hover:bg-blue-50 hover:text-blue-600",
|
|
192
192
|
title: "Preview"
|
|
193
193
|
}, [
|
|
194
|
-
|
|
195
|
-
], 8,
|
|
196
|
-
B(
|
|
194
|
+
M(f(W), { class: "w-4 h-4 text-slate-800 dark:text-slate-200 group-hover:text-red-600 dark:group-hover:text-blue-50" })
|
|
195
|
+
], 8, pe),
|
|
196
|
+
B(n.$slots, "actions", { row: e })
|
|
197
197
|
])
|
|
198
198
|
])
|
|
199
199
|
]))), 128))
|