@oneclick.dev/cms-core-modules 0.0.115 → 0.0.116
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-MctMvN7D.js → ContentEditor-CsbOFg3a.js} +52 -52
- package/dist/{ContentEditor-C5yNNLeV.mjs → ContentEditor-Df5uWpVC.mjs} +10337 -8677
- package/dist/EditLayout.vue_vue_type_script_setup_true_lang-gozJKXvM.js +1 -0
- package/dist/EditLayout.vue_vue_type_script_setup_true_lang-pDO9b4Pv.mjs +77 -0
- package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-BHeMJ6nr.mjs +1476 -0
- package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-C2zwt5UF.js +1 -0
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-BYSeUW_V.js +925 -0
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-DwAUYR8p.mjs +5021 -0
- package/dist/Overview-CBahJviK.js +1 -0
- package/dist/Overview-CVQ1pkuD.mjs +527 -0
- package/dist/TableView-Csv5Lycy.mjs +6234 -0
- package/dist/TableView-Cwal0BPW.js +4 -0
- package/dist/agenda-BSdlrfxv.mjs +1253 -0
- package/dist/agenda-Bev1mO7E.js +1 -0
- package/dist/availability-ClBGVgE9.js +1 -0
- package/dist/availability-D8JdA4rP.mjs +274 -0
- package/dist/booking-data-Px7XCIfU.mjs +1024 -0
- package/dist/booking-data-aMS1p_3g.js +1 -0
- package/dist/cms-core-modules.css +1 -1
- package/dist/exceptions-CqityDo9.mjs +651 -0
- package/dist/exceptions-DXqc0Nza.js +1 -0
- package/dist/index-CM4eaK5T.mjs +1245 -0
- package/dist/index-DliTZzwI.js +35 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.mjs +12 -11
- package/dist/orders-1swJVKw2.js +1 -0
- package/dist/orders-D41GbzIa.mjs +624 -0
- package/dist/payment-BJHgpaeT.js +1 -0
- package/dist/payment-D5j-68Ig.mjs +1278 -0
- package/dist/refunds-D9nTeD2d.mjs +436 -0
- package/dist/refunds-oVB2Opib.js +1 -0
- package/dist/resources-8WouFvJe.js +1 -0
- package/dist/resources-B-D5MUhV.mjs +975 -0
- package/dist/server-handlers.cjs.js +1 -1
- package/dist/server-handlers.mjs +626 -515
- package/dist/src/appointments/components/edit/EventDialog/BookingsList.vue.d.ts +146 -5
- package/dist/src/appointments/components/edit/EventDialog/CancelRefundReservationDialog.vue.d.ts +33 -0
- package/dist/src/appointments/components/edit/EventDialog/OrderDetailDialog.vue.d.ts +26 -8
- package/dist/src/appointments/components/edit/EventDialog/RefundDetailsDisplay.vue.d.ts +8 -0
- package/dist/src/appointments/components/edit/EventDialog/ReservationDetailDialog.vue.d.ts +91 -5
- package/dist/src/appointments/components/edit/EventDialog/TransferReservationDialog.vue.d.ts +20 -3
- package/dist/src/appointments/components/edit/NewReservationDialog/ReservationLines.vue.d.ts +5 -0
- package/dist/src/appointments/components/edit/OrderMetadataDisplay.vue.d.ts +20 -2
- package/dist/src/appointments/components/edit/dashboard/BookingsList.vue.d.ts +240 -0
- package/dist/src/appointments/composables/useAgendaMetadataSchema.d.ts +37 -0
- package/dist/src/appointments/pages/edit/orders.vue.d.ts +225 -0
- package/dist/src/appointments/pages/edit/refunds.vue.d.ts +2 -0
- package/dist/src/appointments/server.d.ts +2 -0
- package/dist/src/appointments/types.d.ts +6 -0
- package/dist/src/appointments/utils/printReservation.d.ts +65 -3
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/table/Table.d.ts +36 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/table/Table.vue.d.ts +95 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/table/TableCell.d.ts +13 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/table/TableHeader.d.ts +6 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/table/TableRow.d.ts +6 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/table/index.d.ts +4 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/TableMenu.vue.d.ts +13 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/element-editor-views/index.d.ts +14 -0
- package/package.json +2 -2
- package/dist/EditLayout.vue_vue_type_script_setup_true_lang-DWMqQvHl.mjs +0 -76
- package/dist/EditLayout.vue_vue_type_script_setup_true_lang-kpjbVSXg.js +0 -1
- package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-Baqy-rTT.js +0 -1
- package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-Dx4Bpa2m.mjs +0 -1263
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-COrK1j0S.js +0 -1
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-Vb3q8EVv.mjs +0 -330
- package/dist/Overview-98nkJUWN.mjs +0 -481
- package/dist/Overview-Dl8cMlsr.js +0 -1
- package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-CuwREvXD.js +0 -349
- package/dist/ReservationDetailDialog.vue_vue_type_script_setup_true_lang-GYNZ_yhD.mjs +0 -3077
- package/dist/TableView-CVfkyj1k.js +0 -4
- package/dist/TableView-zDx0IegJ.mjs +0 -6096
- package/dist/agenda-BaJu3-1c.js +0 -1
- package/dist/agenda-BwVY_8oM.mjs +0 -1165
- package/dist/availability-CMrRa5y2.mjs +0 -269
- package/dist/availability-Cf2YfMwM.js +0 -1
- package/dist/booking-data-DgJd0BcM.mjs +0 -889
- package/dist/booking-data-Di5GmH_8.js +0 -1
- package/dist/exceptions-B6P9UiCj.js +0 -1
- package/dist/exceptions-De9-FvdP.mjs +0 -646
- package/dist/index-DL6orwdK.js +0 -35
- package/dist/index-hH3e-IYz.mjs +0 -1187
- package/dist/orders-C65SlpJy.mjs +0 -618
- package/dist/orders-XVzWAgG1.js +0 -1
- package/dist/payment-C3ohkehF.mjs +0 -1080
- package/dist/payment-Dfr-Ro-a.js +0 -1
- package/dist/resources-CxeFd57z.js +0 -1
- package/dist/resources-DwYxn2Vi.mjs +0 -811
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),G=require("./EditLayout.vue_vue_type_script_setup_true_lang-kpjbVSXg.js"),k=require("lucide-vue-next"),I=require("@oneclick.dev/cms-kit"),Z={class:"space-y-6 py-4"},J={class:"grid grid-cols-2 gap-6"},Y={class:"relative"},Q={key:0,class:"text-xs text-red-600 mt-1"},W={key:0},X={key:1},ee={class:"flex items-center gap-3"},te={key:2,class:"grid gap-2"},oe={class:"w-full flex justify-between items-center"},le={class:"flex items-center gap-2 ml-auto"},ae=e.defineComponent({__name:"CustomerInformationFieldEditorDialog",props:{keysInUse:{type:Array,default:()=>[]}},emits:["add-field","update-field","remove-field"],setup(U,{expose:w,emit:L}){const g=L,N=U,{confirm:v}=I.useConfirmation(),t=e.ref(!1),x=e.ref("add"),C=e.ref(null),d=e.reactive({id:"",fieldName:"",fieldDescription:"",fieldType:"text",required:!1,isNativeField:!1,visible:!0,options:[]}),b=e.computed(()=>{const s=new Set(N.keysInUse);return x.value==="edit"&&C.value&&s.delete(C.value),s}),B=[{value:"text",label:"Text Box"},{value:"checkbox",label:"Checkbox"},{value:"radio",label:"Radio Button"},{value:"select",label:"Select"},{value:"date",label:"Date Picker"}],T=s=>{x.value=s?"edit":"add",l.value=[],d.id=s?.id||"",C.value=s?.id||null,d.fieldName=s?.fieldName||"",d.fieldDescription=s?.fieldDescription||"",d.fieldType=s?.fieldType||"text",d.required=s?.required||!1,d.isNativeField=s?.isNativeField||!1,d.options=s?.options||[],d.visible=s?.visible!==void 0?s.visible:!0,y.value=x.value==="edit",t.value=!0},S=()=>{t.value=!1,l.value=[]},V=()=>{_()&&(g("add-field",{...d}),t.value=!1)},F=()=>{_()&&(g("update-field",C.value,{...d}),t.value=!1)},f=()=>{g("remove-field",C.value),t.value=!1},l=e.ref([]),_=()=>(l.value=[],d.fieldName=d.fieldName.trim(),d.fieldName?!0:(l.value.push("Field name is required."),!1)),y=e.ref(!1),D=async()=>{await v("Previous orders using this field won't update to reflect changes. Are you sure you want to change the key?")&&(y.value=!1)};return w({openDialog:T}),(s,a)=>{const $=e.resolveComponent("DialogTitle"),n=e.resolveComponent("DialogHeader"),o=e.resolveComponent("Label"),u=e.resolveComponent("Input"),c=e.resolveComponent("Button"),r=e.resolveComponent("SelectValue"),p=e.resolveComponent("SelectTrigger"),h=e.resolveComponent("SelectItem"),E=e.resolveComponent("SelectContent"),M=e.resolveComponent("Select"),z=e.resolveComponent("TagsInputItemText"),A=e.resolveComponent("TagsInputItemDelete"),i=e.resolveComponent("TagsInputItem"),q=e.resolveComponent("TagsInputInput"),R=e.resolveComponent("TagsInput"),O=e.resolveComponent("Checkbox"),P=e.resolveComponent("DialogFooter"),j=e.resolveComponent("DialogScrollContent"),H=e.resolveComponent("Dialog");return e.openBlock(),e.createBlock(H,{open:t.value,"onUpdate:open":a[6]||(a[6]=m=>t.value=m)},{default:e.withCtx(()=>[e.createVNode(j,{class:"sm:max-w-2xl"},{default:e.withCtx(()=>[e.createVNode(n,null,{default:e.withCtx(()=>[e.createVNode($,null,{default:e.withCtx(()=>[...a[7]||(a[7]=[e.createTextVNode("Customer Information",-1)])]),_:1})]),_:1}),e.createElementVNode("div",Z,[e.createElementVNode("div",J,[e.createElementVNode("div",null,[e.createVNode(o,{class:"text-bsmase font-normal mb-1.5",for:"customer-info-field-dialog-fieldname"},{default:e.withCtx(()=>[...a[8]||(a[8]=[e.createTextVNode("Field Name",-1)])]),_:1}),e.createVNode(u,{modelValue:d.fieldName,"onUpdate:modelValue":a[0]||(a[0]=m=>d.fieldName=m),id:"customer-info-field-dialog-fieldname"},null,8,["modelValue"])]),e.createElementVNode("div",null,[e.createVNode(o,{class:"text-bsmase font-normal mb-1.5",for:"customer-info-field-dialog-fieldname"},{default:e.withCtx(()=>[...a[9]||(a[9]=[e.createTextVNode("Key",-1)])]),_:1}),e.createElementVNode("div",Y,[e.createVNode(u,{modelValue:d.id,"onUpdate:modelValue":a[1]||(a[1]=m=>d.id=m),id:"customer-info-field-dialog-fieldname",disabled:y.value},null,8,["modelValue","disabled"]),y.value?(e.openBlock(),e.createBlock(c,{key:0,variant:"ghost",size:"icon",class:"absolute group top-0 right-0",onClick:D},{default:e.withCtx(()=>[e.createVNode(e.unref(k.Lock),{class:"size-4 block group-hover:hidden"}),e.createVNode(e.unref(k.LockOpen),{class:"size-4 hidden group-hover:block"})]),_:1})):e.createCommentVNode("",!0)]),e.unref(b).has(d.id)?(e.openBlock(),e.createElementBlock("p",Q," Key already in use. ")):e.createCommentVNode("",!0)])]),e.createElementVNode("div",null,[e.createVNode(o,{class:"text-sm font-normal mb-1.5",for:"customer-info-field-dialog-field-description"},{default:e.withCtx(()=>[...a[10]||(a[10]=[e.createTextVNode("Description",-1)])]),_:1}),e.createVNode(u,{modelValue:d.fieldDescription,"onUpdate:modelValue":a[2]||(a[2]=m=>d.fieldDescription=m),id:"customer-info-field-dialog-field-description"},null,8,["modelValue"])]),d.isNativeField?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",W,[e.createVNode(o,{class:"text-sm font-normal mb-1.5"},{default:e.withCtx(()=>[...a[11]||(a[11]=[e.createTextVNode("Field Type",-1)])]),_:1}),e.createVNode(M,{modelValue:d.fieldType,"onUpdate:modelValue":a[3]||(a[3]=m=>d.fieldType=m)},{default:e.withCtx(()=>[e.createVNode(p,null,{default:e.withCtx(()=>[e.createVNode(r,{placeholder:"Select field type"})]),_:1}),e.createVNode(E,null,{default:e.withCtx(()=>[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(B,m=>e.createVNode(h,{key:m.value,value:m.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(m.label),1)]),_:2},1032,["value"])),64))]),_:1})]),_:1},8,["modelValue"])])),d.fieldType==="select"||d.fieldType==="radio"?(e.openBlock(),e.createElementBlock("div",X,[e.createVNode(o,{class:"text-sm font-normal mb-1.5",for:"customer-info-field-dialog-field-new-option"},{default:e.withCtx(()=>[...a[12]||(a[12]=[e.createTextVNode("Options",-1)])]),_:1}),e.createVNode(R,{modelValue:d.options,"onUpdate:modelValue":a[4]||(a[4]=m=>d.options=m)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.options,m=>(e.openBlock(),e.createBlock(i,{key:m,value:m},{default:e.withCtx(()=>[e.createVNode(z),e.createVNode(A)]),_:1},8,["value"]))),128)),e.createVNode(q,{placeholder:"New option...",id:"customer-info-field-dialog-field-new-option"})]),_:1},8,["modelValue"])])):e.createCommentVNode("",!0),e.createElementVNode("div",ee,[e.createVNode(O,{id:"customer-info-field-dialog-field-required",modelValue:d.required,"onUpdate:modelValue":a[5]||(a[5]=m=>d.required=m)},null,8,["modelValue"]),e.createVNode(o,{for:"customer-info-field-dialog-field-required",class:"text-base font-normal cursor-pointer"},{default:e.withCtx(()=>[...a[13]||(a[13]=[e.createTextVNode(" Is this field mandatory? ",-1)])]),_:1})]),l.value.length>0?(e.openBlock(),e.createElementBlock("p",te,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(m,K)=>(e.openBlock(),e.createElementBlock("span",{key:K,class:"text-sm text-red-600 block"},e.toDisplayString(m),1))),128))])):e.createCommentVNode("",!0)]),e.createVNode(P,{class:"gap-2"},{default:e.withCtx(()=>[e.createElementVNode("div",oe,[x.value==="edit"&&!d.isNativeField?(e.openBlock(),e.createBlock(c,{key:0,variant:"destructive",onClick:f},{default:e.withCtx(()=>[...a[14]||(a[14]=[e.createTextVNode(" Remove Field ",-1)])]),_:1})):e.createCommentVNode("",!0),e.createElementVNode("div",le,[e.createVNode(c,{variant:"outline",onClick:S},{default:e.withCtx(()=>[...a[15]||(a[15]=[e.createTextVNode(" Cancel ",-1)])]),_:1}),x.value==="add"?(e.openBlock(),e.createBlock(c,{key:0,onClick:V},{default:e.withCtx(()=>[...a[16]||(a[16]=[e.createTextVNode(" Add Field ",-1)])]),_:1})):(e.openBlock(),e.createBlock(c,{key:1,onClick:F},{default:e.withCtx(()=>[...a[17]||(a[17]=[e.createTextVNode(" Update Field ",-1)])]),_:1}))])])]),_:1})]),_:1})]),_:1},8,["open"])}}}),ne={class:"space-y-6 py-4"},de={class:"text-xs text-muted-foreground"},re={class:"grid grid-cols-2 gap-4"},ie={key:0,class:"grid gap-2"},se={class:"w-full flex justify-between items-center"},ce={class:"flex items-center gap-2 ml-auto"},me=e.defineComponent({__name:"MetadataSchemaEditorDialog",emits:["add-field","update-field","remove-field"],setup(U,{expose:w,emit:L}){const g=L,N=e.ref(!1),v=e.ref("add"),t=e.reactive({id:"",key:"",label:"",display:"field",scope:"order",icon:"",color:"",order:0}),x=[{value:"highlight",label:"Highlight",description:"Large prominent card — ideal for door codes, PINs"},{value:"badge",label:"Badge",description:"Colored pill in the order header — ideal for membership, VIP status"},{value:"field",label:"Field",description:"Standard label-value row in order details"},{value:"hidden",label:"Hidden",description:"Not shown in the UI — internal system fields"}],C=[{value:"order",label:"Order",description:"Attached to the whole order"},{value:"reservation",label:"Reservation",description:"Attached to each individual reservation"}],d=f=>{v.value=f?"edit":"add",V.value=[],t.id=f?.id||"",t.key=f?.key||"",t.label=f?.label||"",t.display=f?.display||"field",t.scope=f?.scope||"order",t.icon=f?.icon||"",t.color=f?.color||"",t.order=f?.order||0,N.value=!0},b=()=>{N.value=!1,V.value=[]},B=()=>{F()&&(g("add-field",{...t}),N.value=!1)},T=()=>{F()&&(g("update-field",{...t}),N.value=!1)},S=()=>{g("remove-field",t.id),N.value=!1},V=e.ref([]),F=()=>(V.value=[],t.key=t.key.trim(),t.label=t.label.trim(),t.key||V.value.push("Metadata key is required."),t.label||V.value.push("Display label is required."),t.key&&!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t.key)&&V.value.push("Key must be alphanumeric (letters, numbers, underscores)."),V.value.length===0);return w({openDialog:d}),(f,l)=>{const _=e.resolveComponent("DialogTitle"),y=e.resolveComponent("DialogDescription"),D=e.resolveComponent("DialogHeader"),s=e.resolveComponent("Label"),a=e.resolveComponent("Input"),$=e.resolveComponent("RadioGroupItem"),n=e.resolveComponent("RadioGroup"),o=e.resolveComponent("SelectValue"),u=e.resolveComponent("SelectTrigger"),c=e.resolveComponent("SelectItem"),r=e.resolveComponent("SelectContent"),p=e.resolveComponent("Select"),h=e.resolveComponent("LucideIconPicker"),E=e.resolveComponent("Button"),M=e.resolveComponent("DialogFooter"),z=e.resolveComponent("DialogScrollContent"),A=e.resolveComponent("Dialog");return e.openBlock(),e.createBlock(A,{open:N.value,"onUpdate:open":l[7]||(l[7]=i=>N.value=i)},{default:e.withCtx(()=>[e.createVNode(z,{class:"sm:max-w-2xl"},{default:e.withCtx(()=>[e.createVNode(D,null,{default:e.withCtx(()=>[e.createVNode(_,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(v.value==="add"?"Add Metadata Field":"Edit Metadata Field"),1)]),_:1}),e.createVNode(y,null,{default:e.withCtx(()=>[...l[8]||(l[8]=[e.createTextVNode(" Configure how an external metadata field is displayed on orders. ",-1)])]),_:1})]),_:1}),e.createElementVNode("div",ne,[e.createElementVNode("div",null,[e.createVNode(s,{class:"text-sm font-normal mb-1.5",for:"metadata-field-key"},{default:e.withCtx(()=>[...l[9]||(l[9]=[e.createTextVNode("Metadata Key",-1)])]),_:1}),e.createVNode(a,{modelValue:t.key,"onUpdate:modelValue":l[0]||(l[0]=i=>t.key=i),id:"metadata-field-key",placeholder:"e.g. doorCode, membershipTier",disabled:v.value==="edit"},null,8,["modelValue","disabled"]),l[10]||(l[10]=e.createElementVNode("p",{class:"text-xs text-muted-foreground mt-1"}," The key in the metadata object. Must match what your external system writes. ",-1))]),e.createElementVNode("div",null,[e.createVNode(s,{class:"text-sm font-normal mb-1.5",for:"metadata-field-label"},{default:e.withCtx(()=>[...l[11]||(l[11]=[e.createTextVNode("Display Label",-1)])]),_:1}),e.createVNode(a,{modelValue:t.label,"onUpdate:modelValue":l[1]||(l[1]=i=>t.label=i),id:"metadata-field-label",placeholder:"e.g. Door Code, Membership"},null,8,["modelValue"])]),e.createElementVNode("div",null,[e.createVNode(s,{class:"text-sm font-normal mb-1.5"},{default:e.withCtx(()=>[...l[12]||(l[12]=[e.createTextVNode("Display Mode",-1)])]),_:1}),e.createVNode(n,{modelValue:t.display,"onUpdate:modelValue":l[2]||(l[2]=i=>t.display=i)},{default:e.withCtx(()=>[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(x,i=>e.createElementVNode("div",{key:i.value,class:"flex items-start space-x-3 space-y-0 rounded-md border p-3 mb-2"},[e.createVNode($,{value:i.value,id:`display-${i.value}`,class:"mt-0.5"},null,8,["value","id"]),e.createElementVNode("div",null,[e.createVNode(s,{for:`display-${i.value}`,class:"font-medium cursor-pointer"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(i.label),1)]),_:2},1032,["for"]),e.createElementVNode("p",de,e.toDisplayString(i.description),1)])])),64))]),_:1},8,["modelValue"])]),e.createElementVNode("div",null,[e.createVNode(s,{class:"text-sm font-normal mb-1.5"},{default:e.withCtx(()=>[...l[13]||(l[13]=[e.createTextVNode("Scope",-1)])]),_:1}),e.createVNode(p,{modelValue:t.scope,"onUpdate:modelValue":l[3]||(l[3]=i=>t.scope=i)},{default:e.withCtx(()=>[e.createVNode(u,null,{default:e.withCtx(()=>[e.createVNode(o,{placeholder:"Select scope"})]),_:1}),e.createVNode(r,null,{default:e.withCtx(()=>[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(C,i=>e.createVNode(c,{key:i.value,value:i.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(i.label)+" — "+e.toDisplayString(i.description),1)]),_:2},1032,["value"])),64))]),_:1})]),_:1},8,["modelValue"])]),e.createElementVNode("div",re,[e.createElementVNode("div",null,[e.createVNode(s,{class:"text-sm font-normal mb-1.5",for:"metadata-field-icon"},{default:e.withCtx(()=>[...l[14]||(l[14]=[e.createTextVNode("Icon (Optional)",-1)])]),_:1}),e.createVNode(h,{id:"metadata-field-icon",modelValue:t.icon,"onUpdate:modelValue":l[4]||(l[4]=i=>t.icon=i)},null,8,["modelValue"])]),e.createElementVNode("div",null,[e.createVNode(s,{class:"text-sm font-normal mb-1.5",for:"metadata-field-color"},{default:e.withCtx(()=>[...l[15]||(l[15]=[e.createTextVNode("Color (Optional)",-1)])]),_:1}),e.createVNode(a,{modelValue:t.color,"onUpdate:modelValue":l[5]||(l[5]=i=>t.color=i),id:"metadata-field-color",placeholder:"e.g. #FFD700"},null,8,["modelValue"])])]),e.createElementVNode("div",null,[e.createVNode(s,{class:"text-sm font-normal mb-1.5",for:"metadata-field-order"},{default:e.withCtx(()=>[...l[16]||(l[16]=[e.createTextVNode("Sort Order (Optional)",-1)])]),_:1}),e.createVNode(a,{modelValue:t.order,"onUpdate:modelValue":l[6]||(l[6]=i=>t.order=i),modelModifiers:{number:!0},id:"metadata-field-order",type:"number",placeholder:"0",class:"max-w-24"},null,8,["modelValue"]),l[17]||(l[17]=e.createElementVNode("p",{class:"text-xs text-muted-foreground mt-1"},"Lower numbers appear first.",-1))]),V.value.length>0?(e.openBlock(),e.createElementBlock("p",ie,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.value,(i,q)=>(e.openBlock(),e.createElementBlock("span",{key:q,class:"text-sm text-red-600 block"},e.toDisplayString(i),1))),128))])):e.createCommentVNode("",!0)]),e.createVNode(M,{class:"gap-2"},{default:e.withCtx(()=>[e.createElementVNode("div",se,[v.value==="edit"?(e.openBlock(),e.createBlock(E,{key:0,variant:"destructive",onClick:S},{default:e.withCtx(()=>[...l[18]||(l[18]=[e.createTextVNode(" Remove Field ",-1)])]),_:1})):e.createCommentVNode("",!0),e.createElementVNode("div",ce,[e.createVNode(E,{variant:"outline",onClick:b},{default:e.withCtx(()=>[...l[19]||(l[19]=[e.createTextVNode("Cancel",-1)])]),_:1}),v.value==="add"?(e.openBlock(),e.createBlock(E,{key:0,onClick:B},{default:e.withCtx(()=>[...l[20]||(l[20]=[e.createTextVNode("Add Field",-1)])]),_:1})):(e.openBlock(),e.createBlock(E,{key:1,onClick:T},{default:e.withCtx(()=>[...l[21]||(l[21]=[e.createTextVNode("Update Field",-1)])]),_:1}))])])]),_:1})]),_:1})]),_:1},8,["open"])}}}),ue={key:0,class:"max-w-2xl"},pe={class:"border rounded-md p-4 mb-4"},fe={class:"font-medium text-sm"},ve={class:"flex items-center justify-between gap-4 mt-4"},Ve={class:"border rounded-md p-4 mb-4"},Ne={key:0,class:"text-sm text-muted-foreground py-4 text-center"},xe={class:"flex items-center gap-3 min-w-0"},ge={class:"min-w-0"},Ce={class:"font-medium text-sm"},ke={class:"text-xs text-muted-foreground"},ye={class:"bg-muted px-1 py-0.5 rounded text-xs"},be={class:"flex items-center shrink-0"},_e={class:"flex justify-start mt-8"},he=e.defineComponent({__name:"booking-data",setup(U){const{params:w}=I.useModuleRoute(),{confirm:L}=I.useConfirmation(),{config:g}=I.useModule(),N=I.useFirebaseIntegration(g.project),v=[{id:"firstName",fieldName:"First Name",fieldType:"text",required:!0,visible:!0,isNativeField:!0},{id:"lastName",fieldName:"Last Name",fieldType:"text",required:!0,visible:!0,isNativeField:!0},{id:"phone",fieldName:"Phone No",fieldType:"tel",required:!0,visible:!0,isNativeField:!0},{id:"email",fieldName:"Email",fieldType:"email",required:!0,visible:!0,isNativeField:!0},{id:"birthdate",fieldName:"Birthdate",fieldType:"date",required:!0,visible:!0,isNativeField:!0}],t=e.reactive({customerInformationFields:[...v],metadataSchema:[]}),x=e.ref(!1),C=e.ref(!0),d=e.ref(null),b=e.ref(null),B=e.computed(()=>{if(t.customerInformationFields.length!==v.length)return!0;const n=u=>JSON.stringify({...u},Object.keys(u).sort()),o=new Set(t.customerInformationFields.map(n));return v.some(u=>!o.has(n(u)))}),T=()=>{t.customerInformationFields=[...v]},S=n=>{const{isNativeField:o,options:u,...c}=n;c.fieldType!=="radio"&&c.fieldType!=="select"?delete c.options:c.options=u;let r=c.id;if(!r||t.customerInformationFields.some(p=>p.id===r))for(r=Math.random().toString(36).substr(2,9);t.customerInformationFields.some(p=>p.id===r);)r=Math.random().toString(36).substr(2,9);t.customerInformationFields.push({...c,id:r})},V=(n,o)=>{const{isNativeField:u,options:c,...r}=o;u&&(r.isNativeField=!0),(r.fieldType==="radio"||r.fieldType==="select")&&(r.options=c);const p=t.customerInformationFields.findIndex(h=>h.id===n);p!==-1&&(t.customerInformationFields[p]={...r})},F=async n=>{t.customerInformationFields=t.customerInformationFields.filter(o=>o.id!==n)},f=n=>{let o=Math.random().toString(36).substr(2,9);for(;t.metadataSchema.find(u=>u.id===o);)o=Math.random().toString(36).substr(2,9);t.metadataSchema.push({...n,id:o})},l=n=>{const o=t.metadataSchema.findIndex(u=>u.id===n.id);o!==-1&&(t.metadataSchema[o]={...n})},_=n=>{t.metadataSchema=t.metadataSchema.filter(o=>o.id!==n)},y=e.computed(()=>[...t.metadataSchema].sort((n,o)=>(n.order||0)-(o.order||0))),D=n=>{switch(n){case"highlight":return"Highlight";case"badge":return"Badge";case"field":return"Field";case"hidden":return"Hidden";default:return n}},s=n=>n==="order"?"Order":"Reservation",a=async()=>{x.value=!0;try{const n=w.value.id;if(!n)throw new Error("Missing agenda ID");await N.update(g.agendaCollection,n,{customerInformationFields:t.customerInformationFields??[],metadataSchema:t.metadataSchema??[]})}catch(n){console.error("Error saving changes:",n)}finally{x.value=!1}};return(async()=>{try{const n=await N.get(g.agendaCollection,w.value.id);n&&(t.customerInformationFields=n.customerInformationFields||[...v],t.metadataSchema=n.metadataSchema||[])}catch(n){console.error("Error loading agenda data:",n)}finally{C.value=!1}})(),(n,o)=>{const u=e.resolveComponent("Label"),c=e.resolveComponent("Button");return e.openBlock(),e.createBlock(G._sfc_main,null,{default:e.withCtx(()=>[o[12]||(o[12]=e.createElementVNode("h1",{class:"text-lg font-medium mb-2"},"Booking Data",-1)),o[13]||(o[13]=e.createElementVNode("p",{class:"text-sm text-muted-foreground mb-8"},"Customer form fields & order metadata",-1)),C.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",ue,[e.createElementVNode("div",null,[e.createVNode(u,{class:"text-base font-medium"},{default:e.withCtx(()=>[...o[2]||(o[2]=[e.createTextVNode(" Customer Information ",-1)])]),_:1}),o[5]||(o[5]=e.createElementVNode("p",{class:"text-sm text-muted-foreground mb-2"}," Fields the customer fills in when booking. ",-1)),e.createElementVNode("div",pe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.customerInformationFields,r=>(e.openBlock(),e.createElementBlock("div",{key:r.id,class:"flex items-center justify-between hover:bg-input/50 px-2 rounded"},[e.createElementVNode("div",null,[e.createElementVNode("p",fe,e.toDisplayString(r.fieldName),1)]),e.createElementVNode("div",null,[e.createVNode(c,{variant:"ghost",size:"icon",onClick:p=>d.value.openDialog(r),class:"active:scale-90 transition-transform duration-150"},{default:e.withCtx(()=>[e.createVNode(e.unref(k.Pencil),{class:"size-4"})]),_:1},8,["onClick"]),e.createVNode(c,{variant:"ghost",size:"icon",onClick:p=>r.visible=!r.visible,class:"active:scale-90 transition-transform duration-150"},{default:e.withCtx(()=>[r.visible?(e.openBlock(),e.createBlock(e.unref(k.Eye),{key:0,class:"size-4"})):(e.openBlock(),e.createBlock(e.unref(k.EyeOff),{key:1,class:"size-4"}))]),_:2},1032,["onClick"]),e.createVNode(c,{variant:"ghost",size:"icon",disabled:r.isNativeField,onClick:p=>t.customerInformationFields=t.customerInformationFields.filter(h=>h.id!==r.id),class:"active:scale-90 transition-transform duration-150"},{default:e.withCtx(()=>[e.createVNode(e.unref(k.Trash2),{class:"size-4"})]),_:1},8,["disabled","onClick"])])]))),128)),e.createElementVNode("div",ve,[e.createVNode(c,{size:"sm",onClick:o[0]||(o[0]=r=>d.value.openDialog())},{default:e.withCtx(()=>[e.createVNode(e.unref(k.PlusCircle),{class:"size-4"}),o[3]||(o[3]=e.createTextVNode(" Add New Field ",-1))]),_:1}),e.unref(B)?(e.openBlock(),e.createBlock(c,{key:0,size:"sm",variant:"outline",onClick:T},{default:e.withCtx(()=>[...o[4]||(o[4]=[e.createTextVNode(" Reset to Default ",-1)])]),_:1})):e.createCommentVNode("",!0)])]),e.createVNode(ae,{ref_key:"customerInfoFieldDialog",ref:d,keysInUse:t.customerInformationFields.map(r=>r.id),onAddField:S,onUpdateField:V,onRemoveField:F},null,8,["keysInUse"])]),o[11]||(o[11]=e.createElementVNode("hr",{class:"my-8"},null,-1)),e.createElementVNode("div",null,[e.createVNode(u,{class:"text-base font-medium"},{default:e.withCtx(()=>[...o[6]||(o[6]=[e.createTextVNode(" Order Metadata ",-1)])]),_:1}),o[10]||(o[10]=e.createElementVNode("p",{class:"text-sm text-muted-foreground mb-2"}," Configure how externally-attached data is displayed on orders. Your external systems (Cloud Functions, webhooks, API) write metadata to orders — this controls how it appears in the dashboard. ",-1)),e.createElementVNode("div",Ve,[e.unref(y).length===0?(e.openBlock(),e.createElementBlock("div",Ne," No metadata fields configured yet. ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(y),r=>(e.openBlock(),e.createElementBlock("div",{key:r.id,class:"flex items-center justify-between hover:bg-input/50 px-2 py-1 rounded"},[e.createElementVNode("div",xe,[e.createElementVNode("div",ge,[e.createElementVNode("p",Ce,e.toDisplayString(r.label),1),e.createElementVNode("p",ke,[e.createElementVNode("code",ye,e.toDisplayString(r.key),1),o[7]||(o[7]=e.createElementVNode("span",{class:"mx-1"},"·",-1)),e.createElementVNode("span",null,e.toDisplayString(D(r.display)),1),o[8]||(o[8]=e.createElementVNode("span",{class:"mx-1"},"·",-1)),e.createElementVNode("span",null,e.toDisplayString(s(r.scope)),1)])])]),e.createElementVNode("div",be,[e.createVNode(c,{variant:"ghost",size:"icon",onClick:p=>b.value.openDialog(r),class:"active:scale-90 transition-transform duration-150"},{default:e.withCtx(()=>[e.createVNode(e.unref(k.Pencil),{class:"size-4"})]),_:1},8,["onClick"]),e.createVNode(c,{variant:"ghost",size:"icon",onClick:p=>_(r.id),class:"active:scale-90 transition-transform duration-150"},{default:e.withCtx(()=>[e.createVNode(e.unref(k.Trash2),{class:"size-4"})]),_:1},8,["onClick"])])]))),128)),e.createVNode(c,{size:"sm",class:"mt-4",onClick:o[1]||(o[1]=r=>b.value.openDialog())},{default:e.withCtx(()=>[e.createVNode(e.unref(k.PlusCircle),{class:"size-4"}),o[9]||(o[9]=e.createTextVNode(" Add Metadata Field ",-1))]),_:1})]),e.createVNode(me,{ref_key:"metadataSchemaDialog",ref:b,onAddField:f,onUpdateField:l,onRemoveField:_},null,512)]),e.createElementVNode("div",_e,[e.createVNode(c,{onClick:a,disabled:x.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(x.value?"Saving...":"Save Changes"),1)]),_:1},8,["disabled"])])]))]),_:1})}}});exports.default=he;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),M=require("./EditLayout.vue_vue_type_script_setup_true_lang-kpjbVSXg.js"),a=require("./DateFormatter-CSAbE3BC.js"),m=require("lucide-vue-next"),j=require("@oneclick.dev/cms-kit"),H={class:"space-y-6 py-4"},O={key:0},q={class:"space-y-2"},J={class:"flex items-center justify-center w-8 h-8 rounded-full bg-muted"},Y={key:0,class:"w-full h-full rounded-full bg-white scale-50"},K={class:"flex items-center justify-center w-8 h-8 rounded-full bg-muted"},G={key:0,class:"w-full h-full rounded-full bg-white scale-50"},Q={key:0,class:"pl-4 pt-2 space-y-1"},W=["onClick"],X={class:"min-w-0 flex-1"},Z={class:"text-sm font-medium truncate"},ee={key:0,class:"w-3 h-3 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},te={key:0,class:"text-xs text-amber-600 mt-2"},oe={class:"space-y-3"},ne={class:"flex items-center justify-center w-10 h-10 rounded-full bg-destructive/10"},le={key:0,class:"w-full h-full rounded-full bg-white scale-50"},ae={class:"flex items-center justify-center w-10 h-10 rounded-full bg-primary/10"},se={key:0,class:"w-full h-full rounded-full bg-white scale-50"},re={key:1},de={key:0,class:"text-center py-6 text-muted-foreground text-sm"},ce={key:1,class:"space-y-2 mb-3"},ie={class:"w-full flex justify-between items-center"},ue={class:"flex items-center gap-2 ml-auto"},me=e.defineComponent({__name:"ExceptionDialog",props:{resources:{}},emits:["add-exception","update-exception","remove-exception"],setup(L,{expose:N,emit:_}){const x=new a.$fb18d541ea1ad717$export$ad991b66133851cf("en-US",{dateStyle:"medium"}),k=L,c=_,i=e.ref(!1),v=e.ref("add"),g=e.ref(!1),s=e.ref({start:a.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2()),end:a.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2())}),o=e.reactive({id:"",startDate:"",endDate:"",isClosed:!1,timeslots:[],resourceIds:null}),p=e.computed({get:()=>o.resourceIds===null,set:n=>{n?o.resourceIds=null:o.resourceIds=[]}}),T=n=>{if(o.resourceIds===null)o.resourceIds=[n];else{const t=o.resourceIds.indexOf(n);t===-1?o.resourceIds.push(n):o.resourceIds.splice(t,1)}},$=e.computed(()=>!(!s.value.start||o.resourceIds!==null&&o.resourceIds.length===0)),S=n=>{v.value=n?"edit":"add",n?(o.id=n.id,o.startDate=n.startDate,o.endDate=n.endDate,o.isClosed=n.isClosed,o.timeslots=JSON.parse(JSON.stringify(n.timeslots)),o.resourceIds=n.resourceIds?[...n.resourceIds]:null,s.value={start:a.$fae977aafc393c5c$export$6b862160d295c8e(n.startDate),end:a.$fae977aafc393c5c$export$6b862160d295c8e(n.endDate)}):(o.id="",o.startDate="",o.endDate="",o.isClosed=!1,o.timeslots=[],o.resourceIds=null,s.value={start:a.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2()),end:a.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2())}),i.value=!0},B=()=>{i.value=!1},h=()=>{o.timeslots.push({id:Date.now(),startTime:"",endTime:""})},I=n=>{o.timeslots=o.timeslots.filter(t=>t.id!==n)},y=()=>{if(!s.value.start)return;const n=s.value.start.toString(),t=s.value.end?.toString()||n,r={id:Date.now().toString(),startDate:n,endDate:t,isClosed:o.isClosed,timeslots:o.isClosed?[]:[...o.timeslots],resourceIds:o.resourceIds};c("add-exception",r),i.value=!1},E=()=>{const n=s.value.start.toString(),t=s.value.end?.toString()||n,r={id:o.id,startDate:n,endDate:t,isClosed:o.isClosed,timeslots:o.isClosed?[]:[...o.timeslots],resourceIds:o.resourceIds};c("update-exception",r),i.value=!1},w=()=>{c("remove-exception",o.id),i.value=!1};return N({openDialog:S}),(n,t)=>{const r=e.resolveComponent("DialogTitle"),C=e.resolveComponent("DialogHeader"),V=e.resolveComponent("Label"),f=e.resolveComponent("Button"),z=e.resolveComponent("PopoverTrigger"),A=e.resolveComponent("RangeCalendar"),F=e.resolveComponent("PopoverContent"),R=e.resolveComponent("Popover"),D=e.resolveComponent("Input"),U=e.resolveComponent("Card"),d=e.resolveComponent("DialogFooter"),u=e.resolveComponent("DialogScrollContent"),P=e.resolveComponent("Dialog");return e.openBlock(),e.createBlock(P,{open:i.value,"onUpdate:open":t[6]||(t[6]=l=>i.value=l)},{default:e.withCtx(()=>[e.createVNode(u,{class:"sm:max-w-2xl"},{default:e.withCtx(()=>[e.createVNode(C,null,{default:e.withCtx(()=>[e.createVNode(r,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(v.value==="add"?"Add Exception":"Edit Exception"),1)]),_:1})]),_:1}),e.createElementVNode("div",H,[e.createElementVNode("div",null,[e.createVNode(V,{class:"text-sm font-normal mb-1.5"},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode("Select Date or Date Range",-1)])]),_:1}),e.createVNode(R,{open:g.value,"onUpdate:open":t[1]||(t[1]=l=>g.value=l)},{default:e.withCtx(()=>[e.createVNode(z,{"as-child":""},{default:e.withCtx(()=>[e.createVNode(f,{variant:"outline",class:"w-full justify-start text-left font-normal"},{default:e.withCtx(()=>[e.createVNode(e.unref(m.Calendar),{class:"mr-2 h-4 w-4"}),s.value.start?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[s.value.end&&s.value.start.toString()!==s.value.end.toString()?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(x).format(s.value.start.toDate(e.unref(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2)())))+" - "+e.toDisplayString(e.unref(x).format(s.value.end.toDate(e.unref(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2)()))),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(e.unref(x).format(s.value.start.toDate(e.unref(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2)()))),1)],64))],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(" Pick a date ")],64))]),_:1})]),_:1}),e.createVNode(F,{class:"w-auto p-0"},{default:e.withCtx(()=>[e.createVNode(A,{modelValue:s.value,"onUpdate:modelValue":t[0]||(t[0]=l=>s.value=l),"initial-focus":"","number-of-months":2,"min-value":e.unref(a.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3)(e.unref(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2)())},null,8,["modelValue","min-value"])]),_:1})]),_:1},8,["open"])]),k.resources&&k.resources.length>0?(e.openBlock(),e.createElementBlock("div",O,[e.createVNode(V,{class:"text-sm font-normal mb-1.5"},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode("Apply To",-1)])]),_:1}),e.createElementVNode("div",q,[e.createElementVNode("div",{class:e.normalizeClass(["flex items-center gap-3 p-3 border rounded-lg cursor-pointer hover:bg-accent transition-colors",p.value?"bg-accent border-primary":""]),onClick:t[2]||(t[2]=l=>p.value=!0)},[e.createElementVNode("div",J,[e.createVNode(e.unref(m.Users),{class:"h-4 w-4 text-muted-foreground"})]),t[9]||(t[9]=e.createElementVNode("div",{class:"flex-1"},[e.createElementVNode("div",{class:"font-medium text-sm"},"All Resources"),e.createElementVNode("div",{class:"text-xs text-muted-foreground"},"Exception applies to all resources")],-1)),e.createElementVNode("div",{class:e.normalizeClass(["w-4 h-4 rounded-full border-2",p.value?"border-primary bg-primary":"border-muted-foreground"])},[p.value?(e.openBlock(),e.createElementBlock("div",Y)):e.createCommentVNode("",!0)],2)],2),e.createElementVNode("div",{class:e.normalizeClass(["flex items-center gap-3 p-3 border rounded-lg cursor-pointer hover:bg-accent transition-colors",p.value?"":"bg-accent border-primary"]),onClick:t[3]||(t[3]=l=>p.value=!1)},[e.createElementVNode("div",K,[e.createVNode(e.unref(m.Users),{class:"h-4 w-4 text-muted-foreground"})]),t[10]||(t[10]=e.createElementVNode("div",{class:"flex-1"},[e.createElementVNode("div",{class:"font-medium text-sm"},"Specific Resources"),e.createElementVNode("div",{class:"text-xs text-muted-foreground"},"Select which resources this exception applies to")],-1)),e.createElementVNode("div",{class:e.normalizeClass(["w-4 h-4 rounded-full border-2",p.value?"border-muted-foreground":"border-primary bg-primary"])},[p.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",G))],2)],2),p.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Q,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.resources,l=>(e.openBlock(),e.createElementBlock("div",{key:l.id,class:e.normalizeClass(["flex items-center gap-2 p-2 rounded-md hover:bg-muted cursor-pointer transition-colors",{"bg-muted":o.resourceIds?.includes(l.id),"opacity-50":o.resourceIds&&o.resourceIds.length>0&&!o.resourceIds.includes(l.id)}]),onClick:b=>T(l.id)},[e.createElementVNode("div",{class:"size-6 rounded-full flex items-center justify-center text-white text-xs font-medium flex-shrink-0",style:e.normalizeStyle({backgroundColor:l.color||"#6b7280"})},e.toDisplayString(l.avatarLabel||l.name.charAt(0).toUpperCase()),5),e.createElementVNode("div",X,[e.createElementVNode("div",Z,e.toDisplayString(l.name),1)]),e.createElementVNode("div",{class:e.normalizeClass(["size-4 rounded border-2 flex items-center justify-center flex-shrink-0",o.resourceIds?.includes(l.id)?"border-primary bg-primary":"border-muted-foreground"])},[o.resourceIds?.includes(l.id)?(e.openBlock(),e.createElementBlock("svg",ee,[...t[11]||(t[11]=[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"3",d:"M5 13l4 4L19 7"},null,-1)])])):e.createCommentVNode("",!0)],2)],10,W))),128)),o.resourceIds?.length===0?(e.openBlock(),e.createElementBlock("p",te," ⚠️ Please select at least one resource ")):e.createCommentVNode("",!0)]))])])):e.createCommentVNode("",!0),e.createElementVNode("div",null,[e.createVNode(V,{class:"text-sm font-normal mb-1.5"},{default:e.withCtx(()=>[...t[12]||(t[12]=[e.createTextVNode("Exception Type",-1)])]),_:1}),e.createElementVNode("div",oe,[e.createElementVNode("div",{class:e.normalizeClass(["flex items-center gap-3 p-3 border rounded-lg cursor-pointer hover:bg-accent transition-colors",o.isClosed?"bg-accent border-primary":""]),onClick:t[4]||(t[4]=l=>o.isClosed=!0)},[e.createElementVNode("div",ne,[e.createVNode(e.unref(m.BanIcon),{class:"h-5 w-5 text-destructive"})]),t[13]||(t[13]=e.createElementVNode("div",{class:"flex-1"},[e.createElementVNode("div",{class:"font-medium"},"Closed"),e.createElementVNode("div",{class:"text-sm text-muted-foreground"},"No appointments available during this period")],-1)),e.createElementVNode("div",{class:e.normalizeClass(["w-4 h-4 rounded-full border-2",o.isClosed?"border-primary bg-primary":"border-muted-foreground"])},[o.isClosed?(e.openBlock(),e.createElementBlock("div",le)):e.createCommentVNode("",!0)],2)],2),e.createElementVNode("div",{class:e.normalizeClass(["flex items-center gap-3 p-3 border rounded-lg cursor-pointer hover:bg-accent transition-colors",o.isClosed?"":"bg-accent border-primary"]),onClick:t[5]||(t[5]=l=>o.isClosed=!1)},[e.createElementVNode("div",ae,[e.createVNode(e.unref(m.Calendar),{class:"h-5 w-5 text-primary"})]),t[14]||(t[14]=e.createElementVNode("div",{class:"flex-1"},[e.createElementVNode("div",{class:"font-medium"},"Custom Hours"),e.createElementVNode("div",{class:"text-sm text-muted-foreground"},"Set specific time slots for this period")],-1)),e.createElementVNode("div",{class:e.normalizeClass(["w-4 h-4 rounded-full border-2",o.isClosed?"border-muted-foreground":"border-primary bg-primary"])},[o.isClosed?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",se))],2)],2)])]),o.isClosed?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",re,[e.createVNode(V,{class:"text-sm font-normal mb-1.5"},{default:e.withCtx(()=>[...t[15]||(t[15]=[e.createTextVNode("Time Slots",-1)])]),_:1}),e.createVNode(U,{class:"p-4"},{default:e.withCtx(()=>[o.timeslots.length===0?(e.openBlock(),e.createElementBlock("div",de,' No time slots added. Click "Add Time Slot" to create one. ')):(e.openBlock(),e.createElementBlock("div",ce,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.timeslots,l=>(e.openBlock(),e.createElementBlock("div",{key:l.id,class:"flex items-center gap-2"},[e.createVNode(D,{class:"w-32",modelValue:l.startTime,"onUpdate:modelValue":b=>l.startTime=b,type:"time"},null,8,["modelValue","onUpdate:modelValue"]),t[16]||(t[16]=e.createElementVNode("span",{class:"text-muted-foreground"},"to",-1)),e.createVNode(D,{class:"w-32",modelValue:l.endTime,"onUpdate:modelValue":b=>l.endTime=b,type:"time"},null,8,["modelValue","onUpdate:modelValue"]),e.createVNode(f,{variant:"ghost",size:"icon",onClick:b=>I(l.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(m.Trash2),{class:"size-4"})]),_:1},8,["onClick"])]))),128))])),e.createVNode(f,{onClick:h,variant:"outline",size:"sm",class:"w-full"},{default:e.withCtx(()=>[e.createVNode(e.unref(m.Plus),{class:"size-4 mr-1"}),t[17]||(t[17]=e.createTextVNode(" Add Time Slot ",-1))]),_:1})]),_:1})]))]),e.createVNode(d,{class:"gap-2"},{default:e.withCtx(()=>[e.createElementVNode("div",ie,[v.value==="edit"?(e.openBlock(),e.createBlock(f,{key:0,variant:"destructive",onClick:w},{default:e.withCtx(()=>[...t[18]||(t[18]=[e.createTextVNode(" Remove Exception ",-1)])]),_:1})):e.createCommentVNode("",!0),e.createElementVNode("div",ue,[e.createVNode(f,{variant:"outline",onClick:B},{default:e.withCtx(()=>[...t[19]||(t[19]=[e.createTextVNode(" Cancel ",-1)])]),_:1}),v.value==="add"?(e.openBlock(),e.createBlock(f,{key:0,onClick:y,disabled:!$.value},{default:e.withCtx(()=>[...t[20]||(t[20]=[e.createTextVNode(" Add Exception ",-1)])]),_:1},8,["disabled"])):(e.openBlock(),e.createBlock(f,{key:1,onClick:E,disabled:!$.value},{default:e.withCtx(()=>[...t[21]||(t[21]=[e.createTextVNode(" Update Exception ",-1)])]),_:1},8,["disabled"]))])])]),_:1})]),_:1})]),_:1},8,["open"])}}}),pe={class:"max-w-4xl space-y-6"},fe={key:0,class:"flex"},ve={key:1},xe={class:"space-y-3"},Ce={class:"flex items-start justify-between"},ke={class:"flex-1"},ge={class:"flex items-center gap-2 mb-1"},Ve={class:"font-medium"},Ne={key:0,class:"flex items-center gap-1.5 ml-6 mb-2"},ye=["title"],Ee={class:"text-sm text-muted-foreground ml-6"},be={key:0,class:"text-amber-600"},_e={key:1,class:"space-y-1"},$e={class:"flex flex-wrap gap-2"},Be={class:"flex gap-1"},he={key:4,class:"flex justify-end pt-4 border-t"},we=e.defineComponent({__name:"exceptions",setup(L){const N=new a.$fb18d541ea1ad717$export$ad991b66133851cf("en-US",{dateStyle:"medium"}),{params:_}=j.useModuleRoute(),{config:x}=j.useModule(),k=j.useFirebaseIntegration(x.project),c=e.ref([]),i=e.ref([]),v=e.ref(!1),g=e.ref(!0),s=e.ref(),o=n=>!n.resourceIds||n.resourceIds.length===0?null:i.value.filter(t=>n.resourceIds?.includes(t.id)),p=async()=>{try{g.value=!0;const n=await k.get(x.agendaCollection,_.value.id);c.value=n.exceptions||[],i.value=(n.resources||[]).filter(t=>t.isActive)}catch(n){console.error("Error loading exceptions:",n)}finally{g.value=!1}},T=(n,t)=>{const r=a.$fae977aafc393c5c$export$6b862160d295c8e(n),C=a.$fae977aafc393c5c$export$6b862160d295c8e(t);return n===t?N.format(r.toDate(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2())):`${N.format(r.toDate(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2()))} - ${N.format(C.toDate(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2()))}`},$=n=>{c.value.push(n),y()},S=n=>{const t=c.value.findIndex(r=>r.id===n.id);t!==-1&&(c.value[t]=n),y()},B=n=>{c.value=c.value.filter(t=>t.id!==n),y()},h=()=>{s.value?.openDialog()},I=n=>{s.value?.openDialog(n)},y=async()=>{v.value=!0,await k.update(x.agendaCollection,_.value.id,{exceptions:c.value}),v.value=!1},E=e.computed(()=>[...c.value].sort((n,t)=>n.startDate.localeCompare(t.startDate))),w=n=>{const t=a.$fae977aafc393c5c$export$6b862160d295c8e(n),r=a.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(a.$14e0f24ef4ac5c92$export$aa8b41735afcabd2());return t.compare(r)<0};return p(),(n,t)=>{const r=e.resolveComponent("Button"),C=e.resolveComponent("Badge"),V=e.resolveComponent("Card"),f=e.resolveComponent("Spinner"),z=e.resolveComponent("EmptyMedia"),A=e.resolveComponent("EmptyTitle"),F=e.resolveComponent("EmptyDescription"),R=e.resolveComponent("EmptyHeader"),D=e.resolveComponent("EmptyContent"),U=e.resolveComponent("Empty");return e.openBlock(),e.createBlock(M._sfc_main,null,{default:e.withCtx(()=>[t[10]||(t[10]=e.createElementVNode("h1",{class:"text-lg font-medium mb-2"},"Exception Management",-1)),t[11]||(t[11]=e.createElementVNode("p",{class:"mb-6 text-muted-foreground text-sm"}," Create exceptions to override your regular schedule. You can close specific dates or set custom hours for special occasions. ",-1)),e.createElementVNode("div",pe,[E.value.length>0?(e.openBlock(),e.createElementBlock("div",fe,[e.createVNode(r,{onClick:h},{default:e.withCtx(()=>[e.createVNode(e.unref(m.Plus),{class:"size-4 mr-1"}),t[0]||(t[0]=e.createTextVNode(" Add Exception ",-1))]),_:1})])):e.createCommentVNode("",!0),E.value.length>0?(e.openBlock(),e.createElementBlock("div",ve,[t[5]||(t[5]=e.createElementVNode("h2",{class:"text-base font-medium mb-3"},"Active Exceptions",-1)),e.createElementVNode("div",xe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.value,d=>(e.openBlock(),e.createBlock(V,{key:d.id,class:e.normalizeClass(["p-4",w(d.endDate)?"opacity-60":""])},{default:e.withCtx(()=>[e.createElementVNode("div",Ce,[e.createElementVNode("div",ke,[e.createElementVNode("div",ge,[d.isClosed?(e.openBlock(),e.createBlock(e.unref(m.BanIcon),{key:0,class:"h-4 w-4 text-destructive"})):(e.openBlock(),e.createBlock(e.unref(m.Calendar),{key:1,class:"h-4 w-4 text-primary"})),e.createElementVNode("h3",Ve,e.toDisplayString(T(d.startDate,d.endDate)),1),w(d.endDate)?(e.openBlock(),e.createBlock(C,{key:2,variant:"secondary",class:"text-xs"},{default:e.withCtx(()=>[...t[1]||(t[1]=[e.createTextVNode(" Past ",-1)])]),_:1})):e.createCommentVNode("",!0)]),i.value.length>0?(e.openBlock(),e.createElementBlock("div",Ne,[o(d)?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(o(d),u=>(e.openBlock(),e.createElementBlock("div",{key:u.id,class:"size-5 rounded-full flex items-center justify-center text-white text-[10px] font-medium",style:e.normalizeStyle({backgroundColor:u.color||"#6b7280"}),title:u.name},e.toDisplayString(u.avatarLabel||u.name.charAt(0).toUpperCase()),13,ye))),128)):(e.openBlock(),e.createBlock(C,{key:1,variant:"outline",class:"text-xs"},{default:e.withCtx(()=>[...t[2]||(t[2]=[e.createTextVNode(" All Resources ",-1)])]),_:1}))])):e.createCommentVNode("",!0),e.createElementVNode("div",Ee,[d.isClosed?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" Closed - No appointments available ")],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[d.timeslots.length===0?(e.openBlock(),e.createElementBlock("div",be," ⚠️ No time slots defined ")):(e.openBlock(),e.createElementBlock("div",_e,[t[3]||(t[3]=e.createElementVNode("div",{class:"font-medium text-foreground"},"Custom Hours:",-1)),e.createElementVNode("div",$e,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.timeslots,(u,P)=>(e.openBlock(),e.createBlock(C,{key:P,variant:"outline",class:"font-mono text-xs"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.startTime)+" - "+e.toDisplayString(u.endTime),1)]),_:2},1024))),128))])]))],64))])]),e.createElementVNode("div",Be,[e.createVNode(r,{variant:"ghost",onClick:u=>I(d)},{default:e.withCtx(()=>[...t[4]||(t[4]=[e.createTextVNode(" Edit ",-1)])]),_:1},8,["onClick"]),e.createVNode(r,{variant:"ghost",size:"icon",onClick:u=>B(d.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(m.Trash2),{class:"size-4 text-destructive"})]),_:1},8,["onClick"])])])]),_:2},1032,["class"]))),128))])])):g.value?(e.openBlock(),e.createBlock(f,{key:2,class:"my-8 size-8"})):(e.openBlock(),e.createBlock(U,{key:3,class:"border border-dashed"},{default:e.withCtx(()=>[e.createVNode(R,null,{default:e.withCtx(()=>[e.createVNode(z,{variant:"icon"},{default:e.withCtx(()=>[e.createVNode(e.unref(m.CalendarPlus))]),_:1}),e.createVNode(A,null,{default:e.withCtx(()=>[...t[6]||(t[6]=[e.createTextVNode("No Exceptions Created",-1)])]),_:1}),e.createVNode(F,null,{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode(' Your agenda runs smoothly without any exceptions. Click "Add Exception" to create one. ',-1)])]),_:1})]),_:1}),e.createVNode(D,null,{default:e.withCtx(()=>[e.createVNode(r,{variant:"outline",size:"sm",onClick:h},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode(" Add Exception ",-1)])]),_:1})]),_:1})]),_:1})),v.value?(e.openBlock(),e.createElementBlock("div",he,[...t[9]||(t[9]=[e.createElementVNode("span",null,"Saving...",-1)])])):e.createCommentVNode("",!0)]),e.createVNode(me,{ref_key:"exceptionDialogRef",ref:s,resources:i.value,onAddException:$,onUpdateException:S,onRemoveException:B},null,8,["resources"])]),_:1})}}});exports.default=we;
|