@rehookify/datepicker
Advanced tools
Comparing version 1.2.1 to 1.2.2
@@ -1,2 +0,2 @@ | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e);const n=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()),l=e=>new Date(e.getFullYear(),e.getMonth(),1),r=(e,t,a)=>new Date(e.getFullYear()+("year"===a?t:0),e.getMonth()+("month"===a?t:0),e.getDate()+("date"===a?t:0)),s=(e,t,a)=>r(e,0-t,a),o=(e,t)=>e.getTime()-t.getTime(),i=(e,{locale:t,monthName:a})=>e.toLocaleDateString(t,{month:a}),c=(e,{locale:t,options:a})=>e.toLocaleDateString(t,a),d=n(new Date),u={mode:"static",offsets:[0]},g={numberOfYearsDisplayed:12},D={mode:"single",toggle:!1},m={locale:"en-GB",day:"2-digit",year:"numeric",weekday:"short",monthName:"long"},h=(...e)=>(...t)=>e.forEach((e=>null==e?void 0:e(...t))),b=e=>(t,a)=>e(a),f=e=>(...t)=>{e()},y=(e,t,a)=>{const n=new Date(t,e,1),l=(r=n,new Date(r.getFullYear(),r.getMonth()+1,0).getDate());var r;const s="static"===a?42:n.getUTCDay()+l+7-new Date(t,e,l).getUTCDay()-1;return{firstDayOffset:n.getUTCDay(),numberOfDaysToDisplay:s}},k=(e,t)=>e.toString()===t.toString(),w=(e,t)=>e<t,C=(e,t)=>e>t,p=(e,t,a)=>C(t,e)&&w(t,a)||w(t,e)&&C(t,a),x=(e,t)=>!!e&&C(t,e),v=(e,t)=>!!e&&w(t,e),M=(e,t)=>!!e&&w(t,l(e)),S=(e,t,a)=>2===a.length?k(e,a[0])?"range-start":k(e,a[1])?"range-end":p(a[0],e,a[1])?"in-range":"":1===a.length&&t?p(a[0],e,t)?"will-be-in-range":w(t,a[0])?k(e,t)?"will-be-range-start":k(e,a[0])?"will-be-range-end":"":k(e,a[0])?"will-be-range-start":k(e,t)?"will-be-range-end":"":"",Y=(e,t,a,n,l,s,{mode:o,offsets:d})=>d.map((d=>((e,t,a,n,l,{mode:r,minDate:s,maxDate:o},d)=>{const{locale:u,day:g,year:D}=l,m=e.getFullYear(),h=e.getMonth(),{firstDayOffset:b,numberOfDaysToDisplay:f}=y(h,m,d),w=[];for(let e=1;e<=f;e++){const i=new Date(m,h,e-b),d="range"===r?S(i,a,t):"",D=v(s,i)||x(o,i),f=t.some((e=>k(e,i))),y=i.getMonth()===h;w.push({$date:i,date:c(i,l),day:i.toLocaleDateString(u,{day:g}),currentDisplayedMonth:y,isToday:k(n,i),isSelected:f,inRange:"in-range"===d,isRangeStart:"range-start"===d,isRangeEnd:"range-end"===d,willBeInRange:["will-be-in-range","will-be-range-start","will-be-range-end"].includes(d),range:d,disabled:D,selected:f,inCurrentMonth:y})}return{year:e.toLocaleDateString(u,{year:D}),month:i(e,l),days:w}})(r(e,d,"month"),t,a,n,l,s,o))),$=({calendar:e,years:t,dates:a,locale:l}={})=>{const{minDate:r,maxDate:s,selectedDates:o,...i}=a||{},{offsets:c=[],...d}=e||{},h={calendar:{...u,...d,offsets:u.offsets.concat(c)},years:{...g,...t},dates:{...D,...i,minDate:r?n(r):null,maxDate:s?n(s):null,selectedDates:(b=o,b?Array.isArray(b)?b:[b]:[]).map((e=>n(e)))},locale:{...m,...l}};var b;return(({dates:e})=>{const{selectedDates:t,minDate:a,maxDate:n}=e||{};if(t&&t.length>0){if(a&&t.every((e=>w(e,a))))throw new Error(`All selectedDates must be after minDate: ${a.toLocaleDateString()}`);if(n&&t.every((e=>C(e,n))))throw new Error(`All selectedDates must be before maxDate: ${n.toLocaleDateString()}`)}if(a&&n&&w(n,a))throw new Error(`maxDate ${n.toLocaleDateString()} is before minDate ${a.toLocaleDateString()}`)})(h),h},P=(e,t,a={})=>({role:"button",tabIndex:0,...e&&{disabled:!0,"aria-disabled":!0},...!e&&{onClick(e){t(e)}},...a}),F=e=>e-e%10-1,B=t=>{const{dates:a,calendar:n,locale:u,years:g}=$(t),{minDate:D,maxDate:m,toggle:y,mode:w}=a,[C,p]=e.useState(null),[S,B]=e.useState(a.selectedDates),[E,L]=e.useState(S.length>0?S[S.length-1]:(({maxDate:e,minDate:t},a)=>x(e,a)?e:v(t,a)?t:a)(a,d)),[T,O]=e.useState(F(E.getFullYear())),A=Y(E,S,C,d,u,a,n),R=(({days:e},{locale:t,weekday:a})=>{const n=[];for(let l=0;l<7;l++)n.push(e[l].$date.toLocaleDateString(t,{weekday:a}));return n})(A[0],u),N=((e,t,a,{numberOfYearsDisplayed:n},{minDate:r,maxDate:s})=>{const o=t.getFullYear(),i=[];for(let c=0;c<n;c++){const n=e+c,d=new Date(n,t.getMonth(),t.getDate()),u=o===n,g=a.some((e=>e.getFullYear()===n)),D=M(r,d)||x(s,l(d));i.push({$date:d,value:n,isActive:u,isSelected:g,active:u,selected:g,disabled:D})}return i})(T,E,S,g,a),U=((e,t,a,{minDate:n,maxDate:r})=>{const s=[];for(let o=0;o<12;o++){const c=new Date(e.getFullYear(),o,1),d=M(n,c)||x(r,l(c)),u=t.some((e=>e.getMonth()===c.getMonth())),g=e.getMonth()===c.getMonth();s.push({$date:c,name:i(c,a),selected:u,isSelected:u,isActive:g,active:g,disabled:d})}return s})(E,S,u,a),j=e.useCallback((e=>{L(e),O(F(e.getFullYear()))}),[]),G=e.useCallback((e=>{B(((e,t,{mode:a,toggle:n,limit:l})=>{if("single"===a)return n&&e[0]&&k(t,e[0])?[]:[t];if("multiple"===a){if(n){const a=e.filter((e=>!k(e,t)));if(a.length<e.length)return a}return!l||e.length<l?e.concat(t).sort(o):e}if("range"===a&&n){const a=e.filter((e=>!k(e,t)));return a.length<e.length?a:2===e.length?[t]:e.concat(t).sort(o)}return 2===e.length?[t]:e.concat(t).sort(o)})(S,e,a))}),[a,S]),I=e.useCallback((()=>j(r(E,1,"month"))),[E,j]),_=e.useCallback((()=>j(s(E,1,"month"))),[E,j]),q=e.useCallback((()=>O((e=>e+10))),[]),z=e.useCallback((()=>O((e=>e-10))),[]),H=e.useCallback((e=>L(e)),[]),J=e.useCallback((({$date:e,isSelected:t,disabled:a},{onClick:n,disabled:l,...r}={})=>P(a||!!l,(a=>{t&&!y||("range"===w&&1===S.length&&p(null),h(n,b(G))(a,e))}),{...r,..."range"===w&&1===S.length&&{onMouseEnter(){p(e)}}})),[w,y,G,S.length]),K=e.useCallback((({$date:e,disabled:t},{onClick:a,disabled:n,...l}={})=>P(!!n||t,(t=>h(a,b(H))(t,e)),l)),[H]),Q=e.useCallback((({onClick:e,disabled:t,...a}={})=>{const n=r(E,1,"month"),s=!!t||x(m,l(n));return P(s,(t=>h(e,b(j))(t,n)),a)}),[E,m,j]),V=e.useCallback((({onClick:e,disabled:t,...a}={})=>{const n=s(E,1,"month"),l=!!t||M(D,n);return P(l,(t=>h(e,b(j))(t,n)),a)}),[E,D,j]),W=e.useCallback((({$date:e,disabled:t},{onClick:a,disabled:n,...l}={})=>P(!!n||t,(t=>h(a,b(j))(t,e)),l)),[j]),X=e.useCallback((({onClick:e,disabled:t,...a}={})=>{const n=!!t||x(m,N[N.length-1].$date);return P(n,(t=>h(e,f(q))(t)),a)}),[N,m,q]),Z=e.useCallback((({onClick:e,disabled:t,...a}={})=>{const n=!!t||v(D,N[0].$date);return P(n,(t=>h(e,f(z))(t)),a)}),[N,D,z]);return{data:{calendars:A,weekDays:R,months:U,years:N,selectedDates:S.map((e=>c(e,u)))},propGetters:{nextMonthButton:Q,previousMonthButton:V,dayButton:J,monthButton:K,yearButton:W,nextYearsButton:X,previousYearsButton:Z},actions:{setDay:G,setMonth:L,setNextMonth:I,setPreviousMonth:_,setYear:j,setNextYears:q,setPreviousYears:z,setRangeEnd:p}}},E=e.createContext({});exports.DatePickerProvider=({children:e,config:t={}})=>{const n=B(t);return a.default.createElement(E.Provider,{value:n},e)},exports.useDatePicker=B,exports.useDatePickerContext=()=>{const t=e.useContext(E);if(!t)throw new Error('Please use "useDatePickerContext" inside "DatePickerProvider"');return t}; | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=t(e);const n=e=>({D:e.getDate(),M:e.getMonth(),Y:e.getFullYear()}),s=e=>e.getUTCDay(),r=e=>new Date(n(e).Y,n(e).M,n(e).D),l=e=>new Date(n(e).Y,n(e).M,1),o=(e,t,a)=>new Date(n(e).Y+("year"===a?t:0),n(e).M+("month"===a?t:0),n(e).D+("date"===a?t:0)),i=(e,t,a)=>o(e,0-t,a),d=(e,t)=>e.getTime()-t.getTime(),c=(e,t,a)=>e.toLocaleDateString(t,a),u=(e,{locale:t,monthName:a})=>c(e,t,{month:a}),g=(e,{locale:t,options:a})=>c(e,t,a),m=r(new Date),D={mode:"static",offsets:[0]},b={numberOfYearsDisplayed:12},h={mode:"single",toggle:!1},f={locale:"en-GB",day:"2-digit",year:"numeric",weekday:"short",monthName:"long"},y=(...e)=>(...t)=>e.forEach((e=>null==e?void 0:e(...t))),k=e=>(t,a)=>e(a),w=e=>(...t)=>{e()},C=(e,t,a)=>{const r=new Date(t,e,1),l=(o=r,new Date(n(o).Y,n(o).M+1,0).getDate());var o;const i="static"===a?42:s(r)+l+7-s(new Date(t,e,l))-1;return{startOffset:s(r),numberOfDays:i}},x=(e,t)=>e.toString()===t.toString(),p=(e,t)=>e<t,v=(e,t)=>e>t,M=(e,t,a)=>v(t,e)&&p(t,a)||p(t,e)&&v(t,a),Y=(e,t)=>!!e&&v(t,e),$=(e,t)=>!!e&&p(t,e),P=(e,t)=>!!e&&p(t,l(e)),S=(e,t,a)=>2===a.length?x(e,a[0])?"range-start":x(e,a[1])?"range-end":M(a[0],e,a[1])?"in-range":"":1===a.length&&t?M(a[0],e,t)?"will-be-in-range":p(t,a[0])?x(e,t)?"will-be-range-start":x(e,a[0])?"will-be-range-end":"":x(e,a[0])?"will-be-range-start":x(e,t)?"will-be-range-end":"":"",B=(e,t,a,s,r,l,{mode:i,offsets:d})=>d.map((d=>((e,t,a,s,r,{mode:l,minDate:o,maxDate:i},d)=>{const{locale:m,day:D,year:b}=r,{M:h,Y:f}=n(e),{startOffset:y,numberOfDays:k}=C(h,f,d),w=[];for(let e=1;e<=k;e++){const d=new Date(f,h,e-y),u="range"===l?S(d,a,t):"",b=$(o,d)||Y(i,d),k=t.some((e=>x(e,d))),C=n(d).M===h;w.push({$date:d,date:g(d,r),day:c(d,m,{day:D}),currentDisplayedMonth:C,isToday:x(s,d),isSelected:k,inRange:"in-range"===u,isRangeStart:"range-start"===u,isRangeEnd:"range-end"===u,willBeInRange:["will-be-in-range","will-be-range-start","will-be-range-end"].includes(u),range:u,disabled:b,selected:k,inCurrentMonth:C})}return{year:c(e,m,{year:b}),month:u(e,r),days:w}})(o(e,d,"month"),t,a,s,r,l,i))),E=({calendar:e,years:t,dates:a,locale:n}={})=>{const{minDate:s,maxDate:l,selectedDates:o,...i}=a||{},{offsets:d=[],...u}=e||{},g={calendar:{...D,...u,offsets:D.offsets.concat(d)},years:{...b,...t},dates:{...h,...i,minDate:s?r(s):null,maxDate:l?r(l):null,selectedDates:(m=o,m?Array.isArray(m)?m:[m]:[]).map((e=>r(e)))},locale:{...f,...n}};var m;return(({dates:e})=>{const{selectedDates:t,minDate:a,maxDate:n}=e||{};if(t&&t.length>0){if(a&&t.every((e=>p(e,a))))throw new Error(`All selectedDates must be after minDate: ${c(a)}`);if(n&&t.every((e=>v(e,n))))throw new Error(`All selectedDates must be before maxDate: ${c(n)}`)}if(a&&n&&p(n,a))throw new Error(`maxDate: ${c(n)} < minDate: ${c(a)}`)})(g),g},O=(e,t,a={})=>({role:"button",tabIndex:0,...e&&{disabled:!0,"aria-disabled":!0},...!e&&{onClick(e){t(e)}},...a}),A=e=>e-e%10-1,R=t=>{const{dates:a,calendar:s,locale:r,years:D}=E(t),{minDate:b,maxDate:h,toggle:f,mode:C}=a,[p,v]=e.useState(null),[M,S]=e.useState(a.selectedDates),[R,N]=e.useState(M.length>0?M[M.length-1]:(({maxDate:e,minDate:t},a)=>Y(e,a)?e:$(t,a)?t:a)(a,m)),[T,j]=e.useState(A(n(R).Y)),G=B(R,M,p,m,r,a,s),I=(({days:e},{locale:t,weekday:a})=>{const n=[];for(let s=0;s<7;s++)n.push(c(e[s].$date,t,{weekday:a}));return n})(G[0],r),_=((e,t,a,{numberOfYearsDisplayed:s},{minDate:r,maxDate:o})=>{const{Y:i,M:d,D:c}=n(t),u=[];for(let t=0;t<s;t++){const s=e+t,g=new Date(s,d,c),m=i===s,D=a.some((e=>n(e).Y===s)),b=P(r,g)||Y(o,l(g));u.push({$date:g,value:s,isActive:m,isSelected:D,active:m,selected:D,disabled:b})}return u})(T,R,M,D,a),q=((e,t,a,{minDate:s,maxDate:r})=>{const o=[],{M:i,Y:d}=n(e);for(let e=0;e<12;e++){const c=new Date(d,e,1),g=P(s,c)||Y(r,l(c)),m=t.some((t=>n(t).M===e)),D=i===e;o.push({$date:c,name:u(c,a),selected:m,isSelected:m,isActive:D,active:D,disabled:g})}return o})(R,M,r,a),F=e.useCallback((e=>{N(e),j(A(n(e).Y))}),[]),L=e.useCallback((e=>{S(((e,t,{mode:a,toggle:n,limit:s})=>{if("single"===a)return n&&e[0]&&x(t,e[0])?[]:[t];if("multiple"===a){if(n){const a=e.filter((e=>!x(e,t)));if(a.length<e.length)return a}return!s||e.length<s?e.concat(t).sort(d):e}if("range"===a&&n){const a=e.filter((e=>!x(e,t)));return a.length<e.length?a:2===e.length?[t]:e.concat(t).sort(d)}return 2===e.length?[t]:e.concat(t).sort(d)})(M,e,a))}),[a,M]),U=e.useCallback((()=>F(o(R,1,"month"))),[R,F]),z=e.useCallback((()=>F(i(R,1,"month"))),[R,F]),H=e.useCallback((()=>j((e=>e+10))),[]),J=e.useCallback((()=>j((e=>e-10))),[]),K=e.useCallback((e=>N(e)),[]),Q=e.useCallback((({$date:e,isSelected:t,disabled:a},{onClick:n,disabled:s,...r}={})=>O(a||!!s,(a=>{t&&!f||("range"===C&&1===M.length&&v(null),y(n,k(L))(a,e))}),{...r,..."range"===C&&1===M.length&&{onMouseEnter(){v(e)}}})),[C,f,L,M.length]),V=e.useCallback((({$date:e,disabled:t},{onClick:a,disabled:n,...s}={})=>O(!!n||t,(t=>y(a,k(K))(t,e)),s)),[K]),W=e.useCallback((({onClick:e,disabled:t,...a}={})=>{const n=o(R,1,"month"),s=!!t||Y(h,l(n));return O(s,(t=>y(e,k(F))(t,n)),a)}),[R,h,F]),X=e.useCallback((({onClick:e,disabled:t,...a}={})=>{const n=i(R,1,"month"),s=!!t||P(b,n);return O(s,(t=>y(e,k(F))(t,n)),a)}),[R,b,F]),Z=e.useCallback((({$date:e,disabled:t},{onClick:a,disabled:n,...s}={})=>O(!!n||t,(t=>y(a,k(F))(t,e)),s)),[F]),ee=e.useCallback((({onClick:e,disabled:t,...a}={})=>{const n=!!t||Y(h,_[_.length-1].$date);return O(n,(t=>y(e,w(H))(t)),a)}),[_,h,H]),te=e.useCallback((({onClick:e,disabled:t,...a}={})=>{const n=!!t||$(b,_[0].$date);return O(n,(t=>y(e,w(J))(t)),a)}),[_,b,J]);return{data:{calendars:G,weekDays:I,months:q,years:_,selectedDates:M.map((e=>g(e,r)))},propGetters:{nextMonthButton:W,previousMonthButton:X,dayButton:Q,monthButton:V,yearButton:Z,nextYearsButton:ee,previousYearsButton:te},actions:{setDay:L,setMonth:N,setNextMonth:U,setPreviousMonth:z,setYear:F,setNextYears:H,setPreviousYears:J,setRangeEnd:v}}},N=e.createContext({});exports.DatePickerProvider=({children:e,config:t={}})=>{const n=R(t);return a.default.createElement(N.Provider,{value:n},e)},exports.useDatePicker=R,exports.useDatePickerContext=()=>{const t=e.useContext(N);if(!t)throw new Error('Please use "useDatePickerContext" inside "DatePickerProvider"');return t}; | ||
//# sourceMappingURL=index.cjs.js.map |
@@ -1,2 +0,2 @@ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).RehookifyDatepicker={},e.React)}(this,(function(e,t){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=a(t);const l=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()),r=e=>new Date(e.getFullYear(),e.getMonth(),1),o=(e,t,a)=>new Date(e.getFullYear()+("year"===a?t:0),e.getMonth()+("month"===a?t:0),e.getDate()+("date"===a?t:0)),s=(e,t,a)=>o(e,0-t,a),i=(e,t)=>e.getTime()-t.getTime(),c=(e,{locale:t,monthName:a})=>e.toLocaleDateString(t,{month:a}),d=(e,{locale:t,options:a})=>e.toLocaleDateString(t,a),u=l(new Date),g={mode:"static",offsets:[0]},D={numberOfYearsDisplayed:12},f={mode:"single",toggle:!1},h={locale:"en-GB",day:"2-digit",year:"numeric",weekday:"short",monthName:"long"},m=(...e)=>(...t)=>e.forEach((e=>null==e?void 0:e(...t))),b=e=>(t,a)=>e(a),y=e=>(...t)=>{e()},k=(e,t,a)=>{const n=new Date(t,e,1),l=(r=n,new Date(r.getFullYear(),r.getMonth()+1,0).getDate());var r;const o="static"===a?42:n.getUTCDay()+l+7-new Date(t,e,l).getUTCDay()-1;return{firstDayOffset:n.getUTCDay(),numberOfDaysToDisplay:o}},w=(e,t)=>e.toString()===t.toString(),C=(e,t)=>e<t,p=(e,t)=>e>t,x=(e,t,a)=>p(t,e)&&C(t,a)||C(t,e)&&p(t,a),v=(e,t)=>!!e&&p(t,e),M=(e,t)=>!!e&&C(t,e),S=(e,t)=>!!e&&C(t,r(e)),Y=(e,t,a)=>2===a.length?w(e,a[0])?"range-start":w(e,a[1])?"range-end":x(a[0],e,a[1])?"in-range":"":1===a.length&&t?x(a[0],e,t)?"will-be-in-range":C(t,a[0])?w(e,t)?"will-be-range-start":w(e,a[0])?"will-be-range-end":"":w(e,a[0])?"will-be-range-start":w(e,t)?"will-be-range-end":"":"",$=(e,t,a,n,l,r,{mode:s,offsets:i})=>i.map((i=>((e,t,a,n,l,{mode:r,minDate:o,maxDate:s},i)=>{const{locale:u,day:g,year:D}=l,f=e.getFullYear(),h=e.getMonth(),{firstDayOffset:m,numberOfDaysToDisplay:b}=k(h,f,i),y=[];for(let e=1;e<=b;e++){const i=new Date(f,h,e-m),c="range"===r?Y(i,a,t):"",D=M(o,i)||v(s,i),b=t.some((e=>w(e,i))),k=i.getMonth()===h;y.push({$date:i,date:d(i,l),day:i.toLocaleDateString(u,{day:g}),currentDisplayedMonth:k,isToday:w(n,i),isSelected:b,inRange:"in-range"===c,isRangeStart:"range-start"===c,isRangeEnd:"range-end"===c,willBeInRange:["will-be-in-range","will-be-range-start","will-be-range-end"].includes(c),range:c,disabled:D,selected:b,inCurrentMonth:k})}return{year:e.toLocaleDateString(u,{year:D}),month:c(e,l),days:y}})(o(e,i,"month"),t,a,n,l,r,s))),P=({calendar:e,years:t,dates:a,locale:n}={})=>{const{minDate:r,maxDate:o,selectedDates:s,...i}=a||{},{offsets:c=[],...d}=e||{},u={calendar:{...g,...d,offsets:g.offsets.concat(c)},years:{...D,...t},dates:{...f,...i,minDate:r?l(r):null,maxDate:o?l(o):null,selectedDates:(m=s,m?Array.isArray(m)?m:[m]:[]).map((e=>l(e)))},locale:{...h,...n}};var m;return(({dates:e})=>{const{selectedDates:t,minDate:a,maxDate:n}=e||{};if(t&&t.length>0){if(a&&t.every((e=>C(e,a))))throw new Error(`All selectedDates must be after minDate: ${a.toLocaleDateString()}`);if(n&&t.every((e=>p(e,n))))throw new Error(`All selectedDates must be before maxDate: ${n.toLocaleDateString()}`)}if(a&&n&&C(n,a))throw new Error(`maxDate ${n.toLocaleDateString()} is before minDate ${a.toLocaleDateString()}`)})(u),u},F=(e,t,a={})=>({role:"button",tabIndex:0,...e&&{disabled:!0,"aria-disabled":!0},...!e&&{onClick(e){t(e)}},...a}),T=e=>e-e%10-1,B=e=>{const{dates:a,calendar:n,locale:l,years:g}=P(e),{minDate:D,maxDate:f,toggle:h,mode:k}=a,[C,p]=t.useState(null),[x,Y]=t.useState(a.selectedDates),[B,E]=t.useState(x.length>0?x[x.length-1]:(({maxDate:e,minDate:t},a)=>v(e,a)?e:M(t,a)?t:a)(a,u)),[L,O]=t.useState(T(B.getFullYear())),R=$(B,x,C,u,l,a,n),A=(({days:e},{locale:t,weekday:a})=>{const n=[];for(let l=0;l<7;l++)n.push(e[l].$date.toLocaleDateString(t,{weekday:a}));return n})(R[0],l),N=((e,t,a,{numberOfYearsDisplayed:n},{minDate:l,maxDate:o})=>{const s=t.getFullYear(),i=[];for(let c=0;c<n;c++){const n=e+c,d=new Date(n,t.getMonth(),t.getDate()),u=s===n,g=a.some((e=>e.getFullYear()===n)),D=S(l,d)||v(o,r(d));i.push({$date:d,value:n,isActive:u,isSelected:g,active:u,selected:g,disabled:D})}return i})(L,B,x,g,a),j=((e,t,a,{minDate:n,maxDate:l})=>{const o=[];for(let s=0;s<12;s++){const i=new Date(e.getFullYear(),s,1),d=S(n,i)||v(l,r(i)),u=t.some((e=>e.getMonth()===i.getMonth())),g=e.getMonth()===i.getMonth();o.push({$date:i,name:c(i,a),selected:u,isSelected:u,isActive:g,active:g,disabled:d})}return o})(B,x,l,a),U=t.useCallback((e=>{E(e),O(T(e.getFullYear()))}),[]),G=t.useCallback((e=>{Y(((e,t,{mode:a,toggle:n,limit:l})=>{if("single"===a)return n&&e[0]&&w(t,e[0])?[]:[t];if("multiple"===a){if(n){const a=e.filter((e=>!w(e,t)));if(a.length<e.length)return a}return!l||e.length<l?e.concat(t).sort(i):e}if("range"===a&&n){const a=e.filter((e=>!w(e,t)));return a.length<e.length?a:2===e.length?[t]:e.concat(t).sort(i)}return 2===e.length?[t]:e.concat(t).sort(i)})(x,e,a))}),[a,x]),I=t.useCallback((()=>U(o(B,1,"month"))),[B,U]),_=t.useCallback((()=>U(s(B,1,"month"))),[B,U]),q=t.useCallback((()=>O((e=>e+10))),[]),z=t.useCallback((()=>O((e=>e-10))),[]),H=t.useCallback((e=>E(e)),[]),J=t.useCallback((({$date:e,isSelected:t,disabled:a},{onClick:n,disabled:l,...r}={})=>F(a||!!l,(a=>{t&&!h||("range"===k&&1===x.length&&p(null),m(n,b(G))(a,e))}),{...r,..."range"===k&&1===x.length&&{onMouseEnter(){p(e)}}})),[k,h,G,x.length]),K=t.useCallback((({$date:e,disabled:t},{onClick:a,disabled:n,...l}={})=>F(!!n||t,(t=>m(a,b(H))(t,e)),l)),[H]),Q=t.useCallback((({onClick:e,disabled:t,...a}={})=>{const n=o(B,1,"month"),l=!!t||v(f,r(n));return F(l,(t=>m(e,b(U))(t,n)),a)}),[B,f,U]),V=t.useCallback((({onClick:e,disabled:t,...a}={})=>{const n=s(B,1,"month"),l=!!t||S(D,n);return F(l,(t=>m(e,b(U))(t,n)),a)}),[B,D,U]),W=t.useCallback((({$date:e,disabled:t},{onClick:a,disabled:n,...l}={})=>F(!!n||t,(t=>m(a,b(U))(t,e)),l)),[U]),X=t.useCallback((({onClick:e,disabled:t,...a}={})=>{const n=!!t||v(f,N[N.length-1].$date);return F(n,(t=>m(e,y(q))(t)),a)}),[N,f,q]),Z=t.useCallback((({onClick:e,disabled:t,...a}={})=>{const n=!!t||M(D,N[0].$date);return F(n,(t=>m(e,y(z))(t)),a)}),[N,D,z]);return{data:{calendars:R,weekDays:A,months:j,years:N,selectedDates:x.map((e=>d(e,l)))},propGetters:{nextMonthButton:Q,previousMonthButton:V,dayButton:J,monthButton:K,yearButton:W,nextYearsButton:X,previousYearsButton:Z},actions:{setDay:G,setMonth:E,setNextMonth:I,setPreviousMonth:_,setYear:U,setNextYears:q,setPreviousYears:z,setRangeEnd:p}}},E=t.createContext({});e.DatePickerProvider=({children:e,config:t={}})=>{const a=B(t);return n.default.createElement(E.Provider,{value:a},e)},e.useDatePicker=B,e.useDatePickerContext=()=>{const e=t.useContext(E);if(!e)throw new Error('Please use "useDatePickerContext" inside "DatePickerProvider"');return e},Object.defineProperty(e,"__esModule",{value:!0})})); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).RehookifyDatepicker={},e.React)}(this,(function(e,t){"use strict";function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=a(t);const s=e=>({D:e.getDate(),M:e.getMonth(),Y:e.getFullYear()}),l=e=>e.getUTCDay(),r=e=>new Date(s(e).Y,s(e).M,s(e).D),o=e=>new Date(s(e).Y,s(e).M,1),i=(e,t,a)=>new Date(s(e).Y+("year"===a?t:0),s(e).M+("month"===a?t:0),s(e).D+("date"===a?t:0)),d=(e,t,a)=>i(e,0-t,a),c=(e,t)=>e.getTime()-t.getTime(),u=(e,t,a)=>e.toLocaleDateString(t,a),g=(e,{locale:t,monthName:a})=>u(e,t,{month:a}),m=(e,{locale:t,options:a})=>u(e,t,a),f=r(new Date),D={mode:"static",offsets:[0]},b={numberOfYearsDisplayed:12},h={mode:"single",toggle:!1},y={locale:"en-GB",day:"2-digit",year:"numeric",weekday:"short",monthName:"long"},k=(...e)=>(...t)=>e.forEach((e=>null==e?void 0:e(...t))),w=e=>(t,a)=>e(a),C=e=>(...t)=>{e()},p=(e,t,a)=>{const n=new Date(t,e,1),r=(o=n,new Date(s(o).Y,s(o).M+1,0).getDate());var o;const i="static"===a?42:l(n)+r+7-l(new Date(t,e,r))-1;return{startOffset:l(n),numberOfDays:i}},x=(e,t)=>e.toString()===t.toString(),v=(e,t)=>e<t,M=(e,t)=>e>t,Y=(e,t,a)=>M(t,e)&&v(t,a)||v(t,e)&&M(t,a),$=(e,t)=>!!e&&M(t,e),P=(e,t)=>!!e&&v(t,e),S=(e,t)=>!!e&&v(t,o(e)),B=(e,t,a)=>2===a.length?x(e,a[0])?"range-start":x(e,a[1])?"range-end":Y(a[0],e,a[1])?"in-range":"":1===a.length&&t?Y(a[0],e,t)?"will-be-in-range":v(t,a[0])?x(e,t)?"will-be-range-start":x(e,a[0])?"will-be-range-end":"":x(e,a[0])?"will-be-range-start":x(e,t)?"will-be-range-end":"":"",E=(e,t,a,n,l,r,{mode:o,offsets:d})=>d.map((d=>((e,t,a,n,l,{mode:r,minDate:o,maxDate:i},d)=>{const{locale:c,day:f,year:D}=l,{M:b,Y:h}=s(e),{startOffset:y,numberOfDays:k}=p(b,h,d),w=[];for(let e=1;e<=k;e++){const d=new Date(h,b,e-y),g="range"===r?B(d,a,t):"",D=P(o,d)||$(i,d),k=t.some((e=>x(e,d))),C=s(d).M===b;w.push({$date:d,date:m(d,l),day:u(d,c,{day:f}),currentDisplayedMonth:C,isToday:x(n,d),isSelected:k,inRange:"in-range"===g,isRangeStart:"range-start"===g,isRangeEnd:"range-end"===g,willBeInRange:["will-be-in-range","will-be-range-start","will-be-range-end"].includes(g),range:g,disabled:D,selected:k,inCurrentMonth:C})}return{year:u(e,c,{year:D}),month:g(e,l),days:w}})(i(e,d,"month"),t,a,n,l,r,o))),O=({calendar:e,years:t,dates:a,locale:n}={})=>{const{minDate:s,maxDate:l,selectedDates:o,...i}=a||{},{offsets:d=[],...c}=e||{},g={calendar:{...D,...c,offsets:D.offsets.concat(d)},years:{...b,...t},dates:{...h,...i,minDate:s?r(s):null,maxDate:l?r(l):null,selectedDates:(m=o,m?Array.isArray(m)?m:[m]:[]).map((e=>r(e)))},locale:{...y,...n}};var m;return(({dates:e})=>{const{selectedDates:t,minDate:a,maxDate:n}=e||{};if(t&&t.length>0){if(a&&t.every((e=>v(e,a))))throw new Error(`All selectedDates must be after minDate: ${u(a)}`);if(n&&t.every((e=>M(e,n))))throw new Error(`All selectedDates must be before maxDate: ${u(n)}`)}if(a&&n&&v(n,a))throw new Error(`maxDate: ${u(n)} < minDate: ${u(a)}`)})(g),g},R=(e,t,a={})=>({role:"button",tabIndex:0,...e&&{disabled:!0,"aria-disabled":!0},...!e&&{onClick(e){t(e)}},...a}),A=e=>e-e%10-1,T=e=>{const{dates:a,calendar:n,locale:l,years:r}=O(e),{minDate:D,maxDate:b,toggle:h,mode:y}=a,[p,v]=t.useState(null),[M,Y]=t.useState(a.selectedDates),[B,T]=t.useState(M.length>0?M[M.length-1]:(({maxDate:e,minDate:t},a)=>$(e,a)?e:P(t,a)?t:a)(a,f)),[N,j]=t.useState(A(s(B).Y)),G=E(B,M,p,f,l,a,n),I=(({days:e},{locale:t,weekday:a})=>{const n=[];for(let s=0;s<7;s++)n.push(u(e[s].$date,t,{weekday:a}));return n})(G[0],l),_=((e,t,a,{numberOfYearsDisplayed:n},{minDate:l,maxDate:r})=>{const{Y:i,M:d,D:c}=s(t),u=[];for(let t=0;t<n;t++){const n=e+t,g=new Date(n,d,c),m=i===n,f=a.some((e=>s(e).Y===n)),D=S(l,g)||$(r,o(g));u.push({$date:g,value:n,isActive:m,isSelected:f,active:m,selected:f,disabled:D})}return u})(N,B,M,r,a),q=((e,t,a,{minDate:n,maxDate:l})=>{const r=[],{M:i,Y:d}=s(e);for(let e=0;e<12;e++){const c=new Date(d,e,1),u=S(n,c)||$(l,o(c)),m=t.some((t=>s(t).M===e)),f=i===e;r.push({$date:c,name:g(c,a),selected:m,isSelected:m,isActive:f,active:f,disabled:u})}return r})(B,M,l,a),F=t.useCallback((e=>{T(e),j(A(s(e).Y))}),[]),L=t.useCallback((e=>{Y(((e,t,{mode:a,toggle:n,limit:s})=>{if("single"===a)return n&&e[0]&&x(t,e[0])?[]:[t];if("multiple"===a){if(n){const a=e.filter((e=>!x(e,t)));if(a.length<e.length)return a}return!s||e.length<s?e.concat(t).sort(c):e}if("range"===a&&n){const a=e.filter((e=>!x(e,t)));return a.length<e.length?a:2===e.length?[t]:e.concat(t).sort(c)}return 2===e.length?[t]:e.concat(t).sort(c)})(M,e,a))}),[a,M]),U=t.useCallback((()=>F(i(B,1,"month"))),[B,F]),z=t.useCallback((()=>F(d(B,1,"month"))),[B,F]),H=t.useCallback((()=>j((e=>e+10))),[]),J=t.useCallback((()=>j((e=>e-10))),[]),K=t.useCallback((e=>T(e)),[]),Q=t.useCallback((({$date:e,isSelected:t,disabled:a},{onClick:n,disabled:s,...l}={})=>R(a||!!s,(a=>{t&&!h||("range"===y&&1===M.length&&v(null),k(n,w(L))(a,e))}),{...l,..."range"===y&&1===M.length&&{onMouseEnter(){v(e)}}})),[y,h,L,M.length]),V=t.useCallback((({$date:e,disabled:t},{onClick:a,disabled:n,...s}={})=>R(!!n||t,(t=>k(a,w(K))(t,e)),s)),[K]),W=t.useCallback((({onClick:e,disabled:t,...a}={})=>{const n=i(B,1,"month"),s=!!t||$(b,o(n));return R(s,(t=>k(e,w(F))(t,n)),a)}),[B,b,F]),X=t.useCallback((({onClick:e,disabled:t,...a}={})=>{const n=d(B,1,"month"),s=!!t||S(D,n);return R(s,(t=>k(e,w(F))(t,n)),a)}),[B,D,F]),Z=t.useCallback((({$date:e,disabled:t},{onClick:a,disabled:n,...s}={})=>R(!!n||t,(t=>k(a,w(F))(t,e)),s)),[F]),ee=t.useCallback((({onClick:e,disabled:t,...a}={})=>{const n=!!t||$(b,_[_.length-1].$date);return R(n,(t=>k(e,C(H))(t)),a)}),[_,b,H]),te=t.useCallback((({onClick:e,disabled:t,...a}={})=>{const n=!!t||P(D,_[0].$date);return R(n,(t=>k(e,C(J))(t)),a)}),[_,D,J]);return{data:{calendars:G,weekDays:I,months:q,years:_,selectedDates:M.map((e=>m(e,l)))},propGetters:{nextMonthButton:W,previousMonthButton:X,dayButton:Q,monthButton:V,yearButton:Z,nextYearsButton:ee,previousYearsButton:te},actions:{setDay:L,setMonth:T,setNextMonth:U,setPreviousMonth:z,setYear:F,setNextYears:H,setPreviousYears:J,setRangeEnd:v}}},N=t.createContext({});e.DatePickerProvider=({children:e,config:t={}})=>{const a=T(t);return n.default.createElement(N.Provider,{value:a},e)},e.useDatePicker=T,e.useDatePickerContext=()=>{const e=t.useContext(N);if(!e)throw new Error('Please use "useDatePickerContext" inside "DatePickerProvider"');return e},Object.defineProperty(e,"__esModule",{value:!0})})); | ||
//# sourceMappingURL=index.umd.js.map |
import { DatePart, LocaleConfig } from '../types'; | ||
export declare const getDateParts: (d: Date) => { | ||
D: number; | ||
M: number; | ||
Y: number; | ||
}; | ||
export declare const getUTCDay: (d: Date) => number; | ||
export declare const getCleanDate: (d: Date) => Date; | ||
@@ -8,4 +14,5 @@ export declare const daysInMonth: (d: Date) => number; | ||
export declare const sortDatesAsc: (a: Date, b: Date) => number; | ||
export declare const toLocaleDateString: (d: Date, locale?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string; | ||
export declare const formatMonthName: (d: Date, { locale, monthName }: LocaleConfig) => string; | ||
export declare const formatDate: (d: Date, { locale, options }: LocaleConfig) => string; | ||
//# sourceMappingURL=date.d.ts.map |
import { CalendarMode } from '../types'; | ||
export declare const getCalendarMonthParams: (month: number, year: number, calendarMode: CalendarMode) => { | ||
firstDayOffset: number; | ||
numberOfDaysToDisplay: number; | ||
startOffset: number; | ||
numberOfDays: number; | ||
}; | ||
//# sourceMappingURL=get-calendar-month-params.d.ts.map |
{ | ||
"name": "@rehookify/datepicker", | ||
"version": "1.2.1", | ||
"version": "1.2.2", | ||
"description": "The tiny tool to create a date and range picker in your React applications.", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.cjs.js", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
197162
880