@skbkontur/react-ui 4.16.0 → 4.17.0-datepicker.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/CHANGELOG.md +23 -149
  2. package/LICENSE +21 -21
  3. package/cjs/components/Calendar/Calendar.d.ts +62 -3
  4. package/cjs/components/Calendar/Calendar.js +122 -37
  5. package/cjs/components/Calendar/Calendar.js.map +1 -1
  6. package/cjs/components/Calendar/Calendar.md +112 -0
  7. package/cjs/components/Calendar/Calendar.styles.js +1 -1
  8. package/cjs/components/Calendar/Calendar.styles.js.map +1 -1
  9. package/cjs/components/Calendar/CalendarContext.d.ts +17 -0
  10. package/cjs/components/Calendar/CalendarContext.js +27 -0
  11. package/cjs/components/Calendar/CalendarContext.js.map +1 -0
  12. package/cjs/components/Calendar/CalendarDateShape.d.ts +2 -2
  13. package/cjs/components/Calendar/CalendarDateShape.js +1 -1
  14. package/cjs/components/Calendar/CalendarDateShape.js.map +1 -1
  15. package/cjs/components/Calendar/CalendarUtils.d.ts +9 -0
  16. package/cjs/components/Calendar/CalendarUtils.js +13 -3
  17. package/cjs/components/Calendar/CalendarUtils.js.map +1 -1
  18. package/cjs/components/Calendar/DayCellView.d.ts +27 -12
  19. package/cjs/components/Calendar/DayCellView.js +116 -25
  20. package/cjs/components/Calendar/DayCellView.js.map +1 -1
  21. package/cjs/components/Calendar/DayCellView.styles.d.ts +5 -0
  22. package/cjs/components/Calendar/DayCellView.styles.js +46 -12
  23. package/cjs/components/Calendar/DayCellView.styles.js.map +1 -1
  24. package/cjs/components/Calendar/Month.d.ts +1 -10
  25. package/cjs/components/Calendar/Month.js +15 -76
  26. package/cjs/components/Calendar/Month.js.map +1 -1
  27. package/cjs/components/Calendar/MonthView.d.ts +0 -3
  28. package/cjs/components/Calendar/MonthView.js +15 -6
  29. package/cjs/components/Calendar/MonthView.js.map +1 -1
  30. package/cjs/components/Calendar/MonthView.styles.js +1 -1
  31. package/cjs/components/Calendar/MonthView.styles.js.map +1 -1
  32. package/cjs/components/Calendar/MonthViewModel.js +4 -3
  33. package/cjs/components/Calendar/MonthViewModel.js.map +1 -1
  34. package/cjs/components/Calendar/config.js +6 -3
  35. package/cjs/components/Calendar/config.js.map +1 -1
  36. package/cjs/components/Calendar/index.d.ts +1 -0
  37. package/cjs/components/Calendar/index.js.map +1 -1
  38. package/cjs/components/DatePicker/DatePicker.d.ts +3 -1
  39. package/cjs/components/DatePicker/DatePicker.js +9 -2
  40. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  41. package/cjs/components/DatePicker/DatePicker.md +24 -1
  42. package/cjs/components/DatePicker/DatePickerHelpers.js +2 -1
  43. package/cjs/components/DatePicker/DatePickerHelpers.js.map +1 -1
  44. package/cjs/components/Gapped/Gapped.md +43 -43
  45. package/cjs/components/Hint/Hint.js +2 -1
  46. package/cjs/components/Hint/Hint.js.map +1 -1
  47. package/cjs/components/Kebab/Kebab.js +1 -1
  48. package/cjs/components/Kebab/Kebab.js.map +1 -1
  49. package/cjs/components/Paging/Paging.js +1 -1
  50. package/cjs/components/Paging/Paging.js.map +1 -1
  51. package/cjs/components/Paging/Paging.styles.js +2 -1
  52. package/cjs/components/Paging/Paging.styles.js.map +1 -1
  53. package/cjs/components/RadioGroup/RadioGroup.md +43 -43
  54. package/cjs/components/Token/Token.md +112 -112
  55. package/cjs/hooks/usePrevious.d.ts +1 -0
  56. package/cjs/hooks/usePrevious.js +9 -0
  57. package/cjs/hooks/usePrevious.js.map +1 -0
  58. package/cjs/internal/DateSelect/locale/locales/en.js +2 -1
  59. package/cjs/internal/DateSelect/locale/locales/en.js.map +1 -1
  60. package/cjs/internal/DateSelect/locale/locales/ru.js +2 -1
  61. package/cjs/internal/DateSelect/locale/locales/ru.js.map +1 -1
  62. package/cjs/internal/DateSelect/locale/types.d.ts +1 -0
  63. package/cjs/internal/NativeDateInput/utils.js +3 -2
  64. package/cjs/internal/NativeDateInput/utils.js.map +1 -1
  65. package/cjs/internal/ThemeShowcase/ThemeShowcase.md +13 -13
  66. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  67. package/cjs/internal/themes/DefaultTheme.d.ts +3 -0
  68. package/cjs/internal/themes/DefaultTheme.js +10 -3
  69. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  70. package/cjs/internal/themes/Theme2022.d.ts +4 -0
  71. package/cjs/internal/themes/Theme2022.js +11 -2
  72. package/cjs/internal/themes/Theme2022.js.map +1 -1
  73. package/cjs/internal/themes/Theme2022Dark.d.ts +5 -0
  74. package/cjs/internal/themes/Theme2022Dark.js +6 -1
  75. package/cjs/internal/themes/Theme2022Dark.js.map +1 -1
  76. package/cjs/lib/date/InternalDate.d.ts +2 -0
  77. package/cjs/lib/date/InternalDate.js +8 -1
  78. package/cjs/lib/date/InternalDate.js.map +1 -1
  79. package/cjs/lib/date/InternalDateTransformer.d.ts +2 -0
  80. package/cjs/lib/date/InternalDateTransformer.js +15 -0
  81. package/cjs/lib/date/InternalDateTransformer.js.map +1 -1
  82. package/cjs/lib/date/InternalDateValidator.js +2 -1
  83. package/cjs/lib/date/InternalDateValidator.js.map +1 -1
  84. package/cjs/lib/locale/constants.d.ts +3 -0
  85. package/cjs/lib/locale/constants.js +6 -2
  86. package/cjs/lib/locale/constants.js.map +1 -1
  87. package/components/Calendar/Calendar/Calendar.js +86 -65
  88. package/components/Calendar/Calendar/Calendar.js.map +1 -1
  89. package/components/Calendar/Calendar.d.ts +62 -3
  90. package/components/Calendar/Calendar.md +112 -0
  91. package/components/Calendar/Calendar.styles/Calendar.styles.js +1 -1
  92. package/components/Calendar/Calendar.styles/Calendar.styles.js.map +1 -1
  93. package/components/Calendar/CalendarContext/CalendarContext.js +13 -0
  94. package/components/Calendar/CalendarContext/CalendarContext.js.map +1 -0
  95. package/components/Calendar/CalendarContext/package.json +6 -0
  96. package/components/Calendar/CalendarContext.d.ts +17 -0
  97. package/components/Calendar/CalendarDateShape/CalendarDateShape.js +1 -1
  98. package/components/Calendar/CalendarDateShape/CalendarDateShape.js.map +1 -1
  99. package/components/Calendar/CalendarDateShape.d.ts +2 -2
  100. package/components/Calendar/CalendarUtils/CalendarUtils.js +7 -0
  101. package/components/Calendar/CalendarUtils/CalendarUtils.js.map +1 -1
  102. package/components/Calendar/CalendarUtils.d.ts +9 -0
  103. package/components/Calendar/DayCellView/DayCellView.js +95 -32
  104. package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
  105. package/components/Calendar/DayCellView.d.ts +27 -12
  106. package/components/Calendar/DayCellView.styles/DayCellView.styles.js +22 -7
  107. package/components/Calendar/DayCellView.styles/DayCellView.styles.js.map +1 -1
  108. package/components/Calendar/DayCellView.styles.d.ts +5 -0
  109. package/components/Calendar/Month/Month.js +11 -77
  110. package/components/Calendar/Month/Month.js.map +1 -1
  111. package/components/Calendar/Month.d.ts +1 -10
  112. package/components/Calendar/MonthView/MonthView.js +17 -2
  113. package/components/Calendar/MonthView/MonthView.js.map +1 -1
  114. package/components/Calendar/MonthView.d.ts +0 -3
  115. package/components/Calendar/MonthView.styles/MonthView.styles.js +1 -1
  116. package/components/Calendar/MonthView.styles/MonthView.styles.js.map +1 -1
  117. package/components/Calendar/MonthViewModel/MonthViewModel.js +4 -3
  118. package/components/Calendar/MonthViewModel/MonthViewModel.js.map +1 -1
  119. package/components/Calendar/config/config.js +4 -3
  120. package/components/Calendar/config/config.js.map +1 -1
  121. package/components/Calendar/index/index.js +2 -1
  122. package/components/Calendar/index/index.js.map +1 -1
  123. package/components/Calendar/index.d.ts +1 -0
  124. package/components/DatePicker/DatePicker/DatePicker.js +7 -2
  125. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  126. package/components/DatePicker/DatePicker.d.ts +3 -1
  127. package/components/DatePicker/DatePicker.md +24 -1
  128. package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js +2 -1
  129. package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js.map +1 -1
  130. package/components/Gapped/Gapped.md +43 -43
  131. package/components/Hint/Hint/Hint.js +2 -1
  132. package/components/Hint/Hint/Hint.js.map +1 -1
  133. package/components/Kebab/Kebab/Kebab.js +1 -1
  134. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  135. package/components/Paging/Paging/Paging.js +1 -1
  136. package/components/Paging/Paging/Paging.js.map +1 -1
  137. package/components/Paging/Paging.styles/Paging.styles.js +1 -1
  138. package/components/Paging/Paging.styles/Paging.styles.js.map +1 -1
  139. package/components/RadioGroup/RadioGroup.md +43 -43
  140. package/components/Token/Token.md +112 -112
  141. package/hooks/usePrevious/package.json +6 -0
  142. package/hooks/usePrevious/usePrevious.js +8 -0
  143. package/hooks/usePrevious/usePrevious.js.map +1 -0
  144. package/hooks/usePrevious.d.ts +1 -0
  145. package/internal/DateSelect/locale/locales/en/en.js +2 -1
  146. package/internal/DateSelect/locale/locales/en/en.js.map +1 -1
  147. package/internal/DateSelect/locale/locales/ru/ru.js +2 -1
  148. package/internal/DateSelect/locale/locales/ru/ru.js.map +1 -1
  149. package/internal/DateSelect/locale/types.d.ts +1 -0
  150. package/internal/NativeDateInput/utils/utils.js +2 -1
  151. package/internal/NativeDateInput/utils/utils.js.map +1 -1
  152. package/internal/ThemeShowcase/ThemeShowcase.md +13 -13
  153. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  154. package/internal/themes/DefaultTheme/DefaultTheme.js +13 -1
  155. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  156. package/internal/themes/DefaultTheme.d.ts +3 -0
  157. package/internal/themes/Theme2022/Theme2022.js +11 -3
  158. package/internal/themes/Theme2022/Theme2022.js.map +1 -1
  159. package/internal/themes/Theme2022.d.ts +4 -0
  160. package/internal/themes/Theme2022Dark/Theme2022Dark.js +9 -4
  161. package/internal/themes/Theme2022Dark/Theme2022Dark.js.map +1 -1
  162. package/internal/themes/Theme2022Dark.d.ts +5 -0
  163. package/lib/date/InternalDate/InternalDate.js +7 -1
  164. package/lib/date/InternalDate/InternalDate.js.map +1 -1
  165. package/lib/date/InternalDate.d.ts +2 -0
  166. package/lib/date/InternalDateTransformer/InternalDateTransformer.js +19 -0
  167. package/lib/date/InternalDateTransformer/InternalDateTransformer.js.map +1 -1
  168. package/lib/date/InternalDateTransformer.d.ts +2 -0
  169. package/lib/date/InternalDateValidator/InternalDateValidator.js +6 -1
  170. package/lib/date/InternalDateValidator/InternalDateValidator.js.map +1 -1
  171. package/lib/locale/constants/constants.js +4 -1
  172. package/lib/locale/constants/constants.js.map +1 -1
  173. package/lib/locale/constants.d.ts +3 -0
  174. package/package.json +2 -5
@@ -1 +1 @@
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":"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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 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"]}
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","debouncedStuckMonth","onStuckMonth","renderMain","monthsForRender","getVisibleMonths","wrapperStyle","height","WRAPPER_HEIGHT","context","hoveredDate","value","periodEndDate","periodStartDate","isHoliday","renderDay","today","getTodayDate","setRootNode","refRoot","styles","handleMouseHits","handleClick","wrapper","map","renderMonth","separator","element","isMobile","addEventListener","handleTouchStart","throttledHandleTouchMove","handleWheel","passive","removeEventListener","handleMonthYearChange","onMonthSelect","getMonthInHumanFormat","executeAnimations","pixelY","calculateScrollPosition","scrollTarget","handleWheelEnd","animate","deltaY","applyDelta","CalendarScrollEvents","emit","event","TouchEvent","clientY","targetTouches","handleTouchMove","changedTouches","WheelEvent","preventDefault","wheelEndTimeout","clearTimeout","window","scrollToNearestWeek","scrollDirection","thresholdHeight","MONTH_TITLE_OFFSET_HEIGHT","DAY_HEIGHT","amount","pos","scrollAmmount","scrollAmount","e","hasDayElement","target","dataset","type","onValueChange","minDateShape","maxDateShape","dateShape","initialDate","getInitialDate","initialMonth","getMonthInNativeFormat","initialYear","componentDidUpdate","prevProps","parseValue","getComponentsLikeNumber","componentWillUnmount","cancel","render","top","toNativeFormat","getMonthPositions","positions","i","position","push","x","filter","isMonthVisible","React","Component","__KONTUR_REACT_UI__","MIN_DATE","MIN_MONTH","MIN_YEAR","MAX_DATE","MAX_MONTH","MAX_YEAR","_day","isWeekend"],"mappings":"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","sourcesContent":["import React from 'react';\nimport normalizeWheel from 'normalize-wheel';\nimport throttle from 'lodash.throttle';\nimport shallowEqual from 'shallowequal';\nimport debounce from 'lodash.debounce';\n\nimport { InternalDate } from '../../lib/date/InternalDate';\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';\nimport { CalendarContext, getDefaultizedCalendarContext } from './CalendarContext';\nimport { DayProps } from './DayCellView';\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 *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n periodStartDate?: string;\n /**\n * Задаёт конечную дату периода\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n periodEndDate?: 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 * Метод отрисовки ячеки даты в календаре\n *\n * @default undefined\n *\n * @param date - дата в формате `dd.mm.yyyy`\n * @param defaultProps - дефолтные пропы `DayProps`\n * @param RenderDefault - дефолтный комопнент для рендера ячейки\n *\n * @returns {ReactNode} возвращает компонент, который отрисовывает контент числа месяца\n */\n renderDay?: (\n date: string,\n defaultProps: DayProps,\n RenderDefault: React.FunctionComponent<DayProps>,\n ) => React.ReactNode;\n\n /**\n * Вызывается для каждого залипшего месяца. Залипшим считается месяц, оставшийся сверху после:\n * <br />\n * - ручного скролинга\n * <br />\n * - ручной смены месяца или года\n * <br />\n * - автоскролинга при обновлении `value`\n *\n * @type ({ month: number; year: number; }) => void\n * @default undefined\n *\n * @param monthInfo\n * @param monthInfo.month - 1-12\n * @param monthInfo.year\n */\n onStuckMonth?: (monthInfo: CalendarMonthInfo) => void;\n\n /**\n * Вызывается при ручной смене месяца или года\n *\n * @type ({ month: number; year: number; }) => void\n * @default undefined\n *\n * @param monthInfo\n * @param monthInfo.month - 1-12\n * @param monthInfo.year\n */\n onMonthSelect?: (monthInfo: CalendarMonthInfo) => void;\n}\n\nexport interface CalendarState {\n scrollPosition: number;\n months: MonthViewModel[];\n scrollDirection: number;\n scrollTarget: number;\n hoveredDate: CalendarDateShape | null;\n}\n\nexport interface CalendarMonthInfo {\n month: number;\n year: 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 scrollDirection: 1,\n scrollTarget: 0,\n hoveredDate: null,\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 debouncedStuckMonth = this.props.onStuckMonth && debounce(this.props.onStuckMonth, 100);\n\n private renderMain = () => {\n const monthsForRender = this.getVisibleMonths(this.state);\n const wrapperStyle = { height: themeConfig(this.theme).WRAPPER_HEIGHT };\n\n const props = this.getProps();\n\n const context = getDefaultizedCalendarContext({\n hoveredDate: this.state.hoveredDate,\n value: this.getDateInNativeFormat(props.value),\n minDate: this.getDateInNativeFormat(props.minDate),\n maxDate: this.getDateInNativeFormat(props.maxDate),\n periodEndDate: this.getDateInNativeFormat(props.periodEndDate),\n periodStartDate: this.getDateInNativeFormat(props.periodStartDate),\n isHoliday: props.isHoliday,\n renderDay: props.renderDay,\n today: CalendarUtils.getTodayDate(),\n onStuckMonth: this.debouncedStuckMonth,\n });\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...props}>\n <div\n ref={this.refRoot}\n data-tid={CalendarDataTids.root}\n className={cx(styles.root(this.theme))}\n onMouseOver={this.handleMouseHits}\n onMouseOut={this.handleMouseHits}\n onClick={this.handleClick}\n >\n <div style={wrapperStyle} className={styles.wrapper()}>\n <CalendarContext.Provider value={context}>\n {monthsForRender.map(this.renderMonth, this)}\n </CalendarContext.Provider>\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 return (\n <Month\n key={month.month + '-' + month.year}\n top={top}\n month={month}\n onMonthYearChange={this.handleMonthYearChange}\n />\n );\n }\n\n private getDateInNativeFormat(date: Nullable<string>) {\n return new InternalDate().parseValue(date).toNativeFormat();\n }\n\n private getMonthPositions(months: MonthViewModel[], scrollPosition: number) {\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 getVisibleMonths(state: Readonly<CalendarState>): Array<[number, MonthViewModel]> {\n const { months, scrollPosition } = state;\n const positions = this.getMonthPositions(months, scrollPosition);\n\n return months\n .map<[number, MonthViewModel]>((x, i) => [positions[i], x])\n .filter(([top, month]) => CalendarUtils.isMonthVisible(top, month, this.theme));\n }\n\n private handleMonthYearChange = (month: number, year: number) => {\n this.scrollToMonth(month, year);\n\n this.props.onMonthSelect?.({ month: CalendarUtils.getMonthInHumanFormat(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 thresholdHeight = themeConfig(this.theme).MONTH_TITLE_OFFSET_HEIGHT + themeConfig(this.theme).DAY_HEIGHT;\n\n if (scrollTarget < thresholdHeight) {\n let targetPosition = 0;\n if (scrollDirection < 0) {\n targetPosition = thresholdHeight;\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 private handleMouseHits: React.MouseEventHandler = (e) => {\n if (CalendarUtils.hasDayElement(e)) {\n const hoveredDate = this.getDateInNativeFormat(e.target.dataset.date);\n if (e.type === 'mouseover' && hoveredDate) {\n this.setState({ hoveredDate });\n }\n if (e.type === 'mouseout') {\n this.setState({ hoveredDate: null });\n }\n }\n };\n\n private handleClick: React.MouseEventHandler = (e) => {\n if (CalendarUtils.hasDayElement(e)) {\n this.props.onValueChange?.(e.target.dataset.date);\n }\n };\n}\n"]}
@@ -82,10 +82,74 @@ const isHoliday = (day, isWeekend) => {
82
82
  <Calendar isHoliday={isHoliday} value={date} onValueChange={setDate} />;
83
83
  ```
84
84
 
85
+ ### Период дат
86
+
87
+ В календаре можно задать период пропами `periodStartDate` и `periodEndDate`.
88
+ Если задан только один из пропов, то при наведении мышью будет подсвечиваться период между заданным пропом и датой под указателем мыши.
89
+ ```jsx harmony
90
+ import { Button, DateInput, Gapped, Radio, RadioGroup, Group } from '@skbkontur/react-ui';
91
+
92
+ const [periodStartDate, setPeriodStartDate] = React.useState('10.08.2022');
93
+ const [periodEndDate, setPeriodEndDate] = React.useState('20.08.2022');
94
+ const [period, setPeriod] = React.useState('start');
95
+
96
+ const onValueChange = (date) => {
97
+ if (period === 'start') {
98
+ setPeriodStartDate(date);
99
+ }
100
+ if (period === 'end') {
101
+ setPeriodEndDate(date);
102
+ }
103
+ }
104
+ <Gapped verticalAlign="top" wrap>
105
+ <Calendar
106
+ value={periodStartDate || periodEndDate}
107
+ periodStartDate={periodStartDate}
108
+ periodEndDate={periodEndDate}
109
+ onValueChange={onValueChange}
110
+ minDate="05.08.2022"
111
+ />
112
+ <RadioGroup value={period} onValueChange={setPeriod}>
113
+ <Gapped vertical gap={40}>
114
+ <Gapped gap={0} vertical>
115
+ <span>Как сохранять дату из <tt>onValueChange</tt></span>
116
+ <Radio value="start">Как начало периода</Radio>
117
+ <Radio value="end">Как окончание периода</Radio>
118
+ </Gapped>
119
+ <Gapped vertical>
120
+ <span>Начало периода</span>
121
+ <Gapped>
122
+ <Group>
123
+ <DateInput
124
+ onValueChange={setPeriodStartDate}
125
+ value={periodStartDate}
126
+ />
127
+ <Button onClick={() => setPeriodStartDate(null)}>x</Button>
128
+ </Group>
129
+ </Gapped>
130
+ </Gapped>
131
+ <Gapped vertical>
132
+ <span>Окончание периода</span>
133
+ <Gapped>
134
+ <Group>
135
+ <DateInput
136
+ onValueChange={setPeriodEndDate}
137
+ value={periodEndDate}
138
+ />
139
+ <Button icon={<span>x</span>} onClick={() => setPeriodEndDate(null)} />
140
+ </Group>
141
+ </Gapped>
142
+ </Gapped>
143
+ </Gapped>
144
+ </RadioGroup>
145
+ </Gapped>
146
+ ```
85
147
 
86
148
  Календарю можно задать кастомную высоту с помощью переменной темы `calendarWrapperHeight`
149
+
87
150
  - Базовая высота календаря - `330px`
88
151
  - Максимальная высота календаря - `450px`
152
+
89
153
  ```jsx harmony
90
154
  import { ThemeContext } from '@skbkontur/react-ui/lib/theming/ThemeContext';
91
155
  import { ThemeFactory } from '@skbkontur/react-ui/lib/theming/ThemeFactory';
@@ -103,6 +167,54 @@ const theme = React.useContext(ThemeContext);
103
167
  </ThemeContext.Provider>
104
168
  ```
105
169
 
170
+ ### Кастомный рендер дня
171
+
172
+ ```jsx harmony
173
+ import { Tooltip, Hint } from '@skbkontur/react-ui';
174
+
175
+ const initialValue = "02.09.2023";
176
+ const [day, month, year] = initialValue.split('.').map(Number);
177
+
178
+ const [value, setValue] = React.useState(initialValue);
179
+
180
+ const renderDay = (date, defaultProps, RenderDefault) => {
181
+ const [dd, mm, yyyy] = date.split('.').map(Number);
182
+
183
+ if (mm === month && dd > 7 && dd < 11) {
184
+ return (
185
+ <Tooltip render={() => "Кастомный период"}>
186
+ <RenderDefault
187
+ {...defaultProps}
188
+ isDayInSelectedPeriod={true}
189
+ isPeriodStart={dd === 8}
190
+ isPeriodEnd={dd === 10}
191
+ />
192
+ </Tooltip>
193
+ );
194
+ }
195
+
196
+ if (mm === month && dd === 20) {
197
+ return (
198
+ <Hint text={date} pos="right middle">
199
+ <RenderDefault {...defaultProps}>
200
+ <b style={{color: 'orange'}}>#</b>
201
+ </RenderDefault>
202
+ </Hint>
203
+ );
204
+ }
205
+
206
+ return <RenderDefault {...defaultProps} />
207
+ };
208
+
209
+ <Calendar
210
+ value={value}
211
+ onValueChange={setValue}
212
+ renderDay={renderDay}
213
+ onMonthSelect={(...args) => console.log('onMonthSelect', ...args)}
214
+ onStuckMonth={(...args) => console.log('onStuckMonth', ...args)}
215
+ />;
216
+ ```
217
+
106
218
  #### Локали по умолчанию
107
219
 
108
220
  ```typescript static
@@ -3,7 +3,7 @@
3
3
 
4
4
  var styles = (0, _Emotion.memoizeStyle)({
5
5
  root: function root(t) {
6
- var width = parseInt(t.calendarCellSize) * 7;
6
+ var width = parseInt(t.calendarCellWidth) * 7;
7
7
  return (0, _Emotion.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["\n background: ", ";\n box-sizing: content-box;\n border-radius: ", ";\n color: ", ";\n display: block;\n padding: 0 ", ";\n width: ", "px;\n touch-action: none;\n "])),
8
8
  t.calendarBg,
9
9
 
@@ -1 +1 @@
1
- {"version":3,"sources":["Calendar.styles.ts"],"names":["styles","root","t","width","parseInt","calendarCellSize","css","calendarBg","pickerBorderRadius","textColorDefault","calendarPaddingX","wrapper","separator","calendarBottomSeparatorBorder","calendarMonthTitleMarginX"],"mappings":"4QAAA,oD;;;AAGO,IAAMA,MAAM,GAAG,2BAAa;AACjCC,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,QAAMC,KAAK,GAAGC,QAAQ,CAACF,CAAC,CAACG,gBAAH,CAAR,GAA+B,CAA7C;AACA,eAAOC,YAAP;AACgBJ,IAAAA,CAAC,CAACK,UADlB;;AAGmBL,IAAAA,CAAC,CAACM,kBAHrB;AAIWN,IAAAA,CAAC,CAACO,gBAJb;;AAMeP,IAAAA,CAAC,CAACQ,gBANjB;AAOWP,IAAAA,KAPX;;;AAUD,GAbgC;;AAejCQ,EAAAA,OAfiC,qBAevB;AACR,eAAOL,YAAP;;;;;AAKD,GArBgC;;AAuBjCM,EAAAA,SAvBiC,qBAuBvBV,CAvBuB,EAuBb;AAClB,eAAOI,YAAP;AACmBJ,IAAAA,CAAC,CAACW,6BADrB;AAEcX,IAAAA,CAAC,CAACY,yBAFhB;;AAID,GA5BgC,EAAb,CAAf,C","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n const width = parseInt(t.calendarCellSize) * 7;\n return css`\n background: ${t.calendarBg};\n box-sizing: content-box;\n border-radius: ${t.pickerBorderRadius};\n color: ${t.textColorDefault};\n display: block;\n padding: 0 ${t.calendarPaddingX};\n width: ${width}px;\n touch-action: none;\n `;\n },\n\n wrapper() {\n return css`\n font-size: 14px;\n position: relative;\n overflow: hidden;\n `;\n },\n\n separator(t: Theme) {\n return css`\n border-bottom: ${t.calendarBottomSeparatorBorder};\n margin: 0 ${t.calendarMonthTitleMarginX};\n `;\n },\n});\n"]}
1
+ {"version":3,"sources":["Calendar.styles.ts"],"names":["styles","root","t","width","parseInt","calendarCellWidth","css","calendarBg","pickerBorderRadius","textColorDefault","calendarPaddingX","wrapper","separator","calendarBottomSeparatorBorder","calendarMonthTitleMarginX"],"mappings":"4QAAA,oD;;;AAGO,IAAMA,MAAM,GAAG,2BAAa;AACjCC,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,QAAMC,KAAK,GAAGC,QAAQ,CAACF,CAAC,CAACG,iBAAH,CAAR,GAAgC,CAA9C;AACA,eAAOC,YAAP;AACgBJ,IAAAA,CAAC,CAACK,UADlB;;AAGmBL,IAAAA,CAAC,CAACM,kBAHrB;AAIWN,IAAAA,CAAC,CAACO,gBAJb;;AAMeP,IAAAA,CAAC,CAACQ,gBANjB;AAOWP,IAAAA,KAPX;;;AAUD,GAbgC;;AAejCQ,EAAAA,OAfiC,qBAevB;AACR,eAAOL,YAAP;;;;;AAKD,GArBgC;;AAuBjCM,EAAAA,SAvBiC,qBAuBvBV,CAvBuB,EAuBb;AAClB,eAAOI,YAAP;AACmBJ,IAAAA,CAAC,CAACW,6BADrB;AAEcX,IAAAA,CAAC,CAACY,yBAFhB;;AAID,GA5BgC,EAAb,CAAf,C","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n const width = parseInt(t.calendarCellWidth) * 7;\n return css`\n background: ${t.calendarBg};\n box-sizing: content-box;\n border-radius: ${t.pickerBorderRadius};\n color: ${t.textColorDefault};\n display: block;\n padding: 0 ${t.calendarPaddingX};\n width: ${width}px;\n touch-action: none;\n `;\n },\n\n wrapper() {\n return css`\n font-size: 14px;\n position: relative;\n overflow: hidden;\n `;\n },\n\n separator(t: Theme) {\n return css`\n border-bottom: ${t.calendarBottomSeparatorBorder};\n margin: 0 ${t.calendarMonthTitleMarginX};\n `;\n },\n});\n"]}
@@ -0,0 +1,17 @@
1
+ /// <reference types="react" />
2
+ import { CalendarDateShape } from './CalendarDateShape';
3
+ import { CalendarProps, CalendarState } from './Calendar';
4
+ export interface CalendarContextProps {
5
+ hoveredDate: CalendarState['hoveredDate'];
6
+ renderDay?: CalendarProps['renderDay'];
7
+ value?: CalendarDateShape;
8
+ periodStartDate?: CalendarDateShape;
9
+ periodEndDate?: CalendarDateShape;
10
+ minDate?: CalendarDateShape;
11
+ maxDate?: CalendarDateShape;
12
+ isHoliday?: CalendarProps['isHoliday'];
13
+ today?: CalendarDateShape;
14
+ onStuckMonth?: CalendarProps['onStuckMonth'];
15
+ }
16
+ export declare const getDefaultizedCalendarContext: ({ hoveredDate, ...props }: Partial<CalendarContextProps>) => CalendarContextProps;
17
+ export declare const CalendarContext: import("react").Context<CalendarContextProps>;
@@ -0,0 +1,27 @@
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.getDefaultizedCalendarContext = exports.CalendarContext = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));var _react = require("react");var _excluded = ["hoveredDate"];
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+ var getDefaultizedCalendarContext = function getDefaultizedCalendarContext(_ref) {var
20
+ hoveredDate = _ref.hoveredDate,
21
+ props = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);return (0, _extends2.default)({},
22
+
23
+ props, {
24
+ hoveredDate: hoveredDate || null });};exports.getDefaultizedCalendarContext = getDefaultizedCalendarContext;
25
+
26
+
27
+ var CalendarContext = /*#__PURE__*/(0, _react.createContext)(getDefaultizedCalendarContext({}));exports.CalendarContext = CalendarContext;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["CalendarContext.tsx"],"names":["getDefaultizedCalendarContext","hoveredDate","props","CalendarContext"],"mappings":"mZAAA,8B;;;;;;;;;;;;;;;;;;AAkBO,IAAMA,6BAA6B,GAAG,SAAhCA,6BAAgC;AAC3CC,EAAAA,WAD2C,QAC3CA,WAD2C;AAExCC,EAAAA,KAFwC;;AAIxCA,EAAAA,KAJwC;AAK3CD,IAAAA,WAAW,EAAEA,WAAW,IAAI,IALe,KAAtC,C;;;AAQA,IAAME,eAAe,gBAAG,0BAAoCH,6BAA6B,CAAC,EAAD,CAAjE,CAAxB,C","sourcesContent":["import { createContext } from 'react';\n\nimport { CalendarDateShape } from './CalendarDateShape';\nimport { CalendarProps, CalendarState } from './Calendar';\n\nexport interface CalendarContextProps {\n hoveredDate: CalendarState['hoveredDate'];\n renderDay?: CalendarProps['renderDay'];\n value?: CalendarDateShape;\n periodStartDate?: CalendarDateShape;\n periodEndDate?: CalendarDateShape;\n minDate?: CalendarDateShape;\n maxDate?: CalendarDateShape;\n isHoliday?: CalendarProps['isHoliday'];\n today?: CalendarDateShape;\n onStuckMonth?: CalendarProps['onStuckMonth'];\n}\n\nexport const getDefaultizedCalendarContext = ({\n hoveredDate,\n ...props\n}: Partial<CalendarContextProps>): CalendarContextProps => ({\n ...props,\n hoveredDate: hoveredDate || null,\n});\n\nexport const CalendarContext = createContext<CalendarContextProps>(getDefaultizedCalendarContext({}));\n"]}
@@ -4,11 +4,11 @@ export interface CalendarDateShape {
4
4
  month: number;
5
5
  date: number;
6
6
  }
7
- export declare const isEqual: (a: Nullable<CalendarDateShape>, b: Nullable<CalendarDateShape>) => boolean | null | undefined;
7
+ export declare const isEqual: (a: Nullable<CalendarDateShape>, b: Nullable<CalendarDateShape>) => boolean;
8
8
  export declare const comparator: (a: CalendarDateShape, b: CalendarDateShape) => 0 | 1 | -1;
9
9
  export declare const create: (date: number, month: number, year: number) => CalendarDateShape;
10
10
  export declare const isLess: (left: CalendarDateShape, right: CalendarDateShape) => boolean;
11
- export declare const isLessOrEqual: (left: CalendarDateShape, right: CalendarDateShape) => boolean | null | undefined;
11
+ export declare const isLessOrEqual: (left: CalendarDateShape, right: CalendarDateShape) => boolean;
12
12
  export declare const isGreater: (left: CalendarDateShape, right: CalendarDateShape) => boolean;
13
13
  export declare const isGreaterOrEqual: (left: CalendarDateShape, right: CalendarDateShape) => boolean;
14
14
  export declare const isBetween: (date: CalendarDateShape, left?: Nullable<CalendarDateShape>, right?: Nullable<CalendarDateShape>) => boolean;
@@ -7,7 +7,7 @@
7
7
 
8
8
 
9
9
  var isEqual = function isEqual(a, b) {return (
10
- !a && !b || a && b && a.year === b.year && a.month === b.month && a.date === b.date);};exports.isEqual = isEqual;
10
+ Boolean(!a && !b || a && b && a.year === b.year && a.month === b.month && a.date === b.date));};exports.isEqual = isEqual;
11
11
 
12
12
  var comparator = function comparator(a, b) {
13
13
  if (a.year < b.year) {
@@ -1 +1 @@
1
- {"version":3,"sources":["CalendarDateShape.ts"],"names":["isEqual","a","b","year","month","date","comparator","create","isLess","left","right","isLessOrEqual","isGreater","isGreaterOrEqual","isBetween"],"mappings":";;;;;;;;AAQO,IAAMA,OAAO,GAAG,SAAVA,OAAU,CAACC,CAAD,EAAiCC,CAAjC;AACpB,KAACD,CAAD,IAAM,CAACC,CAAR,IAAeD,CAAC,IAAIC,CAAL,IAAUD,CAAC,CAACE,IAAF,KAAWD,CAAC,CAACC,IAAvB,IAA+BF,CAAC,CAACG,KAAF,KAAYF,CAAC,CAACE,KAA7C,IAAsDH,CAAC,CAACI,IAAF,KAAWH,CAAC,CAACG,IAD7D,GAAhB,C;;AAGA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACL,CAAD,EAAuBC,CAAvB,EAAgD;AACxE,MAAID,CAAC,CAACE,IAAF,GAASD,CAAC,CAACC,IAAf,EAAqB;AACnB,WAAO,CAAC,CAAR;AACD,GAFD,MAEO,IAAIF,CAAC,CAACE,IAAF,GAASD,CAAC,CAACC,IAAf,EAAqB;AAC1B,WAAO,CAAP;AACD,GAFM,MAEA,IAAIF,CAAC,CAACG,KAAF,GAAUF,CAAC,CAACE,KAAhB,EAAuB;AAC5B,WAAO,CAAC,CAAR;AACD,GAFM,MAEA,IAAIH,CAAC,CAACG,KAAF,GAAUF,CAAC,CAACE,KAAhB,EAAuB;AAC5B,WAAO,CAAP;AACD,GAFM,MAEA,IAAIH,CAAC,CAACI,IAAF,GAASH,CAAC,CAACG,IAAf,EAAqB;AAC1B,WAAO,CAAC,CAAR;AACD,GAFM,MAEA,IAAIJ,CAAC,CAACI,IAAF,GAASH,CAAC,CAACG,IAAf,EAAqB;AAC1B,WAAO,CAAP;AACD;AACD,SAAO,CAAP;AACD,CAfM,C;;AAiBA,IAAME,MAAM,GAAG,SAATA,MAAS,CAACF,IAAD,EAAeD,KAAf,EAA8BD,IAA9B,UAAmE,EAAEE,IAAI,EAAJA,IAAF,EAAQD,KAAK,EAALA,KAAR,EAAeD,IAAI,EAAJA,IAAf,EAAnE,EAAf,C;;AAEA,IAAMK,MAAM,GAAG,SAATA,MAAS,CAACC,IAAD,EAA0BC,KAA1B,UAAuDJ,UAAU,CAACG,IAAD,EAAOC,KAAP,CAAV,KAA4B,CAAC,CAApF,EAAf,C;;AAEA,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,CAACF,IAAD,EAA0BC,KAA1B;AAC3BF,IAAAA,MAAM,CAACC,IAAD,EAAOC,KAAP,CAAN,IAAuBV,OAAO,CAACS,IAAD,EAAOC,KAAP,CADH,GAAtB,C;;AAGA,IAAME,SAAS,GAAG,SAAZA,SAAY,CAACH,IAAD,EAA0BC,KAA1B,UAAuD,CAACC,aAAa,CAACF,IAAD,EAAOC,KAAP,CAArE,EAAlB,C;;AAEA,IAAMG,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACJ,IAAD,EAA0BC,KAA1B,UAAuD,CAACF,MAAM,CAACC,IAAD,EAAOC,KAAP,CAA9D,EAAzB,C;;AAEA,IAAMI,SAAS,GAAG,SAAZA,SAAY;AACvBT,IADuB;AAEvBI,IAFuB;AAGvBC,KAHuB;AAIpB;AACH,MAAID,IAAI,IAAID,MAAM,CAACH,IAAD,EAAOI,IAAP,CAAlB,EAAgC;AAC9B,WAAO,KAAP;AACD;AACD,MAAIC,KAAK,IAAIE,SAAS,CAACP,IAAD,EAAOK,KAAP,CAAtB,EAAqC;AACnC,WAAO,KAAP;AACD;AACD,SAAO,IAAP;AACD,CAZM,C","sourcesContent":["import { Nullable } from '../../typings/utility-types';\n\nexport interface CalendarDateShape {\n year: number;\n month: number;\n date: number;\n}\n\nexport const isEqual = (a: Nullable<CalendarDateShape>, b: Nullable<CalendarDateShape>) =>\n (!a && !b) || (a && b && a.year === b.year && a.month === b.month && a.date === b.date);\n\nexport const comparator = (a: CalendarDateShape, b: CalendarDateShape) => {\n if (a.year < b.year) {\n return -1;\n } else if (a.year > b.year) {\n return 1;\n } else if (a.month < b.month) {\n return -1;\n } else if (a.month > b.month) {\n return 1;\n } else if (a.date < b.date) {\n return -1;\n } else if (a.date > b.date) {\n return 1;\n }\n return 0;\n};\n\nexport const create = (date: number, month: number, year: number): CalendarDateShape => ({ date, month, year });\n\nexport const isLess = (left: CalendarDateShape, right: CalendarDateShape) => comparator(left, right) === -1;\n\nexport const isLessOrEqual = (left: CalendarDateShape, right: CalendarDateShape) =>\n isLess(left, right) || isEqual(left, right);\n\nexport const isGreater = (left: CalendarDateShape, right: CalendarDateShape) => !isLessOrEqual(left, right);\n\nexport const isGreaterOrEqual = (left: CalendarDateShape, right: CalendarDateShape) => !isLess(left, right);\n\nexport const isBetween = (\n date: CalendarDateShape,\n left?: Nullable<CalendarDateShape>,\n right?: Nullable<CalendarDateShape>,\n) => {\n if (left && isLess(date, left)) {\n return false;\n }\n if (right && isGreater(date, right)) {\n return false;\n }\n return true;\n};\n"]}
1
+ {"version":3,"sources":["CalendarDateShape.ts"],"names":["isEqual","a","b","Boolean","year","month","date","comparator","create","isLess","left","right","isLessOrEqual","isGreater","isGreaterOrEqual","isBetween"],"mappings":";;;;;;;;AAQO,IAAMA,OAAO,GAAG,SAAVA,OAAU,CAACC,CAAD,EAAiCC,CAAjC;AACrBC,IAAAA,OAAO,CAAE,CAACF,CAAD,IAAM,CAACC,CAAR,IAAeD,CAAC,IAAIC,CAAL,IAAUD,CAAC,CAACG,IAAF,KAAWF,CAAC,CAACE,IAAvB,IAA+BH,CAAC,CAACI,KAAF,KAAYH,CAAC,CAACG,KAA7C,IAAsDJ,CAAC,CAACK,IAAF,KAAWJ,CAAC,CAACI,IAAnF,CADc,GAAhB,C;;AAGA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACN,CAAD,EAAuBC,CAAvB,EAAgD;AACxE,MAAID,CAAC,CAACG,IAAF,GAASF,CAAC,CAACE,IAAf,EAAqB;AACnB,WAAO,CAAC,CAAR;AACD,GAFD,MAEO,IAAIH,CAAC,CAACG,IAAF,GAASF,CAAC,CAACE,IAAf,EAAqB;AAC1B,WAAO,CAAP;AACD,GAFM,MAEA,IAAIH,CAAC,CAACI,KAAF,GAAUH,CAAC,CAACG,KAAhB,EAAuB;AAC5B,WAAO,CAAC,CAAR;AACD,GAFM,MAEA,IAAIJ,CAAC,CAACI,KAAF,GAAUH,CAAC,CAACG,KAAhB,EAAuB;AAC5B,WAAO,CAAP;AACD,GAFM,MAEA,IAAIJ,CAAC,CAACK,IAAF,GAASJ,CAAC,CAACI,IAAf,EAAqB;AAC1B,WAAO,CAAC,CAAR;AACD,GAFM,MAEA,IAAIL,CAAC,CAACK,IAAF,GAASJ,CAAC,CAACI,IAAf,EAAqB;AAC1B,WAAO,CAAP;AACD;AACD,SAAO,CAAP;AACD,CAfM,C;;AAiBA,IAAME,MAAM,GAAG,SAATA,MAAS,CAACF,IAAD,EAAeD,KAAf,EAA8BD,IAA9B,UAAmE,EAAEE,IAAI,EAAJA,IAAF,EAAQD,KAAK,EAALA,KAAR,EAAeD,IAAI,EAAJA,IAAf,EAAnE,EAAf,C;;AAEA,IAAMK,MAAM,GAAG,SAATA,MAAS,CAACC,IAAD,EAA0BC,KAA1B,UAAuDJ,UAAU,CAACG,IAAD,EAAOC,KAAP,CAAV,KAA4B,CAAC,CAApF,EAAf,C;;AAEA,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,CAACF,IAAD,EAA0BC,KAA1B;AAC3BF,IAAAA,MAAM,CAACC,IAAD,EAAOC,KAAP,CAAN,IAAuBX,OAAO,CAACU,IAAD,EAAOC,KAAP,CADH,GAAtB,C;;AAGA,IAAME,SAAS,GAAG,SAAZA,SAAY,CAACH,IAAD,EAA0BC,KAA1B,UAAuD,CAACC,aAAa,CAACF,IAAD,EAAOC,KAAP,CAArE,EAAlB,C;;AAEA,IAAMG,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACJ,IAAD,EAA0BC,KAA1B,UAAuD,CAACF,MAAM,CAACC,IAAD,EAAOC,KAAP,CAA9D,EAAzB,C;;AAEA,IAAMI,SAAS,GAAG,SAAZA,SAAY;AACvBT,IADuB;AAEvBI,IAFuB;AAGvBC,KAHuB;AAIpB;AACH,MAAID,IAAI,IAAID,MAAM,CAACH,IAAD,EAAOI,IAAP,CAAlB,EAAgC;AAC9B,WAAO,KAAP;AACD;AACD,MAAIC,KAAK,IAAIE,SAAS,CAACP,IAAD,EAAOK,KAAP,CAAtB,EAAqC;AACnC,WAAO,KAAP;AACD;AACD,SAAO,IAAP;AACD,CAZM,C","sourcesContent":["import { Nullable } from '../../typings/utility-types';\n\nexport interface CalendarDateShape {\n year: number;\n month: number;\n date: number;\n}\n\nexport const isEqual = (a: Nullable<CalendarDateShape>, b: Nullable<CalendarDateShape>) =>\n Boolean((!a && !b) || (a && b && a.year === b.year && a.month === b.month && a.date === b.date));\n\nexport const comparator = (a: CalendarDateShape, b: CalendarDateShape) => {\n if (a.year < b.year) {\n return -1;\n } else if (a.year > b.year) {\n return 1;\n } else if (a.month < b.month) {\n return -1;\n } else if (a.month > b.month) {\n return 1;\n } else if (a.date < b.date) {\n return -1;\n } else if (a.date > b.date) {\n return 1;\n }\n return 0;\n};\n\nexport const create = (date: number, month: number, year: number): CalendarDateShape => ({ date, month, year });\n\nexport const isLess = (left: CalendarDateShape, right: CalendarDateShape) => comparator(left, right) === -1;\n\nexport const isLessOrEqual = (left: CalendarDateShape, right: CalendarDateShape) =>\n isLess(left, right) || isEqual(left, right);\n\nexport const isGreater = (left: CalendarDateShape, right: CalendarDateShape) => !isLessOrEqual(left, right);\n\nexport const isGreaterOrEqual = (left: CalendarDateShape, right: CalendarDateShape) => !isLess(left, right);\n\nexport const isBetween = (\n date: CalendarDateShape,\n left?: Nullable<CalendarDateShape>,\n right?: Nullable<CalendarDateShape>,\n) => {\n if (left && isLess(date, left)) {\n return false;\n }\n if (right && isGreater(date, right)) {\n return false;\n }\n return true;\n};\n"]}
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import { Nullable } from '../../typings/utility-types';
2
3
  import { Theme } from '../../lib/theming/Theme';
3
4
  import { MonthViewModel } from './MonthViewModel';
@@ -23,6 +24,7 @@ export declare const isMonthVisible: (top: number, month: MonthViewModel, theme:
23
24
  export declare const getMonthsHeight: (months: MonthViewModel[], theme: Theme) => number;
24
25
  export declare const getMonths: (month: number, year: number) => MonthViewModel[];
25
26
  export declare const getMonthInNativeFormat: (initialMonth: number | undefined) => number | undefined;
27
+ export declare const getMonthInHumanFormat: (month: number) => number;
26
28
  export declare const getInitialDate: ({ today, date, minDate, maxDate, }: {
27
29
  today: CalendarDateShape;
28
30
  date?: Nullable<CalendarDateShape>;
@@ -34,3 +36,10 @@ export declare const getTodayDate: () => {
34
36
  month: number;
35
37
  year: number;
36
38
  };
39
+ export declare const hasDayElement: (e: React.MouseEvent<Element>) => e is import("react").MouseEvent<Element, MouseEvent> & {
40
+ target: HTMLButtonElement & {
41
+ dataset: {
42
+ date: string;
43
+ };
44
+ };
45
+ };
@@ -1,9 +1,9 @@
1
- "use strict";exports.__esModule = true;exports.isMonthVisible = exports.getTodayDate = exports.getMonthsHeight = exports.getMonths = exports.getMonthInNativeFormat = exports.getInitialDate = exports.calculateScrollPosition = exports.applyDelta = void 0;
1
+ "use strict";exports.__esModule = true;exports.isMonthVisible = exports.hasDayElement = exports.getTodayDate = exports.getMonthsHeight = exports.getMonths = exports.getMonthInNativeFormat = exports.getMonthInHumanFormat = exports.getInitialDate = exports.calculateScrollPosition = exports.applyDelta = void 0;
2
2
 
3
3
 
4
4
  var _config = require("./config");
5
5
  var _MonthViewModel = require("./MonthViewModel");
6
-
6
+ var _Calendar = require("./Calendar");
7
7
  var _CalendarDateShape = require("./CalendarDateShape");
8
8
 
9
9
  var calculateScrollPosition = function calculateScrollPosition(
@@ -81,6 +81,8 @@ var getMonthInNativeFormat = function getMonthInNativeFormat(initialMonth) {
81
81
  }
82
82
  };exports.getMonthInNativeFormat = getMonthInNativeFormat;
83
83
 
84
+ var getMonthInHumanFormat = function getMonthInHumanFormat(month) {return month + 1;};exports.getMonthInHumanFormat = getMonthInHumanFormat;
85
+
84
86
  var getInitialDate = function getInitialDate(_ref3)
85
87
 
86
88
 
@@ -114,4 +116,12 @@ var getTodayDate = function getTodayDate() {
114
116
  month: date.getMonth(),
115
117
  year: date.getFullYear() };
116
118
 
117
- };exports.getTodayDate = getTodayDate;
119
+ };exports.getTodayDate = getTodayDate;
120
+
121
+ var hasDayElement = function hasDayElement(
122
+ e) {return (
123
+
124
+ e.target instanceof HTMLButtonElement &&
125
+ !e.target.disabled &&
126
+ e.target.getAttribute('data-tid') === _Calendar.CalendarDataTids.dayCell &&
127
+ e.target.hasAttribute('data-date'));};exports.hasDayElement = hasDayElement;
@@ -1 +1 @@
1
- {"version":3,"sources":["CalendarUtils.ts"],"names":["calculateScrollPosition","months","scrollPosition","deltaY","theme","scrollDirection","nextScrollPosition","nextMonths","firstMonth","getHeight","getMonths","month","year","lastMonth","length","applyDelta","minDate","maxDate","isMinDateExceeded","isMaxDateExceeded","isMonthVisible","top","WRAPPER_HEIGHT","getMonthsHeight","reduce","a","b","map","x","MonthViewModel","create","getMonthInNativeFormat","initialMonth","getInitialDate","today","date","getTodayDate","Date","getDate","getMonth","getFullYear"],"mappings":"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","sourcesContent":["import { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\n\nimport { themeConfig } from './config';\nimport { MonthViewModel } from './MonthViewModel';\nimport { CalendarState } from './Calendar';\nimport { CalendarDateShape, isGreater, isLess } from './CalendarDateShape';\n\nexport const calculateScrollPosition = (\n months: MonthViewModel[],\n scrollPosition: number,\n deltaY: number,\n theme: Theme,\n) => {\n const scrollDirection = deltaY > 0 ? 1 : -1;\n\n let nextScrollPosition = scrollPosition - deltaY;\n let nextMonths = months;\n\n const firstMonth = months[0];\n if (scrollDirection < 0 && nextScrollPosition >= firstMonth.getHeight(theme)) {\n do {\n nextScrollPosition -= nextMonths[0].getHeight(theme);\n nextMonths = getMonths(firstMonth.month, firstMonth.year);\n } while (nextScrollPosition >= nextMonths[0].getHeight(theme));\n }\n\n const lastMonth = months[months.length - 1];\n if (scrollDirection > 0 && nextScrollPosition < 0) {\n do {\n nextScrollPosition += nextMonths[1].getHeight(theme);\n nextMonths = getMonths(lastMonth.month, lastMonth.year);\n } while (nextScrollPosition < 0);\n }\n\n return {\n scrollPosition: nextScrollPosition,\n months: nextMonths,\n scrollDirection,\n };\n};\n\nexport const applyDelta = (deltaY: number, theme: Theme) => {\n return (\n { scrollPosition, months }: Readonly<CalendarState>,\n { minDate, maxDate }: { minDate: CalendarDateShape; maxDate: CalendarDateShape },\n ) => {\n const scrollDirection = deltaY > 0 ? 1 : -1;\n const isMinDateExceeded =\n minDate && scrollDirection < 0 && minDate.year * 12 + minDate.month > months[0].year * 12 + months[0].month;\n\n const isMaxDateExceeded =\n maxDate && scrollDirection > 0 && maxDate.year * 12 + maxDate.month < months[1].year * 12 + months[1].month;\n\n if (isMinDateExceeded) {\n return { scrollPosition: 0, scrollDirection };\n }\n\n if (isMaxDateExceeded) {\n return { scrollPosition: months[2].getHeight(theme), scrollDirection };\n }\n\n return calculateScrollPosition(months, scrollPosition, deltaY, theme);\n };\n};\n\nexport const isMonthVisible = (top: number, month: MonthViewModel, theme: Theme) => {\n return top < themeConfig(theme).WRAPPER_HEIGHT && top > -month.getHeight(theme);\n};\n\nexport const getMonthsHeight = (months: MonthViewModel[], theme: Theme) =>\n months.reduce((a, b) => a + b.getHeight(theme), 0);\n\nexport const getMonths = (month: number, year: number): MonthViewModel[] => {\n return [-1, 0, 1].map((x) => MonthViewModel.create(month + x, year));\n};\n\nexport const getMonthInNativeFormat = (initialMonth: number | undefined) => {\n if (initialMonth) {\n return initialMonth - 1;\n }\n};\n\nexport const getInitialDate = ({\n today,\n date,\n minDate,\n maxDate,\n}: {\n today: CalendarDateShape;\n date?: Nullable<CalendarDateShape>;\n minDate?: Nullable<CalendarDateShape>;\n maxDate?: Nullable<CalendarDateShape>;\n}) => {\n if (date) {\n return date;\n }\n\n if (minDate && isLess(today, minDate)) {\n return minDate;\n }\n\n if (maxDate && isGreater(today, maxDate)) {\n return maxDate;\n }\n\n return today;\n};\n\nexport const getTodayDate = () => {\n const date = new Date();\n return {\n date: date.getDate(),\n month: date.getMonth(),\n year: date.getFullYear(),\n };\n};\n"]}
1
+ {"version":3,"sources":["CalendarUtils.ts"],"names":["calculateScrollPosition","months","scrollPosition","deltaY","theme","scrollDirection","nextScrollPosition","nextMonths","firstMonth","getHeight","getMonths","month","year","lastMonth","length","applyDelta","minDate","maxDate","isMinDateExceeded","isMaxDateExceeded","isMonthVisible","top","WRAPPER_HEIGHT","getMonthsHeight","reduce","a","b","map","x","MonthViewModel","create","getMonthInNativeFormat","initialMonth","getMonthInHumanFormat","getInitialDate","today","date","getTodayDate","Date","getDate","getMonth","getFullYear","hasDayElement","e","target","HTMLButtonElement","disabled","getAttribute","CalendarDataTids","dayCell","hasAttribute"],"mappings":"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","sourcesContent":["import { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\n\nimport { themeConfig } from './config';\nimport { MonthViewModel } from './MonthViewModel';\nimport { CalendarDataTids, CalendarState } from './Calendar';\nimport { CalendarDateShape, isGreater, isLess } from './CalendarDateShape';\n\nexport const calculateScrollPosition = (\n months: MonthViewModel[],\n scrollPosition: number,\n deltaY: number,\n theme: Theme,\n) => {\n const scrollDirection = deltaY > 0 ? 1 : -1;\n\n let nextScrollPosition = scrollPosition - deltaY;\n let nextMonths = months;\n\n const firstMonth = months[0];\n if (scrollDirection < 0 && nextScrollPosition >= firstMonth.getHeight(theme)) {\n do {\n nextScrollPosition -= nextMonths[0].getHeight(theme);\n nextMonths = getMonths(firstMonth.month, firstMonth.year);\n } while (nextScrollPosition >= nextMonths[0].getHeight(theme));\n }\n\n const lastMonth = months[months.length - 1];\n if (scrollDirection > 0 && nextScrollPosition < 0) {\n do {\n nextScrollPosition += nextMonths[1].getHeight(theme);\n nextMonths = getMonths(lastMonth.month, lastMonth.year);\n } while (nextScrollPosition < 0);\n }\n\n return {\n scrollPosition: nextScrollPosition,\n months: nextMonths,\n scrollDirection,\n };\n};\n\nexport const applyDelta = (deltaY: number, theme: Theme) => {\n return (\n { scrollPosition, months }: Readonly<CalendarState>,\n { minDate, maxDate }: { minDate: CalendarDateShape; maxDate: CalendarDateShape },\n ) => {\n const scrollDirection = deltaY > 0 ? 1 : -1;\n const isMinDateExceeded =\n minDate && scrollDirection < 0 && minDate.year * 12 + minDate.month > months[0].year * 12 + months[0].month;\n\n const isMaxDateExceeded =\n maxDate && scrollDirection > 0 && maxDate.year * 12 + maxDate.month < months[1].year * 12 + months[1].month;\n\n if (isMinDateExceeded) {\n return { scrollPosition: 0, scrollDirection };\n }\n\n if (isMaxDateExceeded) {\n return { scrollPosition: months[2].getHeight(theme), scrollDirection };\n }\n\n return calculateScrollPosition(months, scrollPosition, deltaY, theme);\n };\n};\n\nexport const isMonthVisible = (top: number, month: MonthViewModel, theme: Theme) => {\n return top < themeConfig(theme).WRAPPER_HEIGHT && top > -month.getHeight(theme);\n};\n\nexport const getMonthsHeight = (months: MonthViewModel[], theme: Theme) =>\n months.reduce((a, b) => a + b.getHeight(theme), 0);\n\nexport const getMonths = (month: number, year: number): MonthViewModel[] => {\n return [-1, 0, 1].map((x) => MonthViewModel.create(month + x, year));\n};\n\nexport const getMonthInNativeFormat = (initialMonth: number | undefined) => {\n if (initialMonth) {\n return initialMonth - 1;\n }\n};\n\nexport const getMonthInHumanFormat = (month: number) => month + 1;\n\nexport const getInitialDate = ({\n today,\n date,\n minDate,\n maxDate,\n}: {\n today: CalendarDateShape;\n date?: Nullable<CalendarDateShape>;\n minDate?: Nullable<CalendarDateShape>;\n maxDate?: Nullable<CalendarDateShape>;\n}) => {\n if (date) {\n return date;\n }\n\n if (minDate && isLess(today, minDate)) {\n return minDate;\n }\n\n if (maxDate && isGreater(today, maxDate)) {\n return maxDate;\n }\n\n return today;\n};\n\nexport const getTodayDate = () => {\n const date = new Date();\n return {\n date: date.getDate(),\n month: date.getMonth(),\n year: date.getFullYear(),\n };\n};\n\nexport const hasDayElement = (\n e: React.MouseEvent<Element>,\n): e is typeof e & { target: HTMLButtonElement & { dataset: { date: string } } } =>\n e.target instanceof HTMLButtonElement &&\n !e.target.disabled &&\n e.target.getAttribute('data-tid') === CalendarDataTids.dayCell &&\n e.target.hasAttribute('data-date');\n"]}
@@ -1,13 +1,28 @@
1
- import { Nullable } from '../../typings/utility-types';
2
- import * as CDS from './CalendarDateShape';
3
- interface DayCellViewProps {
4
- date: CDS.CalendarDateShape;
5
- today?: CDS.CalendarDateShape;
6
- value?: Nullable<CDS.CalendarDateShape>;
7
- minDate?: CDS.CalendarDateShape;
8
- maxDate?: CDS.CalendarDateShape;
9
- onDateClick?: (day: CDS.CalendarDateShape) => void;
10
- isWeekend?: boolean;
1
+ import { PropsWithChildren } from 'react';
2
+ import { DayCellViewModel } from './DayCellViewModel';
3
+ export interface DayCellViewProps {
4
+ date: DayCellViewModel;
11
5
  }
12
- export declare function DayCellView(props: DayCellViewProps): JSX.Element;
13
- export {};
6
+ export interface DayCellViewFlags {
7
+ isSelected: boolean;
8
+ isHovered: boolean;
9
+ isDisabled: boolean;
10
+ isToday: boolean;
11
+ isWeekend: boolean;
12
+ isDayInSelectedPeriod: boolean;
13
+ isPeriodStart: boolean;
14
+ isPeriodEnd: boolean;
15
+ }
16
+ export declare const DayCellView: (props: DayCellViewProps) => JSX.Element;
17
+ export declare type DayProps = PropsWithChildren<{
18
+ ariaLabel: string;
19
+ stringDate: string;
20
+ isSelected: boolean;
21
+ isHovered: boolean;
22
+ isDisabled: boolean;
23
+ isToday: boolean;
24
+ isWeekend: boolean;
25
+ isDayInSelectedPeriod: boolean;
26
+ isPeriodStart: boolean;
27
+ isPeriodEnd: boolean;
28
+ }>;