react-calendar-z
Version:
React hook calendar (lib). Ultimate calendar
2 lines (1 loc) • 18.3 kB
JavaScript
!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?a(exports,require("react"),require("joinclass"),require("react-if-vz"),require("react-wrap-animate-z"),require("react-dropdown-z")):"function"==typeof define&&define.amd?define(["exports","react","joinclass","react-if-vz","react-wrap-animate-z","react-dropdown-z"],a):a((e="undefined"!=typeof globalThis?globalThis:e||self).ReactCalendar={},e.React,e.joinclass,e.reactIfVz,e.reactWrapAnimateZ,e.Dropdown)}(this,(function(e,a,t,n,r,l){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=o(a),d=o(t),i=o(l),u=function(e){var a=e.value,t=e.className,n=e.disabled,r=e.display,l=e.isSelected,o=e.neighbor,i=e.setSelected;return c.default.createElement("span",{className:d.default("picker-cell month-year-cell",t,n&&"disabled-over-range-time",l&&"date-is-selected",o&&"date-neighbor-target"),onClick:function(){n||i(a)},"aria-hidden":!0},c.default.createElement("span",{className:"date-cell-value"},null!=r?r:a),c.default.createElement("div",{className:"date-cell-bullet"}),c.default.createElement("div",{tabIndex:!n&&l?0:-1,className:"date-cell-box"}))},s=new Date,m=s.getDate(),f=s.getMonth(),h=s.getFullYear(),y=function(e){return null==e},p=function(e,a,t){return m===t&&f===a&&h===e},v=function(e){var a=e.minYear,t=e.maxYear,n=e.notBeforeTime,r=e.notAfterTime,l=new Date,o=l.getFullYear();if(a||(a=o-100),t||(t=o+100),n){var c=n.getFullYear();a=a<c?c:a}else n=new Date(a,0,1);if(r){var d=r.getFullYear();t=t>d?d:t}else r=new Date(t,11,31);return a>t&&(a=t),!e.minimumDayCanLargeThanToday&&a>o&&(a=o,n=l),{minYear:a,maxYear:t,minMonth:n.getMonth(),maxMonth:r.getMonth(),notBeforeTime:n,notAfterTime:r,beforeYearMonth:w([n.getFullYear(),n.getMonth()]),afterYearMonth:w([r.getFullYear(),r.getMonth()]),beforeAll:Y(n.getFullYear(),n.getMonth(),n.getDate()),afterAll:Y(r.getFullYear(),r.getMonth(),r.getDate())}},N=function(e,a){return(a||S)[e]||""},b=function(e){return"0".concat(e).slice(-2)},g=function(e,a){return e.reduce((function(e,t,n){return(n%a==0?e.push([t]):e[e.length-1].push(t))&&e}),[])},k=function(e,a){return a>11?(e++,a=0):a<0&&(e--,a=11),[e,a]},M=function(e,a,t,n,r){if(!n&&!r)return!1;var l=Y(e,a,t);return n>0&&r>0?l<n||l>r:r>0?l>r:n>0&&l<n},E=function(e){return[31,e%4==0&&e%100!=0||e%400==0?29:28,31,30,31,30,31,31,30,31,30,31]},C=function(e,a){var t=k(e,a),n=t[0],r=t[1];return{year:n,month:r,maxDayOfMonth:E(n)[r],otherMonth:!0}},Y=function(e,a,t){return Number(e+b(a)+b(t))},w=function(e){return Number(e[0]+b(e[1]))},D=function(e,a){return b(e)+b(a)},x=function(e){var a=10*Math.floor(e/10);return[a,a+9]},S=["January","February","March","April","May","June","July","August","September","October","November","December"],T=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],F=[{name:"Sunday",shortName:"Su",dateClassName:"date-cell-sunday",keyName:"sun",number:0},{name:"Monday",shortName:"Mo",dateClassName:"date-cell-monday",keyName:"mon",number:6},{name:"Tuesday",shortName:"Tu",dateClassName:"date-cell-tuesday",keyName:"tue",number:5},{name:"Wednesday",shortName:"We",dateClassName:"date-cell-wednesday",keyName:"wed",number:4},{name:"Thursday",shortName:"Th",dateClassName:"date-cell-thursday",keyName:"thu",number:3},{name:"Friday",shortName:"Fr",dateClassName:"date-cell-friday",keyName:"fri",number:2},{name:"Saturday",shortName:"Sa",dateClassName:"date-cell-saturday",keyName:"sat",number:1}],O=F.map((function(e){return e.dateClassName})),W={sunday:[0,6,5,4,3,2,1],monday:[6,5,4,3,2,1,0],friday:[2,1,0,6,5,4,3],saturday:[1,0,6,5,4,3,2]},B=function(e){var a=e.weekLabels,t=void 0===a?[]:a,r=e.dayOfWeeks,l=void 0===r?[]:r,o=e.readOnly,i=e.neighborMonthClassName,u=e.showToday,s=e.todayClassName,m=e.selectedClassName,f=e.handleChangeDate,h=e.formatDayValue;return c.default.createElement(c.default.Fragment,null,l.map((function(e,a){return c.default.createElement("div",{key:a,className:"date-row date-line",role:"row"},e.map((function(e,a){var r,l=e.showOnlyCurrentMonthDays||o,y=e.isSelected&&!l,p=e.isOverRange&&!l,v=e.isToday&&u,N=d.default("picker-cell date-cell","date-cell-".concat(T[e.month]),null===(r=t[a])||void 0===r?void 0:r.dateClassName,"date-cell-".concat(D(e.month+1,e.dayDisplay)),"date-cell-".concat(Y(e.year,e.month+1,e.dayDisplay)),e.isBookmark&&"date-is-bookmark",e.bookmarkClassName,e.otherMonth&&"date-neighbor-target",e.otherMonth&&i,v&&"date-is-today",v&&s,y&&"date-is-selected",y&&m,l&&"read-only",p&&"disabled-over-range-time");return c.default.createElement("span",{key:a,className:N,onClick:function(){l||e.isOverRange||f(e)},"aria-hidden":!0},c.default.createElement(n.When,{condition:!e.showOnlyCurrentMonthDays},c.default.createElement("span",{className:"date-cell-value"},h?h(e.dayDisplay):e.dayDisplay)),c.default.createElement("div",{className:"date-cell-bullet"}),c.default.createElement("div",{tabIndex:y?0:-1,className:"date-cell-box"}))})))})))},A=function(e){var a=e.decadeData,t=e.selected,n=e.minYear,r=e.maxYear,l=e.setSelected,o=void 0===l?function(){}:l,d=a[0],i=a[1],s=g(Array.from({length:i-d+3},(function(e,a){return d-1+a})),3);return c.default.createElement(c.default.Fragment,null,s.map((function(e,a){return c.default.createElement("div",{key:a,className:"date-row",role:"row"},e.map((function(e,a){return c.default.createElement(u,{key:a,className:"year-cell-".concat(e),disabled:n>e||r<e,neighbor:e<d||e>i,isSelected:e===t,value:e,setSelected:o})})))})))},V=function(e){var a=e.labelMonths,t=e.selected,n=e.isSameYear,r=e.year,l=e.minYearMonth,o=e.maxYearMonth,i=e.setSelected,s=void 0===i?function(){}:i,m=g(a||S,3);return c.default.createElement(c.default.Fragment,null,m.map((function(e,a){return c.default.createElement("div",{key:a,className:"date-row",role:"row"},e.map((function(e,i){var m=3*a+i,f=w(k(r,m));return c.default.createElement(u,{key:i,className:d.default("month-year-cell-".concat(f),"month-cell-".concat(T[m])),disabled:l>f||o<f,isSelected:m===t&&n,display:e,value:m,setSelected:s})})))})))},I=function(e){var a=e.weekLabels,t=e.weekClassName,n=e.dayOfWeeks,r=void 0===n?[]:n,l=e.readOnly,o=e.neighborMonthClassName,i=e.showToday,u=e.todayClassName,s=e.selectedClassName,m=e.onClickWeekLabel,f=void 0===m?function(){}:m,h=e.handleChangeDate,y=e.formatDayValue;return c.default.createElement(c.default.Fragment,null,c.default.createElement("div",{className:"date-row date-label",role:"row"},a.map((function(e,a){return c.default.createElement("span",{key:a,className:d.default("week-label date-cell",e.dateClassName,t),onClick:function(){return f(e)},"aria-hidden":!0},c.default.createElement("span",null,e.shortName||e.name),c.default.createElement("div",{className:"week-cell-box"}))}))),c.default.createElement(B,{weekLabels:a,dayOfWeeks:r,readOnly:l,neighborMonthClassName:o,showToday:i,todayClassName:u,selectedClassName:s,formatDayValue:y,handleChangeDate:h}))},L=function(e){var a=e.children,t=e.className,n=e.disabled,r=e.isVisible,l=e.index,o=e.handleNextBack;return r?c.default.createElement("span",{className:d.default("date-picker2-nav-button",t,n&&"button-disabled"),onClick:function(){n||o(l)}},a||c.default.createElement("span",{className:"date-picker2-arrow-inner"})):null},z=function(e){var a=e.showXClose,t=void 0===a||a,r=e.xCloseIcon,l=e.showFooter,o=e.selectedValue,d=e.resetSelectionValue;return c.default.createElement(n.When,{condition:l},c.default.createElement("div",{className:"date-picker2-footer"},c.default.createElement("div",{className:"date-picker2-footer-content"},c.default.createElement("div",{className:"date-picker2-calendar-selected"},o),c.default.createElement("div",{className:"date-picker2-calendar-close"},c.default.createElement(n.When,{condition:Boolean(r)},c.default.createElement("div",{className:"date-picker2-calendar-close-icon date-picker2-calendar-your-icon",onClick:d},r)),c.default.createElement(n.When,{condition:t&&Boolean(!r)},c.default.createElement("div",{className:"date-picker2-calendar-close-icon date-picker2-calendar-close-x-icon",onClick:d}))))))},j=function(){return j=Object.assign||function(e){for(var a,t=1,n=arguments.length;t<n;t++)for(var r in a=arguments[t])Object.prototype.hasOwnProperty.call(a,r)&&(e[r]=a[r]);return e},j.apply(this,arguments)};function R(e,a,t){if(t||2===arguments.length)for(var n,r=0,l=a.length;r<l;r++)!n&&r in a||(n||(n=Array.prototype.slice.call(a,0,r)),n[r]=a[r]);return e.concat(n||Array.prototype.slice.call(a))}"function"==typeof SuppressedError&&SuppressedError;var H,q=function(e){var a=e.currentDate,t=e.minYear,n=e.maxYear,r=e.minMonth,l=e.maxMonth,o=e.valueMonth,u=e.valueYear,s=e.className,m=e.maxHeightSelectMonth,f=e.maxHeightSelectYear,h=e.i18nLabelMonth,p=e.minimumDayCanLargeThanToday,v=e.handleChange;if(y(o)||y(u))return null;var N=function(e,a,t,n,r,l){return a===l?e.slice(0,n+1):a===r?e.slice(t):e}(h||S,u,r,l,t,n).map((function(e,a){return{label:e,value:a}})),b=function(e,a,t,n){var r=e.getFullYear(),l=a>t?[t,a]:[a,t],o=l[0],c=l[1];return(n&&o<r||r<o)&&(o=r),Array.from({length:c-o+1},(function(e,a){return o+a})).map((function(e,t){return{label:"".concat(a+t),value:a+t}})).reverse()}(a,t,n,p||!1);return c.default.createElement("span",{className:d.default("date-picker2-select-month-year date-picker2-title-month-year",s)},c.default.createElement("span",{className:"date-picker2-select-month"},c.default.createElement(i.default,{width:"112px",fullWidth:!0,className:"date-picker2-select-month-control",value:o,keyName:"value",labelName:"label",options:N,spacingVerticalOffset:4,dropdownHeight:m,handleSelection:function(e){v(u,Number(e))}})),c.default.createElement("span",{className:"date-picker2-select-split"}),c.default.createElement("span",{className:"date-picker2-select-year"},c.default.createElement(i.default,{width:"80px",fullWidth:!0,className:"date-picker2-select-year-control",value:u,keyName:"value",labelName:"label",options:b,spacingVerticalOffset:4,dropdownHeight:f,handleSelection:function(e){v(Number(e),o)}})))},J=((H={8:1,7:0})[-1]=6,H),P={monday:{numberWeek:1,plus:-1},sunday:{numberWeek:0,plus:0},saturday:{numberWeek:-1,plus:1},friday:{numberWeek:-2,plus:2}},X=function(e,a,t,n,r){var l=t[0],o=t[1];if(e)return{disabledBack:n[0]<=r.current.minYear,disabledNext:n[1]>=r.current.maxYear};if(a){var c=E(l)[o],d=Y(l,o,1),i=Y(l,o,c);return{disabledBack:r.current.beforeAll>=d,disabledNext:r.current.afterAll<=i}}var u=k(l,0),s=u[0],m=u[1],f=k(l,11),h=f[0],y=f[1],p=w([s,m]),v=w([h,y]);return{disabledBack:r.current.beforeYearMonth>=p,disabledNext:r.current.afterYearMonth<=v}},Z=function(e,a,t,n){return t===n.getDate()&&a===n.getMonth()&&e===n.getFullYear()},_=function(e,a,t,n,r,l,o,c,d,i){void 0===t&&(t=[]),void 0===c&&(c=0),void 0===i&&(i=!1);var u=function(e,a,t,n){return void 0===n&&(n=[]),n.find((function(n){var r=n.date;return r.getFullYear()===e&&r.getMonth()===a&&r.getDate()===t}))||{}}(l,o,c,t);return j(j({},e),{dayDisplay:c,isToday:p(l,o,c),isSelected:Z(l,o,c,a)&&i,isOverRange:M(l,o,c,n,r),showOnlyCurrentMonthDays:d,isBookmark:Boolean(u.className),bookmarkClassName:u.className})};function G(e){return e?Y(e.getFullYear(),e.getMonth(),e.getDate()):void 0}e.CalendarCell=u,e.CalendarDayOfWeeks=B,e.CalendarDecade=A,e.CalendarFooter=z,e.CalendarMonth=V,e.CalendarNav=L,e.CalendarWeek=I,e.datesClassName=O,e.default=function(e){var t=e.className,l=e.todayClassName,o=e.selectedClassName,i=e.neighborMonthClassName,u=e.labelMonthYearClassName,s=e.weekClassName,m=e.width,f=e.height,h=e.readOnly,y=e.isVisible,p=void 0===y||y,b=e.showAnchor,g=e.labelNext,M=e.labelBack,Y=e.weekStart,w=void 0===Y?"sunday":Y,D=e.showOnlyCurrentMonthDays,S=e.notBeforeTime,B=e.notAfterTime,H=e.value,Z=e.bookmarkDates,K=e.showToday,Q=void 0===K||K,U=e.i18nLabelWeek,$=e.i18nLabelMonth,ee=e.minYear,ae=e.maxYear,te=e.minimumDayCanLargeThanToday,ne=e.showMonthYearSelection,re=e.showNextBack,le=void 0===re||re,oe=e.rightNextBack,ce=e.maxHeightSelectMonth,de=e.maxHeightSelectYear,ie=e.showFooter,ue=e.showXClose,se=void 0===ue||ue,me=e.xCloseIcon,fe=e.refsResetCalendar,he=e.onSelectedValue,ye=void 0===he?function(){}:he,pe=e.onChangeView,ve=void 0===pe?function(){}:pe,Ne=e.onClickWeekLabel,be=void 0===Ne?function(){}:Ne,ge=e.formatTittleYearMonth,ke=e.formatDayValue,Me=e.formatSelectedDate,Ee=a.useRef(!0),Ce=a.useRef({}),Ye=a.useState(H||new Date),we=Ye[0],De=Ye[1],xe=a.useState([]),Se=xe[0],Te=xe[1],Fe=a.useState([]),Oe=Fe[0],We=Fe[1],Be=a.useState([]),Ae=Be[0],Ve=Be[1],Ie=a.useState("date"),Le=Ie[0],ze=Ie[1],je=a.useState([]),Re=je[0],He=je[1],qe=a.useState(),Je=qe[0],Pe=qe[1],Xe="date"===Le,Ze="month"===Le,_e="year"===Le;a.useEffect((function(){Ce.current=v({maxYear:ae,minYear:ee,notAfterTime:B,notBeforeTime:S,minimumDayCanLargeThanToday:te});var e=H||new Date,a=!H&&te,t=H&&!te&&e<Ce.current.notBeforeTime;a&&(Ee.current=!1,e=new Date(Ce.current.minYear,Ce.current.minMonth,1)),t&&(Ee.current=!1,e=Ce.current.notBeforeTime),aa(e.getFullYear(),e.getMonth(),e),fe&&(fe.current=ta)}),[H,Q,S,B,$,h,D,te,ne,w,U,Z]),a.useEffect((function(){var e=Array.isArray(U)&&7===U.length?U:F,a=new Map;e.forEach((function(e,t){var n="object"==typeof e?j({},e):{shortName:e};a.set(F[t].number,j(j({},n),{dateClassName:O[t]}))}));var t=(W[w]||W.sunday).map((function(e){return j({},a.get(e))}));Te(t)}),[w,U]),a.useEffect((function(){(p||ne)&&ta()}),[p,ne,w,Z]);var Ge,Ke,Qe=X(_e,Xe,Re,Ae,Ce),Ue=Qe.disabledBack,$e=Qe.disabledNext,ea=function(e){if(!(Ue&&-1===e||$e&&1===e)){Pe(e);var a=Re[0],t=Re[1];if(_e){var n=a+10*e;return Ve(x(n)),void He([n,t])}var r=Xe||ne?k(a,t+e):k(a+e,t),l=r[0],o=r[1];aa(l,o)}},aa=function(e,a,t){void 0===t&&(t=we),function(e,a,t,n,r,l,o,c,d,i,u){var s,m;void 0===i&&(i=[]);for(var f=function(e,a){var t;if("sunday"!==a&&P[a]){var n=e+P[a].plus;return null!==(t=J[n])&&void 0!==t?t:n}return e}(new Date(e,a,1).getDay(),l),h=E(e)[a],y=n&&null!==(s=G(n))&&void 0!==s?s:0,p=r&&null!==(m=G(r))&&void 0!==m?m:0,v=C(e,a-1),N=C(e,a+1),b=[],g=[],k=function(){7===g.length&&(b.push(R([],g,!0)),g=[])},M=function(e,a){return _(j(j({},e),{dayDisplay:a}),t,i,y,p,e.year,e.month,a,o,u)},Y=v.maxDayOfMonth-f+1;Y<=v.maxDayOfMonth;Y++)g.push(M(v,Y));k();for(Y=1;Y<=h;Y++)g.push(M({year:e,month:a},Y)),k();var w=b.flat().length+g.length,D=42-w;for(Y=1;Y<=D;Y++)g.push(M(N,Y)),k();g.length>0&&b.push(R([],g,!0));c(b),d([e,a])}(e,a,t,Ce.current.notBeforeTime,Ce.current.notAfterTime,w,Boolean(D),We,He,Z,Ee.current)},ta=function(){ze("date"),ve("date"),aa(we.getFullYear(),we.getMonth())};return p?c.default.createElement("div",{style:{width:m,height:f},className:d.default("date-picker2",t)},c.default.createElement("div",{className:"date-picker2-header"},c.default.createElement(n.When,{condition:!oe},c.default.createElement(L,{index:-1,isVisible:le,className:"button-left",disabled:Ue,handleNextBack:ea},M)),c.default.createElement(n.When,{condition:b},c.default.createElement("span",{className:"date-picker2-anchor left-label"})),c.default.createElement(n.Ifz,null,c.default.createElement(n.Ifz.If,{condition:ne},c.default.createElement(q,{className:u,currentDate:we,maxYear:Ce.current.maxYear,minYear:Ce.current.minYear,minMonth:Ce.current.minMonth,maxMonth:Ce.current.maxMonth,valueYear:Re[0],valueMonth:Re[1],maxHeightSelectMonth:ce,maxHeightSelectYear:de,i18nLabelMonth:$,minimumDayCanLargeThanToday:te,handleChange:aa})),c.default.createElement(n.Ifz.Else,null,c.default.createElement(r.FadeInAnimate,{key:Je,duration:"100ms",delay:"0ms",tagName:"span",className:d.default("date-picker2-title-month-year",Xe&&"date-picker2-title-month",Ze&&"date-picker2-title-year",_e&&"date-picker2-title-decade",u)},c.default.createElement("span",{className:"date-picker2-label-month-year",onClick:function(){var e="date";Ze?(Ve(x(Re[0])),e="year"):Xe&&(e="month"),Pe(0),ze(e),ve(e)},"aria-hidden":!0},(Ge=Re[0],Ke=Re[1],ge?Ze?ge(Ge,-1):_e?ge(-1,-1,Ae):ge(Ge,Ke+1):Ze?Ge||"":_e?"".concat(Ae[0]," - ").concat(Ae[1]):"".concat(N(Ke,$)," ").concat(Ge||"").trim()))))),c.default.createElement(n.When,{condition:b},c.default.createElement("span",{className:"date-picker2-anchor right-label"})),c.default.createElement(n.When,{condition:oe},c.default.createElement(L,{index:-1,isVisible:le,className:"button-left",disabled:Ue,handleNextBack:ea},M)),c.default.createElement(L,{index:1,isVisible:le,className:"button-right",disabled:$e,handleNextBack:ea},g)),c.default.createElement("div",{className:"date-picker2-content"},c.default.createElement("div",{className:d.default("date-picker2-calendar","date-picker2-calendar-month-".concat(T[Re[1]])),role:"grid"},c.default.createElement(n.Ifz,null,c.default.createElement(n.Ifz.If,{condition:Xe},c.default.createElement(I,{weekLabels:Se,weekClassName:s,dayOfWeeks:Oe,readOnly:h,showToday:Q,todayClassName:l,selectedClassName:o,neighborMonthClassName:i,onClickWeekLabel:be,handleChangeDate:function(e){if(!h){Ee.current=!0;var a=e.year,t=e.month,n=e.dayDisplay,r=new Date(a,t,n);De(r),ye(r),aa(a,t,r)}},formatDayValue:ke})),c.default.createElement(n.Ifz.ElseIf,{condition:Ze},c.default.createElement(V,{year:Re[0],labelMonths:$,minYearMonth:Ce.current.beforeYearMonth,maxYearMonth:Ce.current.afterYearMonth,selected:we.getMonth(),isSameYear:we.getFullYear()===Re[0],setSelected:function(e){var a=k(Re[0],e),t=a[0],n=a[1];aa(t,n),ze("date"),ve("date")}})),c.default.createElement(n.Ifz.ElseIf,{condition:_e},c.default.createElement(n.When,{condition:_e},c.default.createElement(A,{decadeData:Ae,selected:we.getFullYear(),minYear:Ce.current.minYear,maxYear:Ce.current.maxYear,setSelected:function(e){He([e,Re[1]]),ze("month"),ve("month")}})))))),c.default.createElement(z,{showXClose:se,xCloseIcon:me,showFooter:ie,selectedValue:function(){var e=H||we;if(Me)return Me(e);var a=N(e.getMonth(),$),t=e.getDate(),n=e.getFullYear();return"".concat(a," ").concat(t,", ").concat(n)}(),resetSelectionValue:ta})):c.default.createElement(c.default.Fragment,null)},e.fmtMonthDay=D,e.getDecadesFromYear=x,e.getMaxDayOfMonth=E,e.getMiMaxYear=v,e.getMonthName=N,e.getPreNextOfMonth=C,e.getRealYearMonth=k,e.isNil=y,e.isOverCompareDate=M,e.isToday=p,e.keyMonths=T,e.labelMonths=S,e.labelWeekDays=F,e.padZero=b,e.parseYearMonthDateToNumber=Y,e.parseYearMonthToNumber=w,e.startWeekDays=W,e.toMatrix=g,Object.defineProperty(e,"__esModule",{value:!0})}));