@navikt/ds-react 1.3.8 → 1.3.10
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/_docs.json +4956 -2568
- package/cjs/date/DateInput.js +79 -0
- package/cjs/date/datepicker/DatePicker.js +115 -0
- package/cjs/date/datepicker/DatePickerStandalone.js +83 -0
- package/cjs/date/datepicker/DayButton.js +43 -0
- package/cjs/date/datepicker/caption/Caption.js +23 -0
- package/cjs/date/datepicker/caption/DropdownCaption.js +38 -0
- package/cjs/date/datepicker/caption/index.js +10 -0
- package/cjs/date/datepicker/caption/package.json +6 -0
- package/cjs/date/hooks/index.js +15 -0
- package/cjs/date/hooks/package.json +6 -0
- package/cjs/date/hooks/useDateInputContext.js +17 -0
- package/cjs/date/hooks/useDatepicker.js +135 -0
- package/cjs/date/hooks/useMonthPicker.js +139 -0
- package/cjs/date/hooks/useRangeDatepicker.js +215 -0
- package/cjs/date/hooks/useSharedMonthContext.js +63 -0
- package/cjs/date/index.js +14 -0
- package/cjs/date/monthpicker/MonthButton.js +80 -0
- package/cjs/date/monthpicker/MonthCaption.js +47 -0
- package/cjs/date/monthpicker/MonthPicker.js +74 -0
- package/cjs/date/monthpicker/MonthPickerStandalone.js +54 -0
- package/cjs/date/monthpicker/MonthSelector.js +79 -0
- package/cjs/date/package.json +6 -0
- package/cjs/date/utils/check-dates.js +17 -0
- package/cjs/date/utils/dates-disabled.js +29 -0
- package/cjs/date/utils/format-date.js +12 -0
- package/cjs/date/utils/get-dates.js +43 -0
- package/cjs/date/utils/get-initial-year.js +21 -0
- package/cjs/date/utils/index.js +33 -0
- package/cjs/date/utils/is-match.js +61 -0
- package/cjs/date/utils/labels.js +85 -0
- package/cjs/date/utils/locale.js +21 -0
- package/cjs/date/utils/navigation.js +155 -0
- package/cjs/date/utils/package.json +6 -0
- package/cjs/date/utils/parse-date.js +39 -0
- package/cjs/form/ConfirmationPanel.js +4 -3
- package/cjs/index.js +1 -0
- package/esm/date/DateInput.d.ts +30 -0
- package/esm/date/DateInput.js +51 -0
- package/esm/date/DateInput.js.map +1 -0
- package/esm/date/datepicker/DatePicker.d.ts +95 -0
- package/esm/date/datepicker/DatePicker.js +87 -0
- package/esm/date/datepicker/DatePicker.js.map +1 -0
- package/esm/date/datepicker/DatePickerStandalone.d.ts +12 -0
- package/esm/date/datepicker/DatePickerStandalone.js +55 -0
- package/esm/date/datepicker/DatePickerStandalone.js.map +1 -0
- package/esm/date/datepicker/DayButton.d.ts +3 -0
- package/esm/date/datepicker/DayButton.js +17 -0
- package/esm/date/datepicker/DayButton.js.map +1 -0
- package/esm/date/datepicker/caption/Caption.d.ts +4 -0
- package/esm/date/datepicker/caption/Caption.js +17 -0
- package/esm/date/datepicker/caption/Caption.js.map +1 -0
- package/esm/date/datepicker/caption/DropdownCaption.d.ts +4 -0
- package/esm/date/datepicker/caption/DropdownCaption.js +32 -0
- package/esm/date/datepicker/caption/DropdownCaption.js.map +1 -0
- package/esm/date/datepicker/caption/index.d.ts +2 -0
- package/esm/date/datepicker/caption/index.js +3 -0
- package/esm/date/datepicker/caption/index.js.map +1 -0
- package/esm/date/hooks/index.d.ts +5 -0
- package/esm/date/hooks/index.js +6 -0
- package/esm/date/hooks/index.js.map +1 -0
- package/esm/date/hooks/useDateInputContext.d.ts +18 -0
- package/esm/date/hooks/useDateInputContext.js +14 -0
- package/esm/date/hooks/useDateInputContext.js.map +1 -0
- package/esm/date/hooks/useDatepicker.d.ts +37 -0
- package/esm/date/hooks/useDatepicker.js +132 -0
- package/esm/date/hooks/useDatepicker.js.map +1 -0
- package/esm/date/hooks/useMonthPicker.d.ts +33 -0
- package/esm/date/hooks/useMonthPicker.js +136 -0
- package/esm/date/hooks/useMonthPicker.js.map +1 -0
- package/esm/date/hooks/useRangeDatepicker.d.ts +39 -0
- package/esm/date/hooks/useRangeDatepicker.js +212 -0
- package/esm/date/hooks/useRangeDatepicker.js.map +1 -0
- package/esm/date/hooks/useSharedMonthContext.d.ts +21 -0
- package/esm/date/hooks/useSharedMonthContext.js +36 -0
- package/esm/date/hooks/useSharedMonthContext.js.map +1 -0
- package/esm/date/index.d.ts +6 -0
- package/esm/date/index.js +4 -0
- package/esm/date/index.js.map +1 -0
- package/esm/date/monthpicker/MonthButton.d.ts +11 -0
- package/esm/date/monthpicker/MonthButton.js +51 -0
- package/esm/date/monthpicker/MonthButton.js.map +1 -0
- package/esm/date/monthpicker/MonthCaption.d.ts +3 -0
- package/esm/date/monthpicker/MonthCaption.js +41 -0
- package/esm/date/monthpicker/MonthCaption.js.map +1 -0
- package/esm/date/monthpicker/MonthPicker.d.ts +90 -0
- package/esm/date/monthpicker/MonthPicker.js +46 -0
- package/esm/date/monthpicker/MonthPicker.js.map +1 -0
- package/esm/date/monthpicker/MonthPickerStandalone.d.ts +11 -0
- package/esm/date/monthpicker/MonthPickerStandalone.js +26 -0
- package/esm/date/monthpicker/MonthPickerStandalone.js.map +1 -0
- package/esm/date/monthpicker/MonthSelector.d.ts +3 -0
- package/esm/date/monthpicker/MonthSelector.js +50 -0
- package/esm/date/monthpicker/MonthSelector.js.map +1 -0
- package/esm/date/utils/check-dates.d.ts +4 -0
- package/esm/date/utils/check-dates.js +12 -0
- package/esm/date/utils/check-dates.js.map +1 -0
- package/esm/date/utils/dates-disabled.d.ts +1 -0
- package/esm/date/utils/dates-disabled.js +26 -0
- package/esm/date/utils/dates-disabled.js.map +1 -0
- package/esm/date/utils/format-date.d.ts +1 -0
- package/esm/date/utils/format-date.js +9 -0
- package/esm/date/utils/format-date.js.map +1 -0
- package/esm/date/utils/get-dates.d.ts +2 -0
- package/esm/date/utils/get-dates.js +39 -0
- package/esm/date/utils/get-dates.js.map +1 -0
- package/esm/date/utils/get-initial-year.d.ts +5 -0
- package/esm/date/utils/get-initial-year.js +18 -0
- package/esm/date/utils/get-initial-year.js.map +1 -0
- package/esm/date/utils/index.d.ts +10 -0
- package/esm/date/utils/index.js +11 -0
- package/esm/date/utils/index.js.map +1 -0
- package/esm/date/utils/is-match.d.ts +4 -0
- package/esm/date/utils/is-match.js +57 -0
- package/esm/date/utils/is-match.js.map +1 -0
- package/esm/date/utils/labels.d.ts +6 -0
- package/esm/date/utils/labels.js +79 -0
- package/esm/date/utils/labels.js.map +1 -0
- package/esm/date/utils/locale.d.ts +2 -0
- package/esm/date/utils/locale.js +15 -0
- package/esm/date/utils/locale.js.map +1 -0
- package/esm/date/utils/navigation.d.ts +2 -0
- package/esm/date/utils/navigation.js +152 -0
- package/esm/date/utils/navigation.js.map +1 -0
- package/esm/date/utils/parse-date.d.ts +3 -0
- package/esm/date/utils/parse-date.js +36 -0
- package/esm/date/utils/parse-date.js.map +1 -0
- package/esm/form/ConfirmationPanel.js +5 -4
- package/esm/form/ConfirmationPanel.js.map +1 -1
- package/esm/index.d.ts +1 -0
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -1
- package/esm/typography/Detail.d.ts +1 -1
- package/package.json +6 -4
- package/src/chat/chat.stories.tsx +15 -15
- package/src/date/DateInput.tsx +167 -0
- package/src/date/datepicker/DatePicker.tsx +253 -0
- package/src/date/datepicker/DatePickerStandalone.tsx +121 -0
- package/src/date/datepicker/DayButton.tsx +26 -0
- package/src/date/datepicker/caption/Caption.tsx +51 -0
- package/src/date/datepicker/caption/DropdownCaption.tsx +98 -0
- package/src/date/datepicker/caption/index.ts +2 -0
- package/src/date/datepicker/datepicker.stories.tsx +235 -0
- package/src/date/hooks/index.ts +8 -0
- package/src/date/hooks/useDateInputContext.tsx +32 -0
- package/src/date/hooks/useDatepicker.tsx +225 -0
- package/src/date/hooks/useMonthPicker.tsx +223 -0
- package/src/date/hooks/useRangeDatepicker.tsx +348 -0
- package/src/date/hooks/useSharedMonthContext.tsx +68 -0
- package/src/date/index.ts +16 -0
- package/src/date/monthpicker/MonthButton.tsx +109 -0
- package/src/date/monthpicker/MonthCaption.tsx +94 -0
- package/src/date/monthpicker/MonthPicker.tsx +204 -0
- package/src/date/monthpicker/MonthPickerStandalone.tsx +87 -0
- package/src/date/monthpicker/MonthSelector.tsx +85 -0
- package/src/date/monthpicker/monthpicker.stories.tsx +128 -0
- package/src/date/utils/__tests__/check-dates.test.ts +47 -0
- package/src/date/utils/__tests__/dates-disabled.test.ts +48 -0
- package/src/date/utils/__tests__/format-dates.test.ts +22 -0
- package/src/date/utils/__tests__/get-dates.test.ts +79 -0
- package/src/date/utils/__tests__/get-initial-year.test.ts +94 -0
- package/src/date/utils/__tests__/is-match.test.ts +42 -0
- package/src/date/utils/__tests__/parse-dates.test.ts +81 -0
- package/src/date/utils/check-dates.ts +17 -0
- package/src/date/utils/dates-disabled.ts +26 -0
- package/src/date/utils/format-date.ts +17 -0
- package/src/date/utils/get-dates.ts +44 -0
- package/src/date/utils/get-initial-year.ts +25 -0
- package/src/date/utils/index.ts +21 -0
- package/src/date/utils/is-match.ts +88 -0
- package/src/date/utils/labels.ts +84 -0
- package/src/date/utils/locale.ts +15 -0
- package/src/date/utils/navigation.ts +292 -0
- package/src/date/utils/parse-date.ts +46 -0
- package/src/form/ConfirmationPanel.tsx +9 -2
- package/src/form/checkbox/Checkbox.test.tsx +2 -2
- package/src/form/radio/radio.stories.tsx +4 -4
- package/src/form/stories/textarea.stories.tsx +1 -3
- package/src/help-text/help-text.stories.tsx +3 -0
- package/src/index.ts +1 -0
- package/src/typography/Detail.tsx +1 -1
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { setYear, startOfMonth } from "date-fns";
|
|
2
|
+
import React, { createContext, useContext, useState } from "react";
|
|
3
|
+
import { useDayPicker } from "react-day-picker";
|
|
4
|
+
import { getInitialYear } from "../utils";
|
|
5
|
+
export const SharedMonthContext = createContext({
|
|
6
|
+
hasDropdown: false,
|
|
7
|
+
year: new Date(),
|
|
8
|
+
toYear: () => null,
|
|
9
|
+
disabled: [],
|
|
10
|
+
onSelect: () => null,
|
|
11
|
+
});
|
|
12
|
+
export const useSharedMonthContext = () => useContext(SharedMonthContext);
|
|
13
|
+
export const SharedMonthProvider = ({ children, dropdownCaption, disabled, selected, onSelect, year: _year, onYearChange, }) => {
|
|
14
|
+
const context = useDayPicker();
|
|
15
|
+
const [year, toYear] = useState(getInitialYear(context));
|
|
16
|
+
const hasDropdown = !!(dropdownCaption && context.fromDate && context.toDate);
|
|
17
|
+
if (context.fromDate &&
|
|
18
|
+
context.toDate &&
|
|
19
|
+
(context === null || context === void 0 ? void 0 : context.fromDate) >= (context === null || context === void 0 ? void 0 : context.toDate)) {
|
|
20
|
+
console.warn("fromDate needs to be before toDate - MonthPicker");
|
|
21
|
+
}
|
|
22
|
+
return (React.createElement(SharedMonthContext.Provider, { value: {
|
|
23
|
+
year: _year !== null && _year !== void 0 ? _year : year,
|
|
24
|
+
toYear: (y) => {
|
|
25
|
+
toYear(y);
|
|
26
|
+
onYearChange === null || onYearChange === void 0 ? void 0 : onYearChange(y);
|
|
27
|
+
},
|
|
28
|
+
hasDropdown,
|
|
29
|
+
disabled,
|
|
30
|
+
selected,
|
|
31
|
+
onSelect: (v) => v
|
|
32
|
+
? onSelect(setYear(startOfMonth(v), (_year !== null && _year !== void 0 ? _year : year).getFullYear()))
|
|
33
|
+
: onSelect(undefined),
|
|
34
|
+
} }, children));
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=useSharedMonthContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSharedMonthContext.js","sourceRoot":"","sources":["../../../src/date/hooks/useSharedMonthContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAW,MAAM,UAAU,CAAC;AAWnD,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAyB;IACtE,WAAW,EAAE,KAAK;IAClB,IAAI,EAAE,IAAI,IAAI,EAAE;IAChB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI;IAClB,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;AAE1E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAClC,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,IAAI,EAAE,KAAK,EACX,YAAY,GACb,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAE/B,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAO,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAE/D,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,eAAe,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9E,IACE,OAAO,CAAC,QAAQ;QAChB,OAAO,CAAC,MAAM;QACd,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,MAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA,EACpC;QACA,OAAO,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;KAClE;IAED,OAAO,CACL,oBAAC,kBAAkB,CAAC,QAAQ,IAC1B,KAAK,EAAE;YACL,IAAI,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI;YACnB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;gBACZ,MAAM,CAAC,CAAC,CAAC,CAAC;gBACV,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAG,CAAC,CAAC,CAAC;YACpB,CAAC;YACD,WAAW;YACX,QAAQ;YACR,QAAQ;YACR,QAAQ,EAAE,CAAC,CAAQ,EAAE,EAAE,CACrB,CAAC;gBACC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;gBACnE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;SAC1B,IAEA,QAAQ,CACmB,CAC/B,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { DateInputProps } from "./DateInput";
|
|
2
|
+
export { DatePickerProps, default as UNSAFE_DatePicker, } from "./datepicker/DatePicker";
|
|
3
|
+
export { DatePickerStandaloneProps } from "./datepicker/DatePickerStandalone";
|
|
4
|
+
export { MonthPickerStandaloneProps } from "./monthpicker/MonthPickerStandalone";
|
|
5
|
+
export { UNSAFE_useDatepicker, UNSAFE_useMonthPicker, UNSAFE_useRangeDatepicker, } from "./hooks";
|
|
6
|
+
export { default as UNSAFE_MonthPicker, MonthPickerProps, } from "./monthpicker/MonthPicker";
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { default as UNSAFE_DatePicker, } from "./datepicker/DatePicker";
|
|
2
|
+
export { UNSAFE_useDatepicker, UNSAFE_useMonthPicker, UNSAFE_useRangeDatepicker, } from "./hooks";
|
|
3
|
+
export { default as UNSAFE_MonthPicker, } from "./monthpicker/MonthPicker";
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/date/index.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,OAAO,IAAI,iBAAiB,GAC7B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,OAAO,IAAI,kBAAkB,GAE9B,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
interface MonthType {
|
|
3
|
+
month: Date;
|
|
4
|
+
months: Date[];
|
|
5
|
+
focus: Date | undefined;
|
|
6
|
+
setFocus: Function;
|
|
7
|
+
tabRoot?: Date;
|
|
8
|
+
setTabRoot: Function;
|
|
9
|
+
}
|
|
10
|
+
export declare const MonthButton: ({ month, months, focus, setFocus, tabRoot, setTabRoot, }: MonthType) => JSX.Element;
|
|
11
|
+
export default MonthButton;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import cl from "clsx";
|
|
2
|
+
import { compareAsc, compareDesc, format, isSameMonth, setYear, } from "date-fns";
|
|
3
|
+
import React, { useEffect, useRef } from "react";
|
|
4
|
+
import { useDayPicker } from "react-day-picker";
|
|
5
|
+
import { useSharedMonthContext } from "../hooks";
|
|
6
|
+
import { dateIsInCurrentMonth, isMatch, nextEnabled } from "../utils";
|
|
7
|
+
const disableMonth = (month, fromDate, toDate) => {
|
|
8
|
+
if (fromDate && toDate) {
|
|
9
|
+
return (compareAsc(month, fromDate) === -1 || compareDesc(month, toDate) === -1);
|
|
10
|
+
}
|
|
11
|
+
else if (fromDate) {
|
|
12
|
+
return compareAsc(month, fromDate) === -1;
|
|
13
|
+
}
|
|
14
|
+
else if (toDate) {
|
|
15
|
+
return compareDesc(month, toDate) === -1;
|
|
16
|
+
}
|
|
17
|
+
return false;
|
|
18
|
+
};
|
|
19
|
+
export const MonthButton = ({ month, months, focus, setFocus, tabRoot, setTabRoot, }) => {
|
|
20
|
+
const ref = useRef(null);
|
|
21
|
+
const { hasDropdown, selected, onSelect, year, toYear, disabled } = useSharedMonthContext();
|
|
22
|
+
const { fromDate, toDate, locale } = useDayPicker();
|
|
23
|
+
const isSelected = selected && isSameMonth(month, selected);
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
if (focus) {
|
|
26
|
+
isSameMonth(month, focus) && ref.current && ref.current.focus();
|
|
27
|
+
setFocus();
|
|
28
|
+
}
|
|
29
|
+
}, [focus, month, setFocus]);
|
|
30
|
+
const isDisabled = isMatch(setYear(month, year.getFullYear()), disabled) ||
|
|
31
|
+
disableMonth(month, fromDate, toDate);
|
|
32
|
+
return (React.createElement("button", { ref: ref, type: "button", onClick: () => onSelect(isSelected ? undefined : month), disabled: isDisabled, className: cl("navds-date__month-button", {
|
|
33
|
+
"rdp-day_today": dateIsInCurrentMonth(month, year),
|
|
34
|
+
"rdp-day_selected": isSelected,
|
|
35
|
+
"rdp-day_disabled": isDisabled,
|
|
36
|
+
}), tabIndex: tabRoot && isSameMonth(month, setYear(tabRoot, year.getFullYear()))
|
|
37
|
+
? 0
|
|
38
|
+
: -1, onKeyDown: (e) => {
|
|
39
|
+
const next = nextEnabled(months, e.key, disabled, month, toYear, year, hasDropdown, fromDate, toDate);
|
|
40
|
+
setFocus(next);
|
|
41
|
+
setTabRoot(next);
|
|
42
|
+
}, onFocus: () => {
|
|
43
|
+
setTabRoot(focus);
|
|
44
|
+
} },
|
|
45
|
+
React.createElement("span", { "aria-hidden": "true" }, format(new Date(month), "LLL", { locale })
|
|
46
|
+
.replace(".", "")
|
|
47
|
+
.substring(0, 3)),
|
|
48
|
+
React.createElement("span", { className: "navds-sr-only" }, format(new Date(month), "LLLL", { locale }))));
|
|
49
|
+
};
|
|
50
|
+
export default MonthButton;
|
|
51
|
+
//# sourceMappingURL=MonthButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MonthButton.js","sourceRoot":"","sources":["../../../src/date/monthpicker/MonthButton.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Left, Right } from "@navikt/ds-icons";
|
|
2
|
+
import { isSameYear, setYear, startOfMonth, startOfYear } from "date-fns";
|
|
3
|
+
import React from "react";
|
|
4
|
+
import { useDayPicker } from "react-day-picker";
|
|
5
|
+
import { Button, Select } from "../..";
|
|
6
|
+
import { useSharedMonthContext } from "../hooks";
|
|
7
|
+
import { hasNextYear, labelNextYear, labelPrevYear } from "../utils";
|
|
8
|
+
export const MonthCaption = () => {
|
|
9
|
+
const { fromDate, toDate, formatters: { formatYearCaption }, locale, } = useDayPicker();
|
|
10
|
+
const { hasDropdown, year, toYear } = useSharedMonthContext();
|
|
11
|
+
const years = [];
|
|
12
|
+
if (hasDropdown && fromDate && toDate) {
|
|
13
|
+
const fromYear = fromDate.getFullYear();
|
|
14
|
+
const toYear = toDate.getFullYear();
|
|
15
|
+
for (let year = fromYear; year <= toYear; year++) {
|
|
16
|
+
years.push(setYear(startOfYear(new Date()), year));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const handleYearChange = (e) => toYear(setYear(startOfMonth(new Date()), Number(e.target.value)));
|
|
20
|
+
const handleButtonClick = (val) => {
|
|
21
|
+
let newMonth;
|
|
22
|
+
if (hasDropdown && hasNextYear(year, years, val)) {
|
|
23
|
+
newMonth = setYear(new Date(), year.getFullYear() + val);
|
|
24
|
+
toYear(newMonth);
|
|
25
|
+
}
|
|
26
|
+
else if (!hasDropdown) {
|
|
27
|
+
const newYear = Number(year.getFullYear() + val);
|
|
28
|
+
newMonth = setYear(year, newYear);
|
|
29
|
+
toYear(newMonth);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
const hasFollowingYear = (value) => {
|
|
33
|
+
return years.some((y) => isSameYear(y, setYear(year, Number(year.getFullYear() + value))));
|
|
34
|
+
};
|
|
35
|
+
return (React.createElement("div", { className: "navds-date__caption" },
|
|
36
|
+
React.createElement(Button, { className: "navds-date__caption-button", disabled: !hasDropdown ? false : !hasFollowingYear(-1), onClick: () => handleButtonClick(-1), "aria-label": labelPrevYear(locale === null || locale === void 0 ? void 0 : locale.code), icon: React.createElement(Left, { "aria-hidden": true }), variant: "tertiary", type: "button" }),
|
|
37
|
+
hasDropdown ? (React.createElement(Select, { label: "velg \u00E5r", hideLabel: true, value: year === null || year === void 0 ? void 0 : year.getFullYear(), onChange: handleYearChange, className: "navds-date__caption__year" }, years.map((year) => (React.createElement("option", { key: year.getFullYear(), value: year.getFullYear() }, formatYearCaption(year, { locale })))))) : (React.createElement("span", { className: "navds-date__year-label", "aria-live": "polite" }, year.getFullYear())),
|
|
38
|
+
React.createElement(Button, { className: "navds-date__caption-button", disabled: !hasDropdown ? false : !hasFollowingYear(1), onClick: () => handleButtonClick(1), "aria-label": labelNextYear(locale === null || locale === void 0 ? void 0 : locale.code), icon: React.createElement(Right, { "aria-hidden": true }), variant: "tertiary", type: "button" })));
|
|
39
|
+
};
|
|
40
|
+
export default MonthCaption;
|
|
41
|
+
//# sourceMappingURL=MonthCaption.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MonthCaption.js","sourceRoot":"","sources":["../../../src/date/monthpicker/MonthCaption.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { DateInputType } from "../DateInput";
|
|
3
|
+
import { Matcher } from "../utils";
|
|
4
|
+
import { MonthPickerStandaloneType } from "./MonthPickerStandalone";
|
|
5
|
+
export interface MonthPickerProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
6
|
+
/**
|
|
7
|
+
* Element monthpicker anchors to. Use <MonthPicker.Input /> for built-in toggle,
|
|
8
|
+
* or make your own with the open/onClose props
|
|
9
|
+
*/
|
|
10
|
+
children?: React.ReactNode;
|
|
11
|
+
/**
|
|
12
|
+
* Classname for datepicker in popover
|
|
13
|
+
*/
|
|
14
|
+
className?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Classname for wrapper
|
|
17
|
+
*/
|
|
18
|
+
wrapperClassName?: string;
|
|
19
|
+
/**
|
|
20
|
+
* The earliest month to start navigation.
|
|
21
|
+
*/
|
|
22
|
+
fromDate?: Date;
|
|
23
|
+
/**
|
|
24
|
+
* The latest day to end navigation.
|
|
25
|
+
*/
|
|
26
|
+
toDate?: Date;
|
|
27
|
+
/**
|
|
28
|
+
* Changes monthpicker locale
|
|
29
|
+
* @default "nb" (norsk bokmål)
|
|
30
|
+
*/
|
|
31
|
+
locale?: "nb" | "nn" | "en";
|
|
32
|
+
/**
|
|
33
|
+
* Display dropdown for choosing year.
|
|
34
|
+
* Needs `fromDate` + `toDate` to work.
|
|
35
|
+
* @default false
|
|
36
|
+
*/
|
|
37
|
+
dropdownCaption?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Apply the disabled modifier to the matching months. Uses a subset of React Day Picker Matcher type.
|
|
40
|
+
* {@link https://react-day-picker.js.org/api/types/Matcher | Matcher type-definition}
|
|
41
|
+
*/
|
|
42
|
+
disabled?: Matcher[];
|
|
43
|
+
/**
|
|
44
|
+
* Controlled selected-month
|
|
45
|
+
*/
|
|
46
|
+
selected?: Date;
|
|
47
|
+
/**
|
|
48
|
+
* Default selected month.
|
|
49
|
+
*/
|
|
50
|
+
defaultSelected?: Date;
|
|
51
|
+
/**
|
|
52
|
+
* Open state for user-controlled state
|
|
53
|
+
* Component controlled by default
|
|
54
|
+
*/
|
|
55
|
+
open?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* onClose callback for user-controlled state
|
|
58
|
+
*/
|
|
59
|
+
onClose?: () => void;
|
|
60
|
+
/**
|
|
61
|
+
* onOpenToggle callback for user-controlled-state
|
|
62
|
+
* only called if `<MonthPicker.Input />` is used
|
|
63
|
+
*/
|
|
64
|
+
onOpenToggle?: () => void;
|
|
65
|
+
/**
|
|
66
|
+
* Callback for user-controlled state
|
|
67
|
+
*/
|
|
68
|
+
onMonthSelect?: Function;
|
|
69
|
+
/**
|
|
70
|
+
* Used to set visible year programmatically
|
|
71
|
+
* Component controlled by default
|
|
72
|
+
*/
|
|
73
|
+
year?: Date;
|
|
74
|
+
/**
|
|
75
|
+
* Event fired when the user navigates between years.
|
|
76
|
+
*/
|
|
77
|
+
onYearChange?: (y?: Date) => void;
|
|
78
|
+
}
|
|
79
|
+
interface MonthPickerComponent extends React.ForwardRefExoticComponent<MonthPickerProps> {
|
|
80
|
+
/**
|
|
81
|
+
* Variant without popover
|
|
82
|
+
*/
|
|
83
|
+
Standalone: MonthPickerStandaloneType;
|
|
84
|
+
/**
|
|
85
|
+
* Built-in Inputfield
|
|
86
|
+
*/
|
|
87
|
+
Input: DateInputType;
|
|
88
|
+
}
|
|
89
|
+
export declare const MonthPicker: MonthPickerComponent;
|
|
90
|
+
export default MonthPicker;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import cl from "clsx";
|
|
2
|
+
import React, { forwardRef, useRef, useState } from "react";
|
|
3
|
+
import { RootProvider } from "react-day-picker";
|
|
4
|
+
import { Popover, useId } from "../..";
|
|
5
|
+
import { MonthPickerInput } from "../DateInput";
|
|
6
|
+
import { DateContext, SharedMonthProvider } from "../hooks";
|
|
7
|
+
import { getLocaleFromString } from "../utils";
|
|
8
|
+
import MonthCaption from "./MonthCaption";
|
|
9
|
+
import MonthPickerStandalone from "./MonthPickerStandalone";
|
|
10
|
+
import MonthSelector from "./MonthSelector";
|
|
11
|
+
export const MonthPicker = forwardRef(({ children, dropdownCaption = false, fromDate, toDate, disabled = [], selected, open: _open, id, onClose, onOpenToggle, locale = "nb", onMonthSelect, className, wrapperClassName, defaultSelected, year, onYearChange, }, ref) => {
|
|
12
|
+
const ariaId = useId(id);
|
|
13
|
+
const [open, setOpen] = useState(_open !== null && _open !== void 0 ? _open : false);
|
|
14
|
+
const wrapperRef = useRef(null);
|
|
15
|
+
const [selectedMonth, setSelectedMonth] = useState(defaultSelected);
|
|
16
|
+
const handleSelect = (month) => {
|
|
17
|
+
var _a;
|
|
18
|
+
setSelectedMonth(month);
|
|
19
|
+
onMonthSelect === null || onMonthSelect === void 0 ? void 0 : onMonthSelect(month);
|
|
20
|
+
month && ((_a = onClose === null || onClose === void 0 ? void 0 : onClose()) !== null && _a !== void 0 ? _a : setOpen(false));
|
|
21
|
+
};
|
|
22
|
+
if (dropdownCaption && (!fromDate || !toDate)) {
|
|
23
|
+
console.warn("Using dropdownCaption required fromDate and toDate");
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
return (React.createElement(DateContext.Provider, { value: {
|
|
27
|
+
open: _open !== null && _open !== void 0 ? _open : open,
|
|
28
|
+
onOpen: () => {
|
|
29
|
+
setOpen((x) => !x);
|
|
30
|
+
onOpenToggle === null || onOpenToggle === void 0 ? void 0 : onOpenToggle();
|
|
31
|
+
},
|
|
32
|
+
ariaId,
|
|
33
|
+
} },
|
|
34
|
+
React.createElement("div", { ref: wrapperRef, className: cl("navds-date__wrapper", wrapperClassName) },
|
|
35
|
+
children,
|
|
36
|
+
(_open !== null && _open !== void 0 ? _open : open) && (React.createElement(Popover, { arrow: false, anchorEl: wrapperRef.current, open: _open !== null && _open !== void 0 ? _open : open, onClose: () => { var _a; return (_a = onClose === null || onClose === void 0 ? void 0 : onClose()) !== null && _a !== void 0 ? _a : setOpen(false); }, placement: "bottom-start", role: "dialog", ref: ref, id: ariaId, className: "navds-date" },
|
|
37
|
+
React.createElement(RootProvider, { locale: getLocaleFromString(locale), selected: selected, toDate: toDate, fromDate: fromDate, month: selected !== null && selected !== void 0 ? selected : selectedMonth },
|
|
38
|
+
React.createElement("div", { className: cl("rdp-month", className) },
|
|
39
|
+
React.createElement(SharedMonthProvider, { dropdownCaption: dropdownCaption, disabled: disabled, selected: selected !== null && selected !== void 0 ? selected : selectedMonth, onSelect: handleSelect, year: year, onYearChange: onYearChange },
|
|
40
|
+
React.createElement(MonthCaption, null),
|
|
41
|
+
React.createElement(MonthSelector, null)))))))));
|
|
42
|
+
});
|
|
43
|
+
MonthPicker.Standalone = MonthPickerStandalone;
|
|
44
|
+
MonthPicker.Input = MonthPickerInput;
|
|
45
|
+
export default MonthPicker;
|
|
46
|
+
//# sourceMappingURL=MonthPicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MonthPicker.js","sourceRoot":"","sources":["../../../src/date/monthpicker/MonthPicker.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { MonthPickerProps } from "./MonthPicker";
|
|
3
|
+
export interface MonthPickerStandaloneProps extends Omit<MonthPickerProps, "open" | "onClose" | "onOpenToggle" | "wrapperClassName"> {
|
|
4
|
+
/**
|
|
5
|
+
* Monthpicker classname
|
|
6
|
+
*/
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare type MonthPickerStandaloneType = React.ForwardRefExoticComponent<MonthPickerStandaloneProps & React.RefAttributes<HTMLDivElement>>;
|
|
10
|
+
export declare const MonthPickerStandalone: React.ForwardRefExoticComponent<MonthPickerStandaloneProps & React.RefAttributes<HTMLDivElement>>;
|
|
11
|
+
export default MonthPickerStandalone;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import cl from "clsx";
|
|
2
|
+
import React, { forwardRef, useState } from "react";
|
|
3
|
+
import { RootProvider } from "react-day-picker";
|
|
4
|
+
import { SharedMonthProvider } from "../hooks";
|
|
5
|
+
import { getLocaleFromString } from "../utils";
|
|
6
|
+
import MonthCaption from "./MonthCaption";
|
|
7
|
+
import MonthSelector from "./MonthSelector";
|
|
8
|
+
export const MonthPickerStandalone = forwardRef(({ dropdownCaption = false, fromDate, toDate, disabled = [], selected, className, locale = "nb", onMonthSelect, defaultSelected, year, onYearChange, }, ref) => {
|
|
9
|
+
const [selectedMonth, setSelectedMonth] = useState(defaultSelected);
|
|
10
|
+
const handleSelect = (month) => {
|
|
11
|
+
setSelectedMonth(month);
|
|
12
|
+
onMonthSelect === null || onMonthSelect === void 0 ? void 0 : onMonthSelect(month);
|
|
13
|
+
};
|
|
14
|
+
if (dropdownCaption && (!fromDate || !toDate)) {
|
|
15
|
+
console.warn("Using dropdownCaption required fromDate and toDate");
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
return (React.createElement("div", { ref: ref, className: cl("navds-date__wrapper", className) },
|
|
19
|
+
React.createElement(RootProvider, { locale: getLocaleFromString(locale), selected: selected !== null && selected !== void 0 ? selected : selectedMonth, toDate: toDate, fromDate: fromDate, month: selected !== null && selected !== void 0 ? selected : selectedMonth },
|
|
20
|
+
React.createElement("div", { className: "navds-date rdp-month" },
|
|
21
|
+
React.createElement(SharedMonthProvider, { dropdownCaption: dropdownCaption, disabled: disabled, selected: selected !== null && selected !== void 0 ? selected : selectedMonth, onSelect: handleSelect, year: year, onYearChange: onYearChange },
|
|
22
|
+
React.createElement(MonthCaption, null),
|
|
23
|
+
React.createElement(MonthSelector, null))))));
|
|
24
|
+
});
|
|
25
|
+
export default MonthPickerStandalone;
|
|
26
|
+
//# sourceMappingURL=MonthPickerStandalone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MonthPickerStandalone.js","sourceRoot":"","sources":["../../../src/date/monthpicker/MonthPickerStandalone.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAiB5C,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAI7C,CACE,EACE,eAAe,GAAG,KAAK,EACvB,QAAQ,EACR,MAAM,EACN,QAAQ,GAAG,EAAE,EACb,QAAQ,EACR,SAAS,EACT,MAAM,GAAG,IAAI,EACb,aAAa,EACb,eAAe,EACf,IAAI,EACJ,YAAY,GACb,EACD,GAAG,EACH,EAAE;IACF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAChD,eAAe,CAChB,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,KAAY,EAAE,EAAE;QACpC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACxB,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAG,KAAK,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,IAAI,eAAe,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,EAAE;QAC7C,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,6BAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC;QAC5D,oBAAC,YAAY,IACX,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,EACnC,QAAQ,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,aAAa,EACnC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,aAAa;YAEhC,6BAAK,SAAS,EAAC,sBAAsB;gBACnC,oBAAC,mBAAmB,IAClB,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,aAAa,EACnC,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY;oBAE1B,oBAAC,YAAY,OAAG;oBAChB,oBAAC,aAAa,OAAG,CACG,CAClB,CACO,CACX,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { isSameMonth, setMonth, setYear, startOfMonth } from "date-fns";
|
|
2
|
+
import React, { useState } from "react";
|
|
3
|
+
import { BodyShort } from "../..";
|
|
4
|
+
import { useSharedMonthContext } from "../hooks";
|
|
5
|
+
import { isMatch } from "../utils";
|
|
6
|
+
import MonthButton from "./MonthButton";
|
|
7
|
+
const getAllMonths = () => {
|
|
8
|
+
const months = [];
|
|
9
|
+
const date = startOfMonth(new Date());
|
|
10
|
+
for (let month = 0; month <= 11; month++) {
|
|
11
|
+
months.push(setMonth(date, month));
|
|
12
|
+
}
|
|
13
|
+
return months;
|
|
14
|
+
};
|
|
15
|
+
export const MonthSelector = () => {
|
|
16
|
+
const [focus, setFocus] = useState();
|
|
17
|
+
const { selected, year, disabled } = useSharedMonthContext();
|
|
18
|
+
const months = getAllMonths();
|
|
19
|
+
const hasSelected = selected &&
|
|
20
|
+
months.some((m) => isSameMonth(setYear(m, year.getFullYear()), selected));
|
|
21
|
+
const getRootFallback = () => {
|
|
22
|
+
const today = startOfMonth(new Date());
|
|
23
|
+
if ((year === null || year === void 0 ? void 0 : year.getFullYear()) === today.getFullYear() &&
|
|
24
|
+
!isMatch(today, disabled)) {
|
|
25
|
+
return today;
|
|
26
|
+
}
|
|
27
|
+
for (let i = 0; i < months.length; i++) {
|
|
28
|
+
const m = months[i];
|
|
29
|
+
if (!isMatch(setYear(m, year.getFullYear()), disabled)) {
|
|
30
|
+
return setYear(m, year.getFullYear());
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
const [tabRoot, setTabRoot] = useState(hasSelected ? selected : getRootFallback());
|
|
35
|
+
if ((tabRoot === null || tabRoot === void 0 ? void 0 : tabRoot.getFullYear()) !== year.getFullYear()) {
|
|
36
|
+
setTabRoot(hasSelected ? selected : getRootFallback());
|
|
37
|
+
}
|
|
38
|
+
const tableMonths = [
|
|
39
|
+
months.slice(0, 4),
|
|
40
|
+
months.slice(4, 8),
|
|
41
|
+
months.slice(8, 12),
|
|
42
|
+
];
|
|
43
|
+
return (React.createElement(BodyShort, { as: "table", className: "rdp-table" },
|
|
44
|
+
React.createElement("tbody", { className: "rdp-tbody" }, tableMonths.map((x, y) => (React.createElement("tr", { className: "rdp-row", key: y }, x.map((month, y) => {
|
|
45
|
+
return (React.createElement("td", { key: month.toDateString(), className: "rdp-cell" },
|
|
46
|
+
React.createElement(MonthButton, { month: setYear(month, year.getFullYear()), months: months, focus: focus, setFocus: setFocus, tabRoot: tabRoot, setTabRoot: setTabRoot })));
|
|
47
|
+
})))))));
|
|
48
|
+
};
|
|
49
|
+
export default MonthSelector;
|
|
50
|
+
//# sourceMappingURL=MonthSelector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MonthSelector.js","sourceRoot":"","sources":["../../../src/date/monthpicker/MonthSelector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { isThisMonth, setYear } from "date-fns";
|
|
2
|
+
export const dateIsInCurrentMonth = (date, dateToCompare) => {
|
|
3
|
+
return isThisMonth(setYear(date, Number(dateToCompare.getFullYear())));
|
|
4
|
+
};
|
|
5
|
+
/** @private */
|
|
6
|
+
export function isValidDate(day) {
|
|
7
|
+
return !isNaN(day.getTime());
|
|
8
|
+
}
|
|
9
|
+
export const hasNextYear = (year, years, val) => {
|
|
10
|
+
return years.some((x) => year.getFullYear() + val === x.getFullYear());
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=check-dates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-dates.js","sourceRoot":"","sources":["../../../src/date/utils/check-dates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEhD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,IAAU,EACV,aAAmB,EACV,EAAE;IACX,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC,CAAC;AAEF,eAAe;AACf,MAAM,UAAU,WAAW,CAAC,GAAS;IACnC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAU,EAAE,KAAa,EAAE,GAAQ,EAAW,EAAE;IAC1E,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACzE,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const disableDate: (disabledSelection: Date | Array<any>, date: Date) => boolean;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { isSameDay } from "date-fns";
|
|
2
|
+
import { isDateRange } from "react-day-picker";
|
|
3
|
+
// TODO: ((date: Date) => boolean)
|
|
4
|
+
export const disableDate = (disabledSelection, date) => {
|
|
5
|
+
let result = false;
|
|
6
|
+
if (disabledSelection instanceof Date) {
|
|
7
|
+
return isSameDay(disabledSelection, date);
|
|
8
|
+
}
|
|
9
|
+
else if (disabledSelection instanceof Array) {
|
|
10
|
+
for (let i = 0; i < disabledSelection.length; i++) {
|
|
11
|
+
const selection = disabledSelection[i];
|
|
12
|
+
if (isDateRange(selection)) {
|
|
13
|
+
if (selection.from && selection.to) {
|
|
14
|
+
result = date >= selection.from && date <= selection.to;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
else if (selection instanceof Date) {
|
|
18
|
+
result = isSameDay(selection, date);
|
|
19
|
+
}
|
|
20
|
+
if (result)
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return result;
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=dates-disabled.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dates-disabled.js","sourceRoot":"","sources":["../../../src/date/utils/dates-disabled.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,kCAAkC;AAClC,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,iBAAoC,EACpC,IAAU,EACD,EAAE;IACX,IAAI,MAAM,GAAY,KAAK,CAAC;IAC5B,IAAI,iBAAiB,YAAY,IAAI,EAAE;QACrC,OAAO,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;KAC3C;SAAM,IAAI,iBAAiB,YAAY,KAAK,EAAE;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjD,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE;gBAC1B,IAAI,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,EAAE,EAAE;oBAClC,MAAM,GAAG,IAAI,IAAI,SAAS,CAAC,IAAI,IAAI,IAAI,IAAI,SAAS,CAAC,EAAE,CAAC;iBACzD;aACF;iBAAM,IAAI,SAAS,YAAY,IAAI,EAAE;gBACpC,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;aACrC;YACD,IAAI,MAAM;gBAAE,MAAM;SACnB;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const formatDateForInput: (date: Date, locale: Locale, type: "date" | "month") => string;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { format } from "date-fns";
|
|
2
|
+
import { INPUT_DATE_STRING_FORMAT_DATE, INPUT_DATE_STRING_FORMAT_MONTH, } from "./parse-date";
|
|
3
|
+
export const formatDateForInput = (date, locale, type) => {
|
|
4
|
+
const INPUT_DATE_STRING_FORMAT = type === "date"
|
|
5
|
+
? INPUT_DATE_STRING_FORMAT_DATE
|
|
6
|
+
: INPUT_DATE_STRING_FORMAT_MONTH;
|
|
7
|
+
return format(date, INPUT_DATE_STRING_FORMAT, { locale });
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=format-date.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-date.js","sourceRoot":"","sources":["../../../src/date/utils/format-date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,cAAc,CAAC;AAEtB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,IAAU,EACV,MAAc,EACd,IAAsB,EACtB,EAAE;IACF,MAAM,wBAAwB,GAC5B,IAAI,KAAK,MAAM;QACb,CAAC,CAAC,6BAA6B;QAC/B,CAAC,CAAC,8BAA8B,CAAC;IACrC,OAAO,MAAM,CAAC,IAAI,EAAE,wBAAwB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAC5D,CAAC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { isSameYear, setMonth, setYear, startOfMonth, startOfYear, } from "date-fns";
|
|
2
|
+
export const getMonths = (start, end, current) => {
|
|
3
|
+
const dropdownMonths = [];
|
|
4
|
+
if (isSameYear(start, end)) {
|
|
5
|
+
const date = startOfMonth(start);
|
|
6
|
+
for (let month = start.getMonth(); month <= end.getMonth(); month++) {
|
|
7
|
+
dropdownMonths.push(setMonth(date, month));
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
else if (isSameYear(current, end)) {
|
|
11
|
+
const date = startOfMonth(new Date());
|
|
12
|
+
for (let month = 0; month <= end.getMonth(); month++) {
|
|
13
|
+
dropdownMonths.push(setMonth(date, month));
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
else if (isSameYear(current, start)) {
|
|
17
|
+
const date = startOfMonth(start);
|
|
18
|
+
for (let month = date.getMonth(); month <= 11; month++) {
|
|
19
|
+
dropdownMonths.push(setMonth(date, month));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
const date = startOfMonth(new Date());
|
|
24
|
+
for (let month = 0; month <= 11; month++) {
|
|
25
|
+
dropdownMonths.push(setMonth(date, month));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return dropdownMonths;
|
|
29
|
+
};
|
|
30
|
+
export const getYears = (start, end) => {
|
|
31
|
+
const years = [];
|
|
32
|
+
const fromYear = start.getFullYear();
|
|
33
|
+
const toYear = end.getFullYear();
|
|
34
|
+
for (let year = fromYear; year <= toYear; year++) {
|
|
35
|
+
years.push(setYear(startOfYear(new Date()), year));
|
|
36
|
+
}
|
|
37
|
+
return years;
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=get-dates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-dates.js","sourceRoot":"","sources":["../../../src/date/utils/get-dates.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,WAAW,GACZ,MAAM,UAAU,CAAC;AAElB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAW,EAAE,GAAS,EAAE,OAAa,EAAU,EAAE;IACzE,MAAM,cAAc,GAAW,EAAE,CAAC;IAElC,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;QAC1B,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE;YACnE,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;SAC5C;KACF;SAAM,IAAI,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;QACnC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACtC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE;YACpD,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;SAC5C;KACF;SAAM,IAAI,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;QACrC,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE;YACtD,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;SAC5C;KACF;SAAM;QACL,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACtC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE;YACxC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;SAC5C;KACF;IACD,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAW,EAAE,GAAS,EAAU,EAAE;IACzD,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACjC,KAAK,IAAI,IAAI,GAAG,QAAQ,EAAE,IAAI,IAAI,MAAM,EAAE,IAAI,EAAE,EAAE;QAChD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;KACpD;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { startOfYear } from "date-fns";
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
*/
|
|
5
|
+
export function getInitialYear(context) {
|
|
6
|
+
const { month, defaultMonth, toDate, fromDate } = context;
|
|
7
|
+
let initialMonth = month || defaultMonth || new Date();
|
|
8
|
+
const isAfter = toDate && toDate.getFullYear() < initialMonth.getFullYear();
|
|
9
|
+
const isBefore = fromDate && fromDate.getFullYear() > initialMonth.getFullYear();
|
|
10
|
+
if (isAfter) {
|
|
11
|
+
initialMonth = toDate;
|
|
12
|
+
}
|
|
13
|
+
if (isBefore) {
|
|
14
|
+
initialMonth = fromDate;
|
|
15
|
+
}
|
|
16
|
+
return startOfYear(initialMonth);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=get-initial-year.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-initial-year.js","sourceRoot":"","sources":["../../../src/date/utils/get-initial-year.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAuC;IACpE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAE1D,IAAI,YAAY,GAAG,KAAK,IAAI,YAAY,IAAI,IAAI,IAAI,EAAE,CAAC;IAEvD,MAAM,OAAO,GAAG,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IAE5E,MAAM,QAAQ,GACZ,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IAElE,IAAI,OAAO,EAAE;QACX,YAAY,GAAG,MAAM,CAAC;KACvB;IACD,IAAI,QAAQ,EAAE;QACZ,YAAY,GAAG,QAAQ,CAAC;KACzB;IAED,OAAO,WAAW,CAAC,YAAY,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { formatDateForInput } from "./format-date";
|
|
2
|
+
export { getMonths, getYears } from "./get-dates";
|
|
3
|
+
export { labelMonthDropdown, labelYearDropdown, labels, labelNextYear, labelPrevYear, } from "./labels";
|
|
4
|
+
export { INPUT_DATE_STRING_FORMAT_DATE, INPUT_DATE_STRING_FORMAT_MONTH, parseDate, } from "./parse-date";
|
|
5
|
+
export { getLocaleFromString } from "./locale";
|
|
6
|
+
export { disableDate } from "./dates-disabled";
|
|
7
|
+
export { dateIsInCurrentMonth, isValidDate, hasNextYear } from "./check-dates";
|
|
8
|
+
export { getInitialYear } from "./get-initial-year";
|
|
9
|
+
export { isMatch, isDateInRange, Matcher } from "./is-match";
|
|
10
|
+
export { nextEnabled } from "./navigation";
|