@bindu-dashing/dam-solution 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +1 -0
  2. package/dist/AssetType/assetTypeContainer.js +40 -0
  3. package/dist/AssetType/assetTypeTable.js +359 -0
  4. package/dist/AssetType/createAssetType.js +832 -0
  5. package/dist/AssetType/index.js +26 -0
  6. package/dist/AssetType/style.css +110 -0
  7. package/dist/Components/ImagePickerFiltersTest.js +121 -0
  8. package/dist/Components/ImagePickerTest.js +120 -0
  9. package/dist/CreateClient/createClient.js +34 -0
  10. package/dist/CreateClient/createClientForm.js +269 -0
  11. package/dist/CreateClient/index.js +26 -0
  12. package/dist/Folder/ImagePickerFolder.js +47 -0
  13. package/dist/Folder/index.js +26 -0
  14. package/dist/Folder/style.css +0 -0
  15. package/dist/Folders/bulkDownload.js +102 -0
  16. package/dist/Folders/bulkUpdate.js +186 -0
  17. package/dist/Folders/bulkUploadFiles.js +162 -0
  18. package/dist/Folders/bulkUploadUsingQueue.js +404 -0
  19. package/dist/Folders/createOrUpdateFolder.js +264 -0
  20. package/dist/Folders/exportFolder.js +109 -0
  21. package/dist/Folders/file.js +194 -0
  22. package/dist/Folders/fileManagementContainer.js +345 -0
  23. package/dist/Folders/files.js +315 -0
  24. package/dist/Folders/filesContainer.js +650 -0
  25. package/dist/Folders/filesListView.js +439 -0
  26. package/dist/Folders/foldersContainer.js +408 -0
  27. package/dist/Folders/foldersTree.js +136 -0
  28. package/dist/Folders/index.js +26 -0
  29. package/dist/Folders/style.css +400 -0
  30. package/dist/Folders/uploadFile.js +507 -0
  31. package/dist/ImagePicker/imagePicker.js +141 -0
  32. package/dist/ImagePicker/imagePickerFiles.js +42 -0
  33. package/dist/ImagePicker/index.js +26 -0
  34. package/dist/ImagePicker/style.css +128 -0
  35. package/dist/ImagePickerFilters/imagePickerFilters.js +382 -0
  36. package/dist/ImagePickerFilters/index.js +26 -0
  37. package/dist/ImagePickerFilters/style.css +15 -0
  38. package/dist/RefreshKey/index.js +26 -0
  39. package/dist/RefreshKey/refreshKey.js +86 -0
  40. package/dist/assets/images/default-img.svg +9 -0
  41. package/dist/constants/actionTypes.js +74 -0
  42. package/dist/constants/apiEndpoints.js +88 -0
  43. package/dist/constants/appConstants.js +55 -0
  44. package/dist/hocs/folderHelpers.js +76 -0
  45. package/dist/hocs/helpers.js +52 -0
  46. package/dist/hocs/useFetch.js +97 -0
  47. package/dist/index.js +55 -0
  48. package/package.json +61 -0
@@ -0,0 +1,439 @@
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 _antd = require("antd");
10
+ var _lodash = require("lodash");
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _icons = require("@ant-design/icons");
13
+ var _uploadFile = _interopRequireDefault(require("./uploadFile"));
14
+ var _dayjs = _interopRequireDefault(require("dayjs"));
15
+ var _useFetch = _interopRequireDefault(require("../hocs/useFetch"));
16
+ var APIS = _interopRequireWildcard(require("../constants/apiEndpoints"));
17
+ require("./style.css");
18
+ var _defaultImg = _interopRequireDefault(require("../assets/images/default-img.svg"));
19
+ var _helpers = require("../hocs/helpers");
20
+ const FilesListView = _ref => {
21
+ let {
22
+ isImagePicker,
23
+ onChangeSort,
24
+ sortOrders,
25
+ setSortOrders,
26
+ setSortOrder,
27
+ setSortBy,
28
+ onSelect,
29
+ files,
30
+ fetchFiles,
31
+ folder,
32
+ isAdmin,
33
+ damAccessKey,
34
+ secretKey,
35
+ subdomain,
36
+ styles,
37
+ assetTypes,
38
+ teams,
39
+ accessToken,
40
+ currentUser,
41
+ setIsAllFilesSelected,
42
+ isAllFilesSelected,
43
+ setSelectedFiles,
44
+ selectedFiles,
45
+ folderId,
46
+ onSearchFiles,
47
+ searchColumn,
48
+ setSearchColumn,
49
+ searchKey,
50
+ setSearchKey
51
+ } = _ref;
52
+ const [showEdit, setShowEdit] = (0, _react.useState)(false);
53
+ const [currentUpdatingFile, setCurrentUpdatingFile] = (0, _react.useState)(null);
54
+ const [loading, setLoading] = (0, _react.useState)(false);
55
+ const {
56
+ fetchApi
57
+ } = (0, _useFetch.default)();
58
+ const showConfirm = item => {
59
+ const deleteModal = _antd.Modal.confirm();
60
+ deleteModal.update({
61
+ title: "Do you want to delete this file?",
62
+ icon: /*#__PURE__*/_react.default.createElement(_icons.ExclamationCircleFilled, null),
63
+ footer: null,
64
+ content: /*#__PURE__*/_react.default.createElement(_antd.Row, {
65
+ justify: "end",
66
+ gutter: 10,
67
+ style: {
68
+ marginTop: "20px"
69
+ }
70
+ }, /*#__PURE__*/_react.default.createElement(_antd.Col, {
71
+ className: "gutter-row"
72
+ }, /*#__PURE__*/_react.default.createElement(_antd.Button, {
73
+ onClick: () => {
74
+ deleteModal.destroy();
75
+ }
76
+ }, "Cancel")), /*#__PURE__*/_react.default.createElement(_antd.Col, {
77
+ className: "gutter-row"
78
+ }, /*#__PURE__*/_react.default.createElement(_antd.Button, {
79
+ type: "primary",
80
+ danger: true,
81
+ loading: loading,
82
+ onClick: () => onDelete(item, deleteModal)
83
+ }, /*#__PURE__*/_react.default.createElement(_icons.DeleteOutlined, null), " Delete"))),
84
+ maskClosable: false
85
+ });
86
+ };
87
+ const onDelete = (item, deleteModal) => {
88
+ setLoading(true);
89
+ fetchApi({
90
+ params: {
91
+ folder_id: folder === null || folder === void 0 ? void 0 : folder.id
92
+ },
93
+ httpMethod: "delete",
94
+ route: APIS.DELETE_FILE.replace(":id", item === null || item === void 0 ? void 0 : item.id),
95
+ onSuccess: () => {
96
+ setLoading(false);
97
+ deleteModal.destroy();
98
+ _antd.notification.success({
99
+ message: "File deleted successfully"
100
+ });
101
+ fetchFiles(null, folder === null || folder === void 0 ? void 0 : folder.id);
102
+ },
103
+ onFailure: () => {
104
+ setLoading(false);
105
+ _antd.notification.success({
106
+ message: "Error while deleting file"
107
+ });
108
+ },
109
+ accessToken,
110
+ damAccessKey,
111
+ secretKey,
112
+ subdomain
113
+ });
114
+ };
115
+ const fileAssetTypeIds = files === null || files === void 0 ? void 0 : files.reduce((acc, file) => {
116
+ if (!(0, _lodash.includes)(acc, file === null || file === void 0 ? void 0 : file.asset_type_id)) {
117
+ acc.push(file === null || file === void 0 ? void 0 : file.asset_type_id);
118
+ }
119
+ return acc;
120
+ }, []);
121
+ const filteredAssetTypes = assetTypes === null || assetTypes === void 0 ? void 0 : assetTypes.filter(type => (0, _lodash.includes)(fileAssetTypeIds, type === null || type === void 0 ? void 0 : type.id));
122
+ const assetTypesMetadata = filteredAssetTypes === null || filteredAssetTypes === void 0 ? void 0 : filteredAssetTypes.reduce((acc, type) => {
123
+ const metadata = type === null || type === void 0 ? void 0 : type.metadata_fields;
124
+ const fields = metadata === null || metadata === void 0 ? void 0 : metadata.filter(field => {
125
+ return !(0, _lodash.includes)(acc, field === null || field === void 0 ? void 0 : field.name);
126
+ });
127
+ const fieldNames = fields === null || fields === void 0 ? void 0 : fields.map(field => {
128
+ var _field$is_searchable;
129
+ return {
130
+ name: field === null || field === void 0 ? void 0 : field.name,
131
+ isSearchable: (_field$is_searchable = field === null || field === void 0 ? void 0 : field.is_searchable) !== null && _field$is_searchable !== void 0 ? _field$is_searchable : false
132
+ };
133
+ });
134
+ acc = [...acc, ...fieldNames];
135
+ return acc;
136
+ }, []);
137
+ function humanFileSize(size) {
138
+ var i = size == 0 ? 0 : Math.floor(Math.log(size) / Math.log(1024));
139
+ return (size / Math.pow(1024, i)).toFixed(2) * 1 + " " + ["B", "kB", "MB", "GB", "TB"][i];
140
+ }
141
+ const onOpen = item => {
142
+ window.open(item === null || item === void 0 ? void 0 : item.thumbnail_url, "_blank");
143
+ };
144
+ const onDownload = item => {
145
+ window.open(item === null || item === void 0 ? void 0 : item.file_url, "_blank");
146
+ };
147
+ const handleSearch = () => {
148
+ onSearchFiles(folderId, null, null, null);
149
+ };
150
+ const getColumnSearchProps = dataIndex => ({
151
+ filterDropdown: () => /*#__PURE__*/_react.default.createElement("div", {
152
+ style: {
153
+ padding: 8
154
+ },
155
+ onKeyDown: e => e.stopPropagation()
156
+ }, /*#__PURE__*/_react.default.createElement(_antd.Input, {
157
+ placeholder: `Search`,
158
+ value: searchColumn == dataIndex ? searchKey : "",
159
+ onChange: e => {
160
+ setSearchColumn(dataIndex);
161
+ setSearchKey(e.target.value);
162
+ },
163
+ onPressEnter: () => handleSearch(),
164
+ style: {
165
+ marginBottom: 8,
166
+ display: "block"
167
+ }
168
+ }), /*#__PURE__*/_react.default.createElement("div", {
169
+ style: {
170
+ display: "flex"
171
+ }
172
+ }, /*#__PURE__*/_react.default.createElement(_antd.Button, {
173
+ type: "primary",
174
+ onClick: () => handleSearch(),
175
+ size: "small",
176
+ style: {
177
+ marginLeft: "auto"
178
+ }
179
+ }, "Search"))),
180
+ filterIcon: filtered => /*#__PURE__*/_react.default.createElement(_icons.SearchOutlined, {
181
+ style: {
182
+ color: filtered ? "#1677ff" : undefined
183
+ }
184
+ })
185
+ });
186
+ const columns = [{
187
+ title: "Name",
188
+ dataIndex: "name",
189
+ width: 300,
190
+ ...getColumnSearchProps("name"),
191
+ render: (value, record) => {
192
+ return /*#__PURE__*/_react.default.createElement("div", {
193
+ className: "dam-file-list-view-name"
194
+ }, ((record === null || record === void 0 ? void 0 : record.file_upload_status) == "success" || (record === null || record === void 0 ? void 0 : record.thumbnail_url)) && /*#__PURE__*/_react.default.createElement(_antd.Image, {
195
+ src: (0, _lodash.get)(record, "thumbnail_url"),
196
+ fallback: _defaultImg.default,
197
+ preview: false,
198
+ style: {
199
+ maxWidth: "75px",
200
+ maxHeight: "75px"
201
+ }
202
+ }), (record === null || record === void 0 ? void 0 : record.file_upload_status) == "failure" && /*#__PURE__*/_react.default.createElement(_antd.Image, {
203
+ width: "100%",
204
+ src: _defaultImg.default,
205
+ fallback: _defaultImg.default,
206
+ preview: false,
207
+ style: {
208
+ maxWidth: "75px",
209
+ maxHeight: "75px"
210
+ }
211
+ }), (record === null || record === void 0 ? void 0 : record.file_upload_status) == "pending" && /*#__PURE__*/_react.default.createElement(_antd.Spin, {
212
+ width: "100%",
213
+ className: "img-loading",
214
+ style: {
215
+ maxWidth: "75px",
216
+ maxHeight: "75px"
217
+ }
218
+ }), /*#__PURE__*/_react.default.createElement(_antd.Typography.Text, {
219
+ ellipsis: {
220
+ tooltip: true
221
+ }
222
+ }, value));
223
+ },
224
+ sorter: true,
225
+ fixed: "left",
226
+ filtered: true,
227
+ sortOrder: sortOrders === null || sortOrders === void 0 ? void 0 : sortOrders.name,
228
+ key: "name"
229
+ }, {
230
+ title: "Asset Type",
231
+ dataIndex: "asset_type",
232
+ width: "100%",
233
+ ellipsis: true,
234
+ filtered: true,
235
+ key: "asset_type",
236
+ width: 150,
237
+ ...getColumnSearchProps("asset_type")
238
+ }, {
239
+ title: "Format",
240
+ dataIndex: "type",
241
+ width: "100%",
242
+ render: value => {
243
+ const extension = value === null || value === void 0 ? void 0 : value.split(".");
244
+ return extension === null || extension === void 0 ? void 0 : extension[1];
245
+ },
246
+ filtered: true,
247
+ key: "type",
248
+ // ellipsis: true,
249
+ width: 100,
250
+ ...getColumnSearchProps("type")
251
+ }, {
252
+ title: "Size",
253
+ width: "100%",
254
+ dataIndex: "i_size",
255
+ render: value => {
256
+ return humanFileSize(value);
257
+ },
258
+ filtered: true,
259
+ sortOrder: sortOrders === null || sortOrders === void 0 ? void 0 : sortOrders.i_size,
260
+ sorter: true,
261
+ key: "i_size",
262
+ width: 100,
263
+ // ellipsis: true,
264
+ ...getColumnSearchProps("i_size")
265
+ }, {
266
+ title: "Folder name",
267
+ width: "100%",
268
+ dataIndex: "folder_name",
269
+ key: "folder_name",
270
+ // ellipsis: true,
271
+ width: 150,
272
+ ...getColumnSearchProps("folder_name")
273
+ }, ...(assetTypesMetadata === null || assetTypesMetadata === void 0 ? void 0 : assetTypesMetadata.map((asset, index) => {
274
+ return {
275
+ title: asset === null || asset === void 0 ? void 0 : asset.name,
276
+ dataIndex: asset === null || asset === void 0 ? void 0 : asset.name,
277
+ key: index,
278
+ // ellipsis: true,
279
+ filtered: asset === null || asset === void 0 ? void 0 : asset.isSearchable,
280
+ width: 150,
281
+ ...getColumnSearchProps(asset === null || asset === void 0 ? void 0 : asset.name)
282
+ };
283
+ })), {
284
+ title: "Creation date",
285
+ dataIndex: "created_at",
286
+ width: 200,
287
+ render: value => {
288
+ return (0, _dayjs.default)(value).format("MMM D, YYYY HH:MM a");
289
+ },
290
+ sortOrder: sortOrders === null || sortOrders === void 0 ? void 0 : sortOrders.created_at,
291
+ sorter: true,
292
+ key: "created_at",
293
+ ellipsis: true,
294
+ ...getColumnSearchProps("created_at")
295
+ }];
296
+ const items = item => {
297
+ const menuItems = [{
298
+ label: "Open",
299
+ icon: /*#__PURE__*/_react.default.createElement(_icons.EyeOutlined, null),
300
+ onClick: () => onOpen(item)
301
+ }, {
302
+ label: "Edit",
303
+ icon: /*#__PURE__*/_react.default.createElement(_icons.EditOutlined, null),
304
+ onClick: () => {
305
+ setShowEdit(true);
306
+ setCurrentUpdatingFile(item);
307
+ }
308
+ }];
309
+ if (isAdmin) {
310
+ menuItems.push({
311
+ label: "Download",
312
+ icon: /*#__PURE__*/_react.default.createElement(_icons.DownloadOutlined, null),
313
+ onClick: () => onDownload(item)
314
+ });
315
+ menuItems.push({
316
+ label: "Delete",
317
+ icon: /*#__PURE__*/_react.default.createElement(_icons.DeleteOutlined, null),
318
+ onClick: () => showConfirm(item)
319
+ });
320
+ }
321
+ return menuItems;
322
+ };
323
+ const rowSelection = {
324
+ onChange: (selectedRowKeys, selectedRows) => {
325
+ const item = selectedRows === null || selectedRows === void 0 ? void 0 : selectedRows[0];
326
+ if (item) {
327
+ var _selectedRows$;
328
+ const assetType = assetTypes === null || assetTypes === void 0 ? void 0 : assetTypes.find(type => (type === null || type === void 0 ? void 0 : type.id) === (item === null || item === void 0 ? void 0 : item.asset_type_id));
329
+ const value = (0, _helpers.getFormattedValue)(assetType === null || assetType === void 0 ? void 0 : assetType.output_format, item === null || item === void 0 ? void 0 : item.file_url, item);
330
+ onSelect(selectedRows === null || selectedRows === void 0 ? void 0 : (_selectedRows$ = selectedRows[0]) === null || _selectedRows$ === void 0 ? void 0 : _selectedRows$.thumbnail_url, value);
331
+ }
332
+ }
333
+ };
334
+ const finalColumns = isImagePicker ? columns : [{
335
+ title: /*#__PURE__*/_react.default.createElement(_antd.Checkbox, {
336
+ checked: isAllFilesSelected,
337
+ onChange: e => {
338
+ if (e.target.checked) {
339
+ setIsAllFilesSelected(true);
340
+ setSelectedFiles(files === null || files === void 0 ? void 0 : files.map(file => file === null || file === void 0 ? void 0 : file.id));
341
+ } else {
342
+ setIsAllFilesSelected(false);
343
+ setSelectedFiles([]);
344
+ }
345
+ }
346
+ }),
347
+ dataIndex: "",
348
+ width: 50,
349
+ render: props => {
350
+ return /*#__PURE__*/_react.default.createElement(_antd.Checkbox, {
351
+ checked: (0, _lodash.includes)(selectedFiles, props.id),
352
+ onChange: e => {
353
+ if (e.target.checked) {
354
+ setSelectedFiles(prevSelectedFiles => {
355
+ const allSelectedFiles = [...prevSelectedFiles, props.id];
356
+ if (allSelectedFiles.length == files.length) {
357
+ setIsAllFilesSelected(true);
358
+ }
359
+ return allSelectedFiles;
360
+ });
361
+ } else {
362
+ setSelectedFiles(prevSelectedFiles => {
363
+ return prevSelectedFiles.filter(id => id !== props.id);
364
+ });
365
+ setIsAllFilesSelected(false);
366
+ }
367
+ }
368
+ });
369
+ }
370
+ }, ...columns, {
371
+ title: "Actions",
372
+ fixed: "right",
373
+ render: record => {
374
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_antd.Dropdown, {
375
+ menu: {
376
+ items: items(record)
377
+ },
378
+ className: "more-icon",
379
+ trigger: ["click"],
380
+ placement: "bottomRight"
381
+ }, /*#__PURE__*/_react.default.createElement(_icons.MoreOutlined, null)));
382
+ },
383
+ key: "actions",
384
+ width: 100
385
+ }];
386
+ const handleTableChange = (pagination, filters, sorter) => {
387
+ setSortOrders(prev => {
388
+ return {
389
+ [sorter === null || sorter === void 0 ? void 0 : sorter.field]: sorter === null || sorter === void 0 ? void 0 : sorter.order
390
+ };
391
+ });
392
+ if (sorter !== null && sorter !== void 0 && sorter.order) {
393
+ setSortBy(sorter === null || sorter === void 0 ? void 0 : sorter.field);
394
+ setSortOrder((sorter === null || sorter === void 0 ? void 0 : sorter.order) == "ascend" ? "asc" : "desc");
395
+ onChangeSort(sorter === null || sorter === void 0 ? void 0 : sorter.field, (sorter === null || sorter === void 0 ? void 0 : sorter.order) == "ascend" ? "asc" : "desc");
396
+ }
397
+ };
398
+ const tableProps = isImagePicker ? {
399
+ rowSelection: {
400
+ type: "radio",
401
+ ...rowSelection
402
+ }
403
+ } : {};
404
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_antd.Table, Object.assign({
405
+ columns: finalColumns,
406
+ dataSource: files === null || files === void 0 ? void 0 : files.map(file => {
407
+ return {
408
+ ...file,
409
+ key: file === null || file === void 0 ? void 0 : file.id
410
+ };
411
+ }),
412
+ className: "dam-files-list-view",
413
+ pagination: false,
414
+ sticky: true,
415
+ scroll: {
416
+ x: 1300
417
+ // overflow: "scroll",
418
+ // scrollToFirstRowOnChange: true,
419
+ },
420
+
421
+ onChange: handleTableChange
422
+ }, tableProps)), showEdit && /*#__PURE__*/_react.default.createElement(_uploadFile.default, {
423
+ setShowUploadFile: setShowEdit,
424
+ id: currentUpdatingFile === null || currentUpdatingFile === void 0 ? void 0 : currentUpdatingFile.id,
425
+ folderId: currentUpdatingFile === null || currentUpdatingFile === void 0 ? void 0 : currentUpdatingFile.folder_id,
426
+ teams: teams,
427
+ currentUser: currentUser,
428
+ fetchFiles: fetchFiles,
429
+ folder: folder,
430
+ styles: styles,
431
+ damAccessKey: damAccessKey,
432
+ secretKey: secretKey,
433
+ subdomain: subdomain,
434
+ accessToken: accessToken,
435
+ key: currentUpdatingFile === null || currentUpdatingFile === void 0 ? void 0 : currentUpdatingFile.id
436
+ }));
437
+ };
438
+ var _default = FilesListView;
439
+ exports.default = _default;