persian-fullcalendar
Version:
React component that helps you to makes simple Farsi/Jalali/Shamsi date picker. It also has range date picker you can select multiple days in multiple months.
179 lines (171 loc) • 28.1 kB
JavaScript
"use strict";var e=require("react"),t=require("@emotion/react"),r=require("@emotion/styled");const n=(e,t,r)=>`hsl(${e}deg ${t}% ${r}%)`,a=e=>{const{h:t,s:r,l:a}=function(e){const t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);if(null==t)throw new Error("Could not parse Hex Color");const r=parseInt(t[1],16)/255,n=parseInt(t[2],16)/255,a=parseInt(t[3],16)/255,o=Math.max(r,n,a),s=Math.min(r,n,a);let i=(o+s)/2,l=i,c=i;if(o===s)return{h:0,s:0,l:c};const d=o-s;switch(l=c>.5?d/(2-o-s):d/(o+s),o){case r:i=(n-a)/d+(n<a?6:0);break;case n:i=(a-r)/d+2;break;case a:i=(r-n)/d+4}return i/=6,l*=100,l=Math.round(l),c*=100,c=Math.round(c),i=Math.round(360*i),{h:i,s:l,l:c}}(e),o={};return o[40]=n(t,r,a-10),o[50]=n(t,r,a),o[85]=n(t,r,85),o[90]=n(t,r,90),o[95]=n(t,r,95),o},o=850,s="cubic-bezier(0.4, 0, 0.2, 1)",i="#0D59F2",l={localeDefault:"en",setLocale(e){null!=e&&(this.localeDefault=e)},get locale(){return this.localeDefault}},c={0:"#FFFFFF",20:"#F5F5F5",30:"#EBEBEB",40:"#DEDEDE",50:"#BFBFBF",60:"#B0B0B0",70:"#575757",80:"#666666",600:"#2E2E2E"},d={thin:{wrapper:0,calendarItem:0},x1:{wrapper:8,calendarItem:4},x2:{wrapper:16,calendarItem:8},x3:{wrapper:24,calendarItem:16},x4:{wrapper:24,calendarItem:20}},u=r.button`
cursor: pointer;
outline: none;
border: none;
display: flex;
justify-content: center;
align-items: center;
width: 40px;
height: 40px;
transition: background-color 0.2s ease-in;
color: ${e=>e.theme.colors.primary[50]};
background-color: transparent;
border-radius: ${e=>d[e.theme.round].calendarItem}px;
&:hover,
&:focus {
background-color: ${e=>e.theme.colors.primary[90]};
}
`,m=()=>{if(""!==document.dir)return"rtl"===document.dir;const{body:e}=document;return"rtl"===getComputedStyle(e).direction},f=()=>e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"feather feather-chevron-right",style:{transform:m()?"unset":"rotate(180deg)"}},e.createElement("polyline",{points:"9 18 15 12 9 6"})),h=()=>e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"feather feather-chevron-left",style:{transform:m()?"unset":"rotate(180deg)"}},e.createElement("polyline",{points:"15 18 9 12 15 6"})),p=r.div`
display: flex;
justify-content: space-between;
align-items: center;
height: 56px;
padding-right: 8px;
padding-left: 8px;
background-color: ${e=>e.theme.colors.primary[95]};
border-bottom: 2px solid ${e=>e.theme.colors.primary[85]};
`,y=r.button`
will-change: auto;
min-width: 100px;
outline: none;
border: 0;
font-family: inherit;
background-color: transparent;
cursor: pointer;
color: ${e=>e.theme.colors.primary[50]};
padding: 8px 16px;
font-weight: 500;
transition: background-color 0.2s ease-in;
border-radius: ${e=>d[e.theme.round].calendarItem}px;
&:hover,
&:focus {
background-color: ${e=>e.theme.colors.primary[90]};
}
`;r.div`
text-align: right;
font-size: 14px;
width: 300px;
color: #8c8c8c;
border-bottom: 1px solid #cccccc;
border-left: 1px solid #cccccc;
`;const g=t=>e.createElement(p,{className:"zm-Header"},e.createElement(u,{"aria-label":"Previous month",onClick:t.onPrevClick,className:"zm-IconPrevButton",tabIndex:0},e.createElement(f,null)),e.createElement(y,{className:"zm-MonthYearButton",role:"presentation",onClick:t.onClickOnTitle,"aria-label":"calendar view is open, switch to year and month view",tabIndex:0},t.monthName),e.createElement(u,{"aria-label":"Next month",onClick:t.onNextClick,className:"zm-IconNextButton",tabIndex:0},e.createElement(h,null)));"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var b={};({get exports(){return b},set exports(e){b=e}}).exports=function(){var e=1e3,t=6e4,r=36e5,n="millisecond",a="second",o="minute",s="hour",i="day",l="week",c="month",d="quarter",u="year",m="date",f="Invalid Date",h=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,p=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,y={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],r=e%100;return"["+e+(t[(r-20)%10]||t[r]||t[0])+"]"}},g=function(e,t,r){var n=String(e);return!n||n.length>=t?e:""+Array(t+1-n.length).join(r)+e},b={s:g,z:function(e){var t=-e.utcOffset(),r=Math.abs(t),n=Math.floor(r/60),a=r%60;return(t<=0?"+":"-")+g(n,2,"0")+":"+g(a,2,"0")},m:function e(t,r){if(t.date()<r.date())return-e(r,t);var n=12*(r.year()-t.year())+(r.month()-t.month()),a=t.clone().add(n,c),o=r-a<0,s=t.clone().add(n+(o?-1:1),c);return+(-(n+(r-a)/(o?a-s:s-a))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:c,y:u,w:l,d:i,D:m,h:s,m:o,s:a,ms:n,Q:d}[e]||String(e||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},k="en",x={};x[k]=y;var M="$isDayjsObject",v=function(e){return e instanceof Y||!(!e||!e[M])},w=function e(t,r,n){var a;if(!t)return k;if("string"==typeof t){var o=t.toLowerCase();x[o]&&(a=o),r&&(x[o]=r,a=o);var s=t.split("-");if(!a&&s.length>1)return e(s[0])}else{var i=t.name;x[i]=t,a=i}return!n&&a&&(k=a),a||!n&&k},$=function(e,t){if(v(e))return e.clone();var r="object"==typeof t?t:{};return r.date=e,r.args=arguments,new Y(r)},D=b;D.l=w,D.i=v,D.w=function(e,t){return $(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var Y=function(){function y(e){this.$L=w(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[M]=!0}var g=y.prototype;return g.parse=function(e){this.$d=function(e){var t=e.date,r=e.utc;if(null===t)return new Date(NaN);if(D.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var n=t.match(h);if(n){var a=n[2]-1||0,o=(n[7]||"0").substring(0,3);return r?new Date(Date.UTC(n[1],a,n[3]||1,n[4]||0,n[5]||0,n[6]||0,o)):new Date(n[1],a,n[3]||1,n[4]||0,n[5]||0,n[6]||0,o)}}return new Date(t)}(e),this.init()},g.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},g.$utils=function(){return D},g.isValid=function(){return!(this.$d.toString()===f)},g.isSame=function(e,t){var r=$(e);return this.startOf(t)<=r&&r<=this.endOf(t)},g.isAfter=function(e,t){return $(e)<this.startOf(t)},g.isBefore=function(e,t){return this.endOf(t)<$(e)},g.$g=function(e,t,r){return D.u(e)?this[t]:this.set(r,e)},g.unix=function(){return Math.floor(this.valueOf()/1e3)},g.valueOf=function(){return this.$d.getTime()},g.startOf=function(e,t){var r=this,n=!!D.u(t)||t,d=D.p(e),f=function(e,t){var a=D.w(r.$u?Date.UTC(r.$y,t,e):new Date(r.$y,t,e),r);return n?a:a.endOf(i)},h=function(e,t){return D.w(r.toDate()[e].apply(r.toDate("s"),(n?[0,0,0,0]:[23,59,59,999]).slice(t)),r)},p=this.$W,y=this.$M,g=this.$D,b="set"+(this.$u?"UTC":"");switch(d){case u:return n?f(1,0):f(31,11);case c:return n?f(1,y):f(0,y+1);case l:var k=this.$locale().weekStart||0,x=(p<k?p+7:p)-k;return f(n?g-x:g+(6-x),y);case i:case m:return h(b+"Hours",0);case s:return h(b+"Minutes",1);case o:return h(b+"Seconds",2);case a:return h(b+"Milliseconds",3);default:return this.clone()}},g.endOf=function(e){return this.startOf(e,!1)},g.$set=function(e,t){var r,l=D.p(e),d="set"+(this.$u?"UTC":""),f=(r={},r[i]=d+"Date",r[m]=d+"Date",r[c]=d+"Month",r[u]=d+"FullYear",r[s]=d+"Hours",r[o]=d+"Minutes",r[a]=d+"Seconds",r[n]=d+"Milliseconds",r)[l],h=l===i?this.$D+(t-this.$W):t;if(l===c||l===u){var p=this.clone().set(m,1);p.$d[f](h),p.init(),this.$d=p.set(m,Math.min(this.$D,p.daysInMonth())).$d}else f&&this.$d[f](h);return this.init(),this},g.set=function(e,t){return this.clone().$set(e,t)},g.get=function(e){return this[D.p(e)]()},g.add=function(n,d){var m,f=this;n=Number(n);var h=D.p(d),p=function(e){var t=$(f);return D.w(t.date(t.date()+Math.round(e*n)),f)};if(h===c)return this.set(c,this.$M+n);if(h===u)return this.set(u,this.$y+n);if(h===i)return p(1);if(h===l)return p(7);var y=(m={},m[o]=t,m[s]=r,m[a]=e,m)[h]||1,g=this.$d.getTime()+n*y;return D.w(g,this)},g.subtract=function(e,t){return this.add(-1*e,t)},g.format=function(e){var t=this,r=this.$locale();if(!this.isValid())return r.invalidDate||f;var n=e||"YYYY-MM-DDTHH:mm:ssZ",a=D.z(this),o=this.$H,s=this.$m,i=this.$M,l=r.weekdays,c=r.months,d=r.meridiem,u=function(e,r,a,o){return e&&(e[r]||e(t,n))||a[r].slice(0,o)},m=function(e){return D.s(o%12||12,e,"0")},h=d||function(e,t,r){var n=e<12?"AM":"PM";return r?n.toLowerCase():n};return n.replace(p,(function(e,n){return n||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return D.s(t.$y,4,"0");case"M":return i+1;case"MM":return D.s(i+1,2,"0");case"MMM":return u(r.monthsShort,i,c,3);case"MMMM":return u(c,i);case"D":return t.$D;case"DD":return D.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return u(r.weekdaysMin,t.$W,l,2);case"ddd":return u(r.weekdaysShort,t.$W,l,3);case"dddd":return l[t.$W];case"H":return String(o);case"HH":return D.s(o,2,"0");case"h":return m(1);case"hh":return m(2);case"a":return h(o,s,!0);case"A":return h(o,s,!1);case"m":return String(s);case"mm":return D.s(s,2,"0");case"s":return String(t.$s);case"ss":return D.s(t.$s,2,"0");case"SSS":return D.s(t.$ms,3,"0");case"Z":return a}return null}(e)||a.replace(":","")}))},g.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},g.diff=function(n,m,f){var h,p=this,y=D.p(m),g=$(n),b=(g.utcOffset()-this.utcOffset())*t,k=this-g,x=function(){return D.m(p,g)};switch(y){case u:h=x()/12;break;case c:h=x();break;case d:h=x()/3;break;case l:h=(k-b)/6048e5;break;case i:h=(k-b)/864e5;break;case s:h=k/r;break;case o:h=k/t;break;case a:h=k/e;break;default:h=k}return f?h:D.a(h)},g.daysInMonth=function(){return this.endOf(c).$D},g.$locale=function(){return x[this.$L]},g.locale=function(e,t){if(!e)return this.$L;var r=this.clone(),n=w(e,t,!0);return n&&(r.$L=n),r},g.clone=function(){return D.w(this.$d,this)},g.toDate=function(){return new Date(this.valueOf())},g.toJSON=function(){return this.isValid()?this.toISOString():null},g.toISOString=function(){return this.$d.toISOString()},g.toString=function(){return this.$d.toUTCString()},y}(),S=Y.prototype;return $.prototype=S,[["$ms",n],["$s",a],["$m",o],["$H",s],["$W",i],["$M",c],["$y",u],["$D",m]].forEach((function(e){S[e[1]]=function(t){return this.$g(t,e[0],e[1])}})),$.extend=function(e,t){return e.$i||(e(t,Y,$),e.$i=!0),$},$.locale=w,$.isDayjs=v,$.unix=function(e){return $(1e3*e)},$.en=x[k],$.Ls=x,$.p={},$}();var k=b,x={};({get exports(){return x},set exports(e){x=e}}).exports=function(e){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=t(e),n={name:"fa",weekdays:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekStart:6,months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"}};return r.default.locale(n,null,!0),n}(b);var M={};({get exports(){return M},set exports(e){M=e}}).exports=function(e,t){t.prototype.weekday=function(e){var t=this.$locale().weekStart||0,r=this.$W,n=(r<t?r+7:r)-t;return this.$utils().u(e)?n:this.subtract(n,"day").add(e,"day")}};var v,w=M,$={};({get exports(){return $},set exports(e){$=e}}).exports=(v={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},function(e,t,r){var n=t.prototype,a=n.format;r.en.formats=v,n.format=function(e){void 0===e&&(e="YYYY-MM-DDTHH:mm:ssZ");var t=this.$locale().formats,r=function(e,t){return e.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(e,r,n){var a=n&&n.toUpperCase();return r||t[n]||v[n]||t[a].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,r){return t||r.slice(1)}))}))}(e,void 0===t?{}:t);return a.call(this,r)}});var D=$;const Y=(e,t,r)=>{const{locale:n}=l,a=Object.assign(Object.assign({},t),null!=r&&{numberingSystem:r});return new Date(e).toLocaleString(n,a)},S=(e,t)=>Y(e,{day:"numeric"},t),E=(e,t)=>Y(e,{year:"numeric"},t),_=(e,t)=>Y(e,{month:"2-digit"},t);var C={};({get exports(){return C},set exports(e){C=e}}).exports=function(e,t,r){t.prototype.isBetween=function(e,t,n,a){var o=r(e),s=r(t),i="("===(a=a||"()")[0],l=")"===a[1];return(i?this.isAfter(o,n):!this.isBefore(o,n))&&(l?this.isBefore(s,n):!this.isAfter(s,n))||(i?this.isBefore(o,n):!this.isAfter(o,n))&&(l?this.isAfter(s,n):!this.isBefore(s,n))}};var L=C;k.extend(L);const T=(e,t)=>_(e)===_(t),I=(e,t)=>void 0!==e&&k(e).isSame(t,"day"),O={MMMM:(e,t)=>Y(e,{month:"short"},t),MM:_,M:_,YYYY:E,YY:(e,t)=>Y(e,{year:"2-digit"},t),DD:S,D:S},N=/\/|\s|-/,A=(e,t,r)=>{try{(e=>{const t=e.trimStart().trimEnd().split(N);if(""===e||""===e.trim())throw new Error("format is empty");t.forEach((e=>{if(!(e in O))throw new Error(`format is not valid, format passed is: ${e}`)}))})(t);const n=t.trimStart().trimEnd().split(N),a=t.match(N),o=null!==a?a[0]:"";return n.map((t=>O[t](e,r))).join(o)}catch(e){console.error(e)}return""};k.extend(w),k.extend(D);const B=e=>{const{locale:t}=l;k.locale(t);const r=void 0===e?new Date:k(e).toDate(),n=(e=>parseInt(Y(e,{day:"numeric"},"latn"),10))(new Date(r)),a=k(new Date(r)).subtract(n-1,"days"),o=a.weekday(),s=k(a).subtract(o,"days"),i=a.add(15,"days");let c={days:[],current:0};const d=[];let u=k(s.format());for(let e=0;e<=5;e++){const e=[];for(let t=0;t<7;t++){const t=new Date(u.format());e.push({date:t,disabled:!T(a.toDate(),t),current:I(t,new Date)}),u=u.add(1,"day"),c={days:e,current:e.findIndex((e=>e.current))}}d.push(c)}return{id:Date.now(),monthName:A(new Date(r),"MMMM YYYY"),middleOfMonth:i.toDate(),weeks:d}},F=()=>m()?o:-850,H=({daysElementRefs:t,days:r,setDays:n})=>{const a=e.useRef(!1),o=r[0].middleOfMonth;return{slideToTheNextMonth:()=>{if(a.current)return;const e=k(o).add(1,"month"),i=B(e.toDate());n([...r,i]),requestAnimationFrame((()=>{a.current=!0;const[e,r]=t.current;e.style.transition=`transform 250ms ${s}`,e.style.transform=`translateX(${F()}px)`,r.style.transition=`transform 250ms ${s}`,r.style.transform=`translateX(${F()}px)`,setTimeout((()=>{n((e=>e.filter((e=>e.id===i.id)))),r.style.transition=null,r.style.transform=null,a.current=!1}),300)}))},slideToPrevMonth:()=>{if(a.current)return;const e=k(o).subtract(1,"month"),i=B(e.toDate());n([i,...r]),requestAnimationFrame((()=>{a.current=!0;const[e,r]=t.current;e.style.transform=`translateX(${F()}px)`,r.style.transform=`translateX(${F()}px)`,requestAnimationFrame((()=>{r.style.transition=`transform 250ms ${s}`,r.style.transform="translateX(0px)",e.style.transition=`transform 250ms ${s}`,e.style.transform="translateX(0px)",setTimeout((()=>{n((e=>e.filter((e=>e.id===i.id)))),e.style.transition=null,e.style.transform=null,a.current=!1}),300)}))}))}}},W={fa:{shortWeekDays:[{key:0,name:"شنبه"},{key:1,name:"یکشنبه"},{key:2,name:"دوشنبه"},{key:3,name:"سه شنبه"},{key:4,name:"چهارشنبه"},{key:5,name:"پنجشنبه"},{key:6,name:"جمعه"}],months:[{key:1,name:"فروردین"},{key:2,name:"اردیبهشت"},{key:3,name:"خرداد"},{key:4,name:"تیر"},{key:5,name:"مرداد"},{key:6,name:"شهریور"},{key:7,name:"مهر"},{key:8,name:"آبان"},{key:9,name:"آذر"},{key:10,name:"دی"},{key:11,name:"بهمن"},{key:12,name:"اسفند"}],format:"YYYY/MM/DD",am:"ق.ظ",pm:"ب.ظ"},en:{shortWeekDays:[{key:0,name:"S"},{key:1,name:"M"},{key:2,name:"T"},{key:3,name:"W"},{key:4,name:"T"},{key:5,name:"F"},{key:6,name:"S"}],months:[{key:1,name:"January"},{key:2,name:"February"},{key:3,name:"March"},{key:4,name:"April"},{key:5,name:"May"},{key:6,name:"June"},{key:7,name:"July"},{key:8,name:"August"},{key:9,name:"September"},{key:10,name:"October"},{key:11,name:"November"},{key:12,name:"December"}],format:"MM-DD-YY",am:"AM",pm:"PM"}};r.div`
color: inherit;
`;const j=r.button`
position: relative;
outline: none;
background-color: transparent;
display: flex;
font-family: inherit;
align-items: center;
justify-content: center;
width: ${e=>e.width}px;
height: ${e=>e.height}px;
border: 1px solid transparent;
user-select: none;
color: ${e=>e.theme.colors.gray[600]};
border-radius: ${e=>d[e.theme.round].calendarItem}px;
// pseudos
&:hover,
&:focus {
border-color: ${e=>e.theme.colors.gray[50]};
}
&:active {
background-color: ${e=>e.theme.colors.primary[40]};
border-color: transparent;
color: ${e=>e.theme.colors.gray[0]};
}
// days picker
&[data-selected='true'] {
background-color: ${e=>e.theme.colors.primary[50]};
border-color: transparent;
color: ${e=>e.theme.colors.gray[0]};
}
&[data-disabled='true'] {
border-color: transparent;
}
&[data-disabled='true'] .cl-text {
opacity: 0.5;
}
&:not([data-range='true']) {
transition: all 0.1s linear;
border-radius: ${e=>d[e.theme.round].calendarItem}px;
}
&:not([data-selected='true'])&[data-weekend='true'] {
color: #ff4d4d;
}
&:not([data-disabled='true']) {
cursor: pointer;
}
// range picker
&[data-in-range='true'] {
background-color: ${e=>e.theme.colors.primary[90]};
border-color: transparent;
}
&[data-start-range='true'] {
background-color: ${e=>e.theme.colors.primary[40]};
color: ${e=>e.theme.colors.gray[0]};
border-radius: ${e=>d[e.theme.round].calendarItem}px;
border-color: transparent;
}
&[data-end-range='true'] {
background-color: ${e=>e.theme.colors.primary[40]};
color: ${e=>e.theme.colors.gray[0]};
border-radius: ${e=>d[e.theme.round].calendarItem}px;
border-color: transparent;
}
&[data-in-range='true']:before,
&[data-end-range='true']:before {
content: ' ';
display: block;
position: absolute;
width: 40px;
height: 40px;
top: -1px;
left: ${e=>"rtl"===e.theme.direction?"20px":"unset"};
right: ${e=>"rtl"===e.theme.direction?"unset":"20px"};
background-color: ${e=>e.theme.colors.primary[90]};
z-index: -1;
}
&[data-in-range='true']:nth-of-type(1):before,
&[data-start-range='true']:before {
display: none;
}
`;j.defaultProps={width:40,height:40};const z=r.div`
display: flex;
justify-content: center;
align-items: center;
flex-wrap: wrap;
gap: 4px;
//height: ${o}px;
`,P=t=>{const{locale:r}=l,n=A(t.value,"MM","latn");return e.createElement(z,null,W[r].months.map((r=>e.createElement(j,{key:r.key,className:"zm-MonthPickerButton",width:90,height:48,"data-selected":r.key===parseInt(n,10),onClick:()=>t.onMonthSelect(r.key),"aria-current":"date",type:"button",tabIndex:0},r.name))))},R=r.div`
display: grid;
grid-template-columns: repeat(3, 92px);
grid-template-rows: auto;
justify-content: center;
gap: 4px;
max-height: ${o}px;
overflow: auto;
padding-top: 8px;
padding-bottom: 8px;
`,q=t=>{const r=parseInt(A(t.value,"YYYY","latn"),10),n=e.useMemo((()=>((e,t=80,r=50)=>{const n=parseInt(E(e,"latn"),10),a=n+r,o=[];for(let e=n-t;e<=a;e++)o.push(e);return o})(t.value)),[]),a=e.useCallback((e=>{if(null===e)return;const t=e.querySelector("button[data-selected=true]");if(null!=t){const{height:r,top:n}=e.getBoundingClientRect(),{top:a}=t.getBoundingClientRect();e.scrollTop=Math.abs(n-a)-r/2}}),[]);return e.createElement(R,{ref:a},n.map((n=>e.createElement(j,{className:"zm-YearPickerButton",key:n,width:90,height:48,"data-selected":r===n,"aria-selected":r===n,"aria-current":"date",type:"button",tabIndex:0,onClick:()=>t.onYearSelect(n)},(e=>{if("test"===process.env.NODE_ENV)return e;const{locale:t}=l;return Number(e).toLocaleString(t,{useGrouping:!1})})(n)))))},J=e=>!0===e.range,U=t=>{const[r,n]=e.useState(!1),[a,o]=e.useState(void 0!==t.from?new Date(t.from):void 0),[s,i]=e.useState(void 0!==t.to?new Date(t.to):void 0),l=(e,r)=>{"function"==typeof t.onChange&&J(t)&&null!=e&&null!=r&&t.onChange({from:e,to:r})};return{handlers:Object.assign({onClick:e=>!0===t.range?(e=>{const{value:t}=e.currentTarget.dataset;r||(void 0!==t&&(o(new Date(t)),i(null)),n(!0)),r&&null===s&&(void 0!==t&&(i(new Date(t)),l(a,new Date(t))),n(!1)),r&&void 0!==s&&(l(a,s),n(!1))})(e):(e=>{const{value:r,disabled:n}=e.currentTarget.dataset;if(void 0!==r&&"true"!==n)return J(t)||"function"!=typeof t.onChange||t.onChange({value:new Date(r)}),r})(e)},!0===t.range&&{onMouseMove:e=>{const{value:t}=e.currentTarget.dataset;r&&void 0!==t&&k(t).isAfter(k(a))&&i(new Date(t))}}),from:a,to:s}},X=(t,r)=>{const{locale:n}=l,{defaultValue:a,weekends:o,events:s,width:i}=t,c=void 0===a?new Date:a,d=e.useMemo((()=>B(a)),[]),[u,m]=e.useState([d]),[f,h]=e.useState("days"),p=e.useRef([]),y=H({daysElementRefs:p,days:u,setDays:m});U(t);return e.createElement("div",{style:{width:i}},e.createElement(g,{monthName:u[0].monthName,onNextClick:()=>{if("days"===f)return y.slideToTheNextMonth()},onPrevClick:()=>{if("days"===f)return y.slideToPrevMonth()},onClickOnTitle:()=>{h("month"!==f&&"year"!==f?"year":"days")}}),"year"===f?e.createElement(q,{value:c,onYearSelect:e=>{const t=((e,t)=>{const r=t-parseInt(E(e,"latn"),10);return r>0?k(e).add(r,"years").toDate():k(e).subtract(Math.abs(r),"years").toDate()})(c,e);m([B(t)]),h("month")}}):null,"month"===f?e.createElement(P,{value:c,onMonthSelect:e=>{const t=((e,t)=>{const r=t-parseInt(_(e,"latn"),10);return r>0?k(e).add(r,"months").toDate():k(e).subtract(Math.abs(r),"months").toDate()})(u[0].middleOfMonth,e);m([B(t)]),h("days")}}):null,"days"===f?e.createElement(e.Fragment,null,e.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(7, 1fr)",fontSize:"12px",padding:"10px 0",color:"#414141"}},W[n].shortWeekDays.map((t=>e.createElement("div",{style:{textAlign:"center"},key:t.key},t.name)))),e.createElement("div",{style:{display:"flex",overflow:"hidden"}},u.map(((t,r)=>e.createElement("div",{key:t.id,style:{width:"100%"},ref:e=>{p.current[r]=e},role:"rowgroup"},t.weeks.map(((t,r)=>e.createElement("div",{key:r,style:{display:"grid",gridTemplateColumns:"repeat(7, 1fr)",fontSize:"14px",position:"relative"}},t.days.map(((t,r)=>{let n;if(s&&s.length){let e=s.find((e=>A(e.date,"YYYY/MM/DD")===A(t.date,"YYYY/MM/DD")));e&&(n=e.title)}let a={margin:"2px",border:"1px solid #b6b6b6",borderRadius:"3px",color:"#414141",height:"50px",padding:"0 5px"};return(null==o?void 0:o.some((e=>e===r)))&&Object.assign(a,{backgroundColor:"#ffcdcd",color:"#e04242"}),t.disabled&&Object.assign(a,{color:"#cbcbcb"}),I(c,t.date)&&Object.assign(a,{backgroundColor:"#72acff",color:"#083872"}),n&&Object.assign(a,{backgroundColor:"#c3fdc3",color:"#22522c"}),e.createElement("div",{style:a},e.createElement("div",{style:{textAlign:"right"}},A(t.date,"DD")),e.createElement("div",{style:{fontSize:12,textAlign:"center"}},n))})))))))))):null)};X.displayName="Calendar";var V=e.forwardRef(X);const Z=r.div`
label {
padding: 4px 8px;
margin: 0 8px;
background-color: #d0f8d0;
border-radius: 5px;
white-space: nowrap;
font-size: 12px;
font-weight: bold;
color: #343434;
cursor: pointer;
&[data-weekend='true'] {
background-color: #ffcdcd;
}
}
input[type="radio"] {
display: none;
}
input[type="radio"]:checked + label {
background-color: #31e731;
}
`,G=e=>{const t=["0","1","2","3","4","5","6","7","8","9"],r=["۰","۱","۲","۳","۴","۵","۶","۷","۸","۹"];let n="";for(let a=0;a<e.length;a++){const o=t.indexOf(e[a]);n+=-1!==o?r[o]:e[a]}return n},Q=(t,r)=>{const{locale:n}=l,{defaultTime:a,weekends:o,events:s,width:i,onChecked:c}=t,[d,u]=e.useState(a),m=new Date,p=e.useMemo((()=>B(new Date)),[]),[y,g]=e.useState([p]),[b,x]=e.useState("days"),M=p.weeks.findIndex((e=>e.current>-1)),[v,w]=e.useState(M),$=e.useRef([]),D=H({daysElementRefs:$,days:y,setDays:g});return e.createElement("div",{ref:r,style:{width:i}},e.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"end",gap:"20px"}},e.createElement("div",{style:{display:"flex",alignItems:"center"}},e.createElement("div",{style:{display:"flex",alignItems:"center"}},e.createElement("button",{style:{border:"none",background:"transparent",fontSize:"20px",fontWeight:"bold",color:"#1b83fa",cursor:"pointer"},onClick:()=>{v>0&&w(v-1)}},e.createElement(f,null)),e.createElement("span",{style:{backgroundColor:"#b6d7ff",color:"#1b83fa",borderRadius:"20px",padding:"2px 10px",fontSize:12}},"هفته ",G((v+1).toString())),e.createElement("button",{style:{border:"none",background:"transparent",fontSize:"20px",fontWeight:"bold",color:"#1b83fa",cursor:"pointer"},onClick:()=>{let e;y[0].weeks[v+1]&&(e=y[0].weeks[v+1].days.filter((e=>!0===e.disabled))),v<y[0].weeks.length-1&&e.length<7&&w(v+1)}},e.createElement(h,null))),e.createElement("div",{style:{display:"flex",alignItems:"center"}},e.createElement("button",{style:{border:"none",background:"transparent",fontSize:"20px",fontWeight:"bold",color:"#1b83fa",cursor:"pointer"},onClick:()=>{if(w(0),"days"===b)return D.slideToPrevMonth()}},e.createElement(f,null)),e.createElement("span",{style:{backgroundColor:"#b6d7ff",color:"#1b83fa",borderRadius:"20px",padding:"2px 10px",fontSize:12}},y[0].monthName),e.createElement("button",{style:{border:"none",background:"transparent",fontSize:"20px",fontWeight:"bold",color:"#1b83fa",cursor:"pointer"},onClick:()=>{if(w(0),"days"===b)return D.slideToTheNextMonth()}},e.createElement(h,null))))),e.createElement("div",{style:{display:"flex",overflow:"hidden"}},y.map(((t,r)=>e.createElement("div",{key:t.id,style:{width:"100%"},ref:e=>{$.current[r]=e},role:"rowgroup"},t.weeks[v].days.map(((t,r)=>{const a=k(t.date).format("YYYY-MM-DD"),i=s.filter((e=>e.date_str===a));return t.times=i,e.createElement("div",{role:"row",style:{display:"flex",alignItems:"center",borderBottom:"1px solid #ccc"}},e.createElement("div",{key:W[n].shortWeekDays[r].key,style:{width:"15%",padding:"15px 8px",textAlign:"right",fontSize:12,fontWeight:"bold",borderLeft:"1px solid #ccc",color:I(m,t.date)?"#296fe0":"#343434"}},W[n].shortWeekDays[r].name,e.createElement("span",{style:{margin:"0 4px"}},"-"),e.createElement("span",null,A(t.date,"DD MMMM YYYY"))),e.createElement("div",{style:{display:"flex",padding:8,width:"85%"}},t.times.map((t=>{let n={};return"1"===t.is_book&&Object.assign(n,{backgroundColor:"#f6f6f6"}),e.createElement(Z,null,e.createElement("input",{type:"radio",id:t.id,name:"time",value:t.id,checked:d===t.id,disabled:!("1"!==t.is_book&&!(null==o?void 0:o.some((e=>e===r)))),onChange:()=>{u(t.id),c&&c(t)}}),e.createElement("label",{htmlFor:t.id,id:"label"+t.id,"data-weekend":null==o?void 0:o.some((e=>e===r)),style:n},G(t.from_time_str)+" الی "+G(t.to_time_str)))}))))})))))))};Q.displayName="Calendar";var K=e.forwardRef(Q);exports.Calendar=V,exports.CalendarProvider=r=>{const{accentColor:n=i,locale:o,round:s="thin",direction:d="rtl"}=r;e.useMemo((()=>l.setLocale(o)),[o]);const u={colors:{primary:e.useMemo((()=>a(n)),[]),gray:c},round:s,direction:d};return e.createElement(t.ThemeProvider,{theme:u},r.children)},exports.WeekCalendar=K;