@oneclick.dev/cms-core-modules 0.0.61 → 0.0.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/{ContentEditor-BAepN3Yd.js → ContentEditor-DKFCmfOs.js} +1 -1
  2. package/dist/{ContentEditor-BPjWW3d1.mjs → ContentEditor-owdOIage.mjs} +1 -1
  3. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-DRVxQswt.js +1 -0
  4. package/dist/{NewReservationDialog.vue_vue_type_script_setup_true_lang-BJitmbPE.mjs → NewReservationDialog.vue_vue_type_script_setup_true_lang-DkgDWC2i.mjs} +130 -125
  5. package/dist/{Overview-DtWvKB3W.mjs → Overview-DiBYtvEX.mjs} +124 -119
  6. package/dist/Overview-qP1guKjx.js +1 -0
  7. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-B7ks5mbf.mjs +2332 -0
  8. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-Vxubki_v.js +349 -0
  9. package/dist/{TableView-_2cP-w_7.js → TableView-BqhL_P45.js} +100 -100
  10. package/dist/{TableView-DlhHyuUZ.mjs → TableView-Dbl8qcUy.mjs} +14991 -14728
  11. package/dist/agenda-DFNJ8C1N.mjs +1136 -0
  12. package/dist/agenda-MjkwV63A.js +1 -0
  13. package/dist/floating-ui.dom-CBBY0Ism.js +1 -0
  14. package/dist/floating-ui.dom-xfqXu4GA.mjs +1138 -0
  15. package/dist/{index-DTago6vW-Bhr8E1Y6.js → index-CgfL8UKf-DAN7RkzR.js} +10 -10
  16. package/dist/{index-DTago6vW-CnomHQ_S.mjs → index-CgfL8UKf-DUUg9HDA.mjs} +904 -875
  17. package/dist/index-DBDq-h4j.js +245 -0
  18. package/dist/{index-BDaVYdkD.mjs → index-X0L4AHBR.mjs} +2406 -2394
  19. package/dist/index-YMaY4uuk-BgpTtr73.js +1 -0
  20. package/dist/{index-YMaY4uuk-BshejgNP.mjs → index-YMaY4uuk-C_xV5K9Z.mjs} +13 -14
  21. package/dist/index.cjs.js +1 -1
  22. package/dist/index.mjs +6 -6
  23. package/dist/orders-Bqa3Z3tH.mjs +356 -0
  24. package/dist/orders-D5GJOZXN.js +1 -0
  25. package/dist/src/appointments/components/edit/EventDialog/ApproveReservationDialog.vue.d.ts +8 -0
  26. package/dist/src/appointments/components/edit/EventDialog/BookingsList.vue.d.ts +39 -9
  27. package/dist/src/appointments/components/edit/EventDialog/CancelReservationDialog.vue.d.ts +2 -2
  28. package/dist/src/appointments/components/edit/EventDialog/RejectReservationDialog.vue.d.ts +8 -0
  29. package/dist/src/appointments/components/edit/EventDialog/ReservationDetailDialog.vue.d.ts +36 -8
  30. package/dist/src/appointments/components/edit/dashboard/BookingsList.vue.d.ts +46 -9
  31. package/dist/src/appointments/components/edit/dashboard/Timeline.vue.d.ts +19 -0
  32. package/dist/src/appointments/pages/edit/orders.vue.d.ts +39 -9
  33. package/package.json +1 -1
  34. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-D50uTpZY.js +0 -1
  35. package/dist/Overview-B_99j5eA.js +0 -1
  36. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-CI8YgHdU.js +0 -345
  37. package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-P-MWwcVh.mjs +0 -2093
  38. package/dist/agenda-D81m29_4.mjs +0 -1135
  39. package/dist/agenda-uzPPxgsW.js +0 -1
  40. package/dist/floating-ui.dom-C82nbomj.js +0 -1
  41. package/dist/floating-ui.dom-ouSgPqty.mjs +0 -1133
  42. package/dist/index-DfV8-6ON.js +0 -245
  43. package/dist/index-YMaY4uuk-BxVT7IpO.js +0 -1
  44. package/dist/orders-Bh8w0ueq.mjs +0 -346
  45. package/dist/orders-Dt0zMz97.js +0 -1
  46. package/dist/src/appointments/components/edit/EventDialog/ResendConfirmationDialog.vue.d.ts +0 -4
@@ -1,21 +1,32 @@
1
+ interface Resource {
2
+ id: string;
3
+ name: string;
4
+ color?: string;
5
+ isActive?: boolean;
6
+ }
1
7
  type __VLS_Props = {
2
8
  activeDate: Date;
3
9
  selectedResource?: string | null;
10
+ resources: Resource[];
4
11
  };
5
12
  declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
6
13
  reservationDetailDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{
7
- onCancelled?: ((orderId: string) => any) | undefined;
14
+ onConfirmed?: (() => any) | undefined;
15
+ onCancelled?: (() => any) | undefined;
16
+ onRejected?: (() => any) | undefined;
8
17
  }>, {
9
18
  openDialog: (order: any) => void;
10
19
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
11
- cancelled: (orderId: string) => any;
20
+ confirmed: () => any;
21
+ cancelled: () => any;
22
+ rejected: () => any;
12
23
  }, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {
13
24
  cancelReservationDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{
14
- onCancel?: ((...args: any[]) => any) | undefined;
25
+ onConfirm?: ((...args: any[]) => any) | undefined;
15
26
  }>, {
16
27
  openDialog: (input: any) => void;
17
28
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
18
- cancel: (...args: any[]) => void;
29
+ confirm: (...args: any[]) => void;
19
30
  }, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
20
31
  P: {};
21
32
  B: {};
@@ -24,20 +35,44 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
24
35
  M: {};
25
36
  Defaults: {};
26
37
  }, Readonly<{}> & Readonly<{
27
- onCancel?: ((...args: any[]) => any) | undefined;
38
+ onConfirm?: ((...args: any[]) => any) | undefined;
28
39
  }>, {
29
40
  openDialog: (input: any) => void;
30
41
  }, {}, {}, {}, {}> | null;
31
- resendConfirmationDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{}>, {
42
+ approveReservationDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{
43
+ onConfirm?: ((...args: any[]) => any) | undefined;
44
+ }>, {
45
+ openDialog: (input: any, type?: "approve" | "resend") => void;
46
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
47
+ confirm: (...args: any[]) => void;
48
+ }, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
49
+ P: {};
50
+ B: {};
51
+ D: {};
52
+ C: {};
53
+ M: {};
54
+ Defaults: {};
55
+ }, Readonly<{}> & Readonly<{
56
+ onConfirm?: ((...args: any[]) => any) | undefined;
57
+ }>, {
58
+ openDialog: (input: any, type?: "approve" | "resend") => void;
59
+ }, {}, {}, {}, {}> | null;
60
+ rejectReservationDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{
61
+ onConfirm?: ((...args: any[]) => any) | undefined;
62
+ }>, {
32
63
  openDialog: (input: any) => void;
33
- }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
64
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
65
+ confirm: (...args: any[]) => void;
66
+ }, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
34
67
  P: {};
35
68
  B: {};
36
69
  D: {};
37
70
  C: {};
38
71
  M: {};
39
72
  Defaults: {};
40
- }, Readonly<{}> & Readonly<{}>, {
73
+ }, Readonly<{}> & Readonly<{
74
+ onConfirm?: ((...args: any[]) => any) | undefined;
75
+ }>, {
41
76
  openDialog: (input: any) => void;
42
77
  }, {}, {}, {}, {}> | null;
43
78
  transferReservationDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{}>, {
@@ -60,7 +95,9 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
60
95
  M: {};
61
96
  Defaults: {};
62
97
  }, Readonly<{}> & Readonly<{
63
- onCancelled?: ((orderId: string) => any) | undefined;
98
+ onConfirmed?: (() => any) | undefined;
99
+ onCancelled?: (() => any) | undefined;
100
+ onRejected?: (() => any) | undefined;
64
101
  }>, {
65
102
  openDialog: (order: any) => void;
66
103
  }, {}, {}, {}, {}> | null;
@@ -1,7 +1,26 @@
1
+ import { Resource } from '../../../types';
2
+ interface AgendaData {
3
+ serviceName: string;
4
+ resources?: Resource[];
5
+ exceptions?: Exception[];
6
+ }
7
+ interface Exception {
8
+ id: string;
9
+ startDate: string;
10
+ endDate: string;
11
+ isClosed: boolean;
12
+ timeslots: {
13
+ startTime: string;
14
+ endTime: string;
15
+ }[];
16
+ resourceIds?: string[] | null;
17
+ }
1
18
  type __VLS_Props = {
2
19
  modelValue?: Date;
3
20
  selectedResource?: string | null;
4
21
  viewMode?: 'stacked' | 'single';
22
+ agendaData?: AgendaData;
23
+ resources?: Resource[];
5
24
  };
6
25
  declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
7
26
  "update:modelValue": (value: Date) => any;
@@ -1,17 +1,21 @@
1
1
  declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {
2
2
  reservationDetailDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{
3
- onCancelled?: ((orderId: string) => any) | undefined;
3
+ onConfirmed?: (() => any) | undefined;
4
+ onCancelled?: (() => any) | undefined;
5
+ onRejected?: (() => any) | undefined;
4
6
  }>, {
5
7
  openDialog: (order: any) => void;
6
8
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
7
- cancelled: (orderId: string) => any;
9
+ confirmed: () => any;
10
+ cancelled: () => any;
11
+ rejected: () => any;
8
12
  }, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {
9
13
  cancelReservationDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{
10
- onCancel?: ((...args: any[]) => any) | undefined;
14
+ onConfirm?: ((...args: any[]) => any) | undefined;
11
15
  }>, {
12
16
  openDialog: (input: any) => void;
13
17
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
14
- cancel: (...args: any[]) => void;
18
+ confirm: (...args: any[]) => void;
15
19
  }, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
16
20
  P: {};
17
21
  B: {};
@@ -20,20 +24,44 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
20
24
  M: {};
21
25
  Defaults: {};
22
26
  }, Readonly<{}> & Readonly<{
23
- onCancel?: ((...args: any[]) => any) | undefined;
27
+ onConfirm?: ((...args: any[]) => any) | undefined;
24
28
  }>, {
25
29
  openDialog: (input: any) => void;
26
30
  }, {}, {}, {}, {}> | null;
27
- resendConfirmationDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{}>, {
31
+ approveReservationDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{
32
+ onConfirm?: ((...args: any[]) => any) | undefined;
33
+ }>, {
34
+ openDialog: (input: any, type?: "approve" | "resend") => void;
35
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
36
+ confirm: (...args: any[]) => void;
37
+ }, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
38
+ P: {};
39
+ B: {};
40
+ D: {};
41
+ C: {};
42
+ M: {};
43
+ Defaults: {};
44
+ }, Readonly<{}> & Readonly<{
45
+ onConfirm?: ((...args: any[]) => any) | undefined;
46
+ }>, {
47
+ openDialog: (input: any, type?: "approve" | "resend") => void;
48
+ }, {}, {}, {}, {}> | null;
49
+ rejectReservationDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{
50
+ onConfirm?: ((...args: any[]) => any) | undefined;
51
+ }>, {
28
52
  openDialog: (input: any) => void;
29
- }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
53
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
54
+ confirm: (...args: any[]) => void;
55
+ }, import('vue').PublicProps, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
30
56
  P: {};
31
57
  B: {};
32
58
  D: {};
33
59
  C: {};
34
60
  M: {};
35
61
  Defaults: {};
36
- }, Readonly<{}> & Readonly<{}>, {
62
+ }, Readonly<{}> & Readonly<{
63
+ onConfirm?: ((...args: any[]) => any) | undefined;
64
+ }>, {
37
65
  openDialog: (input: any) => void;
38
66
  }, {}, {}, {}, {}> | null;
39
67
  transferReservationDialog: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{}>, {
@@ -56,7 +84,9 @@ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import
56
84
  M: {};
57
85
  Defaults: {};
58
86
  }, Readonly<{}> & Readonly<{
59
- onCancelled?: ((orderId: string) => any) | undefined;
87
+ onConfirmed?: (() => any) | undefined;
88
+ onCancelled?: (() => any) | undefined;
89
+ onRejected?: (() => any) | undefined;
60
90
  }>, {
61
91
  openDialog: (order: any) => void;
62
92
  }, {}, {}, {}, {}> | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneclick.dev/cms-core-modules",
3
- "version": "0.0.61",
3
+ "version": "0.0.63",
4
4
  "main": "dist/index.cjs.js",
5
5
  "module": "dist/index.mjs",
6
6
  "types": "dist/index.d.ts",
@@ -1 +0,0 @@
1
- "use strict";const e=require("vue"),O=require("lucide-vue-next"),D=require("@oneclick.dev/cms-kit"),X=require("./utils-D6CaKJbp.js"),f=require("./DateFormatter-BPPBZp1j.js"),Y={class:"@container/new-res-form space-y-5 py-4"},Z={class:"grid gap-4"},ee={class:"grid gap-4 @md/new-res-form:grid-cols-2"},te={class:"grid gap-2"},oe={class:"flex gap-2 items-center"},ae={class:"grid gap-2"},le={class:"flex gap-2 items-center"},ne={class:"grid gap-2"},re={class:"grid gap-2"},se={class:"grid gap-4"},de={class:"grid gap-4 @md/new-res-form:grid-cols-2"},ie={class:"grid gap-2"},ue={class:"grid gap-4 @md/new-res-form:grid-cols-2"},ce={class:"grid gap-2"},pe={class:"grid gap-2"},me={class:"flex items-center h-9 px-3 text-sm text-muted-foreground"},ve={class:"grid gap-4"},fe={class:"grid gap-4 @md/new-res-form:grid-cols-2"},Ve={class:"grid gap-2"},ge={class:"grid gap-2"},Ne={class:"grid gap-4 @md/new-res-form:grid-cols-2"},_e={class:"grid gap-2"},xe={class:"grid gap-2"},Ce={class:"mt-4 text-red-400"},we={class:"list-disc pl-4"},he=e.defineComponent({__name:"NewReservationDialog",setup(Te){const{params:I}=D.useModuleRoute(),{config:S}=D.useModule(),U=D.useFirebaseIntegration(S.project),N=e.ref(!1);e.watch(N,a=>{a&&(_.value=[],c.value=1,i.value=0,r.value=l.value?.resources?.[0]?.id??"",s.value=l.value?.pricingOptions?.find(t=>t.isDefault===!0)?.id??"",n.value="",V.value="",g.value="",p.value="",x.value="")});const E=e.ref(!1),l=e.inject("agendaData",e.ref({})),_=e.ref([]),c=e.ref(1),i=e.ref(0),r=e.ref(""),s=e.ref(""),n=e.ref(""),V=e.ref(""),g=e.ref(""),p=e.ref(""),x=e.ref(""),L=f.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(f.$14e0f24ef4ac5c92$export$aa8b41735afcabd2()),u=e.ref(),M=new f.$fb18d541ea1ad717$export$ad991b66133851cf("en-US",{dateStyle:"long"}),b=e.computed(()=>{if(!n.value||!s.value)return"";const a=l.value?.pricingOptions?.find(T=>T.id===s.value);if(!a?.duration)return n.value;const[t,m]=n.value.split(":").map(Number);if(isNaN(t)||isNaN(m))return"";const C=t*60+m+a.duration,w=Math.floor(C/60)%24,h=C%60;return`${w.toString().padStart(2,"0")}:${h.toString().padStart(2,"0")}`}),R=()=>{const a=[];return _.value=[],c.value<1&&c.value>9999&&a.push("Please fill in a correct number of spots."),i.value<0&&(i.value=0),r.value||a.push("Please select a resource."),s.value||a.push("Please select a type."),u.value||a.push("Please select the booking date."),(!n.value||n.value.length!==5||n.value?.indexOf(":")===-1||!parseInt(n.value?.replace(":","")))&&a.push("Please select a correct booking time."),V.value||a.push("Please fill in the first name of the customer."),g.value||a.push("Please fill in the last name of the customer."),(!p.value||/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(p.value)===!1)&&a.push("Please fill in the correct email of the customer."),_.value=a,a.length===0},q=async()=>{if(R())try{E.value=!0;const a={agendaId:I.value.id,customerInfo:{firstName:V.value,lastName:g.value,email:p.value,phone:x.value},amountPaid:parseFloat(i.value)??0,amountDue:0,subtotal:parseFloat(i.value)??0,total:parseFloat(i.value)??0,createdAt:new Date,updatedAt:new Date,discount:0,flattenedReservations:[`${r.value}_${u.value}_${n.value?.replace(":","")}`],paymentStatus:"paid",paymentType:"full",reservations:[{totalPrice:parseFloat(i.value?.toFixed(2))??0,basePrice:parseFloat((i.value/c.value).toFixed(2))??0,addOnsPrice:0,addOns:[],date:`${u.value}`,id:`res_${Date.now()}_${Math.random().toString(36).substring(2,9)}`,pricingOption:{duration:l.value?.pricingOptions?.find(t=>t.id===s.value)?.duration||"",id:l.value?.pricingOptions?.find(t=>t.id===s.value)?.id||"",name:l.value?.pricingOptions?.find(t=>t.id===s.value)?.name||"",price:l.value?.pricingOptions?.find(t=>t.id===s.value)?.price||""},pricingOptionId:s.value,resource:{avatarLabel:l.value?.resources?.find(t=>t.id===r.value)?.avatarLabel||"",color:l.value?.resources?.find(t=>t.id===r.value)?.color||"",description:l.value?.resources?.find(t=>t.id===r.value)?.description||"",id:l.value?.resources?.find(t=>t.id===r.value)?.id||"",name:l.value?.resources?.find(t=>t.id===r.value)?.name||""},resourceId:r.value,spots:c.value,timeslot:{startTime:n.value,endTime:b.value}}],status:"confirmed"};await U.add(S.reservationsCollection,a)}catch{}finally{E.value=!1,N.value=!1}};return(a,t)=>{const m=e.resolveComponent("Button"),C=e.resolveComponent("DialogTrigger"),w=e.resolveComponent("DialogTitle"),h=e.resolveComponent("DialogDescription"),T=e.resolveComponent("DialogHeader"),d=e.resolveComponent("Label"),v=e.resolveComponent("Input"),y=e.resolveComponent("SelectValue"),$=e.resolveComponent("SelectTrigger"),P=e.resolveComponent("SelectItem"),k=e.resolveComponent("SelectGroup"),B=e.resolveComponent("SelectContent"),F=e.resolveComponent("Select"),A=e.resolveComponent("PopoverTrigger"),j=e.resolveComponent("Calendar"),H=e.resolveComponent("PopoverContent"),z=e.resolveComponent("Popover"),G=e.resolveComponent("TimeInput"),K=e.resolveComponent("DialogFooter"),J=e.resolveComponent("DialogScrollContent"),Q=e.resolveComponent("Dialog");return e.openBlock(),e.createBlock(Q,{open:N.value,"onUpdate:open":t[10]||(t[10]=o=>N.value=o)},{default:e.withCtx(()=>[e.createVNode(C,{"as-child":""},{default:e.withCtx(()=>[e.createVNode(m,null,{default:e.withCtx(()=>[e.createVNode(e.unref(O.Plus),{class:"size-4"}),t[11]||(t[11]=e.createTextVNode(" Add Reservation ",-1))]),_:1})]),_:1}),e.createVNode(J,{class:"sm:max-w-xl"},{default:e.withCtx(()=>[e.createVNode(T,null,{default:e.withCtx(()=>[e.createVNode(w,null,{default:e.withCtx(()=>[...t[12]||(t[12]=[e.createTextVNode("Create new reservation",-1)])]),_:1}),e.createVNode(h)]),_:1}),e.createElementVNode("div",Y,[e.createElementVNode("div",Z,[e.createElementVNode("div",ee,[e.createElementVNode("div",te,[e.createVNode(d,null,{default:e.withCtx(()=>[...t[13]||(t[13]=[e.createTextVNode("Spots/tickets",-1)])]),_:1}),e.createElementVNode("div",oe,[e.createVNode(v,{modelValue:c.value,"onUpdate:modelValue":t[0]||(t[0]=o=>c.value=o),modelModifiers:{number:!0},type:"number",min:"1",class:"no-spinner"},null,8,["modelValue"])])]),e.createElementVNode("div",ae,[e.createVNode(d,null,{default:e.withCtx(()=>[...t[14]||(t[14]=[e.createTextVNode("Total price paid",-1)])]),_:1}),e.createElementVNode("div",le,[e.createVNode(v,{modelValue:i.value,"onUpdate:modelValue":t[1]||(t[1]=o=>i.value=o),modelModifiers:{number:!0},type:"number",min:"0",class:"no-spinner"},null,8,["modelValue"]),e.createTextVNode(" "+e.toDisplayString(e.unref(l).currency),1)])]),e.createElementVNode("div",ne,[e.createVNode(d,null,{default:e.withCtx(()=>[...t[15]||(t[15]=[e.createTextVNode("Resource",-1)])]),_:1}),e.createVNode(F,{modelValue:r.value,"onUpdate:modelValue":t[2]||(t[2]=o=>r.value=o)},{default:e.withCtx(()=>[e.createVNode($,{class:"w-full"},{default:e.withCtx(()=>[e.createVNode(y,{placeholder:"Select resource"})]),_:1}),e.createVNode(B,null,{default:e.withCtx(()=>[e.createVNode(k,null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(l).resources,o=>(e.openBlock(),e.createBlock(P,{value:o.id},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.name),1)]),_:2},1032,["value"]))),256))]),_:1})]),_:1})]),_:1},8,["modelValue"])]),e.createElementVNode("div",re,[e.createVNode(d,null,{default:e.withCtx(()=>[...t[16]||(t[16]=[e.createTextVNode("Type",-1)])]),_:1}),e.createVNode(F,{modelValue:s.value,"onUpdate:modelValue":t[3]||(t[3]=o=>s.value=o)},{default:e.withCtx(()=>[e.createVNode($,{class:"w-full"},{default:e.withCtx(()=>[e.createVNode(y,{placeholder:"Select type"})]),_:1}),e.createVNode(B,null,{default:e.withCtx(()=>[e.createVNode(k,null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(l).pricingOptions,o=>(e.openBlock(),e.createBlock(P,{value:o.id},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.name)+" ("+e.toDisplayString(o.duration)+"min) ",1)]),_:2},1032,["value"]))),256))]),_:1})]),_:1})]),_:1},8,["modelValue"])])])]),e.createElementVNode("div",se,[e.createElementVNode("div",de,[e.createElementVNode("div",ie,[e.createVNode(d,null,{default:e.withCtx(()=>[...t[17]||(t[17]=[e.createTextVNode("Date",-1)])]),_:1}),e.createVNode(z,null,{default:e.withCtx(({close:o})=>[e.createVNode(A,{"as-child":""},{default:e.withCtx(()=>[e.createVNode(m,{variant:"outline",class:e.normalizeClass(e.unref(X.classNames)("w-[240px] justify-start text-left font-normal",!u.value&&"text-muted-foreground"))},{default:e.withCtx(()=>[e.createVNode(e.unref(O.CalendarIcon)),e.createTextVNode(" "+e.toDisplayString(u.value?e.unref(M).format(u.value.toDate(e.unref(f.$14e0f24ef4ac5c92$export$aa8b41735afcabd2)())):"Pick a date"),1)]),_:1},8,["class"])]),_:1}),e.createVNode(H,{class:"w-auto p-0",align:"start"},{default:e.withCtx(()=>[e.createVNode(j,{modelValue:u.value,"onUpdate:modelValue":[t[4]||(t[4]=W=>u.value=W),o],"default-placeholder":e.unref(L),layout:"month-and-year","initial-focus":"",minValue:e.unref(f.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3)(e.unref(f.$14e0f24ef4ac5c92$export$aa8b41735afcabd2)())},null,8,["modelValue","default-placeholder","onUpdate:modelValue","minValue"])]),_:2},1024)]),_:1})])]),e.createElementVNode("div",ue,[e.createElementVNode("div",ce,[e.createVNode(d,null,{default:e.withCtx(()=>[...t[18]||(t[18]=[e.createTextVNode("Start time",-1)])]),_:1}),e.createVNode(G,{modelValue:n.value,"onUpdate:modelValue":t[5]||(t[5]=o=>n.value=o)},null,8,["modelValue"])]),e.createElementVNode("div",pe,[e.createVNode(d,null,{default:e.withCtx(()=>[...t[19]||(t[19]=[e.createTextVNode("End time",-1)])]),_:1}),e.createElementVNode("div",me,e.toDisplayString(e.unref(b)||"--:--"),1)])])]),e.createElementVNode("div",ve,[e.createElementVNode("div",fe,[e.createElementVNode("div",Ve,[e.createVNode(d,null,{default:e.withCtx(()=>[...t[20]||(t[20]=[e.createTextVNode("Firstname",-1)])]),_:1}),e.createVNode(v,{modelValue:V.value,"onUpdate:modelValue":t[6]||(t[6]=o=>V.value=o)},null,8,["modelValue"])]),e.createElementVNode("div",ge,[e.createVNode(d,null,{default:e.withCtx(()=>[...t[21]||(t[21]=[e.createTextVNode("Lastname",-1)])]),_:1}),e.createVNode(v,{modelValue:g.value,"onUpdate:modelValue":t[7]||(t[7]=o=>g.value=o)},null,8,["modelValue"])])]),e.createElementVNode("div",Ne,[e.createElementVNode("div",_e,[e.createVNode(d,null,{default:e.withCtx(()=>[...t[22]||(t[22]=[e.createTextVNode("E-mail",-1)])]),_:1}),e.createVNode(v,{modelValue:p.value,"onUpdate:modelValue":t[8]||(t[8]=o=>p.value=o)},null,8,["modelValue"])]),e.createElementVNode("div",xe,[e.createVNode(d,null,{default:e.withCtx(()=>[...t[23]||(t[23]=[e.createTextVNode("Phone Nr ",-1),e.createElementVNode("span",{class:"italic text-xs opacity-50"},"optional",-1)])]),_:1}),e.createVNode(v,{modelValue:x.value,"onUpdate:modelValue":t[9]||(t[9]=o=>x.value=o)},null,8,["modelValue"])])])]),e.createElementVNode("div",Ce,[e.createElementVNode("ul",we,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.value,o=>(e.openBlock(),e.createElementBlock("li",{key:o},e.toDisplayString(o),1))),128))])])]),e.createVNode(K,{class:"gap-2"},{default:e.withCtx(()=>[e.createVNode(m,{onClick:q},{default:e.withCtx(()=>[...t[24]||(t[24]=[e.createTextVNode("Add reservation",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["open"])}}});exports._sfc_main=he;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),f=require("@oneclick.dev/cms-kit"),i=require("lucide-vue-next"),z={class:"container mx-auto p-8"},G={key:0},R={class:"flex gap-2"},H={key:2},P={class:"flex justify-between items-center gap-4 mb-4"},q={key:0,class:"flex items-center gap-2"},F={class:"mr-2"},J=["onClick"],L={class:"flex justify-between items-center mb-2"},U={class:"flex flex-col items-start"},Y={class:"text-lg font-medium"},K={class:"text-sm text-muted-foreground"},X={key:0},Q={key:1},W={key:0,class:"flex justify-end mt-8"},Z=e.defineComponent({__name:"Overview",setup(ee){const{config:c}=f.useModule(),C=f.useFirebaseIntegration(c.project),{navigateTo:x}=f.useModuleRoute(),{confirm:b}=f.useConfirmation(),{hasPermission:u}=f.useModulePermissions();f.useModuleBreadcrumbs(()=>[]);const v=e.ref(null),s=e.ref(!1),a=e.ref([]),V=e.ref("importAgendasInput"),A=n=>{s.value=!0,a.value=[n]},N=async()=>{v.value=await C.find(c.agendaCollection)},M=async n=>{if(!u("create-agendas"))return;const t=await C.get(c.agendaCollection,n);if(!t){alert("Agenda not found");return}const r=prompt("Enter name for duplicated agenda",t.serviceName+" (Copy)");if(!r)return;const l={...t,serviceName:r};delete l.id,await C.add(c.agendaCollection,l),await N()},T=async n=>{!u("delete-agendas")||!await b("Are you sure you want to delete this agenda? This action cannot be undone.")||(await C.remove(c.agendaCollection,n),await N())},I=async()=>{let n=v.value.filter(l=>a.value.includes(l.id));n=n.map(l=>{const{id:p,...m}=l;return m});const t="data:text/json;charset=utf-8,"+encodeURIComponent(JSON.stringify(n,null,2)),r=document.createElement("a");r.setAttribute("href",t),r.setAttribute("download","agendas_export.json"),document.body.appendChild(r),r.click(),r.remove(),s.value=!1,a.value=[]},D=async n=>{const t=n.target;if(!t.files||t.files.length===0)return;const l=await t.files[0].text();let p;try{p=JSON.parse(l)}catch{alert("Invalid JSON file");return}if(!Array.isArray(p)){alert("Invalid agendas format");return}for(const m of p)await C.add(c.agendaCollection,m);t.value="",await N()};return N(),(n,t)=>{const r=e.resolveComponent("Spinner"),l=e.resolveComponent("EmptyMedia"),p=e.resolveComponent("EmptyTitle"),m=e.resolveComponent("EmptyDescription"),$=e.resolveComponent("EmptyHeader"),d=e.resolveComponent("Button"),S=e.resolveComponent("EmptyContent"),j=e.resolveComponent("Empty"),_=e.resolveComponent("DropdownMenuTrigger"),g=e.resolveComponent("DropdownMenuItem"),w=e.resolveComponent("DropdownMenuGroup"),y=e.resolveComponent("DropdownMenuContent"),B=e.resolveComponent("DropdownMenu"),E=e.resolveComponent("ButtonGroup"),h=e.resolveComponent("Checkbox");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",z,[v.value===null?(e.openBlock(),e.createElementBlock("div",G,[e.createVNode(r,{class:"mx-auto"})])):v.value.length===0?(e.openBlock(),e.createBlock(j,{key:1},{default:e.withCtx(()=>[e.createVNode($,null,{default:e.withCtx(()=>[e.createVNode(l,{variant:"icon"},{default:e.withCtx(()=>[e.createVNode(e.unref(i.CalendarX),{class:"size-4-6"})]),_:1}),e.createVNode(p,null,{default:e.withCtx(()=>[...t[4]||(t[4]=[e.createTextVNode("No Agendas Yet",-1)])]),_:1}),e.createVNode(m,null,{default:e.withCtx(()=>[...t[5]||(t[5]=[e.createTextVNode(" You haven't created any agenda yet. Get started by creating your first agenda. ",-1)])]),_:1})]),_:1}),e.createVNode(S,null,{default:e.withCtx(()=>[e.createElementVNode("div",R,[e.createVNode(d,{onClick:t[0]||(t[0]=o=>e.unref(x)("/create"))},{default:e.withCtx(()=>[...t[6]||(t[6]=[e.createTextVNode("Create Agenda",-1)])]),_:1})])]),_:1})]),_:1})):(e.openBlock(),e.createElementBlock("div",H,[e.createElementVNode("div",P,[t[9]||(t[9]=e.createElementVNode("h2",{class:"text-2xl font-bold"},"Agendas",-1)),s.value?(e.openBlock(),e.createElementBlock("div",q,[e.createElementVNode("span",F,e.toDisplayString(a.value.length)+" selected",1),e.createVNode(d,{variant:"outline",onClick:t[1]||(t[1]=o=>{s.value=!1,a.value=[]})},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode(" Cancel ",-1)])]),_:1}),e.createVNode(d,{onClick:I,disabled:a.value.length===0},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode(" Export ",-1)])]),_:1},8,["disabled"])])):e.createCommentVNode("",!0)]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value,o=>(e.openBlock(),e.createElementBlock("button",{key:o.id,class:e.normalizeClass(["block w-full mb-4 p-4 border rounded-md bg-background",{"cursor-pointer hover:bg-accent focus-visible:outline-0 focus:ring-2 ring-ring/50":s.value}]),onClick:k=>s.value?a.value.includes(o.id)?a.value=a.value.filter(O=>O!==o.id):a.value.push(o.id):null},[e.createElementVNode("div",L,[e.createElementVNode("div",U,[e.createElementVNode("h3",Y,e.toDisplayString(o.serviceName),1),e.createElementVNode("p",K,[o.type==="regular"?(e.openBlock(),e.createElementBlock("span",X,"Regular Agenda")):e.createCommentVNode("",!0)])]),s.value?(e.openBlock(),e.createElementBlock("div",Q,[a.value.includes(o.id)?(e.openBlock(),e.createBlock(h,{key:0,tabindex:"-1",defaultValue:!0})):(e.openBlock(),e.createBlock(h,{key:1,tabindex:"-1",defaultValue:!1}))])):(e.openBlock(),e.createBlock(E,{key:0},{default:e.withCtx(()=>[e.unref(u)("edit-agendas")?(e.openBlock(),e.createBlock(d,{key:0,variant:"outline",onClick:k=>e.unref(x)(`/edit/${o.id}`)},{default:e.withCtx(()=>[...t[10]||(t[10]=[e.createTextVNode(" Edit Agenda ",-1)])]),_:1},8,["onClick"])):(e.openBlock(),e.createBlock(d,{key:1,variant:"outline",onClick:k=>e.unref(x)(`/edit/${o.id}/agenda`)},{default:e.withCtx(()=>[...t[11]||(t[11]=[e.createTextVNode(" View Agenda ",-1)])]),_:1},8,["onClick"])),e.createVNode(B,null,{default:e.withCtx(()=>[e.createVNode(_,{"as-child":""},{default:e.withCtx(()=>[e.createVNode(d,{variant:"outline",size:"icon","aria-label":"More Options"},{default:e.withCtx(()=>[e.createVNode(e.unref(i.MoreHorizontalIcon))]),_:1})]),_:1}),e.createVNode(y,{align:"end",class:"w-52"},{default:e.withCtx(()=>[e.createVNode(w,null,{default:e.withCtx(()=>[e.unref(u)("create-agendas")?(e.openBlock(),e.createBlock(g,{key:0,onClick:k=>M(o.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(i.Copy)),t[12]||(t[12]=e.createTextVNode(" Duplicate Agenda ",-1))]),_:1},8,["onClick"])):e.createCommentVNode("",!0),e.createVNode(g,null,{default:e.withCtx(()=>[e.createVNode(e.unref(i.ChevronsLeftRightEllipsis)),t[13]||(t[13]=e.createTextVNode(" API Set-up ",-1))]),_:1}),e.createVNode(g,{onClick:k=>A(o.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(i.Upload)),t[14]||(t[14]=e.createTextVNode(" Export Agenda ",-1))]),_:1},8,["onClick"]),e.unref(u)("delete-agendas")?(e.openBlock(),e.createBlock(g,{key:1,variant:"destructive",onClick:k=>T(o.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(i.Trash2Icon)),t[15]||(t[15]=e.createTextVNode(" Remove Agenda ",-1))]),_:1},8,["onClick"])):e.createCommentVNode("",!0)]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:2},1024))])],10,J))),128)),e.unref(u)("create-agendas")?(e.openBlock(),e.createElementBlock("div",W,[e.createVNode(E,null,{default:e.withCtx(()=>[e.createVNode(d,{onClick:t[2]||(t[2]=o=>e.unref(x)("/create")),class:"border-r"},{default:e.withCtx(()=>[...t[16]||(t[16]=[e.createTextVNode("New Agenda",-1)])]),_:1}),e.createVNode(B,null,{default:e.withCtx(()=>[e.createVNode(_,{"as-child":""},{default:e.withCtx(()=>[e.createVNode(d,{size:"icon","aria-label":"More Options"},{default:e.withCtx(()=>[e.createVNode(e.unref(i.MoreHorizontalIcon))]),_:1})]),_:1}),e.createVNode(y,{align:"end",class:"w-52"},{default:e.withCtx(()=>[e.createVNode(w,null,{default:e.withCtx(()=>[e.createVNode(g,{onClick:t[3]||(t[3]=o=>V.value.click())},{default:e.withCtx(()=>[e.createVNode(e.unref(i.ImportIcon)),t[17]||(t[17]=e.createTextVNode(" Import Agendas... ",-1))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})])):e.createCommentVNode("",!0)]))]),e.createElementVNode("input",{type:"file",ref_key:"importAgendasInput",ref:V,class:"hidden",accept:".json,application/json",onChange:D},null,544)],64)}}});exports.default=Z;