@skbkontur/react-ui 6.0.7-eab55.0 → 6.0.8

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 (283) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/components/Autocomplete/Autocomplete.js +4 -15
  3. package/components/Autocomplete/Autocomplete.js.map +1 -1
  4. package/components/Calendar/Calendar.d.ts +14 -14
  5. package/components/Calendar/Calendar.js +2 -2
  6. package/components/Calendar/Calendar.js.map +1 -1
  7. package/components/Calendar/CalendarDay.d.ts +2 -2
  8. package/components/Calendar/CalendarDay.js +1 -4
  9. package/components/Calendar/CalendarDay.js.map +1 -1
  10. package/components/Calendar/DayCellView.styles.d.ts +0 -1
  11. package/components/Calendar/DayCellView.styles.js +3 -6
  12. package/components/Calendar/DayCellView.styles.js.map +1 -1
  13. package/components/Center/Center.d.ts +3 -3
  14. package/components/Center/Center.js +2 -2
  15. package/components/Center/Center.js.map +1 -1
  16. package/components/Checkbox/Checkbox.d.ts +11 -14
  17. package/components/Checkbox/Checkbox.js +3 -6
  18. package/components/Checkbox/Checkbox.js.map +1 -1
  19. package/components/ComboBox/ComboBox.d.ts +3 -3
  20. package/components/ComboBox/ComboBox.js.map +1 -1
  21. package/components/DateInput/DateInput.d.ts +15 -15
  22. package/components/DateInput/DateInput.js +1 -1
  23. package/components/DateInput/DateInput.js.map +1 -1
  24. package/components/DatePicker/DatePicker.d.ts +14 -16
  25. package/components/DatePicker/DatePicker.js +4 -5
  26. package/components/DatePicker/DatePicker.js.map +1 -1
  27. package/components/DatePicker/MobilePicker.js +1 -1
  28. package/components/DatePicker/MobilePicker.js.map +1 -1
  29. package/components/DateRangePicker/DateRangePicker.d.ts +4 -3
  30. package/components/DateRangePicker/DateRangePicker.js +6 -4
  31. package/components/DateRangePicker/DateRangePicker.js.map +1 -1
  32. package/components/DateRangePicker/DateRangePickerInput.js +9 -6
  33. package/components/DateRangePicker/DateRangePickerInput.js.map +1 -1
  34. package/components/Dropdown/Dropdown.d.ts +8 -15
  35. package/components/Dropdown/Dropdown.js +1 -8
  36. package/components/Dropdown/Dropdown.js.map +1 -1
  37. package/components/DropdownMenu/DropdownMenu.d.ts +2 -1
  38. package/components/DropdownMenu/DropdownMenu.js +2 -1
  39. package/components/DropdownMenu/DropdownMenu.js.map +1 -1
  40. package/components/FileUploader/FileUploader.d.ts +4 -6
  41. package/components/FileUploader/FileUploader.js +1 -3
  42. package/components/FileUploader/FileUploader.js.map +1 -1
  43. package/components/FileUploader/FileUploaderFile.d.ts +3 -3
  44. package/components/FileUploader/FileUploaderFile.js +1 -1
  45. package/components/FileUploader/FileUploaderFile.js.map +1 -1
  46. package/components/Hint/Hint.js +10 -3
  47. package/components/Hint/Hint.js.map +1 -1
  48. package/components/Input/Input.d.ts +2 -2
  49. package/components/Input/Input.js.map +1 -1
  50. package/components/Loader/Loader.d.ts +4 -12
  51. package/components/Loader/Loader.js +7 -18
  52. package/components/Loader/Loader.js.map +1 -1
  53. package/components/MenuFooter/MenuFooter.d.ts +1 -1
  54. package/components/MenuFooter/MenuFooter.js +1 -1
  55. package/components/MenuFooter/MenuFooter.js.map +1 -1
  56. package/components/MenuHeader/MenuHeader.d.ts +2 -2
  57. package/components/MenuHeader/MenuHeader.js +1 -1
  58. package/components/MenuHeader/MenuHeader.js.map +1 -1
  59. package/components/MenuItem/MenuItem.d.ts +1 -1
  60. package/components/MenuItem/MenuItem.js +16 -24
  61. package/components/MenuItem/MenuItem.js.map +1 -1
  62. package/components/MenuItem/MenuItem.styles.d.ts +0 -3
  63. package/components/MenuItem/MenuItem.styles.js +16 -25
  64. package/components/MenuItem/MenuItem.styles.js.map +1 -1
  65. package/components/MenuSeparator/MenuSeparator.d.ts +1 -1
  66. package/components/MenuSeparator/MenuSeparator.js +1 -1
  67. package/components/MenuSeparator/MenuSeparator.js.map +1 -1
  68. package/components/MiniModal/MiniModal.d.ts +1 -1
  69. package/components/MiniModal/MiniModal.js +1 -1
  70. package/components/MiniModal/MiniModal.js.map +1 -1
  71. package/components/MiniModal/MiniModalBody.d.ts +1 -1
  72. package/components/MiniModal/MiniModalBody.js +1 -1
  73. package/components/MiniModal/MiniModalBody.js.map +1 -1
  74. package/components/MiniModal/MiniModalFooter.d.ts +1 -1
  75. package/components/MiniModal/MiniModalFooter.js +1 -1
  76. package/components/MiniModal/MiniModalFooter.js.map +1 -1
  77. package/components/MiniModal/MiniModalHeader.d.ts +1 -1
  78. package/components/MiniModal/MiniModalHeader.js +1 -1
  79. package/components/MiniModal/MiniModalHeader.js.map +1 -1
  80. package/components/Paging/Paging.d.ts +2 -2
  81. package/components/Paging/Paging.js.map +1 -1
  82. package/components/Radio/Radio.d.ts +7 -7
  83. package/components/Radio/Radio.js.map +1 -1
  84. package/components/RadioGroup/RadioGroup.d.ts +2 -2
  85. package/components/RadioGroup/RadioGroup.js.map +1 -1
  86. package/components/Select/Select.d.ts +4 -4
  87. package/components/Select/Select.js +1 -11
  88. package/components/Select/Select.js.map +1 -1
  89. package/components/SingleToast/SingleToast.d.ts +7 -10
  90. package/components/SingleToast/SingleToast.js +7 -10
  91. package/components/SingleToast/SingleToast.js.map +1 -1
  92. package/components/Spinner/Spinner.d.ts +33 -23
  93. package/components/Spinner/Spinner.js +19 -23
  94. package/components/Spinner/Spinner.js.map +1 -1
  95. package/components/Spinner/Spinner.styles.d.ts +3 -0
  96. package/components/Spinner/Spinner.styles.js +15 -6
  97. package/components/Spinner/Spinner.styles.js.map +1 -1
  98. package/components/Sticky/Sticky.d.ts +0 -4
  99. package/components/Sticky/Sticky.js +0 -4
  100. package/components/Sticky/Sticky.js.map +1 -1
  101. package/components/Switcher/Switcher.d.ts +8 -10
  102. package/components/Switcher/Switcher.js +1 -3
  103. package/components/Switcher/Switcher.js.map +1 -1
  104. package/components/Textarea/Textarea.js +1 -1
  105. package/components/Textarea/Textarea.js.map +1 -1
  106. package/components/Textarea/Textarea.styles.d.ts +0 -1
  107. package/components/Textarea/Textarea.styles.js +4 -7
  108. package/components/Textarea/Textarea.styles.js.map +1 -1
  109. package/components/Textarea/TextareaCounter.d.ts +0 -2
  110. package/components/Textarea/TextareaCounter.js +4 -22
  111. package/components/Textarea/TextareaCounter.js.map +1 -1
  112. package/components/Toast/Toast.d.ts +14 -13
  113. package/components/Toast/Toast.js +3 -3
  114. package/components/Toast/Toast.js.map +1 -1
  115. package/components/Toast/ToastView.d.ts +5 -8
  116. package/components/Toast/ToastView.js +8 -28
  117. package/components/Toast/ToastView.js.map +1 -1
  118. package/components/Toast/ToastView.styles.d.ts +0 -7
  119. package/components/Toast/ToastView.styles.js +8 -30
  120. package/components/Toast/ToastView.styles.js.map +1 -1
  121. package/components/Tooltip/Tooltip.d.ts +4 -4
  122. package/components/Tooltip/Tooltip.js.map +1 -1
  123. package/index.d.ts +0 -1
  124. package/index.js +0 -1
  125. package/index.js.map +1 -1
  126. package/internal/CloseButtonIcon/CloseButtonIcon.js +1 -1
  127. package/internal/CloseButtonIcon/CloseButtonIcon.js.map +1 -1
  128. package/internal/CommonWrapper/CommonWrapper.js +0 -5
  129. package/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  130. package/internal/CustomComboBox/ComboBoxMenu.js +1 -1
  131. package/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  132. package/internal/CustomComboBox/ComboBoxView.js +2 -13
  133. package/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  134. package/internal/Menu/Menu.js +0 -3
  135. package/internal/Menu/Menu.js.map +1 -1
  136. package/internal/Menu/Menu.styles.d.ts +0 -1
  137. package/internal/Menu/Menu.styles.js +10 -13
  138. package/internal/Menu/Menu.styles.js.map +1 -1
  139. package/internal/MenuMessage/MenuMessage.js +1 -17
  140. package/internal/MenuMessage/MenuMessage.js.map +1 -1
  141. package/internal/MenuMessage/MenuMessage.styles.d.ts +0 -3
  142. package/internal/MenuMessage/MenuMessage.styles.js +4 -13
  143. package/internal/MenuMessage/MenuMessage.styles.js.map +1 -1
  144. package/internal/MobilePopup/MobilePopup.d.ts +0 -8
  145. package/internal/MobilePopup/MobilePopup.js +11 -34
  146. package/internal/MobilePopup/MobilePopup.js.map +1 -1
  147. package/internal/MobilePopup/MobilePopup.styles.d.ts +0 -7
  148. package/internal/MobilePopup/MobilePopup.styles.js +10 -34
  149. package/internal/MobilePopup/MobilePopup.styles.js.map +1 -1
  150. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +1 -8
  151. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js +1 -18
  152. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js.map +1 -1
  153. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +0 -3
  154. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js +4 -14
  155. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js.map +1 -1
  156. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +0 -4
  157. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +11 -48
  158. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  159. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.d.ts +0 -6
  160. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js +8 -28
  161. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js.map +1 -1
  162. package/internal/Popup/Popup.d.ts +4 -6
  163. package/internal/Popup/Popup.js +13 -38
  164. package/internal/Popup/Popup.js.map +1 -1
  165. package/internal/Popup/PopupHelper.d.ts +4 -0
  166. package/internal/Popup/PopupHelper.js +31 -0
  167. package/internal/Popup/PopupHelper.js.map +1 -1
  168. package/internal/PopupMenu/PopupMenu.d.ts +2 -1
  169. package/internal/PopupMenu/PopupMenu.js +21 -18
  170. package/internal/PopupMenu/PopupMenu.js.map +1 -1
  171. package/internal/SpinnerIcon/SpinnerIcon.d.ts +3 -3
  172. package/internal/SpinnerIcon/SpinnerIcon.js +4 -4
  173. package/internal/SpinnerIcon/SpinnerIcon.js.map +1 -1
  174. package/internal/icons2022/LoadingIcon.js +1 -1
  175. package/internal/icons2022/LoadingIcon.js.map +1 -1
  176. package/internal/themes/BasicTheme.d.ts +4 -51
  177. package/internal/themes/BasicTheme.js +6 -173
  178. package/internal/themes/BasicTheme.js.map +1 -1
  179. package/lib/getMenuPositions.js +11 -11
  180. package/lib/getMenuPositions.js.map +1 -1
  181. package/lib/theming/themes/DarkTheme.d.ts +0 -1
  182. package/lib/theming/themes/DarkTheme.js +1 -3
  183. package/lib/theming/themes/DarkTheme.js.map +1 -1
  184. package/lib/theming/themes/LightTheme.d.ts +0 -1
  185. package/lib/theming/themes/LightTheme.js +1 -3
  186. package/lib/theming/themes/LightTheme.js.map +1 -1
  187. package/package.json +1 -5
  188. package/components/TimePicker/TimeClockIcon.d.ts +0 -3
  189. package/components/TimePicker/TimeClockIcon.js +0 -11
  190. package/components/TimePicker/TimeClockIcon.js.map +0 -1
  191. package/components/TimePicker/TimeFragmentsView.d.ts +0 -15
  192. package/components/TimePicker/TimeFragmentsView.js +0 -72
  193. package/components/TimePicker/TimeFragmentsView.js.map +0 -1
  194. package/components/TimePicker/TimeFragmentsView.styles.d.ts +0 -12
  195. package/components/TimePicker/TimeFragmentsView.styles.js +0 -43
  196. package/components/TimePicker/TimeFragmentsView.styles.js.map +0 -1
  197. package/components/TimePicker/TimeInput.d.ts +0 -21
  198. package/components/TimePicker/TimeInput.js +0 -98
  199. package/components/TimePicker/TimeInput.js.map +0 -1
  200. package/components/TimePicker/TimePicker.d.ts +0 -59
  201. package/components/TimePicker/TimePicker.js +0 -478
  202. package/components/TimePicker/TimePicker.js.map +0 -1
  203. package/components/TimePicker/TimePicker.styles.d.ts +0 -11
  204. package/components/TimePicker/TimePicker.styles.js +0 -36
  205. package/components/TimePicker/TimePicker.styles.js.map +0 -1
  206. package/components/TimePicker/TimePickerMobilePopup.d.ts +0 -31
  207. package/components/TimePicker/TimePickerMobilePopup.js +0 -21
  208. package/components/TimePicker/TimePickerMobilePopup.js.map +0 -1
  209. package/components/TimePicker/TimePickerPopup.d.ts +0 -19
  210. package/components/TimePicker/TimePickerPopup.js +0 -18
  211. package/components/TimePicker/TimePickerPopup.js.map +0 -1
  212. package/components/TimePicker/TimePickerSlots.d.ts +0 -16
  213. package/components/TimePicker/TimePickerSlots.js +0 -67
  214. package/components/TimePicker/TimePickerSlots.js.map +0 -1
  215. package/components/TimePicker/helpers/TimePicker.constants.d.ts +0 -18
  216. package/components/TimePicker/helpers/TimePicker.constants.js +0 -41
  217. package/components/TimePicker/helpers/TimePicker.constants.js.map +0 -1
  218. package/components/TimePicker/helpers/TimePicker.editing.d.ts +0 -6
  219. package/components/TimePicker/helpers/TimePicker.editing.js +0 -86
  220. package/components/TimePicker/helpers/TimePicker.editing.js.map +0 -1
  221. package/components/TimePicker/helpers/TimePicker.layout.d.ts +0 -7
  222. package/components/TimePicker/helpers/TimePicker.layout.js +0 -17
  223. package/components/TimePicker/helpers/TimePicker.layout.js.map +0 -1
  224. package/components/TimePicker/helpers/TimePicker.selection.d.ts +0 -7
  225. package/components/TimePicker/helpers/TimePicker.selection.js +0 -51
  226. package/components/TimePicker/helpers/TimePicker.selection.js.map +0 -1
  227. package/components/TimePicker/helpers/TimePicker.shared.d.ts +0 -23
  228. package/components/TimePicker/helpers/TimePicker.shared.js +0 -50
  229. package/components/TimePicker/helpers/TimePicker.shared.js.map +0 -1
  230. package/components/TimePicker/helpers/TimePicker.value.d.ts +0 -8
  231. package/components/TimePicker/helpers/TimePicker.value.js +0 -61
  232. package/components/TimePicker/helpers/TimePicker.value.js.map +0 -1
  233. package/components/TimePicker/helpers/scrollSelectedSlotIntoView.d.ts +0 -1
  234. package/components/TimePicker/helpers/scrollSelectedSlotIntoView.js +0 -21
  235. package/components/TimePicker/helpers/scrollSelectedSlotIntoView.js.map +0 -1
  236. package/components/TimePicker/hooks/useTimePickerDropdown.d.ts +0 -17
  237. package/components/TimePicker/hooks/useTimePickerDropdown.js +0 -62
  238. package/components/TimePicker/hooks/useTimePickerDropdown.js.map +0 -1
  239. package/components/TimePicker/hooks/useTimePickerSelection.d.ts +0 -15
  240. package/components/TimePicker/hooks/useTimePickerSelection.js +0 -43
  241. package/components/TimePicker/hooks/useTimePickerSelection.js.map +0 -1
  242. package/components/TimePicker/hooks/useTimePickerValue.d.ts +0 -18
  243. package/components/TimePicker/hooks/useTimePickerValue.js +0 -48
  244. package/components/TimePicker/hooks/useTimePickerValue.js.map +0 -1
  245. package/components/TimePicker/index.d.ts +0 -2
  246. package/components/TimePicker/index.js +0 -2
  247. package/components/TimePicker/index.js.map +0 -1
  248. package/internal/NativeTimeInput/NativeTimeInput.d.ts +0 -16
  249. package/internal/NativeTimeInput/NativeTimeInput.js +0 -25
  250. package/internal/NativeTimeInput/NativeTimeInput.js.map +0 -1
  251. package/internal/NativeTimeInput/NativeTimeInput.styles.d.ts +0 -3
  252. package/internal/NativeTimeInput/NativeTimeInput.styles.js +0 -15
  253. package/internal/NativeTimeInput/NativeTimeInput.styles.js.map +0 -1
  254. package/internal/NativeTimeInput/index.d.ts +0 -1
  255. package/internal/NativeTimeInput/index.js +0 -2
  256. package/internal/NativeTimeInput/index.js.map +0 -1
  257. package/internal/NativeTimeInput/utils.d.ts +0 -7
  258. package/internal/NativeTimeInput/utils.js +0 -28
  259. package/internal/NativeTimeInput/utils.js.map +0 -1
  260. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.d.ts +0 -2
  261. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js +0 -21
  262. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js.map +0 -1
  263. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.d.ts +0 -2
  264. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js +0 -21
  265. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js.map +0 -1
  266. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.d.ts +0 -2
  267. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.js +0 -21
  268. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.js.map +0 -1
  269. package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.d.ts +0 -2
  270. package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js +0 -20
  271. package/internal/icons2022/TimeClockIcon/TimeClockIcon16Light.js.map +0 -1
  272. package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.d.ts +0 -2
  273. package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js +0 -20
  274. package/internal/icons2022/TimeClockIcon/TimeClockIcon20Light.js.map +0 -1
  275. package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.d.ts +0 -2
  276. package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js +0 -20
  277. package/internal/icons2022/TimeClockIcon/TimeClockIcon24Regular.js.map +0 -1
  278. package/internal/themes/DarkTheme6_1.d.ts +0 -1
  279. package/internal/themes/DarkTheme6_1.js +0 -164
  280. package/internal/themes/DarkTheme6_1.js.map +0 -1
  281. package/internal/themes/LightTheme6_1.d.ts +0 -1
  282. package/internal/themes/LightTheme6_1.js +0 -164
  283. package/internal/themes/LightTheme6_1.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"FileUploader.js","sourceRoot":"","sources":["../../../components/FileUploader/FileUploader.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';\n\nimport { useDrop } from '../../hooks/useDrop.js';\nimport { useMemoObject } from '../../hooks/useMemoObject.js';\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper/index.js';\nimport type { PopupPositionsType, ShortPopupPositionsType } from '../../internal/Popup/index.js';\nimport { useKeyListener } from '../../lib/events/keyListener.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { isBrowser } from '../../lib/globalObject.js';\nimport { useEmotion, useGlobal, useStyles } from '../../lib/renderEnvironment/index.js';\nimport type { InstanceWithRootNode } from '../../lib/rootNode/index.js';\nimport { useSizeControl } from '../../lib/size/useSizeControl.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { getJsRowStyles, getJsStyles, getJsTileStyles, globalClasses } from './FileUploader.styles.js';\nimport { FileUploaderControlContext } from './FileUploaderControlContext.js';\nimport type { FileUploaderControlProviderProps } from './FileUploaderControlProvider.js';\nimport { FileUploaderFile } from './FileUploaderFile.js';\nimport type { FileUploaderFileProps } from './FileUploaderFile.js';\nimport { FileUploaderFileList } from './FileUploaderFileList/FileUploaderFileList.js';\nimport { FileUploaderFileValidationResult } from './FileUploaderFileValidationResult.js';\nimport type {\n FileUploaderAttachedFile,\n FileUploaderUploadButtonPosition,\n FileUploaderValidationSummary,\n FileUploaderView,\n} from './fileUtils.js';\nimport { FileUploaderFileStatus, getAttachedFile } from './fileUtils.js';\nimport { useControlLocale } from './hooks/useControlLocale.js';\nimport { useFileUploaderSize } from './hooks/useFileUploaderSize.js';\nimport { useUpload } from './hooks/useUpload.js';\nimport { UploadIcon } from './icons/UploadIcon.js';\nimport { withFileUploaderControlProvider } from './withFileUploaderControlProvider.js';\n\nconst stopPropagation: React.ReactEventHandler = (e) => e.stopPropagation();\n\ntype FileUploaderOverriddenProps = 'size';\n\ninterface _FileUploaderProps\n extends CommonProps, Omit<React.InputHTMLAttributes<HTMLInputElement>, FileUploaderOverriddenProps> {\n /** Переводит контрол в состояние валидации \"ошибка\". */\n /** Состояние ошибки всего контрола */\n error?: boolean;\n\n /** Переводит контрол в состояние валидации \"предупреждение\" */\n /** Состояние предупреждения всего контрола */\n warning?: boolean;\n\n /** Расположение тултипа с текстом валидации файла.\n * @default 'top left' */\n validationTooltipPosition?: ShortPopupPositionsType | PopupPositionsType;\n\n /** Включает отображение текста валидации файла во всплывающей подсказке вместо строки рядом с именем.\n * @default false */\n withValidationTooltip?: boolean;\n\n /** Включает отображение иконки предупреждения (восклицательный знак) при статусе предупреждения у файла.\n * @default false */\n withWarningIcon?: boolean;\n\n /** Ширина контрола. */\n width?: React.CSSProperties['width'];\n\n /** Размер контрола и вложенных элементов.\n * @default small */\n size?: SizeProp;\n\n /** Скрывает встроенный список файлов.\n * @default false */\n hideFiles?: boolean;\n\n /** Текст ссылки выбора файла.\n * @default \"Выберите файл\"\n */\n uploaderText?: string;\n\n /** Иконка в кнопке загрузки.\n */\n uploaderIcon?: React.ReactNode;\n\n /** Режим отображения списка файлов: строка (`row`) или плитка (`tile`).\n * @default row\n */\n view?: FileUploaderView;\n\n /** Режим блока-саммари по ошибкам и предупреждениям:\n * - `auto` — от порога `validationSummaryStart`,\n * - `enabled` / `disabled` — всегда или никогда.\n * @default auto\n */\n validationSummary?: FileUploaderValidationSummary;\n\n /** Порог числа файлов для показа саммари при `validationSummary=\"auto\"`.\n * @default 5 */\n validationSummaryStart?: number;\n\n /** Расположение кнопки загрузки относительно списка: в начале или в конце.\n * @default start */\n uploadButtonPosition?: FileUploaderUploadButtonPosition;\n\n /** Включает асинхронный режим загрузки файлов.\n * Отклонённый промис помечает файл(ы) ошибкой загрузки.\n */\n request?: (file: FileUploaderAttachedFile) => Promise<void>;\n\n /** Колбэк после успешного завершения `request` для файла. */\n onRequestSuccess?: (fileId: string) => void;\n\n /** Колбэк после ошибки `request` для файла. */\n onRequestError?: (fileId: string) => void;\n\n /** Проверка файла после выбора и до `request`: строка или `{ message, status }` — ошибка/предупреждение. Пустой результат — файл проходит.\n */\n validateBeforeUpload?: (\n file: FileUploaderAttachedFile,\n ) => Promise<Nullable<string | { message: string; status: FileUploaderFileStatus }>>;\n\n /**\n * Задаёт метод отрисовки файлов.\n * @default (props: FileUploaderFileProps) => <FileUploaderFile {...props} />\n */\n renderFile?: (props: FileUploaderFileProps) => React.ReactNode;\n}\n\nexport interface FileUploaderRef extends InstanceWithRootNode {\n /** Устанавливает фокус на скрытом `input` выбора файла. */\n focus: () => void;\n /** Снимает фокус с `input` выбора файла. */\n blur: () => void;\n /** Очищает список файлов и значения `input`. */\n reset: () => void;\n /** Удаляет файл по id с вызовом `onRemove` и `onValueChange`. */\n removeFile: (fileId: string) => void;\n}\n\nexport type FileUploader = FileUploaderRef;\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 = (props: FileUploaderFileProps) => <FileUploaderFile {...props} />;\n\nconst _FileUploader = forwardRefAndName<FileUploaderRef, _FileUploaderProps>('FileUploader', (props, ref) => {\n const theme = useContext(ThemeContext);\n const globalObject = useGlobal();\n const { cx } = useEmotion();\n const jsStyles = useStyles(getJsStyles);\n const jsRowStyles = useStyles(getJsRowStyles);\n const jsTileStyles = useStyles(getJsTileStyles);\n const keyListener = useKeyListener();\n\n const {\n disabled,\n error,\n warning,\n withValidationTooltip = false,\n validationTooltipPosition,\n withWarningIcon = false,\n multiple = false,\n uploaderText,\n uploaderIcon,\n view = 'row',\n uploadButtonPosition = 'start',\n validationSummary = 'auto',\n validationSummaryStart = 5,\n width = theme.fileUploaderWidth,\n hideFiles = false,\n onBlur,\n onFocus,\n onChange,\n request,\n validateBeforeUpload,\n onRequestSuccess,\n onRequestError,\n size: sizeProp,\n renderFile = defaultRenderFile,\n ...inputProps\n } = props;\n const size = useSizeControl(sizeProp);\n\n const { files, setFiles, removeFile, reset, setFileValidationResult } = 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 [hovered, setHovered] = useState(false);\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 if (typeof validationMessage === 'object') {\n setFileValidationResult(\n file.id,\n FileUploaderFileValidationResult.error(validationMessage.message),\n validationMessage.status,\n );\n } else {\n setFileValidationResult(\n file.id,\n FileUploaderFileValidationResult.error(validationMessage),\n FileUploaderFileStatus.Error,\n );\n }\n });\n },\n [validateBeforeUpload, isAsync, upload, setFileValidationResult],\n );\n\n const isTileView = view === 'tile';\n const jsViewStyles = isTileView ? jsTileStyles : jsRowStyles;\n\n const sizeClassName = useFileUploaderSize(size, {\n small: jsViewStyles.sizeSmall(theme),\n medium: jsViewStyles.sizeMedium(theme),\n large: jsViewStyles.sizeLarge(theme),\n });\n\n const uploadButtonTileWithFileClassName = useFileUploaderSize(size, {\n small: jsTileStyles.uploadButtonTileWithFileSmall(theme),\n medium: jsTileStyles.uploadButtonTileWithFileMedium(theme),\n large: jsTileStyles.uploadButtonTileWithFileLarge(theme),\n });\n\n const uploadButtonIconGapClass = useFileUploaderSize(size, {\n small: jsViewStyles.uploadButtonIconGapSmall(theme),\n medium: jsViewStyles.uploadButtonIconGapMedium(theme),\n large: jsViewStyles.uploadButtonIconGapLarge(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 sizeWrapperClass = useFileUploaderSize(size, {\n small: jsTileStyles.uploadButtonWrapperSmall(theme),\n medium: jsTileStyles.uploadButtonWrapperMedium(theme),\n large: jsTileStyles.uploadButtonWrapperLarge(theme),\n });\n\n const sizeWrapperEmptyFileClass = useFileUploaderSize(size, {\n small: jsTileStyles.uploadButtonWrapperEmptyFileSmall(theme),\n medium: jsTileStyles.uploadButtonWrapperEmptyFileMedium(theme),\n large: jsTileStyles.uploadButtonWrapperEmptyFileLarge(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 (isSingleMode && dataTransfer.files.length > 1) {\n dataTransfer.dropEffect = 'none';\n return;\n }\n if (dataTransfer.files?.length > 0) {\n inputRef.current && (inputRef.current.files = dataTransfer.files);\n handleChange(dataTransfer.files);\n }\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 const removeFileFromNativeInput = useCallback(\n (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 [files],\n );\n\n const handleRemoveFile = useCallback(\n (fileId: string) => {\n removeFile(fileId);\n removeFileFromNativeInput(fileId);\n },\n [removeFileFromNativeInput, removeFile],\n );\n\n const handleReset = useCallback(() => {\n reset();\n const dataTransfer = new DataTransfer();\n inputRef.current && (inputRef.current.files = dataTransfer.files);\n }, [reset, handleRemoveFile]);\n\n useImperativeHandle(\n ref,\n () => ({\n focus,\n blur,\n reset: handleReset,\n removeFile: handleRemoveFile,\n getRootNode: () => rootNodeRef.current,\n }),\n [ref, blur, focus, handleReset, handleRemoveFile],\n );\n\n const [focusedByTab, setFocusedByTab] = useState(false);\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n handleChange(event.target.files);\n setHovered(false);\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 hasFiles = files.length > 0;\n const hasOneFile = files.length === 1;\n const hasOneFileForSingle = isSingleMode && hasOneFile && !hideFiles;\n\n const hasError = !!error || files[0]?.status === FileUploaderFileStatus.Error;\n const hasWarning = !!warning || files[0]?.status === FileUploaderFileStatus.Warning;\n\n const uploadButtonClassNames = cx(\n jsStyles.uploadButton(theme),\n jsViewStyles.uploadButton(),\n sizeClassName,\n hasOneFileForSingle && jsViewStyles.uploadButtonWithFile(theme),\n focusedByTab && jsStyles.uploadButtonFocus(theme),\n disabled && {\n [jsStyles.disabled(theme)]: true,\n [jsStyles.disabledBackground(theme)]: !hasFiles,\n },\n (focusedByTab || !hasOneFileForSingle) && {\n [jsStyles.warningButton(theme)]: hasWarning,\n [jsStyles.errorButton(theme)]: hasError,\n },\n hasOneFileForSingle && {\n [uploadButtonTileWithFileClassName]: isTileView,\n [jsTileStyles.verticalAlign()]: isTileView,\n [jsStyles.warningFile(theme)]: (!isTileView || hovered) && hasWarning,\n [jsStyles.errorFile(theme)]: (!isTileView || hovered) && hasError,\n },\n !disabled &&\n hovered && {\n [jsStyles.hovered(theme)]: true,\n },\n isDraggable && !disabled && jsStyles.dragOver(theme),\n );\n\n const canDrop = isWindowDraggable && !disabled;\n const uploadButtonWrapperClassNames = cx(\n isTileView && {\n [sizeWrapperClass]: true,\n [sizeWrapperEmptyFileClass]: !hasOneFileForSingle,\n },\n jsViewStyles.uploadButtonWrapper(),\n canDrop && jsStyles.windowDragOver(theme),\n );\n\n const uploadButtonIconClassNames = cx(\n jsStyles.icon(theme),\n sizeIconClass,\n disabled && jsStyles.iconDisabled(theme),\n uploadButtonIconGapClass,\n );\n\n const rootClassNames = cx(jsStyles.root(theme), !isTileView && jsRowStyles.root());\n\n const contentClassNames = cx(jsViewStyles.content(), {\n [jsViewStyles.contentWithFiles()]: hasOneFileForSingle,\n [contentInnerClass]: !isTileView && (!files.length || !isSingleMode),\n });\n\n const afterLinkTextClassNames = cx(\n globalClasses.afterLinkText,\n hasOneFileForSingle ? jsStyles.afterLinkText_HasFiles() : jsStyles.afterLinkText(),\n );\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 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 icon = uploaderIcon ?? <UploadIcon size={size} view={view} />;\n const chooseFileText = uploaderText ?? locale.chooseFile;\n const chooseFileLocale = `${chooseFileText}${String.fromCharCode(0xa0)}`; /* &nbsp; */\n const hideUploaderText = isTileView && uploaderText === '';\n const renderChooseFileText = () =>\n !hideUploaderText && (\n <span data-tid={FileUploaderDataTids.link} className={linkClassNames}>\n {!hasOneFileForSingle && chooseFileLocale}\n </span>\n );\n\n const renderFileList = () => {\n return (\n !hideFiles &&\n !isSingleMode &&\n !!files.length && (\n <FileUploaderFileList\n renderFile={renderFile}\n size={size}\n view={view}\n onRemove={handleRemoveFile}\n validationTooltipPosition={validationTooltipPosition}\n withValidationTooltip={withValidationTooltip}\n validationSummary={validationSummary}\n validationSummaryStart={validationSummaryStart}\n withWarningIcon={withWarningIcon}\n disabled={disabled}\n />\n )\n );\n };\n\n const fileProps: FileUploaderFileProps = {\n file: files[0],\n size,\n view,\n onRemove: handleRemoveFile,\n error,\n warning,\n withValidationTooltip,\n validationTooltipPosition,\n withWarningIcon,\n hovered,\n disabled,\n };\n\n const fileElement = renderFile(fileProps);\n\n return (\n <CommonWrapper {...props}>\n <div\n data-tid={FileUploaderDataTids.root}\n className={rootClassNames}\n style={useMemoObject({ width: isTileView && !multiple ? theme.fileUploaderTileWidth : width })}\n ref={rootNodeRef}\n >\n {uploadButtonPosition === 'end' && renderFileList()}\n <div className={uploadButtonWrapperClassNames}>\n <label\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n ref={labelRef}\n className={uploadButtonClassNames}\n >\n {!hasOneFileForSingle && <div className={uploadButtonIconClassNames}>{icon}</div>}\n <div data-tid={FileUploaderDataTids.content} className={contentClassNames}>\n {renderChooseFileText()}\n <div className={afterLinkTextClassNames}>\n {hasOneFileForSingle && (\n <div ref={fileDivRef} className={jsStyles.singleFile()}>\n {fileElement}\n </div>\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 {uploadButtonPosition === 'start' && renderFileList()}\n </div>\n </CommonWrapper>\n );\n});\n\nexport interface FileUploaderProps extends _FileUploaderProps, FileUploaderControlProviderProps {}\n\n/**\n * `FileUploader` — контрол для выбора пользователем файла на компьютере и отображения статуса его отправки на сервер.\n *\n * Можно использовать для синхронной отправки данных, например, в форме. Или же можно использовать в асинхронном режиме.\n */\nexport const FileUploader = withFileUploaderControlProvider<FileUploaderProps, FileUploaderRef>(\n React.memo(_FileUploader),\n);\n\nFileUploader.displayName = 'FileUploader';\n"]}
1
+ {"version":3,"file":"FileUploader.js","sourceRoot":"","sources":["../../../components/FileUploader/FileUploader.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';\n\nimport { useDrop } from '../../hooks/useDrop.js';\nimport { useMemoObject } from '../../hooks/useMemoObject.js';\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper/index.js';\nimport type { PopupPositionsType, ShortPopupPositionsType } from '../../internal/Popup/index.js';\nimport { useKeyListener } from '../../lib/events/keyListener.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { isBrowser } from '../../lib/globalObject.js';\nimport { useEmotion, useGlobal, useStyles } from '../../lib/renderEnvironment/index.js';\nimport type { InstanceWithRootNode } from '../../lib/rootNode/index.js';\nimport { useSizeControl } from '../../lib/size/useSizeControl.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { getJsRowStyles, getJsStyles, getJsTileStyles, globalClasses } from './FileUploader.styles.js';\nimport { FileUploaderControlContext } from './FileUploaderControlContext.js';\nimport type { FileUploaderControlProviderProps } from './FileUploaderControlProvider.js';\nimport { FileUploaderFile } from './FileUploaderFile.js';\nimport type { FileUploaderFileProps } from './FileUploaderFile.js';\nimport { FileUploaderFileList } from './FileUploaderFileList/FileUploaderFileList.js';\nimport { FileUploaderFileValidationResult } from './FileUploaderFileValidationResult.js';\nimport type {\n FileUploaderAttachedFile,\n FileUploaderUploadButtonPosition,\n FileUploaderValidationSummary,\n FileUploaderView,\n} from './fileUtils.js';\nimport { FileUploaderFileStatus, getAttachedFile } from './fileUtils.js';\nimport { useControlLocale } from './hooks/useControlLocale.js';\nimport { useFileUploaderSize } from './hooks/useFileUploaderSize.js';\nimport { useUpload } from './hooks/useUpload.js';\nimport { UploadIcon } from './icons/UploadIcon.js';\nimport { withFileUploaderControlProvider } from './withFileUploaderControlProvider.js';\n\nconst stopPropagation: React.ReactEventHandler = (e) => e.stopPropagation();\n\ntype FileUploaderOverriddenProps = 'size';\n\ninterface _FileUploaderProps\n extends CommonProps, Omit<React.InputHTMLAttributes<HTMLInputElement>, FileUploaderOverriddenProps> {\n /** Переводит контрол в состояние ошибки. */\n /** Состояние ошибки всего контрола */\n error?: boolean;\n\n /** Переводит контрол в состояние предупреждения. */\n /** Состояние предупреждения всего контрола. */\n warning?: boolean;\n\n /** Расположение тултипа с текстом валидации файла.\n * @default 'top left' */\n validationTooltipPosition?: ShortPopupPositionsType | PopupPositionsType;\n\n /** Включает отображение текста валидации файла во всплывающей подсказке вместо строки рядом с именем.\n * @default false */\n withValidationTooltip?: boolean;\n\n /** Включает отображение иконки предупреждения (восклицательный знак) при статусе предупреждения у файла.\n * @default false */\n withWarningIcon?: boolean;\n\n /** Ширина контрола. */\n width?: React.CSSProperties['width'];\n\n /** Размер контрола и вложенных элементов.\n * @default small */\n size?: SizeProp;\n\n /** Скрывает встроенный список файлов.\n * @default false */\n hideFiles?: boolean;\n\n /** Текст ссылки выбора файла.\n * @default \"Выберите файл\"\n */\n uploaderText?: string;\n\n /** Иконка в кнопке загрузки.\n */\n uploaderIcon?: React.ReactNode;\n\n /** Режим отображения списка файлов: строка (`row`) или плитка (`tile`).\n * @default row\n */\n view?: FileUploaderView;\n\n /** Режим блока-саммари по ошибкам и предупреждениям:\n * - `auto` — от порога `validationSummaryStart`,\n * - `enabled` / `disabled` — всегда или никогда.\n * @default auto\n */\n validationSummary?: FileUploaderValidationSummary;\n\n /** Порог числа файлов для показа саммари при `validationSummary=\"auto\"`.\n * @default 5 */\n validationSummaryStart?: number;\n\n /** Расположение кнопки загрузки относительно списка: в начале или в конце.\n * @default start */\n uploadButtonPosition?: FileUploaderUploadButtonPosition;\n\n /** Включает асинхронный режим загрузки файлов.\n * Отклонённый промис помечает файл(ы) ошибкой загрузки.\n */\n request?: (file: FileUploaderAttachedFile) => Promise<void>;\n\n /** Колбэк после успешного завершения `request` для файла. */\n onRequestSuccess?: (fileId: string) => void;\n\n /** Колбэк после ошибки `request` для файла. */\n onRequestError?: (fileId: string) => void;\n\n /** Проверка файла после выбора и до `request`: строка или `{ message, status }` — ошибка/предупреждение. Пустой результат — файл проходит.\n */\n validateBeforeUpload?: (\n file: FileUploaderAttachedFile,\n ) => Promise<Nullable<string | { message: string; status: FileUploaderFileStatus }>>;\n\n /**\n * Задаёт метод отрисовки файлов.\n * @default (props: FileUploaderFileProps) => <FileUploaderFile {...props} />\n */\n renderFile?: (props: FileUploaderFileProps) => React.ReactNode;\n}\n\nexport interface FileUploaderRef extends InstanceWithRootNode {\n /** Устанавливает фокус на скрытом `input` выбора файла. */\n focus: () => void;\n /** Снимает фокус с `input` выбора файла. */\n blur: () => void;\n /** Очищает список файлов и значения `input`. */\n reset: () => void;\n /** Удаляет файл по id с вызовом `onRemove` и `onValueChange`. */\n removeFile: (fileId: string) => void;\n}\n\nexport type FileUploader = FileUploaderRef;\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 = (props: FileUploaderFileProps) => <FileUploaderFile {...props} />;\n\nconst _FileUploader = forwardRefAndName<FileUploaderRef, _FileUploaderProps>('FileUploader', (props, ref) => {\n const theme = useContext(ThemeContext);\n const globalObject = useGlobal();\n const { cx } = useEmotion();\n const jsStyles = useStyles(getJsStyles);\n const jsRowStyles = useStyles(getJsRowStyles);\n const jsTileStyles = useStyles(getJsTileStyles);\n const keyListener = useKeyListener();\n\n const {\n disabled,\n error,\n warning,\n withValidationTooltip = false,\n validationTooltipPosition,\n withWarningIcon = false,\n multiple = false,\n uploaderText,\n uploaderIcon,\n view = 'row',\n uploadButtonPosition = 'start',\n validationSummary = 'auto',\n validationSummaryStart = 5,\n width = theme.fileUploaderWidth,\n hideFiles = false,\n onBlur,\n onFocus,\n onChange,\n request,\n validateBeforeUpload,\n onRequestSuccess,\n onRequestError,\n size: sizeProp,\n renderFile = defaultRenderFile,\n ...inputProps\n } = props;\n const size = useSizeControl(sizeProp);\n\n const { files, setFiles, removeFile, reset, setFileValidationResult } = 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 [hovered, setHovered] = useState(false);\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 if (typeof validationMessage === 'object') {\n setFileValidationResult(\n file.id,\n FileUploaderFileValidationResult.error(validationMessage.message),\n validationMessage.status,\n );\n } else {\n setFileValidationResult(\n file.id,\n FileUploaderFileValidationResult.error(validationMessage),\n FileUploaderFileStatus.Error,\n );\n }\n });\n },\n [validateBeforeUpload, isAsync, upload, setFileValidationResult],\n );\n\n const isTileView = view === 'tile';\n const jsViewStyles = isTileView ? jsTileStyles : jsRowStyles;\n\n const sizeClassName = useFileUploaderSize(size, {\n small: jsViewStyles.sizeSmall(theme),\n medium: jsViewStyles.sizeMedium(theme),\n large: jsViewStyles.sizeLarge(theme),\n });\n\n const uploadButtonTileWithFileClassName = useFileUploaderSize(size, {\n small: jsTileStyles.uploadButtonTileWithFileSmall(theme),\n medium: jsTileStyles.uploadButtonTileWithFileMedium(theme),\n large: jsTileStyles.uploadButtonTileWithFileLarge(theme),\n });\n\n const uploadButtonIconGapClass = useFileUploaderSize(size, {\n small: jsViewStyles.uploadButtonIconGapSmall(theme),\n medium: jsViewStyles.uploadButtonIconGapMedium(theme),\n large: jsViewStyles.uploadButtonIconGapLarge(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 sizeWrapperClass = useFileUploaderSize(size, {\n small: jsTileStyles.uploadButtonWrapperSmall(theme),\n medium: jsTileStyles.uploadButtonWrapperMedium(theme),\n large: jsTileStyles.uploadButtonWrapperLarge(theme),\n });\n\n const sizeWrapperEmptyFileClass = useFileUploaderSize(size, {\n small: jsTileStyles.uploadButtonWrapperEmptyFileSmall(theme),\n medium: jsTileStyles.uploadButtonWrapperEmptyFileMedium(theme),\n large: jsTileStyles.uploadButtonWrapperEmptyFileLarge(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 (isSingleMode && dataTransfer.files.length > 1) {\n dataTransfer.dropEffect = 'none';\n return;\n }\n if (dataTransfer.files?.length > 0) {\n inputRef.current && (inputRef.current.files = dataTransfer.files);\n handleChange(dataTransfer.files);\n }\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 const removeFileFromNativeInput = useCallback(\n (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 [files],\n );\n\n const handleRemoveFile = useCallback(\n (fileId: string) => {\n removeFile(fileId);\n removeFileFromNativeInput(fileId);\n },\n [removeFileFromNativeInput, removeFile],\n );\n\n const handleReset = useCallback(() => {\n reset();\n const dataTransfer = new DataTransfer();\n inputRef.current && (inputRef.current.files = dataTransfer.files);\n }, [reset, handleRemoveFile]);\n\n useImperativeHandle(\n ref,\n () => ({\n focus,\n blur,\n reset: handleReset,\n removeFile: handleRemoveFile,\n getRootNode: () => rootNodeRef.current,\n }),\n [ref, blur, focus, handleReset, handleRemoveFile],\n );\n\n const [focusedByTab, setFocusedByTab] = useState(false);\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n handleChange(event.target.files);\n setHovered(false);\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 hasFiles = files.length > 0;\n const hasOneFile = files.length === 1;\n const hasOneFileForSingle = isSingleMode && hasOneFile && !hideFiles;\n\n const hasError = !!error || files[0]?.status === FileUploaderFileStatus.Error;\n const hasWarning = !!warning || files[0]?.status === FileUploaderFileStatus.Warning;\n\n const uploadButtonClassNames = cx(\n jsStyles.uploadButton(theme),\n jsViewStyles.uploadButton(),\n sizeClassName,\n hasOneFileForSingle && jsViewStyles.uploadButtonWithFile(theme),\n focusedByTab && jsStyles.uploadButtonFocus(theme),\n disabled && {\n [jsStyles.disabled(theme)]: true,\n [jsStyles.disabledBackground(theme)]: !hasFiles,\n },\n (focusedByTab || !hasOneFileForSingle) && {\n [jsStyles.warningButton(theme)]: hasWarning,\n [jsStyles.errorButton(theme)]: hasError,\n },\n hasOneFileForSingle && {\n [uploadButtonTileWithFileClassName]: isTileView,\n [jsTileStyles.verticalAlign()]: isTileView,\n [jsStyles.warningFile(theme)]: (!isTileView || hovered) && hasWarning,\n [jsStyles.errorFile(theme)]: (!isTileView || hovered) && hasError,\n },\n !disabled &&\n hovered && {\n [jsStyles.hovered(theme)]: true,\n },\n isDraggable && !disabled && jsStyles.dragOver(theme),\n );\n\n const canDrop = isWindowDraggable && !disabled;\n const uploadButtonWrapperClassNames = cx(\n isTileView && {\n [sizeWrapperClass]: true,\n [sizeWrapperEmptyFileClass]: !hasOneFileForSingle,\n },\n jsViewStyles.uploadButtonWrapper(),\n canDrop && jsStyles.windowDragOver(theme),\n );\n\n const uploadButtonIconClassNames = cx(\n jsStyles.icon(theme),\n sizeIconClass,\n disabled && jsStyles.iconDisabled(theme),\n uploadButtonIconGapClass,\n );\n\n const rootClassNames = cx(jsStyles.root(theme), !isTileView && jsRowStyles.root());\n\n const contentClassNames = cx(jsViewStyles.content(), {\n [jsViewStyles.contentWithFiles()]: hasOneFileForSingle,\n [contentInnerClass]: !isTileView && (!files.length || !isSingleMode),\n });\n\n const afterLinkTextClassNames = cx(\n globalClasses.afterLinkText,\n hasOneFileForSingle ? jsStyles.afterLinkText_HasFiles() : jsStyles.afterLinkText(),\n );\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 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 icon = uploaderIcon ?? <UploadIcon size={size} view={view} />;\n const chooseFileText = uploaderText ?? locale.chooseFile;\n const chooseFileLocale = `${chooseFileText}${String.fromCharCode(0xa0)}`; /* &nbsp; */\n const hideUploaderText = isTileView && uploaderText === '';\n const renderChooseFileText = () =>\n !hideUploaderText && (\n <span data-tid={FileUploaderDataTids.link} className={linkClassNames}>\n {!hasOneFileForSingle && chooseFileLocale}\n </span>\n );\n\n const renderFileList = () => {\n return (\n !hideFiles &&\n !isSingleMode &&\n !!files.length && (\n <FileUploaderFileList\n renderFile={renderFile}\n size={size}\n view={view}\n onRemove={handleRemoveFile}\n validationTooltipPosition={validationTooltipPosition}\n withValidationTooltip={withValidationTooltip}\n validationSummary={validationSummary}\n validationSummaryStart={validationSummaryStart}\n withWarningIcon={withWarningIcon}\n disabled={disabled}\n />\n )\n );\n };\n\n const fileProps: FileUploaderFileProps = {\n file: files[0],\n size,\n view,\n onRemove: handleRemoveFile,\n error,\n warning,\n withValidationTooltip,\n validationTooltipPosition,\n withWarningIcon,\n hovered,\n disabled,\n };\n\n const fileElement = renderFile(fileProps);\n\n return (\n <CommonWrapper {...props}>\n <div\n data-tid={FileUploaderDataTids.root}\n className={rootClassNames}\n style={useMemoObject({ width: isTileView && !multiple ? theme.fileUploaderTileWidth : width })}\n ref={rootNodeRef}\n >\n {uploadButtonPosition === 'end' && renderFileList()}\n <div className={uploadButtonWrapperClassNames}>\n <label\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n ref={labelRef}\n className={uploadButtonClassNames}\n >\n {!hasOneFileForSingle && <div className={uploadButtonIconClassNames}>{icon}</div>}\n <div data-tid={FileUploaderDataTids.content} className={contentClassNames}>\n {renderChooseFileText()}\n <div className={afterLinkTextClassNames}>\n {hasOneFileForSingle && (\n <div ref={fileDivRef} className={jsStyles.singleFile()}>\n {fileElement}\n </div>\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 {uploadButtonPosition === 'start' && renderFileList()}\n </div>\n </CommonWrapper>\n );\n});\n\nexport interface FileUploaderProps extends _FileUploaderProps, FileUploaderControlProviderProps {}\n\n/**\n * Контрол для выбора пользователем файла на компьютере и отображения статуса его отправки на сервер.\n */\nexport const FileUploader = withFileUploaderControlProvider<FileUploaderProps, FileUploaderRef>(\n React.memo(_FileUploader),\n);\n\nFileUploader.displayName = 'FileUploader';\n"]}
@@ -25,9 +25,9 @@ export interface FileUploaderFileProps extends CommonProps {
25
25
  * @default row
26
26
  */
27
27
  view?: FileUploaderView;
28
- /** Переводит строку файла в состояние валидации "ошибка". */
28
+ /** Переводит строку файла в состояние ошибки. */
29
29
  error?: boolean;
30
- /** Переводит строку файла в состояние валидации "предупреждение". */
30
+ /** Переводит строку файла в состояние предупреждения. */
31
31
  warning?: boolean;
32
32
  /** Включает отображение текста валидации во всплывающей подсказке (и в плитке по умолчанию). */
33
33
  withValidationTooltip?: boolean;
@@ -56,6 +56,6 @@ export declare const FileUploaderFileDataTids: {
56
56
  readonly fileTypeIcon: "FileUploader__fileTypeIcon";
57
57
  };
58
58
  /**
59
- * `FileUploaderFile` показывает одну строку файла внутри `FileUploader`: имя, тип, размер, статусы и удаление.
59
+ * `FileUploaderFile` показывает одну строку файла внутри [FileUploader](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_input-data-fileuploader-fileuploader--docs): имя, тип, размер, статусы и удаление.
60
60
  */
61
61
  export declare const FileUploaderFile: import("../../lib/forwardRefAndName.js").ReactUIComponentWithRef<HTMLDivElement, FileUploaderFileProps> & Record<never, never>;
@@ -83,7 +83,7 @@ export var FileUploaderFileDataTids = {
83
83
  fileTypeIcon: 'FileUploader__fileTypeIcon',
84
84
  };
85
85
  /**
86
- * `FileUploaderFile` показывает одну строку файла внутри `FileUploader`: имя, тип, размер, статусы и удаление.
86
+ * `FileUploaderFile` показывает одну строку файла внутри [FileUploader](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_input-data-fileuploader-fileuploader--docs): имя, тип, размер, статусы и удаление.
87
87
  */
88
88
  export var FileUploaderFile = forwardRefAndName('FileUploaderFile', function (props, ref) {
89
89
  var _a, _b, _c;
@@ -1 +1 @@
1
- {"version":3,"file":"FileUploaderFile.js","sourceRoot":"","sources":["../../../components/FileUploader/FileUploaderFile.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { type CommonProps, CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { LoadingIcon } from '../../internal/icons2022/LoadingIcon.js';\nimport type { PopupPositionsType, ShortPopupPositionsType } from '../../internal/Popup/index.js';\nimport { TextWidthHelper } from '../../internal/TextWidthHelper/TextWidthHelper.js';\nimport { getDOMRect } from '../../lib/dom/getDOMRect.js';\nimport { isKeyEnter } from '../../lib/events/keyboard/identifiers.js';\nimport { useKeyListener } from '../../lib/events/keyListener.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useGlobal, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { truncate } from '../../lib/stringUtils.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { formatBytes } from '../../lib/utils.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { Hint } from '../Hint/index.js';\nimport { Tooltip } from '../Tooltip/index.js';\nimport { getJsRowStyles, getJsStyles, getJsTileStyles } from './FileUploaderFile.styles.js';\nimport { FileUploaderFileStatusIcon } from './FileUploaderFileStatusIcon.js';\nimport { FileUploaderFileTypeIcon } from './FileUploaderFileTypeIcon.js';\nimport type { FileUploaderAttachedFile, FileUploaderIconType, FileUploaderView } from './fileUtils.js';\nimport { FileUploaderFileStatus, getFileUploaderTypeIcon } from './fileUtils.js';\nimport { useFileUploaderSize } from './hooks/useFileUploaderSize.js';\n\nexport interface FileUploaderFileProps extends CommonProps {\n /** Данные файла и статусы из контекста `FileUploader`. */\n file: FileUploaderAttachedFile;\n /** Включает отображение размера файла рядом с именем. */\n showSize?: boolean;\n /** Фон превью в плиточном виде (URL изображения). */\n previewImg?: string;\n /** Включает мультивыбор файлов. */\n multiple?: boolean;\n /** Блокирует строку файла. */\n disabled?: boolean;\n /** Переводит строку файла в состояние \"наведенное\". */\n hovered?: boolean;\n /** Переводит строку файла в состояние \"фокус\". */\n focused?: boolean;\n /** Размер контрола и вложенных элементов.\n * @default small */\n size: SizeProp;\n /** Внешний вид: строка (`row`) или плитка (`tile`).\n * @default row\n */\n view?: FileUploaderView;\n /** Переводит строку файла в состояние валидации \"ошибка\". */\n error?: boolean;\n /** Переводит строку файла в состояние валидации \"предупреждение\". */\n warning?: boolean;\n /** Включает отображение текста валидации во всплывающей подсказке (и в плитке по умолчанию). */\n withValidationTooltip?: boolean;\n /** Расположение тултипа с текстом валидации. */\n validationTooltipPosition?: ShortPopupPositionsType | PopupPositionsType;\n /** Включает отображение иконки предупреждения (восклицательный знак) при статусе предупреждения у файла. */\n withWarningIcon?: boolean;\n /** Удаляет файл по `id`. */\n onRemove(id: string): void;\n /**\n * Замена стандартной иконки типа файла.\n */\n fileTypeIcon?: React.ReactElement;\n /**\n * Включает отображение подсказки с полным именем при обрезке текста (через `Hint`).\n * @default true\n */\n showFilenameHint?: boolean;\n}\n\nconst splitFileNameAndExtension = (filename: string): { name: string; extension: string } => {\n const lastDotIndex = filename.lastIndexOf('.');\n if (lastDotIndex === -1) {\n return { name: filename, extension: '' };\n }\n const name = filename.substring(0, lastDotIndex);\n const extension = filename.substring(lastDotIndex + 1);\n return { name, extension };\n};\n\nconst getTruncatedName = (fileNameWidth: number, fileNameElementWidth: number, name: string, isTileView = false) => {\n if (!fileNameWidth && !fileNameElementWidth) {\n return null;\n }\n\n if (fileNameWidth <= fileNameElementWidth) {\n return name;\n }\n\n const charWidth = Math.ceil(fileNameWidth / name.length);\n const maxCharsCountInSpan = Math.ceil(fileNameElementWidth / charWidth);\n\n if (isTileView) {\n const splitFileName = splitFileNameAndExtension(name);\n return `${truncate(splitFileName.name, maxCharsCountInSpan)}.${splitFileName.extension}`;\n }\n\n return truncate(name, maxCharsCountInSpan);\n};\n\nconst calcTruncatedName = (\n textHelperRef: React.RefObject<TextWidthHelper | null>,\n fileNameElementRef: React.RefObject<HTMLSpanElement | null>,\n name: string,\n isTileView = false,\n) => {\n const fileNameWidth = textHelperRef.current?.getTextWidth() || 0;\n const fileNameElementWidth = isTileView\n ? // даем возможность занять 2 строки с погрешностью в 50%\n getDOMRect(fileNameElementRef.current).width * 1.5\n : getDOMRect(fileNameElementRef.current).width;\n\n return getTruncatedName(fileNameWidth, fileNameElementWidth, name, isTileView);\n};\n\nexport const FileUploaderFileDataTids = {\n file: 'FileUploader__file',\n fileTooltip: 'FileUploader__fileTooltip',\n fileName: 'FileUploader__fileName',\n fileSize: 'FileUploader__fileSize',\n fileIcon: 'FileUploader__fileIcon',\n fileTypeIcon: 'FileUploader__fileTypeIcon',\n} as const;\n\n/**\n * `FileUploaderFile` показывает одну строку файла внутри `FileUploader`: имя, тип, размер, статусы и удаление.\n */\nexport const FileUploaderFile = forwardRefAndName<HTMLDivElement, FileUploaderFileProps>(\n 'FileUploaderFile',\n (props, ref) => {\n const {\n file,\n showSize = false,\n previewImg,\n error,\n warning,\n multiple,\n disabled = false,\n hovered = false,\n focused = false,\n size,\n view = 'row',\n withValidationTooltip,\n validationTooltipPosition,\n withWarningIcon,\n onRemove,\n showFilenameHint: showFullFilename = true,\n fileTypeIcon,\n ...rest\n } = props;\n const { id, originalFile, status, validationResult } = file;\n const { name, size: fileSize } = originalFile;\n\n const [hoveredFile, setHoveredFile] = useState<boolean>(hovered || false);\n const [focusedByTab, setFocusedByTab] = useState(focused || false);\n const [truncatedFileName, setTruncatedFileName] = useState<Nullable<string>>(null);\n\n const textHelperRef = useRef<TextWidthHelper>(null);\n const fileNameElementRef = useRef<HTMLSpanElement>(null);\n\n const theme = useContext(ThemeContext);\n const globalObject = useGlobal();\n\n const { cx } = useEmotion();\n const keyListener = useKeyListener();\n const jsStyles = useStyles(getJsStyles);\n const jsRowStyles = useStyles(getJsRowStyles);\n const jsTileStyles = useStyles(getJsTileStyles);\n\n const isLoading = status === FileUploaderFileStatus.Loading;\n const isTileView = view === 'tile';\n const jsViewStyles = isTileView ? jsTileStyles : jsRowStyles;\n const validationTooltipPositionByView = validationTooltipPosition || (isTileView ? 'top center' : 'top left');\n\n const formattedSize = useMemo(() => formatBytes(fileSize, 1), [fileSize]);\n\n useEffect(() => {\n const truncatedName = calcTruncatedName(textHelperRef, fileNameElementRef, name, isTileView);\n\n setTruncatedFileName(truncatedName);\n });\n\n const handleRemove = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n event.preventDefault();\n event.stopPropagation();\n onRemove(id);\n },\n [id, onRemove],\n );\n\n const { isValid, message } = validationResult;\n\n const isError = file.status === FileUploaderFileStatus.Error || error;\n const isWarning = file.status === FileUploaderFileStatus.Warning || warning;\n const isInvalid = isError || !isValid;\n\n const sizeIconClass = useFileUploaderSize(size, {\n small: jsViewStyles.iconSmall(theme),\n medium: jsViewStyles.iconMedium(theme),\n large: jsViewStyles.iconLarge(theme),\n });\n\n const renderTooltipContent = useCallback((): ReactNode => {\n return !isValid && !error && message ? message : null;\n }, [isValid, error, message]);\n\n const sizeNameBlockClass = useFileUploaderSize(size, {\n small: jsStyles.contentSmall(theme),\n medium: jsStyles.contentMedium(theme),\n large: jsStyles.contentLarge(theme),\n });\n\n const sizeViewNameBlockClass = useFileUploaderSize(size, {\n small: jsViewStyles.contentSmall(theme),\n medium: jsViewStyles.contentMedium(theme),\n large: jsViewStyles.contentLarge(theme),\n });\n\n const validationTextClassName = cx({\n [jsStyles.validationTextWarning(theme)]: isWarning,\n [jsStyles.validationTextError(theme)]: isError,\n });\n\n const contentClassNames = cx(jsStyles.content(), jsViewStyles.content());\n const nameTextClassNames = cx(jsViewStyles.name(), isTileView && !disabled && validationTextClassName);\n\n const handleMouseEnter = useCallback(() => {\n setHoveredFile(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setHoveredFile(false);\n }, []);\n\n const handleFocus = useCallback(() => {\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 }, []);\n\n const handleBlur = useCallback(() => {\n setFocusedByTab(false);\n }, []);\n\n const handleIconKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEnter(e)) {\n onRemove(id);\n }\n },\n [onRemove, id],\n );\n\n const iconClassNames = cx(jsStyles.icon(theme), {\n [sizeIconClass]: true,\n [jsTileStyles.iconAction(theme)]: isTileView,\n [jsTileStyles.iconActionShow()]: isTileView && !disabled && (hovered || hoveredFile || focused || focusedByTab),\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 sizeClassNames = cx(\n jsStyles.size(theme),\n sizeClassName,\n jsViewStyles.size(theme),\n isTileView && disabled && jsTileStyles.sizeDisabled(theme),\n );\n\n const sizeFileTypeIconClass = useFileUploaderSize(size, {\n small: jsViewStyles.fileTypeIconSmall(theme),\n medium: jsViewStyles.fileTypeIconMedium(theme),\n large: jsViewStyles.fileTypeIconLarge(theme),\n });\n\n const isTruncated = truncatedFileName !== name;\n\n const fileTypeIconClassName = cx(\n sizeFileTypeIconClass,\n disabled && jsStyles.disabledFileTypeIconSvg(theme),\n isTileView && {\n [jsTileStyles.fileTypeIcon(theme)]: true,\n [jsTileStyles.fileTypeIconPreview()]: !!previewImg,\n [jsTileStyles.disabledFileTypeIcon(theme)]: disabled,\n [jsTileStyles.warningFileTypeIcon(theme)]: isWarning,\n [jsTileStyles.errorFileTypeIcon(theme)]: isError,\n },\n multiple && jsStyles.fileTypeIconMultiple(),\n );\n\n const nameBlockClassNames = cx(\n sizeNameBlockClass,\n sizeViewNameBlockClass,\n jsStyles.nameBlock(),\n disabled && jsViewStyles.disabled(theme),\n jsViewStyles.nameBlock(),\n );\n\n const fileType: FileUploaderIconType = getFileUploaderTypeIcon(\n file.originalFile,\n isError,\n isWarning && !!withWarningIcon,\n );\n const icon =\n isTileView && isLoading ? (\n <LoadingIcon size={size} />\n ) : (\n (fileTypeIcon ?? <FileUploaderFileTypeIcon type={fileType} size={size} view={view} />)\n );\n\n const splitTruncatedFileName = truncatedFileName && splitFileNameAndExtension(truncatedFileName);\n\n return (\n <CommonWrapper {...rest}>\n <div\n data-tid={FileUploaderFileDataTids.file}\n className={jsStyles.root()}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n ref={ref}\n >\n <Tooltip\n data-tid={FileUploaderFileDataTids.fileTooltip}\n pos={validationTooltipPositionByView}\n render={() => (withValidationTooltip || isTileView ? renderTooltipContent() : null)}\n >\n <div className={contentClassNames}>\n {\n <div\n data-tid={FileUploaderFileDataTids.fileTypeIcon}\n className={fileTypeIconClassName}\n style={previewImg ? { backgroundImage: `url(${previewImg})` } : undefined}\n >\n {(!isTileView || !previewImg) && icon}\n </div>\n }\n <div className={nameBlockClassNames}>\n <TextWidthHelper ref={textHelperRef} text={name} />\n <Hint maxWidth={'100%'} text={showFullFilename && isTruncated ? name : null}>\n <span\n data-tid={FileUploaderFileDataTids.fileName}\n ref={fileNameElementRef}\n className={nameTextClassNames}\n >\n {splitTruncatedFileName && (\n <>\n {splitTruncatedFileName.name}\n {splitTruncatedFileName.extension && <span>.{splitTruncatedFileName.extension}</span>}\n </>\n )}\n </span>\n </Hint>\n {!(withValidationTooltip || isTileView) && (\n <span className={validationTextClassName}>{renderTooltipContent()}</span>\n )}\n </div>\n {showSize && formattedSize && (\n <span data-tid={FileUploaderFileDataTids.fileSize} className={sizeClassNames}>\n {formattedSize}\n </span>\n )}\n <div\n className={iconClassNames}\n data-tid={FileUploaderFileDataTids.fileIcon}\n tabIndex={0}\n onClick={handleRemove}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleIconKeyDown}\n >\n <FileUploaderFileStatusIcon\n isTileView={isTileView}\n status={status}\n disabled={disabled}\n hovered={hovered || hoveredFile}\n focusedByTab={focused || focusedByTab}\n isInvalid={isInvalid}\n hasValidation={isError || isWarning}\n size={size}\n />\n </div>\n </div>\n </Tooltip>\n </div>\n </CommonWrapper>\n );\n },\n);\n"]}
1
+ {"version":3,"file":"FileUploaderFile.js","sourceRoot":"","sources":["../../../components/FileUploader/FileUploaderFile.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { type CommonProps, CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { LoadingIcon } from '../../internal/icons2022/LoadingIcon.js';\nimport type { PopupPositionsType, ShortPopupPositionsType } from '../../internal/Popup/index.js';\nimport { TextWidthHelper } from '../../internal/TextWidthHelper/TextWidthHelper.js';\nimport { getDOMRect } from '../../lib/dom/getDOMRect.js';\nimport { isKeyEnter } from '../../lib/events/keyboard/identifiers.js';\nimport { useKeyListener } from '../../lib/events/keyListener.js';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName.js';\nimport { useEmotion, useGlobal, useStyles } from '../../lib/renderEnvironment/index.js';\nimport { truncate } from '../../lib/stringUtils.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport { formatBytes } from '../../lib/utils.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { Hint } from '../Hint/index.js';\nimport { Tooltip } from '../Tooltip/index.js';\nimport { getJsRowStyles, getJsStyles, getJsTileStyles } from './FileUploaderFile.styles.js';\nimport { FileUploaderFileStatusIcon } from './FileUploaderFileStatusIcon.js';\nimport { FileUploaderFileTypeIcon } from './FileUploaderFileTypeIcon.js';\nimport type { FileUploaderAttachedFile, FileUploaderIconType, FileUploaderView } from './fileUtils.js';\nimport { FileUploaderFileStatus, getFileUploaderTypeIcon } from './fileUtils.js';\nimport { useFileUploaderSize } from './hooks/useFileUploaderSize.js';\n\nexport interface FileUploaderFileProps extends CommonProps {\n /** Данные файла и статусы из контекста `FileUploader`. */\n file: FileUploaderAttachedFile;\n /** Включает отображение размера файла рядом с именем. */\n showSize?: boolean;\n /** Фон превью в плиточном виде (URL изображения). */\n previewImg?: string;\n /** Включает мультивыбор файлов. */\n multiple?: boolean;\n /** Блокирует строку файла. */\n disabled?: boolean;\n /** Переводит строку файла в состояние \"наведенное\". */\n hovered?: boolean;\n /** Переводит строку файла в состояние \"фокус\". */\n focused?: boolean;\n /** Размер контрола и вложенных элементов.\n * @default small */\n size: SizeProp;\n /** Внешний вид: строка (`row`) или плитка (`tile`).\n * @default row\n */\n view?: FileUploaderView;\n /** Переводит строку файла в состояние ошибки. */\n error?: boolean;\n /** Переводит строку файла в состояние предупреждения. */\n warning?: boolean;\n /** Включает отображение текста валидации во всплывающей подсказке (и в плитке по умолчанию). */\n withValidationTooltip?: boolean;\n /** Расположение тултипа с текстом валидации. */\n validationTooltipPosition?: ShortPopupPositionsType | PopupPositionsType;\n /** Включает отображение иконки предупреждения (восклицательный знак) при статусе предупреждения у файла. */\n withWarningIcon?: boolean;\n /** Удаляет файл по `id`. */\n onRemove(id: string): void;\n /**\n * Замена стандартной иконки типа файла.\n */\n fileTypeIcon?: React.ReactElement;\n /**\n * Включает отображение подсказки с полным именем при обрезке текста (через `Hint`).\n * @default true\n */\n showFilenameHint?: boolean;\n}\n\nconst splitFileNameAndExtension = (filename: string): { name: string; extension: string } => {\n const lastDotIndex = filename.lastIndexOf('.');\n if (lastDotIndex === -1) {\n return { name: filename, extension: '' };\n }\n const name = filename.substring(0, lastDotIndex);\n const extension = filename.substring(lastDotIndex + 1);\n return { name, extension };\n};\n\nconst getTruncatedName = (fileNameWidth: number, fileNameElementWidth: number, name: string, isTileView = false) => {\n if (!fileNameWidth && !fileNameElementWidth) {\n return null;\n }\n\n if (fileNameWidth <= fileNameElementWidth) {\n return name;\n }\n\n const charWidth = Math.ceil(fileNameWidth / name.length);\n const maxCharsCountInSpan = Math.ceil(fileNameElementWidth / charWidth);\n\n if (isTileView) {\n const splitFileName = splitFileNameAndExtension(name);\n return `${truncate(splitFileName.name, maxCharsCountInSpan)}.${splitFileName.extension}`;\n }\n\n return truncate(name, maxCharsCountInSpan);\n};\n\nconst calcTruncatedName = (\n textHelperRef: React.RefObject<TextWidthHelper | null>,\n fileNameElementRef: React.RefObject<HTMLSpanElement | null>,\n name: string,\n isTileView = false,\n) => {\n const fileNameWidth = textHelperRef.current?.getTextWidth() || 0;\n const fileNameElementWidth = isTileView\n ? // даем возможность занять 2 строки с погрешностью в 50%\n getDOMRect(fileNameElementRef.current).width * 1.5\n : getDOMRect(fileNameElementRef.current).width;\n\n return getTruncatedName(fileNameWidth, fileNameElementWidth, name, isTileView);\n};\n\nexport const FileUploaderFileDataTids = {\n file: 'FileUploader__file',\n fileTooltip: 'FileUploader__fileTooltip',\n fileName: 'FileUploader__fileName',\n fileSize: 'FileUploader__fileSize',\n fileIcon: 'FileUploader__fileIcon',\n fileTypeIcon: 'FileUploader__fileTypeIcon',\n} as const;\n\n/**\n * `FileUploaderFile` показывает одну строку файла внутри [FileUploader](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_input-data-fileuploader-fileuploader--docs): имя, тип, размер, статусы и удаление.\n */\nexport const FileUploaderFile = forwardRefAndName<HTMLDivElement, FileUploaderFileProps>(\n 'FileUploaderFile',\n (props, ref) => {\n const {\n file,\n showSize = false,\n previewImg,\n error,\n warning,\n multiple,\n disabled = false,\n hovered = false,\n focused = false,\n size,\n view = 'row',\n withValidationTooltip,\n validationTooltipPosition,\n withWarningIcon,\n onRemove,\n showFilenameHint: showFullFilename = true,\n fileTypeIcon,\n ...rest\n } = props;\n const { id, originalFile, status, validationResult } = file;\n const { name, size: fileSize } = originalFile;\n\n const [hoveredFile, setHoveredFile] = useState<boolean>(hovered || false);\n const [focusedByTab, setFocusedByTab] = useState(focused || false);\n const [truncatedFileName, setTruncatedFileName] = useState<Nullable<string>>(null);\n\n const textHelperRef = useRef<TextWidthHelper>(null);\n const fileNameElementRef = useRef<HTMLSpanElement>(null);\n\n const theme = useContext(ThemeContext);\n const globalObject = useGlobal();\n\n const { cx } = useEmotion();\n const keyListener = useKeyListener();\n const jsStyles = useStyles(getJsStyles);\n const jsRowStyles = useStyles(getJsRowStyles);\n const jsTileStyles = useStyles(getJsTileStyles);\n\n const isLoading = status === FileUploaderFileStatus.Loading;\n const isTileView = view === 'tile';\n const jsViewStyles = isTileView ? jsTileStyles : jsRowStyles;\n const validationTooltipPositionByView = validationTooltipPosition || (isTileView ? 'top center' : 'top left');\n\n const formattedSize = useMemo(() => formatBytes(fileSize, 1), [fileSize]);\n\n useEffect(() => {\n const truncatedName = calcTruncatedName(textHelperRef, fileNameElementRef, name, isTileView);\n\n setTruncatedFileName(truncatedName);\n });\n\n const handleRemove = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n event.preventDefault();\n event.stopPropagation();\n onRemove(id);\n },\n [id, onRemove],\n );\n\n const { isValid, message } = validationResult;\n\n const isError = file.status === FileUploaderFileStatus.Error || error;\n const isWarning = file.status === FileUploaderFileStatus.Warning || warning;\n const isInvalid = isError || !isValid;\n\n const sizeIconClass = useFileUploaderSize(size, {\n small: jsViewStyles.iconSmall(theme),\n medium: jsViewStyles.iconMedium(theme),\n large: jsViewStyles.iconLarge(theme),\n });\n\n const renderTooltipContent = useCallback((): ReactNode => {\n return !isValid && !error && message ? message : null;\n }, [isValid, error, message]);\n\n const sizeNameBlockClass = useFileUploaderSize(size, {\n small: jsStyles.contentSmall(theme),\n medium: jsStyles.contentMedium(theme),\n large: jsStyles.contentLarge(theme),\n });\n\n const sizeViewNameBlockClass = useFileUploaderSize(size, {\n small: jsViewStyles.contentSmall(theme),\n medium: jsViewStyles.contentMedium(theme),\n large: jsViewStyles.contentLarge(theme),\n });\n\n const validationTextClassName = cx({\n [jsStyles.validationTextWarning(theme)]: isWarning,\n [jsStyles.validationTextError(theme)]: isError,\n });\n\n const contentClassNames = cx(jsStyles.content(), jsViewStyles.content());\n const nameTextClassNames = cx(jsViewStyles.name(), isTileView && !disabled && validationTextClassName);\n\n const handleMouseEnter = useCallback(() => {\n setHoveredFile(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setHoveredFile(false);\n }, []);\n\n const handleFocus = useCallback(() => {\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 }, []);\n\n const handleBlur = useCallback(() => {\n setFocusedByTab(false);\n }, []);\n\n const handleIconKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEnter(e)) {\n onRemove(id);\n }\n },\n [onRemove, id],\n );\n\n const iconClassNames = cx(jsStyles.icon(theme), {\n [sizeIconClass]: true,\n [jsTileStyles.iconAction(theme)]: isTileView,\n [jsTileStyles.iconActionShow()]: isTileView && !disabled && (hovered || hoveredFile || focused || focusedByTab),\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 sizeClassNames = cx(\n jsStyles.size(theme),\n sizeClassName,\n jsViewStyles.size(theme),\n isTileView && disabled && jsTileStyles.sizeDisabled(theme),\n );\n\n const sizeFileTypeIconClass = useFileUploaderSize(size, {\n small: jsViewStyles.fileTypeIconSmall(theme),\n medium: jsViewStyles.fileTypeIconMedium(theme),\n large: jsViewStyles.fileTypeIconLarge(theme),\n });\n\n const isTruncated = truncatedFileName !== name;\n\n const fileTypeIconClassName = cx(\n sizeFileTypeIconClass,\n disabled && jsStyles.disabledFileTypeIconSvg(theme),\n isTileView && {\n [jsTileStyles.fileTypeIcon(theme)]: true,\n [jsTileStyles.fileTypeIconPreview()]: !!previewImg,\n [jsTileStyles.disabledFileTypeIcon(theme)]: disabled,\n [jsTileStyles.warningFileTypeIcon(theme)]: isWarning,\n [jsTileStyles.errorFileTypeIcon(theme)]: isError,\n },\n multiple && jsStyles.fileTypeIconMultiple(),\n );\n\n const nameBlockClassNames = cx(\n sizeNameBlockClass,\n sizeViewNameBlockClass,\n jsStyles.nameBlock(),\n disabled && jsViewStyles.disabled(theme),\n jsViewStyles.nameBlock(),\n );\n\n const fileType: FileUploaderIconType = getFileUploaderTypeIcon(\n file.originalFile,\n isError,\n isWarning && !!withWarningIcon,\n );\n const icon =\n isTileView && isLoading ? (\n <LoadingIcon size={size} />\n ) : (\n (fileTypeIcon ?? <FileUploaderFileTypeIcon type={fileType} size={size} view={view} />)\n );\n\n const splitTruncatedFileName = truncatedFileName && splitFileNameAndExtension(truncatedFileName);\n\n return (\n <CommonWrapper {...rest}>\n <div\n data-tid={FileUploaderFileDataTids.file}\n className={jsStyles.root()}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n ref={ref}\n >\n <Tooltip\n data-tid={FileUploaderFileDataTids.fileTooltip}\n pos={validationTooltipPositionByView}\n render={() => (withValidationTooltip || isTileView ? renderTooltipContent() : null)}\n >\n <div className={contentClassNames}>\n {\n <div\n data-tid={FileUploaderFileDataTids.fileTypeIcon}\n className={fileTypeIconClassName}\n style={previewImg ? { backgroundImage: `url(${previewImg})` } : undefined}\n >\n {(!isTileView || !previewImg) && icon}\n </div>\n }\n <div className={nameBlockClassNames}>\n <TextWidthHelper ref={textHelperRef} text={name} />\n <Hint maxWidth={'100%'} text={showFullFilename && isTruncated ? name : null}>\n <span\n data-tid={FileUploaderFileDataTids.fileName}\n ref={fileNameElementRef}\n className={nameTextClassNames}\n >\n {splitTruncatedFileName && (\n <>\n {splitTruncatedFileName.name}\n {splitTruncatedFileName.extension && <span>.{splitTruncatedFileName.extension}</span>}\n </>\n )}\n </span>\n </Hint>\n {!(withValidationTooltip || isTileView) && (\n <span className={validationTextClassName}>{renderTooltipContent()}</span>\n )}\n </div>\n {showSize && formattedSize && (\n <span data-tid={FileUploaderFileDataTids.fileSize} className={sizeClassNames}>\n {formattedSize}\n </span>\n )}\n <div\n className={iconClassNames}\n data-tid={FileUploaderFileDataTids.fileIcon}\n tabIndex={0}\n onClick={handleRemove}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleIconKeyDown}\n >\n <FileUploaderFileStatusIcon\n isTileView={isTileView}\n status={status}\n disabled={disabled}\n hovered={hovered || hoveredFile}\n focusedByTab={focused || focusedByTab}\n isInvalid={isInvalid}\n hasValidation={isError || isWarning}\n size={size}\n />\n </div>\n </div>\n </Tooltip>\n </div>\n </CommonWrapper>\n );\n },\n);\n"]}
@@ -32,7 +32,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
32
32
  };
33
33
  import React from 'react';
34
34
  import { CommonWrapper } from '../../internal/CommonWrapper/index.js';
35
- import { DUMMY_LOCATION, Popup } from '../../internal/Popup/index.js';
35
+ import { DefaultPosition, Popup, PopupPinnablePositions } from '../../internal/Popup/index.js';
36
36
  import { createPropsGetter } from '../../lib/createPropsGetter.js';
37
37
  import { isTestEnv } from '../../lib/currentEnvironment.js';
38
38
  import { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';
@@ -41,6 +41,9 @@ import { ThemeContext } from '../../lib/theming/ThemeContext.js';
41
41
  import { ThemeFactory } from '../../lib/theming/ThemeFactory.js';
42
42
  import { getStyles } from './Hint.styles.js';
43
43
  var HINT_BORDER_COLOR = 'transparent';
44
+ var isPinnablePosition = function (position) {
45
+ return PopupPinnablePositions.includes(position);
46
+ };
44
47
  /** Краткая подсказка, которая объясняет контрол, иконку и добавляет контекста.
45
48
  * Всплывает при наведении на элемент. */
46
49
  var Hint = /** @class */ (function (_super) {
@@ -50,7 +53,7 @@ var Hint = /** @class */ (function (_super) {
50
53
  _this.getProps = createPropsGetter(Hint_1.defaultProps);
51
54
  _this.state = {
52
55
  opened: _this.getProps().manual ? !!_this.getProps().opened : false,
53
- position: DUMMY_LOCATION.position,
56
+ position: DefaultPosition,
54
57
  };
55
58
  _this.popupRef = React.createRef();
56
59
  _this.getAnchorElement = function () {
@@ -122,7 +125,11 @@ var Hint = /** @class */ (function (_super) {
122
125
  var _this = this;
123
126
  var _a = this.getProps(), disableAnimations = _a.disableAnimations, useWrapper = _a.useWrapper;
124
127
  return (React.createElement(CommonWrapper, __assign({ rootNodeRef: this.setRootNode }, this.props),
125
- React.createElement(Popup, { hasPin: false, opened: this.state.opened, anchorElement: this.props.children, positions: this.getPositions(), pos: this.props.pos, backgroundColor: this.theme.hintBgColor, borderColor: HINT_BORDER_COLOR, onPositionChange: function (position) { return _this.setState({ position: position }); }, disableAnimations: disableAnimations, onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave, useWrapper: useWrapper, ref: this.popupRef, withoutMobile: true }, this.renderContent())));
128
+ React.createElement(Popup, { hasPin: false, opened: this.state.opened, anchorElement: this.props.children, positions: this.getPositions(), pos: this.props.pos, backgroundColor: this.theme.hintBgColor, borderColor: HINT_BORDER_COLOR, onPositionChange: function (position) {
129
+ if (isPinnablePosition(position)) {
130
+ _this.setState({ position: position });
131
+ }
132
+ }, disableAnimations: disableAnimations, onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave, useWrapper: useWrapper, ref: this.popupRef, withoutMobile: true }, this.renderContent())));
126
133
  };
127
134
  Hint.prototype.renderContent = function () {
128
135
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"Hint.js","sourceRoot":"","sources":["../../../components/Hint/Hint.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { DUMMY_LOCATION, Popup } from '../../internal/Popup/index.js';\nimport type { PopupPinnablePositionsType, ShortPopupPositionsType } from '../../internal/Popup/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { isTestEnv } from '../../lib/currentEnvironment.js';\nimport type { SafeTimer } from '../../lib/globalObject.js';\nimport type { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory.js';\nimport type { MouseEventType } from '../../typings/event-types.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { getStyles } from './Hint.styles.js';\n\nconst HINT_BORDER_COLOR = 'transparent';\n\nexport interface HintProps extends CommonProps {\n /** @ignore */\n children?: React.ReactNode;\n\n /** Текст подсказки. */\n text: React.ReactNode;\n\n /** Максимальная ширина подсказки. */\n maxWidth?: React.CSSProperties['maxWidth'];\n\n /** Приоритетное расположение подсказки относительно текста. */\n pos?: ShortPopupPositionsType | PopupPinnablePositionsType;\n\n /** Список позиций, которые может занимать подсказка. В списке обязательно должна быть позиция из пропа `pos`. */\n allowedPositions?: PopupPinnablePositionsType[];\n\n /** Переводит отображение подсказки в ручной режим, где состояние контролируется значением пропа `opened`. */\n manual?: boolean;\n\n /** Открывает подсказку. Работает только при `manual=true`. */\n opened?: boolean;\n\n /** Отключает анимацию. */\n disableAnimations?: boolean;\n\n /** Оборачивает вложенные элементы в `<span />`.\n *\n * _Примечание_: при двух и более вложенных элементах обёртка будет добавлена автоматически. */\n useWrapper?: boolean;\n\n /** Вызывается при наведении курсора (событие `onmouseenter`). */\n onMouseEnter?: (event: MouseEventType) => void;\n\n /** Вызывается при уходе курсора с объекта (событие `onmouseleave`). */\n onMouseLeave?: (event: MouseEventType) => void;\n}\n\nexport interface HintState {\n opened: boolean;\n position: PopupPinnablePositionsType;\n}\n\ntype DefaultProps = Required<Pick<HintProps, 'manual' | 'opened' | 'maxWidth' | 'disableAnimations' | 'useWrapper'>>;\n\n/** Краткая подсказка, которая объясняет контрол, иконку и добавляет контекста.\n * Всплывает при наведении на элемент. */\n@withRenderEnvironment\n@rootNode\nexport class Hint extends React.PureComponent<HintProps, HintState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Hint';\n public static displayName = 'Hint';\n\n public static defaultProps: DefaultProps = {\n manual: false,\n opened: false,\n maxWidth: 200,\n disableAnimations: isTestEnv,\n useWrapper: false,\n };\n\n private getProps = createPropsGetter(Hint.defaultProps);\n\n public state: HintState = {\n opened: this.getProps().manual ? !!this.getProps().opened : false,\n position: DUMMY_LOCATION.position,\n };\n\n private timer: SafeTimer;\n private theme!: Theme;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private styles!: ReturnType<typeof getStyles>;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n\n private popupRef = React.createRef<Popup>();\n\n public getAllowedPositions(): string[] | undefined {\n return this.props.allowedPositions;\n }\n\n public componentDidUpdate(prevProps: HintProps) {\n const { opened, manual } = this.getProps();\n if (!manual) {\n return;\n }\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n if (opened !== prevProps.opened) {\n this.setState({ opened: !!opened });\n }\n }\n\n public componentWillUnmount() {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupMargin: theme.hintMargin,\n popupBorder: theme.hintBorder,\n popupBorderRadius: theme.hintBorderRadius,\n },\n this.theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain(): React.JSX.Element {\n const { disableAnimations, useWrapper } = this.getProps();\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Popup\n hasPin={false}\n opened={this.state.opened}\n anchorElement={this.props.children}\n positions={this.getPositions()}\n pos={this.props.pos}\n backgroundColor={this.theme.hintBgColor}\n borderColor={HINT_BORDER_COLOR}\n onPositionChange={(position) => this.setState({ position })}\n disableAnimations={disableAnimations}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n useWrapper={useWrapper}\n ref={this.popupRef}\n withoutMobile\n >\n {this.renderContent()}\n </Popup>\n </CommonWrapper>\n );\n }\n\n public getAnchorElement = (): Nullable<Element> => {\n return this.popupRef.current?.anchorElement;\n };\n\n private renderContent() {\n if (!this.props.text) {\n return null;\n }\n\n const { maxWidth } = this.getProps();\n const centerAlignPositions = ['top', 'top center', 'bottom', 'bottom center'];\n const className = this.cx({\n [this.styles.content(this.theme)]: true,\n [this.styles.contentCenter(this.theme)]: centerAlignPositions.includes(this.state.position),\n });\n return (\n <div className={className} style={{ maxWidth }}>\n {this.props.text}\n </div>\n );\n }\n\n private getPositions = (): PopupPinnablePositionsType[] | undefined => {\n return this.props.allowedPositions;\n };\n\n private handleMouseEnter = (e: MouseEventType) => {\n if (!this.getProps().manual && !this.timer) {\n this.timer = setTimeout(this.open, 400);\n }\n\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: MouseEventType) => {\n if (!this.getProps().manual && this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n this.setState({ opened: false });\n }\n\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private open = () => {\n this.setState({ opened: true });\n };\n}\n"]}
1
+ {"version":3,"file":"Hint.js","sourceRoot":"","sources":["../../../components/Hint/Hint.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAM/F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAG5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAGjE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,IAAM,iBAAiB,GAAG,aAAa,CAAC;AAExC,IAAM,kBAAkB,GAAG,UAAC,QAA4B;IACtD,OAAQ,sBAAwD,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACtF,CAAC,CAAC;AA8CF;yCACyC;AAGzC;IAA0B,wBAAyC;IAAnE;;QAYU,cAAQ,GAAG,iBAAiB,CAAC,MAAI,CAAC,YAAY,CAAC,CAAC;QAEjD,WAAK,GAAc;YACxB,MAAM,EAAE,KAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;YACjE,QAAQ,EAAE,eAAe;SAC1B,CAAC;QAUM,cAAQ,GAAG,KAAK,CAAC,SAAS,EAAS,CAAC;QAoFrC,sBAAgB,GAAG;;YACxB,OAAO,MAAA,KAAI,CAAC,QAAQ,CAAC,OAAO,0CAAE,aAAa,CAAC;QAC9C,CAAC,CAAC;QAoBM,kBAAY,GAAG;YACrB,OAAO,KAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;QACrC,CAAC,CAAC;QAEM,sBAAgB,GAAG,UAAC,CAAiB;YAC3C,IAAI,CAAC,KAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,KAAI,CAAC,KAAK,EAAE,CAAC;gBAC3C,KAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC1C,CAAC;YAED,IAAI,KAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC5B,KAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC;QAEM,sBAAgB,GAAG,UAAC,CAAiB;YAC3C,IAAI,CAAC,KAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,KAAI,CAAC,KAAK,EAAE,CAAC;gBAC1C,YAAY,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC;gBACzB,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBAClB,KAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YACnC,CAAC;YAED,IAAI,KAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC5B,KAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC;QAEM,UAAI,GAAG;YACb,KAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAClC,CAAC,CAAC;;IACJ,CAAC;aAlKY,IAAI;IA6BR,kCAAmB,GAA1B;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;IACrC,CAAC;IAEM,iCAAkB,GAAzB,UAA0B,SAAoB;QACtC,IAAA,KAAqB,IAAI,CAAC,QAAQ,EAAE,EAAlC,MAAM,YAAA,EAAE,MAAM,YAAoB,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,IAAI,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAEM,mCAAoB,GAA3B;QACE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAEM,qBAAM,GAAb;QAAA,iBAwBC;QAvBC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtC,OAAO,CACL,oBAAC,YAAY,CAAC,QAAQ,QACnB,UAAC,KAAK;YACL,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,OAAO,CACL,oBAAC,YAAY,CAAC,QAAQ,IACpB,KAAK,EAAE,YAAY,CAAC,MAAM,CACxB;oBACE,WAAW,EAAE,KAAK,CAAC,UAAU;oBAC7B,WAAW,EAAE,KAAK,CAAC,UAAU;oBAC7B,iBAAiB,EAAE,KAAK,CAAC,gBAAgB;iBAC1C,EACD,KAAI,CAAC,KAAK,CACX,IAEA,KAAI,CAAC,UAAU,EAAE,CACI,CACzB,CAAC;QACJ,CAAC,CACqB,CACzB,CAAC;IACJ,CAAC;IAEM,yBAAU,GAAjB;QAAA,iBA6BC;QA5BO,IAAA,KAAoC,IAAI,CAAC,QAAQ,EAAE,EAAjD,iBAAiB,uBAAA,EAAE,UAAU,gBAAoB,CAAC;QAE1D,OAAO,CACL,oBAAC,aAAa,aAAC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAM,IAAI,CAAC,KAAK;YAC1D,oBAAC,KAAK,IACJ,MAAM,EAAE,KAAK,EACb,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAClC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,EAC9B,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EACnB,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EACvC,WAAW,EAAE,iBAAiB,EAC9B,gBAAgB,EAAE,UAAC,QAAQ;oBACzB,IAAI,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACjC,KAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;oBAC9B,CAAC;gBACH,CAAC,EACD,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,IAAI,CAAC,gBAAgB,EACnC,YAAY,EAAE,IAAI,CAAC,gBAAgB,EACnC,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,IAAI,CAAC,QAAQ,EAClB,aAAa,UAEZ,IAAI,CAAC,aAAa,EAAE,CACf,CACM,CACjB,CAAC;IACJ,CAAC;IAMO,4BAAa,GAArB;;QACE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QAEO,IAAA,QAAQ,GAAK,IAAI,CAAC,QAAQ,EAAE,SAApB,CAAqB;QACrC,IAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;QAC9E,IAAM,SAAS,GAAG,IAAI,CAAC,EAAE;YACvB,GAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,IAAI;YACvC,GAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAC3F,CAAC;QACH,OAAO,CACL,6BAAK,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,QAAQ,UAAA,EAAE,IAC3C,IAAI,CAAC,KAAK,CAAC,IAAI,CACZ,CACP,CAAC;IACJ,CAAC;;IAlIa,wBAAmB,GAAG,MAAM,AAAT,CAAU;IAC7B,gBAAW,GAAG,MAAM,AAAT,CAAU;IAErB,iBAAY,GAAiB;QACzC,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,GAAG;QACb,iBAAiB,EAAE,SAAS;QAC5B,UAAU,EAAE,KAAK;KAClB,AANyB,CAMxB;IAVS,IAAI;QAFhB,qBAAqB;QACrB,QAAQ;OACI,IAAI,CAkKhB;IAAD,WAAC;CAAA,AAlKD,CAA0B,KAAK,CAAC,aAAa,GAkK5C;SAlKY,IAAI","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport React from 'react';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { DefaultPosition, Popup, PopupPinnablePositions } from '../../internal/Popup/index.js';\nimport type {\n PopupPinnablePositionsType,\n PopupPositionsType,\n ShortPopupPositionsType,\n} from '../../internal/Popup/index.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { isTestEnv } from '../../lib/currentEnvironment.js';\nimport type { SafeTimer } from '../../lib/globalObject.js';\nimport type { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory.js';\nimport type { MouseEventType } from '../../typings/event-types.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { getStyles } from './Hint.styles.js';\n\nconst HINT_BORDER_COLOR = 'transparent';\n\nconst isPinnablePosition = (position: PopupPositionsType): position is PopupPinnablePositionsType => {\n return (PopupPinnablePositions as readonly PopupPositionsType[]).includes(position);\n};\n\nexport interface HintProps extends CommonProps {\n /** @ignore */\n children?: React.ReactNode;\n\n /** Текст подсказки. */\n text: React.ReactNode;\n\n /** Максимальная ширина подсказки. */\n maxWidth?: React.CSSProperties['maxWidth'];\n\n /** Приоритетное расположение подсказки относительно текста. */\n pos?: ShortPopupPositionsType | PopupPinnablePositionsType;\n\n /** Список позиций, которые может занимать подсказка. В списке обязательно должна быть позиция из пропа `pos`. */\n allowedPositions?: PopupPinnablePositionsType[];\n\n /** Переводит отображение подсказки в ручной режим, где состояние контролируется значением пропа `opened`. */\n manual?: boolean;\n\n /** Открывает подсказку. Работает только при `manual=true`. */\n opened?: boolean;\n\n /** Отключает анимацию. */\n disableAnimations?: boolean;\n\n /** Оборачивает вложенные элементы в `<span />`.\n *\n * _Примечание_: при двух и более вложенных элементах обёртка будет добавлена автоматически. */\n useWrapper?: boolean;\n\n /** Вызывается при наведении курсора (событие `onmouseenter`). */\n onMouseEnter?: (event: MouseEventType) => void;\n\n /** Вызывается при уходе курсора с объекта (событие `onmouseleave`). */\n onMouseLeave?: (event: MouseEventType) => void;\n}\n\nexport interface HintState {\n opened: boolean;\n position: PopupPinnablePositionsType;\n}\n\ntype DefaultProps = Required<Pick<HintProps, 'manual' | 'opened' | 'maxWidth' | 'disableAnimations' | 'useWrapper'>>;\n\n/** Краткая подсказка, которая объясняет контрол, иконку и добавляет контекста.\n * Всплывает при наведении на элемент. */\n@withRenderEnvironment\n@rootNode\nexport class Hint extends React.PureComponent<HintProps, HintState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Hint';\n public static displayName = 'Hint';\n\n public static defaultProps: DefaultProps = {\n manual: false,\n opened: false,\n maxWidth: 200,\n disableAnimations: isTestEnv,\n useWrapper: false,\n };\n\n private getProps = createPropsGetter(Hint.defaultProps);\n\n public state: HintState = {\n opened: this.getProps().manual ? !!this.getProps().opened : false,\n position: DefaultPosition,\n };\n\n private timer: SafeTimer;\n private theme!: Theme;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private styles!: ReturnType<typeof getStyles>;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n\n private popupRef = React.createRef<Popup>();\n\n public getAllowedPositions(): string[] | undefined {\n return this.props.allowedPositions;\n }\n\n public componentDidUpdate(prevProps: HintProps) {\n const { opened, manual } = this.getProps();\n if (!manual) {\n return;\n }\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n if (opened !== prevProps.opened) {\n this.setState({ opened: !!opened });\n }\n }\n\n public componentWillUnmount() {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupMargin: theme.hintMargin,\n popupBorder: theme.hintBorder,\n popupBorderRadius: theme.hintBorderRadius,\n },\n this.theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain(): React.JSX.Element {\n const { disableAnimations, useWrapper } = this.getProps();\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Popup\n hasPin={false}\n opened={this.state.opened}\n anchorElement={this.props.children}\n positions={this.getPositions()}\n pos={this.props.pos}\n backgroundColor={this.theme.hintBgColor}\n borderColor={HINT_BORDER_COLOR}\n onPositionChange={(position) => {\n if (isPinnablePosition(position)) {\n this.setState({ position });\n }\n }}\n disableAnimations={disableAnimations}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n useWrapper={useWrapper}\n ref={this.popupRef}\n withoutMobile\n >\n {this.renderContent()}\n </Popup>\n </CommonWrapper>\n );\n }\n\n public getAnchorElement = (): Nullable<Element> => {\n return this.popupRef.current?.anchorElement;\n };\n\n private renderContent() {\n if (!this.props.text) {\n return null;\n }\n\n const { maxWidth } = this.getProps();\n const centerAlignPositions = ['top', 'top center', 'bottom', 'bottom center'];\n const className = this.cx({\n [this.styles.content(this.theme)]: true,\n [this.styles.contentCenter(this.theme)]: centerAlignPositions.includes(this.state.position),\n });\n return (\n <div className={className} style={{ maxWidth }}>\n {this.props.text}\n </div>\n );\n }\n\n private getPositions = (): PopupPinnablePositionsType[] | undefined => {\n return this.props.allowedPositions;\n };\n\n private handleMouseEnter = (e: MouseEventType) => {\n if (!this.getProps().manual && !this.timer) {\n this.timer = setTimeout(this.open, 400);\n }\n\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: MouseEventType) => {\n if (!this.getProps().manual && this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n this.setState({ opened: false });\n }\n\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private open = () => {\n this.setState({ opened: true });\n };\n}\n"]}
@@ -30,9 +30,9 @@ export interface InputProps extends CommonProps, Pick<HTMLAttributes<unknown>, '
30
30
  * При использовании `ReactNode` применяются дефолтные стили для иконки.
31
31
  * При использовании `() => ReactNode` применяются только стили для позиционирования. */
32
32
  rightIcon?: InputIconType;
33
- /** Меняет визуальное отображение поля на состояние «ошибка». Может быть полезен при разработке собственной валидации, если вы не используете пакет [React UI Validations](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui-validations_displaying-getting-started--docs). */
33
+ /** Переводит поле в состояние ошибки. */
34
34
  error?: boolean;
35
- /** Меняет визуальное отображение поля на состояние «предупреждение». Может быть полезен при разработке собственной валидации, если вы не используете пакет [React UI Validations](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui-validations_displaying-getting-started--docs). */
35
+ /** Переводит поле в состояние предупреждения. */
36
36
  warning?: boolean;
37
37
  /** Убирает обводку поля. */
38
38
  borderless?: boolean;