UNPKG

react-month-picker-dropdown

Version:

This is a slim library for month picker as dropdown menu for React Project

3 lines (2 loc) 5.62 kB
import e,{useState as t,useEffect as n}from"react";function r(){return(r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var l=["January","February","March","April","May","June","July","August","September","October","November","December"],a=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"],o=function(e,t){return new Date(e,t+1,0)},i=function(e,t){return e.filter(function(e){return e.id===t})},c=function(c){var d=function(e){var t=e.startYear,n=e.startMonth,r=e.endYear,l=e.endMonth;if(null!=t&&null!=r&&t>r)return{errorMessage:"Invalid Start & End Year combination"};if(null!=t&&null!=r&&null!=n&&null!=l&&t===r&&n>l)return{errorMessage:"Invalid Start & End Month combination"};var a=(new Date).getFullYear(),o={startYear:a,startMonth:0,endYear:a,endMonth:11};return null!=t&&(o.startYear=t),null!=n&&(o.startMonth=n>1?n-1:0),null!=r&&(o.endYear=r),null!=l&&(o.endMonth=l>1?l-1:0),{monthsAndYears:o,errorMessage:""}}(c),s=d.monthsAndYears,u=d.errorMessage;if(u)return e.createElement("div",{className:"month-picker-dropdown"},e.createElement("span",{className:"error"},u));var h=function(e){for(var t=e.startMonth,n=e.endMonth,r=e.displayShortMonthName,i=e.displayShortYearName,c=[],d=function(e,t){for(var n=[],r=new Date(e),l=new Date(t),a=r.getFullYear();a<=l.getFullYear();a++)n.push(a);return n}("1 "+l[t]+" "+e.startYear,"1 "+l[n]+" "+e.endYear),s=0,u=0;u<d.length;u++){var h=d[u],f=null,M=null;1===d.length?(f=t,M=n+1):0===u?(f=t,M=12):u===d.length-1?(f=0,M=n+1):(f=0,M=12);for(var m=f;m<M;m++){var v=new Date(h,m,1),D=o(h,m);c.push({id:s,title:(r?a[m]:l[m])+" "+(i?h.toString().substr(-2):h),startDate:v,endDate:D,month:m+1,year:h,selected:!1}),s+=1}}return c}(r({},c,s)),f=t(h),M=f[0],m=f[1],v=t({firstSelectedMonthID:null,lastSelectedMonthID:null}),D=v[0],p=v[1],I=t("visibility-hidden"),S=I[0],b=I[1];n(function(){null!==D.firstSelectedMonthID&&null!==D.lastSelectedMonthID&&(c.displayOkAndCancelButton||Y())},[D]);var y=function(){b("visibility-hidden")},k=function(e){var t=!1;if(null!==D.firstSelectedMonthID&&(t=D.firstSelectedMonthID>e.id),null===D.firstSelectedMonthID||null!==D.firstSelectedMonthID&&null!==D.lastSelectedMonthID){var n=M.map(function(t){return t.hovered=!1,t.selected=t.id===e.id,t});m(n),p({firstSelectedMonthID:e.id,lastSelectedMonthID:null})}else{if(e.id===D.firstSelectedMonthID)return p({firstSelectedMonthID:null,lastSelectedMonthID:null}),void m(h);var r=M.map(function(n){return(D.firstSelectedMonthID>n.id&&e.id<=n.id&&t||D.firstSelectedMonthID<n.id&&e.id>=n.id)&&(n.selected=!0),n});m(r),p({firstSelectedMonthID:D.firstSelectedMonthID,lastSelectedMonthID:e.id})}},g=function(){var e=M.map(function(e){return e.hovered=!1,e});m(e)},Y=function(){var e=function(e,t,n){var r=null,l=null,a=null,o=null,c=i(e,t),d=i(e,n);return c.length>0&&d.length>0&&(c[0].id>d[0].id?(r=d[0].year,l=d[0].month,a=c[0].year,o=c[0].month):(r=c[0].year,l=c[0].month,a=d[0].year,o=d[0].month)),{startYear:r,startMonth:l,endYear:a,endMonth:o}}(M,D.firstSelectedMonthID,D.lastSelectedMonthID);e&&c.onChange({startMonth:e.startMonth,startYear:e.startYear,endMonth:e.endMonth,endYear:e.endYear})};return e.createElement("div",{tabIndex:c.CTabIndex?c.CTabIndex:0,className:"month-picker-dropdown",onFocus:y,onBlur:function(){return setTimeout(y,200)}},e.createElement("div",{className:"select-months",onClick:function(){b("visibility-hidden"===S?"visibility-shown":"visibility-hidden")}},function(e,t,n){var r=e.firstSelectedMonthID,l=e.lastSelectedMonthID;if(null===r&&null===l)return t.label?t.label:"Select Months";var a="",o=t.separatorText?t.separatorText:"→",c=i(n,r),d=i(n,l);return c.length>0&&0===d.length&&(a=c[0].title+" "+o+" ____"),c.length>0&&d.length>0&&(a=c[0].id>d[0].id?d[0].title+" "+o+" "+c[0].title:c[0].title+" "+o+" "+d[0].title),a}(D,c,M)),function(t,n){return e.createElement("div",{className:"select-picker "+S},e.createElement("div",{className:"select-picker-options",onMouseLeave:g},n.map(function(n){return e.createElement("div",{onClick:function(){k(n)},onMouseEnter:function(){!function(e){var t=!1;if(!(null!==D.firstSelectedMonthID&&null!==D.lastSelectedMonthID||null===D.firstSelectedMonthID&&null===D.lastSelectedMonthID)){null!==D.firstSelectedMonthID&&(t=D.firstSelectedMonthID>e.id);var n=M.map(function(n){return n.hovered=!!(D.firstSelectedMonthID>n.id&&e.id<=n.id&&t)||D.firstSelectedMonthID<n.id&&e.id>=n.id,n});m(n)}}(n)},className:"options "+(l=n,l.selected?"selected-month-background-color":l.hovered?"hovered-month-background-color":""),key:n.id},e.createElement("input",{readOnly:!0,className:"option-checkbox "+(r=t.hideCheckBox,"boolean"==typeof r&&r?"hide-me":""),type:"checkbox",tabIndex:-1,checked:n.selected||!1}),e.createElement("span",{className:"option-title"},n.title));var r,l})),t.displayOkAndCancelButton&&function(t){return e.createElement("div",{className:"okay-and-cancel"},t.markUpForOkButton?e.createElement("div",{className:"okay-and-cancel-container",onMouseDown:Y},t.markUpForOkButton()):e.createElement("button",{tabIndex:t.CTabIndex?t.CTabIndex:0,className:"okay-and-cancel-container-button",onMouseDown:Y},"Select"),t.markUpForCancelButton?e.createElement("div",{className:"okay-and-cancel-container",onMouseDown:y},t.markUpForCancelButton()):e.createElement("button",{tabIndex:t.CTabIndex?t.CTabIndex:0,className:"okay-and-cancel-container-button",onMouseDown:y},"Cancel"))}(t))}(c,M))};export{c as MonthPickerDropdown}; //# sourceMappingURL=index.modern.js.map