@oneclick.dev/cms-core-modules 0.0.110 → 0.0.111
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/{Acquisition-Dt2rREU8.js → Acquisition-DgzDQH51.js} +1 -1
- package/dist/{Acquisition-DNCy8nQz.mjs → Acquisition-FV3QpaUX.mjs} +2 -2
- package/dist/{Audience-Bs7b0TNm.js → Audience-BSgNvcVb.js} +1 -1
- package/dist/{Audience-CUeMVYRy.mjs → Audience-ka0b7YPE.mjs} +2 -2
- package/dist/{ContentEditor-D9-1SJ5F.mjs → ContentEditor-pZPfo0qN.mjs} +4384 -4282
- package/dist/{ContentEditor-BprPiHMJ.js → ContentEditor-tYkh4vRV.js} +42 -42
- package/dist/{Create-89z41K73.js → Create--MOBOTA-.js} +1 -1
- package/dist/{Create-BCklc_T1.mjs → Create-BXNLRQag.mjs} +1 -1
- package/dist/DateFormatter-CSAbE3BC.js +1 -0
- package/dist/{DateFormatter-DUxlo8X8.mjs → DateFormatter-qbhRYxI_.mjs} +226 -222
- package/dist/{Detail-CNlljBfH.mjs → Detail-ChD5XurA.mjs} +1 -1
- package/dist/{Detail-C857g62L.js → Detail-RISEJJab.js} +1 -1
- package/dist/{Find-DIISO5GO.mjs → Find-zN_dKz4p.mjs} +1 -1
- package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-Baqy-rTT.js +1 -0
- package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-Dx4Bpa2m.mjs +1263 -0
- package/dist/{Overview-Di84CsR5.mjs → Overview-98nkJUWN.mjs} +162 -157
- package/dist/{Overview-C-Jb_BxY.mjs → Overview-BR_y8x3W.mjs} +1 -1
- package/dist/{Overview-DC9io1bk.js → Overview-CX-n6W7d.js} +1 -1
- package/dist/Overview-Dl8cMlsr.js +1 -0
- package/dist/{Overview-BKAti8nc.mjs → Overview-MpgkLB6m.mjs} +36 -36
- package/dist/{SeoHealth-az1YuNF2.js → SeoHealth-C5npw7mE.js} +1 -1
- package/dist/{SeoHealth-MC3lSCOY.mjs → SeoHealth-bVQj_Xgm.mjs} +29 -29
- package/dist/{TableView-DXHhJ-jm.mjs → TableView-Bf1fdJrD.mjs} +1838 -1822
- package/dist/TableView-DNcXyIMu.js +4 -0
- package/dist/{agenda-IOqtALWf.js → agenda-BaJu3-1c.js} +1 -1
- package/dist/{agenda-DcatSSYQ.mjs → agenda-BwVY_8oM.mjs} +3 -3
- package/dist/cms-core-modules.css +1 -1
- package/dist/{exceptions-CI0B4xVj.js → exceptions-B6P9UiCj.js} +1 -1
- package/dist/{exceptions-YCQkHa6a.mjs → exceptions-De9-FvdP.mjs} +67 -67
- package/dist/{index-CpzDEMeC.mjs → index-B8GvmAwh.mjs} +438 -478
- package/dist/{index-wjkEPsNx.mjs → index-BIF2RB7k.mjs} +1212 -1316
- package/dist/index-ByRsp77L.js +70 -0
- package/dist/{index-BhWvXMOp.mjs → index-CFzn2Lus.mjs} +5 -9
- package/dist/{index-BFLV54kw.mjs → index-CkVwMqpn.mjs} +1114 -1100
- package/dist/index-DL6orwdK.js +35 -0
- package/dist/index-DUlYrnXH.js +58 -0
- package/dist/index-DZV720u-.mjs +439 -0
- package/dist/index-D_nfGegA.js +184 -0
- package/dist/index-DtSvAFLL.js +54 -0
- package/dist/{index-D30apIn-.mjs → index-L54VBzwJ.mjs} +2 -3
- package/dist/{index-BzWmWCo5.mjs → index-hH3e-IYz.mjs} +267 -267
- package/dist/index.cjs.js +1 -1
- package/dist/index.mjs +15 -15
- package/dist/math-BJ-oX_IM.mjs +80 -0
- package/dist/math-emotyaF6.js +1 -0
- package/dist/{resources-CYOb5Bl6.mjs → resources-DwYxn2Vi.mjs} +1 -1
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/ScopedSelectAll.d.ts +1 -2
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/helpers/useFocus.d.ts +1 -0
- package/package.json +2 -2
- package/dist/DateFormatter-CYAD4GBN.js +0 -1
- package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-Ceoje52V.js +0 -1
- package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-Dh9jzvE0.mjs +0 -1255
- package/dist/Overview-UoZHUMUz.js +0 -1
- package/dist/TableView-DQW0A1oG.js +0 -4
- package/dist/array-CbATeQbk.js +0 -1
- package/dist/array-DT5pE8Gm.mjs +0 -108
- package/dist/index-A2kp8Isi.js +0 -75
- package/dist/index-B5aBwdxY.js +0 -54
- package/dist/index-BiT55eU0.js +0 -58
- package/dist/index-G7cIlnGN.js +0 -158
- package/dist/index-V78huaSJ.mjs +0 -442
- package/dist/index-vHmvbEwa.js +0 -35
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { defineComponent as _e, ref as z, computed as
|
|
2
|
-
import { useModule as
|
|
3
|
-
import { CalendarX as Ae, PlusIcon as
|
|
4
|
-
const je = { class: "container @container mx-auto py-8
|
|
1
|
+
import { defineComponent as _e, ref as z, computed as L, resolveComponent as u, openBlock as d, createElementBlock as f, Fragment as F, createElementVNode as o, createVNode as n, createBlock as k, withCtx as s, unref as i, createTextVNode as m, createCommentVNode as x, toDisplayString as g, renderList as ye, normalizeClass as H, normalizeStyle as J, withModifiers as N } from "vue";
|
|
2
|
+
import { useModule as xe, useFirebaseIntegration as be, useModuleRoute as Ce, useConfirmation as ke, useModulePermissions as we, useModuleBreadcrumbs as he } from "@oneclick.dev/cms-kit";
|
|
3
|
+
import { CalendarX as Ae, PlusIcon as Y, Search as q, MoreHorizontalIcon as Q, ImportIcon as Ee, Upload as X, CheckCircle2 as Me, Clock as $e, DollarSign as ze, Users as De, CalendarDays as K, Copy as Ie, ChevronsLeftRightEllipsis as Ne, Trash2Icon as Se } from "lucide-vue-next";
|
|
4
|
+
const je = { class: "container @container mx-auto py-8" }, Te = {
|
|
5
5
|
key: 0,
|
|
6
6
|
class: "flex justify-center py-24"
|
|
7
7
|
}, Ve = { class: "flex gap-2" }, Be = { key: 2 }, Ue = { class: "flex flex-col gap-4 mb-6 @md:flex-row @md:items-end @md:justify-between" }, Oe = { class: "flex flex-wrap items-center gap-2" }, Re = { class: "relative" }, Pe = {
|
|
@@ -13,40 +13,43 @@ const je = { class: "container @container mx-auto py-8 px-4" }, Te = {
|
|
|
13
13
|
}, Je = { class: "font-medium" }, Ye = {
|
|
14
14
|
key: 2,
|
|
15
15
|
class: "grid gap-4 @md:grid-cols-2 @3xl:grid-cols-3"
|
|
16
|
-
}, qe = ["onClick"], Qe =
|
|
16
|
+
}, qe = ["onClick"], Qe = ["onClick"], Xe = { class: "flex items-start gap-3" }, Ke = ["onClick"], We = { class: "text-base font-semibold leading-tight line-clamp-1" }, Ze = { class: "flex items-center gap-2 mt-1" }, et = {
|
|
17
|
+
key: 0,
|
|
18
|
+
class: "text-xs text-muted-foreground cursor-pointer"
|
|
19
|
+
}, tt = {
|
|
17
20
|
key: 0,
|
|
18
21
|
class: "shrink-0"
|
|
19
|
-
}, nt = { class: "grid grid-cols-3 gap-2 mt-5" }, ot = { class: "flex flex-col items-start gap-1 rounded-lg bg-muted/40 px-3 py-2" }, st = { class: "flex items-center gap-1 text-muted-foreground" }, lt = { class: "text-sm font-semibold" },
|
|
22
|
+
}, nt = { class: "grid grid-cols-3 gap-2 mt-5" }, ot = { class: "flex flex-col items-start gap-1 rounded-lg bg-muted/40 px-3 py-2" }, st = { class: "flex items-center gap-1 text-muted-foreground" }, lt = { class: "text-sm font-semibold" }, it = { class: "flex flex-col items-start gap-1 rounded-lg bg-muted/40 px-3 py-2" }, rt = { class: "flex items-center gap-1 text-muted-foreground" }, at = { class: "text-sm font-semibold" }, dt = { class: "flex flex-col items-start gap-1 rounded-lg bg-muted/40 px-3 py-2" }, ut = { class: "flex items-center gap-1 text-muted-foreground" }, ct = { class: "text-sm font-semibold" }, pt = {
|
|
20
23
|
key: 0,
|
|
21
24
|
class: "flex items-center justify-between gap-2 px-5 py-3 border-t bg-muted/20"
|
|
22
25
|
}, _t = /* @__PURE__ */ _e({
|
|
23
26
|
__name: "Overview",
|
|
24
27
|
setup(mt) {
|
|
25
|
-
const { config:
|
|
28
|
+
const { config: w } = xe(), M = be(w.project), { navigateTo: h } = Ce(), { confirm: W } = ke(), { hasPermission: v } = we();
|
|
26
29
|
he(() => []);
|
|
27
|
-
const _ = z(null), D = z(""),
|
|
30
|
+
const _ = z(null), D = z(""), c = z(!1), r = z([]), j = z("importAgendasInput"), b = L(() => {
|
|
28
31
|
if (!_.value) return [];
|
|
29
32
|
const t = D.value.trim().toLowerCase();
|
|
30
33
|
return t ? _.value.filter(
|
|
31
34
|
(e) => (e.serviceName || "").toLowerCase().includes(t)
|
|
32
35
|
) : _.value;
|
|
33
|
-
}), T =
|
|
34
|
-
() =>
|
|
35
|
-
),
|
|
36
|
+
}), T = L(
|
|
37
|
+
() => b.value.length > 0 && b.value.every((t) => r.value.includes(t.id))
|
|
38
|
+
), Z = () => {
|
|
36
39
|
if (T.value) {
|
|
37
|
-
const t =
|
|
38
|
-
|
|
40
|
+
const t = b.value.map((e) => e.id);
|
|
41
|
+
r.value = r.value.filter((e) => !t.includes(e));
|
|
39
42
|
} else {
|
|
40
|
-
const t =
|
|
41
|
-
|
|
43
|
+
const t = b.value.map((a) => a.id), e = /* @__PURE__ */ new Set([...r.value, ...t]);
|
|
44
|
+
r.value = Array.from(e);
|
|
42
45
|
}
|
|
43
|
-
},
|
|
44
|
-
|
|
45
|
-
},
|
|
46
|
+
}, V = (t) => {
|
|
47
|
+
r.value.includes(t) ? r.value = r.value.filter((e) => e !== t) : r.value.push(t);
|
|
48
|
+
}, ee = (t) => {
|
|
46
49
|
if (!t) return "??";
|
|
47
50
|
const e = t.trim().split(/\s+/);
|
|
48
51
|
return e.length === 1 ? e[0].slice(0, 2).toUpperCase() : (e[0][0] + e[e.length - 1][0]).toUpperCase();
|
|
49
|
-
},
|
|
52
|
+
}, B = [
|
|
50
53
|
{ fg: "#7c3aed", bg: "rgba(124, 58, 237, 0.12)" },
|
|
51
54
|
// violet
|
|
52
55
|
{ fg: "#0891b2", bg: "rgba(8, 145, 178, 0.12)" },
|
|
@@ -64,21 +67,21 @@ const je = { class: "container @container mx-auto py-8 px-4" }, Te = {
|
|
|
64
67
|
], S = (t) => {
|
|
65
68
|
const e = (t.id || t.serviceName || "").toString();
|
|
66
69
|
let a = 0;
|
|
67
|
-
for (let
|
|
68
|
-
return
|
|
69
|
-
},
|
|
70
|
+
for (let p = 0; p < e.length; p++) a = a * 31 + e.charCodeAt(p) >>> 0;
|
|
71
|
+
return B[a % B.length];
|
|
72
|
+
}, te = (t) => {
|
|
70
73
|
const e = t?.pricingOptions?.[0];
|
|
71
74
|
return e?.duration ? `${e.duration} min` : null;
|
|
72
|
-
},
|
|
75
|
+
}, ne = (t) => {
|
|
73
76
|
const e = t?.pricingOptions?.[0];
|
|
74
77
|
return e?.price === void 0 || e?.price === null || e?.price === "" ? null : `${t.currency === "EUR" ? "€" : "$"}${e.price}`;
|
|
75
|
-
},
|
|
76
|
-
|
|
78
|
+
}, oe = (t) => Array.isArray(t?.resources) ? t.resources.filter((e) => e?.isActive !== !1).length : 0, se = (t) => t.type === "regular" ? "Regular" : t.type ? t.type.charAt(0).toUpperCase() + t.type.slice(1) : "Agenda", le = (t) => {
|
|
79
|
+
c.value = !0, r.value = [t];
|
|
77
80
|
}, I = async () => {
|
|
78
|
-
_.value = await M.find(
|
|
79
|
-
},
|
|
81
|
+
_.value = await M.find(w.agendaCollection);
|
|
82
|
+
}, ie = async (t) => {
|
|
80
83
|
if (!v("create-agendas")) return;
|
|
81
|
-
const e = await M.get(
|
|
84
|
+
const e = await M.get(w.agendaCollection, t);
|
|
82
85
|
if (!e) {
|
|
83
86
|
alert("Agenda not found");
|
|
84
87
|
return;
|
|
@@ -86,66 +89,66 @@ const je = { class: "container @container mx-auto py-8 px-4" }, Te = {
|
|
|
86
89
|
const a = prompt("Enter name for duplicated agenda", e.serviceName + " (Copy)");
|
|
87
90
|
if (!a)
|
|
88
91
|
return;
|
|
89
|
-
const
|
|
90
|
-
delete
|
|
92
|
+
const p = { ...e, serviceName: a };
|
|
93
|
+
delete p.id, await M.add(w.agendaCollection, p), await I();
|
|
91
94
|
}, re = async (t) => {
|
|
92
|
-
!v("delete-agendas") || !await
|
|
93
|
-
},
|
|
95
|
+
!v("delete-agendas") || !await W("Are you sure you want to delete this agenda? This action cannot be undone.") || (await M.remove(w.agendaCollection, t), await I());
|
|
96
|
+
}, ae = async () => {
|
|
94
97
|
if (!_.value) return;
|
|
95
|
-
let t = _.value.filter((
|
|
96
|
-
t = t.map((
|
|
97
|
-
const { id:
|
|
98
|
-
return
|
|
98
|
+
let t = _.value.filter((p) => r.value.includes(p.id));
|
|
99
|
+
t = t.map((p) => {
|
|
100
|
+
const { id: A, ...E } = p;
|
|
101
|
+
return E;
|
|
99
102
|
});
|
|
100
103
|
const e = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(t, null, 2)), a = document.createElement("a");
|
|
101
|
-
a.setAttribute("href", e), a.setAttribute("download", "agendas_export.json"), document.body.appendChild(a), a.click(), a.remove(),
|
|
102
|
-
},
|
|
104
|
+
a.setAttribute("href", e), a.setAttribute("download", "agendas_export.json"), document.body.appendChild(a), a.click(), a.remove(), c.value = !1, r.value = [];
|
|
105
|
+
}, de = async (t) => {
|
|
103
106
|
const e = t.target;
|
|
104
107
|
if (!e.files || e.files.length === 0)
|
|
105
108
|
return;
|
|
106
|
-
const
|
|
107
|
-
let
|
|
109
|
+
const p = await e.files[0].text();
|
|
110
|
+
let A;
|
|
108
111
|
try {
|
|
109
|
-
|
|
112
|
+
A = JSON.parse(p);
|
|
110
113
|
} catch {
|
|
111
114
|
alert("Invalid JSON file");
|
|
112
115
|
return;
|
|
113
116
|
}
|
|
114
|
-
if (!Array.isArray(
|
|
117
|
+
if (!Array.isArray(A)) {
|
|
115
118
|
alert("Invalid agendas format");
|
|
116
119
|
return;
|
|
117
120
|
}
|
|
118
|
-
for (const
|
|
119
|
-
await M.add(
|
|
121
|
+
for (const E of A)
|
|
122
|
+
await M.add(w.agendaCollection, E);
|
|
120
123
|
e.value = "", await I();
|
|
121
|
-
},
|
|
122
|
-
|
|
124
|
+
}, U = (t) => {
|
|
125
|
+
c.value || (v("edit-agendas") ? h(`/edit/${t}`) : h(`/edit/${t}/agenda`));
|
|
123
126
|
};
|
|
124
127
|
return I(), (t, e) => {
|
|
125
|
-
const a =
|
|
126
|
-
return
|
|
128
|
+
const a = u("Spinner"), p = u("EmptyMedia"), A = u("EmptyTitle"), E = u("EmptyDescription"), ue = u("EmptyHeader"), y = u("Button"), ce = u("EmptyContent"), pe = u("Empty"), me = u("Input"), O = u("DropdownMenuTrigger"), $ = u("DropdownMenuItem"), R = u("DropdownMenuGroup"), P = u("DropdownMenuContent"), G = u("DropdownMenu"), fe = u("ButtonGroup"), ge = u("Checkbox"), ve = u("Badge");
|
|
129
|
+
return d(), f(F, null, [
|
|
127
130
|
o("div", je, [
|
|
128
|
-
_.value === null ? (
|
|
131
|
+
_.value === null ? (d(), f("div", Te, [
|
|
129
132
|
n(a, { class: "mx-auto" })
|
|
130
|
-
])) : _.value.length === 0 ? (
|
|
133
|
+
])) : _.value.length === 0 ? (d(), k(pe, { key: 1 }, {
|
|
131
134
|
default: s(() => [
|
|
132
135
|
n(ue, null, {
|
|
133
136
|
default: s(() => [
|
|
134
|
-
n(
|
|
137
|
+
n(p, { variant: "icon" }, {
|
|
135
138
|
default: s(() => [
|
|
136
|
-
n(
|
|
139
|
+
n(i(Ae), { class: "size-4-6" })
|
|
137
140
|
]),
|
|
138
141
|
_: 1
|
|
139
142
|
}),
|
|
140
|
-
n(
|
|
143
|
+
n(A, null, {
|
|
141
144
|
default: s(() => [...e[6] || (e[6] = [
|
|
142
|
-
|
|
145
|
+
m("No Agendas Yet", -1)
|
|
143
146
|
])]),
|
|
144
147
|
_: 1
|
|
145
148
|
}),
|
|
146
|
-
n(
|
|
149
|
+
n(E, null, {
|
|
147
150
|
default: s(() => [...e[7] || (e[7] = [
|
|
148
|
-
|
|
151
|
+
m(" You haven't created any agenda yet. Get started by creating your first agenda. ", -1)
|
|
149
152
|
])]),
|
|
150
153
|
_: 1
|
|
151
154
|
})
|
|
@@ -155,12 +158,12 @@ const je = { class: "container @container mx-auto py-8 px-4" }, Te = {
|
|
|
155
158
|
n(ce, null, {
|
|
156
159
|
default: s(() => [
|
|
157
160
|
o("div", Ve, [
|
|
158
|
-
n(
|
|
159
|
-
onClick: e[0] || (e[0] = (
|
|
161
|
+
n(y, {
|
|
162
|
+
onClick: e[0] || (e[0] = (l) => i(h)("/create"))
|
|
160
163
|
}, {
|
|
161
164
|
default: s(() => [
|
|
162
|
-
n(
|
|
163
|
-
e[8] || (e[8] =
|
|
165
|
+
n(i(Y)),
|
|
166
|
+
e[8] || (e[8] = m(" Create Agenda ", -1))
|
|
164
167
|
]),
|
|
165
168
|
_: 1
|
|
166
169
|
})
|
|
@@ -170,7 +173,7 @@ const je = { class: "container @container mx-auto py-8 px-4" }, Te = {
|
|
|
170
173
|
})
|
|
171
174
|
]),
|
|
172
175
|
_: 1
|
|
173
|
-
})) : (
|
|
176
|
+
})) : (d(), f("div", Be, [
|
|
174
177
|
o("div", Ue, [
|
|
175
178
|
e[11] || (e[11] = o("div", null, [
|
|
176
179
|
o("h2", { class: "text-3xl font-bold tracking-tight" }, "Agendas"),
|
|
@@ -178,54 +181,54 @@ const je = { class: "container @container mx-auto py-8 px-4" }, Te = {
|
|
|
178
181
|
], -1)),
|
|
179
182
|
o("div", Oe, [
|
|
180
183
|
o("div", Re, [
|
|
181
|
-
n(
|
|
184
|
+
n(i(q), { class: "absolute left-3 top-1/2 -translate-y-1/2 size-4 text-muted-foreground pointer-events-none" }),
|
|
182
185
|
n(me, {
|
|
183
186
|
modelValue: D.value,
|
|
184
|
-
"onUpdate:modelValue": e[1] || (e[1] = (
|
|
187
|
+
"onUpdate:modelValue": e[1] || (e[1] = (l) => D.value = l),
|
|
185
188
|
placeholder: "Search agendas...",
|
|
186
189
|
class: "pl-9 w-full @md:w-64"
|
|
187
190
|
}, null, 8, ["modelValue"])
|
|
188
191
|
]),
|
|
189
|
-
!
|
|
192
|
+
!c.value && i(v)("create-agendas") ? (d(), k(fe, { key: 0 }, {
|
|
190
193
|
default: s(() => [
|
|
191
|
-
n(
|
|
192
|
-
onClick: e[2] || (e[2] = (
|
|
194
|
+
n(y, {
|
|
195
|
+
onClick: e[2] || (e[2] = (l) => i(h)("/create"))
|
|
193
196
|
}, {
|
|
194
197
|
default: s(() => [
|
|
195
|
-
n(
|
|
196
|
-
e[9] || (e[9] =
|
|
198
|
+
n(i(Y)),
|
|
199
|
+
e[9] || (e[9] = m(" New Agenda ", -1))
|
|
197
200
|
]),
|
|
198
201
|
_: 1
|
|
199
202
|
}),
|
|
200
|
-
n(
|
|
203
|
+
n(G, null, {
|
|
201
204
|
default: s(() => [
|
|
202
|
-
n(
|
|
205
|
+
n(O, { "as-child": "" }, {
|
|
203
206
|
default: s(() => [
|
|
204
|
-
n(
|
|
207
|
+
n(y, {
|
|
205
208
|
size: "icon",
|
|
206
209
|
"aria-label": "More Options"
|
|
207
210
|
}, {
|
|
208
211
|
default: s(() => [
|
|
209
|
-
n(
|
|
212
|
+
n(i(Q))
|
|
210
213
|
]),
|
|
211
214
|
_: 1
|
|
212
215
|
})
|
|
213
216
|
]),
|
|
214
217
|
_: 1
|
|
215
218
|
}),
|
|
216
|
-
n(
|
|
219
|
+
n(P, {
|
|
217
220
|
align: "end",
|
|
218
221
|
class: "w-52"
|
|
219
222
|
}, {
|
|
220
223
|
default: s(() => [
|
|
221
|
-
n(
|
|
224
|
+
n(R, null, {
|
|
222
225
|
default: s(() => [
|
|
223
226
|
n($, {
|
|
224
|
-
onClick: e[3] || (e[3] = (
|
|
227
|
+
onClick: e[3] || (e[3] = (l) => j.value.click())
|
|
225
228
|
}, {
|
|
226
229
|
default: s(() => [
|
|
227
|
-
n(
|
|
228
|
-
e[10] || (e[10] =
|
|
230
|
+
n(i(Ee)),
|
|
231
|
+
e[10] || (e[10] = m(" Import Agendas... ", -1))
|
|
229
232
|
]),
|
|
230
233
|
_: 1
|
|
231
234
|
})
|
|
@@ -240,153 +243,155 @@ const je = { class: "container @container mx-auto py-8 px-4" }, Te = {
|
|
|
240
243
|
})
|
|
241
244
|
]),
|
|
242
245
|
_: 1
|
|
243
|
-
})) :
|
|
246
|
+
})) : x("", !0)
|
|
244
247
|
])
|
|
245
248
|
]),
|
|
246
|
-
|
|
249
|
+
c.value ? (d(), f("div", Pe, [
|
|
247
250
|
o("div", Ge, [
|
|
248
251
|
n(ge, {
|
|
249
252
|
modelValue: T.value,
|
|
250
|
-
"onUpdate:modelValue":
|
|
253
|
+
"onUpdate:modelValue": Z
|
|
251
254
|
}, null, 8, ["modelValue"]),
|
|
252
|
-
o("span", Le,
|
|
255
|
+
o("span", Le, g(r.value.length) + " of " + g(b.value.length) + " selected ", 1)
|
|
253
256
|
]),
|
|
254
257
|
o("div", Fe, [
|
|
255
|
-
n(
|
|
258
|
+
n(y, {
|
|
256
259
|
variant: "ghost",
|
|
257
|
-
onClick: e[4] || (e[4] = (
|
|
258
|
-
|
|
260
|
+
onClick: e[4] || (e[4] = (l) => {
|
|
261
|
+
c.value = !1, r.value = [];
|
|
259
262
|
})
|
|
260
263
|
}, {
|
|
261
264
|
default: s(() => [...e[12] || (e[12] = [
|
|
262
|
-
|
|
265
|
+
m(" Cancel ", -1)
|
|
263
266
|
])]),
|
|
264
267
|
_: 1
|
|
265
268
|
}),
|
|
266
|
-
n(
|
|
267
|
-
onClick:
|
|
268
|
-
disabled:
|
|
269
|
+
n(y, {
|
|
270
|
+
onClick: ae,
|
|
271
|
+
disabled: r.value.length === 0
|
|
269
272
|
}, {
|
|
270
273
|
default: s(() => [
|
|
271
|
-
n(
|
|
272
|
-
|
|
274
|
+
n(i(X)),
|
|
275
|
+
m(" Export " + g(r.value.length || ""), 1)
|
|
273
276
|
]),
|
|
274
277
|
_: 1
|
|
275
278
|
}, 8, ["disabled"])
|
|
276
279
|
])
|
|
277
|
-
])) :
|
|
278
|
-
|
|
279
|
-
n(
|
|
280
|
-
o("p", Je, 'No agendas match "' +
|
|
280
|
+
])) : x("", !0),
|
|
281
|
+
b.value.length === 0 ? (d(), f("div", He, [
|
|
282
|
+
n(i(q), { class: "size-8 text-muted-foreground mb-3" }),
|
|
283
|
+
o("p", Je, 'No agendas match "' + g(D.value) + '"', 1),
|
|
281
284
|
e[13] || (e[13] = o("p", { class: "text-sm text-muted-foreground mt-1" }, "Try a different search term.", -1))
|
|
282
|
-
])) : (
|
|
283
|
-
(
|
|
284
|
-
key:
|
|
285
|
-
class:
|
|
286
|
-
"cursor-pointer":
|
|
287
|
-
"ring-2 ring-primary border-primary/40":
|
|
285
|
+
])) : (d(), f("div", Ye, [
|
|
286
|
+
(d(!0), f(F, null, ye(b.value, (l) => (d(), f("div", {
|
|
287
|
+
key: l.id,
|
|
288
|
+
class: H(["group relative flex flex-col overflow-hidden rounded-xl border bg-card shadow-sm transition-all duration-200", {
|
|
289
|
+
"cursor-pointer": c.value,
|
|
290
|
+
"ring-2 ring-primary border-primary/40": c.value && r.value.includes(l.id)
|
|
288
291
|
}]),
|
|
289
|
-
onClick: (
|
|
292
|
+
onClick: (C) => c.value ? V(l.id) : null
|
|
290
293
|
}, [
|
|
291
294
|
o("div", {
|
|
292
295
|
class: "h-1 w-full",
|
|
293
|
-
style:
|
|
296
|
+
style: J({ backgroundColor: S(l).fg })
|
|
294
297
|
}, null, 4),
|
|
295
|
-
o("div",
|
|
298
|
+
o("div", {
|
|
299
|
+
class: "flex flex-col flex-1 p-5",
|
|
300
|
+
onClick: (C) => !c.value && U(l.id)
|
|
301
|
+
}, [
|
|
296
302
|
o("div", Xe, [
|
|
297
303
|
o("div", {
|
|
298
304
|
class: "shrink-0 size-12 rounded-lg flex items-center justify-center font-semibold text-sm",
|
|
299
|
-
style:
|
|
300
|
-
backgroundColor: S(
|
|
301
|
-
color: S(
|
|
305
|
+
style: J({
|
|
306
|
+
backgroundColor: S(l).bg,
|
|
307
|
+
color: S(l).fg
|
|
302
308
|
})
|
|
303
|
-
},
|
|
309
|
+
}, g(ee(l.serviceName)), 5),
|
|
304
310
|
o("button", {
|
|
305
311
|
type: "button",
|
|
306
312
|
class: "flex-1 min-w-0 text-left focus:outline-none",
|
|
307
|
-
|
|
308
|
-
onClick: N((E) => !m.value && de(r.id), ["stop"])
|
|
313
|
+
onClick: N((C) => c.value ? V(l.id) : U(l.id), ["stop"])
|
|
309
314
|
}, [
|
|
310
|
-
o("h3", We,
|
|
315
|
+
o("h3", We, g(l.serviceName || "Untitled Agenda"), 1),
|
|
311
316
|
o("div", Ze, [
|
|
312
317
|
n(ve, {
|
|
313
318
|
variant: "secondary",
|
|
314
319
|
class: "text-[10px] font-medium px-1.5 py-0 h-4"
|
|
315
320
|
}, {
|
|
316
321
|
default: s(() => [
|
|
317
|
-
|
|
322
|
+
m(g(se(l)), 1)
|
|
318
323
|
]),
|
|
319
324
|
_: 2
|
|
320
325
|
}, 1024),
|
|
321
|
-
|
|
326
|
+
c.value ? x("", !0) : (d(), f("span", et, " Click to " + g(i(v)("edit-agendas") ? "edit" : "view"), 1))
|
|
322
327
|
])
|
|
323
328
|
], 8, Ke),
|
|
324
|
-
|
|
329
|
+
c.value ? (d(), f("div", tt, [
|
|
325
330
|
o("div", {
|
|
326
|
-
class:
|
|
331
|
+
class: H(["flex items-center justify-center size-6 rounded-full border-2 transition", r.value.includes(l.id) ? "border-primary bg-primary text-primary-foreground" : "border-muted-foreground/30"])
|
|
327
332
|
}, [
|
|
328
|
-
|
|
333
|
+
r.value.includes(l.id) ? (d(), k(i(Me), {
|
|
329
334
|
key: 0,
|
|
330
335
|
class: "size-4"
|
|
331
|
-
})) :
|
|
336
|
+
})) : x("", !0)
|
|
332
337
|
], 2)
|
|
333
|
-
])) :
|
|
338
|
+
])) : x("", !0)
|
|
334
339
|
]),
|
|
335
340
|
o("div", nt, [
|
|
336
341
|
o("div", ot, [
|
|
337
342
|
o("div", st, [
|
|
338
|
-
n(
|
|
343
|
+
n(i($e), { class: "size-3.5" }),
|
|
339
344
|
e[14] || (e[14] = o("span", { class: "text-[10px] uppercase tracking-wide font-medium" }, "Duration", -1))
|
|
340
345
|
]),
|
|
341
|
-
o("span", lt,
|
|
346
|
+
o("span", lt, g(te(l) || "—"), 1)
|
|
342
347
|
]),
|
|
343
|
-
o("div",
|
|
344
|
-
o("div",
|
|
345
|
-
n(
|
|
348
|
+
o("div", it, [
|
|
349
|
+
o("div", rt, [
|
|
350
|
+
n(i(ze), { class: "size-3.5" }),
|
|
346
351
|
e[15] || (e[15] = o("span", { class: "text-[10px] uppercase tracking-wide font-medium" }, "Price", -1))
|
|
347
352
|
]),
|
|
348
|
-
o("span", at,
|
|
353
|
+
o("span", at, g(ne(l) || "—"), 1)
|
|
349
354
|
]),
|
|
350
355
|
o("div", dt, [
|
|
351
356
|
o("div", ut, [
|
|
352
|
-
n(
|
|
357
|
+
n(i(De), { class: "size-3.5" }),
|
|
353
358
|
e[16] || (e[16] = o("span", { class: "text-[10px] uppercase tracking-wide font-medium" }, "Resources", -1))
|
|
354
359
|
]),
|
|
355
|
-
o("span", ct,
|
|
360
|
+
o("span", ct, g(oe(l)), 1)
|
|
356
361
|
])
|
|
357
362
|
])
|
|
358
|
-
]),
|
|
359
|
-
|
|
360
|
-
|
|
363
|
+
], 8, Qe),
|
|
364
|
+
c.value ? x("", !0) : (d(), f("div", pt, [
|
|
365
|
+
i(v)("edit-agendas") ? (d(), k(y, {
|
|
361
366
|
key: 0,
|
|
362
367
|
variant: "ghost",
|
|
363
368
|
size: "sm",
|
|
364
369
|
class: "gap-1.5",
|
|
365
|
-
onClick: N((
|
|
370
|
+
onClick: N((C) => i(h)(`/edit/${l.id}`), ["stop"])
|
|
366
371
|
}, {
|
|
367
372
|
default: s(() => [
|
|
368
|
-
n(
|
|
369
|
-
e[17] || (e[17] =
|
|
373
|
+
n(i(K), { class: "size-4" }),
|
|
374
|
+
e[17] || (e[17] = m(" Edit Agenda ", -1))
|
|
370
375
|
]),
|
|
371
376
|
_: 1
|
|
372
|
-
}, 8, ["onClick"])) : (
|
|
377
|
+
}, 8, ["onClick"])) : (d(), k(y, {
|
|
373
378
|
key: 1,
|
|
374
379
|
variant: "ghost",
|
|
375
380
|
size: "sm",
|
|
376
381
|
class: "gap-1.5",
|
|
377
|
-
onClick: N((
|
|
382
|
+
onClick: N((C) => i(h)(`/edit/${l.id}/agenda`), ["stop"])
|
|
378
383
|
}, {
|
|
379
384
|
default: s(() => [
|
|
380
|
-
n(
|
|
381
|
-
e[18] || (e[18] =
|
|
385
|
+
n(i(K), { class: "size-4" }),
|
|
386
|
+
e[18] || (e[18] = m(" View Agenda ", -1))
|
|
382
387
|
]),
|
|
383
388
|
_: 1
|
|
384
389
|
}, 8, ["onClick"])),
|
|
385
|
-
n(
|
|
390
|
+
n(G, null, {
|
|
386
391
|
default: s(() => [
|
|
387
|
-
n(
|
|
392
|
+
n(O, { "as-child": "" }, {
|
|
388
393
|
default: s(() => [
|
|
389
|
-
n(
|
|
394
|
+
n(y, {
|
|
390
395
|
variant: "ghost",
|
|
391
396
|
size: "icon",
|
|
392
397
|
"aria-label": "More Options",
|
|
@@ -394,57 +399,57 @@ const je = { class: "container @container mx-auto py-8 px-4" }, Te = {
|
|
|
394
399
|
}, ["stop"]))
|
|
395
400
|
}, {
|
|
396
401
|
default: s(() => [
|
|
397
|
-
n(
|
|
402
|
+
n(i(Q))
|
|
398
403
|
]),
|
|
399
404
|
_: 1
|
|
400
405
|
})
|
|
401
406
|
]),
|
|
402
407
|
_: 1
|
|
403
408
|
}),
|
|
404
|
-
n(
|
|
409
|
+
n(P, {
|
|
405
410
|
align: "end",
|
|
406
411
|
class: "w-52"
|
|
407
412
|
}, {
|
|
408
413
|
default: s(() => [
|
|
409
|
-
n(
|
|
414
|
+
n(R, null, {
|
|
410
415
|
default: s(() => [
|
|
411
|
-
|
|
416
|
+
i(v)("create-agendas") ? (d(), k($, {
|
|
412
417
|
key: 0,
|
|
413
|
-
onClick: (
|
|
418
|
+
onClick: (C) => ie(l.id)
|
|
414
419
|
}, {
|
|
415
420
|
default: s(() => [
|
|
416
|
-
n(
|
|
417
|
-
e[19] || (e[19] =
|
|
421
|
+
n(i(Ie)),
|
|
422
|
+
e[19] || (e[19] = m(" Duplicate Agenda ", -1))
|
|
418
423
|
]),
|
|
419
424
|
_: 1
|
|
420
|
-
}, 8, ["onClick"])) :
|
|
425
|
+
}, 8, ["onClick"])) : x("", !0),
|
|
421
426
|
n($, null, {
|
|
422
427
|
default: s(() => [
|
|
423
|
-
n(
|
|
424
|
-
e[20] || (e[20] =
|
|
428
|
+
n(i(Ne)),
|
|
429
|
+
e[20] || (e[20] = m(" API Set-up ", -1))
|
|
425
430
|
]),
|
|
426
431
|
_: 1
|
|
427
432
|
}),
|
|
428
433
|
n($, {
|
|
429
|
-
onClick: (
|
|
434
|
+
onClick: (C) => le(l.id)
|
|
430
435
|
}, {
|
|
431
436
|
default: s(() => [
|
|
432
|
-
n(
|
|
433
|
-
e[21] || (e[21] =
|
|
437
|
+
n(i(X)),
|
|
438
|
+
e[21] || (e[21] = m(" Export Agenda ", -1))
|
|
434
439
|
]),
|
|
435
440
|
_: 1
|
|
436
441
|
}, 8, ["onClick"]),
|
|
437
|
-
|
|
442
|
+
i(v)("delete-agendas") ? (d(), k($, {
|
|
438
443
|
key: 1,
|
|
439
444
|
variant: "destructive",
|
|
440
|
-
onClick: (
|
|
445
|
+
onClick: (C) => re(l.id)
|
|
441
446
|
}, {
|
|
442
447
|
default: s(() => [
|
|
443
|
-
n(
|
|
444
|
-
e[22] || (e[22] =
|
|
448
|
+
n(i(Se)),
|
|
449
|
+
e[22] || (e[22] = m(" Remove Agenda ", -1))
|
|
445
450
|
]),
|
|
446
451
|
_: 1
|
|
447
|
-
}, 8, ["onClick"])) :
|
|
452
|
+
}, 8, ["onClick"])) : x("", !0)
|
|
448
453
|
]),
|
|
449
454
|
_: 2
|
|
450
455
|
}, 1024)
|
|
@@ -465,7 +470,7 @@ const je = { class: "container @container mx-auto py-8 px-4" }, Te = {
|
|
|
465
470
|
ref: j,
|
|
466
471
|
class: "hidden",
|
|
467
472
|
accept: ".json,application/json",
|
|
468
|
-
onChange:
|
|
473
|
+
onChange: de
|
|
469
474
|
}, null, 544)
|
|
470
475
|
], 64);
|
|
471
476
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent as Q, inject as K, openBlock as r, createElementBlock as g, createElementVNode as i, Fragment as I, renderList as q, withModifiers as ue, normalizeClass as ee, unref as o, createCommentVNode as T, toDisplayString as P, createTextVNode as m, resolveComponent as s, createBlock as $, withCtx as l, createVNode as t, computed as X, renderSlot as _e, ref as j, useTemplateRef as be, withAsyncContext as xe, watch as Ce, onMounted as ye, onUnmounted as we, provide as O, withKeys as ke } from "vue";
|
|
2
2
|
import { Filter as he, ChevronsUpDown as Pe, Check as se, RotateCcw as $e, ExternalLink as Se, Search as Me, Plus as Ve, LayoutGrid as Te, List as Ae } from "lucide-vue-next";
|
|
3
3
|
import { useModuleRoute as J, useModulePermissions as Y, useFirebaseIntegration as te, useConfirmation as ze, useModuleBreadcrumbs as Ie } from "@oneclick.dev/cms-kit";
|
|
4
|
-
import { u as Le } from "./index-
|
|
4
|
+
import { u as Le } from "./index-CFzn2Lus.mjs";
|
|
5
5
|
import { c as ae } from "./utils-CanmrIWO.mjs";
|
|
6
6
|
import { t as D } from "./index-RLz1QPrf.mjs";
|
|
7
7
|
const Ee = { class: "grid @md:grid-cols-2 @2xl:grid-cols-3 @3xl:grid-cols-4 @4xl:grid-cols-5 @5xl:grid-cols-6 gap-6" }, De = ["onClick", "onContextmenu"], Fe = ["src"], Be = { class: "font-semibold" }, Ue = { class: "text-sm text-muted-foreground flex items-center gap-2" }, Re = { class: "flex items-center gap-2" }, je = { key: 0 }, Ke = /* @__PURE__ */ Q({
|