@skbkontur/react-ui 4.25.1-MaskedInput-fix.2 → 4.25.2

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 (149) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/LICENSE +21 -21
  3. package/cjs/components/Calendar/Calendar.d.ts +0 -12
  4. package/cjs/components/Calendar/Calendar.js +0 -12
  5. package/cjs/components/Calendar/Calendar.js.map +1 -1
  6. package/cjs/components/DatePicker/DatePicker.md +10 -17
  7. package/cjs/components/Gapped/Gapped.md +43 -43
  8. package/cjs/components/Input/Input.d.ts +2 -3
  9. package/cjs/components/Input/Input.js +4 -7
  10. package/cjs/components/Input/Input.js.map +1 -1
  11. package/cjs/components/MaskedInput/MaskedInput.d.ts +4 -23
  12. package/cjs/components/MaskedInput/MaskedInput.js +22 -158
  13. package/cjs/components/MaskedInput/MaskedInput.js.map +1 -1
  14. package/cjs/components/MaskedInput/MaskedInput.md +9 -211
  15. package/cjs/components/RadioGroup/RadioGroup.js +10 -1
  16. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  17. package/cjs/components/RadioGroup/RadioGroup.md +43 -43
  18. package/cjs/components/Select/Select.js +2 -1
  19. package/cjs/components/Select/Select.js.map +1 -1
  20. package/cjs/components/Token/Token.js +2 -1
  21. package/cjs/components/Token/Token.js.map +1 -1
  22. package/cjs/index.d.ts +0 -1
  23. package/cjs/index.js +0 -1
  24. package/cjs/index.js.map +1 -1
  25. package/cjs/internal/MaskedInputElement/MaskedInputElement.d.ts +14 -0
  26. package/cjs/internal/MaskedInputElement/MaskedInputElement.helpers.d.ts +16 -0
  27. package/cjs/internal/MaskedInputElement/MaskedInputElement.helpers.js +52 -0
  28. package/cjs/internal/MaskedInputElement/MaskedInputElement.helpers.js.map +1 -0
  29. package/cjs/internal/MaskedInputElement/MaskedInputElement.js +196 -0
  30. package/cjs/internal/MaskedInputElement/MaskedInputElement.js.map +1 -0
  31. package/cjs/internal/MaskedInputElement/MaskedInputElement.styles.d.ts +6 -0
  32. package/cjs/internal/MaskedInputElement/MaskedInputElement.styles.js +29 -0
  33. package/cjs/internal/MaskedInputElement/MaskedInputElement.styles.js.map +1 -0
  34. package/cjs/internal/MaskedInputElement/index.d.ts +1 -0
  35. package/cjs/internal/MaskedInputElement/index.js +1 -0
  36. package/cjs/internal/MaskedInputElement/index.js.map +1 -0
  37. package/cjs/internal/ThemeShowcase/ThemeShowcase.md +13 -13
  38. package/cjs/lib/events/MouseDrag.d.ts +1 -1
  39. package/cjs/lib/events/MouseDrag.js.map +1 -1
  40. package/cjs/lib/events/keyboard/identifiers.d.ts +0 -3
  41. package/cjs/lib/events/keyboard/identifiers.js +1 -5
  42. package/cjs/lib/events/keyboard/identifiers.js.map +1 -1
  43. package/cjs/lib/styles/HoldSelectionColor.js +1 -1
  44. package/cjs/lib/styles/HoldSelectionColor.js.map +1 -1
  45. package/cjs/lib/taskWithDelayAndMinimalDuration.js +1 -0
  46. package/cjs/lib/taskWithDelayAndMinimalDuration.js.map +1 -1
  47. package/cjs/lib/theming/Emotion.js +2 -3
  48. package/cjs/lib/theming/Emotion.js.map +1 -1
  49. package/components/Calendar/Calendar/Calendar.js.map +1 -1
  50. package/components/Calendar/Calendar.d.ts +0 -12
  51. package/components/DatePicker/DatePicker.md +10 -17
  52. package/components/Gapped/Gapped.md +43 -43
  53. package/components/Input/Input/Input.js +4 -8
  54. package/components/Input/Input/Input.js.map +1 -1
  55. package/components/Input/Input.d.ts +2 -3
  56. package/components/MaskedInput/MaskedInput/MaskedInput.js +26 -144
  57. package/components/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  58. package/components/MaskedInput/MaskedInput.d.ts +4 -23
  59. package/components/MaskedInput/MaskedInput.md +9 -211
  60. package/components/RadioGroup/RadioGroup/RadioGroup.js +6 -2
  61. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  62. package/components/RadioGroup/RadioGroup.md +43 -43
  63. package/components/Select/Select/Select.js +2 -1
  64. package/components/Select/Select/Select.js.map +1 -1
  65. package/components/Token/Token/Token.js +4 -1
  66. package/components/Token/Token/Token.js.map +1 -1
  67. package/index.d.ts +0 -1
  68. package/index.js +0 -1
  69. package/index.js.map +1 -1
  70. package/internal/MaskedInputElement/MaskedInputElement/MaskedInputElement.js +206 -0
  71. package/internal/MaskedInputElement/MaskedInputElement/MaskedInputElement.js.map +1 -0
  72. package/internal/MaskedInputElement/MaskedInputElement/package.json +6 -0
  73. package/internal/MaskedInputElement/MaskedInputElement.d.ts +14 -0
  74. package/internal/MaskedInputElement/MaskedInputElement.helpers/MaskedInputElement.helpers.js +43 -0
  75. package/internal/MaskedInputElement/MaskedInputElement.helpers/MaskedInputElement.helpers.js.map +1 -0
  76. package/internal/MaskedInputElement/MaskedInputElement.helpers/package.json +6 -0
  77. package/internal/MaskedInputElement/MaskedInputElement.helpers.d.ts +16 -0
  78. package/internal/MaskedInputElement/MaskedInputElement.styles/MaskedInputElement.styles.js +16 -0
  79. package/internal/MaskedInputElement/MaskedInputElement.styles/MaskedInputElement.styles.js.map +1 -0
  80. package/internal/MaskedInputElement/MaskedInputElement.styles/package.json +6 -0
  81. package/internal/MaskedInputElement/MaskedInputElement.styles.d.ts +6 -0
  82. package/internal/MaskedInputElement/index/index.js +1 -0
  83. package/internal/MaskedInputElement/index/index.js.map +1 -0
  84. package/internal/MaskedInputElement/index/package.json +6 -0
  85. package/internal/MaskedInputElement/index.d.ts +1 -0
  86. package/internal/MaskedInputElement/package.json +6 -0
  87. package/internal/ThemeShowcase/ThemeShowcase.md +13 -13
  88. package/lib/events/MouseDrag/MouseDrag.js.map +1 -1
  89. package/lib/events/MouseDrag.d.ts +1 -1
  90. package/lib/events/keyboard/identifiers/identifiers.js +0 -13
  91. package/lib/events/keyboard/identifiers/identifiers.js.map +1 -1
  92. package/lib/events/keyboard/identifiers.d.ts +0 -3
  93. package/lib/styles/HoldSelectionColor/HoldSelectionColor.js +1 -1
  94. package/lib/styles/HoldSelectionColor/HoldSelectionColor.js.map +1 -1
  95. package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js +2 -0
  96. package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js.map +1 -1
  97. package/lib/theming/Emotion/Emotion.js +2 -3
  98. package/lib/theming/Emotion/Emotion.js.map +1 -1
  99. package/package.json +5 -2
  100. package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.d.ts +0 -12
  101. package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js +0 -157
  102. package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js.map +0 -1
  103. package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles.d.ts +0 -3
  104. package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles.js +0 -13
  105. package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles.js.map +0 -1
  106. package/cjs/components/MaskedInput/ColorableInputElement/index.d.ts +0 -1
  107. package/cjs/components/MaskedInput/ColorableInputElement/index.js +0 -1
  108. package/cjs/components/MaskedInput/ColorableInputElement/index.js.map +0 -1
  109. package/cjs/components/MaskedInput/FixedIMaskInput.d.ts +0 -9
  110. package/cjs/components/MaskedInput/FixedIMaskInput.js +0 -219
  111. package/cjs/components/MaskedInput/FixedIMaskInput.js.map +0 -1
  112. package/cjs/components/MaskedInput/MaskedInput.helpers.d.ts +0 -10
  113. package/cjs/components/MaskedInput/MaskedInput.helpers.js +0 -30
  114. package/cjs/components/MaskedInput/MaskedInput.helpers.js.map +0 -1
  115. package/cjs/components/MaskedInput/MaskedInput.styles.d.ts +0 -3
  116. package/cjs/components/MaskedInput/MaskedInput.styles.js +0 -4
  117. package/cjs/components/MaskedInput/MaskedInput.styles.js.map +0 -1
  118. package/cjs/lib/styles/UiFont.d.ts +0 -4
  119. package/cjs/lib/styles/UiFont.js +0 -34
  120. package/cjs/lib/styles/UiFont.js.map +0 -1
  121. package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js +0 -149
  122. package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js.map +0 -1
  123. package/components/MaskedInput/ColorableInputElement/ColorableInputElement/package.json +0 -6
  124. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.d.ts +0 -12
  125. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles/ColorableInputElement.styles.js +0 -10
  126. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles/ColorableInputElement.styles.js.map +0 -1
  127. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles/package.json +0 -6
  128. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.styles.d.ts +0 -3
  129. package/components/MaskedInput/ColorableInputElement/index/index.js +0 -1
  130. package/components/MaskedInput/ColorableInputElement/index/index.js.map +0 -1
  131. package/components/MaskedInput/ColorableInputElement/index/package.json +0 -6
  132. package/components/MaskedInput/ColorableInputElement/index.d.ts +0 -1
  133. package/components/MaskedInput/ColorableInputElement/package.json +0 -6
  134. package/components/MaskedInput/FixedIMaskInput/FixedIMaskInput.js +0 -241
  135. package/components/MaskedInput/FixedIMaskInput/FixedIMaskInput.js.map +0 -1
  136. package/components/MaskedInput/FixedIMaskInput/package.json +0 -6
  137. package/components/MaskedInput/FixedIMaskInput.d.ts +0 -9
  138. package/components/MaskedInput/MaskedInput.helpers/MaskedInput.helpers.js +0 -27
  139. package/components/MaskedInput/MaskedInput.helpers/MaskedInput.helpers.js.map +0 -1
  140. package/components/MaskedInput/MaskedInput.helpers/package.json +0 -6
  141. package/components/MaskedInput/MaskedInput.helpers.d.ts +0 -10
  142. package/components/MaskedInput/MaskedInput.styles/MaskedInput.styles.js +0 -4
  143. package/components/MaskedInput/MaskedInput.styles/MaskedInput.styles.js.map +0 -1
  144. package/components/MaskedInput/MaskedInput.styles/package.json +0 -6
  145. package/components/MaskedInput/MaskedInput.styles.d.ts +0 -3
  146. package/lib/styles/UiFont/UiFont.js +0 -25
  147. package/lib/styles/UiFont/UiFont.js.map +0 -1
  148. package/lib/styles/UiFont/package.json +0 -6
  149. package/lib/styles/UiFont.d.ts +0 -4
package/CHANGELOG.md CHANGED
@@ -3,6 +3,19 @@
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.25.2](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.25.1...@skbkontur/react-ui@4.25.2) (2024-07-16)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **Loader:** fix Loader in 18 react ([#3467](https://github.com/skbkontur/retail-ui/issues/3467)) ([5c0fcce](https://github.com/skbkontur/retail-ui/commit/5c0fccefea1de468a9a796456f6a8a9163587a51))
12
+ * **Select:** pass disabled to _renderButton ([#3468](https://github.com/skbkontur/retail-ui/issues/3468)) ([bc4cac9](https://github.com/skbkontur/retail-ui/commit/bc4cac9444667bc10f499fec417cd67cc1081075))
13
+ * **validations:** program validation on multiple fields ([#3454](https://github.com/skbkontur/retail-ui/issues/3454)) ([8317e0b](https://github.com/skbkontur/retail-ui/commit/8317e0baac36346a15cfff7477f4b482430a007d))
14
+
15
+
16
+
17
+
18
+
6
19
  ## [4.25.1](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.25.0...@skbkontur/react-ui@4.25.1) (2024-06-17)
7
20
 
8
21
  **Note:** Version bump only for package @skbkontur/react-ui
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2017 SKB Kontur
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2017 SKB Kontur
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -28,18 +28,6 @@ export interface CalendarProps extends CommonProps {
28
28
  * Дата задаётся в формате `dd.mm.yyyy`
29
29
  */
30
30
  minDate?: string;
31
- /**
32
- * Задаёт начальную дату периода
33
- *
34
- * Дата задаётся в формате `dd.mm.yyyy`
35
- */
36
- periodStartDate?: string;
37
- /**
38
- * Задаёт конечную дату периода
39
- *
40
- * Дата задаётся в формате `dd.mm.yyyy`
41
- */
42
- periodEndDate?: string;
43
31
  /**
44
32
  * Функция для определения праздничных дней
45
33
  * @default (_day, isWeekend) => isWeekend
@@ -87,18 +87,6 @@ var _CalendarDay = require("./CalendarDay");var _class, _class2, _temp;
87
87
 
88
88
 
89
89
 
90
-
91
-
92
-
93
-
94
-
95
-
96
-
97
-
98
-
99
-
100
-
101
-
102
90
 
103
91
 
104
92
 
@@ -1 +1 @@
1
- {"version":3,"sources":["Calendar.tsx"],"names":["CalendarDataTids","root","month","dayCell","headerMonth","monthSelectMobile","headerYear","yearSelectMobile","Calendar","rootNode","formatDate","date","year","InternalDate","setComponents","toString","withPad","props","getProps","defaultProps","animation","touchStartY","scrollToMonth","inProgress","finish","Promise","r","globalObject","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","handleMonthChange","visibleMonths","changeInfo","getMonthInHumanFormat","onMonthChange","getViewModel","item","renderMain","monthsForRender","getVisibleMonths","wrapperStyle","height","WRAPPER_HEIGHT","context","value","isHoliday","renderDay","today","getTodayDate","onDateClick","handleDateClick","setRootNode","refRoot","styles","wrapper","map","renderMonth","separator","element","isMobile","addEventListener","handleTouchStart","throttledHandleTouchMove","handleWheel","passive","removeEventListener","dateShape","InternalDateTransformer","dateToHumanString","onValueChange","handleMonthYearChange","executeAnimations","pixelY","calculateScrollPosition","scrollTarget","handleWheelEnd","animate","deltaY","applyDelta","CalendarScrollEvents","emit","event","TouchEvent","clientY","targetTouches","handleTouchMove","changedTouches","WheelEvent","preventDefault","wheelEndTimeout","clearTimeout","scrollToNearestWeek","scrollDirection","thresholdHeight","MONTH_TITLE_OFFSET_HEIGHT","DAY_HEIGHT","amount","pos","scrollAmmount","scrollAmount","minDateShape","maxDateShape","initialDate","getInitialDate","initialMonth","getMonthInNativeFormat","initialYear","componentDidUpdate","prevProps","prevState","parseValue","getComponentsLikeNumber","visibleMonthsModels","prevFirstVisibleMonthModels","prevCurrentMonth","componentWillUnmount","cancel","render","top","toNativeFormat","getMonthPositions","positions","i","position","push","x","filter","isMonthVisible","React","Component","__KONTUR_REACT_UI__","displayName","Day","CalendarDay","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 { globalObject, SafeTimer } from '@skbkontur/global-object';\n\nimport { isInstanceOf } from '../../lib/isInstanceOf';\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';\nimport { InternalDateTransformer } from '../../lib/date/InternalDateTransformer';\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, CalendarContextProps } from './CalendarContext';\nimport { CalendarDay, CalendarDayProps } from './CalendarDay';\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 * @default (props: CalendarDayProps) => <CalendarDay {...props} />\n * @param {CalendarDayProps} props\n *\n * @returns {ReactElement} Элемент, который отрисовывает контент числа месяца.\n */\n renderDay?: (props: CalendarDayProps) => React.ReactElement;\n\n /**\n * Вызывается при каждом изменении месяца\n * @param {CalendarMonthChangeInfo} changeInfo - информация о изменении отображаемого месяца, где\n * `month: number` - номер текущего отображаемого месяца от 1 до 12,\n * `year: number` - отображаемый год,\n */\n onMonthChange?: (changeInfo: CalendarMonthChangeInfo) => void;\n}\n\nexport interface CalendarState {\n scrollPosition: number;\n months: MonthViewModel[];\n scrollDirection: number;\n scrollTarget: number;\n}\n\nexport interface CalendarMonthChangeInfo {\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 monthSelectMobile: 'MonthView__monthSelectMobile',\n headerYear: 'MonthView__headerYear',\n yearSelectMobile: 'MonthView__yearSelectMobile',\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 public static displayName = 'Calendar';\n\n public static Day = CalendarDay;\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: SafeTimer;\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 = this.props.initialMonth\n ? CalendarUtils.getMonthInNativeFormat(this.props.initialMonth)\n : 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 };\n }\n\n public componentDidUpdate(prevProps: Readonly<CalendarProps>, prevState: Readonly<CalendarState>): void {\n const { value, onMonthChange } = 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 if (onMonthChange) {\n const visibleMonthsModels = this.getVisibleMonths(this.state).map(this.getViewModel);\n const prevFirstVisibleMonthModels = this.getVisibleMonths(prevState).map(this.getViewModel);\n const currentMonth = visibleMonthsModels[0].month;\n const prevCurrentMonth = prevFirstVisibleMonthModels[0].month;\n\n if (currentMonth !== prevCurrentMonth) {\n this.handleMonthChange(visibleMonthsModels);\n }\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) => globalObject.setTimeout(r, 0));\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 handleMonthChange = (visibleMonths: MonthViewModel[]): void => {\n const currentMonth = visibleMonths[0];\n const changeInfo = {\n month: CalendarUtils.getMonthInHumanFormat(currentMonth.month),\n year: currentMonth.year,\n };\n\n this.props.onMonthChange?.(changeInfo);\n };\n\n private getViewModel = (item: [number, MonthViewModel]): MonthViewModel => item[1];\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: CalendarContextProps = {\n value: this.getDateInNativeFormat(props.value),\n minDate: this.getDateInNativeFormat(props.minDate),\n maxDate: this.getDateInNativeFormat(props.maxDate),\n isHoliday: props.isHoliday,\n renderDay: props.renderDay,\n today: CalendarUtils.getTodayDate(),\n onDateClick: this.handleDateClick,\n };\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 <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 handleDateClick = (dateShape: CalendarDateShape) => {\n const value = InternalDateTransformer.dateToHumanString(dateShape);\n\n this.props.onValueChange?.(value);\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\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 (!isInstanceOf(event, globalObject.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 (!isInstanceOf(event, globalObject.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 (!isInstanceOf(event, globalObject.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 globalObject.clearTimeout(this.wheelEndTimeout);\n }\n this.wheelEndTimeout = globalObject.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"]}
1
+ {"version":3,"sources":["Calendar.tsx"],"names":["CalendarDataTids","root","month","dayCell","headerMonth","monthSelectMobile","headerYear","yearSelectMobile","Calendar","rootNode","formatDate","date","year","InternalDate","setComponents","toString","withPad","props","getProps","defaultProps","animation","touchStartY","scrollToMonth","inProgress","finish","Promise","r","globalObject","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","handleMonthChange","visibleMonths","changeInfo","getMonthInHumanFormat","onMonthChange","getViewModel","item","renderMain","monthsForRender","getVisibleMonths","wrapperStyle","height","WRAPPER_HEIGHT","context","value","isHoliday","renderDay","today","getTodayDate","onDateClick","handleDateClick","setRootNode","refRoot","styles","wrapper","map","renderMonth","separator","element","isMobile","addEventListener","handleTouchStart","throttledHandleTouchMove","handleWheel","passive","removeEventListener","dateShape","InternalDateTransformer","dateToHumanString","onValueChange","handleMonthYearChange","executeAnimations","pixelY","calculateScrollPosition","scrollTarget","handleWheelEnd","animate","deltaY","applyDelta","CalendarScrollEvents","emit","event","TouchEvent","clientY","targetTouches","handleTouchMove","changedTouches","WheelEvent","preventDefault","wheelEndTimeout","clearTimeout","scrollToNearestWeek","scrollDirection","thresholdHeight","MONTH_TITLE_OFFSET_HEIGHT","DAY_HEIGHT","amount","pos","scrollAmmount","scrollAmount","minDateShape","maxDateShape","initialDate","getInitialDate","initialMonth","getMonthInNativeFormat","initialYear","componentDidUpdate","prevProps","prevState","parseValue","getComponentsLikeNumber","visibleMonthsModels","prevFirstVisibleMonthModels","prevCurrentMonth","componentWillUnmount","cancel","render","top","toNativeFormat","getMonthPositions","positions","i","position","push","x","filter","isMonthVisible","React","Component","__KONTUR_REACT_UI__","displayName","Day","CalendarDay","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 { globalObject, SafeTimer } from '@skbkontur/global-object';\n\nimport { isInstanceOf } from '../../lib/isInstanceOf';\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';\nimport { InternalDateTransformer } from '../../lib/date/InternalDateTransformer';\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, CalendarContextProps } from './CalendarContext';\nimport { CalendarDay, CalendarDayProps } from './CalendarDay';\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 * Метод отрисовки дат в календаре\n * @default (props: CalendarDayProps) => <CalendarDay {...props} />\n * @param {CalendarDayProps} props\n *\n * @returns {ReactElement} Элемент, который отрисовывает контент числа месяца.\n */\n renderDay?: (props: CalendarDayProps) => React.ReactElement;\n\n /**\n * Вызывается при каждом изменении месяца\n * @param {CalendarMonthChangeInfo} changeInfo - информация о изменении отображаемого месяца, где\n * `month: number` - номер текущего отображаемого месяца от 1 до 12,\n * `year: number` - отображаемый год,\n */\n onMonthChange?: (changeInfo: CalendarMonthChangeInfo) => void;\n}\n\nexport interface CalendarState {\n scrollPosition: number;\n months: MonthViewModel[];\n scrollDirection: number;\n scrollTarget: number;\n}\n\nexport interface CalendarMonthChangeInfo {\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 monthSelectMobile: 'MonthView__monthSelectMobile',\n headerYear: 'MonthView__headerYear',\n yearSelectMobile: 'MonthView__yearSelectMobile',\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 public static displayName = 'Calendar';\n\n public static Day = CalendarDay;\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: SafeTimer;\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 = this.props.initialMonth\n ? CalendarUtils.getMonthInNativeFormat(this.props.initialMonth)\n : 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 };\n }\n\n public componentDidUpdate(prevProps: Readonly<CalendarProps>, prevState: Readonly<CalendarState>): void {\n const { value, onMonthChange } = 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 if (onMonthChange) {\n const visibleMonthsModels = this.getVisibleMonths(this.state).map(this.getViewModel);\n const prevFirstVisibleMonthModels = this.getVisibleMonths(prevState).map(this.getViewModel);\n const currentMonth = visibleMonthsModels[0].month;\n const prevCurrentMonth = prevFirstVisibleMonthModels[0].month;\n\n if (currentMonth !== prevCurrentMonth) {\n this.handleMonthChange(visibleMonthsModels);\n }\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) => globalObject.setTimeout(r, 0));\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 handleMonthChange = (visibleMonths: MonthViewModel[]): void => {\n const currentMonth = visibleMonths[0];\n const changeInfo = {\n month: CalendarUtils.getMonthInHumanFormat(currentMonth.month),\n year: currentMonth.year,\n };\n\n this.props.onMonthChange?.(changeInfo);\n };\n\n private getViewModel = (item: [number, MonthViewModel]): MonthViewModel => item[1];\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: CalendarContextProps = {\n value: this.getDateInNativeFormat(props.value),\n minDate: this.getDateInNativeFormat(props.minDate),\n maxDate: this.getDateInNativeFormat(props.maxDate),\n isHoliday: props.isHoliday,\n renderDay: props.renderDay,\n today: CalendarUtils.getTodayDate(),\n onDateClick: this.handleDateClick,\n };\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 <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 handleDateClick = (dateShape: CalendarDateShape) => {\n const value = InternalDateTransformer.dateToHumanString(dateShape);\n\n this.props.onValueChange?.(value);\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\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 (!isInstanceOf(event, globalObject.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 (!isInstanceOf(event, globalObject.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 (!isInstanceOf(event, globalObject.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 globalObject.clearTimeout(this.wheelEndTimeout);\n }\n this.wheelEndTimeout = globalObject.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"]}
@@ -274,30 +274,23 @@ class DatePickerFormatting extends React.Component {
274
274
  <DatePickerFormatting />;
275
275
  ```
276
276
 
277
- ### Период дат
278
- Подбробный пример в [Calendar](#/Components/Calendar)
279
-
280
- ```jsx harmony
281
- const [value, setValue] = React.useState('12.05.2022');
282
-
283
- <DatePicker
284
- value={value}
285
- onValueChange={setValue}
286
- periodStartDate="16.05.2022"
287
- periodEndDate="20.05.2022"
288
- />;
289
- ```
290
-
291
277
  ### Кастомный рендер дня
292
278
  Подбробный пример в [Calendar](#/Components/Calendar)
293
279
 
294
280
  ```jsx harmony
281
+ import { CalendarDay } from "@skbkontur/react-ui";
282
+
295
283
  const [value, setValue] = React.useState('12.05.2022');
296
284
 
297
- const renderDay = (date, defaultProps, RenderDefault) => {
298
- const isEven = defaultProps.children % 2 === 0;
285
+ const renderDay = (props) => {
286
+ const [date] = props.date.split('.').map(Number);
287
+ const isEven = date % 2 === 0;
299
288
 
300
- return <RenderDefault {...defaultProps} isDisabled={isEven} />;
289
+ if (isEven) {
290
+ return <CalendarDay {...props} style={{ background: '#e9f8e3' }} />
291
+ }
292
+
293
+ return <CalendarDay {...props} />
301
294
  };
302
295
 
303
296
 
@@ -1,43 +1,43 @@
1
- Вывод элементов с горизонтальным расположением
2
-
3
- ```jsx harmony
4
- import { Button } from '@skbkontur/react-ui';
5
-
6
- <Gapped gap={20}>
7
- <Button use="primary">Сохранить</Button>
8
- <Button>Отмена</Button>
9
- </Gapped>;
10
- ```
11
-
12
- Вертикальное расположение
13
-
14
- ```jsx harmony
15
- import { Checkbox } from '@skbkontur/react-ui';
16
-
17
- <Gapped vertical gap={20}>
18
- <Checkbox checked>Write todos</Checkbox>
19
- <Checkbox initialIndeterminate>Work in progress</Checkbox>
20
- <Checkbox>Make things done</Checkbox>
21
- </Gapped>;
22
- ```
23
-
24
- По умолчанию `Gapped` выстраивает элементы в одну строчку, но с помощью свойства `wrap` можно включить перенос элементов на новую строку.
25
- При этом между строчками будет отступ равный значению свойста `gap`
26
- В таком случае из-за особенности верстки `Gapped` может перекрывать элементы расположенные сверху-слева.
27
-
28
- ```jsx harmony
29
- import { Button, Checkbox, Toggle } from '@skbkontur/react-ui';
30
-
31
- <>
32
- {"U Can't Touch This! => "}
33
- <Toggle />
34
-
35
- <div style={{ paddingTop: '10px', position: 'relative', width: '250px' }}>
36
- <Gapped wrap gap={50}>
37
- <Button use="primary">Сохранить</Button>
38
- <Button>Отмена</Button>
39
- <Checkbox>Я не робот</Checkbox>
40
- </Gapped>
41
- </div>
42
- </>;
43
- ```
1
+ Вывод элементов с горизонтальным расположением
2
+
3
+ ```jsx harmony
4
+ import { Button } from '@skbkontur/react-ui';
5
+
6
+ <Gapped gap={20}>
7
+ <Button use="primary">Сохранить</Button>
8
+ <Button>Отмена</Button>
9
+ </Gapped>;
10
+ ```
11
+
12
+ Вертикальное расположение
13
+
14
+ ```jsx harmony
15
+ import { Checkbox } from '@skbkontur/react-ui';
16
+
17
+ <Gapped vertical gap={20}>
18
+ <Checkbox checked>Write todos</Checkbox>
19
+ <Checkbox initialIndeterminate>Work in progress</Checkbox>
20
+ <Checkbox>Make things done</Checkbox>
21
+ </Gapped>;
22
+ ```
23
+
24
+ По умолчанию `Gapped` выстраивает элементы в одну строчку, но с помощью свойства `wrap` можно включить перенос элементов на новую строку.
25
+ При этом между строчками будет отступ равный значению свойста `gap`
26
+ В таком случае из-за особенности верстки `Gapped` может перекрывать элементы расположенные сверху-слева.
27
+
28
+ ```jsx harmony
29
+ import { Button, Checkbox, Toggle } from '@skbkontur/react-ui';
30
+
31
+ <>
32
+ {"U Can't Touch This! => "}
33
+ <Toggle />
34
+
35
+ <div style={{ paddingTop: '10px', position: 'relative', width: '250px' }}>
36
+ <Gapped wrap gap={50}>
37
+ <Button use="primary">Сохранить</Button>
38
+ <Button>Отмена</Button>
39
+ <Checkbox>Я не робот</Checkbox>
40
+ </Gapped>
41
+ </div>
42
+ </>;
43
+ ```
@@ -132,7 +132,7 @@ export declare class Input extends React.Component<InputProps, InputState> {
132
132
  private selectAllId;
133
133
  private theme;
134
134
  private blinkTimeout;
135
- input: HTMLInputElement | null;
135
+ private input;
136
136
  private setRootNode;
137
137
  private outputMaskError;
138
138
  componentDidMount(): void;
@@ -169,8 +169,7 @@ export declare class Input extends React.Component<InputProps, InputState> {
169
169
  * @public
170
170
  */
171
171
  selectAll: () => void;
172
- delaySelectAll: () => number | null;
173
- private _selectAll;
172
+ private delaySelectAll;
174
173
  private cancelDelayedSelectAll;
175
174
  private cancelBlink;
176
175
  private getInput;
@@ -322,18 +322,15 @@ Input = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functio
322
322
 
323
323
 
324
324
 
325
- selectAll = function () {return _this._selectAll();};_this.
326
-
327
- delaySelectAll = function () {var _globalObject$request;
328
- return _this.selectAllId = (_globalObject$request = _globalObject.globalObject.requestAnimationFrame == null ? void 0 : _globalObject.globalObject.requestAnimationFrame(_this._selectAll)) != null ? _globalObject$request : null;
329
- };_this.
330
-
331
- _selectAll = function () {
325
+ selectAll = function () {
332
326
  if (_this.input) {
333
327
  _this.setSelectionRange(0, _this.input.value.length);
334
328
  }
335
329
  };_this.
336
330
 
331
+ delaySelectAll = function () {var _globalObject$request;return (
332
+ _this.selectAllId = (_globalObject$request = _globalObject.globalObject.requestAnimationFrame == null ? void 0 : _globalObject.globalObject.requestAnimationFrame(_this.selectAll)) != null ? _globalObject$request : null);};_this.
333
+
337
334
  cancelDelayedSelectAll = function () {
338
335
  if (_this.selectAllId) {
339
336
  _globalObject.globalObject.cancelAnimationFrame == null ? void 0 : _globalObject.globalObject.cancelAnimationFrame(_this.selectAllId);