@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.
- package/dist/{ContentEditor-CoJjsV-m.js → ContentEditor-C-Wm48ai.js} +63 -59
- package/dist/{ContentEditor-DIwqplfB.mjs → ContentEditor-MDGolnIP.mjs} +27596 -26138
- 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
- package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-BVE_uURZ.js +1 -0
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-BdFa-xNf.mjs +3566 -0
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-DzPOadcU.js +925 -0
- package/dist/TableCalculationWidget-CkQPrVUd.js +59 -0
- package/dist/TableCalculationWidget-CrqcLGfU.mjs +254 -0
- package/dist/TableDataWidget-7qvC3Egd.js +1 -0
- package/dist/TableDataWidget-DMTSoGRO.mjs +121 -0
- package/dist/TableOverviewCard-AFq-puJs.js +1 -0
- package/dist/TableOverviewCard-Ci0d4o4w.mjs +391 -0
- package/dist/TableResultView.vue_vue_type_script_setup_true_lang-CBn-Oxl9.mjs +534 -0
- package/dist/TableResultView.vue_vue_type_script_setup_true_lang-C_Lv-SmJ.js +1 -0
- package/dist/TableRowActionCard-BhdnnPaq.mjs +266 -0
- package/dist/TableRowActionCard-IzB6tNN-.js +1 -0
- package/dist/TableView-BkwoKREo.js +4 -0
- package/dist/TableView-C4Zyp8d7.mjs +8228 -0
- package/dist/{agenda-BCKDYOeF.mjs → agenda-DWdbWUbb.mjs} +10 -9
- package/dist/agenda-r9Gl85GL.js +1 -0
- package/dist/dateRangePresets-B-l5b_wR.mjs +48 -0
- package/dist/dateRangePresets-CPWqst_x.js +1 -0
- package/dist/fuse-Deb-Iq39.mjs +1473 -0
- package/dist/fuse-_CGUd5Zq.js +1 -0
- package/dist/{index-DU3Ib10Z.mjs → index-B_qaX29C.mjs} +7 -6
- package/dist/{index-Bk3yLv_G.js → index-yHLT6gaZ.js} +3 -3
- package/dist/index.cjs.js +1 -1
- package/dist/index.mjs +419 -109
- package/dist/{orders-CElKNc1v.mjs → orders-BfTLIm7U.mjs} +10 -9
- package/dist/orders-DUa2PVoa.js +1 -0
- package/dist/reports-ChCsd1Gk.mjs +1107 -0
- package/dist/reports-DmJPm8uP.js +158 -0
- package/dist/row-item-C1dUyimV.mjs +204 -0
- package/dist/row-item-Cyo3m3MZ.js +1 -0
- package/dist/src/appointments/components/edit/EventDialog/BookingsList.vue.d.ts +9 -3
- package/dist/src/appointments/components/edit/EventDialog/OrderDetailDialog.vue.d.ts +2 -0
- package/dist/src/appointments/components/edit/EventDialog/ReservationDetailDialog.vue.d.ts +4 -2
- package/dist/src/appointments/components/edit/dashboard/BookingsList.vue.d.ts +9 -3
- package/dist/src/appointments/pages/edit/orders.vue.d.ts +9 -3
- package/dist/src/appointments/pages/edit/reports.vue.d.ts +229 -1
- package/dist/src/table/chat-components/TableCalculationWidget.vue.d.ts +15 -0
- package/dist/src/table/chat-components/TableDataWidget.vue.d.ts +15 -0
- package/dist/src/table/chat-components/TableOverviewCard.vue.d.ts +61 -0
- package/dist/src/table/chat-components/TableResultView.vue.d.ts +48 -0
- package/dist/src/table/chat-components/TableRowActionCard.vue.d.ts +15 -0
- package/dist/src/table/components/filters/DialogTableFilterOptionItem.vue.d.ts +16 -0
- package/dist/src/table/components/filters/NumberComparisonFilter.vue.d.ts +12 -0
- package/dist/src/table/components/filters/NumberComparisonFilterSettings.vue.d.ts +12 -0
- package/dist/src/table/components/filters/NumberRangeFilter.vue.d.ts +12 -0
- package/dist/src/table/components/filters/NumberRangeFilterSettings.vue.d.ts +12 -0
- package/dist/src/table/components/filters/filter-utils.d.ts +14 -0
- package/dist/src/table/composables/useTableAgentTools.d.ts +33 -0
- package/dist/src/table/index.d.ts +339 -0
- package/dist/src/table/tool-sandbox.d.ts +13 -0
- package/dist/src/table/tool-utils.d.ts +11 -0
- package/dist/src/table/tools.d.ts +333 -1
- package/dist/src/table/types.d.ts +79 -0
- package/dist/tool-sandbox-DdkMLkDK.mjs +182 -0
- package/dist/tool-sandbox-DoF1PsyS.js +115 -0
- package/dist/useTableAgentTools-D5mzGf3A.js +1 -0
- package/dist/useTableAgentTools-DcN3kYRL.mjs +131 -0
- package/package.json +17 -17
- package/src/table/tools.ts +304 -1
- package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-BdZbcubW.js +0 -1
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-BYSeUW_V.js +0 -925
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-DwAUYR8p.mjs +0 -5021
- package/dist/TableView-Ctnep-Qu.mjs +0 -6247
- package/dist/TableView-DJqyJL9L.js +0 -4
- package/dist/agenda-B54F8cEr.js +0 -1
- package/dist/orders-BMosTk6r.js +0 -1
- package/dist/reports-BQT_GZzU.js +0 -158
- 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,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),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;
|