UNPKG

carbon-react

Version:

A library of reusable React components for easily building user interfaces.

2 lines (1 loc) 4.87 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("@floating-ui/dom"),r=require("react"),a=require("react-day-picker"),l=require("../../../../hooks/__internal__/useLocale/useLocale.js"),n=require("../../../../__internal__/popover/popover.component.js"),o=require("../navbar/navbar.component.js"),i=require("../weekday/weekday.component.js"),u=require("../utils.js"),s=require("../../../../__internal__/focus-trap/focus-trap-utils.js"),c=require("../../../../__internal__/utils/helpers/events/events.js"),d=require("../../../flat-table/__internal__/flat-table.context.js"),f=require("../../../../__internal__/utils/logger/index.js"),p=require("./day-picker.style.js");function y(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function b(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},a=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(a=a.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),a.forEach((function(t){y(e,t,r[t])}))}return e}const v=[t.offset(3),t.flip({fallbackStrategy:"initialPlacement"})],m=o.Navbar;let j=!1;const g=({inputElement:t,minDate:o,maxDate:y,selectedDays:g,disablePortal:O=!0,onDayClick:k,pickerMouseDown:D,pickerProps:h,open:_,setOpen:w,pickerTabGuardId:P,onPickerClose:q,ariaLabel:S,ariaLabelledBy:x})=>{!j&&O&&(j=!0,f.default.deprecate("`disablePortal` is deprecated in DateInput and DateRange, and support will soon be removed."));const[M,E]=r.useState(g||new Date),K=l.default(),{localize:C,options:F}=K.date.dateFnsLocale(),{weekStartsOn:T}=F||{},A=r.useMemo((()=>Array.from({length:7}).map(((e,t)=>null==C?void 0:C.day(t)))),[C]),I=r.useMemo((()=>{const e=e=>K.locale().includes(e);return Array.from({length:7}).map(((t,r)=>null==C?void 0:C.day(r,["de","pl"].some(e)?{width:"wide"}:{width:"abbreviated"}).substring(0,e("de")?2:3)))}),[K,C]),L=r.useRef(null),N=r.useCallback((e=>{var r,a;_&&c.default.isEscKey(e)&&(E(g),null===(a=t.current)||void 0===a||null===(r=a.querySelector("input"))||void 0===r||r.focus(),w(!1),null==q||q(),e.stopPropagation())}),[t,q,_,g,w]),{isInFlatTable:W,setHasOpenDatePicker:z}=r.useContext(d.default);return r.useEffect((()=>{null==z||z(!!_)}),[_,z]),r.useEffect((()=>{g&&E(g)}),[g]),r.useEffect((()=>{!_&&g&&(null==M?void 0:M.getMonth())!==(null==g?void 0:g.getMonth())&&E(g)}),[M,_,g]),_?e.jsx(e.Fragment,{children:e.jsx(n.default,{placement:"bottom-start",reference:t,middleware:v,disablePortal:O,disableBackgroundUI:W,popoverStrategy:"fixed",children:e.jsxs(p.default,{id:"styled-day-picker","data-role":"date-picker",ref:L,onMouseDown:D,onKeyUp:N,onKeyDown:e=>{var r,a,l;(null===(r=L.current)||void 0===r?void 0:r.querySelector(".rdp-nav button"))===document.activeElement&&c.default.isTabKey(e)&&c.default.isShiftKey(e)&&(e.preventDefault(),w(!1),null==q||q(),null===(l=t.current)||void 0===l||null===(a=l.querySelector("input"))||void 0===a||a.focus())},role:"region","aria-label":S,"aria-labelledby":x,children:[e.jsx("div",{id:P,tabIndex:0,onFocus:()=>{var e,t;null===(t=L.current)||void 0===t||null===(e=t.querySelector("button"))||void 0===e||e.focus()}}),e.jsx(a.DayPicker,(B=b({formatters:{formatCaption:e=>`${null==C?void 0:C.month(e.getMonth())} ${e.getFullYear()}`},required:!1,weekStartsOn:T,onMonthChange:E,disabled:u.getDisabledDays(o,y),locale:{localize:b({},a.defaultLocale.localize)},selected:g,month:M||new Date,onDayClick:(e,t,r)=>{((e,t)=>{e&&(null==k||k(e,t)),null==q||q()})(e,r)},components:{Nav:m,Weekday:t=>{const{className:r,"aria-label":a}=t,l={Sunday:0,Monday:1,Tuesday:2,Wednesday:3,Thursday:4,Friday:5,Saturday:6}[a];return e.jsx(i.Weekday,{className:r,title:A[l],children:I[l]})}},fixedWeeks:!0,defaultMonth:g||void 0,onDayKeyDown:(e,r,a)=>{var l;l=a,setTimeout((()=>{if(c.default.isTabKey(l)&&!c.default.isShiftKey(l)){var e;l.preventDefault(),w(!1),null==q||q();const n=null===(e=t.current)||void 0===e?void 0:e.querySelector("input");if(n){var r,a;const e=Array.from(document.querySelectorAll(s.defaultFocusableSelectors)||[]),t=Array.from((null===(r=L.current)||void 0===r?void 0:r.querySelectorAll("button, [tabindex]"))||[]),l=e.filter((e=>-1!==Number(e.tabIndex)&&!t.includes(e))),o=l.indexOf(n)+1;null===(a=l[o])||void 0===a||a.focus()}}}),0)}},h),R={showOutsideDays:!0,mode:"single"},R=null!=R?R:{},Object.getOwnPropertyDescriptors?Object.defineProperties(B,Object.getOwnPropertyDescriptors(R)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t}(Object(R)).forEach((function(e){Object.defineProperty(B,e,Object.getOwnPropertyDescriptor(R,e))})),B))]})})}):null;var B,R};g.displayName="DatePicker",exports.DatePicker=g,exports.default=g;