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