@happychef/reservation-sidebar 2.8.55 → 2.8.56
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 +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -39,7 +39,7 @@ Checking Time: ${g} -> Determined Meal: ${l}`),!l){N0(` Time ${g} has no associ
|
|
|
39
39
|
border-color: #48AAAF !important;
|
|
40
40
|
}
|
|
41
41
|
`),e0__default.default.createElement("div",{style:m.grid},s.map(B=>e0__default.default.createElement("button",{key:B.value,type:"button",className:`duration-btn ${parseInt(b)===B.value?"active-duration":""}`,tabIndex:"-1",style:{...m.optionBtn,...!a&&parseInt(b)===B.value?m.activeBtn:{}},onClick:()=>l(B.value),onMouseDown:v=>v.preventDefault()},B.label)),g&&e0__default.default.createElement("button",{type:"button",className:`duration-btn ${a?"active-duration":""}`,tabIndex:"-1",style:{...m.optionBtn,...a?m.activeBtn:{},flex:"0 0 auto",width:"auto",minWidth:"40px"},onClick:y,onMouseDown:B=>B.preventDefault()},a?e0__default.default.createElement(fa.FaMinus,{size:12}):e0__default.default.createElement(fa.FaPlus,{size:12}))),e0__default.default.createElement(framerMotion.AnimatePresence,null,a&&e0__default.default.createElement(framerMotion.motion.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},style:{overflow:"hidden"}},e0__default.default.createElement("div",{style:m.stepperContainer},e0__default.default.createElement("button",{type:"button",style:m.stepperBtn,onClick:()=>R(-1)},e0__default.default.createElement(fa.FaMinus,{size:12})),e0__default.default.createElement("span",{style:m.stepperValue},C(parseInt(b)||0)),e0__default.default.createElement("button",{type:"button",style:m.stepperBtn,onClick:()=>R(1)},e0__default.default.createElement(fa.FaPlus,{size:12}))))))},j2=E4;var tp=e0.memo(({formData:b,errors:O,handleChange:o,handleStepOneSubmit:q,setFormData:W,timeblocks:n,loadingTimeblocks:a,timeblocksError:f,restaurantData:d,isAdmin:s=false})=>{let g=localStorage.getItem("preferredLanguage")||"nl",u=J0[g].reservationStepOne,[l,y]=e0.useState(b.guests||2),[R,m]=e0.useState(null),[C,B]=e0.useState([]),v=n1(),[L,P]=e0.useState([]),[k,T]=e0.useState(false),[S,E]=e0.useState(false),w=e0.useRef(false),K=e0.useRef(false),D=e0.useRef(false),x=e0.useCallback(Y=>{W(_=>{let z0={..._};return Y.forEach(A0=>{z0[A0]="";}),(Y.includes("date")||Y.includes("time")||Y.includes("guests"))&&(z0.selectedTableNumbers=[],z0.selectedTableIds=[],P([])),z0});},[W]);e0.useEffect(()=>{let _=(0, dp.default)().tz("Europe/Amsterdam").startOf("day").clone().startOf("isoWeek");for(;Zz(_);)_.add(1,"week");m(_);},[]),e0.useEffect(()=>{(async()=>{if(R&&(b.reservationMode==="met_limieten"||b.reservationMode==="zonder_regels"||b.reservationMode==="vrije_keuze")){let _=d?.["table-settings"]||{},z0=_.isInstalled===true&&_.assignmentMode==="automatic";if(b.reservationMode==="met_limieten"||b.reservationMode==="vrije_keuze"||b.reservationMode==="zonder_regels"&&z0){let A0=R.format("YYYY-MM-DD"),u0=R.clone().add(13,"days").format("YYYY-MM-DD"),T0=localStorage.getItem("username"),f0=`${window.baseDomain}api/slots/${T0}/${A0}/${u0}`;try{let A=await v.get(f0,{noCache:!0});B(A||[]);}catch(A){console.error("Error fetching reservations:",A),B([]);}}else B([]);}else B([]);})();},[R,v,b.reservationMode,d]),e0.useEffect(()=>{window.__reservationDashboardPreset&&b.date?(window.__reservationDashboardPreset=false,D.current=true,K.current=true):E(false);},[b.date]),e0.useEffect(()=>{if(D.current&&d&&Object.keys(d).length>0&&b.date&&b.reservationMode==="met_limieten"){D.current=false;let Y=d?.["blocked-slots"]||[],_=b.guests||2,z0=d?.["table-settings"]||{},A0=z0.isInstalled===true&&z0.assignmentMode==="automatic",u0;A0?u0=(0, G0.isDateAvailableWithTableCheck)(d,b.date,C,_,Y,null,s,null,b.zitplaats||null):u0=(0, G0.isDateAvailable)(d,b.date,C,_,Y,null,s),u0?(E(false),K.current=false):(E(true),K.current=true,W(T0=>({...T0,reservationMode:"vrije_keuze"})));}},[d,C,b.date,b.guests,b.reservationMode,s,W]);let b0=Y=>{m(Y),x(["date","time","selectedTableNumbers","selectedTableIds"]);};e0.useEffect(()=>{if(!w.current){let Y=false,_={};b.reservationMode||(_.reservationMode="met_limieten",Y=true),(!b.guests||b.guests==="")&&(_.guests=l,Y=true),Array.isArray(b.selectedTableNumbers)||(_.selectedTableNumbers=[],Y=true),Array.isArray(b.selectedTableIds)||(_.selectedTableIds=[],Y=true),Y&&setTimeout(()=>{o({target:{multiple:true,updates:_}});},0),w.current=true;}},[b.reservationMode,b.guests,b.selectedTableNumbers,b.selectedTableIds,l,o]);let U=e0.useMemo(()=>d?.["table-settings"]||{},[d]),X=e0.useMemo(()=>U.isInstalled===true&&U.assignmentMode==="automatic",[U]),G=e0.useMemo(()=>["met_limieten","zonder_regels","vrije_keuze"].includes(b.reservationMode),[b.reservationMode]),I=e0.useMemo(()=>G&&b.date&&b.time&&b.guests>0&&X&&L.length>0,[G,b.date,b.time,b.guests,X,L.length]);e0.useEffect(()=>{if(!X||!b.date||!b.time||b.guests<=0||!d||!C){P([]),T(false);return}T(true);let Y=setTimeout(()=>{(window.requestIdleCallback||(z0=>setTimeout(z0,1)))(()=>{try{let z0=new Set;d?.manualFloors&&Array.isArray(d.manualFloors)&&d.manualFloors.forEach(A=>{(A.tables||[]).forEach(t=>{t.tableNumber!=null&&z0.add(t.tableNumber);});});let A0=[...d?.floors||[],...d?.manualFloors||[]],u0={...d,floors:A0},f0=x0("getAvailableTablesForTime",G0.getAvailableTablesForTime,u0,b.date,b.time,b.guests,C,b.zitplaats||null).map(A=>({...A,isManual:z0.has(A.tableNumber)}));P(f0);}catch(z0){console.error("Error calculating available tables:",z0),P([]);}finally{T(false);}});},500);return ()=>{clearTimeout(Y),T(false);}},[X,b.date,b.time,b.guests,b.zitplaats,d,C]),e0.useEffect(()=>{if(L.length>0){let Y=b.selectedTableNumbers||[],_=b.selectedTableIds||[],z0=[],A0=[];Y.forEach(u0=>{let T0=L.find(f0=>f0.tableNumber===u0);T0&&_.includes(T0.tableId)&&(z0.push(u0),A0.push(T0.tableId));}),z0.length!==Y.length&&setTimeout(()=>{o({target:{multiple:true,updates:{selectedTableNumbers:z0,selectedTableIds:A0}}});},0);}else (b.selectedTableNumbers?.length>0||b.selectedTableIds?.length>0)&&setTimeout(()=>{o({target:{multiple:true,updates:{selectedTableNumbers:[],selectedTableIds:[]}}});},0);},[L,b.selectedTableNumbers,b.selectedTableIds]);let V=Y=>{let _=parseInt(Y.target.value,10)||1;y(_),E(false),W(z0=>{let A0={...z0,guests:_};if(A0.selectedTableNumbers=[],A0.selectedTableIds=[],A0.reservationMode==="vrije_keuze")return A0;if(A0.date&&d&&Object.keys(d).length>0){let u0=d?.["blocked-slots"]||[],T0=A0.reservationMode!=="met_limieten"?-1e4:_,f0=d?.["table-settings"]||{},A=A0.reservationMode==="met_limieten"&&f0.isInstalled===true&&f0.assignmentMode==="automatic",t;if(A?t=x0("isDateAvailableWithTableCheck",G0.isDateAvailableWithTableCheck,d,A0.date,C,T0,u0,null,s,null,A0.zitplaats||null):t=x0("isDateAvailable",G0.isDateAvailable,d,A0.date,C,T0,u0,null,s),!t)A0.date="",A0.time="";else if(A0.time){let r=(0, G0.getAvailableTimeblocks)(d,A0.date,C,T0,u0,null,s,A0.duration||null);(A?(0, G0.getAvailableTimeblocksWithTableCheck)(d,A0.date,r,T0,C,A0.zitplaats||null,A0.duration||null):r)[A0.time]||(A0.time="");}}return A0});};e0.useEffect(()=>{if(K.current){K.current=false;return}x(["date","time","selectedTableNumbers","selectedTableIds"]);},[b.reservationMode,x]);let $=Y=>{E(false),Y==="met_limieten"?o({target:{name:"reservationMode",value:"met_limieten"}}):Y==="onbeperkt_parent"&&(["zonder_regels","vrije_keuze"].includes(b.reservationMode)||o({target:{name:"reservationMode",value:"zonder_regels"}}));},q0=Y=>{E(false),o({target:{name:"reservationMode",value:Y}});},O0=b.reservationMode,d0=!!d?.["general-settings"]?.seatSelectionEnabled,j=Array.isArray(d?.["general-settings"]?.seatAreas)?d["general-settings"].seatAreas:["Terras","Restaurant"],X0=Y=>{W(_=>({..._,zitplaats:Y}));};return f?e0__default.default.createElement("div",null,u.errors.openingHoursNotSet," ",e0__default.default.createElement("a",{href:"https://happychef.cloud/#/openinghours/dinner",target:"_blank",rel:"noopener noreferrer",style:{color:"var(--color-blue)",textDecoration:"underline"}},u.errors.clickHereToSet)):e0__default.default.createElement("form",{className:"account-manage-form",noValidate:true},e0__default.default.createElement("div",{className:"form-group reservation-mode"},e0__default.default.createElement("div",{className:"reservation-modes-container"},e0__default.default.createElement("button",{type:"button",className:`reservation-mode-button ${O0==="met_limieten"?"active":""}`,onClick:()=>$("met_limieten"),"aria-pressed":O0==="met_limieten"},u.modes.withLimits),e0__default.default.createElement("button",{type:"button",className:`reservation-mode-button ${["onbeperkt_parent","zonder_regels","vrije_keuze"].includes(O0)?"active":""}`,onClick:()=>$("onbeperkt_parent"),"aria-pressed":["onbeperkt_parent","zonder_regels","vrije_keuze"].includes(O0)},u.modes.unlimited)),["onbeperkt_parent","zonder_regels","vrije_keuze"].includes(O0)&&e0__default.default.createElement("div",{className:"reservation-modes-container sub-modes"},e0__default.default.createElement("button",{type:"button",className:`reservation-mode-button ${O0==="zonder_regels"?"active":""}`,onClick:()=>q0("zonder_regels"),"aria-pressed":O0==="zonder_regels"},u.modes.openingHours),e0__default.default.createElement("button",{type:"button",className:`reservation-mode-button ${O0==="vrije_keuze"?"active":""}`,onClick:()=>q0("vrije_keuze"),"aria-pressed":O0==="vrije_keuze"},u.modes.free))),["onbeperkt_parent","zonder_regels","vrije_keuze"].includes(O0)&&e0__default.default.createElement("div",{className:"unlimited-mode-warning"},e0__default.default.createElement("div",{className:"warning-text"},S?u.warnings?.dateNotAvailableWithLimits||"Let op: deze datum is niet beschikbaar met limieten voor dit aantal gasten. De modus is automatisch overgezet naar onbeperkt vrij.":u.warnings?.unlimitedMode||(g==="nl"?"Let op: Bij onbeperkte boekingen wordt geen rekening gehouden met de maximale capaciteit van het restaurant. De maximale zitplaatslimiet kan worden overschreden.":"Warning: Unlimited bookings do not take into account the restaurant's maximum capacity. The maximum seating limit may be exceeded."))),e0__default.default.createElement(L2,{setGuests:y,value:b.guests||l,onChange:V,error:O.guests}),d0&&G&&b.guests>0&&e0__default.default.createElement("div",{className:"form-row",style:{marginTop:12}},e0__default.default.createElement("div",{className:"reservation-mode-buttons"},j.map(Y=>e0__default.default.createElement("button",{key:Y,type:"button",className:`reservation-mode-button ${b.zitplaats===Y?"active":""}`,onClick:()=>X0(Y),"aria-pressed":b.zitplaats===Y},Y))),O.zitplaats&&e0__default.default.createElement("small",{className:"error"},O.zitplaats)),d?.account_type==="bowling"&&e0__default.default.createElement(j2,{duration:b.duration,handleChange:Y=>{o(Y),x(["date","time","selectedTableNumbers","selectedTableIds"]);},min:d["general-settings"]?.minDuration||30,max:d["general-settings"]?.maxDuration||120,interval:d["general-settings"]?.durationInterval||30}),G&&b.guests>0&&e0__default.default.createElement(Ap,{guests:b.guests,formData:b,handleChange:o,resetFormDataFields:x,restaurantData:d,reservations:C,startDate:R,onWeekChange:b0,reservationMode:O0,isAdmin:s}),G&&b.date&&e0__default.default.createElement(ep,{guests:b.guests,formData:b,handleChange:o,field:{id:"time",label:u.fields.time},selectedDate:b.date,setCurrentExpandedField:()=>{},restaurantData:d,reservations:C,reservationMode:O0,zitplaats:b.zitplaats||null,isAdmin:s}),I&&e0__default.default.createElement(H2,{availableTables:L,isFetching:k,formData:b,setFormData:W,handleChange:o}),k&&b.date&&b.time&&b.guests>0&&e0__default.default.createElement("div",{style:{textAlign:"center",padding:"10px",color:"#666",fontSize:"14px"}},"Beschikbare tafels berekenen..."))});tp.displayName="ReservationStepOne";var VM=tp;var QM=()=>localStorage.getItem("preferredLanguage")||"nl",Y0=(b,O,o="nl")=>{let q=QM();return (b[q]||b[o]||{})[O]||{}};var ip={nl:{formField:{selectPlaceholder:"Selecteer een optie",tooltip:{confirm:"Klik om te Bevestigen",source:"Gevonden met Happy Ai"}}},en:{formField:{selectPlaceholder:"Select an option",tooltip:{confirm:"Click to Confirm",source:"Found with Happy Ai"}}},fr:{formField:{selectPlaceholder:"S\xE9lectionnez une option",tooltip:{confirm:"Cliquez pour confirmer",source:"Trouv\xE9 avec Happy Ai"}}}};R0(`.new-reservation-page .form-group .magic-tooltip{transition:transform .2s ease;transform-origin:bottom right}.new-reservation-page .form-group .magic-tooltip:hover{transform:scale(1.05)}.form-field-label{display:block;font-size:.8rem;font-weight:600;margin-bottom:4px;color:#333}.required-asterisk{color:red;margin-left:2px}.name-match-item{padding:8px 0;cursor:pointer;transition:background-color .15s ease}.name-match-item:hover{background-color:#f5f0f7}.name-match-item:not(:last-child){border-bottom:1px solid #f0f0f0}
|
|
42
|
-
`);var _4=({label:b,name:O,type:o="text",icon:q,value:W,onChange:n,onBlur:a,error:f,placeholder:d,halfWidth:s,options:g=[],selectPlaceholder:u,rightIcon:l,onRightIconClick:y,tooltipContent:R,tooltipAlign:m,required:C})=>{let B=Y0(ip,"formField"),v=u||B.selectPlaceholder,[L,P]=e0.useState(false),k=e0.useRef(null),T=e0.useRef(null),S=l,E=q;e0.useEffect(()=>{let U=X=>{k.current&&!k.current.contains(X.target)&&(T.current&&clearTimeout(T.current),P(false));};return L&&document.addEventListener("mousedown",U),()=>document.removeEventListener("mousedown",U)},[L]);let K={name:O,value:W,onChange:n,onBlur:a,"aria-label":b,className:`form-control ${f?"input-error":""}`,style:q?{paddingLeft:"35px",boxSizing:"border-box"}:{}},D=()=>o==="select"?e0__default.default.createElement("select",{...K},e0__default.default.createElement("option",{value:""},v),g.map(U=>e0__default.default.createElement("option",{key:U.value,value:U.value},U.label))):o==="textarea"?e0__default.default.createElement("textarea",{...K,placeholder:d}):e0__default.default.createElement("input",{type:o,...K,placeholder:d}),x=o==="textarea";return e0__default.default.createElement("div",{className:`form-group ${s?"half-width":""}`,style:{position:"relative"}},b&&e0__default.default.createElement("label",{className:"form-field-label"},b,
|
|
42
|
+
`);var _4=({label:b,name:O,type:o="text",icon:q,value:W,onChange:n,onBlur:a,error:f,placeholder:d,halfWidth:s,options:g=[],selectPlaceholder:u,rightIcon:l,onRightIconClick:y,tooltipContent:R,tooltipAlign:m,required:C})=>{let B=Y0(ip,"formField"),v=u||B.selectPlaceholder,[L,P]=e0.useState(false),k=e0.useRef(null),T=e0.useRef(null),S=l,E=q;e0.useEffect(()=>{let U=X=>{k.current&&!k.current.contains(X.target)&&(T.current&&clearTimeout(T.current),P(false));};return L&&document.addEventListener("mousedown",U),()=>document.removeEventListener("mousedown",U)},[L]);let K={name:O,value:W,onChange:n,onBlur:a,"aria-label":b,className:`form-control ${f?"input-error":""}`,style:q?{paddingLeft:"35px",boxSizing:"border-box"}:{}},D=()=>o==="select"?e0__default.default.createElement("select",{...K},e0__default.default.createElement("option",{value:""},v),g.map(U=>e0__default.default.createElement("option",{key:U.value,value:U.value},U.label))):o==="textarea"?e0__default.default.createElement("textarea",{...K,placeholder:d}):e0__default.default.createElement("input",{type:o,...K,placeholder:d}),x=o==="textarea";return e0__default.default.createElement("div",{className:`form-group ${s?"half-width":""}`,style:{position:"relative"}},C&&b&&e0__default.default.createElement("label",{className:"form-field-label"},b," ",e0__default.default.createElement("span",{className:"required-asterisk"},"*")),e0__default.default.createElement("div",{className:"input-container",style:{position:"relative"}},E&&e0__default.default.createElement(E,{className:"input-icon",style:{position:"absolute",left:"10px",top:x?"12px":"50%",transform:x?"none":"translateY(-50%)",color:"#6c757d",pointerEvents:"none",zIndex:1}}),D(),S&&e0__default.default.createElement("div",{className:"magic-wand-container",onClick:y,onMouseEnter:()=>{T.current&&clearTimeout(T.current),P(true);},onMouseLeave:()=>{T.current=setTimeout(()=>P(false),1200);},style:{position:"absolute",top:"50%",right:"10px",transform:"translateY(-50%)",cursor:"pointer"}},e0__default.default.createElement(S,{className:"magic-wand-icon",style:{color:"#B567C2"}}),L&&R&&e0__default.default.createElement("div",{ref:k,className:"magic-tooltip",style:{position:"absolute",bottom:"100%",...m==="left"?{left:0}:{right:0},backgroundColor:"#fff",color:"#333",borderRadius:"8px",fontSize:"0.9rem",boxShadow:"0px 4px 10px rgba(0,0,0,0.15)",zIndex:1e3,marginBottom:"8px",minWidth:"220px",overflow:"hidden"}},e0__default.default.createElement("div",{style:{position:"relative",zIndex:2,padding:"12px 20px"}},e0__default.default.createElement("div",{style:{borderBottom:"1px solid #eee",marginBottom:"8px",paddingBottom:"4px"}},R),e0__default.default.createElement("div",{style:{fontWeight:"bold",fontSize:"13px",textAlign:"center",marginTop:"8px"}},B.tooltip?.confirm),e0__default.default.createElement("div",{style:{fontSize:"0.7rem",textAlign:"center",color:"#999",marginTop:"4px"}},B.tooltip?.source))))),f&&e0__default.default.createElement("p",{className:"form-error"},f))},H0=e0__default.default.memo(_4);var Z0=P0(e1());P0(Rp());var fp={nl:{reservationStepTwoFiltering:{labels:{menu:"Menu",firstName:"Voornaam",lastName:"Achternaam",email:"E-mail",phone:"Mobiel nummer",extraInfo:"Extra info",seatPlace:"Zitplaats"},placeholders:{firstName:"Voornaam",lastName:"Achternaam",email:"E-mailadres",phone:"Mobiel nummer",extraInfo:"Extra informatie",seatPlace:"Selecteer zitplaats"},magic:{title:"Gast Gegevens"}},reservationSummary:{title:"Reservatie Gegevens",guests:"Aantal gasten",date:"Datum",time:"Tijd",firstName:"Voornaam",lastName:"Achternaam",email:"E-mail",phone:"Mobiel nummer",menu:"Menu",staff:"Aangemaakt door",giftcard:"Cadeaubon",extraInfo:"Extra informatie",seatPlace:"Zitplaats",newReservationButton:"Nieuwe Reservatie Maken"}},en:{reservationStepTwoFiltering:{labels:{menu:"Menu",firstName:"First Name",lastName:"Last Name",email:"Email",phone:"Mobile Number",extraInfo:"Extra Info",seatPlace:"Seating area"},placeholders:{firstName:"First Name",lastName:"Last Name",email:"Email Address",phone:"Mobile Number",extraInfo:"Extra Information",seatPlace:"Select seating area"},magic:{title:"Guest Details"}},reservationSummary:{title:"Reservation Details",guests:"Number of Guests",date:"Date",time:"Time",firstName:"First Name",lastName:"Last Name",email:"Email",phone:"Mobile Number",menu:"Menu",staff:"Created by",giftcard:"Gift Card",extraInfo:"Extra Information",seatPlace:"Seating area",newReservationButton:"New Reservation"}},fr:{reservationStepTwoFiltering:{labels:{menu:"Menu",firstName:"Pr\xE9nom",lastName:"Nom",email:"E-mail",phone:"Num\xE9ro de portable",extraInfo:"Informations suppl\xE9mentaires",seatPlace:"Zone d\u2019assise"},placeholders:{firstName:"Pr\xE9nom",lastName:"Nom",email:"Adresse e-mail",phone:"Num\xE9ro de portable",extraInfo:"Informations suppl\xE9mentaires",seatPlace:"S\xE9lectionner une zone d\u2019assise"},magic:{title:"D\xE9tails Invit\xE9"}},reservationSummary:{title:"D\xE9tails de la R\xE9servation",guests:"Nombre d'invit\xE9s",date:"Date",time:"Heure",firstName:"Pr\xE9nom",lastName:"Nom",email:"E-mail",phone:"Num\xE9ro de portable",menu:"Menu",staff:"Cr\xE9\xE9 par",giftcard:"Carte Cadeau",extraInfo:"Informations suppl\xE9mentaires",seatPlace:"Zone d\u2019assise",newReservationButton:"Nouvelle R\xE9servation"}}};R0(`.new-reservation-page .name-fields{display:flex;gap:20px;align-items:flex-end}.input-container .form-control{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px 10px 10px 35px;background-color:#fff;border:#ccc 1px solid;cursor:pointer;-webkit-user-select:none;user-select:none;text-align:left;border-radius:5px;font-size:16px;box-sizing:border-box}
|
|
43
43
|
`);var Np=e0__default.default.memo(({formData:b,errors:O,handleChange:o,setFormData:q,menuData:W})=>{let n=QM(),a=Y0(fp,"reservationStepTwoFiltering"),[f,d]=e0.useState([]),[s,g]=e0.useState(false),[u,l]=e0.useState(null),[y,R]=e0.useState([]),m=n1(),C=fa.FaMagic,B=()=>{u&&L();};e0.useEffect(()=>{if(Z0.default.locale(n),!b.date||!b.time||!W.length)return d([]);let U=(0, Z0.default)(`${b.date} ${b.time}`,"YYYY-MM-DD HH:mm"),X=W.filter(G=>{let I=U.isBetween((0, Z0.default)(G.startDate,"YYYY-MM-DD"),(0, Z0.default)(G.endDate,"YYYY-MM-DD"),"day","[]"),V=(0, Z0.default)(b.time,"HH:mm").isBetween((0, Z0.default)(G.startHour,"HH:mm"),(0, Z0.default)(G.endHour,"HH:mm"),"minute","[]"),$=(0, Z0.default)(U).locale("nl").format("dddd").toLowerCase(),q0=(0, Z0.default)(U).locale("en").format("dddd").toLowerCase(),O0=(G.daysOfWeek||[]).map(j=>j.toLowerCase()),d0=!O0.length||O0.includes($)||O0.includes(q0);return I&&V&&d0});d(X);},[b.date,b.time,W,n]);let v=async()=>{if(s||u)return;let U=(b.email||"").trim().toLowerCase(),X=(b.phone||"").trim(),G=U&&[".com",".net",".be",".nl"].some($=>U.endsWith($)),I=!!X&&(X.startsWith("+32")?X.length>=12:X.length>=10);if(!G&&!I)return;let V=[];G&&V.push("email"),I&&V.push("phone");try{let $=await m.post(`${window.baseDomain}api/autofill`,{email:U,phone:X});$?.firstName&&$?.lastName&&$?.email&&$?.phone&&l({...$,sources:V});}catch{console.error("Autofill error");}};e0.useEffect(()=>{v();},[b.email,b.phone]);let L=()=>{u&&(q(U=>({...U,firstName:u.firstName,lastName:u.lastName,email:u.email,phone:u.phone})),g(true),l(null));},P=async()=>{let U=(b.firstName||"").trim(),X=(b.lastName||"").trim();if(U.length<2&&X.length<2){R([]);return}try{let G=await m.post(`${window.baseDomain}api/autofill-name`,{firstName:U||void 0,lastName:X||void 0});Array.isArray(G)&&G.length>0?R(G):R([]);}catch{R([]);}},k=U=>{q(X=>({...X,firstName:U.firstName,lastName:U.lastName,email:U.email,phone:U.phone})),R([]),g(true);};e0.useEffect(()=>{if(s)return;let U=(b.firstName||"").trim(),X=(b.lastName||"").trim();if(U.length<2&&X.length<2){R([]);return}R([]);let G=setTimeout(()=>{P();},500);return ()=>clearTimeout(G)},[b.firstName,b.lastName]);let T=e0.useMemo(()=>{if(!u)return {email:{},phone:{}};let U=u.sources.includes("email")&&(b.email||"").trim().toLowerCase()===u.email.trim().toLowerCase(),X=u.sources.includes("phone")&&(b.phone||"").trim()===u.phone.trim(),G={rightIcon:C,onRightIconClick:B};return {email:U?{...G,tooltipContent:e0__default.default.createElement("div",null,e0__default.default.createElement("div",{style:{textAlign:"center",fontWeight:"bold"}},a.magic?.title),e0__default.default.createElement("div",null,u.firstName," ",u.lastName),e0__default.default.createElement("div",null,u.phone))}:{},phone:X?{...G,tooltipContent:e0__default.default.createElement("div",null,e0__default.default.createElement("div",{style:{textAlign:"center",fontWeight:"bold"}},a.magic?.title),e0__default.default.createElement("div",null,u.firstName," ",u.lastName),e0__default.default.createElement("div",null,u.email))}:{}}},[u,b.email,b.phone,a.magic?.title]),S=e0.useMemo(()=>{if(!y.length)return {firstName:{},lastName:{}};let X=(b.lastName||"").trim().length>0?"lastName":"firstName",G=e0__default.default.createElement("div",{style:{maxHeight:"200px",overflowY:"auto"}},y.map((V,$)=>e0__default.default.createElement("div",{key:$,className:"name-match-item",onClick:q0=>{q0.stopPropagation(),k(V);}},e0__default.default.createElement("div",{style:{fontWeight:"500"}},V.firstName," ",V.lastName),e0__default.default.createElement("div",{style:{fontSize:"0.8rem",color:"#666"}},V.email),V.phone&&e0__default.default.createElement("div",{style:{fontSize:"0.8rem",color:"#666"}},V.phone)))),I={rightIcon:fa.FaMagic,onRightIconClick:()=>{},tooltipContent:e0__default.default.createElement("div",null,e0__default.default.createElement("div",{style:{textAlign:"center",fontWeight:"bold"}},a.magic?.title),G)};return {firstName:X==="firstName"?{...I,tooltipAlign:"left"}:{},lastName:X==="lastName"?I:{}}},[y,b.lastName,a.magic?.title]),{reservationMode:E}=b,w=E==="check_in",K=window.generalSettings?.obligatedFields||[],D=U=>K.includes(U),x=U=>!w&&D(U),b0=(U,X)=>{let G=a.labels?.[U]||X;return w?`${G} (Optioneel)`:D(U)?`${G} *`:G};return e0__default.default.createElement("div",{className:"reservation-step-two"},e0__default.default.createElement("div",{className:"account-manage-form"},f.length>0&&e0__default.default.createElement(H0,{label:`${a.labels?.menu||"Menu"}${w?" (Optioneel)":""}`,name:"menu",type:"select",options:f.map(U=>({value:U.name,label:U.name})),value:b.menu,onChange:o,error:w?null:O.menu}),e0__default.default.createElement("div",{className:"name-fields"},e0__default.default.createElement(H0,{label:b0("firstName","Voornaam"),name:"firstName",placeholder:a.placeholders?.firstName||"",value:b.firstName,onChange:o,error:w?null:O.firstName,icon:fa.FaUser,required:x("firstName"),...S.firstName}),e0__default.default.createElement(H0,{label:b0("lastName","Achternaam"),name:"lastName",placeholder:a.placeholders?.lastName||"",value:b.lastName,onChange:o,error:w?null:O.lastName,icon:fa.FaUser,required:x("lastName"),...S.lastName})),e0__default.default.createElement(H0,{label:b0("email","Email"),name:"email",type:"email",placeholder:a.placeholders?.email||"",value:b.email,onChange:o,onBlur:v,error:O.email,icon:fa.FaEnvelope,required:x("email"),...T.email}),e0__default.default.createElement(H0,{label:b0("phone","Telefoon"),name:"phone",type:"tel",placeholder:a.placeholders?.phone||"",value:b.phone,onChange:o,onBlur:v,error:O.phone,icon:fa.FaPhone,required:x("phone"),...T.phone}),e0__default.default.createElement(H0,{label:a.labels?.extraInfo||"Extra info",name:"extraInfo",type:"textarea",placeholder:a.placeholders?.extraInfo||"",value:b.extraInfo,onChange:o,error:O.extraInfo,icon:fa.FaInfoCircle})))});Np.displayName="ReservationStepTwo";var Y2=Np;var Bp={nl:{reservationStepTwoFiltering:{labels:{menu:"Menu",firstName:"Voornaam",lastName:"Achternaam",email:"E-mail",phone:"Mobiel nummer",extraInfo:"Extra info",seatPlace:"Zitplaats"},placeholders:{firstName:"Voornaam",lastName:"Achternaam",email:"E-mailadres",phone:"Mobiel nummer",extraInfo:"Extra informatie",seatPlace:"Selecteer zitplaats"},magic:{title:"Gast Gegevens"}},reservationSummary:{title:"Reservatie Gegevens",guests:"Aantal gasten",date:"Datum",time:"Tijd",firstName:"Voornaam",lastName:"Achternaam",email:"E-mail",phone:"Mobiel nummer",menu:"Menu",staff:"Aangemaakt door",giftcard:"Cadeaubon",extraInfo:"Extra informatie",seatPlace:"Zitplaats",newReservationButton:"Nieuwe Reservatie Maken"}},en:{reservationStepTwoFiltering:{labels:{menu:"Menu",firstName:"First Name",lastName:"Last Name",email:"Email",phone:"Mobile Number",extraInfo:"Extra Info",seatPlace:"Seating area"},placeholders:{firstName:"First Name",lastName:"Last Name",email:"Email Address",phone:"Mobile Number",extraInfo:"Extra Information",seatPlace:"Select seating area"},magic:{title:"Guest Details"}},reservationSummary:{title:"Reservation Details",guests:"Number of Guests",date:"Date",time:"Time",firstName:"First Name",lastName:"Last Name",email:"Email",phone:"Mobile Number",menu:"Menu",staff:"Created by",giftcard:"Gift Card",extraInfo:"Extra Information",seatPlace:"Seating area",newReservationButton:"New Reservation"}},fr:{reservationStepTwoFiltering:{labels:{menu:"Menu",firstName:"Pr\xE9nom",lastName:"Nom",email:"E-mail",phone:"Num\xE9ro de portable",extraInfo:"Informations suppl\xE9mentaires",seatPlace:"Zone d\u2019assise"},placeholders:{firstName:"Pr\xE9nom",lastName:"Nom",email:"Adresse e-mail",phone:"Num\xE9ro de portable",extraInfo:"Informations suppl\xE9mentaires",seatPlace:"S\xE9lectionner une zone d\u2019assise"},magic:{title:"D\xE9tails Invit\xE9"}},reservationSummary:{title:"D\xE9tails de la R\xE9servation",guests:"Nombre d'invit\xE9s",date:"Date",time:"Heure",firstName:"Pr\xE9nom",lastName:"Nom",email:"E-mail",phone:"Num\xE9ro de portable",menu:"Menu",staff:"Cr\xE9\xE9 par",giftcard:"Carte Cadeau",extraInfo:"Informations suppl\xE9mentaires",seatPlace:"Zone d\u2019assise",newReservationButton:"Nouvelle R\xE9servation"}}};R0(`.new-reservation-page .reservation-sidebar-component .reservation-summary .modal-title{margin-top:0;margin-bottom:20px}.new-reservation-page .reservation-sidebar-component .reservation-summary .reservation-details{list-style-type:none;padding:0;margin:0 0 20px;width:100%}.new-reservation-page .reservation-sidebar-component .reservation-summary .reservation-details li{margin-bottom:10px;font-size:15px;align-items:left;text-align:left}.new-reservation-page .reservation-sidebar-component .reservation-summary .reservation-details li strong{font-weight:700}.new-reservation-page .reservation-sidebar-component .reservation-summary{align-items:left}
|
|
44
44
|
`);var G4=({formData:b,onNewReservation:O})=>{let o=Y0(Bp,"reservationSummary");return e0__default.default.createElement("div",{className:"reservation-summary"},e0__default.default.createElement("ul",{className:"reservation-details"},e0__default.default.createElement("li",null,e0__default.default.createElement("strong",null,o.title)),e0__default.default.createElement("li",null,e0__default.default.createElement("strong",null,o.guests,":")," ",b.guests),e0__default.default.createElement("li",null,e0__default.default.createElement("strong",null,o.date,":")," ",b.date),e0__default.default.createElement("li",null,e0__default.default.createElement("strong",null,o.time,":")," ",b.time),e0__default.default.createElement("li",null,e0__default.default.createElement("strong",null,o.firstName,":")," ",b.firstName),e0__default.default.createElement("li",null,e0__default.default.createElement("strong",null,o.lastName,":")," ",b.lastName),e0__default.default.createElement("li",null,e0__default.default.createElement("strong",null,o.email,":")," ",b.email),e0__default.default.createElement("li",null,e0__default.default.createElement("strong",null,o.phone,":")," ",b.phone),b.menu&&e0__default.default.createElement("li",null,e0__default.default.createElement("strong",null,o.menu,":")," ",b.menu),b.personeel&&e0__default.default.createElement("li",null,e0__default.default.createElement("strong",null,o.staff,":")," ",b.personeel),b.giftcard&&e0__default.default.createElement("li",null,e0__default.default.createElement("strong",null,o.giftcard,":")," ",b.giftcard),b.extraInfo&&e0__default.default.createElement("li",null,e0__default.default.createElement("strong",null,o.extraInfo,":")," ",b.extraInfo),b.zitplaats&&e0__default.default.createElement("li",null,e0__default.default.createElement("strong",null,o.seatPlace,":")," ",b.zitplaats)),e0__default.default.createElement("button",{className:"button-style-3",onClick:O},o.newReservationButton))},K2=G4;var Xp={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 Q4=({restaurantData:b,formData:O,handleChange:o,resetFormDataFields:q})=>{let W=Y0(Xp,"giftcardSelection"),[n,a]=e0.useState([]);if(e0.useEffect(()=>{if(!b)return;let s=["breakfast","lunch","dinner"],g=new Set;s.forEach(u=>{let l=b[`openinghours-${u}`]?.schemeSettings||{};Object.values(l).forEach(y=>{y?.giftcardsEnabled&&Array.isArray(y.giftcards)&&y.giftcards.forEach(R=>{let m=typeof R=="string"?R.trim():String(R||"").trim();m&&g.add(m);});});}),a([...g]);},[b]),!n.length)return null;let f=n.map(s=>({value:s,label:s})),d=s=>{o({target:{name:"giftcard",value:s.target.value}}),q(["date","time"]);};return e0__default.default.createElement("div",{className:"giftcard-selection"},e0__default.default.createElement(H0,{label:W.labels?.giftcard||"Giftcard",name:"giftcard",type:"select",options:f,value:O.giftcard||"",onChange:d,selectPlaceholder:W.options?.noGiftcard||"Geen giftcard"}))},V2=Q4;var $2=P0(e1());var Tp={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)}
|
package/dist/index.mjs
CHANGED
|
@@ -39,7 +39,7 @@ Checking Time: ${g} -> Determined Meal: ${l}`),!l){N0(` Time ${g} has no associ
|
|
|
39
39
|
border-color: #48AAAF !important;
|
|
40
40
|
}
|
|
41
41
|
`),e0.createElement("div",{style:m.grid},s.map(B=>e0.createElement("button",{key:B.value,type:"button",className:`duration-btn ${parseInt(b)===B.value?"active-duration":""}`,tabIndex:"-1",style:{...m.optionBtn,...!a&&parseInt(b)===B.value?m.activeBtn:{}},onClick:()=>l(B.value),onMouseDown:v=>v.preventDefault()},B.label)),g&&e0.createElement("button",{type:"button",className:`duration-btn ${a?"active-duration":""}`,tabIndex:"-1",style:{...m.optionBtn,...a?m.activeBtn:{},flex:"0 0 auto",width:"auto",minWidth:"40px"},onClick:y,onMouseDown:B=>B.preventDefault()},a?e0.createElement(FaMinus,{size:12}):e0.createElement(FaPlus,{size:12}))),e0.createElement(AnimatePresence,null,a&&e0.createElement(motion.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},style:{overflow:"hidden"}},e0.createElement("div",{style:m.stepperContainer},e0.createElement("button",{type:"button",style:m.stepperBtn,onClick:()=>R(-1)},e0.createElement(FaMinus,{size:12})),e0.createElement("span",{style:m.stepperValue},C(parseInt(b)||0)),e0.createElement("button",{type:"button",style:m.stepperBtn,onClick:()=>R(1)},e0.createElement(FaPlus,{size:12}))))))},j2=E4;var tp=memo(({formData:b,errors:O,handleChange:o,handleStepOneSubmit:q,setFormData:W,timeblocks:n,loadingTimeblocks:a,timeblocksError:f,restaurantData:d,isAdmin:s=false})=>{let g=localStorage.getItem("preferredLanguage")||"nl",u=J0[g].reservationStepOne,[l,y]=useState(b.guests||2),[R,m]=useState(null),[C,B]=useState([]),v=n1(),[L,P]=useState([]),[k,T]=useState(false),[S,E]=useState(false),w=useRef(false),K=useRef(false),D=useRef(false),x=useCallback(Y=>{W(_=>{let z0={..._};return Y.forEach(A0=>{z0[A0]="";}),(Y.includes("date")||Y.includes("time")||Y.includes("guests"))&&(z0.selectedTableNumbers=[],z0.selectedTableIds=[],P([])),z0});},[W]);useEffect(()=>{let _=(0, dp.default)().tz("Europe/Amsterdam").startOf("day").clone().startOf("isoWeek");for(;Zz(_);)_.add(1,"week");m(_);},[]),useEffect(()=>{(async()=>{if(R&&(b.reservationMode==="met_limieten"||b.reservationMode==="zonder_regels"||b.reservationMode==="vrije_keuze")){let _=d?.["table-settings"]||{},z0=_.isInstalled===true&&_.assignmentMode==="automatic";if(b.reservationMode==="met_limieten"||b.reservationMode==="vrije_keuze"||b.reservationMode==="zonder_regels"&&z0){let A0=R.format("YYYY-MM-DD"),u0=R.clone().add(13,"days").format("YYYY-MM-DD"),T0=localStorage.getItem("username"),f0=`${window.baseDomain}api/slots/${T0}/${A0}/${u0}`;try{let A=await v.get(f0,{noCache:!0});B(A||[]);}catch(A){console.error("Error fetching reservations:",A),B([]);}}else B([]);}else B([]);})();},[R,v,b.reservationMode,d]),useEffect(()=>{window.__reservationDashboardPreset&&b.date?(window.__reservationDashboardPreset=false,D.current=true,K.current=true):E(false);},[b.date]),useEffect(()=>{if(D.current&&d&&Object.keys(d).length>0&&b.date&&b.reservationMode==="met_limieten"){D.current=false;let Y=d?.["blocked-slots"]||[],_=b.guests||2,z0=d?.["table-settings"]||{},A0=z0.isInstalled===true&&z0.assignmentMode==="automatic",u0;A0?u0=(0, G0.isDateAvailableWithTableCheck)(d,b.date,C,_,Y,null,s,null,b.zitplaats||null):u0=(0, G0.isDateAvailable)(d,b.date,C,_,Y,null,s),u0?(E(false),K.current=false):(E(true),K.current=true,W(T0=>({...T0,reservationMode:"vrije_keuze"})));}},[d,C,b.date,b.guests,b.reservationMode,s,W]);let b0=Y=>{m(Y),x(["date","time","selectedTableNumbers","selectedTableIds"]);};useEffect(()=>{if(!w.current){let Y=false,_={};b.reservationMode||(_.reservationMode="met_limieten",Y=true),(!b.guests||b.guests==="")&&(_.guests=l,Y=true),Array.isArray(b.selectedTableNumbers)||(_.selectedTableNumbers=[],Y=true),Array.isArray(b.selectedTableIds)||(_.selectedTableIds=[],Y=true),Y&&setTimeout(()=>{o({target:{multiple:true,updates:_}});},0),w.current=true;}},[b.reservationMode,b.guests,b.selectedTableNumbers,b.selectedTableIds,l,o]);let U=useMemo(()=>d?.["table-settings"]||{},[d]),X=useMemo(()=>U.isInstalled===true&&U.assignmentMode==="automatic",[U]),G=useMemo(()=>["met_limieten","zonder_regels","vrije_keuze"].includes(b.reservationMode),[b.reservationMode]),I=useMemo(()=>G&&b.date&&b.time&&b.guests>0&&X&&L.length>0,[G,b.date,b.time,b.guests,X,L.length]);useEffect(()=>{if(!X||!b.date||!b.time||b.guests<=0||!d||!C){P([]),T(false);return}T(true);let Y=setTimeout(()=>{(window.requestIdleCallback||(z0=>setTimeout(z0,1)))(()=>{try{let z0=new Set;d?.manualFloors&&Array.isArray(d.manualFloors)&&d.manualFloors.forEach(A=>{(A.tables||[]).forEach(t=>{t.tableNumber!=null&&z0.add(t.tableNumber);});});let A0=[...d?.floors||[],...d?.manualFloors||[]],u0={...d,floors:A0},f0=x0("getAvailableTablesForTime",G0.getAvailableTablesForTime,u0,b.date,b.time,b.guests,C,b.zitplaats||null).map(A=>({...A,isManual:z0.has(A.tableNumber)}));P(f0);}catch(z0){console.error("Error calculating available tables:",z0),P([]);}finally{T(false);}});},500);return ()=>{clearTimeout(Y),T(false);}},[X,b.date,b.time,b.guests,b.zitplaats,d,C]),useEffect(()=>{if(L.length>0){let Y=b.selectedTableNumbers||[],_=b.selectedTableIds||[],z0=[],A0=[];Y.forEach(u0=>{let T0=L.find(f0=>f0.tableNumber===u0);T0&&_.includes(T0.tableId)&&(z0.push(u0),A0.push(T0.tableId));}),z0.length!==Y.length&&setTimeout(()=>{o({target:{multiple:true,updates:{selectedTableNumbers:z0,selectedTableIds:A0}}});},0);}else (b.selectedTableNumbers?.length>0||b.selectedTableIds?.length>0)&&setTimeout(()=>{o({target:{multiple:true,updates:{selectedTableNumbers:[],selectedTableIds:[]}}});},0);},[L,b.selectedTableNumbers,b.selectedTableIds]);let V=Y=>{let _=parseInt(Y.target.value,10)||1;y(_),E(false),W(z0=>{let A0={...z0,guests:_};if(A0.selectedTableNumbers=[],A0.selectedTableIds=[],A0.reservationMode==="vrije_keuze")return A0;if(A0.date&&d&&Object.keys(d).length>0){let u0=d?.["blocked-slots"]||[],T0=A0.reservationMode!=="met_limieten"?-1e4:_,f0=d?.["table-settings"]||{},A=A0.reservationMode==="met_limieten"&&f0.isInstalled===true&&f0.assignmentMode==="automatic",t;if(A?t=x0("isDateAvailableWithTableCheck",G0.isDateAvailableWithTableCheck,d,A0.date,C,T0,u0,null,s,null,A0.zitplaats||null):t=x0("isDateAvailable",G0.isDateAvailable,d,A0.date,C,T0,u0,null,s),!t)A0.date="",A0.time="";else if(A0.time){let r=(0, G0.getAvailableTimeblocks)(d,A0.date,C,T0,u0,null,s,A0.duration||null);(A?(0, G0.getAvailableTimeblocksWithTableCheck)(d,A0.date,r,T0,C,A0.zitplaats||null,A0.duration||null):r)[A0.time]||(A0.time="");}}return A0});};useEffect(()=>{if(K.current){K.current=false;return}x(["date","time","selectedTableNumbers","selectedTableIds"]);},[b.reservationMode,x]);let $=Y=>{E(false),Y==="met_limieten"?o({target:{name:"reservationMode",value:"met_limieten"}}):Y==="onbeperkt_parent"&&(["zonder_regels","vrije_keuze"].includes(b.reservationMode)||o({target:{name:"reservationMode",value:"zonder_regels"}}));},q0=Y=>{E(false),o({target:{name:"reservationMode",value:Y}});},O0=b.reservationMode,d0=!!d?.["general-settings"]?.seatSelectionEnabled,j=Array.isArray(d?.["general-settings"]?.seatAreas)?d["general-settings"].seatAreas:["Terras","Restaurant"],X0=Y=>{W(_=>({..._,zitplaats:Y}));};return f?e0.createElement("div",null,u.errors.openingHoursNotSet," ",e0.createElement("a",{href:"https://happychef.cloud/#/openinghours/dinner",target:"_blank",rel:"noopener noreferrer",style:{color:"var(--color-blue)",textDecoration:"underline"}},u.errors.clickHereToSet)):e0.createElement("form",{className:"account-manage-form",noValidate:true},e0.createElement("div",{className:"form-group reservation-mode"},e0.createElement("div",{className:"reservation-modes-container"},e0.createElement("button",{type:"button",className:`reservation-mode-button ${O0==="met_limieten"?"active":""}`,onClick:()=>$("met_limieten"),"aria-pressed":O0==="met_limieten"},u.modes.withLimits),e0.createElement("button",{type:"button",className:`reservation-mode-button ${["onbeperkt_parent","zonder_regels","vrije_keuze"].includes(O0)?"active":""}`,onClick:()=>$("onbeperkt_parent"),"aria-pressed":["onbeperkt_parent","zonder_regels","vrije_keuze"].includes(O0)},u.modes.unlimited)),["onbeperkt_parent","zonder_regels","vrije_keuze"].includes(O0)&&e0.createElement("div",{className:"reservation-modes-container sub-modes"},e0.createElement("button",{type:"button",className:`reservation-mode-button ${O0==="zonder_regels"?"active":""}`,onClick:()=>q0("zonder_regels"),"aria-pressed":O0==="zonder_regels"},u.modes.openingHours),e0.createElement("button",{type:"button",className:`reservation-mode-button ${O0==="vrije_keuze"?"active":""}`,onClick:()=>q0("vrije_keuze"),"aria-pressed":O0==="vrije_keuze"},u.modes.free))),["onbeperkt_parent","zonder_regels","vrije_keuze"].includes(O0)&&e0.createElement("div",{className:"unlimited-mode-warning"},e0.createElement("div",{className:"warning-text"},S?u.warnings?.dateNotAvailableWithLimits||"Let op: deze datum is niet beschikbaar met limieten voor dit aantal gasten. De modus is automatisch overgezet naar onbeperkt vrij.":u.warnings?.unlimitedMode||(g==="nl"?"Let op: Bij onbeperkte boekingen wordt geen rekening gehouden met de maximale capaciteit van het restaurant. De maximale zitplaatslimiet kan worden overschreden.":"Warning: Unlimited bookings do not take into account the restaurant's maximum capacity. The maximum seating limit may be exceeded."))),e0.createElement(L2,{setGuests:y,value:b.guests||l,onChange:V,error:O.guests}),d0&&G&&b.guests>0&&e0.createElement("div",{className:"form-row",style:{marginTop:12}},e0.createElement("div",{className:"reservation-mode-buttons"},j.map(Y=>e0.createElement("button",{key:Y,type:"button",className:`reservation-mode-button ${b.zitplaats===Y?"active":""}`,onClick:()=>X0(Y),"aria-pressed":b.zitplaats===Y},Y))),O.zitplaats&&e0.createElement("small",{className:"error"},O.zitplaats)),d?.account_type==="bowling"&&e0.createElement(j2,{duration:b.duration,handleChange:Y=>{o(Y),x(["date","time","selectedTableNumbers","selectedTableIds"]);},min:d["general-settings"]?.minDuration||30,max:d["general-settings"]?.maxDuration||120,interval:d["general-settings"]?.durationInterval||30}),G&&b.guests>0&&e0.createElement(Ap,{guests:b.guests,formData:b,handleChange:o,resetFormDataFields:x,restaurantData:d,reservations:C,startDate:R,onWeekChange:b0,reservationMode:O0,isAdmin:s}),G&&b.date&&e0.createElement(ep,{guests:b.guests,formData:b,handleChange:o,field:{id:"time",label:u.fields.time},selectedDate:b.date,setCurrentExpandedField:()=>{},restaurantData:d,reservations:C,reservationMode:O0,zitplaats:b.zitplaats||null,isAdmin:s}),I&&e0.createElement(H2,{availableTables:L,isFetching:k,formData:b,setFormData:W,handleChange:o}),k&&b.date&&b.time&&b.guests>0&&e0.createElement("div",{style:{textAlign:"center",padding:"10px",color:"#666",fontSize:"14px"}},"Beschikbare tafels berekenen..."))});tp.displayName="ReservationStepOne";var VM=tp;var QM=()=>localStorage.getItem("preferredLanguage")||"nl",Y0=(b,O,o="nl")=>{let q=QM();return (b[q]||b[o]||{})[O]||{}};var ip={nl:{formField:{selectPlaceholder:"Selecteer een optie",tooltip:{confirm:"Klik om te Bevestigen",source:"Gevonden met Happy Ai"}}},en:{formField:{selectPlaceholder:"Select an option",tooltip:{confirm:"Click to Confirm",source:"Found with Happy Ai"}}},fr:{formField:{selectPlaceholder:"S\xE9lectionnez une option",tooltip:{confirm:"Cliquez pour confirmer",source:"Trouv\xE9 avec Happy Ai"}}}};R0(`.new-reservation-page .form-group .magic-tooltip{transition:transform .2s ease;transform-origin:bottom right}.new-reservation-page .form-group .magic-tooltip:hover{transform:scale(1.05)}.form-field-label{display:block;font-size:.8rem;font-weight:600;margin-bottom:4px;color:#333}.required-asterisk{color:red;margin-left:2px}.name-match-item{padding:8px 0;cursor:pointer;transition:background-color .15s ease}.name-match-item:hover{background-color:#f5f0f7}.name-match-item:not(:last-child){border-bottom:1px solid #f0f0f0}
|
|
42
|
-
`);var _4=({label:b,name:O,type:o="text",icon:q,value:W,onChange:n,onBlur:a,error:f,placeholder:d,halfWidth:s,options:g=[],selectPlaceholder:u,rightIcon:l,onRightIconClick:y,tooltipContent:R,tooltipAlign:m,required:C})=>{let B=Y0(ip,"formField"),v=u||B.selectPlaceholder,[L,P]=useState(false),k=useRef(null),T=useRef(null),S=l,E=q;useEffect(()=>{let U=X=>{k.current&&!k.current.contains(X.target)&&(T.current&&clearTimeout(T.current),P(false));};return L&&document.addEventListener("mousedown",U),()=>document.removeEventListener("mousedown",U)},[L]);let K={name:O,value:W,onChange:n,onBlur:a,"aria-label":b,className:`form-control ${f?"input-error":""}`,style:q?{paddingLeft:"35px",boxSizing:"border-box"}:{}},D=()=>o==="select"?e0.createElement("select",{...K},e0.createElement("option",{value:""},v),g.map(U=>e0.createElement("option",{key:U.value,value:U.value},U.label))):o==="textarea"?e0.createElement("textarea",{...K,placeholder:d}):e0.createElement("input",{type:o,...K,placeholder:d}),x=o==="textarea";return e0.createElement("div",{className:`form-group ${s?"half-width":""}`,style:{position:"relative"}},b&&e0.createElement("label",{className:"form-field-label"},b,
|
|
42
|
+
`);var _4=({label:b,name:O,type:o="text",icon:q,value:W,onChange:n,onBlur:a,error:f,placeholder:d,halfWidth:s,options:g=[],selectPlaceholder:u,rightIcon:l,onRightIconClick:y,tooltipContent:R,tooltipAlign:m,required:C})=>{let B=Y0(ip,"formField"),v=u||B.selectPlaceholder,[L,P]=useState(false),k=useRef(null),T=useRef(null),S=l,E=q;useEffect(()=>{let U=X=>{k.current&&!k.current.contains(X.target)&&(T.current&&clearTimeout(T.current),P(false));};return L&&document.addEventListener("mousedown",U),()=>document.removeEventListener("mousedown",U)},[L]);let K={name:O,value:W,onChange:n,onBlur:a,"aria-label":b,className:`form-control ${f?"input-error":""}`,style:q?{paddingLeft:"35px",boxSizing:"border-box"}:{}},D=()=>o==="select"?e0.createElement("select",{...K},e0.createElement("option",{value:""},v),g.map(U=>e0.createElement("option",{key:U.value,value:U.value},U.label))):o==="textarea"?e0.createElement("textarea",{...K,placeholder:d}):e0.createElement("input",{type:o,...K,placeholder:d}),x=o==="textarea";return e0.createElement("div",{className:`form-group ${s?"half-width":""}`,style:{position:"relative"}},C&&b&&e0.createElement("label",{className:"form-field-label"},b," ",e0.createElement("span",{className:"required-asterisk"},"*")),e0.createElement("div",{className:"input-container",style:{position:"relative"}},E&&e0.createElement(E,{className:"input-icon",style:{position:"absolute",left:"10px",top:x?"12px":"50%",transform:x?"none":"translateY(-50%)",color:"#6c757d",pointerEvents:"none",zIndex:1}}),D(),S&&e0.createElement("div",{className:"magic-wand-container",onClick:y,onMouseEnter:()=>{T.current&&clearTimeout(T.current),P(true);},onMouseLeave:()=>{T.current=setTimeout(()=>P(false),1200);},style:{position:"absolute",top:"50%",right:"10px",transform:"translateY(-50%)",cursor:"pointer"}},e0.createElement(S,{className:"magic-wand-icon",style:{color:"#B567C2"}}),L&&R&&e0.createElement("div",{ref:k,className:"magic-tooltip",style:{position:"absolute",bottom:"100%",...m==="left"?{left:0}:{right:0},backgroundColor:"#fff",color:"#333",borderRadius:"8px",fontSize:"0.9rem",boxShadow:"0px 4px 10px rgba(0,0,0,0.15)",zIndex:1e3,marginBottom:"8px",minWidth:"220px",overflow:"hidden"}},e0.createElement("div",{style:{position:"relative",zIndex:2,padding:"12px 20px"}},e0.createElement("div",{style:{borderBottom:"1px solid #eee",marginBottom:"8px",paddingBottom:"4px"}},R),e0.createElement("div",{style:{fontWeight:"bold",fontSize:"13px",textAlign:"center",marginTop:"8px"}},B.tooltip?.confirm),e0.createElement("div",{style:{fontSize:"0.7rem",textAlign:"center",color:"#999",marginTop:"4px"}},B.tooltip?.source))))),f&&e0.createElement("p",{className:"form-error"},f))},H0=e0.memo(_4);var Z0=P0(e1());P0(Rp());var fp={nl:{reservationStepTwoFiltering:{labels:{menu:"Menu",firstName:"Voornaam",lastName:"Achternaam",email:"E-mail",phone:"Mobiel nummer",extraInfo:"Extra info",seatPlace:"Zitplaats"},placeholders:{firstName:"Voornaam",lastName:"Achternaam",email:"E-mailadres",phone:"Mobiel nummer",extraInfo:"Extra informatie",seatPlace:"Selecteer zitplaats"},magic:{title:"Gast Gegevens"}},reservationSummary:{title:"Reservatie Gegevens",guests:"Aantal gasten",date:"Datum",time:"Tijd",firstName:"Voornaam",lastName:"Achternaam",email:"E-mail",phone:"Mobiel nummer",menu:"Menu",staff:"Aangemaakt door",giftcard:"Cadeaubon",extraInfo:"Extra informatie",seatPlace:"Zitplaats",newReservationButton:"Nieuwe Reservatie Maken"}},en:{reservationStepTwoFiltering:{labels:{menu:"Menu",firstName:"First Name",lastName:"Last Name",email:"Email",phone:"Mobile Number",extraInfo:"Extra Info",seatPlace:"Seating area"},placeholders:{firstName:"First Name",lastName:"Last Name",email:"Email Address",phone:"Mobile Number",extraInfo:"Extra Information",seatPlace:"Select seating area"},magic:{title:"Guest Details"}},reservationSummary:{title:"Reservation Details",guests:"Number of Guests",date:"Date",time:"Time",firstName:"First Name",lastName:"Last Name",email:"Email",phone:"Mobile Number",menu:"Menu",staff:"Created by",giftcard:"Gift Card",extraInfo:"Extra Information",seatPlace:"Seating area",newReservationButton:"New Reservation"}},fr:{reservationStepTwoFiltering:{labels:{menu:"Menu",firstName:"Pr\xE9nom",lastName:"Nom",email:"E-mail",phone:"Num\xE9ro de portable",extraInfo:"Informations suppl\xE9mentaires",seatPlace:"Zone d\u2019assise"},placeholders:{firstName:"Pr\xE9nom",lastName:"Nom",email:"Adresse e-mail",phone:"Num\xE9ro de portable",extraInfo:"Informations suppl\xE9mentaires",seatPlace:"S\xE9lectionner une zone d\u2019assise"},magic:{title:"D\xE9tails Invit\xE9"}},reservationSummary:{title:"D\xE9tails de la R\xE9servation",guests:"Nombre d'invit\xE9s",date:"Date",time:"Heure",firstName:"Pr\xE9nom",lastName:"Nom",email:"E-mail",phone:"Num\xE9ro de portable",menu:"Menu",staff:"Cr\xE9\xE9 par",giftcard:"Carte Cadeau",extraInfo:"Informations suppl\xE9mentaires",seatPlace:"Zone d\u2019assise",newReservationButton:"Nouvelle R\xE9servation"}}};R0(`.new-reservation-page .name-fields{display:flex;gap:20px;align-items:flex-end}.input-container .form-control{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px 10px 10px 35px;background-color:#fff;border:#ccc 1px solid;cursor:pointer;-webkit-user-select:none;user-select:none;text-align:left;border-radius:5px;font-size:16px;box-sizing:border-box}
|
|
43
43
|
`);var Np=e0.memo(({formData:b,errors:O,handleChange:o,setFormData:q,menuData:W})=>{let n=QM(),a=Y0(fp,"reservationStepTwoFiltering"),[f,d]=useState([]),[s,g]=useState(false),[u,l]=useState(null),[y,R]=useState([]),m=n1(),C=FaMagic,B=()=>{u&&L();};useEffect(()=>{if(Z0.default.locale(n),!b.date||!b.time||!W.length)return d([]);let U=(0, Z0.default)(`${b.date} ${b.time}`,"YYYY-MM-DD HH:mm"),X=W.filter(G=>{let I=U.isBetween((0, Z0.default)(G.startDate,"YYYY-MM-DD"),(0, Z0.default)(G.endDate,"YYYY-MM-DD"),"day","[]"),V=(0, Z0.default)(b.time,"HH:mm").isBetween((0, Z0.default)(G.startHour,"HH:mm"),(0, Z0.default)(G.endHour,"HH:mm"),"minute","[]"),$=(0, Z0.default)(U).locale("nl").format("dddd").toLowerCase(),q0=(0, Z0.default)(U).locale("en").format("dddd").toLowerCase(),O0=(G.daysOfWeek||[]).map(j=>j.toLowerCase()),d0=!O0.length||O0.includes($)||O0.includes(q0);return I&&V&&d0});d(X);},[b.date,b.time,W,n]);let v=async()=>{if(s||u)return;let U=(b.email||"").trim().toLowerCase(),X=(b.phone||"").trim(),G=U&&[".com",".net",".be",".nl"].some($=>U.endsWith($)),I=!!X&&(X.startsWith("+32")?X.length>=12:X.length>=10);if(!G&&!I)return;let V=[];G&&V.push("email"),I&&V.push("phone");try{let $=await m.post(`${window.baseDomain}api/autofill`,{email:U,phone:X});$?.firstName&&$?.lastName&&$?.email&&$?.phone&&l({...$,sources:V});}catch{console.error("Autofill error");}};useEffect(()=>{v();},[b.email,b.phone]);let L=()=>{u&&(q(U=>({...U,firstName:u.firstName,lastName:u.lastName,email:u.email,phone:u.phone})),g(true),l(null));},P=async()=>{let U=(b.firstName||"").trim(),X=(b.lastName||"").trim();if(U.length<2&&X.length<2){R([]);return}try{let G=await m.post(`${window.baseDomain}api/autofill-name`,{firstName:U||void 0,lastName:X||void 0});Array.isArray(G)&&G.length>0?R(G):R([]);}catch{R([]);}},k=U=>{q(X=>({...X,firstName:U.firstName,lastName:U.lastName,email:U.email,phone:U.phone})),R([]),g(true);};useEffect(()=>{if(s)return;let U=(b.firstName||"").trim(),X=(b.lastName||"").trim();if(U.length<2&&X.length<2){R([]);return}R([]);let G=setTimeout(()=>{P();},500);return ()=>clearTimeout(G)},[b.firstName,b.lastName]);let T=useMemo(()=>{if(!u)return {email:{},phone:{}};let U=u.sources.includes("email")&&(b.email||"").trim().toLowerCase()===u.email.trim().toLowerCase(),X=u.sources.includes("phone")&&(b.phone||"").trim()===u.phone.trim(),G={rightIcon:C,onRightIconClick:B};return {email:U?{...G,tooltipContent:e0.createElement("div",null,e0.createElement("div",{style:{textAlign:"center",fontWeight:"bold"}},a.magic?.title),e0.createElement("div",null,u.firstName," ",u.lastName),e0.createElement("div",null,u.phone))}:{},phone:X?{...G,tooltipContent:e0.createElement("div",null,e0.createElement("div",{style:{textAlign:"center",fontWeight:"bold"}},a.magic?.title),e0.createElement("div",null,u.firstName," ",u.lastName),e0.createElement("div",null,u.email))}:{}}},[u,b.email,b.phone,a.magic?.title]),S=useMemo(()=>{if(!y.length)return {firstName:{},lastName:{}};let X=(b.lastName||"").trim().length>0?"lastName":"firstName",G=e0.createElement("div",{style:{maxHeight:"200px",overflowY:"auto"}},y.map((V,$)=>e0.createElement("div",{key:$,className:"name-match-item",onClick:q0=>{q0.stopPropagation(),k(V);}},e0.createElement("div",{style:{fontWeight:"500"}},V.firstName," ",V.lastName),e0.createElement("div",{style:{fontSize:"0.8rem",color:"#666"}},V.email),V.phone&&e0.createElement("div",{style:{fontSize:"0.8rem",color:"#666"}},V.phone)))),I={rightIcon:FaMagic,onRightIconClick:()=>{},tooltipContent:e0.createElement("div",null,e0.createElement("div",{style:{textAlign:"center",fontWeight:"bold"}},a.magic?.title),G)};return {firstName:X==="firstName"?{...I,tooltipAlign:"left"}:{},lastName:X==="lastName"?I:{}}},[y,b.lastName,a.magic?.title]),{reservationMode:E}=b,w=E==="check_in",K=window.generalSettings?.obligatedFields||[],D=U=>K.includes(U),x=U=>!w&&D(U),b0=(U,X)=>{let G=a.labels?.[U]||X;return w?`${G} (Optioneel)`:D(U)?`${G} *`:G};return e0.createElement("div",{className:"reservation-step-two"},e0.createElement("div",{className:"account-manage-form"},f.length>0&&e0.createElement(H0,{label:`${a.labels?.menu||"Menu"}${w?" (Optioneel)":""}`,name:"menu",type:"select",options:f.map(U=>({value:U.name,label:U.name})),value:b.menu,onChange:o,error:w?null:O.menu}),e0.createElement("div",{className:"name-fields"},e0.createElement(H0,{label:b0("firstName","Voornaam"),name:"firstName",placeholder:a.placeholders?.firstName||"",value:b.firstName,onChange:o,error:w?null:O.firstName,icon:FaUser,required:x("firstName"),...S.firstName}),e0.createElement(H0,{label:b0("lastName","Achternaam"),name:"lastName",placeholder:a.placeholders?.lastName||"",value:b.lastName,onChange:o,error:w?null:O.lastName,icon:FaUser,required:x("lastName"),...S.lastName})),e0.createElement(H0,{label:b0("email","Email"),name:"email",type:"email",placeholder:a.placeholders?.email||"",value:b.email,onChange:o,onBlur:v,error:O.email,icon:FaEnvelope,required:x("email"),...T.email}),e0.createElement(H0,{label:b0("phone","Telefoon"),name:"phone",type:"tel",placeholder:a.placeholders?.phone||"",value:b.phone,onChange:o,onBlur:v,error:O.phone,icon:FaPhone,required:x("phone"),...T.phone}),e0.createElement(H0,{label:a.labels?.extraInfo||"Extra info",name:"extraInfo",type:"textarea",placeholder:a.placeholders?.extraInfo||"",value:b.extraInfo,onChange:o,error:O.extraInfo,icon:FaInfoCircle})))});Np.displayName="ReservationStepTwo";var Y2=Np;var Bp={nl:{reservationStepTwoFiltering:{labels:{menu:"Menu",firstName:"Voornaam",lastName:"Achternaam",email:"E-mail",phone:"Mobiel nummer",extraInfo:"Extra info",seatPlace:"Zitplaats"},placeholders:{firstName:"Voornaam",lastName:"Achternaam",email:"E-mailadres",phone:"Mobiel nummer",extraInfo:"Extra informatie",seatPlace:"Selecteer zitplaats"},magic:{title:"Gast Gegevens"}},reservationSummary:{title:"Reservatie Gegevens",guests:"Aantal gasten",date:"Datum",time:"Tijd",firstName:"Voornaam",lastName:"Achternaam",email:"E-mail",phone:"Mobiel nummer",menu:"Menu",staff:"Aangemaakt door",giftcard:"Cadeaubon",extraInfo:"Extra informatie",seatPlace:"Zitplaats",newReservationButton:"Nieuwe Reservatie Maken"}},en:{reservationStepTwoFiltering:{labels:{menu:"Menu",firstName:"First Name",lastName:"Last Name",email:"Email",phone:"Mobile Number",extraInfo:"Extra Info",seatPlace:"Seating area"},placeholders:{firstName:"First Name",lastName:"Last Name",email:"Email Address",phone:"Mobile Number",extraInfo:"Extra Information",seatPlace:"Select seating area"},magic:{title:"Guest Details"}},reservationSummary:{title:"Reservation Details",guests:"Number of Guests",date:"Date",time:"Time",firstName:"First Name",lastName:"Last Name",email:"Email",phone:"Mobile Number",menu:"Menu",staff:"Created by",giftcard:"Gift Card",extraInfo:"Extra Information",seatPlace:"Seating area",newReservationButton:"New Reservation"}},fr:{reservationStepTwoFiltering:{labels:{menu:"Menu",firstName:"Pr\xE9nom",lastName:"Nom",email:"E-mail",phone:"Num\xE9ro de portable",extraInfo:"Informations suppl\xE9mentaires",seatPlace:"Zone d\u2019assise"},placeholders:{firstName:"Pr\xE9nom",lastName:"Nom",email:"Adresse e-mail",phone:"Num\xE9ro de portable",extraInfo:"Informations suppl\xE9mentaires",seatPlace:"S\xE9lectionner une zone d\u2019assise"},magic:{title:"D\xE9tails Invit\xE9"}},reservationSummary:{title:"D\xE9tails de la R\xE9servation",guests:"Nombre d'invit\xE9s",date:"Date",time:"Heure",firstName:"Pr\xE9nom",lastName:"Nom",email:"E-mail",phone:"Num\xE9ro de portable",menu:"Menu",staff:"Cr\xE9\xE9 par",giftcard:"Carte Cadeau",extraInfo:"Informations suppl\xE9mentaires",seatPlace:"Zone d\u2019assise",newReservationButton:"Nouvelle R\xE9servation"}}};R0(`.new-reservation-page .reservation-sidebar-component .reservation-summary .modal-title{margin-top:0;margin-bottom:20px}.new-reservation-page .reservation-sidebar-component .reservation-summary .reservation-details{list-style-type:none;padding:0;margin:0 0 20px;width:100%}.new-reservation-page .reservation-sidebar-component .reservation-summary .reservation-details li{margin-bottom:10px;font-size:15px;align-items:left;text-align:left}.new-reservation-page .reservation-sidebar-component .reservation-summary .reservation-details li strong{font-weight:700}.new-reservation-page .reservation-sidebar-component .reservation-summary{align-items:left}
|
|
44
44
|
`);var G4=({formData:b,onNewReservation:O})=>{let o=Y0(Bp,"reservationSummary");return e0.createElement("div",{className:"reservation-summary"},e0.createElement("ul",{className:"reservation-details"},e0.createElement("li",null,e0.createElement("strong",null,o.title)),e0.createElement("li",null,e0.createElement("strong",null,o.guests,":")," ",b.guests),e0.createElement("li",null,e0.createElement("strong",null,o.date,":")," ",b.date),e0.createElement("li",null,e0.createElement("strong",null,o.time,":")," ",b.time),e0.createElement("li",null,e0.createElement("strong",null,o.firstName,":")," ",b.firstName),e0.createElement("li",null,e0.createElement("strong",null,o.lastName,":")," ",b.lastName),e0.createElement("li",null,e0.createElement("strong",null,o.email,":")," ",b.email),e0.createElement("li",null,e0.createElement("strong",null,o.phone,":")," ",b.phone),b.menu&&e0.createElement("li",null,e0.createElement("strong",null,o.menu,":")," ",b.menu),b.personeel&&e0.createElement("li",null,e0.createElement("strong",null,o.staff,":")," ",b.personeel),b.giftcard&&e0.createElement("li",null,e0.createElement("strong",null,o.giftcard,":")," ",b.giftcard),b.extraInfo&&e0.createElement("li",null,e0.createElement("strong",null,o.extraInfo,":")," ",b.extraInfo),b.zitplaats&&e0.createElement("li",null,e0.createElement("strong",null,o.seatPlace,":")," ",b.zitplaats)),e0.createElement("button",{className:"button-style-3",onClick:O},o.newReservationButton))},K2=G4;var Xp={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 Q4=({restaurantData:b,formData:O,handleChange:o,resetFormDataFields:q})=>{let W=Y0(Xp,"giftcardSelection"),[n,a]=useState([]);if(useEffect(()=>{if(!b)return;let s=["breakfast","lunch","dinner"],g=new Set;s.forEach(u=>{let l=b[`openinghours-${u}`]?.schemeSettings||{};Object.values(l).forEach(y=>{y?.giftcardsEnabled&&Array.isArray(y.giftcards)&&y.giftcards.forEach(R=>{let m=typeof R=="string"?R.trim():String(R||"").trim();m&&g.add(m);});});}),a([...g]);},[b]),!n.length)return null;let f=n.map(s=>({value:s,label:s})),d=s=>{o({target:{name:"giftcard",value:s.target.value}}),q(["date","time"]);};return e0.createElement("div",{className:"giftcard-selection"},e0.createElement(H0,{label:W.labels?.giftcard||"Giftcard",name:"giftcard",type:"select",options:f,value:O.giftcard||"",onChange:d,selectPlaceholder:W.options?.noGiftcard||"Geen giftcard"}))},V2=Q4;var $2=P0(e1());var Tp={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)}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@happychef/reservation-sidebar",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.56",
|
|
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",
|