@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
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import cl from "clsx";
|
|
2
|
-
import { isWeekend } from "date-fns";
|
|
3
|
-
import React, { forwardRef } from "react";
|
|
4
|
-
import { DateRange, DayPicker, isMatch } from "react-day-picker";
|
|
5
|
-
import { omit } from "../../util";
|
|
6
|
-
import { useDateLocale, useI18n } from "../../util/i18n/i18n.hooks";
|
|
7
|
-
import { DateTranslationContextProvider } from "../context";
|
|
8
|
-
import { getLocaleFromString, getTranslations } from "../utils";
|
|
9
|
-
import Caption from "./parts/Caption";
|
|
10
|
-
import DropdownCaption from "./parts/DropdownCaption";
|
|
11
|
-
import { HeadRow } from "./parts/HeadRow";
|
|
12
|
-
import Row from "./parts/Row";
|
|
13
|
-
import TableHead from "./parts/TableHead";
|
|
14
|
-
import WeekNumber from "./parts/WeekNumber";
|
|
15
|
-
import {
|
|
16
|
-
DatePickerDefaultProps,
|
|
17
|
-
MultipleMode,
|
|
18
|
-
RangeMode,
|
|
19
|
-
SingleMode,
|
|
20
|
-
} from "./types";
|
|
21
|
-
|
|
22
|
-
interface DatePickerStandaloneDefaultProps
|
|
23
|
-
extends Omit<
|
|
24
|
-
DatePickerDefaultProps,
|
|
25
|
-
"open" | "onClose" | "onOpenToggle" | "wrapperClassName" | "strategy"
|
|
26
|
-
> {
|
|
27
|
-
/**
|
|
28
|
-
* Datepicker classname
|
|
29
|
-
*/
|
|
30
|
-
className?: string;
|
|
31
|
-
/**
|
|
32
|
-
* If datepicker should be fixed to 6 weeks, regardless of actual weeks in month
|
|
33
|
-
* @default true
|
|
34
|
-
*/
|
|
35
|
-
fixedWeeks?: boolean;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
type StandaloneConditionalModeProps = SingleMode | MultipleMode | RangeMode;
|
|
39
|
-
|
|
40
|
-
export type DatePickerStandaloneProps = DatePickerStandaloneDefaultProps &
|
|
41
|
-
StandaloneConditionalModeProps;
|
|
42
|
-
|
|
43
|
-
export type DatePickerStandaloneType = React.ForwardRefExoticComponent<
|
|
44
|
-
DatePickerStandaloneProps & React.RefAttributes<HTMLDivElement>
|
|
45
|
-
>;
|
|
46
|
-
|
|
47
|
-
export const DatePickerStandalone: DatePickerStandaloneType = forwardRef<
|
|
48
|
-
HTMLDivElement,
|
|
49
|
-
DatePickerStandaloneProps
|
|
50
|
-
>(
|
|
51
|
-
(
|
|
52
|
-
{
|
|
53
|
-
className,
|
|
54
|
-
locale,
|
|
55
|
-
translations,
|
|
56
|
-
dropdownCaption,
|
|
57
|
-
disabled = [],
|
|
58
|
-
disableWeekends = false,
|
|
59
|
-
showWeekNumber = false,
|
|
60
|
-
selected,
|
|
61
|
-
defaultSelected,
|
|
62
|
-
onSelect,
|
|
63
|
-
fixedWeeks = false,
|
|
64
|
-
onWeekNumberClick,
|
|
65
|
-
...rest
|
|
66
|
-
},
|
|
67
|
-
ref,
|
|
68
|
-
) => {
|
|
69
|
-
const translate = useI18n(
|
|
70
|
-
"DatePicker",
|
|
71
|
-
translations,
|
|
72
|
-
getTranslations(locale),
|
|
73
|
-
);
|
|
74
|
-
const langProviderLocale = useDateLocale();
|
|
75
|
-
const [selectedDates, setSelectedDates] = React.useState<
|
|
76
|
-
Date | Date[] | DateRange | undefined
|
|
77
|
-
>(defaultSelected);
|
|
78
|
-
|
|
79
|
-
const mode = rest.mode ?? ("single" as any);
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* @param newSelected Date | Date[] | DateRange | undefined
|
|
83
|
-
*/
|
|
84
|
-
const handleSelect = (newSelected) => {
|
|
85
|
-
setSelectedDates(newSelected);
|
|
86
|
-
onSelect?.(newSelected);
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
return (
|
|
90
|
-
<div
|
|
91
|
-
ref={ref}
|
|
92
|
-
className={cl("navds-date__standalone-wrapper", className)}
|
|
93
|
-
>
|
|
94
|
-
<DateTranslationContextProvider translate={translate}>
|
|
95
|
-
<DayPicker
|
|
96
|
-
locale={locale ? getLocaleFromString(locale) : langProviderLocale}
|
|
97
|
-
mode={mode}
|
|
98
|
-
onSelect={handleSelect}
|
|
99
|
-
selected={selected ?? selectedDates}
|
|
100
|
-
components={{
|
|
101
|
-
Caption: dropdownCaption ? DropdownCaption : Caption,
|
|
102
|
-
Head: TableHead,
|
|
103
|
-
HeadRow,
|
|
104
|
-
WeekNumber,
|
|
105
|
-
Row,
|
|
106
|
-
}}
|
|
107
|
-
className="navds-date"
|
|
108
|
-
classNames={{ vhidden: "navds-sr-only" }}
|
|
109
|
-
disabled={(day) => {
|
|
110
|
-
return (
|
|
111
|
-
(disableWeekends && isWeekend(day)) || isMatch(day, disabled)
|
|
112
|
-
);
|
|
113
|
-
}}
|
|
114
|
-
weekStartsOn={1}
|
|
115
|
-
initialFocus={false}
|
|
116
|
-
modifiers={{
|
|
117
|
-
weekend: (day) => disableWeekends && isWeekend(day),
|
|
118
|
-
}}
|
|
119
|
-
modifiersClassNames={{
|
|
120
|
-
weekend: "rdp-day__weekend",
|
|
121
|
-
}}
|
|
122
|
-
showWeekNumber={showWeekNumber}
|
|
123
|
-
onWeekNumberClick={
|
|
124
|
-
mode === "multiple" ? onWeekNumberClick : undefined
|
|
125
|
-
}
|
|
126
|
-
fixedWeeks={fixedWeeks}
|
|
127
|
-
showOutsideDays
|
|
128
|
-
{...omit(rest, ["children", "id"])}
|
|
129
|
-
/>
|
|
130
|
-
</DateTranslationContextProvider>
|
|
131
|
-
</div>
|
|
132
|
-
);
|
|
133
|
-
},
|
|
134
|
-
);
|
|
135
|
-
|
|
136
|
-
export default DatePickerStandalone;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { render, screen } from "@testing-library/react";
|
|
2
|
-
import userEvent from "@testing-library/user-event";
|
|
3
|
-
import React from "react";
|
|
4
|
-
import { describe, test } from "vitest";
|
|
5
|
-
import { useDatepicker } from "../hooks";
|
|
6
|
-
import DatePicker from "./DatePicker";
|
|
7
|
-
|
|
8
|
-
const App = () => {
|
|
9
|
-
const { datepickerProps, inputProps } = useDatepicker({
|
|
10
|
-
fromDate: new Date("Aug 23 2019"),
|
|
11
|
-
onDateChange: console.info,
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
return (
|
|
15
|
-
<DatePicker {...datepickerProps}>
|
|
16
|
-
<DatePicker.Input {...inputProps} label="Velg dato" />
|
|
17
|
-
</DatePicker>
|
|
18
|
-
);
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
describe("Render datepicker", () => {
|
|
22
|
-
// eslint-disable-next-line @vitest/expect-expect
|
|
23
|
-
test("Should not crash when e.target is window", async () => {
|
|
24
|
-
render(<App />);
|
|
25
|
-
|
|
26
|
-
await userEvent.click(screen.getByText("Velg dato"));
|
|
27
|
-
});
|
|
28
|
-
});
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { CaptionProps, useDayPicker, useNavigation } from "react-day-picker";
|
|
3
|
-
import { ArrowLeftIcon, ArrowRightIcon } from "@navikt/aksel-icons";
|
|
4
|
-
import { Button } from "../../../button";
|
|
5
|
-
import { Label } from "../../../typography";
|
|
6
|
-
import { useDateTranslationContext } from "../../context";
|
|
7
|
-
import WeekRow from "./WeekRow";
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* https://github.com/gpbl/react-day-picker/tree/main/src/components/Caption
|
|
11
|
-
*/
|
|
12
|
-
export const DatePickerCaption = ({ displayMonth, id }: CaptionProps) => {
|
|
13
|
-
const { goToMonth, nextMonth, previousMonth } = useNavigation();
|
|
14
|
-
const {
|
|
15
|
-
formatters: { formatCaption },
|
|
16
|
-
locale,
|
|
17
|
-
} = useDayPicker();
|
|
18
|
-
const translate = useDateTranslationContext().translate;
|
|
19
|
-
|
|
20
|
-
return (
|
|
21
|
-
<>
|
|
22
|
-
<div className="navds-date__caption">
|
|
23
|
-
<Button
|
|
24
|
-
variant="tertiary-neutral"
|
|
25
|
-
disabled={!previousMonth}
|
|
26
|
-
onClick={() => previousMonth && goToMonth(previousMonth)}
|
|
27
|
-
icon={<ArrowLeftIcon title={translate("goToPreviousMonth")} />}
|
|
28
|
-
className="navds-date__caption-button"
|
|
29
|
-
type="button"
|
|
30
|
-
/>
|
|
31
|
-
<Label
|
|
32
|
-
as="span"
|
|
33
|
-
aria-live="polite"
|
|
34
|
-
aria-atomic="true"
|
|
35
|
-
id={id}
|
|
36
|
-
className="navds-date__caption-label"
|
|
37
|
-
>
|
|
38
|
-
{formatCaption(displayMonth, { locale })}
|
|
39
|
-
</Label>
|
|
40
|
-
<Button
|
|
41
|
-
icon={<ArrowRightIcon title={translate("goToNextMonth")} />}
|
|
42
|
-
onClick={() => nextMonth && goToMonth(nextMonth)}
|
|
43
|
-
disabled={!nextMonth}
|
|
44
|
-
variant="tertiary-neutral"
|
|
45
|
-
className="navds-date__caption-button"
|
|
46
|
-
type="button"
|
|
47
|
-
/>
|
|
48
|
-
</div>
|
|
49
|
-
<WeekRow displayMonth={displayMonth} />
|
|
50
|
-
</>
|
|
51
|
-
);
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
export default DatePickerCaption;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { format } from "date-fns";
|
|
2
|
-
import React, { useRef } from "react";
|
|
3
|
-
import { Button, DayProps, useDayPicker, useDayRender } from "react-day-picker";
|
|
4
|
-
|
|
5
|
-
const DayButton = (props: DayProps) => {
|
|
6
|
-
const buttonRef = useRef<HTMLButtonElement>(null);
|
|
7
|
-
const dayRender = useDayRender(props.date, props.displayMonth, buttonRef);
|
|
8
|
-
const { locale } = useDayPicker();
|
|
9
|
-
const dateTime = format(props.date, "cccc d", { locale });
|
|
10
|
-
|
|
11
|
-
if (dayRender.isHidden) {
|
|
12
|
-
return <></>;
|
|
13
|
-
}
|
|
14
|
-
if (!dayRender.isButton) {
|
|
15
|
-
return <div {...dayRender.divProps} />;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
return (
|
|
19
|
-
<Button
|
|
20
|
-
name="day"
|
|
21
|
-
ref={buttonRef}
|
|
22
|
-
{...dayRender.buttonProps}
|
|
23
|
-
role={undefined}
|
|
24
|
-
aria-label={dateTime}
|
|
25
|
-
aria-hidden={dayRender.activeModifiers.outside}
|
|
26
|
-
aria-selected={undefined}
|
|
27
|
-
aria-pressed={!!dayRender.activeModifiers.selected}
|
|
28
|
-
/>
|
|
29
|
-
);
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
export default DayButton;
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import { max, min, setMonth, setYear, startOfMonth } from "date-fns";
|
|
2
|
-
import React from "react";
|
|
3
|
-
import { CaptionProps, useDayPicker, useNavigation } from "react-day-picker";
|
|
4
|
-
import { ArrowLeftIcon, ArrowRightIcon } from "@navikt/aksel-icons";
|
|
5
|
-
import { Button } from "../../../button";
|
|
6
|
-
import { Select } from "../../../form/select";
|
|
7
|
-
import { useDateTranslationContext } from "../../context";
|
|
8
|
-
import { getMonths, getYears } from "../../utils";
|
|
9
|
-
import WeekRow from "./WeekRow";
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* https://github.com/gpbl/react-day-picker/tree/main/src/components/CaptionDropdowns
|
|
13
|
-
*/
|
|
14
|
-
export const DropdownCaption = ({ displayMonth, id }: CaptionProps) => {
|
|
15
|
-
const { goToMonth, nextMonth, previousMonth } = useNavigation();
|
|
16
|
-
const {
|
|
17
|
-
fromDate,
|
|
18
|
-
toDate,
|
|
19
|
-
formatters: { formatYearCaption, formatMonthCaption, formatCaption },
|
|
20
|
-
locale,
|
|
21
|
-
} = useDayPicker();
|
|
22
|
-
const translate = useDateTranslationContext().translate;
|
|
23
|
-
|
|
24
|
-
if (!fromDate || !toDate) {
|
|
25
|
-
console.warn("Using dropdownCaption required fromDate and toDate");
|
|
26
|
-
return null;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const handleYearChange: React.ChangeEventHandler<HTMLSelectElement> = (e) => {
|
|
30
|
-
const newMonth = setYear(
|
|
31
|
-
startOfMonth(displayMonth),
|
|
32
|
-
Number(e.target.value),
|
|
33
|
-
);
|
|
34
|
-
goToMonth(startOfMonth(min([max([newMonth, fromDate]), toDate])));
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
const handleMonthChange: React.ChangeEventHandler<HTMLSelectElement> = (e) =>
|
|
38
|
-
goToMonth(setMonth(startOfMonth(displayMonth), Number(e.target.value)));
|
|
39
|
-
|
|
40
|
-
const years = getYears(
|
|
41
|
-
fromDate,
|
|
42
|
-
toDate,
|
|
43
|
-
displayMonth.getFullYear(),
|
|
44
|
-
).reverse();
|
|
45
|
-
const months = getMonths(fromDate, toDate, displayMonth);
|
|
46
|
-
|
|
47
|
-
return (
|
|
48
|
-
<>
|
|
49
|
-
<div className="navds-date__caption">
|
|
50
|
-
<span
|
|
51
|
-
aria-live="polite"
|
|
52
|
-
aria-atomic="true"
|
|
53
|
-
id={id}
|
|
54
|
-
className="navds-sr-only"
|
|
55
|
-
>
|
|
56
|
-
{formatCaption(displayMonth, { locale })}
|
|
57
|
-
</span>
|
|
58
|
-
<Button
|
|
59
|
-
variant="tertiary-neutral"
|
|
60
|
-
disabled={!previousMonth}
|
|
61
|
-
onClick={() => previousMonth && goToMonth(previousMonth)}
|
|
62
|
-
icon={<ArrowLeftIcon title={translate("goToPreviousMonth")} />}
|
|
63
|
-
className="navds-date__caption-button"
|
|
64
|
-
type="button"
|
|
65
|
-
/>
|
|
66
|
-
|
|
67
|
-
<div className="navds-date__caption">
|
|
68
|
-
<Select
|
|
69
|
-
label={translate("month")}
|
|
70
|
-
hideLabel
|
|
71
|
-
className="navds-date__caption__month"
|
|
72
|
-
value={displayMonth.getMonth()}
|
|
73
|
-
onChange={handleMonthChange}
|
|
74
|
-
>
|
|
75
|
-
{months.map((m) => (
|
|
76
|
-
<option key={m.getMonth()} value={m.getMonth()}>
|
|
77
|
-
{formatMonthCaption(m, { locale })}
|
|
78
|
-
</option>
|
|
79
|
-
))}
|
|
80
|
-
</Select>
|
|
81
|
-
<Select
|
|
82
|
-
label={translate("year")}
|
|
83
|
-
hideLabel
|
|
84
|
-
value={displayMonth.getFullYear()}
|
|
85
|
-
onChange={handleYearChange}
|
|
86
|
-
className="navds-date__caption__year"
|
|
87
|
-
>
|
|
88
|
-
{years.map((year) => (
|
|
89
|
-
<option key={year.getFullYear()} value={year.getFullYear()}>
|
|
90
|
-
{formatYearCaption(year, { locale })}
|
|
91
|
-
</option>
|
|
92
|
-
))}
|
|
93
|
-
</Select>
|
|
94
|
-
</div>
|
|
95
|
-
|
|
96
|
-
<Button
|
|
97
|
-
variant="tertiary-neutral"
|
|
98
|
-
icon={<ArrowRightIcon title={translate("goToNextMonth")} />}
|
|
99
|
-
onClick={() => nextMonth && goToMonth(nextMonth)}
|
|
100
|
-
disabled={!nextMonth}
|
|
101
|
-
className="navds-date__caption-button"
|
|
102
|
-
type="button"
|
|
103
|
-
/>
|
|
104
|
-
</div>
|
|
105
|
-
<WeekRow displayMonth={displayMonth} />
|
|
106
|
-
</>
|
|
107
|
-
);
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
export default DropdownCaption;
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { Locale, addDays, startOfWeek } from "date-fns";
|
|
2
|
-
import React from "react";
|
|
3
|
-
import { useDayPicker } from "react-day-picker";
|
|
4
|
-
import { Hide } from "../../../layout/responsive";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* https://github.com/gpbl/react-day-picker/tree/main/src/components/HeadRow
|
|
8
|
-
*/
|
|
9
|
-
export function HeadRow(): JSX.Element {
|
|
10
|
-
const {
|
|
11
|
-
classNames,
|
|
12
|
-
styles,
|
|
13
|
-
showWeekNumber,
|
|
14
|
-
locale,
|
|
15
|
-
formatters: { formatWeekdayName },
|
|
16
|
-
labels: { labelWeekday },
|
|
17
|
-
} = useDayPicker();
|
|
18
|
-
|
|
19
|
-
const weekdays = getWeekdays(locale);
|
|
20
|
-
|
|
21
|
-
return (
|
|
22
|
-
<tr style={styles.head_row} className={classNames.head_row}>
|
|
23
|
-
{showWeekNumber && (
|
|
24
|
-
<Hide below="sm" asChild>
|
|
25
|
-
<td style={styles.head_cell} className={classNames.head_cell}></td>
|
|
26
|
-
</Hide>
|
|
27
|
-
)}
|
|
28
|
-
{weekdays.map((weekday, i) => (
|
|
29
|
-
<th
|
|
30
|
-
key={i}
|
|
31
|
-
scope="col"
|
|
32
|
-
className={classNames.head_cell}
|
|
33
|
-
style={styles.head_cell}
|
|
34
|
-
aria-label={labelWeekday(weekday, { locale })}
|
|
35
|
-
>
|
|
36
|
-
{formatWeekdayName(weekday, { locale })}
|
|
37
|
-
</th>
|
|
38
|
-
))}
|
|
39
|
-
</tr>
|
|
40
|
-
);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Generate a series of 7 days, starting from the week, to use for formatting
|
|
45
|
-
* the weekday names (Monday, Tuesday, etc.).
|
|
46
|
-
*/
|
|
47
|
-
export function getWeekdays(locale?: Locale): Date[] {
|
|
48
|
-
const start = startOfWeek(new Date(), { locale, weekStartsOn: 1 });
|
|
49
|
-
|
|
50
|
-
const days: Date[] = [];
|
|
51
|
-
for (let i = 0; i < 7; i++) {
|
|
52
|
-
const day = addDays(start, i);
|
|
53
|
-
days.push(day);
|
|
54
|
-
}
|
|
55
|
-
return days;
|
|
56
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { getUnixTime } from "date-fns";
|
|
2
|
-
import React from "react";
|
|
3
|
-
import { useDayPicker } from "react-day-picker";
|
|
4
|
-
import { Hide } from "../../../layout/responsive";
|
|
5
|
-
import DayButton from "./DayButton";
|
|
6
|
-
import WeekNumber from "./WeekNumber";
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* The props for the {@link Row} component.
|
|
10
|
-
*/
|
|
11
|
-
export interface RowProps {
|
|
12
|
-
/** The month where the row is displayed. */
|
|
13
|
-
displayMonth: Date;
|
|
14
|
-
/** The number of the week to render. */
|
|
15
|
-
weekNumber: number;
|
|
16
|
-
/** The days contained in the week. */
|
|
17
|
-
dates: Date[];
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* https://github.com/gpbl/react-day-picker/tree/main/src/components/Row
|
|
22
|
-
*/
|
|
23
|
-
function Row(props: RowProps): JSX.Element {
|
|
24
|
-
const { styles, classNames, showWeekNumber } = useDayPicker();
|
|
25
|
-
|
|
26
|
-
return (
|
|
27
|
-
<tr className={classNames.row} style={styles.row}>
|
|
28
|
-
{showWeekNumber && (
|
|
29
|
-
<Hide below="sm" asChild>
|
|
30
|
-
<td className={classNames.cell} style={styles.cell}>
|
|
31
|
-
<WeekNumber number={props.weekNumber} dates={props.dates} />
|
|
32
|
-
</td>
|
|
33
|
-
</Hide>
|
|
34
|
-
)}
|
|
35
|
-
{props.dates.map((date) => (
|
|
36
|
-
<td
|
|
37
|
-
className={classNames.cell}
|
|
38
|
-
style={styles.cell}
|
|
39
|
-
key={getUnixTime(date)}
|
|
40
|
-
>
|
|
41
|
-
<DayButton displayMonth={props.displayMonth} date={date} />
|
|
42
|
-
</td>
|
|
43
|
-
))}
|
|
44
|
-
</tr>
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export default Row;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { HeadRow, useDayPicker } from "react-day-picker";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* https://github.com/gpbl/react-day-picker/tree/main/src/components/Head
|
|
6
|
-
*/
|
|
7
|
-
function TableHead(): JSX.Element {
|
|
8
|
-
const { classNames, styles, components } = useDayPicker();
|
|
9
|
-
const HeadRowComponent = components?.HeadRow ?? HeadRow;
|
|
10
|
-
return (
|
|
11
|
-
<thead style={styles.head} className={classNames.head} aria-hidden>
|
|
12
|
-
<HeadRowComponent />
|
|
13
|
-
</thead>
|
|
14
|
-
);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export default TableHead;
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/* https://github.com/gpbl/react-day-picker/blob/7f78cd5/src/components/WeekNumber/WeekNumber.tsx#L21 */
|
|
2
|
-
import React from "react";
|
|
3
|
-
import { Button as RDPButton, useDayPicker } from "react-day-picker";
|
|
4
|
-
import { Button } from "../../../button";
|
|
5
|
-
import { useThemeInternal } from "../../../theme/Theme";
|
|
6
|
-
import { Detail } from "../../../typography";
|
|
7
|
-
import { useDateTranslationContext } from "../../context";
|
|
8
|
-
|
|
9
|
-
export interface WeekNumberProps {
|
|
10
|
-
/** The number of the week. */
|
|
11
|
-
number: number;
|
|
12
|
-
/** The dates in the week. */
|
|
13
|
-
dates: Date[];
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* https://github.com/gpbl/react-day-picker/tree/main/src/components/WeekNumber
|
|
18
|
-
*/
|
|
19
|
-
function WeekNumber({
|
|
20
|
-
number: weekNumber,
|
|
21
|
-
dates,
|
|
22
|
-
}: WeekNumberProps): JSX.Element {
|
|
23
|
-
const { onWeekNumberClick, styles, classNames } = useDayPicker();
|
|
24
|
-
const themeContext = useThemeInternal(false);
|
|
25
|
-
const translate = useDateTranslationContext().translate;
|
|
26
|
-
|
|
27
|
-
if (!onWeekNumberClick) {
|
|
28
|
-
return (
|
|
29
|
-
<Detail
|
|
30
|
-
as="span"
|
|
31
|
-
textColor="subtle"
|
|
32
|
-
className={classNames.weeknumber}
|
|
33
|
-
style={styles.weeknumber}
|
|
34
|
-
aria-label={translate("weekNumber", { week: weekNumber })}
|
|
35
|
-
>
|
|
36
|
-
{weekNumber}
|
|
37
|
-
</Detail>
|
|
38
|
-
);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
if (themeContext) {
|
|
42
|
-
return (
|
|
43
|
-
<Button
|
|
44
|
-
variant="secondary-neutral"
|
|
45
|
-
size="small"
|
|
46
|
-
name="week-number"
|
|
47
|
-
aria-label={translate("selectWeekNumber", { week: weekNumber })}
|
|
48
|
-
style={styles.weeknumber}
|
|
49
|
-
className="navds-date__weeknumber"
|
|
50
|
-
onClick={(event) => {
|
|
51
|
-
onWeekNumberClick(weekNumber, dates, event);
|
|
52
|
-
}}
|
|
53
|
-
icon={
|
|
54
|
-
<span className="navds-date__weeknumber-number">{weekNumber}</span>
|
|
55
|
-
}
|
|
56
|
-
/>
|
|
57
|
-
);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
return (
|
|
61
|
-
<RDPButton
|
|
62
|
-
name="week-number"
|
|
63
|
-
aria-label={translate("selectWeekNumber", { week: weekNumber })}
|
|
64
|
-
style={styles.weeknumber}
|
|
65
|
-
className={classNames.weeknumber}
|
|
66
|
-
onClick={(event) => {
|
|
67
|
-
onWeekNumberClick(weekNumber, dates, event);
|
|
68
|
-
}}
|
|
69
|
-
>
|
|
70
|
-
{weekNumber}
|
|
71
|
-
</RDPButton>
|
|
72
|
-
);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
export default WeekNumber;
|
package/src/date/hooks/index.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { useDatepicker } from "./useDatepicker";
|
|
2
|
-
export type { DateValidationT } from "./useDatepicker";
|
|
3
|
-
export { useRangeDatepicker } from "./useRangeDatepicker";
|
|
4
|
-
export type { RangeValidationT } from "./useRangeDatepicker";
|
|
5
|
-
export { useMonthpicker } from "./useMonthPicker";
|
|
6
|
-
export type { MonthValidationT } from "./useMonthPicker";
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import cl from "clsx";
|
|
2
|
-
import React, { forwardRef, useState } from "react";
|
|
3
|
-
import { DayPickerProvider } from "react-day-picker";
|
|
4
|
-
import { useDateLocale, useI18n } from "../../util/i18n/i18n.hooks";
|
|
5
|
-
import {
|
|
6
|
-
DateTranslationContextProvider,
|
|
7
|
-
SharedMonthProvider,
|
|
8
|
-
} from "../context";
|
|
9
|
-
import { getLocaleFromString, getTranslations } from "../utils";
|
|
10
|
-
import MonthCaption from "./MonthCaption";
|
|
11
|
-
import MonthSelector from "./MonthSelector";
|
|
12
|
-
import { MonthPickerProps } from "./types";
|
|
13
|
-
|
|
14
|
-
export interface MonthPickerStandaloneProps
|
|
15
|
-
extends Omit<
|
|
16
|
-
MonthPickerProps,
|
|
17
|
-
"open" | "onClose" | "onOpenToggle" | "wrapperClassName" | "strategy"
|
|
18
|
-
> {
|
|
19
|
-
/**
|
|
20
|
-
* Monthpicker classname
|
|
21
|
-
*/
|
|
22
|
-
className?: string;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export type MonthPickerStandaloneType = React.ForwardRefExoticComponent<
|
|
26
|
-
MonthPickerStandaloneProps & React.RefAttributes<HTMLDivElement>
|
|
27
|
-
>;
|
|
28
|
-
|
|
29
|
-
export const MonthPickerStandalone = forwardRef<
|
|
30
|
-
HTMLDivElement,
|
|
31
|
-
MonthPickerStandaloneProps
|
|
32
|
-
>(
|
|
33
|
-
(
|
|
34
|
-
{
|
|
35
|
-
dropdownCaption = false,
|
|
36
|
-
fromDate,
|
|
37
|
-
toDate,
|
|
38
|
-
disabled = [],
|
|
39
|
-
selected,
|
|
40
|
-
className,
|
|
41
|
-
locale,
|
|
42
|
-
translations,
|
|
43
|
-
onMonthSelect,
|
|
44
|
-
defaultSelected,
|
|
45
|
-
year,
|
|
46
|
-
onYearChange,
|
|
47
|
-
},
|
|
48
|
-
ref,
|
|
49
|
-
) => {
|
|
50
|
-
const translate = useI18n(
|
|
51
|
-
"DatePicker",
|
|
52
|
-
translations,
|
|
53
|
-
getTranslations(locale),
|
|
54
|
-
);
|
|
55
|
-
const langProviderLocale = useDateLocale();
|
|
56
|
-
const [selectedMonth, setSelectedMonth] = useState<Date | undefined>(
|
|
57
|
-
defaultSelected,
|
|
58
|
-
);
|
|
59
|
-
|
|
60
|
-
const handleSelect = (month?: Date) => {
|
|
61
|
-
setSelectedMonth(month);
|
|
62
|
-
onMonthSelect?.(month);
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
if (dropdownCaption && (!fromDate || !toDate)) {
|
|
66
|
-
console.warn("Using dropdownCaption required fromDate and toDate");
|
|
67
|
-
return null;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return (
|
|
71
|
-
<div ref={ref} className={cl("navds-date__wrapper", className)}>
|
|
72
|
-
<DateTranslationContextProvider translate={translate}>
|
|
73
|
-
<DayPickerProvider
|
|
74
|
-
initialProps={{
|
|
75
|
-
locale: locale ? getLocaleFromString(locale) : langProviderLocale,
|
|
76
|
-
selected: selected ?? selectedMonth,
|
|
77
|
-
toDate,
|
|
78
|
-
fromDate,
|
|
79
|
-
month: selected ?? selectedMonth,
|
|
80
|
-
}}
|
|
81
|
-
>
|
|
82
|
-
<div className="navds-date rdp-month">
|
|
83
|
-
<SharedMonthProvider
|
|
84
|
-
dropdownCaption={dropdownCaption}
|
|
85
|
-
disabled={disabled}
|
|
86
|
-
selected={selected ?? selectedMonth}
|
|
87
|
-
onSelect={handleSelect}
|
|
88
|
-
year={year}
|
|
89
|
-
onYearChange={onYearChange}
|
|
90
|
-
>
|
|
91
|
-
<MonthCaption />
|
|
92
|
-
<MonthSelector />
|
|
93
|
-
</SharedMonthProvider>
|
|
94
|
-
</div>
|
|
95
|
-
</DayPickerProvider>
|
|
96
|
-
</DateTranslationContextProvider>
|
|
97
|
-
</div>
|
|
98
|
-
);
|
|
99
|
-
},
|
|
100
|
-
);
|
|
101
|
-
|
|
102
|
-
export default MonthPickerStandalone;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { describe, expect, test } from "vitest";
|
|
2
|
-
import { dateIsInCurrentMonth } from "..";
|
|
3
|
-
|
|
4
|
-
const selectedDate = new Date("Feb 1 1994");
|
|
5
|
-
|
|
6
|
-
describe("Returns if date is in current month", () => {
|
|
7
|
-
test("Date should be within current month (true)", () => {
|
|
8
|
-
expect(dateIsInCurrentMonth(new Date(), new Date())).toBeTruthy();
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
test("Date should not be within current month (false)", () => {
|
|
12
|
-
expect(
|
|
13
|
-
dateIsInCurrentMonth(new Date("Sep 2 2021"), selectedDate),
|
|
14
|
-
).toBeFalsy();
|
|
15
|
-
expect(
|
|
16
|
-
dateIsInCurrentMonth(new Date("Sep 1 2021"), selectedDate),
|
|
17
|
-
).toBeFalsy();
|
|
18
|
-
expect(
|
|
19
|
-
dateIsInCurrentMonth(new Date("Sep 30 2021"), selectedDate),
|
|
20
|
-
).toBeFalsy();
|
|
21
|
-
});
|
|
22
|
-
});
|