@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.
Files changed (181) hide show
  1. package/_docs.json +4956 -2568
  2. package/cjs/date/DateInput.js +79 -0
  3. package/cjs/date/datepicker/DatePicker.js +115 -0
  4. package/cjs/date/datepicker/DatePickerStandalone.js +83 -0
  5. package/cjs/date/datepicker/DayButton.js +43 -0
  6. package/cjs/date/datepicker/caption/Caption.js +23 -0
  7. package/cjs/date/datepicker/caption/DropdownCaption.js +38 -0
  8. package/cjs/date/datepicker/caption/index.js +10 -0
  9. package/cjs/date/datepicker/caption/package.json +6 -0
  10. package/cjs/date/hooks/index.js +15 -0
  11. package/cjs/date/hooks/package.json +6 -0
  12. package/cjs/date/hooks/useDateInputContext.js +17 -0
  13. package/cjs/date/hooks/useDatepicker.js +135 -0
  14. package/cjs/date/hooks/useMonthPicker.js +139 -0
  15. package/cjs/date/hooks/useRangeDatepicker.js +215 -0
  16. package/cjs/date/hooks/useSharedMonthContext.js +63 -0
  17. package/cjs/date/index.js +14 -0
  18. package/cjs/date/monthpicker/MonthButton.js +80 -0
  19. package/cjs/date/monthpicker/MonthCaption.js +47 -0
  20. package/cjs/date/monthpicker/MonthPicker.js +74 -0
  21. package/cjs/date/monthpicker/MonthPickerStandalone.js +54 -0
  22. package/cjs/date/monthpicker/MonthSelector.js +79 -0
  23. package/cjs/date/package.json +6 -0
  24. package/cjs/date/utils/check-dates.js +17 -0
  25. package/cjs/date/utils/dates-disabled.js +29 -0
  26. package/cjs/date/utils/format-date.js +12 -0
  27. package/cjs/date/utils/get-dates.js +43 -0
  28. package/cjs/date/utils/get-initial-year.js +21 -0
  29. package/cjs/date/utils/index.js +33 -0
  30. package/cjs/date/utils/is-match.js +61 -0
  31. package/cjs/date/utils/labels.js +85 -0
  32. package/cjs/date/utils/locale.js +21 -0
  33. package/cjs/date/utils/navigation.js +155 -0
  34. package/cjs/date/utils/package.json +6 -0
  35. package/cjs/date/utils/parse-date.js +39 -0
  36. package/cjs/form/ConfirmationPanel.js +4 -3
  37. package/cjs/index.js +1 -0
  38. package/esm/date/DateInput.d.ts +30 -0
  39. package/esm/date/DateInput.js +51 -0
  40. package/esm/date/DateInput.js.map +1 -0
  41. package/esm/date/datepicker/DatePicker.d.ts +95 -0
  42. package/esm/date/datepicker/DatePicker.js +87 -0
  43. package/esm/date/datepicker/DatePicker.js.map +1 -0
  44. package/esm/date/datepicker/DatePickerStandalone.d.ts +12 -0
  45. package/esm/date/datepicker/DatePickerStandalone.js +55 -0
  46. package/esm/date/datepicker/DatePickerStandalone.js.map +1 -0
  47. package/esm/date/datepicker/DayButton.d.ts +3 -0
  48. package/esm/date/datepicker/DayButton.js +17 -0
  49. package/esm/date/datepicker/DayButton.js.map +1 -0
  50. package/esm/date/datepicker/caption/Caption.d.ts +4 -0
  51. package/esm/date/datepicker/caption/Caption.js +17 -0
  52. package/esm/date/datepicker/caption/Caption.js.map +1 -0
  53. package/esm/date/datepicker/caption/DropdownCaption.d.ts +4 -0
  54. package/esm/date/datepicker/caption/DropdownCaption.js +32 -0
  55. package/esm/date/datepicker/caption/DropdownCaption.js.map +1 -0
  56. package/esm/date/datepicker/caption/index.d.ts +2 -0
  57. package/esm/date/datepicker/caption/index.js +3 -0
  58. package/esm/date/datepicker/caption/index.js.map +1 -0
  59. package/esm/date/hooks/index.d.ts +5 -0
  60. package/esm/date/hooks/index.js +6 -0
  61. package/esm/date/hooks/index.js.map +1 -0
  62. package/esm/date/hooks/useDateInputContext.d.ts +18 -0
  63. package/esm/date/hooks/useDateInputContext.js +14 -0
  64. package/esm/date/hooks/useDateInputContext.js.map +1 -0
  65. package/esm/date/hooks/useDatepicker.d.ts +37 -0
  66. package/esm/date/hooks/useDatepicker.js +132 -0
  67. package/esm/date/hooks/useDatepicker.js.map +1 -0
  68. package/esm/date/hooks/useMonthPicker.d.ts +33 -0
  69. package/esm/date/hooks/useMonthPicker.js +136 -0
  70. package/esm/date/hooks/useMonthPicker.js.map +1 -0
  71. package/esm/date/hooks/useRangeDatepicker.d.ts +39 -0
  72. package/esm/date/hooks/useRangeDatepicker.js +212 -0
  73. package/esm/date/hooks/useRangeDatepicker.js.map +1 -0
  74. package/esm/date/hooks/useSharedMonthContext.d.ts +21 -0
  75. package/esm/date/hooks/useSharedMonthContext.js +36 -0
  76. package/esm/date/hooks/useSharedMonthContext.js.map +1 -0
  77. package/esm/date/index.d.ts +6 -0
  78. package/esm/date/index.js +4 -0
  79. package/esm/date/index.js.map +1 -0
  80. package/esm/date/monthpicker/MonthButton.d.ts +11 -0
  81. package/esm/date/monthpicker/MonthButton.js +51 -0
  82. package/esm/date/monthpicker/MonthButton.js.map +1 -0
  83. package/esm/date/monthpicker/MonthCaption.d.ts +3 -0
  84. package/esm/date/monthpicker/MonthCaption.js +41 -0
  85. package/esm/date/monthpicker/MonthCaption.js.map +1 -0
  86. package/esm/date/monthpicker/MonthPicker.d.ts +90 -0
  87. package/esm/date/monthpicker/MonthPicker.js +46 -0
  88. package/esm/date/monthpicker/MonthPicker.js.map +1 -0
  89. package/esm/date/monthpicker/MonthPickerStandalone.d.ts +11 -0
  90. package/esm/date/monthpicker/MonthPickerStandalone.js +26 -0
  91. package/esm/date/monthpicker/MonthPickerStandalone.js.map +1 -0
  92. package/esm/date/monthpicker/MonthSelector.d.ts +3 -0
  93. package/esm/date/monthpicker/MonthSelector.js +50 -0
  94. package/esm/date/monthpicker/MonthSelector.js.map +1 -0
  95. package/esm/date/utils/check-dates.d.ts +4 -0
  96. package/esm/date/utils/check-dates.js +12 -0
  97. package/esm/date/utils/check-dates.js.map +1 -0
  98. package/esm/date/utils/dates-disabled.d.ts +1 -0
  99. package/esm/date/utils/dates-disabled.js +26 -0
  100. package/esm/date/utils/dates-disabled.js.map +1 -0
  101. package/esm/date/utils/format-date.d.ts +1 -0
  102. package/esm/date/utils/format-date.js +9 -0
  103. package/esm/date/utils/format-date.js.map +1 -0
  104. package/esm/date/utils/get-dates.d.ts +2 -0
  105. package/esm/date/utils/get-dates.js +39 -0
  106. package/esm/date/utils/get-dates.js.map +1 -0
  107. package/esm/date/utils/get-initial-year.d.ts +5 -0
  108. package/esm/date/utils/get-initial-year.js +18 -0
  109. package/esm/date/utils/get-initial-year.js.map +1 -0
  110. package/esm/date/utils/index.d.ts +10 -0
  111. package/esm/date/utils/index.js +11 -0
  112. package/esm/date/utils/index.js.map +1 -0
  113. package/esm/date/utils/is-match.d.ts +4 -0
  114. package/esm/date/utils/is-match.js +57 -0
  115. package/esm/date/utils/is-match.js.map +1 -0
  116. package/esm/date/utils/labels.d.ts +6 -0
  117. package/esm/date/utils/labels.js +79 -0
  118. package/esm/date/utils/labels.js.map +1 -0
  119. package/esm/date/utils/locale.d.ts +2 -0
  120. package/esm/date/utils/locale.js +15 -0
  121. package/esm/date/utils/locale.js.map +1 -0
  122. package/esm/date/utils/navigation.d.ts +2 -0
  123. package/esm/date/utils/navigation.js +152 -0
  124. package/esm/date/utils/navigation.js.map +1 -0
  125. package/esm/date/utils/parse-date.d.ts +3 -0
  126. package/esm/date/utils/parse-date.js +36 -0
  127. package/esm/date/utils/parse-date.js.map +1 -0
  128. package/esm/form/ConfirmationPanel.js +5 -4
  129. package/esm/form/ConfirmationPanel.js.map +1 -1
  130. package/esm/index.d.ts +1 -0
  131. package/esm/index.js +1 -0
  132. package/esm/index.js.map +1 -1
  133. package/esm/typography/Detail.d.ts +1 -1
  134. package/package.json +6 -4
  135. package/src/chat/chat.stories.tsx +15 -15
  136. package/src/date/DateInput.tsx +167 -0
  137. package/src/date/datepicker/DatePicker.tsx +253 -0
  138. package/src/date/datepicker/DatePickerStandalone.tsx +121 -0
  139. package/src/date/datepicker/DayButton.tsx +26 -0
  140. package/src/date/datepicker/caption/Caption.tsx +51 -0
  141. package/src/date/datepicker/caption/DropdownCaption.tsx +98 -0
  142. package/src/date/datepicker/caption/index.ts +2 -0
  143. package/src/date/datepicker/datepicker.stories.tsx +235 -0
  144. package/src/date/hooks/index.ts +8 -0
  145. package/src/date/hooks/useDateInputContext.tsx +32 -0
  146. package/src/date/hooks/useDatepicker.tsx +225 -0
  147. package/src/date/hooks/useMonthPicker.tsx +223 -0
  148. package/src/date/hooks/useRangeDatepicker.tsx +348 -0
  149. package/src/date/hooks/useSharedMonthContext.tsx +68 -0
  150. package/src/date/index.ts +16 -0
  151. package/src/date/monthpicker/MonthButton.tsx +109 -0
  152. package/src/date/monthpicker/MonthCaption.tsx +94 -0
  153. package/src/date/monthpicker/MonthPicker.tsx +204 -0
  154. package/src/date/monthpicker/MonthPickerStandalone.tsx +87 -0
  155. package/src/date/monthpicker/MonthSelector.tsx +85 -0
  156. package/src/date/monthpicker/monthpicker.stories.tsx +128 -0
  157. package/src/date/utils/__tests__/check-dates.test.ts +47 -0
  158. package/src/date/utils/__tests__/dates-disabled.test.ts +48 -0
  159. package/src/date/utils/__tests__/format-dates.test.ts +22 -0
  160. package/src/date/utils/__tests__/get-dates.test.ts +79 -0
  161. package/src/date/utils/__tests__/get-initial-year.test.ts +94 -0
  162. package/src/date/utils/__tests__/is-match.test.ts +42 -0
  163. package/src/date/utils/__tests__/parse-dates.test.ts +81 -0
  164. package/src/date/utils/check-dates.ts +17 -0
  165. package/src/date/utils/dates-disabled.ts +26 -0
  166. package/src/date/utils/format-date.ts +17 -0
  167. package/src/date/utils/get-dates.ts +44 -0
  168. package/src/date/utils/get-initial-year.ts +25 -0
  169. package/src/date/utils/index.ts +21 -0
  170. package/src/date/utils/is-match.ts +88 -0
  171. package/src/date/utils/labels.ts +84 -0
  172. package/src/date/utils/locale.ts +15 -0
  173. package/src/date/utils/navigation.ts +292 -0
  174. package/src/date/utils/parse-date.ts +46 -0
  175. package/src/form/ConfirmationPanel.tsx +9 -2
  176. package/src/form/checkbox/Checkbox.test.tsx +2 -2
  177. package/src/form/radio/radio.stories.tsx +4 -4
  178. package/src/form/stories/textarea.stories.tsx +1 -3
  179. package/src/help-text/help-text.stories.tsx +3 -0
  180. package/src/index.ts +1 -0
  181. 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,3 @@
1
+ /// <reference types="react" />
2
+ export declare const MonthCaption: () => JSX.Element;
3
+ export default MonthCaption;
@@ -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,3 @@
1
+ /// <reference types="react" />
2
+ export declare const MonthSelector: () => JSX.Element;
3
+ export default MonthSelector;
@@ -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,4 @@
1
+ export declare const dateIsInCurrentMonth: (date: Date, dateToCompare: Date) => boolean;
2
+ /** @private */
3
+ export declare function isValidDate(day: Date): boolean;
4
+ export declare const hasNextYear: (year: Date, years: Date[], val: any) => boolean;
@@ -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,2 @@
1
+ export declare const getMonths: (start: Date, end: Date, current: Date) => Date[];
2
+ export declare const getYears: (start: Date, end: Date) => Date[];
@@ -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,5 @@
1
+ import { DayPickerContextValue } from "react-day-picker";
2
+ /**
3
+ *
4
+ */
5
+ export declare function getInitialYear(context: Partial<DayPickerContextValue>): Date;
@@ -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";