@skbkontur/react-ui 4.22.1 → 4.22.3-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/cjs/components/Button/Button.d.ts +1 -0
  3. package/cjs/components/Button/Button.js +2 -1
  4. package/cjs/components/Button/Button.js.map +1 -1
  5. package/cjs/components/Checkbox/Checkbox.d.ts +1 -0
  6. package/cjs/components/Checkbox/Checkbox.js +7 -2
  7. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  8. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +1 -0
  9. package/cjs/components/CurrencyInput/CurrencyInput.js +9 -5
  10. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  11. package/cjs/components/DateInput/DateInput.d.ts +1 -0
  12. package/cjs/components/DateInput/DateInput.js +8 -3
  13. package/cjs/components/DateInput/DateInput.js.map +1 -1
  14. package/cjs/components/FileUploader/FileUploader.js +4 -1
  15. package/cjs/components/FileUploader/FileUploader.js.map +1 -1
  16. package/cjs/components/Input/Input.d.ts +1 -0
  17. package/cjs/components/Input/Input.js +8 -6
  18. package/cjs/components/Input/Input.js.map +1 -1
  19. package/cjs/components/Radio/Radio.d.ts +1 -0
  20. package/cjs/components/Radio/Radio.js +7 -2
  21. package/cjs/components/Radio/Radio.js.map +1 -1
  22. package/cjs/components/Toggle/Toggle.d.ts +1 -0
  23. package/cjs/components/Toggle/Toggle.js +8 -7
  24. package/cjs/components/Toggle/Toggle.js.map +1 -1
  25. package/cjs/internal/CommonWrapper/CommonWrapper.js +9 -2
  26. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  27. package/cjs/internal/FocusControlWrapper/FocusControlWrapper.d.ts +17 -0
  28. package/cjs/internal/FocusControlWrapper/FocusControlWrapper.js +46 -0
  29. package/cjs/internal/FocusControlWrapper/FocusControlWrapper.js.map +1 -0
  30. package/cjs/internal/FocusControlWrapper/FocusControlWrapper.stories.d.ts +5 -0
  31. package/cjs/internal/FocusControlWrapper/index.d.ts +1 -0
  32. package/cjs/internal/FocusControlWrapper/index.js +1 -0
  33. package/cjs/internal/FocusControlWrapper/index.js.map +1 -0
  34. package/cjs/internal/FocusControlWrapper/useFocusControl.d.ts +12 -0
  35. package/cjs/internal/FocusControlWrapper/useFocusControl.js +34 -0
  36. package/cjs/internal/FocusControlWrapper/useFocusControl.js.map +1 -0
  37. package/cjs/internal/InputLikeText/InputLikeText.d.ts +1 -0
  38. package/cjs/internal/InputLikeText/InputLikeText.js +25 -13
  39. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  40. package/cjs/{components/DateInput/helpers/SelectionHelpers.js.map → lib/dom/selectionHelpers.js.map} +1 -1
  41. package/components/Button/Button/Button.js +4 -1
  42. package/components/Button/Button/Button.js.map +1 -1
  43. package/components/Button/Button.d.ts +1 -0
  44. package/components/Checkbox/Checkbox/Checkbox.js +12 -5
  45. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  46. package/components/Checkbox/Checkbox.d.ts +1 -0
  47. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +11 -6
  48. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  49. package/components/CurrencyInput/CurrencyInput.d.ts +1 -0
  50. package/components/DateInput/DateInput/DateInput.js +13 -6
  51. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  52. package/components/DateInput/DateInput.d.ts +1 -0
  53. package/components/FileUploader/FileUploader/FileUploader.js +7 -2
  54. package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
  55. package/components/Input/Input/Input.js +11 -6
  56. package/components/Input/Input/Input.js.map +1 -1
  57. package/components/Input/Input.d.ts +1 -0
  58. package/components/Radio/Radio/Radio.js +12 -5
  59. package/components/Radio/Radio/Radio.js.map +1 -1
  60. package/components/Radio/Radio.d.ts +1 -0
  61. package/components/Toggle/Toggle/Toggle.js +12 -7
  62. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  63. package/components/Toggle/Toggle.d.ts +1 -0
  64. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +17 -6
  65. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  66. package/internal/FocusControlWrapper/FocusControlWrapper/FocusControlWrapper.js +33 -0
  67. package/internal/FocusControlWrapper/FocusControlWrapper/FocusControlWrapper.js.map +1 -0
  68. package/internal/FocusControlWrapper/FocusControlWrapper/package.json +6 -0
  69. package/internal/FocusControlWrapper/FocusControlWrapper.d.ts +17 -0
  70. package/internal/FocusControlWrapper/FocusControlWrapper.stories.d.ts +5 -0
  71. package/internal/FocusControlWrapper/index/index.js +1 -0
  72. package/internal/FocusControlWrapper/index/index.js.map +1 -0
  73. package/internal/FocusControlWrapper/index/package.json +6 -0
  74. package/internal/FocusControlWrapper/index.d.ts +1 -0
  75. package/internal/FocusControlWrapper/package.json +6 -0
  76. package/internal/FocusControlWrapper/useFocusControl/package.json +6 -0
  77. package/internal/FocusControlWrapper/useFocusControl/useFocusControl.js +33 -0
  78. package/internal/FocusControlWrapper/useFocusControl/useFocusControl.js.map +1 -0
  79. package/internal/FocusControlWrapper/useFocusControl.d.ts +12 -0
  80. package/internal/InputLikeText/InputLikeText/InputLikeText.js +34 -8
  81. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  82. package/internal/InputLikeText/InputLikeText.d.ts +1 -0
  83. package/lib/dom/selectionHelpers/package.json +6 -0
  84. package/{components/DateInput/helpers/SelectionHelpers/SelectionHelpers.js.map → lib/dom/selectionHelpers/selectionHelpers.js.map} +1 -1
  85. package/package.json +3 -3
  86. package/components/DateInput/helpers/SelectionHelpers/package.json +0 -6
  87. /package/cjs/{components/DateInput/helpers/SelectionHelpers.d.ts → lib/dom/selectionHelpers.d.ts} +0 -0
  88. /package/cjs/{components/DateInput/helpers/SelectionHelpers.js → lib/dom/selectionHelpers.js} +0 -0
  89. /package/{components/DateInput/helpers/SelectionHelpers/SelectionHelpers.js → lib/dom/selectionHelpers/selectionHelpers.js} +0 -0
  90. /package/{components/DateInput/helpers/SelectionHelpers.d.ts → lib/dom/selectionHelpers.d.ts} +0 -0
@@ -19,6 +19,7 @@ import { cx } from "../../../lib/theming/Emotion";
19
19
  import { rootNode } from "../../../lib/rootNode";
20
20
  import { createPropsGetter } from "../../../lib/createPropsGetter";
21
21
  import { isTheme2022 } from "../../../lib/theming/ThemeHelpers";
22
+ import { FocusControlWrapper } from "../../../internal/FocusControlWrapper";
22
23
  import { CalendarIcon as CalendarIcon2022 } from "../CalendarIcon";
23
24
  import { DateFragmentsView } from "../DateFragmentsView";
24
25
  import { styles } from "../DateInput.styles";
@@ -128,16 +129,20 @@ export var DateInput = (_dec = locale('DatePicker', DatePickerLocaleHelper), roo
128
129
  }
129
130
  };
130
131
 
131
- _this.handleBlur = function (e) {
132
- var restored = _this.iDateMediator.restore();
133
-
134
- _this.updateValue({
132
+ _this.resetFocus = function () {
133
+ return _this.updateValue({
135
134
  focused: false,
136
135
  selected: null,
137
136
  inputMode: false
138
137
  });
138
+ };
139
+
140
+ _this.handleBlur = function (e) {
141
+ _this.resetFocus();
139
142
 
140
143
  if (_this.props.onBlur) {
144
+ var restored = _this.iDateMediator.restore();
145
+
141
146
  if (restored) {
142
147
  e.persist();
143
148
  _this.blurEvent = e;
@@ -464,7 +469,9 @@ export var DateInput = (_dec = locale('DatePicker', DatePickerLocaleHelper), roo
464
469
 
465
470
  return /*#__PURE__*/React.createElement(CommonWrapper, _extends({
466
471
  rootNodeRef: this.setRootNode
467
- }, this.props), /*#__PURE__*/React.createElement(InputLikeText, {
472
+ }, this.props), /*#__PURE__*/React.createElement(FocusControlWrapper, {
473
+ onBlurWhenDisabled: this.resetFocus
474
+ }, /*#__PURE__*/React.createElement(InputLikeText, {
468
475
  width: width,
469
476
  ref: this.inputLikeTextRef,
470
477
  size: size,
@@ -492,7 +499,7 @@ export var DateInput = (_dec = locale('DatePicker', DatePickerLocaleHelper), roo
492
499
  onSelectDateComponent: this.handleSelectDateComponent,
493
500
  selected: selected,
494
501
  inputMode: inputMode
495
- }))));
502
+ })))));
496
503
  };
497
504
 
498
505
  return DateInput;
@@ -1 +1 @@
1
- {"version":3,"sources":["DateInput.tsx"],"names":["React","ReactDOM","globalObject","ConditionalHandler","LENGTH_FULLDATE","MAX_FULLDATE","MIN_FULLDATE","InternalDateComponentType","DatePickerLocaleHelper","InputLikeText","locale","ThemeContext","CalendarIcon","CommonWrapper","cx","rootNode","createPropsGetter","isTheme2022","CalendarIcon2022","DateFragmentsView","styles","Actions","extractAction","InternalDateMediator","DateInputDataTids","icon","DateInput","props","getProps","defaultProps","iDateMediator","inputLikeText","dateFragmentsView","isMouseDown","isMouseFocus","ignoringDelimiter","blurEvent","conditionalHandler","add","MoveSelectionLeft","shiftSelection","MoveSelectionRight","Separator","pressDelimiter","MoveSelectionFirst","selectDateComponent","getLeftmostType","MoveSelectionLast","getRightmostType","Increment","shiftDateComponent","Decrement","Digit","e","inputValue","ClearSelection","clearSelected","ClearOneChar","clearOneChar","FullSelection","fullSelection","WrongInput","blink","build","selectNode","type","state","selected","getRootNode","All","selectInnerNode","index","getTypesOrder","indexOf","renderIcon","withIcon","disabled","size","theme","iconStyles","iconSmall","iconMedium","iconLarge","iconDisabled","handleFocus","setState","prevState","focused","onFocus","handleBlur","restored","restore","updateValue","inputMode","onBlur","persist","handleMouseDownCapture","isFragment","target","preventDefault","handleSelectDateComponent","isEmpty","handleMouseDragStart","dragged","handleMouseDragEnd","selection","getSelection","toString","length","handleKeyDown","onKeyDown","handlePaste","pasted","clipboardData","getData","trim","validateString","paste","handleDoubleClick","inputLikeTextRef","el","dateFragmentsViewRef","sync","valueFormatted","getString","update","emitChange","version","search","flushSync","updateFromProps","value","get","getInternalString","onValueChange","clear","nextType","isNull","deleteOneCharRight","step","changed","getShiftedType","event","inputKey","key","componentDidUpdate","prevProps","minDate","maxDate","isChangedLocale","componentDidMount","autoFocus","focus","blur","render","renderMain","showValue","Boolean","width","setRootNode","error","warning","onClick","valueVisible","getFragments","Component","__KONTUR_REACT_UI__","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { ConditionalHandler } from '../../lib/ConditionalHandler';\nimport { LENGTH_FULLDATE, MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateComponentType } from '../../lib/date/types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { DatePickerLocale, DatePickerLocaleHelper } from '../DatePicker/locale';\nimport { InputLikeText } from '../../internal/InputLikeText';\nimport { locale } from '../../lib/locale/decorators';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CalendarIcon } from '../../internal/icons/16px';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { CalendarIcon as CalendarIcon2022 } from './CalendarIcon';\nimport { DateFragmentsView } from './DateFragmentsView';\nimport { styles } from './DateInput.styles';\nimport { Actions, extractAction } from './helpers/DateInputKeyboardActions';\nimport { InternalDateMediator } from './helpers/InternalDateMediator';\n\nexport interface DateInputState {\n selected: InternalDateComponentType | null;\n valueFormatted: string;\n inputMode: boolean;\n focused: boolean;\n dragged: boolean;\n}\n\nexport const DateInputDataTids = {\n icon: 'DateInput__icon',\n} as const;\n\nexport interface DateInputProps extends CommonProps {\n autoFocus?: boolean;\n value?: string;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n disabled?: boolean;\n /**\n * Минимальная дата.\n * @default '01.01.1900'\n */\n minDate?: string;\n /**\n * Максимальная дата\n * @default '31.12.2099'\n */\n maxDate?: string;\n /**\n * Ширина поля\n * @default 125\n */\n width?: string | number;\n withIcon?: boolean;\n /**\n * Размер поля\n * @default 'small'\n */\n size?: SizeProp;\n onBlur?: (x0: React.FocusEvent<HTMLElement>) => void;\n onClick?: (x0: React.MouseEvent<HTMLElement>) => void;\n onFocus?: (x0: React.FocusEvent<HTMLElement>) => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange?: (value: string) => void;\n onKeyDown?: (x0: React.KeyboardEvent<HTMLElement>) => void;\n}\n\ntype DefaultProps = Required<Pick<DateInputProps, 'value' | 'minDate' | 'maxDate' | 'size' | 'width'>>;\n\n@rootNode\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class DateInput extends React.Component<DateInputProps, DateInputState> {\n public static __KONTUR_REACT_UI__ = 'DateInput';\n public static displayName = 'DateInput';\n\n public static defaultProps: DefaultProps = {\n value: '',\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n size: 'small',\n width: 125,\n };\n\n private getProps = createPropsGetter(DateInput.defaultProps);\n\n private iDateMediator: InternalDateMediator = new InternalDateMediator();\n private inputLikeText: InputLikeText | null = null;\n private dateFragmentsView: DateFragmentsView | null = null;\n private isMouseDown = false;\n private isMouseFocus = false;\n private ignoringDelimiter = false;\n private locale!: DatePickerLocale;\n private blurEvent: React.FocusEvent<HTMLElement> | null = null;\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n private conditionalHandler = new ConditionalHandler<Actions, [React.KeyboardEvent<HTMLElement>]>()\n .add(Actions.MoveSelectionLeft, () => this.shiftSelection(-1))\n .add(Actions.MoveSelectionRight, () => this.shiftSelection(1))\n .add(Actions.Separator, () => this.pressDelimiter())\n .add(Actions.MoveSelectionFirst, () => this.selectDateComponent(this.iDateMediator.getLeftmostType()))\n .add(Actions.MoveSelectionLast, () => this.selectDateComponent(this.iDateMediator.getRightmostType()))\n .add(Actions.Increment, () => this.shiftDateComponent(1))\n .add(Actions.Decrement, () => this.shiftDateComponent(-1))\n .add(Actions.Digit, (e) => this.inputValue(e))\n .add(Actions.ClearSelection, () => this.clearSelected())\n .add(Actions.ClearOneChar, () => this.clearOneChar())\n .add(Actions.FullSelection, () => this.fullSelection())\n .add(Actions.WrongInput, () => this.blink())\n .build();\n\n constructor(props: DateInputProps) {\n super(props);\n\n this.state = {\n valueFormatted: '',\n selected: null,\n inputMode: false,\n focused: false,\n dragged: false,\n };\n }\n\n public componentDidUpdate(prevProps: DateInputProps) {\n const { value, minDate, maxDate } = this.getProps();\n if (\n prevProps.value !== value ||\n prevProps.minDate !== minDate ||\n prevProps.maxDate !== maxDate ||\n this.iDateMediator.isChangedLocale(this.locale)\n ) {\n this.updateFromProps(false);\n }\n this.selectNode();\n }\n\n public selectNode = () => {\n const type = this.state.selected;\n const dateFragmentsView = this.dateFragmentsView && this.dateFragmentsView.getRootNode();\n if (type === null || !this.inputLikeText || !dateFragmentsView) {\n return;\n }\n if (type === InternalDateComponentType.All) {\n this.inputLikeText.selectInnerNode(dateFragmentsView, 0, 5);\n return;\n }\n const index = this.iDateMediator.getTypesOrder().indexOf(type);\n if (index > -1) {\n this.inputLikeText.selectInnerNode(dateFragmentsView, index * 2, index * 2 + 1);\n }\n };\n\n public componentDidMount(): void {\n this.updateFromProps(false);\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public blur() {\n if (this.inputLikeText) {\n this.inputLikeText.blur();\n }\n }\n\n public focus() {\n if (this.inputLikeText) {\n this.inputLikeText.focus();\n }\n }\n\n public blink() {\n if (this.inputLikeText) {\n this.inputLikeText.blink();\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 private renderMain() {\n const { focused, selected, inputMode, valueFormatted } = this.state;\n const showValue = Boolean(focused || valueFormatted);\n const { width, size } = this.getProps();\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <InputLikeText\n width={width}\n ref={this.inputLikeTextRef}\n size={size}\n disabled={this.props.disabled}\n error={this.props.error}\n warning={this.props.warning}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onClick={this.props.onClick}\n onKeyDown={this.handleKeyDown}\n onMouseDownCapture={this.handleMouseDownCapture}\n onPaste={this.handlePaste}\n rightIcon={this.renderIcon()}\n onDoubleClickCapture={this.handleDoubleClick}\n onMouseDragStart={this.handleMouseDragStart}\n onMouseDragEnd={this.handleMouseDragEnd}\n value={this.iDateMediator.getInternalString()}\n inputMode={'numeric'}\n takeContentWidth\n >\n <span className={cx(styles.value(), { [styles.valueVisible()]: showValue })}>\n <DateFragmentsView\n ref={this.dateFragmentsViewRef}\n fragments={this.iDateMediator.getFragments()}\n onSelectDateComponent={this.handleSelectDateComponent}\n selected={selected}\n inputMode={inputMode}\n />\n </span>\n </InputLikeText>\n </CommonWrapper>\n );\n }\n\n private renderIcon = () => {\n const { withIcon, disabled = false } = this.props;\n const size = this.getProps().size;\n\n if (withIcon) {\n const theme = this.theme;\n const icon = isTheme2022(theme) ? <CalendarIcon2022 size={size} /> : <CalendarIcon />;\n const iconStyles = cx({\n [styles.icon(theme)]: true,\n [styles.iconSmall(theme)]: size === 'small',\n [styles.iconMedium(theme)]: size === 'medium',\n [styles.iconLarge(theme)]: size === 'large',\n [styles.iconDisabled(theme)]: disabled,\n });\n return (\n <span className={iconStyles} data-tid={DateInputDataTids.icon}>\n {icon}\n </span>\n );\n }\n return null;\n };\n\n private handleFocus = (e: React.FocusEvent<HTMLElement>) => {\n this.setState((prevState) => ({\n focused: true,\n selected: this.isMouseDown && !prevState.focused ? prevState.selected : this.iDateMediator.getLeftmostType(),\n }));\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n const restored = this.iDateMediator.restore();\n this.updateValue({ focused: false, selected: null, inputMode: false });\n\n if (this.props.onBlur) {\n if (restored) {\n e.persist();\n this.blurEvent = e;\n } else {\n this.props.onBlur(e);\n }\n }\n };\n\n private handleMouseDownCapture = (e: React.MouseEvent<HTMLSpanElement>) => {\n const isFragment = this.dateFragmentsView ? this.dateFragmentsView.isFragment(e.target) : false;\n if (this.state.focused && !isFragment) {\n e.preventDefault();\n }\n this.isMouseFocus = !this.state.focused;\n this.isMouseDown = isFragment;\n };\n\n private handleSelectDateComponent = (type: InternalDateComponentType) => {\n if (!(this.isMouseFocus && this.iDateMediator.isEmpty())) {\n this.selectDateComponent(type);\n }\n this.isMouseFocus = false;\n this.isMouseDown = false;\n };\n\n private handleMouseDragStart = () => {\n this.setState({ dragged: true, selected: null });\n };\n\n private handleMouseDragEnd = () => {\n const selection = globalObject.getSelection?.();\n if (\n selection &&\n selection.toString().length === LENGTH_FULLDATE &&\n this.state.selected !== InternalDateComponentType.All\n ) {\n this.selectDateComponent(InternalDateComponentType.All);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.conditionalHandler(extractAction(e), e)) {\n e.preventDefault();\n }\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n private handlePaste = (e: React.ClipboardEvent<HTMLElement>) => {\n const pasted = e && e.clipboardData.getData('text').trim();\n if (pasted && this.iDateMediator.validateString(pasted)) {\n this.iDateMediator.paste(pasted);\n this.updateValue();\n }\n };\n\n private handleDoubleClick = () => {\n this.selectDateComponent(InternalDateComponentType.All);\n };\n\n private inputLikeTextRef = (el: InputLikeText | null) => {\n this.inputLikeText = el;\n };\n\n private dateFragmentsViewRef = (el: DateFragmentsView | null) => {\n this.dateFragmentsView = el;\n };\n\n private selectDateComponent = (selected: InternalDateComponentType | null): void => {\n this.setState({ selected, inputMode: false });\n };\n\n private updateValue = (state: Partial<DateInputState> = {}, sync = true): void => {\n const valueFormatted = this.iDateMediator.getString();\n\n const update = () => this.setState({ ...state, valueFormatted } as DateInputState, this.emitChange);\n\n if (sync && React.version.search('18') === 0) {\n ReactDOM.flushSync(update);\n } else {\n update();\n }\n };\n\n private updateFromProps = (sync: boolean): void => {\n this.iDateMediator.update(this.props, this.locale);\n\n this.updateValue({}, sync);\n };\n\n private fullSelection = (): void => {\n this.selectDateComponent(InternalDateComponentType.All);\n };\n\n private pressDelimiter = (): void => {\n const value = this.iDateMediator.get(this.state.selected);\n if (value !== null && value !== '') {\n if (!this.ignoringDelimiter) {\n this.shiftSelection(1);\n }\n this.ignoringDelimiter = false;\n }\n };\n\n private emitChange = (): void => {\n const value = this.iDateMediator.getInternalString();\n if (this.props.value === value) {\n return;\n }\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n if (this.blurEvent && this.props.onBlur) {\n this.props.onBlur(this.blurEvent);\n this.blurEvent = null;\n }\n };\n\n private clearSelected = (): void => {\n const selected = this.state.selected === null ? this.iDateMediator.getLeftmostType() : this.state.selected;\n this.iDateMediator.clear(selected);\n this.updateValue({\n inputMode: false,\n selected: selected === InternalDateComponentType.All ? this.iDateMediator.getLeftmostType() : selected,\n });\n };\n\n private clearOneChar = (): void => {\n const { selected, inputMode } = this.state;\n const nextType = selected === null ? this.iDateMediator.getRightmostType() : selected;\n if (this.iDateMediator.isNull(nextType)) {\n this.shiftSelection(-1);\n return;\n }\n if (selected === InternalDateComponentType.All) {\n this.iDateMediator.clear(InternalDateComponentType.All);\n this.updateValue({ selected: this.iDateMediator.getLeftmostType() });\n return;\n }\n this.iDateMediator.deleteOneCharRight(nextType, inputMode);\n this.updateValue({\n inputMode: this.iDateMediator.get(nextType) !== null,\n selected: nextType,\n });\n };\n\n private shiftDateComponent = (step: number): void => {\n const { selected } = this.state;\n const changed = this.iDateMediator.shiftDateComponent(selected, step);\n if (!changed) {\n this.blink();\n return;\n }\n this.updateValue({\n inputMode: false,\n selected: selected === InternalDateComponentType.All ? this.iDateMediator.getLeftmostType() : selected,\n });\n };\n\n private shiftSelection = (step: number): void => {\n const selected = this.iDateMediator.getShiftedType(this.state.selected, step);\n if (selected !== this.state.selected) {\n this.setState({ selected, inputMode: false });\n }\n };\n\n private inputValue = (event: React.KeyboardEvent<HTMLElement>): void => {\n let selected = this.state.selected;\n if (selected === InternalDateComponentType.All) {\n selected = this.iDateMediator.getLeftmostType();\n this.iDateMediator.clear(InternalDateComponentType.All);\n this.setState({ selected });\n }\n const { inputMode, changed } = this.iDateMediator.inputKey(event.key, selected, this.state.inputMode);\n if (!changed) {\n this.blink();\n return;\n }\n\n if (!inputMode) {\n this.ignoringDelimiter = true;\n this.shiftSelection(1);\n }\n this.updateValue({ inputMode });\n };\n}\n"]}
1
+ {"version":3,"sources":["DateInput.tsx"],"names":["React","ReactDOM","globalObject","ConditionalHandler","LENGTH_FULLDATE","MAX_FULLDATE","MIN_FULLDATE","InternalDateComponentType","DatePickerLocaleHelper","InputLikeText","locale","ThemeContext","CalendarIcon","CommonWrapper","cx","rootNode","createPropsGetter","isTheme2022","FocusControlWrapper","CalendarIcon2022","DateFragmentsView","styles","Actions","extractAction","InternalDateMediator","DateInputDataTids","icon","DateInput","props","getProps","defaultProps","iDateMediator","inputLikeText","dateFragmentsView","isMouseDown","isMouseFocus","ignoringDelimiter","blurEvent","conditionalHandler","add","MoveSelectionLeft","shiftSelection","MoveSelectionRight","Separator","pressDelimiter","MoveSelectionFirst","selectDateComponent","getLeftmostType","MoveSelectionLast","getRightmostType","Increment","shiftDateComponent","Decrement","Digit","e","inputValue","ClearSelection","clearSelected","ClearOneChar","clearOneChar","FullSelection","fullSelection","WrongInput","blink","build","selectNode","type","state","selected","getRootNode","All","selectInnerNode","index","getTypesOrder","indexOf","renderIcon","withIcon","disabled","size","theme","iconStyles","iconSmall","iconMedium","iconLarge","iconDisabled","handleFocus","setState","prevState","focused","onFocus","resetFocus","updateValue","inputMode","handleBlur","onBlur","restored","restore","persist","handleMouseDownCapture","isFragment","target","preventDefault","handleSelectDateComponent","isEmpty","handleMouseDragStart","dragged","handleMouseDragEnd","selection","getSelection","toString","length","handleKeyDown","onKeyDown","handlePaste","pasted","clipboardData","getData","trim","validateString","paste","handleDoubleClick","inputLikeTextRef","el","dateFragmentsViewRef","sync","valueFormatted","getString","update","emitChange","version","search","flushSync","updateFromProps","value","get","getInternalString","onValueChange","clear","nextType","isNull","deleteOneCharRight","step","changed","getShiftedType","event","inputKey","key","componentDidUpdate","prevProps","minDate","maxDate","isChangedLocale","componentDidMount","autoFocus","focus","blur","render","renderMain","showValue","Boolean","width","setRootNode","error","warning","onClick","valueVisible","getFragments","Component","__KONTUR_REACT_UI__","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { ConditionalHandler } from '../../lib/ConditionalHandler';\nimport { LENGTH_FULLDATE, MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateComponentType } from '../../lib/date/types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { DatePickerLocale, DatePickerLocaleHelper } from '../DatePicker/locale';\nimport { InputLikeText } from '../../internal/InputLikeText';\nimport { locale } from '../../lib/locale/decorators';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CalendarIcon } from '../../internal/icons/16px';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { SizeProp } from '../../lib/types/props';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { CalendarIcon as CalendarIcon2022 } from './CalendarIcon';\nimport { DateFragmentsView } from './DateFragmentsView';\nimport { styles } from './DateInput.styles';\nimport { Actions, extractAction } from './helpers/DateInputKeyboardActions';\nimport { InternalDateMediator } from './helpers/InternalDateMediator';\n\nexport interface DateInputState {\n selected: InternalDateComponentType | null;\n valueFormatted: string;\n inputMode: boolean;\n focused: boolean;\n dragged: boolean;\n}\n\nexport const DateInputDataTids = {\n icon: 'DateInput__icon',\n} as const;\n\nexport interface DateInputProps extends CommonProps {\n autoFocus?: boolean;\n value?: string;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n disabled?: boolean;\n /**\n * Минимальная дата.\n * @default '01.01.1900'\n */\n minDate?: string;\n /**\n * Максимальная дата\n * @default '31.12.2099'\n */\n maxDate?: string;\n /**\n * Ширина поля\n * @default 125\n */\n width?: string | number;\n withIcon?: boolean;\n /**\n * Размер поля\n * @default 'small'\n */\n size?: SizeProp;\n onBlur?: (x0: React.FocusEvent<HTMLElement>) => void;\n onClick?: (x0: React.MouseEvent<HTMLElement>) => void;\n onFocus?: (x0: React.FocusEvent<HTMLElement>) => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange?: (value: string) => void;\n onKeyDown?: (x0: React.KeyboardEvent<HTMLElement>) => void;\n}\n\ntype DefaultProps = Required<Pick<DateInputProps, 'value' | 'minDate' | 'maxDate' | 'size' | 'width'>>;\n\n@rootNode\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class DateInput extends React.Component<DateInputProps, DateInputState> {\n public static __KONTUR_REACT_UI__ = 'DateInput';\n public static displayName = 'DateInput';\n\n public static defaultProps: DefaultProps = {\n value: '',\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n size: 'small',\n width: 125,\n };\n\n private getProps = createPropsGetter(DateInput.defaultProps);\n\n private iDateMediator: InternalDateMediator = new InternalDateMediator();\n private inputLikeText: InputLikeText | null = null;\n private dateFragmentsView: DateFragmentsView | null = null;\n private isMouseDown = false;\n private isMouseFocus = false;\n private ignoringDelimiter = false;\n private locale!: DatePickerLocale;\n private blurEvent: React.FocusEvent<HTMLElement> | null = null;\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n private conditionalHandler = new ConditionalHandler<Actions, [React.KeyboardEvent<HTMLElement>]>()\n .add(Actions.MoveSelectionLeft, () => this.shiftSelection(-1))\n .add(Actions.MoveSelectionRight, () => this.shiftSelection(1))\n .add(Actions.Separator, () => this.pressDelimiter())\n .add(Actions.MoveSelectionFirst, () => this.selectDateComponent(this.iDateMediator.getLeftmostType()))\n .add(Actions.MoveSelectionLast, () => this.selectDateComponent(this.iDateMediator.getRightmostType()))\n .add(Actions.Increment, () => this.shiftDateComponent(1))\n .add(Actions.Decrement, () => this.shiftDateComponent(-1))\n .add(Actions.Digit, (e) => this.inputValue(e))\n .add(Actions.ClearSelection, () => this.clearSelected())\n .add(Actions.ClearOneChar, () => this.clearOneChar())\n .add(Actions.FullSelection, () => this.fullSelection())\n .add(Actions.WrongInput, () => this.blink())\n .build();\n\n constructor(props: DateInputProps) {\n super(props);\n\n this.state = {\n valueFormatted: '',\n selected: null,\n inputMode: false,\n focused: false,\n dragged: false,\n };\n }\n\n public componentDidUpdate(prevProps: DateInputProps) {\n const { value, minDate, maxDate } = this.getProps();\n if (\n prevProps.value !== value ||\n prevProps.minDate !== minDate ||\n prevProps.maxDate !== maxDate ||\n this.iDateMediator.isChangedLocale(this.locale)\n ) {\n this.updateFromProps(false);\n }\n this.selectNode();\n }\n\n public selectNode = () => {\n const type = this.state.selected;\n const dateFragmentsView = this.dateFragmentsView && this.dateFragmentsView.getRootNode();\n if (type === null || !this.inputLikeText || !dateFragmentsView) {\n return;\n }\n if (type === InternalDateComponentType.All) {\n this.inputLikeText.selectInnerNode(dateFragmentsView, 0, 5);\n return;\n }\n const index = this.iDateMediator.getTypesOrder().indexOf(type);\n if (index > -1) {\n this.inputLikeText.selectInnerNode(dateFragmentsView, index * 2, index * 2 + 1);\n }\n };\n\n public componentDidMount(): void {\n this.updateFromProps(false);\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public blur() {\n if (this.inputLikeText) {\n this.inputLikeText.blur();\n }\n }\n\n public focus() {\n if (this.inputLikeText) {\n this.inputLikeText.focus();\n }\n }\n\n public blink() {\n if (this.inputLikeText) {\n this.inputLikeText.blink();\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 private renderMain() {\n const { focused, selected, inputMode, valueFormatted } = this.state;\n const showValue = Boolean(focused || valueFormatted);\n const { width, size } = this.getProps();\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>\n <InputLikeText\n width={width}\n ref={this.inputLikeTextRef}\n size={size}\n disabled={this.props.disabled}\n error={this.props.error}\n warning={this.props.warning}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onClick={this.props.onClick}\n onKeyDown={this.handleKeyDown}\n onMouseDownCapture={this.handleMouseDownCapture}\n onPaste={this.handlePaste}\n rightIcon={this.renderIcon()}\n onDoubleClickCapture={this.handleDoubleClick}\n onMouseDragStart={this.handleMouseDragStart}\n onMouseDragEnd={this.handleMouseDragEnd}\n value={this.iDateMediator.getInternalString()}\n inputMode={'numeric'}\n takeContentWidth\n >\n <span className={cx(styles.value(), { [styles.valueVisible()]: showValue })}>\n <DateFragmentsView\n ref={this.dateFragmentsViewRef}\n fragments={this.iDateMediator.getFragments()}\n onSelectDateComponent={this.handleSelectDateComponent}\n selected={selected}\n inputMode={inputMode}\n />\n </span>\n </InputLikeText>\n </FocusControlWrapper>\n </CommonWrapper>\n );\n }\n\n private renderIcon = () => {\n const { withIcon, disabled = false } = this.props;\n const size = this.getProps().size;\n\n if (withIcon) {\n const theme = this.theme;\n const icon = isTheme2022(theme) ? <CalendarIcon2022 size={size} /> : <CalendarIcon />;\n const iconStyles = cx({\n [styles.icon(theme)]: true,\n [styles.iconSmall(theme)]: size === 'small',\n [styles.iconMedium(theme)]: size === 'medium',\n [styles.iconLarge(theme)]: size === 'large',\n [styles.iconDisabled(theme)]: disabled,\n });\n return (\n <span className={iconStyles} data-tid={DateInputDataTids.icon}>\n {icon}\n </span>\n );\n }\n return null;\n };\n\n private handleFocus = (e: React.FocusEvent<HTMLElement>) => {\n this.setState((prevState) => ({\n focused: true,\n selected: this.isMouseDown && !prevState.focused ? prevState.selected : this.iDateMediator.getLeftmostType(),\n }));\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n };\n\n private resetFocus = () => this.updateValue({ focused: false, selected: null, inputMode: false });\n\n private handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n this.resetFocus();\n\n if (this.props.onBlur) {\n const restored = this.iDateMediator.restore();\n if (restored) {\n e.persist();\n this.blurEvent = e;\n } else {\n this.props.onBlur(e);\n }\n }\n };\n\n private handleMouseDownCapture = (e: React.MouseEvent<HTMLSpanElement>) => {\n const isFragment = this.dateFragmentsView ? this.dateFragmentsView.isFragment(e.target) : false;\n if (this.state.focused && !isFragment) {\n e.preventDefault();\n }\n this.isMouseFocus = !this.state.focused;\n this.isMouseDown = isFragment;\n };\n\n private handleSelectDateComponent = (type: InternalDateComponentType) => {\n if (!(this.isMouseFocus && this.iDateMediator.isEmpty())) {\n this.selectDateComponent(type);\n }\n this.isMouseFocus = false;\n this.isMouseDown = false;\n };\n\n private handleMouseDragStart = () => {\n this.setState({ dragged: true, selected: null });\n };\n\n private handleMouseDragEnd = () => {\n const selection = globalObject.getSelection?.();\n if (\n selection &&\n selection.toString().length === LENGTH_FULLDATE &&\n this.state.selected !== InternalDateComponentType.All\n ) {\n this.selectDateComponent(InternalDateComponentType.All);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.conditionalHandler(extractAction(e), e)) {\n e.preventDefault();\n }\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n private handlePaste = (e: React.ClipboardEvent<HTMLElement>) => {\n const pasted = e && e.clipboardData.getData('text').trim();\n if (pasted && this.iDateMediator.validateString(pasted)) {\n this.iDateMediator.paste(pasted);\n this.updateValue();\n }\n };\n\n private handleDoubleClick = () => {\n this.selectDateComponent(InternalDateComponentType.All);\n };\n\n private inputLikeTextRef = (el: InputLikeText | null) => {\n this.inputLikeText = el;\n };\n\n private dateFragmentsViewRef = (el: DateFragmentsView | null) => {\n this.dateFragmentsView = el;\n };\n\n private selectDateComponent = (selected: InternalDateComponentType | null): void => {\n this.setState({ selected, inputMode: false });\n };\n\n private updateValue = (state: Partial<DateInputState> = {}, sync = true): void => {\n const valueFormatted = this.iDateMediator.getString();\n\n const update = () => this.setState({ ...state, valueFormatted } as DateInputState, this.emitChange);\n\n if (sync && React.version.search('18') === 0) {\n ReactDOM.flushSync(update);\n } else {\n update();\n }\n };\n\n private updateFromProps = (sync: boolean): void => {\n this.iDateMediator.update(this.props, this.locale);\n\n this.updateValue({}, sync);\n };\n\n private fullSelection = (): void => {\n this.selectDateComponent(InternalDateComponentType.All);\n };\n\n private pressDelimiter = (): void => {\n const value = this.iDateMediator.get(this.state.selected);\n if (value !== null && value !== '') {\n if (!this.ignoringDelimiter) {\n this.shiftSelection(1);\n }\n this.ignoringDelimiter = false;\n }\n };\n\n private emitChange = (): void => {\n const value = this.iDateMediator.getInternalString();\n if (this.props.value === value) {\n return;\n }\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n if (this.blurEvent && this.props.onBlur) {\n this.props.onBlur(this.blurEvent);\n this.blurEvent = null;\n }\n };\n\n private clearSelected = (): void => {\n const selected = this.state.selected === null ? this.iDateMediator.getLeftmostType() : this.state.selected;\n this.iDateMediator.clear(selected);\n this.updateValue({\n inputMode: false,\n selected: selected === InternalDateComponentType.All ? this.iDateMediator.getLeftmostType() : selected,\n });\n };\n\n private clearOneChar = (): void => {\n const { selected, inputMode } = this.state;\n const nextType = selected === null ? this.iDateMediator.getRightmostType() : selected;\n if (this.iDateMediator.isNull(nextType)) {\n this.shiftSelection(-1);\n return;\n }\n if (selected === InternalDateComponentType.All) {\n this.iDateMediator.clear(InternalDateComponentType.All);\n this.updateValue({ selected: this.iDateMediator.getLeftmostType() });\n return;\n }\n this.iDateMediator.deleteOneCharRight(nextType, inputMode);\n this.updateValue({\n inputMode: this.iDateMediator.get(nextType) !== null,\n selected: nextType,\n });\n };\n\n private shiftDateComponent = (step: number): void => {\n const { selected } = this.state;\n const changed = this.iDateMediator.shiftDateComponent(selected, step);\n if (!changed) {\n this.blink();\n return;\n }\n this.updateValue({\n inputMode: false,\n selected: selected === InternalDateComponentType.All ? this.iDateMediator.getLeftmostType() : selected,\n });\n };\n\n private shiftSelection = (step: number): void => {\n const selected = this.iDateMediator.getShiftedType(this.state.selected, step);\n if (selected !== this.state.selected) {\n this.setState({ selected, inputMode: false });\n }\n };\n\n private inputValue = (event: React.KeyboardEvent<HTMLElement>): void => {\n let selected = this.state.selected;\n if (selected === InternalDateComponentType.All) {\n selected = this.iDateMediator.getLeftmostType();\n this.iDateMediator.clear(InternalDateComponentType.All);\n this.setState({ selected });\n }\n const { inputMode, changed } = this.iDateMediator.inputKey(event.key, selected, this.state.inputMode);\n if (!changed) {\n this.blink();\n return;\n }\n\n if (!inputMode) {\n this.ignoringDelimiter = true;\n this.shiftSelection(1);\n }\n this.updateValue({ inputMode });\n };\n}\n"]}
@@ -84,6 +84,7 @@ export declare class DateInput extends React.Component<DateInputProps, DateInput
84
84
  private renderMain;
85
85
  private renderIcon;
86
86
  private handleFocus;
87
+ private resetFocus;
87
88
  private handleBlur;
88
89
  private handleMouseDownCapture;
89
90
  private handleSelectDateComponent;
@@ -23,6 +23,7 @@ import { FileUploaderFileValidationResult } from "../../../internal/FileUploader
23
23
  import { useFileUploaderSize } from "../../../internal/FileUploaderControl/hooks/useFileUploaderSize";
24
24
  import { isTheme2022 } from "../../../lib/theming/ThemeHelpers";
25
25
  import { forwardRefAndName } from "../../../lib/forwardRefAndName";
26
+ import { FocusControlWrapper } from "../../../internal/FocusControlWrapper";
26
27
  import { UploadIcon as UploadIcon2022 } from "../UploadIcon";
27
28
  import { globalClasses, jsStyles } from "../FileUploader.styles";
28
29
 
@@ -318,7 +319,11 @@ var _FileUploader = forwardRefAndName('FileUploader', function (props, ref) {
318
319
  size: size
319
320
  }))) : /*#__PURE__*/React.createElement(React.Fragment, null, locale.orDragHere, "\xA0", /*#__PURE__*/React.createElement("div", {
320
321
  className: uploadButtonIconClassNames
321
- }, icon)))), /*#__PURE__*/React.createElement("input", _extends({}, inputProps, {
322
+ }, icon)))), /*#__PURE__*/React.createElement(FocusControlWrapper, {
323
+ onBlurWhenDisabled: function onBlurWhenDisabled() {
324
+ return setFocusedByTab(false);
325
+ }
326
+ }, /*#__PURE__*/React.createElement("input", _extends({}, inputProps, {
322
327
  "data-tid": FileUploaderDataTids.input,
323
328
  ref: inputRef,
324
329
  tabIndex: disabled ? -1 : 0,
@@ -332,7 +337,7 @@ var _FileUploader = forwardRefAndName('FileUploader', function (props, ref) {
332
337
  onBlur: handleBlur // для того, чтобы срабатывало событие change при выборе одного и того же файла подряд
333
338
  ,
334
339
  value: ''
335
- }))))));
340
+ })))))));
336
341
  });
337
342
 
338
343
  export var FileUploader = withFileUploaderControlProvider( /*#__PURE__*/React.memo(_FileUploader));
@@ -1 +1 @@
1
- {"version":3,"sources":["FileUploader.tsx"],"names":["React","useCallback","useContext","useEffect","useImperativeHandle","useRef","useState","globalObject","isBrowser","getAttachedFile","cx","useMemoObject","FileUploaderControlContext","useControlLocale","useUpload","useDrop","ThemeContext","UploadIcon","withFileUploaderControlProvider","keyListener","FileUploaderFile","FileUploaderFileList","CommonWrapper","FileUploaderFileValidationResult","useFileUploaderSize","isTheme2022","forwardRefAndName","UploadIcon2022","globalClasses","jsStyles","stopPropagation","e","FileUploaderDataTids","root","content","link","input","defaultRenderFile","file","fileNode","_FileUploader","props","ref","theme","_isTheme2022","disabled","error","warning","multiple","width","fileUploaderWidth","hideFiles","onBlur","onFocus","onChange","request","validateBeforeUpload","onRequestSuccess","onRequestError","size","renderFile","inputProps","files","setFiles","removeFile","reset","setFileValidationResult","isMinLengthReached","locale","inputRef","fileDivRef","isAsync","isSingleMode","isLinkVisible","setIsLinkVisible","upload","tryValidateAndUpload","forEach","validationMessage","id","sizeClassName","small","sizeSmall","medium","sizeMedium","large","sizeLarge","sizeIconClass","iconSmall","iconMedium","iconLarge","contentInnerClass","contentInnerSmall","contentInnerMedium","contentInnerLarge","handleChange","newFiles","filesArray","Array","from","attachedFiles","map","length","handleDrop","event","dataTransfer","clearData","onDrop","isDraggable","labelRef","isWindowDraggable","windowRef","current","document","focus","isTabPressed","blur","getRootNode","rootNodeRef","focusedByTab","setFocusedByTab","handleInputChange","target","handleFocus","requestAnimationFrame","handleBlur","hovered","setHovered","uploadButtonClassNames","uploadButton","uploadButtonFocus","dragOver","canDrop","uploadButtonWrapperClassNames","windowDragOver","windowDragOver2022","uploadButtonIconClassNames","icon","iconDisabled","hasOneFile","hasOneFileForSingle","contentClassNames","contentWithFiles","linkClassNames","linkHovered","linkDisabled","iconSizes","parseInt","btnIconSizeSmall","btnIconSizeMedium","btnIconSizeLarge","choosedFile","chooseFile","String","fromCharCode","afterLinkText","afterLinkText_HasFiles","singleFile","orDragHere","visuallyHidden","FileUploader","memo","displayName"],"mappings":"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","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 { UploadIcon } from '../../internal/icons/16px';\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 { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { SizeProp } from '../../lib/types/props';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\n\nimport { UploadIcon as UploadIcon2022 } from './UploadIcon';\nimport { globalClasses, jsStyles } from './FileUploader.styles';\n\nconst stopPropagation: React.ReactEventHandler = (e) => e.stopPropagation();\n\n/**\n * @deprecated use SizeProp\n */\nexport type FileUploaderSize = SizeProp;\n\ntype FileUploaderOverriddenProps = 'size';\n\ninterface _FileUploaderProps\n extends CommonProps,\n Omit<React.InputHTMLAttributes<HTMLInputElement>, FileUploaderOverriddenProps> {\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 const _isTheme2022 = isTheme2022(theme);\n\n const {\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) {\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) => {\n if (disabled) {\n return;\n }\n\n const { dataTransfer } = event;\n const { files } = dataTransfer;\n\n if (files?.length > 0) {\n handleChange(files);\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 [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(\n !_isTheme2022 && canDrop && jsStyles.windowDragOver(theme),\n _isTheme2022 && canDrop && jsStyles.windowDragOver2022(theme),\n );\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 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 = _isTheme2022 ? <UploadIcon2022 size={iconSizes[size]} /> : <UploadIcon />;\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 && <FileUploaderFileList renderFile={renderFile} size={size} />}\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} />)}\n </div>\n ) : (\n <>\n {locale.orDragHere}&nbsp;\n <div className={uploadButtonIconClassNames}>{icon}</div>\n </>\n )}\n </div>\n </div>\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 // для того, чтобы срабатывало событие change при выборе одного и того же файла подряд\n value={''}\n />\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"]}
1
+ {"version":3,"sources":["FileUploader.tsx"],"names":["React","useCallback","useContext","useEffect","useImperativeHandle","useRef","useState","globalObject","isBrowser","getAttachedFile","cx","useMemoObject","FileUploaderControlContext","useControlLocale","useUpload","useDrop","ThemeContext","UploadIcon","withFileUploaderControlProvider","keyListener","FileUploaderFile","FileUploaderFileList","CommonWrapper","FileUploaderFileValidationResult","useFileUploaderSize","isTheme2022","forwardRefAndName","FocusControlWrapper","UploadIcon2022","globalClasses","jsStyles","stopPropagation","e","FileUploaderDataTids","root","content","link","input","defaultRenderFile","file","fileNode","_FileUploader","props","ref","theme","_isTheme2022","disabled","error","warning","multiple","width","fileUploaderWidth","hideFiles","onBlur","onFocus","onChange","request","validateBeforeUpload","onRequestSuccess","onRequestError","size","renderFile","inputProps","files","setFiles","removeFile","reset","setFileValidationResult","isMinLengthReached","locale","inputRef","fileDivRef","isAsync","isSingleMode","isLinkVisible","setIsLinkVisible","upload","tryValidateAndUpload","forEach","validationMessage","id","sizeClassName","small","sizeSmall","medium","sizeMedium","large","sizeLarge","sizeIconClass","iconSmall","iconMedium","iconLarge","contentInnerClass","contentInnerSmall","contentInnerMedium","contentInnerLarge","handleChange","newFiles","filesArray","Array","from","attachedFiles","map","length","handleDrop","event","dataTransfer","clearData","onDrop","isDraggable","labelRef","isWindowDraggable","windowRef","current","document","focus","isTabPressed","blur","getRootNode","rootNodeRef","focusedByTab","setFocusedByTab","handleInputChange","target","handleFocus","requestAnimationFrame","handleBlur","hovered","setHovered","uploadButtonClassNames","uploadButton","uploadButtonFocus","dragOver","canDrop","uploadButtonWrapperClassNames","windowDragOver","windowDragOver2022","uploadButtonIconClassNames","icon","iconDisabled","hasOneFile","hasOneFileForSingle","contentClassNames","contentWithFiles","linkClassNames","linkHovered","linkDisabled","iconSizes","parseInt","btnIconSizeSmall","btnIconSizeMedium","btnIconSizeLarge","choosedFile","chooseFile","String","fromCharCode","afterLinkText","afterLinkText_HasFiles","singleFile","orDragHere","visuallyHidden","FileUploader","memo","displayName"],"mappings":"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","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 { UploadIcon } from '../../internal/icons/16px';\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 { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { SizeProp } from '../../lib/types/props';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { UploadIcon as UploadIcon2022 } from './UploadIcon';\nimport { globalClasses, jsStyles } from './FileUploader.styles';\n\nconst stopPropagation: React.ReactEventHandler = (e) => e.stopPropagation();\n\n/**\n * @deprecated use SizeProp\n */\nexport type FileUploaderSize = SizeProp;\n\ntype FileUploaderOverriddenProps = 'size';\n\ninterface _FileUploaderProps\n extends CommonProps,\n Omit<React.InputHTMLAttributes<HTMLInputElement>, FileUploaderOverriddenProps> {\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 const _isTheme2022 = isTheme2022(theme);\n\n const {\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) {\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) => {\n if (disabled) {\n return;\n }\n\n const { dataTransfer } = event;\n const { files } = dataTransfer;\n\n if (files?.length > 0) {\n handleChange(files);\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 [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(\n !_isTheme2022 && canDrop && jsStyles.windowDragOver(theme),\n _isTheme2022 && canDrop && jsStyles.windowDragOver2022(theme),\n );\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 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 = _isTheme2022 ? <UploadIcon2022 size={iconSizes[size]} /> : <UploadIcon />;\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 && <FileUploaderFileList renderFile={renderFile} size={size} />}\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} />)}\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 // для того, чтобы срабатывало событие change при выборе одного и того же файла подряд\n value={''}\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"]}
@@ -24,6 +24,7 @@ import { rootNode } from "../../../lib/rootNode";
24
24
  import { createPropsGetter } from "../../../lib/createPropsGetter";
25
25
  import { isTheme2022 } from "../../../lib/theming/ThemeHelpers";
26
26
  import { isFunction } from "../../../lib/utils";
27
+ import { FocusControlWrapper } from "../../../internal/FocusControlWrapper";
27
28
  import { styles } from "../Input.styles";
28
29
  import { InputLayout } from "../InputLayout/InputLayout";
29
30
  import { PolyfillPlaceholder } from "../InputLayout/PolyfillPlaceholder";
@@ -200,7 +201,9 @@ var Input = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$C
200
201
  'aria-label': ariaLabel
201
202
  });
202
203
 
203
- var input = _this.getInput(inputProps);
204
+ var input = /*#__PURE__*/React.createElement(FocusControlWrapper, {
205
+ onBlurWhenDisabled: _this.resetFocus
206
+ }, _this.getInput(inputProps));
204
207
 
205
208
  if (isTheme2022(_this.theme)) {
206
209
  return /*#__PURE__*/React.createElement(InputLayout, {
@@ -315,14 +318,16 @@ var Input = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$C
315
318
  }
316
319
  };
317
320
 
318
- _this.handleBlur = function (event) {
319
- _this.setState({
321
+ _this.resetFocus = function () {
322
+ return _this.setState({
320
323
  focused: false
321
324
  });
325
+ };
322
326
 
323
- if (_this.props.onBlur) {
324
- _this.props.onBlur(event);
325
- }
327
+ _this.handleBlur = function (event) {
328
+ _this.resetFocus();
329
+
330
+ _this.props.onBlur == null ? void 0 : _this.props.onBlur(event);
326
331
  };
327
332
 
328
333
  _this.renderPrefix = function () {