UNPKG

react-week-picker-pro

Version:

A modern, functional React component for selecting weeks with comprehensive features including week numbers, date ranges, and flexible configuration options.

24 lines (23 loc) 10.4 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const g=require("react");var W={exports:{}},D={};/** * @license React * react-jsx-runtime.production.js * * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var te;function le(){if(te)return D;te=1;var s=Symbol.for("react.transitional.element"),n=Symbol.for("react.fragment");function t(o,i,u){var v=null;if(u!==void 0&&(v=""+u),i.key!==void 0&&(v=""+i.key),"key"in i){u={};for(var l in i)l!=="key"&&(u[l]=i[l])}else u=i;return i=u.ref,{$$typeof:s,type:o,key:v,ref:i!==void 0?i:null,props:u}}return D.Fragment=n,D.jsx=t,D.jsxs=t,D}var Y={};/** * @license React * react-jsx-runtime.development.js * * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var ne;function ue(){return ne||(ne=1,process.env.NODE_ENV!=="production"&&function(){function s(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===P?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case M:return"Fragment";case z:return"Profiler";case q:return"StrictMode";case N:return"Suspense";case B:return"SuspenseList";case w:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case L:return"Portal";case G:return(e.displayName||"Context")+".Provider";case V:return(e._context.displayName||"Context")+".Consumer";case X:var r=e.render;return e=e.displayName,e||(e=r.displayName||r.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case a:return r=e.displayName||null,r!==null?r:s(e.type)||"Memo";case p:r=e._payload,e=e._init;try{return s(e(r))}catch{}}return null}function n(e){return""+e}function t(e){try{n(e);var r=!1}catch{r=!0}if(r){r=console;var c=r.error,d=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return c.call(r,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",d),n(e)}}function o(e){if(e===M)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===p)return"<...>";try{var r=s(e);return r?"<"+r+">":"<...>"}catch{return"<...>"}}function i(){var e=A.A;return e===null?null:e.getOwner()}function u(){return Error("react-stack-top-frame")}function v(e){if(F.call(e,"key")){var r=Object.getOwnPropertyDescriptor(e,"key").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function l(e,r){function c(){j||(j=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",r))}c.isReactWarning=!0,Object.defineProperty(e,"key",{get:c,configurable:!0})}function m(){var e=s(this.type);return U[e]||(U[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function y(e,r,c,d,T,E,H,Z){return c=E.ref,e={$$typeof:h,type:e,key:r,props:E,_owner:T},(c!==void 0?c:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:m}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:H}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:Z}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function b(e,r,c,d,T,E,H,Z){var f=r.children;if(f!==void 0)if(d)if(C(f)){for(d=0;d<f.length;d++)S(f[d]);Object.freeze&&Object.freeze(f)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else S(f);if(F.call(r,"key")){f=s(e);var x=Object.keys(r).filter(function(ie){return ie!=="key"});d=0<x.length?"{key: someKey, "+x.join(": ..., ")+": ...}":"{key: someKey}",re[f+d]||(x=0<x.length?"{"+x.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX: let props = %s; <%s {...props} /> React keys must be passed directly to JSX without using spread: let props = %s; <%s key={someKey} {...props} />`,d,f,x,f),re[f+d]=!0)}if(f=null,c!==void 0&&(t(c),f=""+c),v(r)&&(t(r.key),f=""+r.key),"key"in r){c={};for(var Q in r)Q!=="key"&&(c[Q]=r[Q])}else c=r;return f&&l(c,typeof e=="function"?e.displayName||e.name||"Unknown":e),y(e,f,E,T,i(),c,H,Z)}function S(e){typeof e=="object"&&e!==null&&e.$$typeof===h&&e._store&&(e._store.validated=1)}var _=g,h=Symbol.for("react.transitional.element"),L=Symbol.for("react.portal"),M=Symbol.for("react.fragment"),q=Symbol.for("react.strict_mode"),z=Symbol.for("react.profiler"),V=Symbol.for("react.consumer"),G=Symbol.for("react.context"),X=Symbol.for("react.forward_ref"),N=Symbol.for("react.suspense"),B=Symbol.for("react.suspense_list"),a=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),w=Symbol.for("react.activity"),P=Symbol.for("react.client.reference"),A=_.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,F=Object.prototype.hasOwnProperty,C=Array.isArray,O=console.createTask?console.createTask:function(){return null};_={"react-stack-bottom-frame":function(e){return e()}};var j,U={},$=_["react-stack-bottom-frame"].bind(_,u)(),ee=O(o(u)),re={};Y.Fragment=M,Y.jsx=function(e,r,c,d,T){var E=1e4>A.recentlyCreatedOwnerStacks++;return b(e,r,c,!1,d,T,E?Error("react-stack-top-frame"):$,E?O(o(e)):ee)},Y.jsxs=function(e,r,c,d,T){var E=1e4>A.recentlyCreatedOwnerStacks++;return b(e,r,c,!0,d,T,E?Error("react-stack-top-frame"):$,E?O(o(e)):ee)}}()),Y}var se;function de(){return se||(se=1,process.env.NODE_ENV==="production"?W.exports=le():W.exports=ue()),W.exports}var k=de();const I=s=>{const n=new Date(Date.UTC(s.getFullYear(),s.getMonth(),s.getDate())),t=n.getUTCDay()||7;n.setUTCDate(n.getUTCDate()+4-t);const o=new Date(Date.UTC(n.getUTCFullYear(),0,1));return Math.ceil(((n.getTime()-o.getTime())/864e5+1)/7)},R=(s,n=1)=>{const t=new Date(s),o=t.getDay(),i=t.getDate()-o+(n===1?o===0?-6:1:0);return new Date(t.setDate(i))},J=(s,n=1)=>{const t=R(s,n),o=new Date(t);return o.setDate(t.getDate()+6),o},K=(s,n="MMM dd, yyyy")=>{const t={};return n.includes("MMM")?t.month="short":n.includes("MM")&&(t.month="2-digit"),n.includes("dd")?t.day="2-digit":n.includes("d")&&(t.day="numeric"),n.includes("yyyy")?t.year="numeric":n.includes("yy")&&(t.year="2-digit"),new Intl.DateTimeFormat("en-US",t).format(s)},oe=(s,n,t=1)=>{const o=R(s,t),i=R(n,t);return o.getTime()===i.getTime()},ae=(s,n,t=1)=>{const o=new Date(s,n,1),i=new Date(s,n+1,0),u=new Date,v=[],l=R(o,t);let m=new Date(l);for(;m<=i||m.getDay()!==t;){const y=m.getMonth()===n,b=m.toDateString()===u.toDateString(),S=I(m);if(v.push({date:new Date(m),isCurrentMonth:y,isToday:b,weekNumber:S,isSelected:!1}),m.setDate(m.getDate()+1),m>i&&m.getDay()===t)break}return v},ce=({selectedWeek:s,onWeekSelect:n,minDate:t,maxDate:o,className:i="",dateFormat:u="MMM dd, yyyy",showWeekNumbers:v=!0,firstDayOfWeek:l=1})=>{const[m,y]=g.useState(s||new Date),[b,S]=g.useState(s?R(s,l):null),_=m.getMonth(),h=m.getFullYear(),L=g.useMemo(()=>{const a=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];return l===1?[...a.slice(1),a[0]]:a},[l]),M=g.useMemo(()=>{const a=ae(h,_,l),p=[];for(let w=0;w<a.length;w+=7){const P=a.slice(w,w+7);p.push(P)}return p},[h,_,l]),q=a=>{const p=J(a,l),w=I(a);t&&p<t||o&&a>o||(S(a),n&&n(a,p,w))},z=()=>{y(new Date(h,_-1,1))},V=()=>{y(new Date(h,_+1,1))},G=g.useMemo(()=>t?new Date(h,_,1)<=t:!1,[t,h,_]),X=g.useMemo(()=>o?new Date(h,_+1,0)>=o:!1,[o,h,_]),N=g.useMemo(()=>{if(!b)return null;const a=J(b,l),p=I(b);return{start:K(b,u),end:K(a,u),weekNumber:p}},[b,u,l]),B=["January","February","March","April","May","June","July","August","September","October","November","December"];return k.jsxs("div",{className:`week-picker ${i}`,children:[k.jsxs("div",{className:"week-picker__header",children:[k.jsx("button",{className:"week-picker__nav-button",onClick:z,disabled:G,"aria-label":"Previous month",children:"‹"}),k.jsxs("h2",{className:"week-picker__month-year",children:[B[_]," ",h]}),k.jsx("button",{className:"week-picker__nav-button",onClick:V,disabled:X,"aria-label":"Next month",children:"›"})]}),N&&k.jsx("div",{className:"week-picker__selected-week-info",children:k.jsxs("p",{className:"week-picker__selected-week-text",children:["Week ",N.weekNumber,": ",N.start," -"," ",N.end]})}),k.jsxs("div",{className:"week-picker__calendar",children:[k.jsxs("div",{className:"week-picker__week-day-headers",children:[v&&k.jsx("div",{className:"week-picker__week-number-header",children:"Wk"}),k.jsx("div",{className:"week-picker__week-day-headers-container",children:L.map(a=>k.jsx("div",{className:"week-picker__week-day-header",children:a},a))})]}),M.map((a,p)=>{const w=R(a[0].date,l),P=b&&oe(w,b,l),A=I(w),F=J(w,l),C=!(t&&F<t||o&&w>o),O=["week-picker__week-row",P?"week-picker__week-row--selected":"",C?"":"week-picker__week-row--disabled"].filter(Boolean).join(" ");return k.jsxs("div",{className:O,onClick:()=>C&&q(w),style:{cursor:C?"pointer":"not-allowed"},children:[v&&k.jsx("div",{className:"week-picker__week-number",children:A}),k.jsx("div",{className:"week-picker__days-container",children:a.map((j,U)=>{const $=["week-picker__day",j.isCurrentMonth?"week-picker__day--current-month":"week-picker__day--other-month",j.isToday?"week-picker__day--today":""].filter(Boolean).join(" ");return k.jsx("div",{className:$,children:j.date.getDate()},U)})})]},p)})]})]})},fe="1.0.6";exports.WeekPicker=ce;exports.default=ce;exports.formatDate=K;exports.getISOWeekNumber=I;exports.getMonthDays=ae;exports.getWeekEnd=J;exports.getWeekStart=R;exports.isSameWeek=oe;exports.version=fe; //# sourceMappingURL=react-week-picker-pro.cjs.map