react-estimated-delivery
Version:
React component for estimated delivery with config and holiday options.
3 lines (2 loc) • 3.6 kB
JavaScript
import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useState as n,useEffect as r}from"react";!function(e,t){void 0===t&&(t={});var n=t.insertAt;if("undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===n&&r.firstChild?r.insertBefore(a,r.firstChild):r.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}(".delivery-wrapper {\r\n padding: 1rem;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 12px;\r\n}\r\n\r\n.countdown-wrapper {\r\n display: flex;\r\n gap: 12px;\r\n}\r\n\r\n.estimated-delivery-container .text-container {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 12px;\r\n}\r\n\r\n.estimated-delivery-container .text-container > span {\r\n display: flex;\r\n flex-direction: row;\r\n gap: 12px;\r\n align-items: center;\r\n}");const a=a=>{const i=a.currentDate,l=Number(a.cutOffTime.split(":")[0]),o=Number(a.cutOffTime.split(":")[1]),s=new Date(i.getFullYear(),i.getMonth(),i.getDate(),l,o),d=new Date(s.setDate(i.getDate()+1)),c=(new Date).toLocaleString("en-US",{timeZone:a.timezone}),[m,D]=n(0);r((()=>{const e=setInterval((()=>{D(Number(d)-new Date(c).getTime())}),1e3);return()=>clearInterval(e)}),[d]);const u=Math.floor(m%864e5/36e5),p=Math.floor(m%36e5/6e4),y=Math.floor(m%6e4/1e3);return e("div",{className:"countdown-wrapper",children:[t("span",{children:a.orderWithinText}),u>0&&e("p",{children:[u,a.timerText.hours," "]}),p>0&&e("p",{children:[p,a.timerText.minutes," "]}),y>0&&e("p",{children:[y,a.timerText.seconds]})]})},i=i=>{const l=new Date((o=i.timezone,(new Date).toLocaleString("en-US",{timeZone:o})));var o;const s=l.getHours(),d=l.getMinutes(),c=d<10?"0"+d:d,m=Number(i.cutOffTime.split(":").join(""))<Number(s+""+c),D=Number(i.cutOffTime.split(":")[0]),u=Number(i.cutOffTime.split(":")[1]),p=new Date(l.getFullYear(),l.getMonth(),l.getDate(),D,u),[y,f]=n(p),[g,x]=n(!0),[h,v]=n(!1);function T(e){return["sunday","monday","tuesday","wednesday","thursday","friday","saturday"][e]||""}function w(e,t){const n=t?i.deliveryDayIncrement:1;let r=new Date((new Date).setDate(e.getDate()+n));if(!0!==(a=e,i.holidays.map((e=>e.replace(/-/g,"/"))).includes(a.toLocaleDateString(i.dateFormat))))if(l.getDate()==e.getDate()&&!m&&i.isNextDayAvailable){if(1==i.businessDays[T(l.getDay())]&&1==i.deliveryDays[T(r.getDay())])return f(r),x(!1),void v(!0);w(r,!1)}else if(l.getDate()==e.getDate())w(r,!1);else if(t){if(1==i.deliveryDays[T(r.getDay())])return f(r),void x(!1);w(r,!0)}else 1==i.businessDays[T(e.getDay())]?1==i.deliveryDays[T(r.getDay())]?w(e,!0):w(r,!0):w(r,!1);else w(r,!1);var a}return r((()=>{1==g&&w(p,!1)}),[g,w]),t("div",{className:"estimated-delivery-container",children:!g&&t("div",{className:"delivery-wrapper",children:e("div",{className:"text-container",children:[e("span",{children:[i.children," ",t("span",{children:h?i.nextDayDeliveryAvailableText:i.nextDayDeliveryNotAvailableText})]}),i.enableCountDownTimer&&!m&&i.isNextDayAvailable&&h&&t(a,{cutOffTime:i.cutOffTime,currentDate:new Date(l.toLocaleDateString("en-US",{timeZone:i.timezone})),timerText:i.timerText,dateFormat:i.dateFormat,timezone:i.timezone,orderWithinText:i.orderWithinText}),e("p",{children:[i.estimatedDeliveryText," ",t("span",{children:g?`${i.loadingText}`:`${i.showDateRange&&!h?y.toDateString()+" - "+new Date((new Date).setDate(y.getDate()+i.dateRange)).toDateString():y.toDateString()}`})]})]})})})};export{i as EstimatedDeliveryComponent};
//# sourceMappingURL=index.js.map