@skbkontur/react-ui 6.0.4-46247.0 → 6.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/components/FileUploader/FileUploader.d.ts +28 -30
- package/components/FileUploader/FileUploader.js.map +1 -1
- package/components/FileUploader/FileUploader.styles.d.ts +0 -1
- package/components/FileUploader/FileUploader.styles.js +4 -4
- package/components/FileUploader/FileUploader.styles.js.map +1 -1
- package/components/FileUploader/FileUploaderControlProvider.d.ts +4 -0
- package/components/FileUploader/FileUploaderControlProvider.js.map +1 -1
- package/components/FileUploader/FileUploaderFile.d.ts +19 -11
- package/components/FileUploader/FileUploaderFile.js +1 -1
- package/components/FileUploader/FileUploaderFile.js.map +1 -1
- package/components/Gapped/Gapped.d.ts +5 -3
- package/components/Gapped/Gapped.js +3 -1
- package/components/Gapped/Gapped.js.map +1 -1
- package/components/Group/Group.d.ts +2 -4
- package/components/Group/Group.js +1 -3
- package/components/Group/Group.js.map +1 -1
- package/components/Hint/Hint.d.ts +18 -23
- package/components/Hint/Hint.js +2 -6
- package/components/Hint/Hint.js.map +1 -1
- package/components/MenuItem/MenuItem.d.ts +1 -0
- package/components/MenuItem/MenuItem.js +6 -4
- package/components/MenuItem/MenuItem.js.map +1 -1
- package/components/MiniModal/MiniModal.d.ts +8 -2
- package/components/MiniModal/MiniModal.js +10 -4
- package/components/MiniModal/MiniModal.js.map +1 -1
- package/components/MiniModal/MiniModalBody.d.ts +1 -1
- package/components/MiniModal/MiniModalBody.js +1 -1
- package/components/MiniModal/MiniModalBody.js.map +1 -1
- package/components/MiniModal/MiniModalFooter.d.ts +1 -1
- package/components/MiniModal/MiniModalFooter.js +1 -1
- package/components/MiniModal/MiniModalFooter.js.map +1 -1
- package/components/MiniModal/MiniModalHeader.d.ts +1 -1
- package/components/MiniModal/MiniModalHeader.js +1 -1
- package/components/MiniModal/MiniModalHeader.js.map +1 -1
- package/components/MiniModal/MiniModalIndent.d.ts +2 -2
- package/components/MiniModal/MiniModalIndent.js +1 -1
- package/components/MiniModal/MiniModalIndent.js.map +1 -1
- package/components/Modal/ModalFooter.d.ts +1 -1
- package/components/Modal/ModalFooter.js.map +1 -1
- package/components/SidePage/SidePage.d.ts +19 -20
- package/components/SidePage/SidePage.js +5 -6
- package/components/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePageBody.d.ts +1 -1
- package/components/SidePage/SidePageBody.js +1 -1
- package/components/SidePage/SidePageBody.js.map +1 -1
- package/components/SidePage/SidePageContainer.d.ts +1 -1
- package/components/SidePage/SidePageContainer.js +1 -1
- package/components/SidePage/SidePageContainer.js.map +1 -1
- package/components/SidePage/SidePageFooter.d.ts +4 -4
- package/components/SidePage/SidePageFooter.js +1 -1
- package/components/SidePage/SidePageFooter.js.map +1 -1
- package/components/SidePage/SidePageHeader.d.ts +5 -4
- package/components/SidePage/SidePageHeader.js +1 -1
- package/components/SidePage/SidePageHeader.js.map +1 -1
- package/components/Sticky/Sticky.d.ts +8 -4
- package/components/Sticky/Sticky.js +5 -1
- package/components/Sticky/Sticky.js.map +1 -1
- package/components/Textarea/Textarea.js +1 -1
- package/components/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/Textarea.mixins.d.ts +0 -1
- package/components/Textarea/Textarea.mixins.js +0 -3
- package/components/Textarea/Textarea.mixins.js.map +1 -1
- package/components/Textarea/Textarea.styles.d.ts +0 -3
- package/components/Textarea/Textarea.styles.js +5 -14
- package/components/Textarea/Textarea.styles.js.map +1 -1
- package/components/Textarea/TextareaCounter.d.ts +0 -2
- package/components/Textarea/TextareaCounter.js +11 -13
- package/components/Textarea/TextareaCounter.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +32 -35
- package/components/Tooltip/Tooltip.js +13 -12
- package/components/Tooltip/Tooltip.js.map +1 -1
- package/internal/FocusTrap/FocusTrap.d.ts +0 -1
- package/internal/FocusTrap/FocusTrap.js +6 -6
- package/internal/FocusTrap/FocusTrap.js.map +1 -1
- package/internal/Popup/Popup.d.ts +1 -3
- package/internal/Popup/Popup.js +26 -55
- package/internal/Popup/Popup.js.map +1 -1
- package/internal/Popup/PopupHelper.d.ts +3 -5
- package/internal/Popup/PopupHelper.js +8 -14
- package/internal/Popup/PopupHelper.js.map +1 -1
- package/internal/RenderContainer/RenderContainer.d.ts +0 -8
- package/internal/RenderContainer/RenderContainer.js +4 -83
- package/internal/RenderContainer/RenderContainer.js.map +1 -1
- package/internal/RenderLayer/RenderLayer.d.ts +1 -2
- package/internal/RenderLayer/RenderLayer.js +7 -5
- package/internal/RenderLayer/RenderLayer.js.map +1 -1
- package/lib/listenFocusOutside.d.ts +1 -3
- package/lib/listenFocusOutside.js +2 -19
- package/lib/listenFocusOutside.js.map +1 -1
- package/lib/renderEnvironment/RenderEnvironmentContext.d.ts +0 -16
- package/lib/renderEnvironment/RenderEnvironmentContext.js +10 -10
- package/lib/renderEnvironment/RenderEnvironmentContext.js.map +1 -1
- package/lib/theming/Emotion.d.ts +1 -17
- package/lib/theming/Emotion.js +5 -16
- package/lib/theming/Emotion.js.map +1 -1
- package/package.json +1 -1
- package/lib/shadowDom/isShadowRoot.d.ts +0 -6
- package/lib/shadowDom/isShadowRoot.js +0 -17
- package/lib/shadowDom/isShadowRoot.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,30 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [6.0.5](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@6.0.4...@skbkontur/react-ui@6.0.5) (2026-05-13)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **FileUploader:** restore drag and drop animation ([c9c411e](https://github.com/skbkontur/retail-ui/commit/c9c411eb27f8f34772c3e2fd54411bae87c63462))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [6.0.4](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@6.0.3...@skbkontur/react-ui@6.0.4) (2026-05-07)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* **menuItem:** listen size context ([50a92c7](https://github.com/skbkontur/retail-ui/commit/50a92c7c2f55bfe3bd8231d8bdb309f4be07f8eb))
|
|
23
|
+
* **MiniModal:** fix mini modal default width behavior ([8f42d41](https://github.com/skbkontur/retail-ui/commit/8f42d41f72d1788037f76a07401bb6dcea7b712a))
|
|
24
|
+
* **textarea:** position counter by computed paddings ([3f4dcfb](https://github.com/skbkontur/retail-ui/commit/3f4dcfbebb1be1bbf0de968c9770ad025f0c2fd5))
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
6
30
|
## [6.0.3](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@6.0.2...@skbkontur/react-ui@6.0.3) (2026-04-27)
|
|
7
31
|
|
|
8
32
|
|
|
@@ -14,78 +14,76 @@ interface _FileUploaderProps extends CommonProps, Omit<React.InputHTMLAttributes
|
|
|
14
14
|
/** Состояние ошибки всего контрола */
|
|
15
15
|
error?: boolean;
|
|
16
16
|
/** Переводит контрол в состояние валидации "предупреждение" */
|
|
17
|
+
/** Состояние предупреждения всего контрола */
|
|
17
18
|
warning?: boolean;
|
|
18
|
-
/**
|
|
19
|
+
/** Расположение тултипа с текстом валидации файла.
|
|
19
20
|
* @default 'top left' */
|
|
20
21
|
validationTooltipPosition?: ShortPopupPositionsType | PopupPositionsType;
|
|
21
|
-
/**
|
|
22
|
+
/** Включает отображение текста валидации файла во всплывающей подсказке вместо строки рядом с именем.
|
|
22
23
|
* @default false */
|
|
23
24
|
withValidationTooltip?: boolean;
|
|
24
|
-
/**
|
|
25
|
+
/** Включает отображение иконки предупреждения (восклицательный знак) при статусе предупреждения у файла.
|
|
25
26
|
* @default false */
|
|
26
27
|
withWarningIcon?: boolean;
|
|
27
|
-
/**
|
|
28
|
+
/** Ширина контрола. */
|
|
28
29
|
width?: React.CSSProperties['width'];
|
|
29
|
-
/**
|
|
30
|
+
/** Размер контрола и вложенных элементов.
|
|
30
31
|
* @default small */
|
|
31
32
|
size?: SizeProp;
|
|
32
|
-
/** Скрывает
|
|
33
|
+
/** Скрывает встроенный список файлов.
|
|
33
34
|
* @default false */
|
|
34
35
|
hideFiles?: boolean;
|
|
35
|
-
/**
|
|
36
|
-
* @default
|
|
36
|
+
/** Текст ссылки выбора файла.
|
|
37
|
+
* @default "Выберите файл"
|
|
37
38
|
*/
|
|
38
39
|
uploaderText?: string;
|
|
39
|
-
/**
|
|
40
|
-
* @default UploadIcon
|
|
40
|
+
/** Иконка в кнопке загрузки.
|
|
41
41
|
*/
|
|
42
42
|
uploaderIcon?: React.ReactNode;
|
|
43
|
-
/**
|
|
44
|
-
* - `row` — строчный вид
|
|
45
|
-
* - `tile` — плиточный вид
|
|
43
|
+
/** Режим отображения списка файлов: строка (`row`) или плитка (`tile`).
|
|
46
44
|
* @default row
|
|
47
45
|
*/
|
|
48
46
|
view?: FileUploaderView;
|
|
49
|
-
/**
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
* - `disabled` — всегда отключено
|
|
47
|
+
/** Режим блока-саммари по ошибкам и предупреждениям:
|
|
48
|
+
* - `auto` — от порога `validationSummaryStart`,
|
|
49
|
+
* - `enabled` / `disabled` — всегда или никогда.
|
|
53
50
|
* @default auto
|
|
54
51
|
*/
|
|
55
52
|
validationSummary?: FileUploaderValidationSummary;
|
|
56
|
-
/**
|
|
53
|
+
/** Порог числа файлов для показа саммари при `validationSummary="auto"`.
|
|
57
54
|
* @default 5 */
|
|
58
55
|
validationSummaryStart?: number;
|
|
59
|
-
/**
|
|
56
|
+
/** Расположение кнопки загрузки относительно списка: в начале или в конце.
|
|
60
57
|
* @default start */
|
|
61
58
|
uploadButtonPosition?: FileUploaderUploadButtonPosition;
|
|
62
|
-
/**
|
|
63
|
-
*
|
|
59
|
+
/** Включает асинхронный режим загрузки файлов.
|
|
60
|
+
* Отклонённый промис помечает файл(ы) ошибкой загрузки.
|
|
61
|
+
*/
|
|
64
62
|
request?: (file: FileUploaderAttachedFile) => Promise<void>;
|
|
65
|
-
/**
|
|
63
|
+
/** Колбэк после успешного завершения `request` для файла. */
|
|
66
64
|
onRequestSuccess?: (fileId: string) => void;
|
|
67
|
-
/**
|
|
65
|
+
/** Колбэк после ошибки `request` для файла. */
|
|
68
66
|
onRequestError?: (fileId: string) => void;
|
|
69
|
-
/**
|
|
70
|
-
|
|
71
|
-
* @returns {Promise<Nullable<string | { message: string; status: FileUploaderFileStatus }>>} */
|
|
67
|
+
/** Проверка файла после выбора и до `request`: строка или `{ message, status }` — ошибка/предупреждение. Пустой результат — файл проходит.
|
|
68
|
+
*/
|
|
72
69
|
validateBeforeUpload?: (file: FileUploaderAttachedFile) => Promise<Nullable<string | {
|
|
73
70
|
message: string;
|
|
74
71
|
status: FileUploaderFileStatus;
|
|
75
72
|
}>>;
|
|
76
73
|
/**
|
|
77
|
-
*
|
|
74
|
+
* Задаёт метод отрисовки файлов.
|
|
78
75
|
* @default (props: FileUploaderFileProps) => <FileUploaderFile {...props} />
|
|
79
|
-
* @param {FileUploaderFileProps} props - пропсы компонента `FileUploaderFile`, смотри примеры использования в документации.
|
|
80
|
-
* @returns {ReactNode} элемент, который отрисовывает контент файла.
|
|
81
76
|
*/
|
|
82
77
|
renderFile?: (props: FileUploaderFileProps) => React.ReactNode;
|
|
83
78
|
}
|
|
84
79
|
export interface FileUploaderRef extends InstanceWithRootNode {
|
|
80
|
+
/** Устанавливает фокус на скрытом `input` выбора файла. */
|
|
85
81
|
focus: () => void;
|
|
82
|
+
/** Снимает фокус с `input` выбора файла. */
|
|
86
83
|
blur: () => void;
|
|
87
|
-
/**
|
|
84
|
+
/** Очищает список файлов и значения `input`. */
|
|
88
85
|
reset: () => void;
|
|
86
|
+
/** Удаляет файл по id с вызовом `onRemove` и `onValueChange`. */
|
|
89
87
|
removeFile: (fileId: string) => void;
|
|
90
88
|
}
|
|
91
89
|
export type FileUploader = FileUploaderRef;
|
|
@@ -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 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 * @default UploadIcon\n */\n uploaderIcon?: React.ReactNode;\n\n /** Вид компонента\n * - `row` — строчный вид\n * - `tile` — плиточный вид\n * @default row\n */\n view?: FileUploaderView;\n\n /** Отображать ли саммари с детализацией ошибок. Работает с версией темы >= 5_5.\n * - `auto` — саммари отображается, если количество загруженных файлов >= validationSummaryStart\n * - `enabled` — всегда включено\n * - `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 * @param {FileUploaderAttachedFile} file - файл, статус загрузки которого необходимо отследить. */\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.\n * Чтобы вывести валидацию ошибки, промис должен вернуть строку или объект с ошибкой.\n * @returns {Promise<Nullable<string | { message: string; status: FileUploaderFileStatus }>>} */\n validateBeforeUpload?: (\n file: FileUploaderAttachedFile,\n ) => Promise<Nullable<string | { message: string; status: FileUploaderFileStatus }>>;\n\n /**\n * Задает функцию, которая позволяет кастомизировать файлы. Через нее можно вешать кастомные валидации на каждый файл.\n * @default (props: FileUploaderFileProps) => <FileUploaderFile {...props} />\n * @param {FileUploaderFileProps} props - пропсы компонента `FileUploaderFile`, смотри примеры использования в документации.\n * @returns {ReactNode} элемент, который отрисовывает контент файла.\n */\n renderFile?: (props: FileUploaderFileProps) => React.ReactNode;\n}\n\nexport interface FileUploaderRef extends InstanceWithRootNode {\n focus: () => void;\n blur: () => void;\n /** Сбрасывает выбранные файлы */\n reset: () => void;\n removeFile: (fileId: string) => void;\n}\n\nexport 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)}`; /* */\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)}`; /* */\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"]}
|
|
@@ -3,7 +3,6 @@ export declare const globalClasses: {
|
|
|
3
3
|
afterLinkText: string;
|
|
4
4
|
};
|
|
5
5
|
export declare const getJsStyles: import("../../lib/theming/Emotion.js").StylesGetter<{
|
|
6
|
-
calcPulse(t: Theme): string;
|
|
7
6
|
root(t: Theme): string;
|
|
8
7
|
uploadButton(t: Theme): string;
|
|
9
8
|
uploadButtonFocus(t: Theme): string;
|
|
@@ -9,10 +9,10 @@ export var globalClasses = prefix('file-uploader')({
|
|
|
9
9
|
});
|
|
10
10
|
export var getJsStyles = memoizeGetStyles(function (_a) {
|
|
11
11
|
var css = _a.css, keyframes = _a.keyframes;
|
|
12
|
+
var calcPulse = function (t) {
|
|
13
|
+
return keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n 0% {\n box-shadow: 0 0 0 1px ", ";\n }\n 95% {\n box-shadow: 0 0 0 10px ", ";\n }\n 100% {\n box-shadow: 0 0 0 1px ", ";\n }\n "], ["\n 0% {\n box-shadow: 0 0 0 1px ", ";\n }\n 95% {\n box-shadow: 0 0 0 10px ", ";\n }\n 100% {\n box-shadow: 0 0 0 1px ", ";\n }\n "])), t.inputBlinkColor, t.inputBlinkColor, t.inputBlinkColor);
|
|
14
|
+
};
|
|
12
15
|
return {
|
|
13
|
-
calcPulse: function (t) {
|
|
14
|
-
return keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n 0% {\n box-shadow: 0 0 0 1px ", ";\n }\n 95% {\n box-shadow: 0 0 0 10px ", ";\n }\n 100% {\n box-shadow: 0 0 0 1px ", ";\n }\n "], ["\n 0% {\n box-shadow: 0 0 0 1px ", ";\n }\n 95% {\n box-shadow: 0 0 0 10px ", ";\n }\n 100% {\n box-shadow: 0 0 0 1px ", ";\n }\n "])), t.inputBlinkColor, t.inputBlinkColor, t.inputBlinkColor);
|
|
15
|
-
},
|
|
16
16
|
root: function (t) {
|
|
17
17
|
return css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: inline-flex;\n flex-wrap: wrap;\n position: relative;\n border-radius: ", ";\n line-height: ", ";\n font-size: ", ";\n color: ", ";\n background-color: ", ";\n "], ["\n display: inline-flex;\n flex-wrap: wrap;\n position: relative;\n border-radius: ", ";\n line-height: ", ";\n font-size: ", ";\n color: ", ";\n background-color: ", ";\n "])), t.fileUploaderBorderRadius, t.fileUploaderLineHeightSmall, t.fileUploaderFontSizeSmall, t.fileUploaderTextColorDefault, t.fileUploaderBg);
|
|
18
18
|
},
|
|
@@ -38,7 +38,7 @@ export var getJsStyles = memoizeGetStyles(function (_a) {
|
|
|
38
38
|
return css(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n border: 1px solid ", ";\n border-radius: ", ";\n box-shadow: ", ";\n "], ["\n border: 1px solid ", ";\n border-radius: ", ";\n box-shadow: ", ";\n "])), t.fileUploaderDragOverBorderColor, t.fileUploaderBorderRadius, t.fileUploaderDragOverShadow);
|
|
39
39
|
},
|
|
40
40
|
windowDragOver: function (t) {
|
|
41
|
-
return css(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n border-radius: ", ";\n animation: ", " 1.5s infinite;\n "], ["\n border-radius: ", ";\n animation: ", " 1.5s infinite;\n "])), t.fileUploaderBorderRadius,
|
|
41
|
+
return css(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n border-radius: ", ";\n animation: ", " 1.5s infinite;\n "], ["\n border-radius: ", ";\n animation: ", " 1.5s infinite;\n "])), t.fileUploaderBorderRadius, calcPulse(t));
|
|
42
42
|
},
|
|
43
43
|
contentInnerSmall: function (t) {
|
|
44
44
|
return css(templateObject_11 || (templateObject_11 = __makeTemplateObject(["\n width: calc(100% - ", " - ", ");\n "], ["\n width: calc(100% - ", " - ", ");\n "])), t.inputIconSizeSmall, t.fileUploaderIconGapSmall);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileUploader.styles.js","sourceRoot":"","sources":["../../../components/FileUploader/FileUploader.styles.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { memoizeGetStyles, prefix } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { fileUploaderSizeMixin } from './FileUploader.mixins.js';\n\nexport const globalClasses = prefix('file-uploader')({\n afterLinkText: 'after-link-text',\n});\nexport const getJsStyles = memoizeGetStyles(({ css, keyframes }: Emotion) => {\n return {\n calcPulse(t: Theme) {\n return keyframes`\n 0% {\n box-shadow: 0 0 0 1px ${t.inputBlinkColor};\n }\n 95% {\n box-shadow: 0 0 0 10px ${t.inputBlinkColor};\n }\n 100% {\n box-shadow: 0 0 0 1px ${t.inputBlinkColor};\n }\n `;\n },\n\n root(t: Theme) {\n return css`\n display: inline-flex;\n flex-wrap: wrap;\n position: relative;\n border-radius: ${t.fileUploaderBorderRadius};\n line-height: ${t.fileUploaderLineHeightSmall};\n font-size: ${t.fileUploaderFontSizeSmall};\n color: ${t.fileUploaderTextColorDefault};\n background-color: ${t.fileUploaderBg};\n `;\n },\n uploadButton(t: Theme) {\n return css`\n width: 100%;\n position: relative;\n display: inline-flex;\n align-items: center;\n border: ${t.fileUploaderBorderWidth} ${t.fileUploaderBorderStyle} ${t.fileUploaderBorderColor};\n box-sizing: border-box;\n border-radius: ${t.fileUploaderBorderRadius};\n outline: none;\n cursor: pointer;\n transition:\n background-color ${t.transitionDuration} ${t.transitionTimingFunction},\n border-color ${t.transitionDuration} ${t.transitionTimingFunction};\n background-color: ${t.fileUploaderUploadButtonBg};\n `;\n },\n\n uploadButtonFocus(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid ${t.fileUploaderBorderColorFocus};\n box-shadow: 0px 0px 0px 1px ${t.fileUploaderBorderColorFocus};\n `;\n },\n\n uploadButtonWithFile(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid transparent;\n background: none;\n `;\n },\n\n uploadButtonIconGapSmall(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapSmall};\n `;\n },\n\n uploadButtonIconGapMedium(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapMedium};\n `;\n },\n\n uploadButtonIconGapLarge(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapLarge};\n `;\n },\n\n dragOver(t: Theme) {\n return css`\n border: 1px solid ${t.fileUploaderDragOverBorderColor};\n border-radius: ${t.fileUploaderBorderRadius};\n box-shadow: ${t.fileUploaderDragOverShadow};\n `;\n },\n\n windowDragOver(t: Theme) {\n return css`\n border-radius: ${t.fileUploaderBorderRadius};\n animation: ${this.calcPulse(t)} 1.5s infinite;\n `;\n },\n\n contentInnerSmall(t: Theme) {\n return css`\n width: calc(100% - ${t.inputIconSizeSmall} - ${t.fileUploaderIconGapSmall});\n `;\n },\n\n contentInnerMedium(t: Theme) {\n return css`\n width: calc(100% - ${t.inputIconSizeMedium} - ${t.fileUploaderIconGapMedium});\n `;\n },\n\n contentInnerLarge(t: Theme) {\n return css`\n width: calc(100% - ${t.inputIconSizeLarge} - ${t.fileUploaderIconGapLarge});\n `;\n },\n\n visuallyHidden() {\n return css`\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n border: 0;\n padding: 0;\n white-space: nowrap;\n clip-path: inset(100%);\n clip: rect(0 0 0 0);\n overflow: hidden;\n `;\n },\n\n afterLinkText() {\n return css`\n display: inline;\n `;\n },\n\n afterLinkText_HasFiles() {\n return css`\n display: flex;\n justify-content: space-between;\n flex: 1 1 auto;\n height: 100%;\n `;\n },\n\n warningButton(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid ${t.fileUploaderBorderColorWarning};\n box-shadow: 0px 0px 0px 1px ${t.fileUploaderBorderColorWarning};\n `;\n },\n\n warningFile(t: Theme) {\n return css`\n background: ${t.fileUploaderWarningBgColor};\n color: ${t.fileUploaderValidationTextColor};\n &:hover {\n background: ${t.fileUploaderWarningBgHoverColor};\n }\n `;\n },\n\n errorButton(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid ${t.fileUploaderBorderColorError};\n box-shadow: 0px 0px 0px 1px ${t.fileUploaderBorderColorError};\n `;\n },\n\n errorFile(t: Theme) {\n return css`\n background: ${t.fileUploaderErrorBgColor};\n color: ${t.fileUploaderValidationTextColor};\n &:hover {\n background: ${t.fileUploaderErrorBgHoverColor};\n }\n `;\n },\n\n hovered(t: Theme) {\n return css`\n background: ${t.fileUploaderHoveredBg};\n `;\n },\n\n linkHovered(t: Theme) {\n return css`\n text-decoration: ${t.fileUploaderLinkHoverTextDecoration};\n `;\n },\n\n disabled(t: Theme) {\n return css`\n cursor: default;\n color: ${t.fileUploaderDisabledTextColor};\n box-shadow: none;\n background-clip: ${t.fileUploaderDisabledBgClip};\n\n .${globalClasses.afterLinkText} {\n color: ${t.fileUploaderDisabledTextColor};\n }\n `;\n },\n\n disabledBackground(t: Theme) {\n return css`\n background: ${t.fileUploaderDisabledBg};\n border: ${t.fileUploaderDisabledBorder};\n `;\n },\n\n icon(t: Theme) {\n return css`\n display: inline-block;\n color: ${t.fileUploaderIconColor};\n `;\n },\n\n iconDisabled(t: Theme) {\n return css`\n color: ${t.fileUploaderDisabledIconColor};\n `;\n },\n\n link(t: Theme) {\n return css`\n outline: none;\n text-decoration: none;\n color: ${t.fileUploaderLinkColor};\n `;\n },\n\n linkDisabled(t: Theme) {\n return css`\n color: ${t.fileUploaderDisabledLinkColor};\n &:hover {\n text-decoration: none;\n }\n `;\n },\n\n singleFile() {\n return css`\n width: 100%;\n height: inherit;\n `;\n },\n\n iconSmall(t: Theme) {\n return css`\n font-size: ${t.fileUploaderFontSizeSmall};\n line-height: ${t.fileUploaderLineHeightSmall};\n `;\n },\n\n iconMedium(t: Theme) {\n return css`\n font-size: ${t.fileUploaderFontSizeMedium};\n line-height: ${t.fileUploaderLineHeightMedium};\n `;\n },\n\n iconLarge(t: Theme) {\n return css`\n font-size: ${t.fileUploaderFontSizeLarge};\n line-height: ${t.fileUploaderLineHeightLarge};\n `;\n },\n };\n});\n\nexport const getJsRowStyles = memoizeGetStyles(({ css }: Emotion) => {\n return {\n root() {\n return css`\n width: 100%;\n `;\n },\n\n uploadButtonWithFile(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid transparent;\n background: none;\n `;\n },\n\n uploadButton() {\n return css`\n justify-content: space-between;\n `;\n },\n\n uploadButtonWrapper() {\n return css`\n height: inherit;\n width: 100%;\n `;\n },\n\n uploadButtonIconGapSmall(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapSmall};\n `;\n },\n\n uploadButtonIconGapMedium(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapMedium};\n `;\n },\n\n uploadButtonIconGapLarge(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapLarge};\n `;\n },\n\n sizeSmall(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeSmall,\n t.fileUploaderLineHeightSmall,\n t.fileUploaderPaddingXSmall,\n t.fileUploaderPaddingYSmall,\n )};\n `;\n },\n\n sizeMedium(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeMedium,\n t.fileUploaderLineHeightMedium,\n t.fileUploaderPaddingXMedium,\n t.fileUploaderPaddingYMedium,\n )};\n `;\n },\n\n sizeLarge(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeLarge,\n t.fileUploaderLineHeightLarge,\n t.fileUploaderPaddingXLarge,\n t.fileUploaderPaddingYLarge,\n )};\n `;\n },\n\n content() {\n return css`\n display: block;\n width: 100%;\n height: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n `;\n },\n\n contentWithFiles() {\n return css`\n display: flex;\n align-items: center;\n `;\n },\n };\n});\n\nexport const getJsTileStyles = memoizeGetStyles(({ css }: Emotion) => {\n return {\n uploadButton() {\n return css`\n height: 100%;\n justify-content: center;\n flex-direction: column;\n `;\n },\n\n uploadButtonWrapper() {\n return css`\n box-sizing: border-box;\n `;\n },\n\n uploadButtonWrapperSmall(t: Theme) {\n return css`\n width: ${t.fileUploaderTileWidthSmall};\n min-height: ${t.fileUploaderTileMinHeightSmall};\n height: auto;\n `;\n },\n\n uploadButtonWrapperMedium(t: Theme) {\n return css`\n width: ${t.fileUploaderTileWidthMedium};\n min-height: ${t.fileUploaderTileMinHeightMedium};\n height: auto;\n `;\n },\n\n uploadButtonWrapperLarge(t: Theme) {\n return css`\n width: ${t.fileUploaderTileWidthLarge};\n min-height: ${t.fileUploaderTileMinHeightLarge};\n height: auto;\n `;\n },\n\n uploadButtonWrapperEmptyFileSmall(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingSmall};\n height: ${t.fileUploaderTileMinHeightSmall};\n `;\n },\n\n uploadButtonWrapperEmptyFileMedium(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingMedium};\n height: ${t.fileUploaderTileMinHeightMedium};\n `;\n },\n\n uploadButtonWrapperEmptyFileLarge(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingLarge};\n height: ${t.fileUploaderTileMinHeightLarge};\n `;\n },\n\n uploadButtonWithFile(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid transparent;\n background: none;\n justify-content: start;\n `;\n },\n\n uploadButtonIconGapSmall(t: Theme) {\n return css`\n margin-bottom: ${t.inputIconGapSmall};\n `;\n },\n\n uploadButtonIconGapMedium(t: Theme) {\n return css`\n margin-bottom: ${t.inputIconGapMedium};\n `;\n },\n\n uploadButtonIconGapLarge(t: Theme) {\n return css`\n margin-bottom: ${t.inputIconGapLarge};\n `;\n },\n\n uploadButtonTileWithFileSmall(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingSmall};\n `;\n },\n\n uploadButtonTileWithFileMedium(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingMedium};\n `;\n },\n\n uploadButtonTileWithFileLarge(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingLarge};\n `;\n },\n\n sizeSmall(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeSmall,\n t.fileUploaderLineHeightSmall,\n t.fileUploaderTilePaddingSmall,\n t.fileUploaderTilePaddingSmall,\n )};\n `;\n },\n\n sizeMedium(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeMedium,\n t.fileUploaderLineHeightMedium,\n t.fileUploaderTilePaddingMedium,\n t.fileUploaderTilePaddingMedium,\n )};\n `;\n },\n sizeLarge(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeLarge,\n t.fileUploaderLineHeightLarge,\n t.fileUploaderTilePaddingLarge,\n t.fileUploaderTilePaddingLarge,\n )};\n `;\n },\n\n verticalAlign() {\n return css`\n vertical-align: middle;\n `;\n },\n\n content() {\n return css`\n display: block;\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: normal;\n overflow-wrap: break-word;\n word-wrap: break-word;\n text-align: center;\n `;\n },\n\n contentWithFiles() {\n return css`\n display: flex;\n align-items: flex-start;\n height: 100%;\n `;\n },\n };\n});\n"]}
|
|
1
|
+
{"version":3,"file":"FileUploader.styles.js","sourceRoot":"","sources":["../../../components/FileUploader/FileUploader.styles.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { memoizeGetStyles, prefix } from '../../lib/theming/Emotion.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { fileUploaderSizeMixin } from './FileUploader.mixins.js';\n\nexport const globalClasses = prefix('file-uploader')({\n afterLinkText: 'after-link-text',\n});\nexport const getJsStyles = memoizeGetStyles(({ css, keyframes }: Emotion) => {\n const calcPulse = (t: Theme) => {\n return keyframes`\n 0% {\n box-shadow: 0 0 0 1px ${t.inputBlinkColor};\n }\n 95% {\n box-shadow: 0 0 0 10px ${t.inputBlinkColor};\n }\n 100% {\n box-shadow: 0 0 0 1px ${t.inputBlinkColor};\n }\n `;\n };\n return {\n root(t: Theme) {\n return css`\n display: inline-flex;\n flex-wrap: wrap;\n position: relative;\n border-radius: ${t.fileUploaderBorderRadius};\n line-height: ${t.fileUploaderLineHeightSmall};\n font-size: ${t.fileUploaderFontSizeSmall};\n color: ${t.fileUploaderTextColorDefault};\n background-color: ${t.fileUploaderBg};\n `;\n },\n uploadButton(t: Theme) {\n return css`\n width: 100%;\n position: relative;\n display: inline-flex;\n align-items: center;\n border: ${t.fileUploaderBorderWidth} ${t.fileUploaderBorderStyle} ${t.fileUploaderBorderColor};\n box-sizing: border-box;\n border-radius: ${t.fileUploaderBorderRadius};\n outline: none;\n cursor: pointer;\n transition:\n background-color ${t.transitionDuration} ${t.transitionTimingFunction},\n border-color ${t.transitionDuration} ${t.transitionTimingFunction};\n background-color: ${t.fileUploaderUploadButtonBg};\n `;\n },\n\n uploadButtonFocus(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid ${t.fileUploaderBorderColorFocus};\n box-shadow: 0px 0px 0px 1px ${t.fileUploaderBorderColorFocus};\n `;\n },\n\n uploadButtonWithFile(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid transparent;\n background: none;\n `;\n },\n\n uploadButtonIconGapSmall(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapSmall};\n `;\n },\n\n uploadButtonIconGapMedium(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapMedium};\n `;\n },\n\n uploadButtonIconGapLarge(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapLarge};\n `;\n },\n\n dragOver(t: Theme) {\n return css`\n border: 1px solid ${t.fileUploaderDragOverBorderColor};\n border-radius: ${t.fileUploaderBorderRadius};\n box-shadow: ${t.fileUploaderDragOverShadow};\n `;\n },\n\n windowDragOver(t: Theme) {\n return css`\n border-radius: ${t.fileUploaderBorderRadius};\n animation: ${calcPulse(t)} 1.5s infinite;\n `;\n },\n\n contentInnerSmall(t: Theme) {\n return css`\n width: calc(100% - ${t.inputIconSizeSmall} - ${t.fileUploaderIconGapSmall});\n `;\n },\n\n contentInnerMedium(t: Theme) {\n return css`\n width: calc(100% - ${t.inputIconSizeMedium} - ${t.fileUploaderIconGapMedium});\n `;\n },\n\n contentInnerLarge(t: Theme) {\n return css`\n width: calc(100% - ${t.inputIconSizeLarge} - ${t.fileUploaderIconGapLarge});\n `;\n },\n\n visuallyHidden() {\n return css`\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n border: 0;\n padding: 0;\n white-space: nowrap;\n clip-path: inset(100%);\n clip: rect(0 0 0 0);\n overflow: hidden;\n `;\n },\n\n afterLinkText() {\n return css`\n display: inline;\n `;\n },\n\n afterLinkText_HasFiles() {\n return css`\n display: flex;\n justify-content: space-between;\n flex: 1 1 auto;\n height: 100%;\n `;\n },\n\n warningButton(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid ${t.fileUploaderBorderColorWarning};\n box-shadow: 0px 0px 0px 1px ${t.fileUploaderBorderColorWarning};\n `;\n },\n\n warningFile(t: Theme) {\n return css`\n background: ${t.fileUploaderWarningBgColor};\n color: ${t.fileUploaderValidationTextColor};\n &:hover {\n background: ${t.fileUploaderWarningBgHoverColor};\n }\n `;\n },\n\n errorButton(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid ${t.fileUploaderBorderColorError};\n box-shadow: 0px 0px 0px 1px ${t.fileUploaderBorderColorError};\n `;\n },\n\n errorFile(t: Theme) {\n return css`\n background: ${t.fileUploaderErrorBgColor};\n color: ${t.fileUploaderValidationTextColor};\n &:hover {\n background: ${t.fileUploaderErrorBgHoverColor};\n }\n `;\n },\n\n hovered(t: Theme) {\n return css`\n background: ${t.fileUploaderHoveredBg};\n `;\n },\n\n linkHovered(t: Theme) {\n return css`\n text-decoration: ${t.fileUploaderLinkHoverTextDecoration};\n `;\n },\n\n disabled(t: Theme) {\n return css`\n cursor: default;\n color: ${t.fileUploaderDisabledTextColor};\n box-shadow: none;\n background-clip: ${t.fileUploaderDisabledBgClip};\n\n .${globalClasses.afterLinkText} {\n color: ${t.fileUploaderDisabledTextColor};\n }\n `;\n },\n\n disabledBackground(t: Theme) {\n return css`\n background: ${t.fileUploaderDisabledBg};\n border: ${t.fileUploaderDisabledBorder};\n `;\n },\n\n icon(t: Theme) {\n return css`\n display: inline-block;\n color: ${t.fileUploaderIconColor};\n `;\n },\n\n iconDisabled(t: Theme) {\n return css`\n color: ${t.fileUploaderDisabledIconColor};\n `;\n },\n\n link(t: Theme) {\n return css`\n outline: none;\n text-decoration: none;\n color: ${t.fileUploaderLinkColor};\n `;\n },\n\n linkDisabled(t: Theme) {\n return css`\n color: ${t.fileUploaderDisabledLinkColor};\n &:hover {\n text-decoration: none;\n }\n `;\n },\n\n singleFile() {\n return css`\n width: 100%;\n height: inherit;\n `;\n },\n\n iconSmall(t: Theme) {\n return css`\n font-size: ${t.fileUploaderFontSizeSmall};\n line-height: ${t.fileUploaderLineHeightSmall};\n `;\n },\n\n iconMedium(t: Theme) {\n return css`\n font-size: ${t.fileUploaderFontSizeMedium};\n line-height: ${t.fileUploaderLineHeightMedium};\n `;\n },\n\n iconLarge(t: Theme) {\n return css`\n font-size: ${t.fileUploaderFontSizeLarge};\n line-height: ${t.fileUploaderLineHeightLarge};\n `;\n },\n };\n});\n\nexport const getJsRowStyles = memoizeGetStyles(({ css }: Emotion) => {\n return {\n root() {\n return css`\n width: 100%;\n `;\n },\n\n uploadButtonWithFile(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid transparent;\n background: none;\n `;\n },\n\n uploadButton() {\n return css`\n justify-content: space-between;\n `;\n },\n\n uploadButtonWrapper() {\n return css`\n height: inherit;\n width: 100%;\n `;\n },\n\n uploadButtonIconGapSmall(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapSmall};\n `;\n },\n\n uploadButtonIconGapMedium(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapMedium};\n `;\n },\n\n uploadButtonIconGapLarge(t: Theme) {\n return css`\n margin-right: ${t.inputIconGapLarge};\n `;\n },\n\n sizeSmall(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeSmall,\n t.fileUploaderLineHeightSmall,\n t.fileUploaderPaddingXSmall,\n t.fileUploaderPaddingYSmall,\n )};\n `;\n },\n\n sizeMedium(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeMedium,\n t.fileUploaderLineHeightMedium,\n t.fileUploaderPaddingXMedium,\n t.fileUploaderPaddingYMedium,\n )};\n `;\n },\n\n sizeLarge(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeLarge,\n t.fileUploaderLineHeightLarge,\n t.fileUploaderPaddingXLarge,\n t.fileUploaderPaddingYLarge,\n )};\n `;\n },\n\n content() {\n return css`\n display: block;\n width: 100%;\n height: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n `;\n },\n\n contentWithFiles() {\n return css`\n display: flex;\n align-items: center;\n `;\n },\n };\n});\n\nexport const getJsTileStyles = memoizeGetStyles(({ css }: Emotion) => {\n return {\n uploadButton() {\n return css`\n height: 100%;\n justify-content: center;\n flex-direction: column;\n `;\n },\n\n uploadButtonWrapper() {\n return css`\n box-sizing: border-box;\n `;\n },\n\n uploadButtonWrapperSmall(t: Theme) {\n return css`\n width: ${t.fileUploaderTileWidthSmall};\n min-height: ${t.fileUploaderTileMinHeightSmall};\n height: auto;\n `;\n },\n\n uploadButtonWrapperMedium(t: Theme) {\n return css`\n width: ${t.fileUploaderTileWidthMedium};\n min-height: ${t.fileUploaderTileMinHeightMedium};\n height: auto;\n `;\n },\n\n uploadButtonWrapperLarge(t: Theme) {\n return css`\n width: ${t.fileUploaderTileWidthLarge};\n min-height: ${t.fileUploaderTileMinHeightLarge};\n height: auto;\n `;\n },\n\n uploadButtonWrapperEmptyFileSmall(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingSmall};\n height: ${t.fileUploaderTileMinHeightSmall};\n `;\n },\n\n uploadButtonWrapperEmptyFileMedium(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingMedium};\n height: ${t.fileUploaderTileMinHeightMedium};\n `;\n },\n\n uploadButtonWrapperEmptyFileLarge(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingLarge};\n height: ${t.fileUploaderTileMinHeightLarge};\n `;\n },\n\n uploadButtonWithFile(t: Theme) {\n return css`\n border: ${t.fileUploaderBorderWidth} solid transparent;\n background: none;\n justify-content: start;\n `;\n },\n\n uploadButtonIconGapSmall(t: Theme) {\n return css`\n margin-bottom: ${t.inputIconGapSmall};\n `;\n },\n\n uploadButtonIconGapMedium(t: Theme) {\n return css`\n margin-bottom: ${t.inputIconGapMedium};\n `;\n },\n\n uploadButtonIconGapLarge(t: Theme) {\n return css`\n margin-bottom: ${t.inputIconGapLarge};\n `;\n },\n\n uploadButtonTileWithFileSmall(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingSmall};\n `;\n },\n\n uploadButtonTileWithFileMedium(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingMedium};\n `;\n },\n\n uploadButtonTileWithFileLarge(t: Theme) {\n return css`\n padding: ${t.fileUploaderTileFilePaddingLarge};\n `;\n },\n\n sizeSmall(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeSmall,\n t.fileUploaderLineHeightSmall,\n t.fileUploaderTilePaddingSmall,\n t.fileUploaderTilePaddingSmall,\n )};\n `;\n },\n\n sizeMedium(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeMedium,\n t.fileUploaderLineHeightMedium,\n t.fileUploaderTilePaddingMedium,\n t.fileUploaderTilePaddingMedium,\n )};\n `;\n },\n sizeLarge(t: Theme) {\n return css`\n ${fileUploaderSizeMixin(\n t.fileUploaderFontSizeLarge,\n t.fileUploaderLineHeightLarge,\n t.fileUploaderTilePaddingLarge,\n t.fileUploaderTilePaddingLarge,\n )};\n `;\n },\n\n verticalAlign() {\n return css`\n vertical-align: middle;\n `;\n },\n\n content() {\n return css`\n display: block;\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: normal;\n overflow-wrap: break-word;\n word-wrap: break-word;\n text-align: center;\n `;\n },\n\n contentWithFiles() {\n return css`\n display: flex;\n align-items: flex-start;\n height: 100%;\n `;\n },\n };\n});\n"]}
|
|
@@ -2,9 +2,13 @@ import React from 'react';
|
|
|
2
2
|
import type { PropsWithChildren } from 'react';
|
|
3
3
|
import type { FileUploaderAttachedFile } from './fileUtils.js';
|
|
4
4
|
export interface FileUploaderControlProviderProps {
|
|
5
|
+
/** Файлы при первом рендере (в одиночном режиме берётся только первый). */
|
|
5
6
|
initialFiles?: File[];
|
|
7
|
+
/** Вызывается при добавлении файлов через контрол (перед обновлением состояния списка). */
|
|
6
8
|
onAttach?: (files: FileUploaderAttachedFile[]) => void;
|
|
9
|
+
/** Вызывается при удалении файла. */
|
|
7
10
|
onRemove?: (fileId: string) => void;
|
|
11
|
+
/** Вызывается при любом изменении массива прикреплённых файлов. */
|
|
8
12
|
onValueChange?: (files: FileUploaderAttachedFile[]) => void;
|
|
9
13
|
}
|
|
10
14
|
export declare const FileUploaderControlProvider: React.MemoExoticComponent<(props: PropsWithChildren<FileUploaderControlProviderProps & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileUploaderControlProvider.js","sourceRoot":"","sources":["../../../components/FileUploader/FileUploaderControlProvider.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"FileUploaderControlProvider.js","sourceRoot":"","sources":["../../../components/FileUploader/FileUploaderControlProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useState } from 'react';\nimport type { PropsWithChildren } from 'react';\n\nimport { useEffectWithoutInitCall } from '../../hooks/useEffectWithoutInitCall.js';\nimport { useMemoObject } from '../../hooks/useMemoObject.js';\nimport { FileUploaderControlContext } from './FileUploaderControlContext.js';\nimport { FileUploaderFileValidationResult } from './FileUploaderFileValidationResult.js';\nimport { FileUploaderFileStatus, getAttachedFile } from './fileUtils.js';\nimport type { FileUploaderAttachedFile } from './fileUtils.js';\nimport { useControlLocale } from './hooks/useControlLocale.js';\n\nexport interface FileUploaderControlProviderProps {\n /** Файлы при первом рендере (в одиночном режиме берётся только первый). */\n initialFiles?: File[];\n /** Вызывается при добавлении файлов через контрол (перед обновлением состояния списка). */\n onAttach?: (files: FileUploaderAttachedFile[]) => void;\n /** Вызывается при удалении файла. */\n onRemove?: (fileId: string) => void;\n /** Вызывается при любом изменении массива прикреплённых файлов. */\n onValueChange?: (files: FileUploaderAttachedFile[]) => void;\n}\n\nconst updateFile = (\n files: FileUploaderAttachedFile[],\n fileId: string,\n getFileUpdatedProps: (file: FileUploaderAttachedFile) => Partial<FileUploaderAttachedFile>,\n): FileUploaderAttachedFile[] => {\n const fileIndex = files.findIndex((file) => file.id === fileId);\n if (fileIndex === -1) {\n return files;\n }\n\n const newFiles = [...files];\n const file = files[fileIndex];\n\n const updatedProps = getFileUpdatedProps(file);\n\n newFiles[fileIndex] = {\n ...file,\n ...updatedProps,\n };\n\n return newFiles;\n};\n\nexport const FileUploaderControlProvider = React.memo(\n (\n props: PropsWithChildren<\n FileUploaderControlProviderProps & {\n multiple?: boolean;\n }\n >,\n ) => {\n const { initialFiles, multiple, children, onValueChange, onRemove, onAttach } = props;\n\n const [files, setFiles] = useState<FileUploaderAttachedFile[]>(() => {\n if (initialFiles && initialFiles.length > 0) {\n const attachedFiles = initialFiles.map((item: File) => getAttachedFile(item));\n\n return multiple ? attachedFiles : [attachedFiles[0]];\n }\n return [];\n });\n const locale = useControlLocale();\n\n useEffectWithoutInitCall(() => {\n onValueChange?.(files);\n }, [files]);\n\n const setFileStatus = useCallback(\n (fileId: string, status: FileUploaderFileStatus) => {\n setFiles((files) =>\n updateFile(files, fileId, (file) => ({\n status,\n validationResult:\n status === FileUploaderFileStatus.Error || status === FileUploaderFileStatus.Warning\n ? FileUploaderFileValidationResult.error(locale.requestErrorText)\n : file.validationResult,\n })),\n );\n },\n [locale],\n );\n\n const handleExternalSetFiles = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n onAttach?.(files);\n setFiles((state) => [...state, ...files]);\n },\n [onAttach],\n );\n\n const removeFile = useCallback(\n (fileId: string) => {\n onRemove?.(fileId);\n setFiles((state) => state.filter((file) => file.id !== fileId));\n },\n [onRemove],\n );\n\n const setFileValidationResult = useCallback(\n (fileId: string, validationResult: FileUploaderFileValidationResult, status?: FileUploaderFileStatus) => {\n setFiles((files) => updateFile(files, fileId, () => ({ validationResult, status })));\n },\n [],\n );\n\n const reset = React.useCallback(() => {\n setFiles(() => [] as FileUploaderAttachedFile[]);\n }, []);\n\n return (\n <FileUploaderControlContext.Provider\n value={useMemoObject({\n setFileStatus,\n files,\n setFiles: handleExternalSetFiles,\n removeFile,\n setFileValidationResult,\n reset,\n })}\n >\n {children}\n </FileUploaderControlContext.Provider>\n );\n },\n);\n\nFileUploaderControlProvider.displayName = 'FileUploaderControlProvider';\n"]}
|
|
@@ -4,37 +4,45 @@ import type { PopupPositionsType, ShortPopupPositionsType } from '../../internal
|
|
|
4
4
|
import type { SizeProp } from '../../lib/types/props.js';
|
|
5
5
|
import type { FileUploaderAttachedFile, FileUploaderView } from './fileUtils.js';
|
|
6
6
|
export interface FileUploaderFileProps extends CommonProps {
|
|
7
|
+
/** Данные файла и статусы из контекста `FileUploader`. */
|
|
7
8
|
file: FileUploaderAttachedFile;
|
|
9
|
+
/** Включает отображение размера файла рядом с именем. */
|
|
8
10
|
showSize?: boolean;
|
|
11
|
+
/** Фон превью в плиточном виде (URL изображения). */
|
|
9
12
|
previewImg?: string;
|
|
13
|
+
/** Включает мультивыбор файлов. */
|
|
10
14
|
multiple?: boolean;
|
|
15
|
+
/** Блокирует строку файла. */
|
|
11
16
|
disabled?: boolean;
|
|
17
|
+
/** Переводит строку файла в состояние "наведенное". */
|
|
12
18
|
hovered?: boolean;
|
|
19
|
+
/** Переводит строку файла в состояние "фокус". */
|
|
13
20
|
focused?: boolean;
|
|
21
|
+
/** Размер контрола и вложенных элементов.
|
|
22
|
+
* @default small */
|
|
14
23
|
size: SizeProp;
|
|
15
|
-
/**
|
|
16
|
-
* - `row` — стандартное отображение в виде инпута
|
|
17
|
-
* - `tile` — вид карточки/плитки
|
|
24
|
+
/** Внешний вид: строка (`row`) или плитка (`tile`).
|
|
18
25
|
* @default row
|
|
19
26
|
*/
|
|
20
27
|
view?: FileUploaderView;
|
|
21
|
-
/**
|
|
28
|
+
/** Переводит строку файла в состояние валидации "ошибка". */
|
|
22
29
|
error?: boolean;
|
|
23
|
-
/**
|
|
30
|
+
/** Переводит строку файла в состояние валидации "предупреждение". */
|
|
24
31
|
warning?: boolean;
|
|
25
|
-
/**
|
|
32
|
+
/** Включает отображение текста валидации во всплывающей подсказке (и в плитке по умолчанию). */
|
|
26
33
|
withValidationTooltip?: boolean;
|
|
27
|
-
/**
|
|
34
|
+
/** Расположение тултипа с текстом валидации. */
|
|
28
35
|
validationTooltipPosition?: ShortPopupPositionsType | PopupPositionsType;
|
|
29
|
-
/**
|
|
36
|
+
/** Включает отображение иконки предупреждения (восклицательный знак) при статусе предупреждения у файла. */
|
|
30
37
|
withWarningIcon?: boolean;
|
|
38
|
+
/** Удаляет файл по `id`. */
|
|
31
39
|
onRemove(id: string): void;
|
|
32
40
|
/**
|
|
33
|
-
*
|
|
41
|
+
* Замена стандартной иконки типа файла.
|
|
34
42
|
*/
|
|
35
43
|
fileTypeIcon?: React.ReactElement;
|
|
36
44
|
/**
|
|
37
|
-
*
|
|
45
|
+
* Включает отображение подсказки с полным именем при обрезке текста (через `Hint`).
|
|
38
46
|
* @default true
|
|
39
47
|
*/
|
|
40
48
|
showFilenameHint?: boolean;
|
|
@@ -48,6 +56,6 @@ export declare const FileUploaderFileDataTids: {
|
|
|
48
56
|
readonly fileTypeIcon: "FileUploader__fileTypeIcon";
|
|
49
57
|
};
|
|
50
58
|
/**
|
|
51
|
-
*
|
|
59
|
+
* `FileUploaderFile` показывает одну строку файла внутри `FileUploader`: имя, тип, размер, статусы и удаление.
|
|
52
60
|
*/
|
|
53
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
|
-
*
|
|
86
|
+
* `FileUploaderFile` показывает одну строку файла внутри `FileUploader`: имя, тип, размер, статусы и удаление.
|
|
87
87
|
*/
|
|
88
88
|
export var FileUploaderFile = forwardRefAndName('FileUploaderFile', function (props, ref) {
|
|
89
89
|
var _a, _b, _c;
|