@os-design/core 1.0.279 → 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 -6
  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 -6
  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
@@ -1 +1 @@
1
- {"version":3,"file":"nameToInitials.d.ts","sourceRoot":"","sources":["../../../src/Avatar/utils/nameToInitials.ts"],"names":[],"mappings":"AAAA,UAAU,IAAI;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,QAAA,MAAM,cAAc,4BAA6B,IAAI,KAAG,MAIvD,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"nameToInitials.d.ts","sourceRoot":"","sources":["../../../src/Avatar/utils/nameToInitials.ts"],"names":[],"mappings":"AAAA,UAAU,IAAI;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,QAAA,MAAM,cAAc,GAAI,yBAAyB,IAAI,KAAG,MAIvD,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"strToHue.d.ts","sourceRoot":"","sources":["../../../src/Avatar/utils/strToHue.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,QAAA,MAAM,QAAQ,QAAS,MAAM,KAAG,MAM/B,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"strToHue.d.ts","sourceRoot":"","sources":["../../../src/Avatar/utils/strToHue.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,QAAA,MAAM,QAAQ,GAAI,KAAK,MAAM,KAAG,MAM/B,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Button/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAqB,MAAM,OAAO,CAAC;AAE1C,OAAwB,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAEhF,KAAK,cAAc,GAAG,IAAI,CACxB,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAC/B,MAAM,GAAG,OAAO,GAAG,KAAK,CACzB,CAAC;AAGF,MAAM,WAAW,eAAgB,SAAQ,QAAQ;IAC/C;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IACtC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,eAAe,CAAC;AAE3D,UAAU,iBACR,SAAQ,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IACnE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,EAAE,YAAY,CAAC;CACtB;AA0DD,eAAO,MAAM,YAAY;;SAkGa,MAAO,WAAW;qHA5DvD,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,MAAM,4GAkDX,CAAC;AAIF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Button/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAqB,MAAM,OAAO,CAAC;AAE1C,OAAwB,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAEhF,KAAK,cAAc,GAAG,IAAI,CACxB,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAC/B,MAAM,GAAG,OAAO,GAAG,KAAK,CACzB,CAAC;AAGF,MAAM,WAAW,eAAgB,SAAQ,QAAQ;IAC/C;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IACtC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,eAAe,CAAC;AAE3D,UAAU,iBACR,SAAQ,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IACnE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,EAAE,YAAY,CAAC;CACtB;AA0DD,eAAO,MAAM,YAAY;;SA6FoI,MAAO,WAAW;qHAvD9K,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,MAAM,4GA6CX,CAAC;AAIF,eAAe,MAAM,CAAC"}
@@ -13,7 +13,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
13
13
  const hoverStyles = p => !p.disabled && css`
14
14
  @media (hover: hover) {
15
15
  &:hover,
16
- &:focus {
16
+ &:focus-visible {
17
17
  background-color: ${clr(p.colors.bgHover)};
18
18
  }
19
19
  }
@@ -95,7 +95,6 @@ const Button = /*#__PURE__*/forwardRef(({
95
95
  disabled = false,
96
96
  size,
97
97
  children,
98
- onMouseDown = () => {},
99
98
  ...rest
100
99
  }, ref) => {
101
100
  const {
@@ -113,10 +112,6 @@ const Button = /*#__PURE__*/forwardRef(({
113
112
  loading: loading,
114
113
  disabled: disabled || loading,
115
114
  size: size,
116
- onMouseDown: e => {
117
- onMouseDown(e);
118
- e.preventDefault();
119
- },
120
115
  "aria-busy": loading,
121
116
  ...rest,
122
117
  ref: ref,
@@ -1 +1 @@
1
- {"version":3,"file":"useButtonColors.d.ts","sourceRoot":"","sources":["../../../src/Button/utils/useButtonColors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAY,MAAM,oBAAoB,CAAC;AAG1D,UAAU,KAAK;IACb,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,KAAK,CAAC;IACZ,EAAE,CAAC,EAAE,KAAK,CAAC;IACX,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,KAAK,CAAC;IACZ,EAAE,EAAE,KAAK,CAAC;CACX;AAED,UAAU,kBAAkB;IAC1B,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;CAC9B;AAGD,QAAA,MAAM,eAAe,gCAIlB,KAAK,KAAG,kBAmDV,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"useButtonColors.d.ts","sourceRoot":"","sources":["../../../src/Button/utils/useButtonColors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAY,MAAM,oBAAoB,CAAC;AAG1D,UAAU,KAAK;IACb,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,KAAK,CAAC;IACZ,EAAE,CAAC,EAAE,KAAK,CAAC;IACX,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,KAAK,CAAC;IACZ,EAAE,EAAE,KAAK,CAAC;CACX;AAED,UAAU,kBAAkB;IAC1B,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;CAC9B;AAGD,QAAA,MAAM,eAAe,GAAI,6BAItB,KAAK,KAAG,kBAmDV,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ButtonLink/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAgB,MAAM,oBAAoB,CAAC;AAGpE,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,oBAAoB,EAC1B,MAAM,kBAAkB,CAAC;AAE1B,KAAK,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;AAClE,MAAM,MAAM,eAAe,GAAG,SAAS,GACrC,oBAAoB,GACpB,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GACrB,WAAW,CAAC;AAiBd;;GAEG;AACH,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oGAgEf,CAAC;AAIF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ButtonLink/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAgB,MAAM,oBAAoB,CAAC;AAGpE,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,oBAAoB,EAC1B,MAAM,kBAAkB,CAAC;AAE1B,KAAK,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;AAClE,MAAM,MAAM,eAAe,GAAG,SAAS,GACrC,oBAAoB,GACpB,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GACrB,WAAW,CAAC;AAiBd;;GAEG;AACH,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oGA2Df,CAAC;AAIF,eAAe,UAAU,CAAC"}
@@ -29,7 +29,6 @@ const ButtonLink = /*#__PURE__*/forwardRef(({
29
29
  disabled = false,
30
30
  size,
31
31
  as,
32
- onMouseDown = () => {},
33
32
  onKeyDown = () => {},
34
33
  children,
35
34
  ...rest
@@ -50,10 +49,6 @@ const ButtonLink = /*#__PURE__*/forwardRef(({
50
49
  disabled: disabled || loading,
51
50
  size: size,
52
51
  as: as,
53
- onMouseDown: e => {
54
- onMouseDown(e);
55
- e.preventDefault();
56
- },
57
52
  onKeyDown: e => {
58
53
  onKeyDown(e);
59
54
  if (disabled || loading) e.preventDefault();
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Checkbox/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAK3B,KAAK,aAAa,GAAG,IAAI,CACvB,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAC9B,cAAc,GAAG,UAAU,GAAG,SAAS,GAAG,KAAK,CAChD,CAAC;AACF,MAAM,WAAW,aAAc,SAAQ,aAAa,EAAE,QAAQ;IAC5D;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC;AA0HD;;GAEG;AACH,QAAA,MAAM,QAAQ,4GAyDb,CAAC;AAIF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Checkbox/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAK3B,KAAK,aAAa,GAAG,IAAI,CACvB,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAC9B,cAAc,GAAG,UAAU,GAAG,SAAS,GAAG,KAAK,CAChD,CAAC;AACF,MAAM,WAAW,aAAc,SAAQ,aAAa,EAAE,QAAQ;IAC5D;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC;AA0HD;;GAEG;AACH,QAAA,MAAM,QAAQ,4GAoDb,CAAC;AAIF,eAAe,QAAQ,CAAC"}
@@ -52,7 +52,7 @@ const hoverCheckedIconStyles = p => p.checked && css`
52
52
  const hoverStyles = p => !p.disabled && css`
53
53
  @media (hover: hover) {
54
54
  &:hover,
55
- &:focus {
55
+ &:focus-visible {
56
56
  & > span {
57
57
  ${hoverUncheckedIconStyles(p)};
58
58
  ${hoverCheckedIconStyles(p)};
@@ -95,7 +95,6 @@ const Checkbox = /*#__PURE__*/forwardRef(({
95
95
  onChange = () => {},
96
96
  size,
97
97
  onKeyDown = () => {},
98
- onMouseDown = () => {},
99
98
  children,
100
99
  ...rest
101
100
  }, ref) => {
@@ -121,10 +120,6 @@ const Checkbox = /*#__PURE__*/forwardRef(({
121
120
  }
122
121
  onKeyDown(e);
123
122
  },
124
- onMouseDown: e => {
125
- onMouseDown(e);
126
- e.preventDefault();
127
- },
128
123
  role: "checkbox",
129
124
  "aria-checked": forwardedValue,
130
125
  "aria-disabled": disabled,
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import { type Day, type Month } from './utils/calendarDays.js';
3
+ import type { DateCalendarLocale } from './locale.js';
4
+ interface DayProps {
5
+ weekend: boolean;
6
+ disabled: boolean;
7
+ }
8
+ declare const Day: import("@emotion/styled").StyledComponent<{
9
+ theme?: import("@emotion/react").Theme;
10
+ as?: React.ElementType;
11
+ } & DayProps, React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
12
+ interface CalendarProps {
13
+ firstDayOfWeek: number;
14
+ disabledDays?: (month: Month) => number[] | Promise<number[]>;
15
+ locale: DateCalendarLocale;
16
+ value?: Day | null;
17
+ onChange: (value: Day | null) => void;
18
+ month: Month;
19
+ onChangeMonth: (month: Month) => void;
20
+ onSelectMonth: () => void;
21
+ today: Date;
22
+ }
23
+ declare const Calendar: React.FC<CalendarProps>;
24
+ export default Calendar;
25
+ //# sourceMappingURL=Calendar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../src/DateCalendar/Calendar.tsx"],"names":[],"mappings":"AACA,OAAO,KAMN,MAAM,OAAO,CAAC;AAOf,OAAqB,EAAE,KAAK,GAAG,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAI7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAwGtD,UAAU,QAAQ;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AACD,QAAA,MAAM,GAAG;;SAoFiC,MAAO,WAAW;gGAhE3D,CAAC;AA8DF,UAAU,aAAa;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,KAAK,IAAI,CAAC;IACtC,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACtC,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,KAAK,EAAE,IAAI,CAAC;CACb;AAOD,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA4KrC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,271 @@
1
+ import styled from '@emotion/styled';
2
+ import React, { useCallback, useEffect, useMemo, useState } from 'react';
3
+ import Button from '../Button/index.js';
4
+ import { clr } from '@os-design/theming';
5
+ import { resetFocusStyles, transitionStyles } from '@os-design/styles';
6
+ import { omitEmotionProps } from '@os-design/utils';
7
+ import { css } from '@emotion/react';
8
+ import shift from './utils/shift.js';
9
+ import calendarDays from './utils/calendarDays.js';
10
+ import { nextMonth, prevMonth } from './utils/month.js';
11
+ import { Left, Loading, Right } from '@os-design/icons';
12
+ import dayOfWeek from './utils/dayOfWeek.js';
13
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
14
+ const Header = styled.div`
15
+ display: flex;
16
+ align-items: center;
17
+ margin-bottom: 0.5em;
18
+ `;
19
+ const MonthContainer = styled.div`
20
+ flex-grow: 1;
21
+ overflow: hidden;
22
+ `;
23
+ const MonthButton = styled(Button)`
24
+ color: ${p => clr(p.theme.colorText)};
25
+ padding: 0 0.75em;
26
+
27
+ & > span {
28
+ font-size: 1.2em;
29
+ }
30
+
31
+ @media (hover: hover) {
32
+ &:hover,
33
+ &:focus-visible {
34
+ color: ${p => clr(p.theme.colorPrimary)};
35
+ }
36
+ }
37
+ `;
38
+ const SwitchMonthButton = styled(Button)`
39
+ flex-shrink: 0;
40
+ padding: 0 0.75em;
41
+ `;
42
+ const DayGridContainer = styled.div`
43
+ position: relative;
44
+ `;
45
+ const dayGridLoadingStyles = p => p.loading && css`
46
+ filter: blur(0.15em);
47
+ `;
48
+ const DayGrid = styled('div', omitEmotionProps('loading'))`
49
+ display: grid;
50
+ grid-template-columns: repeat(7, ${p => p.theme.dateCalendarCellSize}em);
51
+ grid-auto-rows: ${p => p.theme.dateCalendarCellSize}em;
52
+ justify-content: space-between;
53
+
54
+ overflow-x: auto;
55
+
56
+ ${dayGridLoadingStyles};
57
+ `;
58
+ const dayOfWeekWeekendStyles = p => p.weekend && css`
59
+ color: ${clr(p.theme.dateCalendarDayOfWeekWeekendColorText)};
60
+ `;
61
+ const DayOfWeek = styled('div', omitEmotionProps('weekend'))`
62
+ justify-self: center;
63
+ align-self: center;
64
+ color: ${p => clr(p.theme.dateCalendarDayOfWeekColorText)};
65
+ font-size: ${p => p.theme.sizes.small}em;
66
+ ${dayOfWeekWeekendStyles};
67
+ `;
68
+ const dayWeekendStyles = p => p.weekend && css`
69
+ color: ${clr(p.theme.dateCalendarDayWeekendColorText)};
70
+ `;
71
+ const dayHoverStyles = p => !p.disabled && css`
72
+ cursor: pointer;
73
+
74
+ @media (hover: hover) {
75
+ &:hover,
76
+ &:focus-visible {
77
+ background-color: ${clr(p.theme.dateCalendarDayColorBgHover)};
78
+ color: ${clr(p.theme.dateCalendarDayColorTextHover)};
79
+ }
80
+ }
81
+ `;
82
+ const disabledStyles = p => p.disabled && css`
83
+ cursor: not-allowed;
84
+ color: ${p.weekend ? clr(p.theme.dateCalendarDisabledDayWeekendColorText) : clr(p.theme.dateCalendarDisabledDayColorText)};
85
+ `;
86
+ const Day = styled('div', omitEmotionProps('weekend', 'disabled'))`
87
+ ${resetFocusStyles};
88
+ justify-self: center;
89
+ align-self: center;
90
+ user-select: none;
91
+ -webkit-user-select: none;
92
+
93
+ width: ${p => p.theme.dateCalendarDaySize}em;
94
+ height: ${p => p.theme.dateCalendarDaySize}em;
95
+
96
+ display: flex;
97
+ justify-content: center;
98
+ align-items: center;
99
+
100
+ border-radius: ${p => p.theme.borderRadius}em;
101
+
102
+ ${dayHoverStyles};
103
+ ${dayWeekendStyles};
104
+ ${disabledStyles};
105
+ ${transitionStyles('background-color', 'color')};
106
+ `;
107
+ const dayAnotherMonthWeekendStyles = p => p.weekend && css`
108
+ color: ${clr(p.theme.dateCalendarDayAnotherMonthWeekendColorText)};
109
+ `;
110
+ const DayAnotherMonth = styled(Day)`
111
+ ${p => !p.disabled && css`
112
+ color: ${clr(p.theme.dateCalendarDayAnotherMonthColorText)};
113
+ ${dayAnotherMonthWeekendStyles(p)};
114
+ `};
115
+ `;
116
+ const Today = styled(Day)`
117
+ border: 2px dashed ${p => clr(p.theme.dateCalendarTodayColorBorder)};
118
+ box-sizing: border-box;
119
+ `;
120
+ const selectedDayHoverStyles = p => !p.disabled && css`
121
+ @media (hover: hover) {
122
+ &:hover,
123
+ &:focus-visible {
124
+ background-color: ${clr(p.theme.dateCalendarSelectedDayColorBgHover)};
125
+ color: ${clr(p.theme.dateCalendarSelectedDayColorTextHover)};
126
+ }
127
+ }
128
+ `;
129
+ const SelectedDay = styled(Day)`
130
+ background-color: ${p => clr(p.theme.dateCalendarSelectedDayColorBg)};
131
+ color: ${p => clr(p.theme.dateCalendarSelectedDayColorText)};
132
+ ${selectedDayHoverStyles};
133
+ `;
134
+ const LoadingContainer = styled.div`
135
+ position: absolute;
136
+ top: 0;
137
+ bottom: 0;
138
+ left: 0;
139
+ right: 0;
140
+
141
+ display: flex;
142
+ justify-content: center;
143
+ align-items: center;
144
+
145
+ background-color: ${p => clr([...p.theme.colorBg.slice(0, 3), 0.6])};
146
+ `;
147
+ const StyledLoading = styled(Loading)`
148
+ color: ${p => clr(p.theme.colorPrimary)};
149
+ font-size: 1.8em;
150
+ `;
151
+ const daysOfWeek = [0, 1, 2, 3, 4, 5, 6];
152
+ const Calendar = ({
153
+ firstDayOfWeek,
154
+ disabledDays: disabledDaysFn,
155
+ locale,
156
+ value,
157
+ onChange,
158
+ month,
159
+ onChangeMonth,
160
+ onSelectMonth,
161
+ today
162
+ }) => {
163
+ const [loading, setLoading] = useState(false);
164
+ const [disabledDays, setDisabledDays] = useState([]);
165
+ useEffect(() => {
166
+ if (!disabledDaysFn) return;
167
+ let mounted = true;
168
+ const fn = async () => {
169
+ setLoading(true);
170
+ const disabledDays = await disabledDaysFn(month);
171
+ if (mounted) {
172
+ setDisabledDays(disabledDays);
173
+ setLoading(false);
174
+ }
175
+ };
176
+ fn();
177
+ return () => {
178
+ mounted = false;
179
+ };
180
+ }, [disabledDaysFn, month]);
181
+ const shiftedDaysOfWeek = useMemo(() => shift(daysOfWeek, firstDayOfWeek), [firstDayOfWeek]);
182
+ const days = useMemo(() => calendarDays(month, firstDayOfWeek), [month, firstDayOfWeek]);
183
+ const getDayProps = useCallback((day, disabled) => {
184
+ if (disabled) {
185
+ return {};
186
+ }
187
+ return {
188
+ tabIndex: 0,
189
+ role: 'button',
190
+ onClick: () => onChange(day),
191
+ onKeyDown: e => {
192
+ if (e.key === 'Enter') {
193
+ onChange(day);
194
+ }
195
+ }
196
+ };
197
+ }, [onChange]);
198
+ return /*#__PURE__*/_jsxs(_Fragment, {
199
+ children: [/*#__PURE__*/_jsxs(Header, {
200
+ children: [/*#__PURE__*/_jsx(MonthContainer, {
201
+ children: /*#__PURE__*/_jsxs(MonthButton, {
202
+ type: "ghost",
203
+ wide: "never",
204
+ size: "small",
205
+ onClick: onSelectMonth,
206
+ children: [locale.months[month.month], " ", month.year]
207
+ })
208
+ }), /*#__PURE__*/_jsx(SwitchMonthButton, {
209
+ type: "ghost",
210
+ wide: "never",
211
+ size: "small",
212
+ onClick: () => onChangeMonth(prevMonth(month)),
213
+ children: /*#__PURE__*/_jsx(Left, {})
214
+ }), /*#__PURE__*/_jsx(SwitchMonthButton, {
215
+ type: "ghost",
216
+ wide: "never",
217
+ size: "small",
218
+ onClick: () => onChangeMonth(nextMonth(month)),
219
+ children: /*#__PURE__*/_jsx(Right, {})
220
+ })]
221
+ }), /*#__PURE__*/_jsxs(DayGridContainer, {
222
+ children: [/*#__PURE__*/_jsxs(DayGrid, {
223
+ loading: loading,
224
+ children: [shiftedDaysOfWeek.map(i => {
225
+ return /*#__PURE__*/_jsx(DayOfWeek, {
226
+ weekend: i === 6 || i === 0,
227
+ children: locale.shortDaysOfWeek[i]
228
+ }, i);
229
+ }), days.map(day => {
230
+ const key = `${day.year}/${day.month}/${day.day}`;
231
+ const dow = dayOfWeek(day);
232
+ const weekend = dow === 6 || dow === 0;
233
+ if (day.month !== month.month) {
234
+ return /*#__PURE__*/_jsx(DayAnotherMonth, {
235
+ weekend: weekend,
236
+ disabled: !!disabledDaysFn,
237
+ ...getDayProps(day, !!disabledDaysFn),
238
+ children: day.day
239
+ }, key);
240
+ }
241
+ const disabled = disabledDays.includes(day.day);
242
+ if (value && value.year === day.year && value.month === day.month && value.day === day.day) {
243
+ return /*#__PURE__*/_jsx(SelectedDay, {
244
+ weekend: weekend,
245
+ disabled: disabled,
246
+ ...getDayProps(day, disabled),
247
+ children: day.day
248
+ }, key);
249
+ }
250
+ if (today.getFullYear() === day.year && today.getMonth() === day.month && today.getDate() === day.day) {
251
+ return /*#__PURE__*/_jsx(Today, {
252
+ weekend: weekend,
253
+ disabled: disabled,
254
+ ...getDayProps(day, disabled),
255
+ children: day.day
256
+ }, key);
257
+ }
258
+ return /*#__PURE__*/_jsx(Day, {
259
+ weekend: weekend,
260
+ disabled: disabled,
261
+ ...getDayProps(day, disabled),
262
+ children: day.day
263
+ }, key);
264
+ })]
265
+ }), loading && /*#__PURE__*/_jsx(LoadingContainer, {
266
+ children: /*#__PURE__*/_jsx(StyledLoading, {})
267
+ })]
268
+ })]
269
+ });
270
+ };
271
+ export default Calendar;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import type { Month } from './utils/calendarDays.js';
3
+ import type { DateCalendarLocale } from './locale.js';
4
+ interface MonthPickerProps {
5
+ locale: DateCalendarLocale;
6
+ month: Month;
7
+ onChangeMonth: (month: Month) => void;
8
+ today: Date;
9
+ }
10
+ declare const MonthPicker: React.FC<MonthPickerProps>;
11
+ export default MonthPicker;
12
+ //# sourceMappingURL=MonthPicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonthPicker.d.ts","sourceRoot":"","sources":["../../src/DateCalendar/MonthPicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AA2DtD,UAAU,gBAAgB;IACxB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACtC,KAAK,EAAE,IAAI,CAAC;CACb;AAED,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAuI3C,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,159 @@
1
+ import React, { useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
2
+ import styled from '@emotion/styled';
3
+ import Button from '../Button/index.js';
4
+ import { clr } from '@os-design/theming';
5
+ import { css } from '@emotion/react';
6
+ import { omitEmotionProps } from '@os-design/utils';
7
+ import { enableScrollingStyles } from '@os-design/styles';
8
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
9
+ const Header = styled.div`
10
+ display: flex;
11
+ align-items: center;
12
+ margin-bottom: 0.5em;
13
+ `;
14
+ const BackButtonContainer = styled.div`
15
+ flex-grow: 1;
16
+ `;
17
+ const DateButton = styled(Button)`
18
+ padding: 0 0.75em;
19
+ & > span {
20
+ font-size: ${p => p.theme.sizes.large}em;
21
+ }
22
+ `;
23
+ const Container = styled.div`
24
+ position: relative;
25
+ height: ${p => p.theme.dateCalendarCellSize * 7}em;
26
+
27
+ display: flex;
28
+ justify-content: center;
29
+ column-gap: 0.5em;
30
+ `;
31
+ const List = styled.div`
32
+ ${enableScrollingStyles('y', false)};
33
+ `;
34
+ const selectedStyles = p => p.selected && css`
35
+ & > span {
36
+ color: ${clr(p.theme.buttonGhostColorText)};
37
+ }
38
+ `;
39
+ const ListItemButton = styled(Button, omitEmotionProps('selected'))`
40
+ & > span {
41
+ color: ${p => clr(p.theme.colorText)};
42
+ }
43
+ ${selectedStyles};
44
+ `;
45
+ const MonthPicker = ({
46
+ locale,
47
+ month,
48
+ onChangeMonth,
49
+ today
50
+ }) => {
51
+ const [selectedMonth, setSelectedMonth] = useState(month);
52
+ const [selectedParts, setSelectedParts] = useState({
53
+ year: false,
54
+ month: false
55
+ });
56
+ const yearListRef = useRef(null);
57
+ const monthListRef = useRef(null);
58
+ const selectedYearButtonRef = useRef(null);
59
+ const selectedMonthButtonRef = useRef(null);
60
+
61
+ // Scroll the lists to the selected year and month
62
+ useLayoutEffect(() => {
63
+ if (monthListRef.current && selectedMonthButtonRef.current) {
64
+ monthListRef.current.scrollTo({
65
+ top: selectedMonthButtonRef.current.offsetTop
66
+ });
67
+ }
68
+ if (yearListRef.current && selectedYearButtonRef.current) {
69
+ yearListRef.current.scrollTo({
70
+ top: selectedYearButtonRef.current.offsetTop
71
+ });
72
+ }
73
+ }, []);
74
+
75
+ // Call the onChangeMonth callback when all the parts are selected
76
+ useEffect(() => {
77
+ if (selectedParts.year && selectedParts.month) {
78
+ onChangeMonth(selectedMonth);
79
+ }
80
+ }, [onChangeMonth, selectedMonth, selectedParts.month, selectedParts.year]);
81
+ const years = useMemo(() => {
82
+ const res = [];
83
+ for (let i = -100; i <= 10; i++) {
84
+ res.push(today.getFullYear() + i);
85
+ }
86
+ return res;
87
+ }, [today]);
88
+ return /*#__PURE__*/_jsxs(_Fragment, {
89
+ children: [/*#__PURE__*/_jsxs(Header, {
90
+ children: [/*#__PURE__*/_jsx(BackButtonContainer, {
91
+ children: /*#__PURE__*/_jsxs(DateButton, {
92
+ type: "ghost",
93
+ wide: "never",
94
+ size: "small",
95
+ onClick: () => {
96
+ onChangeMonth(selectedMonth);
97
+ },
98
+ children: [locale.months[selectedMonth.month], " ", selectedMonth.year]
99
+ })
100
+ }), (selectedMonth.year !== today.getFullYear() || selectedMonth.month !== today.getMonth()) && /*#__PURE__*/_jsxs(DateButton, {
101
+ type: "ghost",
102
+ wide: "never",
103
+ size: "small",
104
+ onClick: () => {
105
+ onChangeMonth({
106
+ year: today.getFullYear(),
107
+ month: today.getMonth()
108
+ });
109
+ },
110
+ children: [locale.months[today.getMonth()], " ", today.getFullYear()]
111
+ })]
112
+ }), /*#__PURE__*/_jsxs(Container, {
113
+ children: [/*#__PURE__*/_jsx(List, {
114
+ ref: monthListRef,
115
+ children: locale.months.map((item, index) => {
116
+ const selected = index === selectedMonth.month;
117
+ return /*#__PURE__*/_jsx(ListItemButton, {
118
+ ref: selected ? selectedMonthButtonRef : undefined,
119
+ type: "ghost",
120
+ selected: selected,
121
+ onClick: () => {
122
+ setSelectedMonth(prev => ({
123
+ year: prev.year,
124
+ month: index
125
+ }));
126
+ setSelectedParts(prev => ({
127
+ year: selected || prev.year,
128
+ month: true
129
+ }));
130
+ },
131
+ children: item
132
+ }, item);
133
+ })
134
+ }), /*#__PURE__*/_jsx(List, {
135
+ ref: yearListRef,
136
+ children: years.map(item => {
137
+ const selected = item === selectedMonth.year;
138
+ return /*#__PURE__*/_jsx(ListItemButton, {
139
+ ref: selected ? selectedYearButtonRef : undefined,
140
+ selected: selected,
141
+ type: "ghost",
142
+ onClick: () => {
143
+ setSelectedMonth(prev => ({
144
+ year: item,
145
+ month: prev.month
146
+ }));
147
+ setSelectedParts(prev => ({
148
+ year: true,
149
+ month: selected || prev.month
150
+ }));
151
+ },
152
+ children: item
153
+ }, item);
154
+ })
155
+ })]
156
+ })]
157
+ });
158
+ };
159
+ export default MonthPicker;
@@ -0,0 +1,41 @@
1
+ import { type DateCalendarLocale } from './locale.js';
2
+ import type { Day, Month } from './utils/calendarDays.js';
3
+ type JsxDivProps = Omit<JSX.IntrinsicElements['div'], 'defaultValue' | 'onChange' | 'ref'>;
4
+ export interface DateCalendarProps extends JsxDivProps {
5
+ /**
6
+ * First day of week (0 - Sunday).
7
+ * @default 0
8
+ */
9
+ firstDayOfWeek?: number;
10
+ /**
11
+ * What days are not allowed to choose in the selected month.
12
+ * @default undefined
13
+ */
14
+ disabledDays?: (month: Month) => number[] | Promise<number[]>;
15
+ /**
16
+ * The locale.
17
+ * @default undefined
18
+ */
19
+ locale?: DateCalendarLocale;
20
+ /**
21
+ * The selected date.
22
+ * @default undefined
23
+ */
24
+ value?: Day | null;
25
+ /**
26
+ * The default value.
27
+ * @default undefined
28
+ */
29
+ defaultValue?: Day | null;
30
+ /**
31
+ * The change event handler.
32
+ * @default undefined
33
+ */
34
+ onChange?: (value: Day | null) => void;
35
+ }
36
+ /**
37
+ * The component to choose a date in a calendar.
38
+ */
39
+ declare const DateCalendar: import("react").ForwardRefExoticComponent<DateCalendarProps & import("react").RefAttributes<HTMLDivElement>>;
40
+ export default DateCalendar;
41
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/DateCalendar/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAE1D,KAAK,WAAW,GAAG,IAAI,CACrB,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAC5B,cAAc,GAAG,UAAU,GAAG,KAAK,CACpC,CAAC;AACF,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D;;;OAGG;IACH,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B;;;OAGG;IACH,KAAK,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,KAAK,IAAI,CAAC;CACxC;AAED;;GAEG;AACH,QAAA,MAAM,YAAY,8GAmFjB,CAAC;AAIF,eAAe,YAAY,CAAC"}