UNPKG

react-calendar-kit

Version:

React Calendar Kit is a powerful and flexible library for building accessible and highly customizable calendar and date/time picker components in your React applications. React Calendar Kit provides a solid foundation for creating inclusive user experienc

3 lines (2 loc) 6.68 kB
'use client'; var pe=Object.create;var N=Object.defineProperty;var fe=Object.getOwnPropertyDescriptor;var ge=Object.getOwnPropertyNames;var he=Object.getPrototypeOf,ye=Object.prototype.hasOwnProperty;var Ce=(e,t)=>{for(var r in t)N(e,r,{get:t[r],enumerable:!0})},$=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of ge(t))!ye.call(e,n)&&n!==r&&N(e,n,{get:()=>t[n],enumerable:!(o=fe(t,n))||o.enumerable});return e};var P=(e,t,r)=>(r=e!=null?pe(he(e)):{},$(t||!e||!e.__esModule?N(r,"default",{value:e,enumerable:!0}):r,e)),be=e=>$(N({},"__esModule",{value:!0}),e);var Te={};Ce(Te,{default:()=>De});module.exports=be(Te);var c=P(require("react")),O=require("@react-aria/i18n");var B=require("@internationalized/date"),U=require("clsx"),C=U.clsx,b=e=>e?"true":void 0;function _(e,t){let r=[];if(!e||!t)return r;let o=(0,B.startOfYear)(e);for(;o.compare(t)<=0;)r.push(o),o=(0,B.startOfYear)(o.add({years:1}));return r}function xe(e,t){return e.add({months:t})}function W(e){let r=[(0,B.startOfYear)(e)];for(;r.length<12;){let o=r[r.length-1];r.push(xe(o,1))}return r}function x(...e){return e?.reduce((t,r)=>r?{...t,...r}:t,{})??{}}var M=P(require("react"));function q(e){let t=(0,M.createContext)(null);return[({children:n,value:R})=>M.default.createElement(t.Provider,{value:R},n),()=>{let n=(0,M.useContext)(t);if(n===null)throw new Error(e);return n}]}var[Ve,L]=q("Calendar component was not found in tree");var m=P(require("react")),se=P(require("lodash.debounce")),ae=P(require("scroll-into-view-if-needed"));function z(e,t){let r=Math.max(0,Math.min(e.right,t.right)-Math.max(e.left,t.left)),o=Math.max(0,Math.min(e.bottom,t.bottom)-Math.max(e.top,t.top));return r*o}var J=require("react"),Re=()=>{let e=(0,J.useRef)(new Map);function t(){return e.current||(e.current=new Map),e.current}function r(o,n){o?e.current.set(n,o):e.current.delete(n)}return[r,t]},Q=Re;var D=P(require("react")),te=require("@react-aria/button"),re=require("@react-aria/focus"),ne=require("@react-aria/interactions"),I=require("@react-aria/utils");var X=require("react");function ke(e,t){typeof e=="function"?e(t):typeof e=="object"&&e!==null&&"current"in e&&(e.current=t)}function Pe(...e){return t=>{e.forEach(r=>ke(r,t))}}function ee(...e){return(0,X.useCallback)(Pe(...e),e)}var oe=(0,D.forwardRef)((e,t)=>{let{children:r,autoFocus:o,isDisabled:n,onKeyDown:R,...a}=e,k=(0,D.useRef)(null),{buttonProps:d,isPressed:s}=(0,te.useButton)({elementType:"button",isDisabled:n,onKeyDown:R,...a},k),v=ee(k,t),{isFocusVisible:w,isFocused:y,focusProps:E}=(0,re.useFocusRing)({autoFocus:o}),{isHovered:g,hoverProps:p}=(0,ne.useHover)({isDisabled:n});return D.default.createElement("button",{ref:v,"data-disabled":b(n),"data-focus":b(y),"data-focus-visible":b(w),"data-hover":b(g),"data-pressed":b(s),className:e.className,...(0,I.mergeProps)(E,p,d,(0,I.filterDOMProps)(a))},r)});oe.displayName="Button";var ie=oe;var T=P(require("react")),ve=({className:e,total:t,...r})=>T.default.createElement(T.default.Fragment,null,Array.from({length:t},(o,n)=>T.default.createElement("div",{key:n,"aria-hidden":"true",className:e,role:"picker-item-empty",tabIndex:-1,...r},"\xA0"))),A=(0,T.memo)(ve);var Ee=200,Se=e=>{let{initialDate:t,options:r=[],className:o,style:n,listClassName:R,itemClassName:a,listStyle:k,itemStyle:d,listType:s="month",highlightRef:v,...w}=e,y=(0,m.useRef)(null),[E,g]=Q(),{state:p,isPickerExpanded:f,headerRef:F,setPickerExpanded:V,pickerEmptyItem:Z}=L(),K=(0,m.useCallback)((l,i)=>{if(!(l.target instanceof HTMLElement))return;let u=g(),h=Array.from(u.values()).findLast(ue=>{let ce=ue.getBoundingClientRect(),Y=i?.getBoundingClientRect();return Y?z(ce,Y)>50:!1}),G=Number(h?.getAttribute("data-value"));if(!G)return;let de=p.focusedDate.set({[s]:G});p.setFocusedDate(de)},[p,t,s,f]);(0,m.useEffect)(()=>{let l=y.current,i=v;if(!i)return;let u=(0,se.default)(S=>K(S,i),Ee);return l?.addEventListener("scroll",u),()=>{u&&l?.removeEventListener("scroll",u)}},[K]);let j=(0,m.useCallback)((l,i=!0)=>{let S=g().get(l);S&&(0,ae.default)(S,{scrollMode:"always",behavior:i?"smooth":"instant",boundary:y.current})},[g]),le=(0,m.useCallback)(l=>{let i=l.target,u=Number(i.getAttribute("data-value"));if(u===p.focusedDate[s]){V?.(!1);return}u&&j(u)},[p]),me=(0,m.useCallback)((l,i)=>{let u=g();if(!u.get(i))return;let h=i;switch(l.key){case"ArrowDown":h=i+1;break;case"ArrowUp":h=i-1;break;case"Home":h=0;break;case"End":h=r.length-1;break;case"PageUp":h=i-3;break;case"PageDown":h=i+3;break;case"Escape":case"Enter":case" ":V?.(!1),F?.current?.focus();return}u.get(h)?.focus()},[g,r.length,V,F]);return(0,m.useEffect)(()=>{f&&j(t,!1)},[f]),m.default.createElement("div",{ref:y,className:C(R,o),style:x({overflowY:"scroll"},n,k),role:`picker-${s}-list`,...w},m.default.createElement(A,{total:Z,className:a,style:d}),r.map(l=>m.default.createElement(ie,{role:`picker-${s}-item`,key:`picker-${s}-${l.value}`,ref:i=>E(i,l.value),className:a,style:d,"data-value":l.value,tabIndex:!f||p.focusedDate?.[s]!==l.value?-1:0,onKeyDown:i=>me(i,l.value),onPress:i=>le(i)},l.label)),m.default.createElement(A,{total:Z,className:a}))},H=(0,m.memo)(Se);var Me=e=>{let{date:t,currentMonth:r,className:o,style:n,...R}=e,{state:a,isPickerExpanded:k,classNames:d,styles:s}=L(),[v,w]=(0,c.useState)(null),y=(0,O.useDateFormatter)({month:"long",era:r.calendar.identifier==="gregory"&&r.era==="BC"?"short":void 0,calendar:r.calendar.identifier,timeZone:a.timeZone}),E=(0,O.useDateFormatter)({year:"numeric",timeZone:a.timeZone}),g=(0,c.useMemo)(()=>_(a.minValue,a.maxValue)?.map(f=>({value:f.year,label:E.format(f.toDate(a.timeZone))})),[a.minValue,a.maxValue,E,a.timeZone]),p=(0,c.useMemo)(()=>W(t).map(f=>({value:f.month,label:y.format(f.toDate(a.timeZone))})),[t,y,a.timeZone]);return c.default.createElement("div",{...R,"data-expanded":b(k),className:C(d?.picker?.root,o),style:x({height:"var(--picker-height)"},n,s?.picker?.root),role:"picker-root",inert:k?void 0:"true"},c.default.createElement("div",{ref:w,className:d?.picker?.highlight,style:s?.picker?.highlight,role:"picker-highlight"}),c.default.createElement(H,{highlightRef:v,options:p,listClassName:C(d?.picker?.list,d?.picker?.monthList),listStyle:x(s?.picker?.list,s?.picker?.monthList),itemClassName:C(d?.picker?.item,d?.picker?.monthItem),itemStyle:x(s?.picker?.item,s?.picker?.monthItem),initialDate:t.month,listType:"month"}),c.default.createElement(H,{highlightRef:v,options:g,listClassName:C(d?.picker?.list,d?.picker?.yearList),listStyle:x(s?.picker?.list,s?.picker?.yearList),itemClassName:C(d?.picker?.item,d?.picker?.yearItem),itemStyle:x(s?.picker?.item,s?.picker?.yearItem),initialDate:t.year,listType:"year"}))},De=(0,c.memo)(Me);