@skbkontur/react-ui 3.9.2-radiogroup.2 → 3.10.0-fileuploader.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/cjs/components/FileUploader/FileUploader.d.ts +31 -0
- package/cjs/components/FileUploader/FileUploader.js +265 -0
- package/cjs/components/FileUploader/FileUploader.js.map +1 -0
- package/cjs/components/FileUploader/FileUploader.md +67 -0
- package/cjs/components/FileUploader/FileUploader.styles.d.ts +19 -0
- package/cjs/components/FileUploader/FileUploader.styles.js +159 -0
- package/cjs/components/FileUploader/FileUploader.styles.js.map +1 -0
- package/cjs/components/FileUploader/index.d.ts +4 -0
- package/cjs/components/FileUploader/index.js +4 -0
- package/cjs/components/FileUploader/index.js.map +1 -0
- package/cjs/components/FileUploader/locale/index.d.ts +4 -0
- package/cjs/components/FileUploader/locale/index.js +11 -0
- package/cjs/components/FileUploader/locale/index.js.map +1 -0
- package/cjs/components/FileUploader/locale/locales/en.d.ts +2 -0
- package/cjs/components/FileUploader/locale/locales/en.js +7 -0
- package/cjs/components/FileUploader/locale/locales/en.js.map +1 -0
- package/cjs/components/FileUploader/locale/locales/ru.d.ts +2 -0
- package/cjs/components/FileUploader/locale/locales/ru.js +7 -0
- package/cjs/components/FileUploader/locale/locales/ru.js.map +1 -0
- package/cjs/components/FileUploader/locale/types.d.ts +6 -0
- package/cjs/components/FileUploader/locale/types.js +1 -0
- package/cjs/components/FileUploader/locale/types.js.map +1 -0
- package/cjs/components/RadioGroup/RadioGroup.d.ts +23 -0
- package/cjs/components/RadioGroup/RadioGroup.js +25 -1
- package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
- package/cjs/components/SidePage/SidePage.d.ts +0 -1
- package/cjs/components/SidePage/SidePage.js +1 -3
- package/cjs/components/SidePage/SidePage.js.map +1 -1
- package/cjs/hooks/useDrop.d.ts +11 -0
- package/cjs/hooks/useDrop.js +75 -0
- package/cjs/hooks/useDrop.js.map +1 -0
- package/cjs/hooks/useMemoObject.d.ts +1 -0
- package/cjs/hooks/useMemoObject.js +5 -0
- package/cjs/hooks/useMemoObject.js.map +1 -0
- package/cjs/index.d.ts +1 -0
- package/cjs/index.js +1 -0
- package/cjs/index.js.map +1 -1
- package/cjs/internal/FileUploaderControl/FileUploaderControlContext.d.ts +12 -0
- package/cjs/internal/FileUploaderControl/FileUploaderControlContext.js +16 -0
- package/cjs/internal/FileUploaderControl/FileUploaderControlContext.js.map +1 -0
- package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +14 -0
- package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js +124 -0
- package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js.map +1 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +10 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +178 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +1 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.d.ts +11 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.js +66 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.js.map +1 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +4 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +24 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +1 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.d.ts +4 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.js +17 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.js.map +1 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFileValidationResult.d.ts +7 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFileValidationResult.js +16 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFileValidationResult.js.map +1 -0
- package/cjs/internal/FileUploaderControl/fileUtils.d.ts +14 -0
- package/cjs/internal/FileUploaderControl/fileUtils.js +26 -0
- package/cjs/internal/FileUploaderControl/fileUtils.js.map +1 -0
- package/cjs/internal/FileUploaderControl/hooks/useControlLocale.d.ts +1 -0
- package/cjs/internal/FileUploaderControl/hooks/useControlLocale.js +4 -0
- package/cjs/internal/FileUploaderControl/hooks/useControlLocale.js.map +1 -0
- package/cjs/internal/FileUploaderControl/hooks/useUpload.d.ts +3 -0
- package/cjs/internal/FileUploaderControl/hooks/useUpload.js +51 -0
- package/cjs/internal/FileUploaderControl/hooks/useUpload.js.map +1 -0
- package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.d.ts +3 -0
- package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js +18 -0
- package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js.map +1 -0
- package/cjs/internal/TextWidthHelper/TextWidthHelper.d.ts +15 -0
- package/cjs/internal/TextWidthHelper/TextWidthHelper.js +34 -0
- package/cjs/internal/TextWidthHelper/TextWidthHelper.js.map +1 -0
- package/cjs/internal/TextWidthHelper/TextWidthHelper.styles.d.ts +4 -0
- package/cjs/internal/TextWidthHelper/TextWidthHelper.styles.js +23 -0
- package/cjs/internal/TextWidthHelper/TextWidthHelper.styles.js.map +1 -0
- package/cjs/internal/ThemePlayground/Playground.d.ts +1 -0
- package/cjs/internal/ThemePlayground/Playground.js +11 -1
- package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
- package/cjs/internal/ThemePlayground/darkTheme.d.ts +15 -0
- package/cjs/internal/ThemePlayground/darkTheme.js +25 -1
- package/cjs/internal/ThemePlayground/darkTheme.js.map +1 -1
- package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/cjs/internal/icons/16px/index.d.ts +3 -0
- package/cjs/internal/icons/16px/index.js +38 -2
- package/cjs/internal/icons/16px/index.js.map +1 -1
- package/cjs/internal/themes/DefaultTheme.d.ts +23 -0
- package/cjs/internal/themes/DefaultTheme.js +64 -1
- package/cjs/internal/themes/DefaultTheme.js.map +1 -1
- package/cjs/lib/guidUtils.d.ts +1 -0
- package/cjs/lib/guidUtils.js +5 -0
- package/cjs/lib/guidUtils.js.map +1 -0
- package/cjs/lib/locale/types.d.ts +2 -0
- package/cjs/lib/locale/types.js +2 -0
- package/cjs/lib/locale/types.js.map +1 -1
- package/cjs/lib/locale/useLocaleForControl.d.ts +3 -0
- package/cjs/lib/locale/useLocaleForControl.js +14 -0
- package/cjs/lib/locale/useLocaleForControl.js.map +1 -0
- package/cjs/lib/stringUtils.d.ts +1 -0
- package/cjs/lib/stringUtils.js +13 -0
- package/cjs/lib/stringUtils.js.map +1 -0
- package/cjs/lib/utils.d.ts +1 -0
- package/cjs/lib/utils.js +20 -2
- package/cjs/lib/utils.js.map +1 -1
- package/components/FileUploader/FileUploader/FileUploader.js +241 -0
- package/components/FileUploader/FileUploader/FileUploader.js.map +1 -0
- package/components/FileUploader/FileUploader/package.json +6 -0
- package/components/FileUploader/FileUploader.d.ts +31 -0
- package/components/FileUploader/FileUploader.md +67 -0
- package/components/FileUploader/FileUploader.styles/FileUploader.styles.js +56 -0
- package/components/FileUploader/FileUploader.styles/FileUploader.styles.js.map +1 -0
- package/components/FileUploader/FileUploader.styles/package.json +6 -0
- package/components/FileUploader/FileUploader.styles.d.ts +19 -0
- package/components/FileUploader/index/index.js +3 -0
- package/components/FileUploader/index/index.js.map +1 -0
- package/components/FileUploader/index/package.json +6 -0
- package/components/FileUploader/index.d.ts +4 -0
- package/components/FileUploader/locale/index/index.js +8 -0
- package/components/FileUploader/locale/index/index.js.map +1 -0
- package/components/FileUploader/locale/index/package.json +6 -0
- package/components/FileUploader/locale/index.d.ts +4 -0
- package/components/FileUploader/locale/locales/en/en.js +6 -0
- package/components/FileUploader/locale/locales/en/en.js.map +1 -0
- package/components/FileUploader/locale/locales/en/package.json +6 -0
- package/components/FileUploader/locale/locales/en.d.ts +2 -0
- package/components/FileUploader/locale/locales/ru/package.json +6 -0
- package/components/FileUploader/locale/locales/ru/ru.js +6 -0
- package/components/FileUploader/locale/locales/ru/ru.js.map +1 -0
- package/components/FileUploader/locale/locales/ru.d.ts +2 -0
- package/components/FileUploader/locale/package.json +6 -0
- package/components/FileUploader/locale/types/package.json +6 -0
- package/components/FileUploader/locale/types/types.js +0 -0
- package/components/FileUploader/locale/types/types.js.map +1 -0
- package/components/FileUploader/locale/types.d.ts +6 -0
- package/components/FileUploader/package.json +6 -0
- package/components/RadioGroup/RadioGroup/RadioGroup.js +13 -0
- package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
- package/components/RadioGroup/RadioGroup.d.ts +23 -0
- package/components/SidePage/SidePage/SidePage.js +0 -2
- package/components/SidePage/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePage.d.ts +0 -1
- package/hooks/useDrop/package.json +6 -0
- package/hooks/useDrop/useDrop.js +57 -0
- package/hooks/useDrop/useDrop.js.map +1 -0
- package/hooks/useDrop.d.ts +11 -0
- package/hooks/useMemoObject/package.json +6 -0
- package/hooks/useMemoObject/useMemoObject.js +6 -0
- package/hooks/useMemoObject/useMemoObject.js.map +1 -0
- package/hooks/useMemoObject.d.ts +1 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/internal/FileUploaderControl/FileUploaderControlContext/FileUploaderControlContext.js +2 -0
- package/internal/FileUploaderControl/FileUploaderControlContext/FileUploaderControlContext.js.map +1 -0
- package/internal/FileUploaderControl/FileUploaderControlContext/package.json +6 -0
- package/internal/FileUploaderControl/FileUploaderControlContext.d.ts +12 -0
- package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js +91 -0
- package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js.map +1 -0
- package/internal/FileUploaderControl/FileUploaderControlProvider/package.json +6 -0
- package/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +14 -0
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +172 -0
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +1 -0
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/package.json +6 -0
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +10 -0
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles/FileUploaderFile.styles.js +32 -0
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles/FileUploaderFile.styles.js.map +1 -0
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles/package.json +6 -0
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.d.ts +11 -0
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js +23 -0
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +1 -0
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/package.json +6 -0
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +4 -0
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles/FileUploaderFileList.styles.js +11 -0
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles/FileUploaderFileList.styles.js.map +1 -0
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles/package.json +6 -0
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.d.ts +4 -0
- package/internal/FileUploaderControl/FileUploaderFileValidationResult/FileUploaderFileValidationResult.js +18 -0
- package/internal/FileUploaderControl/FileUploaderFileValidationResult/FileUploaderFileValidationResult.js.map +1 -0
- package/internal/FileUploaderControl/FileUploaderFileValidationResult/package.json +6 -0
- package/internal/FileUploaderControl/FileUploaderFileValidationResult.d.ts +7 -0
- package/internal/FileUploaderControl/fileUtils/fileUtils.js +19 -0
- package/internal/FileUploaderControl/fileUtils/fileUtils.js.map +1 -0
- package/internal/FileUploaderControl/fileUtils/package.json +6 -0
- package/internal/FileUploaderControl/fileUtils.d.ts +14 -0
- package/internal/FileUploaderControl/hooks/useControlLocale/package.json +6 -0
- package/internal/FileUploaderControl/hooks/useControlLocale/useControlLocale.js +5 -0
- package/internal/FileUploaderControl/hooks/useControlLocale/useControlLocale.js.map +1 -0
- package/internal/FileUploaderControl/hooks/useControlLocale.d.ts +1 -0
- package/internal/FileUploaderControl/hooks/useUpload/package.json +6 -0
- package/internal/FileUploaderControl/hooks/useUpload/useUpload.js +56 -0
- package/internal/FileUploaderControl/hooks/useUpload/useUpload.js.map +1 -0
- package/internal/FileUploaderControl/hooks/useUpload.d.ts +3 -0
- package/internal/FileUploaderControl/withFileUploaderControlProvider/package.json +6 -0
- package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js +16 -0
- package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js.map +1 -0
- package/internal/FileUploaderControl/withFileUploaderControlProvider.d.ts +3 -0
- package/internal/TextWidthHelper/TextWidthHelper/TextWidthHelper.js +51 -0
- package/internal/TextWidthHelper/TextWidthHelper/TextWidthHelper.js.map +1 -0
- package/internal/TextWidthHelper/TextWidthHelper/package.json +6 -0
- package/internal/TextWidthHelper/TextWidthHelper.d.ts +15 -0
- package/internal/TextWidthHelper/TextWidthHelper.styles/TextWidthHelper.styles.js +14 -0
- package/internal/TextWidthHelper/TextWidthHelper.styles/TextWidthHelper.styles.js.map +1 -0
- package/internal/TextWidthHelper/TextWidthHelper.styles/package.json +6 -0
- package/internal/TextWidthHelper/TextWidthHelper.styles.d.ts +4 -0
- package/internal/ThemePlayground/Playground/Playground.js +11 -1
- package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
- package/internal/ThemePlayground/Playground.d.ts +1 -0
- package/internal/ThemePlayground/darkTheme/darkTheme.js +26 -1
- package/internal/ThemePlayground/darkTheme/darkTheme.js.map +1 -1
- package/internal/ThemePlayground/darkTheme.d.ts +15 -0
- package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/internal/icons/16px/index/index.js +27 -0
- package/internal/icons/16px/index/index.js.map +1 -1
- package/internal/icons/16px/index.d.ts +3 -0
- package/internal/themes/DefaultTheme/DefaultTheme.js +67 -0
- package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
- package/internal/themes/DefaultTheme.d.ts +23 -0
- package/lib/guidUtils/guidUtils.js +4 -0
- package/lib/guidUtils/guidUtils.js.map +1 -0
- package/lib/guidUtils/package.json +6 -0
- package/lib/guidUtils.d.ts +1 -0
- package/lib/locale/types/types.js.map +1 -1
- package/lib/locale/types.d.ts +2 -0
- package/lib/locale/useLocaleForControl/package.json +6 -0
- package/lib/locale/useLocaleForControl/useLocaleForControl.js +12 -0
- package/lib/locale/useLocaleForControl/useLocaleForControl.js.map +1 -0
- package/lib/locale/useLocaleForControl.d.ts +3 -0
- package/lib/stringUtils/package.json +6 -0
- package/lib/stringUtils/stringUtils.js +12 -0
- package/lib/stringUtils/stringUtils.js.map +1 -0
- package/lib/stringUtils.d.ts +1 -0
- package/lib/utils/utils.js +18 -0
- package/lib/utils/utils.js.map +1 -1
- package/lib/utils.d.ts +1 -0
- package/package.json +1 -1
- package/cjs/lib/getDisplayName.d.ts +0 -3
- package/cjs/lib/getDisplayName.js +0 -9
- package/cjs/lib/getDisplayName.js.map +0 -1
- package/cjs/lib/withClassWrapper.d.ts +0 -68
- package/cjs/lib/withClassWrapper.js +0 -59
- package/cjs/lib/withClassWrapper.js.map +0 -1
- package/lib/getDisplayName/getDisplayName.js +0 -3
- package/lib/getDisplayName/getDisplayName.js.map +0 -1
- package/lib/getDisplayName/package.json +0 -6
- package/lib/getDisplayName.d.ts +0 -3
- package/lib/withClassWrapper/package.json +0 -6
- package/lib/withClassWrapper/withClassWrapper.js +0 -70
- package/lib/withClassWrapper/withClassWrapper.js.map +0 -1
- package/lib/withClassWrapper.d.ts +0 -68
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.FileUploaderControlProvider = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _react = _interopRequireWildcard(require("react"));
|
|
2
|
+
|
|
3
|
+
var _useMemoObject = require("../../hooks/useMemoObject");
|
|
4
|
+
|
|
5
|
+
var _fileUtils = require("./fileUtils");
|
|
6
|
+
var _FileUploaderControlContext = require("./FileUploaderControlContext");
|
|
7
|
+
var _FileUploaderFileValidationResult = require("./FileUploaderFileValidationResult");
|
|
8
|
+
var _useControlLocale = require("./hooks/useControlLocale");
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
var updateFile = function updateFile(
|
|
20
|
+
files,
|
|
21
|
+
fileId,
|
|
22
|
+
getFileUpdatedProps)
|
|
23
|
+
{
|
|
24
|
+
var fileIndex = files.findIndex(function (file) {return file.id === fileId;});
|
|
25
|
+
if (fileIndex === -1) return files;
|
|
26
|
+
|
|
27
|
+
var newFiles = [].concat(files);
|
|
28
|
+
var file = files[fileIndex];
|
|
29
|
+
|
|
30
|
+
var updatedProps = getFileUpdatedProps(file);
|
|
31
|
+
|
|
32
|
+
newFiles[fileIndex] = (0, _extends2.default)({},
|
|
33
|
+
file,
|
|
34
|
+
updatedProps);
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
return newFiles;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
var FileUploaderControlProvider = function FileUploaderControlProvider(props) {var
|
|
41
|
+
children = props.children,onValueChange = props.onValueChange,onRemove = props.onRemove,onSelect = props.onSelect;var _useState =
|
|
42
|
+
|
|
43
|
+
(0, _react.useState)([]),files = _useState[0],setFiles = _useState[1];
|
|
44
|
+
var locale = (0, _useControlLocale.useControlLocale)();
|
|
45
|
+
|
|
46
|
+
var setFileStatus = (0, _react.useCallback)(
|
|
47
|
+
function (fileId, status) {
|
|
48
|
+
setFiles(function (files) {
|
|
49
|
+
var newFiles = updateFile(files, fileId, function (file) {
|
|
50
|
+
return {
|
|
51
|
+
status: status,
|
|
52
|
+
validationResult:
|
|
53
|
+
status === _fileUtils.FileUploaderFileStatus.Error ?
|
|
54
|
+
_FileUploaderFileValidationResult.FileUploaderFileValidationResult.error(locale.requestErrorText) :
|
|
55
|
+
file.validationResult };
|
|
56
|
+
|
|
57
|
+
});
|
|
58
|
+
onValueChange == null ? void 0 : onValueChange(newFiles);
|
|
59
|
+
return newFiles;
|
|
60
|
+
});
|
|
61
|
+
},
|
|
62
|
+
[locale, onValueChange]);
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
var handleExternalSetFiles = (0, _react.useCallback)(
|
|
66
|
+
function (files) {
|
|
67
|
+
onSelect == null ? void 0 : onSelect(files);
|
|
68
|
+
setFiles(function (state) {
|
|
69
|
+
var newFiles = [].concat(state, files);
|
|
70
|
+
onValueChange == null ? void 0 : onValueChange(newFiles);
|
|
71
|
+
return newFiles;
|
|
72
|
+
});
|
|
73
|
+
},
|
|
74
|
+
[onValueChange, onSelect]);
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
var removeFile = (0, _react.useCallback)(
|
|
78
|
+
function (fileId) {
|
|
79
|
+
onRemove == null ? void 0 : onRemove(fileId);
|
|
80
|
+
setFiles(function (state) {
|
|
81
|
+
var newFiles = state.filter(function (file) {return file.id !== fileId;});
|
|
82
|
+
onValueChange == null ? void 0 : onValueChange(newFiles);
|
|
83
|
+
return newFiles;
|
|
84
|
+
});
|
|
85
|
+
},
|
|
86
|
+
[onValueChange, onRemove]);
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
var setFileValidationResult = (0, _react.useCallback)(
|
|
90
|
+
function (fileId, validationResult) {
|
|
91
|
+
setFiles(function (files) {
|
|
92
|
+
var newFiles = updateFile(files, fileId, function () {return { validationResult: validationResult };});
|
|
93
|
+
onValueChange == null ? void 0 : onValueChange(newFiles);
|
|
94
|
+
return newFiles;
|
|
95
|
+
});
|
|
96
|
+
},
|
|
97
|
+
[onValueChange]);
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
var reset = _react.default.useCallback(function () {
|
|
101
|
+
setFiles(function () {
|
|
102
|
+
var newFiles = [];
|
|
103
|
+
onValueChange == null ? void 0 : onValueChange(newFiles);
|
|
104
|
+
return newFiles;
|
|
105
|
+
});
|
|
106
|
+
}, [onValueChange]);
|
|
107
|
+
|
|
108
|
+
return /*#__PURE__*/(
|
|
109
|
+
_react.default.createElement(_FileUploaderControlContext.FileUploaderControlContext.Provider, {
|
|
110
|
+
value: (0, _useMemoObject.useMemoObject)({
|
|
111
|
+
setFileStatus: setFileStatus,
|
|
112
|
+
files: files,
|
|
113
|
+
setFiles: handleExternalSetFiles,
|
|
114
|
+
removeFile: removeFile,
|
|
115
|
+
setFileValidationResult: setFileValidationResult,
|
|
116
|
+
reset: reset }) },
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
children));
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
};exports.FileUploaderControlProvider = FileUploaderControlProvider;
|
|
123
|
+
|
|
124
|
+
FileUploaderControlProvider.displayName = 'FileUploaderControlProvider';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["FileUploaderControlProvider.tsx"],"names":["updateFile","files","fileId","getFileUpdatedProps","fileIndex","findIndex","file","id","newFiles","updatedProps","FileUploaderControlProvider","props","children","onValueChange","onRemove","onSelect","setFiles","locale","setFileStatus","status","validationResult","FileUploaderFileStatus","Error","FileUploaderFileValidationResult","error","requestErrorText","handleExternalSetFiles","state","removeFile","filter","setFileValidationResult","reset","React","useCallback","displayName"],"mappings":"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","sourcesContent":["import React, { PropsWithChildren, useCallback, useState } from 'react';\n\nimport { useMemoObject } from '../../hooks/useMemoObject';\n\nimport { FileUploaderAttachedFile, FileUploaderFileStatus } from './fileUtils';\nimport { FileUploaderControlContext } from './FileUploaderControlContext';\nimport { FileUploaderFileValidationResult } from './FileUploaderFileValidationResult';\nimport { useControlLocale } from './hooks/useControlLocale';\n\nexport interface FileUploaderControlProviderProps {\n /** Срабатывает при выборе файлов */\n onSelect?: (files: FileUploaderAttachedFile[]) => void;\n /** Срабатывает при удалении файла из контрола */\n onRemove?: (fileId: string) => void;\n /** Срабатывает при onSelect, onRemove и других изменениях файлов. В files передает текущее состояние всего списка файлов */\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) return files;\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 = (props: PropsWithChildren<FileUploaderControlProviderProps>) => {\n const { children, onValueChange, onRemove, onSelect } = props;\n\n const [files, setFiles] = useState<FileUploaderAttachedFile[]>([]);\n const locale = useControlLocale();\n\n const setFileStatus = useCallback(\n (fileId: string, status: FileUploaderFileStatus) => {\n setFiles((files) => {\n const newFiles = updateFile(files, fileId, (file) => {\n return {\n status,\n validationResult:\n status === FileUploaderFileStatus.Error\n ? FileUploaderFileValidationResult.error(locale.requestErrorText)\n : file.validationResult,\n };\n });\n onValueChange?.(newFiles);\n return newFiles;\n });\n },\n [locale, onValueChange],\n );\n\n const handleExternalSetFiles = useCallback(\n (files: FileUploaderAttachedFile[]) => {\n onSelect?.(files);\n setFiles((state) => {\n const newFiles = [...state, ...files];\n onValueChange?.(newFiles);\n return newFiles;\n });\n },\n [onValueChange, onSelect],\n );\n\n const removeFile = useCallback(\n (fileId: string) => {\n onRemove?.(fileId);\n setFiles((state) => {\n const newFiles = state.filter((file) => file.id !== fileId);\n onValueChange?.(newFiles);\n return newFiles;\n });\n },\n [onValueChange, onRemove],\n );\n\n const setFileValidationResult = useCallback(\n (fileId: string, validationResult: FileUploaderFileValidationResult) => {\n setFiles((files) => {\n const newFiles = updateFile(files, fileId, () => ({ validationResult }));\n onValueChange?.(newFiles);\n return newFiles;\n });\n },\n [onValueChange],\n );\n\n const reset = React.useCallback(() => {\n setFiles(() => {\n const newFiles = [] as FileUploaderAttachedFile[];\n onValueChange?.(newFiles);\n return newFiles;\n });\n }, [onValueChange]);\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\nFileUploaderControlProvider.displayName = 'FileUploaderControlProvider';\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FileUploaderAttachedFile } from '../fileUtils';
|
|
2
|
+
interface FileUploaderFileProps {
|
|
3
|
+
file: FileUploaderAttachedFile;
|
|
4
|
+
showSize?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare const FileUploaderFile: {
|
|
7
|
+
(props: FileUploaderFileProps): JSX.Element;
|
|
8
|
+
displayName: string;
|
|
9
|
+
};
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");exports.__esModule = true;exports.FileUploaderFile = void 0;var _react = _interopRequireWildcard(require("react"));
|
|
2
|
+
|
|
3
|
+
var _fileUtils = require("../fileUtils");
|
|
4
|
+
var _utils = require("../../../lib/utils");
|
|
5
|
+
var _TextWidthHelper = require("../../../internal/TextWidthHelper/TextWidthHelper");
|
|
6
|
+
var _stringUtils = require("../../../lib/stringUtils");
|
|
7
|
+
var _Spinner = require("../../../components/Spinner");
|
|
8
|
+
var _FileUploaderControlContext = require("../FileUploaderControlContext");
|
|
9
|
+
var _Tooltip = require("../../../components/Tooltip");
|
|
10
|
+
var _Emotion = require("../../../lib/theming/Emotion");
|
|
11
|
+
var _ThemeContext = require("../../../lib/theming/ThemeContext");
|
|
12
|
+
var _px = require("../../icons/16px");
|
|
13
|
+
var _keyListener = require("../../../lib/events/keyListener");
|
|
14
|
+
var _identifiers = require("../../../lib/events/keyboard/identifiers");
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
var _FileUploaderFile = require("./FileUploaderFile.styles");
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
var getTruncatedName = function getTruncatedName(fileNameWidth, fileNameElementWidth, name) {
|
|
25
|
+
if (!fileNameWidth && !fileNameElementWidth) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (fileNameWidth <= fileNameElementWidth) {
|
|
30
|
+
return name;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
var charWidth = Math.ceil(fileNameWidth / name.length);
|
|
34
|
+
var maxCharsCountInSpan = Math.ceil(fileNameElementWidth / charWidth);
|
|
35
|
+
|
|
36
|
+
return (0, _stringUtils.truncate)(name, maxCharsCountInSpan);
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
var FileUploaderFile = function FileUploaderFile(props) {var _cx, _cx2;var
|
|
40
|
+
file = props.file,showSize = props.showSize;var
|
|
41
|
+
id = file.id,originalFile = file.originalFile,status = file.status,validationResult = file.validationResult;var
|
|
42
|
+
name = originalFile.name,size = originalFile.size;var _useState =
|
|
43
|
+
|
|
44
|
+
(0, _react.useState)(false),hovered = _useState[0],setHovered = _useState[1];var _useState2 =
|
|
45
|
+
(0, _react.useState)(false),focusedByTab = _useState2[0],setFocusedByTab = _useState2[1];var _useState3 =
|
|
46
|
+
(0, _react.useState)(null),truncatedFileName = _useState3[0],setTruncatedFileName = _useState3[1];
|
|
47
|
+
|
|
48
|
+
var textHelperRef = (0, _react.useRef)(null);
|
|
49
|
+
var fileNameElementRef = (0, _react.useRef)(null);var _useContext =
|
|
50
|
+
|
|
51
|
+
(0, _react.useContext)(_FileUploaderControlContext.FileUploaderControlContext),removeFile = _useContext.removeFile;
|
|
52
|
+
var theme = (0, _react.useContext)(_ThemeContext.ThemeContext);
|
|
53
|
+
|
|
54
|
+
var formattedSize = (0, _react.useMemo)(function () {return (0, _utils.formatBytes)(size, 1);}, [size]);
|
|
55
|
+
|
|
56
|
+
// важно запустить после рендера, чтобы успели проставиться рефы
|
|
57
|
+
(0, _react.useEffect)(function () {var _textHelperRef$curren, _fileNameElementRef$c;
|
|
58
|
+
var fileNameWidth = ((_textHelperRef$curren = textHelperRef.current) == null ? void 0 : _textHelperRef$curren.getTextWidth()) || 0;
|
|
59
|
+
var fileNameElementWidth = ((_fileNameElementRef$c = fileNameElementRef.current) == null ? void 0 : _fileNameElementRef$c.getBoundingClientRect().width) || 0;
|
|
60
|
+
var truncatedName = getTruncatedName(fileNameWidth, fileNameElementWidth, name);
|
|
61
|
+
|
|
62
|
+
setTruncatedFileName(truncatedName);
|
|
63
|
+
}, [name]);
|
|
64
|
+
|
|
65
|
+
var removeUploadFile = (0, _react.useCallback)(function () {
|
|
66
|
+
removeFile(id);
|
|
67
|
+
}, [removeFile, id]);
|
|
68
|
+
|
|
69
|
+
var handleRemove = (0, _react.useCallback)(
|
|
70
|
+
function (event) {
|
|
71
|
+
event.preventDefault();
|
|
72
|
+
event.stopPropagation();
|
|
73
|
+
removeUploadFile();
|
|
74
|
+
},
|
|
75
|
+
[removeUploadFile]);var
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
isValid = validationResult.isValid,message = validationResult.message;
|
|
79
|
+
|
|
80
|
+
var icon = (0, _react.useMemo)(function () {
|
|
81
|
+
var deleteIcon = /*#__PURE__*/_react.default.createElement(_px.DeleteIcon, { className: _FileUploaderFile.jsStyles.deleteIcon(theme) });
|
|
82
|
+
|
|
83
|
+
if (hovered || focusedByTab) {
|
|
84
|
+
return deleteIcon;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
switch (status) {
|
|
88
|
+
case _fileUtils.FileUploaderFileStatus.Loading:
|
|
89
|
+
return /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, { type: "mini", dimmed: true, caption: "" });
|
|
90
|
+
case _fileUtils.FileUploaderFileStatus.Uploaded:
|
|
91
|
+
return /*#__PURE__*/_react.default.createElement(_px.OkIcon, { color: theme.fileUploaderIconColor });
|
|
92
|
+
default:
|
|
93
|
+
if (!isValid) {
|
|
94
|
+
return /*#__PURE__*/_react.default.createElement(_px.ErrorIcon, null);
|
|
95
|
+
}
|
|
96
|
+
return deleteIcon;}
|
|
97
|
+
|
|
98
|
+
}, [hovered, status, isValid, theme, focusedByTab]);
|
|
99
|
+
|
|
100
|
+
var renderTooltipContent = (0, _react.useCallback)(function () {
|
|
101
|
+
return isValid ? null : message;
|
|
102
|
+
}, [isValid, message]);
|
|
103
|
+
|
|
104
|
+
var contentClassNames = (0, _Emotion.cx)(_FileUploaderFile.jsStyles.content(), (_cx = {}, _cx[
|
|
105
|
+
_FileUploaderFile.jsStyles.error(theme)] = !isValid, _cx));
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
var handleMouseEnter = (0, _react.useCallback)(function () {
|
|
109
|
+
setHovered(true);
|
|
110
|
+
}, []);
|
|
111
|
+
|
|
112
|
+
var handleMouseLeave = (0, _react.useCallback)(function () {
|
|
113
|
+
setHovered(false);
|
|
114
|
+
}, []);
|
|
115
|
+
|
|
116
|
+
var handleFocus = (0, _react.useCallback)(function () {
|
|
117
|
+
// focus event fires before keyDown eventlistener
|
|
118
|
+
// so we should check tabPressed in async way
|
|
119
|
+
requestAnimationFrame(function () {
|
|
120
|
+
if (_keyListener.keyListener.isTabPressed) {
|
|
121
|
+
setFocusedByTab(true);
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
}, []);
|
|
125
|
+
|
|
126
|
+
var handleBlur = (0, _react.useCallback)(function () {
|
|
127
|
+
setFocusedByTab(false);
|
|
128
|
+
}, []);
|
|
129
|
+
|
|
130
|
+
var handleIconKeyDown = (0, _react.useCallback)(
|
|
131
|
+
function (e) {
|
|
132
|
+
if ((0, _identifiers.isKeyEnter)(e)) {
|
|
133
|
+
removeUploadFile();
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
[removeUploadFile]);
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
var iconClassNames = (0, _Emotion.cx)(_FileUploaderFile.jsStyles.icon(theme), (_cx2 = {}, _cx2[
|
|
140
|
+
_FileUploaderFile.jsStyles.focusedIcon(theme)] = focusedByTab, _cx2));
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
return /*#__PURE__*/(
|
|
144
|
+
_react.default.createElement("div", {
|
|
145
|
+
"data-tid": "FileUploader__file",
|
|
146
|
+
className: _FileUploaderFile.jsStyles.root(),
|
|
147
|
+
onMouseEnter: handleMouseEnter,
|
|
148
|
+
onMouseLeave: handleMouseLeave }, /*#__PURE__*/
|
|
149
|
+
|
|
150
|
+
_react.default.createElement(_Tooltip.Tooltip, { "data-tid": "FileUploader__fileTooltip", pos: "right middle", render: renderTooltipContent }, /*#__PURE__*/
|
|
151
|
+
_react.default.createElement("div", { className: contentClassNames }, /*#__PURE__*/
|
|
152
|
+
_react.default.createElement(_TextWidthHelper.TextWidthHelper, { ref: textHelperRef, text: name }), /*#__PURE__*/
|
|
153
|
+
_react.default.createElement("span", { "data-tid": "FileUploader__fileName", ref: fileNameElementRef, className: _FileUploaderFile.jsStyles.name() },
|
|
154
|
+
truncatedFileName),
|
|
155
|
+
|
|
156
|
+
!!showSize && formattedSize && /*#__PURE__*/
|
|
157
|
+
_react.default.createElement("span", { "data-tid": "FileUploader__fileSize", className: _FileUploaderFile.jsStyles.size() },
|
|
158
|
+
formattedSize), /*#__PURE__*/
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
_react.default.createElement("div", {
|
|
162
|
+
className: iconClassNames,
|
|
163
|
+
"data-tid": "FileUploader__fileIcon",
|
|
164
|
+
tabIndex: 0,
|
|
165
|
+
onClick: handleRemove,
|
|
166
|
+
onFocus: handleFocus,
|
|
167
|
+
onBlur: handleBlur,
|
|
168
|
+
onKeyDown: handleIconKeyDown },
|
|
169
|
+
|
|
170
|
+
icon)))));
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
};exports.FileUploaderFile = FileUploaderFile;
|
|
177
|
+
|
|
178
|
+
FileUploaderFile.displayName = 'FileUploaderFile';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["FileUploaderFile.tsx"],"names":["getTruncatedName","fileNameWidth","fileNameElementWidth","name","charWidth","Math","ceil","length","maxCharsCountInSpan","FileUploaderFile","props","file","showSize","id","originalFile","status","validationResult","size","hovered","setHovered","focusedByTab","setFocusedByTab","truncatedFileName","setTruncatedFileName","textHelperRef","fileNameElementRef","FileUploaderControlContext","removeFile","theme","ThemeContext","formattedSize","current","getTextWidth","getBoundingClientRect","width","truncatedName","removeUploadFile","handleRemove","event","preventDefault","stopPropagation","isValid","message","icon","deleteIcon","jsStyles","FileUploaderFileStatus","Loading","Uploaded","fileUploaderIconColor","renderTooltipContent","contentClassNames","content","error","handleMouseEnter","handleMouseLeave","handleFocus","requestAnimationFrame","keyListener","isTabPressed","handleBlur","handleIconKeyDown","e","iconClassNames","focusedIcon","root","displayName"],"mappings":"gKAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;;;;;;AAOA,IAAMA,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,aAAD,EAAwBC,oBAAxB,EAAsDC,IAAtD,EAAuE;AAC9F,MAAI,CAACF,aAAD,IAAkB,CAACC,oBAAvB,EAA6C;AAC3C,WAAO,IAAP;AACD;;AAED,MAAID,aAAa,IAAIC,oBAArB,EAA2C;AACzC,WAAOC,IAAP;AACD;;AAED,MAAMC,SAAS,GAAGC,IAAI,CAACC,IAAL,CAAUL,aAAa,GAAGE,IAAI,CAACI,MAA/B,CAAlB;AACA,MAAMC,mBAAmB,GAAGH,IAAI,CAACC,IAAL,CAAUJ,oBAAoB,GAAGE,SAAjC,CAA5B;;AAEA,SAAO,2BAASD,IAAT,EAAeK,mBAAf,CAAP;AACD,CAbD;;AAeO,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,KAAD,EAAkC;AACxDC,EAAAA,IADwD,GACrCD,KADqC,CACxDC,IADwD,CAClDC,QADkD,GACrCF,KADqC,CAClDE,QADkD;AAExDC,EAAAA,EAFwD,GAETF,IAFS,CAExDE,EAFwD,CAEpDC,YAFoD,GAETH,IAFS,CAEpDG,YAFoD,CAEtCC,MAFsC,GAETJ,IAFS,CAEtCI,MAFsC,CAE9BC,gBAF8B,GAETL,IAFS,CAE9BK,gBAF8B;AAGxDb,EAAAA,IAHwD,GAGzCW,YAHyC,CAGxDX,IAHwD,CAGlDc,IAHkD,GAGzCH,YAHyC,CAGlDG,IAHkD;;AAKlC,uBAAkB,KAAlB,CALkC,CAKzDC,OALyD,gBAKhDC,UALgD;AAMxB,uBAAS,KAAT,CANwB,CAMzDC,YANyD,iBAM3CC,eAN2C;AAOd,uBAA2B,IAA3B,CAPc,CAOzDC,iBAPyD,iBAOtCC,oBAPsC;;AAShE,MAAMC,aAAa,GAAG,mBAAwB,IAAxB,CAAtB;AACA,MAAMC,kBAAkB,GAAG,mBAAwB,IAAxB,CAA3B,CAVgE;;AAYzC,yBAAWC,sDAAX,CAZyC,CAYxDC,UAZwD,eAYxDA,UAZwD;AAahE,MAAMC,KAAK,GAAG,uBAAWC,0BAAX,CAAd;;AAEA,MAAMC,aAAa,GAAG,oBAAQ,oBAAM,wBAAYb,IAAZ,EAAkB,CAAlB,CAAN,EAAR,EAAoC,CAACA,IAAD,CAApC,CAAtB;;AAEA;AACA,wBAAU,YAAM;AACd,QAAMhB,aAAa,GAAG,0BAAAuB,aAAa,CAACO,OAAd,2CAAuBC,YAAvB,OAAyC,CAA/D;AACA,QAAM9B,oBAAoB,GAAG,0BAAAuB,kBAAkB,CAACM,OAAnB,2CAA4BE,qBAA5B,GAAoDC,KAApD,KAA6D,CAA1F;AACA,QAAMC,aAAa,GAAGnC,gBAAgB,CAACC,aAAD,EAAgBC,oBAAhB,EAAsCC,IAAtC,CAAtC;;AAEAoB,IAAAA,oBAAoB,CAACY,aAAD,CAApB;AACD,GAND,EAMG,CAAChC,IAAD,CANH;;AAQA,MAAMiC,gBAAgB,GAAG,wBAAY,YAAM;AACzCT,IAAAA,UAAU,CAACd,EAAD,CAAV;AACD,GAFwB,EAEtB,CAACc,UAAD,EAAad,EAAb,CAFsB,CAAzB;;AAIA,MAAMwB,YAAY,GAAG;AACnB,YAACC,KAAD,EAA0C;AACxCA,IAAAA,KAAK,CAACC,cAAN;AACAD,IAAAA,KAAK,CAACE,eAAN;AACAJ,IAAAA,gBAAgB;AACjB,GALkB;AAMnB,GAACA,gBAAD,CANmB,CAArB,CA9BgE;;;AAuCxDK,EAAAA,OAvCwD,GAuCnCzB,gBAvCmC,CAuCxDyB,OAvCwD,CAuC/CC,OAvC+C,GAuCnC1B,gBAvCmC,CAuC/C0B,OAvC+C;;AAyChE,MAAMC,IAAe,GAAG,oBAAQ,YAAM;AACpC,QAAMC,UAAU,gBAAG,6BAAC,cAAD,IAAY,SAAS,EAAEC,2BAASD,UAAT,CAAoBhB,KAApB,CAAvB,GAAnB;;AAEA,QAAIV,OAAO,IAAIE,YAAf,EAA6B;AAC3B,aAAOwB,UAAP;AACD;;AAED,YAAQ7B,MAAR;AACE,WAAK+B,kCAAuBC,OAA5B;AACE,4BAAO,6BAAC,gBAAD,IAAS,IAAI,EAAC,MAAd,EAAqB,MAAM,MAA3B,EAA4B,OAAO,EAAC,EAApC,GAAP;AACF,WAAKD,kCAAuBE,QAA5B;AACE,4BAAO,6BAAC,UAAD,IAAQ,KAAK,EAAEpB,KAAK,CAACqB,qBAArB,GAAP;AACF;AACE,YAAI,CAACR,OAAL,EAAc;AACZ,8BAAO,6BAAC,aAAD,OAAP;AACD;AACD,eAAOG,UAAP,CATJ;;AAWD,GAlBuB,EAkBrB,CAAC1B,OAAD,EAAUH,MAAV,EAAkB0B,OAAlB,EAA2Bb,KAA3B,EAAkCR,YAAlC,CAlBqB,CAAxB;;AAoBA,MAAM8B,oBAAoB,GAAG,wBAAY,YAAiB;AACxD,WAAOT,OAAO,GAAG,IAAH,GAAUC,OAAxB;AACD,GAF4B,EAE1B,CAACD,OAAD,EAAUC,OAAV,CAF0B,CAA7B;;AAIA,MAAMS,iBAAiB,GAAG,iBAAGN,2BAASO,OAAT,EAAH;AACvBP,6BAASQ,KAAT,CAAezB,KAAf,CADuB,IACC,CAACa,OADF,OAA1B;;;AAIA,MAAMa,gBAAgB,GAAG,wBAAY,YAAM;AACzCnC,IAAAA,UAAU,CAAC,IAAD,CAAV;AACD,GAFwB,EAEtB,EAFsB,CAAzB;;AAIA,MAAMoC,gBAAgB,GAAG,wBAAY,YAAM;AACzCpC,IAAAA,UAAU,CAAC,KAAD,CAAV;AACD,GAFwB,EAEtB,EAFsB,CAAzB;;AAIA,MAAMqC,WAAW,GAAG,wBAAY,YAAM;AACpC;AACA;AACAC,IAAAA,qBAAqB,CAAC,YAAM;AAC1B,UAAIC,yBAAYC,YAAhB,EAA8B;AAC5BtC,QAAAA,eAAe,CAAC,IAAD,CAAf;AACD;AACF,KAJoB,CAArB;AAKD,GARmB,EAQjB,EARiB,CAApB;;AAUA,MAAMuC,UAAU,GAAG,wBAAY,YAAM;AACnCvC,IAAAA,eAAe,CAAC,KAAD,CAAf;AACD,GAFkB,EAEhB,EAFgB,CAAnB;;AAIA,MAAMwC,iBAAiB,GAAG;AACxB,YAACC,CAAD,EAAyC;AACvC,QAAI,6BAAWA,CAAX,CAAJ,EAAmB;AACjB1B,MAAAA,gBAAgB;AACjB;AACF,GALuB;AAMxB,GAACA,gBAAD,CANwB,CAA1B;;;AASA,MAAM2B,cAAc,GAAG,iBAAGlB,2BAASF,IAAT,CAAcf,KAAd,CAAH;AACpBiB,6BAASmB,WAAT,CAAqBpC,KAArB,CADoB,IACUR,YADV,QAAvB;;;AAIA;AACE;AACE,kBAAS,oBADX;AAEE,MAAA,SAAS,EAAEyB,2BAASoB,IAAT,EAFb;AAGE,MAAA,YAAY,EAAEX,gBAHhB;AAIE,MAAA,YAAY,EAAEC,gBAJhB;;AAME,iCAAC,gBAAD,IAAS,YAAS,2BAAlB,EAA8C,GAAG,EAAC,cAAlD,EAAiE,MAAM,EAAEL,oBAAzE;AACE,0CAAK,SAAS,EAAEC,iBAAhB;AACE,iCAAC,gCAAD,IAAiB,GAAG,EAAE3B,aAAtB,EAAqC,IAAI,EAAErB,IAA3C,GADF;AAEE,2CAAM,YAAS,wBAAf,EAAwC,GAAG,EAAEsB,kBAA7C,EAAiE,SAAS,EAAEoB,2BAAS1C,IAAT,EAA5E;AACGmB,IAAAA,iBADH,CAFF;;AAKG,KAAC,CAACV,QAAF,IAAckB,aAAd;AACC,2CAAM,YAAS,wBAAf,EAAwC,SAAS,EAAEe,2BAAS5B,IAAT,EAAnD;AACGa,IAAAA,aADH,CANJ;;;AAUE;AACE,MAAA,SAAS,EAAEiC,cADb;AAEE,kBAAS,wBAFX;AAGE,MAAA,QAAQ,EAAE,CAHZ;AAIE,MAAA,OAAO,EAAE1B,YAJX;AAKE,MAAA,OAAO,EAAEmB,WALX;AAME,MAAA,MAAM,EAAEI,UANV;AAOE,MAAA,SAAS,EAAEC,iBAPb;;AASGlB,IAAAA,IATH,CAVF,CADF,CANF,CADF;;;;;;AAiCD,CAzIM,C;;AA2IPlC,gBAAgB,CAACyD,WAAjB,GAA+B,kBAA/B","sourcesContent":["import React, { ReactNode, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { FileUploaderAttachedFile, FileUploaderFileStatus } from '../fileUtils';\nimport { formatBytes } from '../../../lib/utils';\nimport { TextWidthHelper } from '../../../internal/TextWidthHelper/TextWidthHelper';\nimport { truncate } from '../../../lib/stringUtils';\nimport { Spinner } from '../../../components/Spinner';\nimport { FileUploaderControlContext } from '../FileUploaderControlContext';\nimport { Tooltip } from '../../../components/Tooltip';\nimport { cx } from '../../../lib/theming/Emotion';\nimport { ThemeContext } from '../../../lib/theming/ThemeContext';\nimport { DeleteIcon, ErrorIcon, OkIcon } from '../../icons/16px';\nimport { keyListener } from '../../../lib/events/keyListener';\nimport { isKeyEnter } from '../../../lib/events/keyboard/identifiers';\nimport { Nullable } from '../../../typings/utility-types';\n\nimport { jsStyles } from './FileUploaderFile.styles';\n\ninterface FileUploaderFileProps {\n file: FileUploaderAttachedFile;\n showSize?: boolean;\n}\n\nconst getTruncatedName = (fileNameWidth: number, fileNameElementWidth: number, name: string) => {\n if (!fileNameWidth && !fileNameElementWidth) {\n return null;\n }\n\n if (fileNameWidth <= fileNameElementWidth) {\n return name;\n }\n\n const charWidth = Math.ceil(fileNameWidth / name.length);\n const maxCharsCountInSpan = Math.ceil(fileNameElementWidth / charWidth);\n\n return truncate(name, maxCharsCountInSpan);\n};\n\nexport const FileUploaderFile = (props: FileUploaderFileProps) => {\n const { file, showSize } = props;\n const { id, originalFile, status, validationResult } = file;\n const { name, size } = originalFile;\n\n const [hovered, setHovered] = useState<boolean>(false);\n const [focusedByTab, setFocusedByTab] = useState(false);\n const [truncatedFileName, setTruncatedFileName] = useState<Nullable<string>>(null);\n\n const textHelperRef = useRef<TextWidthHelper>(null);\n const fileNameElementRef = useRef<HTMLSpanElement>(null);\n\n const { removeFile } = useContext(FileUploaderControlContext);\n const theme = useContext(ThemeContext);\n\n const formattedSize = useMemo(() => formatBytes(size, 1), [size]);\n\n // важно запустить после рендера, чтобы успели проставиться рефы\n useEffect(() => {\n const fileNameWidth = textHelperRef.current?.getTextWidth() || 0;\n const fileNameElementWidth = fileNameElementRef.current?.getBoundingClientRect().width || 0;\n const truncatedName = getTruncatedName(fileNameWidth, fileNameElementWidth, name);\n\n setTruncatedFileName(truncatedName);\n }, [name]);\n\n const removeUploadFile = useCallback(() => {\n removeFile(id);\n }, [removeFile, id]);\n\n const handleRemove = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n event.preventDefault();\n event.stopPropagation();\n removeUploadFile();\n },\n [removeUploadFile],\n );\n\n const { isValid, message } = validationResult;\n\n const icon: ReactNode = useMemo(() => {\n const deleteIcon = <DeleteIcon className={jsStyles.deleteIcon(theme)} />;\n\n if (hovered || focusedByTab) {\n return deleteIcon;\n }\n\n switch (status) {\n case FileUploaderFileStatus.Loading:\n return <Spinner type=\"mini\" dimmed caption=\"\" />;\n case FileUploaderFileStatus.Uploaded:\n return <OkIcon color={theme.fileUploaderIconColor} />;\n default:\n if (!isValid) {\n return <ErrorIcon />;\n }\n return deleteIcon;\n }\n }, [hovered, status, isValid, theme, focusedByTab]);\n\n const renderTooltipContent = useCallback((): ReactNode => {\n return isValid ? null : message;\n }, [isValid, message]);\n\n const contentClassNames = cx(jsStyles.content(), {\n [jsStyles.error(theme)]: !isValid,\n });\n\n const handleMouseEnter = useCallback(() => {\n setHovered(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setHovered(false);\n }, []);\n\n const handleFocus = useCallback(() => {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n }, []);\n\n const handleBlur = useCallback(() => {\n setFocusedByTab(false);\n }, []);\n\n const handleIconKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEnter(e)) {\n removeUploadFile();\n }\n },\n [removeUploadFile],\n );\n\n const iconClassNames = cx(jsStyles.icon(theme), {\n [jsStyles.focusedIcon(theme)]: focusedByTab,\n });\n\n return (\n <div\n data-tid=\"FileUploader__file\"\n className={jsStyles.root()}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <Tooltip data-tid=\"FileUploader__fileTooltip\" pos=\"right middle\" render={renderTooltipContent}>\n <div className={contentClassNames}>\n <TextWidthHelper ref={textHelperRef} text={name} />\n <span data-tid=\"FileUploader__fileName\" ref={fileNameElementRef} className={jsStyles.name()}>\n {truncatedFileName}\n </span>\n {!!showSize && formattedSize && (\n <span data-tid=\"FileUploader__fileSize\" className={jsStyles.size()}>\n {formattedSize}\n </span>\n )}\n <div\n className={iconClassNames}\n data-tid=\"FileUploader__fileIcon\"\n tabIndex={0}\n onClick={handleRemove}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleIconKeyDown}\n >\n {icon}\n </div>\n </div>\n </Tooltip>\n </div>\n );\n};\n\nFileUploaderFile.displayName = 'FileUploaderFile';\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Theme } from '../../../lib/theming/Theme';
|
|
2
|
+
export declare const jsStyles: {
|
|
3
|
+
root(): string;
|
|
4
|
+
content(): string;
|
|
5
|
+
error(t: Theme): string;
|
|
6
|
+
name(): string;
|
|
7
|
+
size(): string;
|
|
8
|
+
icon(t: Theme): string;
|
|
9
|
+
deleteIcon(t: Theme): string;
|
|
10
|
+
focusedIcon(t: Theme): string;
|
|
11
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.jsStyles = void 0;var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));var _Emotion = require("../../../lib/theming/Emotion");var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var styles = {
|
|
5
|
+
root: function root() {
|
|
6
|
+
return (0, _Emotion.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["\n width: 100%;\n "])));
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
},
|
|
10
|
+
|
|
11
|
+
content: function content() {
|
|
12
|
+
return (0, _Emotion.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["\n display: flex;\n width: 100%;\n position: relative;\n "])));
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
error: function error(t) {
|
|
20
|
+
return (0, _Emotion.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteralLoose2.default)(["\n color: ", ";\n "])),
|
|
21
|
+
t.fileUploaderBorderColorError);
|
|
22
|
+
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
name: function name() {
|
|
26
|
+
return (0, _Emotion.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteralLoose2.default)(["\n flex: 1 1 100%;\n overflow: hidden;\n "])));
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
size: function size() {
|
|
33
|
+
return (0, _Emotion.css)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteralLoose2.default)(["\n margin-left: 28px;\n flex: 1 0 auto;\n "])));
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
icon: function icon(t) {
|
|
40
|
+
return (0, _Emotion.css)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteralLoose2.default)(["\n margin-left: 23px;\n flex: 1 0 auto;\n cursor: pointer;\n font-size: ", ";\n text-align: right;\n outline: none;\n "])),
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
t.fileUploaderIconSize);
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
deleteIcon: function deleteIcon(t) {
|
|
51
|
+
return (0, _Emotion.css)(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteralLoose2.default)(["\n color: ", ";\n &:hover {\n color: ", ";\n }\n "])),
|
|
52
|
+
t.fileUploaderIconColor,
|
|
53
|
+
|
|
54
|
+
t.fileUploaderIconHoverColor);
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
focusedIcon: function focusedIcon(t) {
|
|
60
|
+
return (0, _Emotion.css)(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteralLoose2.default)(["\n outline: 1px solid ", ";\n "])),
|
|
61
|
+
t.borderColorFocus);
|
|
62
|
+
|
|
63
|
+
} };
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
var jsStyles = (0, _Emotion.memoizeStyle)(styles);exports.jsStyles = jsStyles;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["FileUploaderFile.styles.ts"],"names":["styles","root","css","content","error","t","fileUploaderBorderColorError","name","size","icon","fileUploaderIconSize","deleteIcon","fileUploaderIconColor","fileUploaderIconHoverColor","focusedIcon","borderColorFocus","jsStyles"],"mappings":"8QAAA,uD;;;AAGA,IAAMA,MAAM,GAAG;AACbC,EAAAA,IADa,kBACN;AACL,eAAOC,YAAP;;;AAGD,GALY;;AAObC,EAAAA,OAPa,qBAOH;AACR,eAAOD,YAAP;;;;;AAKD,GAbY;;AAebE,EAAAA,KAfa,iBAePC,CAfO,EAeG;AACd,eAAOH,YAAP;AACWG,IAAAA,CAAC,CAACC,4BADb;;AAGD,GAnBY;;AAqBbC,EAAAA,IArBa,kBAqBN;AACL,eAAOL,YAAP;;;;AAID,GA1BY;;AA4BbM,EAAAA,IA5Ba,kBA4BN;AACL,eAAON,YAAP;;;;AAID,GAjCY;;AAmCbO,EAAAA,IAnCa,gBAmCRJ,CAnCQ,EAmCE;AACb,eAAOH,YAAP;;;;AAIeG,IAAAA,CAAC,CAACK,oBAJjB;;;;AAQD,GA5CY;;AA8CbC,EAAAA,UA9Ca,sBA8CFN,CA9CE,EA8CQ;AACnB,eAAOH,YAAP;AACWG,IAAAA,CAAC,CAACO,qBADb;;AAGaP,IAAAA,CAAC,CAACQ,0BAHf;;;AAMD,GArDY;;AAuDbC,EAAAA,WAvDa,uBAuDDT,CAvDC,EAuDS;AACpB,eAAOH,YAAP;AACuBG,IAAAA,CAAC,CAACU,gBADzB;;AAGD,GA3DY,EAAf;;;AA8DO,IAAMC,QAAQ,GAAG,2BAAahB,MAAb,CAAjB,C","sourcesContent":["import { css, memoizeStyle } from '../../../lib/theming/Emotion';\nimport { Theme } from '../../../lib/theming/Theme';\n\nconst styles = {\n root() {\n return css`\n width: 100%;\n `;\n },\n\n content() {\n return css`\n display: flex;\n width: 100%;\n position: relative;\n `;\n },\n\n error(t: Theme) {\n return css`\n color: ${t.fileUploaderBorderColorError};\n `;\n },\n\n name() {\n return css`\n flex: 1 1 100%;\n overflow: hidden;\n `;\n },\n\n size() {\n return css`\n margin-left: 28px;\n flex: 1 0 auto;\n `;\n },\n\n icon(t: Theme) {\n return css`\n margin-left: 23px;\n flex: 1 0 auto;\n cursor: pointer;\n font-size: ${t.fileUploaderIconSize};\n text-align: right;\n outline: none;\n `;\n },\n\n deleteIcon(t: Theme) {\n return css`\n color: ${t.fileUploaderIconColor};\n &:hover {\n color: ${t.fileUploaderIconHoverColor};\n }\n `;\n },\n\n focusedIcon(t: Theme) {\n return css`\n outline: 1px solid ${t.borderColorFocus};\n `;\n },\n};\n\nexport const jsStyles = memoizeStyle(styles);\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");exports.__esModule = true;exports.FileUploaderFileList = void 0;var _react = _interopRequireWildcard(require("react"));
|
|
2
|
+
|
|
3
|
+
var _FileUploaderControlContext = require("../FileUploaderControlContext");
|
|
4
|
+
var _ThemeContext = require("../../../lib/theming/ThemeContext");
|
|
5
|
+
var _FileUploaderFile = require("../FileUploaderFile/FileUploaderFile");
|
|
6
|
+
|
|
7
|
+
var _FileUploaderFileList = require("./FileUploaderFileList.styles");
|
|
8
|
+
|
|
9
|
+
var FileUploaderFileList = function FileUploaderFileList() {var _useContext =
|
|
10
|
+
(0, _react.useContext)(_FileUploaderControlContext.FileUploaderControlContext),files = _useContext.files;
|
|
11
|
+
var theme = (0, _react.useContext)(_ThemeContext.ThemeContext);
|
|
12
|
+
|
|
13
|
+
return /*#__PURE__*/(
|
|
14
|
+
_react.default.createElement("div", { "data-tid": "FileUploader__fileList" },
|
|
15
|
+
files.map(function (file) {return /*#__PURE__*/(
|
|
16
|
+
_react.default.createElement("div", { key: file.id, className: _FileUploaderFileList.jsStyles.fileWrapper(theme) }, /*#__PURE__*/
|
|
17
|
+
_react.default.createElement(_FileUploaderFile.FileUploaderFile, { file: file, showSize: true })));})));
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
};exports.FileUploaderFileList = FileUploaderFileList;
|
|
23
|
+
|
|
24
|
+
FileUploaderFileList.displayName = 'FileUploaderFileList';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["FileUploaderFileList.tsx"],"names":["FileUploaderFileList","FileUploaderControlContext","files","theme","ThemeContext","map","file","id","jsStyles","fileWrapper","displayName"],"mappings":"oKAAA;;AAEA;AACA;AACA;;AAEA;;AAEO,IAAMA,oBAAoB,GAAG,SAAvBA,oBAAuB,GAAM;AACtB,yBAAWC,sDAAX,CADsB,CAChCC,KADgC,eAChCA,KADgC;AAExC,MAAMC,KAAK,GAAG,uBAAWC,0BAAX,CAAd;;AAEA;AACE,0CAAK,YAAS,wBAAd;AACGF,IAAAA,KAAK,CAACG,GAAN,CAAU,UAACC,IAAD;AACT,8CAAK,GAAG,EAAEA,IAAI,CAACC,EAAf,EAAmB,SAAS,EAAEC,+BAASC,WAAT,CAAqBN,KAArB,CAA9B;AACE,qCAAC,kCAAD,IAAkB,IAAI,EAAEG,IAAxB,EAA8B,QAAQ,MAAtC,GADF,CADS,GAAV,CADH,CADF;;;;;AASD,CAbM,C;;AAePN,oBAAoB,CAACU,WAArB,GAAmC,sBAAnC","sourcesContent":["import React, { useContext } from 'react';\n\nimport { FileUploaderControlContext } from '../FileUploaderControlContext';\nimport { ThemeContext } from '../../../lib/theming/ThemeContext';\nimport { FileUploaderFile } from '../FileUploaderFile/FileUploaderFile';\n\nimport { jsStyles } from './FileUploaderFileList.styles';\n\nexport const FileUploaderFileList = () => {\n const { files } = useContext(FileUploaderControlContext);\n const theme = useContext(ThemeContext);\n\n return (\n <div data-tid=\"FileUploader__fileList\">\n {files.map((file) => (\n <div key={file.id} className={jsStyles.fileWrapper(theme)}>\n <FileUploaderFile file={file} showSize />\n </div>\n ))}\n </div>\n );\n};\n\nFileUploaderFileList.displayName = 'FileUploaderFileList';\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.jsStyles = void 0;var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));var _Emotion = require("../../../lib/theming/Emotion");var _templateObject;
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var styles = {
|
|
5
|
+
fileWrapper: function fileWrapper(t) {
|
|
6
|
+
return (0, _Emotion.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["\n width: 100%;\n height: 32px;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n padding: ", " ", ";\n "])),
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
t.fileUploaderPaddingY, t.fileUploaderPaddingX);
|
|
13
|
+
|
|
14
|
+
} };
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
var jsStyles = (0, _Emotion.memoizeStyle)(styles);exports.jsStyles = jsStyles;
|
package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["FileUploaderFileList.styles.ts"],"names":["styles","fileWrapper","t","css","fileUploaderPaddingY","fileUploaderPaddingX","jsStyles"],"mappings":"8QAAA,uD;;;AAGA,IAAMA,MAAM,GAAG;AACbC,EAAAA,WADa,uBACDC,CADC,EACS;AACpB,eAAOC,YAAP;;;;;;AAMaD,IAAAA,CAAC,CAACE,oBANf,EAMuCF,CAAC,CAACG,oBANzC;;AAQD,GAVY,EAAf;;;AAaO,IAAMC,QAAQ,GAAG,2BAAaN,MAAb,CAAjB,C","sourcesContent":["import { css, memoizeStyle } from '../../../lib/theming/Emotion';\nimport { Theme } from '../../../lib/theming/Theme';\n\nconst styles = {\n fileWrapper(t: Theme) {\n return css`\n width: 100%;\n height: 32px;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n padding: ${t.fileUploaderPaddingY} ${t.fileUploaderPaddingX};\n `;\n },\n};\n\nexport const jsStyles = memoizeStyle(styles);\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare class FileUploaderFileValidationResult {
|
|
2
|
+
readonly isValid: boolean;
|
|
3
|
+
readonly message?: string;
|
|
4
|
+
constructor(isValid: boolean, message?: string);
|
|
5
|
+
static error(message: string): FileUploaderFileValidationResult;
|
|
6
|
+
static ok(): FileUploaderFileValidationResult;
|
|
7
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";exports.__esModule = true;exports.FileUploaderFileValidationResult = void 0;var FileUploaderFileValidationResult = /*#__PURE__*/function () {
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
function FileUploaderFileValidationResult(isValid, message) {this.isValid = void 0;this.message = void 0;
|
|
6
|
+
this.isValid = isValid;
|
|
7
|
+
this.message = message;
|
|
8
|
+
}FileUploaderFileValidationResult.
|
|
9
|
+
|
|
10
|
+
error = function error(message) {
|
|
11
|
+
return new FileUploaderFileValidationResult(false, message);
|
|
12
|
+
};FileUploaderFileValidationResult.
|
|
13
|
+
|
|
14
|
+
ok = function ok() {
|
|
15
|
+
return new FileUploaderFileValidationResult(true);
|
|
16
|
+
};return FileUploaderFileValidationResult;}();exports.FileUploaderFileValidationResult = FileUploaderFileValidationResult;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["FileUploaderFileValidationResult.ts"],"names":["FileUploaderFileValidationResult","isValid","message","error","ok"],"mappings":"6FAAaA,gC;;;;AAIX,4CAAYC,OAAZ,EAA8BC,OAA9B,EAAgD,MAHvCD,OAGuC,eAFvCC,OAEuC;AAC9C,SAAKD,OAAL,GAAeA,OAAf;AACA,SAAKC,OAAL,GAAeA,OAAf;AACD,G;;AAEMC,EAAAA,K,GAAP,eAAaD,OAAb,EAAgE;AAC9D,WAAO,IAAIF,gCAAJ,CAAqC,KAArC,EAA4CE,OAA5C,CAAP;AACD,G;;AAEME,EAAAA,E,GAAP,cAA8C;AAC5C,WAAO,IAAIJ,gCAAJ,CAAqC,IAArC,CAAP;AACD,G","sourcesContent":["export class FileUploaderFileValidationResult {\n readonly isValid: boolean;\n readonly message?: string;\n\n constructor(isValid: boolean, message?: string) {\n this.isValid = isValid;\n this.message = message;\n }\n\n static error(message: string): FileUploaderFileValidationResult {\n return new FileUploaderFileValidationResult(false, message);\n }\n\n static ok(): FileUploaderFileValidationResult {\n return new FileUploaderFileValidationResult(true);\n }\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FileUploaderFileValidationResult } from './FileUploaderFileValidationResult';
|
|
2
|
+
export declare enum FileUploaderFileStatus {
|
|
3
|
+
Attached = "Attached",
|
|
4
|
+
Loading = "Loading",
|
|
5
|
+
Uploaded = "Uploaded",
|
|
6
|
+
Error = "Error"
|
|
7
|
+
}
|
|
8
|
+
export interface FileUploaderAttachedFile {
|
|
9
|
+
id: string;
|
|
10
|
+
originalFile: File;
|
|
11
|
+
status: FileUploaderFileStatus;
|
|
12
|
+
validationResult: FileUploaderFileValidationResult;
|
|
13
|
+
}
|
|
14
|
+
export declare const getAttachedFile: (file: File) => FileUploaderAttachedFile;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";exports.__esModule = true;exports.getAttachedFile = exports.FileUploaderFileStatus = void 0;var _guidUtils = require("../../lib/guidUtils");
|
|
2
|
+
|
|
3
|
+
var _FileUploaderFileValidationResult = require("./FileUploaderFileValidationResult");var
|
|
4
|
+
|
|
5
|
+
FileUploaderFileStatus;exports.FileUploaderFileStatus = FileUploaderFileStatus;(function (FileUploaderFileStatus) {FileUploaderFileStatus["Attached"] = "Attached";FileUploaderFileStatus["Loading"] = "Loading";FileUploaderFileStatus["Uploaded"] = "Uploaded";FileUploaderFileStatus["Error"] = "Error";})(FileUploaderFileStatus || (exports.FileUploaderFileStatus = FileUploaderFileStatus = {}));
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
var getAttachedFile = function getAttachedFile(file) {
|
|
20
|
+
return {
|
|
21
|
+
id: (0, _guidUtils.getGuid)(),
|
|
22
|
+
originalFile: file,
|
|
23
|
+
status: FileUploaderFileStatus.Attached,
|
|
24
|
+
validationResult: _FileUploaderFileValidationResult.FileUploaderFileValidationResult.ok() };
|
|
25
|
+
|
|
26
|
+
};exports.getAttachedFile = getAttachedFile;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["fileUtils.ts"],"names":["FileUploaderFileStatus","getAttachedFile","file","id","originalFile","status","Attached","validationResult","FileUploaderFileValidationResult","ok"],"mappings":"yGAAA;;AAEA,sF;;AAEYA,sB,oEAAAA,sB,GAAAA,sB,0BAAAA,sB,wBAAAA,sB,0BAAAA,sB,uBAAAA,sB,sCAAAA,sB;;;;;;;;;;;;;;AAcL,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,CAACC,IAAD,EAA0C;AACvE,SAAO;AACLC,IAAAA,EAAE,EAAE,yBADC;AAELC,IAAAA,YAAY,EAAEF,IAFT;AAGLG,IAAAA,MAAM,EAAEL,sBAAsB,CAACM,QAH1B;AAILC,IAAAA,gBAAgB,EAAEC,mEAAiCC,EAAjC,EAJb,EAAP;;AAMD,CAPM,C","sourcesContent":["import { getGuid } from '../../lib/guidUtils';\n\nimport { FileUploaderFileValidationResult } from './FileUploaderFileValidationResult';\n\nexport enum FileUploaderFileStatus {\n Attached = 'Attached',\n Loading = 'Loading',\n Uploaded = 'Uploaded',\n Error = 'Error',\n}\n\nexport interface FileUploaderAttachedFile {\n id: string;\n originalFile: File;\n status: FileUploaderFileStatus;\n validationResult: FileUploaderFileValidationResult;\n}\n\nexport const getAttachedFile = (file: File): FileUploaderAttachedFile => {\n return {\n id: getGuid(),\n originalFile: file,\n status: FileUploaderFileStatus.Attached,\n validationResult: FileUploaderFileValidationResult.ok(),\n };\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useControlLocale: () => import("../../../components/FileUploader/locale").FileUploaderLocale;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use strict";exports.__esModule = true;exports.useControlLocale = void 0;var _useLocaleForControl = require("../../../lib/locale/useLocaleForControl");
|
|
2
|
+
var _locale = require("../../../components/FileUploader/locale");
|
|
3
|
+
|
|
4
|
+
var useControlLocale = function useControlLocale() {return (0, _useLocaleForControl.useLocaleForControl)('FileUploader', _locale.FileUploaderLocaleHelper);};exports.useControlLocale = useControlLocale;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["useControlLocale.ts"],"names":["useControlLocale","FileUploaderLocaleHelper"],"mappings":"yEAAA;AACA;;AAEO,IAAMA,gBAAgB,GAAG,SAAnBA,gBAAmB,WAAM,8CAAoB,cAApB,EAAoCC,gCAApC,CAAN,EAAzB,C","sourcesContent":["import { useLocaleForControl } from '../../../lib/locale/useLocaleForControl';\nimport { FileUploaderLocaleHelper } from '../../../components/FileUploader/locale';\n\nexport const useControlLocale = () => useLocaleForControl('FileUploader', FileUploaderLocaleHelper);\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { Nullable } from '../../../typings/utility-types';
|
|
2
|
+
import { FileUploaderAttachedFile } from '../fileUtils';
|
|
3
|
+
export declare const useUpload: (request: Nullable<(file: FileUploaderAttachedFile) => Promise<void>>, onRequestSuccess?: Nullable<(fileId: string) => void>, onRequestError?: Nullable<(fileId: string) => void>) => (file: FileUploaderAttachedFile) => Promise<void>;
|