@oneclick.dev/cms-core-modules 0.0.122 → 0.0.124
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ContentEditor-CoJjsV-m.js → ContentEditor-BcIUumah.js} +63 -59
- package/dist/{ContentEditor-DIwqplfB.mjs → ContentEditor-DX1bTQKs.mjs} +27894 -26319
- package/dist/{Detail-Dk8E6_uF.mjs → Detail-B7pe808q.mjs} +15 -14
- package/dist/Detail-BESGmY7z.js +1 -0
- package/dist/{Detail-Cn9Bk0u0.mjs → Detail-B_Q7Qkuz.mjs} +26 -25
- package/dist/Detail-CNiLIEh9.js +1 -0
- package/dist/{Detail-B_scnidb.mjs → Detail-DNxAzeCs.mjs} +35 -34
- package/dist/Detail-t3tOcy3X.js +1 -0
- package/dist/Editor-D4evcdhv.mjs +768 -0
- package/dist/Editor-gLLtuJbY.js +1 -0
- package/dist/FormStatusBadge.vue_vue_type_script_setup_true_lang-BjKpsqT9.js +1 -0
- package/dist/FormStatusBadge.vue_vue_type_script_setup_true_lang-D5v5AhLe.mjs +76 -0
- package/dist/Knowledge-B66vxz--.js +1 -0
- package/dist/Knowledge-BnMTTuJ7.mjs +742 -0
- package/dist/{NewReservationDialog.vue_vue_type_script_setup_true_lang-bZidw6RT.mjs → NewReservationDialog.vue_vue_type_script_setup_true_lang-8I_Z9cD_.mjs} +530 -530
- package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-BVE_uURZ.js +1 -0
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-BdFa-xNf.mjs +3566 -0
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-DzPOadcU.js +925 -0
- package/dist/Overview-BE4uYPx0.mjs +745 -0
- package/dist/Overview-CQRpFhbJ.mjs +286 -0
- package/dist/Overview-CTs7sX4d.js +1 -0
- package/dist/Overview-Cj89XXKN.js +1 -0
- package/dist/Overview-D_c18mbR.mjs +248 -0
- package/dist/Overview-g4Rcj245.js +1 -0
- package/dist/TableCalculationWidget-CkQPrVUd.js +59 -0
- package/dist/TableCalculationWidget-CrqcLGfU.mjs +254 -0
- package/dist/TableDataWidget-7qvC3Egd.js +1 -0
- package/dist/TableDataWidget-DMTSoGRO.mjs +121 -0
- package/dist/TableOverviewCard-AFq-puJs.js +1 -0
- package/dist/TableOverviewCard-Ci0d4o4w.mjs +391 -0
- package/dist/TableResultView.vue_vue_type_script_setup_true_lang-CBn-Oxl9.mjs +534 -0
- package/dist/TableResultView.vue_vue_type_script_setup_true_lang-C_Lv-SmJ.js +1 -0
- package/dist/TableRowActionCard-BhdnnPaq.mjs +266 -0
- package/dist/TableRowActionCard-IzB6tNN-.js +1 -0
- package/dist/TableView-6mdrL3zx.js +4 -0
- package/dist/TableView-Du5nOE6R.mjs +8228 -0
- package/dist/Test-CzmOmi53.mjs +447 -0
- package/dist/Test-USDtNFY1.js +1 -0
- package/dist/UserDetail-DpUL3mhk.mjs +1483 -0
- package/dist/UserDetail-KRIfxaYd.js +1 -0
- package/dist/{agenda-BCKDYOeF.mjs → agenda-DWdbWUbb.mjs} +10 -9
- package/dist/agenda-r9Gl85GL.js +1 -0
- package/dist/cms-core-modules.css +1 -1
- package/dist/dateRangePresets-B-l5b_wR.mjs +48 -0
- package/dist/dateRangePresets-CPWqst_x.js +1 -0
- package/dist/fuse-Deb-Iq39.mjs +1473 -0
- package/dist/fuse-_CGUd5Zq.js +1 -0
- package/dist/{index-DU3Ib10Z.mjs → index-B_qaX29C.mjs} +7 -6
- package/dist/index-CQuN5rKx.js +1 -0
- package/dist/index-CnDGeInm.js +1 -0
- package/dist/index-CqDTc5Ig.mjs +20 -0
- package/dist/index-CyvvAdt4.js +1 -0
- package/dist/index-DIRD7t5_.mjs +20 -0
- package/dist/index-OJuBYR60.mjs +57 -0
- package/dist/{index-Bk3yLv_G.js → index-yHLT6gaZ.js} +3 -3
- package/dist/index.cjs.js +1 -1
- package/dist/index.mjs +671 -118
- package/dist/{orders-CElKNc1v.mjs → orders-BfTLIm7U.mjs} +10 -9
- package/dist/orders-DUa2PVoa.js +1 -0
- package/dist/reports-ChCsd1Gk.mjs +1107 -0
- package/dist/reports-DmJPm8uP.js +158 -0
- package/dist/row-item-C1dUyimV.mjs +204 -0
- package/dist/row-item-Cyo3m3MZ.js +1 -0
- package/dist/server-handlers.cjs.js +1 -1
- package/dist/server-handlers.mjs +1764 -605
- package/dist/src/appointments/components/edit/EventDialog/BookingsList.vue.d.ts +9 -3
- package/dist/src/appointments/components/edit/EventDialog/OrderDetailDialog.vue.d.ts +2 -0
- package/dist/src/appointments/components/edit/EventDialog/ReservationDetailDialog.vue.d.ts +4 -2
- package/dist/src/appointments/components/edit/dashboard/BookingsList.vue.d.ts +9 -3
- package/dist/src/appointments/pages/edit/orders.vue.d.ts +9 -3
- package/dist/src/appointments/pages/edit/reports.vue.d.ts +229 -1
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Container.d.ts +1 -1
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Row.d.ts +7 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Stack.d.ts +7 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/helpers/resizeHistory.d.ts +9 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/ElementEditorMenu.vue.d.ts +3 -1
- package/dist/src/firebaseAuthManager/components/DeleteUserDialog.vue.d.ts +25 -0
- package/dist/src/firebaseAuthManager/components/ReasonActionDialog.vue.d.ts +23 -0
- package/dist/src/firebaseAuthManager/components/UserStatusBadge.vue.d.ts +5 -0
- package/dist/src/firebaseAuthManager/config.d.ts +151 -0
- package/dist/src/firebaseAuthManager/index.d.ts +163 -0
- package/dist/src/firebaseAuthManager/index.vue.d.ts +14 -0
- package/dist/src/firebaseAuthManager/metadata.d.ts +2 -0
- package/dist/src/firebaseAuthManager/pages/Overview.vue.d.ts +2 -0
- package/dist/src/firebaseAuthManager/pages/UserDetail.vue.d.ts +2 -0
- package/dist/src/firebaseAuthManager/permissions.d.ts +5 -0
- package/dist/src/firebaseAuthManager/routes.d.ts +5 -0
- package/dist/src/firebaseAuthManager/server.d.ts +162 -0
- package/dist/src/firebaseAuthManager/types.d.ts +84 -0
- package/dist/src/formBuilder/components/FormPreviewDialog.vue.d.ts +12 -0
- package/dist/src/formBuilder/components/FormStatusBadge.vue.d.ts +9 -0
- package/dist/src/formBuilder/config.d.ts +31 -0
- package/dist/src/formBuilder/index.d.ts +44 -0
- package/dist/src/formBuilder/index.vue.d.ts +14 -0
- package/dist/src/formBuilder/lib/forms.d.ts +11 -0
- package/dist/src/formBuilder/metadata.d.ts +2 -0
- package/dist/src/formBuilder/pages/Editor.vue.d.ts +2 -0
- package/dist/src/formBuilder/pages/Overview.vue.d.ts +2 -0
- package/dist/src/formBuilder/permissions.d.ts +5 -0
- package/dist/src/formBuilder/routes.d.ts +5 -0
- package/dist/src/formBuilder/server.d.ts +87 -0
- package/dist/src/formBuilder/tools.d.ts +1 -0
- package/dist/src/formBuilder/types.d.ts +46 -0
- package/dist/src/helpbot/composables/useHelpbotApi.d.ts +18 -0
- package/dist/src/helpbot/config.d.ts +17 -0
- package/dist/src/helpbot/index.d.ts +29 -0
- package/dist/src/helpbot/index.vue.d.ts +2 -0
- package/dist/src/helpbot/metadata.d.ts +2 -0
- package/dist/src/helpbot/pages/Knowledge.vue.d.ts +4 -0
- package/dist/src/helpbot/pages/Overview.vue.d.ts +2 -0
- package/dist/src/helpbot/pages/Test.vue.d.ts +4 -0
- package/dist/src/helpbot/permissions.d.ts +5 -0
- package/dist/src/helpbot/routes.d.ts +5 -0
- package/dist/src/helpbot/types.d.ts +42 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/server-handlers.d.ts +2 -0
- package/dist/src/table/chat-components/TableCalculationWidget.vue.d.ts +15 -0
- package/dist/src/table/chat-components/TableDataWidget.vue.d.ts +15 -0
- package/dist/src/table/chat-components/TableOverviewCard.vue.d.ts +61 -0
- package/dist/src/table/chat-components/TableResultView.vue.d.ts +48 -0
- package/dist/src/table/chat-components/TableRowActionCard.vue.d.ts +15 -0
- package/dist/src/table/components/filters/DialogTableFilterOptionItem.vue.d.ts +16 -0
- package/dist/src/table/components/filters/NumberComparisonFilter.vue.d.ts +12 -0
- package/dist/src/table/components/filters/NumberComparisonFilterSettings.vue.d.ts +12 -0
- package/dist/src/table/components/filters/NumberRangeFilter.vue.d.ts +12 -0
- package/dist/src/table/components/filters/NumberRangeFilterSettings.vue.d.ts +12 -0
- package/dist/src/table/components/filters/filter-utils.d.ts +14 -0
- package/dist/src/table/composables/useTableAgentTools.d.ts +33 -0
- package/dist/src/table/index.d.ts +339 -0
- package/dist/src/table/tool-sandbox.d.ts +13 -0
- package/dist/src/table/tool-utils.d.ts +11 -0
- package/dist/src/table/tools.d.ts +333 -1
- package/dist/src/table/types.d.ts +79 -0
- package/dist/tool-sandbox-DdkMLkDK.mjs +182 -0
- package/dist/tool-sandbox-DoF1PsyS.js +115 -0
- package/dist/types-9N-DKxNj.mjs +250 -0
- package/dist/types-BMraG1kN.js +1 -0
- package/dist/types-Cem0vPo_.js +1 -0
- package/dist/types-ibC3-e1N.mjs +2630 -0
- package/dist/useHelpbotApi-BIIungOh.js +1 -0
- package/dist/useHelpbotApi-HC9JSiSn.mjs +229 -0
- package/dist/useTableAgentTools-D5mzGf3A.js +1 -0
- package/dist/useTableAgentTools-DcN3kYRL.mjs +131 -0
- package/dist/vee-validate-zod-BQElPD0m.js +1 -0
- package/dist/vee-validate-zod-CN16K2x9.mjs +1780 -0
- package/package.json +17 -17
- package/src/formBuilder/tools.ts +1 -0
- package/src/table/tools.ts +304 -1
- package/dist/Detail-BCUUNWvp.js +0 -1
- package/dist/Detail-DGg_xXZc.js +0 -1
- package/dist/Detail-Sc2qZdxj.js +0 -1
- package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-BdZbcubW.js +0 -1
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-BYSeUW_V.js +0 -925
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-DwAUYR8p.mjs +0 -5021
- package/dist/TableView-Ctnep-Qu.mjs +0 -6247
- package/dist/TableView-DJqyJL9L.js +0 -4
- package/dist/agenda-B54F8cEr.js +0 -1
- package/dist/orders-BMosTk6r.js +0 -1
- package/dist/reports-BQT_GZzU.js +0 -158
- package/dist/reports-DksZCTOw.mjs +0 -837
- package/dist/vee-validate-zod-SjDT8X35.mjs +0 -4404
- package/dist/vee-validate-zod-VCmLnrtQ.js +0 -1
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { defineComponent as B, inject as Q, ref as R, resolveComponent as i, openBlock as d, createBlock as O, withCtx as s, createVNode as n, createElementVNode as o, createTextVNode as v, isRef as N, unref as e, createElementBlock as b, toDisplayString as _, createCommentVNode as f, watch as ee, Fragment as X, renderList as H, normalizeClass as te, computed as oe, onMounted as ne, provide as se } from "vue";
|
|
2
|
-
import { u as W, a as S, t as le,
|
|
3
|
-
import { r as
|
|
4
|
-
import { ChevronsUpDown as
|
|
5
|
-
import { useModulePermissions as
|
|
6
|
-
import { t as
|
|
2
|
+
import { u as W, a as S, t as le, b as ie } from "./vee-validate-zod-CN16K2x9.mjs";
|
|
3
|
+
import { r as F } from "./countries-BTPvmrsb.mjs";
|
|
4
|
+
import { ChevronsUpDown as ae, Search as de, Check as re, X as ce, Tag as ue, ChevronRight as pe, Trash as me, Loader2 as K } from "lucide-vue-next";
|
|
5
|
+
import { useModulePermissions as fe, useModuleRoute as _e, useConfirmation as xe, useFirebaseIntegration as ve, useModuleBreadcrumbs as be } from "@oneclick.dev/cms-kit";
|
|
6
|
+
import { t as j } from "./index-RLz1QPrf.mjs";
|
|
7
|
+
import { o as ge, p as J, c as q, s as E, a as he } from "./types-ibC3-e1N.mjs";
|
|
7
8
|
const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2" }, ye = {
|
|
8
9
|
key: 0,
|
|
9
10
|
class: "text-red-500 text-sm mt-1"
|
|
@@ -103,7 +104,7 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
|
|
|
103
104
|
setup(P) {
|
|
104
105
|
const { errors: x } = W(), { value: l } = S("countries");
|
|
105
106
|
return ee(l, (u) => {
|
|
106
|
-
let a = u?.sort((g, t) => !g || !t ? 0 :
|
|
107
|
+
let a = u?.sort((g, t) => !g || !t ? 0 : F.find((m) => m.cca2 === g)?.name.common.localeCompare(F.find((m) => m.cca2 === t)?.name.common)), r = !0;
|
|
107
108
|
for (let g = 0; g < u.length; g++)
|
|
108
109
|
if (u[g] !== l.value[g]) {
|
|
109
110
|
r = !1;
|
|
@@ -140,8 +141,8 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
|
|
|
140
141
|
class: "justify-between"
|
|
141
142
|
}, {
|
|
142
143
|
default: s(() => [
|
|
143
|
-
o("span", Te, _(e(l)?.length > 0 ? e(l).slice(0, 4).map((y) => e(
|
|
144
|
-
n(e(
|
|
144
|
+
o("span", Te, _(e(l)?.length > 0 ? e(l).slice(0, 4).map((y) => e(F).find((L) => L.cca2 === y)?.name.common).join(", ") : "Select countries"), 1),
|
|
145
|
+
n(e(ae), { class: "ml-2 size-4 shrink-0 opacity-50" })
|
|
145
146
|
]),
|
|
146
147
|
_: 1
|
|
147
148
|
})
|
|
@@ -159,7 +160,7 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
|
|
|
159
160
|
placeholder: "Find country..."
|
|
160
161
|
}),
|
|
161
162
|
o("span", Ue, [
|
|
162
|
-
n(e(
|
|
163
|
+
n(e(de), { class: "size-4 text-muted-foreground" })
|
|
163
164
|
])
|
|
164
165
|
]),
|
|
165
166
|
n(C, null, {
|
|
@@ -170,7 +171,7 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
|
|
|
170
171
|
}),
|
|
171
172
|
n(M, { class: "max-h-72 overflow-y-scroll" }, {
|
|
172
173
|
default: s(() => [
|
|
173
|
-
(d(!0), b(X, null, H(e(
|
|
174
|
+
(d(!0), b(X, null, H(e(F), (y) => (d(), O(T, {
|
|
174
175
|
key: y.cca2,
|
|
175
176
|
value: y.cca2
|
|
176
177
|
}, {
|
|
@@ -179,7 +180,7 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
|
|
|
179
180
|
o("span", Fe, _(y.name.common), 1),
|
|
180
181
|
n(I, null, {
|
|
181
182
|
default: s(() => [
|
|
182
|
-
n(e(
|
|
183
|
+
n(e(re), { class: "size-4" })
|
|
183
184
|
]),
|
|
184
185
|
_: 1
|
|
185
186
|
})
|
|
@@ -200,8 +201,8 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
|
|
|
200
201
|
]),
|
|
201
202
|
e(l)?.length > 0 ? (d(), b("div", Ee, [
|
|
202
203
|
(d(!0), b(X, null, H(e(l), (y) => (d(), b("div", Pe, [
|
|
203
|
-
o("div", Be, _(e(
|
|
204
|
-
o("p", De, _(e(
|
|
204
|
+
o("div", Be, _(e(F).find((L) => L.cca2 === y)?.flag), 1),
|
|
205
|
+
o("p", De, _(e(F).find((L) => L.cca2 === y)?.name.common), 1),
|
|
205
206
|
n(g, {
|
|
206
207
|
variant: "ghost",
|
|
207
208
|
size: "icon",
|
|
@@ -209,7 +210,7 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
|
|
|
209
210
|
class: "hidden group-hover:flex ml-auto size-6"
|
|
210
211
|
}, {
|
|
211
212
|
default: s(() => [
|
|
212
|
-
n(e(
|
|
213
|
+
n(e(ce), { class: "size-3" })
|
|
213
214
|
]),
|
|
214
215
|
_: 1
|
|
215
216
|
}, 8, ["onClick"])
|
|
@@ -453,7 +454,7 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
|
|
|
453
454
|
}), bt = { class: "relative @container" }, gt = { class: "flex flex-row gap-4 justify-between max-w-5xl mx-auto mt-4 mb-6" }, ht = { class: "flex items-center" }, Ct = { class: "text-lg font-semibold mx-2" }, wt = { class: "flex flex-col @3xl:flex-row gap-4 max-w-5xl mx-auto pb-24" }, yt = { class: "flex flex-col gap-4 w-full @3xl:w-2/3" }, kt = { class: "flex flex-col gap-4 w-full @3xl:w-1/3" }, $t = {
|
|
454
455
|
key: 0,
|
|
455
456
|
class: "fixed bottom-4 left-0 md:left-12 right-0 min-w-xs max-w-5xl w-[calc(100%-2rem)] md:w-[calc(100%-5rem)] xl:w-[calc(100%-2rem)] h-16 border border-white/10 backdrop-blur-sm border-t border-border flex items-center justify-center px-4 mx-auto z-[9999] rounded-xl overflow-hidden shadow bg-[radial-gradient(#ffffff80,transparent)] dark:bg-[radial-gradient(#00000080,transparent)]"
|
|
456
|
-
}, Ot = { class: "w-full max-w-5xl flex items-center justify-end mx-auto" },
|
|
457
|
+
}, Ot = { class: "w-full max-w-5xl flex items-center justify-end mx-auto" }, Ut = /* @__PURE__ */ B({
|
|
457
458
|
__name: "Detail",
|
|
458
459
|
props: {
|
|
459
460
|
config: {
|
|
@@ -462,17 +463,17 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
|
|
|
462
463
|
}
|
|
463
464
|
},
|
|
464
465
|
setup(P) {
|
|
465
|
-
const x = P, { hasPermission: l, hasAnyPermission: u } =
|
|
466
|
-
id:
|
|
467
|
-
status:
|
|
468
|
-
title:
|
|
469
|
-
description:
|
|
466
|
+
const x = P, { hasPermission: l, hasAnyPermission: u } = fe(), { params: a, navigateTo: r } = _e(), { confirm: g } = xe(), t = ve(x.config.project), m = oe(() => !a.value.optionId || a.value.optionId === "new"), h = R(!1), C = R(!1), I = le(ge({
|
|
467
|
+
id: E().optional(),
|
|
468
|
+
status: E().optional(),
|
|
469
|
+
title: E().min(1, "Title is required"),
|
|
470
|
+
description: E().optional(),
|
|
470
471
|
price: J(
|
|
471
472
|
(p) => p === "" ? void 0 : p,
|
|
472
473
|
q.number().positive("Must be positive").optional()
|
|
473
474
|
),
|
|
474
|
-
countries:
|
|
475
|
-
condition:
|
|
475
|
+
countries: he(E()).optional(),
|
|
476
|
+
condition: E(),
|
|
476
477
|
condition_min: J(
|
|
477
478
|
(p) => p === "" ? void 0 : p,
|
|
478
479
|
q.number().positive("Must be positive").optional()
|
|
@@ -481,7 +482,7 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
|
|
|
481
482
|
(p) => p === "" ? void 0 : p,
|
|
482
483
|
q.number().positive("Must be positive").optional()
|
|
483
484
|
)
|
|
484
|
-
})), { handleSubmit: T, errors: M, values: w, setValues: G } =
|
|
485
|
+
})), { handleSubmit: T, errors: M, values: w, setValues: G } = ie({
|
|
485
486
|
validationSchema: I,
|
|
486
487
|
initialValues: {
|
|
487
488
|
status: "published",
|
|
@@ -489,7 +490,7 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
|
|
|
489
490
|
condition: "always"
|
|
490
491
|
}
|
|
491
492
|
});
|
|
492
|
-
|
|
493
|
+
be(() => [
|
|
493
494
|
{ text: w.title ?? "New Option" }
|
|
494
495
|
]);
|
|
495
496
|
const D = T(async (p) => {
|
|
@@ -499,11 +500,11 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
|
|
|
499
500
|
let k = JSON.parse(JSON.stringify(p));
|
|
500
501
|
k.id = crypto.randomUUID();
|
|
501
502
|
const V = [...c, k], $ = x.config.shippingOptionsCollection.split(":");
|
|
502
|
-
await t.update($[0], null, { [$[1]]: V }), r(k.id),
|
|
503
|
+
await t.update($[0], null, { [$[1]]: V }), r(k.id), j.success("Shipping option created");
|
|
503
504
|
} else {
|
|
504
505
|
let k = JSON.parse(JSON.stringify(p));
|
|
505
506
|
const V = c.map((U) => U.id === a.value.optionId ? k : U), $ = x.config.shippingOptionsCollection.split(":");
|
|
506
|
-
await t.update($[0], null, { [$[1]]: V }), r(`${a.value.optionId}`),
|
|
507
|
+
await t.update($[0], null, { [$[1]]: V }), r(`${a.value.optionId}`), j.success("Shipping option updated");
|
|
507
508
|
}
|
|
508
509
|
C.value = !1;
|
|
509
510
|
}), z = async () => {
|
|
@@ -518,9 +519,9 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
|
|
|
518
519
|
let c = { ...[...await z() || []].find((U) => U.id === a.value.optionId) };
|
|
519
520
|
c.id = crypto.randomUUID(), c.status = "published", c.title = c.title + " (copy)";
|
|
520
521
|
const V = [...await z() || [], c], $ = x.config.shippingOptionsCollection.split(":");
|
|
521
|
-
await t.update($[0], null, { [$[1]]: V }), r(c.id),
|
|
522
|
+
await t.update($[0], null, { [$[1]]: V }), r(c.id), j.success("Option duplicated");
|
|
522
523
|
} catch {
|
|
523
|
-
|
|
524
|
+
j.error("Failed to duplicate option");
|
|
524
525
|
}
|
|
525
526
|
}, A = async () => {
|
|
526
527
|
if (await g("Are you sure you want to delete this option?"))
|
|
@@ -528,9 +529,9 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
|
|
|
528
529
|
const c = await z() || [];
|
|
529
530
|
if (c.length === 0 || !a.value.optionId) throw new Error("Error loading values");
|
|
530
531
|
const k = c.filter(($) => $.id !== a.value.optionId), V = x.config.shippingOptionsCollection.split(":");
|
|
531
|
-
await t.update(V[0], null, { [V[1]]: k }), r(""),
|
|
532
|
+
await t.update(V[0], null, { [V[1]]: k }), r(""), j.success("Option deleted");
|
|
532
533
|
} catch {
|
|
533
|
-
|
|
534
|
+
j.error("Failed to delete option");
|
|
534
535
|
}
|
|
535
536
|
};
|
|
536
537
|
return ne(() => {
|
|
@@ -545,11 +546,11 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
|
|
|
545
546
|
onClick: c[0] || (c[0] = (Vt) => e(r)(""))
|
|
546
547
|
}, {
|
|
547
548
|
default: s(() => [
|
|
548
|
-
n(e(
|
|
549
|
+
n(e(ue), { class: "size-4" })
|
|
549
550
|
]),
|
|
550
551
|
_: 1
|
|
551
552
|
}),
|
|
552
|
-
n(e(
|
|
553
|
+
n(e(pe), { class: "size-3" }),
|
|
553
554
|
o("h1", Ct, _(m.value ? "New Option" : e(w).title), 1)
|
|
554
555
|
]),
|
|
555
556
|
m.value ? f("", !0) : (d(), O(Z, {
|
|
@@ -584,7 +585,7 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
|
|
|
584
585
|
onClick: A
|
|
585
586
|
}, {
|
|
586
587
|
default: s(() => [
|
|
587
|
-
n(e(
|
|
588
|
+
n(e(me), { class: "size-4" }),
|
|
588
589
|
c[3] || (c[3] = v(" Delete option ", -1))
|
|
589
590
|
]),
|
|
590
591
|
_: 1
|
|
@@ -645,5 +646,5 @@ const Ce = { class: "flex flex-col gap-4" }, we = { class: "flex flex-col gap-2"
|
|
|
645
646
|
}
|
|
646
647
|
});
|
|
647
648
|
export {
|
|
648
|
-
|
|
649
|
+
Ut as default
|
|
649
650
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),S=require("./vee-validate-zod-BQElPD0m.js"),_=require("lucide-vue-next"),M=require("@oneclick.dev/cms-kit"),z=require("./index-ijdf0d9-.js"),v=require("./types-BMraG1kN.js"),K={class:"flex flex-col gap-4"},Z={class:"flex flex-col gap-2"},H={key:0,class:"text-red-500 text-sm mt-1"},Q={class:"flex flex-col gap-4"},W={class:"flex flex-col gap-2"},Y={key:0,class:"text-red-500 text-sm mt-1"},ee={class:"flex flex-col gap-4"},te={class:"flex flex-col gap-2"},oe={key:0,class:"text-red-500 text-sm mt-1"},le={class:"flex flex-col gap-4"},ne={class:"flex flex-col gap-2"},se={class:"flex items-center gap-2 mb-2"},ae={class:"flex items-center gap-2"},re=["src"],ce={key:0,class:"text-red-500 text-sm mt-1"},ie=e.defineComponent({__name:"Main",setup(A){const V=e.inject("sources"),{errors:p}=S.useFormContext(),{value:C}=S.useField("title"),{value:c}=S.useField("description"),{value:f}=S.useField("thumbnail"),{value:k}=S.useField("slug"),N=i=>{f.value=Array.isArray(i)?i[0]||"":i};function h(i){return i?i.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").trim().replace(/[-\s]+/g,"-"):""}return e.watch(C,(i,r)=>{(!k.value||h(r)===k.value)&&(k.value=h(i))}),(i,r)=>{const b=e.resolveComponent("Label"),B=e.resolveComponent("Input"),T=e.resolveComponent("Textarea"),$=e.resolveComponent("Button"),y=e.resolveComponent("MediaPickerDialog"),U=e.resolveComponent("CardContent"),D=e.resolveComponent("Card");return e.openBlock(),e.createBlock(D,null,{default:e.withCtx(()=>[e.createVNode(U,{class:"flex flex-col gap-4"},{default:e.withCtx(()=>[e.createElementVNode("div",K,[e.createElementVNode("div",Z,[e.createVNode(b,{for:"title",class:"text-sm mb-2"},{default:e.withCtx(()=>[...r[6]||(r[6]=[e.createTextVNode("Title",-1)])]),_:1}),e.createVNode(B,{type:"text",id:"title",placeholder:"Summer collection",modelValue:e.unref(C),"onUpdate:modelValue":r[0]||(r[0]=x=>e.isRef(C)?C.value=x:null)},null,8,["modelValue"]),e.unref(p).title?(e.openBlock(),e.createElementBlock("p",H,e.toDisplayString(e.unref(p).title),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Q,[e.createElementVNode("div",W,[e.createVNode(b,{for:"slug",class:"text-sm mb-2"},{default:e.withCtx(()=>[...r[7]||(r[7]=[e.createTextVNode("Slug",-1)])]),_:1}),e.createVNode(B,{id:"slug",placeholder:"summer-collection",modelValue:e.unref(k),"onUpdate:modelValue":r[1]||(r[1]=x=>e.isRef(k)?k.value=x:null)},null,8,["modelValue"]),e.unref(p).slug?(e.openBlock(),e.createElementBlock("p",Y,e.toDisplayString(e.unref(p).slug),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",ee,[e.createElementVNode("div",te,[e.createVNode(b,{for:"description",class:"text-sm mb-2"},{default:e.withCtx(()=>[...r[8]||(r[8]=[e.createTextVNode("Description",-1)])]),_:1}),e.createVNode(T,{id:"description",placeholder:"Fresh, vibrant, and bold. The perfect collection for the summer season.",modelValue:e.unref(c),"onUpdate:modelValue":r[2]||(r[2]=x=>e.isRef(c)?c.value=x:null)},null,8,["modelValue"]),e.unref(p).description?(e.openBlock(),e.createElementBlock("p",oe,e.toDisplayString(e.unref(p).description),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",le,[e.createElementVNode("div",ne,[e.createElementVNode("div",se,[e.createVNode(b,{for:"media",class:"text-sm"},{default:e.withCtx(()=>[...r[9]||(r[9]=[e.createTextVNode("Thumbnail",-1)])]),_:1}),e.unref(f)?(e.openBlock(),e.createBlock($,{key:0,variant:"ghost",size:"icon",onClick:r[3]||(r[3]=x=>f.value="")},{default:e.withCtx(()=>[e.createVNode(e.unref(_.X),{class:"size-4"})]),_:1})):e.createCommentVNode("",!0)]),e.createElementVNode("div",ae,[e.createVNode(y,{sources:e.unref(V),maxFiles:1,"initial-value":e.unref(f)?[e.unref(f)]:[],onSubmit:r[5]||(r[5]=x=>N(x))},{default:e.withCtx(()=>[e.createElementVNode("button",{onClick:r[4]||(r[4]=e.withModifiers(()=>{},["stop"])),tabindex:"-1",class:"cursor-pointer block"},[e.unref(f)?(e.openBlock(),e.createElementBlock("img",{key:1,src:e.unref(f),class:"size-42 rounded-md object-cover",draggable:"false"},null,8,re)):(e.openBlock(),e.createBlock($,{key:0,variant:"outline",class:"size-42 border-dashed cursor-pointer"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.ImagePlus))]),_:1}))])]),_:1},8,["sources","initial-value"]),e.unref(p).thumbnail?(e.openBlock(),e.createElementBlock("p",ce,e.toDisplayString(e.unref(p).thumbnail),1)):e.createCommentVNode("",!0)])])])]),_:1})]),_:1})}}}),de={class:"flex items-center gap-2"},ue={key:0,class:"size-3 rounded-full bg-green-500"},me={key:1,class:"size-3 rounded-full bg-blue-500"},pe=e.defineComponent({__name:"Status",setup(A){const{errors:V}=S.useFormContext(),{value:p}=S.useField("status");return(C,c)=>{const f=e.resolveComponent("SelectValue"),k=e.resolveComponent("SelectTrigger"),N=e.resolveComponent("SelectItem"),h=e.resolveComponent("SelectGroup"),i=e.resolveComponent("SelectContent"),r=e.resolveComponent("Select"),b=e.resolveComponent("CardContent"),B=e.resolveComponent("Card");return e.openBlock(),e.createBlock(B,null,{default:e.withCtx(()=>[e.createVNode(b,null,{default:e.withCtx(()=>[c[3]||(c[3]=e.createElementVNode("p",{class:"text-md font-semibold mb-2"},"Status",-1)),e.createVNode(r,{modelValue:e.unref(p),"onUpdate:modelValue":c[0]||(c[0]=T=>e.isRef(p)?p.value=T:null),class:"w-full"},{default:e.withCtx(()=>[e.createVNode(k,{class:"w-full"},{default:e.withCtx(()=>[e.createElementVNode("div",de,[e.unref(p)==="published"?(e.openBlock(),e.createElementBlock("span",ue)):e.unref(p)==="draft"?(e.openBlock(),e.createElementBlock("span",me)):e.createCommentVNode("",!0),e.createVNode(f,{placeholder:"Status"})])]),_:1}),e.createVNode(i,null,{default:e.withCtx(()=>[e.createVNode(h,null,{default:e.withCtx(()=>[e.createVNode(N,{value:"published"},{default:e.withCtx(()=>[...c[1]||(c[1]=[e.createElementVNode("span",{class:"size-3 rounded-full bg-green-500"},null,-1),e.createTextVNode(" Published ",-1)])]),_:1}),e.createVNode(N,{value:"draft"},{default:e.withCtx(()=>[...c[2]||(c[2]=[e.createElementVNode("span",{class:"size-3 rounded-full bg-blue-500"},null,-1),e.createTextVNode(" Draft ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1})}}}),fe={class:"flex items-center justify-between gap-4"},xe={class:"text-sm text-muted-foreground"},ge={key:0,class:"border border-dashed rounded-lg p-6 text-center text-sm text-muted-foreground"},_e={key:1,class:"flex flex-col gap-3"},Ce={class:"flex items-center gap-3 p-3"},ve=["onClick"],Ve={key:1,class:"size-10 rounded-md border border-dashed flex items-center justify-center text-muted-foreground"},ke={class:"min-w-0"},Ne={class:"flex items-center gap-2"},he={class:"font-medium truncate"},be={key:0,class:"bg-green-500 text-green-950 px-2 py-1 rounded-lg text-xs"},ye={key:1,class:"bg-blue-500 text-blue-950 px-2 py-1 rounded-lg text-xs"},we={class:"flex items-center gap-1"},Se={key:0,class:"border-t p-4 flex flex-col gap-4"},Be={class:"grid grid-cols-1 @md:grid-cols-2 gap-4"},Ee={class:"flex flex-col gap-2"},Te={key:0,class:"text-red-500 text-sm mt-1"},$e={class:"flex flex-col gap-2"},ze={key:0,class:"text-red-500 text-sm mt-1"},De={class:"flex flex-col gap-2"},Ie={class:"flex items-center gap-2"},Ue={key:0,class:"size-3 rounded-full bg-green-500"},Me={key:1,class:"size-3 rounded-full bg-blue-500"},Ae={class:"flex flex-col gap-2"},Fe={class:"flex flex-col gap-2"},Pe={class:"flex items-center gap-2"},je=["src"],qe=e.defineComponent({__name:"Subcollections",setup(A){const V=e.inject("sources"),{errors:p}=S.useFormContext(),{value:C}=S.useField("subcollections"),c=e.ref([]),f=e.computed(()=>(Array.isArray(C.value)||(C.value=[]),C.value.map(N)));function k(l){return l?l.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").trim().replace(/[-\s]+/g,"-"):""}function N(l){const t=l;return t.id||(t.id=crypto.randomUUID()),t.type="manual",t.status||(t.status="draft"),t.slug||(t.slug=k(t.title)),delete t.seo,t}function h(){return{id:crypto.randomUUID(),title:"",type:"manual",description:"",thumbnail:"",slug:"",status:"draft"}}function i(){return Array.isArray(C.value)?C.value.map(N):[]}function r(l){C.value=l}function b(){const l=h();r([...i(),l]),c.value=[l.id]}function B(l){const t=i(),u=t.findIndex(n=>n.id===l.id),o=JSON.parse(JSON.stringify(l));o.id=crypto.randomUUID(),o.type="manual",o.title=`${o.title||"Untitled subcollection"} (copy)`,o.slug=x(o.slug?`${o.slug}-copy`:o.title,o.id),delete o.seo;const a=[...t];a.splice(u+1,0,o),r(a),c.value=[o.id]}function T(l){r(i().filter(t=>t.id!==l)),c.value=c.value.filter(t=>t!==l)}function $(l,t){const u=i(),o=u.findIndex(m=>m.id===l),a=t==="up"?o-1:o+1;if(o<0||a<0||a>=u.length)return;const n=[...u],[d]=n.splice(o,1);n.splice(a,0,d),r(n)}function y(l){c.value=c.value.includes(l)?c.value.filter(t=>t!==l):[...c.value,l]}function U(l,t){const u=l.title;l.title=t,(!l.slug||k(u)===l.slug)&&(l.slug=x(t,l.id))}function D(l,t){l.thumbnail=Array.isArray(t)?t[0]||"":t}function x(l,t){const u=k(l)||"subcollection",o=new Set(i().filter(d=>d.id!==t).map(d=>d.slug).filter(Boolean));if(!o.has(u))return u;let a=2,n=`${u}-${a}`;for(;o.has(n);)a++,n=`${u}-${a}`;return n}function P(l){l.slug=x(l.slug||l.title,l.id)}function E(l){return p.value?.[l]}return(l,t)=>{const u=e.resolveComponent("Button"),o=e.resolveComponent("AvatarImage"),a=e.resolveComponent("AvatarFallback"),n=e.resolveComponent("Avatar"),d=e.resolveComponent("Label"),m=e.resolveComponent("Input"),w=e.resolveComponent("SelectValue"),j=e.resolveComponent("SelectTrigger"),F=e.resolveComponent("SelectItem"),q=e.resolveComponent("SelectGroup"),L=e.resolveComponent("SelectContent"),O=e.resolveComponent("Select"),R=e.resolveComponent("Textarea"),G=e.resolveComponent("MediaPickerDialog"),J=e.resolveComponent("CardContent"),X=e.resolveComponent("Card");return e.openBlock(),e.createBlock(X,null,{default:e.withCtx(()=>[e.createVNode(J,{class:"flex flex-col gap-4"},{default:e.withCtx(()=>[e.createElementVNode("div",fe,[e.createElementVNode("div",null,[t[1]||(t[1]=e.createElementVNode("h3",{class:"text-lg font-semibold"},"Subcollections",-1)),e.createElementVNode("p",xe,e.toDisplayString(f.value.length)+" subcollections",1)]),e.createVNode(u,{variant:"outline",onClick:b},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Plus),{class:"size-4"}),t[2]||(t[2]=e.createTextVNode(" Add ",-1))]),_:1})]),f.value.length===0?(e.openBlock(),e.createElementBlock("div",ge," No subcollections yet. ")):(e.openBlock(),e.createElementBlock("div",_e,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,(s,I)=>(e.openBlock(),e.createElementBlock("div",{key:s.id,class:"border rounded-lg overflow-hidden"},[e.createElementVNode("div",Ce,[e.createElementVNode("button",{class:"flex items-center gap-3 min-w-0 flex-1 text-left cursor-pointer",onClick:g=>y(s.id)},[s.thumbnail?(e.openBlock(),e.createBlock(n,{key:0,class:"size-10 rounded-md"},{default:e.withCtx(()=>[e.createVNode(o,{src:s.thumbnail,class:"object-cover"},null,8,["src"]),e.createVNode(a,{class:"rounded-md"})]),_:2},1024)):(e.openBlock(),e.createElementBlock("div",Ve,[e.createVNode(e.unref(_.ImagePlus),{class:"size-4"})])),e.createElementVNode("div",ke,[e.createElementVNode("div",Ne,[e.createElementVNode("p",he,e.toDisplayString(s.title||"Untitled subcollection"),1),s.status==="published"?(e.openBlock(),e.createElementBlock("span",be,"Published")):(e.openBlock(),e.createElementBlock("span",ye,"Draft"))])])],8,ve),e.createElementVNode("div",we,[e.createVNode(u,{size:"icon",variant:"ghost",onClick:g=>$(s.id,"up"),disabled:I===0},{default:e.withCtx(()=>[e.createVNode(e.unref(_.ArrowUp),{class:"size-4"})]),_:1},8,["onClick","disabled"]),e.createVNode(u,{size:"icon",variant:"ghost",onClick:g=>$(s.id,"down"),disabled:I===f.value.length-1},{default:e.withCtx(()=>[e.createVNode(e.unref(_.ArrowDown),{class:"size-4"})]),_:1},8,["onClick","disabled"]),e.createVNode(u,{size:"icon",variant:"ghost",onClick:g=>B(s)},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Copy),{class:"size-4"})]),_:1},8,["onClick"]),e.createVNode(u,{size:"icon",variant:"ghost",onClick:g=>T(s.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Trash),{class:"size-4"})]),_:1},8,["onClick"]),e.createVNode(u,{size:"icon",variant:"ghost",onClick:g=>y(s.id)},{default:e.withCtx(()=>[c.value.includes(s.id)?(e.openBlock(),e.createBlock(e.unref(_.ChevronUp),{key:0,class:"size-4"})):(e.openBlock(),e.createBlock(e.unref(_.ChevronDown),{key:1,class:"size-4"}))]),_:2},1032,["onClick"])])]),c.value.includes(s.id)?(e.openBlock(),e.createElementBlock("div",Se,[e.createElementVNode("div",Be,[e.createElementVNode("div",Ee,[e.createVNode(d,{for:`subcollection-${s.id}-title`,class:"text-sm"},{default:e.withCtx(()=>[...t[3]||(t[3]=[e.createTextVNode("Title",-1)])]),_:1},8,["for"]),e.createVNode(m,{type:"text",id:`subcollection-${s.id}-title`,placeholder:"Summer dresses","model-value":s.title,"onUpdate:modelValue":g=>U(s,String(g||""))},null,8,["id","model-value","onUpdate:modelValue"]),E(`subcollections[${I}].title`)?(e.openBlock(),e.createElementBlock("p",Te,e.toDisplayString(E(`subcollections[${I}].title`)),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",$e,[e.createVNode(d,{for:`subcollection-${s.id}-slug`,class:"text-sm"},{default:e.withCtx(()=>[...t[4]||(t[4]=[e.createTextVNode("Slug",-1)])]),_:1},8,["for"]),e.createVNode(m,{id:`subcollection-${s.id}-slug`,placeholder:"summer-dresses",modelValue:s.slug,"onUpdate:modelValue":g=>s.slug=g,onBlur:g=>P(s)},null,8,["id","modelValue","onUpdate:modelValue","onBlur"]),E(`subcollections[${I}].slug`)?(e.openBlock(),e.createElementBlock("p",ze,e.toDisplayString(E(`subcollections[${I}].slug`)),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",De,[e.createVNode(d,{for:`subcollection-${s.id}-status`,class:"text-sm"},{default:e.withCtx(()=>[...t[5]||(t[5]=[e.createTextVNode("Status",-1)])]),_:1},8,["for"]),e.createVNode(O,{modelValue:s.status,"onUpdate:modelValue":g=>s.status=g},{default:e.withCtx(()=>[e.createVNode(j,{id:`subcollection-${s.id}-status`,class:"w-full"},{default:e.withCtx(()=>[e.createElementVNode("div",Ie,[s.status==="published"?(e.openBlock(),e.createElementBlock("span",Ue)):(e.openBlock(),e.createElementBlock("span",Me)),e.createVNode(w,{placeholder:"Status"})])]),_:2},1032,["id"]),e.createVNode(L,null,{default:e.withCtx(()=>[e.createVNode(q,null,{default:e.withCtx(()=>[e.createVNode(F,{value:"published"},{default:e.withCtx(()=>[...t[6]||(t[6]=[e.createElementVNode("span",{class:"size-3 rounded-full bg-green-500"},null,-1),e.createTextVNode(" Published ",-1)])]),_:1}),e.createVNode(F,{value:"draft"},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createElementVNode("span",{class:"size-3 rounded-full bg-blue-500"},null,-1),e.createTextVNode(" Draft ",-1)])]),_:1})]),_:1})]),_:1})]),_:2},1032,["modelValue","onUpdate:modelValue"])]),e.createElementVNode("div",Ae,[e.createVNode(d,{for:`subcollection-${s.id}-description`,class:"text-sm"},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode("Description",-1)])]),_:1},8,["for"]),e.createVNode(R,{id:`subcollection-${s.id}-description`,placeholder:"Fresh, vibrant, and bold. The perfect collection for the summer season.",modelValue:s.description,"onUpdate:modelValue":g=>s.description=g},null,8,["id","modelValue","onUpdate:modelValue"])]),e.createElementVNode("div",Fe,[e.createElementVNode("div",Pe,[e.createVNode(d,{for:`subcollection-${s.id}-media`,class:"text-sm"},{default:e.withCtx(()=>[...t[9]||(t[9]=[e.createTextVNode("Thumbnail",-1)])]),_:1},8,["for"]),s.thumbnail?(e.openBlock(),e.createBlock(u,{key:0,variant:"ghost",size:"icon",onClick:g=>s.thumbnail=""},{default:e.withCtx(()=>[e.createVNode(e.unref(_.X),{class:"size-4"})]),_:1},8,["onClick"])):e.createCommentVNode("",!0)]),e.createVNode(G,{sources:e.unref(V),maxFiles:1,"initial-value":s.thumbnail?[s.thumbnail]:[],onSubmit:g=>D(s,g)},{default:e.withCtx(()=>[e.createElementVNode("button",{onClick:t[0]||(t[0]=e.withModifiers(()=>{},["stop"])),tabindex:"-1",class:"cursor-pointer block"},[s.thumbnail?(e.openBlock(),e.createElementBlock("img",{key:1,src:s.thumbnail,class:"size-32 rounded-md object-cover",draggable:"false"},null,8,je)):(e.openBlock(),e.createBlock(u,{key:0,variant:"outline",class:"size-32 border-dashed cursor-pointer"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.ImagePlus))]),_:1}))])]),_:2},1032,["sources","initial-value","onSubmit"])])])):e.createCommentVNode("",!0)]))),128))]))]),_:1})]),_:1})}}}),Le={class:"relative @container"},Oe={class:"flex flex-row gap-4 justify-between max-w-5xl mx-auto mt-4 mb-6"},Re={class:"flex items-center"},Ge={class:"text-lg font-semibold mx-2"},Je={key:0,class:"bg-green-500 text-green-950 px-2 py-1 rounded-lg text-xs"},Xe={key:1,class:"bg-blue-500 text-blue-950 px-2 py-1 rounded-lg text-xs"},Ke={class:"flex flex-col @3xl:flex-row gap-4 max-w-5xl mx-auto pb-24"},Ze={class:"flex flex-col gap-4 w-full @3xl:w-2/3"},He={class:"flex flex-col gap-4 w-full @3xl:w-1/3"},Qe={key:0,class:"fixed bottom-4 left-0 md:left-12 right-0 min-w-xs max-w-5xl w-[calc(100%-2rem)] md:w-[calc(100%-5rem)] xl:w-[calc(100%-2rem)] h-16 border border-white/10 backdrop-blur-sm border-t border-border flex items-center justify-center px-4 mx-auto z-[9999] rounded-xl overflow-hidden shadow bg-[radial-gradient(#ffffff80,transparent)] dark:bg-[radial-gradient(#00000080,transparent)]"},We={class:"w-full max-w-5xl flex items-center justify-end mx-auto"},Ye=e.defineComponent({__name:"Detail",props:{config:{type:Object,required:!0}},setup(A){const V=A,{hasPermission:p,hasAnyPermission:C}=M.useModulePermissions(),{params:c,navigateTo:f}=M.useModuleRoute(),{confirm:k}=M.useConfirmation(),N=M.useFirebaseIntegration(V.config.project);e.provide("sources",V.config.allowedMediaSources),e.provide("defaultSource",V.config.defaultUploadMediaSource);const h=e.computed(()=>!c.value.collectionId||c.value.collectionId==="new"),i=e.ref(!1),r=v.objectType({field:v.stringType(),operator:v.enumType(["==","!=","<",">","<=",">=","in","not-in","array-contains","array-contains-any"]),value:v.anyType()}),b=v.objectType({title:v.stringType().min(1,"Title is required"),type:v.stringType(),description:v.stringType().optional(),thumbnail:v.stringType().optional(),slug:v.stringType(),conditions:v.arrayType(r).optional(),status:v.stringType()}),B=b.extend({id:v.stringType().min(1,"ID is required")}),T=S.toTypedSchema(b.extend({id:v.stringType().optional(),subcollections:v.arrayType(B).optional()})),{handleSubmit:$,values:y,setValues:U}=S.useForm({validationSchema:T,initialValues:{status:"draft",type:"manual",subcollections:[]}});M.useModuleBreadcrumbs(()=>[{text:h.value?"New Collection":y.title||"Collection"}]);const D=$(async o=>{i.value=!0;let a=await x()||[];if(h.value){let n=E(o);if(n.id=crypto.randomUUID(),await u(n.slug)){z.toast.error("Collection with this slug already exists"),i.value=!1;return}const d=[...a,n],m=V.config.collectionsCollection.split(":");await N.update(m[0],null,{[m[1]]:d}),f("/"),z.toast.success("Collection created")}else{let n=E(o);const d=a.map(w=>w.id===c.value.collectionId?n:w),m=V.config.collectionsCollection.split(":");await N.update(m[0],null,{[m[1]]:d}),f("/"),z.toast.success("Collection updated")}i.value=!1}),x=async()=>{if(!V.config.collectionsCollection)return[];const o=V.config.collectionsCollection.split(":");return o.length!==2?[]:(await N.get(o[0]))?.[o[1]]||[]},P=async()=>{const a=(await x()).find(n=>n.id===c.value.collectionId);U(a)},E=(o,a=!1)=>{const n=JSON.parse(JSON.stringify(o));return n.type||="manual",n.status||="draft",delete n.seo,n.subcollections=(n.subcollections||[]).map(d=>{const m={...d,id:a||!d.id?crypto.randomUUID():d.id,type:"manual",status:d.status||"draft",slug:d.slug||""};return delete m.seo,delete m.subcollections,m}),n},l=async()=>{try{let o=E(y,!0),a=o.slug+"-copy",n=2;for(;await u(a);)a=o.slug+"-copy-"+n,n++;o.id=crypto.randomUUID(),o.slug=a,o.status="draft",o.title=o.title+" (copy)";const m=[...await x()||[],o],w=V.config.collectionsCollection.split(":");await N.update(w[0],null,{[w[1]]:m}),f(o.id),z.toast.success("Collection duplicated")}catch{z.toast.error("Failed to duplicate collection")}},t=async()=>{const o=Array.isArray(y.subcollections)&&y.subcollections.length>0;if(await k(o?"Are you sure you want to delete this collection? All subcollections will also be deleted.":"Are you sure you want to delete this collection?"))try{const n=await x()||[];if(n.length===0||!c.value.collectionId)throw new Error("Error loading values");const d=n.filter(w=>w.id!==c.value.collectionId),m=V.config.collectionsCollection.split(":");await N.update(m[0],null,{[m[1]]:d}),f(""),z.toast.success("Collection deleted")}catch{z.toast.error("Failed to delete collection")}},u=async o=>!!(await x()||[]).find(n=>n.slug===o);return e.onMounted(()=>{h.value||P()}),(o,a)=>{const n=e.resolveComponent("Button"),d=e.resolveComponent("MenubarTrigger"),m=e.resolveComponent("MenubarMenu"),w=e.resolveComponent("MenubarItem"),j=e.resolveComponent("MenubarContent"),F=e.resolveComponent("Menubar");return e.openBlock(),e.createElementBlock("div",Le,[e.createElementVNode("div",Oe,[e.createElementVNode("div",Re,[e.createVNode(n,{variant:"ghost",onClick:a[0]||(a[0]=q=>e.unref(f)(""))},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Tag),{class:"size-4"})]),_:1}),e.createVNode(e.unref(_.ChevronRight),{class:"size-3"}),e.createElementVNode("h1",Ge,e.toDisplayString(h.value?"New Collection":e.unref(y).title),1),e.unref(y).status==="published"?(e.openBlock(),e.createElementBlock("span",Je,"Published")):e.unref(y).status==="draft"?(e.openBlock(),e.createElementBlock("span",Xe,"Draft")):e.createCommentVNode("",!0)]),h.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(F,{key:0,class:"bg-sidebar"},{default:e.withCtx(()=>[e.unref(p)("create-collection")?(e.openBlock(),e.createBlock(m,{key:0},{default:e.withCtx(()=>[e.createVNode(d,{onClick:l},{default:e.withCtx(()=>[...a[1]||(a[1]=[e.createTextVNode("Duplicate",-1)])]),_:1})]),_:1})):e.createCommentVNode("",!0),e.unref(C)("edit-collection","delete-collection")?(e.openBlock(),e.createBlock(m,{key:1},{default:e.withCtx(()=>[e.createVNode(d,null,{default:e.withCtx(()=>[...a[2]||(a[2]=[e.createTextVNode("More actions",-1)])]),_:1}),e.createVNode(j,null,{default:e.withCtx(()=>[e.unref(p)("delete-collection")?(e.openBlock(),e.createBlock(w,{key:0,variant:"destructive",onClick:t},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Trash),{class:"size-4"}),a[3]||(a[3]=e.createTextVNode(" Delete collection ",-1))]),_:1})):e.createCommentVNode("",!0)]),_:1})]),_:1})):e.createCommentVNode("",!0)]),_:1}))]),e.createElementVNode("div",Ke,[e.createElementVNode("div",Ze,[e.createVNode(ie),e.createVNode(qe)]),e.createElementVNode("div",He,[e.createVNode(pe)])]),e.unref(C)("create-collection","edit-collection")?(e.openBlock(),e.createElementBlock("div",Qe,[e.createElementVNode("div",We,[h.value&&e.unref(p)("create-collection")?(e.openBlock(),e.createBlock(n,{key:0,onClick:e.unref(D),disabled:i.value},{default:e.withCtx(()=>[i.value?(e.openBlock(),e.createBlock(e.unref(_.Loader2),{key:0,class:"size-4 animate-spin"})):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(i.value?"Creating":"Create")+" New Collection ",1)]),_:1},8,["onClick","disabled"])):e.unref(p)("edit-collection")?(e.openBlock(),e.createBlock(n,{key:1,onClick:e.unref(D),disabled:i.value},{default:e.withCtx(()=>[i.value?(e.openBlock(),e.createBlock(e.unref(_.Loader2),{key:0,class:"size-4 animate-spin"})):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(i.value?"Saving":"Save")+" Changes ",1)]),_:1},8,["onClick","disabled"])):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)])}}});exports.default=Ye;
|