@happychef/reservation-sidebar 2.8.40 → 2.8.41

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/index.js CHANGED
@@ -44,8 +44,8 @@ Checking Time: ${v} -> Determined Meal: ${B}`),!B){N0(` Time ${v} has no associ
44
44
  `);var a4=({formData:b,onNewReservation:c})=>{let q=j0(Ap,"reservationSummary");return o0__default.default.createElement("div",{className:"reservation-summary"},o0__default.default.createElement("ul",{className:"reservation-details"},o0__default.default.createElement("li",null,o0__default.default.createElement("strong",null,q.title)),o0__default.default.createElement("li",null,o0__default.default.createElement("strong",null,q.guests,":")," ",b.guests),o0__default.default.createElement("li",null,o0__default.default.createElement("strong",null,q.date,":")," ",b.date),o0__default.default.createElement("li",null,o0__default.default.createElement("strong",null,q.time,":")," ",b.time),o0__default.default.createElement("li",null,o0__default.default.createElement("strong",null,q.firstName,":")," ",b.firstName),o0__default.default.createElement("li",null,o0__default.default.createElement("strong",null,q.lastName,":")," ",b.lastName),o0__default.default.createElement("li",null,o0__default.default.createElement("strong",null,q.email,":")," ",b.email),o0__default.default.createElement("li",null,o0__default.default.createElement("strong",null,q.phone,":")," ",b.phone),b.menu&&o0__default.default.createElement("li",null,o0__default.default.createElement("strong",null,q.menu,":")," ",b.menu),b.personeel&&o0__default.default.createElement("li",null,o0__default.default.createElement("strong",null,q.staff,":")," ",b.personeel),b.giftcard&&o0__default.default.createElement("li",null,o0__default.default.createElement("strong",null,q.giftcard,":")," ",b.giftcard),b.extraInfo&&o0__default.default.createElement("li",null,o0__default.default.createElement("strong",null,q.extraInfo,":")," ",b.extraInfo),b.zitplaats&&o0__default.default.createElement("li",null,o0__default.default.createElement("strong",null,q.seatPlace,":")," ",b.zitplaats)),o0__default.default.createElement("button",{className:"button-style-3",onClick:c},q.newReservationButton))},w2=a4;var op={nl:{zitplaatsSelection:{labels:{seating:"Zitplaats"},options:{noPreference:"Geen voorkeur"}},giftcardSelection:{labels:{giftcard:"Cadeaubon"},options:{noGiftcard:"Geen Cadeaubon"}}},en:{zitplaatsSelection:{labels:{seating:"Seating"},options:{noPreference:"No preference"}},giftcardSelection:{labels:{giftcard:"Gift Card"},options:{noGiftcard:"No Gift Card"}}},fr:{zitplaatsSelection:{labels:{seating:"Place Assise"},options:{noPreference:"Pas de pr\xE9f\xE9rence"}},giftcardSelection:{labels:{giftcard:"Cadeau"},options:{noGiftcard:"Pas de carte"}}}};R0(`.new-reservation-page .giftcard-selection{margin-bottom:20px}.new-reservation-page .giftcard-options{display:flex;gap:20px;margin:10px 0}.new-reservation-page .giftcard-option{display:flex;align-items:center;gap:8px;cursor:pointer}.new-reservation-page .form-label{font-weight:500;margin-bottom:8px;display:block}.new-reservation-page .giftcard-option input[type=radio]{margin:0;cursor:pointer}.new-reservation-page .giftcard-option label{cursor:pointer}
45
45
  `);var r4=({restaurantData:b,formData:c,handleChange:q,resetFormDataFields:e})=>{let W=j0(op,"giftcardSelection"),[n,a]=o0.useState([]);if(o0.useEffect(()=>{if(!b)return;let R=["breakfast","lunch","dinner"],v=new Set;R.forEach(u=>{let B=b[`openinghours-${u}`]?.schemeSettings||{};Object.values(B).forEach(h=>{h?.giftcardsEnabled&&Array.isArray(h.giftcards)&&h.giftcards.forEach(f=>{let g=typeof f=="string"?f.trim():String(f||"").trim();g&&v.add(g);});});}),a([...v]);},[b]),!n.length)return null;let s=n.map(R=>({value:R,label:R})),r=R=>{q({target:{name:"giftcard",value:R.target.value}}),e(["date","time"]);};return o0__default.default.createElement("div",{className:"giftcard-selection"},o0__default.default.createElement(_0,{label:W.labels?.giftcard||"Giftcard",name:"giftcard",type:"select",options:s,value:c.giftcard||"",onChange:r,selectPlaceholder:W.options?.noGiftcard||"Geen giftcard"}))},x2=r4;var P2=P0(c1());var ep={nl:{reservationSidebar:{saveButton:"Opslaan",saveButtonLoading:"Opslaan..."}},en:{reservationSidebar:{saveButton:"Save",saveButtonLoading:"Saving..."}},fr:{reservationSidebar:{saveButton:"Enregistrer",saveButtonLoading:"Enregistrement..."}}};R0(`.reservation-sidebar-component{position:fixed;top:0;right:-400px;width:400px;height:100%;background-color:#fff;box-shadow:-2px 0 5px #0000001a;z-index:var(--z-index-sidebar-reservation);display:flex;flex-direction:column;overflow-y:auto;transition:right .3s ease-in-out}.admin-title{text-align:center;margin-bottom:30px}.reservation-sidebar-component.open{right:0}.reservation-sidebar-content{padding:60px 20px 20px}.close-sidebar-button{position:absolute;top:10px;left:10px;background-color:transparent;border:none;cursor:pointer}.close-sidebar-button svg{color:#000}.sidebar-section-one,.sidebar-section-two{margin-bottom:20px}.reservation-footer{margin-top:auto}.store-reservation-button{width:100%;padding:12px;background-color:var(--color-blue);color:#fff;border:none;border-radius:5px;cursor:pointer;font-size:1.1rem}.open-sidebar-button{position:fixed;bottom:20px;right:20px;background-color:var(--color-blue);color:#fff;border:none;border-radius:50%;width:50px;height:50px;cursor:pointer;z-index:var(--z-index-modal)!important;transition:all .3s ease}.open-sidebar-button:hover{background-color:var(--color-blue-hover-accent)!important}.open-sidebar-button svg{position:relative;top:2px}@media screen and (max-width:480px){.reservation-sidebar-component{width:100%}}.sidebar-section-personeel{margin-bottom:10px}.sidebar-tabs{display:flex;border-bottom:1px solid #ddd;margin-bottom:20px}.sidebar-tab-button{flex:1;padding:10px;border:none;background:transparent;border-bottom:none;font-weight:400;cursor:pointer;color:#666}.sidebar-tab-button.active{border-bottom:2px solid var(--color-blue);font-weight:700;color:var(--color-blue)}
46
46
  `);var D2=P0(c1()),Wp=P0(Y1());R0(`.walk-in-reservation-component{display:flex;flex-direction:column;gap:20px;padding:10px 5px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}.walk-in-reservation-component .walk-in-header{display:flex;justify-content:space-between;align-items:center;background-color:#f8f9fa;border-radius:12px;padding:15px 20px;border:1px solid #e9ecef}.walk-in-reservation-component .header-item{display:flex;flex-direction:column;align-items:center;flex:1}.walk-in-reservation-component .header-label{font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:#6c757d;margin-bottom:4px}.walk-in-reservation-component .header-value{font-size:20px;font-weight:700;color:#212529}.walk-in-reservation-component .header-divider{width:1px;height:40px;background-color:#dee2e6;margin:0 20px}.walk-in-reservation-component .walk-in-controls{display:flex;flex-direction:column;gap:15px}.walk-in-reservation-component .control-group{display:flex;flex-direction:column;gap:8px}.walk-in-reservation-component .control-label{font-weight:600;font-size:14px;color:#343a40}.walk-in-reservation-component .modern-input{width:100%;padding:12px 15px;border:1px solid #ced4da;border-radius:8px;font-size:15px;transition:border-color .2s,box-shadow .2s;outline:none}.walk-in-reservation-component .modern-input:focus{border-color:var(--color-blue);box-shadow:0 0 0 3px rgba(var(--color-blue-rgb),.1)}.walk-in-reservation-component .walk-in-tables{margin-top:10px}.walk-in-reservation-component .availability-warning{background-color:#fff3cd;color:#856404;border:1px solid #ffeeba;padding:6px 10px;border-radius:8px;margin-top:8px;font-size:12px;text-align:center;display:flex;align-items:center;justify-content:center;gap:8px}.walk-in-reservation-component .table-label{margin-bottom:10px;display:block}.walk-in-reservation-component .loading-message{text-align:center;color:#666;padding:20px}
47
- `);var R4=({formData:b,setFormData:c,handleChange:q,restaurantData:e,menuData:W,timeblocks:n})=>{let[a,s]=o0.useState([]),[r,R]=o0.useState(false),[v,u]=o0.useState([]),B=o1();o0.useEffect(()=>{let l=(0, D2.default)().tz("Europe/Amsterdam"),N=l.format("YYYY-MM-DD"),C=l.minutes(),E=Math.ceil(C/5)*5,y=l.minutes(E).seconds(0).format("HH:mm");c(S=>({...S,reservationMode:"check_in",date:N,time:y,firstName:"Walk-in",lastName:"",menu:"",guests:S.guests||2}));},[]),o0.useEffect(()=>{(async()=>{if(!b.date)return;let N=localStorage.getItem("username"),C=window.baseDomain||"",E=b.date,y=(0, D2.default)(b.date).add(1,"day").format("YYYY-MM-DD"),S=`${C}api/slots/${N}/${E}/${y}`;try{let X=await B.get(S,{noCache:!0});u(X||[]);}catch(X){console.error("Error fetching reservations:",X),u([]);}})();},[b.date,B]),o0.useEffect(()=>{if(!b.date||!b.time||!b.guests||!e||!Object.keys(e).length){s([]);return}R(true);let l=()=>{try{let C=Array.isArray(v)?v:[],E=new Set;e?.manualFloors&&Array.isArray(e.manualFloors)&&e.manualFloors.forEach(_=>{(_.tables||[]).forEach(F=>{F.tableNumber!=null&&E.add(F.tableNumber);});});let y=[...e?.floors||[],...e?.manualFloors||[]],S={...e,floors:y},j=F0("getAvailableTablesForTime",Wp.getAvailableTablesForTime,S,b.date,b.time,b.guests,C,b.duration).map(_=>({..._,isManual:E.has(_.tableNumber)}));s(j);}catch(C){console.error("Error calculating available tables:",C),s([]);}finally{R(false);}},N=setTimeout(()=>{(window.requestIdleCallback||(E=>setTimeout(E,1)))(l);},300);return ()=>{clearTimeout(N),R(false);}},[b.date,b.time,b.guests,e,v]);let h=l=>{let N=parseInt(l.target.value,10);c(C=>({...C,guests:N,selectedTableNumbers:[],selectedTableIds:[]}));},f=b.date?(0, D2.default)(b.date).format("DD MMM YYYY"):"-",g=!r&&b.date&&b.time&&b.guests&&e&&Object.keys(e).length>0&&a.length===0;return o0__default.default.createElement("div",{className:"walk-in-reservation-component"},o0__default.default.createElement("div",{className:"walk-in-header"},o0__default.default.createElement("div",{className:"header-item"},o0__default.default.createElement("span",{className:"header-label"},"Datum"),o0__default.default.createElement("span",{className:"header-value"},f)),o0__default.default.createElement("div",{className:"header-divider"}),o0__default.default.createElement("div",{className:"header-item"},o0__default.default.createElement("span",{className:"header-label"},"Tijd"),o0__default.default.createElement("span",{className:"header-value"},b.time||"--:--"),g&&o0__default.default.createElement("div",{className:"availability-warning"},"\u26A0\uFE0F Geen beschikbaarheid voor deze tijd"))),o0__default.default.createElement("div",{className:"walk-in-controls"},o0__default.default.createElement(d2,{value:b.guests||2,onChange:h,setGuests:l=>c(N=>({...N,guests:l,selectedTableNumbers:[],selectedTableIds:[]}))}),e?.account_type==="bowling"&&o0__default.default.createElement("div",{style:{marginBottom:"20px"}},o0__default.default.createElement(S2,{duration:b.duration,handleChange:q,min:e["general-settings"]?.minDuration||30,max:e["general-settings"]?.maxDuration||120,interval:e["general-settings"]?.durationInterval||30})),o0__default.default.createElement("div",{className:"control-group"},o0__default.default.createElement("label",{className:"control-label"},"Naam"),o0__default.default.createElement("div",{style:{display:"flex",gap:"10px"}},o0__default.default.createElement("input",{type:"text",name:"firstName",className:"modern-input",placeholder:"Voornaam",value:b.firstName||"",onChange:q}),o0__default.default.createElement("input",{type:"text",name:"lastName",className:"modern-input",placeholder:"Achternaam (Optioneel)",value:b.lastName||"",onChange:q})))),o0__default.default.createElement("div",{className:"walk-in-tables"},o0__default.default.createElement("label",{className:"control-label table-label"},"Kies een Tafel"),r?o0__default.default.createElement("div",{className:"loading-message"},"Tafels laden..."):o0__default.default.createElement(y2,{availableTables:a,isFetching:r,formData:b,setFormData:c,handleChange:q})))},np=R4;var dp=o0.memo(({isOpen:b,onClose:c,formData:q,errors:e,handleChange:W,handleFinalSubmit:n,setFormData:a,isSubmitting:s,reservationSubmitted:r,onNewReservation:R,apiBaseDomain:v,isAdmin:u=false})=>{o0.useEffect(()=>{v&&!window.baseDomain&&(window.baseDomain=v);},[v]);let B=o1(),[h,f]=o0.useState([]),[g,l]=o0.useState(false),[N,C]=o0.useState(null),[E,y]=o0.useState([]),[S,X]=o0.useState({}),[j,_]=o0.useState([]),F=o0.useMemo(()=>j0(ep,"reservationSidebar"),[]),A0=o0.useCallback(x=>{a(I=>{let K={...I};return x.forEach(c0=>{K[c0]="";}),K});},[a]);o0.useEffect(()=>{if(!b)return;l(true),(async()=>{try{let I=window.baseDomain||"",[K,c0]=await Promise.all([B.get(`${I}api/auth-restaurant/`,{noCache:!0}),B.get(`${I}api/personeel`,{noCache:!0})]);f(K.timeblocks||[]),window.timeblocks=K.timeblocks||[],window.generalSettings=K["general-settings"]||{},y(K.menu||[]),X(K||{});let O0=(0,P2.default)().tz("Europe/Amsterdam").startOf("day"),a0=(c0||[]).filter(P=>{let X0=(0,P2.default)(P.startDate,"YYYY-MM-DD").tz("Europe/Amsterdam").startOf("day"),H=(0,P2.default)(P.endDate,"YYYY-MM-DD").tz("Europe/Amsterdam").endOf("day");return O0.isBetween(X0,H,null,"[]")});_(a0);}catch(I){C(I),console.error("Error fetching data:",I);}finally{l(false);}})();},[b,B]);let M0=o0.useCallback(()=>{a({guest:2,date:"",time:"",firstName:"",lastName:"",email:"",phone:"",extraInfo:"",menu:"",personeel:"",giftcard:"",zitplaats:"",selectedTableNumbers:[],selectedTableIds:[],reservationMode:"met_limieten",duration:""}),R();},[R,a]);o0.useMemo(()=>!!S?.["general-settings"]?.seatSelectionEnabled,[S]);let [e0,J]=o0.useState(false),m=o0.useCallback(()=>{if(q.reservationMode==="check_in"){let x={},I=false;if(q.firstName||(x.firstName="Walk-in",I=true),q.lastName||(x.lastName="Guest",I=true),I){a(K=>({...K,...x})),J(true);return}}n({preventDefault:()=>{}});},[q,n,a]);o0.useEffect(()=>{e0&&(J(false),n({preventDefault:()=>{}}));},[e0,n]);let U=q.reservationMode==="check_in";return o0__default.default.createElement("div",{className:`reservation-sidebar-component ${b?"open":""}`},o0__default.default.createElement("div",{className:"reservation-sidebar-content"},o0__default.default.createElement("div",{className:"sidebar-tabs"},o0__default.default.createElement("button",{type:"button",className:`sidebar-tab-button ${U?"":"active"}`,onClick:()=>{U&&a(x=>({...x,reservationMode:"met_limieten",firstName:"",lastName:"",menu:""}));}},"Nieuwe Reservatie"),o0__default.default.createElement("button",{type:"button",className:`sidebar-tab-button ${U?"active":""}`,onClick:()=>{a(x=>({...x,reservationMode:"check_in",selectedTableNumbers:[],selectedTableIds:[]}));}},"Walk-in")),o0__default.default.createElement("button",{className:"close-sidebar-button",onClick:c,"aria-label":"Sluiten"},o0__default.default.createElement(fa.FaTimes,{size:20,color:"#000"})),r?o0__default.default.createElement(w2,{formData:q,onNewReservation:M0}):o0__default.default.createElement(o0__default.default.Fragment,null,U?o0__default.default.createElement(np,{formData:q,setFormData:a,handleChange:W,restaurantData:S,menuData:E,timeblocks:h}):o0__default.default.createElement(o0__default.default.Fragment,null,S&&Object.keys(S).length>0&&o0__default.default.createElement("div",{className:"sidebar-section-giftcard"},o0__default.default.createElement(x2,{restaurantData:S,formData:q,handleChange:W,resetFormDataFields:A0})),j.length>0&&o0__default.default.createElement("div",{className:"sidebar-section-personeel"},o0__default.default.createElement(_0,{label:"",name:"personeel",type:"select",options:j.map(x=>{let I=`${x.voornaam} ${x.achternaam}`;return {value:x.id,label:I}}),value:q.personeel,onChange:W,error:e.personeel,selectPlaceholder:"Toewijzen aan persoon"})),o0__default.default.createElement("div",{className:"sidebar-section-one"},o0__default.default.createElement(yM,{formData:q,errors:e,handleChange:W,setFormData:a,timeblocks:h,loadingTimeblocks:g,timeblocksError:N,restaurantData:S,isAdmin:u})),o0__default.default.createElement("div",{className:"sidebar-section-two"},o0__default.default.createElement(k2,{formData:q,errors:e,handleChange:W,setFormData:a,isSubmitting:s,menuData:E}))),o0__default.default.createElement("div",{className:"reservation-footer"},o0__default.default.createElement("button",{type:"button",className:"store-reservation-button",onClick:m,disabled:s},s?F.saveButtonLoading||"Opslaan...":F.saveButton||"Opslaan")))))});dp.displayName="ReservationSidebar";var l4=dp;var ip={nl:{zitplaatsSelection:{labels:{seating:"Zitplaats"},options:{noPreference:"Geen voorkeur"}},giftcardSelection:{labels:{giftcard:"Cadeaubon"},options:{noGiftcard:"Geen Cadeaubon"}}},en:{zitplaatsSelection:{labels:{seating:"Seating"},options:{noPreference:"No preference"}},giftcardSelection:{labels:{giftcard:"Gift Card"},options:{noGiftcard:"No Gift Card"}}},fr:{zitplaatsSelection:{labels:{seating:"Place Assise"},options:{noPreference:"Pas de pr\xE9f\xE9rence"}},giftcardSelection:{labels:{giftcard:"Cadeau"},options:{noGiftcard:"Pas de carte"}}}};R0(`.new-reservation-page .zitplaats-selection{margin-bottom:15px}.new-reservation-page .zitplaats-selection select{width:100%;padding:10px;border-radius:4px;border:1px solid #ccc;background-color:#fff}
48
- `);var N4=({restaurantData:b,formData:c,handleChange:q,resetFormDataFields:e})=>{let W=j0(ip,"zitplaatsSelection"),n=Array.isArray(b?.["general-settings"]?.seatAreas)?b["general-settings"].seatAreas:["Terras","Restaurant"],a=s=>{let{value:r}=s.target;q({target:{name:"zitplaats",value:r}}),e(["date","time","selectedTableNumbers","selectedTableIds"]);};return n.length===0?null:o0__default.default.createElement("div",{className:"zitplaats-selection"},o0__default.default.createElement("label",{htmlFor:"zitplaats",className:"form-label"},W.labels?.seating||"Zitplaats"),o0__default.default.createElement("div",{className:"input-container select-field"},o0__default.default.createElement("select",{id:"zitplaats",name:"zitplaats",value:c.zitplaats||"",onChange:a},o0__default.default.createElement("option",{value:""},W.options?.noPreference||"Geen voorkeur"),n.map(s=>o0__default.default.createElement("option",{key:s,value:s,className:"notranslate",translate:"no"},s)))))},tp=N4;R0(`.account-manage-title{text-align:center;margin-bottom:30px}.account-manage-container{max-width:800px;margin:0 auto}.account-manage-form{display:flex;flex-direction:column;gap:15px}.input-container{position:relative}.input-icon{position:absolute;top:50%;left:10px;transform:translateY(-50%);color:#6c757d;pointer-events:none}.input-container input,.input-container textarea{width:100%;padding:10px 10px 10px 35px;border:1px solid #ccc;border-radius:5px;font-size:1rem;transition:border-color .3s ease}.form-error{color:#dc3545;font-size:.9rem;margin-top:5px;display:flex;align-items:center;gap:5px}.account-manage__button{padding:12px;background-color:var(--color-blue);color:#fff;border:none;border-radius:5px;cursor:pointer;font-size:1.1rem;display:flex;align-items:center;justify-content:center;gap:10px;transition:background-color .3s ease}
47
+ `);var R4=({formData:b,setFormData:c,handleChange:q,restaurantData:e,menuData:W,timeblocks:n})=>{let[a,s]=o0.useState([]),[r,R]=o0.useState(false),[v,u]=o0.useState([]),B=o1();o0.useEffect(()=>{let l=(0, D2.default)().tz("Europe/Amsterdam"),N=l.format("YYYY-MM-DD"),C=l.minutes(),E=Math.ceil(C/5)*5,y=l.minutes(E).seconds(0).format("HH:mm");c(S=>({...S,reservationMode:"check_in",date:N,time:y,firstName:"Walk-in",lastName:"",menu:"",guests:S.guests||2}));},[]),o0.useEffect(()=>{(async()=>{if(!b.date)return;let N=localStorage.getItem("username"),C=window.baseDomain||"",E=b.date,y=(0, D2.default)(b.date).add(1,"day").format("YYYY-MM-DD"),S=`${C}api/slots/${N}/${E}/${y}`;try{let X=await B.get(S,{noCache:!0});u(X||[]);}catch(X){console.error("Error fetching reservations:",X),u([]);}})();},[b.date,B]),o0.useEffect(()=>{if(!b.date||!b.time||!b.guests||!e||!Object.keys(e).length){s([]);return}R(true);let l=()=>{try{let C=Array.isArray(v)?v:[],E=new Set;e?.manualFloors&&Array.isArray(e.manualFloors)&&e.manualFloors.forEach(_=>{(_.tables||[]).forEach(F=>{F.tableNumber!=null&&E.add(F.tableNumber);});});let y=[...e?.floors||[],...e?.manualFloors||[]],S={...e,floors:y},j=F0("getAvailableTablesForTime",Wp.getAvailableTablesForTime,S,b.date,b.time,b.guests,C,b.duration).map(_=>({..._,isManual:E.has(_.tableNumber)}));s(j);}catch(C){console.error("Error calculating available tables:",C),s([]);}finally{R(false);}},N=setTimeout(()=>{(window.requestIdleCallback||(E=>setTimeout(E,1)))(l);},300);return ()=>{clearTimeout(N),R(false);}},[b.date,b.time,b.guests,e,v]);let h=l=>{let N=parseInt(l.target.value,10);c(C=>({...C,guests:N,selectedTableNumbers:[],selectedTableIds:[]}));},f=b.date?(0, D2.default)(b.date).format("DD MMM YYYY"):"-",g=!r&&b.date&&b.time&&b.guests&&e&&Object.keys(e).length>0&&a.length===0;return o0__default.default.createElement("div",{className:"walk-in-reservation-component"},o0__default.default.createElement("div",{className:"walk-in-header"},o0__default.default.createElement("div",{className:"header-item"},o0__default.default.createElement("span",{className:"header-label"},"Datum"),o0__default.default.createElement("span",{className:"header-value"},f)),o0__default.default.createElement("div",{className:"header-divider"}),o0__default.default.createElement("div",{className:"header-item"},o0__default.default.createElement("span",{className:"header-label"},"Tijd"),o0__default.default.createElement("span",{className:"header-value"},b.time||"--:--"),g&&o0__default.default.createElement("div",{className:"availability-warning"},"\u26A0\uFE0F Geen beschikbaarheid voor deze tijd"))),o0__default.default.createElement("div",{className:"walk-in-controls"},o0__default.default.createElement(d2,{value:b.guests||2,onChange:h,setGuests:l=>c(N=>({...N,guests:l,selectedTableNumbers:[],selectedTableIds:[]}))}),e?.account_type==="bowling"&&o0__default.default.createElement("div",{style:{marginBottom:"20px"}},o0__default.default.createElement(S2,{duration:b.duration,handleChange:q,min:e["general-settings"]?.minDuration||30,max:e["general-settings"]?.maxDuration||120,interval:e["general-settings"]?.durationInterval||30})),o0__default.default.createElement("div",{className:"control-group"},o0__default.default.createElement("label",{className:"control-label"},"Naam"),o0__default.default.createElement("div",{style:{display:"flex",gap:"10px"}},o0__default.default.createElement("input",{type:"text",name:"firstName",className:"modern-input",placeholder:"Voornaam",value:b.firstName||"",onChange:q}),o0__default.default.createElement("input",{type:"text",name:"lastName",className:"modern-input",placeholder:"Achternaam (Optioneel)",value:b.lastName||"",onChange:q})))),o0__default.default.createElement("div",{className:"walk-in-tables"},o0__default.default.createElement("label",{className:"control-label table-label"},"Kies een Tafel"),r?o0__default.default.createElement("div",{className:"loading-message"},"Tafels laden..."):o0__default.default.createElement(y2,{availableTables:a,isFetching:r,formData:b,setFormData:c,handleChange:q})))},np=R4;var dp=o0.memo(({isOpen:b,onClose:c,formData:q,errors:e,handleChange:W,handleFinalSubmit:n,setFormData:a,isSubmitting:s,reservationSubmitted:r,onNewReservation:R,apiBaseDomain:v,isAdmin:u=false})=>{o0.useEffect(()=>{v&&!window.baseDomain&&(window.baseDomain=v);},[v]);let B=o1(),[h,f]=o0.useState([]),[g,l]=o0.useState(false),[N,C]=o0.useState(null),[E,y]=o0.useState([]),[S,X]=o0.useState({}),[j,_]=o0.useState([]),F=o0.useMemo(()=>j0(ep,"reservationSidebar"),[]),A0=o0.useCallback(x=>{a(I=>{let K={...I};return x.forEach(c0=>{K[c0]="";}),K});},[a]);o0.useEffect(()=>{if(!b)return;l(true),(async()=>{try{let I=window.baseDomain||"",[K,c0]=await Promise.all([B.get(`${I}api/auth-restaurant/`,{noCache:!0}),B.get(`${I}api/personeel`,{noCache:!0})]);f(K.timeblocks||[]),window.timeblocks=K.timeblocks||[],window.generalSettings=K["general-settings"]||{},y(K.menu||[]),X(K||{});let O0=(0,P2.default)().tz("Europe/Amsterdam").startOf("day"),a0=(c0||[]).filter(P=>{let X0=(0,P2.default)(P.startDate,"YYYY-MM-DD").tz("Europe/Amsterdam").startOf("day"),H=(0,P2.default)(P.endDate,"YYYY-MM-DD").tz("Europe/Amsterdam").endOf("day");return O0.isBetween(X0,H,null,"[]")});_(a0);}catch(I){C(I),console.error("Error fetching data:",I);}finally{l(false);}})();},[b,B]);let M0=o0.useCallback(()=>{a({guest:2,date:"",time:"",firstName:"",lastName:"",email:"",phone:"",extraInfo:"",menu:"",personeel:"",giftcard:"",zitplaats:"",selectedTableNumbers:[],selectedTableIds:[],selectedTableNumbers:[],selectedTableIds:[],reservationMode:"met_limieten",duration:""}),R();},[R,a]);o0.useMemo(()=>!!S?.["general-settings"]?.seatSelectionEnabled,[S]);let [e0,J]=o0.useState(false),m=o0.useCallback(()=>{if(q.reservationMode==="check_in"){let x={},I=false;if(q.firstName||(x.firstName="Walk-in",I=true),q.lastName||(x.lastName="Guest",I=true),I){a(K=>({...K,...x})),J(true);return}}n({preventDefault:()=>{}});},[q,n,a]);o0.useEffect(()=>{e0&&(J(false),n({preventDefault:()=>{}}));},[e0,n]);let U=q.reservationMode==="check_in";return o0__default.default.createElement("div",{className:`reservation-sidebar-component ${b?"open":""}`},o0__default.default.createElement("div",{className:"reservation-sidebar-content"},o0__default.default.createElement("div",{className:"sidebar-tabs"},o0__default.default.createElement("button",{type:"button",className:`sidebar-tab-button ${U?"":"active"}`,onClick:()=>{U&&a(x=>({...x,reservationMode:"met_limieten",firstName:"",lastName:"",menu:""}));}},"Nieuwe Reservatie"),o0__default.default.createElement("button",{type:"button",className:`sidebar-tab-button ${U?"active":""}`,onClick:()=>{a(x=>({...x,reservationMode:"check_in",selectedTableNumbers:[],selectedTableIds:[]}));}},"Walk-in")),o0__default.default.createElement("button",{className:"close-sidebar-button",onClick:c,"aria-label":"Sluiten"},o0__default.default.createElement(fa.FaTimes,{size:20,color:"#000"})),r?o0__default.default.createElement(w2,{formData:q,onNewReservation:M0}):o0__default.default.createElement(o0__default.default.Fragment,null,U?o0__default.default.createElement(np,{formData:q,setFormData:a,handleChange:W,restaurantData:S,menuData:E,timeblocks:h}):o0__default.default.createElement(o0__default.default.Fragment,null,S&&Object.keys(S).length>0&&o0__default.default.createElement("div",{className:"sidebar-section-giftcard"},o0__default.default.createElement(x2,{restaurantData:S,formData:q,handleChange:W,resetFormDataFields:A0})),j.length>0&&o0__default.default.createElement("div",{className:"sidebar-section-personeel"},o0__default.default.createElement(_0,{label:"",name:"personeel",type:"select",options:j.map(x=>{let I=`${x.voornaam} ${x.achternaam}`;return {value:x.id,label:I}}),value:q.personeel,onChange:W,error:e.personeel,selectPlaceholder:"Toewijzen aan persoon"})),o0__default.default.createElement("div",{className:"sidebar-section-one"},o0__default.default.createElement(yM,{formData:q,errors:e,handleChange:W,setFormData:a,timeblocks:h,loadingTimeblocks:g,timeblocksError:N,restaurantData:S,isAdmin:u})),o0__default.default.createElement("div",{className:"sidebar-section-two"},o0__default.default.createElement(k2,{formData:q,errors:e,handleChange:W,setFormData:a,isSubmitting:s,menuData:E}))),o0__default.default.createElement("div",{className:"reservation-footer"},o0__default.default.createElement("button",{type:"button",className:"store-reservation-button",onClick:m,disabled:s},s?F.saveButtonLoading||"Opslaan...":F.saveButton||"Opslaan")))))});dp.displayName="ReservationSidebar";var l4=dp;var ip={nl:{zitplaatsSelection:{labels:{seating:"Zitplaats"},options:{noPreference:"Geen voorkeur"}},giftcardSelection:{labels:{giftcard:"Cadeaubon"},options:{noGiftcard:"Geen Cadeaubon"}}},en:{zitplaatsSelection:{labels:{seating:"Seating"},options:{noPreference:"No preference"}},giftcardSelection:{labels:{giftcard:"Gift Card"},options:{noGiftcard:"No Gift Card"}}},fr:{zitplaatsSelection:{labels:{seating:"Place Assise"},options:{noPreference:"Pas de pr\xE9f\xE9rence"}},giftcardSelection:{labels:{giftcard:"Cadeau"},options:{noGiftcard:"Pas de carte"}}}};R0(`.new-reservation-page .zitplaats-selection{margin-bottom:15px}.new-reservation-page .zitplaats-selection select{width:100%;padding:10px;border-radius:4px;border:1px solid #ccc;background-color:#fff}
48
+ `);var N4=({restaurantData:b,formData:c,handleChange:q,resetFormDataFields:e})=>{let W=j0(ip,"zitplaatsSelection"),n=Array.isArray(b?.["general-settings"]?.seatAreas)?b["general-settings"].seatAreas:["Terras","Restaurant"],a=s=>{let{value:r}=s.target;q({target:{name:"zitplaats",value:r}}),e(["date","time","selectedTableNumbers","selectedTableIds"]);};return n.length===0?null:o0__default.default.createElement("div",{className:"zitplaats-selection"},o0__default.default.createElement("label",{htmlFor:"zitplaats",className:"form-label"},W.labels?.seating||"Zitplaats"),o0__default.default.createElement("div",{className:"input-container select-field"},o0__default.default.createElement("select",{id:"zitplaats",name:"zitplaats",value:c.zitplaats||"",onChange:a},o0__default.default.createElement("option",{value:""},W.options?.noPreference||"Geen voorkeur"),n.map(s=>o0__default.default.createElement("option",{key:s,value:s,className:"notranslate",translate:"no"},s)))))},tp=N4;R0(`.account-manage-title{text-align:center;margin-bottom:30px}.account-manage-container{max-width:800px;margin:0 auto}.account-manage-form{display:flex;flex-direction:column;gap:15px}.input-container{position:relative}.input-icon{position:absolute;top:50%;left:10px;transform:translateY(-50%);color:#6c757d;pointer-events:none}.input-container:has(textarea) .input-icon{top:12px;transform:none}.input-container input,.input-container textarea{width:100%;padding:10px 10px 10px 35px;border:1px solid #ccc;border-radius:5px;font-size:1rem;transition:border-color .3s ease}.form-error{color:#dc3545;font-size:.9rem;margin-top:5px;display:flex;align-items:center;gap:5px}.account-manage__button{padding:12px;background-color:var(--color-blue);color:#fff;border:none;border-radius:5px;cursor:pointer;font-size:1.1rem;display:flex;align-items:center;justify-content:center;gap:10px;transition:background-color .3s ease}
49
49
  `);/*! Bundled license information:
50
50
 
51
51
  moment/moment.js:
package/dist/index.mjs CHANGED
@@ -44,8 +44,8 @@ Checking Time: ${v} -> Determined Meal: ${B}`),!B){N0(` Time ${v} has no associ
44
44
  `);var a4=({formData:b,onNewReservation:c})=>{let q=j0(Ap,"reservationSummary");return o0.createElement("div",{className:"reservation-summary"},o0.createElement("ul",{className:"reservation-details"},o0.createElement("li",null,o0.createElement("strong",null,q.title)),o0.createElement("li",null,o0.createElement("strong",null,q.guests,":")," ",b.guests),o0.createElement("li",null,o0.createElement("strong",null,q.date,":")," ",b.date),o0.createElement("li",null,o0.createElement("strong",null,q.time,":")," ",b.time),o0.createElement("li",null,o0.createElement("strong",null,q.firstName,":")," ",b.firstName),o0.createElement("li",null,o0.createElement("strong",null,q.lastName,":")," ",b.lastName),o0.createElement("li",null,o0.createElement("strong",null,q.email,":")," ",b.email),o0.createElement("li",null,o0.createElement("strong",null,q.phone,":")," ",b.phone),b.menu&&o0.createElement("li",null,o0.createElement("strong",null,q.menu,":")," ",b.menu),b.personeel&&o0.createElement("li",null,o0.createElement("strong",null,q.staff,":")," ",b.personeel),b.giftcard&&o0.createElement("li",null,o0.createElement("strong",null,q.giftcard,":")," ",b.giftcard),b.extraInfo&&o0.createElement("li",null,o0.createElement("strong",null,q.extraInfo,":")," ",b.extraInfo),b.zitplaats&&o0.createElement("li",null,o0.createElement("strong",null,q.seatPlace,":")," ",b.zitplaats)),o0.createElement("button",{className:"button-style-3",onClick:c},q.newReservationButton))},w2=a4;var op={nl:{zitplaatsSelection:{labels:{seating:"Zitplaats"},options:{noPreference:"Geen voorkeur"}},giftcardSelection:{labels:{giftcard:"Cadeaubon"},options:{noGiftcard:"Geen Cadeaubon"}}},en:{zitplaatsSelection:{labels:{seating:"Seating"},options:{noPreference:"No preference"}},giftcardSelection:{labels:{giftcard:"Gift Card"},options:{noGiftcard:"No Gift Card"}}},fr:{zitplaatsSelection:{labels:{seating:"Place Assise"},options:{noPreference:"Pas de pr\xE9f\xE9rence"}},giftcardSelection:{labels:{giftcard:"Cadeau"},options:{noGiftcard:"Pas de carte"}}}};R0(`.new-reservation-page .giftcard-selection{margin-bottom:20px}.new-reservation-page .giftcard-options{display:flex;gap:20px;margin:10px 0}.new-reservation-page .giftcard-option{display:flex;align-items:center;gap:8px;cursor:pointer}.new-reservation-page .form-label{font-weight:500;margin-bottom:8px;display:block}.new-reservation-page .giftcard-option input[type=radio]{margin:0;cursor:pointer}.new-reservation-page .giftcard-option label{cursor:pointer}
45
45
  `);var r4=({restaurantData:b,formData:c,handleChange:q,resetFormDataFields:e})=>{let W=j0(op,"giftcardSelection"),[n,a]=useState([]);if(useEffect(()=>{if(!b)return;let R=["breakfast","lunch","dinner"],v=new Set;R.forEach(u=>{let B=b[`openinghours-${u}`]?.schemeSettings||{};Object.values(B).forEach(h=>{h?.giftcardsEnabled&&Array.isArray(h.giftcards)&&h.giftcards.forEach(f=>{let g=typeof f=="string"?f.trim():String(f||"").trim();g&&v.add(g);});});}),a([...v]);},[b]),!n.length)return null;let s=n.map(R=>({value:R,label:R})),r=R=>{q({target:{name:"giftcard",value:R.target.value}}),e(["date","time"]);};return o0.createElement("div",{className:"giftcard-selection"},o0.createElement(_0,{label:W.labels?.giftcard||"Giftcard",name:"giftcard",type:"select",options:s,value:c.giftcard||"",onChange:r,selectPlaceholder:W.options?.noGiftcard||"Geen giftcard"}))},x2=r4;var P2=P0(c1());var ep={nl:{reservationSidebar:{saveButton:"Opslaan",saveButtonLoading:"Opslaan..."}},en:{reservationSidebar:{saveButton:"Save",saveButtonLoading:"Saving..."}},fr:{reservationSidebar:{saveButton:"Enregistrer",saveButtonLoading:"Enregistrement..."}}};R0(`.reservation-sidebar-component{position:fixed;top:0;right:-400px;width:400px;height:100%;background-color:#fff;box-shadow:-2px 0 5px #0000001a;z-index:var(--z-index-sidebar-reservation);display:flex;flex-direction:column;overflow-y:auto;transition:right .3s ease-in-out}.admin-title{text-align:center;margin-bottom:30px}.reservation-sidebar-component.open{right:0}.reservation-sidebar-content{padding:60px 20px 20px}.close-sidebar-button{position:absolute;top:10px;left:10px;background-color:transparent;border:none;cursor:pointer}.close-sidebar-button svg{color:#000}.sidebar-section-one,.sidebar-section-two{margin-bottom:20px}.reservation-footer{margin-top:auto}.store-reservation-button{width:100%;padding:12px;background-color:var(--color-blue);color:#fff;border:none;border-radius:5px;cursor:pointer;font-size:1.1rem}.open-sidebar-button{position:fixed;bottom:20px;right:20px;background-color:var(--color-blue);color:#fff;border:none;border-radius:50%;width:50px;height:50px;cursor:pointer;z-index:var(--z-index-modal)!important;transition:all .3s ease}.open-sidebar-button:hover{background-color:var(--color-blue-hover-accent)!important}.open-sidebar-button svg{position:relative;top:2px}@media screen and (max-width:480px){.reservation-sidebar-component{width:100%}}.sidebar-section-personeel{margin-bottom:10px}.sidebar-tabs{display:flex;border-bottom:1px solid #ddd;margin-bottom:20px}.sidebar-tab-button{flex:1;padding:10px;border:none;background:transparent;border-bottom:none;font-weight:400;cursor:pointer;color:#666}.sidebar-tab-button.active{border-bottom:2px solid var(--color-blue);font-weight:700;color:var(--color-blue)}
46
46
  `);var D2=P0(c1()),Wp=P0(Y1());R0(`.walk-in-reservation-component{display:flex;flex-direction:column;gap:20px;padding:10px 5px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}.walk-in-reservation-component .walk-in-header{display:flex;justify-content:space-between;align-items:center;background-color:#f8f9fa;border-radius:12px;padding:15px 20px;border:1px solid #e9ecef}.walk-in-reservation-component .header-item{display:flex;flex-direction:column;align-items:center;flex:1}.walk-in-reservation-component .header-label{font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:#6c757d;margin-bottom:4px}.walk-in-reservation-component .header-value{font-size:20px;font-weight:700;color:#212529}.walk-in-reservation-component .header-divider{width:1px;height:40px;background-color:#dee2e6;margin:0 20px}.walk-in-reservation-component .walk-in-controls{display:flex;flex-direction:column;gap:15px}.walk-in-reservation-component .control-group{display:flex;flex-direction:column;gap:8px}.walk-in-reservation-component .control-label{font-weight:600;font-size:14px;color:#343a40}.walk-in-reservation-component .modern-input{width:100%;padding:12px 15px;border:1px solid #ced4da;border-radius:8px;font-size:15px;transition:border-color .2s,box-shadow .2s;outline:none}.walk-in-reservation-component .modern-input:focus{border-color:var(--color-blue);box-shadow:0 0 0 3px rgba(var(--color-blue-rgb),.1)}.walk-in-reservation-component .walk-in-tables{margin-top:10px}.walk-in-reservation-component .availability-warning{background-color:#fff3cd;color:#856404;border:1px solid #ffeeba;padding:6px 10px;border-radius:8px;margin-top:8px;font-size:12px;text-align:center;display:flex;align-items:center;justify-content:center;gap:8px}.walk-in-reservation-component .table-label{margin-bottom:10px;display:block}.walk-in-reservation-component .loading-message{text-align:center;color:#666;padding:20px}
47
- `);var R4=({formData:b,setFormData:c,handleChange:q,restaurantData:e,menuData:W,timeblocks:n})=>{let[a,s]=useState([]),[r,R]=useState(false),[v,u]=useState([]),B=o1();useEffect(()=>{let l=(0, D2.default)().tz("Europe/Amsterdam"),N=l.format("YYYY-MM-DD"),C=l.minutes(),E=Math.ceil(C/5)*5,y=l.minutes(E).seconds(0).format("HH:mm");c(S=>({...S,reservationMode:"check_in",date:N,time:y,firstName:"Walk-in",lastName:"",menu:"",guests:S.guests||2}));},[]),useEffect(()=>{(async()=>{if(!b.date)return;let N=localStorage.getItem("username"),C=window.baseDomain||"",E=b.date,y=(0, D2.default)(b.date).add(1,"day").format("YYYY-MM-DD"),S=`${C}api/slots/${N}/${E}/${y}`;try{let X=await B.get(S,{noCache:!0});u(X||[]);}catch(X){console.error("Error fetching reservations:",X),u([]);}})();},[b.date,B]),useEffect(()=>{if(!b.date||!b.time||!b.guests||!e||!Object.keys(e).length){s([]);return}R(true);let l=()=>{try{let C=Array.isArray(v)?v:[],E=new Set;e?.manualFloors&&Array.isArray(e.manualFloors)&&e.manualFloors.forEach(_=>{(_.tables||[]).forEach(F=>{F.tableNumber!=null&&E.add(F.tableNumber);});});let y=[...e?.floors||[],...e?.manualFloors||[]],S={...e,floors:y},j=F0("getAvailableTablesForTime",Wp.getAvailableTablesForTime,S,b.date,b.time,b.guests,C,b.duration).map(_=>({..._,isManual:E.has(_.tableNumber)}));s(j);}catch(C){console.error("Error calculating available tables:",C),s([]);}finally{R(false);}},N=setTimeout(()=>{(window.requestIdleCallback||(E=>setTimeout(E,1)))(l);},300);return ()=>{clearTimeout(N),R(false);}},[b.date,b.time,b.guests,e,v]);let h=l=>{let N=parseInt(l.target.value,10);c(C=>({...C,guests:N,selectedTableNumbers:[],selectedTableIds:[]}));},f=b.date?(0, D2.default)(b.date).format("DD MMM YYYY"):"-",g=!r&&b.date&&b.time&&b.guests&&e&&Object.keys(e).length>0&&a.length===0;return o0.createElement("div",{className:"walk-in-reservation-component"},o0.createElement("div",{className:"walk-in-header"},o0.createElement("div",{className:"header-item"},o0.createElement("span",{className:"header-label"},"Datum"),o0.createElement("span",{className:"header-value"},f)),o0.createElement("div",{className:"header-divider"}),o0.createElement("div",{className:"header-item"},o0.createElement("span",{className:"header-label"},"Tijd"),o0.createElement("span",{className:"header-value"},b.time||"--:--"),g&&o0.createElement("div",{className:"availability-warning"},"\u26A0\uFE0F Geen beschikbaarheid voor deze tijd"))),o0.createElement("div",{className:"walk-in-controls"},o0.createElement(d2,{value:b.guests||2,onChange:h,setGuests:l=>c(N=>({...N,guests:l,selectedTableNumbers:[],selectedTableIds:[]}))}),e?.account_type==="bowling"&&o0.createElement("div",{style:{marginBottom:"20px"}},o0.createElement(S2,{duration:b.duration,handleChange:q,min:e["general-settings"]?.minDuration||30,max:e["general-settings"]?.maxDuration||120,interval:e["general-settings"]?.durationInterval||30})),o0.createElement("div",{className:"control-group"},o0.createElement("label",{className:"control-label"},"Naam"),o0.createElement("div",{style:{display:"flex",gap:"10px"}},o0.createElement("input",{type:"text",name:"firstName",className:"modern-input",placeholder:"Voornaam",value:b.firstName||"",onChange:q}),o0.createElement("input",{type:"text",name:"lastName",className:"modern-input",placeholder:"Achternaam (Optioneel)",value:b.lastName||"",onChange:q})))),o0.createElement("div",{className:"walk-in-tables"},o0.createElement("label",{className:"control-label table-label"},"Kies een Tafel"),r?o0.createElement("div",{className:"loading-message"},"Tafels laden..."):o0.createElement(y2,{availableTables:a,isFetching:r,formData:b,setFormData:c,handleChange:q})))},np=R4;var dp=memo(({isOpen:b,onClose:c,formData:q,errors:e,handleChange:W,handleFinalSubmit:n,setFormData:a,isSubmitting:s,reservationSubmitted:r,onNewReservation:R,apiBaseDomain:v,isAdmin:u=false})=>{useEffect(()=>{v&&!window.baseDomain&&(window.baseDomain=v);},[v]);let B=o1(),[h,f]=useState([]),[g,l]=useState(false),[N,C]=useState(null),[E,y]=useState([]),[S,X]=useState({}),[j,_]=useState([]),F=useMemo(()=>j0(ep,"reservationSidebar"),[]),A0=useCallback(x=>{a(I=>{let K={...I};return x.forEach(c0=>{K[c0]="";}),K});},[a]);useEffect(()=>{if(!b)return;l(true),(async()=>{try{let I=window.baseDomain||"",[K,c0]=await Promise.all([B.get(`${I}api/auth-restaurant/`,{noCache:!0}),B.get(`${I}api/personeel`,{noCache:!0})]);f(K.timeblocks||[]),window.timeblocks=K.timeblocks||[],window.generalSettings=K["general-settings"]||{},y(K.menu||[]),X(K||{});let O0=(0,P2.default)().tz("Europe/Amsterdam").startOf("day"),a0=(c0||[]).filter(P=>{let X0=(0,P2.default)(P.startDate,"YYYY-MM-DD").tz("Europe/Amsterdam").startOf("day"),H=(0,P2.default)(P.endDate,"YYYY-MM-DD").tz("Europe/Amsterdam").endOf("day");return O0.isBetween(X0,H,null,"[]")});_(a0);}catch(I){C(I),console.error("Error fetching data:",I);}finally{l(false);}})();},[b,B]);let M0=useCallback(()=>{a({guest:2,date:"",time:"",firstName:"",lastName:"",email:"",phone:"",extraInfo:"",menu:"",personeel:"",giftcard:"",zitplaats:"",selectedTableNumbers:[],selectedTableIds:[],reservationMode:"met_limieten",duration:""}),R();},[R,a]);useMemo(()=>!!S?.["general-settings"]?.seatSelectionEnabled,[S]);let [e0,J]=useState(false),m=useCallback(()=>{if(q.reservationMode==="check_in"){let x={},I=false;if(q.firstName||(x.firstName="Walk-in",I=true),q.lastName||(x.lastName="Guest",I=true),I){a(K=>({...K,...x})),J(true);return}}n({preventDefault:()=>{}});},[q,n,a]);useEffect(()=>{e0&&(J(false),n({preventDefault:()=>{}}));},[e0,n]);let U=q.reservationMode==="check_in";return o0.createElement("div",{className:`reservation-sidebar-component ${b?"open":""}`},o0.createElement("div",{className:"reservation-sidebar-content"},o0.createElement("div",{className:"sidebar-tabs"},o0.createElement("button",{type:"button",className:`sidebar-tab-button ${U?"":"active"}`,onClick:()=>{U&&a(x=>({...x,reservationMode:"met_limieten",firstName:"",lastName:"",menu:""}));}},"Nieuwe Reservatie"),o0.createElement("button",{type:"button",className:`sidebar-tab-button ${U?"active":""}`,onClick:()=>{a(x=>({...x,reservationMode:"check_in",selectedTableNumbers:[],selectedTableIds:[]}));}},"Walk-in")),o0.createElement("button",{className:"close-sidebar-button",onClick:c,"aria-label":"Sluiten"},o0.createElement(FaTimes,{size:20,color:"#000"})),r?o0.createElement(w2,{formData:q,onNewReservation:M0}):o0.createElement(o0.Fragment,null,U?o0.createElement(np,{formData:q,setFormData:a,handleChange:W,restaurantData:S,menuData:E,timeblocks:h}):o0.createElement(o0.Fragment,null,S&&Object.keys(S).length>0&&o0.createElement("div",{className:"sidebar-section-giftcard"},o0.createElement(x2,{restaurantData:S,formData:q,handleChange:W,resetFormDataFields:A0})),j.length>0&&o0.createElement("div",{className:"sidebar-section-personeel"},o0.createElement(_0,{label:"",name:"personeel",type:"select",options:j.map(x=>{let I=`${x.voornaam} ${x.achternaam}`;return {value:x.id,label:I}}),value:q.personeel,onChange:W,error:e.personeel,selectPlaceholder:"Toewijzen aan persoon"})),o0.createElement("div",{className:"sidebar-section-one"},o0.createElement(yM,{formData:q,errors:e,handleChange:W,setFormData:a,timeblocks:h,loadingTimeblocks:g,timeblocksError:N,restaurantData:S,isAdmin:u})),o0.createElement("div",{className:"sidebar-section-two"},o0.createElement(k2,{formData:q,errors:e,handleChange:W,setFormData:a,isSubmitting:s,menuData:E}))),o0.createElement("div",{className:"reservation-footer"},o0.createElement("button",{type:"button",className:"store-reservation-button",onClick:m,disabled:s},s?F.saveButtonLoading||"Opslaan...":F.saveButton||"Opslaan")))))});dp.displayName="ReservationSidebar";var l4=dp;var ip={nl:{zitplaatsSelection:{labels:{seating:"Zitplaats"},options:{noPreference:"Geen voorkeur"}},giftcardSelection:{labels:{giftcard:"Cadeaubon"},options:{noGiftcard:"Geen Cadeaubon"}}},en:{zitplaatsSelection:{labels:{seating:"Seating"},options:{noPreference:"No preference"}},giftcardSelection:{labels:{giftcard:"Gift Card"},options:{noGiftcard:"No Gift Card"}}},fr:{zitplaatsSelection:{labels:{seating:"Place Assise"},options:{noPreference:"Pas de pr\xE9f\xE9rence"}},giftcardSelection:{labels:{giftcard:"Cadeau"},options:{noGiftcard:"Pas de carte"}}}};R0(`.new-reservation-page .zitplaats-selection{margin-bottom:15px}.new-reservation-page .zitplaats-selection select{width:100%;padding:10px;border-radius:4px;border:1px solid #ccc;background-color:#fff}
48
- `);var N4=({restaurantData:b,formData:c,handleChange:q,resetFormDataFields:e})=>{let W=j0(ip,"zitplaatsSelection"),n=Array.isArray(b?.["general-settings"]?.seatAreas)?b["general-settings"].seatAreas:["Terras","Restaurant"],a=s=>{let{value:r}=s.target;q({target:{name:"zitplaats",value:r}}),e(["date","time","selectedTableNumbers","selectedTableIds"]);};return n.length===0?null:o0.createElement("div",{className:"zitplaats-selection"},o0.createElement("label",{htmlFor:"zitplaats",className:"form-label"},W.labels?.seating||"Zitplaats"),o0.createElement("div",{className:"input-container select-field"},o0.createElement("select",{id:"zitplaats",name:"zitplaats",value:c.zitplaats||"",onChange:a},o0.createElement("option",{value:""},W.options?.noPreference||"Geen voorkeur"),n.map(s=>o0.createElement("option",{key:s,value:s,className:"notranslate",translate:"no"},s)))))},tp=N4;R0(`.account-manage-title{text-align:center;margin-bottom:30px}.account-manage-container{max-width:800px;margin:0 auto}.account-manage-form{display:flex;flex-direction:column;gap:15px}.input-container{position:relative}.input-icon{position:absolute;top:50%;left:10px;transform:translateY(-50%);color:#6c757d;pointer-events:none}.input-container input,.input-container textarea{width:100%;padding:10px 10px 10px 35px;border:1px solid #ccc;border-radius:5px;font-size:1rem;transition:border-color .3s ease}.form-error{color:#dc3545;font-size:.9rem;margin-top:5px;display:flex;align-items:center;gap:5px}.account-manage__button{padding:12px;background-color:var(--color-blue);color:#fff;border:none;border-radius:5px;cursor:pointer;font-size:1.1rem;display:flex;align-items:center;justify-content:center;gap:10px;transition:background-color .3s ease}
47
+ `);var R4=({formData:b,setFormData:c,handleChange:q,restaurantData:e,menuData:W,timeblocks:n})=>{let[a,s]=useState([]),[r,R]=useState(false),[v,u]=useState([]),B=o1();useEffect(()=>{let l=(0, D2.default)().tz("Europe/Amsterdam"),N=l.format("YYYY-MM-DD"),C=l.minutes(),E=Math.ceil(C/5)*5,y=l.minutes(E).seconds(0).format("HH:mm");c(S=>({...S,reservationMode:"check_in",date:N,time:y,firstName:"Walk-in",lastName:"",menu:"",guests:S.guests||2}));},[]),useEffect(()=>{(async()=>{if(!b.date)return;let N=localStorage.getItem("username"),C=window.baseDomain||"",E=b.date,y=(0, D2.default)(b.date).add(1,"day").format("YYYY-MM-DD"),S=`${C}api/slots/${N}/${E}/${y}`;try{let X=await B.get(S,{noCache:!0});u(X||[]);}catch(X){console.error("Error fetching reservations:",X),u([]);}})();},[b.date,B]),useEffect(()=>{if(!b.date||!b.time||!b.guests||!e||!Object.keys(e).length){s([]);return}R(true);let l=()=>{try{let C=Array.isArray(v)?v:[],E=new Set;e?.manualFloors&&Array.isArray(e.manualFloors)&&e.manualFloors.forEach(_=>{(_.tables||[]).forEach(F=>{F.tableNumber!=null&&E.add(F.tableNumber);});});let y=[...e?.floors||[],...e?.manualFloors||[]],S={...e,floors:y},j=F0("getAvailableTablesForTime",Wp.getAvailableTablesForTime,S,b.date,b.time,b.guests,C,b.duration).map(_=>({..._,isManual:E.has(_.tableNumber)}));s(j);}catch(C){console.error("Error calculating available tables:",C),s([]);}finally{R(false);}},N=setTimeout(()=>{(window.requestIdleCallback||(E=>setTimeout(E,1)))(l);},300);return ()=>{clearTimeout(N),R(false);}},[b.date,b.time,b.guests,e,v]);let h=l=>{let N=parseInt(l.target.value,10);c(C=>({...C,guests:N,selectedTableNumbers:[],selectedTableIds:[]}));},f=b.date?(0, D2.default)(b.date).format("DD MMM YYYY"):"-",g=!r&&b.date&&b.time&&b.guests&&e&&Object.keys(e).length>0&&a.length===0;return o0.createElement("div",{className:"walk-in-reservation-component"},o0.createElement("div",{className:"walk-in-header"},o0.createElement("div",{className:"header-item"},o0.createElement("span",{className:"header-label"},"Datum"),o0.createElement("span",{className:"header-value"},f)),o0.createElement("div",{className:"header-divider"}),o0.createElement("div",{className:"header-item"},o0.createElement("span",{className:"header-label"},"Tijd"),o0.createElement("span",{className:"header-value"},b.time||"--:--"),g&&o0.createElement("div",{className:"availability-warning"},"\u26A0\uFE0F Geen beschikbaarheid voor deze tijd"))),o0.createElement("div",{className:"walk-in-controls"},o0.createElement(d2,{value:b.guests||2,onChange:h,setGuests:l=>c(N=>({...N,guests:l,selectedTableNumbers:[],selectedTableIds:[]}))}),e?.account_type==="bowling"&&o0.createElement("div",{style:{marginBottom:"20px"}},o0.createElement(S2,{duration:b.duration,handleChange:q,min:e["general-settings"]?.minDuration||30,max:e["general-settings"]?.maxDuration||120,interval:e["general-settings"]?.durationInterval||30})),o0.createElement("div",{className:"control-group"},o0.createElement("label",{className:"control-label"},"Naam"),o0.createElement("div",{style:{display:"flex",gap:"10px"}},o0.createElement("input",{type:"text",name:"firstName",className:"modern-input",placeholder:"Voornaam",value:b.firstName||"",onChange:q}),o0.createElement("input",{type:"text",name:"lastName",className:"modern-input",placeholder:"Achternaam (Optioneel)",value:b.lastName||"",onChange:q})))),o0.createElement("div",{className:"walk-in-tables"},o0.createElement("label",{className:"control-label table-label"},"Kies een Tafel"),r?o0.createElement("div",{className:"loading-message"},"Tafels laden..."):o0.createElement(y2,{availableTables:a,isFetching:r,formData:b,setFormData:c,handleChange:q})))},np=R4;var dp=memo(({isOpen:b,onClose:c,formData:q,errors:e,handleChange:W,handleFinalSubmit:n,setFormData:a,isSubmitting:s,reservationSubmitted:r,onNewReservation:R,apiBaseDomain:v,isAdmin:u=false})=>{useEffect(()=>{v&&!window.baseDomain&&(window.baseDomain=v);},[v]);let B=o1(),[h,f]=useState([]),[g,l]=useState(false),[N,C]=useState(null),[E,y]=useState([]),[S,X]=useState({}),[j,_]=useState([]),F=useMemo(()=>j0(ep,"reservationSidebar"),[]),A0=useCallback(x=>{a(I=>{let K={...I};return x.forEach(c0=>{K[c0]="";}),K});},[a]);useEffect(()=>{if(!b)return;l(true),(async()=>{try{let I=window.baseDomain||"",[K,c0]=await Promise.all([B.get(`${I}api/auth-restaurant/`,{noCache:!0}),B.get(`${I}api/personeel`,{noCache:!0})]);f(K.timeblocks||[]),window.timeblocks=K.timeblocks||[],window.generalSettings=K["general-settings"]||{},y(K.menu||[]),X(K||{});let O0=(0,P2.default)().tz("Europe/Amsterdam").startOf("day"),a0=(c0||[]).filter(P=>{let X0=(0,P2.default)(P.startDate,"YYYY-MM-DD").tz("Europe/Amsterdam").startOf("day"),H=(0,P2.default)(P.endDate,"YYYY-MM-DD").tz("Europe/Amsterdam").endOf("day");return O0.isBetween(X0,H,null,"[]")});_(a0);}catch(I){C(I),console.error("Error fetching data:",I);}finally{l(false);}})();},[b,B]);let M0=useCallback(()=>{a({guest:2,date:"",time:"",firstName:"",lastName:"",email:"",phone:"",extraInfo:"",menu:"",personeel:"",giftcard:"",zitplaats:"",selectedTableNumbers:[],selectedTableIds:[],selectedTableNumbers:[],selectedTableIds:[],reservationMode:"met_limieten",duration:""}),R();},[R,a]);useMemo(()=>!!S?.["general-settings"]?.seatSelectionEnabled,[S]);let [e0,J]=useState(false),m=useCallback(()=>{if(q.reservationMode==="check_in"){let x={},I=false;if(q.firstName||(x.firstName="Walk-in",I=true),q.lastName||(x.lastName="Guest",I=true),I){a(K=>({...K,...x})),J(true);return}}n({preventDefault:()=>{}});},[q,n,a]);useEffect(()=>{e0&&(J(false),n({preventDefault:()=>{}}));},[e0,n]);let U=q.reservationMode==="check_in";return o0.createElement("div",{className:`reservation-sidebar-component ${b?"open":""}`},o0.createElement("div",{className:"reservation-sidebar-content"},o0.createElement("div",{className:"sidebar-tabs"},o0.createElement("button",{type:"button",className:`sidebar-tab-button ${U?"":"active"}`,onClick:()=>{U&&a(x=>({...x,reservationMode:"met_limieten",firstName:"",lastName:"",menu:""}));}},"Nieuwe Reservatie"),o0.createElement("button",{type:"button",className:`sidebar-tab-button ${U?"active":""}`,onClick:()=>{a(x=>({...x,reservationMode:"check_in",selectedTableNumbers:[],selectedTableIds:[]}));}},"Walk-in")),o0.createElement("button",{className:"close-sidebar-button",onClick:c,"aria-label":"Sluiten"},o0.createElement(FaTimes,{size:20,color:"#000"})),r?o0.createElement(w2,{formData:q,onNewReservation:M0}):o0.createElement(o0.Fragment,null,U?o0.createElement(np,{formData:q,setFormData:a,handleChange:W,restaurantData:S,menuData:E,timeblocks:h}):o0.createElement(o0.Fragment,null,S&&Object.keys(S).length>0&&o0.createElement("div",{className:"sidebar-section-giftcard"},o0.createElement(x2,{restaurantData:S,formData:q,handleChange:W,resetFormDataFields:A0})),j.length>0&&o0.createElement("div",{className:"sidebar-section-personeel"},o0.createElement(_0,{label:"",name:"personeel",type:"select",options:j.map(x=>{let I=`${x.voornaam} ${x.achternaam}`;return {value:x.id,label:I}}),value:q.personeel,onChange:W,error:e.personeel,selectPlaceholder:"Toewijzen aan persoon"})),o0.createElement("div",{className:"sidebar-section-one"},o0.createElement(yM,{formData:q,errors:e,handleChange:W,setFormData:a,timeblocks:h,loadingTimeblocks:g,timeblocksError:N,restaurantData:S,isAdmin:u})),o0.createElement("div",{className:"sidebar-section-two"},o0.createElement(k2,{formData:q,errors:e,handleChange:W,setFormData:a,isSubmitting:s,menuData:E}))),o0.createElement("div",{className:"reservation-footer"},o0.createElement("button",{type:"button",className:"store-reservation-button",onClick:m,disabled:s},s?F.saveButtonLoading||"Opslaan...":F.saveButton||"Opslaan")))))});dp.displayName="ReservationSidebar";var l4=dp;var ip={nl:{zitplaatsSelection:{labels:{seating:"Zitplaats"},options:{noPreference:"Geen voorkeur"}},giftcardSelection:{labels:{giftcard:"Cadeaubon"},options:{noGiftcard:"Geen Cadeaubon"}}},en:{zitplaatsSelection:{labels:{seating:"Seating"},options:{noPreference:"No preference"}},giftcardSelection:{labels:{giftcard:"Gift Card"},options:{noGiftcard:"No Gift Card"}}},fr:{zitplaatsSelection:{labels:{seating:"Place Assise"},options:{noPreference:"Pas de pr\xE9f\xE9rence"}},giftcardSelection:{labels:{giftcard:"Cadeau"},options:{noGiftcard:"Pas de carte"}}}};R0(`.new-reservation-page .zitplaats-selection{margin-bottom:15px}.new-reservation-page .zitplaats-selection select{width:100%;padding:10px;border-radius:4px;border:1px solid #ccc;background-color:#fff}
48
+ `);var N4=({restaurantData:b,formData:c,handleChange:q,resetFormDataFields:e})=>{let W=j0(ip,"zitplaatsSelection"),n=Array.isArray(b?.["general-settings"]?.seatAreas)?b["general-settings"].seatAreas:["Terras","Restaurant"],a=s=>{let{value:r}=s.target;q({target:{name:"zitplaats",value:r}}),e(["date","time","selectedTableNumbers","selectedTableIds"]);};return n.length===0?null:o0.createElement("div",{className:"zitplaats-selection"},o0.createElement("label",{htmlFor:"zitplaats",className:"form-label"},W.labels?.seating||"Zitplaats"),o0.createElement("div",{className:"input-container select-field"},o0.createElement("select",{id:"zitplaats",name:"zitplaats",value:c.zitplaats||"",onChange:a},o0.createElement("option",{value:""},W.options?.noPreference||"Geen voorkeur"),n.map(s=>o0.createElement("option",{key:s,value:s,className:"notranslate",translate:"no"},s)))))},tp=N4;R0(`.account-manage-title{text-align:center;margin-bottom:30px}.account-manage-container{max-width:800px;margin:0 auto}.account-manage-form{display:flex;flex-direction:column;gap:15px}.input-container{position:relative}.input-icon{position:absolute;top:50%;left:10px;transform:translateY(-50%);color:#6c757d;pointer-events:none}.input-container:has(textarea) .input-icon{top:12px;transform:none}.input-container input,.input-container textarea{width:100%;padding:10px 10px 10px 35px;border:1px solid #ccc;border-radius:5px;font-size:1rem;transition:border-color .3s ease}.form-error{color:#dc3545;font-size:.9rem;margin-top:5px;display:flex;align-items:center;gap:5px}.account-manage__button{padding:12px;background-color:var(--color-blue);color:#fff;border:none;border-radius:5px;cursor:pointer;font-size:1.1rem;display:flex;align-items:center;justify-content:center;gap:10px;transition:background-color .3s ease}
49
49
  `);/*! Bundled license information:
50
50
 
51
51
  moment/moment.js:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@happychef/reservation-sidebar",
3
- "version": "2.8.40",
3
+ "version": "2.8.41",
4
4
  "description": "A compound component for managing restaurant reservations - JavaScript version with independent styles",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",