@scaleflex/widget-explorer 4.5.0 → 4.5.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/CHANGELOG.md +11 -0
- package/README.md +21 -3
- package/lib/components/ActionBar/DownloadWithExportButton.js +32 -4
- package/lib/components/AssetsList/ListView/AssetsSection/AssetsSectionTableRow.js +1 -1
- package/lib/components/Breadcrumbs/index.js +114 -6
- package/lib/components/CollectionsView/CollectionFolderIcon.js +35 -0
- package/lib/components/CollectionsView/CollectionVirtualFoldersTree/CollectionTreeSkeletion.js +26 -0
- package/lib/components/CollectionsView/CollectionVirtualFoldersTree/CollectionVirtualFoldersTree.styled.js +52 -0
- package/lib/components/CollectionsView/CollectionVirtualFoldersTree/CollectionVirtualFoldersTree.utils.js +24 -0
- package/lib/components/CollectionsView/CollectionVirtualFoldersTree/Folder.js +88 -0
- package/lib/components/CollectionsView/CollectionVirtualFoldersTree/Tree.js +50 -0
- package/lib/components/CollectionsView/CollectionVirtualFoldersTree/index.js +75 -0
- package/lib/components/CollectionsView/CollectionsSkeleton.js +30 -0
- package/lib/components/CollectionsView/CollectionsTree/ActiveCollectionContent.js +61 -0
- package/lib/components/CollectionsView/CollectionsTree/CollectionTreeItem.js +44 -0
- package/lib/components/CollectionsView/CollectionsTree/CollectionsContent.js +130 -0
- package/lib/components/CollectionsView/CollectionsTree/CollectionsTree.styled.js +84 -0
- package/lib/components/CollectionsView/CollectionsTree/index.js +47 -0
- package/lib/components/CollectionsView/CollectionsView.styled.js +38 -0
- package/lib/components/CollectionsView/VirtualFoldersGrid.js +67 -0
- package/lib/components/CollectionsView/index.js +188 -0
- package/lib/components/Details/Details.constants.js +1 -0
- package/lib/components/FileItem/FileInfo/index.js +8 -2
- package/lib/components/FileWindowPanel/FileTabs/VariationsTab/VariationsTabNavigator.js +1 -7
- package/lib/components/FileWindowPanel/FileTabs/VariationsTab/index.js +4 -1
- package/lib/components/FileWindowPanel/Header/index.js +9 -0
- package/lib/components/Filters/hooks/useFilters.js +3 -2
- package/lib/components/HeaderBar/index.js +6 -2
- package/lib/components/LabelsView/LabelsTree/LabelsTree.styled.js +86 -0
- package/lib/components/LabelsView/LabelsTree/LabelsTreeSkeleton.js +21 -0
- package/lib/components/LabelsView/LabelsTree/index.js +128 -0
- package/lib/components/LabelsView/LabelsView.styled.js +10 -0
- package/lib/components/LabelsView/index.js +139 -0
- package/lib/components/Modals/DownloadConsent/DownloadConsent.hooks.js +11 -0
- package/lib/components/Modals/TransformedDownload/TransformedDownload.hooks.js +9 -0
- package/lib/components/Views/Views.constants.js +30 -4
- package/lib/components/Views/index.js +11 -4
- package/lib/components/common/FileMetadataFieldValue/GeneralMetadataFieldValue.js +1 -1
- package/lib/components/common/Sort/Sort.constants.js +28 -1
- package/lib/defaultLocale.js +36 -1
- package/lib/slices/collections.slice.js +714 -0
- package/lib/slices/common.slice.js +15 -52
- package/lib/slices/files.slice.js +6 -3
- package/lib/slices/index.js +5 -1
- package/lib/slices/labels.slice.js +652 -0
- package/lib/slices/views.slice.js +12 -0
- package/lib/utils/prepareSearchUrl.js +10 -0
- package/package.json +8 -8
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
2
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
5
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
6
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
7
|
+
import { useSelector, useDispatch } from 'react-redux';
|
|
8
|
+
import { Skeleton } from '@scaleflex/ui/core';
|
|
9
|
+
import NoCollections from '@scaleflex/widget-icons/lib/NoCollections';
|
|
10
|
+
import NoItems from '@scaleflex/widget-explorer/lib/components/NoItems';
|
|
11
|
+
import { useExplorerI18n } from '../../../hooks';
|
|
12
|
+
import { fetchCollectionsFiles, selectActiveCollectionsVirtualFoldersPaths, selectCollectionsActiveVirtualFolder, selectCollectionsFilteredVirtualFolders, selectIsActiveVirtualFolderLoading } from '../../../slices/collections.slice';
|
|
13
|
+
import Tree from './Tree';
|
|
14
|
+
import Styled from './CollectionVirtualFoldersTree.styled';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* In current component we use extra component Tree, to be able to use React.memo optimisation.
|
|
18
|
+
* useBrowserContext works good but increase amount of rendering in some cases
|
|
19
|
+
*/
|
|
20
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
21
|
+
var CollectionVirtualFoldersTree = function CollectionVirtualFoldersTree(_ref) {
|
|
22
|
+
var searchTerm = _ref.searchTerm;
|
|
23
|
+
var dispatch = useDispatch();
|
|
24
|
+
var i18n = useExplorerI18n();
|
|
25
|
+
var activeCollectionVirtualFoldersPaths = useSelector(selectActiveCollectionsVirtualFoldersPaths);
|
|
26
|
+
var activeCollectionVirtualFolder = useSelector(selectCollectionsActiveVirtualFolder);
|
|
27
|
+
var isActiveCollectionVirtualFoldersLoading = useSelector(selectIsActiveVirtualFolderLoading);
|
|
28
|
+
var filteredFolders = useSelector(function (state) {
|
|
29
|
+
return selectCollectionsFilteredVirtualFolders(state, searchTerm);
|
|
30
|
+
});
|
|
31
|
+
var activateFolder = function activateFolder(folder) {
|
|
32
|
+
dispatch(fetchCollectionsFiles({
|
|
33
|
+
folder: folder || null,
|
|
34
|
+
offset: 0
|
|
35
|
+
}));
|
|
36
|
+
};
|
|
37
|
+
if (isActiveCollectionVirtualFoldersLoading) {
|
|
38
|
+
return /*#__PURE__*/_jsx(Styled.Container, {
|
|
39
|
+
children: _toConsumableArray(new Array(12)).map(function (_, i) {
|
|
40
|
+
return /*#__PURE__*/_jsx(Styled.FolderContainer, {
|
|
41
|
+
children: /*#__PURE__*/_jsx(Styled.SkeletonItem, {
|
|
42
|
+
children: /*#__PURE__*/_jsx(Skeleton, {
|
|
43
|
+
width: "100%"
|
|
44
|
+
})
|
|
45
|
+
})
|
|
46
|
+
}, i);
|
|
47
|
+
})
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
if (!activeCollectionVirtualFoldersPaths.length) {
|
|
51
|
+
return /*#__PURE__*/_jsx(NoItems, {
|
|
52
|
+
secondary: i18n('collectionsTreeNoGroupsFoldersLabel'),
|
|
53
|
+
icon: NoCollections,
|
|
54
|
+
mt: 80
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
if (!filteredFolders.length) {
|
|
58
|
+
return /*#__PURE__*/_jsx(NoItems, {
|
|
59
|
+
iconWidth: 150,
|
|
60
|
+
iconHeight: 60,
|
|
61
|
+
mt: 80,
|
|
62
|
+
noSearchResults: true,
|
|
63
|
+
primary: i18n('mutualizedNoResults'),
|
|
64
|
+
secondary: i18n('mutualizedTryAnotherSearch')
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return /*#__PURE__*/_jsx(Tree, {
|
|
68
|
+
activeCollectionVirtualFolders: filteredFolders,
|
|
69
|
+
activeCollectionVirtualFolder: activeCollectionVirtualFolder,
|
|
70
|
+
isActiveCollectionVirtualFoldersLoading: isActiveCollectionVirtualFoldersLoading,
|
|
71
|
+
activateFolder: activateFolder,
|
|
72
|
+
searchTerm: searchTerm
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
export default CollectionVirtualFoldersTree;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Skeleton } from '@scaleflex/ui/core';
|
|
2
|
+
import Styled from './CollectionsView.styled';
|
|
3
|
+
import CollectionFolderIcon from './CollectionFolderIcon';
|
|
4
|
+
import StyledAssetsList from '../AssetsList/AssetsList.styled';
|
|
5
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
+
var GridLayoutCollectionsSkeleton = function GridLayoutCollectionsSkeleton() {
|
|
7
|
+
return /*#__PURE__*/_jsx("div", {
|
|
8
|
+
className: "filerobot-Provider-ItemCategory-wrapper",
|
|
9
|
+
style: {
|
|
10
|
+
paddingTop: 0
|
|
11
|
+
},
|
|
12
|
+
children: /*#__PURE__*/_jsx(Styled.ItemCategoryList, {
|
|
13
|
+
children: Array(18).fill().map(function (_, index) {
|
|
14
|
+
return /*#__PURE__*/_jsxs(Styled.Item, {
|
|
15
|
+
children: [/*#__PURE__*/_jsx(CollectionFolderIcon, {}), /*#__PURE__*/_jsx(StyledAssetsList.FolderContent, {
|
|
16
|
+
role: "button",
|
|
17
|
+
$loading: true,
|
|
18
|
+
children: /*#__PURE__*/_jsx(StyledAssetsList.FolderInfo, {
|
|
19
|
+
height: "fit-content",
|
|
20
|
+
children: /*#__PURE__*/_jsx(Skeleton, {
|
|
21
|
+
width: 80
|
|
22
|
+
})
|
|
23
|
+
})
|
|
24
|
+
})]
|
|
25
|
+
}, index);
|
|
26
|
+
})
|
|
27
|
+
})
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
export default GridLayoutCollectionsSkeleton;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
7
|
+
import { useState } from 'react';
|
|
8
|
+
import { useSelector } from 'react-redux';
|
|
9
|
+
import { Search, EllipsedText } from '@scaleflex/ui/core';
|
|
10
|
+
import { ArrowLeftOutline } from '@scaleflex/icons';
|
|
11
|
+
import { useDebounce } from '@scaleflex/widget-common/lib/hooks';
|
|
12
|
+
import { useExplorerI18n } from '../../../hooks';
|
|
13
|
+
import { selectActiveCollection, selectActiveCollectionsVirtualFoldersPaths, selectIsActiveVirtualFolderLoading } from '../../../slices/collections.slice';
|
|
14
|
+
import CollectionVirtualFoldersTree from '../CollectionVirtualFoldersTree';
|
|
15
|
+
import Styled from './CollectionsTree.styled';
|
|
16
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
|
+
var ActiveCollectionContent = function ActiveCollectionContent(_ref) {
|
|
18
|
+
var onClickBack = _ref.onClickBack;
|
|
19
|
+
var i18n = useExplorerI18n();
|
|
20
|
+
var activeCollection = useSelector(selectActiveCollection);
|
|
21
|
+
var activeCollectionVirtualFoldersPaths = useSelector(selectActiveCollectionsVirtualFoldersPaths);
|
|
22
|
+
var isActiveCollectionVirtualFoldersLoading = useSelector(selectIsActiveVirtualFolderLoading);
|
|
23
|
+
var _useState = useState(''),
|
|
24
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
25
|
+
searchTerm = _useState2[0],
|
|
26
|
+
setSearchTerm = _useState2[1];
|
|
27
|
+
var debouncedSearchTerm = useDebounce(searchTerm, 300);
|
|
28
|
+
return /*#__PURE__*/_jsxs(Styled.Container, {
|
|
29
|
+
children: [/*#__PURE__*/_jsxs(Styled.Header, {
|
|
30
|
+
children: [/*#__PURE__*/_jsx(Styled.Title, {
|
|
31
|
+
children: /*#__PURE__*/_jsx(EllipsedText, {
|
|
32
|
+
maxLinesCount: 1,
|
|
33
|
+
children: activeCollection === null || activeCollection === void 0 ? void 0 : activeCollection.title
|
|
34
|
+
})
|
|
35
|
+
}), /*#__PURE__*/_jsx(Styled.BackToAllCollectionsBtn, {
|
|
36
|
+
color: "link-secondary",
|
|
37
|
+
startIcon: /*#__PURE__*/_jsx(ArrowLeftOutline, {
|
|
38
|
+
size: 14
|
|
39
|
+
}),
|
|
40
|
+
onClick: onClickBack,
|
|
41
|
+
children: i18n('collectionsTreeBackToAllCollectionsButton')
|
|
42
|
+
}), /*#__PURE__*/_jsx(Search, {
|
|
43
|
+
value: searchTerm,
|
|
44
|
+
onChange: function onChange(_ref2) {
|
|
45
|
+
var value = _ref2.target.value;
|
|
46
|
+
return setSearchTerm(value);
|
|
47
|
+
},
|
|
48
|
+
placeholder: i18n('collectionsTreeGroupsSearchPlaceholder'),
|
|
49
|
+
size: "sm",
|
|
50
|
+
fullWidth: true,
|
|
51
|
+
focusOnMount: true,
|
|
52
|
+
disabled: isActiveCollectionVirtualFoldersLoading || !activeCollectionVirtualFoldersPaths.length
|
|
53
|
+
})]
|
|
54
|
+
}), /*#__PURE__*/_jsx(Styled.Content, {
|
|
55
|
+
children: /*#__PURE__*/_jsx(CollectionVirtualFoldersTree, {
|
|
56
|
+
searchTerm: debouncedSearchTerm
|
|
57
|
+
})
|
|
58
|
+
})]
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
export default ActiveCollectionContent;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { useDispatch, useSelector } from 'react-redux';
|
|
2
|
+
import { EllipsedText, TextWithHighlights } from '@scaleflex/ui/core';
|
|
3
|
+
import { Bookmark } from '@scaleflex/icons';
|
|
4
|
+
import { collectionsDeselected, selectActiveCollection, selectCollections } from '../../../slices/collections.slice';
|
|
5
|
+
import Styled from './CollectionsTree.styled';
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
var CollectionTreeItem = function CollectionTreeItem(_ref) {
|
|
8
|
+
var collectionUuid = _ref.collectionUuid,
|
|
9
|
+
activateCollection = _ref.activateCollection,
|
|
10
|
+
debouncedCollectionsSearchTerm = _ref.debouncedCollectionsSearchTerm;
|
|
11
|
+
var dispatch = useDispatch();
|
|
12
|
+
var activeCollection = useSelector(selectActiveCollection);
|
|
13
|
+
var collections = useSelector(selectCollections);
|
|
14
|
+
var deselectAllCollections = function deselectAllCollections() {
|
|
15
|
+
return dispatch(collectionsDeselected());
|
|
16
|
+
};
|
|
17
|
+
var handleActivateCollection = function handleActivateCollection(collectionUuid) {
|
|
18
|
+
deselectAllCollections();
|
|
19
|
+
activateCollection(collectionUuid);
|
|
20
|
+
};
|
|
21
|
+
var collectionName = collections[collectionUuid].title || '';
|
|
22
|
+
var hasSearch = debouncedCollectionsSearchTerm || debouncedCollectionsSearchTerm === 0;
|
|
23
|
+
return /*#__PURE__*/_jsxs(Styled.Item, {
|
|
24
|
+
$active: (activeCollection === null || activeCollection === void 0 ? void 0 : activeCollection.uuid) === collectionUuid,
|
|
25
|
+
onClick: function onClick() {
|
|
26
|
+
return handleActivateCollection(collectionUuid);
|
|
27
|
+
},
|
|
28
|
+
gap: hasSearch && '10px',
|
|
29
|
+
children: [/*#__PURE__*/_jsx(Styled.ItemIcon, {
|
|
30
|
+
children: /*#__PURE__*/_jsx(Bookmark, {
|
|
31
|
+
size: hasSearch ? 20 : 16
|
|
32
|
+
})
|
|
33
|
+
}), /*#__PURE__*/_jsx(Styled.ItemLabel, {
|
|
34
|
+
children: /*#__PURE__*/_jsx(EllipsedText, {
|
|
35
|
+
maxLinesCount: 1,
|
|
36
|
+
children: /*#__PURE__*/_jsx(TextWithHighlights, {
|
|
37
|
+
text: collectionName,
|
|
38
|
+
highlightText: debouncedCollectionsSearchTerm
|
|
39
|
+
})
|
|
40
|
+
})
|
|
41
|
+
})]
|
|
42
|
+
}, collectionUuid);
|
|
43
|
+
};
|
|
44
|
+
export default CollectionTreeItem;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
2
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
4
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
5
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
6
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
7
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
8
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
9
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
10
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
11
|
+
import { useState } from 'react';
|
|
12
|
+
import { useDispatch, useSelector } from 'react-redux';
|
|
13
|
+
import { Search, Skeleton } from '@scaleflex/ui/core';
|
|
14
|
+
import NoCollections from '@scaleflex/widget-icons/lib/NoCollections';
|
|
15
|
+
import { useDebounce } from '@scaleflex/widget-common/lib/hooks';
|
|
16
|
+
import { useExplorer } from '../../../hooks';
|
|
17
|
+
import { DEFAULT_COLLECTION_SORT, collectionsSearchTermUpdated, selectCollectionsSearchTerm, selectCollectionsUuids, selectCollectionsUuidsBySearchTerm, selectIsCollectionsLoading, sortCollections } from '../../../slices/collections.slice';
|
|
18
|
+
import NoItems from '../../NoItems';
|
|
19
|
+
import Styled from './CollectionsTree.styled';
|
|
20
|
+
import CollectionTreeItem from './CollectionTreeItem';
|
|
21
|
+
import { COLLECTIONS_SORT_OPTIONS } from '../../common/Sort/Sort.constants';
|
|
22
|
+
import Sort from '../../common/Sort';
|
|
23
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
24
|
+
var CollectionsContent = function CollectionsContent(_ref) {
|
|
25
|
+
var activateCollection = _ref.activateCollection;
|
|
26
|
+
var dispatch = useDispatch();
|
|
27
|
+
var _useExplorer = useExplorer(),
|
|
28
|
+
i18n = _useExplorer.i18n,
|
|
29
|
+
opts = _useExplorer.opts;
|
|
30
|
+
var showSort = opts.showSort;
|
|
31
|
+
var loading = useSelector(selectIsCollectionsLoading);
|
|
32
|
+
var collectionsUuids = useSelector(selectCollectionsUuids);
|
|
33
|
+
var collectionsSearchTerm = useSelector(selectCollectionsSearchTerm);
|
|
34
|
+
var _useState = useState({
|
|
35
|
+
by: DEFAULT_COLLECTION_SORT.BY,
|
|
36
|
+
order: DEFAULT_COLLECTION_SORT.ORDER
|
|
37
|
+
}),
|
|
38
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
39
|
+
sort = _useState2[0],
|
|
40
|
+
setSort = _useState2[1];
|
|
41
|
+
var debouncedCollectionsSearchTerm = useDebounce(collectionsSearchTerm, 300);
|
|
42
|
+
var searchedCollectionsUuids = useSelector(function (state) {
|
|
43
|
+
return selectCollectionsUuidsBySearchTerm(state, debouncedCollectionsSearchTerm);
|
|
44
|
+
});
|
|
45
|
+
var isNoSearchedCollectionsFound = searchedCollectionsUuids.length === 0;
|
|
46
|
+
var setCollectionsSearchTerm = function setCollectionsSearchTerm(_ref2) {
|
|
47
|
+
var value = _ref2.target.value;
|
|
48
|
+
return dispatch(collectionsSearchTermUpdated(value));
|
|
49
|
+
};
|
|
50
|
+
var handleChangeSort = function handleChangeSort(sortBy, sortOrder) {
|
|
51
|
+
setSort({
|
|
52
|
+
by: sortBy,
|
|
53
|
+
order: sortOrder
|
|
54
|
+
});
|
|
55
|
+
dispatch(sortCollections({
|
|
56
|
+
sortBy: sortBy,
|
|
57
|
+
sortOrder: sortOrder
|
|
58
|
+
}));
|
|
59
|
+
};
|
|
60
|
+
var renderNoCollections = function renderNoCollections() {
|
|
61
|
+
if (loading) {
|
|
62
|
+
return /*#__PURE__*/_jsx("div", {
|
|
63
|
+
children: _toConsumableArray(new Array(12)).map(function (_, i) {
|
|
64
|
+
return /*#__PURE__*/_jsx(Styled.Item, {
|
|
65
|
+
padding: 0,
|
|
66
|
+
children: /*#__PURE__*/_jsx(Skeleton, {
|
|
67
|
+
width: "100%"
|
|
68
|
+
})
|
|
69
|
+
}, i);
|
|
70
|
+
})
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
if (!collectionsUuids.length) {
|
|
74
|
+
return /*#__PURE__*/_jsx(NoItems, {
|
|
75
|
+
icon: NoCollections,
|
|
76
|
+
mt: 80,
|
|
77
|
+
secondary: i18n('mutualizedNoCollectionsLabel'),
|
|
78
|
+
isTreeView: true
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
if (isNoSearchedCollectionsFound) {
|
|
82
|
+
return /*#__PURE__*/_jsx(NoItems, {
|
|
83
|
+
iconWidth: 150,
|
|
84
|
+
iconHeight: 60,
|
|
85
|
+
mt: 80,
|
|
86
|
+
noSearchResults: true,
|
|
87
|
+
smallItemsGap: true,
|
|
88
|
+
primary: i18n('mutualizedNoResults'),
|
|
89
|
+
secondary: i18n('mutualizedTryAnotherSearch')
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
return null;
|
|
93
|
+
};
|
|
94
|
+
return /*#__PURE__*/_jsxs(Styled.Container, {
|
|
95
|
+
children: [/*#__PURE__*/_jsxs(Styled.Header, {
|
|
96
|
+
children: [/*#__PURE__*/_jsx(Styled.Title, {
|
|
97
|
+
children: i18n('collectionsTreeTitle')
|
|
98
|
+
}), /*#__PURE__*/_jsx(Search, {
|
|
99
|
+
value: collectionsSearchTerm,
|
|
100
|
+
onChange: setCollectionsSearchTerm,
|
|
101
|
+
placeholder: i18n('collectionsTreeSearchPlaceholder'),
|
|
102
|
+
size: "sm",
|
|
103
|
+
fullWidth: true,
|
|
104
|
+
focusOnMount: true,
|
|
105
|
+
disabled: (collectionsUuids || []).length === 0
|
|
106
|
+
})]
|
|
107
|
+
}), !isNoSearchedCollectionsFound && /*#__PURE__*/_jsx(Styled.SettingsWrapper, {
|
|
108
|
+
children: showSort && /*#__PURE__*/_jsx(Styled.SortingWrapper, {
|
|
109
|
+
children: /*#__PURE__*/_jsx(Sort, {
|
|
110
|
+
options: COLLECTIONS_SORT_OPTIONS,
|
|
111
|
+
sortBy: sort.by,
|
|
112
|
+
sortOrder: sort.order,
|
|
113
|
+
onChange: handleChangeSort,
|
|
114
|
+
dontDisableIfNoFiles: true
|
|
115
|
+
})
|
|
116
|
+
})
|
|
117
|
+
}), /*#__PURE__*/_jsxs(Styled.Content, {
|
|
118
|
+
children: [!loading && !isNoSearchedCollectionsFound && /*#__PURE__*/_jsx("div", {
|
|
119
|
+
children: searchedCollectionsUuids.map(function (collectionUuid) {
|
|
120
|
+
return /*#__PURE__*/_jsx(CollectionTreeItem, {
|
|
121
|
+
collectionUuid: collectionUuid,
|
|
122
|
+
activateCollection: activateCollection,
|
|
123
|
+
debouncedCollectionsSearchTerm: debouncedCollectionsSearchTerm
|
|
124
|
+
}, collectionUuid);
|
|
125
|
+
})
|
|
126
|
+
}), renderNoCollections()]
|
|
127
|
+
})]
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
export default CollectionsContent;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13;
|
|
2
|
+
function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
|
|
3
|
+
import styled from 'styled-components';
|
|
4
|
+
import { FV, PC, PSH } from '@scaleflex/widget-common';
|
|
5
|
+
import { IconButton, Button } from '@scaleflex/ui/core';
|
|
6
|
+
var Container = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: relative;\n display: flex;\n flex-direction: column;\n height: 100%;\n"])));
|
|
7
|
+
var Header = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n position: sticky;\n top: 0;\n display: flex;\n flex-direction: column;\n align-items: baseline;\n gap: 16px;\n background: ", ";\n padding: 32px 24px 16px;\n z-index: 1;\n\n // TODO: Remove this hotfix when UI lib fixed Search fullWidth prop\n .SfxSearch-root {\n width: 100%;\n }\n"])), function (_ref) {
|
|
8
|
+
var palette = _ref.theme.palette;
|
|
9
|
+
return palette[PC.BackgroundStateless];
|
|
10
|
+
});
|
|
11
|
+
var AddCollectionBtn = styled(Button)(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n margin: 0 24px 8px;\n padding: 10px 0 !important;\n width: max-content;\n\n .SfxButton-StartIcon {\n margin-right: 4px;\n }\n\n .SfxButton-Body {\n align-items: baseline;\n }\n"])));
|
|
12
|
+
var BackToAllCollectionsBtn = styled(Button)(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n ", ";\n"])), function (_ref2) {
|
|
13
|
+
var theme = _ref2.theme;
|
|
14
|
+
return theme.typography.font[FV.ButtonLgEmphasis];
|
|
15
|
+
});
|
|
16
|
+
var SettingsWrapper = styled.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 0;\n gap: 10px;\n padding: 0 24px 10px 24px;\n width: 100%;\n"])));
|
|
17
|
+
var NameLabel = styled.span(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n ", "\n color: ", ";\n"])), function (_ref3) {
|
|
18
|
+
var font = _ref3.theme.typography.font;
|
|
19
|
+
return font[FV.LabelMedium];
|
|
20
|
+
}, function (_ref4) {
|
|
21
|
+
var palette = _ref4.theme.palette;
|
|
22
|
+
return palette[PC.LinkStateless];
|
|
23
|
+
});
|
|
24
|
+
var SortingWrapper = styled.div(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n flex-grow: 1;\n gap: 4px;\n height: 32px;\n"])));
|
|
25
|
+
var SettingsBtnWrapper = styled(IconButton)(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n width: 36px;\n height: 36px;\n padding: 1px 6px;\n border: 1px solid ", ";\n box-shadow: ", ";\n background: ", ";\n"])), function (_ref5) {
|
|
26
|
+
var palette = _ref5.theme.palette;
|
|
27
|
+
return palette[PC.IconsPrimary];
|
|
28
|
+
}, function (_ref6) {
|
|
29
|
+
var theme = _ref6.theme;
|
|
30
|
+
return theme.shadows[PSH.ShadowMd];
|
|
31
|
+
}, function (_ref7) {
|
|
32
|
+
var palette = _ref7.theme.palette;
|
|
33
|
+
return palette[PC.BackgroundStateless];
|
|
34
|
+
});
|
|
35
|
+
var Content = styled.div(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n padding: 0 24px 16px;\n overflow-y: auto;\n"])));
|
|
36
|
+
var Title = styled.div(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n ", "\n color: ", ";\n max-width: 90%;\n"])), function (_ref8) {
|
|
37
|
+
var font = _ref8.theme.typography.font;
|
|
38
|
+
return font[FV.TitleH4];
|
|
39
|
+
}, function (_ref9) {
|
|
40
|
+
var palette = _ref9.theme.palette;
|
|
41
|
+
return palette[PC.TextPrimary];
|
|
42
|
+
});
|
|
43
|
+
var ItemIcon = styled.div(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n display: flex;\n\n svg {\n color: ", ";\n margin-right: 2px;\n }\n"])), function (_ref10) {
|
|
44
|
+
var palette = _ref10.theme.palette;
|
|
45
|
+
return palette[PC.IconsSecondary];
|
|
46
|
+
});
|
|
47
|
+
var ItemLabel = styled.div(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n ", "\n color: ", ";\n"])), function (_ref11) {
|
|
48
|
+
var font = _ref11.theme.typography.font;
|
|
49
|
+
return font[FV.LabelMedium];
|
|
50
|
+
}, function (_ref12) {
|
|
51
|
+
var palette = _ref12.theme.palette;
|
|
52
|
+
return palette[PC.TextPrimary];
|
|
53
|
+
});
|
|
54
|
+
var Item = styled.div(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n height: 36px;\n gap: ", ";\n cursor: pointer;\n border-radius: 4px;\n padding: ", ";\n\n span {\n border-radius: 4px;\n }\n\n &:hover {\n background: ", ";\n }\n\n ", "\n"])), function (_ref13) {
|
|
55
|
+
var gap = _ref13.gap;
|
|
56
|
+
return gap || '6px';
|
|
57
|
+
}, function (_ref14) {
|
|
58
|
+
var _ref14$padding = _ref14.padding,
|
|
59
|
+
padding = _ref14$padding === void 0 ? '0 12px' : _ref14$padding;
|
|
60
|
+
return padding;
|
|
61
|
+
}, function (_ref15) {
|
|
62
|
+
var palette = _ref15.theme.palette;
|
|
63
|
+
return palette[PC.BackgroundHover];
|
|
64
|
+
}, function (_ref16) {
|
|
65
|
+
var $active = _ref16.$active,
|
|
66
|
+
palette = _ref16.theme.palette;
|
|
67
|
+
return $active ? "\n background: ".concat(palette[PC.BackgroundActive], " !important;\n\n ").concat(ItemLabel, " {\n color: ").concat(palette[PC.AccentStateless], ";\n }\n\n ").concat(ItemIcon, " {\n svg {\n color: ").concat(palette[PC.AccentStateless], ";\n }\n }\n ") : '';
|
|
68
|
+
});
|
|
69
|
+
var Styled = {
|
|
70
|
+
Container: Container,
|
|
71
|
+
Header: Header,
|
|
72
|
+
AddCollectionBtn: AddCollectionBtn,
|
|
73
|
+
BackToAllCollectionsBtn: BackToAllCollectionsBtn,
|
|
74
|
+
SettingsWrapper: SettingsWrapper,
|
|
75
|
+
SortingWrapper: SortingWrapper,
|
|
76
|
+
NameLabel: NameLabel,
|
|
77
|
+
SettingsBtnWrapper: SettingsBtnWrapper,
|
|
78
|
+
Content: Content,
|
|
79
|
+
Title: Title,
|
|
80
|
+
Item: Item,
|
|
81
|
+
ItemIcon: ItemIcon,
|
|
82
|
+
ItemLabel: ItemLabel
|
|
83
|
+
};
|
|
84
|
+
export default Styled;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
7
|
+
import { useEffect, useState } from 'react';
|
|
8
|
+
import { useSelector, useDispatch } from 'react-redux';
|
|
9
|
+
import { FMAW_URL_QUERY_PARAMS } from '@scaleflex/widget-utils/lib/constants';
|
|
10
|
+
import { fetchCollectionVirtualFolders, selectActiveCollection } from '../../../slices/collections.slice';
|
|
11
|
+
import { useExplorer } from '../../../hooks';
|
|
12
|
+
import CollectionsContent from './CollectionsContent';
|
|
13
|
+
import ActiveCollectionContent from './ActiveCollectionContent';
|
|
14
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
|
+
var CollectionsTree = function CollectionsTree() {
|
|
16
|
+
var dispatch = useDispatch();
|
|
17
|
+
var _useExplorer = useExplorer(),
|
|
18
|
+
getUrlQueryParam = _useExplorer.getUrlQueryParam;
|
|
19
|
+
var activeCollection = useSelector(selectActiveCollection);
|
|
20
|
+
var _useState = useState(true),
|
|
21
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
22
|
+
showActiveCollection = _useState2[0],
|
|
23
|
+
setShowActiveCollection = _useState2[1];
|
|
24
|
+
useEffect(function () {
|
|
25
|
+
var foundCollectionUuid = getUrlQueryParam(FMAW_URL_QUERY_PARAMS.VIEW_ITEM);
|
|
26
|
+
if (foundCollectionUuid) {
|
|
27
|
+
setShowActiveCollection(false);
|
|
28
|
+
}
|
|
29
|
+
}, []);
|
|
30
|
+
if (activeCollection && !showActiveCollection) {
|
|
31
|
+
return /*#__PURE__*/_jsx(ActiveCollectionContent, {
|
|
32
|
+
onClickBack: function onClickBack() {
|
|
33
|
+
return setShowActiveCollection(true);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
var handleActiveCollection = function handleActiveCollection(collectionUuid) {
|
|
38
|
+
setShowActiveCollection(false);
|
|
39
|
+
dispatch(fetchCollectionVirtualFolders({
|
|
40
|
+
collectionUuid: collectionUuid
|
|
41
|
+
}));
|
|
42
|
+
};
|
|
43
|
+
return /*#__PURE__*/_jsx(CollectionsContent, {
|
|
44
|
+
activateCollection: handleActiveCollection
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
export default CollectionsTree;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
2
|
+
function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
|
|
3
|
+
import styled from 'styled-components';
|
|
4
|
+
import { FV, PC } from '@scaleflex/widget-common';
|
|
5
|
+
import { Button } from '@scaleflex/ui/core';
|
|
6
|
+
var AddCollectionButton = styled(Button)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: 160px;\n"])));
|
|
7
|
+
var Item = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n position: relative;\n cursor: pointer;\n\n > svg {\n width: 100%;\n height: 100%;\n }\n"])));
|
|
8
|
+
var ItemTitle = styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n ", "\n text-align: left;\n padding: 12px;\n position: absolute;\n bottom: 0px;\n"])), function (_ref) {
|
|
9
|
+
var font = _ref.theme.typography.font;
|
|
10
|
+
return font[FV.LabelMedium];
|
|
11
|
+
});
|
|
12
|
+
var BrowserList = styled.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n height: ", ";\n background-color: ", ";\n overflow: auto;\n padding: ", "; // Replaced 100px with 0 as it causes issue in virtual grid scrolling (and maybe the padding is not needed anymore?)\n\n [data-filerobot-floaty=\"true\"] & {\n &-collections {\n padding-left: 48px;\n padding-right: 48px;\n }\n\n &-labels {\n padding-left: 48px;\n padding-right: 48px;\n }\n }\n\n .SfxTableContainer-root {\n overflow-x: unset !important;\n }\n"])), function (_ref2) {
|
|
13
|
+
var isWidgetSmallSize = _ref2.isWidgetSmallSize,
|
|
14
|
+
topSectionHeight = _ref2.topSectionHeight,
|
|
15
|
+
height = _ref2.height;
|
|
16
|
+
return !isWidgetSmallSize && topSectionHeight && !height ? "calc(100% - ".concat(topSectionHeight, "px)") : '100%';
|
|
17
|
+
}, function (_ref3) {
|
|
18
|
+
var palette = _ref3.theme.palette;
|
|
19
|
+
return palette[PC.BackgroundStateless];
|
|
20
|
+
}, function (_ref4) {
|
|
21
|
+
var withSidePadding = _ref4.withSidePadding;
|
|
22
|
+
return "0 ".concat(withSidePadding ? '24px' : 0, " 24px");
|
|
23
|
+
});
|
|
24
|
+
var ItemCategoryList = styled.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n list-style: none;\n padding: 0;\n width: 100%;\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(214px, 1fr));\n gap: 16px;\n\n // <= 1084px\n // media query\n ", " {\n grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\n gap: 8px;\n }\n\n // <= 1084px\n // container\n ", " & {\n grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\n gap: 8px;\n }\n\n ", " & {\n grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\n gap: 8px;\n }\n"])), function (props) {
|
|
25
|
+
return props.theme.breakpoints.down('lg');
|
|
26
|
+
}, function (props) {
|
|
27
|
+
return props.theme.breakpoints.classes.md;
|
|
28
|
+
}, function (props) {
|
|
29
|
+
return props.theme.breakpoints.classes.sm;
|
|
30
|
+
});
|
|
31
|
+
var Styled = {
|
|
32
|
+
AddCollectionButton: AddCollectionButton,
|
|
33
|
+
Item: Item,
|
|
34
|
+
ItemTitle: ItemTitle,
|
|
35
|
+
BrowserList: BrowserList,
|
|
36
|
+
ItemCategoryList: ItemCategoryList
|
|
37
|
+
};
|
|
38
|
+
export default Styled;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
6
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
|
+
import { useDispatch, useSelector } from 'react-redux';
|
|
8
|
+
import { NoCollections } from '@scaleflex/icons';
|
|
9
|
+
import { EllipsedText } from '@scaleflex/ui/core';
|
|
10
|
+
import { useExplorerI18n, useIsSmallScreen } from '../../hooks';
|
|
11
|
+
import { fetchCollectionsFiles, selectCollectionsActiveVirtualFolder, selectCollectionsActiveVirtualFolderSortedChildren, selectSortedCollectionsActiveVirtualFoldersArray } from '../../slices/collections.slice';
|
|
12
|
+
import { selectTopSectionHeight } from '../../slices/topSection.slice';
|
|
13
|
+
import CollectionFolderIcon from './CollectionFolderIcon';
|
|
14
|
+
import NoItems from '../NoItems';
|
|
15
|
+
import Styled from './CollectionsView.styled';
|
|
16
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
|
+
var VirtualFoldersGrid = function VirtualFoldersGrid() {
|
|
18
|
+
var dispatch = useDispatch();
|
|
19
|
+
var i18n = useExplorerI18n();
|
|
20
|
+
var activeVirtualFolders = useSelector(selectSortedCollectionsActiveVirtualFoldersArray);
|
|
21
|
+
var activeVirtualFolderChildren = useSelector(selectCollectionsActiveVirtualFolderSortedChildren);
|
|
22
|
+
var topSectionHeight = useSelector(selectTopSectionHeight);
|
|
23
|
+
var isWidgetSmallSize = useIsSmallScreen();
|
|
24
|
+
var activeCollectionVirtualFolder = useSelector(selectCollectionsActiveVirtualFolder);
|
|
25
|
+
var items = activeVirtualFolderChildren.length ? activeVirtualFolderChildren : activeVirtualFolders;
|
|
26
|
+
var activateFolder = function activateFolder(folder) {
|
|
27
|
+
var nextFolder = folder ? _objectSpread(_objectSpread({}, folder), {}, {
|
|
28
|
+
parent: activeCollectionVirtualFolder
|
|
29
|
+
}) : null;
|
|
30
|
+
dispatch(fetchCollectionsFiles({
|
|
31
|
+
folder: nextFolder,
|
|
32
|
+
offset: 0
|
|
33
|
+
}));
|
|
34
|
+
};
|
|
35
|
+
return /*#__PURE__*/_jsx(Styled.BrowserList, {
|
|
36
|
+
isWidgetSmallSize: isWidgetSmallSize,
|
|
37
|
+
topSectionHeight: topSectionHeight,
|
|
38
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
39
|
+
className: "filerobot-Provider-ItemCategory-wrapper",
|
|
40
|
+
style: {
|
|
41
|
+
padding: '0px 24px'
|
|
42
|
+
},
|
|
43
|
+
children: items.length > 0 ? /*#__PURE__*/_jsx(Styled.ItemCategoryList, {
|
|
44
|
+
children: items.map(function (item) {
|
|
45
|
+
return /*#__PURE__*/_jsxs(Styled.Item, {
|
|
46
|
+
onClick: function onClick() {
|
|
47
|
+
return activateFolder(item);
|
|
48
|
+
},
|
|
49
|
+
children: [/*#__PURE__*/_jsx(CollectionFolderIcon, {}), /*#__PURE__*/_jsx(Styled.ItemTitle, {
|
|
50
|
+
children: /*#__PURE__*/_jsx(EllipsedText, {
|
|
51
|
+
maxLinesCount: 1,
|
|
52
|
+
children: item.name
|
|
53
|
+
})
|
|
54
|
+
})]
|
|
55
|
+
}, item.path);
|
|
56
|
+
})
|
|
57
|
+
}) : /*#__PURE__*/_jsx(NoItems, {
|
|
58
|
+
primary: i18n('collectionsTreeNoGroupsFoldersLabel'),
|
|
59
|
+
icon: NoCollections,
|
|
60
|
+
iconHeight: 60,
|
|
61
|
+
iconWidth: 150,
|
|
62
|
+
mt: 150
|
|
63
|
+
})
|
|
64
|
+
})
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
export default VirtualFoldersGrid;
|