@navikt/ds-react 7.13.0 → 7.14.0-alpha.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/cjs/date/Date.Dialog.d.ts +18 -0
- package/cjs/date/Date.Dialog.js +67 -0
- package/cjs/date/Date.Dialog.js.map +1 -0
- package/cjs/date/Date.Input.d.ts +50 -0
- package/cjs/date/Date.Input.js +96 -0
- package/cjs/date/Date.Input.js.map +1 -0
- package/cjs/date/Date.locale.d.ts +44 -0
- package/cjs/date/Date.locale.js +57 -0
- package/cjs/date/Date.locale.js.map +1 -0
- package/cjs/date/Date.typeutils.d.ts +14 -0
- package/cjs/date/Date.typeutils.js +15 -0
- package/cjs/date/Date.typeutils.js.map +1 -0
- package/cjs/date/date-utils/calendar-range.d.ts +11 -0
- package/cjs/date/date-utils/calendar-range.js +30 -0
- package/cjs/date/date-utils/calendar-range.js.map +1 -0
- package/cjs/date/date-utils/check-dates.d.ts +8 -0
- package/cjs/date/date-utils/check-dates.js +20 -0
- package/cjs/date/date-utils/check-dates.js.map +1 -0
- package/cjs/date/date-utils/clamp-dates.d.ts +19 -0
- package/cjs/date/date-utils/clamp-dates.js +41 -0
- package/cjs/date/date-utils/clamp-dates.js.map +1 -0
- package/cjs/date/date-utils/dates-disabled.d.ts +1 -0
- package/cjs/date/date-utils/dates-disabled.js +29 -0
- package/cjs/date/date-utils/dates-disabled.js.map +1 -0
- package/cjs/date/date-utils/dropdown-options.d.ts +13 -0
- package/cjs/date/date-utils/dropdown-options.js +45 -0
- package/cjs/date/date-utils/dropdown-options.js.map +1 -0
- package/cjs/date/date-utils/format-date.d.ts +2 -0
- package/cjs/date/date-utils/format-date.js +13 -0
- package/cjs/date/date-utils/format-date.js.map +1 -0
- package/cjs/date/date-utils/index.d.ts +8 -0
- package/cjs/date/date-utils/index.js +27 -0
- package/cjs/date/date-utils/index.js.map +1 -0
- package/cjs/date/date-utils/is-match.d.ts +3 -0
- package/cjs/date/date-utils/is-match.js +61 -0
- package/cjs/date/date-utils/is-match.js.map +1 -0
- package/cjs/date/date-utils/parse-date.d.ts +4 -0
- package/cjs/date/date-utils/parse-date.js +87 -0
- package/cjs/date/date-utils/parse-date.js.map +1 -0
- package/cjs/date/datepicker/DatePicker.d.ts +3 -3
- package/cjs/date/datepicker/DatePicker.js +47 -63
- package/cjs/date/datepicker/DatePicker.js.map +1 -1
- package/cjs/date/datepicker/DatePicker.types.d.ts +108 -0
- package/cjs/date/datepicker/DatePicker.types.js +3 -0
- package/cjs/date/datepicker/DatePicker.types.js.map +1 -0
- package/cjs/date/datepicker/hooks/useDatepicker.d.ts +90 -0
- package/cjs/date/datepicker/hooks/useDatepicker.js +164 -0
- package/cjs/date/datepicker/hooks/useDatepicker.js.map +1 -0
- package/cjs/date/datepicker/hooks/useRangeDatepicker.d.ts +76 -0
- package/cjs/date/datepicker/hooks/useRangeDatepicker.js +322 -0
- package/cjs/date/datepicker/hooks/useRangeDatepicker.js.map +1 -0
- package/cjs/date/datepicker/index.d.ts +4 -3
- package/cjs/date/datepicker/index.js +8 -7
- package/cjs/date/datepicker/index.js.map +1 -1
- package/cjs/date/datepicker/parts/DatePicker.DayButton.d.ts +9 -0
- package/cjs/date/datepicker/parts/DatePicker.DayButton.js +70 -0
- package/cjs/date/datepicker/parts/DatePicker.DayButton.js.map +1 -0
- package/cjs/date/datepicker/parts/DatePicker.Months.d.ts +11 -0
- package/cjs/date/datepicker/parts/DatePicker.Months.js +84 -0
- package/cjs/date/datepicker/parts/DatePicker.Months.js.map +1 -0
- package/cjs/date/datepicker/parts/DatePicker.RDP.d.ts +15 -0
- package/cjs/date/datepicker/parts/DatePicker.RDP.js +103 -0
- package/cjs/date/datepicker/parts/DatePicker.RDP.js.map +1 -0
- package/cjs/date/datepicker/parts/DatePicker.Standalone.d.ts +18 -0
- package/cjs/date/datepicker/parts/DatePicker.Standalone.js +60 -0
- package/cjs/date/datepicker/parts/DatePicker.Standalone.js.map +1 -0
- package/cjs/date/datepicker/parts/DatePicker.WeekNumber.d.ts +9 -0
- package/cjs/date/datepicker/parts/DatePicker.WeekNumber.js +64 -0
- package/cjs/date/datepicker/parts/DatePicker.WeekNumber.js.map +1 -0
- package/cjs/date/datepicker/parts/DatePicker.WeekRow.d.ts +8 -0
- package/cjs/date/datepicker/parts/DatePicker.WeekRow.js +28 -0
- package/cjs/date/datepicker/parts/DatePicker.WeekRow.js.map +1 -0
- package/cjs/date/monthpicker/MonthPicker.context.d.ts +21 -0
- package/cjs/date/monthpicker/MonthPicker.context.js +48 -0
- package/cjs/date/monthpicker/MonthPicker.context.js.map +1 -0
- package/cjs/date/monthpicker/MonthPicker.d.ts +3 -3
- package/cjs/date/monthpicker/MonthPicker.js +34 -43
- package/cjs/date/monthpicker/MonthPicker.js.map +1 -1
- package/cjs/date/monthpicker/MonthPicker.types.d.ts +86 -0
- package/cjs/date/monthpicker/MonthPicker.types.js +3 -0
- package/cjs/date/monthpicker/MonthPicker.types.js.map +1 -0
- package/cjs/date/monthpicker/MonthPicker.util.d.ts +2 -0
- package/cjs/date/monthpicker/MonthPicker.util.js +156 -0
- package/cjs/date/monthpicker/MonthPicker.util.js.map +1 -0
- package/cjs/date/monthpicker/hooks/useMonthPicker.d.ts +85 -0
- package/cjs/date/monthpicker/hooks/useMonthPicker.js +179 -0
- package/cjs/date/monthpicker/hooks/useMonthPicker.js.map +1 -0
- package/cjs/date/monthpicker/index.d.ts +4 -4
- package/cjs/date/monthpicker/index.js +6 -6
- package/cjs/date/monthpicker/index.js.map +1 -1
- package/cjs/date/monthpicker/parts/MonthPicker.Button.d.ts +11 -0
- package/cjs/date/monthpicker/parts/MonthPicker.Button.js +82 -0
- package/cjs/date/monthpicker/parts/MonthPicker.Button.js.map +1 -0
- package/cjs/date/monthpicker/parts/MonthPicker.Caption.d.ts +3 -0
- package/cjs/date/monthpicker/parts/MonthPicker.Caption.js +52 -0
- package/cjs/date/monthpicker/parts/MonthPicker.Caption.js.map +1 -0
- package/cjs/date/monthpicker/parts/MonthPicker.Standalone.d.ts +10 -0
- package/cjs/date/monthpicker/parts/MonthPicker.Standalone.js +51 -0
- package/cjs/date/monthpicker/parts/MonthPicker.Standalone.js.map +1 -0
- package/cjs/date/monthpicker/parts/MonthPicker.Table.d.ts +3 -0
- package/cjs/date/monthpicker/parts/MonthPicker.Table.js +79 -0
- package/cjs/date/monthpicker/parts/MonthPicker.Table.js.map +1 -0
- package/cjs/form/combobox/Combobox.d.ts +1 -1
- package/cjs/form/combobox/Input/InputController.d.ts +1 -1
- package/cjs/modal/Modal.js +2 -2
- package/cjs/modal/Modal.js.map +1 -1
- package/cjs/popover/Popover.js +3 -3
- package/cjs/popover/Popover.js.map +1 -1
- package/cjs/tooltip/Tooltip.js +2 -5
- package/cjs/tooltip/Tooltip.js.map +1 -1
- package/esm/date/Date.Dialog.d.ts +18 -0
- package/esm/date/Date.Dialog.js +38 -0
- package/esm/date/Date.Dialog.js.map +1 -0
- package/esm/date/Date.Input.d.ts +50 -0
- package/esm/date/Date.Input.js +66 -0
- package/esm/date/Date.Input.js.map +1 -0
- package/esm/date/Date.locale.d.ts +44 -0
- package/esm/date/Date.locale.js +47 -0
- package/esm/date/Date.locale.js.map +1 -0
- package/esm/date/Date.typeutils.d.ts +14 -0
- package/esm/date/Date.typeutils.js +10 -0
- package/esm/date/Date.typeutils.js.map +1 -0
- package/esm/date/date-utils/calendar-range.d.ts +11 -0
- package/esm/date/date-utils/calendar-range.js +27 -0
- package/esm/date/date-utils/calendar-range.js.map +1 -0
- package/esm/date/date-utils/check-dates.d.ts +8 -0
- package/esm/date/date-utils/check-dates.js +14 -0
- package/esm/date/date-utils/check-dates.js.map +1 -0
- package/esm/date/date-utils/clamp-dates.d.ts +19 -0
- package/esm/date/date-utils/clamp-dates.js +37 -0
- package/esm/date/date-utils/clamp-dates.js.map +1 -0
- package/esm/date/date-utils/dates-disabled.d.ts +1 -0
- package/esm/date/date-utils/dates-disabled.js +25 -0
- package/esm/date/date-utils/dates-disabled.js.map +1 -0
- package/esm/date/date-utils/dropdown-options.d.ts +13 -0
- package/esm/date/date-utils/dropdown-options.js +41 -0
- package/esm/date/date-utils/dropdown-options.js.map +1 -0
- package/esm/date/date-utils/format-date.d.ts +2 -0
- package/esm/date/date-utils/format-date.js +9 -0
- package/esm/date/date-utils/format-date.js.map +1 -0
- package/esm/date/date-utils/index.d.ts +8 -0
- package/esm/date/date-utils/index.js +9 -0
- package/esm/date/date-utils/index.js.map +1 -0
- package/esm/date/date-utils/is-match.d.ts +3 -0
- package/esm/date/date-utils/is-match.js +57 -0
- package/esm/date/date-utils/is-match.js.map +1 -0
- package/esm/date/date-utils/parse-date.d.ts +4 -0
- package/esm/date/date-utils/parse-date.js +83 -0
- package/esm/date/date-utils/parse-date.js.map +1 -0
- package/esm/date/datepicker/DatePicker.d.ts +3 -3
- package/esm/date/datepicker/DatePicker.js +46 -62
- package/esm/date/datepicker/DatePicker.js.map +1 -1
- package/esm/date/datepicker/DatePicker.types.d.ts +108 -0
- package/esm/date/datepicker/DatePicker.types.js +2 -0
- package/esm/date/datepicker/DatePicker.types.js.map +1 -0
- package/esm/date/datepicker/hooks/useDatepicker.d.ts +90 -0
- package/esm/date/datepicker/hooks/useDatepicker.js +160 -0
- package/esm/date/datepicker/hooks/useDatepicker.js.map +1 -0
- package/esm/date/datepicker/hooks/useRangeDatepicker.d.ts +76 -0
- package/esm/date/datepicker/hooks/useRangeDatepicker.js +318 -0
- package/esm/date/datepicker/hooks/useRangeDatepicker.js.map +1 -0
- package/esm/date/datepicker/index.d.ts +4 -3
- package/esm/date/datepicker/index.js +4 -3
- package/esm/date/datepicker/index.js.map +1 -1
- package/esm/date/datepicker/parts/DatePicker.DayButton.d.ts +9 -0
- package/esm/date/datepicker/parts/DatePicker.DayButton.js +41 -0
- package/esm/date/datepicker/parts/DatePicker.DayButton.js.map +1 -0
- package/esm/date/datepicker/parts/DatePicker.Months.d.ts +11 -0
- package/esm/date/datepicker/parts/DatePicker.Months.js +58 -0
- package/esm/date/datepicker/parts/DatePicker.Months.js.map +1 -0
- package/esm/date/datepicker/parts/DatePicker.RDP.d.ts +15 -0
- package/esm/date/datepicker/parts/DatePicker.RDP.js +74 -0
- package/esm/date/datepicker/parts/DatePicker.RDP.js.map +1 -0
- package/esm/date/datepicker/parts/DatePicker.Standalone.d.ts +18 -0
- package/esm/date/datepicker/parts/DatePicker.Standalone.js +31 -0
- package/esm/date/datepicker/parts/DatePicker.Standalone.js.map +1 -0
- package/esm/date/datepicker/parts/DatePicker.WeekNumber.d.ts +9 -0
- package/esm/date/datepicker/parts/DatePicker.WeekNumber.js +35 -0
- package/esm/date/datepicker/parts/DatePicker.WeekNumber.js.map +1 -0
- package/esm/date/datepicker/parts/DatePicker.WeekRow.d.ts +8 -0
- package/esm/date/datepicker/parts/DatePicker.WeekRow.js +22 -0
- package/esm/date/datepicker/parts/DatePicker.WeekRow.js.map +1 -0
- package/esm/date/monthpicker/MonthPicker.context.d.ts +21 -0
- package/esm/date/monthpicker/MonthPicker.context.js +41 -0
- package/esm/date/monthpicker/MonthPicker.context.js.map +1 -0
- package/esm/date/monthpicker/MonthPicker.d.ts +3 -3
- package/esm/date/monthpicker/MonthPicker.js +31 -40
- package/esm/date/monthpicker/MonthPicker.js.map +1 -1
- package/esm/date/monthpicker/MonthPicker.types.d.ts +86 -0
- package/esm/date/monthpicker/MonthPicker.types.js +2 -0
- package/esm/date/monthpicker/MonthPicker.types.js.map +1 -0
- package/esm/date/monthpicker/MonthPicker.util.d.ts +2 -0
- package/esm/date/monthpicker/MonthPicker.util.js +152 -0
- package/esm/date/monthpicker/MonthPicker.util.js.map +1 -0
- package/esm/date/monthpicker/hooks/useMonthPicker.d.ts +85 -0
- package/esm/date/monthpicker/hooks/useMonthPicker.js +175 -0
- package/esm/date/monthpicker/hooks/useMonthPicker.js.map +1 -0
- package/esm/date/monthpicker/index.d.ts +4 -4
- package/esm/date/monthpicker/index.js +3 -3
- package/esm/date/monthpicker/index.js.map +1 -1
- package/esm/date/monthpicker/parts/MonthPicker.Button.d.ts +11 -0
- package/esm/date/monthpicker/parts/MonthPicker.Button.js +52 -0
- package/esm/date/monthpicker/parts/MonthPicker.Button.js.map +1 -0
- package/esm/date/monthpicker/parts/MonthPicker.Caption.d.ts +3 -0
- package/esm/date/monthpicker/parts/MonthPicker.Caption.js +46 -0
- package/esm/date/monthpicker/parts/MonthPicker.Caption.js.map +1 -0
- package/esm/date/monthpicker/parts/MonthPicker.Standalone.d.ts +10 -0
- package/esm/date/monthpicker/parts/MonthPicker.Standalone.js +22 -0
- package/esm/date/monthpicker/parts/MonthPicker.Standalone.js.map +1 -0
- package/esm/date/monthpicker/parts/MonthPicker.Table.d.ts +3 -0
- package/esm/date/monthpicker/parts/MonthPicker.Table.js +50 -0
- package/esm/date/monthpicker/parts/MonthPicker.Table.js.map +1 -0
- package/esm/form/combobox/Combobox.d.ts +1 -1
- package/esm/form/combobox/Input/InputController.d.ts +1 -1
- package/esm/modal/Modal.js +3 -3
- package/esm/modal/Modal.js.map +1 -1
- package/esm/popover/Popover.js +4 -4
- package/esm/popover/Popover.js.map +1 -1
- package/esm/tooltip/Tooltip.js +2 -5
- package/esm/tooltip/Tooltip.js.map +1 -1
- package/package.json +6 -7
- package/src/date/{parts/DateWrapper.tsx → Date.Dialog.tsx} +12 -9
- package/src/date/{parts/DateInput.tsx → Date.Input.tsx} +30 -5
- package/src/date/{utils/locale.ts → Date.locale.ts} +11 -2
- package/src/date/Date.typeutils.ts +32 -0
- package/src/date/date-utils/calendar-range.test.ts +54 -0
- package/src/date/date-utils/calendar-range.ts +46 -0
- package/src/date/date-utils/check-dates.test.ts +49 -0
- package/src/date/date-utils/check-dates.ts +28 -0
- package/src/date/date-utils/clamp-dates.test.ts +156 -0
- package/src/date/date-utils/clamp-dates.ts +63 -0
- package/src/date/{utils/__tests__ → date-utils}/dates-disabled.test.ts +1 -1
- package/src/date/{utils → date-utils}/dates-disabled.ts +1 -2
- package/src/date/date-utils/dropdown-options.test.ts +143 -0
- package/src/date/date-utils/dropdown-options.ts +79 -0
- package/src/date/{utils/__tests__ → date-utils}/format-dates.test.ts +2 -2
- package/src/date/date-utils/index.ts +16 -0
- package/src/date/{utils/__tests__ → date-utils}/is-match.test.ts +1 -1
- package/src/date/{utils → date-utils}/is-match.ts +2 -11
- package/src/date/{utils/__tests__ → date-utils}/parse-dates.test.ts +2 -1
- package/src/date/datepicker/DatePicker.tsx +67 -92
- package/src/date/datepicker/{types.ts → DatePicker.types.ts} +10 -4
- package/src/date/{hooks → datepicker/hooks}/useDatepicker.tsx +12 -13
- package/src/date/{hooks → datepicker/hooks}/useRangeDatepicker.test.tsx +1 -1
- package/src/date/{hooks → datepicker/hooks}/useRangeDatepicker.tsx +19 -19
- package/src/date/datepicker/index.ts +4 -5
- package/src/date/datepicker/parts/DatePicker.DayButton.tsx +56 -0
- package/src/date/datepicker/parts/DatePicker.Months.tsx +149 -0
- package/src/date/datepicker/parts/DatePicker.RDP.tsx +170 -0
- package/src/date/datepicker/parts/DatePicker.Standalone.tsx +93 -0
- package/src/date/datepicker/parts/DatePicker.WeekNumber.tsx +86 -0
- package/src/date/datepicker/parts/{WeekRow.tsx → DatePicker.WeekRow.tsx} +20 -21
- package/src/date/monthpicker/MonthPicker.context.tsx +103 -0
- package/src/date/monthpicker/MonthPicker.tsx +63 -68
- package/src/date/monthpicker/{types.ts → MonthPicker.types.ts} +1 -1
- package/src/date/{utils/navigation.ts → monthpicker/MonthPicker.util.ts} +2 -1
- package/src/date/{hooks → monthpicker/hooks}/useMonthPicker.tsx +14 -13
- package/src/date/monthpicker/index.ts +4 -4
- package/src/date/monthpicker/{MonthButton.tsx → parts/MonthPicker.Button.tsx} +21 -10
- package/src/date/monthpicker/{MonthCaption.tsx → parts/MonthPicker.Caption.tsx} +20 -21
- package/src/date/monthpicker/parts/MonthPicker.Standalone.tsx +86 -0
- package/src/date/monthpicker/{MonthSelector.tsx → parts/MonthPicker.Table.tsx} +7 -7
- package/src/modal/Modal.tsx +3 -3
- package/src/popover/Popover.tsx +4 -4
- package/src/tooltip/Tooltip.tsx +2 -6
- package/src/date/context/index.ts +0 -9
- package/src/date/context/useDateInputContext.tsx +0 -34
- package/src/date/context/useDateTranslationContext.ts +0 -9
- package/src/date/context/useSharedMonthContext.tsx +0 -68
- package/src/date/datepicker/DatePickerStandalone.tsx +0 -136
- package/src/date/datepicker/datepicker.test.tsx +0 -28
- package/src/date/datepicker/parts/Caption.tsx +0 -54
- package/src/date/datepicker/parts/DayButton.tsx +0 -32
- package/src/date/datepicker/parts/DropdownCaption.tsx +0 -110
- package/src/date/datepicker/parts/HeadRow.tsx +0 -56
- package/src/date/datepicker/parts/Row.tsx +0 -48
- package/src/date/datepicker/parts/TableHead.tsx +0 -17
- package/src/date/datepicker/parts/WeekNumber.tsx +0 -75
- package/src/date/hooks/index.ts +0 -6
- package/src/date/monthpicker/MonthPickerStandalone.tsx +0 -102
- package/src/date/utils/__tests__/check-dates.test.ts +0 -22
- package/src/date/utils/__tests__/get-dates.test.ts +0 -121
- package/src/date/utils/__tests__/get-initial-year.test.ts +0 -83
- package/src/date/utils/__tests__/get-month-weeks.test.ts +0 -116
- package/src/date/utils/check-dates.ts +0 -13
- package/src/date/utils/get-dates.ts +0 -60
- package/src/date/utils/get-initial-year.ts +0 -25
- package/src/date/utils/get-month-weeks.ts +0 -93
- package/src/date/utils/index.ts +0 -18
- /package/src/date/{utils → date-utils}/format-date.ts +0 -0
- /package/src/date/{utils → date-utils}/parse-date.ts +0 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { setYear } from "date-fns";
|
|
2
|
+
import { describe, expect, test } from "vitest";
|
|
3
|
+
import { dateIsInCurrentMonth, isValidDate } from "./check-dates";
|
|
4
|
+
|
|
5
|
+
describe("dateIsInCurrentMonth", () => {
|
|
6
|
+
test("should return true if the date is in the same month and year as the date to compare", () => {
|
|
7
|
+
const date = new Date();
|
|
8
|
+
const dateToCompare = new Date();
|
|
9
|
+
expect(dateIsInCurrentMonth(date, dateToCompare)).toBe(true);
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
test("should return false if the date is not in the same month as the date to compare", () => {
|
|
13
|
+
const date = new Date();
|
|
14
|
+
const dateToCompare = new Date(2023, 9, 1); // October 1, 2023
|
|
15
|
+
expect(dateIsInCurrentMonth(date, dateToCompare)).toBe(false);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
test("should return false if the date is in the same month but different year as the date to compare", () => {
|
|
19
|
+
const date = new Date();
|
|
20
|
+
const dateToCompare = new Date();
|
|
21
|
+
expect(
|
|
22
|
+
dateIsInCurrentMonth(
|
|
23
|
+
date,
|
|
24
|
+
setYear(dateToCompare, dateToCompare.getFullYear() + 1),
|
|
25
|
+
),
|
|
26
|
+
).toBe(false);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
describe("isValidDate", () => {
|
|
31
|
+
test("should return true for a valid date", () => {
|
|
32
|
+
const date = new Date(2023, 9, 15); // October 15, 2023
|
|
33
|
+
expect(isValidDate(date)).toBe(true);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
test("should return false for an invalid date", () => {
|
|
37
|
+
const date = new Date("invalid date");
|
|
38
|
+
expect(isValidDate(date)).toBe(false);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
test("should return false for a date with year less than 1000", () => {
|
|
42
|
+
const date = new Date(999, 9, 15); // October 15, 999
|
|
43
|
+
expect(isValidDate(date)).toBe(false);
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
test("should return false for undefined", () => {
|
|
47
|
+
expect(isValidDate(undefined)).toBe(false);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { differenceInCalendarDays, isThisMonth, setYear } from "date-fns";
|
|
2
|
+
|
|
3
|
+
export const dateIsInCurrentMonth = (
|
|
4
|
+
date: Date,
|
|
5
|
+
dateToCompare: Date,
|
|
6
|
+
): boolean => {
|
|
7
|
+
return isThisMonth(setYear(date, Number(dateToCompare.getFullYear())));
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
/** @private */
|
|
11
|
+
export function isValidDate(day?: Date): boolean {
|
|
12
|
+
return !!(day && !Number.isNaN(day.getTime()) && day.getFullYear() > 999);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function isDateOutsideRange({
|
|
16
|
+
day,
|
|
17
|
+
fromDate,
|
|
18
|
+
toDate,
|
|
19
|
+
}: {
|
|
20
|
+
day: Date;
|
|
21
|
+
fromDate?: Date;
|
|
22
|
+
toDate?: Date;
|
|
23
|
+
}): boolean {
|
|
24
|
+
const isDateAfter = toDate && differenceInCalendarDays(day, toDate) > 0;
|
|
25
|
+
const isDateBefore = fromDate && differenceInCalendarDays(fromDate, day) > 0;
|
|
26
|
+
|
|
27
|
+
return isDateAfter || isDateBefore || false;
|
|
28
|
+
}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { startOfMonth, startOfYear } from "date-fns";
|
|
2
|
+
import { describe, expect, test } from "vitest";
|
|
3
|
+
import { isDateOutsideRange } from "./check-dates";
|
|
4
|
+
import { clampDisplayMonth, clampDisplayYear } from "./clamp-dates";
|
|
5
|
+
|
|
6
|
+
describe("clampDisplayMonth", () => {
|
|
7
|
+
test("should return undefined if month is not provided", () => {
|
|
8
|
+
expect(
|
|
9
|
+
clampDisplayMonth({ start: new Date(), end: new Date() }),
|
|
10
|
+
).toBeUndefined();
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
test("should return the start of the month if month is before start", () => {
|
|
14
|
+
const start = new Date(2023, 5, 1);
|
|
15
|
+
const month = new Date(2023, 4, 1);
|
|
16
|
+
expect(clampDisplayMonth({ month, start, end: new Date() })).toEqual(
|
|
17
|
+
startOfMonth(start),
|
|
18
|
+
);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
test("should return the start of end month if month is after end", () => {
|
|
22
|
+
const end = new Date(2023, 5, 1);
|
|
23
|
+
const month = new Date(2023, 6, 1);
|
|
24
|
+
expect(clampDisplayMonth({ month, start: new Date(), end })).toEqual(
|
|
25
|
+
startOfMonth(end),
|
|
26
|
+
);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
test("should return the start of the month if month is within range", () => {
|
|
30
|
+
const month = new Date(2023, 5, 1);
|
|
31
|
+
expect(
|
|
32
|
+
clampDisplayMonth({
|
|
33
|
+
month,
|
|
34
|
+
start: new Date(2023, 4, 1),
|
|
35
|
+
end: new Date(2023, 6, 1),
|
|
36
|
+
}),
|
|
37
|
+
).toEqual(startOfMonth(month));
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
describe("clampDisplayYear", () => {
|
|
42
|
+
test("should return undefined if month is not provided", () => {
|
|
43
|
+
expect(
|
|
44
|
+
clampDisplayYear({ start: new Date(), end: new Date() }),
|
|
45
|
+
).toBeUndefined();
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
test("should return the start of the year if month is before start year", () => {
|
|
49
|
+
const start = new Date(2023, 0, 1);
|
|
50
|
+
const month = new Date(2022, 11, 1);
|
|
51
|
+
expect(clampDisplayYear({ month, start, end: new Date() })).toEqual(
|
|
52
|
+
startOfYear(start),
|
|
53
|
+
);
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
test("should return the start of the year if month is after end year", () => {
|
|
57
|
+
const end = new Date(2023, 0, 1);
|
|
58
|
+
const month = new Date(2024, 0, 1);
|
|
59
|
+
expect(clampDisplayYear({ month, start: new Date(), end })).toEqual(
|
|
60
|
+
startOfYear(end),
|
|
61
|
+
);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
test("should return the start of the year if month is within range", () => {
|
|
65
|
+
const month = new Date(2023, 5, 1);
|
|
66
|
+
expect(
|
|
67
|
+
clampDisplayYear({
|
|
68
|
+
month,
|
|
69
|
+
start: new Date(2022, 0, 1),
|
|
70
|
+
end: new Date(2024, 0, 1),
|
|
71
|
+
}),
|
|
72
|
+
).toEqual(startOfYear(month));
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
describe("isDateOutsideRange", () => {
|
|
77
|
+
test("returns false when day is within range", () => {
|
|
78
|
+
const day = new Date(2023, 5, 15);
|
|
79
|
+
const fromDate = new Date(2023, 0, 1);
|
|
80
|
+
const toDate = new Date(2023, 11, 31);
|
|
81
|
+
|
|
82
|
+
expect(isDateOutsideRange({ day, fromDate, toDate })).toBe(false);
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
test("returns true when day is after toDate", () => {
|
|
86
|
+
const day = new Date(2024, 0, 1);
|
|
87
|
+
const fromDate = new Date(2023, 0, 1);
|
|
88
|
+
const toDate = new Date(2023, 11, 31);
|
|
89
|
+
|
|
90
|
+
expect(isDateOutsideRange({ day, fromDate, toDate })).toBe(true);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
test("returns true when day is before fromDate", () => {
|
|
94
|
+
const day = new Date(2022, 11, 31);
|
|
95
|
+
const fromDate = new Date(2023, 0, 1);
|
|
96
|
+
const toDate = new Date(2023, 11, 31);
|
|
97
|
+
|
|
98
|
+
expect(isDateOutsideRange({ day, fromDate, toDate })).toBe(true);
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
test("returns false when fromDate and toDate are not provided", () => {
|
|
102
|
+
const day = new Date(2023, 5, 15);
|
|
103
|
+
|
|
104
|
+
expect(isDateOutsideRange({ day })).toBe(false);
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
test("returns true when only toDate is provided and day is after toDate", () => {
|
|
108
|
+
const day = new Date(2024, 0, 1);
|
|
109
|
+
const toDate = new Date(2023, 11, 31);
|
|
110
|
+
|
|
111
|
+
expect(isDateOutsideRange({ day, toDate })).toBe(true);
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
test("returns false when only toDate is provided and day is before toDate", () => {
|
|
115
|
+
const day = new Date(2023, 5, 15);
|
|
116
|
+
const toDate = new Date(2023, 11, 31);
|
|
117
|
+
|
|
118
|
+
expect(isDateOutsideRange({ day, toDate })).toBe(false);
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
test("returns true when only fromDate is provided and day is before fromDate", () => {
|
|
122
|
+
const day = new Date(2022, 11, 31);
|
|
123
|
+
const fromDate = new Date(2023, 0, 1);
|
|
124
|
+
|
|
125
|
+
expect(isDateOutsideRange({ day, fromDate })).toBe(true);
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
test("returns false when only fromDate is provided and day is after fromDate", () => {
|
|
129
|
+
const day = new Date(2023, 5, 15);
|
|
130
|
+
const fromDate = new Date(2023, 0, 1);
|
|
131
|
+
|
|
132
|
+
expect(isDateOutsideRange({ day, fromDate })).toBe(false);
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
test("returns false when day is identical to fromDate", () => {
|
|
136
|
+
const day = new Date(2023, 0, 1);
|
|
137
|
+
const fromDate = new Date(2023, 0, 1);
|
|
138
|
+
|
|
139
|
+
expect(isDateOutsideRange({ day, fromDate })).toBe(false);
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
test("returns false when day is identical to toDate", () => {
|
|
143
|
+
const day = new Date(2023, 11, 31);
|
|
144
|
+
const toDate = new Date(2023, 11, 31);
|
|
145
|
+
|
|
146
|
+
expect(isDateOutsideRange({ day, toDate })).toBe(false);
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
test("returns false when day is identical to both fromDate and toDate", () => {
|
|
150
|
+
const day = new Date(2023, 5, 15);
|
|
151
|
+
const fromDate = new Date(2023, 5, 15);
|
|
152
|
+
const toDate = new Date(2023, 5, 15);
|
|
153
|
+
|
|
154
|
+
expect(isDateOutsideRange({ day, fromDate, toDate })).toBe(false);
|
|
155
|
+
});
|
|
156
|
+
});
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { isAfter, isBefore, startOfMonth, startOfYear } from "date-fns";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Makes sure the month is within the min and max daterange to avoid showing disabled months
|
|
5
|
+
* @note We do not warn the user if start > end now
|
|
6
|
+
*/
|
|
7
|
+
const clampDisplayMonth = ({
|
|
8
|
+
month,
|
|
9
|
+
start,
|
|
10
|
+
end,
|
|
11
|
+
}: {
|
|
12
|
+
month?: Date;
|
|
13
|
+
start?: Date;
|
|
14
|
+
end?: Date;
|
|
15
|
+
}): Date | undefined => {
|
|
16
|
+
if (!month) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
let monthToShow = month;
|
|
21
|
+
|
|
22
|
+
if (start && isBefore(monthToShow, start)) {
|
|
23
|
+
monthToShow = start;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (end && isAfter(monthToShow, end)) {
|
|
27
|
+
monthToShow = end;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return startOfMonth(monthToShow);
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Makes sure the month is within the min and max daterange to avoid showing disabled months
|
|
35
|
+
* @note We do not warn the user if start > end now
|
|
36
|
+
*/
|
|
37
|
+
const clampDisplayYear = ({
|
|
38
|
+
month,
|
|
39
|
+
start,
|
|
40
|
+
end,
|
|
41
|
+
}: {
|
|
42
|
+
month?: Date;
|
|
43
|
+
start?: Date;
|
|
44
|
+
end?: Date;
|
|
45
|
+
}): Date | undefined => {
|
|
46
|
+
if (!month) {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
let monthToShow = month;
|
|
51
|
+
|
|
52
|
+
if (start && monthToShow.getFullYear() < start.getFullYear()) {
|
|
53
|
+
monthToShow = start;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (end && monthToShow.getFullYear() > end.getFullYear()) {
|
|
57
|
+
monthToShow = end;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return startOfYear(monthToShow);
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export { clampDisplayYear, clampDisplayMonth };
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { nb } from "date-fns/locale";
|
|
2
|
+
import { describe, expect, test } from "vitest";
|
|
3
|
+
import { getMonthOptions, getYearOptions } from "./dropdown-options";
|
|
4
|
+
|
|
5
|
+
describe("getYearOptions", () => {
|
|
6
|
+
test("should return undefined if navStart is undefined", () => {
|
|
7
|
+
const result = getYearOptions(undefined, new Date(), nb);
|
|
8
|
+
expect(result).toBeUndefined();
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
test("should return undefined if navEnd is undefined", () => {
|
|
12
|
+
const result = getYearOptions(new Date(), undefined, nb);
|
|
13
|
+
expect(result).toBeUndefined();
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
test("should return the correct year options within the interval", () => {
|
|
17
|
+
const navStart = new Date(2020, 0, 1); // Januar 1, 2020
|
|
18
|
+
const navEnd = new Date(2022, 11, 31); // Desember 31, 2022
|
|
19
|
+
const result = getYearOptions(navStart, navEnd, nb);
|
|
20
|
+
|
|
21
|
+
const expected = [
|
|
22
|
+
{ value: 2020, label: "2020", disabled: false },
|
|
23
|
+
{ value: 2021, label: "2021", disabled: false },
|
|
24
|
+
{ value: 2022, label: "2022", disabled: false },
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
expect(result).toEqual(expected);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
test("should return the correct year options for a single year", () => {
|
|
31
|
+
const navStart = new Date(2021, 0, 1); // Januar 1, 2021
|
|
32
|
+
const navEnd = new Date(2021, 11, 31); // Desember 31, 2021
|
|
33
|
+
const result = getYearOptions(navStart, navEnd, nb);
|
|
34
|
+
|
|
35
|
+
const expected = [{ value: 2021, label: "2021", disabled: false }];
|
|
36
|
+
|
|
37
|
+
expect(result).toEqual(expected);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
test("should return the correct year options when navStart and navEnd are the same date", () => {
|
|
41
|
+
const navStart = new Date(2021, 0, 1); // Januar 1, 2021
|
|
42
|
+
const navEnd = new Date(2021, 0, 1); // Januar 1, 2021
|
|
43
|
+
const result = getYearOptions(navStart, navEnd, nb);
|
|
44
|
+
|
|
45
|
+
const expected = [{ value: 2021, label: "2021", disabled: false }];
|
|
46
|
+
|
|
47
|
+
expect(result).toEqual(expected);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
describe("getMonthOptions", () => {
|
|
52
|
+
test("should return the correct month options for the given year", () => {
|
|
53
|
+
const displayMonth = new Date(2021, 0, 1); // Januar 1, 2021
|
|
54
|
+
const result = getMonthOptions(displayMonth, undefined, undefined, nb);
|
|
55
|
+
|
|
56
|
+
const expected = [
|
|
57
|
+
{ value: 0, label: "januar", disabled: false },
|
|
58
|
+
{ value: 1, label: "februar", disabled: false },
|
|
59
|
+
{ value: 2, label: "mars", disabled: false },
|
|
60
|
+
{ value: 3, label: "april", disabled: false },
|
|
61
|
+
{ value: 4, label: "mai", disabled: false },
|
|
62
|
+
{ value: 5, label: "juni", disabled: false },
|
|
63
|
+
{ value: 6, label: "juli", disabled: false },
|
|
64
|
+
{ value: 7, label: "august", disabled: false },
|
|
65
|
+
{ value: 8, label: "september", disabled: false },
|
|
66
|
+
{ value: 9, label: "oktober", disabled: false },
|
|
67
|
+
{ value: 10, label: "november", disabled: false },
|
|
68
|
+
{ value: 11, label: "desember", disabled: false },
|
|
69
|
+
];
|
|
70
|
+
|
|
71
|
+
expect(result).toEqual(expected);
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
test("should disable months before navStart", () => {
|
|
75
|
+
const displayMonth = new Date(2021, 0, 1); // Januar 1, 2021
|
|
76
|
+
const navStart = new Date(2021, 5, 1); // Juni 1, 2021
|
|
77
|
+
const result = getMonthOptions(displayMonth, navStart, undefined, nb);
|
|
78
|
+
|
|
79
|
+
const expected = [
|
|
80
|
+
{ value: 0, label: "januar", disabled: true },
|
|
81
|
+
{ value: 1, label: "februar", disabled: true },
|
|
82
|
+
{ value: 2, label: "mars", disabled: true },
|
|
83
|
+
{ value: 3, label: "april", disabled: true },
|
|
84
|
+
{ value: 4, label: "mai", disabled: true },
|
|
85
|
+
{ value: 5, label: "juni", disabled: false },
|
|
86
|
+
{ value: 6, label: "juli", disabled: false },
|
|
87
|
+
{ value: 7, label: "august", disabled: false },
|
|
88
|
+
{ value: 8, label: "september", disabled: false },
|
|
89
|
+
{ value: 9, label: "oktober", disabled: false },
|
|
90
|
+
{ value: 10, label: "november", disabled: false },
|
|
91
|
+
{ value: 11, label: "desember", disabled: false },
|
|
92
|
+
];
|
|
93
|
+
|
|
94
|
+
expect(result).toEqual(expected);
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
test("should disable months after navEnd", () => {
|
|
98
|
+
const displayMonth = new Date(2021, 0, 1); // Januar 1, 2021
|
|
99
|
+
const navEnd = new Date(2021, 5, 1); // Juni 1, 2021
|
|
100
|
+
const result = getMonthOptions(displayMonth, undefined, navEnd, nb);
|
|
101
|
+
|
|
102
|
+
const expected = [
|
|
103
|
+
{ value: 0, label: "januar", disabled: false },
|
|
104
|
+
{ value: 1, label: "februar", disabled: false },
|
|
105
|
+
{ value: 2, label: "mars", disabled: false },
|
|
106
|
+
{ value: 3, label: "april", disabled: false },
|
|
107
|
+
{ value: 4, label: "mai", disabled: false },
|
|
108
|
+
{ value: 5, label: "juni", disabled: false },
|
|
109
|
+
{ value: 6, label: "juli", disabled: true },
|
|
110
|
+
{ value: 7, label: "august", disabled: true },
|
|
111
|
+
{ value: 8, label: "september", disabled: true },
|
|
112
|
+
{ value: 9, label: "oktober", disabled: true },
|
|
113
|
+
{ value: 10, label: "november", disabled: true },
|
|
114
|
+
{ value: 11, label: "desember", disabled: true },
|
|
115
|
+
];
|
|
116
|
+
|
|
117
|
+
expect(result).toEqual(expected);
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
test("should disable months before navStart and after navEnd", () => {
|
|
121
|
+
const displayMonth = new Date(2021, 0, 1); // Januar 1, 2021
|
|
122
|
+
const navStart = new Date(2021, 3, 1); // April 1, 2021
|
|
123
|
+
const navEnd = new Date(2021, 8, 1); // September 1, 2021
|
|
124
|
+
const result = getMonthOptions(displayMonth, navStart, navEnd, nb);
|
|
125
|
+
|
|
126
|
+
const expected = [
|
|
127
|
+
{ value: 0, label: "januar", disabled: true },
|
|
128
|
+
{ value: 1, label: "februar", disabled: true },
|
|
129
|
+
{ value: 2, label: "mars", disabled: true },
|
|
130
|
+
{ value: 3, label: "april", disabled: false },
|
|
131
|
+
{ value: 4, label: "mai", disabled: false },
|
|
132
|
+
{ value: 5, label: "juni", disabled: false },
|
|
133
|
+
{ value: 6, label: "juli", disabled: false },
|
|
134
|
+
{ value: 7, label: "august", disabled: false },
|
|
135
|
+
{ value: 8, label: "september", disabled: false },
|
|
136
|
+
{ value: 9, label: "oktober", disabled: true },
|
|
137
|
+
{ value: 10, label: "november", disabled: true },
|
|
138
|
+
{ value: 11, label: "desember", disabled: true },
|
|
139
|
+
];
|
|
140
|
+
|
|
141
|
+
expect(result).toEqual(expected);
|
|
142
|
+
});
|
|
143
|
+
});
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Locale,
|
|
3
|
+
addYears,
|
|
4
|
+
eachMonthOfInterval,
|
|
5
|
+
endOfYear,
|
|
6
|
+
format,
|
|
7
|
+
getMonth,
|
|
8
|
+
getYear,
|
|
9
|
+
isBefore,
|
|
10
|
+
isSameYear,
|
|
11
|
+
startOfMonth,
|
|
12
|
+
startOfYear,
|
|
13
|
+
} from "date-fns";
|
|
14
|
+
|
|
15
|
+
/** Return the months to show in the dropdown. */
|
|
16
|
+
export function getMonthOptions(
|
|
17
|
+
displayMonth: Date,
|
|
18
|
+
navStart: Date | undefined,
|
|
19
|
+
navEnd: Date | undefined,
|
|
20
|
+
locale: Locale,
|
|
21
|
+
):
|
|
22
|
+
| {
|
|
23
|
+
value: number;
|
|
24
|
+
label: string;
|
|
25
|
+
disabled: boolean;
|
|
26
|
+
}[]
|
|
27
|
+
| undefined {
|
|
28
|
+
const months = eachMonthOfInterval({
|
|
29
|
+
start: startOfYear(displayMonth),
|
|
30
|
+
end: endOfYear(displayMonth),
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
const options = months.map((month) => {
|
|
34
|
+
const label = format(month, "LLLL", { locale });
|
|
35
|
+
const value = getMonth(month);
|
|
36
|
+
const disabled =
|
|
37
|
+
(navStart && month < startOfMonth(navStart)) ||
|
|
38
|
+
(navEnd && month > startOfMonth(navEnd)) ||
|
|
39
|
+
false;
|
|
40
|
+
return { value, label, disabled };
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
return options;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/** Return the years to show in the dropdown. */
|
|
47
|
+
export function getYearOptions(
|
|
48
|
+
navStart: Date | undefined,
|
|
49
|
+
navEnd: Date | undefined,
|
|
50
|
+
locale: Locale,
|
|
51
|
+
):
|
|
52
|
+
| {
|
|
53
|
+
value: number;
|
|
54
|
+
label: string;
|
|
55
|
+
disabled: boolean;
|
|
56
|
+
}[]
|
|
57
|
+
| undefined {
|
|
58
|
+
if (!navStart) return undefined;
|
|
59
|
+
if (!navEnd) return undefined;
|
|
60
|
+
|
|
61
|
+
const firstNavYear = startOfYear(navStart);
|
|
62
|
+
const lastNavYear = endOfYear(navEnd);
|
|
63
|
+
const years: Date[] = [];
|
|
64
|
+
|
|
65
|
+
let year = firstNavYear;
|
|
66
|
+
while (isBefore(year, lastNavYear) || isSameYear(year, lastNavYear)) {
|
|
67
|
+
years.push(year);
|
|
68
|
+
year = addYears(year, 1);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return years.map((_year) => {
|
|
72
|
+
const label = format(_year, "yyyy", { locale });
|
|
73
|
+
return {
|
|
74
|
+
value: getYear(_year),
|
|
75
|
+
label,
|
|
76
|
+
disabled: false,
|
|
77
|
+
};
|
|
78
|
+
});
|
|
79
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { nb } from "date-fns/locale";
|
|
2
2
|
import { describe, expect, test } from "vitest";
|
|
3
|
-
import { formatDateForInput } from "
|
|
4
|
-
import { parseDate } from "
|
|
3
|
+
import { formatDateForInput } from "./format-date";
|
|
4
|
+
import { parseDate } from "./parse-date";
|
|
5
5
|
|
|
6
6
|
const parse = (inp: string) => parseDate(inp, new Date(), nb, "date", false);
|
|
7
7
|
const parseTwoDigit = (inp: string) =>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export { formatDateForInput } from "./format-date";
|
|
2
|
+
export {
|
|
3
|
+
INPUT_DATE_STRING_FORMAT_DATE,
|
|
4
|
+
INPUT_DATE_STRING_FORMAT_MONTH,
|
|
5
|
+
parseDate,
|
|
6
|
+
} from "./parse-date";
|
|
7
|
+
export { disableDate } from "./dates-disabled";
|
|
8
|
+
export {
|
|
9
|
+
dateIsInCurrentMonth,
|
|
10
|
+
isValidDate,
|
|
11
|
+
isDateOutsideRange,
|
|
12
|
+
} from "./check-dates";
|
|
13
|
+
export { isMatch, isDateInRange } from "./is-match";
|
|
14
|
+
export { clampDisplayMonth, clampDisplayYear } from "./clamp-dates";
|
|
15
|
+
export { getMonthOptions, getYearOptions } from "./dropdown-options";
|
|
16
|
+
export { calendarRange } from "./calendar-range";
|
|
@@ -5,21 +5,12 @@ import {
|
|
|
5
5
|
isSameMonth,
|
|
6
6
|
} from "date-fns";
|
|
7
7
|
import {
|
|
8
|
-
DateAfter,
|
|
9
|
-
DateBefore,
|
|
10
8
|
DateRange,
|
|
9
|
+
Matcher,
|
|
11
10
|
isDateAfterType,
|
|
12
11
|
isDateBeforeType,
|
|
13
12
|
isDateRange,
|
|
14
|
-
} from "
|
|
15
|
-
|
|
16
|
-
export type Matcher =
|
|
17
|
-
| ((date: Date) => boolean)
|
|
18
|
-
| Date
|
|
19
|
-
| Date[]
|
|
20
|
-
| DateRange
|
|
21
|
-
| DateBefore
|
|
22
|
-
| DateAfter;
|
|
13
|
+
} from "../Date.typeutils";
|
|
23
14
|
|
|
24
15
|
function isDateType(value: unknown): value is Date {
|
|
25
16
|
return isDate(value);
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { getMonth } from "date-fns";
|
|
2
2
|
import { nb } from "date-fns/locale";
|
|
3
3
|
import { describe, expect, test } from "vitest";
|
|
4
|
-
import { isValidDate
|
|
4
|
+
import { isValidDate } from "./check-dates";
|
|
5
|
+
import { parseDate } from "./parse-date";
|
|
5
6
|
|
|
6
7
|
const check = (inp: string) =>
|
|
7
8
|
// eslint-disable-next-line @vitest/valid-expect
|