@opengis/cms 0.0.56 → 0.0.58
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/AddNewItemInTree-05PSSEFi.js +76 -0
- package/dist/ArticlesPage-CFjE_cw_.js +298 -0
- package/dist/CollectionsBreadcrumb-BCxeRikP.js +4 -0
- package/dist/CollectionsBreadcrumb.vue_vue_type_script_setup_true_lang-umRzB5mY.js +53 -0
- package/dist/CollectionsPage-DHfPNql6.js +124 -0
- package/dist/{CreateForm-BMOBeP4G.js → CreateForm-5FvT45vH.js} +1 -1
- package/dist/Dashboard-C1eGscNd.js +358 -0
- package/dist/EditCollectionPage-DIr1tdtn.js +187 -0
- package/dist/{EmptyData-DaZt_nAm.js → EmptyData-DxPrSXhV.js} +1 -1
- package/dist/{MenuAddPage-Bf48Z-ah.js → MenuAddPage-D-p3gFgm.js} +40 -35
- package/dist/MenuBody-rN5j4YBu.js +125 -0
- package/dist/MenuItemPage-BoJw885D.js +1027 -0
- package/dist/MenuList-DFEBS0NB.js +172 -0
- package/dist/MenuPage-BCZB_S8j.js +107 -0
- package/dist/MenuWrapper-AZ_8s-zd.js +12 -0
- package/dist/MonacoEditor-Db-3Jc3E.js +4 -0
- package/dist/{UniversalTable.vue_vue_type_script_setup_true_lang-CJGTsd1V.js → UniversalTable-CzqPG-tY.js} +12 -12
- package/dist/{UniversalTablePagination.vue_vue_type_script_setup_true_lang-GYZd_gkA.js → UniversalTablePagination-4gL47A7I.js} +1 -1
- package/dist/VsFormTags-CMjiu9sY.js +114 -0
- package/dist/VsPreview-DwETkOpb.js +63 -0
- package/dist/contentForm-CtMhQTG0.js +489 -0
- package/dist/getField-CpwVE28P.js +179 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.html +29 -29
- package/dist/index.js +72 -71
- package/dist/style.css +1 -1
- package/dist/vs-builder-edit-D-q1o8tF.js +604 -0
- package/dist/vs-builder-monaco-B3Jj0V31.js +33 -0
- package/dist/vs-builder-preview-BH4VAM3a.js +44 -0
- package/dist/vs-form-custom-datatable-BDZo48w3.js +317 -0
- package/dist/vs-form-integer-BZ855R3g.js +61 -0
- package/dist/vs-form-media-select-NY27EaG1.js +837 -0
- package/dist/vs-form-reference-list-Dtv8fJJU.js +1536 -0
- package/dist/vs-form-reletion-link-BhzNQszm.js +34 -0
- package/dist/vs-form-tiptap-DDFQjRjY.js +4 -0
- package/dist/vs-form-tiptap.vue_vue_type_script_setup_true_lang-DGgsqXwg.js +11 -0
- package/dist/vs-richtext-md-C098v_6Q.js +4 -0
- package/dist/vs-richtext-md.vue_vue_type_script_setup_true_lang-Ct8uTV-J.js +14 -0
- package/input-types.json +9 -9
- package/locales/en.json +815 -814
- package/locales/uk.json +813 -812
- 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 +68 -68
- 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/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/translate.js +89 -89
- package/server/routes/cms/controllers/updateContent.js +266 -264
- 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 -183
- 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 -81
- package/server/routes/contentType/controllers/getContentType.js +65 -57
- 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/utils.d.ts +52 -52
- package/utils.js +8 -8
- package/dist/ArticlesPage-BcR1hbds.js +0 -286
- package/dist/BuilderPage-CK_osM89.js +0 -386
- package/dist/CollectionsBreadcrumb.vue_vue_type_script_setup_true_lang-CnOe9ORD.js +0 -45
- package/dist/CollectionsPage-JfmrHNR_.js +0 -110
- package/dist/EditCollectionPage-Cw3GQYRe.js +0 -809
- package/dist/MenuItemPage-CXn5HC8j.js +0 -1366
- package/dist/MenuPage-tJZtK46W.js +0 -106
- package/dist/contentForm-B6gHgGkz.js +0 -586
- package/dist/getField-Y5WXnRR0.js +0 -2948
|
@@ -1,286 +0,0 @@
|
|
|
1
|
-
import { defineComponent as te, ref as n, inject as ae, computed as I, onMounted as se, watch as D, nextTick as M, openBlock as i, createElementBlock as d, createVNode as _, createElementVNode as r, toDisplayString as h, unref as b, createTextVNode as le, createCommentVNode as f, createBlock as q } from "vue";
|
|
2
|
-
import { useRoute as ne, useRouter as oe } from "vue-router";
|
|
3
|
-
import { HelpCircle as ie, Plus as re, ChevronDown as ce, Calendar as R, User as ue, Globe as me, FileText as de } from "lucide-vue-next";
|
|
4
|
-
import { _ as pe } from "./UniversalTable.vue_vue_type_script_setup_true_lang-CJGTsd1V.js";
|
|
5
|
-
import { _ as fe } from "./UniversalTablePagination.vue_vue_type_script_setup_true_lang-GYZd_gkA.js";
|
|
6
|
-
import { VsInputCheckbox as ve } from "@opengis/form";
|
|
7
|
-
import he from "@opengis/filter";
|
|
8
|
-
import { confirm as S } from "@opengis/core";
|
|
9
|
-
import { useI18n as be } from "vue-i18n";
|
|
10
|
-
import { _ as ge } from "./EmptyData-DaZt_nAm.js";
|
|
11
|
-
import { _ as ye } from "./CollectionsBreadcrumb.vue_vue_type_script_setup_true_lang-CnOe9ORD.js";
|
|
12
|
-
const we = { class: "space-y-6 mx-auto max-w-[90%]" }, xe = { class: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between" }, _e = { class: "flex items-center gap-2" }, ke = { class: "text-3xl font-bold text-slate-800 dark:text-white mb-2" }, Ce = ["href", "title"], $e = { class: "flex items-center gap-2" }, Ae = {
|
|
13
|
-
key: 0,
|
|
14
|
-
class: "text-card-foreground shadow-lg border-0 bg-white/80 dark:bg-slate-800/80 backdrop-blur-sm"
|
|
15
|
-
}, Ee = {
|
|
16
|
-
key: 0,
|
|
17
|
-
class: "p-2 border-b border-gray-200 sm:px-4 sm:py-2 dark:border-gray-700"
|
|
18
|
-
}, je = { class: "flex flex-col gap-4 sm:flex-row" }, qe = { class: "relative flex items-center gap-2 ml-auto" }, Fe = {
|
|
19
|
-
key: 1,
|
|
20
|
-
class: "absolute top-full right-2/3 translate-x-1/2 min-w-[150%] p-4 z-10 bg-white border border-gray-300 rounded-md mt-2 dark:bg-slate-800 dark:border-slate-700 shadow-lg"
|
|
21
|
-
}, Ue = { class: "max-h-60 overflow-y-auto overflow-x-hidden" }, Te = { key: 1 }, Ge = /* @__PURE__ */ te({
|
|
22
|
-
__name: "ArticlesPage",
|
|
23
|
-
setup(Ve) {
|
|
24
|
-
const l = ne(), u = oe(), c = n(null), z = n(""), { t: k, locale: P } = be(), C = n([]), G = ae("cms.menu") || [], p = n(""), F = n(null), $ = n(1), g = n(!1), m = n(["title", "slug", "author", "publish_at", "published_at", "status"]), A = n([]), y = n([]), E = n([]), w = n({}), j = n(0), U = n(!1), N = () => {
|
|
25
|
-
var a;
|
|
26
|
-
let t = (a = c.value) == null ? void 0 : a.columns.filter((e) => {
|
|
27
|
-
var s;
|
|
28
|
-
return (s = m == null ? void 0 : m.value) == null ? void 0 : s.includes(e.name);
|
|
29
|
-
});
|
|
30
|
-
A.value = t.map((e) => {
|
|
31
|
-
switch (e.name) {
|
|
32
|
-
case "title":
|
|
33
|
-
return {
|
|
34
|
-
...e,
|
|
35
|
-
title: e.name ? e.name.charAt(0).toUpperCase() + e.name.slice(1) : "--",
|
|
36
|
-
icon: de
|
|
37
|
-
};
|
|
38
|
-
case "slug":
|
|
39
|
-
return {
|
|
40
|
-
...e,
|
|
41
|
-
title: e.name ? e.name.charAt(0).toUpperCase() + e.name.slice(1) : "-",
|
|
42
|
-
icon: me
|
|
43
|
-
};
|
|
44
|
-
case "author":
|
|
45
|
-
return {
|
|
46
|
-
...e,
|
|
47
|
-
title: e.name ? e.name.charAt(0).toUpperCase() + e.name.slice(1) : "-",
|
|
48
|
-
icon: ue
|
|
49
|
-
};
|
|
50
|
-
case "publish_at":
|
|
51
|
-
return {
|
|
52
|
-
...e,
|
|
53
|
-
title: e.name ? e.name.charAt(0).toUpperCase() + e.name.slice(1) : "-",
|
|
54
|
-
icon: R
|
|
55
|
-
};
|
|
56
|
-
case "published_at":
|
|
57
|
-
return {
|
|
58
|
-
...e,
|
|
59
|
-
title: e.name ? e.name.charAt(0).toUpperCase() + e.name.slice(1) : "-",
|
|
60
|
-
icon: R
|
|
61
|
-
};
|
|
62
|
-
default:
|
|
63
|
-
return {
|
|
64
|
-
...e,
|
|
65
|
-
title: e.name ? e.name.charAt(0).toUpperCase() + e.name.slice(1) : "-"
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
}), g.value = !1;
|
|
69
|
-
}, O = I(
|
|
70
|
-
() => {
|
|
71
|
-
var t, a, e, s;
|
|
72
|
-
return ((t = F.value) == null ? void 0 : t.title) || ((a = c.value) == null ? void 0 : a.title) || ((s = (e = G.value) == null ? void 0 : e.find((o) => o.id === l.params.id)) == null ? void 0 : s.title) || l.params.id;
|
|
73
|
-
}
|
|
74
|
-
), B = async () => {
|
|
75
|
-
try {
|
|
76
|
-
const t = await fetch("/api/cms-type?type=collection");
|
|
77
|
-
if (!t.ok)
|
|
78
|
-
return;
|
|
79
|
-
const e = ((await t.json()).rows || []).find((s) => s.id === l.params.id);
|
|
80
|
-
e && (F.value = e);
|
|
81
|
-
} catch (t) {
|
|
82
|
-
console.error("Error fetching collection meta:", t);
|
|
83
|
-
}
|
|
84
|
-
}, H = I(() => [
|
|
85
|
-
{
|
|
86
|
-
label: O.value || l.params.id,
|
|
87
|
-
route: `collections/${l.params.id}`
|
|
88
|
-
}
|
|
89
|
-
]), K = (t) => {
|
|
90
|
-
t === "collections" ? u.push("/collections") : u.push(`/${t}`);
|
|
91
|
-
}, L = () => {
|
|
92
|
-
u.push(`/collections/${l.params.id}/create`);
|
|
93
|
-
}, Q = () => {
|
|
94
|
-
u.push(`/collections/${l.params.id}/edit`);
|
|
95
|
-
}, J = async () => {
|
|
96
|
-
S({
|
|
97
|
-
title: k("cms.builder.deleteTitle"),
|
|
98
|
-
message: k("cms.builder.deleteObject"),
|
|
99
|
-
type: "error",
|
|
100
|
-
onConfirm: async () => {
|
|
101
|
-
try {
|
|
102
|
-
await fetch(`/api/cms-type/${l.params.id}`, { method: "DELETE" }), u.push("/collections");
|
|
103
|
-
} catch (t) {
|
|
104
|
-
console.error("Failed to delete collection:", t);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
}, W = async (t) => {
|
|
109
|
-
S({
|
|
110
|
-
title: k("cms.builder.deleteTitle"),
|
|
111
|
-
message: k("cms.builder.deleteObject"),
|
|
112
|
-
type: "error",
|
|
113
|
-
onConfirm: async () => {
|
|
114
|
-
await fetch(`/api/cms/${l.params.id}/${t.id}`, { method: "DELETE" }), x();
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
}, X = (t) => {
|
|
118
|
-
u.push(`/collections/${l.params.id}/${t.id}`);
|
|
119
|
-
}, x = async () => {
|
|
120
|
-
if (!U.value) {
|
|
121
|
-
U.value = !0;
|
|
122
|
-
try {
|
|
123
|
-
const a = await (await fetch(
|
|
124
|
-
`/api/cms/${l.params.id}?page=${$.value}&filter=${p.value}&limit=12`
|
|
125
|
-
)).json();
|
|
126
|
-
if (C.value = a.rows || [], c.value = a, !E.value.length) {
|
|
127
|
-
const e = (a.filters || []).map((s) => {
|
|
128
|
-
const { extra: o, title: V, ...v } = s;
|
|
129
|
-
return v;
|
|
130
|
-
});
|
|
131
|
-
E.value = e;
|
|
132
|
-
}
|
|
133
|
-
l.params.id === "pages" && m.value.push("type"), Y(), N();
|
|
134
|
-
} finally {
|
|
135
|
-
U.value = !1;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}, Y = () => {
|
|
139
|
-
var a;
|
|
140
|
-
if (!((a = c.value) != null && a.columns))
|
|
141
|
-
return;
|
|
142
|
-
const t = c.value.columns.map((e, s) => ({
|
|
143
|
-
text: e.label,
|
|
144
|
-
id: e.name
|
|
145
|
-
}));
|
|
146
|
-
y.value = [
|
|
147
|
-
...m.value.map((e) => t.find((s) => s.id === e)).filter(Boolean),
|
|
148
|
-
...t.filter((e) => !m.value.includes(e.id))
|
|
149
|
-
];
|
|
150
|
-
}, Z = (t, a) => {
|
|
151
|
-
if (!a)
|
|
152
|
-
return !0;
|
|
153
|
-
const e = a.toLowerCase();
|
|
154
|
-
return A.value.some((s) => {
|
|
155
|
-
const o = t[s.name];
|
|
156
|
-
return o && o.toString().toLowerCase().includes(e);
|
|
157
|
-
});
|
|
158
|
-
}, ee = (t) => {
|
|
159
|
-
const a = Object.entries(t == null ? void 0 : t.data).filter(([, s]) => s != null).map(([s, o]) => `${s}=${o}`).join("|");
|
|
160
|
-
p.value = a;
|
|
161
|
-
const e = { ...l.query };
|
|
162
|
-
a ? e.filter = a : delete e.filter, u.replace({ query: e });
|
|
163
|
-
}, T = () => {
|
|
164
|
-
if (l.query.filter) {
|
|
165
|
-
p.value = l.query.filter;
|
|
166
|
-
const t = l.query.filter.split("|"), a = {};
|
|
167
|
-
t.forEach((e) => {
|
|
168
|
-
const [s, o] = e.split("=");
|
|
169
|
-
s && o && (a[s] = o);
|
|
170
|
-
}), w.value = a;
|
|
171
|
-
} else
|
|
172
|
-
p.value = "", w.value = {}, j.value++;
|
|
173
|
-
};
|
|
174
|
-
return se(() => {
|
|
175
|
-
T(), B(), x();
|
|
176
|
-
}), D(() => l.params.id, () => {
|
|
177
|
-
w.value = {}, p.value = "", E.value = [], F.value = null;
|
|
178
|
-
const t = { ...l.query };
|
|
179
|
-
delete t.filter, u.replace({ query: t }), j.value++, T(), B(), x();
|
|
180
|
-
}), D(() => l.query, async () => {
|
|
181
|
-
T(), await M(), x();
|
|
182
|
-
}, { deep: !0 }), D($, async () => {
|
|
183
|
-
l.query.filter || (p.value = "", w.value = {}, j.value++), await M(), x();
|
|
184
|
-
}), (t, a) => {
|
|
185
|
-
var e, s, o, V;
|
|
186
|
-
return i(), d("div", we, [
|
|
187
|
-
_(ye, {
|
|
188
|
-
items: H.value,
|
|
189
|
-
onNavigate: K
|
|
190
|
-
}, null, 8, ["items"]),
|
|
191
|
-
r("div", xe, [
|
|
192
|
-
r("div", _e, [
|
|
193
|
-
r("h1", ke, h(O.value), 1),
|
|
194
|
-
r("a", {
|
|
195
|
-
href: `https://cms.opengis.info/${b(P)}/guides/content/`,
|
|
196
|
-
target: "_blank",
|
|
197
|
-
title: t.$t("cms.guide.content")
|
|
198
|
-
}, [
|
|
199
|
-
_(b(ie), { class: "w-5 h-5" })
|
|
200
|
-
], 8, Ce)
|
|
201
|
-
]),
|
|
202
|
-
r("div", $e, [
|
|
203
|
-
C.value.length ? (i(), d("button", {
|
|
204
|
-
key: 0,
|
|
205
|
-
onClick: L,
|
|
206
|
-
class: "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium h-9 px-4 py-2 bg-blue-600 text-white shadow-md transition-all duration-200 transform hover:bg-blue-700 hover:shadow-lg hover:scale-105 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"
|
|
207
|
-
}, [
|
|
208
|
-
_(b(re), { class: "w-4 h-4 mr-2" }),
|
|
209
|
-
le(" " + h(t.$t("cms.articles.createArticle")), 1)
|
|
210
|
-
])) : f("", !0),
|
|
211
|
-
((e = c.value) == null ? void 0 : e.type) === "collection" ? (i(), d("button", {
|
|
212
|
-
key: 1,
|
|
213
|
-
onClick: Q,
|
|
214
|
-
class: "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium h-9 px-4 py-2 border border-slate-300 bg-white text-slate-700 shadow-sm transition-all duration-200 transform hover:bg-slate-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
|
|
215
|
-
}, h(t.$t("cms.common.actions.edit")), 1)) : f("", !0),
|
|
216
|
-
r("button", {
|
|
217
|
-
onClick: J,
|
|
218
|
-
class: "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium h-9 px-4 py-2 border border-red-300 bg-white text-red-600 shadow-sm transition-all duration-200 transform hover:bg-red-50 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
|
|
219
|
-
}, h(t.$t("cms.common.actions.delete")), 1)
|
|
220
|
-
])
|
|
221
|
-
]),
|
|
222
|
-
C.value.length || p.value.length ? (i(), d("div", Ae, [
|
|
223
|
-
(i(), d("div", Ee, [
|
|
224
|
-
r("div", je, [
|
|
225
|
-
(i(), q(b(he), {
|
|
226
|
-
key: j.value,
|
|
227
|
-
schema: E.value,
|
|
228
|
-
history: !0,
|
|
229
|
-
value: w.value,
|
|
230
|
-
view: "inline",
|
|
231
|
-
onChange: ee
|
|
232
|
-
}, null, 8, ["schema", "value"])),
|
|
233
|
-
r("div", qe, [
|
|
234
|
-
y.value.length > 0 ? (i(), d("div", {
|
|
235
|
-
key: 0,
|
|
236
|
-
class: "flex items-center gap-2 cursor-pointer text-sm border border-gray-300 rounded-md p-2 dark:text-white",
|
|
237
|
-
onClick: a[0] || (a[0] = (v) => g.value = !g.value)
|
|
238
|
-
}, [
|
|
239
|
-
r("p", null, h(t.$t("cms.articles.showColumns")), 1),
|
|
240
|
-
_(b(ce), { class: "w-4 h-4" })
|
|
241
|
-
])) : f("", !0),
|
|
242
|
-
y.value.length > 0 && g.value ? (i(), d("div", Fe, [
|
|
243
|
-
r("div", Ue, [
|
|
244
|
-
y.value.length > 0 && g.value ? (i(), q(b(ve), {
|
|
245
|
-
key: 0,
|
|
246
|
-
options: y.value,
|
|
247
|
-
modelValue: m.value,
|
|
248
|
-
"onUpdate:modelValue": a[1] || (a[1] = (v) => m.value = v)
|
|
249
|
-
}, null, 8, ["options", "modelValue"])) : f("", !0)
|
|
250
|
-
]),
|
|
251
|
-
r("button", {
|
|
252
|
-
class: "text-sm bg-blue-600 text-white rounded-md p-2 mt-4 w-full",
|
|
253
|
-
onClick: N
|
|
254
|
-
}, h(t.$t("cms.articles.update")), 1)
|
|
255
|
-
])) : f("", !0)
|
|
256
|
-
])
|
|
257
|
-
])
|
|
258
|
-
])),
|
|
259
|
-
A.value.length > 0 ? (i(), q(pe, {
|
|
260
|
-
key: 1,
|
|
261
|
-
class: "max-h-[calc(100vh-290px)] overflow-y-auto",
|
|
262
|
-
rows: C.value,
|
|
263
|
-
columns: A.value,
|
|
264
|
-
query: z.value,
|
|
265
|
-
filterFn: Z,
|
|
266
|
-
onDelete: W,
|
|
267
|
-
onEdit: X
|
|
268
|
-
}, null, 8, ["rows", "columns", "query"])) : f("", !0),
|
|
269
|
-
((s = c.value) == null ? void 0 : s.total) > 20 ? (i(), q(fe, {
|
|
270
|
-
key: 2,
|
|
271
|
-
total: (o = c.value) == null ? void 0 : o.filtered,
|
|
272
|
-
count: (V = c.value) == null ? void 0 : V.count,
|
|
273
|
-
page: $.value,
|
|
274
|
-
"onUpdate:page": a[2] || (a[2] = (v) => $.value = v),
|
|
275
|
-
limit: 20
|
|
276
|
-
}, null, 8, ["total", "count", "page"])) : f("", !0)
|
|
277
|
-
])) : (i(), d("div", Te, [
|
|
278
|
-
_(ge, { onAction: L })
|
|
279
|
-
]))
|
|
280
|
-
]);
|
|
281
|
-
};
|
|
282
|
-
}
|
|
283
|
-
});
|
|
284
|
-
export {
|
|
285
|
-
Ge as default
|
|
286
|
-
};
|
|
@@ -1,386 +0,0 @@
|
|
|
1
|
-
import { version as J, unref as i, inject as Q, ref as f, watchEffect as Y, watch as M, getCurrentInstance as Z, onBeforeUnmount as ee, onDeactivated as te, onActivated as oe, openBlock as u, createElementBlock as C, createStaticVNode as q, defineComponent as z, Fragment as se, renderList as re, createElementVNode as t, createBlock as j, toDisplayString as p, normalizeClass as E, resolveDynamicComponent as ne, createTextVNode as le, createCommentVNode as T, renderSlot as ae, withModifiers as N, createVNode as w, onMounted as ie, computed as de, withDirectives as ce, vModelText as ue, withCtx as he } from "vue";
|
|
2
|
-
import { _ as pe } from "./CreateForm-BMOBeP4G.js";
|
|
3
|
-
import { useRouter as ge } from "vue-router";
|
|
4
|
-
import { File as fe, Layers as H, Edit as G, Trash2 as me, List as K, HelpCircle as W, XCircle as be, CheckCircle as xe, Search as ve } from "lucide-vue-next";
|
|
5
|
-
import { useI18n as we } from "vue-i18n";
|
|
6
|
-
import { _ as ke } from "./UniversalTable.vue_vue_type_script_setup_true_lang-CJGTsd1V.js";
|
|
7
|
-
import { _ as ye } from "./UniversalTablePagination.vue_vue_type_script_setup_true_lang-GYZd_gkA.js";
|
|
8
|
-
import { _ as X } from "./_plugin-vue_export-helper-CHgC5LLL.js";
|
|
9
|
-
let _e;
|
|
10
|
-
function $e() {
|
|
11
|
-
return _e;
|
|
12
|
-
}
|
|
13
|
-
J[0];
|
|
14
|
-
function Ce(o) {
|
|
15
|
-
return typeof o == "function" ? o() : i(o);
|
|
16
|
-
}
|
|
17
|
-
function U(o) {
|
|
18
|
-
if (o instanceof Promise || o instanceof Date || o instanceof RegExp)
|
|
19
|
-
return o;
|
|
20
|
-
const e = Ce(o);
|
|
21
|
-
if (!o || !e)
|
|
22
|
-
return e;
|
|
23
|
-
if (Array.isArray(e))
|
|
24
|
-
return e.map((r) => U(r));
|
|
25
|
-
if (typeof e == "object") {
|
|
26
|
-
const r = {};
|
|
27
|
-
for (const n in e)
|
|
28
|
-
if (Object.prototype.hasOwnProperty.call(e, n)) {
|
|
29
|
-
if (n === "titleTemplate" || n[0] === "o" && n[1] === "n") {
|
|
30
|
-
r[n] = i(e[n]);
|
|
31
|
-
continue;
|
|
32
|
-
}
|
|
33
|
-
r[n] = U(e[n]);
|
|
34
|
-
}
|
|
35
|
-
return r;
|
|
36
|
-
}
|
|
37
|
-
return e;
|
|
38
|
-
}
|
|
39
|
-
const Ve = "usehead", O = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {}, R = "__unhead_injection_handler__";
|
|
40
|
-
function je() {
|
|
41
|
-
if (R in O)
|
|
42
|
-
return O[R]();
|
|
43
|
-
const o = Q(Ve);
|
|
44
|
-
return !o && process.env.NODE_ENV !== "production" && console.warn("Unhead is missing Vue context, falling back to shared context. This may have unexpected results."), o || $e();
|
|
45
|
-
}
|
|
46
|
-
function De(o, e = {}) {
|
|
47
|
-
const r = e.head || je();
|
|
48
|
-
if (r)
|
|
49
|
-
return r.ssr ? r.push(o, e) : Ee(r, o, e);
|
|
50
|
-
}
|
|
51
|
-
function Ee(o, e, r = {}) {
|
|
52
|
-
const n = f(!1), h = f({});
|
|
53
|
-
Y(() => {
|
|
54
|
-
h.value = n.value ? {} : U(e);
|
|
55
|
-
});
|
|
56
|
-
const b = o.push(h.value, r);
|
|
57
|
-
return M(h, (a) => {
|
|
58
|
-
b.patch(a);
|
|
59
|
-
}), Z() && (ee(() => {
|
|
60
|
-
b.dispose();
|
|
61
|
-
}), te(() => {
|
|
62
|
-
n.value = !0;
|
|
63
|
-
}), oe(() => {
|
|
64
|
-
n.value = !1;
|
|
65
|
-
})), b;
|
|
66
|
-
}
|
|
67
|
-
function Me(o, e = 300) {
|
|
68
|
-
const r = f(o.value);
|
|
69
|
-
let n;
|
|
70
|
-
return M(
|
|
71
|
-
o,
|
|
72
|
-
(h) => {
|
|
73
|
-
clearTimeout(n), n = setTimeout(() => {
|
|
74
|
-
r.value = h;
|
|
75
|
-
}, e);
|
|
76
|
-
},
|
|
77
|
-
{ immediate: !0 }
|
|
78
|
-
), r;
|
|
79
|
-
}
|
|
80
|
-
const Te = {}, Se = {
|
|
81
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
82
|
-
width: "24",
|
|
83
|
-
height: "24",
|
|
84
|
-
viewBox: "0 0 24 24",
|
|
85
|
-
fill: "none",
|
|
86
|
-
stroke: "currentColor",
|
|
87
|
-
"stroke-width": "2",
|
|
88
|
-
"stroke-linecap": "round",
|
|
89
|
-
"stroke-linejoin": "round"
|
|
90
|
-
};
|
|
91
|
-
function Ie(o, e) {
|
|
92
|
-
return u(), C("svg", Se, [...e[0] || (e[0] = [
|
|
93
|
-
q('<line x1="8" x2="21" y1="6" y2="6"></line><line x1="8" x2="21" y1="12" y2="12"></line><line x1="8" x2="21" y1="18" y2="18"></line><line x1="3" x2="3.01" y1="6" y2="6"></line><line x1="3" x2="3.01" y1="12" y2="12"></line><line x1="3" x2="3.01" y1="18" y2="18"></line>', 6)
|
|
94
|
-
])]);
|
|
95
|
-
}
|
|
96
|
-
const Ne = /* @__PURE__ */ X(Te, [["render", Ie]]), Be = {}, He = {
|
|
97
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
98
|
-
viewBox: "0 0 24 24",
|
|
99
|
-
fill: "none",
|
|
100
|
-
stroke: "currentColor",
|
|
101
|
-
"stroke-width": "2",
|
|
102
|
-
"stroke-linecap": "round",
|
|
103
|
-
"stroke-linejoin": "round"
|
|
104
|
-
};
|
|
105
|
-
function Ue(o, e) {
|
|
106
|
-
return u(), C("svg", He, [...e[0] || (e[0] = [
|
|
107
|
-
q('<rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M3 9h18"></path><path d="M3 15h18"></path><path d="M9 3v18"></path><path d="M15 3v18"></path>', 5)
|
|
108
|
-
])]);
|
|
109
|
-
}
|
|
110
|
-
const Ae = /* @__PURE__ */ X(Be, [["render", Ue]]), Fe = { class: "grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 gap-6 pb-6" }, Le = { class: "flex items-center gap-2 space-y-1.5 p-6 border-b border-slate-200 dark:border-slate-700 bg-gradient-to-r from-slate-50 dark:from-slate-800 to-white dark:to-slate-800" }, Pe = { class: "line-clamp-1 tracking-tight text-lg font-semibold text-slate-800 dark:text-slate-100 vertical-center" }, Ge = { class: "w-full flex flex-col gap-2 p-6" }, Oe = ["title"], Re = { class: "flex items-center justify-between gap-2" }, Qe = { class: "text-sm text-slate-600 dark:text-slate-400" }, qe = { class: "font-semibold text-slate-800 dark:text-slate-100" }, ze = { class: "flex items-center justify-between gap-2" }, Ke = { class: "text-sm text-slate-500 dark:text-slate-400" }, We = { class: "font-semibold text-slate-800 dark:text-slate-100" }, Xe = { class: "flex items-center justify-between gap-2" }, Je = { class: "text-sm text-slate-500 dark:text-slate-400" }, Ye = { class: "text-sm text-slate-600 dark:text-slate-300" }, Ze = { class: "flex items-center justify-between gap-2 mt-6" }, et = ["onClick"], tt = { class: "text-slate-800 dark:text-slate-200 group-hover:text-green-600 dark:group-hover:text-blue-50" }, ot = ["onClick"], st = ["onClick"], rt = /* @__PURE__ */ z({
|
|
111
|
-
__name: "CollectionsGrid",
|
|
112
|
-
props: {
|
|
113
|
-
collections: {},
|
|
114
|
-
onEdit: { type: Function },
|
|
115
|
-
onView: { type: Function },
|
|
116
|
-
onDelete: { type: Function }
|
|
117
|
-
},
|
|
118
|
-
emits: ["edit", "view", "delete"],
|
|
119
|
-
setup(o, { emit: e }) {
|
|
120
|
-
f(!1), f(null);
|
|
121
|
-
const r = o, n = e, h = (a, g) => {
|
|
122
|
-
switch (a) {
|
|
123
|
-
case "edit":
|
|
124
|
-
n("edit", g), r.onEdit && r.onEdit(g);
|
|
125
|
-
break;
|
|
126
|
-
case "view":
|
|
127
|
-
n("view", g), r.onView && r.onView(g);
|
|
128
|
-
break;
|
|
129
|
-
case "delete":
|
|
130
|
-
n("delete", g), r.onDelete && r.onDelete(g);
|
|
131
|
-
break;
|
|
132
|
-
}
|
|
133
|
-
}, b = (a) => {
|
|
134
|
-
const g = /* @__PURE__ */ new Date(), s = new Date(a), y = g.getTime() - s.getTime(), m = Math.floor(y / 1e3), d = Math.floor(m / 60), k = Math.floor(d / 60), v = Math.floor(k / 24), V = Math.floor(v / 7);
|
|
135
|
-
return V >= 2 ? `${V} weeks ago` : V === 1 ? "1 week ago" : v >= 2 ? `${v} days ago` : v === 1 ? "1 day ago" : k >= 2 ? `${k} hours ago` : k === 1 ? "1 hour ago" : d >= 2 ? `${d} minutes ago` : d === 1 ? "1 minute ago" : "just now";
|
|
136
|
-
}, x = (a) => {
|
|
137
|
-
switch (a) {
|
|
138
|
-
case "published":
|
|
139
|
-
return {
|
|
140
|
-
icon: xe,
|
|
141
|
-
text: "Published",
|
|
142
|
-
classes: "bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-200 border-green-200 dark:border-green-700"
|
|
143
|
-
};
|
|
144
|
-
case "draft":
|
|
145
|
-
return {
|
|
146
|
-
icon: G,
|
|
147
|
-
text: "Draft",
|
|
148
|
-
classes: "bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-200 border-yellow-200 dark:border-yellow-700"
|
|
149
|
-
};
|
|
150
|
-
case "archived":
|
|
151
|
-
return {
|
|
152
|
-
icon: be,
|
|
153
|
-
text: "Archived",
|
|
154
|
-
classes: "bg-gray-100 text-gray-800 dark:bg-gray-900/30 dark:text-gray-300 border-gray-200 dark:border-gray-700"
|
|
155
|
-
};
|
|
156
|
-
default:
|
|
157
|
-
return {
|
|
158
|
-
icon: W,
|
|
159
|
-
text: "--",
|
|
160
|
-
classes: "bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-200 border-yellow-200 dark:border-yellow-700"
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
};
|
|
164
|
-
return (a, g) => (u(), C("div", Fe, [
|
|
165
|
-
(u(!0), C(se, null, re(o.collections, (s) => {
|
|
166
|
-
var y, m, d;
|
|
167
|
-
return u(), C("div", {
|
|
168
|
-
key: s.id,
|
|
169
|
-
class: "rounded-xl text-card-foreground shadow-lg border-0 bg-white dark:bg-slate-800 backdrop-blur-sm hover:shadow-xl transition-all duration-200 transform hover:bg-slate-50"
|
|
170
|
-
}, [
|
|
171
|
-
t("div", Le, [
|
|
172
|
-
s.type === "single" ? (u(), j(i(fe), {
|
|
173
|
-
key: 0,
|
|
174
|
-
class: "shrink-0 lucide lucide-page w-5 h-5 text-blue-600"
|
|
175
|
-
})) : (u(), j(i(H), {
|
|
176
|
-
key: 1,
|
|
177
|
-
class: "shrink-0 lucide lucide-layers w-5 h-5 text-blue-600"
|
|
178
|
-
})),
|
|
179
|
-
t("p", Pe, p(s.title), 1),
|
|
180
|
-
x(s.status) ? (u(), C("div", {
|
|
181
|
-
key: 2,
|
|
182
|
-
class: E(["whitespace-nowrap rounded-md border ml-auto 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", (y = x(s.status)) == null ? void 0 : y.classes])
|
|
183
|
-
}, [
|
|
184
|
-
(u(), j(ne((m = x(s.status)) == null ? void 0 : m.icon), { class: "w-3 h-3 mr-1" })),
|
|
185
|
-
le(" " + p((d = x(s.status)) == null ? void 0 : d.text), 1)
|
|
186
|
-
], 2)) : T("", !0)
|
|
187
|
-
]),
|
|
188
|
-
t("div", Ge, [
|
|
189
|
-
t("p", {
|
|
190
|
-
class: "text-slate-600 dark:text-slate-300 mb-4 line-clamp-2",
|
|
191
|
-
title: s.description
|
|
192
|
-
}, p(s.description !== null ? s.description : "No description"), 9, Oe),
|
|
193
|
-
t("div", Re, [
|
|
194
|
-
t("p", Qe, p(a.$t("cms.collections.entries")) + ":", 1),
|
|
195
|
-
t("p", qe, p(s.entries), 1)
|
|
196
|
-
]),
|
|
197
|
-
t("div", ze, [
|
|
198
|
-
t("p", Ke, p(a.$t("cms.collections.fields")) + ":", 1),
|
|
199
|
-
t("p", We, p(s.fields), 1)
|
|
200
|
-
]),
|
|
201
|
-
t("div", Xe, [
|
|
202
|
-
t("p", Je, p(a.$t("cms.collections.lastModified")) + ":", 1),
|
|
203
|
-
t("p", Ye, p(b(s.last_edit)), 1)
|
|
204
|
-
]),
|
|
205
|
-
t("div", Ze, [
|
|
206
|
-
ae(a.$slots, "actions", {
|
|
207
|
-
collection: s,
|
|
208
|
-
handleAction: h
|
|
209
|
-
}, () => [
|
|
210
|
-
t("button", {
|
|
211
|
-
class: "inline-flex gap-1 items-center justify-center whitespace-nowrap font-medium border rounded-md text-xs h-8 w-4/5 p-0 border-slate-300 bg-white transition-all duration-200 shadow-sm group dark:border-slate-600 dark:bg-slate-700 dark:hover:bg-slate-600 dark:hover:border-slate-500 dark:hover:text-slate-200 hover:bg-green-50 hover:border-green-300",
|
|
212
|
-
onClick: N((k) => h("edit", s), ["stop"])
|
|
213
|
-
}, [
|
|
214
|
-
w(i(G), { class: "text-slate-800 dark:text-slate-200 w-4 h-4 group-hover:text-green-600 dark:group-hover:text-blue-50" }),
|
|
215
|
-
t("span", tt, p(a.$t("cms.common.actions.edit")), 1)
|
|
216
|
-
], 8, et),
|
|
217
|
-
t("button", {
|
|
218
|
-
class: E([s.id === "pages" ? "disabled" : "", "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 group dark:border-slate-600 dark:bg-slate-700 dark:hover:bg-slate-600 dark:hover:border-slate-500 dark:hover:text-slate-200 hover:bg-red-50 hover:border-red-300"]),
|
|
219
|
-
onClick: N((k) => s.id === "pages" ? null : h("delete", s), ["stop"])
|
|
220
|
-
}, [
|
|
221
|
-
w(i(me), { class: "text-slate-800 dark:text-slate-200 w-4 h-4 group-hover:text-red-600 dark:group-hover:text-blue-50" })
|
|
222
|
-
], 10, ot),
|
|
223
|
-
t("button", {
|
|
224
|
-
class: E([s.type === "single" ? "disabled cursor-not-allowed" : "", "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 group dark:border-slate-600 dark:bg-slate-700 dark:hover:bg-slate-600 dark:hover:border-slate-500 dark:hover:text-slate-200 hover:bg-blue-50 hover:border-blue-300"]),
|
|
225
|
-
onClick: N((k) => s.type === "single" ? null : h("view", s), ["stop"])
|
|
226
|
-
}, [
|
|
227
|
-
w(i(K), { class: "text-slate-800 dark:text-slate-200 w-4 h-4 group-hover:text-blue-600 dark:group-hover:text-blue-50" })
|
|
228
|
-
], 10, st)
|
|
229
|
-
])
|
|
230
|
-
])
|
|
231
|
-
])
|
|
232
|
-
]);
|
|
233
|
-
}), 128))
|
|
234
|
-
]));
|
|
235
|
-
}
|
|
236
|
-
}), B = localStorage.getItem("collectionView"), S = f(B === "list" || B === "grid" ? B : "list");
|
|
237
|
-
M(S, (o) => {
|
|
238
|
-
localStorage.setItem("collectionView", o);
|
|
239
|
-
});
|
|
240
|
-
function nt() {
|
|
241
|
-
S.value = S.value === "grid" ? "list" : "grid";
|
|
242
|
-
}
|
|
243
|
-
function lt() {
|
|
244
|
-
return {
|
|
245
|
-
collectionView: S,
|
|
246
|
-
toggleCollectionView: nt
|
|
247
|
-
};
|
|
248
|
-
}
|
|
249
|
-
const at = { class: "space-y-6 max-w-7xl mx-auto" }, it = { class: "flex items-center justify-between mb-8" }, dt = { class: "flex gap-4" }, ct = { class: "text-3xl font-bold text-slate-800 dark:text-slate-100 mb-2" }, ut = { class: "text-slate-600 dark:text-slate-300" }, ht = ["href", "title"], pt = { class: "flex items-center gap-3" }, gt = { class: "relative" }, ft = { class: "absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none" }, mt = ["placeholder"], bt = { class: "flex items-center bg-white dark:bg-slate-700 border border-slate-200 dark:border-slate-600 rounded-lg p-1 max-w-[fit-content]" }, xt = ["onClick"], Dt = /* @__PURE__ */ z({
|
|
250
|
-
__name: "BuilderPage",
|
|
251
|
-
setup(o) {
|
|
252
|
-
const { t: e, locale: r } = we(), n = ge(), h = [
|
|
253
|
-
{ name: "name", title: e("cms.builder.collectionName"), type: "text", icon: H },
|
|
254
|
-
{ name: "title", title: e("cms.builder.title"), type: "text", icon: H },
|
|
255
|
-
{ name: "description", title: e("cms.common.description"), type: "text" },
|
|
256
|
-
{ name: "entries", title: e("cms.builder.entries"), type: "number" },
|
|
257
|
-
{ name: "fields", title: e("cms.builder.fields"), type: "number" },
|
|
258
|
-
{ name: "status", title: e("cms.builder.status"), type: "text" },
|
|
259
|
-
{ name: "last_edit", title: e("cms.builder.lastModified"), type: "date" }
|
|
260
|
-
], b = f(""), x = Me(b, 300);
|
|
261
|
-
De({
|
|
262
|
-
title: () => e("cms.collections.title") + " | CMS"
|
|
263
|
-
});
|
|
264
|
-
const a = f([]), g = Q("fetchContentTypes"), s = f(1), y = f(16), m = f(null), { collectionView: d, toggleCollectionView: k } = lt();
|
|
265
|
-
async function v() {
|
|
266
|
-
try {
|
|
267
|
-
const l = x.value ? `&search=${encodeURIComponent(String(x.value))}` : "", c = `/api/cms-type?page=${s.value}&limit=${y.value}${l}`, _ = await fetch(c);
|
|
268
|
-
if (!_.ok)
|
|
269
|
-
throw new Error("Failed to fetch collections");
|
|
270
|
-
const D = await _.json();
|
|
271
|
-
a.value = D.rows, m.value = D;
|
|
272
|
-
} catch (l) {
|
|
273
|
-
console.error("Error fetching collections:", l);
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
ie(() => {
|
|
277
|
-
v();
|
|
278
|
-
});
|
|
279
|
-
const V = de(() => [...a.value].sort((c, _) => c.id === "pages" ? -1 : _.id === "pages" ? 1 : 0)), A = async (l) => {
|
|
280
|
-
try {
|
|
281
|
-
await fetch(`/api/cms-type/${l.id}`, { method: "DELETE" }), v(), g();
|
|
282
|
-
} catch (c) {
|
|
283
|
-
console.error("Error deleting collection:", c);
|
|
284
|
-
}
|
|
285
|
-
}, F = (l) => {
|
|
286
|
-
n.push(`/settings/collections/edit/${l.id || l.name}`);
|
|
287
|
-
}, I = (l) => {
|
|
288
|
-
l.type === "single" ? n.push(`/collections/single/${l.name}`) : n.push(`/collections/${l.name}`);
|
|
289
|
-
};
|
|
290
|
-
return M(s, () => {
|
|
291
|
-
v();
|
|
292
|
-
}), M(x, (l) => {
|
|
293
|
-
console.log("Search query changed:", l), s.value = 1, v();
|
|
294
|
-
}), (l, c) => {
|
|
295
|
-
var _, D, L, P;
|
|
296
|
-
return u(), C("div", at, [
|
|
297
|
-
t("div", it, [
|
|
298
|
-
t("div", dt, [
|
|
299
|
-
t("div", null, [
|
|
300
|
-
t("h1", ct, p(l.$t("cms.builder.collections")), 1),
|
|
301
|
-
t("p", ut, p(l.$t("cms.builder.manageContentCollections")), 1)
|
|
302
|
-
]),
|
|
303
|
-
t("a", {
|
|
304
|
-
href: `https://cms.opengis.info/${i(r)}/guides/collections/`,
|
|
305
|
-
target: "_blank",
|
|
306
|
-
title: l.$t("cms.guide.collections"),
|
|
307
|
-
class: "mt-2"
|
|
308
|
-
}, [
|
|
309
|
-
w(i(W), { class: "w-5 h-5" })
|
|
310
|
-
], 8, ht)
|
|
311
|
-
]),
|
|
312
|
-
t("div", pt, [
|
|
313
|
-
t("div", gt, [
|
|
314
|
-
t("div", ft, [
|
|
315
|
-
w(i(ve), { class: "w-5 h-5 text-gray-400" })
|
|
316
|
-
]),
|
|
317
|
-
ce(t("input", {
|
|
318
|
-
type: "text",
|
|
319
|
-
class: "block w-full py-2 pl-10 pr-3 leading-5 text-gray-900 placeholder-gray-500 transition-colors bg-white border border-gray-300 rounded-md dark:border-gray-600 dark:bg-gray-700 dark:placeholder-gray-400 focus:outline-none focus:ring-sky-500 focus:border-sky-500 dark:text-white sm:text-sm",
|
|
320
|
-
placeholder: l.$t("cms.builder.searchCollections"),
|
|
321
|
-
"onUpdate:modelValue": c[0] || (c[0] = ($) => b.value = $)
|
|
322
|
-
}, null, 8, mt), [
|
|
323
|
-
[ue, b.value]
|
|
324
|
-
])
|
|
325
|
-
]),
|
|
326
|
-
t("div", bt, [
|
|
327
|
-
t("button", {
|
|
328
|
-
class: E(["inline-flex items-center justify-center whitespace-nowrap font-medium transition-colors rounded-md text-xs h-8 w-8 p-0 hover:bg-blue-700 hover:text-white cursor-pointer", { "bg-blue-600 text-white": i(d) === "list" }]),
|
|
329
|
-
onClick: c[1] || (c[1] = ($) => d.value = "list")
|
|
330
|
-
}, [
|
|
331
|
-
w(Ne, { class: "dark:text-blue-50 w-4 h-4" })
|
|
332
|
-
], 2),
|
|
333
|
-
t("button", {
|
|
334
|
-
class: E(["inline-flex items-center justify-center whitespace-nowrap font-medium transition-colors rounded-md text-xs h-8 w-8 p-0 hover:bg-blue-700 hover:text-white cursor-pointer", { "bg-blue-600 text-white": i(d) === "grid" }]),
|
|
335
|
-
onClick: c[2] || (c[2] = ($) => d.value = "grid")
|
|
336
|
-
}, [
|
|
337
|
-
w(Ae, { class: "dark:text-blue-50 w-4 h-4" })
|
|
338
|
-
], 2)
|
|
339
|
-
]),
|
|
340
|
-
w(pe)
|
|
341
|
-
])
|
|
342
|
-
]),
|
|
343
|
-
t("div", null, [
|
|
344
|
-
i(d) === "list" ? (u(), j(ke, {
|
|
345
|
-
key: 0,
|
|
346
|
-
class: "max-h-[calc(100vh-270px)] overflow-y-auto overflow-x-hidden",
|
|
347
|
-
columns: h,
|
|
348
|
-
rows: V.value,
|
|
349
|
-
onDelete: A,
|
|
350
|
-
onEdit: F,
|
|
351
|
-
onView: I
|
|
352
|
-
}, {
|
|
353
|
-
actions: he(({ row: $ }) => [
|
|
354
|
-
t("button", {
|
|
355
|
-
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 group dark:border-slate-600 dark:bg-slate-700 dark:hover:bg-slate-600 dark:hover:border-slate-500 dark:hover:text-slate-200 hover:bg-blue-50 hover:border-blue-300 hover:text-blue-600",
|
|
356
|
-
onClick: (vt) => I($)
|
|
357
|
-
}, [
|
|
358
|
-
w(i(K), { class: "text-slate-800 dark:text-slate-200 w-4 h-4 group-hover:text-blue-600 dark:group-hover:text-blue-50" })
|
|
359
|
-
], 8, xt)
|
|
360
|
-
]),
|
|
361
|
-
_: 1
|
|
362
|
-
}, 8, ["rows"])) : T("", !0),
|
|
363
|
-
i(d) === "grid" ? (u(), j(rt, {
|
|
364
|
-
key: 1,
|
|
365
|
-
collections: V.value,
|
|
366
|
-
onEdit: F,
|
|
367
|
-
onView: I,
|
|
368
|
-
onDelete: A,
|
|
369
|
-
class: "max-h-[calc(100vh-270px)] overflow-y-auto overflow-x-hidden"
|
|
370
|
-
}, null, 8, ["collections"])) : T("", !0),
|
|
371
|
-
((_ = m.value) == null ? void 0 : _.total) > 16 ? (u(), j(ye, {
|
|
372
|
-
key: 2,
|
|
373
|
-
total: (D = m.value) == null ? void 0 : D.filtered,
|
|
374
|
-
count: ((L = m.value) == null ? void 0 : L.count) || ((P = m.value) == null ? void 0 : P.total),
|
|
375
|
-
page: s.value,
|
|
376
|
-
"onUpdate:page": c[3] || (c[3] = ($) => s.value = $),
|
|
377
|
-
limit: y.value
|
|
378
|
-
}, null, 8, ["total", "count", "page", "limit"])) : T("", !0)
|
|
379
|
-
])
|
|
380
|
-
]);
|
|
381
|
-
};
|
|
382
|
-
}
|
|
383
|
-
});
|
|
384
|
-
export {
|
|
385
|
-
Dt as default
|
|
386
|
-
};
|