@skbkontur/react-ui 5.0.12 → 5.0.14

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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,28 @@
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
+ ## [5.0.14](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@5.0.13...@skbkontur/react-ui@5.0.14) (2025-03-27)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **FileUploader:** add ability to remove hidden files ([#3625](https://github.com/skbkontur/retail-ui/issues/3625)) ([ffa404e](https://github.com/skbkontur/retail-ui/commit/ffa404e155d84db74291ffe5174d1ee2fba0abab))
12
+
13
+
14
+
15
+
16
+
17
+ ## [5.0.13](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@5.0.12...@skbkontur/react-ui@5.0.13) (2025-03-17)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * **DatePicker:** remove unnecessary hook usage ([#3619](https://github.com/skbkontur/retail-ui/issues/3619)) ([35572c8](https://github.com/skbkontur/retail-ui/commit/35572c8b13a8866c4670b19fd7948a22683d7753))
23
+
24
+
25
+
26
+
27
+
6
28
  ## [5.0.12](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@5.0.11...@skbkontur/react-ui@5.0.12) (2025-03-11)
7
29
 
8
30
 
@@ -201,6 +201,9 @@ Calendar = exports.Calendar = (0, _rootNode.rootNode)(_class = (_Calendar = /*#_
201
201
 
202
202
 
203
203
 
204
+
205
+
206
+
204
207
 
205
208
 
206
209
 
@@ -520,4 +523,4 @@ Calendar = exports.Calendar = (0, _rootNode.rootNode)(_class = (_Calendar = /*#_
520
523
  },
521
524
  onEnd
522
525
  );
523
- };var _this$getProps = _this.getProps(),_minDate = _this$getProps.minDate,_maxDate = _this$getProps.maxDate,_value = _this$getProps.value;var minDateShape = _this.getDateInNativeFormat(_minDate);var maxDateShape = _this.getDateInNativeFormat(_maxDate);var _dateShape = _this.getDateInNativeFormat(_value);var today = CalendarUtils.getTodayDate();var initialDate = CalendarUtils.getInitialDate({ today: today, date: _dateShape, minDate: minDateShape, maxDate: maxDateShape });var initialMonth = _this.props.initialMonth ? CalendarUtils.getMonthInNativeFormat(_this.props.initialMonth) : initialDate.month;var initialYear = (_this$props$initialYe = _this.props.initialYear) != null ? _this$props$initialYe : initialDate.year;_this.state = { scrollPosition: 0, months: CalendarUtils.getMonths(initialMonth, initialYear), scrollDirection: 1, scrollTarget: 0 };return _this;}(0, _inheritsLoose2.default)(Calendar, _React$Component);Calendar.formatDate = function formatDate(date, month, year) {return new _InternalDate.InternalDate().setComponents({ date: date, month: month, year: year }).toString({ withPad: true });};var _proto = Calendar.prototype;_proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {var _this$props = this.props,value = _this$props.value,onMonthChange = _this$props.onMonthChange;if (value && !(0, _shallowequal.default)(value, prevProps.value)) {var date = new _InternalDate.InternalDate().parseValue(value).getComponentsLikeNumber();this.scrollToMonth(date.month, date.year);}if (onMonthChange) {var visibleMonthsModels = this.getVisibleMonths(this.state).map(this.getViewModel);var prevFirstVisibleMonthModels = this.getVisibleMonths(prevState).map(this.getViewModel);var currentMonth = visibleMonthsModels[0].month;var prevCurrentMonth = prevFirstVisibleMonthModels[0].month;if (currentMonth !== prevCurrentMonth) {this.handleMonthChange(visibleMonthsModels);}}};_proto.componentWillUnmount = function componentWillUnmount() {if (this.animation.inProgress()) {this.animation.cancel();}};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMonth = function renderMonth(_ref4) {var top = _ref4[0],month = _ref4[1];return /*#__PURE__*/_react.default.createElement(_Month.Month, { key: month.month + '-' + month.year, top: top, month: month, onMonthYearChange: this.handleMonthYearChange });};_proto.getDateInNativeFormat = function getDateInNativeFormat(date) {return new _InternalDate.InternalDate().parseValue(date).toNativeFormat();};_proto.getMonthPositions = function getMonthPositions(months, scrollPosition) {var positions = [scrollPosition - months[0].getHeight(this.theme)];for (var i = 1; i < months.length; i++) {var position = positions[i - 1] + months[i - 1].getHeight(this.theme);positions.push(position);}return positions;};_proto.getVisibleMonths = function getVisibleMonths(state) {var _this3 = this;var months = state.months,scrollPosition = state.scrollPosition;var positions = this.getMonthPositions(months, scrollPosition);return months.map(function (x, i) {return [positions[i], x];}).filter(function (_ref5) {var top = _ref5[0],month = _ref5[1];return CalendarUtils.isMonthVisible(top, month, _this3.theme);});};return Calendar;}(_react.default.Component), _Calendar.__KONTUR_REACT_UI__ = 'Calendar', _Calendar.displayName = 'Calendar', _Calendar.Day = _CalendarDay.CalendarDay, _Calendar.defaultProps = { minDate: _Calendar.formatDate(_constants.MIN_DATE, _constants.MIN_MONTH, _constants.MIN_YEAR), maxDate: _Calendar.formatDate(_constants.MAX_DATE, _constants.MAX_MONTH, _constants.MAX_YEAR), isHoliday: function isHoliday(_day, isWeekend) {return isWeekend;} }, _Calendar)) || _class;
526
+ };var _this$getProps = _this.getProps(),_minDate = _this$getProps.minDate,_maxDate = _this$getProps.maxDate,_value = _this$getProps.value;var minDateShape = _this.getDateInNativeFormat(_minDate);var maxDateShape = _this.getDateInNativeFormat(_maxDate);var _dateShape = _this.getDateInNativeFormat(_value);var today = CalendarUtils.getTodayDate();var initialDate = CalendarUtils.getInitialDate({ today: today, date: _dateShape, minDate: minDateShape, maxDate: maxDateShape });var initialMonth = _this.props.initialMonth ? CalendarUtils.getMonthInNativeFormat(_this.props.initialMonth) : initialDate.month;var initialYear = (_this$props$initialYe = _this.props.initialYear) != null ? _this$props$initialYe : initialDate.year;_this.state = { scrollPosition: 0, months: CalendarUtils.getMonths(initialMonth, initialYear), scrollDirection: 1, scrollTarget: 0 };return _this;}(0, _inheritsLoose2.default)(Calendar, _React$Component);Calendar.formatDate = function formatDate(date, month, year) {return new _InternalDate.InternalDate().setComponents({ date: date, month: month, year: year }).toString({ withPad: true });};var _proto = Calendar.prototype;_proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {var _this$props = this.props,value = _this$props.value,onMonthChange = _this$props.onMonthChange;if (value && !(0, _shallowequal.default)(value, prevProps.value)) {var date = new _InternalDate.InternalDate().parseValue(value).getComponentsLikeNumber();this.scrollToMonth(date.month, date.year);}if (onMonthChange) {var visibleMonthsModels = this.getVisibleMonths(this.state).map(this.getViewModel);var prevFirstVisibleMonthModels = this.getVisibleMonths(prevState).map(this.getViewModel);if (visibleMonthsModels.length > 0 && prevFirstVisibleMonthModels.length > 0) {var currentMonth = visibleMonthsModels[0].month;var prevCurrentMonth = prevFirstVisibleMonthModels[0].month;if (currentMonth !== prevCurrentMonth) {this.handleMonthChange(visibleMonthsModels);}}}};_proto.componentWillUnmount = function componentWillUnmount() {if (this.animation.inProgress()) {this.animation.cancel();}};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMonth = function renderMonth(_ref4) {var top = _ref4[0],month = _ref4[1];return /*#__PURE__*/_react.default.createElement(_Month.Month, { key: month.month + '-' + month.year, top: top, month: month, onMonthYearChange: this.handleMonthYearChange });};_proto.getDateInNativeFormat = function getDateInNativeFormat(date) {return new _InternalDate.InternalDate().parseValue(date).toNativeFormat();};_proto.getMonthPositions = function getMonthPositions(months, scrollPosition) {var positions = [scrollPosition - months[0].getHeight(this.theme)];for (var i = 1; i < months.length; i++) {var position = positions[i - 1] + months[i - 1].getHeight(this.theme);positions.push(position);}return positions;};_proto.getVisibleMonths = function getVisibleMonths(state) {var _this3 = this;var months = state.months,scrollPosition = state.scrollPosition;var positions = this.getMonthPositions(months, scrollPosition);return months.map(function (x, i) {return [positions[i], x];}).filter(function (_ref5) {var top = _ref5[0],month = _ref5[1];return CalendarUtils.isMonthVisible(top, month, _this3.theme);});};return Calendar;}(_react.default.Component), _Calendar.__KONTUR_REACT_UI__ = 'Calendar', _Calendar.displayName = 'Calendar', _Calendar.Day = _CalendarDay.CalendarDay, _Calendar.defaultProps = { minDate: _Calendar.formatDate(_constants.MIN_DATE, _constants.MIN_MONTH, _constants.MIN_YEAR), maxDate: _Calendar.formatDate(_constants.MAX_DATE, _constants.MAX_MONTH, _constants.MAX_YEAR), isHoliday: function isHoliday(_day, isWeekend) {return isWeekend;} }, _Calendar)) || _class;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_normalizeWheel2","_lodash","_shallowequal","_globalObject","_isInstanceOf","_InternalDate","_rootNode","_Emotion","_CommonWrapper","_constants","_ThemeContext","_animation","_client","_createPropsGetter","_InternalDateTransformer","_config","_MonthViewModel","CalendarScrollEvents","_interopRequireWildcard","_Month","_Calendar2","_CalendarDateShape","CalendarUtils","_CalendarContext","_CalendarDay","_class","_Calendar","CalendarDataTids","exports","root","month","dayCell","headerMonth","headerYear","Calendar","rootNode","_React$Component","props","_this$props$initialYe","_this","call","getProps","createPropsGetter","defaultProps","animation","touchStartY","scrollToMonth","_ref","_asyncToGenerator2","default","_regenerator","mark","_callee","year","monthNative","minDate","maxDate","minMonth","maxMonth","currentMonth","diffInMonths","maxMonthsToAdd","onEnd","isYearChanges","monthsToPrependCount","monthsToPrepend","monthsToAppendCount","monthsToAppend","wrap","_callee$","_context","prev","next","getMonthInNativeFormat","inProgress","finish","Promise","r","globalObject","setTimeout","getDateInNativeFormat","isGreater","create","getMonthInHumanFormat","abrupt","isLess","state","months","scrollTo","themeConfig","theme","MAX_MONTHS_TO_APPEND_ON_SCROLL","setState","getMonths","scrollPosition","Math","abs","min","Array","from","length","_","index","MonthViewModel","yearChanges","isFirstInYear","isLastInYear","concat","getMonthsHeight","targetPosition","getHeight","slice","stop","_x","_x2","apply","arguments","handleMonthChange","visibleMonths","changeInfo","onMonthChange","getViewModel","item","renderMain","monthsForRender","getVisibleMonths","wrapperStyle","height","WRAPPER_HEIGHT","context","value","isHoliday","renderDay","today","getTodayDate","onDateClick","handleDateClick","createElement","CommonWrapper","_extends2","rootNodeRef","setRootNode","ref","refRoot","className","cx","styles","style","wrapper","CalendarContext","Provider","map","renderMonth","separator","element","isMobile","addEventListener","handleTouchStart","throttledHandleTouchMove","handleWheel","passive","removeEventListener","dateShape","InternalDateTransformer","dateToHumanString","onValueChange","handleMonthYearChange","executeAnimations","pixelY","_ref2","calculateScrollPosition","scrollTarget","handleWheelEnd","animate","deltaY","applyDelta","emit","event","isInstanceOf","TouchEvent","clientY","targetTouches","handleTouchMove","changedTouches","throttle","WheelEvent","preventDefault","_normalizeWheel","normalizeWheel","wheelEndTimeout","clearTimeout","scrollToNearestWeek","_this$state","scrollDirection","thresholdHeight","MONTH_TITLE_OFFSET_HEIGHT","DAY_HEIGHT","amount","pos","scrollAmmount","scrollAmount","_ref3","_this$getProps","minDateShape","maxDateShape","initialDate","getInitialDate","date","initialMonth","initialYear","_inheritsLoose2","formatDate","InternalDate","setComponents","toString","withPad","_proto","prototype","componentDidUpdate","prevProps","prevState","_this$props","shallowEqual","parseValue","getComponentsLikeNumber","visibleMonthsModels","prevFirstVisibleMonthModels","prevCurrentMonth","componentWillUnmount","cancel","render","_this2","ThemeContext","Consumer","_ref4","top","Month","key","onMonthYearChange","toNativeFormat","getMonthPositions","positions","i","position","push","_this3","x","filter","_ref5","isMonthVisible","React","Component","__KONTUR_REACT_UI__","displayName","Day","CalendarDay","MIN_DATE","MIN_MONTH","MIN_YEAR","MAX_DATE","MAX_MONTH","MAX_YEAR","_day","isWeekend"],"sources":["Calendar.tsx"],"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 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 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, 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 const monthNative = CalendarUtils.getMonthInNativeFormat(month);\n\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, monthNative, year))) {\n const minMonth = CalendarUtils.getMonthInHumanFormat(minDate.month);\n this.scrollToMonth(minMonth, minDate.year);\n return;\n }\n\n if (maxDate && isLess(maxDate, create(0, monthNative, year))) {\n const maxMonth = CalendarUtils.getMonthInHumanFormat(maxDate.month);\n this.scrollToMonth(maxMonth, maxDate.year);\n return;\n }\n\n const currentMonth = this.state.months[1];\n const diffInMonths = currentMonth.month + currentMonth.year * 12 - monthNative - 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(monthNative, 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(monthNative + 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(monthNative + 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 = (monthNative: number, year: number) => {\n const month = CalendarUtils.getMonthInHumanFormat(monthNative);\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"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_normalizeWheel2","_lodash","_shallowequal","_globalObject","_isInstanceOf","_InternalDate","_rootNode","_Emotion","_CommonWrapper","_constants","_ThemeContext","_animation","_client","_createPropsGetter","_InternalDateTransformer","_config","_MonthViewModel","CalendarScrollEvents","_interopRequireWildcard","_Month","_Calendar2","_CalendarDateShape","CalendarUtils","_CalendarContext","_CalendarDay","_class","_Calendar","CalendarDataTids","exports","root","month","dayCell","headerMonth","headerYear","Calendar","rootNode","_React$Component","props","_this$props$initialYe","_this","call","getProps","createPropsGetter","defaultProps","animation","touchStartY","scrollToMonth","_ref","_asyncToGenerator2","default","_regenerator","mark","_callee","year","monthNative","minDate","maxDate","minMonth","maxMonth","currentMonth","diffInMonths","maxMonthsToAdd","onEnd","isYearChanges","monthsToPrependCount","monthsToPrepend","monthsToAppendCount","monthsToAppend","wrap","_callee$","_context","prev","next","getMonthInNativeFormat","inProgress","finish","Promise","r","globalObject","setTimeout","getDateInNativeFormat","isGreater","create","getMonthInHumanFormat","abrupt","isLess","state","months","scrollTo","themeConfig","theme","MAX_MONTHS_TO_APPEND_ON_SCROLL","setState","getMonths","scrollPosition","Math","abs","min","Array","from","length","_","index","MonthViewModel","yearChanges","isFirstInYear","isLastInYear","concat","getMonthsHeight","targetPosition","getHeight","slice","stop","_x","_x2","apply","arguments","handleMonthChange","visibleMonths","changeInfo","onMonthChange","getViewModel","item","renderMain","monthsForRender","getVisibleMonths","wrapperStyle","height","WRAPPER_HEIGHT","context","value","isHoliday","renderDay","today","getTodayDate","onDateClick","handleDateClick","createElement","CommonWrapper","_extends2","rootNodeRef","setRootNode","ref","refRoot","className","cx","styles","style","wrapper","CalendarContext","Provider","map","renderMonth","separator","element","isMobile","addEventListener","handleTouchStart","throttledHandleTouchMove","handleWheel","passive","removeEventListener","dateShape","InternalDateTransformer","dateToHumanString","onValueChange","handleMonthYearChange","executeAnimations","pixelY","_ref2","calculateScrollPosition","scrollTarget","handleWheelEnd","animate","deltaY","applyDelta","emit","event","isInstanceOf","TouchEvent","clientY","targetTouches","handleTouchMove","changedTouches","throttle","WheelEvent","preventDefault","_normalizeWheel","normalizeWheel","wheelEndTimeout","clearTimeout","scrollToNearestWeek","_this$state","scrollDirection","thresholdHeight","MONTH_TITLE_OFFSET_HEIGHT","DAY_HEIGHT","amount","pos","scrollAmmount","scrollAmount","_ref3","_this$getProps","minDateShape","maxDateShape","initialDate","getInitialDate","date","initialMonth","initialYear","_inheritsLoose2","formatDate","InternalDate","setComponents","toString","withPad","_proto","prototype","componentDidUpdate","prevProps","prevState","_this$props","shallowEqual","parseValue","getComponentsLikeNumber","visibleMonthsModels","prevFirstVisibleMonthModels","prevCurrentMonth","componentWillUnmount","cancel","render","_this2","ThemeContext","Consumer","_ref4","top","Month","key","onMonthYearChange","toNativeFormat","getMonthPositions","positions","i","position","push","_this3","x","filter","_ref5","isMonthVisible","React","Component","__KONTUR_REACT_UI__","displayName","Day","CalendarDay","MIN_DATE","MIN_MONTH","MIN_YEAR","MAX_DATE","MAX_MONTH","MAX_YEAR","_day","isWeekend"],"sources":["Calendar.tsx"],"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 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 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, 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\n if (visibleMonthsModels.length > 0 && prevFirstVisibleMonthModels.length > 0) {\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\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 const monthNative = CalendarUtils.getMonthInNativeFormat(month);\n\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, monthNative, year))) {\n const minMonth = CalendarUtils.getMonthInHumanFormat(minDate.month);\n this.scrollToMonth(minMonth, minDate.year);\n return;\n }\n\n if (maxDate && isLess(maxDate, create(0, monthNative, year))) {\n const maxMonth = CalendarUtils.getMonthInHumanFormat(maxDate.month);\n this.scrollToMonth(maxMonth, maxDate.year);\n return;\n }\n\n const currentMonth = this.state.months[1];\n const diffInMonths = currentMonth.month + currentMonth.year * 12 - monthNative - 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(monthNative, 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(monthNative + 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(monthNative + 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 = (monthNative: number, year: number) => {\n const month = CalendarUtils.getMonthInHumanFormat(monthNative);\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"],"mappings":"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","ignoreList":[]}
@@ -7,7 +7,6 @@ var _MobilePopup = require("../../internal/MobilePopup");
7
7
  var _DateInput = require("../DateInput");
8
8
  var _Button = require("../Button");
9
9
  var _useLocaleForControl = require("../../lib/locale/useLocaleForControl");
10
- var _useEffectWithoutInitCall = require("../../hooks/useEffectWithoutInitCall");
11
10
 
12
11
 
13
12
  var _locale = require("./locale");
@@ -64,14 +63,6 @@ var MobilePicker = exports.MobilePicker = function MobilePicker(props) {
64
63
  }
65
64
  };
66
65
 
67
- (0, _useEffectWithoutInitCall.useEffectWithoutInitCall)(function () {
68
- if (props.value && calendarRef.current) {
69
- var _month = (0, _CalendarUtils.getMonthInHumanFormat)(+props.value.substring(3, 5));
70
- var _year = +props.value.substring(6);
71
- calendarRef.current.scrollToMonth(_month, _year);
72
- }
73
- }, [props.value]);
74
-
75
66
  return /*#__PURE__*/(
76
67
  _react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: theme }, /*#__PURE__*/
77
68
  _react.default.createElement(_MobilePopup.MobilePopup, {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_Calendar","_CalendarUtils","_ThemeContext","_MobilePopup","_DateInput","_Button","_useLocaleForControl","_useEffectWithoutInitCall","_locale","_MobilePicker","_getMobilePickerTheme","MobilePickerDataTids","exports","input","today","MobilePicker","props","locale","useLocaleForControl","DatePickerLocaleHelper","theme","getMobilePickerTheme","useContext","ThemeContext","calendarRef","useRef","inputRef","_useState","useState","getTodayDate","_useState$","monthNative","month","year","getMonthInHumanFormat","onValueChange","date","onCloseRequest","useLayoutEffect","setTimeout","_inputRef$current","current","focus","onTodayClick","scrollToMonth","useEffectWithoutInitCall","value","substring","default","createElement","Provider","MobilePopup","opened","headerChildComponent","DateInput","width","withIcon","ref","minDate","maxDate","size","warning","error","footerChildComponent","enableTodayLink","Button","onClick","Calendar","className","styles","calendarRoot","isHoliday","renderDay","onMonthChange"],"sources":["MobilePicker.tsx"],"sourcesContent":["import React, { useContext, useLayoutEffect, useRef, useState } from 'react';\n\nimport { Calendar } from '../Calendar';\nimport { getMonthInHumanFormat, getTodayDate } from '../Calendar/CalendarUtils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { MobilePopup } from '../../internal/MobilePopup';\nimport { DateInput } from '../DateInput';\nimport { Button } from '../Button';\nimport { useLocaleForControl } from '../../lib/locale/useLocaleForControl';\nimport { useEffectWithoutInitCall } from '../../hooks/useEffectWithoutInitCall';\n\nimport { DatePickerProps } from './DatePicker';\nimport { DatePickerLocaleHelper } from './locale';\nimport { styles } from './MobilePicker.styles';\nimport { getMobilePickerTheme } from './getMobilePickerTheme';\n\nexport const MobilePickerDataTids = {\n input: 'MobilePicker__input',\n today: 'MobilePicker__today',\n} as const;\n\nexport interface MobilePickerProps\n extends Pick<\n DatePickerProps,\n | 'error'\n | 'warning'\n | 'value'\n | 'minDate'\n | 'maxDate'\n | 'onValueChange'\n | 'isHoliday'\n | 'enableTodayLink'\n | 'renderDay'\n | 'onMonthChange'\n > {\n onCloseRequest?: () => void;\n}\n\nexport const MobilePicker: React.FC<MobilePickerProps> = (props) => {\n const locale = useLocaleForControl('DatePicker', DatePickerLocaleHelper);\n const theme = getMobilePickerTheme(useContext(ThemeContext));\n\n const calendarRef = useRef<Calendar>(null);\n const inputRef = useRef<DateInput>(null);\n\n const [{ month: monthNative, year }] = useState(() => getTodayDate());\n const month = getMonthInHumanFormat(monthNative);\n\n const onValueChange = (date: string) => {\n props.onValueChange?.(date);\n props.onCloseRequest?.();\n };\n\n useLayoutEffect(() => {\n // fix DateInput flushSync warning in React 18\n setTimeout(() => {\n inputRef.current?.focus();\n });\n }, []);\n\n const onTodayClick = () => {\n if (calendarRef.current) {\n calendarRef.current.scrollToMonth(month, year);\n }\n };\n\n useEffectWithoutInitCall(() => {\n if (props.value && calendarRef.current) {\n const month = getMonthInHumanFormat(+props.value.substring(3, 5));\n const year = +props.value.substring(6);\n calendarRef.current.scrollToMonth(month, year);\n }\n }, [props.value]);\n\n return (\n <ThemeContext.Provider value={theme}>\n <MobilePopup\n opened\n headerChildComponent={\n <DateInput\n value={props.value || ''}\n width=\"100%\"\n withIcon\n ref={inputRef}\n minDate={props.minDate}\n maxDate={props.maxDate}\n onValueChange={props.onValueChange}\n size=\"medium\"\n warning={props.warning}\n error={props.error}\n data-tid={MobilePickerDataTids.input}\n />\n }\n footerChildComponent={\n props.enableTodayLink && (\n <Button size=\"medium\" onClick={onTodayClick} data-tid={MobilePickerDataTids.today}>\n {locale.today}\n </Button>\n )\n }\n onCloseRequest={props.onCloseRequest}\n >\n <Calendar\n ref={calendarRef}\n value={props.value}\n className={styles.calendarRoot()}\n minDate={props.minDate}\n maxDate={props.maxDate}\n onValueChange={onValueChange}\n isHoliday={props.isHoliday}\n renderDay={props.renderDay}\n onMonthChange={props.onMonthChange}\n />\n </MobilePopup>\n </ThemeContext.Provider>\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_Calendar","_CalendarUtils","_ThemeContext","_MobilePopup","_DateInput","_Button","_useLocaleForControl","_locale","_MobilePicker","_getMobilePickerTheme","MobilePickerDataTids","exports","input","today","MobilePicker","props","locale","useLocaleForControl","DatePickerLocaleHelper","theme","getMobilePickerTheme","useContext","ThemeContext","calendarRef","useRef","inputRef","_useState","useState","getTodayDate","_useState$","monthNative","month","year","getMonthInHumanFormat","onValueChange","date","onCloseRequest","useLayoutEffect","setTimeout","_inputRef$current","current","focus","onTodayClick","scrollToMonth","default","createElement","Provider","value","MobilePopup","opened","headerChildComponent","DateInput","width","withIcon","ref","minDate","maxDate","size","warning","error","footerChildComponent","enableTodayLink","Button","onClick","Calendar","className","styles","calendarRoot","isHoliday","renderDay","onMonthChange"],"sources":["MobilePicker.tsx"],"sourcesContent":["import React, { useContext, useLayoutEffect, useRef, useState } from 'react';\n\nimport { Calendar } from '../Calendar';\nimport { getMonthInHumanFormat, getTodayDate } from '../Calendar/CalendarUtils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { MobilePopup } from '../../internal/MobilePopup';\nimport { DateInput } from '../DateInput';\nimport { Button } from '../Button';\nimport { useLocaleForControl } from '../../lib/locale/useLocaleForControl';\n\nimport { DatePickerProps } from './DatePicker';\nimport { DatePickerLocaleHelper } from './locale';\nimport { styles } from './MobilePicker.styles';\nimport { getMobilePickerTheme } from './getMobilePickerTheme';\n\nexport const MobilePickerDataTids = {\n input: 'MobilePicker__input',\n today: 'MobilePicker__today',\n} as const;\n\nexport interface MobilePickerProps\n extends Pick<\n DatePickerProps,\n | 'error'\n | 'warning'\n | 'value'\n | 'minDate'\n | 'maxDate'\n | 'onValueChange'\n | 'isHoliday'\n | 'enableTodayLink'\n | 'renderDay'\n | 'onMonthChange'\n > {\n onCloseRequest?: () => void;\n}\n\nexport const MobilePicker: React.FC<MobilePickerProps> = (props) => {\n const locale = useLocaleForControl('DatePicker', DatePickerLocaleHelper);\n const theme = getMobilePickerTheme(useContext(ThemeContext));\n\n const calendarRef = useRef<Calendar>(null);\n const inputRef = useRef<DateInput>(null);\n\n const [{ month: monthNative, year }] = useState(() => getTodayDate());\n const month = getMonthInHumanFormat(monthNative);\n\n const onValueChange = (date: string) => {\n props.onValueChange?.(date);\n props.onCloseRequest?.();\n };\n\n useLayoutEffect(() => {\n // fix DateInput flushSync warning in React 18\n setTimeout(() => {\n inputRef.current?.focus();\n });\n }, []);\n\n const onTodayClick = () => {\n if (calendarRef.current) {\n calendarRef.current.scrollToMonth(month, year);\n }\n };\n\n return (\n <ThemeContext.Provider value={theme}>\n <MobilePopup\n opened\n headerChildComponent={\n <DateInput\n value={props.value || ''}\n width=\"100%\"\n withIcon\n ref={inputRef}\n minDate={props.minDate}\n maxDate={props.maxDate}\n onValueChange={props.onValueChange}\n size=\"medium\"\n warning={props.warning}\n error={props.error}\n data-tid={MobilePickerDataTids.input}\n />\n }\n footerChildComponent={\n props.enableTodayLink && (\n <Button size=\"medium\" onClick={onTodayClick} data-tid={MobilePickerDataTids.today}>\n {locale.today}\n </Button>\n )\n }\n onCloseRequest={props.onCloseRequest}\n >\n <Calendar\n ref={calendarRef}\n value={props.value}\n className={styles.calendarRoot()}\n minDate={props.minDate}\n maxDate={props.maxDate}\n onValueChange={onValueChange}\n isHoliday={props.isHoliday}\n renderDay={props.renderDay}\n onMonthChange={props.onMonthChange}\n />\n </MobilePopup>\n </ThemeContext.Provider>\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -46,6 +46,7 @@ export interface FileUploaderRef extends InstanceWithRootNode {
46
46
  blur: () => void;
47
47
  /** Сбрасывает выбранные файлы */
48
48
  reset: () => void;
49
+ removeFile: (fileId: string) => void;
49
50
  }
50
51
  export declare const FileUploaderDataTids: {
51
52
  readonly root: "FileUploader__root";
@@ -76,6 +76,7 @@ var stopPropagation = function stopPropagation(e) {return e.stopPropagation();};
76
76
 
77
77
 
78
78
 
79
+
79
80
 
80
81
 
81
82
  var FileUploaderDataTids = exports.FileUploaderDataTids = {
@@ -217,11 +218,12 @@ var _FileUploader = (0, _forwardRefAndName.forwardRefAndName)('FileUploader', fu
217
218
  (_inputRef$current2 = inputRef.current) == null || _inputRef$current2.blur();
218
219
  }, []);
219
220
 
220
- (0, _react.useImperativeHandle)(ref, function () {return { focus: focus, blur: blur, reset: reset, getRootNode: function getRootNode() {return rootNodeRef.current;} };}, [
221
+ (0, _react.useImperativeHandle)(ref, function () {return { focus: focus, blur: blur, reset: reset, removeFile: removeFile, getRootNode: function getRootNode() {return rootNodeRef.current;} };}, [
221
222
  ref,
222
223
  blur,
223
224
  focus,
224
- reset]
225
+ reset,
226
+ removeFile]
225
227
  );
226
228
 
227
229
  var _useState2 = (0, _react.useState)(false),focusedByTab = _useState2[0],setFocusedByTab = _useState2[1];
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_globalObject","_fileUtils","_Emotion","_useMemoObject","_FileUploaderControlContext","_useControlLocale","_useUpload","_useDrop3","_ThemeContext","_withFileUploaderControlProvider","_keyListener","_FileUploaderFile","_FileUploaderFileList","_CommonWrapper","_FileUploaderFileValidationResult","_useFileUploaderSize","_forwardRefAndName","_FocusControlWrapper","_UploadIcon","_FileUploader2","_excluded","stopPropagation","e","FileUploaderDataTids","exports","root","content","link","input","defaultRenderFile","file","fileNode","_FileUploader","forwardRefAndName","props","ref","_cx","theme","useContext","ThemeContext","initialFiles","disabled","error","warning","_props$multiple","multiple","_props$width","width","fileUploaderWidth","_props$hideFiles","hideFiles","onBlur","onFocus","onChange","request","validateBeforeUpload","onRequestSuccess","onRequestError","_props$size","size","_props$renderFile","renderFile","inputProps","_objectWithoutPropertiesLoose2","default","_useContext","FileUploaderControlContext","files","setFiles","removeFile","reset","setFileValidationResult","isMinLengthReached","locale","useControlLocale","inputRef","useRef","fileDivRef","isAsync","isSingleMode","_useState","useState","isLinkVisible","setIsLinkVisible","upload","useUpload","tryValidateAndUpload","useCallback","forEach","_ref","_asyncToGenerator2","_regenerator","mark","_callee","validationMessage","wrap","_callee$","_context","prev","next","t0","sent","id","FileUploaderFileValidationResult","stop","_x","apply","arguments","sizeClassName","useFileUploaderSize","small","jsStyles","sizeSmall","medium","sizeMedium","large","sizeLarge","sizeIconClass","iconSmall","iconMedium","iconLarge","contentInnerClass","contentInnerSmall","contentInnerMedium","contentInnerLarge","handleChange","newFiles","length","filesArray","Array","from","attachedFiles","map","getAttachedFile","handleDrop","event","dataTransfer","_dataTransfer$files","clearData","_useDrop","useDrop","onDrop","isDraggable","labelRef","_useDrop2","isWindowDraggable","windowRef","isBrowser","globalObject","current","document","focus","_inputRef$current","keyListener","isTabPressed","blur","_inputRef$current2","useImperativeHandle","getRootNode","rootNodeRef","_useState2","focusedByTab","setFocusedByTab","handleInputChange","target","handleFocus","requestAnimationFrame","handleBlur","handleRemoveFile","fileId","DataTransfer","filter","f","items","add","originalFile","_useState3","hovered","setHovered","uploadButtonClassNames","cx","uploadButton","uploadButtonFocus","dragOver","canDrop","uploadButtonWrapperClassNames","windowDragOver","uploadButtonIconClassNames","icon","iconDisabled","hasOneFile","hasOneFileForSingle","contentClassNames","contentWithFiles","linkClassNames","linkHovered","linkDisabled","useEffect","iconSizes","parseInt","btnIconSizeSmall","btnIconSizeMedium","btnIconSizeLarge","createElement","UploadIcon","CommonWrapper","className","style","useMemoObject","FileUploaderFileList","onRemove","onMouseEnter","onMouseLeave","choosedFile","chooseFile","String","fromCharCode","globalClasses","afterLinkText","afterLinkText_HasFiles","singleFile","FileUploaderFile","Fragment","orDragHere","FocusControlWrapper","onBlurWhenDisabled","_extends2","tabIndex","type","visuallyHidden","onClick","FileUploader","withFileUploaderControlProvider","React","memo","displayName"],"sources":["FileUploader.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { FileUploaderAttachedFile, getAttachedFile } from '../../internal/FileUploaderControl/fileUtils';\nimport { cx } from '../../lib/theming/Emotion';\nimport { InstanceWithRootNode } from '../../lib/rootNode';\nimport { useMemoObject } from '../../hooks/useMemoObject';\nimport { FileUploaderControlContext } from '../../internal/FileUploaderControl/FileUploaderControlContext';\nimport { useControlLocale } from '../../internal/FileUploaderControl/hooks/useControlLocale';\nimport { useUpload } from '../../internal/FileUploaderControl/hooks/useUpload';\nimport { useDrop } from '../../hooks/useDrop';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { FileUploaderControlProviderProps } from '../../internal/FileUploaderControl/FileUploaderControlProvider';\nimport { withFileUploaderControlProvider } from '../../internal/FileUploaderControl/withFileUploaderControlProvider';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { FileUploaderFile } from '../../internal/FileUploaderControl/FileUploaderFile/FileUploaderFile';\nimport { FileUploaderFileList } from '../../internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { FileUploaderFileValidationResult } from '../../internal/FileUploaderControl/FileUploaderFileValidationResult';\nimport { useFileUploaderSize } from '../../internal/FileUploaderControl/hooks/useFileUploaderSize';\nimport { SizeProp } from '../../lib/types/props';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { UploadIcon } from './UploadIcon';\nimport { globalClasses, jsStyles } from './FileUploader.styles';\n\nconst stopPropagation: React.ReactEventHandler = (e) => e.stopPropagation();\n\ntype FileUploaderOverriddenProps = 'size';\n\ninterface _FileUploaderProps\n extends CommonProps,\n Omit<React.InputHTMLAttributes<HTMLInputElement>, FileUploaderOverriddenProps> {\n /** Начальное состояние загруженных файлов */\n initialFiles?: File[];\n /** Состояние ошибки всего контрола */\n error?: boolean;\n /** Состояние предупреждения всего контрола */\n warning?: boolean;\n /** Свойство ширины. */\n width?: React.CSSProperties['width'];\n /**\n * Задаёт размер контрола.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: SizeProp;\n /** Свойство, скрывающее отображение файлов. */\n hideFiles?: boolean;\n\n /** Функция, через которую отправляем файлы. Используется для отслеживания статуса загрузки файла. */\n request?: (file: FileUploaderAttachedFile) => Promise<void>;\n /** Срабатывает при удачной попытке отправки через request */\n onRequestSuccess?: (fileId: string) => void;\n /** Срабатывает при неудачной попытке отправки через request */\n onRequestError?: (fileId: string) => void;\n\n /**\n * Функция валидации каждого файла.\n * Срабатывает после выбора файлов и перед попыткой отправить в request.\n * Чтобы вывести валидацию ошибки, промис должен вернуть строку.\n * */\n validateBeforeUpload?: (file: FileUploaderAttachedFile) => Promise<Nullable<string>>;\n\n /**\n * Функция, позволяющая кастомизировать файлы.\n * Через нее можно вешать кастомные валидации на каждый файл.\n * */\n renderFile?: (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => React.ReactNode;\n}\n\nexport interface FileUploaderRef extends InstanceWithRootNode {\n focus: () => void;\n blur: () => void;\n /** Сбрасывает выбранные файлы */\n reset: () => void;\n}\n\nexport const FileUploaderDataTids = {\n root: 'FileUploader__root',\n content: 'FileUploader__content',\n link: 'FileUploader__link',\n input: 'FileUploader__input',\n} as const;\n\nconst defaultRenderFile = (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => fileNode;\n\nconst _FileUploader = forwardRefAndName<FileUploaderRef, _FileUploaderProps>('FileUploader', (props, ref) => {\n const theme = useContext(ThemeContext);\n\n const {\n initialFiles,\n disabled,\n error,\n warning,\n multiple = false,\n width = theme.fileUploaderWidth,\n hideFiles = false,\n onBlur,\n onFocus,\n onChange,\n request,\n validateBeforeUpload,\n onRequestSuccess,\n onRequestError,\n size = 'small',\n renderFile = defaultRenderFile,\n ...inputProps\n } = props;\n\n const { files, setFiles, removeFile, reset, setFileValidationResult, isMinLengthReached } =\n useContext(FileUploaderControlContext);\n\n const locale = useControlLocale();\n\n const inputRef = useRef<HTMLInputElement>(null);\n const fileDivRef = useRef<HTMLDivElement>(null);\n\n const isAsync = !!request;\n const isSingleMode = !multiple;\n\n const [isLinkVisible, setIsLinkVisible] = useState(true);\n const upload = useUpload(request, onRequestSuccess, onRequestError);\n\n const tryValidateAndUpload = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n files.forEach(async (file) => {\n const validationMessage = validateBeforeUpload && (await validateBeforeUpload(file));\n\n if (!validationMessage) {\n isAsync && upload(file);\n } else {\n setFileValidationResult(file.id, FileUploaderFileValidationResult.error(validationMessage));\n }\n });\n },\n [validateBeforeUpload, isAsync, upload, setFileValidationResult],\n );\n\n const sizeClassName = useFileUploaderSize(size, {\n small: jsStyles.sizeSmall(theme),\n medium: jsStyles.sizeMedium(theme),\n large: jsStyles.sizeLarge(theme),\n });\n\n const sizeIconClass = useFileUploaderSize(size, {\n small: jsStyles.iconSmall(theme),\n medium: jsStyles.iconMedium(theme),\n large: jsStyles.iconLarge(theme),\n });\n\n const contentInnerClass = useFileUploaderSize(size, {\n small: jsStyles.contentInnerSmall(theme),\n medium: jsStyles.contentInnerMedium(theme),\n large: jsStyles.contentInnerLarge(theme),\n });\n\n /** common part **/\n const handleChange = useCallback(\n (newFiles: FileList | null) => {\n if (!newFiles || !newFiles.length) {\n return;\n }\n\n let filesArray = Array.from(newFiles);\n\n if (isSingleMode) {\n filesArray = [filesArray[0]];\n }\n\n const attachedFiles = filesArray.map(getAttachedFile);\n\n if (isSingleMode && attachedFiles.length && files.length) {\n removeFile(files[0].id);\n }\n\n if (attachedFiles.length) {\n setFiles(attachedFiles);\n tryValidateAndUpload(attachedFiles);\n }\n },\n [tryValidateAndUpload, setFiles, isSingleMode, files, removeFile],\n );\n\n const handleDrop = useCallback(\n (event: DragEvent) => {\n if (disabled) {\n return;\n }\n\n const { dataTransfer } = event;\n if (dataTransfer) {\n if (dataTransfer.files?.length > 0) {\n handleChange(dataTransfer.files);\n }\n dataTransfer.clearData();\n }\n },\n [handleChange, disabled],\n );\n\n const { isDraggable, ref: labelRef } = useDrop<HTMLLabelElement>({ onDrop: handleDrop });\n const { isDraggable: isWindowDraggable, ref: windowRef } = useDrop<Document>();\n\n if (isBrowser(globalObject)) {\n windowRef.current = globalObject.document;\n }\n\n const focus = useCallback(() => {\n keyListener.isTabPressed = true;\n inputRef.current?.focus();\n }, []);\n\n const blur = useCallback(() => {\n inputRef.current?.blur();\n }, []);\n\n useImperativeHandle(ref, () => ({ focus, blur, reset, getRootNode: () => rootNodeRef.current }), [\n ref,\n blur,\n focus,\n reset,\n ]);\n\n const [focusedByTab, setFocusedByTab] = useState(false);\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n handleChange(event.target.files);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n if (!disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n onFocus?.(e);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocusedByTab(false);\n if (!disabled) {\n onBlur?.(e);\n }\n };\n\n const handleRemoveFile = useCallback((fileId: string) => {\n const dataTransfer = new DataTransfer();\n files\n .filter((f) => f.id !== fileId)\n .forEach((file) => {\n dataTransfer.items.add(file.originalFile);\n });\n inputRef.current && (inputRef.current.files = dataTransfer.files);\n }, []);\n\n const [hovered, setHovered] = useState(false);\n\n const uploadButtonClassNames = cx(\n jsStyles.uploadButton(theme),\n sizeClassName,\n focusedByTab && jsStyles.uploadButtonFocus(theme),\n disabled && jsStyles.disabled(theme),\n !disabled && hovered && jsStyles.hovered(theme),\n !!warning && jsStyles.warning(theme),\n !!error && jsStyles.error(theme),\n isDraggable && !disabled && jsStyles.dragOver(theme),\n );\n\n const canDrop = isWindowDraggable && !disabled;\n const uploadButtonWrapperClassNames = cx(canDrop && jsStyles.windowDragOver(theme));\n\n const uploadButtonIconClassNames = cx(jsStyles.icon(theme), sizeIconClass, disabled && jsStyles.iconDisabled(theme));\n\n const hasOneFile = files.length === 1;\n const hasOneFileForSingle = isSingleMode && hasOneFile && !hideFiles;\n\n const contentClassNames = cx(jsStyles.content(), hasOneFileForSingle && jsStyles.contentWithFiles());\n\n const linkClassNames = cx(\n jsStyles.link(theme),\n !disabled && hovered && jsStyles.linkHovered(theme),\n disabled && jsStyles.linkDisabled(theme),\n );\n\n useEffect(() => {\n setIsLinkVisible(hasOneFileForSingle ? !isMinLengthReached : true);\n }, [isMinLengthReached, hasOneFileForSingle]);\n\n useEffect(() => {\n if (!files || !files.length || !inputRef.current) {\n return;\n }\n\n const dataTransfer = new DataTransfer();\n files.forEach((file) => dataTransfer.items.add(file.originalFile));\n inputRef.current.files = dataTransfer.files;\n }, []);\n\n const rootNodeRef = useRef(null);\n\n const iconSizes: Record<SizeProp, number> = {\n small: parseInt(theme.btnIconSizeSmall),\n medium: parseInt(theme.btnIconSizeMedium),\n large: parseInt(theme.btnIconSizeLarge),\n };\n const icon = <UploadIcon size={iconSizes[size]} />;\n\n return (\n <CommonWrapper {...props}>\n <div\n data-tid={FileUploaderDataTids.root}\n className={jsStyles.root(theme)}\n style={useMemoObject({ width })}\n ref={rootNodeRef}\n >\n {!hideFiles && !isSingleMode && !!files.length && (\n <FileUploaderFileList renderFile={renderFile} size={size} onRemove={handleRemoveFile} />\n )}\n <div className={uploadButtonWrapperClassNames}>\n <label\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n ref={labelRef}\n className={uploadButtonClassNames}\n >\n <div\n data-tid={FileUploaderDataTids.content}\n className={cx(contentClassNames, { [contentInnerClass]: !files.length || !isSingleMode })}\n >\n {isLinkVisible && (\n <span data-tid={FileUploaderDataTids.link} className={linkClassNames}>\n {hasOneFileForSingle ? locale.choosedFile : locale.chooseFile}\n </span>\n )}\n {isLinkVisible && String.fromCharCode(0xa0) /* &nbsp; */}\n <div\n className={cx(\n globalClasses.afterLinkText,\n hasOneFileForSingle ? jsStyles.afterLinkText_HasFiles(theme) : jsStyles.afterLinkText(theme),\n )}\n >\n {hasOneFileForSingle ? (\n <div ref={fileDivRef} className={jsStyles.singleFile()}>\n {renderFile(files[0], <FileUploaderFile file={files[0]} size={size} onRemove={handleRemoveFile} />)}\n </div>\n ) : (\n <>\n {locale.orDragHere}&nbsp;\n <div className={uploadButtonIconClassNames}>{icon}</div>\n </>\n )}\n </div>\n </div>\n <FocusControlWrapper onBlurWhenDisabled={() => setFocusedByTab(false)}>\n <input\n {...inputProps}\n data-tid={FileUploaderDataTids.input}\n ref={inputRef}\n tabIndex={disabled ? -1 : 0}\n type=\"file\"\n disabled={disabled}\n multiple={multiple}\n className={jsStyles.visuallyHidden()}\n onClick={stopPropagation}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n </FocusControlWrapper>\n </label>\n </div>\n </div>\n </CommonWrapper>\n );\n});\n\nexport interface FileUploaderProps extends _FileUploaderProps, FileUploaderControlProviderProps {}\n\nexport const FileUploader = withFileUploaderControlProvider<FileUploaderProps, FileUploaderRef>(\n React.memo(_FileUploader),\n);\nFileUploader.displayName = 'FileUploader';\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_globalObject","_fileUtils","_Emotion","_useMemoObject","_FileUploaderControlContext","_useControlLocale","_useUpload","_useDrop3","_ThemeContext","_withFileUploaderControlProvider","_keyListener","_FileUploaderFile","_FileUploaderFileList","_CommonWrapper","_FileUploaderFileValidationResult","_useFileUploaderSize","_forwardRefAndName","_FocusControlWrapper","_UploadIcon","_FileUploader2","_excluded","stopPropagation","e","FileUploaderDataTids","exports","root","content","link","input","defaultRenderFile","file","fileNode","_FileUploader","forwardRefAndName","props","ref","_cx","theme","useContext","ThemeContext","initialFiles","disabled","error","warning","_props$multiple","multiple","_props$width","width","fileUploaderWidth","_props$hideFiles","hideFiles","onBlur","onFocus","onChange","request","validateBeforeUpload","onRequestSuccess","onRequestError","_props$size","size","_props$renderFile","renderFile","inputProps","_objectWithoutPropertiesLoose2","default","_useContext","FileUploaderControlContext","files","setFiles","removeFile","reset","setFileValidationResult","isMinLengthReached","locale","useControlLocale","inputRef","useRef","fileDivRef","isAsync","isSingleMode","_useState","useState","isLinkVisible","setIsLinkVisible","upload","useUpload","tryValidateAndUpload","useCallback","forEach","_ref","_asyncToGenerator2","_regenerator","mark","_callee","validationMessage","wrap","_callee$","_context","prev","next","t0","sent","id","FileUploaderFileValidationResult","stop","_x","apply","arguments","sizeClassName","useFileUploaderSize","small","jsStyles","sizeSmall","medium","sizeMedium","large","sizeLarge","sizeIconClass","iconSmall","iconMedium","iconLarge","contentInnerClass","contentInnerSmall","contentInnerMedium","contentInnerLarge","handleChange","newFiles","length","filesArray","Array","from","attachedFiles","map","getAttachedFile","handleDrop","event","dataTransfer","_dataTransfer$files","clearData","_useDrop","useDrop","onDrop","isDraggable","labelRef","_useDrop2","isWindowDraggable","windowRef","isBrowser","globalObject","current","document","focus","_inputRef$current","keyListener","isTabPressed","blur","_inputRef$current2","useImperativeHandle","getRootNode","rootNodeRef","_useState2","focusedByTab","setFocusedByTab","handleInputChange","target","handleFocus","requestAnimationFrame","handleBlur","handleRemoveFile","fileId","DataTransfer","filter","f","items","add","originalFile","_useState3","hovered","setHovered","uploadButtonClassNames","cx","uploadButton","uploadButtonFocus","dragOver","canDrop","uploadButtonWrapperClassNames","windowDragOver","uploadButtonIconClassNames","icon","iconDisabled","hasOneFile","hasOneFileForSingle","contentClassNames","contentWithFiles","linkClassNames","linkHovered","linkDisabled","useEffect","iconSizes","parseInt","btnIconSizeSmall","btnIconSizeMedium","btnIconSizeLarge","createElement","UploadIcon","CommonWrapper","className","style","useMemoObject","FileUploaderFileList","onRemove","onMouseEnter","onMouseLeave","choosedFile","chooseFile","String","fromCharCode","globalClasses","afterLinkText","afterLinkText_HasFiles","singleFile","FileUploaderFile","Fragment","orDragHere","FocusControlWrapper","onBlurWhenDisabled","_extends2","tabIndex","type","visuallyHidden","onClick","FileUploader","withFileUploaderControlProvider","React","memo","displayName"],"sources":["FileUploader.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { FileUploaderAttachedFile, getAttachedFile } from '../../internal/FileUploaderControl/fileUtils';\nimport { cx } from '../../lib/theming/Emotion';\nimport { InstanceWithRootNode } from '../../lib/rootNode';\nimport { useMemoObject } from '../../hooks/useMemoObject';\nimport { FileUploaderControlContext } from '../../internal/FileUploaderControl/FileUploaderControlContext';\nimport { useControlLocale } from '../../internal/FileUploaderControl/hooks/useControlLocale';\nimport { useUpload } from '../../internal/FileUploaderControl/hooks/useUpload';\nimport { useDrop } from '../../hooks/useDrop';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { FileUploaderControlProviderProps } from '../../internal/FileUploaderControl/FileUploaderControlProvider';\nimport { withFileUploaderControlProvider } from '../../internal/FileUploaderControl/withFileUploaderControlProvider';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { FileUploaderFile } from '../../internal/FileUploaderControl/FileUploaderFile/FileUploaderFile';\nimport { FileUploaderFileList } from '../../internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { FileUploaderFileValidationResult } from '../../internal/FileUploaderControl/FileUploaderFileValidationResult';\nimport { useFileUploaderSize } from '../../internal/FileUploaderControl/hooks/useFileUploaderSize';\nimport { SizeProp } from '../../lib/types/props';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { UploadIcon } from './UploadIcon';\nimport { globalClasses, jsStyles } from './FileUploader.styles';\n\nconst stopPropagation: React.ReactEventHandler = (e) => e.stopPropagation();\n\ntype FileUploaderOverriddenProps = 'size';\n\ninterface _FileUploaderProps\n extends CommonProps,\n Omit<React.InputHTMLAttributes<HTMLInputElement>, FileUploaderOverriddenProps> {\n /** Начальное состояние загруженных файлов */\n initialFiles?: File[];\n /** Состояние ошибки всего контрола */\n error?: boolean;\n /** Состояние предупреждения всего контрола */\n warning?: boolean;\n /** Свойство ширины. */\n width?: React.CSSProperties['width'];\n /**\n * Задаёт размер контрола.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: SizeProp;\n /** Свойство, скрывающее отображение файлов. */\n hideFiles?: boolean;\n\n /** Функция, через которую отправляем файлы. Используется для отслеживания статуса загрузки файла. */\n request?: (file: FileUploaderAttachedFile) => Promise<void>;\n /** Срабатывает при удачной попытке отправки через request */\n onRequestSuccess?: (fileId: string) => void;\n /** Срабатывает при неудачной попытке отправки через request */\n onRequestError?: (fileId: string) => void;\n\n /**\n * Функция валидации каждого файла.\n * Срабатывает после выбора файлов и перед попыткой отправить в request.\n * Чтобы вывести валидацию ошибки, промис должен вернуть строку.\n * */\n validateBeforeUpload?: (file: FileUploaderAttachedFile) => Promise<Nullable<string>>;\n\n /**\n * Функция, позволяющая кастомизировать файлы.\n * Через нее можно вешать кастомные валидации на каждый файл.\n * */\n renderFile?: (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => React.ReactNode;\n}\n\nexport interface FileUploaderRef extends InstanceWithRootNode {\n focus: () => void;\n blur: () => void;\n /** Сбрасывает выбранные файлы */\n reset: () => void;\n removeFile: (fileId: string) => void;\n}\n\nexport const FileUploaderDataTids = {\n root: 'FileUploader__root',\n content: 'FileUploader__content',\n link: 'FileUploader__link',\n input: 'FileUploader__input',\n} as const;\n\nconst defaultRenderFile = (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => fileNode;\n\nconst _FileUploader = forwardRefAndName<FileUploaderRef, _FileUploaderProps>('FileUploader', (props, ref) => {\n const theme = useContext(ThemeContext);\n\n const {\n initialFiles,\n disabled,\n error,\n warning,\n multiple = false,\n width = theme.fileUploaderWidth,\n hideFiles = false,\n onBlur,\n onFocus,\n onChange,\n request,\n validateBeforeUpload,\n onRequestSuccess,\n onRequestError,\n size = 'small',\n renderFile = defaultRenderFile,\n ...inputProps\n } = props;\n\n const { files, setFiles, removeFile, reset, setFileValidationResult, isMinLengthReached } =\n useContext(FileUploaderControlContext);\n\n const locale = useControlLocale();\n\n const inputRef = useRef<HTMLInputElement>(null);\n const fileDivRef = useRef<HTMLDivElement>(null);\n\n const isAsync = !!request;\n const isSingleMode = !multiple;\n\n const [isLinkVisible, setIsLinkVisible] = useState(true);\n const upload = useUpload(request, onRequestSuccess, onRequestError);\n\n const tryValidateAndUpload = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n files.forEach(async (file) => {\n const validationMessage = validateBeforeUpload && (await validateBeforeUpload(file));\n\n if (!validationMessage) {\n isAsync && upload(file);\n } else {\n setFileValidationResult(file.id, FileUploaderFileValidationResult.error(validationMessage));\n }\n });\n },\n [validateBeforeUpload, isAsync, upload, setFileValidationResult],\n );\n\n const sizeClassName = useFileUploaderSize(size, {\n small: jsStyles.sizeSmall(theme),\n medium: jsStyles.sizeMedium(theme),\n large: jsStyles.sizeLarge(theme),\n });\n\n const sizeIconClass = useFileUploaderSize(size, {\n small: jsStyles.iconSmall(theme),\n medium: jsStyles.iconMedium(theme),\n large: jsStyles.iconLarge(theme),\n });\n\n const contentInnerClass = useFileUploaderSize(size, {\n small: jsStyles.contentInnerSmall(theme),\n medium: jsStyles.contentInnerMedium(theme),\n large: jsStyles.contentInnerLarge(theme),\n });\n\n /** common part **/\n const handleChange = useCallback(\n (newFiles: FileList | null) => {\n if (!newFiles || !newFiles.length) {\n return;\n }\n\n let filesArray = Array.from(newFiles);\n\n if (isSingleMode) {\n filesArray = [filesArray[0]];\n }\n\n const attachedFiles = filesArray.map(getAttachedFile);\n\n if (isSingleMode && attachedFiles.length && files.length) {\n removeFile(files[0].id);\n }\n\n if (attachedFiles.length) {\n setFiles(attachedFiles);\n tryValidateAndUpload(attachedFiles);\n }\n },\n [tryValidateAndUpload, setFiles, isSingleMode, files, removeFile],\n );\n\n const handleDrop = useCallback(\n (event: DragEvent) => {\n if (disabled) {\n return;\n }\n\n const { dataTransfer } = event;\n if (dataTransfer) {\n if (dataTransfer.files?.length > 0) {\n handleChange(dataTransfer.files);\n }\n dataTransfer.clearData();\n }\n },\n [handleChange, disabled],\n );\n\n const { isDraggable, ref: labelRef } = useDrop<HTMLLabelElement>({ onDrop: handleDrop });\n const { isDraggable: isWindowDraggable, ref: windowRef } = useDrop<Document>();\n\n if (isBrowser(globalObject)) {\n windowRef.current = globalObject.document;\n }\n\n const focus = useCallback(() => {\n keyListener.isTabPressed = true;\n inputRef.current?.focus();\n }, []);\n\n const blur = useCallback(() => {\n inputRef.current?.blur();\n }, []);\n\n useImperativeHandle(ref, () => ({ focus, blur, reset, removeFile, getRootNode: () => rootNodeRef.current }), [\n ref,\n blur,\n focus,\n reset,\n removeFile,\n ]);\n\n const [focusedByTab, setFocusedByTab] = useState(false);\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n handleChange(event.target.files);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n if (!disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n onFocus?.(e);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocusedByTab(false);\n if (!disabled) {\n onBlur?.(e);\n }\n };\n\n const handleRemoveFile = useCallback((fileId: string) => {\n const dataTransfer = new DataTransfer();\n files\n .filter((f) => f.id !== fileId)\n .forEach((file) => {\n dataTransfer.items.add(file.originalFile);\n });\n inputRef.current && (inputRef.current.files = dataTransfer.files);\n }, []);\n\n const [hovered, setHovered] = useState(false);\n\n const uploadButtonClassNames = cx(\n jsStyles.uploadButton(theme),\n sizeClassName,\n focusedByTab && jsStyles.uploadButtonFocus(theme),\n disabled && jsStyles.disabled(theme),\n !disabled && hovered && jsStyles.hovered(theme),\n !!warning && jsStyles.warning(theme),\n !!error && jsStyles.error(theme),\n isDraggable && !disabled && jsStyles.dragOver(theme),\n );\n\n const canDrop = isWindowDraggable && !disabled;\n const uploadButtonWrapperClassNames = cx(canDrop && jsStyles.windowDragOver(theme));\n\n const uploadButtonIconClassNames = cx(jsStyles.icon(theme), sizeIconClass, disabled && jsStyles.iconDisabled(theme));\n\n const hasOneFile = files.length === 1;\n const hasOneFileForSingle = isSingleMode && hasOneFile && !hideFiles;\n\n const contentClassNames = cx(jsStyles.content(), hasOneFileForSingle && jsStyles.contentWithFiles());\n\n const linkClassNames = cx(\n jsStyles.link(theme),\n !disabled && hovered && jsStyles.linkHovered(theme),\n disabled && jsStyles.linkDisabled(theme),\n );\n\n useEffect(() => {\n setIsLinkVisible(hasOneFileForSingle ? !isMinLengthReached : true);\n }, [isMinLengthReached, hasOneFileForSingle]);\n\n useEffect(() => {\n if (!files || !files.length || !inputRef.current) {\n return;\n }\n\n const dataTransfer = new DataTransfer();\n files.forEach((file) => dataTransfer.items.add(file.originalFile));\n inputRef.current.files = dataTransfer.files;\n }, []);\n\n const rootNodeRef = useRef(null);\n\n const iconSizes: Record<SizeProp, number> = {\n small: parseInt(theme.btnIconSizeSmall),\n medium: parseInt(theme.btnIconSizeMedium),\n large: parseInt(theme.btnIconSizeLarge),\n };\n const icon = <UploadIcon size={iconSizes[size]} />;\n\n return (\n <CommonWrapper {...props}>\n <div\n data-tid={FileUploaderDataTids.root}\n className={jsStyles.root(theme)}\n style={useMemoObject({ width })}\n ref={rootNodeRef}\n >\n {!hideFiles && !isSingleMode && !!files.length && (\n <FileUploaderFileList renderFile={renderFile} size={size} onRemove={handleRemoveFile} />\n )}\n <div className={uploadButtonWrapperClassNames}>\n <label\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n ref={labelRef}\n className={uploadButtonClassNames}\n >\n <div\n data-tid={FileUploaderDataTids.content}\n className={cx(contentClassNames, { [contentInnerClass]: !files.length || !isSingleMode })}\n >\n {isLinkVisible && (\n <span data-tid={FileUploaderDataTids.link} className={linkClassNames}>\n {hasOneFileForSingle ? locale.choosedFile : locale.chooseFile}\n </span>\n )}\n {isLinkVisible && String.fromCharCode(0xa0) /* &nbsp; */}\n <div\n className={cx(\n globalClasses.afterLinkText,\n hasOneFileForSingle ? jsStyles.afterLinkText_HasFiles(theme) : jsStyles.afterLinkText(theme),\n )}\n >\n {hasOneFileForSingle ? (\n <div ref={fileDivRef} className={jsStyles.singleFile()}>\n {renderFile(files[0], <FileUploaderFile file={files[0]} size={size} onRemove={handleRemoveFile} />)}\n </div>\n ) : (\n <>\n {locale.orDragHere}&nbsp;\n <div className={uploadButtonIconClassNames}>{icon}</div>\n </>\n )}\n </div>\n </div>\n <FocusControlWrapper onBlurWhenDisabled={() => setFocusedByTab(false)}>\n <input\n {...inputProps}\n data-tid={FileUploaderDataTids.input}\n ref={inputRef}\n tabIndex={disabled ? -1 : 0}\n type=\"file\"\n disabled={disabled}\n multiple={multiple}\n className={jsStyles.visuallyHidden()}\n onClick={stopPropagation}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n </FocusControlWrapper>\n </label>\n </div>\n </div>\n </CommonWrapper>\n );\n});\n\nexport interface FileUploaderProps extends _FileUploaderProps, FileUploaderControlProviderProps {}\n\nexport const FileUploader = withFileUploaderControlProvider<FileUploaderProps, FileUploaderRef>(\n React.memo(_FileUploader),\n);\nFileUploader.displayName = 'FileUploader';\n"],"mappings":"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","ignoreList":[]}
@@ -82,6 +82,29 @@ import { FileUploader } from '@skbkontur/react-ui';
82
82
  <FileUploader multiple error />
83
83
  ```
84
84
 
85
+ Ручное удаление файлов
86
+
87
+ В критичных случаях, если нужно удалить файлы из контрола вручную, то это можно сделать, используя метод `removeFile` из `ref`.
88
+ Обратите внимание, что при вызове `removeFile` вызываются коллбэки `onRemove` и `onValueChange`.
89
+
90
+ ```jsx harmony
91
+ import { FileUploader, Button } from '@skbkontur/react-ui';
92
+
93
+ const fileUploaderRef = React.useRef(null);
94
+ const [fileList, setFileList] = React.useState([]);
95
+
96
+ <div style={{ display: 'inline-grid', gap: '10px' }}>
97
+ <FileUploader ref={fileUploaderRef} multiple onValueChange={(files) => setFileList(files)} />
98
+ {fileList.map((file) => {
99
+ return (
100
+ <Button key={file.id} onClick={() => fileUploaderRef.current.removeFile(file.id)}>
101
+ Delete file {file.originalFile.name}
102
+ </Button>
103
+ );
104
+ })}
105
+ </div>
106
+ ```
107
+
85
108
  #### Локали по умолчанию
86
109
 
87
110
  ```typescript static
@@ -383,10 +383,12 @@ export var Calendar = rootNode(_class = (_Calendar = /*#__PURE__*/function (_Rea
383
383
  if (onMonthChange) {
384
384
  var visibleMonthsModels = this.getVisibleMonths(this.state).map(this.getViewModel);
385
385
  var prevFirstVisibleMonthModels = this.getVisibleMonths(prevState).map(this.getViewModel);
386
- var currentMonth = visibleMonthsModels[0].month;
387
- var prevCurrentMonth = prevFirstVisibleMonthModels[0].month;
388
- if (currentMonth !== prevCurrentMonth) {
389
- this.handleMonthChange(visibleMonthsModels);
386
+ if (visibleMonthsModels.length > 0 && prevFirstVisibleMonthModels.length > 0) {
387
+ var currentMonth = visibleMonthsModels[0].month;
388
+ var prevCurrentMonth = prevFirstVisibleMonthModels[0].month;
389
+ if (currentMonth !== prevCurrentMonth) {
390
+ this.handleMonthChange(visibleMonthsModels);
391
+ }
390
392
  }
391
393
  }
392
394
  };
@@ -1 +1 @@
1
- {"version":3,"names":["React","normalizeWheel","throttle","shallowEqual","globalObject","isInstanceOf","InternalDate","rootNode","cx","CommonWrapper","MAX_DATE","MAX_MONTH","MAX_YEAR","MIN_DATE","MIN_MONTH","MIN_YEAR","ThemeContext","animation","isMobile","createPropsGetter","InternalDateTransformer","themeConfig","MonthViewModel","CalendarScrollEvents","Month","styles","create","isGreater","isLess","CalendarUtils","CalendarContext","CalendarDay","CalendarDataTids","root","month","dayCell","headerMonth","headerYear","Calendar","_class","_Calendar","_React$Component","props","_this$props$initialYe","_this","call","getProps","defaultProps","touchStartY","scrollToMonth","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","year","monthNative","minDate","maxDate","minMonth","maxMonth","currentMonth","diffInMonths","maxMonthsToAdd","onEnd","isYearChanges","monthsToPrependCount","monthsToPrepend","monthsToAppendCount","monthsToAppend","wrap","_callee$","_context","prev","next","getMonthInNativeFormat","inProgress","finish","Promise","r","setTimeout","getDateInNativeFormat","getMonthInHumanFormat","abrupt","state","months","scrollTo","theme","MAX_MONTHS_TO_APPEND_ON_SCROLL","setState","getMonths","scrollPosition","Math","abs","min","Array","from","length","_","index","yearChanges","isFirstInYear","isLastInYear","concat","getMonthsHeight","targetPosition","getHeight","slice","stop","_x","_x2","apply","arguments","handleMonthChange","visibleMonths","changeInfo","onMonthChange","getViewModel","item","renderMain","monthsForRender","getVisibleMonths","wrapperStyle","height","WRAPPER_HEIGHT","context","value","isHoliday","renderDay","today","getTodayDate","onDateClick","handleDateClick","createElement","_extends","rootNodeRef","setRootNode","ref","refRoot","className","style","wrapper","Provider","map","renderMonth","separator","element","addEventListener","handleTouchStart","throttledHandleTouchMove","handleWheel","passive","removeEventListener","dateShape","dateToHumanString","onValueChange","handleMonthYearChange","executeAnimations","pixelY","_ref2","calculateScrollPosition","scrollTarget","handleWheelEnd","animate","deltaY","applyDelta","emit","event","TouchEvent","clientY","targetTouches","handleTouchMove","changedTouches","WheelEvent","preventDefault","_normalizeWheel","wheelEndTimeout","clearTimeout","scrollToNearestWeek","_this$state","scrollDirection","thresholdHeight","MONTH_TITLE_OFFSET_HEIGHT","DAY_HEIGHT","amount","pos","scrollAmmount","scrollAmount","_ref3","_this$getProps","minDateShape","maxDateShape","initialDate","getInitialDate","date","initialMonth","initialYear","_inheritsLoose","formatDate","setComponents","toString","withPad","_proto","prototype","componentDidUpdate","prevProps","prevState","_this$props","parseValue","getComponentsLikeNumber","visibleMonthsModels","prevFirstVisibleMonthModels","prevCurrentMonth","componentWillUnmount","cancel","render","_this2","Consumer","_ref4","top","key","onMonthYearChange","toNativeFormat","getMonthPositions","positions","i","position","push","_this3","x","filter","_ref5","isMonthVisible","Component","__KONTUR_REACT_UI__","displayName","Day","_day","isWeekend"],"sources":["Calendar.tsx"],"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 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 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, 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 const monthNative = CalendarUtils.getMonthInNativeFormat(month);\n\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, monthNative, year))) {\n const minMonth = CalendarUtils.getMonthInHumanFormat(minDate.month);\n this.scrollToMonth(minMonth, minDate.year);\n return;\n }\n\n if (maxDate && isLess(maxDate, create(0, monthNative, year))) {\n const maxMonth = CalendarUtils.getMonthInHumanFormat(maxDate.month);\n this.scrollToMonth(maxMonth, maxDate.year);\n return;\n }\n\n const currentMonth = this.state.months[1];\n const diffInMonths = currentMonth.month + currentMonth.year * 12 - monthNative - 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(monthNative, 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(monthNative + 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(monthNative + 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 = (monthNative: number, year: number) => {\n const month = CalendarUtils.getMonthInHumanFormat(monthNative);\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"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","normalizeWheel","throttle","shallowEqual","globalObject","isInstanceOf","InternalDate","rootNode","cx","CommonWrapper","MAX_DATE","MAX_MONTH","MAX_YEAR","MIN_DATE","MIN_MONTH","MIN_YEAR","ThemeContext","animation","isMobile","createPropsGetter","InternalDateTransformer","themeConfig","MonthViewModel","CalendarScrollEvents","Month","styles","create","isGreater","isLess","CalendarUtils","CalendarContext","CalendarDay","CalendarDataTids","root","month","dayCell","headerMonth","headerYear","Calendar","_class","_Calendar","_React$Component","props","_this$props$initialYe","_this","call","getProps","defaultProps","touchStartY","scrollToMonth","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","year","monthNative","minDate","maxDate","minMonth","maxMonth","currentMonth","diffInMonths","maxMonthsToAdd","onEnd","isYearChanges","monthsToPrependCount","monthsToPrepend","monthsToAppendCount","monthsToAppend","wrap","_callee$","_context","prev","next","getMonthInNativeFormat","inProgress","finish","Promise","r","setTimeout","getDateInNativeFormat","getMonthInHumanFormat","abrupt","state","months","scrollTo","theme","MAX_MONTHS_TO_APPEND_ON_SCROLL","setState","getMonths","scrollPosition","Math","abs","min","Array","from","length","_","index","yearChanges","isFirstInYear","isLastInYear","concat","getMonthsHeight","targetPosition","getHeight","slice","stop","_x","_x2","apply","arguments","handleMonthChange","visibleMonths","changeInfo","onMonthChange","getViewModel","item","renderMain","monthsForRender","getVisibleMonths","wrapperStyle","height","WRAPPER_HEIGHT","context","value","isHoliday","renderDay","today","getTodayDate","onDateClick","handleDateClick","createElement","_extends","rootNodeRef","setRootNode","ref","refRoot","className","style","wrapper","Provider","map","renderMonth","separator","element","addEventListener","handleTouchStart","throttledHandleTouchMove","handleWheel","passive","removeEventListener","dateShape","dateToHumanString","onValueChange","handleMonthYearChange","executeAnimations","pixelY","_ref2","calculateScrollPosition","scrollTarget","handleWheelEnd","animate","deltaY","applyDelta","emit","event","TouchEvent","clientY","targetTouches","handleTouchMove","changedTouches","WheelEvent","preventDefault","_normalizeWheel","wheelEndTimeout","clearTimeout","scrollToNearestWeek","_this$state","scrollDirection","thresholdHeight","MONTH_TITLE_OFFSET_HEIGHT","DAY_HEIGHT","amount","pos","scrollAmmount","scrollAmount","_ref3","_this$getProps","minDateShape","maxDateShape","initialDate","getInitialDate","date","initialMonth","initialYear","_inheritsLoose","formatDate","setComponents","toString","withPad","_proto","prototype","componentDidUpdate","prevProps","prevState","_this$props","parseValue","getComponentsLikeNumber","visibleMonthsModels","prevFirstVisibleMonthModels","prevCurrentMonth","componentWillUnmount","cancel","render","_this2","Consumer","_ref4","top","key","onMonthYearChange","toNativeFormat","getMonthPositions","positions","i","position","push","_this3","x","filter","_ref5","isMonthVisible","Component","__KONTUR_REACT_UI__","displayName","Day","_day","isWeekend"],"sources":["Calendar.tsx"],"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 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 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, 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\n if (visibleMonthsModels.length > 0 && prevFirstVisibleMonthModels.length > 0) {\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\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 const monthNative = CalendarUtils.getMonthInNativeFormat(month);\n\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, monthNative, year))) {\n const minMonth = CalendarUtils.getMonthInHumanFormat(minDate.month);\n this.scrollToMonth(minMonth, minDate.year);\n return;\n }\n\n if (maxDate && isLess(maxDate, create(0, monthNative, year))) {\n const maxMonth = CalendarUtils.getMonthInHumanFormat(maxDate.month);\n this.scrollToMonth(maxMonth, maxDate.year);\n return;\n }\n\n const currentMonth = this.state.months[1];\n const diffInMonths = currentMonth.month + currentMonth.year * 12 - monthNative - 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(monthNative, 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(monthNative + 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(monthNative + 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 = (monthNative: number, year: number) => {\n const month = CalendarUtils.getMonthInHumanFormat(monthNative);\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"],"mappings":"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","ignoreList":[]}
@@ -6,7 +6,6 @@ import { MobilePopup } from "../../../internal/MobilePopup";
6
6
  import { DateInput } from "../../DateInput";
7
7
  import { Button } from "../../Button";
8
8
  import { useLocaleForControl } from "../../../lib/locale/useLocaleForControl";
9
- import { useEffectWithoutInitCall } from "../../../hooks/useEffectWithoutInitCall";
10
9
  import { DatePickerLocaleHelper } from "../locale";
11
10
  import { styles } from "../MobilePicker.styles";
12
11
  import { getMobilePickerTheme } from "../getMobilePickerTheme";
@@ -42,13 +41,6 @@ export var MobilePicker = function MobilePicker(props) {
42
41
  calendarRef.current.scrollToMonth(month, year);
43
42
  }
44
43
  };
45
- useEffectWithoutInitCall(function () {
46
- if (props.value && calendarRef.current) {
47
- var _month = getMonthInHumanFormat(+props.value.substring(3, 5));
48
- var _year = +props.value.substring(6);
49
- calendarRef.current.scrollToMonth(_month, _year);
50
- }
51
- }, [props.value]);
52
44
  return /*#__PURE__*/(
53
45
  React.createElement(ThemeContext.Provider, {
54
46
  value: theme
@@ -1 +1 @@
1
- {"version":3,"names":["React","useContext","useLayoutEffect","useRef","useState","Calendar","getMonthInHumanFormat","getTodayDate","ThemeContext","MobilePopup","DateInput","Button","useLocaleForControl","useEffectWithoutInitCall","DatePickerLocaleHelper","styles","getMobilePickerTheme","MobilePickerDataTids","input","today","MobilePicker","props","locale","theme","calendarRef","inputRef","_useState","_useState$","monthNative","month","year","onValueChange","date","onCloseRequest","setTimeout","_inputRef$current","current","focus","onTodayClick","scrollToMonth","value","substring","createElement","Provider","opened","headerChildComponent","width","withIcon","ref","minDate","maxDate","size","warning","error","footerChildComponent","enableTodayLink","onClick","className","calendarRoot","isHoliday","renderDay","onMonthChange"],"sources":["MobilePicker.tsx"],"sourcesContent":["import React, { useContext, useLayoutEffect, useRef, useState } from 'react';\n\nimport { Calendar } from '../Calendar';\nimport { getMonthInHumanFormat, getTodayDate } from '../Calendar/CalendarUtils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { MobilePopup } from '../../internal/MobilePopup';\nimport { DateInput } from '../DateInput';\nimport { Button } from '../Button';\nimport { useLocaleForControl } from '../../lib/locale/useLocaleForControl';\nimport { useEffectWithoutInitCall } from '../../hooks/useEffectWithoutInitCall';\n\nimport { DatePickerProps } from './DatePicker';\nimport { DatePickerLocaleHelper } from './locale';\nimport { styles } from './MobilePicker.styles';\nimport { getMobilePickerTheme } from './getMobilePickerTheme';\n\nexport const MobilePickerDataTids = {\n input: 'MobilePicker__input',\n today: 'MobilePicker__today',\n} as const;\n\nexport interface MobilePickerProps\n extends Pick<\n DatePickerProps,\n | 'error'\n | 'warning'\n | 'value'\n | 'minDate'\n | 'maxDate'\n | 'onValueChange'\n | 'isHoliday'\n | 'enableTodayLink'\n | 'renderDay'\n | 'onMonthChange'\n > {\n onCloseRequest?: () => void;\n}\n\nexport const MobilePicker: React.FC<MobilePickerProps> = (props) => {\n const locale = useLocaleForControl('DatePicker', DatePickerLocaleHelper);\n const theme = getMobilePickerTheme(useContext(ThemeContext));\n\n const calendarRef = useRef<Calendar>(null);\n const inputRef = useRef<DateInput>(null);\n\n const [{ month: monthNative, year }] = useState(() => getTodayDate());\n const month = getMonthInHumanFormat(monthNative);\n\n const onValueChange = (date: string) => {\n props.onValueChange?.(date);\n props.onCloseRequest?.();\n };\n\n useLayoutEffect(() => {\n // fix DateInput flushSync warning in React 18\n setTimeout(() => {\n inputRef.current?.focus();\n });\n }, []);\n\n const onTodayClick = () => {\n if (calendarRef.current) {\n calendarRef.current.scrollToMonth(month, year);\n }\n };\n\n useEffectWithoutInitCall(() => {\n if (props.value && calendarRef.current) {\n const month = getMonthInHumanFormat(+props.value.substring(3, 5));\n const year = +props.value.substring(6);\n calendarRef.current.scrollToMonth(month, year);\n }\n }, [props.value]);\n\n return (\n <ThemeContext.Provider value={theme}>\n <MobilePopup\n opened\n headerChildComponent={\n <DateInput\n value={props.value || ''}\n width=\"100%\"\n withIcon\n ref={inputRef}\n minDate={props.minDate}\n maxDate={props.maxDate}\n onValueChange={props.onValueChange}\n size=\"medium\"\n warning={props.warning}\n error={props.error}\n data-tid={MobilePickerDataTids.input}\n />\n }\n footerChildComponent={\n props.enableTodayLink && (\n <Button size=\"medium\" onClick={onTodayClick} data-tid={MobilePickerDataTids.today}>\n {locale.today}\n </Button>\n )\n }\n onCloseRequest={props.onCloseRequest}\n >\n <Calendar\n ref={calendarRef}\n value={props.value}\n className={styles.calendarRoot()}\n minDate={props.minDate}\n maxDate={props.maxDate}\n onValueChange={onValueChange}\n isHoliday={props.isHoliday}\n renderDay={props.renderDay}\n onMonthChange={props.onMonthChange}\n />\n </MobilePopup>\n </ThemeContext.Provider>\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useContext","useLayoutEffect","useRef","useState","Calendar","getMonthInHumanFormat","getTodayDate","ThemeContext","MobilePopup","DateInput","Button","useLocaleForControl","DatePickerLocaleHelper","styles","getMobilePickerTheme","MobilePickerDataTids","input","today","MobilePicker","props","locale","theme","calendarRef","inputRef","_useState","_useState$","monthNative","month","year","onValueChange","date","onCloseRequest","setTimeout","_inputRef$current","current","focus","onTodayClick","scrollToMonth","createElement","Provider","value","opened","headerChildComponent","width","withIcon","ref","minDate","maxDate","size","warning","error","footerChildComponent","enableTodayLink","onClick","className","calendarRoot","isHoliday","renderDay","onMonthChange"],"sources":["MobilePicker.tsx"],"sourcesContent":["import React, { useContext, useLayoutEffect, useRef, useState } from 'react';\n\nimport { Calendar } from '../Calendar';\nimport { getMonthInHumanFormat, getTodayDate } from '../Calendar/CalendarUtils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { MobilePopup } from '../../internal/MobilePopup';\nimport { DateInput } from '../DateInput';\nimport { Button } from '../Button';\nimport { useLocaleForControl } from '../../lib/locale/useLocaleForControl';\n\nimport { DatePickerProps } from './DatePicker';\nimport { DatePickerLocaleHelper } from './locale';\nimport { styles } from './MobilePicker.styles';\nimport { getMobilePickerTheme } from './getMobilePickerTheme';\n\nexport const MobilePickerDataTids = {\n input: 'MobilePicker__input',\n today: 'MobilePicker__today',\n} as const;\n\nexport interface MobilePickerProps\n extends Pick<\n DatePickerProps,\n | 'error'\n | 'warning'\n | 'value'\n | 'minDate'\n | 'maxDate'\n | 'onValueChange'\n | 'isHoliday'\n | 'enableTodayLink'\n | 'renderDay'\n | 'onMonthChange'\n > {\n onCloseRequest?: () => void;\n}\n\nexport const MobilePicker: React.FC<MobilePickerProps> = (props) => {\n const locale = useLocaleForControl('DatePicker', DatePickerLocaleHelper);\n const theme = getMobilePickerTheme(useContext(ThemeContext));\n\n const calendarRef = useRef<Calendar>(null);\n const inputRef = useRef<DateInput>(null);\n\n const [{ month: monthNative, year }] = useState(() => getTodayDate());\n const month = getMonthInHumanFormat(monthNative);\n\n const onValueChange = (date: string) => {\n props.onValueChange?.(date);\n props.onCloseRequest?.();\n };\n\n useLayoutEffect(() => {\n // fix DateInput flushSync warning in React 18\n setTimeout(() => {\n inputRef.current?.focus();\n });\n }, []);\n\n const onTodayClick = () => {\n if (calendarRef.current) {\n calendarRef.current.scrollToMonth(month, year);\n }\n };\n\n return (\n <ThemeContext.Provider value={theme}>\n <MobilePopup\n opened\n headerChildComponent={\n <DateInput\n value={props.value || ''}\n width=\"100%\"\n withIcon\n ref={inputRef}\n minDate={props.minDate}\n maxDate={props.maxDate}\n onValueChange={props.onValueChange}\n size=\"medium\"\n warning={props.warning}\n error={props.error}\n data-tid={MobilePickerDataTids.input}\n />\n }\n footerChildComponent={\n props.enableTodayLink && (\n <Button size=\"medium\" onClick={onTodayClick} data-tid={MobilePickerDataTids.today}>\n {locale.today}\n </Button>\n )\n }\n onCloseRequest={props.onCloseRequest}\n >\n <Calendar\n ref={calendarRef}\n value={props.value}\n className={styles.calendarRoot()}\n minDate={props.minDate}\n maxDate={props.maxDate}\n onValueChange={onValueChange}\n isHoliday={props.isHoliday}\n renderDay={props.renderDay}\n onMonthChange={props.onMonthChange}\n />\n </MobilePopup>\n </ThemeContext.Provider>\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -183,11 +183,12 @@ var _FileUploader = forwardRefAndName('FileUploader', function (props, ref) {
183
183
  focus: focus,
184
184
  blur: blur,
185
185
  reset: reset,
186
+ removeFile: removeFile,
186
187
  getRootNode: function getRootNode() {
187
188
  return rootNodeRef.current;
188
189
  }
189
190
  };
190
- }, [ref, blur, focus, reset]);
191
+ }, [ref, blur, focus, reset, removeFile]);
191
192
  var _useState2 = useState(false),
192
193
  focusedByTab = _useState2[0],
193
194
  setFocusedByTab = _useState2[1];
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useContext","useEffect","useImperativeHandle","useRef","useState","globalObject","isBrowser","getAttachedFile","cx","useMemoObject","FileUploaderControlContext","useControlLocale","useUpload","useDrop","ThemeContext","withFileUploaderControlProvider","keyListener","FileUploaderFile","FileUploaderFileList","CommonWrapper","FileUploaderFileValidationResult","useFileUploaderSize","forwardRefAndName","FocusControlWrapper","UploadIcon","globalClasses","jsStyles","stopPropagation","e","FileUploaderDataTids","root","content","link","input","defaultRenderFile","file","fileNode","_FileUploader","props","ref","_cx","theme","initialFiles","disabled","error","warning","_props$multiple","multiple","_props$width","width","fileUploaderWidth","_props$hideFiles","hideFiles","onBlur","onFocus","onChange","request","validateBeforeUpload","onRequestSuccess","onRequestError","_props$size","size","_props$renderFile","renderFile","inputProps","_objectWithoutPropertiesLoose","_excluded","_useContext","files","setFiles","removeFile","reset","setFileValidationResult","isMinLengthReached","locale","inputRef","fileDivRef","isAsync","isSingleMode","_useState","isLinkVisible","setIsLinkVisible","upload","tryValidateAndUpload","forEach","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","validationMessage","wrap","_callee$","_context","prev","next","t0","sent","id","stop","_x","apply","arguments","sizeClassName","small","sizeSmall","medium","sizeMedium","large","sizeLarge","sizeIconClass","iconSmall","iconMedium","iconLarge","contentInnerClass","contentInnerSmall","contentInnerMedium","contentInnerLarge","handleChange","newFiles","length","filesArray","Array","from","attachedFiles","map","handleDrop","event","dataTransfer","_dataTransfer$files","clearData","_useDrop","onDrop","isDraggable","labelRef","_useDrop2","isWindowDraggable","windowRef","current","document","focus","_inputRef$current","isTabPressed","blur","_inputRef$current2","getRootNode","rootNodeRef","_useState2","focusedByTab","setFocusedByTab","handleInputChange","target","handleFocus","requestAnimationFrame","handleBlur","handleRemoveFile","fileId","DataTransfer","filter","f","items","add","originalFile","_useState3","hovered","setHovered","uploadButtonClassNames","uploadButton","uploadButtonFocus","dragOver","canDrop","uploadButtonWrapperClassNames","windowDragOver","uploadButtonIconClassNames","icon","iconDisabled","hasOneFile","hasOneFileForSingle","contentClassNames","contentWithFiles","linkClassNames","linkHovered","linkDisabled","iconSizes","parseInt","btnIconSizeSmall","btnIconSizeMedium","btnIconSizeLarge","createElement","className","style","onRemove","onMouseEnter","onMouseLeave","choosedFile","chooseFile","String","fromCharCode","afterLinkText","afterLinkText_HasFiles","singleFile","Fragment","orDragHere","onBlurWhenDisabled","_extends","tabIndex","type","visuallyHidden","onClick","FileUploader","memo","displayName"],"sources":["FileUploader.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { FileUploaderAttachedFile, getAttachedFile } from '../../internal/FileUploaderControl/fileUtils';\nimport { cx } from '../../lib/theming/Emotion';\nimport { InstanceWithRootNode } from '../../lib/rootNode';\nimport { useMemoObject } from '../../hooks/useMemoObject';\nimport { FileUploaderControlContext } from '../../internal/FileUploaderControl/FileUploaderControlContext';\nimport { useControlLocale } from '../../internal/FileUploaderControl/hooks/useControlLocale';\nimport { useUpload } from '../../internal/FileUploaderControl/hooks/useUpload';\nimport { useDrop } from '../../hooks/useDrop';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { FileUploaderControlProviderProps } from '../../internal/FileUploaderControl/FileUploaderControlProvider';\nimport { withFileUploaderControlProvider } from '../../internal/FileUploaderControl/withFileUploaderControlProvider';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { FileUploaderFile } from '../../internal/FileUploaderControl/FileUploaderFile/FileUploaderFile';\nimport { FileUploaderFileList } from '../../internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { FileUploaderFileValidationResult } from '../../internal/FileUploaderControl/FileUploaderFileValidationResult';\nimport { useFileUploaderSize } from '../../internal/FileUploaderControl/hooks/useFileUploaderSize';\nimport { SizeProp } from '../../lib/types/props';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { UploadIcon } from './UploadIcon';\nimport { globalClasses, jsStyles } from './FileUploader.styles';\n\nconst stopPropagation: React.ReactEventHandler = (e) => e.stopPropagation();\n\ntype FileUploaderOverriddenProps = 'size';\n\ninterface _FileUploaderProps\n extends CommonProps,\n Omit<React.InputHTMLAttributes<HTMLInputElement>, FileUploaderOverriddenProps> {\n /** Начальное состояние загруженных файлов */\n initialFiles?: File[];\n /** Состояние ошибки всего контрола */\n error?: boolean;\n /** Состояние предупреждения всего контрола */\n warning?: boolean;\n /** Свойство ширины. */\n width?: React.CSSProperties['width'];\n /**\n * Задаёт размер контрола.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: SizeProp;\n /** Свойство, скрывающее отображение файлов. */\n hideFiles?: boolean;\n\n /** Функция, через которую отправляем файлы. Используется для отслеживания статуса загрузки файла. */\n request?: (file: FileUploaderAttachedFile) => Promise<void>;\n /** Срабатывает при удачной попытке отправки через request */\n onRequestSuccess?: (fileId: string) => void;\n /** Срабатывает при неудачной попытке отправки через request */\n onRequestError?: (fileId: string) => void;\n\n /**\n * Функция валидации каждого файла.\n * Срабатывает после выбора файлов и перед попыткой отправить в request.\n * Чтобы вывести валидацию ошибки, промис должен вернуть строку.\n * */\n validateBeforeUpload?: (file: FileUploaderAttachedFile) => Promise<Nullable<string>>;\n\n /**\n * Функция, позволяющая кастомизировать файлы.\n * Через нее можно вешать кастомные валидации на каждый файл.\n * */\n renderFile?: (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => React.ReactNode;\n}\n\nexport interface FileUploaderRef extends InstanceWithRootNode {\n focus: () => void;\n blur: () => void;\n /** Сбрасывает выбранные файлы */\n reset: () => void;\n}\n\nexport const FileUploaderDataTids = {\n root: 'FileUploader__root',\n content: 'FileUploader__content',\n link: 'FileUploader__link',\n input: 'FileUploader__input',\n} as const;\n\nconst defaultRenderFile = (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => fileNode;\n\nconst _FileUploader = forwardRefAndName<FileUploaderRef, _FileUploaderProps>('FileUploader', (props, ref) => {\n const theme = useContext(ThemeContext);\n\n const {\n initialFiles,\n disabled,\n error,\n warning,\n multiple = false,\n width = theme.fileUploaderWidth,\n hideFiles = false,\n onBlur,\n onFocus,\n onChange,\n request,\n validateBeforeUpload,\n onRequestSuccess,\n onRequestError,\n size = 'small',\n renderFile = defaultRenderFile,\n ...inputProps\n } = props;\n\n const { files, setFiles, removeFile, reset, setFileValidationResult, isMinLengthReached } =\n useContext(FileUploaderControlContext);\n\n const locale = useControlLocale();\n\n const inputRef = useRef<HTMLInputElement>(null);\n const fileDivRef = useRef<HTMLDivElement>(null);\n\n const isAsync = !!request;\n const isSingleMode = !multiple;\n\n const [isLinkVisible, setIsLinkVisible] = useState(true);\n const upload = useUpload(request, onRequestSuccess, onRequestError);\n\n const tryValidateAndUpload = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n files.forEach(async (file) => {\n const validationMessage = validateBeforeUpload && (await validateBeforeUpload(file));\n\n if (!validationMessage) {\n isAsync && upload(file);\n } else {\n setFileValidationResult(file.id, FileUploaderFileValidationResult.error(validationMessage));\n }\n });\n },\n [validateBeforeUpload, isAsync, upload, setFileValidationResult],\n );\n\n const sizeClassName = useFileUploaderSize(size, {\n small: jsStyles.sizeSmall(theme),\n medium: jsStyles.sizeMedium(theme),\n large: jsStyles.sizeLarge(theme),\n });\n\n const sizeIconClass = useFileUploaderSize(size, {\n small: jsStyles.iconSmall(theme),\n medium: jsStyles.iconMedium(theme),\n large: jsStyles.iconLarge(theme),\n });\n\n const contentInnerClass = useFileUploaderSize(size, {\n small: jsStyles.contentInnerSmall(theme),\n medium: jsStyles.contentInnerMedium(theme),\n large: jsStyles.contentInnerLarge(theme),\n });\n\n /** common part **/\n const handleChange = useCallback(\n (newFiles: FileList | null) => {\n if (!newFiles || !newFiles.length) {\n return;\n }\n\n let filesArray = Array.from(newFiles);\n\n if (isSingleMode) {\n filesArray = [filesArray[0]];\n }\n\n const attachedFiles = filesArray.map(getAttachedFile);\n\n if (isSingleMode && attachedFiles.length && files.length) {\n removeFile(files[0].id);\n }\n\n if (attachedFiles.length) {\n setFiles(attachedFiles);\n tryValidateAndUpload(attachedFiles);\n }\n },\n [tryValidateAndUpload, setFiles, isSingleMode, files, removeFile],\n );\n\n const handleDrop = useCallback(\n (event: DragEvent) => {\n if (disabled) {\n return;\n }\n\n const { dataTransfer } = event;\n if (dataTransfer) {\n if (dataTransfer.files?.length > 0) {\n handleChange(dataTransfer.files);\n }\n dataTransfer.clearData();\n }\n },\n [handleChange, disabled],\n );\n\n const { isDraggable, ref: labelRef } = useDrop<HTMLLabelElement>({ onDrop: handleDrop });\n const { isDraggable: isWindowDraggable, ref: windowRef } = useDrop<Document>();\n\n if (isBrowser(globalObject)) {\n windowRef.current = globalObject.document;\n }\n\n const focus = useCallback(() => {\n keyListener.isTabPressed = true;\n inputRef.current?.focus();\n }, []);\n\n const blur = useCallback(() => {\n inputRef.current?.blur();\n }, []);\n\n useImperativeHandle(ref, () => ({ focus, blur, reset, getRootNode: () => rootNodeRef.current }), [\n ref,\n blur,\n focus,\n reset,\n ]);\n\n const [focusedByTab, setFocusedByTab] = useState(false);\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n handleChange(event.target.files);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n if (!disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n onFocus?.(e);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocusedByTab(false);\n if (!disabled) {\n onBlur?.(e);\n }\n };\n\n const handleRemoveFile = useCallback((fileId: string) => {\n const dataTransfer = new DataTransfer();\n files\n .filter((f) => f.id !== fileId)\n .forEach((file) => {\n dataTransfer.items.add(file.originalFile);\n });\n inputRef.current && (inputRef.current.files = dataTransfer.files);\n }, []);\n\n const [hovered, setHovered] = useState(false);\n\n const uploadButtonClassNames = cx(\n jsStyles.uploadButton(theme),\n sizeClassName,\n focusedByTab && jsStyles.uploadButtonFocus(theme),\n disabled && jsStyles.disabled(theme),\n !disabled && hovered && jsStyles.hovered(theme),\n !!warning && jsStyles.warning(theme),\n !!error && jsStyles.error(theme),\n isDraggable && !disabled && jsStyles.dragOver(theme),\n );\n\n const canDrop = isWindowDraggable && !disabled;\n const uploadButtonWrapperClassNames = cx(canDrop && jsStyles.windowDragOver(theme));\n\n const uploadButtonIconClassNames = cx(jsStyles.icon(theme), sizeIconClass, disabled && jsStyles.iconDisabled(theme));\n\n const hasOneFile = files.length === 1;\n const hasOneFileForSingle = isSingleMode && hasOneFile && !hideFiles;\n\n const contentClassNames = cx(jsStyles.content(), hasOneFileForSingle && jsStyles.contentWithFiles());\n\n const linkClassNames = cx(\n jsStyles.link(theme),\n !disabled && hovered && jsStyles.linkHovered(theme),\n disabled && jsStyles.linkDisabled(theme),\n );\n\n useEffect(() => {\n setIsLinkVisible(hasOneFileForSingle ? !isMinLengthReached : true);\n }, [isMinLengthReached, hasOneFileForSingle]);\n\n useEffect(() => {\n if (!files || !files.length || !inputRef.current) {\n return;\n }\n\n const dataTransfer = new DataTransfer();\n files.forEach((file) => dataTransfer.items.add(file.originalFile));\n inputRef.current.files = dataTransfer.files;\n }, []);\n\n const rootNodeRef = useRef(null);\n\n const iconSizes: Record<SizeProp, number> = {\n small: parseInt(theme.btnIconSizeSmall),\n medium: parseInt(theme.btnIconSizeMedium),\n large: parseInt(theme.btnIconSizeLarge),\n };\n const icon = <UploadIcon size={iconSizes[size]} />;\n\n return (\n <CommonWrapper {...props}>\n <div\n data-tid={FileUploaderDataTids.root}\n className={jsStyles.root(theme)}\n style={useMemoObject({ width })}\n ref={rootNodeRef}\n >\n {!hideFiles && !isSingleMode && !!files.length && (\n <FileUploaderFileList renderFile={renderFile} size={size} onRemove={handleRemoveFile} />\n )}\n <div className={uploadButtonWrapperClassNames}>\n <label\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n ref={labelRef}\n className={uploadButtonClassNames}\n >\n <div\n data-tid={FileUploaderDataTids.content}\n className={cx(contentClassNames, { [contentInnerClass]: !files.length || !isSingleMode })}\n >\n {isLinkVisible && (\n <span data-tid={FileUploaderDataTids.link} className={linkClassNames}>\n {hasOneFileForSingle ? locale.choosedFile : locale.chooseFile}\n </span>\n )}\n {isLinkVisible && String.fromCharCode(0xa0) /* &nbsp; */}\n <div\n className={cx(\n globalClasses.afterLinkText,\n hasOneFileForSingle ? jsStyles.afterLinkText_HasFiles(theme) : jsStyles.afterLinkText(theme),\n )}\n >\n {hasOneFileForSingle ? (\n <div ref={fileDivRef} className={jsStyles.singleFile()}>\n {renderFile(files[0], <FileUploaderFile file={files[0]} size={size} onRemove={handleRemoveFile} />)}\n </div>\n ) : (\n <>\n {locale.orDragHere}&nbsp;\n <div className={uploadButtonIconClassNames}>{icon}</div>\n </>\n )}\n </div>\n </div>\n <FocusControlWrapper onBlurWhenDisabled={() => setFocusedByTab(false)}>\n <input\n {...inputProps}\n data-tid={FileUploaderDataTids.input}\n ref={inputRef}\n tabIndex={disabled ? -1 : 0}\n type=\"file\"\n disabled={disabled}\n multiple={multiple}\n className={jsStyles.visuallyHidden()}\n onClick={stopPropagation}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n </FocusControlWrapper>\n </label>\n </div>\n </div>\n </CommonWrapper>\n );\n});\n\nexport interface FileUploaderProps extends _FileUploaderProps, FileUploaderControlProviderProps {}\n\nexport const FileUploader = withFileUploaderControlProvider<FileUploaderProps, FileUploaderRef>(\n React.memo(_FileUploader),\n);\nFileUploader.displayName = 'FileUploader';\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useContext","useEffect","useImperativeHandle","useRef","useState","globalObject","isBrowser","getAttachedFile","cx","useMemoObject","FileUploaderControlContext","useControlLocale","useUpload","useDrop","ThemeContext","withFileUploaderControlProvider","keyListener","FileUploaderFile","FileUploaderFileList","CommonWrapper","FileUploaderFileValidationResult","useFileUploaderSize","forwardRefAndName","FocusControlWrapper","UploadIcon","globalClasses","jsStyles","stopPropagation","e","FileUploaderDataTids","root","content","link","input","defaultRenderFile","file","fileNode","_FileUploader","props","ref","_cx","theme","initialFiles","disabled","error","warning","_props$multiple","multiple","_props$width","width","fileUploaderWidth","_props$hideFiles","hideFiles","onBlur","onFocus","onChange","request","validateBeforeUpload","onRequestSuccess","onRequestError","_props$size","size","_props$renderFile","renderFile","inputProps","_objectWithoutPropertiesLoose","_excluded","_useContext","files","setFiles","removeFile","reset","setFileValidationResult","isMinLengthReached","locale","inputRef","fileDivRef","isAsync","isSingleMode","_useState","isLinkVisible","setIsLinkVisible","upload","tryValidateAndUpload","forEach","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","validationMessage","wrap","_callee$","_context","prev","next","t0","sent","id","stop","_x","apply","arguments","sizeClassName","small","sizeSmall","medium","sizeMedium","large","sizeLarge","sizeIconClass","iconSmall","iconMedium","iconLarge","contentInnerClass","contentInnerSmall","contentInnerMedium","contentInnerLarge","handleChange","newFiles","length","filesArray","Array","from","attachedFiles","map","handleDrop","event","dataTransfer","_dataTransfer$files","clearData","_useDrop","onDrop","isDraggable","labelRef","_useDrop2","isWindowDraggable","windowRef","current","document","focus","_inputRef$current","isTabPressed","blur","_inputRef$current2","getRootNode","rootNodeRef","_useState2","focusedByTab","setFocusedByTab","handleInputChange","target","handleFocus","requestAnimationFrame","handleBlur","handleRemoveFile","fileId","DataTransfer","filter","f","items","add","originalFile","_useState3","hovered","setHovered","uploadButtonClassNames","uploadButton","uploadButtonFocus","dragOver","canDrop","uploadButtonWrapperClassNames","windowDragOver","uploadButtonIconClassNames","icon","iconDisabled","hasOneFile","hasOneFileForSingle","contentClassNames","contentWithFiles","linkClassNames","linkHovered","linkDisabled","iconSizes","parseInt","btnIconSizeSmall","btnIconSizeMedium","btnIconSizeLarge","createElement","className","style","onRemove","onMouseEnter","onMouseLeave","choosedFile","chooseFile","String","fromCharCode","afterLinkText","afterLinkText_HasFiles","singleFile","Fragment","orDragHere","onBlurWhenDisabled","_extends","tabIndex","type","visuallyHidden","onClick","FileUploader","memo","displayName"],"sources":["FileUploader.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { FileUploaderAttachedFile, getAttachedFile } from '../../internal/FileUploaderControl/fileUtils';\nimport { cx } from '../../lib/theming/Emotion';\nimport { InstanceWithRootNode } from '../../lib/rootNode';\nimport { useMemoObject } from '../../hooks/useMemoObject';\nimport { FileUploaderControlContext } from '../../internal/FileUploaderControl/FileUploaderControlContext';\nimport { useControlLocale } from '../../internal/FileUploaderControl/hooks/useControlLocale';\nimport { useUpload } from '../../internal/FileUploaderControl/hooks/useUpload';\nimport { useDrop } from '../../hooks/useDrop';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { FileUploaderControlProviderProps } from '../../internal/FileUploaderControl/FileUploaderControlProvider';\nimport { withFileUploaderControlProvider } from '../../internal/FileUploaderControl/withFileUploaderControlProvider';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { FileUploaderFile } from '../../internal/FileUploaderControl/FileUploaderFile/FileUploaderFile';\nimport { FileUploaderFileList } from '../../internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { FileUploaderFileValidationResult } from '../../internal/FileUploaderControl/FileUploaderFileValidationResult';\nimport { useFileUploaderSize } from '../../internal/FileUploaderControl/hooks/useFileUploaderSize';\nimport { SizeProp } from '../../lib/types/props';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { UploadIcon } from './UploadIcon';\nimport { globalClasses, jsStyles } from './FileUploader.styles';\n\nconst stopPropagation: React.ReactEventHandler = (e) => e.stopPropagation();\n\ntype FileUploaderOverriddenProps = 'size';\n\ninterface _FileUploaderProps\n extends CommonProps,\n Omit<React.InputHTMLAttributes<HTMLInputElement>, FileUploaderOverriddenProps> {\n /** Начальное состояние загруженных файлов */\n initialFiles?: File[];\n /** Состояние ошибки всего контрола */\n error?: boolean;\n /** Состояние предупреждения всего контрола */\n warning?: boolean;\n /** Свойство ширины. */\n width?: React.CSSProperties['width'];\n /**\n * Задаёт размер контрола.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: SizeProp;\n /** Свойство, скрывающее отображение файлов. */\n hideFiles?: boolean;\n\n /** Функция, через которую отправляем файлы. Используется для отслеживания статуса загрузки файла. */\n request?: (file: FileUploaderAttachedFile) => Promise<void>;\n /** Срабатывает при удачной попытке отправки через request */\n onRequestSuccess?: (fileId: string) => void;\n /** Срабатывает при неудачной попытке отправки через request */\n onRequestError?: (fileId: string) => void;\n\n /**\n * Функция валидации каждого файла.\n * Срабатывает после выбора файлов и перед попыткой отправить в request.\n * Чтобы вывести валидацию ошибки, промис должен вернуть строку.\n * */\n validateBeforeUpload?: (file: FileUploaderAttachedFile) => Promise<Nullable<string>>;\n\n /**\n * Функция, позволяющая кастомизировать файлы.\n * Через нее можно вешать кастомные валидации на каждый файл.\n * */\n renderFile?: (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => React.ReactNode;\n}\n\nexport interface FileUploaderRef extends InstanceWithRootNode {\n focus: () => void;\n blur: () => void;\n /** Сбрасывает выбранные файлы */\n reset: () => void;\n removeFile: (fileId: string) => void;\n}\n\nexport const FileUploaderDataTids = {\n root: 'FileUploader__root',\n content: 'FileUploader__content',\n link: 'FileUploader__link',\n input: 'FileUploader__input',\n} as const;\n\nconst defaultRenderFile = (file: FileUploaderAttachedFile, fileNode: React.ReactElement) => fileNode;\n\nconst _FileUploader = forwardRefAndName<FileUploaderRef, _FileUploaderProps>('FileUploader', (props, ref) => {\n const theme = useContext(ThemeContext);\n\n const {\n initialFiles,\n disabled,\n error,\n warning,\n multiple = false,\n width = theme.fileUploaderWidth,\n hideFiles = false,\n onBlur,\n onFocus,\n onChange,\n request,\n validateBeforeUpload,\n onRequestSuccess,\n onRequestError,\n size = 'small',\n renderFile = defaultRenderFile,\n ...inputProps\n } = props;\n\n const { files, setFiles, removeFile, reset, setFileValidationResult, isMinLengthReached } =\n useContext(FileUploaderControlContext);\n\n const locale = useControlLocale();\n\n const inputRef = useRef<HTMLInputElement>(null);\n const fileDivRef = useRef<HTMLDivElement>(null);\n\n const isAsync = !!request;\n const isSingleMode = !multiple;\n\n const [isLinkVisible, setIsLinkVisible] = useState(true);\n const upload = useUpload(request, onRequestSuccess, onRequestError);\n\n const tryValidateAndUpload = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n files.forEach(async (file) => {\n const validationMessage = validateBeforeUpload && (await validateBeforeUpload(file));\n\n if (!validationMessage) {\n isAsync && upload(file);\n } else {\n setFileValidationResult(file.id, FileUploaderFileValidationResult.error(validationMessage));\n }\n });\n },\n [validateBeforeUpload, isAsync, upload, setFileValidationResult],\n );\n\n const sizeClassName = useFileUploaderSize(size, {\n small: jsStyles.sizeSmall(theme),\n medium: jsStyles.sizeMedium(theme),\n large: jsStyles.sizeLarge(theme),\n });\n\n const sizeIconClass = useFileUploaderSize(size, {\n small: jsStyles.iconSmall(theme),\n medium: jsStyles.iconMedium(theme),\n large: jsStyles.iconLarge(theme),\n });\n\n const contentInnerClass = useFileUploaderSize(size, {\n small: jsStyles.contentInnerSmall(theme),\n medium: jsStyles.contentInnerMedium(theme),\n large: jsStyles.contentInnerLarge(theme),\n });\n\n /** common part **/\n const handleChange = useCallback(\n (newFiles: FileList | null) => {\n if (!newFiles || !newFiles.length) {\n return;\n }\n\n let filesArray = Array.from(newFiles);\n\n if (isSingleMode) {\n filesArray = [filesArray[0]];\n }\n\n const attachedFiles = filesArray.map(getAttachedFile);\n\n if (isSingleMode && attachedFiles.length && files.length) {\n removeFile(files[0].id);\n }\n\n if (attachedFiles.length) {\n setFiles(attachedFiles);\n tryValidateAndUpload(attachedFiles);\n }\n },\n [tryValidateAndUpload, setFiles, isSingleMode, files, removeFile],\n );\n\n const handleDrop = useCallback(\n (event: DragEvent) => {\n if (disabled) {\n return;\n }\n\n const { dataTransfer } = event;\n if (dataTransfer) {\n if (dataTransfer.files?.length > 0) {\n handleChange(dataTransfer.files);\n }\n dataTransfer.clearData();\n }\n },\n [handleChange, disabled],\n );\n\n const { isDraggable, ref: labelRef } = useDrop<HTMLLabelElement>({ onDrop: handleDrop });\n const { isDraggable: isWindowDraggable, ref: windowRef } = useDrop<Document>();\n\n if (isBrowser(globalObject)) {\n windowRef.current = globalObject.document;\n }\n\n const focus = useCallback(() => {\n keyListener.isTabPressed = true;\n inputRef.current?.focus();\n }, []);\n\n const blur = useCallback(() => {\n inputRef.current?.blur();\n }, []);\n\n useImperativeHandle(ref, () => ({ focus, blur, reset, removeFile, getRootNode: () => rootNodeRef.current }), [\n ref,\n blur,\n focus,\n reset,\n removeFile,\n ]);\n\n const [focusedByTab, setFocusedByTab] = useState(false);\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n handleChange(event.target.files);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n if (!disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n onFocus?.(e);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocusedByTab(false);\n if (!disabled) {\n onBlur?.(e);\n }\n };\n\n const handleRemoveFile = useCallback((fileId: string) => {\n const dataTransfer = new DataTransfer();\n files\n .filter((f) => f.id !== fileId)\n .forEach((file) => {\n dataTransfer.items.add(file.originalFile);\n });\n inputRef.current && (inputRef.current.files = dataTransfer.files);\n }, []);\n\n const [hovered, setHovered] = useState(false);\n\n const uploadButtonClassNames = cx(\n jsStyles.uploadButton(theme),\n sizeClassName,\n focusedByTab && jsStyles.uploadButtonFocus(theme),\n disabled && jsStyles.disabled(theme),\n !disabled && hovered && jsStyles.hovered(theme),\n !!warning && jsStyles.warning(theme),\n !!error && jsStyles.error(theme),\n isDraggable && !disabled && jsStyles.dragOver(theme),\n );\n\n const canDrop = isWindowDraggable && !disabled;\n const uploadButtonWrapperClassNames = cx(canDrop && jsStyles.windowDragOver(theme));\n\n const uploadButtonIconClassNames = cx(jsStyles.icon(theme), sizeIconClass, disabled && jsStyles.iconDisabled(theme));\n\n const hasOneFile = files.length === 1;\n const hasOneFileForSingle = isSingleMode && hasOneFile && !hideFiles;\n\n const contentClassNames = cx(jsStyles.content(), hasOneFileForSingle && jsStyles.contentWithFiles());\n\n const linkClassNames = cx(\n jsStyles.link(theme),\n !disabled && hovered && jsStyles.linkHovered(theme),\n disabled && jsStyles.linkDisabled(theme),\n );\n\n useEffect(() => {\n setIsLinkVisible(hasOneFileForSingle ? !isMinLengthReached : true);\n }, [isMinLengthReached, hasOneFileForSingle]);\n\n useEffect(() => {\n if (!files || !files.length || !inputRef.current) {\n return;\n }\n\n const dataTransfer = new DataTransfer();\n files.forEach((file) => dataTransfer.items.add(file.originalFile));\n inputRef.current.files = dataTransfer.files;\n }, []);\n\n const rootNodeRef = useRef(null);\n\n const iconSizes: Record<SizeProp, number> = {\n small: parseInt(theme.btnIconSizeSmall),\n medium: parseInt(theme.btnIconSizeMedium),\n large: parseInt(theme.btnIconSizeLarge),\n };\n const icon = <UploadIcon size={iconSizes[size]} />;\n\n return (\n <CommonWrapper {...props}>\n <div\n data-tid={FileUploaderDataTids.root}\n className={jsStyles.root(theme)}\n style={useMemoObject({ width })}\n ref={rootNodeRef}\n >\n {!hideFiles && !isSingleMode && !!files.length && (\n <FileUploaderFileList renderFile={renderFile} size={size} onRemove={handleRemoveFile} />\n )}\n <div className={uploadButtonWrapperClassNames}>\n <label\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n ref={labelRef}\n className={uploadButtonClassNames}\n >\n <div\n data-tid={FileUploaderDataTids.content}\n className={cx(contentClassNames, { [contentInnerClass]: !files.length || !isSingleMode })}\n >\n {isLinkVisible && (\n <span data-tid={FileUploaderDataTids.link} className={linkClassNames}>\n {hasOneFileForSingle ? locale.choosedFile : locale.chooseFile}\n </span>\n )}\n {isLinkVisible && String.fromCharCode(0xa0) /* &nbsp; */}\n <div\n className={cx(\n globalClasses.afterLinkText,\n hasOneFileForSingle ? jsStyles.afterLinkText_HasFiles(theme) : jsStyles.afterLinkText(theme),\n )}\n >\n {hasOneFileForSingle ? (\n <div ref={fileDivRef} className={jsStyles.singleFile()}>\n {renderFile(files[0], <FileUploaderFile file={files[0]} size={size} onRemove={handleRemoveFile} />)}\n </div>\n ) : (\n <>\n {locale.orDragHere}&nbsp;\n <div className={uploadButtonIconClassNames}>{icon}</div>\n </>\n )}\n </div>\n </div>\n <FocusControlWrapper onBlurWhenDisabled={() => setFocusedByTab(false)}>\n <input\n {...inputProps}\n data-tid={FileUploaderDataTids.input}\n ref={inputRef}\n tabIndex={disabled ? -1 : 0}\n type=\"file\"\n disabled={disabled}\n multiple={multiple}\n className={jsStyles.visuallyHidden()}\n onClick={stopPropagation}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n </FocusControlWrapper>\n </label>\n </div>\n </div>\n </CommonWrapper>\n );\n});\n\nexport interface FileUploaderProps extends _FileUploaderProps, FileUploaderControlProviderProps {}\n\nexport const FileUploader = withFileUploaderControlProvider<FileUploaderProps, FileUploaderRef>(\n React.memo(_FileUploader),\n);\nFileUploader.displayName = 'FileUploader';\n"],"mappings":"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","ignoreList":[]}
@@ -46,6 +46,7 @@ export interface FileUploaderRef extends InstanceWithRootNode {
46
46
  blur: () => void;
47
47
  /** Сбрасывает выбранные файлы */
48
48
  reset: () => void;
49
+ removeFile: (fileId: string) => void;
49
50
  }
50
51
  export declare const FileUploaderDataTids: {
51
52
  readonly root: "FileUploader__root";
@@ -82,6 +82,29 @@ import { FileUploader } from '@skbkontur/react-ui';
82
82
  <FileUploader multiple error />
83
83
  ```
84
84
 
85
+ Ручное удаление файлов
86
+
87
+ В критичных случаях, если нужно удалить файлы из контрола вручную, то это можно сделать, используя метод `removeFile` из `ref`.
88
+ Обратите внимание, что при вызове `removeFile` вызываются коллбэки `onRemove` и `onValueChange`.
89
+
90
+ ```jsx harmony
91
+ import { FileUploader, Button } from '@skbkontur/react-ui';
92
+
93
+ const fileUploaderRef = React.useRef(null);
94
+ const [fileList, setFileList] = React.useState([]);
95
+
96
+ <div style={{ display: 'inline-grid', gap: '10px' }}>
97
+ <FileUploader ref={fileUploaderRef} multiple onValueChange={(files) => setFileList(files)} />
98
+ {fileList.map((file) => {
99
+ return (
100
+ <Button key={file.id} onClick={() => fileUploaderRef.current.removeFile(file.id)}>
101
+ Delete file {file.originalFile.name}
102
+ </Button>
103
+ );
104
+ })}
105
+ </div>
106
+ ```
107
+
85
108
  #### Локали по умолчанию
86
109
 
87
110
  ```typescript static
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@skbkontur/react-ui",
3
- "version": "5.0.12",
3
+ "version": "5.0.14",
4
4
  "description": "UI Components",
5
5
  "main": "cjs/index.js",
6
6
  "module": "index.js",
7
7
  "sideEffects": false,
8
- "homepage": "https://tech.skbkontur.ru/react-ui/5.0.12/",
8
+ "homepage": "https://tech.skbkontur.ru/react-ui/5.0.14/",
9
9
  "repository": {
10
10
  "type": "git",
11
11
  "url": "git@github.com:skbkontur/retail-ui.git"