@happychef/reservation-sidebar 2.8.34 → 2.8.35
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
|
@@ -40,7 +40,7 @@ Checking Time: ${X} -> Determined Meal: ${u}`),!u){L0(` Time ${X} has no associ
|
|
|
40
40
|
}
|
|
41
41
|
`),A0__default.default.createElement("div",{style:h.grid},f.map(B=>A0__default.default.createElement("button",{key:B.value,type:"button",className:`duration-btn ${parseInt(p)===B.value?"active-duration":""}`,tabIndex:"-1",style:{...h.optionBtn,...!n&&parseInt(p)===B.value?h.activeBtn:{}},onClick:()=>u(B.value),onMouseDown:T=>T.preventDefault()},B.label)),X&&A0__default.default.createElement("button",{type:"button",className:`duration-btn ${n?"active-duration":""}`,tabIndex:"-1",style:{...h.optionBtn,...n?h.activeBtn:{},flex:"0 0 auto",width:"auto",minWidth:"40px"},onClick:g,onMouseDown:B=>B.preventDefault()},n?A0__default.default.createElement(fa.FaMinus,{size:12}):A0__default.default.createElement(fa.FaPlus,{size:12}))),A0__default.default.createElement(framerMotion.AnimatePresence,null,n&&A0__default.default.createElement(framerMotion.motion.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},style:{overflow:"hidden"}},A0__default.default.createElement("div",{style:h.stepperContainer},A0__default.default.createElement("button",{type:"button",style:h.stepperBtn,onClick:()=>l(-1)},A0__default.default.createElement(fa.FaMinus,{size:12})),A0__default.default.createElement("span",{style:h.stepperValue},N(parseInt(p)||0)),A0__default.default.createElement("button",{type:"button",style:h.stepperBtn,onClick:()=>l(1)},A0__default.default.createElement(fa.FaPlus,{size:12}))))))},h2=Vo;var jb=A0.memo(({formData:p,errors:c,handleChange:e,handleStepOneSubmit:q,setFormData:W,timeblocks:a,loadingTimeblocks:n,timeblocksError:r,restaurantData:s,isAdmin:f=false})=>{let X=localStorage.getItem("preferredLanguage")||"nl",R=W1[X].reservationStepOne,[u,g]=A0.useState(p.guests||2),[l,h]=A0.useState(null),[N,B]=A0.useState([]),T=O1(),[S,w]=A0.useState([]),[_,y]=A0.useState(false),J=A0.useRef(false),V=A0.useCallback(F=>{W(K=>{let E={...K};return F.forEach(d0=>{E[d0]="";}),(F.includes("date")||F.includes("time")||F.includes("guests"))&&(E.selectedTableNumbers=[],E.selectedTableIds=[],w([])),E});},[W]);A0.useEffect(()=>{let K=(0, Fb.default)().tz("Europe/Amsterdam").startOf("day").clone().startOf("isoWeek");for(;vz(K);)K.add(1,"week");h(K);},[]),A0.useEffect(()=>{(async()=>{if(l&&(p.reservationMode==="met_limieten"||p.reservationMode==="zonder_regels"||p.reservationMode==="vrije_keuze")){let K=s?.["table-settings"]||{},E=K.isInstalled===true&&K.assignmentMode==="automatic";if(p.reservationMode==="met_limieten"||p.reservationMode==="vrije_keuze"||p.reservationMode==="zonder_regels"&&E){let d0=l.format("YYYY-MM-DD"),$=l.clone().add(13,"days").format("YYYY-MM-DD"),I=localStorage.getItem("username"),M0=`${window.baseDomain}api/slots/${I}/${d0}/${$}`;try{let v0=await T.get(M0,{noCache:!0});B(v0||[]);}catch(v0){console.error("Error fetching reservations:",v0),B([]);}}else B([]);}else B([]);})();},[l,T,p.reservationMode,s]);let b0=F=>{h(F),V(["date","time","selectedTableNumbers","selectedTableIds"]);};A0.useEffect(()=>{if(!J.current){let F=false,K={};p.reservationMode||(K.reservationMode="met_limieten",F=true),(!p.guests||p.guests==="")&&(K.guests=u,F=true),Array.isArray(p.selectedTableNumbers)||(K.selectedTableNumbers=[],F=true),Array.isArray(p.selectedTableIds)||(K.selectedTableIds=[],F=true),F&&setTimeout(()=>{e({target:{multiple:true,updates:K}});},0),J.current=true;}},[p.reservationMode,p.guests,p.selectedTableNumbers,p.selectedTableIds,u,e]);let O0=A0.useMemo(()=>s?.["table-settings"]||{},[s]),c0=A0.useMemo(()=>O0.isInstalled===true&&O0.assignmentMode==="automatic",[O0]),i0=A0.useMemo(()=>["met_limieten","zonder_regels","vrije_keuze"].includes(p.reservationMode),[p.reservationMode]),q0=A0.useMemo(()=>i0&&p.date&&p.time&&p.guests>0&&c0&&S.length>0,[i0,p.date,p.time,p.guests,c0,S.length]);A0.useEffect(()=>{if(!c0||!p.date||!p.time||p.guests<=0||!s||!N){w([]),y(false);return}y(true);let F=setTimeout(()=>{(window.requestIdleCallback||(E=>setTimeout(E,1)))(()=>{try{let E=new Set;s?.manualFloors&&Array.isArray(s.manualFloors)&&s.manualFloors.forEach(v0=>{(v0.tables||[]).forEach(k0=>{k0.tableNumber!=null&&E.add(k0.tableNumber);});});let d0=[...s?.floors||[],...s?.manualFloors||[]],$={...s,floors:d0},M0=p1("getAvailableTablesForTime",Ub.getAvailableTablesForTime,$,p.date,p.time,p.guests,N,p.zitplaats||null).map(v0=>({...v0,isManual:E.has(v0.tableNumber)}));w(M0);}catch(E){console.error("Error calculating available tables:",E),w([]);}finally{y(false);}});},500);return ()=>{clearTimeout(F),y(false);}},[c0,p.date,p.time,p.guests,p.zitplaats,s,N]),A0.useEffect(()=>{if(S.length>0){let F=p.selectedTableNumbers||[],K=p.selectedTableIds||[],E=[],d0=[];F.forEach($=>{let I=S.find(M0=>M0.tableNumber===$);I&&K.includes(I.tableId)&&(E.push($),d0.push(I.tableId));}),E.length!==F.length&&setTimeout(()=>{e({target:{multiple:true,updates:{selectedTableNumbers:E,selectedTableIds:d0}}});},0);}else (p.selectedTableNumbers?.length>0||p.selectedTableIds?.length>0)&&setTimeout(()=>{e({target:{multiple:true,updates:{selectedTableNumbers:[],selectedTableIds:[]}}});},0);},[S,p.selectedTableNumbers,p.selectedTableIds]);let k=F=>{let K=parseInt(F.target.value,10)||1;g(K),e(F),V(["time","selectedTableNumbers","selectedTableIds"]);};A0.useEffect(()=>{V(["date","time","selectedTableNumbers","selectedTableIds"]);},[p.reservationMode,V]);let v=F=>{F==="met_limieten"?e({target:{name:"reservationMode",value:"met_limieten"}}):F==="onbeperkt_parent"&&(["zonder_regels","vrije_keuze"].includes(p.reservationMode)||e({target:{name:"reservationMode",value:"zonder_regels"}}));},Q=F=>{e({target:{name:"reservationMode",value:F}});},C=p.reservationMode,P=!!s?.["general-settings"]?.seatSelectionEnabled,Y=Array.isArray(s?.["general-settings"]?.seatAreas)?s["general-settings"].seatAreas:["Terras","Restaurant"],e0=F=>{W(K=>({...K,zitplaats:F}));};return r?A0__default.default.createElement("div",null,R.errors.openingHoursNotSet," ",A0__default.default.createElement("a",{href:"https://happychef.cloud/#/openinghours/dinner",target:"_blank",rel:"noopener noreferrer",style:{color:"var(--color-blue)",textDecoration:"underline"}},R.errors.clickHereToSet)):A0__default.default.createElement("form",{className:"account-manage-form",noValidate:true},A0__default.default.createElement("div",{className:"form-group reservation-mode"},A0__default.default.createElement("div",{className:"reservation-modes-container"},A0__default.default.createElement("button",{type:"button",className:`reservation-mode-button ${C==="met_limieten"?"active":""}`,onClick:()=>v("met_limieten"),"aria-pressed":C==="met_limieten"},R.modes.withLimits),A0__default.default.createElement("button",{type:"button",className:`reservation-mode-button ${["onbeperkt_parent","zonder_regels","vrije_keuze"].includes(C)?"active":""}`,onClick:()=>v("onbeperkt_parent"),"aria-pressed":["onbeperkt_parent","zonder_regels","vrije_keuze"].includes(C)},R.modes.unlimited)),["onbeperkt_parent","zonder_regels","vrije_keuze"].includes(C)&&A0__default.default.createElement("div",{className:"reservation-modes-container sub-modes"},A0__default.default.createElement("button",{type:"button",className:`reservation-mode-button ${C==="zonder_regels"?"active":""}`,onClick:()=>Q("zonder_regels"),"aria-pressed":C==="zonder_regels"},R.modes.openingHours),A0__default.default.createElement("button",{type:"button",className:`reservation-mode-button ${C==="vrije_keuze"?"active":""}`,onClick:()=>Q("vrije_keuze"),"aria-pressed":C==="vrije_keuze"},R.modes.free))),["onbeperkt_parent","zonder_regels","vrije_keuze"].includes(C)&&A0__default.default.createElement("div",{className:"unlimited-mode-warning"},A0__default.default.createElement("div",{className:"warning-text"},R.warnings?.unlimitedMode||(X==="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."))),A0__default.default.createElement(n2,{setGuests:g,value:p.guests||u,onChange:k,error:c.guests}),P&&i0&&p.guests>0&&A0__default.default.createElement("div",{className:"form-row",style:{marginTop:12}},A0__default.default.createElement("div",{className:"reservation-mode-buttons"},Y.map(F=>A0__default.default.createElement("button",{key:F,type:"button",className:`reservation-mode-button ${p.zitplaats===F?"active":""}`,onClick:()=>e0(F),"aria-pressed":p.zitplaats===F},F))),c.zitplaats&&A0__default.default.createElement("small",{className:"error"},c.zitplaats)),s?.account_type==="bowling"&&A0__default.default.createElement(h2,{duration:p.duration,handleChange:F=>{e(F),V(["date","time","selectedTableNumbers","selectedTableIds"]);},min:s["general-settings"]?.minDuration||30,max:s["general-settings"]?.maxDuration||120,interval:s["general-settings"]?.durationInterval||30}),i0&&p.guests>0&&A0__default.default.createElement(wb,{guests:p.guests,formData:p,handleChange:e,resetFormDataFields:V,restaurantData:s,reservations:N,startDate:l,onWeekChange:b0,reservationMode:C,isAdmin:f}),i0&&p.date&&A0__default.default.createElement(Pb,{guests:p.guests,formData:p,handleChange:e,field:{id:"time",label:R.fields.time},selectedDate:p.date,setCurrentExpandedField:()=>{},restaurantData:s,reservations:N,reservationMode:C,zitplaats:p.zitplaats||null,isAdmin:f}),q0&&A0__default.default.createElement(g2,{availableTables:S,isFetching:_,formData:p,setFormData:W,handleChange:e}),_&&p.date&&p.time&&p.guests>0&&A0__default.default.createElement("div",{style:{textAlign:"center",padding:"10px",color:"#666",fontSize:"14px"}},"Beschikbare tafels berekenen..."))});jb.displayName="ReservationStepOne";var TM=jb;var gM=()=>localStorage.getItem("preferredLanguage")||"nl",H0=(p,c,e="nl")=>{let q=gM();return (p[q]||p[e]||{})[c]||{}};var Gb={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
42
|
`);var b4=({label:p,name:c,type:e="text",icon:q,value:W,onChange:a,onBlur:n,error:r,placeholder:s,halfWidth:f,options:X=[],selectPlaceholder:R,rightIcon:u,onRightIconClick:g,tooltipContent:l,required:h})=>{let N=H0(Gb,"formField"),B=R||N.selectPlaceholder,[T,S]=A0.useState(false),w=A0.useRef(null),_=A0.useRef(null),y=u,J=q;A0.useEffect(()=>{let O0=c0=>{w.current&&!w.current.contains(c0.target)&&(_.current&&clearTimeout(_.current),S(false));};return T&&document.addEventListener("mousedown",O0),()=>document.removeEventListener("mousedown",O0)},[T]);let V={name:c,value:W,onChange:a,onBlur:n,"aria-label":p,className:`form-control ${r?"input-error":""}`};return A0__default.default.createElement("div",{className:`form-group ${f?"half-width":""}`,style:{position:"relative"}},h&&p&&A0__default.default.createElement("label",{className:"form-field-label"},p," ",A0__default.default.createElement("span",{className:"required-asterisk"},"*")),A0__default.default.createElement("div",{className:"input-container"},J&&A0__default.default.createElement(J,{className:"input-icon"}),e==="select"?A0__default.default.createElement("select",{...V},A0__default.default.createElement("option",{value:""},B),X.map(O0=>A0__default.default.createElement("option",{key:O0.value,value:O0.value},O0.label))):e==="textarea"?A0__default.default.createElement("textarea",{...V,placeholder:s}):A0__default.default.createElement("input",{type:e,...V,placeholder:s}),y&&A0__default.default.createElement("div",{className:"magic-wand-container",onClick:g,onMouseEnter:()=>{_.current&&clearTimeout(_.current),S(true);},onMouseLeave:()=>{_.current=setTimeout(()=>S(false),1200);},style:{position:"absolute",top:"50%",right:"10px",transform:"translateY(-50%)",cursor:"pointer"}},A0__default.default.createElement(y,{className:"magic-wand-icon",style:{color:"#B567C2"}}),T&&l&&A0__default.default.createElement("div",{ref:w,className:"magic-tooltip",style:{position:"absolute",bottom:"100%",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"}},A0__default.default.createElement("div",{style:{position:"relative",zIndex:2,padding:"12px 20px"}},A0__default.default.createElement("div",{style:{borderBottom:"1px solid #eee",marginBottom:"8px",paddingBottom:"4px"}},l),A0__default.default.createElement("div",{style:{fontWeight:"bold",fontSize:"13px",textAlign:"center",marginTop:"8px"}},N.tooltip?.confirm),A0__default.default.createElement("div",{style:{fontSize:"0.7rem",textAlign:"center",color:"#999",marginTop:"4px"}},N.tooltip?.source))))),r&&A0__default.default.createElement("p",{className:"form-error"},r))},P0=A0__default.default.memo(b4);var G0=D0(b1());D0(Vb());var Qb={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}.input-container .form-control{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px;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}
|
|
43
|
-
`);var Mp=A0__default.default.memo(({formData:p,errors:c,handleChange:e,setFormData:q,menuData:W})=>{let a=gM(),n=H0(Qb,"reservationStepTwoFiltering"),[r,s]=A0.useState([]),[f,X]=A0.useState(false),[R,u]=A0.useState(null),[g,l]=A0.useState([]),h=O1(),N=fa.FaMagic,B=()=>{R&&S();};A0.useEffect(()=>{if(G0.default.locale(a),!p.date||!p.time||!W.length)return s([]);let k=(0, G0.default)(`${p.date} ${p.time}`,"YYYY-MM-DD HH:mm"),v=W.filter(Q=>{let C=k.isBetween((0, G0.default)(Q.startDate,"YYYY-MM-DD"),(0, G0.default)(Q.endDate,"YYYY-MM-DD"),"day","[]"),P=(0, G0.default)(p.time,"HH:mm").isBetween((0, G0.default)(Q.startHour,"HH:mm"),(0, G0.default)(Q.endHour,"HH:mm"),"minute","[]"),Y=(0, G0.default)(k).locale("nl").format("dddd").toLowerCase(),e0=(0, G0.default)(k).locale("en").format("dddd").toLowerCase(),F=(Q.daysOfWeek||[]).map(E=>E.toLowerCase()),K=!F.length||F.includes(Y)||F.includes(e0);return C&&P&&K});s(v);},[p.date,p.time,W,a]);let T=async()=>{if(f||R)return;let k=(p.email||"").trim().toLowerCase(),v=(p.phone||"").trim(),Q=k&&[".com",".net",".be",".nl"].some(Y=>k.endsWith(Y)),C=!!v&&(v.startsWith("+32")?v.length>=12:v.length>=10);if(!Q&&!C)return;let P=[];Q&&P.push("email"),C&&P.push("phone");try{let Y=await h.post(`${window.baseDomain}api/autofill`,{email:k,phone:v});Y?.firstName&&Y?.lastName&&Y?.email&&Y?.phone&&u({...Y,sources:P});}catch{console.error("Autofill error");}};A0.useEffect(()=>{T();},[p.email,p.phone]);let S=()=>{R&&(q(k=>({...k,firstName:R.firstName,lastName:R.lastName,email:R.email,phone:R.phone})),X(true),u(null));},w=async()=>{let k=(p.firstName||"").trim(),v=(p.lastName||"").trim();if(k.length<2&&v.length<2){l([]);return}try{let Q=await h.post(`${window.baseDomain}api/autofill-name`,{firstName:k||void 0,lastName:v||void 0});Array.isArray(Q)&&Q.length>0?l(Q):l([]);}catch{l([]);}},_=k=>{q(v=>({...v,firstName:k.firstName,lastName:k.lastName,email:k.email,phone:k.phone})),l([]),X(true);};A0.useEffect(()=>{
|
|
43
|
+
`);var Mp=A0__default.default.memo(({formData:p,errors:c,handleChange:e,setFormData:q,menuData:W})=>{let a=gM(),n=H0(Qb,"reservationStepTwoFiltering"),[r,s]=A0.useState([]),[f,X]=A0.useState(false),[R,u]=A0.useState(null),[g,l]=A0.useState([]),h=O1(),N=fa.FaMagic,B=()=>{R&&S();};A0.useEffect(()=>{if(G0.default.locale(a),!p.date||!p.time||!W.length)return s([]);let k=(0, G0.default)(`${p.date} ${p.time}`,"YYYY-MM-DD HH:mm"),v=W.filter(Q=>{let C=k.isBetween((0, G0.default)(Q.startDate,"YYYY-MM-DD"),(0, G0.default)(Q.endDate,"YYYY-MM-DD"),"day","[]"),P=(0, G0.default)(p.time,"HH:mm").isBetween((0, G0.default)(Q.startHour,"HH:mm"),(0, G0.default)(Q.endHour,"HH:mm"),"minute","[]"),Y=(0, G0.default)(k).locale("nl").format("dddd").toLowerCase(),e0=(0, G0.default)(k).locale("en").format("dddd").toLowerCase(),F=(Q.daysOfWeek||[]).map(E=>E.toLowerCase()),K=!F.length||F.includes(Y)||F.includes(e0);return C&&P&&K});s(v);},[p.date,p.time,W,a]);let T=async()=>{if(f||R)return;let k=(p.email||"").trim().toLowerCase(),v=(p.phone||"").trim(),Q=k&&[".com",".net",".be",".nl"].some(Y=>k.endsWith(Y)),C=!!v&&(v.startsWith("+32")?v.length>=12:v.length>=10);if(!Q&&!C)return;let P=[];Q&&P.push("email"),C&&P.push("phone");try{let Y=await h.post(`${window.baseDomain}api/autofill`,{email:k,phone:v});Y?.firstName&&Y?.lastName&&Y?.email&&Y?.phone&&u({...Y,sources:P});}catch{console.error("Autofill error");}};A0.useEffect(()=>{T();},[p.email,p.phone]);let S=()=>{R&&(q(k=>({...k,firstName:R.firstName,lastName:R.lastName,email:R.email,phone:R.phone})),X(true),u(null));},w=async()=>{let k=(p.firstName||"").trim(),v=(p.lastName||"").trim();if(k.length<2&&v.length<2){l([]);return}try{let Q=await h.post(`${window.baseDomain}api/autofill-name`,{firstName:k||void 0,lastName:v||void 0});Array.isArray(Q)&&Q.length>0?l(Q):l([]);}catch{l([]);}},_=k=>{q(v=>({...v,firstName:k.firstName,lastName:k.lastName,email:k.email,phone:k.phone})),l([]),X(true);};A0.useEffect(()=>{w();},[p.firstName,p.lastName]);let y=A0.useMemo(()=>{if(!R)return {email:{},phone:{}};let k=R.sources.includes("email")&&(p.email||"").trim().toLowerCase()===R.email.trim().toLowerCase(),v=R.sources.includes("phone")&&(p.phone||"").trim()===R.phone.trim(),Q={rightIcon:N,onRightIconClick:B};return {email:k?{...Q,tooltipContent:A0__default.default.createElement("div",null,A0__default.default.createElement("div",{style:{textAlign:"center",fontWeight:"bold"}},n.magic?.title),A0__default.default.createElement("div",null,R.firstName," ",R.lastName),A0__default.default.createElement("div",null,R.phone))}:{},phone:v?{...Q,tooltipContent:A0__default.default.createElement("div",null,A0__default.default.createElement("div",{style:{textAlign:"center",fontWeight:"bold"}},n.magic?.title),A0__default.default.createElement("div",null,R.firstName," ",R.lastName),A0__default.default.createElement("div",null,R.email))}:{}}},[R,p.email,p.phone,n.magic?.title]),J=A0.useMemo(()=>{if(!g.length)return {firstName:{},lastName:{}};let v=(p.lastName||"").trim().length>0?"lastName":"firstName",Q=A0__default.default.createElement("div",{style:{maxHeight:"200px",overflowY:"auto"}},g.map((P,Y)=>A0__default.default.createElement("div",{key:Y,className:"name-match-item",onClick:e0=>{e0.stopPropagation(),_(P);}},A0__default.default.createElement("div",{style:{fontWeight:"500"}},P.firstName," ",P.lastName),A0__default.default.createElement("div",{style:{fontSize:"0.8rem",color:"#666"}},P.email),P.phone&&A0__default.default.createElement("div",{style:{fontSize:"0.8rem",color:"#666"}},P.phone)))),C={rightIcon:fa.FaMagic,onRightIconClick:()=>{},tooltipContent:A0__default.default.createElement("div",null,A0__default.default.createElement("div",{style:{textAlign:"center",fontWeight:"bold"}},n.magic?.title),Q)};return {firstName:v==="firstName"?C:{},lastName:v==="lastName"?C:{}}},[g,p.lastName,n.magic?.title]),{reservationMode:V}=p,b0=V==="check_in",O0=window.generalSettings?.obligatedFields||[],c0=k=>O0.includes(k),i0=k=>!b0&&c0(k),q0=(k,v)=>{let Q=n.labels?.[k]||v;return b0?`${Q} (Optioneel)`:c0(k)?`${Q} *`:Q};return A0__default.default.createElement("div",{className:"reservation-step-two"},A0__default.default.createElement("div",{className:"account-manage-form"},r.length>0&&A0__default.default.createElement(P0,{label:`${n.labels?.menu||"Menu"}${b0?" (Optioneel)":""}`,name:"menu",type:"select",options:r.map(k=>({value:k.name,label:k.name})),value:p.menu,onChange:e,error:b0?null:c.menu}),A0__default.default.createElement("div",{className:"name-fields"},A0__default.default.createElement(P0,{label:q0("firstName","Voornaam"),name:"firstName",placeholder:n.placeholders?.firstName||"",value:p.firstName,onChange:e,onBlur:w,error:b0?null:c.firstName,icon:fa.FaUser,required:i0("firstName"),...J.firstName}),A0__default.default.createElement(P0,{label:q0("lastName","Achternaam"),name:"lastName",placeholder:n.placeholders?.lastName||"",value:p.lastName,onChange:e,onBlur:w,error:b0?null:c.lastName,icon:fa.FaUser,required:i0("lastName"),...J.lastName})),A0__default.default.createElement(P0,{label:q0("email","Email"),name:"email",type:"email",placeholder:n.placeholders?.email||"",value:p.email,onChange:e,onBlur:T,error:c.email,icon:fa.FaEnvelope,required:i0("email"),...y.email}),A0__default.default.createElement(P0,{label:q0("phone","Telefoon"),name:"phone",type:"tel",placeholder:n.placeholders?.phone||"",value:p.phone,onChange:e,onBlur:T,error:c.phone,icon:fa.FaPhone,required:i0("phone"),...y.phone}),A0__default.default.createElement(P0,{label:n.labels?.extraInfo||"Extra info",name:"extraInfo",type:"textarea",placeholder:n.placeholders?.extraInfo||"",value:p.extraInfo,onChange:e,error:c.extraInfo,icon:fa.FaInfoCircle})))});Mp.displayName="ReservationStepTwo";var S2=Mp;var zp={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 q4=({formData:p,onNewReservation:c})=>{let e=H0(zp,"reservationSummary");return A0__default.default.createElement("div",{className:"reservation-summary"},A0__default.default.createElement("ul",{className:"reservation-details"},A0__default.default.createElement("li",null,A0__default.default.createElement("strong",null,e.title)),A0__default.default.createElement("li",null,A0__default.default.createElement("strong",null,e.guests,":")," ",p.guests),A0__default.default.createElement("li",null,A0__default.default.createElement("strong",null,e.date,":")," ",p.date),A0__default.default.createElement("li",null,A0__default.default.createElement("strong",null,e.time,":")," ",p.time),A0__default.default.createElement("li",null,A0__default.default.createElement("strong",null,e.firstName,":")," ",p.firstName),A0__default.default.createElement("li",null,A0__default.default.createElement("strong",null,e.lastName,":")," ",p.lastName),A0__default.default.createElement("li",null,A0__default.default.createElement("strong",null,e.email,":")," ",p.email),A0__default.default.createElement("li",null,A0__default.default.createElement("strong",null,e.phone,":")," ",p.phone),p.menu&&A0__default.default.createElement("li",null,A0__default.default.createElement("strong",null,e.menu,":")," ",p.menu),p.personeel&&A0__default.default.createElement("li",null,A0__default.default.createElement("strong",null,e.staff,":")," ",p.personeel),p.giftcard&&A0__default.default.createElement("li",null,A0__default.default.createElement("strong",null,e.giftcard,":")," ",p.giftcard),p.extraInfo&&A0__default.default.createElement("li",null,A0__default.default.createElement("strong",null,e.extraInfo,":")," ",p.extraInfo),p.zitplaats&&A0__default.default.createElement("li",null,A0__default.default.createElement("strong",null,e.seatPlace,":")," ",p.zitplaats)),A0__default.default.createElement("button",{className:"button-style-3",onClick:c},e.newReservationButton))},C2=q4;var bp={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 n4=({restaurantData:p,formData:c,handleChange:e,resetFormDataFields:q})=>{let W=H0(bp,"giftcardSelection"),[a,n]=A0.useState([]);if(A0.useEffect(()=>{if(!p)return;let f=["breakfast","lunch","dinner"],X=new Set;f.forEach(R=>{let u=p[`openinghours-${R}`]?.schemeSettings||{};Object.values(u).forEach(g=>{g?.giftcardsEnabled&&Array.isArray(g.giftcards)&&g.giftcards.forEach(l=>{let h=typeof l=="string"?l.trim():String(l||"").trim();h&&X.add(h);});});}),n([...X]);},[p]),!a.length)return null;let r=a.map(f=>({value:f,label:f})),s=f=>{e({target:{name:"giftcard",value:f.target.value}}),q(["date","time"]);};return A0__default.default.createElement("div",{className:"giftcard-selection"},A0__default.default.createElement(P0,{label:W.labels?.giftcard||"Giftcard",name:"giftcard",type:"select",options:r,value:c.giftcard||"",onChange:s,selectPlaceholder:W.options?.noGiftcard||"Geen giftcard"}))},E2=n4;var w2=D0(b1());var Op={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 k2=D0(b1()),cp=D0(j1());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}
|
package/dist/index.mjs
CHANGED
|
@@ -40,7 +40,7 @@ Checking Time: ${X} -> Determined Meal: ${u}`),!u){L0(` Time ${X} has no associ
|
|
|
40
40
|
}
|
|
41
41
|
`),A0.createElement("div",{style:h.grid},f.map(B=>A0.createElement("button",{key:B.value,type:"button",className:`duration-btn ${parseInt(p)===B.value?"active-duration":""}`,tabIndex:"-1",style:{...h.optionBtn,...!n&&parseInt(p)===B.value?h.activeBtn:{}},onClick:()=>u(B.value),onMouseDown:T=>T.preventDefault()},B.label)),X&&A0.createElement("button",{type:"button",className:`duration-btn ${n?"active-duration":""}`,tabIndex:"-1",style:{...h.optionBtn,...n?h.activeBtn:{},flex:"0 0 auto",width:"auto",minWidth:"40px"},onClick:g,onMouseDown:B=>B.preventDefault()},n?A0.createElement(FaMinus,{size:12}):A0.createElement(FaPlus,{size:12}))),A0.createElement(AnimatePresence,null,n&&A0.createElement(motion.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},style:{overflow:"hidden"}},A0.createElement("div",{style:h.stepperContainer},A0.createElement("button",{type:"button",style:h.stepperBtn,onClick:()=>l(-1)},A0.createElement(FaMinus,{size:12})),A0.createElement("span",{style:h.stepperValue},N(parseInt(p)||0)),A0.createElement("button",{type:"button",style:h.stepperBtn,onClick:()=>l(1)},A0.createElement(FaPlus,{size:12}))))))},h2=Vo;var jb=memo(({formData:p,errors:c,handleChange:e,handleStepOneSubmit:q,setFormData:W,timeblocks:a,loadingTimeblocks:n,timeblocksError:r,restaurantData:s,isAdmin:f=false})=>{let X=localStorage.getItem("preferredLanguage")||"nl",R=W1[X].reservationStepOne,[u,g]=useState(p.guests||2),[l,h]=useState(null),[N,B]=useState([]),T=O1(),[S,w]=useState([]),[_,y]=useState(false),J=useRef(false),V=useCallback(F=>{W(K=>{let E={...K};return F.forEach(d0=>{E[d0]="";}),(F.includes("date")||F.includes("time")||F.includes("guests"))&&(E.selectedTableNumbers=[],E.selectedTableIds=[],w([])),E});},[W]);useEffect(()=>{let K=(0, Fb.default)().tz("Europe/Amsterdam").startOf("day").clone().startOf("isoWeek");for(;vz(K);)K.add(1,"week");h(K);},[]),useEffect(()=>{(async()=>{if(l&&(p.reservationMode==="met_limieten"||p.reservationMode==="zonder_regels"||p.reservationMode==="vrije_keuze")){let K=s?.["table-settings"]||{},E=K.isInstalled===true&&K.assignmentMode==="automatic";if(p.reservationMode==="met_limieten"||p.reservationMode==="vrije_keuze"||p.reservationMode==="zonder_regels"&&E){let d0=l.format("YYYY-MM-DD"),$=l.clone().add(13,"days").format("YYYY-MM-DD"),I=localStorage.getItem("username"),M0=`${window.baseDomain}api/slots/${I}/${d0}/${$}`;try{let v0=await T.get(M0,{noCache:!0});B(v0||[]);}catch(v0){console.error("Error fetching reservations:",v0),B([]);}}else B([]);}else B([]);})();},[l,T,p.reservationMode,s]);let b0=F=>{h(F),V(["date","time","selectedTableNumbers","selectedTableIds"]);};useEffect(()=>{if(!J.current){let F=false,K={};p.reservationMode||(K.reservationMode="met_limieten",F=true),(!p.guests||p.guests==="")&&(K.guests=u,F=true),Array.isArray(p.selectedTableNumbers)||(K.selectedTableNumbers=[],F=true),Array.isArray(p.selectedTableIds)||(K.selectedTableIds=[],F=true),F&&setTimeout(()=>{e({target:{multiple:true,updates:K}});},0),J.current=true;}},[p.reservationMode,p.guests,p.selectedTableNumbers,p.selectedTableIds,u,e]);let O0=useMemo(()=>s?.["table-settings"]||{},[s]),c0=useMemo(()=>O0.isInstalled===true&&O0.assignmentMode==="automatic",[O0]),i0=useMemo(()=>["met_limieten","zonder_regels","vrije_keuze"].includes(p.reservationMode),[p.reservationMode]),q0=useMemo(()=>i0&&p.date&&p.time&&p.guests>0&&c0&&S.length>0,[i0,p.date,p.time,p.guests,c0,S.length]);useEffect(()=>{if(!c0||!p.date||!p.time||p.guests<=0||!s||!N){w([]),y(false);return}y(true);let F=setTimeout(()=>{(window.requestIdleCallback||(E=>setTimeout(E,1)))(()=>{try{let E=new Set;s?.manualFloors&&Array.isArray(s.manualFloors)&&s.manualFloors.forEach(v0=>{(v0.tables||[]).forEach(k0=>{k0.tableNumber!=null&&E.add(k0.tableNumber);});});let d0=[...s?.floors||[],...s?.manualFloors||[]],$={...s,floors:d0},M0=p1("getAvailableTablesForTime",Ub.getAvailableTablesForTime,$,p.date,p.time,p.guests,N,p.zitplaats||null).map(v0=>({...v0,isManual:E.has(v0.tableNumber)}));w(M0);}catch(E){console.error("Error calculating available tables:",E),w([]);}finally{y(false);}});},500);return ()=>{clearTimeout(F),y(false);}},[c0,p.date,p.time,p.guests,p.zitplaats,s,N]),useEffect(()=>{if(S.length>0){let F=p.selectedTableNumbers||[],K=p.selectedTableIds||[],E=[],d0=[];F.forEach($=>{let I=S.find(M0=>M0.tableNumber===$);I&&K.includes(I.tableId)&&(E.push($),d0.push(I.tableId));}),E.length!==F.length&&setTimeout(()=>{e({target:{multiple:true,updates:{selectedTableNumbers:E,selectedTableIds:d0}}});},0);}else (p.selectedTableNumbers?.length>0||p.selectedTableIds?.length>0)&&setTimeout(()=>{e({target:{multiple:true,updates:{selectedTableNumbers:[],selectedTableIds:[]}}});},0);},[S,p.selectedTableNumbers,p.selectedTableIds]);let k=F=>{let K=parseInt(F.target.value,10)||1;g(K),e(F),V(["time","selectedTableNumbers","selectedTableIds"]);};useEffect(()=>{V(["date","time","selectedTableNumbers","selectedTableIds"]);},[p.reservationMode,V]);let v=F=>{F==="met_limieten"?e({target:{name:"reservationMode",value:"met_limieten"}}):F==="onbeperkt_parent"&&(["zonder_regels","vrije_keuze"].includes(p.reservationMode)||e({target:{name:"reservationMode",value:"zonder_regels"}}));},Q=F=>{e({target:{name:"reservationMode",value:F}});},C=p.reservationMode,P=!!s?.["general-settings"]?.seatSelectionEnabled,Y=Array.isArray(s?.["general-settings"]?.seatAreas)?s["general-settings"].seatAreas:["Terras","Restaurant"],e0=F=>{W(K=>({...K,zitplaats:F}));};return r?A0.createElement("div",null,R.errors.openingHoursNotSet," ",A0.createElement("a",{href:"https://happychef.cloud/#/openinghours/dinner",target:"_blank",rel:"noopener noreferrer",style:{color:"var(--color-blue)",textDecoration:"underline"}},R.errors.clickHereToSet)):A0.createElement("form",{className:"account-manage-form",noValidate:true},A0.createElement("div",{className:"form-group reservation-mode"},A0.createElement("div",{className:"reservation-modes-container"},A0.createElement("button",{type:"button",className:`reservation-mode-button ${C==="met_limieten"?"active":""}`,onClick:()=>v("met_limieten"),"aria-pressed":C==="met_limieten"},R.modes.withLimits),A0.createElement("button",{type:"button",className:`reservation-mode-button ${["onbeperkt_parent","zonder_regels","vrije_keuze"].includes(C)?"active":""}`,onClick:()=>v("onbeperkt_parent"),"aria-pressed":["onbeperkt_parent","zonder_regels","vrije_keuze"].includes(C)},R.modes.unlimited)),["onbeperkt_parent","zonder_regels","vrije_keuze"].includes(C)&&A0.createElement("div",{className:"reservation-modes-container sub-modes"},A0.createElement("button",{type:"button",className:`reservation-mode-button ${C==="zonder_regels"?"active":""}`,onClick:()=>Q("zonder_regels"),"aria-pressed":C==="zonder_regels"},R.modes.openingHours),A0.createElement("button",{type:"button",className:`reservation-mode-button ${C==="vrije_keuze"?"active":""}`,onClick:()=>Q("vrije_keuze"),"aria-pressed":C==="vrije_keuze"},R.modes.free))),["onbeperkt_parent","zonder_regels","vrije_keuze"].includes(C)&&A0.createElement("div",{className:"unlimited-mode-warning"},A0.createElement("div",{className:"warning-text"},R.warnings?.unlimitedMode||(X==="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."))),A0.createElement(n2,{setGuests:g,value:p.guests||u,onChange:k,error:c.guests}),P&&i0&&p.guests>0&&A0.createElement("div",{className:"form-row",style:{marginTop:12}},A0.createElement("div",{className:"reservation-mode-buttons"},Y.map(F=>A0.createElement("button",{key:F,type:"button",className:`reservation-mode-button ${p.zitplaats===F?"active":""}`,onClick:()=>e0(F),"aria-pressed":p.zitplaats===F},F))),c.zitplaats&&A0.createElement("small",{className:"error"},c.zitplaats)),s?.account_type==="bowling"&&A0.createElement(h2,{duration:p.duration,handleChange:F=>{e(F),V(["date","time","selectedTableNumbers","selectedTableIds"]);},min:s["general-settings"]?.minDuration||30,max:s["general-settings"]?.maxDuration||120,interval:s["general-settings"]?.durationInterval||30}),i0&&p.guests>0&&A0.createElement(wb,{guests:p.guests,formData:p,handleChange:e,resetFormDataFields:V,restaurantData:s,reservations:N,startDate:l,onWeekChange:b0,reservationMode:C,isAdmin:f}),i0&&p.date&&A0.createElement(Pb,{guests:p.guests,formData:p,handleChange:e,field:{id:"time",label:R.fields.time},selectedDate:p.date,setCurrentExpandedField:()=>{},restaurantData:s,reservations:N,reservationMode:C,zitplaats:p.zitplaats||null,isAdmin:f}),q0&&A0.createElement(g2,{availableTables:S,isFetching:_,formData:p,setFormData:W,handleChange:e}),_&&p.date&&p.time&&p.guests>0&&A0.createElement("div",{style:{textAlign:"center",padding:"10px",color:"#666",fontSize:"14px"}},"Beschikbare tafels berekenen..."))});jb.displayName="ReservationStepOne";var TM=jb;var gM=()=>localStorage.getItem("preferredLanguage")||"nl",H0=(p,c,e="nl")=>{let q=gM();return (p[q]||p[e]||{})[c]||{}};var Gb={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
42
|
`);var b4=({label:p,name:c,type:e="text",icon:q,value:W,onChange:a,onBlur:n,error:r,placeholder:s,halfWidth:f,options:X=[],selectPlaceholder:R,rightIcon:u,onRightIconClick:g,tooltipContent:l,required:h})=>{let N=H0(Gb,"formField"),B=R||N.selectPlaceholder,[T,S]=useState(false),w=useRef(null),_=useRef(null),y=u,J=q;useEffect(()=>{let O0=c0=>{w.current&&!w.current.contains(c0.target)&&(_.current&&clearTimeout(_.current),S(false));};return T&&document.addEventListener("mousedown",O0),()=>document.removeEventListener("mousedown",O0)},[T]);let V={name:c,value:W,onChange:a,onBlur:n,"aria-label":p,className:`form-control ${r?"input-error":""}`};return A0.createElement("div",{className:`form-group ${f?"half-width":""}`,style:{position:"relative"}},h&&p&&A0.createElement("label",{className:"form-field-label"},p," ",A0.createElement("span",{className:"required-asterisk"},"*")),A0.createElement("div",{className:"input-container"},J&&A0.createElement(J,{className:"input-icon"}),e==="select"?A0.createElement("select",{...V},A0.createElement("option",{value:""},B),X.map(O0=>A0.createElement("option",{key:O0.value,value:O0.value},O0.label))):e==="textarea"?A0.createElement("textarea",{...V,placeholder:s}):A0.createElement("input",{type:e,...V,placeholder:s}),y&&A0.createElement("div",{className:"magic-wand-container",onClick:g,onMouseEnter:()=>{_.current&&clearTimeout(_.current),S(true);},onMouseLeave:()=>{_.current=setTimeout(()=>S(false),1200);},style:{position:"absolute",top:"50%",right:"10px",transform:"translateY(-50%)",cursor:"pointer"}},A0.createElement(y,{className:"magic-wand-icon",style:{color:"#B567C2"}}),T&&l&&A0.createElement("div",{ref:w,className:"magic-tooltip",style:{position:"absolute",bottom:"100%",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"}},A0.createElement("div",{style:{position:"relative",zIndex:2,padding:"12px 20px"}},A0.createElement("div",{style:{borderBottom:"1px solid #eee",marginBottom:"8px",paddingBottom:"4px"}},l),A0.createElement("div",{style:{fontWeight:"bold",fontSize:"13px",textAlign:"center",marginTop:"8px"}},N.tooltip?.confirm),A0.createElement("div",{style:{fontSize:"0.7rem",textAlign:"center",color:"#999",marginTop:"4px"}},N.tooltip?.source))))),r&&A0.createElement("p",{className:"form-error"},r))},P0=A0.memo(b4);var G0=D0(b1());D0(Vb());var Qb={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}.input-container .form-control{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px;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}
|
|
43
|
-
`);var Mp=A0.memo(({formData:p,errors:c,handleChange:e,setFormData:q,menuData:W})=>{let a=gM(),n=H0(Qb,"reservationStepTwoFiltering"),[r,s]=useState([]),[f,X]=useState(false),[R,u]=useState(null),[g,l]=useState([]),h=O1(),N=FaMagic,B=()=>{R&&S();};useEffect(()=>{if(G0.default.locale(a),!p.date||!p.time||!W.length)return s([]);let k=(0, G0.default)(`${p.date} ${p.time}`,"YYYY-MM-DD HH:mm"),v=W.filter(Q=>{let C=k.isBetween((0, G0.default)(Q.startDate,"YYYY-MM-DD"),(0, G0.default)(Q.endDate,"YYYY-MM-DD"),"day","[]"),P=(0, G0.default)(p.time,"HH:mm").isBetween((0, G0.default)(Q.startHour,"HH:mm"),(0, G0.default)(Q.endHour,"HH:mm"),"minute","[]"),Y=(0, G0.default)(k).locale("nl").format("dddd").toLowerCase(),e0=(0, G0.default)(k).locale("en").format("dddd").toLowerCase(),F=(Q.daysOfWeek||[]).map(E=>E.toLowerCase()),K=!F.length||F.includes(Y)||F.includes(e0);return C&&P&&K});s(v);},[p.date,p.time,W,a]);let T=async()=>{if(f||R)return;let k=(p.email||"").trim().toLowerCase(),v=(p.phone||"").trim(),Q=k&&[".com",".net",".be",".nl"].some(Y=>k.endsWith(Y)),C=!!v&&(v.startsWith("+32")?v.length>=12:v.length>=10);if(!Q&&!C)return;let P=[];Q&&P.push("email"),C&&P.push("phone");try{let Y=await h.post(`${window.baseDomain}api/autofill`,{email:k,phone:v});Y?.firstName&&Y?.lastName&&Y?.email&&Y?.phone&&u({...Y,sources:P});}catch{console.error("Autofill error");}};useEffect(()=>{T();},[p.email,p.phone]);let S=()=>{R&&(q(k=>({...k,firstName:R.firstName,lastName:R.lastName,email:R.email,phone:R.phone})),X(true),u(null));},w=async()=>{let k=(p.firstName||"").trim(),v=(p.lastName||"").trim();if(k.length<2&&v.length<2){l([]);return}try{let Q=await h.post(`${window.baseDomain}api/autofill-name`,{firstName:k||void 0,lastName:v||void 0});Array.isArray(Q)&&Q.length>0?l(Q):l([]);}catch{l([]);}},_=k=>{q(v=>({...v,firstName:k.firstName,lastName:k.lastName,email:k.email,phone:k.phone})),l([]),X(true);};useEffect(()=>{
|
|
43
|
+
`);var Mp=A0.memo(({formData:p,errors:c,handleChange:e,setFormData:q,menuData:W})=>{let a=gM(),n=H0(Qb,"reservationStepTwoFiltering"),[r,s]=useState([]),[f,X]=useState(false),[R,u]=useState(null),[g,l]=useState([]),h=O1(),N=FaMagic,B=()=>{R&&S();};useEffect(()=>{if(G0.default.locale(a),!p.date||!p.time||!W.length)return s([]);let k=(0, G0.default)(`${p.date} ${p.time}`,"YYYY-MM-DD HH:mm"),v=W.filter(Q=>{let C=k.isBetween((0, G0.default)(Q.startDate,"YYYY-MM-DD"),(0, G0.default)(Q.endDate,"YYYY-MM-DD"),"day","[]"),P=(0, G0.default)(p.time,"HH:mm").isBetween((0, G0.default)(Q.startHour,"HH:mm"),(0, G0.default)(Q.endHour,"HH:mm"),"minute","[]"),Y=(0, G0.default)(k).locale("nl").format("dddd").toLowerCase(),e0=(0, G0.default)(k).locale("en").format("dddd").toLowerCase(),F=(Q.daysOfWeek||[]).map(E=>E.toLowerCase()),K=!F.length||F.includes(Y)||F.includes(e0);return C&&P&&K});s(v);},[p.date,p.time,W,a]);let T=async()=>{if(f||R)return;let k=(p.email||"").trim().toLowerCase(),v=(p.phone||"").trim(),Q=k&&[".com",".net",".be",".nl"].some(Y=>k.endsWith(Y)),C=!!v&&(v.startsWith("+32")?v.length>=12:v.length>=10);if(!Q&&!C)return;let P=[];Q&&P.push("email"),C&&P.push("phone");try{let Y=await h.post(`${window.baseDomain}api/autofill`,{email:k,phone:v});Y?.firstName&&Y?.lastName&&Y?.email&&Y?.phone&&u({...Y,sources:P});}catch{console.error("Autofill error");}};useEffect(()=>{T();},[p.email,p.phone]);let S=()=>{R&&(q(k=>({...k,firstName:R.firstName,lastName:R.lastName,email:R.email,phone:R.phone})),X(true),u(null));},w=async()=>{let k=(p.firstName||"").trim(),v=(p.lastName||"").trim();if(k.length<2&&v.length<2){l([]);return}try{let Q=await h.post(`${window.baseDomain}api/autofill-name`,{firstName:k||void 0,lastName:v||void 0});Array.isArray(Q)&&Q.length>0?l(Q):l([]);}catch{l([]);}},_=k=>{q(v=>({...v,firstName:k.firstName,lastName:k.lastName,email:k.email,phone:k.phone})),l([]),X(true);};useEffect(()=>{w();},[p.firstName,p.lastName]);let y=useMemo(()=>{if(!R)return {email:{},phone:{}};let k=R.sources.includes("email")&&(p.email||"").trim().toLowerCase()===R.email.trim().toLowerCase(),v=R.sources.includes("phone")&&(p.phone||"").trim()===R.phone.trim(),Q={rightIcon:N,onRightIconClick:B};return {email:k?{...Q,tooltipContent:A0.createElement("div",null,A0.createElement("div",{style:{textAlign:"center",fontWeight:"bold"}},n.magic?.title),A0.createElement("div",null,R.firstName," ",R.lastName),A0.createElement("div",null,R.phone))}:{},phone:v?{...Q,tooltipContent:A0.createElement("div",null,A0.createElement("div",{style:{textAlign:"center",fontWeight:"bold"}},n.magic?.title),A0.createElement("div",null,R.firstName," ",R.lastName),A0.createElement("div",null,R.email))}:{}}},[R,p.email,p.phone,n.magic?.title]),J=useMemo(()=>{if(!g.length)return {firstName:{},lastName:{}};let v=(p.lastName||"").trim().length>0?"lastName":"firstName",Q=A0.createElement("div",{style:{maxHeight:"200px",overflowY:"auto"}},g.map((P,Y)=>A0.createElement("div",{key:Y,className:"name-match-item",onClick:e0=>{e0.stopPropagation(),_(P);}},A0.createElement("div",{style:{fontWeight:"500"}},P.firstName," ",P.lastName),A0.createElement("div",{style:{fontSize:"0.8rem",color:"#666"}},P.email),P.phone&&A0.createElement("div",{style:{fontSize:"0.8rem",color:"#666"}},P.phone)))),C={rightIcon:FaMagic,onRightIconClick:()=>{},tooltipContent:A0.createElement("div",null,A0.createElement("div",{style:{textAlign:"center",fontWeight:"bold"}},n.magic?.title),Q)};return {firstName:v==="firstName"?C:{},lastName:v==="lastName"?C:{}}},[g,p.lastName,n.magic?.title]),{reservationMode:V}=p,b0=V==="check_in",O0=window.generalSettings?.obligatedFields||[],c0=k=>O0.includes(k),i0=k=>!b0&&c0(k),q0=(k,v)=>{let Q=n.labels?.[k]||v;return b0?`${Q} (Optioneel)`:c0(k)?`${Q} *`:Q};return A0.createElement("div",{className:"reservation-step-two"},A0.createElement("div",{className:"account-manage-form"},r.length>0&&A0.createElement(P0,{label:`${n.labels?.menu||"Menu"}${b0?" (Optioneel)":""}`,name:"menu",type:"select",options:r.map(k=>({value:k.name,label:k.name})),value:p.menu,onChange:e,error:b0?null:c.menu}),A0.createElement("div",{className:"name-fields"},A0.createElement(P0,{label:q0("firstName","Voornaam"),name:"firstName",placeholder:n.placeholders?.firstName||"",value:p.firstName,onChange:e,onBlur:w,error:b0?null:c.firstName,icon:FaUser,required:i0("firstName"),...J.firstName}),A0.createElement(P0,{label:q0("lastName","Achternaam"),name:"lastName",placeholder:n.placeholders?.lastName||"",value:p.lastName,onChange:e,onBlur:w,error:b0?null:c.lastName,icon:FaUser,required:i0("lastName"),...J.lastName})),A0.createElement(P0,{label:q0("email","Email"),name:"email",type:"email",placeholder:n.placeholders?.email||"",value:p.email,onChange:e,onBlur:T,error:c.email,icon:FaEnvelope,required:i0("email"),...y.email}),A0.createElement(P0,{label:q0("phone","Telefoon"),name:"phone",type:"tel",placeholder:n.placeholders?.phone||"",value:p.phone,onChange:e,onBlur:T,error:c.phone,icon:FaPhone,required:i0("phone"),...y.phone}),A0.createElement(P0,{label:n.labels?.extraInfo||"Extra info",name:"extraInfo",type:"textarea",placeholder:n.placeholders?.extraInfo||"",value:p.extraInfo,onChange:e,error:c.extraInfo,icon:FaInfoCircle})))});Mp.displayName="ReservationStepTwo";var S2=Mp;var zp={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 q4=({formData:p,onNewReservation:c})=>{let e=H0(zp,"reservationSummary");return A0.createElement("div",{className:"reservation-summary"},A0.createElement("ul",{className:"reservation-details"},A0.createElement("li",null,A0.createElement("strong",null,e.title)),A0.createElement("li",null,A0.createElement("strong",null,e.guests,":")," ",p.guests),A0.createElement("li",null,A0.createElement("strong",null,e.date,":")," ",p.date),A0.createElement("li",null,A0.createElement("strong",null,e.time,":")," ",p.time),A0.createElement("li",null,A0.createElement("strong",null,e.firstName,":")," ",p.firstName),A0.createElement("li",null,A0.createElement("strong",null,e.lastName,":")," ",p.lastName),A0.createElement("li",null,A0.createElement("strong",null,e.email,":")," ",p.email),A0.createElement("li",null,A0.createElement("strong",null,e.phone,":")," ",p.phone),p.menu&&A0.createElement("li",null,A0.createElement("strong",null,e.menu,":")," ",p.menu),p.personeel&&A0.createElement("li",null,A0.createElement("strong",null,e.staff,":")," ",p.personeel),p.giftcard&&A0.createElement("li",null,A0.createElement("strong",null,e.giftcard,":")," ",p.giftcard),p.extraInfo&&A0.createElement("li",null,A0.createElement("strong",null,e.extraInfo,":")," ",p.extraInfo),p.zitplaats&&A0.createElement("li",null,A0.createElement("strong",null,e.seatPlace,":")," ",p.zitplaats)),A0.createElement("button",{className:"button-style-3",onClick:c},e.newReservationButton))},C2=q4;var bp={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 n4=({restaurantData:p,formData:c,handleChange:e,resetFormDataFields:q})=>{let W=H0(bp,"giftcardSelection"),[a,n]=useState([]);if(useEffect(()=>{if(!p)return;let f=["breakfast","lunch","dinner"],X=new Set;f.forEach(R=>{let u=p[`openinghours-${R}`]?.schemeSettings||{};Object.values(u).forEach(g=>{g?.giftcardsEnabled&&Array.isArray(g.giftcards)&&g.giftcards.forEach(l=>{let h=typeof l=="string"?l.trim():String(l||"").trim();h&&X.add(h);});});}),n([...X]);},[p]),!a.length)return null;let r=a.map(f=>({value:f,label:f})),s=f=>{e({target:{name:"giftcard",value:f.target.value}}),q(["date","time"]);};return A0.createElement("div",{className:"giftcard-selection"},A0.createElement(P0,{label:W.labels?.giftcard||"Giftcard",name:"giftcard",type:"select",options:r,value:c.giftcard||"",onChange:s,selectPlaceholder:W.options?.noGiftcard||"Geen giftcard"}))},E2=n4;var w2=D0(b1());var Op={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 k2=D0(b1()),cp=D0(j1());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}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@happychef/reservation-sidebar",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.35",
|
|
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",
|