@simplybusiness/mobius-datepicker 6.2.0 → 6.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # Changelog
2
2
 
3
+ ## 6.3.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [271b4be]
8
+ - @simplybusiness/mobius@5.15.7
9
+
10
+ ## 6.3.0
11
+
12
+ ### Minor Changes
13
+
14
+ - b9f5675: feat: disable dates before min and after max values
15
+
16
+ ### Patch Changes
17
+
18
+ - Updated dependencies [bc592a1]
19
+ - @simplybusiness/mobius@5.15.6
20
+
3
21
  ## 6.2.0
4
22
 
5
23
  ### Minor Changes
@@ -15,6 +15,7 @@ const _dedupe = /*#__PURE__*/ _interop_require_default(require("classnames/dedup
15
15
  const _react = require("react");
16
16
  const _icons = require("@simplybusiness/icons");
17
17
  const _reactdaypicker = require("react-day-picker");
18
+ const _datefns = require("date-fns");
18
19
  const _useFocusTrap = /*#__PURE__*/ _interop_require_default(require("../../hooks/useFocusTrap/useFocusTrap"));
19
20
  const _utils = require("./utils");
20
21
  const _getStartWeekday = require("./utils/getStartWeekday");
@@ -85,6 +86,14 @@ const DatePickerModal = ({ date, isOpen, onSelected, top, min, max })=>{
85
86
  ...maxDate && {
86
87
  endMonth: maxDate
87
88
  },
89
+ disabled: {
90
+ ...min && {
91
+ before: (0, _datefns.parseISO)(min)
92
+ },
93
+ ...max && {
94
+ after: (0, _datefns.parseISO)(max)
95
+ }
96
+ },
88
97
  selected: initialDate,
89
98
  defaultMonth: initialDate,
90
99
  onSelect: handleDayPickerSelect,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/DatePicker/DatePickerModal.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n Icon,\n VisuallyHidden,\n useOnClickOutside,\n} from \"@simplybusiness/mobius\";\nimport classNames from \"classnames/dedupe\";\nimport { useId, useRef } from \"react\";\nimport { chevronLeft, chevronRight } from \"@simplybusiness/icons\";\nimport { DayPicker } from \"react-day-picker\";\nimport FocusTrap from \"../../hooks/useFocusTrap/useFocusTrap\";\nimport { dateObjToString, weekdayAsOneLetter } from \"./utils\";\nimport { getStartWeekday } from \"./utils/getStartWeekday\";\n\nconst PARENT_NODE = typeof document !== \"undefined\" && document.body;\n\nexport type DatePickerModalProps = {\n date?: string; // yyyy-mm-dd\n isOpen: boolean;\n top: number;\n onSelected: (date?: string | undefined) => void;\n min?: string;\n max?: string;\n};\n\nconst ChevronComponent = ({\n orientation,\n}: {\n orientation?: \"up\" | \"down\" | \"left\" | \"right\";\n}) => {\n if (orientation === \"left\") {\n return <Icon icon={chevronLeft} />;\n }\n return <Icon icon={chevronRight} />;\n};\n\nconst startWeekday = getStartWeekday(navigator?.language);\n\nconst DatePickerModal = ({\n date,\n isOpen,\n onSelected,\n top,\n min,\n max,\n}: DatePickerModalProps) => {\n const modalRef = useRef<HTMLDivElement>(null);\n const initialDate = date ? new Date(date) : undefined;\n const minDate = min ? new Date(min) : undefined;\n const maxDate = max ? new Date(max) : undefined;\n const hiddenId = `screen-reader-title-${useId()}`;\n\n if (isOpen && PARENT_NODE) {\n PARENT_NODE?.setAttribute(\"aria-hidden\", \"true\");\n }\n\n const handleSelected = (selectedDate?: string | undefined) => {\n if (PARENT_NODE) PARENT_NODE?.removeAttribute(\"aria-hidden\");\n onSelected(selectedDate);\n };\n\n const handleDayPickerSelect = (selectedDate: Date | undefined) => {\n if (!selectedDate) return;\n\n handleSelected(dateObjToString(selectedDate));\n };\n\n useOnClickOutside(modalRef, () => {\n if (modalRef.current && isOpen) {\n handleSelected();\n }\n });\n\n const modalClasses = classNames(\"mobius-date-picker__modal\", {\n \"--is-open\": isOpen,\n });\n\n return (\n <FocusTrap>\n <div\n ref={modalRef}\n className={modalClasses}\n style={{ top }}\n aria-describedby={hiddenId}\n data-testid=\"modal-container\"\n >\n <VisuallyHidden>\n <div id={hiddenId}>Please select a date from the calendar</div>\n </VisuallyHidden>\n <DayPicker\n mode=\"single\"\n {...(minDate && { startMonth: minDate })}\n {...(maxDate && { endMonth: maxDate })}\n selected={initialDate}\n defaultMonth={initialDate}\n onSelect={handleDayPickerSelect}\n pagedNavigation\n showOutsideDays\n weekStartsOn={startWeekday}\n formatters={{ formatWeekdayName: weekdayAsOneLetter }}\n components={{\n Chevron: ChevronComponent,\n }}\n classNames={{\n root: \"mobius-date-picker__root\",\n months: \"mobius-date-picker__months\",\n month: \"mobius-date-picker__month\",\n nav: \"mobius-date-picker__nav\",\n button_previous: \"mobius-date-picker__nav-button --previous\",\n button_next: \"mobius-date-picker__nav-button --next\",\n month_caption: \"mobius-date-picker__caption\",\n caption_label: \"mobius-date-picker__caption-label\",\n month_grid: \"mobius-date-picker__month-grid\",\n weekdays: \"mobius-date-picker__weekdays\",\n weekday: \"mobius-date-picker__weekday\",\n weeks: \"mobius-date-picker__weeks\",\n week: \"mobius-date-picker__week\",\n day: \"mobius-date-picker__day\",\n day_button: \"mobius-date-picker__day-button\",\n selected: \"--is-selected\",\n disabled: \"--is-disabled\",\n outside: \"--is-outside\",\n hidden: \"--is-hidden\",\n today: \"--is-today\",\n focused: \"--is-focused\",\n }}\n />\n </div>\n </FocusTrap>\n );\n};\n\nexport default DatePickerModal;\n"],"names":["navigator","PARENT_NODE","document","body","ChevronComponent","orientation","Icon","icon","chevronLeft","chevronRight","startWeekday","getStartWeekday","language","DatePickerModal","date","isOpen","onSelected","top","min","max","modalRef","useRef","initialDate","Date","undefined","minDate","maxDate","hiddenId","useId","setAttribute","handleSelected","selectedDate","removeAttribute","handleDayPickerSelect","dateObjToString","useOnClickOutside","current","modalClasses","classNames","FocusTrap","div","ref","className","style","aria-describedby","data-testid","VisuallyHidden","id","DayPicker","mode","startMonth","endMonth","selected","defaultMonth","onSelect","pagedNavigation","showOutsideDays","weekStartsOn","formatters","formatWeekdayName","weekdayAsOneLetter","components","Chevron","root","months","month","nav","button_previous","button_next","month_caption","caption_label","month_grid","weekdays","weekday","weeks","week","day","day_button","disabled","outside","hidden","today","focused"],"mappings":"AAAA;;;;;+BAqIA;;;eAAA;;;;wBA/HO;+DACgB;uBACO;uBACY;gCAChB;qEACJ;uBAC8B;iCACpB;;;;;;IAwBKA;AAtBrC,MAAMC,cAAc,OAAOC,aAAa,eAAeA,SAASC,IAAI;AAWpE,MAAMC,mBAAmB,CAAC,EACxBC,WAAW,EAGZ;IACC,IAAIA,gBAAgB,QAAQ;QAC1B,qBAAO,qBAACC,YAAI;YAACC,MAAMC,kBAAW;;IAChC;IACA,qBAAO,qBAACF,YAAI;QAACC,MAAME,mBAAY;;AACjC;AAEA,MAAMC,eAAeC,IAAAA,gCAAe,GAACX,aAAAA,uBAAAA,iCAAAA,WAAWY,QAAQ;AAExD,MAAMC,kBAAkB,CAAC,EACvBC,IAAI,EACJC,MAAM,EACNC,UAAU,EACVC,GAAG,EACHC,GAAG,EACHC,GAAG,EACkB;IACrB,MAAMC,WAAWC,IAAAA,aAAM,EAAiB;IACxC,MAAMC,cAAcR,OAAO,IAAIS,KAAKT,QAAQU;IAC5C,MAAMC,UAAUP,MAAM,IAAIK,KAAKL,OAAOM;IACtC,MAAME,UAAUP,MAAM,IAAII,KAAKJ,OAAOK;IACtC,MAAMG,WAAW,CAAC,oBAAoB,EAAEC,IAAAA,YAAK,KAAI;IAEjD,IAAIb,UAAUd,aAAa;QACzBA,wBAAAA,kCAAAA,YAAa4B,YAAY,CAAC,eAAe;IAC3C;IAEA,MAAMC,iBAAiB,CAACC;QACtB,IAAI9B,aAAaA,wBAAAA,kCAAAA,YAAa+B,eAAe,CAAC;QAC9ChB,WAAWe;IACb;IAEA,MAAME,wBAAwB,CAACF;QAC7B,IAAI,CAACA,cAAc;QAEnBD,eAAeI,IAAAA,sBAAe,EAACH;IACjC;IAEAI,IAAAA,yBAAiB,EAACf,UAAU;QAC1B,IAAIA,SAASgB,OAAO,IAAIrB,QAAQ;YAC9Be;QACF;IACF;IAEA,MAAMO,eAAeC,IAAAA,eAAU,EAAC,6BAA6B;QAC3D,aAAavB;IACf;IAEA,qBACE,qBAACwB,qBAAS;kBACR,cAAA,sBAACC;YACCC,KAAKrB;YACLsB,WAAWL;YACXM,OAAO;gBAAE1B;YAAI;YACb2B,oBAAkBjB;YAClBkB,eAAY;;8BAEZ,qBAACC,sBAAc;8BACb,cAAA,qBAACN;wBAAIO,IAAIpB;kCAAU;;;8BAErB,qBAACqB,yBAAS;oBACRC,MAAK;oBACJ,GAAIxB,WAAW;wBAAEyB,YAAYzB;oBAAQ,CAAC;oBACtC,GAAIC,WAAW;wBAAEyB,UAAUzB;oBAAQ,CAAC;oBACrC0B,UAAU9B;oBACV+B,cAAc/B;oBACdgC,UAAUrB;oBACVsB,eAAe;oBACfC,eAAe;oBACfC,cAAc/C;oBACdgD,YAAY;wBAAEC,mBAAmBC,yBAAkB;oBAAC;oBACpDC,YAAY;wBACVC,SAAS1D;oBACX;oBACAkC,YAAY;wBACVyB,MAAM;wBACNC,QAAQ;wBACRC,OAAO;wBACPC,KAAK;wBACLC,iBAAiB;wBACjBC,aAAa;wBACbC,eAAe;wBACfC,eAAe;wBACfC,YAAY;wBACZC,UAAU;wBACVC,SAAS;wBACTC,OAAO;wBACPC,MAAM;wBACNC,KAAK;wBACLC,YAAY;wBACZzB,UAAU;wBACV0B,UAAU;wBACVC,SAAS;wBACTC,QAAQ;wBACRC,OAAO;wBACPC,SAAS;oBACX;;;;;AAKV;MAEA,WAAerE"}
1
+ {"version":3,"sources":["../../../../src/components/DatePicker/DatePickerModal.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n Icon,\n VisuallyHidden,\n useOnClickOutside,\n} from \"@simplybusiness/mobius\";\nimport classNames from \"classnames/dedupe\";\nimport { useId, useRef } from \"react\";\nimport { chevronLeft, chevronRight } from \"@simplybusiness/icons\";\nimport { DayPicker, Matcher } from \"react-day-picker\";\nimport { parseISO } from \"date-fns\";\nimport FocusTrap from \"../../hooks/useFocusTrap/useFocusTrap\";\nimport { dateObjToString, weekdayAsOneLetter } from \"./utils\";\nimport { getStartWeekday } from \"./utils/getStartWeekday\";\n\nconst PARENT_NODE = typeof document !== \"undefined\" && document.body;\n\nexport type DatePickerModalProps = {\n date?: string; // yyyy-mm-dd\n isOpen: boolean;\n top: number;\n onSelected: (date?: string | undefined) => void;\n min?: string;\n max?: string;\n};\n\nconst ChevronComponent = ({\n orientation,\n}: {\n orientation?: \"up\" | \"down\" | \"left\" | \"right\";\n}) => {\n if (orientation === \"left\") {\n return <Icon icon={chevronLeft} />;\n }\n return <Icon icon={chevronRight} />;\n};\n\nconst startWeekday = getStartWeekday(navigator?.language);\n\nconst DatePickerModal = ({\n date,\n isOpen,\n onSelected,\n top,\n min,\n max,\n}: DatePickerModalProps) => {\n const modalRef = useRef<HTMLDivElement>(null);\n const initialDate = date ? new Date(date) : undefined;\n const minDate = min ? new Date(min) : undefined;\n const maxDate = max ? new Date(max) : undefined;\n const hiddenId = `screen-reader-title-${useId()}`;\n\n if (isOpen && PARENT_NODE) {\n PARENT_NODE?.setAttribute(\"aria-hidden\", \"true\");\n }\n\n const handleSelected = (selectedDate?: string | undefined) => {\n if (PARENT_NODE) PARENT_NODE?.removeAttribute(\"aria-hidden\");\n onSelected(selectedDate);\n };\n\n const handleDayPickerSelect = (selectedDate: Date | undefined) => {\n if (!selectedDate) return;\n\n handleSelected(dateObjToString(selectedDate));\n };\n\n useOnClickOutside(modalRef, () => {\n if (modalRef.current && isOpen) {\n handleSelected();\n }\n });\n\n const modalClasses = classNames(\"mobius-date-picker__modal\", {\n \"--is-open\": isOpen,\n });\n\n return (\n <FocusTrap>\n <div\n ref={modalRef}\n className={modalClasses}\n style={{ top }}\n aria-describedby={hiddenId}\n data-testid=\"modal-container\"\n >\n <VisuallyHidden>\n <div id={hiddenId}>Please select a date from the calendar</div>\n </VisuallyHidden>\n <DayPicker\n mode=\"single\"\n {...(minDate && { startMonth: minDate })}\n {...(maxDate && { endMonth: maxDate })}\n disabled={\n {\n ...(min && { before: parseISO(min) }),\n ...(max && { after: parseISO(max) }),\n } as Matcher\n }\n selected={initialDate}\n defaultMonth={initialDate}\n onSelect={handleDayPickerSelect}\n pagedNavigation\n showOutsideDays\n weekStartsOn={startWeekday}\n formatters={{ formatWeekdayName: weekdayAsOneLetter }}\n components={{\n Chevron: ChevronComponent,\n }}\n classNames={{\n root: \"mobius-date-picker__root\",\n months: \"mobius-date-picker__months\",\n month: \"mobius-date-picker__month\",\n nav: \"mobius-date-picker__nav\",\n button_previous: \"mobius-date-picker__nav-button --previous\",\n button_next: \"mobius-date-picker__nav-button --next\",\n month_caption: \"mobius-date-picker__caption\",\n caption_label: \"mobius-date-picker__caption-label\",\n month_grid: \"mobius-date-picker__month-grid\",\n weekdays: \"mobius-date-picker__weekdays\",\n weekday: \"mobius-date-picker__weekday\",\n weeks: \"mobius-date-picker__weeks\",\n week: \"mobius-date-picker__week\",\n day: \"mobius-date-picker__day\",\n day_button: \"mobius-date-picker__day-button\",\n selected: \"--is-selected\",\n disabled: \"--is-disabled\",\n outside: \"--is-outside\",\n hidden: \"--is-hidden\",\n today: \"--is-today\",\n focused: \"--is-focused\",\n }}\n />\n </div>\n </FocusTrap>\n );\n};\n\nexport default DatePickerModal;\n"],"names":["navigator","PARENT_NODE","document","body","ChevronComponent","orientation","Icon","icon","chevronLeft","chevronRight","startWeekday","getStartWeekday","language","DatePickerModal","date","isOpen","onSelected","top","min","max","modalRef","useRef","initialDate","Date","undefined","minDate","maxDate","hiddenId","useId","setAttribute","handleSelected","selectedDate","removeAttribute","handleDayPickerSelect","dateObjToString","useOnClickOutside","current","modalClasses","classNames","FocusTrap","div","ref","className","style","aria-describedby","data-testid","VisuallyHidden","id","DayPicker","mode","startMonth","endMonth","disabled","before","parseISO","after","selected","defaultMonth","onSelect","pagedNavigation","showOutsideDays","weekStartsOn","formatters","formatWeekdayName","weekdayAsOneLetter","components","Chevron","root","months","month","nav","button_previous","button_next","month_caption","caption_label","month_grid","weekdays","weekday","weeks","week","day","day_button","outside","hidden","today","focused"],"mappings":"AAAA;;;;;+BA4IA;;;eAAA;;;;wBAtIO;+DACgB;uBACO;uBACY;gCACP;yBACV;qEACH;uBAC8B;iCACpB;;;;;;IAwBKA;AAtBrC,MAAMC,cAAc,OAAOC,aAAa,eAAeA,SAASC,IAAI;AAWpE,MAAMC,mBAAmB,CAAC,EACxBC,WAAW,EAGZ;IACC,IAAIA,gBAAgB,QAAQ;QAC1B,qBAAO,qBAACC,YAAI;YAACC,MAAMC,kBAAW;;IAChC;IACA,qBAAO,qBAACF,YAAI;QAACC,MAAME,mBAAY;;AACjC;AAEA,MAAMC,eAAeC,IAAAA,gCAAe,GAACX,aAAAA,uBAAAA,iCAAAA,WAAWY,QAAQ;AAExD,MAAMC,kBAAkB,CAAC,EACvBC,IAAI,EACJC,MAAM,EACNC,UAAU,EACVC,GAAG,EACHC,GAAG,EACHC,GAAG,EACkB;IACrB,MAAMC,WAAWC,IAAAA,aAAM,EAAiB;IACxC,MAAMC,cAAcR,OAAO,IAAIS,KAAKT,QAAQU;IAC5C,MAAMC,UAAUP,MAAM,IAAIK,KAAKL,OAAOM;IACtC,MAAME,UAAUP,MAAM,IAAII,KAAKJ,OAAOK;IACtC,MAAMG,WAAW,CAAC,oBAAoB,EAAEC,IAAAA,YAAK,KAAI;IAEjD,IAAIb,UAAUd,aAAa;QACzBA,wBAAAA,kCAAAA,YAAa4B,YAAY,CAAC,eAAe;IAC3C;IAEA,MAAMC,iBAAiB,CAACC;QACtB,IAAI9B,aAAaA,wBAAAA,kCAAAA,YAAa+B,eAAe,CAAC;QAC9ChB,WAAWe;IACb;IAEA,MAAME,wBAAwB,CAACF;QAC7B,IAAI,CAACA,cAAc;QAEnBD,eAAeI,IAAAA,sBAAe,EAACH;IACjC;IAEAI,IAAAA,yBAAiB,EAACf,UAAU;QAC1B,IAAIA,SAASgB,OAAO,IAAIrB,QAAQ;YAC9Be;QACF;IACF;IAEA,MAAMO,eAAeC,IAAAA,eAAU,EAAC,6BAA6B;QAC3D,aAAavB;IACf;IAEA,qBACE,qBAACwB,qBAAS;kBACR,cAAA,sBAACC;YACCC,KAAKrB;YACLsB,WAAWL;YACXM,OAAO;gBAAE1B;YAAI;YACb2B,oBAAkBjB;YAClBkB,eAAY;;8BAEZ,qBAACC,sBAAc;8BACb,cAAA,qBAACN;wBAAIO,IAAIpB;kCAAU;;;8BAErB,qBAACqB,yBAAS;oBACRC,MAAK;oBACJ,GAAIxB,WAAW;wBAAEyB,YAAYzB;oBAAQ,CAAC;oBACtC,GAAIC,WAAW;wBAAEyB,UAAUzB;oBAAQ,CAAC;oBACrC0B,UACE;wBACE,GAAIlC,OAAO;4BAAEmC,QAAQC,IAAAA,iBAAQ,EAACpC;wBAAK,CAAC;wBACpC,GAAIC,OAAO;4BAAEoC,OAAOD,IAAAA,iBAAQ,EAACnC;wBAAK,CAAC;oBACrC;oBAEFqC,UAAUlC;oBACVmC,cAAcnC;oBACdoC,UAAUzB;oBACV0B,eAAe;oBACfC,eAAe;oBACfC,cAAcnD;oBACdoD,YAAY;wBAAEC,mBAAmBC,yBAAkB;oBAAC;oBACpDC,YAAY;wBACVC,SAAS9D;oBACX;oBACAkC,YAAY;wBACV6B,MAAM;wBACNC,QAAQ;wBACRC,OAAO;wBACPC,KAAK;wBACLC,iBAAiB;wBACjBC,aAAa;wBACbC,eAAe;wBACfC,eAAe;wBACfC,YAAY;wBACZC,UAAU;wBACVC,SAAS;wBACTC,OAAO;wBACPC,MAAM;wBACNC,KAAK;wBACLC,YAAY;wBACZzB,UAAU;wBACVJ,UAAU;wBACV8B,SAAS;wBACTC,QAAQ;wBACRC,OAAO;wBACPC,SAAS;oBACX;;;;;AAKV;MAEA,WAAexE"}