@scaleflex/widget-explorer 4.5.0 → 4.5.4
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 +35 -0
- package/README.md +21 -3
- package/dist/style.css +2 -0
- package/dist/style.min.css +1 -1
- 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/EmptyViewPlaceholder/EmptyViewPlaceholder.styled.js +1 -1
- 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,35 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
var CollectionFolderIcon = function CollectionFolderIcon() {
|
|
3
|
+
return /*#__PURE__*/_jsxs("svg", {
|
|
4
|
+
width: "269",
|
|
5
|
+
height: "202",
|
|
6
|
+
viewBox: "0 0 269 202",
|
|
7
|
+
fill: "none",
|
|
8
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
9
|
+
children: [/*#__PURE__*/_jsx("path", {
|
|
10
|
+
fillRule: "evenodd",
|
|
11
|
+
clipRule: "evenodd",
|
|
12
|
+
d: "M0 4.53098V16H108C96.9047 3.11111 93.0089 0 89.6267 0H47.6318H5.6369C2.25476 0 0 2.26549 0 4.53098Z",
|
|
13
|
+
fill: "#F9FBFC"
|
|
14
|
+
}), /*#__PURE__*/_jsx("path", {
|
|
15
|
+
d: "M0 16H264.5C266.709 16 268.5 17.7909 268.5 20V162H0V16Z",
|
|
16
|
+
fill: "#F9FBFC"
|
|
17
|
+
}), /*#__PURE__*/_jsx("path", {
|
|
18
|
+
d: "M0 162H268.5V198C268.5 200.209 266.709 202 264.5 202H4C1.79086 202 0 200.209 0 198V162Z",
|
|
19
|
+
fill: "#F9FBFC"
|
|
20
|
+
}), /*#__PURE__*/_jsx("path", {
|
|
21
|
+
d: "M108.587 16.0715L108.736 16.2403H108.961H264.441C266.789 16.2403 268.5 17.7563 268.5 19.413V198.327C268.5 199.984 266.789 201.5 264.441 201.5H4.55933C2.21105 201.5 0.5 199.984 0.5 198.327V4.94031C0.5 2.77804 2.51087 0.5 5.66894 0.5H90.1361C91.6108 0.5 93.6068 1.40089 96.5901 3.86166C99.5538 6.3062 103.408 10.2172 108.587 16.0715Z",
|
|
22
|
+
stroke: "#E2E8EC"
|
|
23
|
+
}), /*#__PURE__*/_jsx("path", {
|
|
24
|
+
d: "M236 14H206V62.0793C206 62.8884 206.911 63.3625 207.573 62.8986L221 53.5L234.427 62.8986C235.089 63.3625 236 62.8884 236 62.0793V14Z",
|
|
25
|
+
fill: "#A9B6C2"
|
|
26
|
+
}), /*#__PURE__*/_jsx("path", {
|
|
27
|
+
d: "M206 14V13.5H205.5V14H206ZM236 14H236.5V13.5H236V14ZM234.427 62.8986L234.713 62.489L234.427 62.8986ZM221 53.5L221.287 53.0904L221 52.8897L220.713 53.0904L221 53.5ZM207.573 62.8986L207.86 63.3082H207.86L207.573 62.8986ZM206 14.5H236V13.5H206V14.5ZM235.5 14V62.0793H236.5V14H235.5ZM234.713 62.489L221.287 53.0904L220.713 53.9096L234.14 63.3082L234.713 62.489ZM220.713 53.0904L207.287 62.489L207.86 63.3082L221.287 53.9096L220.713 53.0904ZM206.5 62.0793V14H205.5V62.0793H206.5ZM207.287 62.489C206.955 62.7209 206.5 62.4839 206.5 62.0793H205.5C205.5 63.2929 206.866 64.0041 207.86 63.3082L207.287 62.489ZM235.5 62.0793C235.5 62.4839 235.045 62.7209 234.713 62.489L234.14 63.3082C235.134 64.0041 236.5 63.2929 236.5 62.0793H235.5Z",
|
|
28
|
+
fill: "#E2E8EC"
|
|
29
|
+
}), /*#__PURE__*/_jsx("path", {
|
|
30
|
+
d: "M206.5 14H235.5",
|
|
31
|
+
stroke: "#A9B6C2"
|
|
32
|
+
})]
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
export default CollectionFolderIcon;
|
package/lib/components/CollectionsView/CollectionVirtualFoldersTree/CollectionTreeSkeletion.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Skeleton } from '@scaleflex/ui/core';
|
|
2
|
+
import Styled from './CollectionVirtualFoldersTree.styled';
|
|
3
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
+
var CollectionTreeSkeleton = function CollectionTreeSkeleton() {
|
|
5
|
+
return Array(20).fill().map(function (_, index) {
|
|
6
|
+
return /*#__PURE__*/_jsxs(Styled.SkeletonItem, {
|
|
7
|
+
children: [/*#__PURE__*/_jsx(Skeleton, {
|
|
8
|
+
width: 20,
|
|
9
|
+
height: 20,
|
|
10
|
+
style: {
|
|
11
|
+
borderRadius: 4
|
|
12
|
+
}
|
|
13
|
+
}), /*#__PURE__*/_jsx(Styled.SkeletonItemName, {
|
|
14
|
+
children: /*#__PURE__*/_jsx(Skeleton, {
|
|
15
|
+
width: 160,
|
|
16
|
+
height: 10,
|
|
17
|
+
style: {
|
|
18
|
+
marginBottom: 4,
|
|
19
|
+
borderRadius: 2
|
|
20
|
+
}
|
|
21
|
+
})
|
|
22
|
+
})]
|
|
23
|
+
}, "".concat(index, "-loading"));
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
export default CollectionTreeSkeleton;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
|
|
2
|
+
function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
|
|
3
|
+
import { FV, PC } from '@scaleflex/widget-common/lib';
|
|
4
|
+
import styled from 'styled-components';
|
|
5
|
+
var Container = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral([""])));
|
|
6
|
+
var FolderContainer = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n position: relative;\n"])));
|
|
7
|
+
var FolderArrow = styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n display: flex;\n width: 16px;\n\n svg {\n color: ", ";\n }\n"])), function (_ref) {
|
|
8
|
+
var theme = _ref.theme;
|
|
9
|
+
return theme.palette[PC.IconsPrimary];
|
|
10
|
+
});
|
|
11
|
+
var FolderIcon = styled.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n display: flex;\n\n svg {\n color: ", ";\n }\n"])), function (_ref2) {
|
|
12
|
+
var theme = _ref2.theme;
|
|
13
|
+
return theme.palette[PC.IconsSecondary];
|
|
14
|
+
});
|
|
15
|
+
var FolderName = styled.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n ", "\n ", "\n color: ", ";\n"])), function (props) {
|
|
16
|
+
return props.theme.typography.font[FV.LabelSmall];
|
|
17
|
+
}, 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.TextPrimary];
|
|
23
|
+
});
|
|
24
|
+
var Folder = styled.div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n position: relative;\n display: flex;\n align-items: center;\n height: 36px;\n padding: 8px 12px;\n cursor: pointer;\n gap: 6px;\n ", "\n\n ", " {\n ", "\n }\n\n ", "\n\n &:hover {\n background: ", ";\n }\n\n ", "\n"])), function (props) {
|
|
25
|
+
return "margin-left: ".concat(props.$level * 12, "px;");
|
|
26
|
+
}, FolderArrow, function (props) {
|
|
27
|
+
return props.$hasChildren ? '' : 'visibility: hidden;';
|
|
28
|
+
}, function (props) {
|
|
29
|
+
return !props.$hasChildren ? "\n ".concat(FolderArrow, " { visibility: hidden; }\n ") : '';
|
|
30
|
+
}, function (_ref5) {
|
|
31
|
+
var palette = _ref5.theme.palette;
|
|
32
|
+
return palette[PC.BackgroundHover];
|
|
33
|
+
}, function (_ref6) {
|
|
34
|
+
var $active = _ref6.$active,
|
|
35
|
+
palette = _ref6.theme.palette;
|
|
36
|
+
return $active ? "\n background: ".concat(palette[PC.BackgroundActive], " !important;\n\n ").concat(FolderIcon, " svg { color: ").concat(palette[PC.AccentStateless], "; }\n ").concat(FolderName, " { color: ").concat(palette[PC.AccentStateless], "; }\n ") : '';
|
|
37
|
+
});
|
|
38
|
+
var FolderChildren = styled.div(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([""])));
|
|
39
|
+
var SkeletonItem = styled.div(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n height: 36px;\n padding: 8px 0;\n border-radius: 4px;\n column-gap: 6px;\n transition: all 100ms ease-out;\n\n span {\n border-radius: 4px;\n }\n"])));
|
|
40
|
+
var SkeletonItemName = styled.div(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n"])));
|
|
41
|
+
var Styled = {
|
|
42
|
+
Container: Container,
|
|
43
|
+
FolderContainer: FolderContainer,
|
|
44
|
+
Folder: Folder,
|
|
45
|
+
FolderArrow: FolderArrow,
|
|
46
|
+
FolderIcon: FolderIcon,
|
|
47
|
+
FolderName: FolderName,
|
|
48
|
+
FolderChildren: FolderChildren,
|
|
49
|
+
SkeletonItem: SkeletonItem,
|
|
50
|
+
SkeletonItemName: SkeletonItemName
|
|
51
|
+
};
|
|
52
|
+
export default Styled;
|
|
@@ -0,0 +1,24 @@
|
|
|
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
|
+
export var filterFolders = function filterFolders() {
|
|
8
|
+
var folders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
9
|
+
var searchTerm = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
10
|
+
var _getChildren = function getChildren(result, folder) {
|
|
11
|
+
if ((folder.name || '').toLowerCase().includes((searchTerm || '').toLowerCase())) {
|
|
12
|
+
result.push(folder);
|
|
13
|
+
return result;
|
|
14
|
+
}
|
|
15
|
+
if (Array.isArray(folder.children)) {
|
|
16
|
+
var children = folder.children.reduce(_getChildren, []);
|
|
17
|
+
if (children.length) result.push(_objectSpread(_objectSpread({}, folder), {}, {
|
|
18
|
+
children: children
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
21
|
+
return result;
|
|
22
|
+
};
|
|
23
|
+
return folders.reduce(_getChildren, []);
|
|
24
|
+
};
|
|
@@ -0,0 +1,88 @@
|
|
|
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
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
8
|
+
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."); }
|
|
9
|
+
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; } }
|
|
10
|
+
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; }
|
|
11
|
+
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; } }
|
|
12
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
13
|
+
import { useState, memo } from 'react';
|
|
14
|
+
import { ArrowBottom, ArrowRightOutline, Collections } from '@scaleflex/icons';
|
|
15
|
+
import { EllipsedText } from '@scaleflex/ui/core';
|
|
16
|
+
import Styled from './CollectionVirtualFoldersTree.styled';
|
|
17
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
18
|
+
var _Folder = function Folder(_ref) {
|
|
19
|
+
var name = _ref.name,
|
|
20
|
+
childrenFolders = _ref.childrenFolders,
|
|
21
|
+
_ref$noArrow = _ref.noArrow,
|
|
22
|
+
noArrow = _ref$noArrow === void 0 ? false : _ref$noArrow,
|
|
23
|
+
_ref$level = _ref.level,
|
|
24
|
+
level = _ref$level === void 0 ? 0 : _ref$level,
|
|
25
|
+
activeFolder = _ref.activeFolder,
|
|
26
|
+
activateFolder = _ref.activateFolder,
|
|
27
|
+
folder = _ref.folder,
|
|
28
|
+
_ref$expandedByDefaul = _ref.expandedByDefault,
|
|
29
|
+
expandedByDefault = _ref$expandedByDefaul === void 0 ? false : _ref$expandedByDefaul,
|
|
30
|
+
_ref$forceExpanded = _ref.forceExpanded,
|
|
31
|
+
forceExpanded = _ref$forceExpanded === void 0 ? false : _ref$forceExpanded;
|
|
32
|
+
var _useState = useState(expandedByDefault),
|
|
33
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
34
|
+
isExpanded = _useState2[0],
|
|
35
|
+
setIsExpanded = _useState2[1];
|
|
36
|
+
var isActive = (activeFolder === null || activeFolder === void 0 ? void 0 : activeFolder.path) === (folder === null || folder === void 0 ? void 0 : folder.path);
|
|
37
|
+
return /*#__PURE__*/_jsxs(Styled.FolderContainer, {
|
|
38
|
+
children: [/*#__PURE__*/_jsxs(Styled.Folder, {
|
|
39
|
+
$level: level,
|
|
40
|
+
$hasChildren: Boolean(childrenFolders === null || childrenFolders === void 0 ? void 0 : childrenFolders.length),
|
|
41
|
+
$active: isActive,
|
|
42
|
+
onClick: function onClick() {
|
|
43
|
+
activateFolder(folder);
|
|
44
|
+
setIsExpanded(true);
|
|
45
|
+
},
|
|
46
|
+
children: [!noArrow && /*#__PURE__*/_jsx(Styled.FolderArrow, {
|
|
47
|
+
// $expanded={isExpanded}
|
|
48
|
+
onClick: forceExpanded ? undefined : function (event) {
|
|
49
|
+
event.stopPropagation();
|
|
50
|
+
setIsExpanded(function (_isExpanded) {
|
|
51
|
+
return !_isExpanded;
|
|
52
|
+
});
|
|
53
|
+
},
|
|
54
|
+
children: forceExpanded || isExpanded ? /*#__PURE__*/_jsx(ArrowBottom, {
|
|
55
|
+
size: 11
|
|
56
|
+
}) : /*#__PURE__*/_jsx(ArrowRightOutline, {
|
|
57
|
+
size: 11
|
|
58
|
+
})
|
|
59
|
+
}), /*#__PURE__*/_jsx(Styled.FolderIcon, {
|
|
60
|
+
children: /*#__PURE__*/_jsx(Collections, {
|
|
61
|
+
size: 16
|
|
62
|
+
})
|
|
63
|
+
}), /*#__PURE__*/_jsx(Styled.FolderName, {
|
|
64
|
+
children: /*#__PURE__*/_jsx(EllipsedText, {
|
|
65
|
+
maxLinesCount: 1,
|
|
66
|
+
children: name
|
|
67
|
+
})
|
|
68
|
+
})]
|
|
69
|
+
}), (forceExpanded || isExpanded) && childrenFolders && childrenFolders.length > 0 && /*#__PURE__*/_jsx(Styled.FolderChildren, {
|
|
70
|
+
children: childrenFolders.map(function (childFolder) {
|
|
71
|
+
return /*#__PURE__*/_jsx(_Folder, {
|
|
72
|
+
name: childFolder === null || childFolder === void 0 ? void 0 : childFolder.name
|
|
73
|
+
// path={`${path}/${decodeURIComponent(childFolder?.name)}`}
|
|
74
|
+
,
|
|
75
|
+
childrenFolders: childFolder === null || childFolder === void 0 ? void 0 : childFolder.children,
|
|
76
|
+
level: level + 1,
|
|
77
|
+
activateFolder: activateFolder,
|
|
78
|
+
activeFolder: activeFolder,
|
|
79
|
+
folder: _objectSpread(_objectSpread({}, childFolder), {}, {
|
|
80
|
+
parent: folder
|
|
81
|
+
}),
|
|
82
|
+
forceExpanded: forceExpanded
|
|
83
|
+
}, childFolder === null || childFolder === void 0 ? void 0 : childFolder.name);
|
|
84
|
+
})
|
|
85
|
+
})]
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
export default /*#__PURE__*/memo(_Folder);
|
|
@@ -0,0 +1,50 @@
|
|
|
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 Folder from './Folder';
|
|
8
|
+
import CollectionTreeSkeleton from './CollectionTreeSkeletion';
|
|
9
|
+
import Styled from './CollectionVirtualFoldersTree.styled';
|
|
10
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
+
import { createElement as _createElement } from "react";
|
|
12
|
+
var Tree = function Tree(_ref) {
|
|
13
|
+
var activeCollectionVirtualFolders = _ref.activeCollectionVirtualFolders,
|
|
14
|
+
activeCollectionVirtualFolder = _ref.activeCollectionVirtualFolder,
|
|
15
|
+
isActiveCollectionVirtualFoldersLoading = _ref.isActiveCollectionVirtualFoldersLoading,
|
|
16
|
+
activateFolder = _ref.activateFolder,
|
|
17
|
+
searchTerm = _ref.searchTerm;
|
|
18
|
+
/**
|
|
19
|
+
* Main value is stored in activeCollectionVirtualFoldersPath global state but we use extra state level to avoid delay between click on virtual folder and activation.
|
|
20
|
+
* Hence the only reason of having extra state level is better UI performance.
|
|
21
|
+
*
|
|
22
|
+
* TODO Vitaly: Check this part. It doesn't optimise performance.
|
|
23
|
+
*/
|
|
24
|
+
// const [activePath, setActivePath] = useState(activeCollectionVirtualFoldersPath)
|
|
25
|
+
|
|
26
|
+
// useEffect(() => {
|
|
27
|
+
// setActivePath(activeCollectionVirtualFoldersPath)
|
|
28
|
+
// }, [activeCollectionVirtualFoldersPath])
|
|
29
|
+
|
|
30
|
+
var folderCommonProps = {
|
|
31
|
+
activeFolder: activeCollectionVirtualFolder,
|
|
32
|
+
activateFolder: activateFolder
|
|
33
|
+
};
|
|
34
|
+
if (isActiveCollectionVirtualFoldersLoading) {
|
|
35
|
+
return /*#__PURE__*/_jsx(CollectionTreeSkeleton, {});
|
|
36
|
+
}
|
|
37
|
+
return /*#__PURE__*/_jsx(Styled.Container, {
|
|
38
|
+
children: (activeCollectionVirtualFolders || []).map(function (folder) {
|
|
39
|
+
return /*#__PURE__*/_createElement(Folder, _objectSpread(_objectSpread({}, folderCommonProps), {}, {
|
|
40
|
+
key: folder === null || folder === void 0 ? void 0 : folder.name,
|
|
41
|
+
folder: folder,
|
|
42
|
+
name: folder === null || folder === void 0 ? void 0 : folder.name,
|
|
43
|
+
childrenFolders: folder === null || folder === void 0 ? void 0 : folder.children,
|
|
44
|
+
expandedByDefault: (activeCollectionVirtualFolder === null || activeCollectionVirtualFolder === void 0 ? void 0 : activeCollectionVirtualFolder.path) === (folder === null || folder === void 0 ? void 0 : folder.path),
|
|
45
|
+
forceExpanded: Boolean(searchTerm)
|
|
46
|
+
}));
|
|
47
|
+
})
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
export default Tree;
|
|
@@ -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;
|