@opengis/cms 0.0.57 → 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.
Files changed (149) hide show
  1. package/README.md +131 -131
  2. package/dist/AddNewItemInTree-05PSSEFi.js +76 -0
  3. package/dist/ArticlesPage-CFjE_cw_.js +298 -0
  4. package/dist/CollectionsBreadcrumb-BCxeRikP.js +4 -0
  5. package/dist/CollectionsBreadcrumb.vue_vue_type_script_setup_true_lang-umRzB5mY.js +53 -0
  6. package/dist/CollectionsPage-DHfPNql6.js +124 -0
  7. package/dist/{CreateForm-BMOBeP4G.js → CreateForm-5FvT45vH.js} +1 -1
  8. package/dist/Dashboard-C1eGscNd.js +358 -0
  9. package/dist/EditCollectionPage-DIr1tdtn.js +187 -0
  10. package/dist/{EmptyData-DaZt_nAm.js → EmptyData-DxPrSXhV.js} +1 -1
  11. package/dist/{MenuAddPage-Bf48Z-ah.js → MenuAddPage-D-p3gFgm.js} +40 -35
  12. package/dist/MenuBody-rN5j4YBu.js +125 -0
  13. package/dist/MenuItemPage-BoJw885D.js +1027 -0
  14. package/dist/MenuList-DFEBS0NB.js +172 -0
  15. package/dist/MenuPage-BCZB_S8j.js +107 -0
  16. package/dist/MenuWrapper-AZ_8s-zd.js +12 -0
  17. package/dist/MonacoEditor-Db-3Jc3E.js +4 -0
  18. package/dist/{UniversalTable.vue_vue_type_script_setup_true_lang-CJGTsd1V.js → UniversalTable-CzqPG-tY.js} +12 -12
  19. package/dist/{UniversalTablePagination.vue_vue_type_script_setup_true_lang-GYZd_gkA.js → UniversalTablePagination-4gL47A7I.js} +1 -1
  20. package/dist/VsFormTags-CMjiu9sY.js +114 -0
  21. package/dist/VsPreview-DwETkOpb.js +63 -0
  22. package/dist/contentForm-CtMhQTG0.js +489 -0
  23. package/dist/getField-CpwVE28P.js +179 -0
  24. package/dist/index.d.ts +8 -0
  25. package/dist/index.html +29 -29
  26. package/dist/index.js +72 -71
  27. package/dist/style.css +1 -1
  28. package/dist/vs-builder-edit-D-q1o8tF.js +604 -0
  29. package/dist/vs-builder-monaco-B3Jj0V31.js +33 -0
  30. package/dist/vs-builder-preview-BH4VAM3a.js +44 -0
  31. package/dist/vs-form-custom-datatable-BDZo48w3.js +317 -0
  32. package/dist/vs-form-integer-BZ855R3g.js +61 -0
  33. package/dist/vs-form-media-select-NY27EaG1.js +837 -0
  34. package/dist/vs-form-reference-list-Dtv8fJJU.js +1536 -0
  35. package/dist/vs-form-reletion-link-BhzNQszm.js +34 -0
  36. package/dist/vs-form-tiptap-DDFQjRjY.js +4 -0
  37. package/dist/vs-form-tiptap.vue_vue_type_script_setup_true_lang-DGgsqXwg.js +11 -0
  38. package/dist/vs-richtext-md-C098v_6Q.js +4 -0
  39. package/dist/vs-richtext-md.vue_vue_type_script_setup_true_lang-Ct8uTV-J.js +14 -0
  40. package/input-types.json +9 -9
  41. package/locales/en.json +815 -814
  42. package/locales/uk.json +813 -812
  43. package/module/cms/cls/content.status.json +17 -17
  44. package/module/cms/cls/user_type.json +9 -9
  45. package/module/cms/form/admin.users.form.json +77 -77
  46. package/module/cms/select/cms.page_type.sql +1 -1
  47. package/module/cms/select/news_tag_id.sql +11 -11
  48. package/module/cms/table/admin.users.table.json +53 -53
  49. package/module/cms/table/collection.default.table.json +96 -96
  50. package/module/cms/table/single.default.table.json +116 -116
  51. package/package.json +68 -68
  52. package/plugin.js +43 -43
  53. package/server/app.js +35 -35
  54. package/server/config.js +4 -4
  55. package/server/functions/getContent.js +45 -45
  56. package/server/functions/getDraftKey.js +22 -22
  57. package/server/functions/getSearchData.js +31 -31
  58. package/server/functions/getTags.js +30 -30
  59. package/server/functions/getUser.js +27 -27
  60. package/server/functions/utils/mock.reply.js +55 -55
  61. package/server/index.js +22 -22
  62. package/server/migrations/fixes.sql +129 -129
  63. package/server/migrations/site.sql +595 -595
  64. package/server/plugins/adminHook.js +78 -78
  65. package/server/plugins/hook.js +59 -59
  66. package/server/plugins/vite.js +75 -75
  67. package/server/routes/category/controllers/cms.category.delete.js +21 -21
  68. package/server/routes/category/controllers/cms.category.get.js +17 -17
  69. package/server/routes/category/controllers/cms.category.list.js +16 -16
  70. package/server/routes/category/controllers/cms.category.post.js +21 -21
  71. package/server/routes/category/controllers/cms.category.put.js +23 -23
  72. package/server/routes/category/index.mjs +22 -22
  73. package/server/routes/cms/controllers/cmsStat.js +55 -55
  74. package/server/routes/cms/controllers/cmsSuggest.js +57 -57
  75. package/server/routes/cms/controllers/deleteContent.js +113 -113
  76. package/server/routes/cms/controllers/deleteMedia.js +76 -76
  77. package/server/routes/cms/controllers/downloadMedia.js +84 -84
  78. package/server/routes/cms/controllers/getContent.js +113 -113
  79. package/server/routes/cms/controllers/getContentBySlug.js +93 -93
  80. package/server/routes/cms/controllers/insertContent.js +217 -217
  81. package/server/routes/cms/controllers/listMedia.js +155 -155
  82. package/server/routes/cms/controllers/metadataMedia.js +39 -39
  83. package/server/routes/cms/controllers/properties.get.js +18 -18
  84. package/server/routes/cms/controllers/properties.post.js +99 -99
  85. package/server/routes/cms/controllers/searchContent.js +214 -214
  86. package/server/routes/cms/controllers/translate.js +89 -89
  87. package/server/routes/cms/controllers/updateContent.js +266 -266
  88. package/server/routes/cms/controllers/uploadMedia.js +79 -79
  89. package/server/routes/cms/functions/getSettings.js +48 -48
  90. package/server/routes/cms/index.mjs +112 -112
  91. package/server/routes/cms/utils/additionalData.js +35 -35
  92. package/server/routes/cms/utils/getCollection.js +89 -89
  93. package/server/routes/cms/utils/getSingle.js +188 -188
  94. package/server/routes/cms/utils/inputTypes.js +5 -5
  95. package/server/routes/cms/utils/insertContentLocalization.js +104 -104
  96. package/server/routes/cms/utils/requestTranslation.js +85 -85
  97. package/server/routes/cms/utils/updateLocalization.js +47 -47
  98. package/server/routes/cmsSpace/controllers/deleteSpace.js +25 -25
  99. package/server/routes/cmsSpace/controllers/getSpaces.js +27 -27
  100. package/server/routes/cmsSpace/controllers/insertSpace.js +21 -21
  101. package/server/routes/cmsSpace/controllers/updateSpace.js +23 -23
  102. package/server/routes/cmsSpace/index.mjs +20 -20
  103. package/server/routes/contentType/controllers/addContentType.js +160 -160
  104. package/server/routes/contentType/controllers/contentTypeList.js +54 -54
  105. package/server/routes/contentType/controllers/delContentType.js +75 -75
  106. package/server/routes/contentType/controllers/editContentType.js +88 -88
  107. package/server/routes/contentType/controllers/getContentType.js +65 -65
  108. package/server/routes/contentType/index.mjs +35 -35
  109. package/server/routes/contentType/utils/updateContents.js +44 -44
  110. package/server/routes/contentType/utils/updateCustomContentTable.js +53 -53
  111. package/server/routes/feedback/controllers/email.list.js +24 -24
  112. package/server/routes/feedback/controllers/feedback.js +48 -48
  113. package/server/routes/feedback/controllers/feedback.list.js +37 -37
  114. package/server/routes/feedback/controllers/news.subscriptions.js +44 -44
  115. package/server/routes/feedback/index.mjs +71 -71
  116. package/server/routes/logs/controllers/export.user.logs.js +77 -77
  117. package/server/routes/logs/controllers/user.logs.js +44 -44
  118. package/server/routes/logs/index.mjs +9 -9
  119. package/server/routes/menu/controllers/addMenu.js +37 -37
  120. package/server/routes/menu/controllers/delMenu.js +31 -31
  121. package/server/routes/menu/controllers/editMenu.js +41 -41
  122. package/server/routes/menu/controllers/getMenu.js +24 -24
  123. package/server/routes/menu/functions/getMenu.js +50 -50
  124. package/server/routes/menu/index.mjs +13 -13
  125. package/server/routes/migration/controllers/collectionToCustom.js +137 -137
  126. package/server/routes/migration/index.mjs +8 -8
  127. package/server/routes/root.mjs +8 -8
  128. package/server/routes/tags/controllers/add.tags.js +24 -24
  129. package/server/routes/tags/controllers/del.tags.js +19 -19
  130. package/server/routes/tags/controllers/edit.tags.js +25 -25
  131. package/server/routes/tags/controllers/get.tags.js +15 -15
  132. package/server/routes/tags/index.mjs +14 -14
  133. package/server/templates/cls/cms.category_type.json +9 -9
  134. package/server/templates/cls/cms.content_review_status.json +9 -9
  135. package/server/templates/cls/cms.content_status.json +9 -9
  136. package/server/templates/cls/cms.content_type.json +9 -9
  137. package/server/templates/cls/cms.lang.json +9 -9
  138. package/server/templates/page/login.html +126 -126
  139. package/utils.d.ts +52 -52
  140. package/utils.js +8 -8
  141. package/dist/ArticlesPage-BcR1hbds.js +0 -286
  142. package/dist/BuilderPage-CK_osM89.js +0 -386
  143. package/dist/CollectionsBreadcrumb.vue_vue_type_script_setup_true_lang-CnOe9ORD.js +0 -45
  144. package/dist/CollectionsPage-JfmrHNR_.js +0 -110
  145. package/dist/EditCollectionPage-Cw3GQYRe.js +0 -809
  146. package/dist/MenuItemPage-CXn5HC8j.js +0 -1366
  147. package/dist/MenuPage-tJZtK46W.js +0 -106
  148. package/dist/contentForm-B6gHgGkz.js +0 -586
  149. package/dist/getField-Y5WXnRR0.js +0 -2948
@@ -0,0 +1,187 @@
1
+ import { defineAsyncComponent as k, defineComponent as z, inject as E, ref as u, computed as m, onMounted as S, openBlock as v, createElementBlock as h, createVNode as q, createElementVNode as n, createTextVNode as D, toDisplayString as d, unref as T, Fragment as O, renderList as R, normalizeClass as W, createBlock as J, resolveDynamicComponent as M, createCommentVNode as Y } from "vue";
2
+ import { useRoute as G, useRouter as H } from "vue-router";
3
+ import { useI18n as K } from "vue-i18n";
4
+ import { notify as $ } from "@opengis/core";
5
+ import { _ as P } from "./CollectionsBreadcrumb.vue_vue_type_script_setup_true_lang-umRzB5mY.js";
6
+ const Q = {
7
+ monaco: k(() => import("./vs-builder-monaco-B3Jj0V31.js")),
8
+ edit: k(() => import("./vs-builder-edit-D-q1o8tF.js")),
9
+ preview: k(() => import("./vs-builder-preview-BH4VAM3a.js"))
10
+ }, X = { class: "mx-auto max-w-[90%]" }, Z = { class: "flex items-center justify-between mb-6" }, ee = { class: "mb-2 text-2xl font-semibold text-gray-900" }, te = { class: "lowercase" }, oe = { class: "text-gray-600" }, ne = { class: "flex items-center gap-2" }, se = { class: "w-full" }, ie = { class: "flex items-center w-full h-10 max-w-md grid-cols-3 p-1 mb-6 bg-white border border-gray-200 rounded-md text-muted-foreground" }, re = ["onClick"], ae = {
11
+ key: 0,
12
+ class: "mx-auto bg-white rounded-md py-4 px-2 bg-opacity-50"
13
+ }, ve = /* @__PURE__ */ z({
14
+ __name: "EditCollectionPage",
15
+ setup(le) {
16
+ const { t: s } = K(), j = E("cms.fetchContentTypes"), p = u("edit"), r = u({ yaml: "", data: { columns: [], type: "collection" } }), w = u({}), x = u(""), i = G(), b = H(), I = u(!1), _ = u(!0), C = u(""), A = m(() => [
17
+ // {
18
+ // name: "YAML",
19
+ // id: "monaco",
20
+ // },
21
+ {
22
+ name: s("cms.builder.edit"),
23
+ id: "edit"
24
+ },
25
+ {
26
+ name: s("cms.builder.preview"),
27
+ id: "preview"
28
+ }
29
+ ]), a = m(() => {
30
+ if (typeof i.params.collection == "string" && typeof i.params.contentId == "string")
31
+ return i.params.collection;
32
+ const e = i.params.id;
33
+ return e === "edit" ? i.params.collection : e;
34
+ }), g = m(() => typeof i.params.contentId == "string" ? i.params.contentId : null), L = m(() => {
35
+ if (a.value && g.value)
36
+ return `/collections/${a.value}/${g.value}`;
37
+ const e = i.query.from;
38
+ return typeof e == "string" && e.startsWith("/") ? e : null;
39
+ }), N = m(() => {
40
+ if (C.value)
41
+ return C.value;
42
+ const e = i.query.fromLabel;
43
+ return typeof e == "string" && e.trim() ? e.trim() : null;
44
+ }), F = m(() => {
45
+ const o = [
46
+ {
47
+ label: x.value || a.value,
48
+ route: `collections/${a.value}`
49
+ },
50
+ {
51
+ label: s("cms.collections.edit")
52
+ }
53
+ ];
54
+ return L.value && N.value && o.splice(1, 0, {
55
+ label: N.value,
56
+ route: L.value
57
+ }), o;
58
+ }), B = (e) => {
59
+ if (e) {
60
+ if (e.startsWith("/")) {
61
+ b.push(e);
62
+ return;
63
+ }
64
+ b.push(`/${e}`);
65
+ }
66
+ }, U = async () => {
67
+ var e;
68
+ try {
69
+ if (_.value = !0, !a.value)
70
+ return;
71
+ if (g.value) {
72
+ const f = await fetch(
73
+ `/api/cms/${a.value}/${g.value}`
74
+ );
75
+ if (f.ok) {
76
+ const c = await f.json(), y = Array.isArray(c == null ? void 0 : c.rows) ? c.rows[0] : c;
77
+ y != null && y.title && (C.value = y.title);
78
+ }
79
+ }
80
+ const t = await (await fetch(`/api/cms-type/${a.value}`)).json(), l = {
81
+ ...t,
82
+ columns: Array.isArray(t.columns) ? t.columns : (e = Object.entries((t == null ? void 0 : t.columns) || {})) == null ? void 0 : e.map(([f, c]) => ({
83
+ ...c,
84
+ name: f
85
+ }))
86
+ };
87
+ r.value = {
88
+ ...r.value,
89
+ data: l
90
+ }, x.value = l.title || l.name;
91
+ } catch (o) {
92
+ console.error(o);
93
+ } finally {
94
+ _.value = !1, I.value = !0;
95
+ }
96
+ }, V = async () => {
97
+ var e, o;
98
+ try {
99
+ if (await w.value.validate()) {
100
+ $({
101
+ type: "warning",
102
+ title: s("cms.common.actions.warning"),
103
+ message: s("cms.builder.editFieldFailed")
104
+ });
105
+ return;
106
+ }
107
+ const l = a.value;
108
+ if (!l)
109
+ return;
110
+ const f = await fetch(
111
+ `/api/cms-type/${l}`,
112
+ {
113
+ method: "PUT",
114
+ headers: {
115
+ "Content-Type": "application/json"
116
+ },
117
+ body: JSON.stringify(p.value === "monaco" ? (e = r.value) == null ? void 0 : e.yaml : (o = r.value) == null ? void 0 : o.data)
118
+ }
119
+ );
120
+ b.back(), j && j(), $({
121
+ type: "success",
122
+ title: s("cms.common.actions.success"),
123
+ message: s("cms.collections.collectionCreated")
124
+ });
125
+ } catch (t) {
126
+ console.error(t), $({
127
+ type: "error",
128
+ title: s("cms.common.actions.error"),
129
+ message: s("cms.collections.collectionCreationFailed")
130
+ });
131
+ }
132
+ };
133
+ return S(() => {
134
+ U();
135
+ }), (e, o) => (v(), h("div", X, [
136
+ q(P, {
137
+ items: F.value,
138
+ loading: _.value,
139
+ onNavigate: B
140
+ }, null, 8, ["items", "loading"]),
141
+ n("div", Z, [
142
+ n("div", null, [
143
+ n("h1", ee, [
144
+ D(d(e.$t("cms.builder.editCollection")) + ": ", 1),
145
+ n("span", te, ' "' + d(x.value) + '" ', 1)
146
+ ]),
147
+ n("p", oe, d(e.$t("cms.builder.editContentForYourSite")), 1)
148
+ ]),
149
+ n("div", ne, [
150
+ n("a", {
151
+ onClick: o[0] || (o[0] = (t) => T(b).back()),
152
+ class: "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border bg-background hover:text-accent-foreground h-10 px-4 py-2 border-gray-300 text-gray-700 hover:bg-gray-50"
153
+ }, d(e.$t("cms.common.actions.back")), 1),
154
+ n("button", {
155
+ onClick: V,
156
+ class: "inline-flex items-center justify-center gap-2 whitespace-nowrap text-white rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 text-primary-foreground h-10 px-4 py-2 bg-blue-600 hover:bg-blue-700"
157
+ }, d(e.$t("cms.common.actions.save")), 1)
158
+ ])
159
+ ]),
160
+ n("div", se, [
161
+ n("div", ie, [
162
+ (v(!0), h(O, null, R(A.value, (t) => (v(), h("button", {
163
+ key: t.id,
164
+ onClick: (l) => p.value = t.id,
165
+ class: W([
166
+ "inline-flex flex-1 items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm data-[state=active]:bg-blue-50 data-[state=active]:text-blue-700 data-[state=active]:border-blue-200",
167
+ t.id === p.value ? "bg-blue-50 text-blue-700 border-blue-200" : ""
168
+ ])
169
+ }, d(t.name), 11, re))), 128))
170
+ ])
171
+ ]),
172
+ I.value ? (v(), h("div", ae, [
173
+ (v(), J(M(T(Q)[p.value]), {
174
+ yaml: r.value.yaml,
175
+ "onUpdate:yaml": o[1] || (o[1] = (t) => r.value.yaml = t),
176
+ data: r.value.data,
177
+ "onUpdate:data": o[2] || (o[2] = (t) => r.value.data = t),
178
+ form: w.value,
179
+ "onUpdate:form": o[3] || (o[3] = (t) => w.value = t)
180
+ }, null, 40, ["yaml", "data", "form"]))
181
+ ])) : Y("", !0)
182
+ ]));
183
+ }
184
+ });
185
+ export {
186
+ ve as default
187
+ };
@@ -68,5 +68,5 @@ const d = { class: "rounded-xl text-card-foreground shadow-lg bg-white dark:bg-s
68
68
  }
69
69
  };
70
70
  export {
71
- b as _
71
+ b as default
72
72
  };
@@ -1,17 +1,19 @@
1
- import { defineComponent as g, ref as m, openBlock as h, createElementBlock as v, createElementVNode as t, unref as a, createVNode as l, toDisplayString as d, createTextVNode as y } from "vue";
2
- import { useRouter as x, useRoute as b } from "vue-router";
3
- import { _ as w } from "./MonacoEditor.vue_vue_type_script_setup_true_lang-B1DrxmQX.js";
4
- import { ArrowLeft as k, Save as _ } from "lucide-vue-next";
5
- import { useI18n as V } from "vue-i18n";
6
- import { notify as c } from "@opengis/core";
7
- import { inputs as q, VForm as S } from "@opengis/form";
8
- const C = { class: "space-y-6 max-w-7xl mx-auto" }, M = { class: "flex items-center justify-between" }, N = { class: "flex items-center gap-4" }, $ = { class: "text-2xl font-semibold text-gray-900 dark:text-white" }, j = { class: "flex items-center space-x-3" }, A = { class: "max-w-[1000px]" }, D = /* @__PURE__ */ g({
1
+ import { defineComponent as g, defineAsyncComponent as v, ref as m, openBlock as y, createElementBlock as x, createElementVNode as o, unref as a, createVNode as c, toDisplayString as d, createTextVNode as w } from "vue";
2
+ import { useRouter as b, useRoute as k } from "vue-router";
3
+ import { ArrowLeft as _, Save as V } from "lucide-vue-next";
4
+ import { useI18n as q } from "vue-i18n";
5
+ import { notify as l } from "@opengis/core";
6
+ import { inputs as C, VForm as E } from "@opengis/form";
7
+ const M = { class: "space-y-6 max-w-7xl mx-auto" }, S = { class: "flex items-center justify-between" }, A = { class: "flex items-center gap-4" }, N = { class: "text-2xl font-semibold text-gray-900 dark:text-white" }, $ = { class: "flex items-center space-x-3" }, j = { class: "max-w-[1000px]" }, D = /* @__PURE__ */ g({
9
8
  __name: "MenuAddPage",
10
- setup(E) {
11
- q["vs-input-monaco-editor"] = w;
12
- const { t: e } = V(), u = x();
13
- b();
14
- const p = m([
9
+ setup(F) {
10
+ const p = v(
11
+ () => import("./MonacoEditor-Db-3Jc3E.js")
12
+ );
13
+ C["vs-input-monaco-editor"] = p;
14
+ const { t: e } = q(), u = b();
15
+ k();
16
+ const f = m([
15
17
  {
16
18
  key: "name",
17
19
  title: e("cms.menu.form.name"),
@@ -48,63 +50,66 @@ const C = { class: "space-y-6 max-w-7xl mx-auto" }, M = { class: "flex items-cen
48
50
  language: "yaml",
49
51
  theme: "vs-light"
50
52
  }
51
- ]), r = m({}), i = m({}), f = async () => {
53
+ ]), r = m({}), i = m({}), h = async () => {
52
54
  try {
53
55
  if (await i.value.validate()) {
54
- c({
56
+ l({
55
57
  type: "warning",
56
58
  title: e("cms.common.actions.warning"),
57
59
  message: e("cms.menu.createMenuFailed")
58
60
  });
59
61
  return;
60
62
  }
61
- await fetch("/api/cms-menu", {
63
+ const t = await fetch("/api/cms-menu", {
62
64
  method: "POST",
63
65
  headers: {
64
66
  "Content-Type": "application/json"
65
67
  },
66
68
  body: JSON.stringify(r.value)
67
- }), c({
69
+ });
70
+ if (!t.ok)
71
+ throw new Error(`Failed to create menu: ${t.status}`);
72
+ l({
68
73
  title: e("cms.common.success"),
69
74
  type: "success",
70
75
  message: e("cms.common.successMessage")
71
76
  }), r.value = {}, u.push("/menu");
72
77
  } catch (s) {
73
- console.log(s), c({
78
+ console.log(s), l({
74
79
  title: e("cms.common.error"),
75
80
  type: "error",
76
81
  message: e("cms.common.errorMessage")
77
82
  });
78
83
  }
79
84
  };
80
- return (s, o) => (h(), v("div", C, [
81
- t("div", M, [
82
- t("div", N, [
83
- t("button", {
84
- onClick: o[0] || (o[0] = (n) => a(u).back()),
85
+ return (s, t) => (y(), x("div", M, [
86
+ o("div", S, [
87
+ o("div", A, [
88
+ o("button", {
89
+ onClick: t[0] || (t[0] = (n) => a(u).back()),
85
90
  class: "p-2 text-gray-500 rounded-full hover:text-gray-900 dark:text-gray-400 dark:hover:text-white hover:bg-gray-100 dark:hover:bg-gray-700"
86
91
  }, [
87
- l(a(k), { class: "w-5 h-5" })
92
+ c(a(_), { class: "w-5 h-5" })
88
93
  ]),
89
- t("h1", $, d(s.$t("cms.menu.menuAdd")), 1)
94
+ o("h1", N, d(s.$t("cms.menu.menuAdd")), 1)
90
95
  ]),
91
- t("div", j, [
92
- t("button", {
93
- onClick: f,
96
+ o("div", $, [
97
+ o("button", {
98
+ onClick: h,
94
99
  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"
95
100
  }, [
96
- l(a(_), { class: "w-4 h-4 mr-2" }),
97
- y(" " + d(s.$t("cms.common.actions.save")), 1)
101
+ c(a(V), { class: "w-4 h-4 mr-2" }),
102
+ w(" " + d(s.$t("cms.common.actions.save")), 1)
98
103
  ])
99
104
  ])
100
105
  ]),
101
- t("div", A, [
102
- l(a(S), {
103
- schema: p.value,
106
+ o("div", j, [
107
+ c(a(E), {
108
+ schema: f.value,
104
109
  modelValue: r.value,
105
- "onUpdate:modelValue": o[1] || (o[1] = (n) => r.value = n),
110
+ "onUpdate:modelValue": t[1] || (t[1] = (n) => r.value = n),
106
111
  form: i.value,
107
- "onUpdate:form": o[2] || (o[2] = (n) => i.value = n)
112
+ "onUpdate:form": t[2] || (t[2] = (n) => i.value = n)
108
113
  }, null, 8, ["schema", "modelValue", "form"])
109
114
  ])
110
115
  ]));
@@ -0,0 +1,125 @@
1
+ import { defineComponent as x, defineAsyncComponent as m, ref as i, useModel as V, onBeforeMount as k, openBlock as I, createElementBlock as A, Fragment as q, createVNode as s, unref as a, createElementVNode as N, createTextVNode as U, toDisplayString as B } from "vue";
2
+ import { Plus as E } from "lucide-vue-next";
3
+ import { useI18n as F } from "vue-i18n";
4
+ import { inputs as O, VForm as S } from "@opengis/form";
5
+ import { notify as C } from "@opengis/core";
6
+ const R = /* @__PURE__ */ x({
7
+ __name: "MenuBody",
8
+ props: {
9
+ modelValue: {},
10
+ modelModifiers: {}
11
+ },
12
+ emits: ["update:modelValue"],
13
+ setup(f) {
14
+ const v = m(() => import("./MenuList-DFEBS0NB.js")), y = m(() => import("./AddNewItemInTree-05PSSEFi.js")), g = m(
15
+ () => import("./MonacoEditor-Db-3Jc3E.js")
16
+ );
17
+ O["vs-input-monaco-editor"] = g;
18
+ const { t: r } = F(), l = i(!1), d = i(null), n = V(f, "modelValue"), u = i({}), h = async (t) => {
19
+ try {
20
+ if (await u.value.validate()) {
21
+ C({
22
+ type: "warning",
23
+ title: r("cms.common.actions.warning"),
24
+ message: r("cms.menu.createMenuFailed")
25
+ });
26
+ return;
27
+ }
28
+ l.value = !1, t.id = Math.random().toString(36).substr(2, 9), t.children = [], n.value.items.unshift(t);
29
+ } catch (o) {
30
+ console.log(o);
31
+ }
32
+ }, w = i([
33
+ {
34
+ key: "name",
35
+ title: r("cms.common.title"),
36
+ type: "text",
37
+ placeholder: r("cms.common.title"),
38
+ required: !0,
39
+ validators: ["required"]
40
+ },
41
+ {
42
+ key: "description",
43
+ title: r("cms.common.description"),
44
+ type: "text",
45
+ placeholder: r("cms.common.description"),
46
+ required: !0,
47
+ validators: ["required"]
48
+ },
49
+ {
50
+ key: "locale",
51
+ title: r("cms.menu.form.language"),
52
+ type: "select",
53
+ placeholder: r("cms.menu.form.language"),
54
+ required: !0,
55
+ options: [
56
+ { text: "Ukrainian", id: "uk" },
57
+ { text: "English", id: "en" }
58
+ ],
59
+ validators: ["required"]
60
+ }
61
+ ]), c = (t) => {
62
+ let o = [];
63
+ for (const e in t)
64
+ typeof t[e] == "object" ? o.push({
65
+ title: e,
66
+ value: "",
67
+ id: Math.random().toString(36).substr(2, 9),
68
+ children: c(t[e])
69
+ }) : o.push({
70
+ title: e,
71
+ value: t[e],
72
+ id: Math.random().toString(36).substr(2, 9),
73
+ children: []
74
+ });
75
+ return o;
76
+ }, M = (t) => {
77
+ n.value.items = t;
78
+ }, b = (t) => {
79
+ p(n.value.items, t.id);
80
+ };
81
+ function p(t, o) {
82
+ for (let e = t.length - 1; e >= 0; e--) {
83
+ if (t[e].id === o)
84
+ return t.splice(e, 1), !0;
85
+ if (t[e].children && t[e].children.length && p(t[e].children, o))
86
+ return !0;
87
+ }
88
+ return !1;
89
+ }
90
+ return k(() => {
91
+ Array.isArray(n.value.items) || (n.value.items = c(n.value.items));
92
+ }), (t, o) => (I(), A(q, null, [
93
+ s(a(S), {
94
+ schema: w.value,
95
+ modelValue: n.value,
96
+ "onUpdate:modelValue": o[0] || (o[0] = (e) => n.value = e),
97
+ form: u.value,
98
+ "onUpdate:form": o[1] || (o[1] = (e) => u.value = e)
99
+ }, null, 8, ["schema", "modelValue", "form"]),
100
+ N("button", {
101
+ onClick: o[2] || (o[2] = (e) => l.value = !0),
102
+ class: "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium w-min ml-auto my-6 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"
103
+ }, [
104
+ s(a(E), { class: "w-4 h-4 mr-2" }),
105
+ U(" " + B(t.$t("cms.menu.createMenu")), 1)
106
+ ]),
107
+ s(a(y), {
108
+ isOpen: l.value,
109
+ "onUpdate:isOpen": o[3] || (o[3] = (e) => l.value = e),
110
+ form: d.value,
111
+ "onUpdate:form": o[4] || (o[4] = (e) => d.value = e),
112
+ onAddNewItem: h
113
+ }, null, 8, ["isOpen", "form"]),
114
+ s(a(v), {
115
+ class: "px-2",
116
+ list: n.value.items,
117
+ "onUpdate:list": M,
118
+ "onDelete:item": b
119
+ }, null, 8, ["list"])
120
+ ], 64));
121
+ }
122
+ });
123
+ export {
124
+ R as default
125
+ };