@oneclick.dev/cms-core-modules 0.0.122 → 0.0.123

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 (72) hide show
  1. package/dist/{ContentEditor-CoJjsV-m.js → ContentEditor-C-Wm48ai.js} +63 -59
  2. package/dist/{ContentEditor-DIwqplfB.mjs → ContentEditor-MDGolnIP.mjs} +27596 -26138
  3. package/dist/{NewReservationDialog.vue_vue_type_script_setup_true_lang-bZidw6RT.mjs → NewReservationDialog.vue_vue_type_script_setup_true_lang-8I_Z9cD_.mjs} +530 -530
  4. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-BVE_uURZ.js +1 -0
  5. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-BdFa-xNf.mjs +3566 -0
  6. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-DzPOadcU.js +925 -0
  7. package/dist/TableCalculationWidget-CkQPrVUd.js +59 -0
  8. package/dist/TableCalculationWidget-CrqcLGfU.mjs +254 -0
  9. package/dist/TableDataWidget-7qvC3Egd.js +1 -0
  10. package/dist/TableDataWidget-DMTSoGRO.mjs +121 -0
  11. package/dist/TableOverviewCard-AFq-puJs.js +1 -0
  12. package/dist/TableOverviewCard-Ci0d4o4w.mjs +391 -0
  13. package/dist/TableResultView.vue_vue_type_script_setup_true_lang-CBn-Oxl9.mjs +534 -0
  14. package/dist/TableResultView.vue_vue_type_script_setup_true_lang-C_Lv-SmJ.js +1 -0
  15. package/dist/TableRowActionCard-BhdnnPaq.mjs +266 -0
  16. package/dist/TableRowActionCard-IzB6tNN-.js +1 -0
  17. package/dist/TableView-BkwoKREo.js +4 -0
  18. package/dist/TableView-C4Zyp8d7.mjs +8228 -0
  19. package/dist/{agenda-BCKDYOeF.mjs → agenda-DWdbWUbb.mjs} +10 -9
  20. package/dist/agenda-r9Gl85GL.js +1 -0
  21. package/dist/dateRangePresets-B-l5b_wR.mjs +48 -0
  22. package/dist/dateRangePresets-CPWqst_x.js +1 -0
  23. package/dist/fuse-Deb-Iq39.mjs +1473 -0
  24. package/dist/fuse-_CGUd5Zq.js +1 -0
  25. package/dist/{index-DU3Ib10Z.mjs → index-B_qaX29C.mjs} +7 -6
  26. package/dist/{index-Bk3yLv_G.js → index-yHLT6gaZ.js} +3 -3
  27. package/dist/index.cjs.js +1 -1
  28. package/dist/index.mjs +419 -109
  29. package/dist/{orders-CElKNc1v.mjs → orders-BfTLIm7U.mjs} +10 -9
  30. package/dist/orders-DUa2PVoa.js +1 -0
  31. package/dist/reports-ChCsd1Gk.mjs +1107 -0
  32. package/dist/reports-DmJPm8uP.js +158 -0
  33. package/dist/row-item-C1dUyimV.mjs +204 -0
  34. package/dist/row-item-Cyo3m3MZ.js +1 -0
  35. package/dist/src/appointments/components/edit/EventDialog/BookingsList.vue.d.ts +9 -3
  36. package/dist/src/appointments/components/edit/EventDialog/OrderDetailDialog.vue.d.ts +2 -0
  37. package/dist/src/appointments/components/edit/EventDialog/ReservationDetailDialog.vue.d.ts +4 -2
  38. package/dist/src/appointments/components/edit/dashboard/BookingsList.vue.d.ts +9 -3
  39. package/dist/src/appointments/pages/edit/orders.vue.d.ts +9 -3
  40. package/dist/src/appointments/pages/edit/reports.vue.d.ts +229 -1
  41. package/dist/src/table/chat-components/TableCalculationWidget.vue.d.ts +15 -0
  42. package/dist/src/table/chat-components/TableDataWidget.vue.d.ts +15 -0
  43. package/dist/src/table/chat-components/TableOverviewCard.vue.d.ts +61 -0
  44. package/dist/src/table/chat-components/TableResultView.vue.d.ts +48 -0
  45. package/dist/src/table/chat-components/TableRowActionCard.vue.d.ts +15 -0
  46. package/dist/src/table/components/filters/DialogTableFilterOptionItem.vue.d.ts +16 -0
  47. package/dist/src/table/components/filters/NumberComparisonFilter.vue.d.ts +12 -0
  48. package/dist/src/table/components/filters/NumberComparisonFilterSettings.vue.d.ts +12 -0
  49. package/dist/src/table/components/filters/NumberRangeFilter.vue.d.ts +12 -0
  50. package/dist/src/table/components/filters/NumberRangeFilterSettings.vue.d.ts +12 -0
  51. package/dist/src/table/components/filters/filter-utils.d.ts +14 -0
  52. package/dist/src/table/composables/useTableAgentTools.d.ts +33 -0
  53. package/dist/src/table/index.d.ts +339 -0
  54. package/dist/src/table/tool-sandbox.d.ts +13 -0
  55. package/dist/src/table/tool-utils.d.ts +11 -0
  56. package/dist/src/table/tools.d.ts +333 -1
  57. package/dist/src/table/types.d.ts +79 -0
  58. package/dist/tool-sandbox-DdkMLkDK.mjs +182 -0
  59. package/dist/tool-sandbox-DoF1PsyS.js +115 -0
  60. package/dist/useTableAgentTools-D5mzGf3A.js +1 -0
  61. package/dist/useTableAgentTools-DcN3kYRL.mjs +131 -0
  62. package/package.json +17 -17
  63. package/src/table/tools.ts +304 -1
  64. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-BdZbcubW.js +0 -1
  65. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-BYSeUW_V.js +0 -925
  66. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-DwAUYR8p.mjs +0 -5021
  67. package/dist/TableView-Ctnep-Qu.mjs +0 -6247
  68. package/dist/TableView-DJqyJL9L.js +0 -4
  69. package/dist/agenda-B54F8cEr.js +0 -1
  70. package/dist/orders-BMosTk6r.js +0 -1
  71. package/dist/reports-BQT_GZzU.js +0 -158
  72. package/dist/reports-DksZCTOw.mjs +0 -837
@@ -0,0 +1,158 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),J=require("@oneclick.dev/cms-kit"),g=require("lucide-vue-next"),W=require("./index-ijdf0d9-.js"),Fe=require("./EditLayout.vue_vue_type_script_setup_true_lang-D1b9_iiN.js"),ge=require("./OrderDetailDialog.vue_vue_type_script_setup_true_lang-DzPOadcU.js"),Ue={class:"space-y-6"},Le={class:"flex flex-col gap-4 @3xl:flex-row @3xl:items-start @3xl:justify-between"},qe={class:"text-2xl font-semibold tracking-tight flex items-center gap-2"},He={class:"flex flex-col gap-2 sm:flex-row sm:items-center"},Ye={class:"grid grid-cols-1 gap-3 @xl:grid-cols-3 md:items-end"},Ge={class:"grid gap-1.5"},Qe={class:"grid gap-1.5"},Ke={key:0,class:"text-sm text-destructive"},Je={class:"flex flex-wrap gap-2"},We={key:0,class:"flex items-center justify-center py-12"},Xe={key:1,class:"text-center py-12 text-muted-foreground"},Ze={class:"grid grid-cols-1 gap-4 @3xl:grid-cols-2 @7xl:grid-cols-4"},et={class:"text-2xl font-semibold"},tt={class:"text-xs text-muted-foreground mt-1"},nt={class:"text-2xl font-semibold"},ot={class:"text-xs text-muted-foreground mt-1"},rt={class:"text-2xl font-semibold"},at={class:"text-xs text-muted-foreground mt-1"},st={class:"text-2xl font-semibold"},lt={class:"text-xs text-muted-foreground mt-1"},dt={class:"grid grid-cols-1 gap-4 @5xl:grid-cols-2"},it={class:"flex items-center justify-between gap-4"},ut={class:"font-medium"},ct={class:"flex items-center justify-between gap-4"},mt={class:"font-medium text-destructive"},ft={class:"flex items-center justify-between gap-4"},pt={class:"font-semibold"},gt={class:"flex items-center justify-between gap-4"},vt={class:"font-medium"},xt={class:"flex items-center justify-between gap-4"},Nt={class:"font-medium"},Vt={class:"flex items-center justify-between gap-4"},bt={class:"font-medium"},yt={class:"flex items-center justify-between gap-4"},ht={class:"font-medium"},Ct={class:"flex items-center justify-between gap-4"},_t={class:"font-medium"},wt={class:"flex items-center justify-between gap-4"},Dt={class:"font-medium"},kt={class:"flex items-center gap-2 text-sm font-medium mb-3"},Et={class:"space-y-2 text-sm"},St={class:"text-muted-foreground"},Rt={class:"font-medium"},Tt={class:"flex items-center gap-2 text-sm font-medium mb-3"},At={class:"space-y-2 text-sm"},Bt={class:"text-muted-foreground"},$t={class:"font-medium"},Ot={class:"overflow-x-auto"},jt=["aria-label","onClick"],Mt={key:1},zt={class:"space-y-2 py-4"},It=["disabled","aria-disabled","aria-busy","onClick"],Pt={class:"min-w-0 flex-1 space-y-1.5"},Ft={class:"flex flex-wrap items-center gap-2"},Ut={class:"truncate font-medium"},Lt={class:"flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-muted-foreground"},qt={class:"inline-flex items-center gap-1"},Ht={class:"flex shrink-0 items-center justify-between gap-2 sm:justify-end"},Yt={class:"font-medium"},Gt={key:0,class:"text-xs font-normal text-muted-foreground"},Qt=e.defineComponent({__name:"reports",setup(Kt){const{params:X}=J.useModuleRoute(),{config:P}=J.useModule(),q=J.useFirebaseIntegration(P.project),Z=e.computed(()=>X.value?.id??X.id??""),k=e.ref(!1),v=e.ref([]),F=e.ref(null),O=e.ref([]),E=e.ref(!1),h=e.ref(null),w=e.ref(null),j=e.ref(!1),ee=e.ref(null),te=e.ref(null),ne=e.ref(null);let M=0;const C=n=>{const t=n.getFullYear(),o=String(n.getMonth()+1).padStart(2,"0"),r=String(n.getDate()).padStart(2,"0");return`${t}-${o}-${r}`},H=n=>{const t=Math.floor(n.getMonth()/3)*3;return new Date(n.getFullYear(),t,1)},ve=n=>{const t=Math.floor(n.getMonth()/3)*3;return new Date(n.getFullYear(),t+3,0)},oe=new Date,x=e.ref(C(H(oe))),N=e.ref(C(oe)),S=e.computed(()=>!x.value||!N.value?"Select a start and end date.":x.value>N.value?"Start date must be before end date.":""),xe=()=>{const n=new Date(`${x.value}T00:00:00`),t=new Date(`${N.value}T23:59:59.999`);return{start:n,end:t}},re=e.computed(()=>{if(!x.value||!N.value)return"";const n=new Date(`${x.value}T00:00:00`),t=new Date(`${N.value}T00:00:00`);return`${n.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})} - ${t.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})}`}),Ne=()=>{const n=new Date;x.value=C(H(n)),N.value=C(n)},Ve=()=>{const n=new Date,t=new Date(n.getFullYear(),Math.floor(n.getMonth()/3)*3-1,1);x.value=C(H(t)),N.value=C(ve(t))},be=()=>{const n=new Date;x.value=C(new Date(n.getFullYear(),0,1)),N.value=C(n)},_=n=>{const t=Number(n);return Number.isFinite(t)?t:0},R=n=>{if(!n)return null;if(n instanceof Date)return n;if(typeof n=="string"||typeof n=="number"){const t=new Date(n);return Number.isNaN(t.getTime())?null:t}return typeof n.toDate=="function"?n.toDate():null},ae=n=>{const t=R(n.createdAt);return t?C(t):"Unknown date"},D=n=>typeof n.total=="number"?n.total:(n.reservations||[]).reduce((t,o)=>t+_(o.totalPrice),0),ye=n=>typeof n.amountPaid=="number"?n.amountPaid:D(n),se=n=>n.status==="confirmed",T=e.computed(()=>v.value.flatMap(n=>{const t=n.id,o=n.status||"unknown",r=D(n);return(n.reservations||[]).map(i=>({...i,orderId:t,orderStatus:o,orderCreatedAt:n.createdAt,orderTotal:r,orderAmountPaid:n.amountPaid}))})),le=n=>Array.isArray(n.refunds)?n.refunds:[],de=n=>{const t=le(n);return t.length>0?t.reduce((o,r)=>o+_(r.amount),0):_(n.refundedAmount)},he=n=>{const t=le(n);return t.length>0?t.length:!!(n.refundStatus||n.refundedAt||_(n.refundedAmount)>0)?1:0},A=e.computed(()=>v.value.filter(se)),s=e.computed(()=>{const n=A.value.reduce((u,f)=>u+D(f),0),t=A.value.reduce((u,f)=>u+ye(f),0),o=T.value.filter(u=>u.orderStatus==="confirmed").length,r=v.value.filter(u=>u.status==="pending").reduce((u,f)=>u+D(f),0),i=v.value.filter(u=>u.status==="cancelled").reduce((u,f)=>u+D(f),0),c=T.value.reduce((u,f)=>u+de(f),0),d=T.value.reduce((u,f)=>u+he(f),0),b=T.value.reduce((u,f)=>u+_(f.spots),0),p=A.value.reduce((u,f)=>u+_(f.amountDue),0);return{grossRevenue:n,moneyCollected:t,pendingRevenue:r,cancelledRevenue:i,netRevenue:n-c,refundAmount:c,refundCount:d,orders:v.value.length,confirmedOrders:A.value.length,reservations:T.value.length,spots:b,amountDue:p,averageOrder:A.value.length?n/A.value.length:0,averageReservation:o?n/o:0}}),ie=e.computed(()=>{const n=new Map;return v.value.forEach(t=>{const o=t.status||"unknown",r=n.get(o)||{status:o,count:0,revenue:0};r.count+=1,r.revenue+=D(t),n.set(o,r)}),Array.from(n.values()).sort((t,o)=>o.count-t.count)}),ue=e.computed(()=>{const n=new Map;return T.value.forEach(t=>{const o=t.status||"unknown",r=n.get(o)||{status:o,count:0,spots:0,revenue:0};r.count+=1,r.spots+=_(t.spots),r.revenue+=_(t.totalPrice),n.set(o,r)}),Array.from(n.values()).sort((t,o)=>o.count-t.count)}),Y=e.computed(()=>{const n=new Map;return v.value.forEach(t=>{const o=ae(t),r=n.get(o)||{date:o,orders:0,reservations:0,grossRevenue:0,refunds:0,netRevenue:0},i=t.reservations||[],c=i.reduce((b,p)=>b+de(p),0),d=se(t)?D(t):0;r.orders+=1,r.reservations+=i.length,r.grossRevenue+=d,r.refunds+=c,r.netRevenue=r.grossRevenue-r.refunds,n.set(o,r)}),Array.from(n.values()).sort((t,o)=>o.date.localeCompare(t.date))}),U=e.computed(()=>Y.value.find(n=>n.date===h.value)||null),G=e.computed(()=>h.value?v.value.filter(n=>ae(n)===h.value):[]);e.provide("event",ee);const Ce=n=>{n.date!=="Unknown date"&&(h.value=n.date,E.value=!0)},Q=()=>{E.value=!1,w.value=null,M+=1},_e=n=>{if(n){E.value=!0;return}Q()},l=n=>new Intl.NumberFormat("nl-BE",{style:"currency",currency:"EUR"}).format(n),m=n=>new Intl.NumberFormat("nl-BE").format(n),L=(n,t,o=`${t}s`)=>`${m(n)} ${n===1?t:o}`,z=n=>n.split("_").map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" "),ce=n=>{if(n==="Unknown date")return n;const t=new Date(`${n}T00:00:00`);return Number.isNaN(t.getTime())?n:t.toLocaleDateString("en-US",{weekday:"long",month:"long",day:"numeric",year:"numeric"})},we=n=>{const t=R(n);return t?t.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1}):"Time unavailable"},De=n=>[n.customerInfo?.firstName,n.customerInfo?.lastName].filter(Boolean).join(" ").trim()||n.customerInfo?.email||"Unknown customer",ke=n=>(n.reservations||[]).reduce((t,o)=>t+_(o.spots),0),me=n=>{switch(n){case"pending":return{label:"Pending",class:"bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400"};case"cancelled":return{label:"Cancelled",class:"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400"};case"needs_approval":return{label:"Needs Approval",class:"bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"};case"rejected":return{label:"Rejected",class:"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400"};case"approved":return{label:"Approved",class:"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400"};case"confirmed":return{label:"Confirmed",class:"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400"};default:return{label:z(n||"unknown"),class:"bg-muted text-muted-foreground"}}},Ee=(n,t)=>{const o=t.resourceId||t.resource?.id,r=O.value.find(c=>String(c.id)===String(o)),i=R(n.createdAt)?.toISOString()||(typeof n.createdAt=="string"?n.createdAt:"");return{id:n.id,res_id:t.id,customerInfo:n.customerInfo,amountDue:n.amountDue,amountPaid:n.amountPaid,status:n.status,reservationStatus:t.status,subtotal:n.subtotal,total:n.total,discount:n.discount,resourceId:o,resource:t.resource,spots:t.spots,date:t.date,createdAt:i,startTime:t.timeslot?.startTime,endTime:t.timeslot?.endTime,reservationPrice:t.totalPrice,reservationBasePrice:t.basePrice,reservationAddOnsPrice:t.addOnsPrice,pricingOptionId:t.pricingOptionId,pricingOption:t.pricingOption,resourceName:r?.name||t.resource?.name,resourceColor:r?.color||t.resource?.color,metadata:n.metadata||{},reservationMetadata:t.metadata||{},refundStatus:t.refundStatus,refundedAt:t.refundedAt,refundedAmount:t.refundedAmount,refunds:Array.isArray(t.refunds)?t.refunds:[],adjustments:n.adjustments||[],reservationAdjustments:t.adjustments||[]}},K=async()=>{await e.nextTick(),await new Promise(n=>{if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>n());return}n()})},fe=async(n,t=!1)=>{if(!n||w.value)return;const o=++M;w.value=n;try{const r=await q.get(P.reservationsCollection,n);if(o!==M)return;if(!r){W.toast.error("Order details could not be found."),await I();return}const i={...r,id:r.id||n},c=(i.reservations||[]).map(d=>Ee(i,d));if(!c.length){W.toast.error("This order has no reservation details."),await I();return}t&&(j.value=!0),E.value=!1,await K(),te.value?.openDialog({id:i.id,customerInfo:i.customerInfo,status:i.status,createdAt:R(i.createdAt)?.toISOString()||(typeof i.createdAt=="string"?i.createdAt:""),metadata:i.metadata||{},reservations:c,adjustments:i.adjustments||[],totalPrice:typeof i.total=="number"?i.total:c.reduce((d,b)=>d+(b.reservationPrice||0),0),totalSpots:c.reduce((d,b)=>d+(b.spots||0),0)})}catch(r){if(o!==M)return;console.error("Error loading order details:",r),W.toast.error("Unable to load order details."),await I()}finally{o===M&&(w.value=null)}},Se=async n=>{ee.value={date:n.date,resourceId:n.resourceId||n.resource?.id,resource:n.resource},await K(),ne.value?.openDialog(n)};async function I(){if(!j.value||!h.value||!G.value.length){j.value=!1;return}await K(),!(!h.value||!G.value.length)&&(E.value=!0,j.value=!1)}const V=n=>String(n??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;"),Re=()=>{if(!v.value.length)return;const n=[["Money made",l(s.value.netRevenue),`${l(s.value.grossRevenue)} gross - ${l(s.value.refundAmount)} refunds`],["Orders",m(s.value.orders),`${m(s.value.confirmedOrders)} confirmed`],["Reservations",m(s.value.reservations),`${m(s.value.spots)} spots booked`],["Refunds",m(s.value.refundCount),`${l(s.value.refundAmount)} refunded`]],t=[["Gross revenue",l(s.value.grossRevenue)],["Refunds",l(s.value.refundAmount)],["Net revenue",l(s.value.netRevenue)],["Money collected",l(s.value.moneyCollected)],["Amount due",l(s.value.amountDue)],["Pending order value",l(s.value.pendingRevenue)],["Cancelled order value",l(s.value.cancelledRevenue)],["Average confirmed order",l(s.value.averageOrder)],["Average reservation",l(s.value.averageReservation)]],o=d=>d.map(b=>`<tr>${b.map(p=>`<td>${V(p)}</td>`).join("")}</tr>`).join(""),r=`<!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Appointments Report ${V(x.value)} - ${V(N.value)}</title>
7
+ <style>
8
+ * { box-sizing: border-box; }
9
+ body {
10
+ margin: 0;
11
+ padding: 40px;
12
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
13
+ color: #111827;
14
+ background: #f8fafc;
15
+ }
16
+ .report {
17
+ max-width: 1040px;
18
+ margin: 0 auto;
19
+ background: #ffffff;
20
+ border: 1px solid #e5e7eb;
21
+ border-radius: 8px;
22
+ padding: 32px;
23
+ }
24
+ h1, h2 { margin: 0; }
25
+ h1 { font-size: 28px; letter-spacing: 0; }
26
+ h2 { font-size: 16px; margin-bottom: 12px; }
27
+ .muted { color: #6b7280; }
28
+ .header {
29
+ display: flex;
30
+ justify-content: space-between;
31
+ gap: 24px;
32
+ border-bottom: 1px solid #e5e7eb;
33
+ padding-bottom: 24px;
34
+ margin-bottom: 24px;
35
+ }
36
+ .cards {
37
+ display: grid;
38
+ grid-template-columns: repeat(4, minmax(0, 1fr));
39
+ gap: 12px;
40
+ margin-bottom: 24px;
41
+ }
42
+ .card {
43
+ border: 1px solid #e5e7eb;
44
+ border-radius: 8px;
45
+ padding: 16px;
46
+ background: #ffffff;
47
+ }
48
+ .card-label { font-size: 12px; color: #6b7280; margin-bottom: 8px; }
49
+ .card-value { font-size: 22px; font-weight: 700; }
50
+ .card-note { font-size: 12px; color: #6b7280; margin-top: 6px; }
51
+ .grid {
52
+ display: grid;
53
+ grid-template-columns: repeat(2, minmax(0, 1fr));
54
+ gap: 24px;
55
+ margin-bottom: 24px;
56
+ }
57
+ table {
58
+ width: 100%;
59
+ border-collapse: collapse;
60
+ font-size: 13px;
61
+ }
62
+ th, td {
63
+ border-bottom: 1px solid #e5e7eb;
64
+ padding: 10px 8px;
65
+ text-align: left;
66
+ }
67
+ th {
68
+ color: #6b7280;
69
+ font-weight: 600;
70
+ background: #f9fafb;
71
+ }
72
+ td:last-child, th:last-child { text-align: right; }
73
+ @media print {
74
+ body { background: #ffffff; padding: 0; }
75
+ .report { border: 0; }
76
+ }
77
+ </style>
78
+ </head>
79
+ <body>
80
+ <main class="report">
81
+ <section class="header">
82
+ <div>
83
+ <h1>Appointments Report</h1>
84
+ <p class="muted">${V(re.value)}</p>
85
+ </div>
86
+ <div class="muted">Generated ${V(new Date().toLocaleString("en-US"))}</div>
87
+ </section>
88
+
89
+ <section class="cards">
90
+ ${n.map(([d,b,p])=>`
91
+ <div class="card">
92
+ <div class="card-label">${V(d)}</div>
93
+ <div class="card-value">${V(b)}</div>
94
+ <div class="card-note">${V(p)}</div>
95
+ </div>
96
+ `).join("")}
97
+ </section>
98
+
99
+ <section class="grid">
100
+ <div>
101
+ <h2>Finance</h2>
102
+ <table><tbody>${o(t)}</tbody></table>
103
+ </div>
104
+ <div>
105
+ <h2>Order Status</h2>
106
+ <table>
107
+ <tbody>
108
+ ${o(ie.value.map(d=>[z(d.status),`${m(d.count)} - ${l(d.revenue)}`]))}
109
+ </tbody>
110
+ </table>
111
+ </div>
112
+ </section>
113
+
114
+ <section class="grid">
115
+ <div>
116
+ <h2>Reservation Status</h2>
117
+ <table>
118
+ <tbody>
119
+ ${o(ue.value.map(d=>[z(d.status),`${m(d.count)} - ${m(d.spots)} spots - ${l(d.revenue)}`]))}
120
+ </tbody>
121
+ </table>
122
+ </div>
123
+ <div>
124
+ <h2>Period Totals</h2>
125
+ <table><tbody>${o([["Start date",x.value],["End date",N.value],["Orders",m(s.value.orders)],["Reservations",m(s.value.reservations)]])}</tbody></table>
126
+ </div>
127
+ </section>
128
+
129
+ <section>
130
+ <h2>Daily Breakdown</h2>
131
+ <table>
132
+ <thead>
133
+ <tr>
134
+ <th>Date</th>
135
+ <th>Orders</th>
136
+ <th>Reservations</th>
137
+ <th>Gross</th>
138
+ <th>Refunds</th>
139
+ <th>Net</th>
140
+ </tr>
141
+ </thead>
142
+ <tbody>
143
+ ${Y.value.map(d=>`
144
+ <tr>
145
+ <td>${V(d.date)}</td>
146
+ <td>${V(m(d.orders))}</td>
147
+ <td>${V(m(d.reservations))}</td>
148
+ <td>${V(l(d.grossRevenue))}</td>
149
+ <td>${V(l(d.refunds))}</td>
150
+ <td>${V(l(d.netRevenue))}</td>
151
+ </tr>
152
+ `).join("")}
153
+ </tbody>
154
+ </table>
155
+ </section>
156
+ </main>
157
+ </body>
158
+ </html>`,i=new Blob([r],{type:"text/html;charset=utf-8"}),c=document.createElement("a");c.href=URL.createObjectURL(i),c.setAttribute("download",`appointments-report-${x.value}-to-${N.value}.html`),document.body.appendChild(c),c.click(),URL.revokeObjectURL(c.href),c.remove()},y=async()=>{if(!S.value){k.value=!0,Q(),h.value=null,j.value=!1,v.value=[];try{const{start:n,end:t}=xe(),o=await q.find(P.reservationsCollection,{filters:[{field:"agendaId",operator:"==",value:Z.value},{field:"createdAt",operator:">=",value:n.toISOString()},{field:"createdAt",operator:"<=",value:t.toISOString()}]});v.value=o.map(r=>({...r,id:r.id||r.orderId||""})).sort((r,i)=>(R(i.createdAt)?.getTime()||0)-(R(r.createdAt)?.getTime()||0))}catch(n){console.error("Error loading report:",n),v.value=[]}finally{k.value=!1}}};return(async()=>{try{const n=await q.get(P.agendaCollection,Z.value);F.value=n,O.value=n?.resources?.filter(t=>t.isActive)||[]}catch(n){console.error("Error loading agenda context:",n),F.value=null,O.value=[]}})(),y(),(n,t)=>{const o=e.resolveComponent("Button"),r=e.resolveComponent("CardTitle"),i=e.resolveComponent("CardDescription"),c=e.resolveComponent("CardHeader"),d=e.resolveComponent("Label"),b=e.resolveComponent("Input"),p=e.resolveComponent("CardContent"),u=e.resolveComponent("Card"),f=e.resolveComponent("Separator"),B=e.resolveComponent("TableHead"),pe=e.resolveComponent("TableRow"),Te=e.resolveComponent("TableHeader"),$=e.resolveComponent("TableCell"),Ae=e.resolveComponent("TableBody"),Be=e.resolveComponent("Table"),$e=e.resolveComponent("ResponsiveModalTitle"),Oe=e.resolveComponent("ResponsiveModalDescription"),je=e.resolveComponent("ResponsiveModalHeader"),Me=e.resolveComponent("ResponsiveModalFooter"),ze=e.resolveComponent("ResponsiveModalScrollContent"),Ie=e.resolveComponent("ResponsiveModal");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(Fe._sfc_main,null,{default:e.withCtx(()=>[e.createElementVNode("div",Ue,[e.createElementVNode("div",Le,[e.createElementVNode("div",null,[e.createElementVNode("h1",qe,[e.createVNode(e.unref(g.BarChart3),{class:"size-6"}),t[7]||(t[7]=e.createTextVNode(" Reports ",-1))]),t[8]||(t[8]=e.createElementVNode("p",{class:"text-muted-foreground text-sm mt-1"}," Financial statistics for orders placed in a selected period. ",-1))]),e.createElementVNode("div",He,[e.createVNode(o,{variant:"outline",onClick:Re,disabled:e.unref(k)||!!e.unref(S)||e.unref(v).length===0},{default:e.withCtx(()=>[e.createVNode(e.unref(g.Download),{class:"size-4"}),t[9]||(t[9]=e.createTextVNode(" Download Report ",-1))]),_:1},8,["disabled"]),e.createVNode(o,{variant:"outline",onClick:y,disabled:e.unref(k)||!!e.unref(S)},{default:e.withCtx(()=>[e.createVNode(e.unref(g.RefreshCw),{class:e.normalizeClass(["size-4",{"animate-spin":e.unref(k)}])},null,8,["class"]),t[10]||(t[10]=e.createTextVNode(" Refresh ",-1))]),_:1},8,["disabled"])])]),e.createVNode(u,{class:"-mx-6 rounded-none border-x-0 @5xl:mx-0 @5xl:rounded-xl @5xl:border-x-[1px]"},{default:e.withCtx(()=>[e.createVNode(c,null,{default:e.withCtx(()=>[e.createVNode(r,{class:"flex items-center gap-2"},{default:e.withCtx(()=>[e.createVNode(e.unref(g.CalendarIcon),{class:"size-5"}),t[11]||(t[11]=e.createTextVNode(" Period ",-1))]),_:1}),e.createVNode(i,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(re)),1)]),_:1})]),_:1}),e.createVNode(p,{class:"space-y-4"},{default:e.withCtx(()=>[e.createElementVNode("div",Ye,[e.createElementVNode("div",Ge,[e.createVNode(d,{for:"report-start-date"},{default:e.withCtx(()=>[...t[12]||(t[12]=[e.createTextVNode("Start date",-1)])]),_:1}),e.createVNode(b,{id:"report-start-date",modelValue:e.unref(x),"onUpdate:modelValue":t[0]||(t[0]=a=>e.isRef(x)?x.value=a:null),type:"date"},null,8,["modelValue"])]),e.createElementVNode("div",Qe,[e.createVNode(d,{for:"report-end-date"},{default:e.withCtx(()=>[...t[13]||(t[13]=[e.createTextVNode("End date",-1)])]),_:1}),e.createVNode(b,{id:"report-end-date",modelValue:e.unref(N),"onUpdate:modelValue":t[1]||(t[1]=a=>e.isRef(N)?N.value=a:null),type:"date"},null,8,["modelValue"])]),e.createVNode(o,{class:"md:whitespace-nowrap",onClick:y,disabled:e.unref(k)||!!e.unref(S)},{default:e.withCtx(()=>[...t[14]||(t[14]=[e.createTextVNode(" Generate Report ",-1)])]),_:1},8,["disabled"])]),e.unref(S)?(e.openBlock(),e.createElementBlock("p",Ke,e.toDisplayString(e.unref(S)),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Je,[e.createVNode(o,{variant:"outline",size:"sm",onClick:t[2]||(t[2]=a=>{Ne(),y()})},{default:e.withCtx(()=>[...t[15]||(t[15]=[e.createTextVNode(" This quarter ",-1)])]),_:1}),e.createVNode(o,{variant:"outline",size:"sm",onClick:t[3]||(t[3]=a=>{Ve(),y()})},{default:e.withCtx(()=>[...t[16]||(t[16]=[e.createTextVNode(" Previous quarter ",-1)])]),_:1}),e.createVNode(o,{variant:"outline",size:"sm",onClick:t[4]||(t[4]=a=>{be(),y()})},{default:e.withCtx(()=>[...t[17]||(t[17]=[e.createTextVNode(" Year to date ",-1)])]),_:1})])]),_:1})]),_:1}),e.unref(k)?(e.openBlock(),e.createElementBlock("div",We,[...t[18]||(t[18]=[e.createElementVNode("div",{class:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary"},null,-1)])])):e.unref(v).length===0?(e.openBlock(),e.createElementBlock("div",Xe,[e.createVNode(e.unref(g.BarChart3),{class:"size-12 mx-auto mb-3 opacity-50"}),t[19]||(t[19]=e.createElementVNode("p",null,"No orders found for this period",-1))])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",Ze,[e.createVNode(u,null,{default:e.withCtx(()=>[e.createVNode(c,{class:"pb-2"},{default:e.withCtx(()=>[e.createVNode(r,{class:"text-sm font-medium text-muted-foreground flex items-center gap-2"},{default:e.withCtx(()=>[e.createVNode(e.unref(g.BadgeEuro),{class:"size-4"}),t[20]||(t[20]=e.createTextVNode(" Money made ",-1))]),_:1})]),_:1}),e.createVNode(p,null,{default:e.withCtx(()=>[e.createElementVNode("div",et,e.toDisplayString(l(e.unref(s).netRevenue)),1),e.createElementVNode("p",tt,e.toDisplayString(l(e.unref(s).grossRevenue))+" gross - "+e.toDisplayString(l(e.unref(s).refundAmount))+" refunds ",1)]),_:1})]),_:1}),e.createVNode(u,null,{default:e.withCtx(()=>[e.createVNode(c,{class:"pb-2"},{default:e.withCtx(()=>[e.createVNode(r,{class:"text-sm font-medium text-muted-foreground flex items-center gap-2"},{default:e.withCtx(()=>[e.createVNode(e.unref(g.ShoppingBag),{class:"size-4"}),t[21]||(t[21]=e.createTextVNode(" Orders ",-1))]),_:1})]),_:1}),e.createVNode(p,null,{default:e.withCtx(()=>[e.createElementVNode("div",nt,e.toDisplayString(m(e.unref(s).orders)),1),e.createElementVNode("p",ot,e.toDisplayString(m(e.unref(s).confirmedOrders))+" confirmed ",1)]),_:1})]),_:1}),e.createVNode(u,null,{default:e.withCtx(()=>[e.createVNode(c,{class:"pb-2"},{default:e.withCtx(()=>[e.createVNode(r,{class:"text-sm font-medium text-muted-foreground flex items-center gap-2"},{default:e.withCtx(()=>[e.createVNode(e.unref(g.Users),{class:"size-4"}),t[22]||(t[22]=e.createTextVNode(" Reservations ",-1))]),_:1})]),_:1}),e.createVNode(p,null,{default:e.withCtx(()=>[e.createElementVNode("div",rt,e.toDisplayString(m(e.unref(s).reservations)),1),e.createElementVNode("p",at,e.toDisplayString(m(e.unref(s).spots))+" spots booked ",1)]),_:1})]),_:1}),e.createVNode(u,null,{default:e.withCtx(()=>[e.createVNode(c,{class:"pb-2"},{default:e.withCtx(()=>[e.createVNode(r,{class:"text-sm font-medium text-muted-foreground flex items-center gap-2"},{default:e.withCtx(()=>[e.createVNode(e.unref(g.Undo2),{class:"size-4"}),t[23]||(t[23]=e.createTextVNode(" Refunds ",-1))]),_:1})]),_:1}),e.createVNode(p,null,{default:e.withCtx(()=>[e.createElementVNode("div",st,e.toDisplayString(m(e.unref(s).refundCount)),1),e.createElementVNode("p",lt,e.toDisplayString(l(e.unref(s).refundAmount))+" refunded ",1)]),_:1})]),_:1})]),e.createElementVNode("div",dt,[e.createVNode(u,null,{default:e.withCtx(()=>[e.createVNode(c,null,{default:e.withCtx(()=>[e.createVNode(r,null,{default:e.withCtx(()=>[...t[24]||(t[24]=[e.createTextVNode("Finance",-1)])]),_:1}),e.createVNode(i,null,{default:e.withCtx(()=>[...t[25]||(t[25]=[e.createTextVNode("Confirmed orders are counted as revenue.",-1)])]),_:1})]),_:1}),e.createVNode(p,{class:"space-y-3 text-sm"},{default:e.withCtx(()=>[e.createElementVNode("div",it,[t[26]||(t[26]=e.createElementVNode("span",{class:"text-muted-foreground"},"Gross revenue",-1)),e.createElementVNode("span",ut,e.toDisplayString(l(e.unref(s).grossRevenue)),1)]),e.createElementVNode("div",ct,[t[27]||(t[27]=e.createElementVNode("span",{class:"text-muted-foreground"},"Refunds",-1)),e.createElementVNode("span",mt,e.toDisplayString(l(e.unref(s).refundAmount)),1)]),e.createVNode(f),e.createElementVNode("div",ft,[t[28]||(t[28]=e.createElementVNode("span",{class:"text-muted-foreground"},"Net revenue",-1)),e.createElementVNode("span",pt,e.toDisplayString(l(e.unref(s).netRevenue)),1)]),e.createElementVNode("div",gt,[t[29]||(t[29]=e.createElementVNode("span",{class:"text-muted-foreground"},"Money collected",-1)),e.createElementVNode("span",vt,e.toDisplayString(l(e.unref(s).moneyCollected)),1)]),e.createElementVNode("div",xt,[t[30]||(t[30]=e.createElementVNode("span",{class:"text-muted-foreground"},"Amount due",-1)),e.createElementVNode("span",Nt,e.toDisplayString(l(e.unref(s).amountDue)),1)]),e.createElementVNode("div",Vt,[t[31]||(t[31]=e.createElementVNode("span",{class:"text-muted-foreground"},"Pending order value",-1)),e.createElementVNode("span",bt,e.toDisplayString(l(e.unref(s).pendingRevenue)),1)]),e.createElementVNode("div",yt,[t[32]||(t[32]=e.createElementVNode("span",{class:"text-muted-foreground"},"Cancelled order value",-1)),e.createElementVNode("span",ht,e.toDisplayString(l(e.unref(s).cancelledRevenue)),1)]),e.createElementVNode("div",Ct,[t[33]||(t[33]=e.createElementVNode("span",{class:"text-muted-foreground"},"Average confirmed order",-1)),e.createElementVNode("span",_t,e.toDisplayString(l(e.unref(s).averageOrder)),1)]),e.createElementVNode("div",wt,[t[34]||(t[34]=e.createElementVNode("span",{class:"text-muted-foreground"},"Average reservation",-1)),e.createElementVNode("span",Dt,e.toDisplayString(l(e.unref(s).averageReservation)),1)])]),_:1})]),_:1}),e.createVNode(u,null,{default:e.withCtx(()=>[e.createVNode(c,null,{default:e.withCtx(()=>[e.createVNode(r,null,{default:e.withCtx(()=>[...t[35]||(t[35]=[e.createTextVNode("Status Breakdown",-1)])]),_:1}),e.createVNode(i,null,{default:e.withCtx(()=>[...t[36]||(t[36]=[e.createTextVNode("Orders and reservation lines in this period.",-1)])]),_:1})]),_:1}),e.createVNode(p,{class:"space-y-5"},{default:e.withCtx(()=>[e.createElementVNode("div",null,[e.createElementVNode("div",kt,[e.createVNode(e.unref(g.Receipt),{class:"size-4"}),t[37]||(t[37]=e.createTextVNode(" Orders ",-1))]),e.createElementVNode("div",Et,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(ie),a=>(e.openBlock(),e.createElementBlock("div",{key:a.status,class:"flex items-center justify-between gap-4"},[e.createElementVNode("span",St,e.toDisplayString(z(a.status)),1),e.createElementVNode("span",Rt,e.toDisplayString(m(a.count))+" · "+e.toDisplayString(l(a.revenue)),1)]))),128))])]),e.createVNode(f),e.createElementVNode("div",null,[e.createElementVNode("div",Tt,[e.createVNode(e.unref(g.Users),{class:"size-4"}),t[38]||(t[38]=e.createTextVNode(" Reservations ",-1))]),e.createElementVNode("div",At,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(ue),a=>(e.openBlock(),e.createElementBlock("div",{key:a.status,class:"flex items-center justify-between gap-4"},[e.createElementVNode("span",Bt,e.toDisplayString(z(a.status)),1),e.createElementVNode("span",$t,e.toDisplayString(m(a.count))+" · "+e.toDisplayString(m(a.spots))+" spots · "+e.toDisplayString(l(a.revenue)),1)]))),128))])])]),_:1})]),_:1})]),e.createVNode(u,{class:"-mx-6 rounded-none border-x-0 @5xl:mx-0 @5xl:rounded-xl @5xl:border-x-[1px]"},{default:e.withCtx(()=>[e.createVNode(c,null,{default:e.withCtx(()=>[e.createVNode(r,null,{default:e.withCtx(()=>[...t[39]||(t[39]=[e.createTextVNode("Daily Breakdown",-1)])]),_:1}),e.createVNode(i,null,{default:e.withCtx(()=>[...t[40]||(t[40]=[e.createTextVNode("Select a date to review the orders placed that day.",-1)])]),_:1})]),_:1}),e.createVNode(p,null,{default:e.withCtx(()=>[e.createElementVNode("div",Ot,[e.createVNode(Be,null,{default:e.withCtx(()=>[e.createVNode(Te,null,{default:e.withCtx(()=>[e.createVNode(pe,null,{default:e.withCtx(()=>[e.createVNode(B,null,{default:e.withCtx(()=>[...t[41]||(t[41]=[e.createTextVNode("Date",-1)])]),_:1}),e.createVNode(B,{class:"text-right"},{default:e.withCtx(()=>[...t[42]||(t[42]=[e.createTextVNode("Orders",-1)])]),_:1}),e.createVNode(B,{class:"text-right"},{default:e.withCtx(()=>[...t[43]||(t[43]=[e.createTextVNode("Reservations",-1)])]),_:1}),e.createVNode(B,{class:"text-right"},{default:e.withCtx(()=>[...t[44]||(t[44]=[e.createTextVNode("Gross",-1)])]),_:1}),e.createVNode(B,{class:"text-right"},{default:e.withCtx(()=>[...t[45]||(t[45]=[e.createTextVNode("Refunds",-1)])]),_:1}),e.createVNode(B,{class:"text-right"},{default:e.withCtx(()=>[...t[46]||(t[46]=[e.createTextVNode("Net",-1)])]),_:1})]),_:1})]),_:1}),e.createVNode(Ae,null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(Y),a=>(e.openBlock(),e.createBlock(pe,{key:a.date},{default:e.withCtx(()=>[e.createVNode($,{class:"font-medium"},{default:e.withCtx(()=>[a.date!=="Unknown date"?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"inline-flex items-center gap-1 rounded-sm text-left hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2","aria-label":`View orders placed on ${ce(a.date)}`,onClick:Pe=>Ce(a)},[e.createTextVNode(e.toDisplayString(a.date)+" ",1),e.createVNode(e.unref(g.ChevronRight),{class:"size-3.5 text-muted-foreground"})],8,jt)):(e.openBlock(),e.createElementBlock("span",Mt,e.toDisplayString(a.date),1))]),_:2},1024),e.createVNode($,{class:"text-right"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(m(a.orders)),1)]),_:2},1024),e.createVNode($,{class:"text-right"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(m(a.reservations)),1)]),_:2},1024),e.createVNode($,{class:"text-right"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l(a.grossRevenue)),1)]),_:2},1024),e.createVNode($,{class:"text-right"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l(a.refunds)),1)]),_:2},1024),e.createVNode($,{class:"text-right font-medium"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l(a.netRevenue)),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})])]),_:1})]),_:1})],64))])]),_:1}),e.createVNode(Ie,{open:e.unref(E),"onUpdate:open":_e},{default:e.withCtx(()=>[e.createVNode(ze,{class:"sm:max-w-2xl"},{default:e.withCtx(()=>[e.createVNode(je,null,{default:e.withCtx(()=>[e.createVNode($e,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(h)?ce(e.unref(h)):"Daily orders"),1)]),_:1}),e.unref(U)?(e.openBlock(),e.createBlock(Oe,{key:0},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(L(e.unref(U).orders,"order"))+" placed · "+e.toDisplayString(L(e.unref(U).reservations,"reservation"))+" · "+e.toDisplayString(l(e.unref(U).netRevenue))+" net revenue ",1)]),_:1})):e.createCommentVNode("",!0)]),_:1}),e.createElementVNode("div",zt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(G),a=>(e.openBlock(),e.createElementBlock("button",{key:a.id,type:"button",class:e.normalizeClass(["flex w-full flex-col items-stretch gap-3 rounded-lg border bg-background p-4 text-left transition-colors hover:bg-muted/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 sm:flex-row sm:items-center",{"cursor-wait opacity-70":e.unref(w)!==null}]),disabled:!a.id||!a.reservations?.length,"aria-disabled":e.unref(w)!==null,"aria-busy":e.unref(w)===a.id,onClick:Pe=>fe(a.id,!0)},[e.createElementVNode("div",Pt,[e.createElementVNode("div",Ft,[e.createElementVNode("span",Ut,e.toDisplayString(De(a)),1),e.createElementVNode("span",{class:e.normalizeClass(["shrink-0 rounded-full px-2 py-0.5 text-xs font-medium",me(a.status).class])},e.toDisplayString(me(a.status).label),3)]),e.createElementVNode("div",Lt,[e.createElementVNode("span",null,"Order #"+e.toDisplayString(a.id.slice(0,8)),1),e.createElementVNode("span",qt,[e.createVNode(e.unref(g.Clock),{class:"size-3.5"}),e.createTextVNode(" "+e.toDisplayString(we(a.createdAt)),1)]),e.createElementVNode("span",null,e.toDisplayString(L(a.reservations?.length||0,"reservation"))+" · "+e.toDisplayString(L(ke(a),"spot")),1)])]),e.createElementVNode("div",Ht,[e.createElementVNode("span",Yt,e.toDisplayString(l(D(a))),1),a.reservations?.length?e.unref(w)===a.id?(e.openBlock(),e.createBlock(e.unref(g.LoaderCircle),{key:1,class:"size-4 animate-spin text-muted-foreground"})):(e.openBlock(),e.createBlock(e.unref(g.ChevronRight),{key:2,class:"size-4 text-muted-foreground"})):(e.openBlock(),e.createElementBlock("span",Gt,"No details"))])],10,It))),128))]),e.createVNode(Me,null,{default:e.withCtx(()=>[e.createVNode(o,{variant:"outline",onClick:Q},{default:e.withCtx(()=>[...t[47]||(t[47]=[e.createTextVNode("Close",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["open"]),e.createVNode(ge._sfc_main$1,{ref_key:"reservationDetailDialog",ref:ne,"agenda-data":e.unref(F),resources:e.unref(O),"show-order-link":"",onCancelled:y,onConfirmed:y,onRejected:y,onTransferred:y,onOpenOrder:t[5]||(t[5]=a=>fe(a)),onClosed:I},null,8,["agenda-data","resources"]),e.createVNode(ge._sfc_main$2,{ref_key:"orderDetailDialog",ref:te,"agenda-data":e.unref(F),resources:e.unref(O),onOpenReservation:t[6]||(t[6]=a=>Se(a)),onClosed:I},null,8,["agenda-data","resources"])],64)}}});exports.default=Qt;
@@ -0,0 +1,204 @@
1
+ import { defineComponent as S, inject as k, computed as N, resolveComponent as d, openBlock as u, createElementBlock as p, createElementVNode as a, createVNode as o, withCtx as i, createTextVNode as m, unref as s, Fragment as U, createCommentVNode as P, createBlock as F, normalizeClass as I, markRaw as w } from "vue";
2
+ import { Table2 as y } from "lucide-vue-next";
3
+ import { nodeProps as D, NodeToolbarWrapper as $, Handle as E, Position as _, NodeContextMenu as j } from "@oneclick.dev/cms-kit/flow-builder";
4
+ const M = { class: "w-full" }, O = { class: "grid gap-2 mb-4" }, z = {
5
+ key: 0,
6
+ class: "mt-4"
7
+ }, B = { class: "my-4" }, G = { class: "flex items-center justify-between gap-2" }, J = /* @__PURE__ */ S({
8
+ __name: "TableRowEditor",
9
+ props: {
10
+ modelValue: {
11
+ type: Object,
12
+ required: !0
13
+ }
14
+ },
15
+ emits: ["update:modelValue"],
16
+ setup(b, { emit: t }) {
17
+ const l = b, r = k("allAvailableVariables", []), v = t, n = N({
18
+ get: () => l.modelValue,
19
+ set: (V) => {
20
+ v("update:modelValue", V);
21
+ }
22
+ });
23
+ return (V, e) => {
24
+ const T = d("SelectValue"), h = d("SelectTrigger"), f = d("SelectItem"), x = d("SelectGroup"), C = d("SelectContent"), A = d("Select"), g = d("CodeEditor"), R = d("Switch");
25
+ return u(), p("div", M, [
26
+ e[11] || (e[11] = a("p", { class: "text-sm text-muted-foreground mb-4" }, " Performs visual row actions. Actual data changes must be handled in your connected flows. ", -1)),
27
+ a("div", O, [
28
+ e[7] || (e[7] = a("p", { class: "text-sm font-semibold" }, "Method", -1)),
29
+ o(A, {
30
+ modelValue: n.value.data.method,
31
+ "onUpdate:modelValue": e[0] || (e[0] = (c) => n.value.data.method = c)
32
+ }, {
33
+ default: i(() => [
34
+ o(h, { class: "w-full" }, {
35
+ default: i(() => [
36
+ o(T, { placeholder: "Select a method" })
37
+ ]),
38
+ _: 1
39
+ }),
40
+ o(C, null, {
41
+ default: i(() => [
42
+ o(x, null, {
43
+ default: i(() => [
44
+ o(f, { value: "CREATE" }, {
45
+ default: i(() => [...e[4] || (e[4] = [
46
+ m("Create new row", -1)
47
+ ])]),
48
+ _: 1
49
+ }),
50
+ o(f, { value: "UPDATE" }, {
51
+ default: i(() => [...e[5] || (e[5] = [
52
+ m("Update row", -1)
53
+ ])]),
54
+ _: 1
55
+ }),
56
+ o(f, { value: "REMOVE" }, {
57
+ default: i(() => [...e[6] || (e[6] = [
58
+ m("Remove row", -1)
59
+ ])]),
60
+ _: 1
61
+ })
62
+ ]),
63
+ _: 1
64
+ })
65
+ ]),
66
+ _: 1
67
+ })
68
+ ]),
69
+ _: 1
70
+ }, 8, ["modelValue"])
71
+ ]),
72
+ n.value.data.method === "CREATE" ? (u(), p("div", z, [
73
+ o(g, {
74
+ modelValue: n.value.data.returnValueFn,
75
+ "onUpdate:modelValue": e[1] || (e[1] = (c) => n.value.data.returnValueFn = c),
76
+ variables: s(r),
77
+ placeholder: "return ...",
78
+ class: "mb-1"
79
+ }, null, 8, ["modelValue", "variables"]),
80
+ e[8] || (e[8] = a("p", { class: "text-xs text-stone-500" }, [
81
+ m("Just make sure you "),
82
+ a("b", null, "return"),
83
+ m(" a value")
84
+ ], -1))
85
+ ])) : n.value.data.method === "UPDATE" ? (u(), p(U, { key: 1 }, [
86
+ a("div", B, [
87
+ o(g, {
88
+ modelValue: n.value.data.returnValueFn,
89
+ "onUpdate:modelValue": e[2] || (e[2] = (c) => n.value.data.returnValueFn = c),
90
+ variables: s(r),
91
+ placeholder: "return ...",
92
+ class: "mb-1"
93
+ }, null, 8, ["modelValue", "variables"]),
94
+ e[9] || (e[9] = a("p", { class: "text-xs text-stone-500" }, [
95
+ m("Just make sure you "),
96
+ a("b", null, "return"),
97
+ m(" a value")
98
+ ], -1))
99
+ ]),
100
+ a("div", G, [
101
+ e[10] || (e[10] = a("label", {
102
+ class: "text-sm font-semibold select-none",
103
+ for: "return-data"
104
+ }, "Merge data", -1)),
105
+ o(R, {
106
+ modelValue: n.value.data.mergeData,
107
+ "onUpdate:modelValue": e[3] || (e[3] = (c) => n.value.data.mergeData = c),
108
+ id: "return-data"
109
+ }, null, 8, ["modelValue"])
110
+ ])
111
+ ], 64)) : P("", !0)
112
+ ]);
113
+ };
114
+ }
115
+ }), W = { class: "flex items-center gap-2" }, q = { key: 0 }, H = { key: 1 }, L = { key: 2 }, K = {
116
+ key: 3,
117
+ class: "opacity-50"
118
+ }, Q = {
119
+ __name: "TableRowNode",
120
+ props: D,
121
+ setup(b) {
122
+ return (t, l) => (u(), F(s($), {
123
+ nodeId: t.id,
124
+ toolbarVisible: t.data.toolbarVisible,
125
+ toolbarPosition: t.data.toolbarPosition
126
+ }, {
127
+ default: i(() => [
128
+ o(s(E), {
129
+ type: "target",
130
+ position: s(_).Left
131
+ }, null, 8, ["position"]),
132
+ a("div", W, [
133
+ a("div", {
134
+ class: I(["size-8 text-white rounded-xl flex items-center justify-center", `${t.data.method ? "bg-blue-500" : "bg-gray-600 opacity-50"}`])
135
+ }, [
136
+ o(s(y), { class: "size-5" })
137
+ ], 2),
138
+ a("div", null, [
139
+ t.data.method === "CREATE" ? (u(), p("span", q, "Table: Create row")) : t.data.method === "UPDATE" ? (u(), p("span", H, "Table: Update row")) : t.data.method === "REMOVE" ? (u(), p("span", L, "Table: Remove row")) : (u(), p("span", K, "Select a table method"))
140
+ ])
141
+ ]),
142
+ o(s(j), { nodeId: t.id }, null, 8, ["nodeId"]),
143
+ o(s(E), {
144
+ type: "source",
145
+ id: "success",
146
+ position: s(_).Right
147
+ }, null, 8, ["position"])
148
+ ]),
149
+ _: 1
150
+ }, 8, ["nodeId", "toolbarVisible", "toolbarPosition"]));
151
+ }
152
+ };
153
+ function te(b = {}) {
154
+ const { tableRowActions: t } = b;
155
+ return {
156
+ type: {
157
+ label: "Table row action",
158
+ value: "table-row-action",
159
+ icon: w(y),
160
+ buttonClass: "bg-gray-800 text-white"
161
+ },
162
+ editor: w(J),
163
+ node: w(Q),
164
+ async processFunction(l, { node: r }) {
165
+ if (!t) {
166
+ console.warn("[table-row-action] No tableRowActions provided, ignoring action.");
167
+ return;
168
+ }
169
+ let v = X(r.data.returnValueFn, l);
170
+ switch (r.data.method) {
171
+ case "CREATE":
172
+ if (!t.create) {
173
+ console.warn("[table-row-action] No create handler provided, ignoring action.");
174
+ return;
175
+ }
176
+ return t.create(v), { finishedTableAction: !0 };
177
+ case "UPDATE":
178
+ if (!t.update) {
179
+ console.warn("[table-row-action] No update handler provided, ignoring action.");
180
+ return;
181
+ }
182
+ return t.update(l.tableActiveRowIndex, v, r.data.mergeData || !1), { finishedTableAction: !0 };
183
+ case "REMOVE":
184
+ if (!t.remove) {
185
+ console.warn("[table-row-action] No remove handler provided, ignoring action.");
186
+ return;
187
+ }
188
+ return t.remove(l.tableActiveRowIndex), { finishedTableAction: !0 };
189
+ default:
190
+ return;
191
+ }
192
+ }
193
+ };
194
+ }
195
+ const X = (b, t = {}) => {
196
+ var l = document.createElement("iframe");
197
+ document.body.appendChild(l);
198
+ var r = l.contentWindow?.Function;
199
+ if (document.body.removeChild(l), !r) throw new Error("Unable to create sandboxed function.");
200
+ return r(...Object.keys(t), "'use strict';" + b)(...Object.values(t));
201
+ };
202
+ export {
203
+ te as c
204
+ };
@@ -0,0 +1 @@
1
+ "use strict";const e=require("vue"),p=require("lucide-vue-next"),d=require("@oneclick.dev/cms-kit/flow-builder"),N={class:"w-full"},x={class:"grid gap-2 mb-4"},C={key:0,class:"mt-4"},T={class:"my-4"},g={class:"flex items-center justify-between gap-2"},h=e.defineComponent({__name:"TableRowEditor",props:{modelValue:{type:Object,required:!0}},emits:["update:modelValue"],setup(s,{emit:o}){const a=s,l=e.inject("allAvailableVariables",[]),i=o,n=e.computed({get:()=>a.modelValue,set:u=>{i("update:modelValue",u)}});return(u,t)=>{const V=e.resolveComponent("SelectValue"),b=e.resolveComponent("SelectTrigger"),c=e.resolveComponent("SelectItem"),v=e.resolveComponent("SelectGroup"),w=e.resolveComponent("SelectContent"),f=e.resolveComponent("Select"),m=e.resolveComponent("CodeEditor"),E=e.resolveComponent("Switch");return e.openBlock(),e.createElementBlock("div",N,[t[11]||(t[11]=e.createElementVNode("p",{class:"text-sm text-muted-foreground mb-4"}," Performs visual row actions. Actual data changes must be handled in your connected flows. ",-1)),e.createElementVNode("div",x,[t[7]||(t[7]=e.createElementVNode("p",{class:"text-sm font-semibold"},"Method",-1)),e.createVNode(f,{modelValue:n.value.data.method,"onUpdate:modelValue":t[0]||(t[0]=r=>n.value.data.method=r)},{default:e.withCtx(()=>[e.createVNode(b,{class:"w-full"},{default:e.withCtx(()=>[e.createVNode(V,{placeholder:"Select a method"})]),_:1}),e.createVNode(w,null,{default:e.withCtx(()=>[e.createVNode(v,null,{default:e.withCtx(()=>[e.createVNode(c,{value:"CREATE"},{default:e.withCtx(()=>[...t[4]||(t[4]=[e.createTextVNode("Create new row",-1)])]),_:1}),e.createVNode(c,{value:"UPDATE"},{default:e.withCtx(()=>[...t[5]||(t[5]=[e.createTextVNode("Update row",-1)])]),_:1}),e.createVNode(c,{value:"REMOVE"},{default:e.withCtx(()=>[...t[6]||(t[6]=[e.createTextVNode("Remove row",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])]),n.value.data.method==="CREATE"?(e.openBlock(),e.createElementBlock("div",C,[e.createVNode(m,{modelValue:n.value.data.returnValueFn,"onUpdate:modelValue":t[1]||(t[1]=r=>n.value.data.returnValueFn=r),variables:e.unref(l),placeholder:"return ...",class:"mb-1"},null,8,["modelValue","variables"]),t[8]||(t[8]=e.createElementVNode("p",{class:"text-xs text-stone-500"},[e.createTextVNode("Just make sure you "),e.createElementVNode("b",null,"return"),e.createTextVNode(" a value")],-1))])):n.value.data.method==="UPDATE"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",T,[e.createVNode(m,{modelValue:n.value.data.returnValueFn,"onUpdate:modelValue":t[2]||(t[2]=r=>n.value.data.returnValueFn=r),variables:e.unref(l),placeholder:"return ...",class:"mb-1"},null,8,["modelValue","variables"]),t[9]||(t[9]=e.createElementVNode("p",{class:"text-xs text-stone-500"},[e.createTextVNode("Just make sure you "),e.createElementVNode("b",null,"return"),e.createTextVNode(" a value")],-1))]),e.createElementVNode("div",g,[t[10]||(t[10]=e.createElementVNode("label",{class:"text-sm font-semibold select-none",for:"return-data"},"Merge data",-1)),e.createVNode(E,{modelValue:n.value.data.mergeData,"onUpdate:modelValue":t[3]||(t[3]=r=>n.value.data.mergeData=r),id:"return-data"},null,8,["modelValue"])])],64)):e.createCommentVNode("",!0)])}}}),k={class:"flex items-center gap-2"},_={key:0},y={key:1},R={key:2},A={key:3,class:"opacity-50"},B={__name:"TableRowNode",props:d.nodeProps,setup(s){return(o,a)=>(e.openBlock(),e.createBlock(e.unref(d.NodeToolbarWrapper),{nodeId:o.id,toolbarVisible:o.data.toolbarVisible,toolbarPosition:o.data.toolbarPosition},{default:e.withCtx(()=>[e.createVNode(e.unref(d.Handle),{type:"target",position:e.unref(d.Position).Left},null,8,["position"]),e.createElementVNode("div",k,[e.createElementVNode("div",{class:e.normalizeClass(["size-8 text-white rounded-xl flex items-center justify-center",`${o.data.method?"bg-blue-500":"bg-gray-600 opacity-50"}`])},[e.createVNode(e.unref(p.Table2),{class:"size-5"})],2),e.createElementVNode("div",null,[o.data.method==="CREATE"?(e.openBlock(),e.createElementBlock("span",_,"Table: Create row")):o.data.method==="UPDATE"?(e.openBlock(),e.createElementBlock("span",y,"Table: Update row")):o.data.method==="REMOVE"?(e.openBlock(),e.createElementBlock("span",R,"Table: Remove row")):(e.openBlock(),e.createElementBlock("span",A,"Select a table method"))])]),e.createVNode(e.unref(d.NodeContextMenu),{nodeId:o.id},null,8,["nodeId"]),e.createVNode(e.unref(d.Handle),{type:"source",id:"success",position:e.unref(d.Position).Right},null,8,["position"])]),_:1},8,["nodeId","toolbarVisible","toolbarPosition"]))}};function S(s={}){const{tableRowActions:o}=s;return{type:{label:"Table row action",value:"table-row-action",icon:e.markRaw(p.Table2),buttonClass:"bg-gray-800 text-white"},editor:e.markRaw(h),node:e.markRaw(B),async processFunction(a,{node:l}){if(!o){console.warn("[table-row-action] No tableRowActions provided, ignoring action.");return}let i=P(l.data.returnValueFn,a);switch(l.data.method){case"CREATE":if(!o.create){console.warn("[table-row-action] No create handler provided, ignoring action.");return}return o.create(i),{finishedTableAction:!0};case"UPDATE":if(!o.update){console.warn("[table-row-action] No update handler provided, ignoring action.");return}return o.update(a.tableActiveRowIndex,i,l.data.mergeData||!1),{finishedTableAction:!0};case"REMOVE":if(!o.remove){console.warn("[table-row-action] No remove handler provided, ignoring action.");return}return o.remove(a.tableActiveRowIndex),{finishedTableAction:!0};default:return}}}}const P=(s,o={})=>{var a=document.createElement("iframe");document.body.appendChild(a);var l=a.contentWindow?.Function;if(document.body.removeChild(a),!l)throw new Error("Unable to create sandboxed function.");return l(...Object.keys(o),"'use strict';"+s)(...Object.values(o))};exports.createTableRowExtension=S;
@@ -58,19 +58,21 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
58
58
  showOrderLink?: boolean;
59
59
  resources?: any[];
60
60
  }> & Readonly<{
61
- onConfirmed?: (() => any) | undefined;
62
61
  onCancelled?: (() => any) | undefined;
62
+ onConfirmed?: (() => any) | undefined;
63
63
  onRejected?: (() => any) | undefined;
64
64
  onTransferred?: (() => any) | undefined;
65
65
  onOpenOrder?: ((orderId: string) => any) | undefined;
66
+ onClosed?: (() => any) | undefined;
66
67
  }>, {
67
68
  openDialog: (order: any) => void;
68
69
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
69
- confirmed: () => any;
70
70
  cancelled: () => any;
71
+ confirmed: () => any;
71
72
  rejected: () => any;
72
73
  transferred: () => any;
73
74
  openOrder: (orderId: string) => any;
75
+ closed: () => any;
74
76
  }, import('vue').PublicProps, {
75
77
  resources: any[];
76
78
  showOrderLink: boolean;
@@ -235,11 +237,12 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
235
237
  showOrderLink?: boolean;
236
238
  resources?: any[];
237
239
  }> & Readonly<{
238
- onConfirmed?: (() => any) | undefined;
239
240
  onCancelled?: (() => any) | undefined;
241
+ onConfirmed?: (() => any) | undefined;
240
242
  onRejected?: (() => any) | undefined;
241
243
  onTransferred?: (() => any) | undefined;
242
244
  onOpenOrder?: ((orderId: string) => any) | undefined;
245
+ onClosed?: (() => any) | undefined;
243
246
  }>, {
244
247
  openDialog: (order: any) => void;
245
248
  }, {}, {}, {}, {
@@ -250,10 +253,12 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
250
253
  agendaData: any;
251
254
  resources?: any[];
252
255
  }> & Readonly<{
256
+ onClosed?: (() => any) | undefined;
253
257
  onOpenReservation?: ((reservation: import('./OrderDetailDialog.vue').ReservationLine) => any) | undefined;
254
258
  }>, {
255
259
  openDialog: (order: import('./OrderDetailDialog.vue').OrderGroup) => void;
256
260
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
261
+ closed: () => any;
257
262
  openReservation: (reservation: import('./OrderDetailDialog.vue').ReservationLine) => any;
258
263
  }, import('vue').PublicProps, {
259
264
  resources: any[];
@@ -268,6 +273,7 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
268
273
  agendaData: any;
269
274
  resources?: any[];
270
275
  }> & Readonly<{
276
+ onClosed?: (() => any) | undefined;
271
277
  onOpenReservation?: ((reservation: import('./OrderDetailDialog.vue').ReservationLine) => any) | undefined;
272
278
  }>, {
273
279
  openDialog: (order: import('./OrderDetailDialog.vue').OrderGroup) => void;
@@ -61,11 +61,13 @@ declare const _default: import('vue').DefineComponent<{
61
61
  }, {
62
62
  openDialog: (order: OrderGroup) => void;
63
63
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
64
+ closed: () => any;
64
65
  openReservation: (reservation: ReservationLine) => any;
65
66
  }, string, import('vue').PublicProps, Readonly<{
66
67
  agendaData: any;
67
68
  resources?: any[];
68
69
  }> & Readonly<{
70
+ onClosed?: (() => any) | undefined;
69
71
  onOpenReservation?: ((reservation: ReservationLine) => any) | undefined;
70
72
  }>, {
71
73
  resources: any[];
@@ -6,17 +6,19 @@ type __VLS_Props = {
6
6
  declare const _default: import('vue').DefineComponent<__VLS_Props, {
7
7
  openDialog: (order: any) => void;
8
8
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
9
- confirmed: () => any;
10
9
  cancelled: () => any;
10
+ confirmed: () => any;
11
11
  rejected: () => any;
12
12
  transferred: () => any;
13
13
  openOrder: (orderId: string) => any;
14
+ closed: () => any;
14
15
  }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
15
- onConfirmed?: (() => any) | undefined;
16
16
  onCancelled?: (() => any) | undefined;
17
+ onConfirmed?: (() => any) | undefined;
17
18
  onRejected?: (() => any) | undefined;
18
19
  onTransferred?: (() => any) | undefined;
19
20
  onOpenOrder?: ((orderId: string) => any) | undefined;
21
+ onClosed?: (() => any) | undefined;
20
22
  }>, {
21
23
  resources: any[];
22
24
  showOrderLink: boolean;
@@ -20,19 +20,21 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
20
20
  showOrderLink?: boolean;
21
21
  resources?: any[];
22
22
  }> & Readonly<{
23
- onConfirmed?: (() => any) | undefined;
24
23
  onCancelled?: (() => any) | undefined;
24
+ onConfirmed?: (() => any) | undefined;
25
25
  onRejected?: (() => any) | undefined;
26
26
  onTransferred?: (() => any) | undefined;
27
27
  onOpenOrder?: ((orderId: string) => any) | undefined;
28
+ onClosed?: (() => any) | undefined;
28
29
  }>, {
29
30
  openDialog: (order: any) => void;
30
31
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
31
- confirmed: () => any;
32
32
  cancelled: () => any;
33
+ confirmed: () => any;
33
34
  rejected: () => any;
34
35
  transferred: () => any;
35
36
  openOrder: (orderId: string) => any;
37
+ closed: () => any;
36
38
  }, import('vue').PublicProps, {
37
39
  resources: any[];
38
40
  showOrderLink: boolean;
@@ -197,11 +199,12 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
197
199
  showOrderLink?: boolean;
198
200
  resources?: any[];
199
201
  }> & Readonly<{
200
- onConfirmed?: (() => any) | undefined;
201
202
  onCancelled?: (() => any) | undefined;
203
+ onConfirmed?: (() => any) | undefined;
202
204
  onRejected?: (() => any) | undefined;
203
205
  onTransferred?: (() => any) | undefined;
204
206
  onOpenOrder?: ((orderId: string) => any) | undefined;
207
+ onClosed?: (() => any) | undefined;
205
208
  }>, {
206
209
  openDialog: (order: any) => void;
207
210
  }, {}, {}, {}, {
@@ -212,10 +215,12 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
212
215
  agendaData: any;
213
216
  resources?: any[];
214
217
  }> & Readonly<{
218
+ onClosed?: (() => any) | undefined;
215
219
  onOpenReservation?: ((reservation: import('../EventDialog/OrderDetailDialog.vue').ReservationLine) => any) | undefined;
216
220
  }>, {
217
221
  openDialog: (order: import('../EventDialog/OrderDetailDialog.vue').OrderGroup) => void;
218
222
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
223
+ closed: () => any;
219
224
  openReservation: (reservation: import('../EventDialog/OrderDetailDialog.vue').ReservationLine) => any;
220
225
  }, import('vue').PublicProps, {
221
226
  resources: any[];
@@ -230,6 +235,7 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
230
235
  agendaData: any;
231
236
  resources?: any[];
232
237
  }> & Readonly<{
238
+ onClosed?: (() => any) | undefined;
233
239
  onOpenReservation?: ((reservation: import('../EventDialog/OrderDetailDialog.vue').ReservationLine) => any) | undefined;
234
240
  }>, {
235
241
  openDialog: (order: import('../EventDialog/OrderDetailDialog.vue').OrderGroup) => void;