@oneclick.dev/cms-core-modules 0.0.101 → 0.0.103
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-Br1Pfny3.js +1 -0
- package/dist/{Acquisition-BJXNY4ko.mjs → Acquisition-CPlZzUBo.mjs} +40 -40
- package/dist/AgendaOpeningHoursCard-B7ROIPWw.js +1 -0
- package/dist/AgendaOpeningHoursCard-Cp4wxUeK.mjs +172 -0
- package/dist/AppointmentListTable-DZJNmTMb.mjs +177 -0
- package/dist/AppointmentListTable-Dieu9US_.js +1 -0
- package/dist/Audience-BfkrmBuQ.js +1 -0
- package/dist/{Audience-CIzVtUvV.mjs → Audience-DTblSAiL.mjs} +89 -89
- package/dist/Content-BHr_rPVY.js +1 -0
- package/dist/{Content-CWhjurn_.mjs → Content-CYOZKvWK.mjs} +56 -56
- package/dist/{ContentEditor-Cjqgb64R.mjs → ContentEditor-B1nfKG_5.mjs} +706 -677
- package/dist/{ContentEditor-YgOS3kxS.js → ContentEditor-DdFU8piH.js} +15 -16
- package/dist/{Create-6uT9HWar.mjs → Create-BRBh0xjM.mjs} +2 -2
- package/dist/{Create-DuZ5nZrX.js → Create-qPeQxkdl.js} +1 -1
- package/dist/{DateFormatter-2B0R-DY4.mjs → DateFormatter-Bw-87W31.mjs} +212 -227
- package/dist/DateFormatter-CYAD4GBN.js +1 -0
- package/dist/{Detail-BZ-iE9vf.js → Detail-C857g62L.js} +1 -1
- package/dist/{Detail-CJVMJDP7.mjs → Detail-CujdFApD.mjs} +2 -2
- package/dist/EditLayout.vue_vue_type_script_setup_true_lang-DWMqQvHl.mjs +76 -0
- package/dist/EditLayout.vue_vue_type_script_setup_true_lang-kpjbVSXg.js +1 -0
- package/dist/{Entries-DkRhOt95.js → Entries-BaS6H6ak.js} +1 -1
- package/dist/{Entries-dLlCrXXe.mjs → Entries-C8UJkrVC.mjs} +1 -1
- package/dist/{Find-Bd1uLqSa.mjs → Find-B24ZEhYM.mjs} +1 -1
- package/dist/{NewReservationDialog.vue_vue_type_script_setup_true_lang-Bc946oSc.mjs → NewReservationDialog.vue_vue_type_script_setup_true_lang-9Q7TMm4u.mjs} +37 -37
- package/dist/{NewReservationDialog.vue_vue_type_script_setup_true_lang-CqERfyYb.js → NewReservationDialog.vue_vue_type_script_setup_true_lang-DiNzGl-q.js} +1 -1
- package/dist/{Overview-DoOASlNz.mjs → Overview-3HWhsqaz.mjs} +2 -2
- package/dist/Overview-BrCwozey.js +1 -0
- package/dist/{Overview-37nilXzE.js → Overview-CpHhuiaV.js} +1 -1
- package/dist/{Overview-DeQQ0FY3.js → Overview-DAxCu9XC.js} +1 -1
- package/dist/{Overview-C--dq51X.mjs → Overview-D_T3K6aq.mjs} +1 -1
- package/dist/{Overview-CGo4jaaA.mjs → Overview-kaMhsIUq.mjs} +21 -21
- package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-Cz_22Oce.mjs +2927 -0
- package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-DPPNc-Z5.js +349 -0
- package/dist/SeoHealth-09sEOu3G.js +1 -0
- package/dist/{SeoHealth-DVFDz3em.mjs → SeoHealth-BzcWd_w7.mjs} +29 -29
- package/dist/TableView-CPAw3h8g.js +4 -0
- package/dist/TableView-DXmEF6pY.mjs +6143 -0
- package/dist/agenda-BNG05SAq.js +1 -0
- package/dist/agenda-D1RxMxBS.mjs +1152 -0
- package/dist/availability-CMrRa5y2.mjs +269 -0
- package/dist/availability-Cf2YfMwM.js +1 -0
- package/dist/booking-data-DgJd0BcM.mjs +889 -0
- package/dist/booking-data-Di5GmH_8.js +1 -0
- package/dist/cms-core-modules.css +1 -1
- package/dist/{exceptions-Bp5BSvxO.js → exceptions-CI0B4xVj.js} +1 -1
- package/dist/{exceptions-C97cNZYl.mjs → exceptions-vo8SA5SE.mjs} +68 -68
- package/dist/index-BtujSJeg.js +35 -0
- package/dist/{index-CrGjxSwa.mjs → index-CrgzoTyR.mjs} +1 -1
- package/dist/{index-D2a6wEPh.js → index-DPd3waTN.js} +1 -1
- package/dist/{index-CABh6Qn6.mjs → index-DrXxXB2F.mjs} +15 -15
- package/dist/{index-B-lVEpFX.mjs → index-MYWjg0zi.mjs} +3 -3
- package/dist/index-dOdMm1pV.mjs +1105 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.mjs +201 -148
- package/dist/interpolation-DEDSLETn.mjs +128 -0
- package/dist/interpolation-DERg6Lwt.js +1 -0
- package/dist/orders-CzzcFQha.mjs +559 -0
- package/dist/orders-ETtbA4aQ.js +1 -0
- package/dist/{payment-Bosr0m3u.mjs → payment-C3ohkehF.mjs} +1 -1
- package/dist/{payment-DDnC03jb.js → payment-Dfr-Ro-a.js} +1 -1
- package/dist/{resources-BtF5RUUq.js → resources-CxeFd57z.js} +1 -1
- package/dist/{resources-B7qDBC91.mjs → resources-WI_4SO6T.mjs} +2 -2
- package/dist/server-handlers.cjs.js +1 -1
- package/dist/server-handlers.mjs +457 -387
- package/dist/src/appointments/chat-components/AgendaOpeningHoursCard.vue.d.ts +15 -0
- package/dist/src/appointments/components/edit/CustomerInformationFieldEditorDialog.vue.d.ts +17 -5
- package/dist/src/appointments/components/edit/EventDialog/BookingsList.vue.d.ts +8 -3
- package/dist/src/appointments/components/edit/EventDialog/EventDialog.vue.d.ts +1 -0
- package/dist/src/appointments/components/edit/EventDialog/ReservationDetailDialog.vue.d.ts +6 -3
- package/dist/src/appointments/components/edit/EventTimeline.vue.d.ts +3 -0
- package/dist/src/appointments/components/edit/EventView.vue.d.ts +6 -1
- package/dist/src/appointments/components/edit/MetadataSchemaEditorDialog.vue.d.ts +12 -0
- package/dist/src/appointments/components/edit/OrderMetadataDisplay.vue.d.ts +21 -0
- package/dist/src/appointments/components/edit/dashboard/BookingsList.vue.d.ts +8 -3
- package/dist/src/appointments/index.d.ts +53 -0
- package/dist/src/appointments/pages/edit/agenda.vue.d.ts +3 -1
- package/dist/src/appointments/pages/edit/availability.vue.d.ts +1 -26
- package/dist/src/appointments/pages/edit/booking-data.vue.d.ts +65 -0
- package/dist/src/appointments/pages/edit/orders.vue.d.ts +7 -3
- package/dist/src/appointments/tools.d.ts +52 -0
- package/dist/src/appointments/types.d.ts +12 -0
- package/dist/src/table/config.d.ts +200 -0
- package/dist/src/table/get_data_flow-DEFAULT.json.d.ts +129 -0
- package/dist/src/table/index.d.ts +200 -0
- package/dist/utils-CanmrIWO.mjs +47 -0
- package/dist/utils-Yd6F5mea.js +3 -0
- package/package.json +2 -2
- package/src/appointments/tools.ts +38 -0
- package/dist/Acquisition-DPScJD4t.js +0 -1
- package/dist/AppointmentListTable-CQ0WIXtj.js +0 -1
- package/dist/AppointmentListTable-aV_UJd6j.mjs +0 -159
- package/dist/Audience-Csw1QLmw.js +0 -1
- package/dist/Content-dYr7kYT0.js +0 -1
- package/dist/DateFormatter-DbtOLV0L.js +0 -1
- package/dist/EditLayout.vue_vue_type_script_setup_true_lang-DXa-Xxue.mjs +0 -74
- package/dist/EditLayout.vue_vue_type_script_setup_true_lang-ozYrxb2g.js +0 -1
- package/dist/Overview-DBu86Ikb.js +0 -1
- package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-COfCOMsz.js +0 -349
- package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-CYXkhhdp.mjs +0 -2383
- package/dist/SeoHealth-DzftZW1m.js +0 -1
- package/dist/TableView-CIJs118q.mjs +0 -5929
- package/dist/TableView-DzZYf34i.js +0 -4
- package/dist/agenda-DMT75Qfo.mjs +0 -1133
- package/dist/agenda-DxD4RMsy.js +0 -1
- package/dist/availability-B1D4Fyzi.mjs +0 -629
- package/dist/availability-DxrUcYbW.js +0 -1
- package/dist/index-BbqRTXuU.js +0 -35
- package/dist/index-D4GsbUId.mjs +0 -1091
- package/dist/interpolation-BBwG_ON6.mjs +0 -65
- package/dist/interpolation-CsOrww73.js +0 -1
- package/dist/orders-BRfXlWgV.mjs +0 -397
- package/dist/orders-CrCz1WTR.js +0 -1
- package/dist/regular-slots-Cc1jmKuC.mjs +0 -222
- package/dist/regular-slots-DBs1XVeN.js +0 -1
- package/dist/src/appointments/pages/edit/regular-slots.vue.d.ts +0 -2
- package/dist/utils-BVKy9S2J.mjs +0 -29
- package/dist/utils-D6CaKJbp.js +0 -2
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { defineComponent as U, reactive as $, ref as k, resolveComponent as a, openBlock as m, createBlock as y, withCtx as i, createElementVNode as s, createElementBlock as S, createVNode as t, createTextVNode as l, toDisplayString as N, createCommentVNode as w } from "vue";
|
|
2
|
+
import { _ as D } from "./EditLayout.vue_vue_type_script_setup_true_lang-DWMqQvHl.mjs";
|
|
3
|
+
import { useModuleRoute as j, useModule as W, useFirebaseIntegration as q } from "@oneclick.dev/cms-kit";
|
|
4
|
+
const z = {
|
|
5
|
+
key: 0,
|
|
6
|
+
class: "max-w-2xl"
|
|
7
|
+
}, F = {
|
|
8
|
+
key: 0,
|
|
9
|
+
class: "text-sm text-orange-500 mt-2"
|
|
10
|
+
}, H = { class: "space-y-3" }, O = { class: "flex items-center justify-between rounded-lg border p-4 bg-card" }, J = { class: "space-y-2" }, K = { class: "flex justify-start mt-8" }, h = /* @__PURE__ */ U({
|
|
11
|
+
__name: "availability",
|
|
12
|
+
setup(Q) {
|
|
13
|
+
const { params: g } = j(), { config: v } = W(), x = q(v.project), n = $({
|
|
14
|
+
minimumAdvanceNotice: {
|
|
15
|
+
value: 0,
|
|
16
|
+
unit: "minutes"
|
|
17
|
+
},
|
|
18
|
+
serviceVisibility: 60,
|
|
19
|
+
maxTicketsPerReservation: "",
|
|
20
|
+
needsApproval: !1
|
|
21
|
+
}), d = k(!1), V = k(!0), _ = async () => {
|
|
22
|
+
d.value = !0;
|
|
23
|
+
try {
|
|
24
|
+
const o = g.value.id;
|
|
25
|
+
if (!o) throw new Error("Missing agenda ID");
|
|
26
|
+
await x.update(v.agendaCollection, o, {
|
|
27
|
+
minimumAdvanceNotice: {
|
|
28
|
+
value: Number(n.minimumAdvanceNotice?.value) || 0,
|
|
29
|
+
unit: n.minimumAdvanceNotice?.unit ?? "minutes"
|
|
30
|
+
},
|
|
31
|
+
serviceVisibility: Math.max(Number(n.serviceVisibility) || 1, 1),
|
|
32
|
+
maxTicketsPerReservation: Math.max(Number(n.maxTicketsPerReservation) || 0, 0),
|
|
33
|
+
needsApproval: n.needsApproval || !1
|
|
34
|
+
});
|
|
35
|
+
} catch (o) {
|
|
36
|
+
console.error("Error saving changes:", o);
|
|
37
|
+
} finally {
|
|
38
|
+
d.value = !1;
|
|
39
|
+
}
|
|
40
|
+
}, M = async () => {
|
|
41
|
+
try {
|
|
42
|
+
const o = await x.get(v.agendaCollection, g.value.id);
|
|
43
|
+
o && (n.minimumAdvanceNotice = o.minimumAdvanceNotice || { value: 0, unit: "minutes" }, n.serviceVisibility = o.serviceVisibility || 60, n.maxTicketsPerReservation = Number(o.maxTicketsPerReservation) && o.maxTicketsPerReservation > 0 ? parseInt(o.maxTicketsPerReservation) : "", n.needsApproval = o.needsApproval || !1);
|
|
44
|
+
} catch (o) {
|
|
45
|
+
console.error("Error loading agenda data:", o);
|
|
46
|
+
} finally {
|
|
47
|
+
V.value = !1;
|
|
48
|
+
}
|
|
49
|
+
}, T = () => {
|
|
50
|
+
let o = Math.abs(n.minimumAdvanceNotice.value), e = n.minimumAdvanceNotice.unit;
|
|
51
|
+
return o === 1 ? (e.endsWith("s") && (e = e.slice(0, -1)), `Lead time is negative. Bookings remain open for 1 ${e} after the slot has started.`) : `Lead time is negative. Bookings remain open for ${o} ${e} after the slot has started.`;
|
|
52
|
+
};
|
|
53
|
+
return M(), (o, e) => {
|
|
54
|
+
const u = a("Label"), c = a("InputGroupInput"), C = a("Search"), p = a("InputGroupAddon"), I = a("SelectValue"), B = a("SelectTrigger"), f = a("SelectItem"), R = a("SelectGroup"), P = a("SelectContent"), G = a("Select"), b = a("InputGroup"), A = a("Badge"), L = a("Switch"), E = a("Button");
|
|
55
|
+
return m(), y(D, null, {
|
|
56
|
+
default: i(() => [
|
|
57
|
+
e[26] || (e[26] = s("h1", { class: "text-lg font-medium mb-8" }, "Availability Settings", -1)),
|
|
58
|
+
V.value ? w("", !0) : (m(), S("div", z, [
|
|
59
|
+
s("div", null, [
|
|
60
|
+
t(u, {
|
|
61
|
+
for: "lead-time",
|
|
62
|
+
class: "text-base font-medium mb-2"
|
|
63
|
+
}, {
|
|
64
|
+
default: i(() => [...e[6] || (e[6] = [
|
|
65
|
+
l(" Minimum Advance Notice - Lead Time (Optional) ", -1)
|
|
66
|
+
])]),
|
|
67
|
+
_: 1
|
|
68
|
+
}),
|
|
69
|
+
t(b, { class: "max-w-md" }, {
|
|
70
|
+
default: i(() => [
|
|
71
|
+
t(c, {
|
|
72
|
+
placeholder: "0",
|
|
73
|
+
id: "lead-time",
|
|
74
|
+
modelValue: n.minimumAdvanceNotice.value,
|
|
75
|
+
"onUpdate:modelValue": e[0] || (e[0] = (r) => n.minimumAdvanceNotice.value = r),
|
|
76
|
+
modelModifiers: { value: !0 },
|
|
77
|
+
type: "number",
|
|
78
|
+
class: "no-spinner"
|
|
79
|
+
}, null, 8, ["modelValue"]),
|
|
80
|
+
t(p, null, {
|
|
81
|
+
default: i(() => [
|
|
82
|
+
t(C)
|
|
83
|
+
]),
|
|
84
|
+
_: 1
|
|
85
|
+
}),
|
|
86
|
+
t(p, { align: "inline-end" }, {
|
|
87
|
+
default: i(() => [
|
|
88
|
+
t(G, {
|
|
89
|
+
modelValue: n.minimumAdvanceNotice.unit,
|
|
90
|
+
"onUpdate:modelValue": e[1] || (e[1] = (r) => n.minimumAdvanceNotice.unit = r)
|
|
91
|
+
}, {
|
|
92
|
+
default: i(() => [
|
|
93
|
+
t(B, { class: "w-[180px] border-0 bg-transparent -mr-1.5" }, {
|
|
94
|
+
default: i(() => [
|
|
95
|
+
t(I)
|
|
96
|
+
]),
|
|
97
|
+
_: 1
|
|
98
|
+
}),
|
|
99
|
+
t(P, null, {
|
|
100
|
+
default: i(() => [
|
|
101
|
+
t(R, null, {
|
|
102
|
+
default: i(() => [
|
|
103
|
+
t(f, { value: "minutes" }, {
|
|
104
|
+
default: i(() => [...e[7] || (e[7] = [
|
|
105
|
+
l(" Minutes ", -1)
|
|
106
|
+
])]),
|
|
107
|
+
_: 1
|
|
108
|
+
}),
|
|
109
|
+
t(f, { value: "hours" }, {
|
|
110
|
+
default: i(() => [...e[8] || (e[8] = [
|
|
111
|
+
l(" Hours ", -1)
|
|
112
|
+
])]),
|
|
113
|
+
_: 1
|
|
114
|
+
}),
|
|
115
|
+
t(f, { value: "days" }, {
|
|
116
|
+
default: i(() => [...e[9] || (e[9] = [
|
|
117
|
+
l(" Days ", -1)
|
|
118
|
+
])]),
|
|
119
|
+
_: 1
|
|
120
|
+
})
|
|
121
|
+
]),
|
|
122
|
+
_: 1
|
|
123
|
+
})
|
|
124
|
+
]),
|
|
125
|
+
_: 1
|
|
126
|
+
})
|
|
127
|
+
]),
|
|
128
|
+
_: 1
|
|
129
|
+
}, 8, ["modelValue"])
|
|
130
|
+
]),
|
|
131
|
+
_: 1
|
|
132
|
+
})
|
|
133
|
+
]),
|
|
134
|
+
_: 1
|
|
135
|
+
}),
|
|
136
|
+
e[10] || (e[10] = s("p", { class: "text-sm text-muted-foreground mt-2" }, " Set how far in advance a customer must book your slot. ", -1)),
|
|
137
|
+
n.minimumAdvanceNotice.value < 0 ? (m(), S("p", F, N(T()), 1)) : w("", !0)
|
|
138
|
+
]),
|
|
139
|
+
e[23] || (e[23] = s("hr", { class: "my-8" }, null, -1)),
|
|
140
|
+
s("div", null, [
|
|
141
|
+
t(u, {
|
|
142
|
+
for: "service-visibility",
|
|
143
|
+
class: "text-base font-medium mb-2"
|
|
144
|
+
}, {
|
|
145
|
+
default: i(() => [...e[11] || (e[11] = [
|
|
146
|
+
l(" Service Visibility ", -1)
|
|
147
|
+
])]),
|
|
148
|
+
_: 1
|
|
149
|
+
}),
|
|
150
|
+
t(b, { class: "max-w-md" }, {
|
|
151
|
+
default: i(() => [
|
|
152
|
+
t(c, {
|
|
153
|
+
id: "service-visibility",
|
|
154
|
+
modelValue: n.serviceVisibility,
|
|
155
|
+
"onUpdate:modelValue": e[2] || (e[2] = (r) => n.serviceVisibility = r),
|
|
156
|
+
modelModifiers: { number: !0 },
|
|
157
|
+
placeholder: "1",
|
|
158
|
+
type: "number",
|
|
159
|
+
class: "no-spinner",
|
|
160
|
+
min: "1",
|
|
161
|
+
onBlur: e[3] || (e[3] = (r) => n.serviceVisibility = Math.max(n.serviceVisibility, 1))
|
|
162
|
+
}, null, 8, ["modelValue"]),
|
|
163
|
+
t(p, { align: "inline-end" }, {
|
|
164
|
+
default: i(() => [...e[12] || (e[12] = [
|
|
165
|
+
l(" days ", -1)
|
|
166
|
+
])]),
|
|
167
|
+
_: 1
|
|
168
|
+
})
|
|
169
|
+
]),
|
|
170
|
+
_: 1
|
|
171
|
+
}),
|
|
172
|
+
e[13] || (e[13] = s("p", { class: "text-sm text-muted-foreground mt-2" }, " Set how many days in advance the service is visible to customers. ", -1))
|
|
173
|
+
]),
|
|
174
|
+
e[24] || (e[24] = s("hr", { class: "my-8" }, null, -1)),
|
|
175
|
+
s("div", null, [
|
|
176
|
+
t(u, {
|
|
177
|
+
for: "max-capacity",
|
|
178
|
+
class: "text-base font-medium mb-2"
|
|
179
|
+
}, {
|
|
180
|
+
default: i(() => [...e[14] || (e[14] = [
|
|
181
|
+
l(" Maximum Tickets Per Booking ", -1)
|
|
182
|
+
])]),
|
|
183
|
+
_: 1
|
|
184
|
+
}),
|
|
185
|
+
t(b, { class: "max-w-md" }, {
|
|
186
|
+
default: i(() => [
|
|
187
|
+
t(c, {
|
|
188
|
+
placeholder: "∞",
|
|
189
|
+
type: "number",
|
|
190
|
+
id: "max-capacity",
|
|
191
|
+
class: "no-spinner",
|
|
192
|
+
min: "1",
|
|
193
|
+
modelValue: n.maxTicketsPerReservation,
|
|
194
|
+
"onUpdate:modelValue": e[4] || (e[4] = (r) => n.maxTicketsPerReservation = r),
|
|
195
|
+
modelModifiers: { number: !0 }
|
|
196
|
+
}, null, 8, ["modelValue"]),
|
|
197
|
+
t(p, { align: "inline-end" }, {
|
|
198
|
+
default: i(() => [...e[15] || (e[15] = [
|
|
199
|
+
l(" spots ", -1)
|
|
200
|
+
])]),
|
|
201
|
+
_: 1
|
|
202
|
+
})
|
|
203
|
+
]),
|
|
204
|
+
_: 1
|
|
205
|
+
}),
|
|
206
|
+
e[16] || (e[16] = s("p", { class: "text-sm text-muted-foreground mt-2" }, " Limit how many spots a customer can book in a single reservation. ", -1))
|
|
207
|
+
]),
|
|
208
|
+
e[25] || (e[25] = s("hr", { class: "my-8" }, null, -1)),
|
|
209
|
+
s("div", H, [
|
|
210
|
+
s("div", null, [
|
|
211
|
+
t(u, { class: "text-base font-medium" }, {
|
|
212
|
+
default: i(() => [...e[17] || (e[17] = [
|
|
213
|
+
l("Booking Approval", -1)
|
|
214
|
+
])]),
|
|
215
|
+
_: 1
|
|
216
|
+
}),
|
|
217
|
+
e[18] || (e[18] = s("p", { class: "text-sm text-muted-foreground" }, " Choose whether you want to confirm booking requests manually or accept them automatically. ", -1))
|
|
218
|
+
]),
|
|
219
|
+
s("div", O, [
|
|
220
|
+
s("div", J, [
|
|
221
|
+
t(u, { class: "text-sm font-semibold" }, {
|
|
222
|
+
default: i(() => [...e[19] || (e[19] = [
|
|
223
|
+
l("Enable Manual Approval", -1)
|
|
224
|
+
])]),
|
|
225
|
+
_: 1
|
|
226
|
+
}),
|
|
227
|
+
e[22] || (e[22] = s("p", { class: "text-xs text-muted-foreground max-w-[300px]" }, " When enabled, you must approve bookings within your dashboard before they are finalized. ", -1)),
|
|
228
|
+
n.needsApproval ? (m(), y(A, { key: 0 }, {
|
|
229
|
+
default: i(() => [...e[20] || (e[20] = [
|
|
230
|
+
l("Status: Manual Review", -1)
|
|
231
|
+
])]),
|
|
232
|
+
_: 1
|
|
233
|
+
})) : (m(), y(A, {
|
|
234
|
+
key: 1,
|
|
235
|
+
variant: "secondary"
|
|
236
|
+
}, {
|
|
237
|
+
default: i(() => [...e[21] || (e[21] = [
|
|
238
|
+
l("Status: Auto-Confirm", -1)
|
|
239
|
+
])]),
|
|
240
|
+
_: 1
|
|
241
|
+
}))
|
|
242
|
+
]),
|
|
243
|
+
t(L, {
|
|
244
|
+
modelValue: n.needsApproval,
|
|
245
|
+
"onUpdate:modelValue": e[5] || (e[5] = (r) => n.needsApproval = r)
|
|
246
|
+
}, null, 8, ["modelValue"])
|
|
247
|
+
])
|
|
248
|
+
]),
|
|
249
|
+
s("div", K, [
|
|
250
|
+
t(E, {
|
|
251
|
+
onClick: _,
|
|
252
|
+
disabled: d.value
|
|
253
|
+
}, {
|
|
254
|
+
default: i(() => [
|
|
255
|
+
l(N(d.value ? "Saving..." : "Save Changes"), 1)
|
|
256
|
+
]),
|
|
257
|
+
_: 1
|
|
258
|
+
}, 8, ["disabled"])
|
|
259
|
+
])
|
|
260
|
+
]))
|
|
261
|
+
]),
|
|
262
|
+
_: 1
|
|
263
|
+
});
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
export {
|
|
268
|
+
h as default
|
|
269
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),_=require("./EditLayout.vue_vue_type_script_setup_true_lang-kpjbVSXg.js"),c=require("@oneclick.dev/cms-kit"),E={key:0,class:"max-w-2xl"},B={key:0,class:"text-sm text-orange-500 mt-2"},M={class:"space-y-3"},h={class:"flex items-center justify-between rounded-lg border p-4 bg-card"},I={class:"space-y-2"},P={class:"flex justify-start mt-8"},R=e.defineComponent({__name:"availability",setup(L){const{params:p}=c.useModuleRoute(),{config:r}=c.useModule(),v=c.useFirebaseIntegration(r.project),o=e.reactive({minimumAdvanceNotice:{value:0,unit:"minutes"},serviceVisibility:60,maxTicketsPerReservation:"",needsApproval:!1}),l=e.ref(!1),V=e.ref(!0),N=async()=>{l.value=!0;try{const n=p.value.id;if(!n)throw new Error("Missing agenda ID");await v.update(r.agendaCollection,n,{minimumAdvanceNotice:{value:Number(o.minimumAdvanceNotice?.value)||0,unit:o.minimumAdvanceNotice?.unit??"minutes"},serviceVisibility:Math.max(Number(o.serviceVisibility)||1,1),maxTicketsPerReservation:Math.max(Number(o.maxTicketsPerReservation)||0,0),needsApproval:o.needsApproval||!1})}catch(n){console.error("Error saving changes:",n)}finally{l.value=!1}},f=async()=>{try{const n=await v.get(r.agendaCollection,p.value.id);n&&(o.minimumAdvanceNotice=n.minimumAdvanceNotice||{value:0,unit:"minutes"},o.serviceVisibility=n.serviceVisibility||60,o.maxTicketsPerReservation=Number(n.maxTicketsPerReservation)&&n.maxTicketsPerReservation>0?parseInt(n.maxTicketsPerReservation):"",o.needsApproval=n.needsApproval||!1)}catch(n){console.error("Error loading agenda data:",n)}finally{V.value=!1}},y=()=>{let n=Math.abs(o.minimumAdvanceNotice.value),t=o.minimumAdvanceNotice.unit;return n===1?(t.endsWith("s")&&(t=t.slice(0,-1)),`Lead time is negative. Bookings remain open for 1 ${t} after the slot has started.`):`Lead time is negative. Bookings remain open for ${n} ${t} after the slot has started.`};return f(),(n,t)=>{const i=e.resolveComponent("Label"),d=e.resolveComponent("InputGroupInput"),b=e.resolveComponent("Search"),s=e.resolveComponent("InputGroupAddon"),g=e.resolveComponent("SelectValue"),C=e.resolveComponent("SelectTrigger"),m=e.resolveComponent("SelectItem"),w=e.resolveComponent("SelectGroup"),k=e.resolveComponent("SelectContent"),S=e.resolveComponent("Select"),u=e.resolveComponent("InputGroup"),x=e.resolveComponent("Badge"),A=e.resolveComponent("Switch"),T=e.resolveComponent("Button");return e.openBlock(),e.createBlock(_._sfc_main,null,{default:e.withCtx(()=>[t[26]||(t[26]=e.createElementVNode("h1",{class:"text-lg font-medium mb-8"},"Availability Settings",-1)),V.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",E,[e.createElementVNode("div",null,[e.createVNode(i,{for:"lead-time",class:"text-base font-medium mb-2"},{default:e.withCtx(()=>[...t[6]||(t[6]=[e.createTextVNode(" Minimum Advance Notice - Lead Time (Optional) ",-1)])]),_:1}),e.createVNode(u,{class:"max-w-md"},{default:e.withCtx(()=>[e.createVNode(d,{placeholder:"0",id:"lead-time",modelValue:o.minimumAdvanceNotice.value,"onUpdate:modelValue":t[0]||(t[0]=a=>o.minimumAdvanceNotice.value=a),modelModifiers:{value:!0},type:"number",class:"no-spinner"},null,8,["modelValue"]),e.createVNode(s,null,{default:e.withCtx(()=>[e.createVNode(b)]),_:1}),e.createVNode(s,{align:"inline-end"},{default:e.withCtx(()=>[e.createVNode(S,{modelValue:o.minimumAdvanceNotice.unit,"onUpdate:modelValue":t[1]||(t[1]=a=>o.minimumAdvanceNotice.unit=a)},{default:e.withCtx(()=>[e.createVNode(C,{class:"w-[180px] border-0 bg-transparent -mr-1.5"},{default:e.withCtx(()=>[e.createVNode(g)]),_:1}),e.createVNode(k,null,{default:e.withCtx(()=>[e.createVNode(w,null,{default:e.withCtx(()=>[e.createVNode(m,{value:"minutes"},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode(" Minutes ",-1)])]),_:1}),e.createVNode(m,{value:"hours"},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode(" Hours ",-1)])]),_:1}),e.createVNode(m,{value:"days"},{default:e.withCtx(()=>[...t[9]||(t[9]=[e.createTextVNode(" Days ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1}),t[10]||(t[10]=e.createElementVNode("p",{class:"text-sm text-muted-foreground mt-2"}," Set how far in advance a customer must book your slot. ",-1)),o.minimumAdvanceNotice.value<0?(e.openBlock(),e.createElementBlock("p",B,e.toDisplayString(y()),1)):e.createCommentVNode("",!0)]),t[23]||(t[23]=e.createElementVNode("hr",{class:"my-8"},null,-1)),e.createElementVNode("div",null,[e.createVNode(i,{for:"service-visibility",class:"text-base font-medium mb-2"},{default:e.withCtx(()=>[...t[11]||(t[11]=[e.createTextVNode(" Service Visibility ",-1)])]),_:1}),e.createVNode(u,{class:"max-w-md"},{default:e.withCtx(()=>[e.createVNode(d,{id:"service-visibility",modelValue:o.serviceVisibility,"onUpdate:modelValue":t[2]||(t[2]=a=>o.serviceVisibility=a),modelModifiers:{number:!0},placeholder:"1",type:"number",class:"no-spinner",min:"1",onBlur:t[3]||(t[3]=a=>o.serviceVisibility=Math.max(o.serviceVisibility,1))},null,8,["modelValue"]),e.createVNode(s,{align:"inline-end"},{default:e.withCtx(()=>[...t[12]||(t[12]=[e.createTextVNode(" days ",-1)])]),_:1})]),_:1}),t[13]||(t[13]=e.createElementVNode("p",{class:"text-sm text-muted-foreground mt-2"}," Set how many days in advance the service is visible to customers. ",-1))]),t[24]||(t[24]=e.createElementVNode("hr",{class:"my-8"},null,-1)),e.createElementVNode("div",null,[e.createVNode(i,{for:"max-capacity",class:"text-base font-medium mb-2"},{default:e.withCtx(()=>[...t[14]||(t[14]=[e.createTextVNode(" Maximum Tickets Per Booking ",-1)])]),_:1}),e.createVNode(u,{class:"max-w-md"},{default:e.withCtx(()=>[e.createVNode(d,{placeholder:"∞",type:"number",id:"max-capacity",class:"no-spinner",min:"1",modelValue:o.maxTicketsPerReservation,"onUpdate:modelValue":t[4]||(t[4]=a=>o.maxTicketsPerReservation=a),modelModifiers:{number:!0}},null,8,["modelValue"]),e.createVNode(s,{align:"inline-end"},{default:e.withCtx(()=>[...t[15]||(t[15]=[e.createTextVNode(" spots ",-1)])]),_:1})]),_:1}),t[16]||(t[16]=e.createElementVNode("p",{class:"text-sm text-muted-foreground mt-2"}," Limit how many spots a customer can book in a single reservation. ",-1))]),t[25]||(t[25]=e.createElementVNode("hr",{class:"my-8"},null,-1)),e.createElementVNode("div",M,[e.createElementVNode("div",null,[e.createVNode(i,{class:"text-base font-medium"},{default:e.withCtx(()=>[...t[17]||(t[17]=[e.createTextVNode("Booking Approval",-1)])]),_:1}),t[18]||(t[18]=e.createElementVNode("p",{class:"text-sm text-muted-foreground"}," Choose whether you want to confirm booking requests manually or accept them automatically. ",-1))]),e.createElementVNode("div",h,[e.createElementVNode("div",I,[e.createVNode(i,{class:"text-sm font-semibold"},{default:e.withCtx(()=>[...t[19]||(t[19]=[e.createTextVNode("Enable Manual Approval",-1)])]),_:1}),t[22]||(t[22]=e.createElementVNode("p",{class:"text-xs text-muted-foreground max-w-[300px]"}," When enabled, you must approve bookings within your dashboard before they are finalized. ",-1)),o.needsApproval?(e.openBlock(),e.createBlock(x,{key:0},{default:e.withCtx(()=>[...t[20]||(t[20]=[e.createTextVNode("Status: Manual Review",-1)])]),_:1})):(e.openBlock(),e.createBlock(x,{key:1,variant:"secondary"},{default:e.withCtx(()=>[...t[21]||(t[21]=[e.createTextVNode("Status: Auto-Confirm",-1)])]),_:1}))]),e.createVNode(A,{modelValue:o.needsApproval,"onUpdate:modelValue":t[5]||(t[5]=a=>o.needsApproval=a)},null,8,["modelValue"])])]),e.createElementVNode("div",P,[e.createVNode(T,{onClick:N,disabled:l.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.value?"Saving...":"Save Changes"),1)]),_:1},8,["disabled"])])]))]),_:1})}}});exports.default=R;
|