@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,5 @@
1
+ export { default as DatePicker } from "./DatePicker";
2
+ export { DatePickerProps } from "./DatePicker";
3
+ export { DatePickerStandaloneProps } from "./DatePickerStandalone";
4
+ export { DatePickerInputProps } from "./DatePickerInput";
5
+ export { useDatepicker, useRangeDatepicker } from "./hooks";
@@ -0,0 +1,3 @@
1
+ export { default as DatePicker } from "./DatePicker";
2
+ export { useDatepicker, useRangeDatepicker } from "./hooks";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/datepicker/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AAIrD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,SAAS,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/datepicker/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) => string;
@@ -0,0 +1,4 @@
1
+ import { format } from "date-fns";
2
+ import { INPUT_DATE_STRING_FORMAT } from "./parse-date";
3
+ export const formatDateForInput = (date, locale) => format(date, INPUT_DATE_STRING_FORMAT, { locale });
4
+ //# sourceMappingURL=format-date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-date.js","sourceRoot":"","sources":["../../../src/datepicker/utils/format-date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAU,EAAE,MAAc,EAAE,EAAE,CAC/D,MAAM,CAAC,IAAI,EAAE,wBAAwB,EAAE,EAAE,MAAM,EAAE,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/datepicker/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,6 @@
1
+ export { formatDateForInput } from "./format-date";
2
+ export { getMonths, getYears } from "./get-dates";
3
+ export { labelMonthDropdown, labelYearDropdown, labels } from "./labels";
4
+ export { INPUT_DATE_STRING_FORMAT, parseDate } from "./parse-date";
5
+ export { getLocaleFromString } from "./locale";
6
+ export { isValidDate } from "./valid-date";
@@ -0,0 +1,7 @@
1
+ export { formatDateForInput } from "./format-date";
2
+ export { getMonths, getYears } from "./get-dates";
3
+ export { labelMonthDropdown, labelYearDropdown, labels } from "./labels";
4
+ export { INPUT_DATE_STRING_FORMAT, parseDate } from "./parse-date";
5
+ export { getLocaleFromString } from "./locale";
6
+ export { isValidDate } from "./valid-date";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/datepicker/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Labels } from "react-day-picker";
2
+ export declare const labelYearDropdown: (locale: Locale) => "År" | "Year";
3
+ export declare const labelMonthDropdown: (locale: Locale) => "Månede" | "Month";
4
+ export declare const labels: Partial<Labels>;
@@ -0,0 +1,55 @@
1
+ const labelNext = (date, options) => {
2
+ var _a;
3
+ switch ((_a = options === null || options === void 0 ? void 0 : options.locale) === null || _a === void 0 ? void 0 : _a.code) {
4
+ case "nb":
5
+ return "Gå til neste månede";
6
+ case "nn":
7
+ return "Gå til neste månede";
8
+ case "en":
9
+ return "Go to next month";
10
+ default:
11
+ return "Gå til neste månede";
12
+ }
13
+ };
14
+ const labelPrevious = (date, options) => {
15
+ var _a;
16
+ switch ((_a = options === null || options === void 0 ? void 0 : options.locale) === null || _a === void 0 ? void 0 : _a.code) {
17
+ case "nb":
18
+ return "Gå til forrige månede";
19
+ case "nn":
20
+ return "Gå til forrige månede";
21
+ case "en":
22
+ return "Go to previous month";
23
+ default:
24
+ return "Gå til forrige månede";
25
+ }
26
+ };
27
+ export const labelYearDropdown = (locale) => {
28
+ switch (locale === null || locale === void 0 ? void 0 : locale.code) {
29
+ case "nb":
30
+ return "År";
31
+ case "nn":
32
+ return "År";
33
+ case "en":
34
+ return "Year";
35
+ default:
36
+ return "År";
37
+ }
38
+ };
39
+ export const labelMonthDropdown = (locale) => {
40
+ switch (locale === null || locale === void 0 ? void 0 : locale.code) {
41
+ case "nb":
42
+ return "Månede";
43
+ case "nn":
44
+ return "Månede";
45
+ case "en":
46
+ return "Month";
47
+ default:
48
+ return "Månede";
49
+ }
50
+ };
51
+ export const labels = {
52
+ labelNext,
53
+ labelPrevious,
54
+ };
55
+ //# sourceMappingURL=labels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labels.js","sourceRoot":"","sources":["../../../src/datepicker/utils/labels.ts"],"names":[],"mappings":"AAEA,MAAM,SAAS,GAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;;IAClD,QAAQ,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,IAAI,EAAE;QAC7B,KAAK,IAAI;YACP,OAAO,qBAAqB,CAAC;QAC/B,KAAK,IAAI;YACP,OAAO,qBAAqB,CAAC;QAC/B,KAAK,IAAI;YACP,OAAO,kBAAkB,CAAC;QAC5B;YACE,OAAO,qBAAqB,CAAC;KAChC;AACH,CAAC,CAAC;AAEF,MAAM,aAAa,GAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;;IACtD,QAAQ,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,IAAI,EAAE;QAC7B,KAAK,IAAI;YACP,OAAO,uBAAuB,CAAC;QACjC,KAAK,IAAI;YACP,OAAO,uBAAuB,CAAC;QACjC,KAAK,IAAI;YACP,OAAO,sBAAsB,CAAC;QAChC;YACE,OAAO,uBAAuB,CAAC;KAClC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAE,EAAE;IAClD,QAAQ,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,EAAE;QACpB,KAAK,IAAI;YACP,OAAO,IAAI,CAAC;QACd,KAAK,IAAI;YACP,OAAO,IAAI,CAAC;QACd,KAAK,IAAI;YACP,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,IAAI,CAAC;KACf;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAE,EAAE;IACnD,QAAQ,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,EAAE;QACpB,KAAK,IAAI;YACP,OAAO,QAAQ,CAAC;QAClB,KAAK,IAAI;YACP,OAAO,QAAQ,CAAC;QAClB,KAAK,IAAI;YACP,OAAO,OAAO,CAAC;QACjB;YACE,OAAO,QAAQ,CAAC;KACnB;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAoB;IACrC,SAAS;IACT,aAAa;CACd,CAAC"}
@@ -0,0 +1,2 @@
1
+ /** @private */
2
+ export declare const getLocaleFromString: (locale?: "nb" | "nn" | "en") => Locale;
@@ -0,0 +1,15 @@
1
+ import enGB from "date-fns/locale/en-GB";
2
+ import nb from "date-fns/locale/nb";
3
+ import nn from "date-fns/locale/nn";
4
+ /** @private */
5
+ export const getLocaleFromString = (locale = "nb") => {
6
+ switch (locale) {
7
+ case "nn":
8
+ return nn;
9
+ case "en":
10
+ return enGB;
11
+ default:
12
+ return nb;
13
+ }
14
+ };
15
+ //# sourceMappingURL=locale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale.js","sourceRoot":"","sources":["../../../src/datepicker/utils/locale.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,uBAAuB,CAAC;AACzC,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACpC,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAEpC,eAAe;AACf,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAA6B,IAAI,EAAE,EAAE;IACvE,QAAQ,MAAM,EAAE;QACd,KAAK,IAAI;YACP,OAAO,EAAE,CAAC;QACZ,KAAK,IAAI;YACP,OAAO,IAAI,CAAC;QACd;YACE,OAAO,EAAE,CAAC;KACb;AACH,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const INPUT_DATE_STRING_FORMAT = "dd.MM.yyyy";
2
+ export declare const parseDate: (date: string, today: Date, locale: Locale) => any;
@@ -0,0 +1,26 @@
1
+ import { parse } from "date-fns";
2
+ import { isValidDate } from "./valid-date";
3
+ export const INPUT_DATE_STRING_FORMAT = "dd.MM.yyyy";
4
+ const ALLOWED_INPUT_FORMATS = [
5
+ "ddMMyy",
6
+ "d.M.yy",
7
+ "dd.MM.yy",
8
+ "dd/MM/yy",
9
+ "dd-MM-yy",
10
+ INPUT_DATE_STRING_FORMAT,
11
+ "ddMMyyyy",
12
+ "dd/MM/yyyy",
13
+ "dd-MM-yyyy",
14
+ "d.M.yyyy",
15
+ ];
16
+ export const parseDate = (date, today, locale) => {
17
+ let parsed;
18
+ for (const format of ALLOWED_INPUT_FORMATS) {
19
+ parsed = parse(date, format, today, { locale });
20
+ if (isValidDate(parsed)) {
21
+ return parsed;
22
+ }
23
+ }
24
+ return parsed;
25
+ };
26
+ //# sourceMappingURL=parse-date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-date.js","sourceRoot":"","sources":["../../../src/datepicker/utils/parse-date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,wBAAwB,GAAG,YAAY,CAAC;AAErD,MAAM,qBAAqB,GAAG;IAC5B,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,UAAU;IACV,UAAU;IACV,wBAAwB;IACxB,UAAU;IACV,YAAY;IACZ,YAAY;IACZ,UAAU;CACX,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,KAAW,EAAE,MAAc,EAAE,EAAE;IACrE,IAAI,MAAM,CAAC;IACX,KAAK,MAAM,MAAM,IAAI,qBAAqB,EAAE;QAC1C,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAChD,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;YACvB,OAAO,MAAM,CAAC;SACf;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ /** @private */
2
+ export declare function isValidDate(day: Date): boolean;
@@ -0,0 +1,5 @@
1
+ /** @private */
2
+ export function isValidDate(day) {
3
+ return !isNaN(day.getTime());
4
+ }
5
+ //# sourceMappingURL=valid-date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"valid-date.js","sourceRoot":"","sources":["../../../src/datepicker/utils/valid-date.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,MAAM,UAAU,WAAW,CAAC,GAAS;IACnC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/B,CAAC"}
package/esm/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from "./accordion";
2
2
  export * from "./alert";
3
3
  export * from "./button";
4
+ export * from "./datepicker";
4
5
  export * from "./form";
5
6
  export * from "./grid";
6
7
  export * from "./help-text";
package/esm/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from "./accordion";
2
2
  export * from "./alert";
3
3
  export * from "./button";
4
+ export * from "./datepicker";
4
5
  export * from "./form";
5
6
  export * from "./grid";
6
7
  export * from "./help-text";
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,27 @@
1
+ import React from "react";
2
+ export interface MonthPickerProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ children?: React.ReactNode;
4
+ mode?: "month";
5
+ /**
6
+ * The earliest day to start the month navigation.
7
+ */
8
+ fromDate?: Date;
9
+ /**
10
+ * The latest day to end the month navigation.
11
+ */
12
+ toDate?: Date;
13
+ /**
14
+ * Changes monthpicker locale
15
+ * @default "nb" (norsk bokmål)
16
+ */
17
+ locale?: "nb" | "nn" | "en";
18
+ /**
19
+ * Adds a `Select` for picking Year
20
+ * Needs `fromDate` + `toDate` to be set!
21
+ * @default false
22
+ */
23
+ yearSelector?: boolean;
24
+ }
25
+ export declare const MonthPicker: React.ForwardRefExoticComponent<MonthPickerProps & React.RefAttributes<HTMLDivElement>>;
26
+ export default MonthPicker;
27
+ export declare const F = "";
@@ -0,0 +1,84 @@
1
+ import { Left, Right } from "@navikt/ds-icons";
2
+ import cl from "clsx";
3
+ import { compareAsc, format, isSameYear, setMonth, setYear, startOfMonth, startOfYear, } from "date-fns";
4
+ import NB from "date-fns/locale/nb";
5
+ import React, { forwardRef, useState } from "react";
6
+ import { RootProvider, useDayPicker, useNavigation } from "react-day-picker";
7
+ import { BodyShort, Select } from "..";
8
+ import { dateIsInCurrentMonth, dateIsSelected } from "./utils/check-dates";
9
+ const TestCaption = ({ selected, onSelect, isValidYearSelector, yearSelector, }) => {
10
+ const { nextMonth, previousMonth } = useNavigation();
11
+ const { fromDate, toDate, formatters: { formatYearCaption }, locale, } = useDayPicker();
12
+ const [yearState, setYearState] = useState(selected);
13
+ const years = [];
14
+ if (yearSelector && fromDate && toDate) {
15
+ const fromYear = fromDate.getFullYear();
16
+ const toYear = toDate.getFullYear();
17
+ for (let year = fromYear; year <= toYear; year++) {
18
+ years.push(setYear(startOfYear(new Date()), year));
19
+ }
20
+ }
21
+ const handleYearChange = (e) => {
22
+ const newMonth = setYear(startOfMonth(selected), Number(e.target.value));
23
+ setYearState(newMonth);
24
+ onSelect(newMonth);
25
+ };
26
+ const handleButtonClick = (val) => {
27
+ const newMonth = setYear(startOfMonth(selected), yearState.getFullYear() + val);
28
+ setYearState(newMonth);
29
+ onSelect(newMonth);
30
+ };
31
+ return (React.createElement("div", { className: "navds-monthpicker__caption" },
32
+ React.createElement("button", { className: "navds-monthpicker__caption-button", disabled: !previousMonth, onClick: () => years.some((x) => yearState.getFullYear() - 1 === x.getFullYear()) &&
33
+ handleButtonClick(-1) },
34
+ React.createElement(Left, { "aria-hidden": true })),
35
+ isValidYearSelector ? (React.createElement(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.createElement("option", { key: year.getFullYear(), value: year.getFullYear() }, formatYearCaption(year, { locale })))))) : (React.createElement("span", { className: "navds-monthpicker__year-label", "aria-live": "polite" }, yearState.getFullYear())),
36
+ React.createElement("button", { className: "navds-monthpicker__caption-button", disabled: !nextMonth, onClick: () => years.some((x) => yearState.getFullYear() + 1 === x.getFullYear()) &&
37
+ handleButtonClick(1) },
38
+ React.createElement(Right, { "aria-hidden": true }))));
39
+ };
40
+ const MonthSelector = ({ onSelect, selected, }) => {
41
+ const months = [];
42
+ const { fromDate, toDate, formatters: { formatYearCaption, formatMonthCaption }, locale, } = useDayPicker();
43
+ if (!fromDate)
44
+ return React.createElement(React.Fragment, null);
45
+ if (!toDate)
46
+ return React.createElement(React.Fragment, null);
47
+ if (isSameYear(fromDate, toDate)) {
48
+ const date = startOfMonth(fromDate);
49
+ for (let month = fromDate.getMonth(); month <= toDate.getMonth(); month++) {
50
+ months.push(setMonth(date, month));
51
+ }
52
+ }
53
+ else {
54
+ const date = startOfMonth(new Date());
55
+ for (let month = 0; month <= 11; month++) {
56
+ months.push(setMonth(date, month));
57
+ }
58
+ }
59
+ const hideMonth = (month) => {
60
+ return compareAsc(month, fromDate) === -1;
61
+ };
62
+ return (React.createElement(BodyShort, { as: "div", className: "navds-monthpicker__months" }, months.map((x, y) => {
63
+ return (React.createElement("button", { key: x.toDateString(), onClick: () => onSelect(setYear(startOfMonth(x), Number(selected.getFullYear()))), className: cl("navds-monthpicker__month", {
64
+ "navds-monthpicker__month--hidden": hideMonth(x),
65
+ "navds-monthpicker__month--current": dateIsInCurrentMonth(x, selected),
66
+ "navds-monthpicker__month--selected": dateIsSelected(x, selected),
67
+ }) },
68
+ React.createElement("span", { "aria-hidden": "true" }, format(new Date(x), "LLL", { locale })
69
+ .replace(".", "")
70
+ .substring(0, 3)),
71
+ React.createElement("span", { className: "navds-sr-only" }, format(new Date(x), "LLLL", { locale }))));
72
+ })));
73
+ };
74
+ export const MonthPicker = forwardRef(({ children, yearSelector = false, fromDate = new Date(), toDate = new Date("Sep 27 2032"), }, ref) => {
75
+ const [selected, setSelected] = React.useState(new Date());
76
+ const isValidYearSelector = yearSelector && fromDate && toDate ? true : false;
77
+ return (React.createElement(RootProvider, { locale: NB, selected: selected, className: "navds-monthpicker-month", toDate: toDate, fromDate: fromDate },
78
+ React.createElement("div", { className: "navds-monthpicker__wrapper" },
79
+ React.createElement(TestCaption, { selected: selected, onSelect: setSelected, yearSelector: yearSelector, isValidYearSelector: isValidYearSelector }),
80
+ React.createElement(MonthSelector, { onSelect: setSelected, selected: selected }))));
81
+ });
82
+ export default MonthPicker;
83
+ export const F = "";
84
+ //# sourceMappingURL=MonthPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonthPicker.js","sourceRoot":"","sources":["../../src/monthpicker/MonthPicker.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { default as MonthPicker } from "./MonthPicker";
2
+ export { MonthPickerProps } from "./MonthPicker";
@@ -0,0 +1,2 @@
1
+ export { default as MonthPicker } from "./MonthPicker";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/monthpicker/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const dateIsInCurrentMonth: (date: Date, dateToCompare: Date) => boolean;
2
+ export declare const dateIsSelected: (date: Date, selectedDate: Date) => boolean;
@@ -0,0 +1,8 @@
1
+ import { isThisMonth, setYear, isSameMonth } from "date-fns";
2
+ export const dateIsInCurrentMonth = (date, dateToCompare) => {
3
+ return isThisMonth(setYear(date, Number(dateToCompare.getFullYear())));
4
+ };
5
+ export const dateIsSelected = (date, selectedDate) => {
6
+ return isSameMonth(setYear(date, Number(selectedDate.getFullYear())), selectedDate);
7
+ };
8
+ //# sourceMappingURL=check-dates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-dates.js","sourceRoot":"","sources":["../../../src/monthpicker/utils/check-dates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE7D,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,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAU,EAAE,YAAkB,EAAW,EAAE;IACxE,OAAO,WAAW,CAChB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,EACjD,YAAY,CACb,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const updateWithoutYearSelector: (yearState: Date, val: number) => Date;
2
+ export declare const updateWithYearSelector: (yearState: Date, selected: Date, years: Date[], val: number) => Date;
3
+ export declare const hasNextYear: (yearState: Date, years: Date[], val: any) => boolean;
@@ -0,0 +1,12 @@
1
+ import { startOfMonth, setYear } from "date-fns";
2
+ export const updateWithoutYearSelector = (yearState, val) => {
3
+ const newYear = Number(yearState.getFullYear() + val);
4
+ return setYear(yearState, newYear);
5
+ };
6
+ export const updateWithYearSelector = (yearState, selected, years, val) => {
7
+ return setYear(startOfMonth(selected), yearState.getFullYear() + val);
8
+ };
9
+ export const hasNextYear = (yearState, years, val) => {
10
+ return years.some((x) => yearState.getFullYear() + val === x.getFullYear());
11
+ };
12
+ //# sourceMappingURL=handle-selected.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle-selected.js","sourceRoot":"","sources":["../../../src/monthpicker/utils/handle-selected.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEjD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,SAAe,EACf,GAAW,EACL,EAAE;IACR,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,CAAC;IACtD,OAAO,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,SAAe,EACf,QAAc,EACd,KAAa,EACb,GAAW,EACL,EAAE;IACR,OAAO,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,SAAe,EACf,KAAa,EACb,GAAQ,EACC,EAAE;IACX,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9E,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@navikt/ds-react",
3
- "version": "1.2.2",
3
+ "version": "1.3.0-alpha.0",
4
4
  "description": "NAV designsystem react components",
5
5
  "author": "NAV Designsystem team",
6
6
  "license": "MIT",
@@ -36,10 +36,13 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "@floating-ui/react-dom-interactions": "0.9.2",
39
- "@navikt/ds-icons": "^1.2.2",
39
+ "@navikt/ds-icons": "^1.3.0-alpha.0",
40
40
  "@radix-ui/react-tabs": "1.0.0",
41
41
  "@radix-ui/react-toggle-group": "1.0.0",
42
42
  "clsx": "^1.1.1",
43
+ "date-fns": "2.29.2",
44
+ "focus-trap-react": "^10.0.0",
45
+ "react-day-picker": "^8.1.4",
43
46
  "react-modal": "3.15.1"
44
47
  },
45
48
  "devDependencies": {
@@ -53,6 +56,7 @@
53
56
  "@types/react-modal": "^3.13.1",
54
57
  "concurrently": "7.2.1",
55
58
  "copyfiles": "^2.4.1",
59
+ "date-fns-tz": "1.3.6",
56
60
  "faker": "5.5.3",
57
61
  "fast-glob": "3.2.11",
58
62
  "jest": "^27.5.0",
@@ -74,5 +78,5 @@
74
78
  "optional": true
75
79
  }
76
80
  },
77
- "gitHead": "7da8246ce3fbf84239ac4d68993100d81524fb41"
81
+ "gitHead": "eb4721db0d4e4cc9b5610f20bcb3b0cad30de00a"
78
82
  }
package/src/chat/Chat.tsx CHANGED
@@ -11,7 +11,7 @@ export interface ChatProps extends HTMLAttributes<HTMLDivElement> {
11
11
  /**
12
12
  * Chat-message name
13
13
  */
14
- name: string;
14
+ name?: string;
15
15
  /**
16
16
  * Timestamp for sent message
17
17
  */
@@ -118,11 +118,7 @@ export const Position = () => {
118
118
 
119
119
  export const Avatar = () => {
120
120
  return (
121
- <Chat
122
- avatar={<Illustration />}
123
- name={"Ola Normann"}
124
- timestamp={"01.01.21 14:00"}
125
- >
121
+ <Chat avatar={<Illustration />} timestamp={"01.01.21 14:00"}>
126
122
  <Chat.Bubble>
127
123
  Aute minim nisi sunt mollit duis sunt nulla minim non proident.
128
124
  </Chat.Bubble>