@skbkontur/react-ui 4.23.0 → 4.24.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 (210) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/cjs/components/Calendar/Calendar.d.ts +40 -5
  3. package/cjs/components/Calendar/Calendar.js +92 -36
  4. package/cjs/components/Calendar/Calendar.js.map +1 -1
  5. package/cjs/components/Calendar/Calendar.md +42 -1
  6. package/cjs/components/Calendar/Calendar.styles.js +1 -1
  7. package/cjs/components/Calendar/Calendar.styles.js.map +1 -1
  8. package/cjs/components/Calendar/CalendarContext.d.ts +12 -0
  9. package/cjs/components/Calendar/CalendarContext.js +16 -0
  10. package/cjs/components/Calendar/CalendarContext.js.map +1 -0
  11. package/cjs/components/Calendar/CalendarDateShape.d.ts +4 -2
  12. package/cjs/components/Calendar/CalendarDateShape.js +13 -3
  13. package/cjs/components/Calendar/CalendarDateShape.js.map +1 -1
  14. package/cjs/components/Calendar/CalendarDay.d.ts +12 -0
  15. package/cjs/components/Calendar/CalendarDay.js +77 -0
  16. package/cjs/components/Calendar/CalendarDay.js.map +1 -0
  17. package/cjs/components/Calendar/CalendarDay.md +70 -0
  18. package/cjs/components/Calendar/CalendarUtils.d.ts +2 -1
  19. package/cjs/components/Calendar/CalendarUtils.js +4 -6
  20. package/cjs/components/Calendar/CalendarUtils.js.map +1 -1
  21. package/cjs/components/Calendar/DayCellView.d.ts +4 -12
  22. package/cjs/components/Calendar/DayCellView.js +20 -43
  23. package/cjs/components/Calendar/DayCellView.js.map +1 -1
  24. package/cjs/components/Calendar/DayCellView.styles.d.ts +2 -5
  25. package/cjs/components/Calendar/DayCellView.styles.js +17 -24
  26. package/cjs/components/Calendar/DayCellView.styles.js.map +1 -1
  27. package/cjs/components/Calendar/Month.d.ts +0 -10
  28. package/cjs/components/Calendar/Month.js +33 -86
  29. package/cjs/components/Calendar/Month.js.map +1 -1
  30. package/cjs/components/Calendar/MonthView.d.ts +3 -2
  31. package/cjs/components/Calendar/MonthView.js +47 -37
  32. package/cjs/components/Calendar/MonthView.js.map +1 -1
  33. package/cjs/components/Calendar/MonthView.styles.d.ts +3 -0
  34. package/cjs/components/Calendar/MonthView.styles.js +45 -7
  35. package/cjs/components/Calendar/MonthView.styles.js.map +1 -1
  36. package/cjs/components/Calendar/MonthViewModel.js +24 -6
  37. package/cjs/components/Calendar/MonthViewModel.js.map +1 -1
  38. package/cjs/components/Calendar/config.js +12 -6
  39. package/cjs/components/Calendar/config.js.map +1 -1
  40. package/cjs/components/Calendar/index.d.ts +1 -0
  41. package/cjs/components/Calendar/index.js +2 -1
  42. package/cjs/components/Calendar/index.js.map +1 -1
  43. package/cjs/components/DatePicker/DatePicker.d.ts +4 -1
  44. package/cjs/components/DatePicker/DatePicker.js +71 -44
  45. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  46. package/cjs/components/DatePicker/DatePicker.md +36 -1
  47. package/cjs/components/DatePicker/DatePickerHelpers.js +2 -1
  48. package/cjs/components/DatePicker/DatePickerHelpers.js.map +1 -1
  49. package/cjs/components/DatePicker/MobilePicker.d.ts +10 -0
  50. package/cjs/components/DatePicker/MobilePicker.js +118 -0
  51. package/cjs/components/DatePicker/MobilePicker.js.map +1 -0
  52. package/cjs/components/DatePicker/MobilePicker.styles.d.ts +3 -0
  53. package/cjs/components/DatePicker/MobilePicker.styles.js +8 -0
  54. package/cjs/components/DatePicker/MobilePicker.styles.js.map +1 -0
  55. package/cjs/components/DatePicker/getMobilePickerTheme.d.ts +2 -0
  56. package/cjs/components/DatePicker/getMobilePickerTheme.js +19 -0
  57. package/cjs/components/DatePicker/getMobilePickerTheme.js.map +1 -0
  58. package/cjs/internal/DateSelect/DateSelect.d.ts +2 -0
  59. package/cjs/internal/DateSelect/DateSelect.js +50 -4
  60. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  61. package/cjs/internal/DateSelect/DateSelect.styles.d.ts +1 -0
  62. package/cjs/internal/DateSelect/DateSelect.styles.js +15 -1
  63. package/cjs/internal/DateSelect/DateSelect.styles.js.map +1 -1
  64. package/cjs/internal/DateSelect/locale/locales/en.js +2 -1
  65. package/cjs/internal/DateSelect/locale/locales/en.js.map +1 -1
  66. package/cjs/internal/DateSelect/locale/locales/ru.js +2 -1
  67. package/cjs/internal/DateSelect/locale/locales/ru.js.map +1 -1
  68. package/cjs/internal/DateSelect/locale/types.d.ts +1 -0
  69. package/cjs/internal/MobilePopup/MobilePopup.d.ts +4 -0
  70. package/cjs/internal/MobilePopup/MobilePopup.js +8 -2
  71. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  72. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +7 -0
  73. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js +32 -0
  74. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js.map +1 -0
  75. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +4 -0
  76. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js +15 -0
  77. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js.map +1 -0
  78. package/cjs/internal/MobilePopup/MobilePopupFooter/index.d.ts +1 -0
  79. package/cjs/internal/MobilePopup/MobilePopupFooter/index.js +1 -0
  80. package/cjs/internal/MobilePopup/MobilePopupFooter/index.js.map +1 -0
  81. package/cjs/internal/NativeDateInput/utils.js +3 -2
  82. package/cjs/internal/NativeDateInput/utils.js.map +1 -1
  83. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  84. package/cjs/internal/themes/DefaultTheme.d.ts +15 -0
  85. package/cjs/internal/themes/DefaultTheme.js +23 -3
  86. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  87. package/cjs/lib/date/InternalDate.d.ts +2 -0
  88. package/cjs/lib/date/InternalDate.js +8 -1
  89. package/cjs/lib/date/InternalDate.js.map +1 -1
  90. package/cjs/lib/date/InternalDateTransformer.d.ts +3 -0
  91. package/cjs/lib/date/InternalDateTransformer.js +23 -0
  92. package/cjs/lib/date/InternalDateTransformer.js.map +1 -1
  93. package/cjs/lib/date/InternalDateValidator.js +2 -1
  94. package/cjs/lib/date/InternalDateValidator.js.map +1 -1
  95. package/cjs/lib/date/comparison.d.ts +6 -0
  96. package/cjs/lib/date/comparison.js +44 -0
  97. package/cjs/lib/date/comparison.js.map +1 -0
  98. package/cjs/lib/locale/constants.d.ts +3 -0
  99. package/cjs/lib/locale/constants.js +6 -2
  100. package/cjs/lib/locale/constants.js.map +1 -1
  101. package/components/Calendar/Calendar/Calendar.js +81 -64
  102. package/components/Calendar/Calendar/Calendar.js.map +1 -1
  103. package/components/Calendar/Calendar.d.ts +40 -5
  104. package/components/Calendar/Calendar.md +42 -1
  105. package/components/Calendar/Calendar.styles/Calendar.styles.js +1 -1
  106. package/components/Calendar/Calendar.styles/Calendar.styles.js.map +1 -1
  107. package/components/Calendar/CalendarContext/CalendarContext.js +2 -0
  108. package/components/Calendar/CalendarContext/CalendarContext.js.map +1 -0
  109. package/components/Calendar/CalendarContext/package.json +6 -0
  110. package/components/Calendar/CalendarContext.d.ts +12 -0
  111. package/components/Calendar/CalendarDateShape/CalendarDateShape.js +23 -1
  112. package/components/Calendar/CalendarDateShape/CalendarDateShape.js.map +1 -1
  113. package/components/Calendar/CalendarDateShape.d.ts +4 -2
  114. package/components/Calendar/CalendarDay/CalendarDay.js +62 -0
  115. package/components/Calendar/CalendarDay/CalendarDay.js.map +1 -0
  116. package/components/Calendar/CalendarDay/package.json +6 -0
  117. package/components/Calendar/CalendarDay.d.ts +12 -0
  118. package/components/Calendar/CalendarDay.md +70 -0
  119. package/components/Calendar/CalendarUtils/CalendarUtils.js +5 -4
  120. package/components/Calendar/CalendarUtils/CalendarUtils.js.map +1 -1
  121. package/components/Calendar/CalendarUtils.d.ts +2 -1
  122. package/components/Calendar/DayCellView/DayCellView.js +32 -46
  123. package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
  124. package/components/Calendar/DayCellView.d.ts +4 -12
  125. package/components/Calendar/DayCellView.styles/DayCellView.styles.js +10 -13
  126. package/components/Calendar/DayCellView.styles/DayCellView.styles.js.map +1 -1
  127. package/components/Calendar/DayCellView.styles.d.ts +2 -5
  128. package/components/Calendar/Month/Month.js +45 -80
  129. package/components/Calendar/Month/Month.js.map +1 -1
  130. package/components/Calendar/Month.d.ts +0 -10
  131. package/components/Calendar/MonthView/MonthView.js +49 -44
  132. package/components/Calendar/MonthView/MonthView.js.map +1 -1
  133. package/components/Calendar/MonthView.d.ts +3 -2
  134. package/components/Calendar/MonthView.styles/MonthView.styles.js +20 -6
  135. package/components/Calendar/MonthView.styles/MonthView.styles.js.map +1 -1
  136. package/components/Calendar/MonthView.styles.d.ts +3 -0
  137. package/components/Calendar/MonthViewModel/MonthViewModel.js +9 -6
  138. package/components/Calendar/MonthViewModel/MonthViewModel.js.map +1 -1
  139. package/components/Calendar/config/config.js +6 -4
  140. package/components/Calendar/config/config.js.map +1 -1
  141. package/components/Calendar/index/index.js +2 -1
  142. package/components/Calendar/index/index.js.map +1 -1
  143. package/components/Calendar/index.d.ts +1 -0
  144. package/components/DatePicker/DatePicker/DatePicker.js +60 -38
  145. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  146. package/components/DatePicker/DatePicker.d.ts +4 -1
  147. package/components/DatePicker/DatePicker.md +36 -1
  148. package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js +2 -1
  149. package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js.map +1 -1
  150. package/components/DatePicker/MobilePicker/MobilePicker.js +91 -0
  151. package/components/DatePicker/MobilePicker/MobilePicker.js.map +1 -0
  152. package/components/DatePicker/MobilePicker/package.json +6 -0
  153. package/components/DatePicker/MobilePicker.d.ts +10 -0
  154. package/components/DatePicker/MobilePicker.styles/MobilePicker.styles.js +10 -0
  155. package/components/DatePicker/MobilePicker.styles/MobilePicker.styles.js.map +1 -0
  156. package/components/DatePicker/MobilePicker.styles/package.json +6 -0
  157. package/components/DatePicker/MobilePicker.styles.d.ts +3 -0
  158. package/components/DatePicker/getMobilePickerTheme/getMobilePickerTheme.js +14 -0
  159. package/components/DatePicker/getMobilePickerTheme/getMobilePickerTheme.js.map +1 -0
  160. package/components/DatePicker/getMobilePickerTheme/package.json +6 -0
  161. package/components/DatePicker/getMobilePickerTheme.d.ts +2 -0
  162. package/internal/DateSelect/DateSelect/DateSelect.js +56 -4
  163. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  164. package/internal/DateSelect/DateSelect.d.ts +2 -0
  165. package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js +4 -1
  166. package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js.map +1 -1
  167. package/internal/DateSelect/DateSelect.styles.d.ts +1 -0
  168. package/internal/DateSelect/locale/locales/en/en.js +2 -1
  169. package/internal/DateSelect/locale/locales/en/en.js.map +1 -1
  170. package/internal/DateSelect/locale/locales/ru/ru.js +2 -1
  171. package/internal/DateSelect/locale/locales/ru/ru.js.map +1 -1
  172. package/internal/DateSelect/locale/types.d.ts +1 -0
  173. package/internal/MobilePopup/MobilePopup/MobilePopup.js +2 -1
  174. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  175. package/internal/MobilePopup/MobilePopup.d.ts +4 -0
  176. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/MobilePopupFooter.js +37 -0
  177. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/MobilePopupFooter.js.map +1 -0
  178. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/package.json +6 -0
  179. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +7 -0
  180. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/MobilePopupFooter.styles.js +11 -0
  181. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/MobilePopupFooter.styles.js.map +1 -0
  182. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/package.json +6 -0
  183. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +4 -0
  184. package/internal/MobilePopup/MobilePopupFooter/index/index.js +1 -0
  185. package/internal/MobilePopup/MobilePopupFooter/index/index.js.map +1 -0
  186. package/internal/MobilePopup/MobilePopupFooter/index/package.json +6 -0
  187. package/internal/MobilePopup/MobilePopupFooter/index.d.ts +1 -0
  188. package/internal/MobilePopup/MobilePopupFooter/package.json +6 -0
  189. package/internal/NativeDateInput/utils/utils.js +2 -1
  190. package/internal/NativeDateInput/utils/utils.js.map +1 -1
  191. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  192. package/internal/themes/DefaultTheme/DefaultTheme.js +25 -1
  193. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  194. package/internal/themes/DefaultTheme.d.ts +15 -0
  195. package/lib/date/InternalDate/InternalDate.js +7 -1
  196. package/lib/date/InternalDate/InternalDate.js.map +1 -1
  197. package/lib/date/InternalDate.d.ts +2 -0
  198. package/lib/date/InternalDateTransformer/InternalDateTransformer.js +30 -0
  199. package/lib/date/InternalDateTransformer/InternalDateTransformer.js.map +1 -1
  200. package/lib/date/InternalDateTransformer.d.ts +3 -0
  201. package/lib/date/InternalDateValidator/InternalDateValidator.js +6 -1
  202. package/lib/date/InternalDateValidator/InternalDateValidator.js.map +1 -1
  203. package/lib/date/comparison/comparison.js +45 -0
  204. package/lib/date/comparison/comparison.js.map +1 -0
  205. package/lib/date/comparison/package.json +6 -0
  206. package/lib/date/comparison.d.ts +6 -0
  207. package/lib/locale/constants/constants.js +4 -1
  208. package/lib/locale/constants/constants.js.map +1 -1
  209. package/lib/locale/constants.d.ts +3 -0
  210. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["MonthViewModel.ts"],"names":["memo","themeConfig","DayCellViewModel","getCurrentYear","month","year","Math","ceil","floor","getCurrentMonth","MonthViewModel","getHeight","theme","DAY_SIZE","MONTH_TITLE_OFFSET_HEIGHT","MONTH_BOTTOM_MARGIN","getMonthHeight","daysCount","offset","currentYear","currentMonth","getMonthsDays","getMonthOffset","isLastInYear","isFirstInYear","days","Array","from","length","_","i","isWeekend","create","dayHeight","titleHeight","marginBottom","Date","getDate","day","getDay"],"mappings":"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","sourcesContent":["import { memo } from '../../lib/memo';\nimport { Theme } from '../../lib/theming/Theme';\n\nimport { themeConfig } from './config';\nimport { DayCellViewModel } from './DayCellViewModel';\n\nconst getCurrentYear = (month: number, year: number) => {\n if (month < 0) {\n return year - Math.ceil(-month / 12);\n }\n\n if (month > 11) {\n return year + Math.floor(month / 12);\n }\n\n return year;\n};\n\nconst getCurrentMonth = (month: number) => {\n if (month < 0) {\n return 12 + (month % 12);\n }\n\n if (month > 11) {\n return month % 12;\n }\n\n return month;\n};\n\nexport class MonthViewModel {\n public static create = memo((month: number, year: number): MonthViewModel => new MonthViewModel(month, year));\n\n public readonly daysCount: number;\n\n public readonly offset: number;\n\n public readonly month: number;\n\n public readonly year: number;\n\n public readonly days: DayCellViewModel[];\n\n // FIXME: shouldbe readonly\n public isLastInYear: boolean;\n\n // FIXME: shouldbe readonly\n public isFirstInYear: boolean;\n\n public getHeight(theme: Theme): number {\n const { DAY_SIZE, MONTH_TITLE_OFFSET_HEIGHT, MONTH_BOTTOM_MARGIN } = themeConfig(theme);\n return getMonthHeight(this.daysCount, this.offset, DAY_SIZE, MONTH_TITLE_OFFSET_HEIGHT, MONTH_BOTTOM_MARGIN);\n }\n\n private constructor(month: number, year: number) {\n const currentYear = getCurrentYear(month, year);\n const currentMonth = getCurrentMonth(month);\n\n const daysCount = getMonthsDays(currentMonth, currentYear);\n const offset = getMonthOffset(currentMonth, currentYear);\n this.daysCount = daysCount;\n this.offset = offset;\n this.month = currentMonth;\n this.year = currentYear;\n this.isLastInYear = currentMonth === 11;\n this.isFirstInYear = currentMonth === 0;\n this.days = Array.from({ length: daysCount }, (_, i) => {\n const isWeekend = (i + getMonthOffset(currentMonth, currentYear)) % 7 >= 5;\n return DayCellViewModel.create(i + 1, currentMonth, currentYear, isWeekend);\n });\n }\n}\n\nconst getMonthHeight = memo(\n (daysCount: number, offset: number, dayHeight: number, titleHeight: number, marginBottom: number) =>\n Math.ceil((daysCount + offset) / 7) * dayHeight + titleHeight + marginBottom,\n);\nconst getMonthsDays = memo((month: number, year: number) => new Date(year, month + 1, 0).getDate());\n\nconst getMonthOffset = memo((month: number, year: number) => {\n const day = new Date(year, month, 1).getDay() - 1;\n if (day === -1) {\n return 6;\n }\n return day;\n});\n"]}
1
+ {"version":3,"sources":["MonthViewModel.ts"],"names":["memo","getMonthInHumanFormat","themeConfig","DayCellViewModel","getCurrentYear","month","year","Math","ceil","floor","getCurrentMonth","MonthViewModel","getHeight","theme","DAY_HEIGHT","MONTH_TITLE_OFFSET_HEIGHT","MONTH_BOTTOM_MARGIN","CALENDAR_GRID_ROW_SPACING","getMonthHeight","daysCount","offset","currentYear","currentMonth","getMonthsDays","getMonthOffset","isLastInYear","isFirstInYear","days","Array","from","length","_","i","isWeekend","create","dayHeight","titleHeight","marginBottom","rowSpacing","weeks","Date","getDate","day","getDay"],"mappings":"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","sourcesContent":["import { memo } from '../../lib/memo';\nimport { Theme } from '../../lib/theming/Theme';\n\nimport { getMonthInHumanFormat } from './CalendarUtils';\nimport { themeConfig } from './config';\nimport { DayCellViewModel } from './DayCellViewModel';\n\nconst getCurrentYear = (month: number, year: number) => {\n if (month < 0) {\n return year - Math.ceil(-month / 12);\n }\n\n if (month > 11) {\n return year + Math.floor(month / 12);\n }\n\n return year;\n};\n\nconst getCurrentMonth = (month: number) => {\n if (month < 0) {\n return 12 + (month % 12);\n }\n\n if (month > 11) {\n return month % 12;\n }\n\n return month;\n};\n\nexport class MonthViewModel {\n public static create = memo((month: number, year: number): MonthViewModel => new MonthViewModel(month, year));\n\n public readonly daysCount: number;\n\n public readonly offset: number;\n\n public readonly month: number;\n\n public readonly year: number;\n\n public readonly days: DayCellViewModel[];\n\n // FIXME: shouldbe readonly\n public isLastInYear: boolean;\n\n // FIXME: shouldbe readonly\n public isFirstInYear: boolean;\n\n public getHeight(theme: Theme): number {\n const { DAY_HEIGHT, MONTH_TITLE_OFFSET_HEIGHT, MONTH_BOTTOM_MARGIN, CALENDAR_GRID_ROW_SPACING } =\n themeConfig(theme);\n return getMonthHeight(\n this.daysCount,\n this.offset,\n DAY_HEIGHT,\n MONTH_TITLE_OFFSET_HEIGHT,\n MONTH_BOTTOM_MARGIN,\n CALENDAR_GRID_ROW_SPACING,\n );\n }\n\n private constructor(month: number, year: number) {\n const currentYear = getCurrentYear(month, year);\n const currentMonth = getCurrentMonth(month);\n\n const daysCount = getMonthsDays(currentMonth, currentYear);\n const offset = getMonthOffset(currentMonth, currentYear);\n this.daysCount = daysCount;\n this.offset = offset;\n this.month = currentMonth;\n this.year = currentYear;\n this.isLastInYear = currentMonth === 11;\n this.isFirstInYear = currentMonth === 0;\n this.days = Array.from({ length: daysCount }, (_, i) => {\n const isWeekend = (i + getMonthOffset(currentMonth, currentYear)) % 7 >= 5;\n return DayCellViewModel.create(i + 1, currentMonth, currentYear, isWeekend);\n });\n }\n}\n\nconst getMonthHeight = memo(\n (\n daysCount: number,\n offset: number,\n dayHeight: number,\n titleHeight: number,\n marginBottom: number,\n rowSpacing: number,\n ) => {\n const weeks = Math.ceil((daysCount + offset) / 7);\n return weeks * dayHeight + titleHeight + marginBottom + rowSpacing * 2 + rowSpacing * (weeks - 1);\n },\n);\nconst getMonthsDays = memo((month: number, year: number) => new Date(year, getMonthInHumanFormat(month), 0).getDate());\n\nconst getMonthOffset = memo((month: number, year: number) => {\n const day = new Date(year, month, 1).getDay() - 1;\n if (day === -1) {\n return 6;\n }\n return day;\n});\n"]}
@@ -1,16 +1,18 @@
1
1
  import { memo } from "../../../lib/memo";
2
- var getConfig = memo(function (monthTitleLineHeight, monthTitlePaddingTop, monthTitlePaddingBottom, monthTitleMarginBottom, cellSize, wrapperHeight, monthMarginBottom, maxMonthsToAppendOnScroll) {
2
+ var getConfig = memo(function (monthTitleLineHeight, monthTitlePaddingTop, monthTitlePaddingBottom, monthTitleMarginBottom, cellWidth, cellHeight, wrapperHeight, monthMarginBottom, maxMonthsToAppendOnScroll, calendarGridRowSpacing) {
3
3
  var monthTitleHeight = parseInt(monthTitleLineHeight) + parseInt(monthTitlePaddingTop) + parseInt(monthTitlePaddingBottom);
4
4
  return {
5
- DAY_SIZE: parseInt(cellSize),
5
+ DAY_WIDTH: parseInt(cellWidth),
6
+ DAY_HEIGHT: parseInt(cellHeight),
6
7
  MONTH_TITLE_HEIGHT: monthTitleHeight,
7
8
  MONTH_TITLE_OFFSET_HEIGHT: monthTitleHeight + parseInt(monthTitleMarginBottom) + 1,
8
9
  // + 1px separator line
9
10
  WRAPPER_HEIGHT: parseInt(wrapperHeight),
10
11
  MONTH_BOTTOM_MARGIN: parseInt(monthMarginBottom),
11
- MAX_MONTHS_TO_APPEND_ON_SCROLL: parseInt(maxMonthsToAppendOnScroll)
12
+ MAX_MONTHS_TO_APPEND_ON_SCROLL: parseInt(maxMonthsToAppendOnScroll),
13
+ CALENDAR_GRID_ROW_SPACING: parseInt(calendarGridRowSpacing)
12
14
  };
13
15
  });
14
16
  export var themeConfig = function themeConfig(t) {
15
- return getConfig(t.calendarMonthTitleLineHeight, t.calendarMonthTitlePaddingTop, t.calendarMonthTitlePaddingBottom, t.calendarMonthTitleMarginBottom, t.calendarCellSize, t.calendarWrapperHeight, t.calendarMonthMarginBottom, t.calendarMaxMonthsToAppendOnScroll);
17
+ return getConfig(t.calendarMonthTitleLineHeight, t.calendarMonthTitlePaddingTop, t.calendarMonthTitlePaddingBottom, t.calendarMonthTitleMarginBottom, t.calendarCellWidth, t.calendarCellHeight, t.calendarWrapperHeight, t.calendarMonthMarginBottom, t.calendarMaxMonthsToAppendOnScroll, t.calendarGridRowSpacing);
16
18
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["config.ts"],"names":["memo","getConfig","monthTitleLineHeight","monthTitlePaddingTop","monthTitlePaddingBottom","monthTitleMarginBottom","cellSize","wrapperHeight","monthMarginBottom","maxMonthsToAppendOnScroll","monthTitleHeight","parseInt","DAY_SIZE","MONTH_TITLE_HEIGHT","MONTH_TITLE_OFFSET_HEIGHT","WRAPPER_HEIGHT","MONTH_BOTTOM_MARGIN","MAX_MONTHS_TO_APPEND_ON_SCROLL","themeConfig","t","calendarMonthTitleLineHeight","calendarMonthTitlePaddingTop","calendarMonthTitlePaddingBottom","calendarMonthTitleMarginBottom","calendarCellSize","calendarWrapperHeight","calendarMonthMarginBottom","calendarMaxMonthsToAppendOnScroll"],"mappings":";AACA,SAASA,IAAT,QAAqB,gBAArB;;AAEA,IAAMC,SAAS,GAAGD,IAAI;AACpB;AACEE,oBADF;AAEEC,oBAFF;AAGEC,uBAHF;AAIEC,sBAJF;AAKEC,QALF;AAMEC,aANF;AAOEC,iBAPF;AAQEC,yBARF;AASK;AACH,MAAMC,gBAAgB;AACpBC,EAAAA,QAAQ,CAACT,oBAAD,CAAR,GAAiCS,QAAQ,CAACR,oBAAD,CAAzC,GAAkEQ,QAAQ,CAACP,uBAAD,CAD5E;AAEA,SAAO;AACLQ,IAAAA,QAAQ,EAAED,QAAQ,CAACL,QAAD,CADb;AAELO,IAAAA,kBAAkB,EAAEH,gBAFf;AAGLI,IAAAA,yBAAyB,EAAEJ,gBAAgB,GAAGC,QAAQ,CAACN,sBAAD,CAA3B,GAAsD,CAH5E,EAG+E;AACpFU,IAAAA,cAAc,EAAEJ,QAAQ,CAACJ,aAAD,CAJnB;AAKLS,IAAAA,mBAAmB,EAAEL,QAAQ,CAACH,iBAAD,CALxB;AAMLS,IAAAA,8BAA8B,EAAEN,QAAQ,CAACF,yBAAD,CANnC,EAAP;;AAQD,CArBmB,CAAtB;;;AAwBA,OAAO,IAAMS,WAAW,GAAG,SAAdA,WAAc,CAACC,CAAD;AACzBlB,IAAAA,SAAS;AACPkB,IAAAA,CAAC,CAACC,4BADK;AAEPD,IAAAA,CAAC,CAACE,4BAFK;AAGPF,IAAAA,CAAC,CAACG,+BAHK;AAIPH,IAAAA,CAAC,CAACI,8BAJK;AAKPJ,IAAAA,CAAC,CAACK,gBALK;AAMPL,IAAAA,CAAC,CAACM,qBANK;AAOPN,IAAAA,CAAC,CAACO,yBAPK;AAQPP,IAAAA,CAAC,CAACQ,iCARK,CADgB,GAApB","sourcesContent":["import { Theme } from '../../lib/theming/Theme';\nimport { memo } from '../../lib/memo';\n\nconst getConfig = memo(\n (\n monthTitleLineHeight: string,\n monthTitlePaddingTop: string,\n monthTitlePaddingBottom: string,\n monthTitleMarginBottom: string,\n cellSize: string,\n wrapperHeight: string,\n monthMarginBottom: string,\n maxMonthsToAppendOnScroll: string,\n ) => {\n const monthTitleHeight =\n parseInt(monthTitleLineHeight) + parseInt(monthTitlePaddingTop) + parseInt(monthTitlePaddingBottom);\n return {\n DAY_SIZE: parseInt(cellSize),\n MONTH_TITLE_HEIGHT: monthTitleHeight,\n MONTH_TITLE_OFFSET_HEIGHT: monthTitleHeight + parseInt(monthTitleMarginBottom) + 1, // + 1px separator line\n WRAPPER_HEIGHT: parseInt(wrapperHeight),\n MONTH_BOTTOM_MARGIN: parseInt(monthMarginBottom),\n MAX_MONTHS_TO_APPEND_ON_SCROLL: parseInt(maxMonthsToAppendOnScroll),\n };\n },\n);\n\nexport const themeConfig = (t: Theme) =>\n getConfig(\n t.calendarMonthTitleLineHeight,\n t.calendarMonthTitlePaddingTop,\n t.calendarMonthTitlePaddingBottom,\n t.calendarMonthTitleMarginBottom,\n t.calendarCellSize,\n t.calendarWrapperHeight,\n t.calendarMonthMarginBottom,\n t.calendarMaxMonthsToAppendOnScroll,\n );\n"]}
1
+ {"version":3,"sources":["config.ts"],"names":["memo","getConfig","monthTitleLineHeight","monthTitlePaddingTop","monthTitlePaddingBottom","monthTitleMarginBottom","cellWidth","cellHeight","wrapperHeight","monthMarginBottom","maxMonthsToAppendOnScroll","calendarGridRowSpacing","monthTitleHeight","parseInt","DAY_WIDTH","DAY_HEIGHT","MONTH_TITLE_HEIGHT","MONTH_TITLE_OFFSET_HEIGHT","WRAPPER_HEIGHT","MONTH_BOTTOM_MARGIN","MAX_MONTHS_TO_APPEND_ON_SCROLL","CALENDAR_GRID_ROW_SPACING","themeConfig","t","calendarMonthTitleLineHeight","calendarMonthTitlePaddingTop","calendarMonthTitlePaddingBottom","calendarMonthTitleMarginBottom","calendarCellWidth","calendarCellHeight","calendarWrapperHeight","calendarMonthMarginBottom","calendarMaxMonthsToAppendOnScroll"],"mappings":";AACA,SAASA,IAAT,QAAqB,gBAArB;;AAEA,IAAMC,SAAS,GAAGD,IAAI;AACpB;AACEE,oBADF;AAEEC,oBAFF;AAGEC,uBAHF;AAIEC,sBAJF;AAKEC,SALF;AAMEC,UANF;AAOEC,aAPF;AAQEC,iBARF;AASEC,yBATF;AAUEC,sBAVF;AAWK;AACH,MAAMC,gBAAgB;AACpBC,EAAAA,QAAQ,CAACX,oBAAD,CAAR,GAAiCW,QAAQ,CAACV,oBAAD,CAAzC,GAAkEU,QAAQ,CAACT,uBAAD,CAD5E;AAEA,SAAO;AACLU,IAAAA,SAAS,EAAED,QAAQ,CAACP,SAAD,CADd;AAELS,IAAAA,UAAU,EAAEF,QAAQ,CAACN,UAAD,CAFf;AAGLS,IAAAA,kBAAkB,EAAEJ,gBAHf;AAILK,IAAAA,yBAAyB,EAAEL,gBAAgB,GAAGC,QAAQ,CAACR,sBAAD,CAA3B,GAAsD,CAJ5E,EAI+E;AACpFa,IAAAA,cAAc,EAAEL,QAAQ,CAACL,aAAD,CALnB;AAMLW,IAAAA,mBAAmB,EAAEN,QAAQ,CAACJ,iBAAD,CANxB;AAOLW,IAAAA,8BAA8B,EAAEP,QAAQ,CAACH,yBAAD,CAPnC;AAQLW,IAAAA,yBAAyB,EAAER,QAAQ,CAACF,sBAAD,CAR9B,EAAP;;AAUD,CAzBmB,CAAtB;;;AA4BA,OAAO,IAAMW,WAAW,GAAG,SAAdA,WAAc,CAACC,CAAD;AACzBtB,IAAAA,SAAS;AACPsB,IAAAA,CAAC,CAACC,4BADK;AAEPD,IAAAA,CAAC,CAACE,4BAFK;AAGPF,IAAAA,CAAC,CAACG,+BAHK;AAIPH,IAAAA,CAAC,CAACI,8BAJK;AAKPJ,IAAAA,CAAC,CAACK,iBALK;AAMPL,IAAAA,CAAC,CAACM,kBANK;AAOPN,IAAAA,CAAC,CAACO,qBAPK;AAQPP,IAAAA,CAAC,CAACQ,yBARK;AASPR,IAAAA,CAAC,CAACS,iCATK;AAUPT,IAAAA,CAAC,CAACZ,sBAVK,CADgB,GAApB","sourcesContent":["import { Theme } from '../../lib/theming/Theme';\nimport { memo } from '../../lib/memo';\n\nconst getConfig = memo(\n (\n monthTitleLineHeight: string,\n monthTitlePaddingTop: string,\n monthTitlePaddingBottom: string,\n monthTitleMarginBottom: string,\n cellWidth: string,\n cellHeight: string,\n wrapperHeight: string,\n monthMarginBottom: string,\n maxMonthsToAppendOnScroll: string,\n calendarGridRowSpacing: string,\n ) => {\n const monthTitleHeight =\n parseInt(monthTitleLineHeight) + parseInt(monthTitlePaddingTop) + parseInt(monthTitlePaddingBottom);\n return {\n DAY_WIDTH: parseInt(cellWidth),\n DAY_HEIGHT: parseInt(cellHeight),\n MONTH_TITLE_HEIGHT: monthTitleHeight,\n MONTH_TITLE_OFFSET_HEIGHT: monthTitleHeight + parseInt(monthTitleMarginBottom) + 1, // + 1px separator line\n WRAPPER_HEIGHT: parseInt(wrapperHeight),\n MONTH_BOTTOM_MARGIN: parseInt(monthMarginBottom),\n MAX_MONTHS_TO_APPEND_ON_SCROLL: parseInt(maxMonthsToAppendOnScroll),\n CALENDAR_GRID_ROW_SPACING: parseInt(calendarGridRowSpacing),\n };\n },\n);\n\nexport const themeConfig = (t: Theme) =>\n getConfig(\n t.calendarMonthTitleLineHeight,\n t.calendarMonthTitlePaddingTop,\n t.calendarMonthTitlePaddingBottom,\n t.calendarMonthTitleMarginBottom,\n t.calendarCellWidth,\n t.calendarCellHeight,\n t.calendarWrapperHeight,\n t.calendarMonthMarginBottom,\n t.calendarMaxMonthsToAppendOnScroll,\n t.calendarGridRowSpacing,\n );\n"]}
@@ -1,2 +1,3 @@
1
1
  export * from "../Calendar";
2
- export * from "../CalendarDateShape";
2
+ export * from "../CalendarDateShape";
3
+ export * from "../CalendarDay";
@@ -1 +1 @@
1
- {"version":3,"sources":["index.tsx"],"names":[],"mappings":"AAAA,cAAc,YAAd;AACA,cAAc,qBAAd","sourcesContent":["export * from './Calendar';\nexport * from './CalendarDateShape';\n"]}
1
+ {"version":3,"sources":["index.tsx"],"names":[],"mappings":"AAAA,cAAc,YAAd;AACA,cAAc,qBAAd;AACA,cAAc,eAAd","sourcesContent":["export * from './Calendar';\nexport * from './CalendarDateShape';\nexport * from './CalendarDay';\n"]}
@@ -1,2 +1,3 @@
1
1
  export * from './Calendar';
2
2
  export * from './CalendarDateShape';
3
+ export * from './CalendarDay';
@@ -29,8 +29,10 @@ import { Calendar } from "../../Calendar";
29
29
  import { ThemeContext } from "../../../lib/theming/ThemeContext";
30
30
  import { Button } from "../../Button";
31
31
  import { getTodayDate } from "../../Calendar/CalendarUtils";
32
+ import { responsiveLayout } from "../../ResponsiveLayout/decorator";
32
33
  import { styles } from "../DatePicker.styles";
33
34
  import { DatePickerLocaleHelper } from "../locale";
35
+ import { MobilePicker } from "../MobilePicker";
34
36
  var INPUT_PASS_PROPS = {
35
37
  autoFocus: true,
36
38
  disabled: true,
@@ -47,7 +49,7 @@ export var DatePickerDataTids = {
47
49
  pickerRoot: 'Picker__root',
48
50
  pickerTodayWrapper: 'Picker__todayWrapper'
49
51
  };
50
- export var DatePicker = (_dec = locale('DatePicker', DatePickerLocaleHelper), rootNode(_class = _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_React$PureComponent) {
52
+ export var DatePicker = (_dec = locale('DatePicker', DatePickerLocaleHelper), responsiveLayout(_class = rootNode(_class = _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_React$PureComponent) {
51
53
  _inheritsLoose(DatePicker, _React$PureComponent);
52
54
 
53
55
  function DatePicker() {
@@ -75,41 +77,59 @@ export var DatePicker = (_dec = locale('DatePicker', DatePickerLocaleHelper), ro
75
77
  minDate = _this$getProps.minDate,
76
78
  maxDate = _this$getProps.maxDate;
77
79
 
80
+ var isMobile = _this.isMobileLayout;
81
+
78
82
  if (_this.state.opened) {
79
- picker = /*#__PURE__*/React.createElement(LocaleContext.Provider, {
80
- value: {
81
- locale: {
82
- Calendar: {
83
- months: _this.locale.months,
84
- dayCellChooseDateAriaLabel: _this.locale.dayCellChooseDateAriaLabel,
85
- selectMonthAriaLabel: _this.locale.selectMonthAriaLabel,
86
- selectYearAriaLabel: _this.locale.selectYearAriaLabel,
87
- selectChosenAriaLabel: _this.locale.selectChosenAriaLabel
83
+ if (isMobile) {
84
+ picker = /*#__PURE__*/React.createElement(MobilePicker, {
85
+ value: _this.props.value,
86
+ minDate: _this.parseValueToDate(minDate),
87
+ maxDate: _this.parseValueToDate(maxDate),
88
+ onValueChange: _this.props.onValueChange,
89
+ enableTodayLink: _this.props.enableTodayLink,
90
+ isHoliday: _this.props.isHoliday,
91
+ onCloseRequest: _this.handleBlur,
92
+ renderDay: props.renderDay,
93
+ onMonthChange: props.onMonthChange
94
+ });
95
+ } else {
96
+ picker = /*#__PURE__*/React.createElement(LocaleContext.Provider, {
97
+ value: {
98
+ locale: {
99
+ Calendar: {
100
+ months: _this.locale.months,
101
+ dayCellChooseDateAriaLabel: _this.locale.dayCellChooseDateAriaLabel,
102
+ selectMonthAriaLabel: _this.locale.selectMonthAriaLabel,
103
+ selectYearAriaLabel: _this.locale.selectYearAriaLabel,
104
+ selectChosenAriaLabel: _this.locale.selectChosenAriaLabel
105
+ }
88
106
  }
89
107
  }
90
- }
91
- }, /*#__PURE__*/React.createElement(DropdownContainer, {
92
- menuPos: _this.props.menuPos,
93
- "data-tid": DatePickerDataTids.root,
94
- getParent: _this.getParent,
95
- offsetY: parseInt(_this.theme.datePickerMenuOffsetY),
96
- align: _this.props.menuAlign
97
- }, /*#__PURE__*/React.createElement("div", {
98
- "data-tid": DatePickerDataTids.pickerRoot,
99
- className: styles.calendarWrapper(_this.theme),
100
- onMouseDown: function onMouseDown(e) {
101
- return e.preventDefault();
102
- }
103
- }, /*#__PURE__*/React.createElement(Calendar, {
104
- ref: function ref(c) {
105
- return _this.calendar = c;
106
- },
107
- maxDate: _this.parseValueToDate(maxDate),
108
- minDate: _this.parseValueToDate(minDate),
109
- onValueChange: _this.handleValueChange,
110
- isHoliday: _this.props.isHoliday,
111
- value: _this.parseValueToDate(_this.props.value)
112
- }), _this.props.enableTodayLink && _this.renderTodayLink(), ' ')));
108
+ }, /*#__PURE__*/React.createElement(DropdownContainer, {
109
+ menuPos: _this.props.menuPos,
110
+ "data-tid": DatePickerDataTids.root,
111
+ getParent: _this.getParent,
112
+ offsetY: parseInt(_this.theme.datePickerMenuOffsetY),
113
+ align: _this.props.menuAlign
114
+ }, /*#__PURE__*/React.createElement("div", {
115
+ "data-tid": DatePickerDataTids.pickerRoot,
116
+ className: styles.calendarWrapper(_this.theme),
117
+ onMouseDown: function onMouseDown(e) {
118
+ return e.preventDefault();
119
+ }
120
+ }, /*#__PURE__*/React.createElement(Calendar, {
121
+ ref: function ref(c) {
122
+ return _this.calendar = c;
123
+ },
124
+ maxDate: _this.parseValueToDate(maxDate),
125
+ minDate: _this.parseValueToDate(minDate),
126
+ onValueChange: _this.handleValueChange,
127
+ isHoliday: _this.props.isHoliday,
128
+ value: _this.parseValueToDate(_this.props.value),
129
+ renderDay: _this.props.renderDay,
130
+ onMonthChange: _this.props.onMonthChange
131
+ }), _this.props.enableTodayLink && _this.renderTodayLink(), ' ')));
132
+ }
113
133
  }
114
134
 
115
135
  return /*#__PURE__*/React.createElement("label", {
@@ -126,17 +146,17 @@ export var DatePicker = (_dec = locale('DatePicker', DatePickerLocaleHelper), ro
126
146
  withIcon: true,
127
147
  minDate: minDate,
128
148
  maxDate: maxDate,
129
- onBlur: _this.handleBlur,
149
+ onBlur: isMobile ? undefined : _this.handleBlur,
130
150
  onFocus: _this.handleFocus,
131
151
  onValueChange: _this.props.onValueChange,
132
152
  "data-tid": DatePickerDataTids.input
133
- })), _this.state.canUseMobileNativeDatePicker && /*#__PURE__*/React.createElement(NativeDateInput, {
153
+ })), _this.state.canUseMobileNativeDatePicker ? /*#__PURE__*/React.createElement(NativeDateInput, {
134
154
  onValueChange: _this.props.onValueChange,
135
155
  value: _this.props.value || '',
136
156
  minDate: minDate,
137
157
  maxDate: maxDate,
138
158
  disabled: _this.props.disabled
139
- }), !_this.state.canUseMobileNativeDatePicker && picker);
159
+ }) : picker);
140
160
  };
141
161
 
142
162
  _this.handleSelectToday = function (today) {
@@ -388,7 +408,9 @@ export var DatePicker = (_dec = locale('DatePicker', DatePickerLocaleHelper), ro
388
408
  onMouseEnter: PropTypes.func,
389
409
  onMouseLeave: PropTypes.func,
390
410
  onMouseOver: PropTypes.func,
391
- isHoliday: PropTypes.func
411
+ isHoliday: PropTypes.func,
412
+ renderDay: PropTypes.func,
413
+ onMonthChange: PropTypes.func
392
414
  }, _class2.defaultProps = {
393
415
  minDate: MIN_FULLDATE,
394
416
  maxDate: MAX_FULLDATE
@@ -417,4 +439,4 @@ export var DatePicker = (_dec = locale('DatePicker', DatePickerLocaleHelper), ro
417
439
  return internalDate.validate({
418
440
  checks: [InternalDateValidateCheck.NotNull, InternalDateValidateCheck.Number, InternalDateValidateCheck.Native, InternalDateValidateCheck.Limits, InternalDateValidateCheck.Range]
419
441
  });
420
- }, _temp)) || _class) || _class);
442
+ }, _temp)) || _class) || _class) || _class);
@@ -1 +1 @@
1
- {"version":3,"sources":["DatePicker.tsx"],"names":["PropTypes","React","LocaleContext","locale","InternalDateGetter","ArrowAUpIcon16Light","isTheme2022","cx","ThemeFactory","InternalDate","MAX_FULLDATE","MIN_FULLDATE","InternalDateOrder","InternalDateSeparator","InternalDateValidateCheck","DateInput","DropdownContainer","filterProps","CommonWrapper","isMobile","NativeDateInput","getRootNode","rootNode","isNonNullable","createPropsGetter","Calendar","ThemeContext","Button","getTodayDate","styles","DatePickerLocaleHelper","INPUT_PASS_PROPS","autoFocus","disabled","warning","error","size","onKeyDown","MIN_WIDTH","DatePickerDataTids","root","input","label","pickerRoot","pickerTodayWrapper","DatePicker","getProps","defaultProps","calendar","state","opened","canUseMobileNativeDatePicker","today","focused","renderMain","props","picker","minDate","maxDate","months","dayCellChooseDateAriaLabel","selectMonthAriaLabel","selectYearAriaLabel","selectChosenAriaLabel","menuPos","getParent","parseInt","theme","datePickerMenuOffsetY","menuAlign","calendarWrapper","e","preventDefault","c","parseValueToDate","handleValueChange","isHoliday","value","enableTodayLink","renderTodayLink","getRootStyle","onMouseEnter","onMouseLeave","onMouseOver","getInputRef","handleBlur","handleFocus","onValueChange","handleSelectToday","handleSelect","month","year","scrollToMonth","width","minWidth","ref","setState","onFocus","close","onBlur","blur","componentDidMount","useMobileNativeDatePicker","focus","componentDidUpdate","render","create","calendarBottomSeparatorBorder","setRootNode","undefined","date","validate","checks","NotNull","Native","toString","withPad","order","separator","setComponents","getTodayComponents","withSeparator","margin","todayAriaLabel","todayLinkWrapper","PureComponent","__KONTUR_REACT_UI__","displayName","propTypes","bool","string","isRequired","oneOf","oneOfType","number","func","range","internalDate","DMY","Dot","setRangeStart","setRangeEnd","parseValue","Number","Limits","Range"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { LocaleContext } from '../../lib/locale';\nimport { locale } from '../../lib/locale/decorators';\nimport { InternalDateGetter } from '../../lib/date/InternalDateGetter';\nimport { ArrowAUpIcon16Light } from '../../internal/icons2022/ArrowAUpIcon/ArrowAUp16Light';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { cx } from '../../lib/theming/Emotion';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateOrder, InternalDateSeparator, InternalDateValidateCheck } from '../../lib/date/types';\nimport { Nullable } from '../../typings/utility-types';\nimport { DateInput } from '../DateInput';\nimport { DropdownContainer, DropdownContainerProps } from '../../internal/DropdownContainer';\nimport { filterProps } from '../../lib/filterProps';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { isMobile } from '../../lib/client';\nimport { NativeDateInput } from '../../internal/NativeDateInput';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isNonNullable } from '../../lib/utils';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Calendar, CalendarDateShape, CalendarProps } from '../Calendar';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { Button } from '../Button';\nimport { getTodayDate } from '../Calendar/CalendarUtils';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { styles } from './DatePicker.styles';\nimport { DatePickerLocale, DatePickerLocaleHelper } from './locale';\n\nconst INPUT_PASS_PROPS = {\n autoFocus: true,\n disabled: true,\n warning: true,\n error: true,\n size: true,\n onKeyDown: true,\n};\n\nexport const MIN_WIDTH = 120;\n\nexport interface DatePickerProps\n extends Pick<DropdownContainerProps, 'menuPos'>,\n Pick<CalendarProps, 'isHoliday' | 'minDate' | 'maxDate'>,\n CommonProps {\n autoFocus?: boolean;\n disabled?: boolean;\n /**\n * Отвечает за отображение кнопки \"Сегодня\".\n */\n enableTodayLink?: boolean;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n menuAlign?: 'left' | 'right';\n size?: SizeProp;\n value?: string | null;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: number | string;\n onBlur?: () => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange: (value: string) => void;\n onFocus?: () => void;\n onKeyDown?: (e: React.KeyboardEvent<any>) => void;\n onMouseEnter?: (e: React.MouseEvent<any>) => void;\n onMouseLeave?: (e: React.MouseEvent<any>) => void;\n onMouseOver?: (e: React.MouseEvent<any>) => void;\n /**\n * Использовать на мобильных устройствах нативный календарь для выбора дат.\n *\n * - На iOS нативный календарь не умеет работать с minDate и maxDate\n */\n useMobileNativeDatePicker?: boolean;\n}\n\nexport interface DatePickerState {\n opened: boolean;\n canUseMobileNativeDatePicker: boolean;\n today: CalendarDateShape;\n}\n\nexport const DatePickerDataTids = {\n root: 'DatePicker__root',\n input: 'DatePicker__input',\n label: 'DatePicker__label',\n pickerRoot: 'Picker__root',\n pickerTodayWrapper: 'Picker__todayWrapper',\n} as const;\n\ntype DefaultProps = Required<Pick<DatePickerProps, 'minDate' | 'maxDate'>>;\n\n@rootNode\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class DatePicker extends React.PureComponent<DatePickerProps, DatePickerState> {\n public static __KONTUR_REACT_UI__ = 'DatePicker';\n public static displayName = 'DatePicker';\n\n public static propTypes = {\n autoFocus: PropTypes.bool,\n\n disabled: PropTypes.bool,\n\n /**\n * Включает кнопку сегодня в календаре\n */\n enableTodayLink: PropTypes.bool,\n\n error: PropTypes.bool,\n\n /**\n * Максимальная дата в календаре.\n */\n maxDate: PropTypes.string.isRequired,\n\n menuAlign: PropTypes.oneOf(['left', 'right']),\n\n /**\n * Минимальная дата в календаре.\n */\n minDate: PropTypes.string.isRequired,\n\n /**\n * Строка формата `dd.mm.yyyy`\n */\n value: PropTypes.string,\n\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n onBlur: PropTypes.func,\n\n onValueChange: PropTypes.func.isRequired,\n\n onFocus: PropTypes.func,\n\n onKeyDown: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n isHoliday: PropTypes.func,\n };\n\n public static defaultProps: DefaultProps = {\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n };\n\n private getProps = createPropsGetter(DatePicker.defaultProps);\n private theme!: Theme;\n private calendar: Calendar | null = null;\n private readonly locale!: DatePickerLocale;\n\n public static validate = (value: Nullable<string>, range: { minDate?: string; maxDate?: string } = {}) => {\n if (!value) {\n return false;\n }\n\n const { minDate = MIN_FULLDATE, maxDate = MAX_FULLDATE } = range;\n const internalDate = new InternalDate({\n order: InternalDateOrder.DMY,\n separator: InternalDateSeparator.Dot,\n })\n .setRangeStart(new InternalDate({ value: minDate }))\n .setRangeEnd(new InternalDate({ value: maxDate }))\n .parseValue(value);\n\n return internalDate.validate({\n checks: [\n InternalDateValidateCheck.NotNull,\n InternalDateValidateCheck.Number,\n InternalDateValidateCheck.Native,\n InternalDateValidateCheck.Limits,\n InternalDateValidateCheck.Range,\n ],\n });\n };\n\n public state: DatePickerState = { opened: false, canUseMobileNativeDatePicker: false, today: getTodayDate() };\n\n private input: DateInput | null = null;\n private focused = false;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.useMobileNativeDatePicker && isMobile) {\n this.setState({\n canUseMobileNativeDatePicker: true,\n });\n }\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate() {\n const { disabled } = this.props;\n const { opened } = this.state;\n if (disabled && opened) {\n this.close();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.input) {\n this.input.blur();\n }\n this.handleBlur();\n }\n\n /**\n * @public\n */\n public focus() {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.focus();\n }\n this.handleFocus();\n }\n\n /**\n * Закрывает выпадашку выбора дня\n * @public\n */\n public close() {\n this.setState({ opened: false });\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n\n return (\n <ThemeContext.Provider value={ThemeFactory.create({ calendarBottomSeparatorBorder: 'none' }, theme)}>\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<DatePickerProps>) => {\n let picker = null;\n\n const { minDate, maxDate } = this.getProps();\n\n if (this.state.opened) {\n picker = (\n <LocaleContext.Provider\n value={{\n locale: {\n Calendar: {\n months: this.locale.months,\n dayCellChooseDateAriaLabel: this.locale.dayCellChooseDateAriaLabel,\n selectMonthAriaLabel: this.locale.selectMonthAriaLabel,\n selectYearAriaLabel: this.locale.selectYearAriaLabel,\n selectChosenAriaLabel: this.locale.selectChosenAriaLabel,\n },\n },\n }}\n >\n <DropdownContainer\n menuPos={this.props.menuPos}\n data-tid={DatePickerDataTids.root}\n getParent={this.getParent}\n offsetY={parseInt(this.theme.datePickerMenuOffsetY)}\n align={this.props.menuAlign}\n >\n <div\n data-tid={DatePickerDataTids.pickerRoot}\n className={styles.calendarWrapper(this.theme)}\n onMouseDown={(e) => e.preventDefault()}\n >\n <Calendar\n ref={(c) => (this.calendar = c)}\n maxDate={this.parseValueToDate(maxDate)}\n minDate={this.parseValueToDate(minDate)}\n onValueChange={this.handleValueChange}\n isHoliday={this.props.isHoliday}\n value={this.parseValueToDate(this.props.value)}\n />\n {this.props.enableTodayLink && this.renderTodayLink()}{' '}\n </div>\n </DropdownContainer>\n </LocaleContext.Provider>\n );\n }\n\n return (\n <label\n className={styles.root()}\n style={this.getRootStyle()}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n data-tid={DatePickerDataTids.label}\n >\n <DateInput\n {...filterProps(props, INPUT_PASS_PROPS)}\n ref={this.getInputRef}\n value={this.props.value || ''}\n width=\"100%\"\n withIcon\n minDate={minDate}\n maxDate={maxDate}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onValueChange={this.props.onValueChange}\n data-tid={DatePickerDataTids.input}\n />\n {this.state.canUseMobileNativeDatePicker && (\n <NativeDateInput\n onValueChange={this.props.onValueChange}\n value={this.props.value || ''}\n minDate={minDate}\n maxDate={maxDate}\n disabled={this.props.disabled}\n />\n )}\n {!this.state.canUseMobileNativeDatePicker && picker}\n </label>\n );\n };\n\n private parseValueToDate(value?: Nullable<string>): string | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n const date = new InternalDate({ value });\n if (date.validate({ checks: [InternalDateValidateCheck.NotNull, InternalDateValidateCheck.Native] })) {\n return date.toString({ withPad: true });\n }\n\n return undefined;\n }\n\n private renderTodayLink() {\n const { order, separator } = this.locale;\n const today = new InternalDate({ order, separator })\n .setComponents(InternalDateGetter.getTodayComponents())\n .toString({ withPad: true, withSeparator: true });\n\n if (isTheme2022(this.theme)) {\n return (\n <div style={{ margin: 8 }}>\n <Button\n aria-label={this.locale.todayAriaLabel}\n data-tid={DatePickerDataTids.pickerTodayWrapper}\n width=\"100%\"\n onClick={this.handleSelectToday(today)}\n icon={<ArrowAUpIcon16Light />}\n >\n {this.locale.today}\n </Button>\n </div>\n );\n }\n\n return (\n <button\n aria-label={this.locale.todayAriaLabel}\n data-tid={DatePickerDataTids.pickerTodayWrapper}\n className={cx({\n [styles.todayLinkWrapper(this.theme)]: true,\n })}\n onClick={this.handleSelectToday(today)}\n tabIndex={-1}\n >\n {`${this.locale.today} ${today}`}\n </button>\n );\n }\n\n private handleSelectToday = (today: string) => () => {\n this.handleSelect(today);\n\n if (this.calendar) {\n const { month, year } = this.state.today;\n this.calendar.scrollToMonth(month, year);\n }\n };\n\n public getParent = () => {\n return getRootNode(this);\n };\n\n private getRootStyle = () => {\n const { width } = this.props;\n return isNonNullable(width) ? { width } : { minWidth: MIN_WIDTH };\n };\n\n private getInputRef = (ref: DateInput | null) => {\n this.input = ref;\n };\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n\n this.focused = true;\n\n this.setState({ opened: true });\n\n if (this.props.onFocus) {\n this.props.onFocus();\n }\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n return;\n }\n\n this.focused = false;\n this.close();\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handleValueChange = (value: string) => {\n this.handleSelect(value);\n this.blur();\n };\n\n private handleSelect = (value: string | null) => {\n if (!value) {\n return null;\n }\n\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["DatePicker.tsx"],"names":["PropTypes","React","LocaleContext","locale","InternalDateGetter","ArrowAUpIcon16Light","isTheme2022","cx","ThemeFactory","InternalDate","MAX_FULLDATE","MIN_FULLDATE","InternalDateOrder","InternalDateSeparator","InternalDateValidateCheck","DateInput","DropdownContainer","filterProps","CommonWrapper","isMobile","NativeDateInput","getRootNode","rootNode","isNonNullable","createPropsGetter","Calendar","ThemeContext","Button","getTodayDate","responsiveLayout","styles","DatePickerLocaleHelper","MobilePicker","INPUT_PASS_PROPS","autoFocus","disabled","warning","error","size","onKeyDown","MIN_WIDTH","DatePickerDataTids","root","input","label","pickerRoot","pickerTodayWrapper","DatePicker","getProps","defaultProps","calendar","state","opened","canUseMobileNativeDatePicker","today","focused","renderMain","props","picker","minDate","maxDate","isMobileLayout","value","parseValueToDate","onValueChange","enableTodayLink","isHoliday","handleBlur","renderDay","onMonthChange","months","dayCellChooseDateAriaLabel","selectMonthAriaLabel","selectYearAriaLabel","selectChosenAriaLabel","menuPos","getParent","parseInt","theme","datePickerMenuOffsetY","menuAlign","calendarWrapper","e","preventDefault","c","handleValueChange","renderTodayLink","getRootStyle","onMouseEnter","onMouseLeave","onMouseOver","getInputRef","undefined","handleFocus","handleSelectToday","handleSelect","month","year","scrollToMonth","width","minWidth","ref","setState","onFocus","close","onBlur","blur","componentDidMount","useMobileNativeDatePicker","focus","componentDidUpdate","render","create","calendarBottomSeparatorBorder","setRootNode","date","validate","checks","NotNull","Native","toString","withPad","order","separator","setComponents","getTodayComponents","withSeparator","margin","todayAriaLabel","todayLinkWrapper","PureComponent","__KONTUR_REACT_UI__","displayName","propTypes","bool","string","isRequired","oneOf","oneOfType","number","func","range","internalDate","DMY","Dot","setRangeStart","setRangeEnd","parseValue","Number","Limits","Range"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { LocaleContext } from '../../lib/locale';\nimport { locale } from '../../lib/locale/decorators';\nimport { InternalDateGetter } from '../../lib/date/InternalDateGetter';\nimport { ArrowAUpIcon16Light } from '../../internal/icons2022/ArrowAUpIcon/ArrowAUp16Light';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { cx } from '../../lib/theming/Emotion';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateOrder, InternalDateSeparator, InternalDateValidateCheck } from '../../lib/date/types';\nimport { Nullable } from '../../typings/utility-types';\nimport { DateInput } from '../DateInput';\nimport { DropdownContainer, DropdownContainerProps } from '../../internal/DropdownContainer';\nimport { filterProps } from '../../lib/filterProps';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { isMobile } from '../../lib/client';\nimport { NativeDateInput } from '../../internal/NativeDateInput';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isNonNullable } from '../../lib/utils';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Calendar, CalendarDateShape, CalendarProps } from '../Calendar';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { Button } from '../Button';\nimport { getTodayDate } from '../Calendar/CalendarUtils';\nimport { SizeProp } from '../../lib/types/props';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\n\nimport { styles } from './DatePicker.styles';\nimport { DatePickerLocale, DatePickerLocaleHelper } from './locale';\nimport { MobilePicker } from './MobilePicker';\n\nconst INPUT_PASS_PROPS = {\n autoFocus: true,\n disabled: true,\n warning: true,\n error: true,\n size: true,\n onKeyDown: true,\n};\n\nexport const MIN_WIDTH = 120;\n\nexport interface DatePickerProps\n extends Pick<DropdownContainerProps, 'menuPos'>,\n Pick<CalendarProps, 'isHoliday' | 'minDate' | 'maxDate' | 'renderDay' | 'onMonthChange'>,\n CommonProps {\n autoFocus?: boolean;\n disabled?: boolean;\n /**\n * Отвечает за отображение кнопки \"Сегодня\".\n */\n enableTodayLink?: boolean;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n menuAlign?: 'left' | 'right';\n size?: SizeProp;\n value?: string | null;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: number | string;\n onBlur?: () => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange: (value: string) => void;\n onFocus?: () => void;\n onKeyDown?: (e: React.KeyboardEvent<any>) => void;\n onMouseEnter?: (e: React.MouseEvent<any>) => void;\n onMouseLeave?: (e: React.MouseEvent<any>) => void;\n onMouseOver?: (e: React.MouseEvent<any>) => void;\n /**\n * Использовать на мобильных устройствах нативный календарь для выбора дат.\n *\n * - На iOS нативный календарь не умеет работать с minDate и maxDate\n */\n useMobileNativeDatePicker?: boolean;\n}\n\nexport interface DatePickerState {\n opened: boolean;\n canUseMobileNativeDatePicker: boolean;\n today: CalendarDateShape;\n}\n\nexport const DatePickerDataTids = {\n root: 'DatePicker__root',\n input: 'DatePicker__input',\n label: 'DatePicker__label',\n pickerRoot: 'Picker__root',\n pickerTodayWrapper: 'Picker__todayWrapper',\n} as const;\n\ntype DefaultProps = Required<Pick<DatePickerProps, 'minDate' | 'maxDate'>>;\n\n@responsiveLayout\n@rootNode\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class DatePicker extends React.PureComponent<DatePickerProps, DatePickerState> {\n public static __KONTUR_REACT_UI__ = 'DatePicker';\n public static displayName = 'DatePicker';\n\n public static propTypes = {\n autoFocus: PropTypes.bool,\n\n disabled: PropTypes.bool,\n\n /**\n * Включает кнопку сегодня в календаре\n */\n enableTodayLink: PropTypes.bool,\n\n error: PropTypes.bool,\n\n /**\n * Максимальная дата в календаре.\n */\n maxDate: PropTypes.string.isRequired,\n\n menuAlign: PropTypes.oneOf(['left', 'right']),\n\n /**\n * Минимальная дата в календаре.\n */\n minDate: PropTypes.string.isRequired,\n\n /**\n * Строка формата `dd.mm.yyyy`\n */\n value: PropTypes.string,\n\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n onBlur: PropTypes.func,\n\n onValueChange: PropTypes.func.isRequired,\n\n onFocus: PropTypes.func,\n\n onKeyDown: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n isHoliday: PropTypes.func,\n\n renderDay: PropTypes.func,\n\n onMonthChange: PropTypes.func,\n };\n\n public static defaultProps: DefaultProps = {\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n };\n\n private getProps = createPropsGetter(DatePicker.defaultProps);\n private theme!: Theme;\n private calendar: Calendar | null = null;\n private readonly locale!: DatePickerLocale;\n\n public static validate = (value: Nullable<string>, range: { minDate?: string; maxDate?: string } = {}) => {\n if (!value) {\n return false;\n }\n\n const { minDate = MIN_FULLDATE, maxDate = MAX_FULLDATE } = range;\n const internalDate = new InternalDate({\n order: InternalDateOrder.DMY,\n separator: InternalDateSeparator.Dot,\n })\n .setRangeStart(new InternalDate({ value: minDate }))\n .setRangeEnd(new InternalDate({ value: maxDate }))\n .parseValue(value);\n\n return internalDate.validate({\n checks: [\n InternalDateValidateCheck.NotNull,\n InternalDateValidateCheck.Number,\n InternalDateValidateCheck.Native,\n InternalDateValidateCheck.Limits,\n InternalDateValidateCheck.Range,\n ],\n });\n };\n\n public state: DatePickerState = { opened: false, canUseMobileNativeDatePicker: false, today: getTodayDate() };\n\n private input: DateInput | null = null;\n private focused = false;\n private setRootNode!: TSetRootNode;\n private isMobileLayout!: boolean;\n\n public componentDidMount() {\n if (this.props.useMobileNativeDatePicker && isMobile) {\n this.setState({\n canUseMobileNativeDatePicker: true,\n });\n }\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate() {\n const { disabled } = this.props;\n const { opened } = this.state;\n if (disabled && opened) {\n this.close();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.input) {\n this.input.blur();\n }\n this.handleBlur();\n }\n\n /**\n * @public\n */\n public focus() {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.focus();\n }\n this.handleFocus();\n }\n\n /**\n * Закрывает выпадашку выбора дня\n * @public\n */\n public close() {\n this.setState({ opened: false });\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n\n return (\n <ThemeContext.Provider value={ThemeFactory.create({ calendarBottomSeparatorBorder: 'none' }, theme)}>\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<DatePickerProps>) => {\n let picker = null;\n\n const { minDate, maxDate } = this.getProps();\n\n const isMobile = this.isMobileLayout;\n\n if (this.state.opened) {\n if (isMobile) {\n picker = (\n <MobilePicker\n value={this.props.value}\n minDate={this.parseValueToDate(minDate)}\n maxDate={this.parseValueToDate(maxDate)}\n onValueChange={this.props.onValueChange}\n enableTodayLink={this.props.enableTodayLink}\n isHoliday={this.props.isHoliday}\n onCloseRequest={this.handleBlur}\n renderDay={props.renderDay}\n onMonthChange={props.onMonthChange}\n />\n );\n } else {\n picker = (\n <LocaleContext.Provider\n value={{\n locale: {\n Calendar: {\n months: this.locale.months,\n dayCellChooseDateAriaLabel: this.locale.dayCellChooseDateAriaLabel,\n selectMonthAriaLabel: this.locale.selectMonthAriaLabel,\n selectYearAriaLabel: this.locale.selectYearAriaLabel,\n selectChosenAriaLabel: this.locale.selectChosenAriaLabel,\n },\n },\n }}\n >\n <DropdownContainer\n menuPos={this.props.menuPos}\n data-tid={DatePickerDataTids.root}\n getParent={this.getParent}\n offsetY={parseInt(this.theme.datePickerMenuOffsetY)}\n align={this.props.menuAlign}\n >\n <div\n data-tid={DatePickerDataTids.pickerRoot}\n className={styles.calendarWrapper(this.theme)}\n onMouseDown={(e) => e.preventDefault()}\n >\n <Calendar\n ref={(c) => (this.calendar = c)}\n maxDate={this.parseValueToDate(maxDate)}\n minDate={this.parseValueToDate(minDate)}\n onValueChange={this.handleValueChange}\n isHoliday={this.props.isHoliday}\n value={this.parseValueToDate(this.props.value)}\n renderDay={this.props.renderDay}\n onMonthChange={this.props.onMonthChange}\n />\n {this.props.enableTodayLink && this.renderTodayLink()}{' '}\n </div>\n </DropdownContainer>\n </LocaleContext.Provider>\n );\n }\n }\n return (\n <label\n className={styles.root()}\n style={this.getRootStyle()}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n data-tid={DatePickerDataTids.label}\n >\n <DateInput\n {...filterProps(props, INPUT_PASS_PROPS)}\n ref={this.getInputRef}\n value={this.props.value || ''}\n width=\"100%\"\n withIcon\n minDate={minDate}\n maxDate={maxDate}\n onBlur={isMobile ? undefined : this.handleBlur}\n onFocus={this.handleFocus}\n onValueChange={this.props.onValueChange}\n data-tid={DatePickerDataTids.input}\n />\n {this.state.canUseMobileNativeDatePicker ? (\n <NativeDateInput\n onValueChange={this.props.onValueChange}\n value={this.props.value || ''}\n minDate={minDate}\n maxDate={maxDate}\n disabled={this.props.disabled}\n />\n ) : (\n picker\n )}\n </label>\n );\n };\n private parseValueToDate(value?: Nullable<string>): string | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n const date = new InternalDate({ value });\n if (date.validate({ checks: [InternalDateValidateCheck.NotNull, InternalDateValidateCheck.Native] })) {\n return date.toString({ withPad: true });\n }\n\n return undefined;\n }\n\n private renderTodayLink() {\n const { order, separator } = this.locale;\n const today = new InternalDate({ order, separator })\n .setComponents(InternalDateGetter.getTodayComponents())\n .toString({ withPad: true, withSeparator: true });\n\n if (isTheme2022(this.theme)) {\n return (\n <div style={{ margin: 8 }}>\n <Button\n aria-label={this.locale.todayAriaLabel}\n data-tid={DatePickerDataTids.pickerTodayWrapper}\n width=\"100%\"\n onClick={this.handleSelectToday(today)}\n icon={<ArrowAUpIcon16Light />}\n >\n {this.locale.today}\n </Button>\n </div>\n );\n }\n\n return (\n <button\n aria-label={this.locale.todayAriaLabel}\n data-tid={DatePickerDataTids.pickerTodayWrapper}\n className={cx({\n [styles.todayLinkWrapper(this.theme)]: true,\n })}\n onClick={this.handleSelectToday(today)}\n tabIndex={-1}\n >\n {`${this.locale.today} ${today}`}\n </button>\n );\n }\n\n private handleSelectToday = (today: string) => () => {\n this.handleSelect(today);\n\n if (this.calendar) {\n const { month, year } = this.state.today;\n this.calendar.scrollToMonth(month, year);\n }\n };\n\n public getParent = () => {\n return getRootNode(this);\n };\n\n private getRootStyle = () => {\n const { width } = this.props;\n return isNonNullable(width) ? { width } : { minWidth: MIN_WIDTH };\n };\n\n private getInputRef = (ref: DateInput | null) => {\n this.input = ref;\n };\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n\n this.focused = true;\n\n this.setState({ opened: true });\n\n if (this.props.onFocus) {\n this.props.onFocus();\n }\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n return;\n }\n\n this.focused = false;\n this.close();\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handleValueChange = (value: string) => {\n this.handleSelect(value);\n this.blur();\n };\n\n private handleSelect = (value: string | null) => {\n if (!value) {\n return null;\n }\n\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n}\n"]}
@@ -6,7 +6,7 @@ import { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrappe
6
6
  import { CalendarDateShape, CalendarProps } from '../Calendar';
7
7
  import { SizeProp } from '../../lib/types/props';
8
8
  export declare const MIN_WIDTH = 120;
9
- export interface DatePickerProps extends Pick<DropdownContainerProps, 'menuPos'>, Pick<CalendarProps, 'isHoliday' | 'minDate' | 'maxDate'>, CommonProps {
9
+ export interface DatePickerProps extends Pick<DropdownContainerProps, 'menuPos'>, Pick<CalendarProps, 'isHoliday' | 'minDate' | 'maxDate' | 'renderDay' | 'onMonthChange'>, CommonProps {
10
10
  autoFocus?: boolean;
11
11
  disabled?: boolean;
12
12
  /**
@@ -91,6 +91,8 @@ export declare class DatePicker extends React.PureComponent<DatePickerProps, Dat
91
91
  onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
92
92
  onMouseOver: PropTypes.Requireable<(...args: any[]) => any>;
93
93
  isHoliday: PropTypes.Requireable<(...args: any[]) => any>;
94
+ renderDay: PropTypes.Requireable<(...args: any[]) => any>;
95
+ onMonthChange: PropTypes.Requireable<(...args: any[]) => any>;
94
96
  };
95
97
  static defaultProps: DefaultProps;
96
98
  private getProps;
@@ -105,6 +107,7 @@ export declare class DatePicker extends React.PureComponent<DatePickerProps, Dat
105
107
  private input;
106
108
  private focused;
107
109
  private setRootNode;
110
+ private isMobileLayout;
108
111
  componentDidMount(): void;
109
112
  componentDidUpdate(): void;
110
113
  /**
@@ -60,6 +60,7 @@ let removeTooltip = () => setTooltip(false);
60
60
  ```
61
61
 
62
62
  Очистить значение в `DatePicker`'е можно с помощью пустой строки, `null` или `undefined`
63
+
63
64
  ```jsx harmony
64
65
  import { Button, Group } from '@skbkontur/react-ui';
65
66
 
@@ -131,7 +132,7 @@ const isHoliday = (day, isWeekend) => {
131
132
  <details><summary>`data.gov.ru`</summary>
132
133
 
133
134
  Docs:
134
- https://data.gov.ru/api-portala-otkrytyh-dannyh-rf-polnoe-rukovodstvo
135
+ <https://data.gov.ru/api-portala-otkrytyh-dannyh-rf-polnoe-rukovodstvo>
135
136
 
136
137
  Request:
137
138
 
@@ -273,6 +274,36 @@ class DatePickerFormatting extends React.Component {
273
274
  <DatePickerFormatting />;
274
275
  ```
275
276
 
277
+ ### Период дат
278
+ Подбробный пример в [Calendar](#/Components/Calendar)
279
+
280
+ ```jsx harmony
281
+ const [value, setValue] = React.useState('12.05.2022');
282
+
283
+ <DatePicker
284
+ value={value}
285
+ onValueChange={setValue}
286
+ periodStartDate="16.05.2022"
287
+ periodEndDate="20.05.2022"
288
+ />;
289
+ ```
290
+
291
+ ### Кастомный рендер дня
292
+ Подбробный пример в [Calendar](#/Components/Calendar)
293
+
294
+ ```jsx harmony
295
+ const [value, setValue] = React.useState('12.05.2022');
296
+
297
+ const renderDay = (date, defaultProps, RenderDefault) => {
298
+ const isEven = defaultProps.children % 2 === 0;
299
+
300
+ return <RenderDefault {...defaultProps} isDisabled={isEven} />;
301
+ };
302
+
303
+
304
+ <DatePicker value={value} onValueChange={setValue} renderDay={renderDay} />;
305
+ ```
306
+
276
307
  #### Локали по умолчанию
277
308
 
278
309
  ```typescript static
@@ -338,3 +369,7 @@ const en_GB = {
338
369
  dayCellChooseDateAriaLabel: 'Choose date',
339
370
  };
340
371
  ```
372
+
373
+ ### Адаптивность
374
+
375
+ На мобильных устройствах есть несколько вариантов. По умолчанию откроется адаптивная версия в попапе. Но можно открывать нативный календарь, если передать проп `useMobileNativeDatePicker`.
@@ -1,9 +1,10 @@
1
+ import { getMonthInHumanFormat } from "../../Calendar/CalendarUtils";
1
2
  export function formatDate(_ref) {
2
3
  var date = _ref.date,
3
4
  month = _ref.month,
4
5
  year = _ref.year;
5
6
 
6
- var _map = [date, month + 1, year].map(function (x) {
7
+ var _map = [date, getMonthInHumanFormat(month), year].map(function (x) {
7
8
  return x.toString();
8
9
  }),
9
10
  d = _map[0],
@@ -1 +1 @@
1
- {"version":3,"sources":["DatePickerHelpers.tsx"],"names":["formatDate","date","month","year","map","x","toString","d","m","y","padStart"],"mappings":";;AAEA,OAAO,SAASA,UAAT,OAAsE,KAAhDC,IAAgD,QAAhDA,IAAgD,CAA1CC,KAA0C,QAA1CA,KAA0C,CAAnCC,IAAmC,QAAnCA,IAAmC;AAC3E,aAAkB,CAACF,IAAD,EAAOC,KAAK,GAAG,CAAf,EAAkBC,IAAlB,EAAwBC,GAAxB,CAA4B,UAACC,CAAD,UAAOA,CAAC,CAACC,QAAF,EAAP,EAA5B,CAAlB,CAAOC,CAAP,WAAUC,CAAV,WAAaC,CAAb;AACA,SAAUF,CAAC,CAACG,QAAF,CAAW,CAAX,EAAc,GAAd,CAAV,SAAgCF,CAAC,CAACE,QAAF,CAAW,CAAX,EAAc,GAAd,CAAhC,SAAsDD,CAAC,CAACC,QAAF,CAAW,CAAX,EAAc,GAAd,CAAtD;AACD","sourcesContent":["import { CalendarDateShape } from '../../components/Calendar/CalendarDateShape';\n\nexport function formatDate({ date, month, year }: CalendarDateShape): string {\n const [d, m, y] = [date, month + 1, year].map((x) => x.toString());\n return `${d.padStart(2, '0')}.${m.padStart(2, '0')}.${y.padStart(4, '0')}`;\n}\n"]}
1
+ {"version":3,"sources":["DatePickerHelpers.tsx"],"names":["getMonthInHumanFormat","formatDate","date","month","year","map","x","toString","d","m","y","padStart"],"mappings":";AACA,SAASA,qBAAT,QAAsC,2BAAtC;;AAEA,OAAO,SAASC,UAAT,OAAsE,KAAhDC,IAAgD,QAAhDA,IAAgD,CAA1CC,KAA0C,QAA1CA,KAA0C,CAAnCC,IAAmC,QAAnCA,IAAmC;AAC3E,aAAkB,CAACF,IAAD,EAAOF,qBAAqB,CAACG,KAAD,CAA5B,EAAqCC,IAArC,EAA2CC,GAA3C,CAA+C,UAACC,CAAD,UAAOA,CAAC,CAACC,QAAF,EAAP,EAA/C,CAAlB,CAAOC,CAAP,WAAUC,CAAV,WAAaC,CAAb;AACA,SAAUF,CAAC,CAACG,QAAF,CAAW,CAAX,EAAc,GAAd,CAAV,SAAgCF,CAAC,CAACE,QAAF,CAAW,CAAX,EAAc,GAAd,CAAhC,SAAsDD,CAAC,CAACC,QAAF,CAAW,CAAX,EAAc,GAAd,CAAtD;AACD","sourcesContent":["import { CalendarDateShape } from '../../components/Calendar/CalendarDateShape';\nimport { getMonthInHumanFormat } from '../Calendar/CalendarUtils';\n\nexport function formatDate({ date, month, year }: CalendarDateShape): string {\n const [d, m, y] = [date, getMonthInHumanFormat(month), year].map((x) => x.toString());\n return `${d.padStart(2, '0')}.${m.padStart(2, '0')}.${y.padStart(4, '0')}`;\n}\n"]}
@@ -0,0 +1,91 @@
1
+ import React, { useContext, useLayoutEffect, useRef, useState } from 'react';
2
+ import { Calendar } from "../../Calendar";
3
+ import * as CalendarUtils from "../../Calendar/CalendarUtils";
4
+ import { ThemeContext } from "../../../lib/theming/ThemeContext";
5
+ import { MobilePopup } from "../../../internal/MobilePopup";
6
+ import { DateInput } from "../../DateInput";
7
+ import { Button } from "../../Button";
8
+ import { useLocaleForControl } from "../../../lib/locale/useLocaleForControl";
9
+ import { useEffectWithoutInitCall } from "../../../hooks/useEffectWithoutInitCall";
10
+ import { DatePickerLocaleHelper } from "../locale";
11
+ import { styles } from "../MobilePicker.styles";
12
+ import { getMobilePickerTheme } from "../getMobilePickerTheme";
13
+ export var MobilePickerDataTids = {
14
+ input: 'MobilePicker__input',
15
+ today: 'MobilePicker__today'
16
+ };
17
+ export var MobilePicker = function MobilePicker(props) {
18
+ var locale = useLocaleForControl('DatePicker', DatePickerLocaleHelper);
19
+ var theme = getMobilePickerTheme(useContext(ThemeContext));
20
+
21
+ var onValueChange = function onValueChange(date) {
22
+ if (props.onValueChange) {
23
+ props.onValueChange(date);
24
+ }
25
+
26
+ if (props.onCloseRequest) {
27
+ props.onCloseRequest();
28
+ }
29
+ };
30
+
31
+ var inputRef = useRef(null);
32
+ useLayoutEffect(function () {
33
+ if (inputRef.current) {
34
+ inputRef.current.focus();
35
+ }
36
+ }, []);
37
+ var calendarRef = useRef(null);
38
+
39
+ var _useState = useState(function () {
40
+ return CalendarUtils.getTodayDate();
41
+ }),
42
+ today = _useState[0];
43
+
44
+ var onTodayClick = function onTodayClick() {
45
+ if (calendarRef.current) {
46
+ calendarRef.current.scrollToMonth(today.month, today.year);
47
+ }
48
+ };
49
+
50
+ useEffectWithoutInitCall(function () {
51
+ if (props.value && calendarRef.current) {
52
+ var month = +props.value.substring(3, 5);
53
+ var year = +props.value.substring(6);
54
+ calendarRef.current.scrollToMonth(month, year);
55
+ }
56
+ }, [props.value]);
57
+ return /*#__PURE__*/React.createElement(ThemeContext.Provider, {
58
+ value: theme
59
+ }, /*#__PURE__*/React.createElement(MobilePopup, {
60
+ opened: true,
61
+ headerChildComponent: /*#__PURE__*/React.createElement(DateInput, {
62
+ value: props.value || '',
63
+ width: "100%",
64
+ withIcon: true,
65
+ ref: inputRef,
66
+ minDate: props.minDate,
67
+ maxDate: props.maxDate,
68
+ onValueChange: props.onValueChange,
69
+ size: "medium",
70
+ warning: props.warning,
71
+ error: props.error,
72
+ "data-tid": MobilePickerDataTids.input
73
+ }),
74
+ footerChildComponent: props.enableTodayLink && /*#__PURE__*/React.createElement(Button, {
75
+ size: "medium",
76
+ onClick: onTodayClick,
77
+ "data-tid": MobilePickerDataTids.today
78
+ }, locale.today),
79
+ onCloseRequest: props.onCloseRequest
80
+ }, /*#__PURE__*/React.createElement(Calendar, {
81
+ ref: calendarRef,
82
+ value: props.value,
83
+ className: styles.calendarRoot(),
84
+ minDate: props.minDate,
85
+ maxDate: props.maxDate,
86
+ onValueChange: onValueChange,
87
+ isHoliday: props.isHoliday,
88
+ renderDay: props.renderDay,
89
+ onMonthChange: props.onMonthChange
90
+ })));
91
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["MobilePicker.tsx"],"names":["React","useContext","useLayoutEffect","useRef","useState","Calendar","CalendarUtils","ThemeContext","MobilePopup","DateInput","Button","useLocaleForControl","useEffectWithoutInitCall","DatePickerLocaleHelper","styles","getMobilePickerTheme","MobilePickerDataTids","input","today","MobilePicker","props","locale","theme","onValueChange","date","onCloseRequest","inputRef","current","focus","calendarRef","getTodayDate","onTodayClick","scrollToMonth","month","year","value","substring","minDate","maxDate","warning","error","enableTodayLink","calendarRoot","isHoliday","renderDay","onMonthChange"],"mappings":"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","sourcesContent":["import React, { useContext, useLayoutEffect, useRef, useState } from 'react';\n\nimport { Calendar } from '../Calendar';\nimport * as CalendarUtils from '../Calendar/CalendarUtils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { MobilePopup } from '../../internal/MobilePopup';\nimport { DateInput } from '../DateInput';\nimport { Button } from '../Button';\nimport { useLocaleForControl } from '../../lib/locale/useLocaleForControl';\nimport { useEffectWithoutInitCall } from '../../hooks/useEffectWithoutInitCall';\n\nimport { DatePickerProps } from './DatePicker';\nimport { DatePickerLocaleHelper } from './locale';\nimport { styles } from './MobilePicker.styles';\nimport { getMobilePickerTheme } from './getMobilePickerTheme';\n\nexport const MobilePickerDataTids = {\n input: 'MobilePicker__input',\n today: 'MobilePicker__today',\n} as const;\n\nexport interface MobilePickerProps\n extends Pick<\n DatePickerProps,\n | 'error'\n | 'warning'\n | 'value'\n | 'minDate'\n | 'maxDate'\n | 'onValueChange'\n | 'isHoliday'\n | 'enableTodayLink'\n | 'renderDay'\n | 'onMonthChange'\n > {\n onCloseRequest?: () => void;\n}\n\nexport const MobilePicker: React.FC<MobilePickerProps> = (props) => {\n const locale = useLocaleForControl('DatePicker', DatePickerLocaleHelper);\n\n const theme = getMobilePickerTheme(useContext(ThemeContext));\n\n const onValueChange = (date: string) => {\n if (props.onValueChange) {\n props.onValueChange(date);\n }\n if (props.onCloseRequest) {\n props.onCloseRequest();\n }\n };\n\n const inputRef = useRef<DateInput>(null);\n useLayoutEffect(() => {\n if (inputRef.current) {\n inputRef.current.focus();\n }\n }, []);\n\n const calendarRef = useRef<Calendar>(null);\n const [today] = useState(() => CalendarUtils.getTodayDate());\n const onTodayClick = () => {\n if (calendarRef.current) {\n calendarRef.current.scrollToMonth(today.month, today.year);\n }\n };\n\n useEffectWithoutInitCall(() => {\n if (props.value && calendarRef.current) {\n const month = +props.value.substring(3, 5);\n const year = +props.value.substring(6);\n calendarRef.current.scrollToMonth(month, year);\n }\n }, [props.value]);\n\n return (\n <ThemeContext.Provider value={theme}>\n <MobilePopup\n opened\n headerChildComponent={\n <DateInput\n value={props.value || ''}\n width=\"100%\"\n withIcon\n ref={inputRef}\n minDate={props.minDate}\n maxDate={props.maxDate}\n onValueChange={props.onValueChange}\n size=\"medium\"\n warning={props.warning}\n error={props.error}\n data-tid={MobilePickerDataTids.input}\n />\n }\n footerChildComponent={\n props.enableTodayLink && (\n <Button size=\"medium\" onClick={onTodayClick} data-tid={MobilePickerDataTids.today}>\n {locale.today}\n </Button>\n )\n }\n onCloseRequest={props.onCloseRequest}\n >\n <Calendar\n ref={calendarRef}\n value={props.value}\n className={styles.calendarRoot()}\n minDate={props.minDate}\n maxDate={props.maxDate}\n onValueChange={onValueChange}\n isHoliday={props.isHoliday}\n renderDay={props.renderDay}\n onMonthChange={props.onMonthChange}\n />\n </MobilePopup>\n </ThemeContext.Provider>\n );\n};\n"]}
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../../cjs/components/DatePicker/MobilePicker.js",
3
+ "module": "MobilePicker",
4
+ "types": "../MobilePicker.d.ts",
5
+ "sideEffects": false
6
+ }