@navikt/ds-react 1.4.2 → 1.4.3
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 +120 -0
- package/cjs/date/hooks/useDatepicker.js +36 -11
- package/cjs/date/hooks/useMonthPicker.js +34 -10
- package/cjs/date/hooks/useRangeDatepicker.js +181 -65
- package/cjs/date/utils/format-date.js +3 -3
- package/cjs/date/utils/parse-date.js +14 -8
- package/esm/date/hooks/index.d.ts +3 -0
- package/esm/date/hooks/index.js.map +1 -1
- package/esm/date/hooks/useDatepicker.d.ts +18 -0
- package/esm/date/hooks/useDatepicker.js +36 -11
- package/esm/date/hooks/useDatepicker.js.map +1 -1
- package/esm/date/hooks/useMonthPicker.d.ts +17 -0
- package/esm/date/hooks/useMonthPicker.js +34 -10
- package/esm/date/hooks/useMonthPicker.js.map +1 -1
- package/esm/date/hooks/useRangeDatepicker.d.ts +12 -2
- package/esm/date/hooks/useRangeDatepicker.js +181 -65
- package/esm/date/hooks/useRangeDatepicker.js.map +1 -1
- package/esm/date/utils/format-date.d.ts +1 -1
- package/esm/date/utils/format-date.js +3 -3
- package/esm/date/utils/format-date.js.map +1 -1
- package/esm/date/utils/parse-date.d.ts +1 -1
- package/esm/date/utils/parse-date.js +14 -8
- package/esm/date/utils/parse-date.js.map +1 -1
- package/package.json +2 -2
- package/src/date/datepicker/datepicker.stories.tsx +30 -5
- package/src/date/hooks/index.ts +3 -0
- package/src/date/hooks/useDatepicker.tsx +73 -10
- package/src/date/hooks/useMonthPicker.tsx +68 -10
- package/src/date/hooks/useRangeDatepicker.test.tsx +59 -0
- package/src/date/hooks/useRangeDatepicker.tsx +285 -92
- package/src/date/monthpicker/monthpicker.stories.tsx +20 -0
- package/src/date/utils/__tests__/format-dates.test.ts +4 -4
- package/src/date/utils/__tests__/parse-dates.test.ts +0 -40
- package/src/date/utils/format-date.ts +5 -3
- package/src/date/utils/parse-date.ts +18 -9
|
@@ -6,16 +6,10 @@ export const INPUT_DATE_STRING_FORMAT_DATE = "dd.MM.yyyy";
|
|
|
6
6
|
export const INPUT_DATE_STRING_FORMAT_MONTH = "MMMM yyyy";
|
|
7
7
|
|
|
8
8
|
const ALLOWED_INPUT_FORMATS_DATE = [
|
|
9
|
-
"ddMMyy",
|
|
10
|
-
"d.M.yy",
|
|
11
|
-
"dd.MM.yy",
|
|
12
|
-
"dd/MM/yy",
|
|
13
|
-
"dd-MM-yy",
|
|
14
9
|
INPUT_DATE_STRING_FORMAT_DATE,
|
|
15
10
|
"ddMMyyyy",
|
|
16
11
|
"dd/MM/yyyy",
|
|
17
12
|
"dd-MM-yyyy",
|
|
18
|
-
"d.M.yyyy",
|
|
19
13
|
];
|
|
20
14
|
|
|
21
15
|
const ALLOWED_INPUT_FORMATS_MONTH = [
|
|
@@ -28,20 +22,35 @@ const ALLOWED_INPUT_FORMATS_MONTH = [
|
|
|
28
22
|
...ALLOWED_INPUT_FORMATS_DATE,
|
|
29
23
|
];
|
|
30
24
|
|
|
25
|
+
const isTwoDigitYear = (dateString, today, locale, formats) => {
|
|
26
|
+
let parsed;
|
|
27
|
+
const newFormat = formats.map((x) => x.replace("yyyy", "yy"));
|
|
28
|
+
for (const format of newFormat) {
|
|
29
|
+
parsed = parse(dateString, format, today, { locale });
|
|
30
|
+
if (isValidDate(parsed)) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return false;
|
|
35
|
+
};
|
|
36
|
+
|
|
31
37
|
export const parseDate = (
|
|
32
38
|
date: string,
|
|
33
39
|
today: Date,
|
|
34
40
|
locale: Locale,
|
|
35
41
|
type: "date" | "month"
|
|
36
|
-
) => {
|
|
42
|
+
): Date => {
|
|
37
43
|
let parsed;
|
|
38
44
|
const ALLOWED_FORMATS =
|
|
39
45
|
type === "date" ? ALLOWED_INPUT_FORMATS_DATE : ALLOWED_INPUT_FORMATS_MONTH;
|
|
40
46
|
for (const format of ALLOWED_FORMATS) {
|
|
41
47
|
parsed = parse(date, format, today, { locale });
|
|
42
|
-
if (
|
|
48
|
+
if (
|
|
49
|
+
isValidDate(parsed) &&
|
|
50
|
+
!isTwoDigitYear(date, today, locale, ALLOWED_FORMATS)
|
|
51
|
+
) {
|
|
43
52
|
return parsed;
|
|
44
53
|
}
|
|
45
54
|
}
|
|
46
|
-
return
|
|
55
|
+
return new Date("Invalid date");
|
|
47
56
|
};
|