@os-design/core 1.0.280 → 1.0.281

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 (198) hide show
  1. package/dist/Avatar/utils/nameToInitials.d.ts.map +1 -1
  2. package/dist/Avatar/utils/strToHue.d.ts.map +1 -1
  3. package/dist/Button/index.d.ts.map +1 -1
  4. package/dist/Button/index.js +1 -1
  5. package/dist/Button/utils/useButtonColors.d.ts.map +1 -1
  6. package/dist/ButtonLink/index.d.ts.map +1 -1
  7. package/dist/ButtonLink/index.js +0 -5
  8. package/dist/Checkbox/index.d.ts.map +1 -1
  9. package/dist/Checkbox/index.js +1 -6
  10. package/dist/DateCalendar/Calendar.d.ts +25 -0
  11. package/dist/DateCalendar/Calendar.d.ts.map +1 -0
  12. package/dist/DateCalendar/Calendar.js +271 -0
  13. package/dist/DateCalendar/MonthPicker.d.ts +12 -0
  14. package/dist/DateCalendar/MonthPicker.d.ts.map +1 -0
  15. package/dist/DateCalendar/MonthPicker.js +159 -0
  16. package/dist/DateCalendar/index.d.ts +41 -0
  17. package/dist/DateCalendar/index.d.ts.map +1 -0
  18. package/dist/DateCalendar/index.js +77 -0
  19. package/dist/DateCalendar/locale.d.ts +6 -0
  20. package/dist/DateCalendar/locale.d.ts.map +1 -0
  21. package/dist/DateCalendar/locale.js +4 -0
  22. package/dist/DateCalendar/utils/calendarDays.d.ts +10 -0
  23. package/dist/DateCalendar/utils/calendarDays.d.ts.map +1 -0
  24. package/dist/DateCalendar/utils/calendarDays.js +46 -0
  25. package/dist/DateCalendar/utils/dayOfWeek.d.ts +8 -0
  26. package/dist/DateCalendar/utils/dayOfWeek.d.ts.map +1 -0
  27. package/dist/DateCalendar/utils/dayOfWeek.js +6 -0
  28. package/dist/DateCalendar/utils/daysInMonth.d.ts +7 -0
  29. package/dist/DateCalendar/utils/daysInMonth.d.ts.map +1 -0
  30. package/dist/DateCalendar/utils/daysInMonth.js +14 -0
  31. package/dist/DateCalendar/utils/month.d.ts +14 -0
  32. package/dist/DateCalendar/utils/month.d.ts.map +1 -0
  33. package/dist/DateCalendar/utils/month.js +24 -0
  34. package/dist/DateCalendar/utils/shift.d.ts +3 -0
  35. package/dist/DateCalendar/utils/shift.d.ts.map +1 -0
  36. package/dist/DateCalendar/utils/shift.js +12 -0
  37. package/dist/DatePicker/index.d.ts +68 -62
  38. package/dist/DatePicker/index.d.ts.map +1 -1
  39. package/dist/DatePicker/index.js +359 -265
  40. package/dist/DatePicker/utils/createTimes.d.ts +7 -0
  41. package/dist/DatePicker/utils/createTimes.d.ts.map +1 -0
  42. package/dist/DatePicker/utils/createTimes.js +15 -0
  43. package/dist/GlobalStyles/resetStyles.d.ts.map +1 -1
  44. package/dist/GlobalStyles/typographyStyles.d.ts.map +1 -1
  45. package/dist/Input/index.d.ts +15 -0
  46. package/dist/Input/index.d.ts.map +1 -1
  47. package/dist/Input/index.js +5 -5
  48. package/dist/Input/utils/getFocusableElements.d.ts.map +1 -1
  49. package/dist/InputDateUnstyled/index.d.ts +94 -0
  50. package/dist/InputDateUnstyled/index.d.ts.map +1 -0
  51. package/dist/InputDateUnstyled/index.js +406 -0
  52. package/dist/InputDateUnstyled/utils/convertHours.d.ts +4 -0
  53. package/dist/InputDateUnstyled/utils/convertHours.d.ts.map +1 -0
  54. package/dist/InputDateUnstyled/utils/convertHours.js +12 -0
  55. package/dist/InputDateUnstyled/utils/convertToFullYear.d.ts +3 -0
  56. package/dist/InputDateUnstyled/utils/convertToFullYear.d.ts.map +1 -0
  57. package/dist/InputDateUnstyled/utils/convertToFullYear.js +10 -0
  58. package/dist/InputDateUnstyled/utils/dateToString.d.ts +3 -0
  59. package/dist/InputDateUnstyled/utils/dateToString.d.ts.map +1 -0
  60. package/dist/InputDateUnstyled/utils/dateToString.js +10 -0
  61. package/dist/InputDateUnstyled/utils/daysInMonth.d.ts +7 -0
  62. package/dist/InputDateUnstyled/utils/daysInMonth.d.ts.map +1 -0
  63. package/dist/InputDateUnstyled/utils/daysInMonth.js +14 -0
  64. package/dist/InputDateUnstyled/utils/ensureCaretVisible.d.ts +3 -0
  65. package/dist/InputDateUnstyled/utils/ensureCaretVisible.d.ts.map +1 -0
  66. package/dist/InputDateUnstyled/utils/ensureCaretVisible.js +32 -0
  67. package/dist/InputDateUnstyled/utils/eraseSelectedTokens.d.ts +10 -0
  68. package/dist/InputDateUnstyled/utils/eraseSelectedTokens.d.ts.map +1 -0
  69. package/dist/InputDateUnstyled/utils/eraseSelectedTokens.js +29 -0
  70. package/dist/InputDateUnstyled/utils/replaceSubstring.d.ts +3 -0
  71. package/dist/InputDateUnstyled/utils/replaceSubstring.d.ts.map +1 -0
  72. package/dist/InputDateUnstyled/utils/replaceSubstring.js +9 -0
  73. package/dist/InputDateUnstyled/utils/same.d.ts +6 -0
  74. package/dist/InputDateUnstyled/utils/same.d.ts.map +1 -0
  75. package/dist/InputDateUnstyled/utils/same.js +3 -0
  76. package/dist/InputDateUnstyled/utils/stringToDay.d.ts +12 -0
  77. package/dist/InputDateUnstyled/utils/stringToDay.d.ts.map +1 -0
  78. package/dist/InputDateUnstyled/utils/stringToDay.js +55 -0
  79. package/dist/InputDateUnstyled/utils/stringToTime.d.ts +7 -0
  80. package/dist/InputDateUnstyled/utils/stringToTime.d.ts.map +1 -0
  81. package/dist/InputDateUnstyled/utils/stringToTime.js +40 -0
  82. package/dist/InputDateUnstyled/utils/token.d.ts +9 -0
  83. package/dist/InputDateUnstyled/utils/token.d.ts.map +1 -0
  84. package/dist/InputDateUnstyled/utils/token.js +66 -0
  85. package/dist/Link/index.d.ts.map +1 -1
  86. package/dist/Link/index.js +3 -8
  87. package/dist/LinkButton/index.d.ts.map +1 -1
  88. package/dist/LinkButton/index.js +0 -5
  89. package/dist/List/utils/bodyPointerEvents.d.ts.map +1 -1
  90. package/dist/List/utils/frameTimeout.d.ts.map +1 -1
  91. package/dist/List/utils/useRWLoadNext.d.ts.map +1 -1
  92. package/dist/LogoLink/index.d.ts.map +1 -1
  93. package/dist/LogoLink/index.js +1 -6
  94. package/dist/Menu/utils/useFocusWithArrows.d.ts.map +1 -1
  95. package/dist/Modal/index.d.ts +5 -0
  96. package/dist/Modal/index.d.ts.map +1 -1
  97. package/dist/Modal/index.js +53 -48
  98. package/dist/Navigation/utils/useScrollFlags.d.ts.map +1 -1
  99. package/dist/NavigationItem/index.d.ts.map +1 -1
  100. package/dist/NavigationItem/index.js +1 -6
  101. package/dist/Popover/utils/usePopoverPosition.d.ts.map +1 -1
  102. package/dist/ScrollButton/utils/useContainerPosition.d.ts.map +1 -1
  103. package/dist/ScrollButton/utils/useVisibility.d.ts.map +1 -1
  104. package/dist/Select/index.d.ts.map +1 -1
  105. package/dist/Select/index.js +2 -3
  106. package/dist/Switch/index.d.ts.map +1 -1
  107. package/dist/Switch/index.js +1 -7
  108. package/dist/TagLink/index.d.ts.map +1 -1
  109. package/dist/TagLink/index.js +1 -6
  110. package/dist/TimeGrid/index.d.ts +63 -0
  111. package/dist/TimeGrid/index.d.ts.map +1 -0
  112. package/dist/TimeGrid/index.js +111 -0
  113. package/dist/TimeGrid/utils/convertHours.d.ts +4 -0
  114. package/dist/TimeGrid/utils/convertHours.d.ts.map +1 -0
  115. package/dist/TimeGrid/utils/convertHours.js +12 -0
  116. package/dist/TimeGrid/utils/createTimes.d.ts +7 -0
  117. package/dist/TimeGrid/utils/createTimes.d.ts.map +1 -0
  118. package/dist/TimeGrid/utils/createTimes.js +15 -0
  119. package/dist/TimeGrid/utils/timeToString.d.ts +4 -0
  120. package/dist/TimeGrid/utils/timeToString.d.ts.map +1 -0
  121. package/dist/TimeGrid/utils/timeToString.js +12 -0
  122. package/dist/TimeGridSkeleton/index.d.ts +18 -0
  123. package/dist/TimeGridSkeleton/index.d.ts.map +1 -0
  124. package/dist/TimeGridSkeleton/index.js +33 -0
  125. package/dist/TimeList/index.d.ts +45 -0
  126. package/dist/TimeList/index.d.ts.map +1 -0
  127. package/dist/TimeList/index.js +80 -0
  128. package/dist/TimeList/utils/convertHours.d.ts +4 -0
  129. package/dist/TimeList/utils/convertHours.d.ts.map +1 -0
  130. package/dist/TimeList/utils/convertHours.js +12 -0
  131. package/dist/TimeList/utils/createTimes.d.ts +7 -0
  132. package/dist/TimeList/utils/createTimes.d.ts.map +1 -0
  133. package/dist/TimeList/utils/createTimes.js +15 -0
  134. package/dist/TimeList/utils/timeToString.d.ts +4 -0
  135. package/dist/TimeList/utils/timeToString.d.ts.map +1 -0
  136. package/dist/TimeList/utils/timeToString.js +12 -0
  137. package/dist/TimeListSkeleton/index.d.ts +13 -0
  138. package/dist/TimeListSkeleton/index.d.ts.map +1 -0
  139. package/dist/TimeListSkeleton/index.js +30 -0
  140. package/dist/index.d.ts +12 -0
  141. package/dist/index.d.ts.map +1 -1
  142. package/dist/index.js +12 -0
  143. package/dist/message/styles.d.ts.map +1 -1
  144. package/package.json +8 -8
  145. package/src/Button/index.tsx +1 -1
  146. package/src/ButtonLink/index.tsx +0 -5
  147. package/src/Checkbox/index.tsx +1 -6
  148. package/src/DateCalendar/Calendar.tsx +400 -0
  149. package/src/DateCalendar/MonthPicker.tsx +212 -0
  150. package/src/DateCalendar/index.tsx +135 -0
  151. package/src/DateCalendar/locale.ts +22 -0
  152. package/src/DateCalendar/utils/calendarDays.ts +61 -0
  153. package/src/DateCalendar/utils/dayOfWeek.ts +14 -0
  154. package/src/DateCalendar/utils/daysInMonth.ts +22 -0
  155. package/src/DateCalendar/utils/month.ts +30 -0
  156. package/src/DateCalendar/utils/shift.ts +14 -0
  157. package/src/DatePicker/index.tsx +506 -417
  158. package/src/DatePicker/utils/createTimes.ts +20 -0
  159. package/src/Input/index.tsx +11 -8
  160. package/src/InputDateUnstyled/index.tsx +533 -0
  161. package/src/InputDateUnstyled/utils/convertHours.ts +15 -0
  162. package/src/InputDateUnstyled/utils/convertToFullYear.ts +11 -0
  163. package/src/InputDateUnstyled/utils/dateToString.ts +21 -0
  164. package/src/InputDateUnstyled/utils/daysInMonth.ts +22 -0
  165. package/src/InputDateUnstyled/utils/ensureCaretVisible.ts +37 -0
  166. package/src/InputDateUnstyled/utils/eraseSelectedTokens.ts +38 -0
  167. package/src/InputDateUnstyled/utils/replaceSubstring.ts +10 -0
  168. package/src/InputDateUnstyled/utils/same.ts +15 -0
  169. package/src/InputDateUnstyled/utils/stringToDay.ts +69 -0
  170. package/src/InputDateUnstyled/utils/stringToTime.ts +48 -0
  171. package/src/InputDateUnstyled/utils/token.ts +102 -0
  172. package/src/Link/index.tsx +5 -25
  173. package/src/LinkButton/index.tsx +2 -15
  174. package/src/LogoLink/index.tsx +2 -6
  175. package/src/Modal/index.tsx +71 -60
  176. package/src/NavigationItem/index.tsx +2 -16
  177. package/src/Select/index.tsx +2 -3
  178. package/src/Switch/index.tsx +1 -11
  179. package/src/TagLink/index.tsx +3 -11
  180. package/src/TimeGrid/index.tsx +189 -0
  181. package/src/TimeGrid/utils/convertHours.ts +15 -0
  182. package/src/TimeGrid/utils/createTimes.ts +20 -0
  183. package/src/TimeGrid/utils/timeToString.ts +17 -0
  184. package/src/TimeGridSkeleton/index.tsx +50 -0
  185. package/src/TimeList/index.tsx +135 -0
  186. package/src/TimeList/utils/convertHours.ts +15 -0
  187. package/src/TimeList/utils/createTimes.ts +20 -0
  188. package/src/TimeList/utils/timeToString.ts +17 -0
  189. package/src/TimeListSkeleton/index.tsx +44 -0
  190. package/src/index.ts +12 -0
  191. package/dist/DatePicker/DatePickerCalendar.d.ts +0 -11
  192. package/dist/DatePicker/DatePickerCalendar.d.ts.map +0 -1
  193. package/dist/DatePicker/DatePickerCalendar.js +0 -178
  194. package/dist/TimePicker/index.d.ts +0 -29
  195. package/dist/TimePicker/index.d.ts.map +0 -1
  196. package/dist/TimePicker/index.js +0 -100
  197. package/src/DatePicker/DatePickerCalendar.tsx +0 -230
  198. package/src/TimePicker/index.tsx +0 -144
@@ -0,0 +1,77 @@
1
+ import { useForwardedState } from '@os-design/utils';
2
+ import { forwardRef, useEffect, useMemo, useRef, useState } from 'react';
3
+ import Calendar from './Calendar.js';
4
+ import { defaultLocale } from './locale.js';
5
+ import MonthPicker from './MonthPicker.js';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ /**
8
+ * The component to choose a date in a calendar.
9
+ */
10
+ const DateCalendar = /*#__PURE__*/forwardRef(({
11
+ firstDayOfWeek = 0,
12
+ disabledDays,
13
+ locale = defaultLocale,
14
+ value,
15
+ defaultValue,
16
+ onChange = () => {},
17
+ ...rest
18
+ }, ref) => {
19
+ const [forwardedValue, setForwardedValue] = useForwardedState({
20
+ value,
21
+ defaultValue,
22
+ onChange
23
+ });
24
+ const [showMonthPicker, setShowMonthPicker] = useState(false);
25
+ const today = useMemo(() => new Date(), []);
26
+ const [displayedMonth, setDisplayedMonth] = useState(() => {
27
+ if (forwardedValue) {
28
+ return {
29
+ year: forwardedValue.year,
30
+ month: forwardedValue.month
31
+ };
32
+ }
33
+ return {
34
+ year: today.getFullYear(),
35
+ month: today.getMonth()
36
+ };
37
+ });
38
+ const displayedMonthRef = useRef(displayedMonth);
39
+ useEffect(() => {
40
+ displayedMonthRef.current = displayedMonth;
41
+ }, [displayedMonth]);
42
+
43
+ // Update the displayed month if the value has been changed
44
+ useEffect(() => {
45
+ if (forwardedValue && (forwardedValue.year !== displayedMonthRef.current.year || forwardedValue.month !== displayedMonthRef.current.month)) {
46
+ setDisplayedMonth({
47
+ year: forwardedValue.year,
48
+ month: forwardedValue.month
49
+ });
50
+ }
51
+ }, [forwardedValue]);
52
+ return /*#__PURE__*/_jsx("div", {
53
+ ...rest,
54
+ ref: ref,
55
+ children: showMonthPicker ? /*#__PURE__*/_jsx(MonthPicker, {
56
+ locale: locale,
57
+ month: displayedMonth,
58
+ onChangeMonth: month => {
59
+ setDisplayedMonth(month);
60
+ setShowMonthPicker(false);
61
+ },
62
+ today: today
63
+ }) : /*#__PURE__*/_jsx(Calendar, {
64
+ firstDayOfWeek: firstDayOfWeek,
65
+ disabledDays: disabledDays,
66
+ locale: locale,
67
+ value: forwardedValue,
68
+ onChange: setForwardedValue,
69
+ month: displayedMonth,
70
+ onChangeMonth: setDisplayedMonth,
71
+ onSelectMonth: () => setShowMonthPicker(true),
72
+ today: today
73
+ })
74
+ });
75
+ });
76
+ DateCalendar.displayName = 'DateCalendar';
77
+ export default DateCalendar;
@@ -0,0 +1,6 @@
1
+ export interface DateCalendarLocale {
2
+ months: string[];
3
+ shortDaysOfWeek: string[];
4
+ }
5
+ export declare const defaultLocale: DateCalendarLocale;
6
+ //# sourceMappingURL=locale.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../src/DateCalendar/locale.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,eAAO,MAAM,aAAa,EAAE,kBAgB3B,CAAC"}
@@ -0,0 +1,4 @@
1
+ export const defaultLocale = {
2
+ months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
3
+ shortDaysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']
4
+ };
@@ -0,0 +1,10 @@
1
+ export interface Month {
2
+ year: number;
3
+ month: number;
4
+ }
5
+ export interface Day extends Month {
6
+ day: number;
7
+ }
8
+ declare const calendarDays: (month: Month, firstDayOfWeek?: number) => Day[];
9
+ export default calendarDays;
10
+ //# sourceMappingURL=calendarDays.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendarDays.d.ts","sourceRoot":"","sources":["../../../src/DateCalendar/utils/calendarDays.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,GAAI,SAAQ,KAAK;IAChC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,QAAA,MAAM,YAAY,GAAI,OAAO,KAAK,EAAE,iBAAgB,MAAU,KAAG,GAAG,EA6CnE,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,46 @@
1
+ import dayOfWeek from './dayOfWeek.js';
2
+ import daysInMonth from './daysInMonth.js';
3
+ import { nextMonth, prevMonth } from './month.js';
4
+ const calendarDays = (month, firstDayOfWeek = 0) => {
5
+ const days = [];
6
+
7
+ // Previous month
8
+ const firstDayOfWeekInMonth = dayOfWeek({
9
+ year: month.year,
10
+ month: month.month,
11
+ day: 1
12
+ });
13
+ const daysBeforeFirstDay = firstDayOfWeekInMonth >= firstDayOfWeek ? firstDayOfWeekInMonth - firstDayOfWeek : 7 - (firstDayOfWeek - firstDayOfWeekInMonth);
14
+ const pMonth = prevMonth(month);
15
+ const daysInPreviousMonth = daysInMonth(pMonth);
16
+ for (let i = 0; i < daysBeforeFirstDay; i++) {
17
+ days.push({
18
+ year: pMonth.year,
19
+ month: pMonth.month,
20
+ day: daysInPreviousMonth - daysBeforeFirstDay + i + 1
21
+ });
22
+ }
23
+
24
+ // Current month
25
+ const daysInCurrentMonth = daysInMonth(month);
26
+ for (let i = 1; i <= daysInCurrentMonth; i++) {
27
+ days.push({
28
+ year: month.year,
29
+ month: month.month,
30
+ day: i
31
+ });
32
+ }
33
+
34
+ // Next month
35
+ const daysAfterLastDay = 42 - days.length;
36
+ const nMonth = nextMonth(month);
37
+ for (let i = 1; i <= daysAfterLastDay; i++) {
38
+ days.push({
39
+ year: nMonth.year,
40
+ month: nMonth.month,
41
+ day: i
42
+ });
43
+ }
44
+ return days;
45
+ };
46
+ export default calendarDays;
@@ -0,0 +1,8 @@
1
+ interface Day {
2
+ year: number;
3
+ month: number;
4
+ day: number;
5
+ }
6
+ declare const dayOfWeek: (day: Day) => number;
7
+ export default dayOfWeek;
8
+ //# sourceMappingURL=dayOfWeek.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dayOfWeek.d.ts","sourceRoot":"","sources":["../../../src/DateCalendar/utils/dayOfWeek.ts"],"names":[],"mappings":"AAAA,UAAU,GAAG;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAID,QAAA,MAAM,SAAS,GAAI,KAAK,GAAG,WAG1B,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -0,0 +1,6 @@
1
+ const date = new Date();
2
+ const dayOfWeek = day => {
3
+ date.setFullYear(day.year, day.month, day.day);
4
+ return date.getDay();
5
+ };
6
+ export default dayOfWeek;
@@ -0,0 +1,7 @@
1
+ interface Month {
2
+ year: number;
3
+ month: number;
4
+ }
5
+ declare const daysInMonth: (month: Month) => 30 | 29 | 28 | 31;
6
+ export default daysInMonth;
7
+ //# sourceMappingURL=daysInMonth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daysInMonth.d.ts","sourceRoot":"","sources":["../../../src/DateCalendar/utils/daysInMonth.ts"],"names":[],"mappings":"AAAA,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,QAAA,MAAM,WAAW,GAAI,OAAO,KAAK,sBAchC,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,14 @@
1
+ const daysInMonth = month => {
2
+ switch (month.month) {
3
+ case 1:
4
+ return month.year % 4 == 0 && month.year % 100 || month.year % 400 == 0 ? 29 : 28;
5
+ case 3:
6
+ case 5:
7
+ case 8:
8
+ case 10:
9
+ return 30;
10
+ default:
11
+ return 31;
12
+ }
13
+ };
14
+ export default daysInMonth;
@@ -0,0 +1,14 @@
1
+ interface Month {
2
+ year: number;
3
+ month: number;
4
+ }
5
+ export declare const nextMonth: (month: Month) => {
6
+ month: number;
7
+ year: number;
8
+ };
9
+ export declare const prevMonth: (month: Month) => {
10
+ month: number;
11
+ year: number;
12
+ };
13
+ export {};
14
+ //# sourceMappingURL=month.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"month.d.ts","sourceRoot":"","sources":["../../../src/DateCalendar/utils/month.ts"],"names":[],"mappings":"AAAA,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,SAAS,GAAI,OAAO,KAAK;;;CAWrC,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,OAAO,KAAK;;;CAWrC,CAAC"}
@@ -0,0 +1,24 @@
1
+ export const nextMonth = month => {
2
+ if (month.month === 11) {
3
+ return {
4
+ month: 0,
5
+ year: month.year + 1
6
+ };
7
+ }
8
+ return {
9
+ month: month.month + 1,
10
+ year: month.year
11
+ };
12
+ };
13
+ export const prevMonth = month => {
14
+ if (month.month === 0) {
15
+ return {
16
+ month: 11,
17
+ year: month.year - 1
18
+ };
19
+ }
20
+ return {
21
+ month: month.month - 1,
22
+ year: month.year
23
+ };
24
+ };
@@ -0,0 +1,3 @@
1
+ declare const shift: <T>(arr: T[], n: number) => T[];
2
+ export default shift;
3
+ //# sourceMappingURL=shift.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shift.d.ts","sourceRoot":"","sources":["../../../src/DateCalendar/utils/shift.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,KAAK,GAAI,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,MAAM,KAAG,CAAC,EAWxC,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -0,0 +1,12 @@
1
+ const shift = (arr, n) => {
2
+ if (n % arr.length === 0) {
3
+ return arr;
4
+ }
5
+ const res = [];
6
+ for (let i = 0; i < arr.length; i++) {
7
+ const index = (n + i) % arr.length;
8
+ res.push(arr[index]);
9
+ }
10
+ return res;
11
+ };
12
+ export default shift;
@@ -1,114 +1,120 @@
1
- import { type DatePickerLocale } from '@os-design/date-picker-utils';
2
- import type { WithSize } from '@os-design/styles';
3
- import React from 'react';
1
+ import { type WithSize } from '@os-design/styles';
2
+ import { type ForwardedRef } from 'react';
3
+ import { type DateCalendarLocale } from '../DateCalendar/locale.js';
4
+ import type { Day, Month } from '../DateCalendar/utils/calendarDays.js';
5
+ import { type OnDayError, type Time } from '../InputDateUnstyled/index.js';
4
6
  type JsxDivProps = Omit<JSX.IntrinsicElements['div'], 'value' | 'defaultValue' | 'onChange' | 'ref'>;
5
- interface BaseDatePickerProps<T> extends JsxDivProps, WithSize {
7
+ export interface DatePickerProps extends JsxDivProps, WithSize {
6
8
  /**
7
- * The component located on the left side.
8
- * @default undefined
9
+ * The string format. Supported tokens:
10
+ * `DD` - The day of the month (01-31).
11
+ * `MM` - The month (01-12).
12
+ * `YYYY` - Four-digit year (2025).
13
+ * `YY` - Two-digit year (25).
14
+ * `hh` - The hour, 12-hour clock (01-12).
15
+ * `HH` - The hour, 24-hour clock (00-23).
16
+ * `mm` - The minute (00-59).
17
+ * `aa` - The meridiem (am, pm).
18
+ * @default `DD.MM.YYYY`
9
19
  */
10
- left?: React.ReactNode;
20
+ format?: string;
11
21
  /**
12
- * Adds padding to the left component.
13
- * It can be useful when passing an icon or text in the left component.
14
- * @default false
22
+ * First day of week (0 - Sunday).
23
+ * @default 0
15
24
  */
16
- leftHasPadding?: boolean;
25
+ firstDayOfWeek?: number;
17
26
  /**
18
- * The component located on the right side.
19
- * @default undefined
27
+ * Times shown in the list in minutes (600 is 10:00).
28
+ * @default []
20
29
  */
21
- right?: React.ReactNode;
30
+ times?: Time[];
22
31
  /**
23
- * Adds padding to the right component.
24
- * It can be useful when passing an icon or text in the right component.
25
- * @default false
26
- */
27
- rightHasPadding?: boolean;
28
- /**
29
- * The placeholder of the date picker.
30
- * @default undefined
32
+ * Number of columns where the times are shown.
33
+ * @default 3
31
34
  */
32
- placeholder?: string;
35
+ timeColumns?: number;
33
36
  /**
34
37
  * Whether the date picker is disabled.
35
38
  * @default false
36
39
  */
37
40
  disabled?: boolean;
38
41
  /**
39
- * Whether the component have a focus.
40
- * @default false
42
+ * What days are not allowed to choose in the selected month.
43
+ * @default undefined
41
44
  */
42
- autoFocus?: boolean;
45
+ disabledDays?: (month: Month) => number[] | Promise<number[]>;
43
46
  /**
44
- * Whether the component opens the popup calendar.
45
- * @default false
47
+ * What times are not allowed to choose in the selected day.
48
+ * @default undefined
46
49
  */
47
- autoOpen?: boolean;
50
+ disabledTimes?: (day: Day) => Time[] | Promise<Time[]>;
48
51
  /**
49
- * The format of the date.
52
+ * The locale.
50
53
  * @default undefined
51
54
  */
52
- format?: (value: T) => string;
55
+ locale?: DateCalendarLocale;
53
56
  /**
54
- * The first day of the week.
55
- * @default sunday
57
+ * Whether to show the calendar and time picker.
58
+ * When autoOpen is false, there is a button on the right side. When
59
+ * the user clicks on it, the calendar/time picker is shown. This button
60
+ * is hidden when autoOpen is true on the wide screens.
61
+ * @default false
56
62
  */
57
- firstDayOfWeek?: 'monday' | 'saturday' | 'sunday';
63
+ showPicker?: boolean;
58
64
  /**
59
- * The locale of the date picker.
60
- * @default undefined
65
+ * Whether the calendar and time picker is opened automatically.
66
+ * @default false
61
67
  */
62
- locale?: DatePickerLocale;
68
+ autoOpen?: boolean;
63
69
  /**
64
- * Whether the time is shown.
65
- * @default false
70
+ * The ref of the input container.
71
+ * @default undefined
66
72
  */
67
- showTime?: boolean;
73
+ containerRef?: ForwardedRef<HTMLDivElement>;
68
74
  /**
69
- * The time notation.
70
- * @default 12-hour
75
+ * The props of the input container.
76
+ * @default undefined
71
77
  */
72
- timeNotation?: '12-hour' | '24-hour';
78
+ containerProps?: JSX.IntrinsicElements['div'];
73
79
  /**
74
- * Selected date.
80
+ * The selected date.
75
81
  * @default undefined
76
82
  */
77
- value?: T | null;
83
+ value?: Date | null;
78
84
  /**
79
85
  * The default value.
80
86
  * @default undefined
81
87
  */
82
- defaultValue?: T | null;
88
+ defaultValue?: Date | null;
83
89
  /**
84
90
  * The change event handler.
85
91
  * @default undefined
86
92
  */
87
- onChange?: (value: T | null) => void;
93
+ onChange?: (value: Date | null) => void;
88
94
  /**
89
- * The event handler that is called whenever a popup closes.
95
+ * The callback called when the day is changed.
90
96
  * @default undefined
91
97
  */
92
- onClose?: () => void;
93
- }
94
- export interface DateNotRangePickerProps extends BaseDatePickerProps<Date> {
98
+ onDayChange?: (value: Day) => void;
95
99
  /**
96
- * Whether the value is a range.
97
- * @default false
100
+ * The callback called when the time is changed.
101
+ * @default undefined
98
102
  */
99
- range?: false;
100
- }
101
- export interface DateRangePickerProps extends BaseDatePickerProps<[Date, Date]> {
103
+ onTimeChange?: (value: Time) => void;
102
104
  /**
103
- * Whether the value is a range.
104
- * @default false
105
+ * The error handler called when the day has been entered incorrectly.
106
+ * @default undefined
107
+ */
108
+ onDayError?: OnDayError;
109
+ /**
110
+ * The callback called when the caret has been moved to the end.
111
+ * @default undefined
105
112
  */
106
- range: true;
113
+ onEnd?: () => void;
107
114
  }
108
- export type DatePickerProps = DateNotRangePickerProps | DateRangePickerProps;
109
115
  /**
110
- * The component to choose a date.
116
+ * The component to enter or choose a date/time.
111
117
  */
112
- declare const DatePicker: React.ForwardRefExoticComponent<DatePickerProps & React.RefAttributes<HTMLDivElement>>;
118
+ declare const DatePicker: import("react").ForwardRefExoticComponent<DatePickerProps & import("react").RefAttributes<HTMLInputElement>>;
113
119
  export default DatePicker;
114
120
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/DatePicker/index.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,gBAAgB,EAKtB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAOlD,OAAO,KAON,MAAM,OAAO,CAAC;AAiBf,KAAK,WAAW,GAAG,IAAI,CACrB,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAC5B,OAAO,GAAG,cAAc,GAAG,UAAU,GAAG,KAAK,CAC9C,CAAC;AACF,UAAU,mBAAmB,CAAC,CAAC,CAAE,SAAQ,WAAW,EAAE,QAAQ;IAC5D;;;OAGG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;IAC9B;;;OAGG;IACH,cAAc,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;IAClD;;;OAGG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACrC;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACjB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IACrC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AACD,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB,CAAC,IAAI,CAAC;IACxE;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AACD,MAAM,WAAW,oBACf,SAAQ,mBAAmB,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzC;;;OAGG;IACH,KAAK,EAAE,IAAI,CAAC;CACb;AACD,MAAM,MAAM,eAAe,GAAG,uBAAuB,GAAG,oBAAoB,CAAC;AAsC7E;;GAEG;AACH,QAAA,MAAM,UAAU,wFA4Xf,CAAC;AAIF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/DatePicker/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EAQL,KAAK,YAAY,EAElB,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAA0B,EAKxB,KAAK,UAAU,EACf,KAAK,IAAI,EAEV,MAAM,+BAA+B,CAAC;AAcvC,KAAK,WAAW,GAAG,IAAI,CACrB,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAC5B,OAAO,GAAG,cAAc,GAAG,UAAU,GAAG,KAAK,CAC9C,CAAC;AACF,MAAM,WAAW,eAAgB,SAAQ,WAAW,EAAE,QAAQ;IAC5D;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACvD;;;OAGG;IACH,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;IAC5C;;;OAGG;IACH,cAAc,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC9C;;;OAGG;IACH,KAAK,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IACnC;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;IACrC;;;OAGG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB;AA0ID;;GAEG;AACH,QAAA,MAAM,UAAU,8GAwWf,CAAC;AAIF,eAAe,UAAU,CAAC"}