@skbkontur/react-ui 4.16.0-next.5 → 4.16.0-next.6

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 (79) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/cjs/components/Calendar/Calendar.d.ts +1 -0
  3. package/cjs/components/Calendar/Calendar.js +1 -0
  4. package/cjs/components/Calendar/Calendar.js.map +1 -1
  5. package/cjs/components/Calendar/Calendar.md +14 -3
  6. package/cjs/components/Calendar/DayCellView.js +8 -1
  7. package/cjs/components/Calendar/DayCellView.js.map +1 -1
  8. package/cjs/components/Calendar/locale/locales/en.js +3 -1
  9. package/cjs/components/Calendar/locale/locales/en.js.map +1 -1
  10. package/cjs/components/Calendar/locale/locales/ru.js +3 -1
  11. package/cjs/components/Calendar/locale/locales/ru.js.map +1 -1
  12. package/cjs/components/Calendar/locale/types.d.ts +4 -0
  13. package/cjs/components/DatePicker/DatePicker.js +9 -1
  14. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  15. package/cjs/components/DatePicker/DatePicker.md +12 -0
  16. package/cjs/components/DatePicker/locale/locales/en.js +2 -0
  17. package/cjs/components/DatePicker/locale/locales/en.js.map +1 -1
  18. package/cjs/components/DatePicker/locale/locales/ru.js +2 -0
  19. package/cjs/components/DatePicker/locale/locales/ru.js.map +1 -1
  20. package/cjs/components/DatePicker/locale/types.d.ts +2 -1
  21. package/cjs/internal/DateSelect/DateSelect.d.ts +2 -0
  22. package/cjs/internal/DateSelect/DateSelect.js +31 -2
  23. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  24. package/cjs/internal/DateSelect/DateSelect.styles.js +13 -3
  25. package/cjs/internal/DateSelect/DateSelect.styles.js.map +1 -1
  26. package/cjs/internal/DateSelect/locale/index.d.ts +4 -0
  27. package/cjs/internal/DateSelect/locale/index.js +11 -0
  28. package/cjs/internal/DateSelect/locale/index.js.map +1 -0
  29. package/cjs/internal/DateSelect/locale/locales/en.d.ts +2 -0
  30. package/cjs/internal/DateSelect/locale/locales/en.js +6 -0
  31. package/cjs/internal/DateSelect/locale/locales/en.js.map +1 -0
  32. package/cjs/internal/DateSelect/locale/locales/ru.d.ts +2 -0
  33. package/cjs/internal/DateSelect/locale/locales/ru.js +6 -0
  34. package/cjs/internal/DateSelect/locale/locales/ru.js.map +1 -0
  35. package/cjs/internal/DateSelect/locale/types.d.ts +5 -0
  36. package/cjs/internal/DateSelect/locale/types.js +1 -0
  37. package/cjs/internal/DateSelect/locale/types.js.map +1 -0
  38. package/components/Calendar/Calendar/Calendar.js +1 -0
  39. package/components/Calendar/Calendar/Calendar.js.map +1 -1
  40. package/components/Calendar/Calendar.d.ts +1 -0
  41. package/components/Calendar/Calendar.md +14 -3
  42. package/components/Calendar/DayCellView/DayCellView.js +6 -0
  43. package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
  44. package/components/Calendar/locale/locales/en/en.js +2 -1
  45. package/components/Calendar/locale/locales/en/en.js.map +1 -1
  46. package/components/Calendar/locale/locales/ru/ru.js +2 -1
  47. package/components/Calendar/locale/locales/ru/ru.js.map +1 -1
  48. package/components/Calendar/locale/types.d.ts +4 -0
  49. package/components/DatePicker/DatePicker/DatePicker.js +5 -1
  50. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  51. package/components/DatePicker/DatePicker.md +12 -0
  52. package/components/DatePicker/locale/locales/en/en.js +2 -1
  53. package/components/DatePicker/locale/locales/en/en.js.map +1 -1
  54. package/components/DatePicker/locale/locales/ru/ru.js +2 -1
  55. package/components/DatePicker/locale/locales/ru/ru.js.map +1 -1
  56. package/components/DatePicker/locale/types.d.ts +2 -1
  57. package/internal/DateSelect/DateSelect/DateSelect.js +30 -15
  58. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  59. package/internal/DateSelect/DateSelect.d.ts +2 -0
  60. package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js +2 -2
  61. package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js.map +1 -1
  62. package/internal/DateSelect/locale/index/index.js +8 -0
  63. package/internal/DateSelect/locale/index/index.js.map +1 -0
  64. package/internal/DateSelect/locale/index/package.json +6 -0
  65. package/internal/DateSelect/locale/index.d.ts +4 -0
  66. package/internal/DateSelect/locale/locales/en/en.js +5 -0
  67. package/internal/DateSelect/locale/locales/en/en.js.map +1 -0
  68. package/internal/DateSelect/locale/locales/en/package.json +6 -0
  69. package/internal/DateSelect/locale/locales/en.d.ts +2 -0
  70. package/internal/DateSelect/locale/locales/ru/package.json +6 -0
  71. package/internal/DateSelect/locale/locales/ru/ru.js +5 -0
  72. package/internal/DateSelect/locale/locales/ru/ru.js.map +1 -0
  73. package/internal/DateSelect/locale/locales/ru.d.ts +2 -0
  74. package/internal/DateSelect/locale/package.json +6 -0
  75. package/internal/DateSelect/locale/types/package.json +6 -0
  76. package/internal/DateSelect/locale/types/types.js +1 -0
  77. package/internal/DateSelect/locale/types/types.js.map +1 -0
  78. package/internal/DateSelect/locale/types.d.ts +5 -0
  79. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [4.16.0-next.6](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.16.0-next.5...@skbkontur/react-ui@4.16.0-next.6) (2023-08-15)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **Calendar:** add accessible descriptions ([#3232](https://github.com/skbkontur/retail-ui/issues/3232)) ([b2b0d78](https://github.com/skbkontur/retail-ui/commit/b2b0d78f2d39daaa45e973034de6a533a7e701a3))
12
+
13
+
14
+
15
+
16
+
6
17
  # [4.16.0-next.5](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.15.6...@skbkontur/react-ui@4.16.0-next.5) (2023-08-11)
7
18
 
8
19
 
@@ -56,6 +56,7 @@ export interface CalendarState {
56
56
  export declare const CalendarDataTids: {
57
57
  readonly root: "Calendar__root";
58
58
  readonly month: "MonthView__month";
59
+ readonly dayCell: "DayCellView__root";
59
60
  readonly headerMonth: "MonthView__headerMonth";
60
61
  readonly headerYear: "MonthView__headerYear";
61
62
  };
@@ -79,6 +79,7 @@ var CalendarUtils = _interopRequireWildcard(require("./CalendarUtils"));var _cla
79
79
  var CalendarDataTids = {
80
80
  root: 'Calendar__root',
81
81
  month: 'MonthView__month',
82
+ dayCell: 'DayCellView__root',
82
83
  headerMonth: 'MonthView__headerMonth',
83
84
  headerYear: 'MonthView__headerYear' };exports.CalendarDataTids = CalendarDataTids;
84
85
 
@@ -1 +1 @@
1
- {"version":3,"sources":["Calendar.tsx"],"names":["CalendarDataTids","root","month","headerMonth","headerYear","Calendar","rootNode","formatDate","date","year","InternalDate","setComponents","toString","withPad","props","getProps","defaultProps","animation","touchStartY","scrollToMonth","inProgress","finish","Promise","r","setTimeout","minDate","getDateInNativeFormat","maxDate","currentMonth","state","months","diffInMonths","scrollTo","maxMonthsToAdd","theme","MAX_MONTHS_TO_APPEND_ON_SCROLL","onEnd","setState","CalendarUtils","getMonths","scrollPosition","isYearChanges","Math","abs","monthsToPrependCount","min","monthsToPrepend","Array","from","length","_","index","MonthViewModel","create","yearChanges","isFirstInYear","isLastInYear","concat","getMonthsHeight","targetPosition","getHeight","monthsToAppendCount","monthsToAppend","slice","renderMain","positions","getMonthPositions","wrapperStyle","height","WRAPPER_HEIGHT","setRootNode","refRoot","styles","wrapper","map","x","i","filter","top","isMonthVisible","renderMonth","separator","element","isMobile","addEventListener","handleTouchStart","throttledHandleTouchMove","handleWheel","passive","removeEventListener","isHoliday","isWeekend","dateString","InternalDateTransformer","dateToInternalString","handleDateChange","dateShape","value","onValueChange","handleMonthYearChange","executeAnimations","pixelY","calculateScrollPosition","scrollTarget","handleWheelEnd","animate","deltaY","applyDelta","CalendarScrollEvents","emit","event","TouchEvent","clientY","targetTouches","handleTouchMove","changedTouches","WheelEvent","preventDefault","wheelEndTimeout","clearTimeout","window","scrollToNearestWeek","scrollDirection","trasholdHeight","MONTH_TITLE_OFFSET_HEIGHT","DAY_SIZE","amount","pos","scrollAmmount","scrollAmount","minDateShape","maxDateShape","today","getTodayDate","initialDate","getInitialDate","initialMonth","getMonthInNativeFormat","initialYear","componentDidUpdate","prevProps","parseValue","getComponentsLikeNumber","componentWillUnmount","cancel","render","toNativeFormat","position","push","React","Component","__KONTUR_REACT_UI__","MIN_DATE","MIN_MONTH","MIN_YEAR","MAX_DATE","MAX_MONTH","MAX_YEAR","_day"],"mappings":"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","sourcesContent":["import React from 'react';\nimport normalizeWheel from 'normalize-wheel';\nimport throttle from 'lodash.throttle';\nimport shallowEqual from 'shallowequal';\n\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { InternalDateTransformer } from '../../lib/date/InternalDateTransformer';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { cx } from '../../lib/theming/Emotion';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { MAX_DATE, MAX_MONTH, MAX_YEAR, MIN_DATE, MIN_MONTH, MIN_YEAR } from '../../lib/date/constants';\nimport { Nullable, Range } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { animation } from '../../lib/animation';\nimport { isMobile } from '../../lib/client';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { themeConfig } from './config';\nimport { MonthViewModel } from './MonthViewModel';\nimport * as CalendarScrollEvents from './CalendarScrollEvents';\nimport { Month } from './Month';\nimport { styles } from './Calendar.styles';\nimport { CalendarDateShape, create, isGreater, isLess } from './CalendarDateShape';\nimport * as CalendarUtils from './CalendarUtils';\n\nexport interface CalendarProps extends CommonProps {\n /**\n * Вызывается при изменении `value`\n *\n * В аргументе хранится дата в формате `dd.mm.yyyy`\n */\n onValueChange?: (date: string) => void;\n /**\n * Задаёт текущую дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n value: Nullable<string>;\n /**\n * Задаёт максимальную возможную дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n maxDate?: string;\n /**\n * Задаёт минимальную возможную дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n minDate?: string;\n /**\n * Функция для определения праздничных дней\n * @default (_day, isWeekend) => isWeekend\n * @param {string} day - строка в формате `dd.mm.yyyy`\n * @param {boolean} isWeekend - флаг выходного (суббота или воскресенье)\n *\n * @returns {boolean} `true` для выходного или `false` для рабочего дня\n */\n isHoliday?: (day: string, isWeekend: boolean) => boolean;\n /**\n * Позволяет задать начальный месяц\n */\n initialMonth?: Range<1, 13>;\n /**\n * Позволяет задать начальный год\n */\n initialYear?: number;\n}\n\nexport interface CalendarState {\n scrollPosition: number;\n months: MonthViewModel[];\n today: CalendarDateShape;\n scrollDirection: number;\n scrollTarget: number;\n}\n\nexport const CalendarDataTids = {\n root: 'Calendar__root',\n month: 'MonthView__month',\n headerMonth: 'MonthView__headerMonth',\n headerYear: 'MonthView__headerYear',\n} as const;\n\ntype DefaultProps = Required<Pick<CalendarProps, 'minDate' | 'maxDate' | 'isHoliday'>>;\n\n/**\n * Компонент календаря из [DatePicker](https://tech.skbkontur.ru/react-ui/#/Components/DatePicker)'а\n */\n@rootNode\nexport class Calendar extends React.Component<CalendarProps, CalendarState> {\n public static __KONTUR_REACT_UI__ = 'Calendar';\n\n private static formatDate(date: number, month: number, year: number) {\n return new InternalDate().setComponents({ date, month, year }).toString({ withPad: true });\n }\n\n public static defaultProps: DefaultProps = {\n minDate: Calendar.formatDate(MIN_DATE, MIN_MONTH, MIN_YEAR),\n maxDate: Calendar.formatDate(MAX_DATE, MAX_MONTH, MAX_YEAR),\n isHoliday: (_day: string, isWeekend: boolean) => isWeekend,\n };\n\n private getProps = createPropsGetter(Calendar.defaultProps);\n\n private theme!: Theme;\n private wheelEndTimeout: Nullable<number>;\n private root: Nullable<HTMLElement>;\n private animation = animation();\n private touchStartY: Nullable<number> = null;\n private setRootNode!: TSetRootNode;\n\n constructor(props: CalendarProps) {\n super(props);\n\n const { minDate, maxDate, value } = this.getProps();\n\n const minDateShape = this.getDateInNativeFormat(minDate);\n const maxDateShape = this.getDateInNativeFormat(maxDate);\n const dateShape = this.getDateInNativeFormat(value);\n\n const today = CalendarUtils.getTodayDate();\n const initialDate = CalendarUtils.getInitialDate({\n today,\n date: dateShape,\n minDate: minDateShape,\n maxDate: maxDateShape,\n });\n\n const initialMonth = CalendarUtils.getMonthInNativeFormat(this.props.initialMonth) ?? initialDate.month;\n const initialYear = this.props.initialYear ?? initialDate.year;\n\n this.state = {\n scrollPosition: 0,\n months: CalendarUtils.getMonths(initialMonth, initialYear),\n today,\n scrollDirection: 1,\n scrollTarget: 0,\n };\n }\n\n public componentDidUpdate(prevProps: Readonly<CalendarProps>): void {\n const { value } = this.props;\n if (value && !shallowEqual(value, prevProps.value)) {\n const date = new InternalDate().parseValue(value).getComponentsLikeNumber();\n this.scrollToMonth(date.month - 1, date.year);\n }\n }\n\n public componentWillUnmount() {\n if (this.animation.inProgress()) {\n this.animation.cancel();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * Прокручивает календарь до переданной даты\n * @public\n */\n public scrollToMonth = async (month: number, year: number) => {\n if (this.animation.inProgress()) {\n this.animation.finish();\n // FIXME: Dirty hack to await batched updates\n await new Promise((r) => setTimeout(r));\n }\n\n const minDate = this.getDateInNativeFormat(this.getProps().minDate);\n const maxDate = this.getDateInNativeFormat(this.getProps().maxDate);\n\n if (minDate && isGreater(minDate, create(32, month, year))) {\n this.scrollToMonth(minDate.month, minDate.year);\n return;\n }\n\n if (maxDate && isLess(maxDate, create(0, month, year))) {\n this.scrollToMonth(maxDate.month, maxDate.year);\n return;\n }\n\n const currentMonth = this.state.months[1];\n const diffInMonths = currentMonth.month + currentMonth.year * 12 - month - year * 12;\n\n if (diffInMonths === 0) {\n this.scrollTo(0);\n return;\n }\n\n const maxMonthsToAdd = themeConfig(this.theme).MAX_MONTHS_TO_APPEND_ON_SCROLL;\n\n const onEnd = () => {\n this.setState({\n months: CalendarUtils.getMonths(month, year),\n scrollPosition: 0,\n });\n };\n\n const isYearChanges = (state: CalendarState) => {\n return (\n state.months[1].year !== year &&\n // if diff in months is 2 or less,\n // either year is not changing either months already\n // have right isFirstInYear/isLastInYear flags\n Math.abs(diffInMonths) > 2\n );\n };\n\n // If scrolling upwards, prepend maximum maxMonthsToAdd months\n // and scroll to the first month\n if (diffInMonths > 0) {\n const monthsToPrependCount = Math.min(Math.abs(diffInMonths) - 1, maxMonthsToAdd);\n const monthsToPrepend = Array.from({ length: monthsToPrependCount }, (_, index) => {\n return MonthViewModel.create(month + index, year);\n });\n this.setState(\n (state) => {\n const yearChanges = isYearChanges(state);\n if (yearChanges) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[0].isFirstInYear = true;\n if (monthsToPrepend.length) {\n // Mutating item here is safe as it was just created\n monthsToPrepend[monthsToPrepend.length - 1].isLastInYear = true;\n }\n }\n return {\n months: monthsToPrepend.concat(state.months),\n scrollPosition: -CalendarUtils.getMonthsHeight(monthsToPrepend, this.theme),\n };\n },\n () => {\n const targetPosition = this.state.months[0].getHeight(this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n\n // If scrolling downwards, append maximum maxMonthsToAdd months\n // and scroll to the last but one month\n if (diffInMonths < 0) {\n const monthsToAppendCount = Math.min(Math.abs(diffInMonths), maxMonthsToAdd);\n const monthsToAppend = Array.from({ length: monthsToAppendCount }, (_, index) => {\n return MonthViewModel.create(month + index - monthsToAppendCount + 2, year);\n });\n this.setState(\n (state) => {\n if (isYearChanges(state)) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[state.months.length - 1].isLastInYear = true;\n // Mutating item here is safe as it was just created\n if (monthsToAppend[0]) {\n monthsToAppend[0].isFirstInYear = true;\n }\n }\n return { months: state.months.concat(monthsToAppend) };\n },\n () => {\n const targetPosition = -1 * CalendarUtils.getMonthsHeight(this.state.months.slice(1, -2), this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n };\n\n private renderMain = () => {\n const positions = this.getMonthPositions();\n const wrapperStyle = { height: themeConfig(this.theme).WRAPPER_HEIGHT };\n\n const props = this.getProps();\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...props}>\n <div ref={this.refRoot} data-tid={CalendarDataTids.root} className={cx(styles.root(this.theme))}>\n <div style={wrapperStyle} className={styles.wrapper()}>\n {this.state.months\n .map<[number, MonthViewModel]>((x, i) => [positions[i], x])\n .filter(([top, month]) => CalendarUtils.isMonthVisible(top, month, this.theme))\n .map(this.renderMonth, this)}\n </div>\n <div className={styles.separator(this.theme)} />\n </div>\n </CommonWrapper>\n );\n };\n\n private refRoot = (element: HTMLElement | null) => {\n if (!this.root && element) {\n if (isMobile) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n }\n if (this.root && !element) {\n if (isMobile) {\n this.root.removeEventListener('touchstart', this.handleTouchStart);\n this.root.removeEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n this.root.removeEventListener('wheel', this.handleWheel);\n }\n }\n this.root = element;\n };\n\n private renderMonth([top, month]: [number, MonthViewModel]) {\n const date = this.getDateInNativeFormat(this.props.value);\n const minDate = this.getDateInNativeFormat(this.props.minDate);\n const maxDate = this.getDateInNativeFormat(this.props.maxDate);\n\n return (\n <Month\n key={month.month + '-' + month.year}\n top={top}\n month={month}\n maxDate={maxDate}\n minDate={minDate}\n today={this.state.today}\n value={date}\n onDateClick={this.handleDateChange}\n onMonthYearChange={this.handleMonthYearChange}\n isHoliday={this.isHoliday}\n />\n );\n }\n\n private isHoliday = ({ date, month, year, isWeekend }: CalendarDateShape & { isWeekend: boolean }) => {\n const dateString = InternalDateTransformer.dateToInternalString({ date, month: month + 1, year });\n\n return this.getProps().isHoliday(dateString, isWeekend);\n };\n\n private handleDateChange = (dateShape: CalendarDateShape) => {\n const value = InternalDateTransformer.dateToInternalString({\n date: dateShape.date,\n month: dateShape.month + 1,\n year: dateShape.year,\n });\n\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private getDateInNativeFormat(date: Nullable<string>) {\n return new InternalDate().parseValue(date).toNativeFormat();\n }\n\n private getMonthPositions() {\n const { scrollPosition, months } = this.state;\n\n const positions = [scrollPosition - months[0].getHeight(this.theme)];\n for (let i = 1; i < months.length; i++) {\n const position = positions[i - 1] + months[i - 1].getHeight(this.theme);\n positions.push(position);\n }\n return positions;\n }\n\n private handleMonthYearChange = (month: number, year: number) => {\n this.scrollToMonth(month, year);\n };\n\n private executeAnimations = (pixelY: number) => {\n this.setState(({ months, scrollPosition }) => {\n const targetPosition = CalendarUtils.calculateScrollPosition(\n months,\n scrollPosition,\n pixelY,\n this.theme,\n ).scrollPosition;\n return { scrollTarget: targetPosition };\n }, this.handleWheelEnd);\n\n this.animation.animate(pixelY, (deltaY) => {\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any);\n });\n\n CalendarScrollEvents.emit();\n };\n\n private handleTouchStart = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const clientY = event.targetTouches[0].clientY;\n this.touchStartY = clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n\n const deltaY = (this.touchStartY || 0) - clientY;\n this.touchStartY = clientY;\n\n this.executeAnimations(deltaY);\n };\n\n private throttledHandleTouchMove = throttle(this.handleTouchMove, 10);\n\n private handleWheel = (event: Event) => {\n if (!(event instanceof WheelEvent)) {\n return;\n }\n event.preventDefault();\n const { pixelY } = normalizeWheel(event);\n\n this.executeAnimations(pixelY);\n };\n\n private handleWheelEnd = () => {\n if (this.wheelEndTimeout) {\n clearTimeout(this.wheelEndTimeout);\n }\n this.wheelEndTimeout = window.setTimeout(this.scrollToNearestWeek, 300);\n };\n private scrollToNearestWeek = () => {\n const { scrollTarget, scrollDirection } = this.state;\n\n const trasholdHeight = themeConfig(this.theme).MONTH_TITLE_OFFSET_HEIGHT + themeConfig(this.theme).DAY_SIZE;\n\n if (scrollTarget < trasholdHeight) {\n let targetPosition = 0;\n if (scrollDirection < 0) {\n targetPosition = trasholdHeight;\n }\n\n this.setState({ scrollTarget: targetPosition }, () => {\n const amount = scrollTarget - targetPosition;\n this.animation.animate(amount, (deltaY) => {\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any);\n });\n });\n }\n };\n\n private scrollTo = (pos: number, onEnd?: () => void) => {\n const scrollAmmount = pos - this.state.scrollPosition;\n return this.scrollAmount(scrollAmmount, onEnd);\n };\n\n private scrollAmount = (scrollAmmount: number, onEnd?: () => void) => {\n return this.animation.animate(\n scrollAmmount,\n (deltaY) => {\n this.setState(({ scrollPosition }) => ({\n scrollPosition: scrollPosition + deltaY,\n }));\n },\n onEnd,\n );\n };\n}\n"]}
1
+ {"version":3,"sources":["Calendar.tsx"],"names":["CalendarDataTids","root","month","dayCell","headerMonth","headerYear","Calendar","rootNode","formatDate","date","year","InternalDate","setComponents","toString","withPad","props","getProps","defaultProps","animation","touchStartY","scrollToMonth","inProgress","finish","Promise","r","setTimeout","minDate","getDateInNativeFormat","maxDate","currentMonth","state","months","diffInMonths","scrollTo","maxMonthsToAdd","theme","MAX_MONTHS_TO_APPEND_ON_SCROLL","onEnd","setState","CalendarUtils","getMonths","scrollPosition","isYearChanges","Math","abs","monthsToPrependCount","min","monthsToPrepend","Array","from","length","_","index","MonthViewModel","create","yearChanges","isFirstInYear","isLastInYear","concat","getMonthsHeight","targetPosition","getHeight","monthsToAppendCount","monthsToAppend","slice","renderMain","positions","getMonthPositions","wrapperStyle","height","WRAPPER_HEIGHT","setRootNode","refRoot","styles","wrapper","map","x","i","filter","top","isMonthVisible","renderMonth","separator","element","isMobile","addEventListener","handleTouchStart","throttledHandleTouchMove","handleWheel","passive","removeEventListener","isHoliday","isWeekend","dateString","InternalDateTransformer","dateToInternalString","handleDateChange","dateShape","value","onValueChange","handleMonthYearChange","executeAnimations","pixelY","calculateScrollPosition","scrollTarget","handleWheelEnd","animate","deltaY","applyDelta","CalendarScrollEvents","emit","event","TouchEvent","clientY","targetTouches","handleTouchMove","changedTouches","WheelEvent","preventDefault","wheelEndTimeout","clearTimeout","window","scrollToNearestWeek","scrollDirection","trasholdHeight","MONTH_TITLE_OFFSET_HEIGHT","DAY_SIZE","amount","pos","scrollAmmount","scrollAmount","minDateShape","maxDateShape","today","getTodayDate","initialDate","getInitialDate","initialMonth","getMonthInNativeFormat","initialYear","componentDidUpdate","prevProps","parseValue","getComponentsLikeNumber","componentWillUnmount","cancel","render","toNativeFormat","position","push","React","Component","__KONTUR_REACT_UI__","MIN_DATE","MIN_MONTH","MIN_YEAR","MAX_DATE","MAX_MONTH","MAX_YEAR","_day"],"mappings":"ooBAAA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDO,IAAMA,gBAAgB,GAAG;AAC9BC,EAAAA,IAAI,EAAE,gBADwB;AAE9BC,EAAAA,KAAK,EAAE,kBAFuB;AAG9BC,EAAAA,OAAO,EAAE,mBAHqB;AAI9BC,EAAAA,WAAW,EAAE,wBAJiB;AAK9BC,EAAAA,UAAU,EAAE,uBALkB,EAAzB,C;;;;;AAUP;AACA;AACA,G;;AAEaC,Q,OADZC,kB;;;AAIgBC,EAAAA,U,GAAf,oBAA0BC,IAA1B,EAAwCP,KAAxC,EAAuDQ,IAAvD,EAAqE;AACnE,WAAO,IAAIC,0BAAJ,GAAmBC,aAAnB,CAAiC,EAAEH,IAAI,EAAJA,IAAF,EAAQP,KAAK,EAALA,KAAR,EAAeQ,IAAI,EAAJA,IAAf,EAAjC,EAAwDG,QAAxD,CAAiE,EAAEC,OAAO,EAAE,IAAX,EAAjE,CAAP;AACD,G;;;;;;;;;;;;;;;;;AAiBD,oBAAYC,MAAZ,EAAkC;AAChC,wCAAMA,MAAN,UADgC,MAT1BC,QAS0B,GATf,0CAAkBV,QAAQ,CAACW,YAA3B,CASe,OAJ1BC,SAI0B,GAJd,2BAIc,OAH1BC,WAG0B,GAHM,IAGN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0D3BC,IAAAA,aA1D2B,gHA0DX,iBAAOlB,KAAP,EAAsBQ,IAAtB;AACjB,sBAAKQ,SAAL,CAAeG,UAAf,EADiB;AAEnB,sBAAKH,SAAL,CAAeI,MAAf;AACA;AAHmB,yCAIb,IAAIC,OAAJ,CAAY,UAACC,CAAD,UAAOC,UAAU,CAACD,CAAD,CAAjB,EAAZ,CAJa;;;AAOfE,gBAAAA,OAPe,GAOL,MAAKC,qBAAL,CAA2B,MAAKX,QAAL,GAAgBU,OAA3C,CAPK;AAQfE,gBAAAA,OARe,GAQL,MAAKD,qBAAL,CAA2B,MAAKX,QAAL,GAAgBY,OAA3C,CARK;;AAUjBF,gBAAAA,OAAO,IAAI,kCAAUA,OAAV,EAAmB,+BAAO,EAAP,EAAWxB,KAAX,EAAkBQ,IAAlB,CAAnB,CAVM;AAWnB,sBAAKU,aAAL,CAAmBM,OAAO,CAACxB,KAA3B,EAAkCwB,OAAO,CAAChB,IAA1C,EAXmB;;;;AAejBkB,gBAAAA,OAAO,IAAI,+BAAOA,OAAP,EAAgB,+BAAO,CAAP,EAAU1B,KAAV,EAAiBQ,IAAjB,CAAhB,CAfM;AAgBnB,sBAAKU,aAAL,CAAmBQ,OAAO,CAAC1B,KAA3B,EAAkC0B,OAAO,CAAClB,IAA1C,EAhBmB;;;;AAoBfmB,gBAAAA,YApBe,GAoBA,MAAKC,KAAL,CAAWC,MAAX,CAAkB,CAAlB,CApBA;AAqBfC,gBAAAA,YArBe,GAqBAH,YAAY,CAAC3B,KAAb,GAAqB2B,YAAY,CAACnB,IAAb,GAAoB,EAAzC,GAA8CR,KAA9C,GAAsDQ,IAAI,GAAG,EArB7D;;AAuBjBsB,gBAAAA,YAAY,KAAK,CAvBA;AAwBnB,sBAAKC,QAAL,CAAc,CAAd,EAxBmB;;;;AA4BfC,gBAAAA,cA5Be,GA4BE,yBAAY,MAAKC,KAAjB,EAAwBC,8BA5B1B;;AA8BfC,gBAAAA,KA9Be,GA8BP,SAARA,KAAQ,GAAM;AAClB,wBAAKC,QAAL,CAAc;AACZP,oBAAAA,MAAM,EAAEQ,aAAa,CAACC,SAAd,CAAwBtC,KAAxB,EAA+BQ,IAA/B,CADI;AAEZ+B,oBAAAA,cAAc,EAAE,CAFJ,EAAd;;AAID,iBAnCoB;;AAqCfC,gBAAAA,aArCe,GAqCC,SAAhBA,aAAgB,CAACZ,KAAD,EAA0B;AAC9C;AACEA,oBAAAA,KAAK,CAACC,MAAN,CAAa,CAAb,EAAgBrB,IAAhB,KAAyBA,IAAzB;AACA;AACA;AACA;AACAiC,oBAAAA,IAAI,CAACC,GAAL,CAASZ,YAAT,IAAyB,CAL3B;;AAOD,iBA7CoB;;AA+CrB;AACA;AACA,oBAAIA,YAAY,GAAG,CAAnB,EAAsB;AACda,kBAAAA,oBADc,GACSF,IAAI,CAACG,GAAL,CAASH,IAAI,CAACC,GAAL,CAASZ,YAAT,IAAyB,CAAlC,EAAqCE,cAArC,CADT;AAEda,kBAAAA,eAFc,GAEIC,KAAK,CAACC,IAAN,CAAW,EAAEC,MAAM,EAAEL,oBAAV,EAAX,EAA6C,UAACM,CAAD,EAAIC,KAAJ,EAAc;AACjF,2BAAOC,+BAAeC,MAAf,CAAsBpD,KAAK,GAAGkD,KAA9B,EAAqC1C,IAArC,CAAP;AACD,mBAFuB,CAFJ;AAKpB,wBAAK4B,QAAL;AACE,4BAACR,KAAD,EAAW;AACT,wBAAMyB,WAAW,GAAGb,aAAa,CAACZ,KAAD,CAAjC;AACA,wBAAIyB,WAAJ,EAAiB;AACf;AACA;AACAzB,sBAAAA,KAAK,CAACC,MAAN,CAAa,CAAb,EAAgByB,aAAhB,GAAgC,IAAhC;AACA,0BAAIT,eAAe,CAACG,MAApB,EAA4B;AAC1B;AACAH,wBAAAA,eAAe,CAACA,eAAe,CAACG,MAAhB,GAAyB,CAA1B,CAAf,CAA4CO,YAA5C,GAA2D,IAA3D;AACD;AACF;AACD,2BAAO;AACL1B,sBAAAA,MAAM,EAAEgB,eAAe,CAACW,MAAhB,CAAuB5B,KAAK,CAACC,MAA7B,CADH;AAELU,sBAAAA,cAAc,EAAE,CAACF,aAAa,CAACoB,eAAd,CAA8BZ,eAA9B,EAA+C,MAAKZ,KAApD,CAFZ,EAAP;;AAID,mBAhBH;AAiBE,8BAAM;AACJ,wBAAMyB,cAAc,GAAG,MAAK9B,KAAL,CAAWC,MAAX,CAAkB,CAAlB,EAAqB8B,SAArB,CAA+B,MAAK1B,KAApC,CAAvB;AACA,0BAAKF,QAAL,CAAc2B,cAAd,EAA8BvB,KAA9B;AACD,mBApBH;;AAsBD;;AAED;AACA;AACA,oBAAIL,YAAY,GAAG,CAAnB,EAAsB;AACd8B,kBAAAA,mBADc,GACQnB,IAAI,CAACG,GAAL,CAASH,IAAI,CAACC,GAAL,CAASZ,YAAT,CAAT,EAAiCE,cAAjC,CADR;AAEd6B,kBAAAA,cAFc,GAEGf,KAAK,CAACC,IAAN,CAAW,EAAEC,MAAM,EAAEY,mBAAV,EAAX,EAA4C,UAACX,CAAD,EAAIC,KAAJ,EAAc;AAC/E,2BAAOC,+BAAeC,MAAf,CAAsBpD,KAAK,GAAGkD,KAAR,GAAgBU,mBAAhB,GAAsC,CAA5D,EAA+DpD,IAA/D,CAAP;AACD,mBAFsB,CAFH;AAKpB,wBAAK4B,QAAL;AACE,4BAACR,KAAD,EAAW;AACT,wBAAIY,aAAa,CAACZ,KAAD,CAAjB,EAA0B;AACxB;AACA;AACAA,sBAAAA,KAAK,CAACC,MAAN,CAAaD,KAAK,CAACC,MAAN,CAAamB,MAAb,GAAsB,CAAnC,EAAsCO,YAAtC,GAAqD,IAArD;AACA;AACA,0BAAIM,cAAc,CAAC,CAAD,CAAlB,EAAuB;AACrBA,wBAAAA,cAAc,CAAC,CAAD,CAAd,CAAkBP,aAAlB,GAAkC,IAAlC;AACD;AACF;AACD,2BAAO,EAAEzB,MAAM,EAAED,KAAK,CAACC,MAAN,CAAa2B,MAAb,CAAoBK,cAApB,CAAV,EAAP;AACD,mBAZH;AAaE,8BAAM;AACJ,wBAAMH,cAAc,GAAG,CAAC,CAAD,GAAKrB,aAAa,CAACoB,eAAd,CAA8B,MAAK7B,KAAL,CAAWC,MAAX,CAAkBiC,KAAlB,CAAwB,CAAxB,EAA2B,CAAC,CAA5B,CAA9B,EAA8D,MAAK7B,KAAnE,CAA5B;AACA,0BAAKF,QAAL,CAAc2B,cAAd,EAA8BvB,KAA9B;AACD,mBAhBH;;AAkBD,iBAvGoB,yDA1DW;;;AAoK1B4B,IAAAA,UApK0B,GAoKb,YAAM;AACzB,UAAMC,SAAS,GAAG,MAAKC,iBAAL,EAAlB;AACA,UAAMC,YAAY,GAAG,EAAEC,MAAM,EAAE,yBAAY,MAAKlC,KAAjB,EAAwBmC,cAAlC,EAArB;;AAEA,UAAMvD,KAAK,GAAG,MAAKC,QAAL,EAAd;;AAEA;AACE,qCAAC,4BAAD,2BAAe,WAAW,EAAE,MAAKuD,WAAjC,IAAkDxD,KAAlD;AACE,8CAAK,GAAG,EAAE,MAAKyD,OAAf,EAAwB,YAAUxE,gBAAgB,CAACC,IAAnD,EAAyD,SAAS,EAAE,iBAAGwE,iBAAOxE,IAAP,CAAY,MAAKkC,KAAjB,CAAH,CAApE;AACE,8CAAK,KAAK,EAAEiC,YAAZ,EAA0B,SAAS,EAAEK,iBAAOC,OAAP,EAArC;AACG,cAAK5C,KAAL,CAAWC,MAAX;AACE4C,QAAAA,GADF,CACgC,UAACC,CAAD,EAAIC,CAAJ,UAAU,CAACX,SAAS,CAACW,CAAD,CAAV,EAAeD,CAAf,CAAV,EADhC;AAEEE,QAAAA,MAFF,CAES,sBAAEC,GAAF,YAAO7E,KAAP,mBAAkBqC,aAAa,CAACyC,cAAd,CAA6BD,GAA7B,EAAkC7E,KAAlC,EAAyC,MAAKiC,KAA9C,CAAlB,EAFT;AAGEwC,QAAAA,GAHF,CAGM,MAAKM,WAHX,8CADH,CADF;;AAOE,8CAAK,SAAS,EAAER,iBAAOS,SAAP,CAAiB,MAAK/C,KAAtB,CAAhB,GAPF,CADF,CADF;;;;AAaD,KAvLiC;;AAyL1BqC,IAAAA,OAzL0B,GAyLhB,UAACW,OAAD,EAAiC;AACjD,UAAI,CAAC,MAAKlF,IAAN,IAAckF,OAAlB,EAA2B;AACzB,YAAIC,gBAAJ,EAAc;AACZD,UAAAA,OAAO,CAACE,gBAAR,CAAyB,YAAzB,EAAuC,MAAKC,gBAA5C;AACAH,UAAAA,OAAO,CAACE,gBAAR,CAAyB,WAAzB,EAAsC,MAAKE,wBAA3C;AACD,SAHD,MAGO;AACLJ,UAAAA,OAAO,CAACE,gBAAR,CAAyB,OAAzB,EAAkC,MAAKG,WAAvC,EAAoD,EAAEC,OAAO,EAAE,KAAX,EAApD;AACD;AACF;AACD,UAAI,MAAKxF,IAAL,IAAa,CAACkF,OAAlB,EAA2B;AACzB,YAAIC,gBAAJ,EAAc;AACZ,gBAAKnF,IAAL,CAAUyF,mBAAV,CAA8B,YAA9B,EAA4C,MAAKJ,gBAAjD;AACA,gBAAKrF,IAAL,CAAUyF,mBAAV,CAA8B,WAA9B,EAA2C,MAAKH,wBAAhD;AACD,SAHD,MAGO;AACL,gBAAKtF,IAAL,CAAUyF,mBAAV,CAA8B,OAA9B,EAAuC,MAAKF,WAA5C;AACD;AACF;AACD,YAAKvF,IAAL,GAAYkF,OAAZ;AACD,KA3MiC;;;;;;;;;;;;;;;;;;;;;;;AAkO1BQ,IAAAA,SAlO0B,GAkOd,iBAAkF,KAA/ElF,IAA+E,SAA/EA,IAA+E,CAAzEP,KAAyE,SAAzEA,KAAyE,CAAlEQ,IAAkE,SAAlEA,IAAkE,CAA5DkF,SAA4D,SAA5DA,SAA4D;AACpG,UAAMC,UAAU,GAAGC,iDAAwBC,oBAAxB,CAA6C,EAAEtF,IAAI,EAAJA,IAAF,EAAQP,KAAK,EAAEA,KAAK,GAAG,CAAvB,EAA0BQ,IAAI,EAAJA,IAA1B,EAA7C,CAAnB;;AAEA,aAAO,MAAKM,QAAL,GAAgB2E,SAAhB,CAA0BE,UAA1B,EAAsCD,SAAtC,CAAP;AACD,KAtOiC;;AAwO1BI,IAAAA,gBAxO0B,GAwOP,UAACC,SAAD,EAAkC;AAC3D,UAAMC,KAAK,GAAGJ,iDAAwBC,oBAAxB,CAA6C;AACzDtF,QAAAA,IAAI,EAAEwF,SAAS,CAACxF,IADyC;AAEzDP,QAAAA,KAAK,EAAE+F,SAAS,CAAC/F,KAAV,GAAkB,CAFgC;AAGzDQ,QAAAA,IAAI,EAAEuF,SAAS,CAACvF,IAHyC,EAA7C,CAAd;;;AAMA,UAAI,MAAKK,KAAL,CAAWoF,aAAf,EAA8B;AAC5B,cAAKpF,KAAL,CAAWoF,aAAX,CAAyBD,KAAzB;AACD;AACF,KAlPiC;;;;;;;;;;;;;;;;;AAmQ1BE,IAAAA,qBAnQ0B,GAmQF,UAAClG,KAAD,EAAgBQ,IAAhB,EAAiC;AAC/D,YAAKU,aAAL,CAAmBlB,KAAnB,EAA0BQ,IAA1B;AACD,KArQiC;;AAuQ1B2F,IAAAA,iBAvQ0B,GAuQN,UAACC,MAAD,EAAoB;AAC9C,YAAKhE,QAAL,CAAc,iBAAgC,KAA7BP,MAA6B,SAA7BA,MAA6B,CAArBU,cAAqB,SAArBA,cAAqB;AAC5C,YAAMmB,cAAc,GAAGrB,aAAa,CAACgE,uBAAd;AACrBxE,QAAAA,MADqB;AAErBU,QAAAA,cAFqB;AAGrB6D,QAAAA,MAHqB;AAIrB,cAAKnE,KAJgB;AAKrBM,QAAAA,cALF;AAMA,eAAO,EAAE+D,YAAY,EAAE5C,cAAhB,EAAP;AACD,OARD,EAQG,MAAK6C,cARR;;AAUA,YAAKvF,SAAL,CAAewF,OAAf,CAAuBJ,MAAvB,EAA+B,UAACK,MAAD,EAAY;AACzC;AACA,cAAKrE,QAAL,CAAcC,aAAa,CAACqE,UAAd,CAAyBD,MAAzB,EAAiC,MAAKxE,KAAtC,CAAd;AACD,OAHD;;AAKA0E,MAAAA,oBAAoB,CAACC,IAArB;AACD,KAxRiC;;AA0R1BxB,IAAAA,gBA1R0B,GA0RP,UAACyB,KAAD,EAAkB;AAC3C,UAAI,EAAEA,KAAK,YAAYC,UAAnB,CAAJ,EAAoC;AAClC;AACD;;AAED,UAAMC,OAAO,GAAGF,KAAK,CAACG,aAAN,CAAoB,CAApB,EAAuBD,OAAvC;AACA,YAAK9F,WAAL,GAAmB8F,OAAnB;AACD,KAjSiC;;AAmS1BE,IAAAA,eAnS0B,GAmSR,UAACJ,KAAD,EAAkB;AAC1C,UAAI,EAAEA,KAAK,YAAYC,UAAnB,CAAJ,EAAoC;AAClC;AACD;;AAED,UAAQC,OAAR,GAAoBF,KAAK,CAACK,cAAN,CAAqB,CAArB,CAApB,CAAQH,OAAR;;AAEA,UAAMN,MAAM,GAAG,CAAC,MAAKxF,WAAL,IAAoB,CAArB,IAA0B8F,OAAzC;AACA,YAAK9F,WAAL,GAAmB8F,OAAnB;;AAEA,YAAKZ,iBAAL,CAAuBM,MAAvB;AACD,KA9SiC;;AAgT1BpB,IAAAA,wBAhT0B,GAgTC,qBAAS,MAAK4B,eAAd,EAA+B,EAA/B,CAhTD;;AAkT1B3B,IAAAA,WAlT0B,GAkTZ,UAACuB,KAAD,EAAkB;AACtC,UAAI,EAAEA,KAAK,YAAYM,UAAnB,CAAJ,EAAoC;AAClC;AACD;AACDN,MAAAA,KAAK,CAACO,cAAN;AACA,4BAAmB,8BAAeP,KAAf,CAAnB,CAAQT,MAAR,mBAAQA,MAAR;;AAEA,YAAKD,iBAAL,CAAuBC,MAAvB;AACD,KA1TiC;;AA4T1BG,IAAAA,cA5T0B,GA4TT,YAAM;AAC7B,UAAI,MAAKc,eAAT,EAA0B;AACxBC,QAAAA,YAAY,CAAC,MAAKD,eAAN,CAAZ;AACD;AACD,YAAKA,eAAL,GAAuBE,MAAM,CAAChG,UAAP,CAAkB,MAAKiG,mBAAvB,EAA4C,GAA5C,CAAvB;AACD,KAjUiC;AAkU1BA,IAAAA,mBAlU0B,GAkUJ,YAAM;AAClC,wBAA0C,MAAK5F,KAA/C,CAAQ0E,YAAR,eAAQA,YAAR,CAAsBmB,eAAtB,eAAsBA,eAAtB;;AAEA,UAAMC,cAAc,GAAG,yBAAY,MAAKzF,KAAjB,EAAwB0F,yBAAxB,GAAoD,yBAAY,MAAK1F,KAAjB,EAAwB2F,QAAnG;;AAEA,UAAItB,YAAY,GAAGoB,cAAnB,EAAmC;AACjC,YAAIhE,cAAc,GAAG,CAArB;AACA,YAAI+D,eAAe,GAAG,CAAtB,EAAyB;AACvB/D,UAAAA,cAAc,GAAGgE,cAAjB;AACD;;AAED,cAAKtF,QAAL,CAAc,EAAEkE,YAAY,EAAE5C,cAAhB,EAAd,EAAgD,YAAM;AACpD,cAAMmE,MAAM,GAAGvB,YAAY,GAAG5C,cAA9B;AACA,gBAAK1C,SAAL,CAAewF,OAAf,CAAuBqB,MAAvB,EAA+B,UAACpB,MAAD,EAAY;AACzC;AACA,kBAAKrE,QAAL,CAAcC,aAAa,CAACqE,UAAd,CAAyBD,MAAzB,EAAiC,MAAKxE,KAAtC,CAAd;AACD,WAHD;AAID,SAND;AAOD;AACF,KArViC;;AAuV1BF,IAAAA,QAvV0B,GAuVf,UAAC+F,GAAD,EAAc3F,KAAd,EAAqC;AACtD,UAAM4F,aAAa,GAAGD,GAAG,GAAG,MAAKlG,KAAL,CAAWW,cAAvC;AACA,aAAO,MAAKyF,YAAL,CAAkBD,aAAlB,EAAiC5F,KAAjC,CAAP;AACD,KA1ViC;;AA4V1B6F,IAAAA,YA5V0B,GA4VX,UAACD,aAAD,EAAwB5F,KAAxB,EAA+C;AACpE,aAAO,MAAKnB,SAAL,CAAewF,OAAf;AACLuB,MAAAA,aADK;AAEL,gBAACtB,MAAD,EAAY;AACV,cAAKrE,QAAL,CAAc,sBAAGG,cAAH,SAAGA,cAAH,QAAyB;AACrCA,YAAAA,cAAc,EAAEA,cAAc,GAAGkE,MADI,EAAzB,EAAd;;AAGD,OANI;AAOLtE,MAAAA,KAPK,CAAP;;AASD,KAtWiC,CAGhC,qBAAoC,MAAKrB,QAAL,EAApC,CAAQU,QAAR,kBAAQA,OAAR,CAAiBE,QAAjB,kBAAiBA,OAAjB,CAA0BsE,MAA1B,kBAA0BA,KAA1B,CAEA,IAAMiC,YAAY,GAAG,MAAKxG,qBAAL,CAA2BD,QAA3B,CAArB,CACA,IAAM0G,YAAY,GAAG,MAAKzG,qBAAL,CAA2BC,QAA3B,CAArB,CACA,IAAMqE,UAAS,GAAG,MAAKtE,qBAAL,CAA2BuE,MAA3B,CAAlB,CAEA,IAAMmC,KAAK,GAAG9F,aAAa,CAAC+F,YAAd,EAAd,CACA,IAAMC,WAAW,GAAGhG,aAAa,CAACiG,cAAd,CAA6B,EAC/CH,KAAK,EAALA,KAD+C,EAE/C5H,IAAI,EAAEwF,UAFyC,EAG/CvE,OAAO,EAAEyG,YAHsC,EAI/CvG,OAAO,EAAEwG,YAJsC,EAA7B,CAApB,CAOA,IAAMK,YAAY,4BAAGlG,aAAa,CAACmG,sBAAd,CAAqC,MAAK3H,KAAL,CAAW0H,YAAhD,CAAH,oCAAoEF,WAAW,CAACrI,KAAlG,CACA,IAAMyI,WAAW,4BAAG,MAAK5H,KAAL,CAAW4H,WAAd,oCAA6BJ,WAAW,CAAC7H,IAA1D,CAEA,MAAKoB,KAAL,GAAa,EACXW,cAAc,EAAE,CADL,EAEXV,MAAM,EAAEQ,aAAa,CAACC,SAAd,CAAwBiG,YAAxB,EAAsCE,WAAtC,CAFG,EAGXN,KAAK,EAALA,KAHW,EAIXV,eAAe,EAAE,CAJN,EAKXnB,YAAY,EAAE,CALH,EAAb,CApBgC,aA2BjC,C,uCAEMoC,kB,GAAP,4BAA0BC,SAA1B,EAAoE,CAClE,IAAQ3C,KAAR,GAAkB,KAAKnF,KAAvB,CAAQmF,KAAR,CACA,IAAIA,KAAK,IAAI,CAAC,2BAAaA,KAAb,EAAoB2C,SAAS,CAAC3C,KAA9B,CAAd,EAAoD,CAClD,IAAMzF,KAAI,GAAG,IAAIE,0BAAJ,GAAmBmI,UAAnB,CAA8B5C,KAA9B,EAAqC6C,uBAArC,EAAb,CACA,KAAK3H,aAAL,CAAmBX,KAAI,CAACP,KAAL,GAAa,CAAhC,EAAmCO,KAAI,CAACC,IAAxC,EACD,CACF,C,QAEMsI,oB,GAAP,gCAA8B,CAC5B,IAAI,KAAK9H,SAAL,CAAeG,UAAf,EAAJ,EAAiC,CAC/B,KAAKH,SAAL,CAAe+H,MAAf,GACD,CACF,C,QAEMC,M,GAAP,kBAAgB,mBACd,oBACE,6BAAC,0BAAD,CAAc,QAAd,QACG,UAAC/G,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,OAAO,MAAI,CAAC8B,UAAL,EAAP,CACD,CAJH,CADF,CAQD,C,CAED;AACF;AACA;AACA,K,QAoJUgB,W,GAAR,4BAA4D,KAAvCF,GAAuC,YAAlC7E,KAAkC,YAC1D,IAAMO,IAAI,GAAG,KAAKkB,qBAAL,CAA2B,KAAKZ,KAAL,CAAWmF,KAAtC,CAAb,CACA,IAAMxE,OAAO,GAAG,KAAKC,qBAAL,CAA2B,KAAKZ,KAAL,CAAWW,OAAtC,CAAhB,CACA,IAAME,OAAO,GAAG,KAAKD,qBAAL,CAA2B,KAAKZ,KAAL,CAAWa,OAAtC,CAAhB,CAEA,oBACE,6BAAC,YAAD,IACE,GAAG,EAAE1B,KAAK,CAACA,KAAN,GAAc,GAAd,GAAoBA,KAAK,CAACQ,IADjC,EAEE,GAAG,EAAEqE,GAFP,EAGE,KAAK,EAAE7E,KAHT,EAIE,OAAO,EAAE0B,OAJX,EAKE,OAAO,EAAEF,OALX,EAME,KAAK,EAAE,KAAKI,KAAL,CAAWuG,KANpB,EAOE,KAAK,EAAE5H,IAPT,EAQE,WAAW,EAAE,KAAKuF,gBARpB,EASE,iBAAiB,EAAE,KAAKI,qBAT1B,EAUE,SAAS,EAAE,KAAKT,SAVlB,GADF,CAcD,C,QAoBOhE,qB,GAAR,+BAA8BlB,IAA9B,EAAsD,CACpD,OAAO,IAAIE,0BAAJ,GAAmBmI,UAAnB,CAA8BrI,IAA9B,EAAoC0I,cAApC,EAAP,CACD,C,QAEOhF,iB,GAAR,6BAA4B,CAC1B,mBAAmC,KAAKrC,KAAxC,CAAQW,cAAR,gBAAQA,cAAR,CAAwBV,MAAxB,gBAAwBA,MAAxB,CAEA,IAAMmC,SAAS,GAAG,CAACzB,cAAc,GAAGV,MAAM,CAAC,CAAD,CAAN,CAAU8B,SAAV,CAAoB,KAAK1B,KAAzB,CAAlB,CAAlB,CACA,KAAK,IAAI0C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG9C,MAAM,CAACmB,MAA3B,EAAmC2B,CAAC,EAApC,EAAwC,CACtC,IAAMuE,QAAQ,GAAGlF,SAAS,CAACW,CAAC,GAAG,CAAL,CAAT,GAAmB9C,MAAM,CAAC8C,CAAC,GAAG,CAAL,CAAN,CAAchB,SAAd,CAAwB,KAAK1B,KAA7B,CAApC,CACA+B,SAAS,CAACmF,IAAV,CAAeD,QAAf,EACD,CACD,OAAOlF,SAAP,CACD,C,mBAvR2BoF,eAAMC,S,WACpBC,mB,GAAsB,U,UAMtBvI,Y,GAA6B,EACzCS,OAAO,EAAEpB,OAAQ,CAACE,UAAT,CAAoBiJ,mBAApB,EAA8BC,oBAA9B,EAAyCC,mBAAzC,CADgC,EAEzC/H,OAAO,EAAEtB,OAAQ,CAACE,UAAT,CAAoBoJ,mBAApB,EAA8BC,oBAA9B,EAAyCC,mBAAzC,CAFgC,EAGzCnE,SAAS,EAAE,mBAACoE,IAAD,EAAenE,SAAf,UAAsCA,SAAtC,EAH8B,E","sourcesContent":["import React from 'react';\nimport normalizeWheel from 'normalize-wheel';\nimport throttle from 'lodash.throttle';\nimport shallowEqual from 'shallowequal';\n\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { InternalDateTransformer } from '../../lib/date/InternalDateTransformer';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { cx } from '../../lib/theming/Emotion';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { MAX_DATE, MAX_MONTH, MAX_YEAR, MIN_DATE, MIN_MONTH, MIN_YEAR } from '../../lib/date/constants';\nimport { Nullable, Range } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { animation } from '../../lib/animation';\nimport { isMobile } from '../../lib/client';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { themeConfig } from './config';\nimport { MonthViewModel } from './MonthViewModel';\nimport * as CalendarScrollEvents from './CalendarScrollEvents';\nimport { Month } from './Month';\nimport { styles } from './Calendar.styles';\nimport { CalendarDateShape, create, isGreater, isLess } from './CalendarDateShape';\nimport * as CalendarUtils from './CalendarUtils';\n\nexport interface CalendarProps extends CommonProps {\n /**\n * Вызывается при изменении `value`\n *\n * В аргументе хранится дата в формате `dd.mm.yyyy`\n */\n onValueChange?: (date: string) => void;\n /**\n * Задаёт текущую дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n value: Nullable<string>;\n /**\n * Задаёт максимальную возможную дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n maxDate?: string;\n /**\n * Задаёт минимальную возможную дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n minDate?: string;\n /**\n * Функция для определения праздничных дней\n * @default (_day, isWeekend) => isWeekend\n * @param {string} day - строка в формате `dd.mm.yyyy`\n * @param {boolean} isWeekend - флаг выходного (суббота или воскресенье)\n *\n * @returns {boolean} `true` для выходного или `false` для рабочего дня\n */\n isHoliday?: (day: string, isWeekend: boolean) => boolean;\n /**\n * Позволяет задать начальный месяц\n */\n initialMonth?: Range<1, 13>;\n /**\n * Позволяет задать начальный год\n */\n initialYear?: number;\n}\n\nexport interface CalendarState {\n scrollPosition: number;\n months: MonthViewModel[];\n today: CalendarDateShape;\n scrollDirection: number;\n scrollTarget: number;\n}\n\nexport const CalendarDataTids = {\n root: 'Calendar__root',\n month: 'MonthView__month',\n dayCell: 'DayCellView__root',\n headerMonth: 'MonthView__headerMonth',\n headerYear: 'MonthView__headerYear',\n} as const;\n\ntype DefaultProps = Required<Pick<CalendarProps, 'minDate' | 'maxDate' | 'isHoliday'>>;\n\n/**\n * Компонент календаря из [DatePicker](https://tech.skbkontur.ru/react-ui/#/Components/DatePicker)'а\n */\n@rootNode\nexport class Calendar extends React.Component<CalendarProps, CalendarState> {\n public static __KONTUR_REACT_UI__ = 'Calendar';\n\n private static formatDate(date: number, month: number, year: number) {\n return new InternalDate().setComponents({ date, month, year }).toString({ withPad: true });\n }\n\n public static defaultProps: DefaultProps = {\n minDate: Calendar.formatDate(MIN_DATE, MIN_MONTH, MIN_YEAR),\n maxDate: Calendar.formatDate(MAX_DATE, MAX_MONTH, MAX_YEAR),\n isHoliday: (_day: string, isWeekend: boolean) => isWeekend,\n };\n\n private getProps = createPropsGetter(Calendar.defaultProps);\n\n private theme!: Theme;\n private wheelEndTimeout: Nullable<number>;\n private root: Nullable<HTMLElement>;\n private animation = animation();\n private touchStartY: Nullable<number> = null;\n private setRootNode!: TSetRootNode;\n\n constructor(props: CalendarProps) {\n super(props);\n\n const { minDate, maxDate, value } = this.getProps();\n\n const minDateShape = this.getDateInNativeFormat(minDate);\n const maxDateShape = this.getDateInNativeFormat(maxDate);\n const dateShape = this.getDateInNativeFormat(value);\n\n const today = CalendarUtils.getTodayDate();\n const initialDate = CalendarUtils.getInitialDate({\n today,\n date: dateShape,\n minDate: minDateShape,\n maxDate: maxDateShape,\n });\n\n const initialMonth = CalendarUtils.getMonthInNativeFormat(this.props.initialMonth) ?? initialDate.month;\n const initialYear = this.props.initialYear ?? initialDate.year;\n\n this.state = {\n scrollPosition: 0,\n months: CalendarUtils.getMonths(initialMonth, initialYear),\n today,\n scrollDirection: 1,\n scrollTarget: 0,\n };\n }\n\n public componentDidUpdate(prevProps: Readonly<CalendarProps>): void {\n const { value } = this.props;\n if (value && !shallowEqual(value, prevProps.value)) {\n const date = new InternalDate().parseValue(value).getComponentsLikeNumber();\n this.scrollToMonth(date.month - 1, date.year);\n }\n }\n\n public componentWillUnmount() {\n if (this.animation.inProgress()) {\n this.animation.cancel();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * Прокручивает календарь до переданной даты\n * @public\n */\n public scrollToMonth = async (month: number, year: number) => {\n if (this.animation.inProgress()) {\n this.animation.finish();\n // FIXME: Dirty hack to await batched updates\n await new Promise((r) => setTimeout(r));\n }\n\n const minDate = this.getDateInNativeFormat(this.getProps().minDate);\n const maxDate = this.getDateInNativeFormat(this.getProps().maxDate);\n\n if (minDate && isGreater(minDate, create(32, month, year))) {\n this.scrollToMonth(minDate.month, minDate.year);\n return;\n }\n\n if (maxDate && isLess(maxDate, create(0, month, year))) {\n this.scrollToMonth(maxDate.month, maxDate.year);\n return;\n }\n\n const currentMonth = this.state.months[1];\n const diffInMonths = currentMonth.month + currentMonth.year * 12 - month - year * 12;\n\n if (diffInMonths === 0) {\n this.scrollTo(0);\n return;\n }\n\n const maxMonthsToAdd = themeConfig(this.theme).MAX_MONTHS_TO_APPEND_ON_SCROLL;\n\n const onEnd = () => {\n this.setState({\n months: CalendarUtils.getMonths(month, year),\n scrollPosition: 0,\n });\n };\n\n const isYearChanges = (state: CalendarState) => {\n return (\n state.months[1].year !== year &&\n // if diff in months is 2 or less,\n // either year is not changing either months already\n // have right isFirstInYear/isLastInYear flags\n Math.abs(diffInMonths) > 2\n );\n };\n\n // If scrolling upwards, prepend maximum maxMonthsToAdd months\n // and scroll to the first month\n if (diffInMonths > 0) {\n const monthsToPrependCount = Math.min(Math.abs(diffInMonths) - 1, maxMonthsToAdd);\n const monthsToPrepend = Array.from({ length: monthsToPrependCount }, (_, index) => {\n return MonthViewModel.create(month + index, year);\n });\n this.setState(\n (state) => {\n const yearChanges = isYearChanges(state);\n if (yearChanges) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[0].isFirstInYear = true;\n if (monthsToPrepend.length) {\n // Mutating item here is safe as it was just created\n monthsToPrepend[monthsToPrepend.length - 1].isLastInYear = true;\n }\n }\n return {\n months: monthsToPrepend.concat(state.months),\n scrollPosition: -CalendarUtils.getMonthsHeight(monthsToPrepend, this.theme),\n };\n },\n () => {\n const targetPosition = this.state.months[0].getHeight(this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n\n // If scrolling downwards, append maximum maxMonthsToAdd months\n // and scroll to the last but one month\n if (diffInMonths < 0) {\n const monthsToAppendCount = Math.min(Math.abs(diffInMonths), maxMonthsToAdd);\n const monthsToAppend = Array.from({ length: monthsToAppendCount }, (_, index) => {\n return MonthViewModel.create(month + index - monthsToAppendCount + 2, year);\n });\n this.setState(\n (state) => {\n if (isYearChanges(state)) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[state.months.length - 1].isLastInYear = true;\n // Mutating item here is safe as it was just created\n if (monthsToAppend[0]) {\n monthsToAppend[0].isFirstInYear = true;\n }\n }\n return { months: state.months.concat(monthsToAppend) };\n },\n () => {\n const targetPosition = -1 * CalendarUtils.getMonthsHeight(this.state.months.slice(1, -2), this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n };\n\n private renderMain = () => {\n const positions = this.getMonthPositions();\n const wrapperStyle = { height: themeConfig(this.theme).WRAPPER_HEIGHT };\n\n const props = this.getProps();\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...props}>\n <div ref={this.refRoot} data-tid={CalendarDataTids.root} className={cx(styles.root(this.theme))}>\n <div style={wrapperStyle} className={styles.wrapper()}>\n {this.state.months\n .map<[number, MonthViewModel]>((x, i) => [positions[i], x])\n .filter(([top, month]) => CalendarUtils.isMonthVisible(top, month, this.theme))\n .map(this.renderMonth, this)}\n </div>\n <div className={styles.separator(this.theme)} />\n </div>\n </CommonWrapper>\n );\n };\n\n private refRoot = (element: HTMLElement | null) => {\n if (!this.root && element) {\n if (isMobile) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n }\n if (this.root && !element) {\n if (isMobile) {\n this.root.removeEventListener('touchstart', this.handleTouchStart);\n this.root.removeEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n this.root.removeEventListener('wheel', this.handleWheel);\n }\n }\n this.root = element;\n };\n\n private renderMonth([top, month]: [number, MonthViewModel]) {\n const date = this.getDateInNativeFormat(this.props.value);\n const minDate = this.getDateInNativeFormat(this.props.minDate);\n const maxDate = this.getDateInNativeFormat(this.props.maxDate);\n\n return (\n <Month\n key={month.month + '-' + month.year}\n top={top}\n month={month}\n maxDate={maxDate}\n minDate={minDate}\n today={this.state.today}\n value={date}\n onDateClick={this.handleDateChange}\n onMonthYearChange={this.handleMonthYearChange}\n isHoliday={this.isHoliday}\n />\n );\n }\n\n private isHoliday = ({ date, month, year, isWeekend }: CalendarDateShape & { isWeekend: boolean }) => {\n const dateString = InternalDateTransformer.dateToInternalString({ date, month: month + 1, year });\n\n return this.getProps().isHoliday(dateString, isWeekend);\n };\n\n private handleDateChange = (dateShape: CalendarDateShape) => {\n const value = InternalDateTransformer.dateToInternalString({\n date: dateShape.date,\n month: dateShape.month + 1,\n year: dateShape.year,\n });\n\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private getDateInNativeFormat(date: Nullable<string>) {\n return new InternalDate().parseValue(date).toNativeFormat();\n }\n\n private getMonthPositions() {\n const { scrollPosition, months } = this.state;\n\n const positions = [scrollPosition - months[0].getHeight(this.theme)];\n for (let i = 1; i < months.length; i++) {\n const position = positions[i - 1] + months[i - 1].getHeight(this.theme);\n positions.push(position);\n }\n return positions;\n }\n\n private handleMonthYearChange = (month: number, year: number) => {\n this.scrollToMonth(month, year);\n };\n\n private executeAnimations = (pixelY: number) => {\n this.setState(({ months, scrollPosition }) => {\n const targetPosition = CalendarUtils.calculateScrollPosition(\n months,\n scrollPosition,\n pixelY,\n this.theme,\n ).scrollPosition;\n return { scrollTarget: targetPosition };\n }, this.handleWheelEnd);\n\n this.animation.animate(pixelY, (deltaY) => {\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any);\n });\n\n CalendarScrollEvents.emit();\n };\n\n private handleTouchStart = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const clientY = event.targetTouches[0].clientY;\n this.touchStartY = clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n\n const deltaY = (this.touchStartY || 0) - clientY;\n this.touchStartY = clientY;\n\n this.executeAnimations(deltaY);\n };\n\n private throttledHandleTouchMove = throttle(this.handleTouchMove, 10);\n\n private handleWheel = (event: Event) => {\n if (!(event instanceof WheelEvent)) {\n return;\n }\n event.preventDefault();\n const { pixelY } = normalizeWheel(event);\n\n this.executeAnimations(pixelY);\n };\n\n private handleWheelEnd = () => {\n if (this.wheelEndTimeout) {\n clearTimeout(this.wheelEndTimeout);\n }\n this.wheelEndTimeout = window.setTimeout(this.scrollToNearestWeek, 300);\n };\n private scrollToNearestWeek = () => {\n const { scrollTarget, scrollDirection } = this.state;\n\n const trasholdHeight = themeConfig(this.theme).MONTH_TITLE_OFFSET_HEIGHT + themeConfig(this.theme).DAY_SIZE;\n\n if (scrollTarget < trasholdHeight) {\n let targetPosition = 0;\n if (scrollDirection < 0) {\n targetPosition = trasholdHeight;\n }\n\n this.setState({ scrollTarget: targetPosition }, () => {\n const amount = scrollTarget - targetPosition;\n this.animation.animate(amount, (deltaY) => {\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any);\n });\n });\n }\n };\n\n private scrollTo = (pos: number, onEnd?: () => void) => {\n const scrollAmmount = pos - this.state.scrollPosition;\n return this.scrollAmount(scrollAmmount, onEnd);\n };\n\n private scrollAmount = (scrollAmmount: number, onEnd?: () => void) => {\n return this.animation.animate(\n scrollAmmount,\n (deltaY) => {\n this.setState(({ scrollPosition }) => ({\n scrollPosition: scrollPosition + deltaY,\n }));\n },\n onEnd,\n );\n };\n}\n"]}
@@ -103,12 +103,15 @@ const theme = React.useContext(ThemeContext);
103
103
  </ThemeContext.Provider>
104
104
  ```
105
105
 
106
-
107
106
  #### Локали по умолчанию
108
107
 
109
108
  ```typescript static
110
109
  interface CalendarLocale {
111
110
  months?: string[];
111
+ 'select-month-aria-label'?: string;
112
+ 'select-year-aria-label'?: string;
113
+ 'select-chosen-aria-label'?: string;
114
+ 'day-cell-choose-date-aria-label'?: string;
112
115
  }
113
116
 
114
117
  const ru_RU = {
@@ -125,7 +128,11 @@ const ru_RU = {
125
128
  'Октябрь',
126
129
  'Ноябрь',
127
130
  'Декабрь',
128
- ]
131
+ ],
132
+ 'select-month-aria-label': 'месяц',
133
+ 'select-year-aria-label': 'год',
134
+ 'select-chosen-aria-label': 'Выбранный',
135
+ 'day-cell-choose-date-aria-label': 'Выбрать дату',
129
136
  };
130
137
 
131
138
  const en_GB = {
@@ -142,6 +149,10 @@ const en_GB = {
142
149
  'October',
143
150
  'November',
144
151
  'December',
145
- ]
152
+ ],
153
+ 'select-month-aria-label': 'месяц',
154
+ 'select-year-aria-label': 'год',
155
+ 'select-chosen-aria-label': 'Выбранный',
156
+ 'day-cell-choose-date-aria-label': 'Выбрать дату',
146
157
  };
147
158
  ```
@@ -1,12 +1,15 @@
1
1
  "use strict";exports.__esModule = true;exports.DayCellView = DayCellView;var _react = _interopRequireWildcard(require("react"));
2
2
 
3
+ var _useLocaleForControl = require("../../lib/locale/useLocaleForControl");
3
4
 
4
5
  var _ThemeContext = require("../../lib/theming/ThemeContext");
5
6
  var _Emotion = require("../../lib/theming/Emotion");
6
7
  var _ThemeHelpers = require("../../lib/theming/ThemeHelpers");
8
+ var _locale = require("../DatePicker/locale");
7
9
 
8
10
  var CDS = _interopRequireWildcard(require("./CalendarDateShape"));
9
- var _DayCellView = require("./DayCellView.styles");function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj, nodeInterop) {if (!nodeInterop && obj && obj.__esModule) {return obj;}if (obj === null || typeof obj !== "object" && typeof obj !== "function") {return { default: obj };}var cache = _getRequireWildcardCache(nodeInterop);if (cache && cache.has(obj)) {return cache.get(obj);}var newObj = {};var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var key in obj) {if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;if (desc && (desc.get || desc.set)) {Object.defineProperty(newObj, key, desc);} else {newObj[key] = obj[key];}}}newObj.default = obj;if (cache) {cache.set(obj, newObj);}return newObj;}
11
+ var _DayCellView = require("./DayCellView.styles");
12
+ var _Calendar = require("./Calendar");function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj, nodeInterop) {if (!nodeInterop && obj && obj.__esModule) {return obj;}if (obj === null || typeof obj !== "object" && typeof obj !== "function") {return { default: obj };}var cache = _getRequireWildcardCache(nodeInterop);if (cache && cache.has(obj)) {return cache.get(obj);}var newObj = {};var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var key in obj) {if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;if (desc && (desc.get || desc.set)) {Object.defineProperty(newObj, key, desc);} else {newObj[key] = obj[key];}}}newObj.default = obj;if (cache) {cache.set(obj, newObj);}return newObj;}
10
13
 
11
14
 
12
15
 
@@ -36,9 +39,13 @@ function DayCellView(props) {var _cx;
36
39
 
37
40
  var isToday = Boolean(today && CDS.isEqual(date, today));
38
41
 
42
+ var locale = (0, _useLocaleForControl.useLocaleForControl)('Calendar', _locale.DatePickerLocaleHelper);
43
+
39
44
  return /*#__PURE__*/(
40
45
  _react.default.createElement("button", {
46
+ "data-tid": _Calendar.CalendarDataTids.dayCell,
41
47
  tabIndex: -1,
48
+ "aria-label": locale.dayCellChooseDateAriaLabel + " " + (value == null ? void 0 : value.date) + "." + (value && value.month + 1) + "." + (value == null ? void 0 : value.year),
42
49
  disabled: !CDS.isBetween(date, minDate, maxDate),
43
50
  className: (0, _Emotion.cx)((_cx = {}, _cx[
44
51
  _DayCellView.styles.cell(theme)] = true, _cx[
@@ -1 +1 @@
1
- {"version":3,"sources":["DayCellView.tsx"],"names":["DayCellView","props","date","minDate","maxDate","today","value","isWeekend","onDateClick","theme","ThemeContext","_isTheme2022","handleClick","month","year","child","globalClasses","todayCaption","styles","isToday","Boolean","CDS","isEqual","isBetween","cell","today2022","selected","weekend"],"mappings":"yEAAA;;;AAGA;AACA;AACA;;AAEA;AACA,mD;;;;;;;;;;;;AAYO,SAASA,WAAT,CAAqBC,KAArB,EAA8C;AACnD,MAAQC,IAAR,GAAyED,KAAzE,CAAQC,IAAR,CAAcC,OAAd,GAAyEF,KAAzE,CAAcE,OAAd,CAAuBC,OAAvB,GAAyEH,KAAzE,CAAuBG,OAAvB,CAAgCC,KAAhC,GAAyEJ,KAAzE,CAAgCI,KAAhC,CAAuCC,KAAvC,GAAyEL,KAAzE,CAAuCK,KAAvC,CAA8CC,SAA9C,GAAyEN,KAAzE,CAA8CM,SAA9C,CAAyDC,WAAzD,GAAyEP,KAAzE,CAAyDO,WAAzD;AACA,MAAMC,KAAK,GAAG,uBAAWC,0BAAX,CAAd;AACA,MAAMC,YAAY,GAAG,+BAAYF,KAAZ,CAArB;;AAEA,MAAMG,WAAW,GAAG,SAAdA,WAAc,GAAM;AACxB,sBAA8BX,KAAK,CAACC,IAApC,CAAQA,IAAR,eAAQA,IAAR,CAAcW,KAAd,eAAcA,KAAd,CAAqBC,IAArB,eAAqBA,IAArB;AACAN,IAAAA,WAAW,QAAX,YAAAA,WAAW,CAAG,EAAEN,IAAI,EAAJA,IAAF,EAAQW,KAAK,EAALA,KAAR,EAAeC,IAAI,EAAJA,IAAf,EAAH,CAAX;AACD,GAHD;;AAKA,MAAMC,KAAK,GAAGJ,YAAY;AACxB,yCAAM,SAAS,EAAE,iBAAGK,2BAAcC,YAAjB,EAA+BC,oBAAOD,YAAP,EAA/B,CAAjB,IAAyEf,IAAI,CAACA,IAA9E,CADwB;;AAGxBA,EAAAA,IAAI,CAACA,IAHP;;;AAMA,MAAMiB,OAAO,GAAGC,OAAO,CAACf,KAAK,IAAIgB,GAAG,CAACC,OAAJ,CAAYpB,IAAZ,EAAkBG,KAAlB,CAAV,CAAvB;;AAEA;AACE;AACE,MAAA,QAAQ,EAAE,CAAC,CADb;AAEE,MAAA,QAAQ,EAAE,CAACgB,GAAG,CAACE,SAAJ,CAAcrB,IAAd,EAAoBC,OAApB,EAA6BC,OAA7B,CAFb;AAGE,MAAA,SAAS,EAAE;AACRc,0BAAOM,IAAP,CAAYf,KAAZ,CADQ,IACa,IADb;AAERS,0BAAOb,KAAP,CAAaI,KAAb,CAFQ,IAEcU,OAAO,IAAI,CAACR,YAF1B;AAGRO,0BAAOO,SAAP,CAAiBhB,KAAjB,CAHQ,IAGkBU,OAAO,IAAIR,YAH7B;AAIRO,0BAAOQ,QAAP,CAAgBjB,KAAhB,CAJQ,IAIiBW,OAAO,CAACd,KAAK,IAAIe,GAAG,CAACC,OAAJ,CAAYpB,IAAZ,EAAkBI,KAAlB,CAAV,CAJxB;AAKRY,0BAAOS,OAAP,CAAelB,KAAf,CALQ,IAKgBW,OAAO,CAACb,SAAD,CALvB,OAHb;;AAUE,MAAA,OAAO,EAAEK,WAVX;;AAYGG,IAAAA,KAZH,CADF;;;AAgBD","sourcesContent":["import React, { useContext } from 'react';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\n\nimport * as CDS from './CalendarDateShape';\nimport { globalClasses, styles } from './DayCellView.styles';\n\ninterface DayCellViewProps {\n date: CDS.CalendarDateShape;\n today?: CDS.CalendarDateShape;\n value?: Nullable<CDS.CalendarDateShape>;\n minDate?: CDS.CalendarDateShape;\n maxDate?: CDS.CalendarDateShape;\n onDateClick?: (day: CDS.CalendarDateShape) => void;\n isWeekend?: boolean;\n}\n\nexport function DayCellView(props: DayCellViewProps) {\n const { date, minDate, maxDate, today, value, isWeekend, onDateClick } = props;\n const theme = useContext(ThemeContext);\n const _isTheme2022 = isTheme2022(theme);\n\n const handleClick = () => {\n const { date, month, year } = props.date;\n onDateClick?.({ date, month, year });\n };\n\n const child = _isTheme2022 ? (\n <span className={cx(globalClasses.todayCaption, styles.todayCaption())}>{date.date}</span>\n ) : (\n date.date\n );\n\n const isToday = Boolean(today && CDS.isEqual(date, today));\n\n return (\n <button\n tabIndex={-1}\n disabled={!CDS.isBetween(date, minDate, maxDate)}\n className={cx({\n [styles.cell(theme)]: true,\n [styles.today(theme)]: isToday && !_isTheme2022,\n [styles.today2022(theme)]: isToday && _isTheme2022,\n [styles.selected(theme)]: Boolean(value && CDS.isEqual(date, value)),\n [styles.weekend(theme)]: Boolean(isWeekend),\n })}\n onClick={handleClick}\n >\n {child}\n </button>\n );\n}\n"]}
1
+ {"version":3,"sources":["DayCellView.tsx"],"names":["DayCellView","props","date","minDate","maxDate","today","value","isWeekend","onDateClick","theme","ThemeContext","_isTheme2022","handleClick","month","year","child","globalClasses","todayCaption","styles","isToday","Boolean","CDS","isEqual","locale","DatePickerLocaleHelper","CalendarDataTids","dayCell","dayCellChooseDateAriaLabel","isBetween","cell","today2022","selected","weekend"],"mappings":"yEAAA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,sC;;;;;;;;;;;;AAYO,SAASA,WAAT,CAAqBC,KAArB,EAA8C;AACnD,MAAQC,IAAR,GAAyED,KAAzE,CAAQC,IAAR,CAAcC,OAAd,GAAyEF,KAAzE,CAAcE,OAAd,CAAuBC,OAAvB,GAAyEH,KAAzE,CAAuBG,OAAvB,CAAgCC,KAAhC,GAAyEJ,KAAzE,CAAgCI,KAAhC,CAAuCC,KAAvC,GAAyEL,KAAzE,CAAuCK,KAAvC,CAA8CC,SAA9C,GAAyEN,KAAzE,CAA8CM,SAA9C,CAAyDC,WAAzD,GAAyEP,KAAzE,CAAyDO,WAAzD;AACA,MAAMC,KAAK,GAAG,uBAAWC,0BAAX,CAAd;AACA,MAAMC,YAAY,GAAG,+BAAYF,KAAZ,CAArB;;AAEA,MAAMG,WAAW,GAAG,SAAdA,WAAc,GAAM;AACxB,sBAA8BX,KAAK,CAACC,IAApC,CAAQA,IAAR,eAAQA,IAAR,CAAcW,KAAd,eAAcA,KAAd,CAAqBC,IAArB,eAAqBA,IAArB;AACAN,IAAAA,WAAW,QAAX,YAAAA,WAAW,CAAG,EAAEN,IAAI,EAAJA,IAAF,EAAQW,KAAK,EAALA,KAAR,EAAeC,IAAI,EAAJA,IAAf,EAAH,CAAX;AACD,GAHD;;AAKA,MAAMC,KAAK,GAAGJ,YAAY;AACxB,yCAAM,SAAS,EAAE,iBAAGK,2BAAcC,YAAjB,EAA+BC,oBAAOD,YAAP,EAA/B,CAAjB,IAAyEf,IAAI,CAACA,IAA9E,CADwB;;AAGxBA,EAAAA,IAAI,CAACA,IAHP;;;AAMA,MAAMiB,OAAO,GAAGC,OAAO,CAACf,KAAK,IAAIgB,GAAG,CAACC,OAAJ,CAAYpB,IAAZ,EAAkBG,KAAlB,CAAV,CAAvB;;AAEA,MAAMkB,MAAM,GAAG,8CAAoB,UAApB,EAAgCC,8BAAhC,CAAf;;AAEA;AACE;AACE,kBAAUC,2BAAiBC,OAD7B;AAEE,MAAA,QAAQ,EAAE,CAAC,CAFb;AAGE,oBAAeH,MAAM,CAACI,0BAAtB,UAAoDrB,KAApD,oBAAoDA,KAAK,CAAEJ,IAA3D,WAAmEI,KAAK,IAAIA,KAAK,CAACO,KAAN,GAAc,CAA1F,WAA+FP,KAA/F,oBAA+FA,KAAK,CAAEQ,IAAtG,CAHF;AAIE,MAAA,QAAQ,EAAE,CAACO,GAAG,CAACO,SAAJ,CAAc1B,IAAd,EAAoBC,OAApB,EAA6BC,OAA7B,CAJb;AAKE,MAAA,SAAS,EAAE;AACRc,0BAAOW,IAAP,CAAYpB,KAAZ,CADQ,IACa,IADb;AAERS,0BAAOb,KAAP,CAAaI,KAAb,CAFQ,IAEcU,OAAO,IAAI,CAACR,YAF1B;AAGRO,0BAAOY,SAAP,CAAiBrB,KAAjB,CAHQ,IAGkBU,OAAO,IAAIR,YAH7B;AAIRO,0BAAOa,QAAP,CAAgBtB,KAAhB,CAJQ,IAIiBW,OAAO,CAACd,KAAK,IAAIe,GAAG,CAACC,OAAJ,CAAYpB,IAAZ,EAAkBI,KAAlB,CAAV,CAJxB;AAKRY,0BAAOc,OAAP,CAAevB,KAAf,CALQ,IAKgBW,OAAO,CAACb,SAAD,CALvB,OALb;;AAYE,MAAA,OAAO,EAAEK,WAZX;;AAcGG,IAAAA,KAdH,CADF;;;AAkBD","sourcesContent":["import React, { useContext } from 'react';\n\nimport { useLocaleForControl } from '../../lib/locale/useLocaleForControl';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { DatePickerLocaleHelper } from '../DatePicker/locale';\n\nimport * as CDS from './CalendarDateShape';\nimport { globalClasses, styles } from './DayCellView.styles';\nimport { CalendarDataTids } from './Calendar';\n\ninterface DayCellViewProps {\n date: CDS.CalendarDateShape;\n today?: CDS.CalendarDateShape;\n value?: Nullable<CDS.CalendarDateShape>;\n minDate?: CDS.CalendarDateShape;\n maxDate?: CDS.CalendarDateShape;\n onDateClick?: (day: CDS.CalendarDateShape) => void;\n isWeekend?: boolean;\n}\n\nexport function DayCellView(props: DayCellViewProps) {\n const { date, minDate, maxDate, today, value, isWeekend, onDateClick } = props;\n const theme = useContext(ThemeContext);\n const _isTheme2022 = isTheme2022(theme);\n\n const handleClick = () => {\n const { date, month, year } = props.date;\n onDateClick?.({ date, month, year });\n };\n\n const child = _isTheme2022 ? (\n <span className={cx(globalClasses.todayCaption, styles.todayCaption())}>{date.date}</span>\n ) : (\n date.date\n );\n\n const isToday = Boolean(today && CDS.isEqual(date, today));\n\n const locale = useLocaleForControl('Calendar', DatePickerLocaleHelper);\n\n return (\n <button\n data-tid={CalendarDataTids.dayCell}\n tabIndex={-1}\n aria-label={`${locale.dayCellChooseDateAriaLabel} ${value?.date}.${value && value.month + 1}.${value?.year}`}\n disabled={!CDS.isBetween(date, minDate, maxDate)}\n className={cx({\n [styles.cell(theme)]: true,\n [styles.today(theme)]: isToday && !_isTheme2022,\n [styles.today2022(theme)]: isToday && _isTheme2022,\n [styles.selected(theme)]: Boolean(value && CDS.isEqual(date, value)),\n [styles.weekend(theme)]: Boolean(isWeekend),\n })}\n onClick={handleClick}\n >\n {child}\n </button>\n );\n}\n"]}
@@ -13,4 +13,6 @@ var componentsLocales = {
13
13
  'September',
14
14
  'October',
15
15
  'November',
16
- 'December'] };exports.componentsLocales = componentsLocales;
16
+ 'December'],
17
+
18
+ dayCellChooseDateAriaLabel: 'Choose date' };exports.componentsLocales = componentsLocales;
@@ -1 +1 @@
1
- {"version":3,"sources":["en.ts"],"names":["componentsLocales","months"],"mappings":";;AAEO,IAAMA,iBAAiC,GAAG;AAC/CC,EAAAA,MAAM,EAAE;AACN,WADM;AAEN,YAFM;AAGN,SAHM;AAIN,SAJM;AAKN,OALM;AAMN,QANM;AAON,QAPM;AAQN,UARM;AASN,aATM;AAUN,WAVM;AAWN,YAXM;AAYN,YAZM,CADuC,EAA1C,C","sourcesContent":["import { CalendarLocale } from '../types';\n\nexport const componentsLocales: CalendarLocale = {\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n};\n"]}
1
+ {"version":3,"sources":["en.ts"],"names":["componentsLocales","months","dayCellChooseDateAriaLabel"],"mappings":";;AAEO,IAAMA,iBAAiC,GAAG;AAC/CC,EAAAA,MAAM,EAAE;AACN,WADM;AAEN,YAFM;AAGN,SAHM;AAIN,SAJM;AAKN,OALM;AAMN,QANM;AAON,QAPM;AAQN,UARM;AASN,aATM;AAUN,WAVM;AAWN,YAXM;AAYN,YAZM,CADuC;;AAe/CC,EAAAA,0BAA0B,EAAE,aAfmB,EAA1C,C","sourcesContent":["import { CalendarLocale } from '../types';\n\nexport const componentsLocales: CalendarLocale = {\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n dayCellChooseDateAriaLabel: 'Choose date',\n};\n"]}
@@ -13,4 +13,6 @@ var componentsLocales = {
13
13
  'Сентябрь',
14
14
  'Октябрь',
15
15
  'Ноябрь',
16
- 'Декабрь'] };exports.componentsLocales = componentsLocales;
16
+ 'Декабрь'],
17
+
18
+ dayCellChooseDateAriaLabel: 'Выбрать дату' };exports.componentsLocales = componentsLocales;
@@ -1 +1 @@
1
- {"version":3,"sources":["ru.ts"],"names":["componentsLocales","months"],"mappings":";;AAEO,IAAMA,iBAAiC,GAAG;AAC/CC,EAAAA,MAAM,EAAE;AACN,UADM;AAEN,WAFM;AAGN,QAHM;AAIN,UAJM;AAKN,OALM;AAMN,QANM;AAON,QAPM;AAQN,UARM;AASN,YATM;AAUN,WAVM;AAWN,UAXM;AAYN,WAZM,CADuC,EAA1C,C","sourcesContent":["import { CalendarLocale } from '../types';\n\nexport const componentsLocales: CalendarLocale = {\n months: [\n 'Январь',\n 'Февраль',\n 'Март',\n 'Апрель',\n 'Май',\n 'Июнь',\n 'Июль',\n 'Август',\n 'Сентябрь',\n 'Октябрь',\n 'Ноябрь',\n 'Декабрь',\n ],\n};\n"]}
1
+ {"version":3,"sources":["ru.ts"],"names":["componentsLocales","months","dayCellChooseDateAriaLabel"],"mappings":";;AAEO,IAAMA,iBAAiC,GAAG;AAC/CC,EAAAA,MAAM,EAAE;AACN,UADM;AAEN,WAFM;AAGN,QAHM;AAIN,UAJM;AAKN,OALM;AAMN,QANM;AAON,QAPM;AAQN,UARM;AASN,YATM;AAUN,WAVM;AAWN,UAXM;AAYN,WAZM,CADuC;;AAe/CC,EAAAA,0BAA0B,EAAE,cAfmB,EAA1C,C","sourcesContent":["import { CalendarLocale } from '../types';\n\nexport const componentsLocales: CalendarLocale = {\n months: [\n 'Январь',\n 'Февраль',\n 'Март',\n 'Апрель',\n 'Май',\n 'Июнь',\n 'Июль',\n 'Август',\n 'Сентябрь',\n 'Октябрь',\n 'Ноябрь',\n 'Декабрь',\n ],\n dayCellChooseDateAriaLabel: 'Выбрать дату',\n};\n"]}
@@ -1,3 +1,7 @@
1
1
  export interface CalendarLocale {
2
2
  months?: string[];
3
+ selectMonthAriaLabel?: string;
4
+ selectYearAriaLabel?: string;
5
+ selectChosenAriaLabel?: string;
6
+ dayCellChooseDateAriaLabel?: string;
3
7
  }
@@ -272,7 +272,15 @@ DatePicker = (_dec = (0, _decorators.locale)('DatePicker', _locale2.DatePickerLo
272
272
  picker = /*#__PURE__*/
273
273
  _react.default.createElement(_locale.LocaleContext.Provider, {
274
274
  value: {
275
- locale: { Calendar: { months: _this.locale.months } } } }, /*#__PURE__*/
275
+ locale: {
276
+ Calendar: {
277
+ months: _this.locale.months,
278
+ dayCellChooseDateAriaLabel: _this.locale.dayCellChooseDateAriaLabel,
279
+ selectMonthAriaLabel: _this.locale.selectMonthAriaLabel,
280
+ selectYearAriaLabel: _this.locale.selectYearAriaLabel,
281
+ selectChosenAriaLabel: _this.locale.selectChosenAriaLabel } } } }, /*#__PURE__*/
282
+
283
+
276
284
 
277
285
 
278
286
  _react.default.createElement(_DropdownContainer.DropdownContainer, {
@@ -1 +1 @@
1
- {"version":3,"sources":["DatePicker.tsx"],"names":["INPUT_PASS_PROPS","autoFocus","disabled","warning","error","size","onKeyDown","MIN_WIDTH","DatePickerDataTids","root","input","label","pickerRoot","pickerTodayWrapper","DatePicker","DatePickerLocaleHelper","rootNode","getProps","defaultProps","calendar","state","opened","canUseMobileNativeDatePicker","today","focused","renderMain","props","picker","minDate","maxDate","locale","Calendar","months","menuPos","getParent","parseInt","theme","datePickerMenuOffsetY","menuAlign","styles","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","isMobile","focus","componentDidUpdate","render","ThemeFactory","create","calendarBottomSeparatorBorder","setRootNode","undefined","date","InternalDate","validate","checks","InternalDateValidateCheck","NotNull","Native","toString","withPad","order","separator","setComponents","InternalDateGetter","getTodayComponents","withSeparator","margin","todayLinkWrapper","React","PureComponent","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","string","isRequired","oneOf","oneOfType","number","func","MIN_FULLDATE","MAX_FULLDATE","range","internalDate","InternalDateOrder","DMY","InternalDateSeparator","Dot","setRangeStart","setRangeEnd","parseValue","Number","Limits","Range"],"mappings":"ueAAA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,mC;;AAEA,IAAMA,gBAAgB,GAAG;AACvBC,EAAAA,SAAS,EAAE,IADY;AAEvBC,EAAAA,QAAQ,EAAE,IAFa;AAGvBC,EAAAA,OAAO,EAAE,IAHc;AAIvBC,EAAAA,KAAK,EAAE,IAJgB;AAKvBC,EAAAA,IAAI,EAAE,IALiB;AAMvBC,EAAAA,SAAS,EAAE,IANY,EAAzB;;;AASO,IAAMC,SAAS,GAAG,GAAlB,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDA,IAAMC,kBAAkB,GAAG;AAChCC,EAAAA,IAAI,EAAE,kBAD0B;AAEhCC,EAAAA,KAAK,EAAE,mBAFyB;AAGhCC,EAAAA,KAAK,EAAE,mBAHyB;AAIhCC,EAAAA,UAAU,EAAE,cAJoB;AAKhCC,EAAAA,kBAAkB,EAAE,sBALY,EAA3B,C;;;;;;;AAYMC,U,WADZ,wBAAO,YAAP,EAAqBC,+BAArB,C,MADAC,kB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DSC,IAAAA,Q,GAAW,0CAAkBH,UAAU,CAACI,YAA7B,C;;AAEXC,IAAAA,Q,GAA4B,I;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4B7BC,IAAAA,K,GAAyB,EAAEC,MAAM,EAAE,KAAV,EAAiBC,4BAA4B,EAAE,KAA/C,EAAsDC,KAAK,EAAE,kCAA7D,E;;AAExBb,IAAAA,K,GAA0B,I;AAC1Bc,IAAAA,O,GAAU,K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuEXC,IAAAA,U,GAAa,UAACC,KAAD,EAAoD;AACtE,UAAIC,MAAM,GAAG,IAAb;;AAEA,2BAA6B,MAAKV,QAAL,EAA7B,CAAQW,OAAR,kBAAQA,OAAR,CAAiBC,OAAjB,kBAAiBA,OAAjB;;AAEA,UAAI,MAAKT,KAAL,CAAWC,MAAf,EAAuB;AACrBM,QAAAA,MAAM;AACJ,qCAAC,qBAAD,CAAe,QAAf;AACE,UAAA,KAAK,EAAE;AACLG,YAAAA,MAAM,EAAE,EAAEC,QAAQ,EAAE,EAAEC,MAAM,EAAE,MAAKF,MAAL,CAAYE,MAAtB,EAAZ,EADH,EADT;;;AAKE,qCAAC,oCAAD;AACE,UAAA,OAAO,EAAE,MAAKN,KAAL,CAAWO,OADtB;AAEE,sBAAUzB,kBAAkB,CAACC,IAF/B;AAGE,UAAA,SAAS,EAAE,MAAKyB,SAHlB;AAIE,UAAA,OAAO,EAAEC,QAAQ,CAAC,MAAKC,KAAL,CAAWC,qBAAZ,CAJnB;AAKE,UAAA,KAAK,EAAE,MAAKX,KAAL,CAAWY,SALpB;;AAOE;AACE,sBAAU9B,kBAAkB,CAACI,UAD/B;AAEE,UAAA,SAAS,EAAE2B,mBAAOC,eAAP,CAAuB,MAAKJ,KAA5B,CAFb;AAGE,UAAA,WAAW,EAAE,qBAACK,CAAD,UAAOA,CAAC,CAACC,cAAF,EAAP,EAHf;;AAKE,qCAAC,kBAAD;AACE,UAAA,GAAG,EAAE,aAACC,CAAD,UAAQ,MAAKxB,QAAL,GAAgBwB,CAAxB,EADP;AAEE,UAAA,OAAO,EAAE,MAAKC,gBAAL,CAAsBf,OAAtB,CAFX;AAGE,UAAA,OAAO,EAAE,MAAKe,gBAAL,CAAsBhB,OAAtB,CAHX;AAIE,UAAA,aAAa,EAAE,MAAKiB,iBAJtB;AAKE,UAAA,SAAS,EAAE,MAAKnB,KAAL,CAAWoB,SALxB;AAME,UAAA,KAAK,EAAE,MAAKF,gBAAL,CAAsB,MAAKlB,KAAL,CAAWqB,KAAjC,CANT,GALF;;AAaG,cAAKrB,KAAL,CAAWsB,eAAX,IAA8B,MAAKC,eAAL,EAbjC,EAayD,GAbzD,CAPF,CALF,CADF;;;;;AA+BD;;AAED;AACE;AACE,UAAA,SAAS,EAAEV,mBAAO9B,IAAP,EADb;AAEE,UAAA,KAAK,EAAE,MAAKyC,YAAL,EAFT;AAGE,UAAA,YAAY,EAAE,MAAKxB,KAAL,CAAWyB,YAH3B;AAIE,UAAA,YAAY,EAAE,MAAKzB,KAAL,CAAW0B,YAJ3B;AAKE,UAAA,WAAW,EAAE,MAAK1B,KAAL,CAAW2B,WAL1B;AAME,sBAAU7C,kBAAkB,CAACG,KAN/B;;AAQE,qCAAC,oBAAD;AACM,sCAAYe,KAAZ,EAAmB1B,gBAAnB,CADN;AAEE,UAAA,GAAG,EAAE,MAAKsD,WAFZ;AAGE,UAAA,KAAK,EAAE,MAAK5B,KAAL,CAAWqB,KAAX,IAAoB,EAH7B;AAIE,UAAA,KAAK,EAAC,MAJR;AAKE,UAAA,QAAQ,MALV;AAME,UAAA,OAAO,EAAEnB,OANX;AAOE,UAAA,OAAO,EAAEC,OAPX;AAQE,UAAA,MAAM,EAAE,MAAK0B,UARf;AASE,UAAA,OAAO,EAAE,MAAKC,WAThB;AAUE,UAAA,aAAa,EAAE,MAAK9B,KAAL,CAAW+B,aAV5B;AAWE,sBAAUjD,kBAAkB,CAACE,KAX/B,IARF;;AAqBG,cAAKU,KAAL,CAAWE,4BAAX;AACC,qCAAC,gCAAD;AACE,UAAA,aAAa,EAAE,MAAKI,KAAL,CAAW+B,aAD5B;AAEE,UAAA,KAAK,EAAE,MAAK/B,KAAL,CAAWqB,KAAX,IAAoB,EAF7B;AAGE,UAAA,OAAO,EAAEnB,OAHX;AAIE,UAAA,OAAO,EAAEC,OAJX;AAKE,UAAA,QAAQ,EAAE,MAAKH,KAAL,CAAWxB,QALvB,GAtBJ;;;AA8BG,SAAC,MAAKkB,KAAL,CAAWE,4BAAZ,IAA4CK,MA9B/C,CADF;;;AAkCD,K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDO+B,IAAAA,iB,GAAoB,UAACnC,KAAD,UAAmB,YAAM;AACnD,cAAKoC,YAAL,CAAkBpC,KAAlB;;AAEA,YAAI,MAAKJ,QAAT,EAAmB;AACjB,kCAAwB,MAAKC,KAAL,CAAWG,KAAnC,CAAQqC,KAAR,qBAAQA,KAAR,CAAeC,IAAf,qBAAeA,IAAf;AACA,gBAAK1C,QAAL,CAAc2C,aAAd,CAA4BF,KAA5B,EAAmCC,IAAnC;AACD;AACF,OAP2B,E;;AASrB3B,IAAAA,S,GAAY,YAAM;AACvB,aAAO,uEAAP;AACD,K;;AAEOgB,IAAAA,Y,GAAe,YAAM;AAC3B,UAAQa,KAAR,GAAkB,MAAKrC,KAAvB,CAAQqC,KAAR;AACA,aAAO,0BAAcA,KAAd,IAAuB,EAAEA,KAAK,EAALA,KAAF,EAAvB,GAAmC,EAAEC,QAAQ,EAAEzD,SAAZ,EAA1C;AACD,K;;AAEO+C,IAAAA,W,GAAc,UAACW,GAAD,EAA2B;AAC/C,YAAKvD,KAAL,GAAauD,GAAb;AACD,K;;AAEOT,IAAAA,W,GAAc,YAAM;AAC1B,UAAI,MAAKhC,OAAT,EAAkB;AAChB;AACD;;AAED,YAAKA,OAAL,GAAe,IAAf;;AAEA,YAAK0C,QAAL,CAAc,EAAE7C,MAAM,EAAE,IAAV,EAAd;;AAEA,UAAI,MAAKK,KAAL,CAAWyC,OAAf,EAAwB;AACtB,cAAKzC,KAAL,CAAWyC,OAAX;AACD;AACF,K;;AAEOZ,IAAAA,U,GAAa,YAAM;AACzB,UAAI,CAAC,MAAK/B,OAAV,EAAmB;AACjB;AACD;;AAED,YAAKA,OAAL,GAAe,KAAf;AACA,YAAK4C,KAAL;;AAEA,UAAI,MAAK1C,KAAL,CAAW2C,MAAf,EAAuB;AACrB,cAAK3C,KAAL,CAAW2C,MAAX;AACD;AACF,K;;AAEOxB,IAAAA,iB,GAAoB,UAACE,KAAD,EAAmB;AAC7C,YAAKY,YAAL,CAAkBZ,KAAlB;AACA,YAAKuB,IAAL;AACD,K;;AAEOX,IAAAA,Y,GAAe,UAACZ,KAAD,EAA0B;AAC/C,UAAI,CAACA,KAAL,EAAY;AACV,eAAO,IAAP;AACD;;AAED,UAAI,MAAKrB,KAAL,CAAW+B,aAAf,EAA8B;AAC5B,cAAK/B,KAAL,CAAW+B,aAAX,CAAyBV,KAAzB;AACD;AACF,K,wDA7PMwB,iB,GAAP,6BAA2B,CACzB,IAAI,KAAK7C,KAAL,CAAW8C,yBAAX,IAAwCC,gBAA5C,EAAsD,CACpD,KAAKP,QAAL,CAAc,EACZ5C,4BAA4B,EAAE,IADlB,EAAd,EAGD,CACD,IAAI,KAAKI,KAAL,CAAWzB,SAAf,EAA0B,CACxB,KAAKyE,KAAL,GACD,CACF,C,QAEMC,kB,GAAP,8BAA4B,CAC1B,IAAQzE,QAAR,GAAqB,KAAKwB,KAA1B,CAAQxB,QAAR,CACA,IAAQmB,MAAR,GAAmB,KAAKD,KAAxB,CAAQC,MAAR,CACA,IAAInB,QAAQ,IAAImB,MAAhB,EAAwB,CACtB,KAAK+C,KAAL,GACD,CACF,C,CAED;AACF;AACA,K,QACSE,I,GAAP,gBAAc,CACZ,IAAI,KAAK5D,KAAT,EAAgB,CACd,KAAKA,KAAL,CAAW4D,IAAX,GACD,CACD,KAAKf,UAAL,GACD,C,CAED;AACF;AACA,K,QACSmB,K,GAAP,iBAAe,CACb,IAAI,KAAKhD,KAAL,CAAWxB,QAAf,EAAyB,CACvB,OACD,CACD,IAAI,KAAKQ,KAAT,EAAgB,CACd,KAAKA,KAAL,CAAWgE,KAAX,GACD,CACD,KAAKlB,WAAL,GACD,C,CAED;AACF;AACA;AACA,K,QACSY,K,GAAP,iBAAe,CACb,KAAKF,QAAL,CAAc,EAAE7C,MAAM,EAAE,KAAV,EAAd,EACD,C,QAEMuD,M,GAAP,kBAAgB,mBACd,oBACE,6BAAC,0BAAD,CAAc,QAAd,QACG,UAACxC,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CAEA,oBACE,6BAAC,0BAAD,CAAc,QAAd,IAAuB,KAAK,EAAEyC,2BAAaC,MAAb,CAAoB,EAAEC,6BAA6B,EAAE,MAAjC,EAApB,EAA+D3C,KAA/D,CAA9B,iBACE,6BAAC,4BAAD,2BAAe,WAAW,EAAE,MAAI,CAAC4C,WAAjC,IAAkD,MAAI,CAACtD,KAAvD,GACG,MAAI,CAACD,UADR,CADF,CADF,CAOD,CAXH,CADF,CAeD,C,QA6EOmB,gB,GAAR,0BAAyBG,KAAzB,EAAuE,CACrE,IAAIA,KAAK,KAAKkC,SAAV,IAAuBlC,KAAK,KAAK,IAArC,EAA2C,CACzC,OAAOkC,SAAP,CACD,CAED,IAAMC,IAAI,GAAG,IAAIC,0BAAJ,CAAiB,EAAEpC,KAAK,EAALA,KAAF,EAAjB,CAAb,CACA,IAAImC,IAAI,CAACE,QAAL,CAAc,EAAEC,MAAM,EAAE,CAACC,iCAA0BC,OAA3B,EAAoCD,iCAA0BE,MAA9D,CAAV,EAAd,CAAJ,EAAsG,CACpG,OAAON,IAAI,CAACO,QAAL,CAAc,EAAEC,OAAO,EAAE,IAAX,EAAd,CAAP,CACD,CAED,OAAOT,SAAP,CACD,C,QAEOhC,e,GAAR,2BAA0B,SACxB,mBAA6B,KAAKnB,MAAlC,CAAQ6D,KAAR,gBAAQA,KAAR,CAAeC,SAAf,gBAAeA,SAAf,CACA,IAAMrE,KAAK,GAAG,IAAI4D,0BAAJ,CAAiB,EAAEQ,KAAK,EAALA,KAAF,EAASC,SAAS,EAATA,SAAT,EAAjB,EACXC,aADW,CACGC,uCAAmBC,kBAAnB,EADH,EAEXN,QAFW,CAEF,EAAEC,OAAO,EAAE,IAAX,EAAiBM,aAAa,EAAE,IAAhC,EAFE,CAAd,CAIA,IAAI,+BAAY,KAAK5D,KAAjB,CAAJ,EAA6B,CAC3B,oBACE,sCAAK,KAAK,EAAE,EAAE6D,MAAM,EAAE,CAAV,EAAZ,iBACE,6BAAC,cAAD,IACE,YAAUzF,kBAAkB,CAACK,kBAD/B,EAEE,KAAK,EAAC,MAFR,EAGE,OAAO,EAAE,KAAK6C,iBAAL,CAAuBnC,KAAvB,CAHX,EAIE,IAAI,eAAE,6BAAC,oCAAD,OAJR,IAMG,KAAKO,MAAL,CAAYP,KANf,CADF,CADF,CAYD,CAED,oBACE,yCACE,YAAUf,kBAAkB,CAACK,kBAD/B,EAEE,SAAS,EAAE,gCACR0B,mBAAO2D,gBAAP,CAAwB,KAAK9D,KAA7B,CADQ,IAC8B,IAD9B,OAFb,EAKE,OAAO,EAAE,KAAKsB,iBAAL,CAAuBnC,KAAvB,CALX,EAME,QAAQ,EAAE,CAAC,CANb,IAQM,KAAKO,MAAL,CAAYP,KARlB,SAQ2BA,KAR3B,CADF,CAYD,C,qBA3R6B4E,eAAMC,a,WACtBC,mB,GAAsB,Y,UAEtBC,S,GAAY,EACxBrG,SAAS,EAAEsG,mBAAUC,IADG,EAGxBtG,QAAQ,EAAEqG,mBAAUC,IAHI,EAKxB;AACJ;AACA,KACIxD,eAAe,EAAEuD,mBAAUC,IARH,EAUxBpG,KAAK,EAAEmG,mBAAUC,IAVO,EAYxB;AACJ;AACA,KACI3E,OAAO,EAAE0E,mBAAUE,MAAV,CAAiBC,UAfF,EAiBxBpE,SAAS,EAAEiE,mBAAUI,KAAV,CAAgB,CAAC,MAAD,EAAS,OAAT,CAAhB,CAjBa,EAmBxB;AACJ;AACA,KACI/E,OAAO,EAAE2E,mBAAUE,MAAV,CAAiBC,UAtBF,EAwBxB;AACJ;AACA,KACI3D,KAAK,EAAEwD,mBAAUE,MA3BO,EA6BxBtG,OAAO,EAAEoG,mBAAUC,IA7BK,EA+BxBzC,KAAK,EAAEwC,mBAAUK,SAAV,CAAoB,CAACL,mBAAUM,MAAX,EAAmBN,mBAAUE,MAA7B,CAApB,EAA0DC,UA/BzC,EAiCxBrC,MAAM,EAAEkC,mBAAUO,IAjCM,EAmCxBrD,aAAa,EAAE8C,mBAAUO,IAAV,CAAeJ,UAnCN,EAqCxBvC,OAAO,EAAEoC,mBAAUO,IArCK,EAuCxBxG,SAAS,EAAEiG,mBAAUO,IAvCG,EAyCxB3D,YAAY,EAAEoD,mBAAUO,IAzCA,EA2CxB1D,YAAY,EAAEmD,mBAAUO,IA3CA,EA6CxBzD,WAAW,EAAEkD,mBAAUO,IA7CC,EA+CxBhE,SAAS,EAAEyD,mBAAUO,IA/CG,E,UAkDZ5F,Y,GAA6B,EACzCU,OAAO,EAAEmF,uBADgC,EAEzClF,OAAO,EAAEmF,uBAFgC,E,UAU7B5B,Q,GAAW,UAACrC,KAAD,EAA0BkE,KAA1B,EAAiF,KAAvDA,KAAuD,cAAvDA,KAAuD,GAAP,EAAO,EACxG,IAAI,CAAClE,KAAL,EAAY,CACV,OAAO,KAAP,CACD,CAED,aAA2DkE,KAA3D,yBAAQrF,OAAR,CAAQA,OAAR,+BAAkBmF,uBAAlB,0CAAgClF,OAAhC,CAAgCA,OAAhC,+BAA0CmF,uBAA1C,kBACA,IAAME,YAAY,GAAG,IAAI/B,0BAAJ,CAAiB,EACpCQ,KAAK,EAAEwB,yBAAkBC,GADW,EAEpCxB,SAAS,EAAEyB,6BAAsBC,GAFG,EAAjB,EAIlBC,aAJkB,CAIJ,IAAIpC,0BAAJ,CAAiB,EAAEpC,KAAK,EAAEnB,OAAT,EAAjB,CAJI,EAKlB4F,WALkB,CAKN,IAAIrC,0BAAJ,CAAiB,EAAEpC,KAAK,EAAElB,OAAT,EAAjB,CALM,EAMlB4F,UANkB,CAMP1E,KANO,CAArB,CAQA,OAAOmE,YAAY,CAAC9B,QAAb,CAAsB,EAC3BC,MAAM,EAAE,CACNC,iCAA0BC,OADpB,EAEND,iCAA0BoC,MAFpB,EAGNpC,iCAA0BE,MAHpB,EAINF,iCAA0BqC,MAJpB,EAKNrC,iCAA0BsC,KALpB,CADmB,EAAtB,CAAP,CASD,C","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';\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?: 'small' | 'medium' | 'large';\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\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]).isRequired,\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: { Calendar: { months: this.locale.months } },\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 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 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":["INPUT_PASS_PROPS","autoFocus","disabled","warning","error","size","onKeyDown","MIN_WIDTH","DatePickerDataTids","root","input","label","pickerRoot","pickerTodayWrapper","DatePicker","DatePickerLocaleHelper","rootNode","getProps","defaultProps","calendar","state","opened","canUseMobileNativeDatePicker","today","focused","renderMain","props","picker","minDate","maxDate","locale","Calendar","months","dayCellChooseDateAriaLabel","selectMonthAriaLabel","selectYearAriaLabel","selectChosenAriaLabel","menuPos","getParent","parseInt","theme","datePickerMenuOffsetY","menuAlign","styles","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","isMobile","focus","componentDidUpdate","render","ThemeFactory","create","calendarBottomSeparatorBorder","setRootNode","undefined","date","InternalDate","validate","checks","InternalDateValidateCheck","NotNull","Native","toString","withPad","order","separator","setComponents","InternalDateGetter","getTodayComponents","withSeparator","margin","todayLinkWrapper","React","PureComponent","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","string","isRequired","oneOf","oneOfType","number","func","MIN_FULLDATE","MAX_FULLDATE","range","internalDate","InternalDateOrder","DMY","InternalDateSeparator","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';\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?: 'small' | 'medium' | 'large';\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\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]).isRequired,\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 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 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"]}
@@ -281,6 +281,10 @@ interface DatePickerLocale {
281
281
  months?: string[];
282
282
  order?: DateOrder;
283
283
  separator?: DateSeparator;
284
+ 'select-month-aria-label'?: string;
285
+ 'select-year-aria-label'?: string;
286
+ 'select-chosen-aria-label'?: string;
287
+ 'day-cell-choose-date-aria-label'?: string;
284
288
  }
285
289
 
286
290
  const ru_RU = {
@@ -301,6 +305,10 @@ const ru_RU = {
301
305
  ],
302
306
  order: DateOrder.DMY,
303
307
  separator: DateSeparator.Dot,
308
+ 'select-month-aria-label': 'месяц',
309
+ 'select-year-aria-label': 'год',
310
+ 'select-chosen-aria-label': 'Выбранный',
311
+ 'day-cell-choose-date-aria-label': 'Выбрать дату',
304
312
  };
305
313
 
306
314
  const en_GB = {
@@ -321,5 +329,9 @@ const en_GB = {
321
329
  ],
322
330
  order: DateOrder.MDY,
323
331
  separator: DateSeparator.Slash,
332
+ 'select-month-aria-label': 'month',
333
+ 'select-year-aria-label': 'year',
334
+ 'select-chosen-aria-label': 'Chosen',
335
+ 'day-cell-choose-date-aria-label': 'Choose date',
324
336
  };
325
337
  ```
@@ -2,8 +2,10 @@
2
2
  var _locale = require("../../../../lib/locale");
3
3
 
4
4
  var _en = require("../../../Calendar/locale/locales/en");
5
+ var _en2 = require("../../../../internal/DateSelect/locale/locales/en");
5
6
 
6
7
  var componentsLocales = (0, _extends2.default)({
7
8
  today: 'Today' },
8
9
  _en.componentsLocales,
10
+ _en2.componentsLocales,
9
11
  _localeSets.internalDateLocale[_locale.LangCodes.en_GB]);exports.componentsLocales = componentsLocales;
@@ -1 +1 @@
1
- {"version":3,"sources":["en.ts"],"names":["componentsLocales","today","CalendarLocales","internalDateLocale","LangCodes","en_GB"],"mappings":"iPAAA;AACA;;AAEA;;AAEO,IAAMA,iBAAmC;AAC9CC,EAAAA,KAAK,EAAE,OADuC;AAE3CC,qBAF2C;AAG3CC,+BAAmBC,kBAAUC,KAA7B,CAH2C,CAAzC,C","sourcesContent":["import { internalDateLocale } from '../../../../lib/date/localeSets';\nimport { LangCodes } from '../../../../lib/locale';\nimport { DatePickerLocale } from '../types';\nimport { componentsLocales as CalendarLocales } from '../../../Calendar/locale/locales/en';\n\nexport const componentsLocales: DatePickerLocale = {\n today: 'Today',\n ...CalendarLocales,\n ...internalDateLocale[LangCodes.en_GB],\n};\n"]}
1
+ {"version":3,"sources":["en.ts"],"names":["componentsLocales","today","CalendarLocales","DateSelectLocales","internalDateLocale","LangCodes","en_GB"],"mappings":"iPAAA;AACA;;AAEA;AACA;;AAEO,IAAMA,iBAAmC;AAC9CC,EAAAA,KAAK,EAAE,OADuC;AAE3CC,qBAF2C;AAG3CC,sBAH2C;AAI3CC,+BAAmBC,kBAAUC,KAA7B,CAJ2C,CAAzC,C","sourcesContent":["import { internalDateLocale } from '../../../../lib/date/localeSets';\nimport { LangCodes } from '../../../../lib/locale';\nimport { DatePickerLocale } from '../types';\nimport { componentsLocales as CalendarLocales } from '../../../Calendar/locale/locales/en';\nimport { componentsLocales as DateSelectLocales } from '../../../../internal/DateSelect/locale/locales/en';\n\nexport const componentsLocales: DatePickerLocale = {\n today: 'Today',\n ...CalendarLocales,\n ...DateSelectLocales,\n ...internalDateLocale[LangCodes.en_GB],\n};\n"]}
@@ -2,8 +2,10 @@
2
2
  var _locale = require("../../../../lib/locale");
3
3
 
4
4
  var _ru = require("../../../Calendar/locale/locales/ru");
5
+ var _ru2 = require("../../../../internal/DateSelect/locale/locales/ru");
5
6
 
6
7
  var componentsLocales = (0, _extends2.default)({
7
8
  today: 'Сегодня' },
8
9
  _ru.componentsLocales,
10
+ _ru2.componentsLocales,
9
11
  _localeSets.internalDateLocale[_locale.LangCodes.ru_RU]);exports.componentsLocales = componentsLocales;
@@ -1 +1 @@
1
- {"version":3,"sources":["ru.ts"],"names":["componentsLocales","today","CalendarLocales","internalDateLocale","LangCodes","ru_RU"],"mappings":"iPAAA;AACA;;AAEA;;AAEO,IAAMA,iBAAmC;AAC9CC,EAAAA,KAAK,EAAE,SADuC;AAE3CC,qBAF2C;AAG3CC,+BAAmBC,kBAAUC,KAA7B,CAH2C,CAAzC,C","sourcesContent":["import { internalDateLocale } from '../../../../lib/date/localeSets';\nimport { LangCodes } from '../../../../lib/locale';\nimport { DatePickerLocale } from '../types';\nimport { componentsLocales as CalendarLocales } from '../../../Calendar/locale/locales/ru';\n\nexport const componentsLocales: DatePickerLocale = {\n today: 'Сегодня',\n ...CalendarLocales,\n ...internalDateLocale[LangCodes.ru_RU],\n};\n"]}
1
+ {"version":3,"sources":["ru.ts"],"names":["componentsLocales","today","CalendarLocales","DateSelectLocales","internalDateLocale","LangCodes","ru_RU"],"mappings":"iPAAA;AACA;;AAEA;AACA;;AAEO,IAAMA,iBAAmC;AAC9CC,EAAAA,KAAK,EAAE,SADuC;AAE3CC,qBAF2C;AAG3CC,sBAH2C;AAI3CC,+BAAmBC,kBAAUC,KAA7B,CAJ2C,CAAzC,C","sourcesContent":["import { internalDateLocale } from '../../../../lib/date/localeSets';\nimport { LangCodes } from '../../../../lib/locale';\nimport { DatePickerLocale } from '../types';\nimport { componentsLocales as CalendarLocales } from '../../../Calendar/locale/locales/ru';\nimport { componentsLocales as DateSelectLocales } from '../../../../internal/DateSelect/locale/locales/ru';\n\nexport const componentsLocales: DatePickerLocale = {\n today: 'Сегодня',\n ...CalendarLocales,\n ...DateSelectLocales,\n ...internalDateLocale[LangCodes.ru_RU],\n};\n"]}
@@ -1,5 +1,6 @@
1
+ import { DateSelectLocale } from '../../../internal/DateSelect/locale';
1
2
  import { InternalDateLocaleSet } from '../../../lib/date/types';
2
3
  import { CalendarLocale } from '../../Calendar/locale/types';
3
- export interface DatePickerLocale extends CalendarLocale, InternalDateLocaleSet {
4
+ export interface DatePickerLocale extends DateSelectLocale, CalendarLocale, InternalDateLocaleSet {
4
5
  today: string;
5
6
  }
@@ -23,6 +23,7 @@ export interface DateSelectState {
23
23
  export declare const DateSelectDataTids: {
24
24
  readonly caption: "DateSelect__caption";
25
25
  readonly menuItem: "DateSelect__menuItem";
26
+ readonly menu: "DateSelect__menu";
26
27
  };
27
28
  declare type DefaultProps = Required<Pick<DateSelectProps, 'type' | 'width'>>;
28
29
  export declare class DateSelect extends React.PureComponent<DateSelectProps, DateSelectState> {
@@ -70,6 +71,7 @@ export declare class DateSelect extends React.PureComponent<DateSelectProps, Dat
70
71
  */
71
72
  close: () => void;
72
73
  render(): JSX.Element;
74
+ private menuId;
73
75
  private renderMain;
74
76
  private renderMain2022;
75
77
  private refRoot;