@navikt/ds-react 1.2.2 → 1.3.0-alpha.0

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 (134) hide show
  1. package/_docs.json +1119 -319
  2. package/cjs/datepicker/DatePicker.js +122 -0
  3. package/cjs/datepicker/DatePickerInput.js +68 -0
  4. package/cjs/datepicker/DatePickerStandalone.js +80 -0
  5. package/cjs/datepicker/caption/Caption.js +23 -0
  6. package/cjs/datepicker/caption/DropdownCaption.js +36 -0
  7. package/cjs/datepicker/caption/index.js +10 -0
  8. package/cjs/datepicker/caption/package.json +6 -0
  9. package/cjs/datepicker/hooks/index.js +7 -0
  10. package/cjs/datepicker/hooks/package.json +6 -0
  11. package/cjs/datepicker/hooks/useDatepicker.js +101 -0
  12. package/cjs/datepicker/hooks/useRangeDatepicker.js +174 -0
  13. package/cjs/datepicker/index.js +11 -0
  14. package/cjs/datepicker/package.json +6 -0
  15. package/cjs/datepicker/utils/dates-disabled.js +29 -0
  16. package/cjs/datepicker/utils/format-date.js +7 -0
  17. package/cjs/datepicker/utils/get-dates.js +43 -0
  18. package/cjs/datepicker/utils/index.js +19 -0
  19. package/cjs/datepicker/utils/labels.js +59 -0
  20. package/cjs/datepicker/utils/locale.js +21 -0
  21. package/cjs/datepicker/utils/package.json +6 -0
  22. package/cjs/datepicker/utils/parse-date.js +29 -0
  23. package/cjs/datepicker/utils/valid-date.js +8 -0
  24. package/cjs/index.js +1 -0
  25. package/cjs/monthpicker/MonthPicker.js +112 -0
  26. package/cjs/monthpicker/index.js +8 -0
  27. package/cjs/monthpicker/package.json +6 -0
  28. package/cjs/monthpicker/utils/check-dates.js +12 -0
  29. package/cjs/monthpicker/utils/handle-selected.js +17 -0
  30. package/esm/chat/Chat.d.ts +1 -1
  31. package/esm/datepicker/DatePicker.d.ts +107 -0
  32. package/esm/datepicker/DatePicker.js +94 -0
  33. package/esm/datepicker/DatePicker.js.map +1 -0
  34. package/esm/datepicker/DatePickerInput.d.ts +25 -0
  35. package/esm/datepicker/DatePickerInput.js +40 -0
  36. package/esm/datepicker/DatePickerInput.js.map +1 -0
  37. package/esm/datepicker/DatePickerStandalone.d.ts +12 -0
  38. package/esm/datepicker/DatePickerStandalone.js +52 -0
  39. package/esm/datepicker/DatePickerStandalone.js.map +1 -0
  40. package/esm/datepicker/caption/Caption.d.ts +4 -0
  41. package/esm/datepicker/caption/Caption.js +17 -0
  42. package/esm/datepicker/caption/Caption.js.map +1 -0
  43. package/esm/datepicker/caption/DropdownCaption.d.ts +4 -0
  44. package/esm/datepicker/caption/DropdownCaption.js +30 -0
  45. package/esm/datepicker/caption/DropdownCaption.js.map +1 -0
  46. package/esm/datepicker/caption/index.d.ts +2 -0
  47. package/esm/datepicker/caption/index.js +3 -0
  48. package/esm/datepicker/caption/index.js.map +1 -0
  49. package/esm/datepicker/hooks/index.d.ts +2 -0
  50. package/esm/datepicker/hooks/index.js +3 -0
  51. package/esm/datepicker/hooks/index.js.map +1 -0
  52. package/esm/datepicker/hooks/useDatepicker.d.ts +37 -0
  53. package/esm/datepicker/hooks/useDatepicker.js +98 -0
  54. package/esm/datepicker/hooks/useDatepicker.js.map +1 -0
  55. package/esm/datepicker/hooks/useRangeDatepicker.d.ts +36 -0
  56. package/esm/datepicker/hooks/useRangeDatepicker.js +171 -0
  57. package/esm/datepicker/hooks/useRangeDatepicker.js.map +1 -0
  58. package/esm/datepicker/index.d.ts +5 -0
  59. package/esm/datepicker/index.js +3 -0
  60. package/esm/datepicker/index.js.map +1 -0
  61. package/esm/datepicker/utils/dates-disabled.d.ts +1 -0
  62. package/esm/datepicker/utils/dates-disabled.js +26 -0
  63. package/esm/datepicker/utils/dates-disabled.js.map +1 -0
  64. package/esm/datepicker/utils/format-date.d.ts +1 -0
  65. package/esm/datepicker/utils/format-date.js +4 -0
  66. package/esm/datepicker/utils/format-date.js.map +1 -0
  67. package/esm/datepicker/utils/get-dates.d.ts +2 -0
  68. package/esm/datepicker/utils/get-dates.js +39 -0
  69. package/esm/datepicker/utils/get-dates.js.map +1 -0
  70. package/esm/datepicker/utils/index.d.ts +6 -0
  71. package/esm/datepicker/utils/index.js +7 -0
  72. package/esm/datepicker/utils/index.js.map +1 -0
  73. package/esm/datepicker/utils/labels.d.ts +4 -0
  74. package/esm/datepicker/utils/labels.js +55 -0
  75. package/esm/datepicker/utils/labels.js.map +1 -0
  76. package/esm/datepicker/utils/locale.d.ts +2 -0
  77. package/esm/datepicker/utils/locale.js +15 -0
  78. package/esm/datepicker/utils/locale.js.map +1 -0
  79. package/esm/datepicker/utils/parse-date.d.ts +2 -0
  80. package/esm/datepicker/utils/parse-date.js +26 -0
  81. package/esm/datepicker/utils/parse-date.js.map +1 -0
  82. package/esm/datepicker/utils/valid-date.d.ts +2 -0
  83. package/esm/datepicker/utils/valid-date.js +5 -0
  84. package/esm/datepicker/utils/valid-date.js.map +1 -0
  85. package/esm/index.d.ts +1 -0
  86. package/esm/index.js +1 -0
  87. package/esm/index.js.map +1 -1
  88. package/esm/monthpicker/MonthPicker.d.ts +27 -0
  89. package/esm/monthpicker/MonthPicker.js +84 -0
  90. package/esm/monthpicker/MonthPicker.js.map +1 -0
  91. package/esm/monthpicker/index.d.ts +2 -0
  92. package/esm/monthpicker/index.js +2 -0
  93. package/esm/monthpicker/index.js.map +1 -0
  94. package/esm/monthpicker/utils/check-dates.d.ts +2 -0
  95. package/esm/monthpicker/utils/check-dates.js +8 -0
  96. package/esm/monthpicker/utils/check-dates.js.map +1 -0
  97. package/esm/monthpicker/utils/handle-selected.d.ts +3 -0
  98. package/esm/monthpicker/utils/handle-selected.js +12 -0
  99. package/esm/monthpicker/utils/handle-selected.js.map +1 -0
  100. package/package.json +7 -3
  101. package/src/chat/Chat.tsx +1 -1
  102. package/src/chat/chat.stories.tsx +1 -5
  103. package/src/datepicker/DatePicker.tsx +281 -0
  104. package/src/datepicker/DatePickerInput.tsx +131 -0
  105. package/src/datepicker/DatePickerStandalone.tsx +121 -0
  106. package/src/datepicker/caption/Caption.tsx +51 -0
  107. package/src/datepicker/caption/DropdownCaption.tsx +94 -0
  108. package/src/datepicker/caption/index.ts +2 -0
  109. package/src/datepicker/datepicker.stories.mdx +467 -0
  110. package/src/datepicker/datepicker.stories.tsx +257 -0
  111. package/src/datepicker/hooks/index.ts +2 -0
  112. package/src/datepicker/hooks/useDatepicker.tsx +181 -0
  113. package/src/datepicker/hooks/useRangeDatepicker.tsx +285 -0
  114. package/src/datepicker/index.ts +5 -0
  115. package/src/datepicker/utils/__tests__/dates-disabled.test.ts +48 -0
  116. package/src/datepicker/utils/__tests__/format-dates.test.ts +14 -0
  117. package/src/datepicker/utils/__tests__/get-dates.test.ts +79 -0
  118. package/src/datepicker/utils/__tests__/parse-dates.test.ts +81 -0
  119. package/src/datepicker/utils/dates-disabled.ts +26 -0
  120. package/src/datepicker/utils/format-date.ts +5 -0
  121. package/src/datepicker/utils/get-dates.ts +44 -0
  122. package/src/datepicker/utils/index.ts +6 -0
  123. package/src/datepicker/utils/labels.ts +58 -0
  124. package/src/datepicker/utils/locale.ts +15 -0
  125. package/src/datepicker/utils/parse-date.ts +28 -0
  126. package/src/datepicker/utils/valid-date.ts +4 -0
  127. package/src/index.ts +1 -0
  128. package/src/monthpicker/MonthPicker.tsx +238 -0
  129. package/src/monthpicker/index.ts +2 -0
  130. package/src/monthpicker/monthpicker.stories.tsx +35 -0
  131. package/src/monthpicker/utils/__tests__/check-dates.test.ts +34 -0
  132. package/src/monthpicker/utils/__tests__/handle-selected.test.ts +87 -0
  133. package/src/monthpicker/utils/check-dates.ts +15 -0
  134. package/src/monthpicker/utils/handle-selected.ts +26 -0
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.useRangeDatepicker = exports.useDatepicker = exports.DatePicker = void 0;
7
+ var DatePicker_1 = require("./DatePicker");
8
+ Object.defineProperty(exports, "DatePicker", { enumerable: true, get: function () { return __importDefault(DatePicker_1).default; } });
9
+ var hooks_1 = require("./hooks");
10
+ Object.defineProperty(exports, "useDatepicker", { enumerable: true, get: function () { return hooks_1.useDatepicker; } });
11
+ Object.defineProperty(exports, "useRangeDatepicker", { enumerable: true, get: function () { return hooks_1.useRangeDatepicker; } });
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "main": "./index.js",
4
+ "module": "../../esm/datepicker/index.js",
5
+ "types": "../../esm/datepicker/index.d.ts"
6
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.disableDate = void 0;
4
+ const date_fns_1 = require("date-fns");
5
+ const react_day_picker_1 = require("react-day-picker");
6
+ // TODO: ((date: Date) => boolean)
7
+ const disableDate = (disabledSelection, date) => {
8
+ let result = false;
9
+ if (disabledSelection instanceof Date) {
10
+ return (0, date_fns_1.isSameDay)(disabledSelection, date);
11
+ }
12
+ else if (disabledSelection instanceof Array) {
13
+ for (let i = 0; i < disabledSelection.length; i++) {
14
+ const selection = disabledSelection[i];
15
+ if ((0, react_day_picker_1.isDateRange)(selection)) {
16
+ if (selection.from && selection.to) {
17
+ result = date >= selection.from && date <= selection.to;
18
+ }
19
+ }
20
+ else if (selection instanceof Date) {
21
+ result = (0, date_fns_1.isSameDay)(selection, date);
22
+ }
23
+ if (result)
24
+ break;
25
+ }
26
+ }
27
+ return result;
28
+ };
29
+ exports.disableDate = disableDate;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatDateForInput = void 0;
4
+ const date_fns_1 = require("date-fns");
5
+ const parse_date_1 = require("./parse-date");
6
+ const formatDateForInput = (date, locale) => (0, date_fns_1.format)(date, parse_date_1.INPUT_DATE_STRING_FORMAT, { locale });
7
+ exports.formatDateForInput = formatDateForInput;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getYears = exports.getMonths = void 0;
4
+ const date_fns_1 = require("date-fns");
5
+ const getMonths = (start, end, current) => {
6
+ const dropdownMonths = [];
7
+ if ((0, date_fns_1.isSameYear)(start, end)) {
8
+ const date = (0, date_fns_1.startOfMonth)(start);
9
+ for (let month = start.getMonth(); month <= end.getMonth(); month++) {
10
+ dropdownMonths.push((0, date_fns_1.setMonth)(date, month));
11
+ }
12
+ }
13
+ else if ((0, date_fns_1.isSameYear)(current, end)) {
14
+ const date = (0, date_fns_1.startOfMonth)(new Date());
15
+ for (let month = 0; month <= end.getMonth(); month++) {
16
+ dropdownMonths.push((0, date_fns_1.setMonth)(date, month));
17
+ }
18
+ }
19
+ else if ((0, date_fns_1.isSameYear)(current, start)) {
20
+ const date = (0, date_fns_1.startOfMonth)(start);
21
+ for (let month = date.getMonth(); month <= 11; month++) {
22
+ dropdownMonths.push((0, date_fns_1.setMonth)(date, month));
23
+ }
24
+ }
25
+ else {
26
+ const date = (0, date_fns_1.startOfMonth)(new Date());
27
+ for (let month = 0; month <= 11; month++) {
28
+ dropdownMonths.push((0, date_fns_1.setMonth)(date, month));
29
+ }
30
+ }
31
+ return dropdownMonths;
32
+ };
33
+ exports.getMonths = getMonths;
34
+ const getYears = (start, end) => {
35
+ const years = [];
36
+ const fromYear = start.getFullYear();
37
+ const toYear = end.getFullYear();
38
+ for (let year = fromYear; year <= toYear; year++) {
39
+ years.push((0, date_fns_1.setYear)((0, date_fns_1.startOfYear)(new Date()), year));
40
+ }
41
+ return years;
42
+ };
43
+ exports.getYears = getYears;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isValidDate = exports.getLocaleFromString = exports.parseDate = exports.INPUT_DATE_STRING_FORMAT = exports.labels = exports.labelYearDropdown = exports.labelMonthDropdown = exports.getYears = exports.getMonths = exports.formatDateForInput = void 0;
4
+ var format_date_1 = require("./format-date");
5
+ Object.defineProperty(exports, "formatDateForInput", { enumerable: true, get: function () { return format_date_1.formatDateForInput; } });
6
+ var get_dates_1 = require("./get-dates");
7
+ Object.defineProperty(exports, "getMonths", { enumerable: true, get: function () { return get_dates_1.getMonths; } });
8
+ Object.defineProperty(exports, "getYears", { enumerable: true, get: function () { return get_dates_1.getYears; } });
9
+ var labels_1 = require("./labels");
10
+ Object.defineProperty(exports, "labelMonthDropdown", { enumerable: true, get: function () { return labels_1.labelMonthDropdown; } });
11
+ Object.defineProperty(exports, "labelYearDropdown", { enumerable: true, get: function () { return labels_1.labelYearDropdown; } });
12
+ Object.defineProperty(exports, "labels", { enumerable: true, get: function () { return labels_1.labels; } });
13
+ var parse_date_1 = require("./parse-date");
14
+ Object.defineProperty(exports, "INPUT_DATE_STRING_FORMAT", { enumerable: true, get: function () { return parse_date_1.INPUT_DATE_STRING_FORMAT; } });
15
+ Object.defineProperty(exports, "parseDate", { enumerable: true, get: function () { return parse_date_1.parseDate; } });
16
+ var locale_1 = require("./locale");
17
+ Object.defineProperty(exports, "getLocaleFromString", { enumerable: true, get: function () { return locale_1.getLocaleFromString; } });
18
+ var valid_date_1 = require("./valid-date");
19
+ Object.defineProperty(exports, "isValidDate", { enumerable: true, get: function () { return valid_date_1.isValidDate; } });
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.labels = exports.labelMonthDropdown = exports.labelYearDropdown = void 0;
4
+ const labelNext = (date, options) => {
5
+ var _a;
6
+ switch ((_a = options === null || options === void 0 ? void 0 : options.locale) === null || _a === void 0 ? void 0 : _a.code) {
7
+ case "nb":
8
+ return "Gå til neste månede";
9
+ case "nn":
10
+ return "Gå til neste månede";
11
+ case "en":
12
+ return "Go to next month";
13
+ default:
14
+ return "Gå til neste månede";
15
+ }
16
+ };
17
+ const labelPrevious = (date, options) => {
18
+ var _a;
19
+ switch ((_a = options === null || options === void 0 ? void 0 : options.locale) === null || _a === void 0 ? void 0 : _a.code) {
20
+ case "nb":
21
+ return "Gå til forrige månede";
22
+ case "nn":
23
+ return "Gå til forrige månede";
24
+ case "en":
25
+ return "Go to previous month";
26
+ default:
27
+ return "Gå til forrige månede";
28
+ }
29
+ };
30
+ const labelYearDropdown = (locale) => {
31
+ switch (locale === null || locale === void 0 ? void 0 : locale.code) {
32
+ case "nb":
33
+ return "År";
34
+ case "nn":
35
+ return "År";
36
+ case "en":
37
+ return "Year";
38
+ default:
39
+ return "År";
40
+ }
41
+ };
42
+ exports.labelYearDropdown = labelYearDropdown;
43
+ const labelMonthDropdown = (locale) => {
44
+ switch (locale === null || locale === void 0 ? void 0 : locale.code) {
45
+ case "nb":
46
+ return "Månede";
47
+ case "nn":
48
+ return "Månede";
49
+ case "en":
50
+ return "Month";
51
+ default:
52
+ return "Månede";
53
+ }
54
+ };
55
+ exports.labelMonthDropdown = labelMonthDropdown;
56
+ exports.labels = {
57
+ labelNext,
58
+ labelPrevious,
59
+ };
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getLocaleFromString = void 0;
7
+ const en_GB_1 = __importDefault(require("date-fns/locale/en-GB"));
8
+ const nb_1 = __importDefault(require("date-fns/locale/nb"));
9
+ const nn_1 = __importDefault(require("date-fns/locale/nn"));
10
+ /** @private */
11
+ const getLocaleFromString = (locale = "nb") => {
12
+ switch (locale) {
13
+ case "nn":
14
+ return nn_1.default;
15
+ case "en":
16
+ return en_GB_1.default;
17
+ default:
18
+ return nb_1.default;
19
+ }
20
+ };
21
+ exports.getLocaleFromString = getLocaleFromString;
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "main": "./index.js",
4
+ "module": "../../../esm/datepicker/utils/index.js",
5
+ "types": "../../../esm/datepicker/utils/index.d.ts"
6
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseDate = exports.INPUT_DATE_STRING_FORMAT = void 0;
4
+ const date_fns_1 = require("date-fns");
5
+ const valid_date_1 = require("./valid-date");
6
+ exports.INPUT_DATE_STRING_FORMAT = "dd.MM.yyyy";
7
+ const ALLOWED_INPUT_FORMATS = [
8
+ "ddMMyy",
9
+ "d.M.yy",
10
+ "dd.MM.yy",
11
+ "dd/MM/yy",
12
+ "dd-MM-yy",
13
+ exports.INPUT_DATE_STRING_FORMAT,
14
+ "ddMMyyyy",
15
+ "dd/MM/yyyy",
16
+ "dd-MM-yyyy",
17
+ "d.M.yyyy",
18
+ ];
19
+ const parseDate = (date, today, locale) => {
20
+ let parsed;
21
+ for (const format of ALLOWED_INPUT_FORMATS) {
22
+ parsed = (0, date_fns_1.parse)(date, format, today, { locale });
23
+ if ((0, valid_date_1.isValidDate)(parsed)) {
24
+ return parsed;
25
+ }
26
+ }
27
+ return parsed;
28
+ };
29
+ exports.parseDate = parseDate;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isValidDate = void 0;
4
+ /** @private */
5
+ function isValidDate(day) {
6
+ return !isNaN(day.getTime());
7
+ }
8
+ exports.isValidDate = isValidDate;
package/cjs/index.js CHANGED
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./accordion"), exports);
18
18
  __exportStar(require("./alert"), exports);
19
19
  __exportStar(require("./button"), exports);
20
+ __exportStar(require("./datepicker"), exports);
20
21
  __exportStar(require("./form"), exports);
21
22
  __exportStar(require("./grid"), exports);
22
23
  __exportStar(require("./help-text"), exports);
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.F = exports.MonthPicker = void 0;
30
+ const ds_icons_1 = require("@navikt/ds-icons");
31
+ const clsx_1 = __importDefault(require("clsx"));
32
+ const date_fns_1 = require("date-fns");
33
+ const nb_1 = __importDefault(require("date-fns/locale/nb"));
34
+ const react_1 = __importStar(require("react"));
35
+ const react_day_picker_1 = require("react-day-picker");
36
+ const __1 = require("..");
37
+ const check_dates_1 = require("./utils/check-dates");
38
+ const TestCaption = ({ selected, onSelect, isValidYearSelector, yearSelector, }) => {
39
+ const { nextMonth, previousMonth } = (0, react_day_picker_1.useNavigation)();
40
+ const { fromDate, toDate, formatters: { formatYearCaption }, locale, } = (0, react_day_picker_1.useDayPicker)();
41
+ const [yearState, setYearState] = (0, react_1.useState)(selected);
42
+ const years = [];
43
+ if (yearSelector && fromDate && toDate) {
44
+ const fromYear = fromDate.getFullYear();
45
+ const toYear = toDate.getFullYear();
46
+ for (let year = fromYear; year <= toYear; year++) {
47
+ years.push((0, date_fns_1.setYear)((0, date_fns_1.startOfYear)(new Date()), year));
48
+ }
49
+ }
50
+ const handleYearChange = (e) => {
51
+ const newMonth = (0, date_fns_1.setYear)((0, date_fns_1.startOfMonth)(selected), Number(e.target.value));
52
+ setYearState(newMonth);
53
+ onSelect(newMonth);
54
+ };
55
+ const handleButtonClick = (val) => {
56
+ const newMonth = (0, date_fns_1.setYear)((0, date_fns_1.startOfMonth)(selected), yearState.getFullYear() + val);
57
+ setYearState(newMonth);
58
+ onSelect(newMonth);
59
+ };
60
+ return (react_1.default.createElement("div", { className: "navds-monthpicker__caption" },
61
+ react_1.default.createElement("button", { className: "navds-monthpicker__caption-button", disabled: !previousMonth, onClick: () => years.some((x) => yearState.getFullYear() - 1 === x.getFullYear()) &&
62
+ handleButtonClick(-1) },
63
+ react_1.default.createElement(ds_icons_1.Left, { "aria-hidden": true })),
64
+ isValidYearSelector ? (react_1.default.createElement(__1.Select, { label: "velg \u00E5r", hideLabel: true, value: selected === null || selected === void 0 ? void 0 : selected.getFullYear(), onChange: handleYearChange, style: { width: "79px" } }, years.map((year) => (react_1.default.createElement("option", { key: year.getFullYear(), value: year.getFullYear() }, formatYearCaption(year, { locale })))))) : (react_1.default.createElement("span", { className: "navds-monthpicker__year-label", "aria-live": "polite" }, yearState.getFullYear())),
65
+ react_1.default.createElement("button", { className: "navds-monthpicker__caption-button", disabled: !nextMonth, onClick: () => years.some((x) => yearState.getFullYear() + 1 === x.getFullYear()) &&
66
+ handleButtonClick(1) },
67
+ react_1.default.createElement(ds_icons_1.Right, { "aria-hidden": true }))));
68
+ };
69
+ const MonthSelector = ({ onSelect, selected, }) => {
70
+ const months = [];
71
+ const { fromDate, toDate, formatters: { formatYearCaption, formatMonthCaption }, locale, } = (0, react_day_picker_1.useDayPicker)();
72
+ if (!fromDate)
73
+ return react_1.default.createElement(react_1.default.Fragment, null);
74
+ if (!toDate)
75
+ return react_1.default.createElement(react_1.default.Fragment, null);
76
+ if ((0, date_fns_1.isSameYear)(fromDate, toDate)) {
77
+ const date = (0, date_fns_1.startOfMonth)(fromDate);
78
+ for (let month = fromDate.getMonth(); month <= toDate.getMonth(); month++) {
79
+ months.push((0, date_fns_1.setMonth)(date, month));
80
+ }
81
+ }
82
+ else {
83
+ const date = (0, date_fns_1.startOfMonth)(new Date());
84
+ for (let month = 0; month <= 11; month++) {
85
+ months.push((0, date_fns_1.setMonth)(date, month));
86
+ }
87
+ }
88
+ const hideMonth = (month) => {
89
+ return (0, date_fns_1.compareAsc)(month, fromDate) === -1;
90
+ };
91
+ return (react_1.default.createElement(__1.BodyShort, { as: "div", className: "navds-monthpicker__months" }, months.map((x, y) => {
92
+ return (react_1.default.createElement("button", { key: x.toDateString(), onClick: () => onSelect((0, date_fns_1.setYear)((0, date_fns_1.startOfMonth)(x), Number(selected.getFullYear()))), className: (0, clsx_1.default)("navds-monthpicker__month", {
93
+ "navds-monthpicker__month--hidden": hideMonth(x),
94
+ "navds-monthpicker__month--current": (0, check_dates_1.dateIsInCurrentMonth)(x, selected),
95
+ "navds-monthpicker__month--selected": (0, check_dates_1.dateIsSelected)(x, selected),
96
+ }) },
97
+ react_1.default.createElement("span", { "aria-hidden": "true" }, (0, date_fns_1.format)(new Date(x), "LLL", { locale })
98
+ .replace(".", "")
99
+ .substring(0, 3)),
100
+ react_1.default.createElement("span", { className: "navds-sr-only" }, (0, date_fns_1.format)(new Date(x), "LLLL", { locale }))));
101
+ })));
102
+ };
103
+ exports.MonthPicker = (0, react_1.forwardRef)(({ children, yearSelector = false, fromDate = new Date(), toDate = new Date("Sep 27 2032"), }, ref) => {
104
+ const [selected, setSelected] = react_1.default.useState(new Date());
105
+ const isValidYearSelector = yearSelector && fromDate && toDate ? true : false;
106
+ return (react_1.default.createElement(react_day_picker_1.RootProvider, { locale: nb_1.default, selected: selected, className: "navds-monthpicker-month", toDate: toDate, fromDate: fromDate },
107
+ react_1.default.createElement("div", { className: "navds-monthpicker__wrapper" },
108
+ react_1.default.createElement(TestCaption, { selected: selected, onSelect: setSelected, yearSelector: yearSelector, isValidYearSelector: isValidYearSelector }),
109
+ react_1.default.createElement(MonthSelector, { onSelect: setSelected, selected: selected }))));
110
+ });
111
+ exports.default = exports.MonthPicker;
112
+ exports.F = "";
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.MonthPicker = void 0;
7
+ var MonthPicker_1 = require("./MonthPicker");
8
+ Object.defineProperty(exports, "MonthPicker", { enumerable: true, get: function () { return __importDefault(MonthPicker_1).default; } });
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "main": "./index.js",
4
+ "module": "../../esm/monthpicker/index.js",
5
+ "types": "../../esm/monthpicker/index.d.ts"
6
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dateIsSelected = exports.dateIsInCurrentMonth = void 0;
4
+ const date_fns_1 = require("date-fns");
5
+ const dateIsInCurrentMonth = (date, dateToCompare) => {
6
+ return (0, date_fns_1.isThisMonth)((0, date_fns_1.setYear)(date, Number(dateToCompare.getFullYear())));
7
+ };
8
+ exports.dateIsInCurrentMonth = dateIsInCurrentMonth;
9
+ const dateIsSelected = (date, selectedDate) => {
10
+ return (0, date_fns_1.isSameMonth)((0, date_fns_1.setYear)(date, Number(selectedDate.getFullYear())), selectedDate);
11
+ };
12
+ exports.dateIsSelected = dateIsSelected;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasNextYear = exports.updateWithYearSelector = exports.updateWithoutYearSelector = void 0;
4
+ const date_fns_1 = require("date-fns");
5
+ const updateWithoutYearSelector = (yearState, val) => {
6
+ const newYear = Number(yearState.getFullYear() + val);
7
+ return (0, date_fns_1.setYear)(yearState, newYear);
8
+ };
9
+ exports.updateWithoutYearSelector = updateWithoutYearSelector;
10
+ const updateWithYearSelector = (yearState, selected, years, val) => {
11
+ return (0, date_fns_1.setYear)((0, date_fns_1.startOfMonth)(selected), yearState.getFullYear() + val);
12
+ };
13
+ exports.updateWithYearSelector = updateWithYearSelector;
14
+ const hasNextYear = (yearState, years, val) => {
15
+ return years.some((x) => yearState.getFullYear() + val === x.getFullYear());
16
+ };
17
+ exports.hasNextYear = hasNextYear;
@@ -8,7 +8,7 @@ export interface ChatProps extends HTMLAttributes<HTMLDivElement> {
8
8
  /**
9
9
  * Chat-message name
10
10
  */
11
- name: string;
11
+ name?: string;
12
12
  /**
13
13
  * Timestamp for sent message
14
14
  */
@@ -0,0 +1,107 @@
1
+ import React from "react";
2
+ import { DateRange, DayPickerBase, Matcher } from "react-day-picker";
3
+ import { DatePickerInputType } from "./DatePickerInput";
4
+ import { DatePickerStandaloneType } from "./DatePickerStandalone";
5
+ export declare type ConditionalModeProps = {
6
+ mode?: "single";
7
+ onSelect?: (val?: Date) => void;
8
+ selected?: Date;
9
+ defaultSelected?: Date;
10
+ } | {
11
+ mode?: "multiple";
12
+ onSelect?: (val?: Date[]) => void;
13
+ selected?: Date[];
14
+ defaultSelected?: Date[];
15
+ min?: number;
16
+ max?: number;
17
+ } | {
18
+ mode?: "range";
19
+ onSelect?: (val?: DateRange) => void;
20
+ selected?: DateRange;
21
+ defaultSelected?: DateRange;
22
+ min?: number;
23
+ max?: number;
24
+ };
25
+ export interface DatePickerDefaultProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onSelect">, Pick<DayPickerBase, "month" | "onMonthChange" | "today" | "onDayClick"> {
26
+ /**
27
+ * Element datepicker anchors to. Use <DatePicker.Input /> for built-in toggle,
28
+ * or make your own with the open/onClose props
29
+ */
30
+ children?: React.ReactNode;
31
+ /**
32
+ * Changes datepicker locale
33
+ * @default "nb" (norsk bokmål)
34
+ */
35
+ locale?: "nb" | "nn" | "en";
36
+ /**
37
+ * The earliest Date available for the user to pick from
38
+ */
39
+ fromDate?: Date;
40
+ /**
41
+ * The latest Date available for the user to pick from
42
+ */
43
+ toDate?: Date;
44
+ /**
45
+ * Adds a `Select` for picking Year and Month
46
+ * Needs `fromDate` + `toDate` to be set!
47
+ * @default false
48
+ */
49
+ yearSelector?: boolean;
50
+ /**
51
+ * Apply the disabled modifier to the matching days.
52
+ * {@link https://react-day-picker.js.org/api/types/Matcher | Matcher type-definition}
53
+ */
54
+ disabled?: Matcher[];
55
+ /**
56
+ * Disable saturday and sunday.
57
+ * @default false
58
+ */
59
+ disableWeekends?: boolean;
60
+ /**
61
+ * Shows week numbers in left-column
62
+ * Use with caution, takes up valuable screenspace in small screens!
63
+ * @default false
64
+ */
65
+ showWeekNumber?: boolean;
66
+ /**
67
+ * Open state for user-controlled state
68
+ * @remark Controlled by component by default
69
+ */
70
+ open?: boolean;
71
+ /**
72
+ * onClose callback for user-controlled state
73
+ */
74
+ onClose?: () => void;
75
+ /**
76
+ * onOpenToggle callback for user-controlled-state
77
+ * @remark only called if `<DatePicker.Input />` is used
78
+ */
79
+ onOpenToggle?: () => void;
80
+ /**
81
+ * Classnames for adding classes
82
+ */
83
+ classNames?: {
84
+ /**
85
+ * Children wrapper
86
+ */
87
+ wrapper?: string;
88
+ /**
89
+ * DatePicker-wrapper
90
+ */
91
+ datepicker?: string;
92
+ };
93
+ }
94
+ export declare type DatePickerProps = DatePickerDefaultProps & ConditionalModeProps;
95
+ interface DatePickerComponent extends React.ForwardRefExoticComponent<DatePickerProps> {
96
+ Input: DatePickerInputType;
97
+ Standalone: DatePickerStandaloneType;
98
+ }
99
+ interface DatePickerContextProps {
100
+ open: boolean;
101
+ onOpen: () => void;
102
+ buttonRef: React.MutableRefObject<HTMLButtonElement | null> | null;
103
+ ariaId?: string;
104
+ }
105
+ export declare const DatePickerContext: React.Context<DatePickerContextProps>;
106
+ export declare const DatePicker: DatePickerComponent;
107
+ export default DatePicker;
@@ -0,0 +1,94 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { FloatingPortal } from "@floating-ui/react-dom-interactions";
13
+ import cl from "clsx";
14
+ import { isWeekend } from "date-fns";
15
+ import React, { createContext, forwardRef, useRef, useState } from "react";
16
+ import { DayPicker, isMatch, } from "react-day-picker";
17
+ import { Popover, useId } from "..";
18
+ import { omit } from "../util";
19
+ import { Caption, DropdownCaption } from "./caption";
20
+ import DatePickerInput from "./DatePickerInput";
21
+ import DatePickerStandalone from "./DatePickerStandalone";
22
+ import { getLocaleFromString, labels } from "./utils";
23
+ export const DatePickerContext = createContext({
24
+ open: false,
25
+ onOpen: () => null,
26
+ buttonRef: null,
27
+ ariaId: undefined,
28
+ });
29
+ export const DatePicker = forwardRef((_a, ref) => {
30
+ var { children, locale = "nb", yearSelector, disabled = [], disableWeekends = false, showWeekNumber = false, mode = "single", selected, id, defaultSelected, classNames, open: _open, onClose, onOpenToggle } = _a, rest = __rest(_a, ["children", "locale", "yearSelector", "disabled", "disableWeekends", "showWeekNumber", "mode", "selected", "id", "defaultSelected", "classNames", "open", "onClose", "onOpenToggle"]);
31
+ const ariaId = useId(id);
32
+ const [open, setOpen] = useState(_open !== null && _open !== void 0 ? _open : false);
33
+ const wrapperRef = useRef(null);
34
+ const buttonRef = useRef(null);
35
+ const [selectedDates, setSelectedDates] = React.useState(defaultSelected);
36
+ const handleSingleSelect = (selectedDay) => {
37
+ var _a, _b;
38
+ setSelectedDates(selectedDay);
39
+ selectedDay && ((_a = onClose === null || onClose === void 0 ? void 0 : onClose()) !== null && _a !== void 0 ? _a : setOpen(false));
40
+ selectedDay && buttonRef && ((_b = buttonRef === null || buttonRef === void 0 ? void 0 : buttonRef.current) === null || _b === void 0 ? void 0 : _b.focus());
41
+ (rest === null || rest === void 0 ? void 0 : rest.onSelect) && (rest === null || rest === void 0 ? void 0 : rest.onSelect)(selectedDay);
42
+ };
43
+ const handleMultipleSelect = (selectedDays) => {
44
+ setSelectedDates(selectedDays);
45
+ (rest === null || rest === void 0 ? void 0 : rest.onSelect) &&
46
+ (rest === null || rest === void 0 ? void 0 : rest.onSelect)(selectedDays);
47
+ };
48
+ const handleRangeSelect = (selectedDays) => {
49
+ var _a, _b;
50
+ setSelectedDates(selectedDays);
51
+ (selectedDays === null || selectedDays === void 0 ? void 0 : selectedDays.from) && (selectedDays === null || selectedDays === void 0 ? void 0 : selectedDays.to) && ((_a = onClose === null || onClose === void 0 ? void 0 : onClose()) !== null && _a !== void 0 ? _a : setOpen(false));
52
+ (selectedDays === null || selectedDays === void 0 ? void 0 : selectedDays.from) &&
53
+ (selectedDays === null || selectedDays === void 0 ? void 0 : selectedDays.to) &&
54
+ buttonRef &&
55
+ ((_b = buttonRef === null || buttonRef === void 0 ? void 0 : buttonRef.current) === null || _b === void 0 ? void 0 : _b.focus());
56
+ (rest === null || rest === void 0 ? void 0 : rest.onSelect) &&
57
+ (rest === null || rest === void 0 ? void 0 : rest.onSelect)(selectedDays);
58
+ };
59
+ const overrideProps = {
60
+ onSelect: mode === "single"
61
+ ? handleSingleSelect
62
+ : mode === "multiple"
63
+ ? handleMultipleSelect
64
+ : handleRangeSelect,
65
+ };
66
+ return (React.createElement(DatePickerContext.Provider, { value: {
67
+ open: _open !== null && _open !== void 0 ? _open : open,
68
+ onOpen: () => {
69
+ setOpen((x) => !x);
70
+ onOpenToggle === null || onOpenToggle === void 0 ? void 0 : onOpenToggle();
71
+ },
72
+ buttonRef,
73
+ ariaId,
74
+ } },
75
+ React.createElement("div", { ref: wrapperRef, className: cl("navds-date__wrapper", classNames === null || classNames === void 0 ? void 0 : classNames.wrapper) },
76
+ children,
77
+ React.createElement(FloatingPortal, null, (_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", id: ariaId, "aria-roledescription": locale === "en" ? "datepicker" : "datovelger", role: "dialog", ref: ref },
78
+ React.createElement(DayPicker, Object.assign({ locale: getLocaleFromString(locale), mode: mode }, overrideProps, { selected: selected !== null && selected !== void 0 ? selected : selectedDates, components: {
79
+ Caption: yearSelector ? DropdownCaption : Caption,
80
+ }, className: cl("navds-date", classNames === null || classNames === void 0 ? void 0 : classNames.datepicker), classNames: {
81
+ vhidden: "navds-sr-only",
82
+ }, disabled: (day) => {
83
+ return ((disableWeekends && isWeekend(day)) ||
84
+ isMatch(day, disabled));
85
+ }, weekStartsOn: 1, initialFocus: false, labels: labels, modifiers: {
86
+ weekend: (day) => disableWeekends && isWeekend(day),
87
+ }, modifiersClassNames: {
88
+ weekend: "rdp-day__weekend",
89
+ }, showWeekNumber: showWeekNumber }, omit(rest, ["onSelect"])))))))));
90
+ });
91
+ DatePicker.Input = DatePickerInput;
92
+ DatePicker.Standalone = DatePickerStandalone;
93
+ export default DatePicker;
94
+ //# sourceMappingURL=DatePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatePicker.js","sourceRoot":"","sources":["../../src/datepicker/DatePicker.tsx"],"names":[],"mappings":"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"}