@webiny/app-file-manager 5.34.8 → 5.35.0-beta.1
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/FileManagerFileTypePlugin.d.ts +20 -0
- package/FileManagerFileTypePlugin.js +48 -0
- package/FileManagerFileTypePlugin.js.map +1 -0
- package/app.d.ts +2 -0
- package/app.js +16 -0
- package/app.js.map +1 -0
- package/components/FileDetails/Aliases.d.ts +3 -0
- package/components/FileDetails/Aliases.js +228 -0
- package/components/FileDetails/Aliases.js.map +1 -0
- package/components/FileDetails/DeleteImageAction.d.ts +2 -0
- package/components/FileDetails/DeleteImageAction.js +82 -0
- package/components/FileDetails/DeleteImageAction.js.map +1 -0
- package/components/FileDetails/FileProvider.d.ts +13 -0
- package/components/FileDetails/FileProvider.js +29 -0
- package/components/FileDetails/FileProvider.js.map +1 -0
- package/components/FileDetails/Name.d.ts +3 -0
- package/components/FileDetails/Name.js +81 -0
- package/components/FileDetails/Name.js.map +1 -0
- package/components/FileDetails/Tags.d.ts +3 -0
- package/components/FileDetails/Tags.js +176 -0
- package/components/FileDetails/Tags.js.map +1 -0
- package/components/FileDetails.d.ts +20 -0
- package/components/FileDetails.js +243 -0
- package/components/FileDetails.js.map +1 -0
- package/getFileTypePlugin.d.ts +4 -0
- package/getFileTypePlugin.js +51 -0
- package/getFileTypePlugin.js.map +1 -0
- package/index.d.ts +4 -2
- package/index.js +37 -31
- package/index.js.map +1 -1
- package/modules/FileManagerApiProvider/FileManagerApiContext/FileManagerApiContext.d.ts +37 -0
- package/modules/FileManagerApiProvider/FileManagerApiContext/FileManagerApiContext.js +293 -0
- package/modules/FileManagerApiProvider/FileManagerApiContext/FileManagerApiContext.js.map +1 -0
- package/modules/FileManagerApiProvider/FileManagerApiContext/getFileUploader.d.ts +2 -0
- package/modules/FileManagerApiProvider/FileManagerApiContext/getFileUploader.js +15 -0
- package/modules/FileManagerApiProvider/FileManagerApiContext/getFileUploader.js.map +1 -0
- package/modules/FileManagerApiProvider/FileManagerApiContext/index.d.ts +2 -0
- package/modules/FileManagerApiProvider/FileManagerApiContext/index.js +19 -0
- package/modules/FileManagerApiProvider/FileManagerApiContext/index.js.map +1 -0
- package/modules/FileManagerApiProvider/FileManagerApiContext/useFileManagerApi.d.ts +3 -0
- package/modules/FileManagerApiProvider/FileManagerApiContext/useFileManagerApi.js +16 -0
- package/modules/FileManagerApiProvider/FileManagerApiContext/useFileManagerApi.js.map +1 -0
- package/modules/FileManagerApiProvider/graphql.d.ts +103 -0
- package/modules/FileManagerApiProvider/graphql.js +24 -0
- package/modules/FileManagerApiProvider/graphql.js.map +1 -0
- package/modules/FileManagerApiProvider/index.d.ts +2 -0
- package/modules/FileManagerApiProvider/index.js +22 -0
- package/modules/FileManagerApiProvider/index.js.map +1 -0
- package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar/SupportedFileTypes.d.ts +6 -0
- package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar/SupportedFileTypes.js +41 -0
- package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar/SupportedFileTypes.js.map +1 -0
- package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar/UploadStatus.d.ts +6 -0
- package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar/UploadStatus.js +51 -0
- package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar/UploadStatus.js.map +1 -0
- package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar.d.ts +5 -0
- package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar.js +48 -0
- package/modules/FileManagerRenderer/DefaultRenderer/BottomInfoBar.js.map +1 -0
- package/modules/FileManagerRenderer/DefaultRenderer/DropFilesHere.d.ts +11 -0
- package/modules/FileManagerRenderer/DefaultRenderer/DropFilesHere.js +68 -0
- package/modules/FileManagerRenderer/DefaultRenderer/DropFilesHere.js.map +1 -0
- package/modules/FileManagerRenderer/DefaultRenderer/EmptyView.d.ts +7 -0
- package/modules/FileManagerRenderer/DefaultRenderer/EmptyView.js +32 -0
- package/modules/FileManagerRenderer/DefaultRenderer/EmptyView.js.map +1 -0
- package/modules/FileManagerRenderer/DefaultRenderer/File.d.ts +16 -0
- package/modules/FileManagerRenderer/DefaultRenderer/File.js +131 -0
- package/modules/FileManagerRenderer/DefaultRenderer/File.js.map +1 -0
- package/modules/FileManagerRenderer/DefaultRenderer/FileManagerView.d.ts +18 -0
- package/modules/FileManagerRenderer/DefaultRenderer/FileManagerView.js +443 -0
- package/modules/FileManagerRenderer/DefaultRenderer/FileManagerView.js.map +1 -0
- package/modules/FileManagerRenderer/DefaultRenderer/LeftSidebar.d.ts +6 -0
- package/modules/FileManagerRenderer/DefaultRenderer/LeftSidebar.js +96 -0
- package/modules/FileManagerRenderer/DefaultRenderer/LeftSidebar.js.map +1 -0
- package/modules/FileManagerRenderer/DefaultRenderer/NoPermissionView.d.ts +3 -0
- package/modules/FileManagerRenderer/DefaultRenderer/NoPermissionView.js +74 -0
- package/modules/FileManagerRenderer/DefaultRenderer/NoPermissionView.js.map +1 -0
- package/modules/FileManagerRenderer/DefaultRenderer/NoResults.d.ts +3 -0
- package/modules/FileManagerRenderer/DefaultRenderer/NoResults.js +22 -0
- package/modules/FileManagerRenderer/DefaultRenderer/NoResults.js.map +1 -0
- package/modules/FileManagerRenderer/DefaultRenderer/index.d.ts +2 -0
- package/modules/FileManagerRenderer/DefaultRenderer/index.js +70 -0
- package/modules/FileManagerRenderer/DefaultRenderer/index.js.map +1 -0
- package/modules/FileManagerRenderer/DefaultRenderer/outputFileSelectionError.d.ts +2 -0
- package/modules/FileManagerRenderer/DefaultRenderer/outputFileSelectionError.js +40 -0
- package/modules/FileManagerRenderer/DefaultRenderer/outputFileSelectionError.js.map +1 -0
- package/modules/FileManagerRenderer/FileManagerViewProvider/FileManagerViewContext.d.ts +47 -0
- package/modules/FileManagerRenderer/FileManagerViewProvider/FileManagerViewContext.js +448 -0
- package/modules/FileManagerRenderer/FileManagerViewProvider/FileManagerViewContext.js.map +1 -0
- package/modules/FileManagerRenderer/FileManagerViewProvider/index.d.ts +2 -0
- package/modules/FileManagerRenderer/FileManagerViewProvider/index.js +27 -0
- package/modules/FileManagerRenderer/FileManagerViewProvider/index.js.map +1 -0
- package/modules/FileManagerRenderer/FileManagerViewProvider/stateReducer.d.ts +63 -0
- package/modules/FileManagerRenderer/FileManagerViewProvider/stateReducer.js +100 -0
- package/modules/FileManagerRenderer/FileManagerViewProvider/stateReducer.js.map +1 -0
- package/modules/FileManagerRenderer/FileManagerViewProvider/useFileManagerView.d.ts +3 -0
- package/modules/FileManagerRenderer/FileManagerViewProvider/useFileManagerView.js +15 -0
- package/modules/FileManagerRenderer/FileManagerViewProvider/useFileManagerView.js.map +1 -0
- package/modules/FileManagerRenderer/index.d.ts +2 -0
- package/modules/FileManagerRenderer/index.js +13 -0
- package/modules/FileManagerRenderer/index.js.map +1 -0
- package/modules/FileTypes/fileDefault.d.ts +2 -0
- package/modules/FileTypes/fileDefault.js +28 -0
- package/modules/FileTypes/fileDefault.js.map +1 -0
- package/modules/FileTypes/fileImage/EditAction.d.ts +7 -0
- package/modules/FileTypes/fileImage/EditAction.js +123 -0
- package/modules/FileTypes/fileImage/EditAction.js.map +1 -0
- package/modules/FileTypes/fileImage/index.d.ts +2 -0
- package/modules/FileTypes/fileImage/index.js +37 -0
- package/modules/FileTypes/fileImage/index.js.map +1 -0
- package/modules/FileTypes/icons/edit.svg +17 -0
- package/modules/FileTypes/icons/round-description-24px.svg +1 -0
- package/modules/FileTypes/index.d.ts +1 -0
- package/modules/FileTypes/index.js +32 -0
- package/modules/FileTypes/index.js.map +1 -0
- package/modules/Settings/assets/icons/folder-open.svg +1 -0
- package/modules/Settings/graphql.d.ts +5 -0
- package/modules/Settings/graphql.js +17 -0
- package/modules/Settings/graphql.js.map +1 -0
- package/modules/Settings/index.d.ts +2 -0
- package/modules/Settings/index.js +35 -0
- package/modules/Settings/index.js.map +1 -0
- package/modules/Settings/plugins/installation.d.ts +3 -0
- package/modules/Settings/plugins/installation.js +103 -0
- package/modules/Settings/plugins/installation.js.map +1 -0
- package/modules/Settings/plugins/permissionRenderer/FileManagerPermissions.d.ts +14 -0
- package/modules/Settings/plugins/permissionRenderer/FileManagerPermissions.js +217 -0
- package/modules/Settings/plugins/permissionRenderer/FileManagerPermissions.js.map +1 -0
- package/modules/Settings/plugins/permissionRenderer/index.d.ts +3 -0
- package/modules/Settings/plugins/permissionRenderer/index.js +28 -0
- package/modules/Settings/plugins/permissionRenderer/index.js.map +1 -0
- package/modules/Settings/views/FileManagerSettings.d.ts +2 -0
- package/modules/Settings/views/FileManagerSettings.js +132 -0
- package/modules/Settings/views/FileManagerSettings.js.map +1 -0
- package/package.json +28 -16
|
@@ -0,0 +1,443 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
|
|
12
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
13
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
14
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
16
|
+
var _reactButterfiles = _interopRequireDefault(require("react-butterfiles"));
|
|
17
|
+
var _emotion = require("emotion");
|
|
18
|
+
var _debounce = _interopRequireDefault(require("lodash/debounce"));
|
|
19
|
+
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
20
|
+
var _reactHotkeyz = require("react-hotkeyz");
|
|
21
|
+
var _search = require("@material-design-icons/svg/outlined/search.svg");
|
|
22
|
+
var _cloud_upload = require("@material-design-icons/svg/filled/cloud_upload.svg");
|
|
23
|
+
var _Button = require("@webiny/ui/Button");
|
|
24
|
+
var _Icon = require("@webiny/ui/Icon");
|
|
25
|
+
var _Scrollbar = require("@webiny/ui/Scrollbar");
|
|
26
|
+
var _Progress = require("@webiny/ui/Progress");
|
|
27
|
+
var _i18n = require("@webiny/app/i18n");
|
|
28
|
+
var _appAdmin = require("@webiny/app-admin");
|
|
29
|
+
var _File = _interopRequireDefault(require("./File"));
|
|
30
|
+
var _getFileTypePlugin = _interopRequireDefault(require("../../../getFileTypePlugin"));
|
|
31
|
+
var _outputFileSelectionError = require("./outputFileSelectionError");
|
|
32
|
+
var _DropFilesHere = _interopRequireDefault(require("./DropFilesHere"));
|
|
33
|
+
var _FileDetails = require("../../../components/FileDetails");
|
|
34
|
+
var _LeftSidebar = _interopRequireDefault(require("./LeftSidebar"));
|
|
35
|
+
var _BottomInfoBar = _interopRequireDefault(require("./BottomInfoBar"));
|
|
36
|
+
var _ = require("../../..");
|
|
37
|
+
var _EmptyView = require("./EmptyView");
|
|
38
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
|
|
39
|
+
var t = _i18n.i18n.ns("app-admin/file-manager/file-manager-view");
|
|
40
|
+
var InputSearch = /*#__PURE__*/(0, _styled.default)("div", {
|
|
41
|
+
target: "eo7d5v20",
|
|
42
|
+
label: "InputSearch"
|
|
43
|
+
})({
|
|
44
|
+
backgroundColor: "var(--mdc-theme-on-background)",
|
|
45
|
+
position: "relative",
|
|
46
|
+
height: 32,
|
|
47
|
+
padding: 3,
|
|
48
|
+
width: "100%",
|
|
49
|
+
borderRadius: 2,
|
|
50
|
+
"> input": {
|
|
51
|
+
border: "none",
|
|
52
|
+
fontSize: 14,
|
|
53
|
+
width: "calc(100% - 10px)",
|
|
54
|
+
height: "100%",
|
|
55
|
+
marginLeft: 50,
|
|
56
|
+
backgroundColor: "transparent",
|
|
57
|
+
outline: "none",
|
|
58
|
+
color: "var(--mdc-theme-text-primary-on-background)"
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
var searchIcon = /*#__PURE__*/(0, _emotion.css)({
|
|
62
|
+
"&.mdc-button__icon": {
|
|
63
|
+
color: "var(--mdc-theme-text-secondary-on-background)",
|
|
64
|
+
position: "absolute",
|
|
65
|
+
width: 24,
|
|
66
|
+
height: 24,
|
|
67
|
+
left: 15,
|
|
68
|
+
top: 7
|
|
69
|
+
}
|
|
70
|
+
}, "label:searchIcon;");
|
|
71
|
+
var FileListWrapper = /*#__PURE__*/(0, _styled.default)("div", {
|
|
72
|
+
target: "eo7d5v21",
|
|
73
|
+
label: "FileListWrapper"
|
|
74
|
+
})({
|
|
75
|
+
float: "right",
|
|
76
|
+
display: "inline-block",
|
|
77
|
+
width: "calc(100vw - 270px)",
|
|
78
|
+
height: "100%"
|
|
79
|
+
});
|
|
80
|
+
var FileList = /*#__PURE__*/(0, _styled.default)("div", {
|
|
81
|
+
target: "eo7d5v22",
|
|
82
|
+
label: "FileList"
|
|
83
|
+
})({
|
|
84
|
+
width: "100%",
|
|
85
|
+
display: "grid",
|
|
86
|
+
/* define the number of grid columns */
|
|
87
|
+
gridTemplateColumns: "repeat( auto-fill, minmax(220px, 1fr) )",
|
|
88
|
+
marginBottom: 95
|
|
89
|
+
});
|
|
90
|
+
var renderFile = function renderFile(props) {
|
|
91
|
+
var file = props.file;
|
|
92
|
+
var plugin = (0, _getFileTypePlugin.default)(file);
|
|
93
|
+
if (!plugin) {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
return /*#__PURE__*/_react.default.createElement(_File.default, Object.assign({}, props, {
|
|
97
|
+
key: file.id
|
|
98
|
+
}), plugin.render({
|
|
99
|
+
/**
|
|
100
|
+
* TODO @ts-refactor
|
|
101
|
+
*/
|
|
102
|
+
// @ts-ignore
|
|
103
|
+
file: file
|
|
104
|
+
}));
|
|
105
|
+
};
|
|
106
|
+
var FileManagerView = function FileManagerView(props) {
|
|
107
|
+
var onClose = props.onClose,
|
|
108
|
+
onChange = props.onChange,
|
|
109
|
+
accept = props.accept,
|
|
110
|
+
_props$multiple = props.multiple,
|
|
111
|
+
multiple = _props$multiple === void 0 ? false : _props$multiple,
|
|
112
|
+
onUploadCompletion = props.onUploadCompletion;
|
|
113
|
+
var _useFileManagerView = (0, _.useFileManagerView)(),
|
|
114
|
+
files = _useFileManagerView.files,
|
|
115
|
+
loadingFiles = _useFileManagerView.loadingFiles,
|
|
116
|
+
loadMore = _useFileManagerView.loadMore,
|
|
117
|
+
selected = _useFileManagerView.selected,
|
|
118
|
+
toggleSelected = _useFileManagerView.toggleSelected,
|
|
119
|
+
dragging = _useFileManagerView.dragging,
|
|
120
|
+
setDragging = _useFileManagerView.setDragging,
|
|
121
|
+
uploading = _useFileManagerView.uploading,
|
|
122
|
+
setUploading = _useFileManagerView.setUploading,
|
|
123
|
+
_showFileDetails = _useFileManagerView.showFileDetails,
|
|
124
|
+
hideFileDetails = _useFileManagerView.hideFileDetails,
|
|
125
|
+
showingFileDetails = _useFileManagerView.showingFileDetails,
|
|
126
|
+
queryParams = _useFileManagerView.queryParams,
|
|
127
|
+
setQueryParams = _useFileManagerView.setQueryParams,
|
|
128
|
+
hasPreviouslyUploadedFiles = _useFileManagerView.hasPreviouslyUploadedFiles,
|
|
129
|
+
setHasPreviouslyUploadedFiles = _useFileManagerView.setHasPreviouslyUploadedFiles,
|
|
130
|
+
uploadFile = _useFileManagerView.uploadFile,
|
|
131
|
+
settings = _useFileManagerView.settings;
|
|
132
|
+
var fileManager = (0, _.useFileManagerApi)();
|
|
133
|
+
var _useSnackbar = (0, _appAdmin.useSnackbar)(),
|
|
134
|
+
showSnackbar = _useSnackbar.showSnackbar;
|
|
135
|
+
var searchOnChange = (0, _react.useCallback)(
|
|
136
|
+
// @ts-ignore
|
|
137
|
+
(0, _debounce.default)(function (search) {
|
|
138
|
+
return setQueryParams({
|
|
139
|
+
search: search
|
|
140
|
+
});
|
|
141
|
+
}, 500), []);
|
|
142
|
+
var _toggleTag = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
143
|
+
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(_ref) {
|
|
144
|
+
var tag, queryParams, finalTags;
|
|
145
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
|
146
|
+
while (1) switch (_context.prev = _context.next) {
|
|
147
|
+
case 0:
|
|
148
|
+
tag = _ref.tag, queryParams = _ref.queryParams;
|
|
149
|
+
finalTags = Array.isArray(queryParams.tags) ? (0, _toConsumableArray2.default)(queryParams.tags) : [];
|
|
150
|
+
if (finalTags.includes(tag)) {
|
|
151
|
+
finalTags.splice(finalTags.indexOf(tag), 1);
|
|
152
|
+
} else {
|
|
153
|
+
finalTags.push(tag);
|
|
154
|
+
}
|
|
155
|
+
setQueryParams((0, _objectSpread2.default)((0, _objectSpread2.default)({}, queryParams), {}, {
|
|
156
|
+
tags: finalTags
|
|
157
|
+
}));
|
|
158
|
+
case 4:
|
|
159
|
+
case "end":
|
|
160
|
+
return _context.stop();
|
|
161
|
+
}
|
|
162
|
+
}, _callee);
|
|
163
|
+
}));
|
|
164
|
+
return function (_x) {
|
|
165
|
+
return _ref2.apply(this, arguments);
|
|
166
|
+
};
|
|
167
|
+
}(), []);
|
|
168
|
+
var getFileUploadErrorMessage = (0, _react.useCallback)(function (e) {
|
|
169
|
+
if (typeof e === "string") {
|
|
170
|
+
var match = e.match(/Message>(.*?)<\/Message/);
|
|
171
|
+
if (match) {
|
|
172
|
+
var _match = (0, _slicedToArray2.default)(match, 2),
|
|
173
|
+
message = _match[1];
|
|
174
|
+
return message;
|
|
175
|
+
}
|
|
176
|
+
return e;
|
|
177
|
+
}
|
|
178
|
+
return e.message;
|
|
179
|
+
}, []);
|
|
180
|
+
(0, _reactHotkeyz.useHotkeys)({
|
|
181
|
+
zIndex: 50,
|
|
182
|
+
keys: {
|
|
183
|
+
esc: onClose
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
var searchInput = (0, _react.useRef)(null);
|
|
187
|
+
var refreshOnScroll = (0, _react.useCallback)((0, _debounce.default)(function (_ref3) {
|
|
188
|
+
var scrollFrame = _ref3.scrollFrame,
|
|
189
|
+
loadMore = _ref3.loadMore;
|
|
190
|
+
if (scrollFrame.top > 0.9) {
|
|
191
|
+
loadMore();
|
|
192
|
+
}
|
|
193
|
+
}, 500), [loadMore]);
|
|
194
|
+
var uploadFiles = /*#__PURE__*/function () {
|
|
195
|
+
var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee3(files) {
|
|
196
|
+
var list, errors, uploadedFiles;
|
|
197
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee3$(_context3) {
|
|
198
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
199
|
+
case 0:
|
|
200
|
+
setUploading(true);
|
|
201
|
+
list = Array.isArray(files) ? files : [files];
|
|
202
|
+
errors = [];
|
|
203
|
+
uploadedFiles = [];
|
|
204
|
+
_context3.next = 6;
|
|
205
|
+
return Promise.all(list.map( /*#__PURE__*/function () {
|
|
206
|
+
var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee2(file) {
|
|
207
|
+
var newFile;
|
|
208
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee2$(_context2) {
|
|
209
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
210
|
+
case 0:
|
|
211
|
+
_context2.prev = 0;
|
|
212
|
+
_context2.next = 3;
|
|
213
|
+
return uploadFile(file);
|
|
214
|
+
case 3:
|
|
215
|
+
newFile = _context2.sent;
|
|
216
|
+
if (newFile) {
|
|
217
|
+
uploadedFiles.push(newFile);
|
|
218
|
+
}
|
|
219
|
+
_context2.next = 10;
|
|
220
|
+
break;
|
|
221
|
+
case 7:
|
|
222
|
+
_context2.prev = 7;
|
|
223
|
+
_context2.t0 = _context2["catch"](0);
|
|
224
|
+
errors.push({
|
|
225
|
+
file: file,
|
|
226
|
+
e: _context2.t0
|
|
227
|
+
});
|
|
228
|
+
case 10:
|
|
229
|
+
case "end":
|
|
230
|
+
return _context2.stop();
|
|
231
|
+
}
|
|
232
|
+
}, _callee2, null, [[0, 7]]);
|
|
233
|
+
}));
|
|
234
|
+
return function (_x3) {
|
|
235
|
+
return _ref5.apply(this, arguments);
|
|
236
|
+
};
|
|
237
|
+
}()));
|
|
238
|
+
case 6:
|
|
239
|
+
if (!hasPreviouslyUploadedFiles) {
|
|
240
|
+
setHasPreviouslyUploadedFiles(true);
|
|
241
|
+
}
|
|
242
|
+
setUploading(false);
|
|
243
|
+
if (!(errors.length > 0)) {
|
|
244
|
+
_context3.next = 10;
|
|
245
|
+
break;
|
|
246
|
+
}
|
|
247
|
+
return _context3.abrupt("return", setTimeout(function () {
|
|
248
|
+
showSnackbar( /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["One or more files were not uploaded successfully:"]))), /*#__PURE__*/_react.default.createElement("ol", null, errors.map(function (_ref6) {
|
|
249
|
+
var file = _ref6.file,
|
|
250
|
+
e = _ref6.e;
|
|
251
|
+
return /*#__PURE__*/_react.default.createElement("li", {
|
|
252
|
+
key: file.name
|
|
253
|
+
}, /*#__PURE__*/_react.default.createElement("strong", null, file.name), ": ", getFileUploadErrorMessage(e));
|
|
254
|
+
}))));
|
|
255
|
+
// TODO @ts-refactor
|
|
256
|
+
}, 750));
|
|
257
|
+
case 10:
|
|
258
|
+
// We wait 750ms, just for everything to settle down a bit.
|
|
259
|
+
setTimeout(function () {
|
|
260
|
+
return showSnackbar(t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["File upload complete."]))));
|
|
261
|
+
}, 750);
|
|
262
|
+
if (!(typeof onUploadCompletion === "function")) {
|
|
263
|
+
_context3.next = 13;
|
|
264
|
+
break;
|
|
265
|
+
}
|
|
266
|
+
return _context3.abrupt("return", setTimeout(function () {
|
|
267
|
+
onUploadCompletion(uploadedFiles);
|
|
268
|
+
onClose && onClose();
|
|
269
|
+
// TODO @ts-refactor
|
|
270
|
+
}, 750));
|
|
271
|
+
case 13:
|
|
272
|
+
return _context3.abrupt("return", null);
|
|
273
|
+
case 14:
|
|
274
|
+
case "end":
|
|
275
|
+
return _context3.stop();
|
|
276
|
+
}
|
|
277
|
+
}, _callee3);
|
|
278
|
+
}));
|
|
279
|
+
return function uploadFiles(_x2) {
|
|
280
|
+
return _ref4.apply(this, arguments);
|
|
281
|
+
};
|
|
282
|
+
}();
|
|
283
|
+
var renderUploadFileAction = (0, _react.useCallback)(function (_ref7) {
|
|
284
|
+
var browseFiles = _ref7.browseFiles;
|
|
285
|
+
if (!fileManager.canCreate) {
|
|
286
|
+
return null;
|
|
287
|
+
}
|
|
288
|
+
return /*#__PURE__*/_react.default.createElement(_Button.ButtonPrimary, {
|
|
289
|
+
onClick: browseFiles,
|
|
290
|
+
disabled: uploading
|
|
291
|
+
}, /*#__PURE__*/_react.default.createElement(_Button.ButtonIcon, {
|
|
292
|
+
icon: /*#__PURE__*/_react.default.createElement(_cloud_upload.ReactComponent, null)
|
|
293
|
+
}), t(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["Upload..."]))));
|
|
294
|
+
}, [uploading, fileManager.canCreate]);
|
|
295
|
+
return /*#__PURE__*/_react.default.createElement(_reactButterfiles.default, {
|
|
296
|
+
multiple: true,
|
|
297
|
+
maxSize: settings ? settings.uploadMaxFileSize + "b" : "1TB",
|
|
298
|
+
multipleMaxSize: "1TB",
|
|
299
|
+
accept: accept,
|
|
300
|
+
onSuccess: function onSuccess(files) {
|
|
301
|
+
var filesToUpload = files.map(function (file) {
|
|
302
|
+
return file.src.file;
|
|
303
|
+
}).filter(Boolean);
|
|
304
|
+
uploadFiles(filesToUpload);
|
|
305
|
+
},
|
|
306
|
+
onError: function onError(errors) {
|
|
307
|
+
console.log("onError", errors);
|
|
308
|
+
var message = (0, _outputFileSelectionError.outputFileSelectionError)(errors);
|
|
309
|
+
showSnackbar(message);
|
|
310
|
+
}
|
|
311
|
+
}, function (_ref8) {
|
|
312
|
+
var getDropZoneProps = _ref8.getDropZoneProps,
|
|
313
|
+
browseFiles = _ref8.browseFiles;
|
|
314
|
+
return /*#__PURE__*/_react.default.createElement(_appAdmin.OverlayLayout, Object.assign({}, getDropZoneProps({
|
|
315
|
+
onDragEnter: function onDragEnter() {
|
|
316
|
+
return hasPreviouslyUploadedFiles && setDragging(true);
|
|
317
|
+
},
|
|
318
|
+
onExited: onClose
|
|
319
|
+
}), {
|
|
320
|
+
barLeft: /*#__PURE__*/_react.default.createElement(InputSearch, null, /*#__PURE__*/_react.default.createElement(_Icon.Icon, {
|
|
321
|
+
className: searchIcon,
|
|
322
|
+
icon: /*#__PURE__*/_react.default.createElement(_search.ReactComponent, null)
|
|
323
|
+
}), /*#__PURE__*/_react.default.createElement("input", {
|
|
324
|
+
ref: searchInput,
|
|
325
|
+
onChange: function onChange(e) {
|
|
326
|
+
return searchOnChange(e.target.value);
|
|
327
|
+
},
|
|
328
|
+
placeholder: t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["Search by filename or tags"]))),
|
|
329
|
+
disabled: !fileManager.canRead,
|
|
330
|
+
"data-testid": "file-manager.search-input"
|
|
331
|
+
})),
|
|
332
|
+
barRight: selected.length > 0 ? /*#__PURE__*/_react.default.createElement(_Button.ButtonPrimary, {
|
|
333
|
+
disabled: uploading,
|
|
334
|
+
onClick: function onClick() {
|
|
335
|
+
(0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee4() {
|
|
336
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee4$(_context4) {
|
|
337
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
338
|
+
case 0:
|
|
339
|
+
if (!(typeof onChange === "function")) {
|
|
340
|
+
_context4.next = 4;
|
|
341
|
+
break;
|
|
342
|
+
}
|
|
343
|
+
_context4.next = 3;
|
|
344
|
+
return onChange(multiple ? selected : selected[0]);
|
|
345
|
+
case 3:
|
|
346
|
+
onClose && onClose();
|
|
347
|
+
case 4:
|
|
348
|
+
case "end":
|
|
349
|
+
return _context4.stop();
|
|
350
|
+
}
|
|
351
|
+
}, _callee4);
|
|
352
|
+
}))();
|
|
353
|
+
}
|
|
354
|
+
}, t(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["Select"]))), " ", multiple && "(".concat(selected.length, ")")) : renderUploadFileAction({
|
|
355
|
+
browseFiles: browseFiles
|
|
356
|
+
})
|
|
357
|
+
}), /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, dragging && hasPreviouslyUploadedFiles && /*#__PURE__*/_react.default.createElement(_DropFilesHere.default, {
|
|
358
|
+
onDragLeave: function onDragLeave() {
|
|
359
|
+
return setDragging(false);
|
|
360
|
+
},
|
|
361
|
+
onDrop: function onDrop() {
|
|
362
|
+
return setDragging(false);
|
|
363
|
+
}
|
|
364
|
+
}), showingFileDetails ? /*#__PURE__*/_react.default.createElement(_FileDetails.FileDetails, {
|
|
365
|
+
file: files.find(function (item) {
|
|
366
|
+
return item.id === showingFileDetails;
|
|
367
|
+
}),
|
|
368
|
+
onClose: hideFileDetails
|
|
369
|
+
}) : null, /*#__PURE__*/_react.default.createElement(_LeftSidebar.default, {
|
|
370
|
+
toggleTag: function toggleTag(tag) {
|
|
371
|
+
return _toggleTag({
|
|
372
|
+
tag: tag,
|
|
373
|
+
queryParams: queryParams
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
}), /*#__PURE__*/_react.default.createElement(FileListWrapper, {
|
|
377
|
+
"data-testid": "fm-list-wrapper"
|
|
378
|
+
}, loadingFiles && /*#__PURE__*/_react.default.createElement(_Progress.CircularProgress, {
|
|
379
|
+
label: t(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["Loading Files..."]))),
|
|
380
|
+
style: {
|
|
381
|
+
opacity: 1
|
|
382
|
+
}
|
|
383
|
+
}), /*#__PURE__*/_react.default.createElement(_Scrollbar.Scrollbar, {
|
|
384
|
+
onScrollFrame: function onScrollFrame(scrollFrame) {
|
|
385
|
+
return refreshOnScroll({
|
|
386
|
+
scrollFrame: scrollFrame,
|
|
387
|
+
loadMore: loadMore
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
}, /*#__PURE__*/_react.default.createElement(FileList, null, files.length ? files.map(function (file) {
|
|
391
|
+
return renderFile({
|
|
392
|
+
file: file,
|
|
393
|
+
showFileDetails: function showFileDetails() {
|
|
394
|
+
return _showFileDetails(file.id);
|
|
395
|
+
},
|
|
396
|
+
selected: selected.some(function (current) {
|
|
397
|
+
return current.src === file.src;
|
|
398
|
+
}),
|
|
399
|
+
onSelect: function () {
|
|
400
|
+
var _onSelect = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee5() {
|
|
401
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee5$(_context5) {
|
|
402
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
403
|
+
case 0:
|
|
404
|
+
if (!(typeof onChange === "function")) {
|
|
405
|
+
_context5.next = 7;
|
|
406
|
+
break;
|
|
407
|
+
}
|
|
408
|
+
if (!multiple) {
|
|
409
|
+
_context5.next = 4;
|
|
410
|
+
break;
|
|
411
|
+
}
|
|
412
|
+
toggleSelected(file);
|
|
413
|
+
return _context5.abrupt("return");
|
|
414
|
+
case 4:
|
|
415
|
+
_context5.next = 6;
|
|
416
|
+
return onChange(file);
|
|
417
|
+
case 6:
|
|
418
|
+
onClose && onClose();
|
|
419
|
+
case 7:
|
|
420
|
+
case "end":
|
|
421
|
+
return _context5.stop();
|
|
422
|
+
}
|
|
423
|
+
}, _callee5);
|
|
424
|
+
}));
|
|
425
|
+
function onSelect() {
|
|
426
|
+
return _onSelect.apply(this, arguments);
|
|
427
|
+
}
|
|
428
|
+
return onSelect;
|
|
429
|
+
}()
|
|
430
|
+
});
|
|
431
|
+
}) : /*#__PURE__*/_react.default.createElement(_EmptyView.EmptyView, {
|
|
432
|
+
browseFiles: browseFiles
|
|
433
|
+
}))), /*#__PURE__*/_react.default.createElement(_BottomInfoBar.default, {
|
|
434
|
+
accept: accept,
|
|
435
|
+
uploading: uploading
|
|
436
|
+
}))));
|
|
437
|
+
});
|
|
438
|
+
};
|
|
439
|
+
FileManagerView.defaultProps = {
|
|
440
|
+
multiple: false
|
|
441
|
+
};
|
|
442
|
+
var _default = FileManagerView;
|
|
443
|
+
exports.default = _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","InputSearch","styled","backgroundColor","position","height","padding","width","borderRadius","border","fontSize","marginLeft","outline","color","searchIcon","css","left","top","FileListWrapper","float","display","FileList","gridTemplateColumns","marginBottom","renderFile","props","file","plugin","getFileTypePlugin","id","render","FileManagerView","onClose","onChange","accept","multiple","onUploadCompletion","useFileManagerView","files","loadingFiles","loadMore","selected","toggleSelected","dragging","setDragging","uploading","setUploading","showFileDetails","hideFileDetails","showingFileDetails","queryParams","setQueryParams","hasPreviouslyUploadedFiles","setHasPreviouslyUploadedFiles","uploadFile","settings","fileManager","useFileManagerApi","useSnackbar","showSnackbar","searchOnChange","useCallback","debounce","search","toggleTag","tag","finalTags","Array","isArray","tags","includes","splice","indexOf","push","getFileUploadErrorMessage","e","match","message","useHotkeys","zIndex","keys","esc","searchInput","useRef","refreshOnScroll","scrollFrame","uploadFiles","list","errors","uploadedFiles","Promise","all","map","newFile","length","setTimeout","name","renderUploadFileAction","browseFiles","canCreate","uploadMaxFileSize","filesToUpload","src","filter","Boolean","console","log","outputFileSelectionError","getDropZoneProps","onDragEnter","onExited","target","value","canRead","find","item","opacity","some","current","onSelect","defaultProps"],"sources":["FileManagerView.tsx"],"sourcesContent":["import React, { useRef, useCallback } from \"react\";\nimport Files from \"react-butterfiles\";\nimport { css } from \"emotion\";\nimport debounce from \"lodash/debounce\";\nimport styled from \"@emotion/styled\";\n// @ts-ignore\nimport { useHotkeys } from \"react-hotkeyz\";\nimport { FilesRules } from \"react-butterfiles\";\nimport { ReactComponent as SearchIcon } from \"@material-design-icons/svg/outlined/search.svg\";\nimport { ReactComponent as UploadIcon } from \"@material-design-icons/svg/filled/cloud_upload.svg\";\nimport { ButtonPrimary, ButtonIcon } from \"@webiny/ui/Button\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport { Scrollbar } from \"@webiny/ui/Scrollbar\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { FileItem } from \"@webiny/app-admin/types\";\nimport { OverlayLayout, useSnackbar } from \"@webiny/app-admin\";\nimport FileThumbnail, { FileProps } from \"./File\";\nimport getFileTypePlugin from \"~/getFileTypePlugin\";\nimport { outputFileSelectionError } from \"./outputFileSelectionError\";\nimport DropFilesHere from \"./DropFilesHere\";\nimport { FileDetails } from \"~/components/FileDetails\";\nimport LeftSidebar from \"./LeftSidebar\";\nimport BottomInfoBar from \"./BottomInfoBar\";\nimport { useFileManagerApi, useFileManagerView } from \"~/index\";\nimport { EmptyView } from \"./EmptyView\";\n\nconst t = i18n.ns(\"app-admin/file-manager/file-manager-view\");\n\nconst InputSearch = styled(\"div\")({\n backgroundColor: \"var(--mdc-theme-on-background)\",\n position: \"relative\",\n height: 32,\n padding: 3,\n width: \"100%\",\n borderRadius: 2,\n \"> input\": {\n border: \"none\",\n fontSize: 14,\n width: \"calc(100% - 10px)\",\n height: \"100%\",\n marginLeft: 50,\n backgroundColor: \"transparent\",\n outline: \"none\",\n color: \"var(--mdc-theme-text-primary-on-background)\"\n }\n});\n\nconst searchIcon = css({\n \"&.mdc-button__icon\": {\n color: \"var(--mdc-theme-text-secondary-on-background)\",\n position: \"absolute\",\n width: 24,\n height: 24,\n left: 15,\n top: 7\n }\n});\n\nconst FileListWrapper = styled(\"div\")({\n float: \"right\",\n display: \"inline-block\",\n width: \"calc(100vw - 270px)\",\n height: \"100%\"\n});\n\nconst FileList = styled(\"div\")({\n width: \"100%\",\n display: \"grid\",\n /* define the number of grid columns */\n gridTemplateColumns: \"repeat( auto-fill, minmax(220px, 1fr) )\",\n marginBottom: 95\n});\n\nexport interface FileManagerViewProps {\n onChange?: Function;\n onClose?: Function;\n files?: FilesRules;\n multiple?: boolean; // Does not affect <Files> component, it always allows multiple selection.\n accept: Array<string>;\n maxSize?: number | string;\n multipleMaxCount?: number;\n multipleMaxSize?: number | string;\n onUploadCompletion?: Function;\n tags?: string[];\n scope?: string;\n own?: boolean;\n}\n\ninterface RenderFileProps extends Omit<FileProps, \"children\"> {\n file: FileItem;\n children?: React.ReactNode;\n}\nconst renderFile: React.FC<RenderFileProps> = props => {\n const { file } = props;\n const plugin = getFileTypePlugin(file);\n if (!plugin) {\n return null;\n }\n return (\n <FileThumbnail {...props} key={file.id}>\n {plugin.render({\n /**\n * TODO @ts-refactor\n */\n // @ts-ignore\n file\n })}\n </FileThumbnail>\n );\n};\n\ninterface RefreshOnScrollParams {\n loadMore: () => void;\n scrollFrame: {\n top: number;\n };\n}\n\ninterface FileError {\n file: File;\n e: Error;\n}\n\nconst FileManagerView: React.FC<FileManagerViewProps> = props => {\n const { onClose, onChange, accept, multiple = false, onUploadCompletion } = props;\n\n const {\n files,\n loadingFiles,\n loadMore,\n selected,\n toggleSelected,\n dragging,\n setDragging,\n uploading,\n setUploading,\n showFileDetails,\n hideFileDetails,\n showingFileDetails,\n queryParams,\n setQueryParams,\n hasPreviouslyUploadedFiles,\n setHasPreviouslyUploadedFiles,\n uploadFile,\n settings\n } = useFileManagerView();\n\n const fileManager = useFileManagerApi();\n const { showSnackbar } = useSnackbar();\n\n const searchOnChange = useCallback(\n // @ts-ignore\n debounce(search => setQueryParams({ search }), 500),\n []\n );\n\n const toggleTag = useCallback(async ({ tag, queryParams }) => {\n const finalTags = Array.isArray(queryParams.tags) ? [...queryParams.tags] : [];\n\n if (finalTags.includes(tag)) {\n finalTags.splice(finalTags.indexOf(tag), 1);\n } else {\n finalTags.push(tag);\n }\n\n setQueryParams({ ...queryParams, tags: finalTags });\n }, []);\n\n const getFileUploadErrorMessage = useCallback(e => {\n if (typeof e === \"string\") {\n const match = e.match(/Message>(.*?)<\\/Message/);\n if (match) {\n const [, message] = match;\n return message;\n }\n\n return e;\n }\n return e.message;\n }, []);\n\n useHotkeys({\n zIndex: 50,\n keys: {\n esc: onClose\n }\n });\n\n const searchInput = useRef<HTMLInputElement>(null);\n\n const refreshOnScroll = useCallback(\n debounce(({ scrollFrame, loadMore }: RefreshOnScrollParams) => {\n if (scrollFrame.top > 0.9) {\n loadMore();\n }\n }, 500),\n [loadMore]\n );\n\n const uploadFiles = async (files: File | File[]): Promise<number | null> => {\n setUploading(true);\n const list: File[] = Array.isArray(files) ? files : [files];\n\n const errors: FileError[] = [];\n const uploadedFiles: FileItem[] = [];\n await Promise.all(\n list.map(async file => {\n try {\n const newFile = await uploadFile(file);\n\n if (newFile) {\n uploadedFiles.push(newFile);\n }\n } catch (e) {\n errors.push({ file, e });\n }\n })\n );\n\n if (!hasPreviouslyUploadedFiles) {\n setHasPreviouslyUploadedFiles(true);\n }\n\n setUploading(false);\n\n if (errors.length > 0) {\n // We wait 750ms, just for everything to settle down a bit.\n return setTimeout(() => {\n showSnackbar(\n <>\n {t`One or more files were not uploaded successfully:`}\n <ol>\n {errors.map(({ file, e }) => (\n <li key={file.name}>\n <strong>{file.name}</strong>: {getFileUploadErrorMessage(e)}\n </li>\n ))}\n </ol>\n </>\n );\n // TODO @ts-refactor\n }, 750) as unknown as number;\n }\n\n // We wait 750ms, just for everything to settle down a bit.\n setTimeout(() => showSnackbar(t`File upload complete.`), 750);\n if (typeof onUploadCompletion === \"function\") {\n // We wait 750ms, just for everything to settle down a bit.\n return setTimeout(() => {\n onUploadCompletion(uploadedFiles);\n onClose && onClose();\n // TODO @ts-refactor\n }, 750) as unknown as number;\n }\n return null;\n };\n\n const renderUploadFileAction = useCallback(\n ({ browseFiles }) => {\n if (!fileManager.canCreate) {\n return null;\n }\n return (\n <ButtonPrimary onClick={browseFiles} disabled={uploading}>\n <ButtonIcon icon={<UploadIcon />} />\n {t`Upload...`}\n </ButtonPrimary>\n );\n },\n [uploading, fileManager.canCreate]\n );\n\n return (\n <Files\n multiple\n maxSize={settings ? settings.uploadMaxFileSize + \"b\" : \"1TB\"}\n multipleMaxSize={\"1TB\"}\n accept={accept}\n onSuccess={files => {\n const filesToUpload = files.map(file => file.src.file).filter(Boolean) as File[];\n uploadFiles(filesToUpload);\n }}\n onError={errors => {\n console.log(\"onError\", errors);\n const message = outputFileSelectionError(errors);\n showSnackbar(message);\n }}\n >\n {({ getDropZoneProps, browseFiles }) => (\n <OverlayLayout\n {...getDropZoneProps({\n onDragEnter: () => hasPreviouslyUploadedFiles && setDragging(true),\n onExited: onClose\n })}\n barLeft={\n <InputSearch>\n <Icon className={searchIcon} icon={<SearchIcon />} />\n <input\n ref={searchInput}\n onChange={e => searchOnChange(e.target.value)}\n placeholder={t`Search by filename or tags`}\n disabled={!fileManager.canRead}\n data-testid={\"file-manager.search-input\"}\n />\n </InputSearch>\n }\n barRight={\n selected.length > 0 ? (\n <ButtonPrimary\n disabled={uploading}\n onClick={() => {\n (async () => {\n if (typeof onChange === \"function\") {\n await onChange(multiple ? selected : selected[0]);\n\n onClose && onClose();\n }\n })();\n }}\n >\n {t`Select`} {multiple && `(${selected.length})`}\n </ButtonPrimary>\n ) : (\n renderUploadFileAction({ browseFiles })\n )\n }\n >\n <>\n {dragging && hasPreviouslyUploadedFiles && (\n <DropFilesHere\n onDragLeave={() => setDragging(false)}\n onDrop={() => setDragging(false)}\n />\n )}\n\n {showingFileDetails ? (\n <FileDetails\n file={files.find(item => item.id === showingFileDetails)!}\n onClose={hideFileDetails}\n />\n ) : null}\n\n <LeftSidebar toggleTag={tag => toggleTag({ tag, queryParams })} />\n\n <FileListWrapper data-testid={\"fm-list-wrapper\"}>\n {loadingFiles && (\n <CircularProgress\n label={t`Loading Files...`}\n style={{ opacity: 1 }}\n />\n )}\n <Scrollbar\n onScrollFrame={scrollFrame =>\n refreshOnScroll({ scrollFrame, loadMore })\n }\n >\n <FileList>\n {files.length ? (\n files.map(file =>\n renderFile({\n file,\n showFileDetails: () => showFileDetails(file.id),\n selected: selected.some(\n current => current.src === file.src\n ),\n onSelect: async () => {\n if (typeof onChange === \"function\") {\n if (multiple) {\n toggleSelected(file);\n return;\n }\n\n await onChange(file);\n onClose && onClose();\n }\n }\n })\n )\n ) : (\n <EmptyView browseFiles={browseFiles} />\n )}\n </FileList>\n </Scrollbar>\n <BottomInfoBar accept={accept} uploading={uploading} />\n </FileListWrapper>\n </>\n </OverlayLayout>\n )}\n </Files>\n );\n};\n\nFileManagerView.defaultProps = {\n multiple: false\n};\n\nexport default FileManagerView;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _sortBy = _interopRequireDefault(require("lodash/sortBy"));
|
|
10
|
+
var _emotion = require("emotion");
|
|
11
|
+
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
12
|
+
var _Icon = require("@webiny/ui/Icon");
|
|
13
|
+
var _label = require("@material-design-icons/svg/outlined/label.svg");
|
|
14
|
+
var _ = require("../../..");
|
|
15
|
+
var style = {
|
|
16
|
+
leftDrawer: /*#__PURE__*/(0, _emotion.css)({
|
|
17
|
+
float: "left",
|
|
18
|
+
display: "inline-block",
|
|
19
|
+
width: 250,
|
|
20
|
+
height: "100%",
|
|
21
|
+
backgroundColor: "var(--mdc-theme-surface)",
|
|
22
|
+
padding: 10
|
|
23
|
+
}, "label:leftDrawer;"),
|
|
24
|
+
noTagged: /*#__PURE__*/(0, _emotion.css)({
|
|
25
|
+
paddingTop: 100,
|
|
26
|
+
textAlign: "center",
|
|
27
|
+
color: "var(--mdc-theme-on-surface)"
|
|
28
|
+
}, "label:noTagged;")
|
|
29
|
+
};
|
|
30
|
+
var TagList = /*#__PURE__*/(0, _styled.default)("div", {
|
|
31
|
+
target: "e1oiqid0",
|
|
32
|
+
label: "TagList"
|
|
33
|
+
})({
|
|
34
|
+
display: "flex",
|
|
35
|
+
flexDirection: "column"
|
|
36
|
+
});
|
|
37
|
+
var Tag = /*#__PURE__*/(0, _styled.default)("div", {
|
|
38
|
+
target: "e1oiqid1",
|
|
39
|
+
label: "Tag"
|
|
40
|
+
})({
|
|
41
|
+
display: "flex",
|
|
42
|
+
flexDirection: "row",
|
|
43
|
+
height: 40,
|
|
44
|
+
alignItems: "center",
|
|
45
|
+
cursor: "pointer",
|
|
46
|
+
paddingLeft: 15,
|
|
47
|
+
color: "var(--mdc-theme-on-surface)",
|
|
48
|
+
svg: {
|
|
49
|
+
color: "var(--mdc-theme-on-surface)",
|
|
50
|
+
marginRight: 10
|
|
51
|
+
},
|
|
52
|
+
"&:hover": {
|
|
53
|
+
backgroundColor: "var(--mdc-theme-background)"
|
|
54
|
+
},
|
|
55
|
+
"&.active": {
|
|
56
|
+
svg: {
|
|
57
|
+
color: "var(--mdc-theme-secondary)"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
var LeftSidebar = function LeftSidebar(_ref) {
|
|
62
|
+
var toggleTag = _ref.toggleTag;
|
|
63
|
+
var _useFileManagerView = (0, _.useFileManagerView)(),
|
|
64
|
+
queryParams = _useFileManagerView.queryParams,
|
|
65
|
+
tags = _useFileManagerView.tags;
|
|
66
|
+
var activeTags = Array.isArray(queryParams.tags) ? queryParams.tags : [];
|
|
67
|
+
if (tags.length === 0) {
|
|
68
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
69
|
+
className: style.leftDrawer,
|
|
70
|
+
"data-testid": "fm.left-drawer.empty-tag"
|
|
71
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
72
|
+
className: style.noTagged
|
|
73
|
+
}, "Once you tag a file, the tag will be displayed here."));
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Sort "tags" list in "ASC" order.
|
|
77
|
+
var sortedTags = (0, _sortBy.default)(tags);
|
|
78
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
79
|
+
className: style.leftDrawer
|
|
80
|
+
}, /*#__PURE__*/_react.default.createElement(TagList, {
|
|
81
|
+
"data-testid": "fm.left-drawer.tag-list"
|
|
82
|
+
}, sortedTags.map(function (tag, index) {
|
|
83
|
+
var className = activeTags.includes(tag) ? "active" : "";
|
|
84
|
+
return /*#__PURE__*/_react.default.createElement(Tag, {
|
|
85
|
+
className: className,
|
|
86
|
+
key: tag + index,
|
|
87
|
+
onClick: function onClick() {
|
|
88
|
+
return toggleTag(tag);
|
|
89
|
+
}
|
|
90
|
+
}, /*#__PURE__*/_react.default.createElement(_Icon.Icon, {
|
|
91
|
+
icon: /*#__PURE__*/_react.default.createElement(_label.ReactComponent, null)
|
|
92
|
+
}), " ", tag);
|
|
93
|
+
})));
|
|
94
|
+
};
|
|
95
|
+
var _default = LeftSidebar;
|
|
96
|
+
exports.default = _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["style","leftDrawer","css","float","display","width","height","backgroundColor","padding","noTagged","paddingTop","textAlign","color","TagList","styled","flexDirection","Tag","alignItems","cursor","paddingLeft","svg","marginRight","LeftSidebar","toggleTag","useFileManagerView","queryParams","tags","activeTags","Array","isArray","length","sortedTags","sortBy","map","tag","index","className","includes"],"sources":["LeftSidebar.tsx"],"sourcesContent":["import React from \"react\";\nimport sortBy from \"lodash/sortBy\";\nimport { css } from \"emotion\";\nimport styled from \"@emotion/styled\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport { ReactComponent as TagIcon } from \"@material-design-icons/svg/outlined/label.svg\";\nimport { useFileManagerView } from \"~/index\";\n\nconst style = {\n leftDrawer: css({\n float: \"left\",\n display: \"inline-block\",\n width: 250,\n height: \"100%\",\n backgroundColor: \"var(--mdc-theme-surface)\",\n padding: 10\n }),\n noTagged: css({\n paddingTop: 100,\n textAlign: \"center\",\n color: \"var(--mdc-theme-on-surface)\"\n })\n};\n\nconst TagList = styled(\"div\")({\n display: \"flex\",\n flexDirection: \"column\"\n});\n\nconst Tag = styled(\"div\")({\n display: \"flex\",\n flexDirection: \"row\",\n height: 40,\n alignItems: \"center\",\n cursor: \"pointer\",\n paddingLeft: 15,\n color: \"var(--mdc-theme-on-surface)\",\n svg: {\n color: \"var(--mdc-theme-on-surface)\",\n marginRight: 10\n },\n \"&:hover\": {\n backgroundColor: \"var(--mdc-theme-background)\"\n },\n \"&.active\": {\n svg: {\n color: \"var(--mdc-theme-secondary)\"\n }\n }\n});\n\ninterface LeftSidebarProps {\n toggleTag: (item: string) => void;\n}\nconst LeftSidebar = ({ toggleTag }: LeftSidebarProps) => {\n const { queryParams, tags } = useFileManagerView();\n const activeTags = Array.isArray(queryParams.tags) ? queryParams.tags : [];\n\n if (tags.length === 0) {\n return (\n <div className={style.leftDrawer} data-testid={\"fm.left-drawer.empty-tag\"}>\n <div className={style.noTagged}>\n Once you tag a file, the tag will be displayed here.\n </div>\n </div>\n );\n }\n\n // Sort \"tags\" list in \"ASC\" order.\n const sortedTags = sortBy(tags);\n\n return (\n <div className={style.leftDrawer}>\n <TagList data-testid={\"fm.left-drawer.tag-list\"}>\n {sortedTags.map((tag, index) => {\n const className = activeTags.includes(tag) ? \"active\" : \"\";\n return (\n <Tag className={className} key={tag + index} onClick={() => toggleTag(tag)}>\n <Icon icon={<TagIcon />} /> {tag}\n </Tag>\n );\n })}\n </TagList>\n </div>\n );\n};\n\nexport default LeftSidebar;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMA,KAAK,GAAG;EACVC,UAAU,eAAE,IAAAC,YAAG,EAAC;IACZC,KAAK,EAAE,MAAM;IACbC,OAAO,EAAE,cAAc;IACvBC,KAAK,EAAE,GAAG;IACVC,MAAM,EAAE,MAAM;IACdC,eAAe,EAAE,0BAA0B;IAC3CC,OAAO,EAAE;EACb,CAAC,sBAAC;EACFC,QAAQ,eAAE,IAAAP,YAAG,EAAC;IACVQ,UAAU,EAAE,GAAG;IACfC,SAAS,EAAE,QAAQ;IACnBC,KAAK,EAAE;EACX,CAAC;AACL,CAAC;AAED,IAAMC,OAAO,oBAAGC,eAAM,EAAC,KAAK;EAAA;EAAA;AAAA,GAAE;EAC1BV,OAAO,EAAE,MAAM;EACfW,aAAa,EAAE;AACnB,CAAC,CAAC;AAEF,IAAMC,GAAG,oBAAGF,eAAM,EAAC,KAAK;EAAA;EAAA;AAAA,GAAE;EACtBV,OAAO,EAAE,MAAM;EACfW,aAAa,EAAE,KAAK;EACpBT,MAAM,EAAE,EAAE;EACVW,UAAU,EAAE,QAAQ;EACpBC,MAAM,EAAE,SAAS;EACjBC,WAAW,EAAE,EAAE;EACfP,KAAK,EAAE,6BAA6B;EACpCQ,GAAG,EAAE;IACDR,KAAK,EAAE,6BAA6B;IACpCS,WAAW,EAAE;EACjB,CAAC;EACD,SAAS,EAAE;IACPd,eAAe,EAAE;EACrB,CAAC;EACD,UAAU,EAAE;IACRa,GAAG,EAAE;MACDR,KAAK,EAAE;IACX;EACJ;AACJ,CAAC,CAAC;AAKF,IAAMU,WAAW,GAAG,SAAdA,WAAW,OAAwC;EAAA,IAAlCC,SAAS,QAATA,SAAS;EAC5B,0BAA8B,IAAAC,oBAAkB,GAAE;IAA1CC,WAAW,uBAAXA,WAAW;IAAEC,IAAI,uBAAJA,IAAI;EACzB,IAAMC,UAAU,GAAGC,KAAK,CAACC,OAAO,CAACJ,WAAW,CAACC,IAAI,CAAC,GAAGD,WAAW,CAACC,IAAI,GAAG,EAAE;EAE1E,IAAIA,IAAI,CAACI,MAAM,KAAK,CAAC,EAAE;IACnB,oBACI;MAAK,SAAS,EAAE9B,KAAK,CAACC,UAAW;MAAC,eAAa;IAA2B,gBACtE;MAAK,SAAS,EAAED,KAAK,CAACS;IAAS,GAAC,sDAEhC,CAAM,CACJ;EAEd;;EAEA;EACA,IAAMsB,UAAU,GAAG,IAAAC,eAAM,EAACN,IAAI,CAAC;EAE/B,oBACI;IAAK,SAAS,EAAE1B,KAAK,CAACC;EAAW,gBAC7B,6BAAC,OAAO;IAAC,eAAa;EAA0B,GAC3C8B,UAAU,CAACE,GAAG,CAAC,UAACC,GAAG,EAAEC,KAAK,EAAK;IAC5B,IAAMC,SAAS,GAAGT,UAAU,CAACU,QAAQ,CAACH,GAAG,CAAC,GAAG,QAAQ,GAAG,EAAE;IAC1D,oBACI,6BAAC,GAAG;MAAC,SAAS,EAAEE,SAAU;MAAC,GAAG,EAAEF,GAAG,GAAGC,KAAM;MAAC,OAAO,EAAE;QAAA,OAAMZ,SAAS,CAACW,GAAG,CAAC;MAAA;IAAC,gBACvE,6BAAC,UAAI;MAAC,IAAI,eAAE,6BAAC,qBAAO;IAAI,EAAG,KAAC,EAACA,GAAG,CAC9B;EAEd,CAAC,CAAC,CACI,CACR;AAEd,CAAC;AAAC,eAEaZ,WAAW;AAAA"}
|