@astral/ui 4.55.1 → 4.55.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/ConfigProvider/ConfigProvider.d.ts +1 -1
- package/components/ConfigProvider/ConfigProvider.js +10 -4
- package/components/fileUploading/FileUploaderFile/Actions/useLogic/useLogic.js +4 -3
- package/components/fileUploading/PreviewFileUploader/PreviewFileUploader.d.ts +8 -1
- package/components/fileUploading/PreviewFileUploaderFile/FilePreview/useLogic/useLogic.js +6 -5
- package/components/fileUploading/hooks/useFileUploader/hooks/index.d.ts +1 -0
- package/components/fileUploading/hooks/useFileUploader/hooks/index.js +1 -0
- package/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/index.d.ts +1 -0
- package/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/index.js +1 -0
- package/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/usePrepareAccept.d.ts +2 -0
- package/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/usePrepareAccept.js +14 -0
- package/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/utils/getAcceptMeta/getAcceptMeta.d.ts +5 -0
- package/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/utils/getAcceptMeta/getAcceptMeta.js +23 -0
- package/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/utils/getAcceptMeta/index.d.ts +1 -0
- package/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/utils/getAcceptMeta/index.js +1 -0
- package/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/utils/index.d.ts +2 -0
- package/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/utils/index.js +2 -0
- package/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/utils/validateAcceptMeta/index.d.ts +1 -0
- package/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/utils/validateAcceptMeta/index.js +1 -0
- package/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/utils/validateAcceptMeta/validateAcceptMeta.d.ts +2 -0
- package/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/utils/validateAcceptMeta/validateAcceptMeta.js +10 -0
- package/components/fileUploading/hooks/useFileUploader/useFileUploader.js +3 -1
- package/components/fileUploading/hooks/usePreviewFileUploader/usePreviewFileUploader.d.ts +34 -120
- package/components/fileUploading/hooks/usePreviewFileUploader/usePreviewFileUploader.js +10 -137
- package/components/fileUploading/restrictions/restrictFileType/constants.d.ts +4 -0
- package/components/fileUploading/restrictions/restrictFileType/constants.js +4 -0
- package/components/fileUploading/restrictions/restrictFileType/restrictFileType.d.ts +2 -2
- package/components/fileUploading/restrictions/restrictFileType/restrictFileType.js +31 -55
- package/components/fileUploading/restrictions/restrictFileType/utils/getFileMeta/getFileMeta.d.ts +5 -0
- package/components/fileUploading/restrictions/restrictFileType/utils/getFileMeta/getFileMeta.js +21 -0
- package/components/fileUploading/restrictions/restrictFileType/utils/getFileMeta/index.d.ts +1 -0
- package/components/fileUploading/restrictions/restrictFileType/utils/getFileMeta/index.js +1 -0
- package/components/fileUploading/restrictions/restrictFileType/utils/index.d.ts +1 -2
- package/components/fileUploading/restrictions/restrictFileType/utils/index.js +1 -2
- package/components/fileUploading/services/MimeTypeRegistry/MimeTypeRegistry.d.ts +9 -0
- package/components/fileUploading/services/MimeTypeRegistry/MimeTypeRegistry.js +27 -0
- package/components/fileUploading/services/MimeTypeRegistry/constants.d.ts +1 -0
- package/components/fileUploading/services/MimeTypeRegistry/constants.js +343 -0
- package/components/fileUploading/services/MimeTypeRegistry/index.d.ts +1 -0
- package/components/fileUploading/services/MimeTypeRegistry/index.js +1 -0
- package/components/fileUploading/types.d.ts +10 -0
- package/components/fileUploading/utils/index.d.ts +1 -1
- package/components/fileUploading/utils/index.js +1 -1
- package/components/services/ErrorService/ErrorService.d.ts +17 -0
- package/components/services/ErrorService/ErrorService.js +33 -0
- package/components/services/ErrorService/index.d.ts +1 -0
- package/components/services/ErrorService/index.js +1 -0
- package/node/components/ConfigProvider/ConfigProvider.d.ts +1 -1
- package/node/components/ConfigProvider/ConfigProvider.js +9 -3
- package/node/components/fileUploading/FileUploaderFile/Actions/useLogic/useLogic.js +4 -3
- package/node/components/fileUploading/PreviewFileUploader/PreviewFileUploader.d.ts +8 -1
- package/node/components/fileUploading/PreviewFileUploaderFile/FilePreview/useLogic/useLogic.js +6 -5
- package/node/components/fileUploading/hooks/useFileUploader/hooks/index.d.ts +1 -0
- package/node/components/fileUploading/{restrictions/restrictFileType/utils/getFileTypeFromName → hooks/useFileUploader/hooks}/index.js +1 -1
- package/node/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/index.d.ts +1 -0
- package/node/components/fileUploading/{restrictions/restrictFileType/utils/getFileTypeFromFile → hooks/useFileUploader/hooks/usePrepareAccept}/index.js +1 -1
- package/node/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/usePrepareAccept.d.ts +2 -0
- package/node/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/usePrepareAccept.js +18 -0
- package/node/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/utils/getAcceptMeta/getAcceptMeta.d.ts +5 -0
- package/node/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/utils/getAcceptMeta/getAcceptMeta.js +27 -0
- package/node/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/utils/getAcceptMeta/index.d.ts +1 -0
- package/node/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/utils/getAcceptMeta/index.js +17 -0
- package/node/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/utils/index.d.ts +2 -0
- package/node/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/utils/index.js +18 -0
- package/node/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/utils/validateAcceptMeta/index.d.ts +1 -0
- package/node/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/utils/validateAcceptMeta/index.js +17 -0
- package/node/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/utils/validateAcceptMeta/validateAcceptMeta.d.ts +2 -0
- package/node/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/utils/validateAcceptMeta/validateAcceptMeta.js +14 -0
- package/node/components/fileUploading/hooks/useFileUploader/useFileUploader.js +3 -1
- package/node/components/fileUploading/hooks/usePreviewFileUploader/usePreviewFileUploader.d.ts +34 -120
- package/node/components/fileUploading/hooks/usePreviewFileUploader/usePreviewFileUploader.js +9 -136
- package/node/components/fileUploading/restrictions/restrictFileType/constants.d.ts +4 -0
- package/node/components/fileUploading/restrictions/restrictFileType/constants.js +5 -1
- package/node/components/fileUploading/restrictions/restrictFileType/restrictFileType.d.ts +2 -2
- package/node/components/fileUploading/restrictions/restrictFileType/restrictFileType.js +29 -53
- package/node/components/fileUploading/restrictions/restrictFileType/utils/getFileMeta/getFileMeta.d.ts +5 -0
- package/node/components/fileUploading/restrictions/restrictFileType/utils/getFileMeta/getFileMeta.js +25 -0
- package/node/components/fileUploading/restrictions/restrictFileType/utils/getFileMeta/index.d.ts +1 -0
- package/node/components/fileUploading/restrictions/restrictFileType/utils/{prepareType → getFileMeta}/index.js +1 -1
- package/node/components/fileUploading/restrictions/restrictFileType/utils/index.d.ts +1 -2
- package/node/components/fileUploading/restrictions/restrictFileType/utils/index.js +1 -2
- package/node/components/fileUploading/services/MimeTypeRegistry/MimeTypeRegistry.d.ts +9 -0
- package/node/components/fileUploading/services/MimeTypeRegistry/MimeTypeRegistry.js +31 -0
- package/node/components/fileUploading/services/MimeTypeRegistry/constants.d.ts +1 -0
- package/node/components/fileUploading/services/MimeTypeRegistry/constants.js +347 -0
- package/node/components/fileUploading/services/MimeTypeRegistry/index.d.ts +1 -0
- package/node/components/fileUploading/services/MimeTypeRegistry/index.js +17 -0
- package/node/components/fileUploading/types.d.ts +10 -0
- package/node/components/fileUploading/utils/index.d.ts +1 -1
- package/node/components/fileUploading/utils/index.js +16 -3
- package/node/components/services/ErrorService/ErrorService.d.ts +17 -0
- package/node/components/services/ErrorService/ErrorService.js +37 -0
- package/node/components/services/ErrorService/index.d.ts +1 -0
- package/node/components/services/ErrorService/index.js +17 -0
- package/package.json +1 -1
- package/components/fileUploading/restrictions/restrictFileType/utils/getFileTypeFromFile/getFileTypeFromFile.d.ts +0 -4
- package/components/fileUploading/restrictions/restrictFileType/utils/getFileTypeFromFile/getFileTypeFromFile.js +0 -10
- package/components/fileUploading/restrictions/restrictFileType/utils/getFileTypeFromFile/index.d.ts +0 -1
- package/components/fileUploading/restrictions/restrictFileType/utils/getFileTypeFromFile/index.js +0 -1
- package/components/fileUploading/restrictions/restrictFileType/utils/getFileTypeFromName/getFileTypeFromName.d.ts +0 -4
- package/components/fileUploading/restrictions/restrictFileType/utils/getFileTypeFromName/getFileTypeFromName.js +0 -13
- package/components/fileUploading/restrictions/restrictFileType/utils/getFileTypeFromName/index.d.ts +0 -1
- package/components/fileUploading/restrictions/restrictFileType/utils/getFileTypeFromName/index.js +0 -1
- package/components/fileUploading/restrictions/restrictFileType/utils/prepareType/index.d.ts +0 -1
- package/components/fileUploading/restrictions/restrictFileType/utils/prepareType/index.js +0 -1
- package/components/fileUploading/restrictions/restrictFileType/utils/prepareType/prepareType.d.ts +0 -5
- package/components/fileUploading/restrictions/restrictFileType/utils/prepareType/prepareType.js +0 -5
- package/node/components/fileUploading/restrictions/restrictFileType/utils/getFileTypeFromFile/getFileTypeFromFile.d.ts +0 -4
- package/node/components/fileUploading/restrictions/restrictFileType/utils/getFileTypeFromFile/getFileTypeFromFile.js +0 -14
- package/node/components/fileUploading/restrictions/restrictFileType/utils/getFileTypeFromFile/index.d.ts +0 -1
- package/node/components/fileUploading/restrictions/restrictFileType/utils/getFileTypeFromName/getFileTypeFromName.d.ts +0 -4
- package/node/components/fileUploading/restrictions/restrictFileType/utils/getFileTypeFromName/getFileTypeFromName.js +0 -17
- package/node/components/fileUploading/restrictions/restrictFileType/utils/getFileTypeFromName/index.d.ts +0 -1
- package/node/components/fileUploading/restrictions/restrictFileType/utils/prepareType/index.d.ts +0 -1
- package/node/components/fileUploading/restrictions/restrictFileType/utils/prepareType/prepareType.d.ts +0 -5
- package/node/components/fileUploading/restrictions/restrictFileType/utils/prepareType/prepareType.js +0 -9
|
@@ -139,5 +139,5 @@ export type ConfigProviderProps = Partial<ConfigContextProps> & {
|
|
|
139
139
|
nextFeatureFlags?: NextFeatureFlagsContextProps;
|
|
140
140
|
};
|
|
141
141
|
export declare const ConfigContext: import("react").Context<ConfigContextProps>;
|
|
142
|
-
export declare const ConfigProvider: ({ children, language, datePickerLanguageMap, captureException, emptySymbol, imagesMap, techSup, hidePersonalData, hidePersonalDataClassname, hidePersonalInputDataClassname, components: propsComponents, nextFeatureFlags, }: Partial<ConfigProviderProps>) => import("react/jsx-runtime").JSX.Element;
|
|
142
|
+
export declare const ConfigProvider: ({ children, language, datePickerLanguageMap, captureException: captureExceptionProp, emptySymbol, imagesMap, techSup, hidePersonalData, hidePersonalDataClassname, hidePersonalInputDataClassname, components: propsComponents, nextFeatureFlags, }: Partial<ConfigProviderProps>) => import("react/jsx-runtime").JSX.Element;
|
|
143
143
|
export {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { createContext, useEffect, } from 'react';
|
|
2
|
+
import { createContext, useEffect, useMemo, } from 'react';
|
|
3
3
|
import { russianMap } from '../DatePicker/constants';
|
|
4
|
+
import { ErrorService } from '../services/ErrorService';
|
|
4
5
|
import { NextFeatureFlagsContext, } from './NextFeatureFlagsContext';
|
|
5
6
|
const imagesMapDefault = {
|
|
6
7
|
noDataImgSrc: '',
|
|
@@ -26,7 +27,13 @@ export const ConfigContext = createContext({
|
|
|
26
27
|
hidePersonalInputDataClassname: defaultHidePersonalInputDataClassname,
|
|
27
28
|
hidePersonalData: true,
|
|
28
29
|
});
|
|
29
|
-
export const ConfigProvider = ({ children, language = 'ru', datePickerLanguageMap = russianMap, captureException, emptySymbol = '—', imagesMap = imagesMapDefault, techSup = techSupDefault, hidePersonalData = true, hidePersonalDataClassname = defaultHidePersonalDataClassname, hidePersonalInputDataClassname = defaultHidePersonalInputDataClassname, components: propsComponents, nextFeatureFlags = {}, }) => {
|
|
30
|
+
export const ConfigProvider = ({ children, language = 'ru', datePickerLanguageMap = russianMap, captureException: captureExceptionProp, emptySymbol = '—', imagesMap = imagesMapDefault, techSup = techSupDefault, hidePersonalData = true, hidePersonalDataClassname = defaultHidePersonalDataClassname, hidePersonalInputDataClassname = defaultHidePersonalInputDataClassname, components: propsComponents, nextFeatureFlags = {}, }) => {
|
|
31
|
+
const captureException =
|
|
32
|
+
// biome-ignore lint/suspicious/noConsole: Ошибка для интеграторов
|
|
33
|
+
captureExceptionProp || ((error) => console.error(error));
|
|
34
|
+
useMemo(() => {
|
|
35
|
+
ErrorService.getInstance().init(captureException);
|
|
36
|
+
}, [captureException]);
|
|
30
37
|
useEffect(() => {
|
|
31
38
|
if (!captureException) {
|
|
32
39
|
// biome-ignore lint/suspicious/noConsole: Ошибка для интеграторов
|
|
@@ -55,8 +62,7 @@ export const ConfigProvider = ({ children, language = 'ru', datePickerLanguageMa
|
|
|
55
62
|
return (_jsx(ConfigContext.Provider, { value: {
|
|
56
63
|
language,
|
|
57
64
|
datePickerLanguageMap,
|
|
58
|
-
|
|
59
|
-
captureException: captureException || ((error) => console.error(error)),
|
|
65
|
+
captureException,
|
|
60
66
|
emptySymbol,
|
|
61
67
|
imagesMap,
|
|
62
68
|
techSup,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { getFileExtension } from '@astral/utils/file/getFileExtension';
|
|
2
1
|
import { useContext } from 'react';
|
|
3
2
|
import { ConfigContext } from '../../../../ConfigProvider';
|
|
4
3
|
import { ABORT_ERROR_MESSAGE, EXTENSIONS_IN_NEW_TAB, VIEW_NEW_TAB_ERROR_MESSAGE, } from '../../../constants';
|
|
5
4
|
import { useGenerateLocalFileURL } from '../../../hooks/useGenerateLocalFileURL';
|
|
5
|
+
import { MimeTypeRegistry } from '../../../services/MimeTypeRegistry';
|
|
6
6
|
import { generateAttrLinkNewTab } from '../../../utils/generateAttrLinkNewTab';
|
|
7
7
|
export const useLogic = ({ fileId, file, fileUrl, isUploadError, generateDownloadLink, onDelete, onRetry, onView, setErrorStatusFile, selfFiles, isLoading, isError, isDeletingFile, fileName, }) => {
|
|
8
8
|
const { captureException } = useContext(ConfigContext);
|
|
@@ -42,8 +42,9 @@ export const useLogic = ({ fileId, file, fileUrl, isUploadError, generateDownloa
|
|
|
42
42
|
if (onView) {
|
|
43
43
|
return { isShowViewButton: true, onClick: handleView };
|
|
44
44
|
}
|
|
45
|
-
const
|
|
46
|
-
|
|
45
|
+
const extensions = file &&
|
|
46
|
+
MimeTypeRegistry.getInstance().getExtensionsByMimeType(file?.type);
|
|
47
|
+
if (checkIsAcceptedExtension(extensions)) {
|
|
47
48
|
return {
|
|
48
49
|
isShowViewButton: true,
|
|
49
50
|
...generateAttrLinkNewTab(downloadLink),
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { type UsePreviewFileUploaderParams } from '../hooks/usePreviewFileUploader';
|
|
3
3
|
export type PreviewFileUploaderProps = UsePreviewFileUploaderParams;
|
|
4
|
-
export declare const PreviewFileUploader: import("react").ForwardRefExoticComponent<
|
|
4
|
+
export declare const PreviewFileUploader: import("react").ForwardRefExoticComponent<Pick<import("../types").FileUploaderProps, "className" | "label" | "name" | "placeholder" | "isDisabled" | "isError" | "inputRef" | "helperText" | "maxFileSize" | "onUploadFile" | "getErrorMessage" | "restrictions" | "notify" | "onDeleteFile" | "onView" | "generateDownloadLink"> & {
|
|
5
|
+
value: import("../types").UploadFile | null | undefined;
|
|
6
|
+
accept?: string[] | undefined;
|
|
7
|
+
placeholderImgSrc?: string | undefined;
|
|
8
|
+
isHidePersonalData?: boolean | undefined;
|
|
9
|
+
PdfViewer?: import("react").LazyExoticComponent<(props: import("../../PdfViewer").PdfViewerProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>> | ((props: import("../../PdfViewer").PdfViewerProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>) | undefined;
|
|
10
|
+
onChange: (value: import("../types").UploadFile | null) => void;
|
|
11
|
+
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { getFileExtension } from '@astral/utils/file/getFileExtension';
|
|
2
1
|
import { useContext } from 'react';
|
|
3
2
|
import { ConfigContext } from '../../../../ConfigProvider';
|
|
4
3
|
import { EXTENSIONS_IN_NEW_TAB, VIEW_NEW_TAB_ERROR_MESSAGE, } from '../../../constants';
|
|
5
4
|
import { useGenerateLocalFileURL } from '../../../hooks/useGenerateLocalFileURL';
|
|
5
|
+
import { MimeTypeRegistry } from '../../../services/MimeTypeRegistry';
|
|
6
6
|
import { generateAttrLinkNewTab } from '../../../utils/generateAttrLinkNewTab';
|
|
7
7
|
export const useLogic = ({ fileId, file, fileUrl, generateDownloadLink, onDelete, onView, fileType, }) => {
|
|
8
8
|
const { captureException } = useContext(ConfigContext);
|
|
9
9
|
const { generateUrl } = useGenerateLocalFileURL();
|
|
10
|
-
const
|
|
11
|
-
|
|
10
|
+
const isPdfFile = MimeTypeRegistry.getInstance()
|
|
11
|
+
.getExtensionsByMimeType((file?.type || fileType))
|
|
12
|
+
?.includes('pdf') || false;
|
|
12
13
|
const isImageFile = fileType.includes('image/');
|
|
13
14
|
const isOtherFile = !isImageFile && !isPdfFile;
|
|
14
15
|
const getDownloadLink = () => {
|
|
@@ -39,8 +40,8 @@ export const useLogic = ({ fileId, file, fileUrl, generateDownloadLink, onDelete
|
|
|
39
40
|
if (onView) {
|
|
40
41
|
return { onClick: handleView };
|
|
41
42
|
}
|
|
42
|
-
const
|
|
43
|
-
if (checkIsAcceptedExtension(
|
|
43
|
+
const extensions = MimeTypeRegistry.getInstance().getExtensionsByMimeType((file?.type || fileType));
|
|
44
|
+
if (checkIsAcceptedExtension(extensions)) {
|
|
44
45
|
return generateAttrLinkNewTab(downloadLink);
|
|
45
46
|
}
|
|
46
47
|
return {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './usePrepareAccept';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './usePrepareAccept';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './usePrepareAccept';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './usePrepareAccept';
|
package/components/fileUploading/hooks/useFileUploader/hooks/usePrepareAccept/usePrepareAccept.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useEffect, useMemo } from 'react';
|
|
2
|
+
import { ErrorService } from '../../../../../services/ErrorService';
|
|
3
|
+
import { getAcceptMeta, validateAcceptMeta } from './utils';
|
|
4
|
+
export const usePrepareAccept = (accept) => {
|
|
5
|
+
const meta = useMemo(() => getAcceptMeta(accept), [accept]);
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
const error = validateAcceptMeta(meta);
|
|
8
|
+
if (error) {
|
|
9
|
+
const errorService = ErrorService.getInstance();
|
|
10
|
+
errorService.logError('FileUploader', error);
|
|
11
|
+
}
|
|
12
|
+
}, [meta]);
|
|
13
|
+
return meta;
|
|
14
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Парсит массив accept строк и возвращает мета-информацию о разрешенных типах файлов.
|
|
3
|
+
*/
|
|
4
|
+
export const getAcceptMeta = (accept) => accept.reduce((result, acceptString) => {
|
|
5
|
+
if (acceptString.includes('/')) {
|
|
6
|
+
result.isOnlyExtensions = false;
|
|
7
|
+
if (acceptString.endsWith('/*')) {
|
|
8
|
+
result.generalMimeTypes.push(acceptString);
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
result.mimeTypes.push(acceptString);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
if (!acceptString.includes('/') && acceptString.includes('.')) {
|
|
15
|
+
result.extensions.push(acceptString.replace('.', ''));
|
|
16
|
+
}
|
|
17
|
+
return result;
|
|
18
|
+
}, {
|
|
19
|
+
extensions: [],
|
|
20
|
+
mimeTypes: [],
|
|
21
|
+
generalMimeTypes: [],
|
|
22
|
+
isOnlyExtensions: true,
|
|
23
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './getAcceptMeta';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './getAcceptMeta';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './validateAcceptMeta';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './validateAcceptMeta';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { MimeTypeRegistry } from '../../../../../../services/MimeTypeRegistry';
|
|
2
|
+
export const validateAcceptMeta = (meta) => {
|
|
3
|
+
let result = null;
|
|
4
|
+
const mimeTypeRegistry = MimeTypeRegistry.getInstance();
|
|
5
|
+
const unsupportedExtensions = meta.extensions.filter((extension) => !mimeTypeRegistry.getMimeTypeByExtension(extension));
|
|
6
|
+
if (unsupportedExtensions.length) {
|
|
7
|
+
result = `В accept переданы неподдерживаемые расширения: ${unsupportedExtensions.join(', ')}`;
|
|
8
|
+
}
|
|
9
|
+
return result;
|
|
10
|
+
};
|
|
@@ -10,11 +10,13 @@ import { rulePipe } from '../../utils/rulePipe';
|
|
|
10
10
|
import { toArray } from '../../utils/toArray';
|
|
11
11
|
import { useDnD } from '../useDnD';
|
|
12
12
|
import { useUploadFiles } from '../useUploadFiles';
|
|
13
|
+
import { usePrepareAccept } from './hooks';
|
|
13
14
|
export const useFileUploader = ({ value, isDisabled, isMultiple, accept, restrictions = [], maxFileSize, maxFileCount = 1, // для случая, когда isMultiple=false
|
|
14
15
|
inputRef, notify, onChange, onUploadFile, onDeleteFile, name, isError, onView, generateDownloadLink, placeholder, helperText, label, className, getErrorMessage, }) => {
|
|
15
16
|
const inputId = useId();
|
|
16
17
|
const [deletingFileId, setDeletingFileId] = useState(null);
|
|
17
18
|
const { generateId } = useGenerateLocalId();
|
|
19
|
+
const acceptMeta = usePrepareAccept(accept);
|
|
18
20
|
// Преобразуем value к массиву
|
|
19
21
|
const files = useMemo(() => toArray(value), [value]);
|
|
20
22
|
// true, если достигли лимита по кол-ву файлов при isMultiple=true
|
|
@@ -22,7 +24,7 @@ inputRef, notify, onChange, onUploadFile, onDeleteFile, name, isError, onView, g
|
|
|
22
24
|
const isVisibleAddFile = isMultiple ? !isLimitMaxFileCount : !files.length;
|
|
23
25
|
const isVisibleFileList = Boolean(files.length);
|
|
24
26
|
const restrict = (file) => {
|
|
25
|
-
return rulePipe(restrictFileMaxSize(formatFileSizeToView, maxFileSize), restrictFileType(
|
|
27
|
+
return rulePipe(restrictFileMaxSize(formatFileSizeToView, maxFileSize), restrictFileType(acceptMeta), ...restrictions)(file);
|
|
26
28
|
};
|
|
27
29
|
const declensionFile = declensionOfWords(['файл', 'файла', 'файлов']);
|
|
28
30
|
const declensionAdded = declensionOfWords([
|
|
@@ -1,20 +1,11 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type LazyExoticComponent, type ReactElement } from 'react';
|
|
2
2
|
import { type PdfViewerProps } from '../../../PdfViewer';
|
|
3
|
-
import { type
|
|
4
|
-
export type UsePreviewFileUploaderParams = {
|
|
5
|
-
value: UploadFile | null | undefined;
|
|
6
|
-
/**
|
|
7
|
-
* Название класса, применяется к корневому компоненту
|
|
8
|
-
*/
|
|
9
|
-
className?: string;
|
|
10
|
-
/**
|
|
11
|
-
* Название поля
|
|
12
|
-
*/
|
|
13
|
-
name?: string;
|
|
3
|
+
import { type FileUploaderProps, type UploadFile } from '../../FileUploader';
|
|
4
|
+
export type UsePreviewFileUploaderParams = Pick<FileUploaderProps, 'className' | 'name' | 'label' | 'maxFileSize' | 'isDisabled' | 'isError' | 'helperText' | 'restrictions' | 'placeholder' | 'inputRef' | 'notify' | 'generateDownloadLink' | 'onUploadFile' | 'onDeleteFile' | 'onView' | 'getErrorMessage'> & {
|
|
14
5
|
/**
|
|
15
|
-
*
|
|
6
|
+
* Значение
|
|
16
7
|
*/
|
|
17
|
-
|
|
8
|
+
value: UploadFile | null | undefined;
|
|
18
9
|
/**
|
|
19
10
|
* Массив разрешенных расширений файлов и MIME-типов
|
|
20
11
|
*
|
|
@@ -29,87 +20,18 @@ export type UsePreviewFileUploaderParams = {
|
|
|
29
20
|
* accept={['.jpg', 'image/png', 'application/pdf']}
|
|
30
21
|
*/
|
|
31
22
|
accept?: string[];
|
|
32
|
-
/**
|
|
33
|
-
* Максимальный размер файла в байтах
|
|
34
|
-
*/
|
|
35
|
-
maxFileSize: number;
|
|
36
|
-
/**
|
|
37
|
-
* Если true, компонент будет недоступен для взаимодействия
|
|
38
|
-
*/
|
|
39
|
-
isDisabled?: boolean;
|
|
40
|
-
/**
|
|
41
|
-
* Флаг состояния ошибки
|
|
42
|
-
*/
|
|
43
|
-
isError?: boolean;
|
|
44
|
-
/**
|
|
45
|
-
* Вспомогательный текст
|
|
46
|
-
*/
|
|
47
|
-
helperText?: ReactNode;
|
|
48
|
-
/**
|
|
49
|
-
* Массив функций для дополнительной валидации файлов, применяется к каждому файлу
|
|
50
|
-
*/
|
|
51
|
-
restrictions?: RestrictionFn[];
|
|
52
|
-
/**
|
|
53
|
-
* Вспомогательный текст
|
|
54
|
-
*/
|
|
55
|
-
placeholder?: string;
|
|
56
23
|
/**
|
|
57
24
|
* Кастомное изображение для placeholder. Дефолтное берется из configProvider, если было прокинуто
|
|
58
25
|
*/
|
|
59
26
|
placeholderImgSrc?: string;
|
|
60
27
|
/**
|
|
61
|
-
*
|
|
62
|
-
*/
|
|
63
|
-
inputRef?: RefObject<HTMLInputElement>;
|
|
64
|
-
/**
|
|
65
|
-
* Объект с методами для отображения уведомлений
|
|
66
|
-
* @remarks
|
|
67
|
-
* Используется для показа системных уведомлений при загрузке файлов
|
|
68
|
-
*/
|
|
69
|
-
notify: FileUploaderNotify;
|
|
70
|
-
/**
|
|
71
|
-
* Функция для генерации ссылки на скачивание/просмотр файла
|
|
72
|
-
* @param fileId - Идентификатор файла
|
|
73
|
-
* @param file - Объект файла
|
|
74
|
-
* @param fileUrl - URL файла, если он уже загружен
|
|
75
|
-
* @returns Строка с URL для скачивания/просмотра файла
|
|
76
|
-
* @example
|
|
77
|
-
* generateDownloadLink: (fileId, file, fileUrl) => {
|
|
78
|
-
* return fileUrl || `/api/files/${fileId}`;
|
|
79
|
-
* }
|
|
80
|
-
*/
|
|
81
|
-
generateDownloadLink?: (fileId: FileId, file?: File, fileUrl?: string) => string;
|
|
82
|
-
/**
|
|
83
|
-
* Функция загрузки файлов на сервер
|
|
84
|
-
* @param fileId - Идентификатор файла
|
|
85
|
-
* @param file - Объект файла для загрузки
|
|
86
|
-
* @param options - Опции для управления загрузкой
|
|
87
|
-
* @param options.signal - AbortSignal для отмены загрузки файла
|
|
88
|
-
* @param options.setProgress - Функция для обновления прогресса загрузки
|
|
89
|
-
* @returns Promise с данными загруженного файла
|
|
90
|
-
*/
|
|
91
|
-
onUploadFile?: (fileId: FileId, file: File, options: {
|
|
92
|
-
signal: AbortSignal;
|
|
93
|
-
setProgress: (progressFileId: FileId, progressEvent: ProgressEvent) => void;
|
|
94
|
-
}) => Promise<UploadedFileData>;
|
|
95
|
-
/**
|
|
96
|
-
* Обработчик просмотра файла
|
|
97
|
-
* @param fileId - Идентификатор файла
|
|
98
|
-
* @param file - Объект файла
|
|
99
|
-
* @param fileUrl - URL файла, если он уже загружен
|
|
100
|
-
* @remarks
|
|
101
|
-
* Если указан generateDownloadLink, то onView не нужен.
|
|
102
|
-
* Используется если необходимо переопределить стандартное поведение с просмотром в новой вкладке
|
|
103
|
-
* @example
|
|
104
|
-
* onView: (fileId, file, fileUrl) => {
|
|
105
|
-
* openFileInModal({ fileId, file fileUrl });
|
|
106
|
-
* }
|
|
28
|
+
* Скрытие персональных данных от инструментов мониторинга
|
|
107
29
|
*/
|
|
108
|
-
|
|
30
|
+
isHidePersonalData?: boolean;
|
|
109
31
|
/**
|
|
110
|
-
*
|
|
32
|
+
* Компонент для отображения превью pdf-файлов
|
|
111
33
|
*/
|
|
112
|
-
|
|
34
|
+
PdfViewer?: ((props: PdfViewerProps) => ReactElement) | LazyExoticComponent<(props: PdfViewerProps) => ReactElement>;
|
|
113
35
|
/**
|
|
114
36
|
* Функция, вызываемая при изменении списка файлов (добавление/удаление)
|
|
115
37
|
* @param value - Объект загруженного файла или null при удалении
|
|
@@ -121,41 +43,32 @@ export type UsePreviewFileUploaderParams = {
|
|
|
121
43
|
* - При обновлении информации о файле после успешной загрузки
|
|
122
44
|
*/
|
|
123
45
|
onChange: (value: UploadFile | null) => void;
|
|
124
|
-
/**
|
|
125
|
-
* Функция, вызываемая при удалении файла.
|
|
126
|
-
* Используется для сбора идентификаторов файлов, помеченных на удаление.
|
|
127
|
-
* Фактическое удаление файлов с сервера должно выполняться только при подтверждении формы,
|
|
128
|
-
* чтобы избежать потери данных при отмене действия или перезагрузке страницы.
|
|
129
|
-
*/
|
|
130
|
-
onDeleteFile?: (fileId: FileId) => Promise<void>;
|
|
131
|
-
/**
|
|
132
|
-
* Скрытие персональных данных от инструментов мониторинга
|
|
133
|
-
*/
|
|
134
|
-
isHidePersonalData?: boolean;
|
|
135
|
-
/**
|
|
136
|
-
* Компонент для отображения превью pdf-файлов
|
|
137
|
-
*/
|
|
138
|
-
PdfViewer?: ((props: PdfViewerProps) => ReactElement) | LazyExoticComponent<(props: PdfViewerProps) => ReactElement>;
|
|
139
46
|
};
|
|
140
|
-
export declare const usePreviewFileUploader: ({
|
|
47
|
+
export declare const usePreviewFileUploader: ({ placeholderImgSrc, isHidePersonalData, PdfViewer, accept, ...props }: UsePreviewFileUploaderParams) => {
|
|
141
48
|
dropZoneProps: {
|
|
49
|
+
className: string;
|
|
50
|
+
hintPlaceholderProps: {
|
|
51
|
+
placeholderImgSrc: string | undefined;
|
|
52
|
+
isMultiple: boolean | undefined;
|
|
53
|
+
accept: string[];
|
|
54
|
+
maxFileCount: number;
|
|
55
|
+
maxFileSize: number;
|
|
56
|
+
placeholder: string | undefined;
|
|
57
|
+
};
|
|
58
|
+
isLimitMaxFileCount: boolean;
|
|
59
|
+
maxFileCount: number;
|
|
142
60
|
isVisibleAddFile: boolean;
|
|
143
61
|
isVisibleFileList: boolean;
|
|
144
62
|
fileInputProps: {
|
|
145
63
|
id: string | undefined;
|
|
146
64
|
accept: string;
|
|
147
|
-
ref: RefObject<HTMLInputElement> | undefined;
|
|
65
|
+
ref: import("react").RefObject<HTMLInputElement> | undefined;
|
|
148
66
|
value: string;
|
|
149
|
-
onChange: (event: ChangeEvent<HTMLInputElement>) => void;
|
|
67
|
+
onChange: (event: import("react").ChangeEvent<HTMLInputElement, Element>) => void;
|
|
150
68
|
name: string | undefined;
|
|
69
|
+
isMultiple: boolean | undefined;
|
|
151
70
|
isDisabled: boolean | undefined;
|
|
152
71
|
};
|
|
153
|
-
hintPlaceholderProps: {
|
|
154
|
-
accept: string[] | undefined;
|
|
155
|
-
placeholder: string | undefined;
|
|
156
|
-
placeholderImgSrc: string | undefined;
|
|
157
|
-
maxFileSize: number;
|
|
158
|
-
};
|
|
159
72
|
uploadButtonProps: {
|
|
160
73
|
isDisabled: boolean | undefined;
|
|
161
74
|
htmlFor: string | undefined;
|
|
@@ -164,27 +77,28 @@ export declare const usePreviewFileUploader: ({ value, isDisabled, accept, restr
|
|
|
164
77
|
className: string | undefined;
|
|
165
78
|
label: string | undefined;
|
|
166
79
|
isError: boolean | undefined;
|
|
167
|
-
helperText: ReactNode;
|
|
80
|
+
helperText: import("react").ReactNode;
|
|
168
81
|
};
|
|
169
82
|
onDragLeave: (event: import("react").DragEvent<HTMLElement>) => void;
|
|
170
83
|
onDragOver: (event: import("react").DragEvent<HTMLElement>) => void;
|
|
171
84
|
onDrop: (event: import("react").DragEvent<HTMLElement>) => void;
|
|
172
85
|
isActive: boolean;
|
|
173
86
|
htmlFor: string | undefined;
|
|
174
|
-
className: string;
|
|
175
87
|
isDisabled: boolean | undefined;
|
|
176
88
|
isError: boolean | undefined;
|
|
177
89
|
};
|
|
178
90
|
fileListProps: {
|
|
179
|
-
onDelete: (fileId: FileId) => void;
|
|
180
|
-
onRetry: ((fileId: FileId, file: File) => void) | undefined;
|
|
181
|
-
setErrorStatusFile: (fileId: string, errorMsg: string) => void;
|
|
182
|
-
selfFiles: Record<string, UploadFile & import("../../types").SpecificSelfFileParams>;
|
|
183
|
-
generateDownloadLink: ((fileId: FileId, file?: File, fileUrl?: string) => string) | undefined;
|
|
184
|
-
onView: ((fileId: FileId, file?: File, fileUrl?: string) => void) | undefined;
|
|
185
|
-
files: UploadFile[];
|
|
186
91
|
isHidePersonalData: boolean | undefined;
|
|
187
92
|
PdfViewer: LazyExoticComponent<(props: PdfViewerProps) => ReactElement> | ((props: PdfViewerProps) => ReactElement) | undefined;
|
|
93
|
+
onDelete: (fileId: string) => void;
|
|
94
|
+
onRetry: ((fileId: string, file: File) => void) | undefined;
|
|
95
|
+
onView: ((fileId: string, file?: File | undefined, fileUrl?: string | undefined) => void) | undefined;
|
|
96
|
+
generateDownloadLink: ((fileId: string, file?: File | undefined, fileUrl?: string | undefined) => string) | undefined;
|
|
97
|
+
isMultiple: boolean | undefined;
|
|
98
|
+
files: UploadFile[];
|
|
99
|
+
selfFiles: Record<string, UploadFile & import("../../types").SpecificSelfFileParams>;
|
|
100
|
+
setErrorStatusFile: (fileId: string, errorMsg: string) => void;
|
|
101
|
+
getErrorMessage: ((fileId: string, error: Error) => string) | undefined;
|
|
188
102
|
deletingFileId: string | null;
|
|
189
103
|
};
|
|
190
104
|
};
|
|
@@ -1,151 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import { compareFile } from '../../utils/compareFile';
|
|
9
|
-
import { rulePipe } from '../../utils/rulePipe';
|
|
10
|
-
import { toArray } from '../../utils/toArray';
|
|
11
|
-
import { useDnD } from '../useDnD';
|
|
12
|
-
import { useUploadFiles } from '../useUploadFiles';
|
|
13
|
-
export const usePreviewFileUploader = ({ value, isDisabled, accept, restrictions = [], maxFileSize, inputRef, notify, onChange, onUploadFile, onDeleteFile, label, isError, generateDownloadLink, onView, getErrorMessage, name, helperText, className, placeholder, placeholderImgSrc, isHidePersonalData, PdfViewer, }) => {
|
|
14
|
-
const inputId = useId();
|
|
15
|
-
const [deletingFileId, setDeletingFileId] = useState(null);
|
|
16
|
-
const { generateId } = useGenerateLocalId();
|
|
17
|
-
// Преобразуем value к массиву
|
|
18
|
-
const files = useMemo(() => toArray(value), [value]);
|
|
19
|
-
const isVisibleAddFile = !files.length;
|
|
20
|
-
const isVisibleFileList = Boolean(files.length);
|
|
21
|
-
const restrict = (file) => {
|
|
22
|
-
return rulePipe(restrictFileMaxSize(formatFileSizeToView, maxFileSize), ...(accept ? [restrictFileType(accept)] : []), ...restrictions)(file);
|
|
23
|
-
};
|
|
24
|
-
const declensionFile = declensionOfWords(['файл', 'файла', 'файлов']);
|
|
25
|
-
const declensionAdded = declensionOfWords([
|
|
26
|
-
'Добавлен',
|
|
27
|
-
'Добавлено',
|
|
28
|
-
'Добавлено',
|
|
29
|
-
]);
|
|
30
|
-
const notifyWarning = (addedFilesLength, droppedFilesLength) => {
|
|
31
|
-
notify?.warning(`${declensionAdded(addedFilesLength)} ${addedFilesLength} ${declensionFile(addedFilesLength)} из ${droppedFilesLength}`, {
|
|
32
|
-
content: 'Вы превысили максимально допустимое количество файлов для загрузки',
|
|
33
|
-
});
|
|
34
|
-
};
|
|
35
|
-
const getInitialStatusUploadFile = (error) => {
|
|
36
|
-
if (error) {
|
|
37
|
-
return {
|
|
38
|
-
...DEFAULT_FILE_STATUS,
|
|
39
|
-
isRestrictionError: Boolean(error),
|
|
40
|
-
errorMsg: error.message,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
return DEFAULT_FILE_STATUS;
|
|
44
|
-
};
|
|
45
|
-
const { enqueueFiles, refetchFile, setErrorStatusFile, selfFiles } = useUploadFiles({
|
|
46
|
-
files,
|
|
47
|
-
onChange,
|
|
48
|
-
onUploadFile,
|
|
49
|
-
getErrorMessage,
|
|
50
|
-
});
|
|
51
|
-
const handleChange = (event) => {
|
|
52
|
-
// Преобразуем к массиву и удаляем дубликаты
|
|
53
|
-
const droppedFiles = Array.from(event.target.files || []).filter((droppedFile) => !files.find((file) => compareFile(droppedFile, file)));
|
|
54
|
-
const addedFiles = droppedFiles
|
|
55
|
-
.slice(0, 1 - files.length)
|
|
56
|
-
.reduce((acc, droppedFile) => {
|
|
57
|
-
const error = restrict(droppedFile);
|
|
58
|
-
return [
|
|
59
|
-
// biome-ignore lint/performance/noAccumulatingSpread: <>
|
|
60
|
-
...acc,
|
|
61
|
-
{
|
|
62
|
-
id: `${inputId}${generateId()}`,
|
|
63
|
-
name: droppedFile.name,
|
|
64
|
-
type: droppedFile.type,
|
|
65
|
-
size: droppedFile.size,
|
|
66
|
-
file: droppedFile,
|
|
67
|
-
status: getInitialStatusUploadFile(error),
|
|
68
|
-
},
|
|
69
|
-
];
|
|
70
|
-
}, []);
|
|
71
|
-
onChange(addedFiles[0]);
|
|
72
|
-
if (addedFiles.length < droppedFiles.length) {
|
|
73
|
-
notifyWarning(addedFiles.length, droppedFiles.length);
|
|
74
|
-
}
|
|
75
|
-
enqueueFiles(addedFiles);
|
|
76
|
-
};
|
|
77
|
-
const { isDragActive, ...dropZoneActions } = useDnD({
|
|
78
|
-
isDisabled,
|
|
79
|
-
onChange: (droppedFiles) => {
|
|
80
|
-
handleChange({
|
|
81
|
-
target: { files: droppedFiles },
|
|
82
|
-
});
|
|
83
|
-
},
|
|
1
|
+
import { previewFileUploaderClassnames } from '../../constants';
|
|
2
|
+
import { useFileUploader } from '../useFileUploader';
|
|
3
|
+
export const usePreviewFileUploader = ({ placeholderImgSrc, isHidePersonalData, PdfViewer, accept = [], ...props }) => {
|
|
4
|
+
const { dropZoneProps, fileListProps } = useFileUploader({
|
|
5
|
+
...props,
|
|
6
|
+
accept,
|
|
7
|
+
isMultiple: false,
|
|
84
8
|
});
|
|
85
|
-
const handleDelete = (fileId) => {
|
|
86
|
-
const deleteFile = () => onChange(null);
|
|
87
|
-
if (!onDeleteFile) {
|
|
88
|
-
return deleteFile();
|
|
89
|
-
}
|
|
90
|
-
setDeletingFileId(fileId);
|
|
91
|
-
onDeleteFile(fileId)
|
|
92
|
-
.then(deleteFile)
|
|
93
|
-
.catch(() => notify.error('Ошибка удаления файла'))
|
|
94
|
-
.finally(() => setDeletingFileId(null));
|
|
95
|
-
};
|
|
96
|
-
const getHandlerOnRetry = () => {
|
|
97
|
-
if (onUploadFile) {
|
|
98
|
-
return (fileId, file) => refetchFile({ id: fileId, file });
|
|
99
|
-
}
|
|
100
|
-
return undefined;
|
|
101
|
-
};
|
|
102
9
|
return {
|
|
103
10
|
dropZoneProps: {
|
|
104
|
-
|
|
105
|
-
htmlFor: inputId,
|
|
11
|
+
...dropZoneProps,
|
|
106
12
|
className: previewFileUploaderClassnames.dropzone,
|
|
107
|
-
isDisabled,
|
|
108
|
-
isError,
|
|
109
|
-
...dropZoneActions,
|
|
110
|
-
isVisibleAddFile,
|
|
111
|
-
isVisibleFileList,
|
|
112
|
-
fileInputProps: {
|
|
113
|
-
id: inputId,
|
|
114
|
-
accept: accept?.join() ?? '',
|
|
115
|
-
ref: inputRef,
|
|
116
|
-
value: '',
|
|
117
|
-
onChange: handleChange,
|
|
118
|
-
name,
|
|
119
|
-
isDisabled,
|
|
120
|
-
},
|
|
121
13
|
hintPlaceholderProps: {
|
|
122
|
-
|
|
123
|
-
placeholder,
|
|
14
|
+
...dropZoneProps.hintPlaceholderProps,
|
|
124
15
|
placeholderImgSrc,
|
|
125
|
-
maxFileSize,
|
|
126
|
-
},
|
|
127
|
-
uploadButtonProps: {
|
|
128
|
-
isDisabled,
|
|
129
|
-
htmlFor: inputId,
|
|
130
|
-
},
|
|
131
|
-
containerProps: {
|
|
132
|
-
className,
|
|
133
|
-
label,
|
|
134
|
-
isError,
|
|
135
|
-
helperText,
|
|
136
16
|
},
|
|
137
17
|
},
|
|
138
18
|
fileListProps: {
|
|
139
|
-
|
|
140
|
-
onRetry: getHandlerOnRetry(),
|
|
141
|
-
setErrorStatusFile,
|
|
142
|
-
selfFiles,
|
|
143
|
-
generateDownloadLink,
|
|
144
|
-
onView,
|
|
145
|
-
files,
|
|
19
|
+
...fileListProps,
|
|
146
20
|
isHidePersonalData,
|
|
147
21
|
PdfViewer,
|
|
148
|
-
deletingFileId,
|
|
149
22
|
},
|
|
150
23
|
};
|
|
151
24
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { RestrictionFn } from '../../types';
|
|
2
|
-
export declare const restrictFileType: (
|
|
1
|
+
import type { AcceptMeta, RestrictionFn } from '../../types';
|
|
2
|
+
export declare const restrictFileType: (acceptMeta: AcceptMeta) => RestrictionFn;
|