@oneclick.dev/cms-core-modules 0.0.102 → 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/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/{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-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/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/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 +196 -143
- 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/AppointmentListTable-CQ0WIXtj.js +0 -1
- package/dist/AppointmentListTable-aV_UJd6j.mjs +0 -159
- 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/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-CL5kbDII.mjs +0 -2782
- package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-DcyyNvf6.js +0 -349
- package/dist/TableView-CIJs118q.mjs +0 -5929
- package/dist/TableView-DzZYf34i.js +0 -4
- package/dist/agenda-CCOjPiwP.mjs +0 -1133
- package/dist/agenda-CNPQfaIQ.js +0 -1
- package/dist/availability-B1D4Fyzi.mjs +0 -629
- package/dist/availability-DxrUcYbW.js +0 -1
- package/dist/index-BOnqrBfY.js +0 -35
- package/dist/index-Bj0qaL1N.mjs +0 -1091
- package/dist/interpolation-BBwG_ON6.mjs +0 -65
- package/dist/interpolation-CsOrww73.js +0 -1
- package/dist/orders-BJV5vRQr.mjs +0 -397
- package/dist/orders-C1C5IEIP.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;
|