diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts
index 1a9b1c710..1a1566470 100644
--- a/cypress/support/commands.ts
+++ b/cypress/support/commands.ts
@@ -6,8 +6,6 @@ import 'cypress-localstorage-commands';
import { DEFAULT_ITEM_LAYOUT_MODE } from '../../src/config/constants';
import {
ITEM_INFORMATION_BUTTON_ID,
- ITEM_INFORMATION_ICON_IS_OPEN_CLASS,
- ITEM_PANEL_ID,
MODE_GRID_BUTTON_ID,
MODE_LIST_BUTTON_ID,
} from '../../src/config/selectors';
@@ -398,11 +396,7 @@ Cypress.Commands.add(
);
Cypress.Commands.add('openMetadataPanel', () => {
- cy.get(`#${ITEM_PANEL_ID}`).then(($itemPanel) => {
- if (!$itemPanel.hasClass(ITEM_INFORMATION_ICON_IS_OPEN_CLASS)) {
- cy.get(`#${ITEM_INFORMATION_BUTTON_ID}`).click();
- }
- });
+ cy.get(`#${ITEM_INFORMATION_BUTTON_ID}`).click();
});
Cypress.Commands.add('attachFile', (selector, file, options = {}) => {
diff --git a/package.json b/package.json
index 6452c8494..df69428c1 100644
--- a/package.json
+++ b/package.json
@@ -14,6 +14,7 @@
},
"type": "module",
"dependencies": {
+ "@ag-grid-community/styles": "31.0.3",
"@emotion/cache": "11.11.0",
"@emotion/react": "11.11.3",
"@emotion/styled": "11.11.0",
@@ -21,7 +22,7 @@
"@graasp/query-client": "2.4.1",
"@graasp/sdk": "3.4.1",
"@graasp/translations": "1.22.1",
- "@graasp/ui": "4.5.0",
+ "@graasp/ui": "4.5.1",
"@mui/icons-material": "5.14.19",
"@mui/lab": "5.0.0-alpha.151",
"@mui/material": "5.14.19",
diff --git a/src/components/App.tsx b/src/components/App.tsx
index 61d422788..e950ca9d5 100644
--- a/src/components/App.tsx
+++ b/src/components/App.tsx
@@ -1,11 +1,9 @@
-import { useLocation } from 'react-router';
+import { Outlet, useLocation } from 'react-router';
import { Route, Routes } from 'react-router-dom';
import { saveUrlForRedirection } from '@graasp/sdk';
import { CustomInitialLoader, withAuthorization } from '@graasp/ui';
-import * as Sentry from '@sentry/react';
-
import { DOMAIN } from '@/config/env';
import { SIGN_IN_PATH } from '@/config/externalPaths';
@@ -20,15 +18,15 @@ import {
buildItemPath,
} from '../config/paths';
import { hooks } from '../config/queryClient';
-import FallbackComponent from './Fallback';
-import RecycleBinScreen from './RecycleBinScreen';
-import SharedItems from './SharedItems';
import { useCurrentUserContext } from './context/CurrentUserContext';
-import FavoriteItems from './main/FavoriteItems';
-import Home from './main/Home';
-import ItemScreen from './main/ItemScreen';
-import PublishedItems from './main/PublishedItems';
+import Main from './main/Main';
import Redirect from './main/Redirect';
+import FavoriteItemsScreen from './pages/FavoriteItemsScreen';
+import HomeScreen from './pages/HomeScreen';
+import ItemScreen from './pages/ItemScreen';
+import PublishedItemsScreen from './pages/PublishedItemsScreen';
+import RecycledItemsScreen from './pages/RecycledItemsScreen';
+import SharedItemsScreen from './pages/SharedItemsScreen';
const { useItemFeedbackUpdates } = hooks;
@@ -51,27 +49,36 @@ const App = (): JSX.Element => {
saveUrlForRedirection(pathname, DOMAIN);
},
};
- const HomeWithAuthorization = withAuthorization(Home, withAuthorizationProps);
+ const HomeWithAuthorization = withAuthorization(
+ HomeScreen,
+ withAuthorizationProps,
+ );
const SharedWithAuthorization = withAuthorization(
- SharedItems,
+ SharedItemsScreen,
withAuthorizationProps,
);
const FavoriteWithAuthorization = withAuthorization(
- FavoriteItems,
+ FavoriteItemsScreen,
withAuthorizationProps,
);
- const RecycleWithAuthorization = withAuthorization(
- RecycleBinScreen,
+ const PublishedWithAuthorization = withAuthorization(
+ PublishedItemsScreen,
withAuthorizationProps,
);
- const PublishedWithAuthorization = withAuthorization(
- PublishedItems,
+ const RecycleWithAuthorization = withAuthorization(
+ RecycledItemsScreen,
withAuthorizationProps,
);
return (
- }>
-
+
+
+
+
+ }
+ >
} />
} />
{
path={PUBLISHED_ITEMS_PATH}
element={}
/>
- } />
} />
+ } />
} />
} />
- } />
-
-
+ } />
+
+
);
};
diff --git a/src/components/RecycleBinScreen.tsx b/src/components/RecycleBinScreen.tsx
deleted file mode 100644
index 35742b2f1..000000000
--- a/src/components/RecycleBinScreen.tsx
+++ /dev/null
@@ -1,84 +0,0 @@
-import { Box } from '@mui/material';
-
-import { Loader } from '@graasp/ui';
-
-import { useBuilderTranslation } from '../config/i18n';
-import { hooks } from '../config/queryClient';
-import {
- ITEMS_TABLE_DELETE_SELECTED_ITEMS_ID,
- ITEMS_TABLE_RESTORE_SELECTED_ITEMS_ID,
- RECYCLED_ITEMS_ID,
-} from '../config/selectors';
-import { BUILDER } from '../langs/constants';
-import DeleteButton from './common/DeleteButton';
-import ErrorAlert from './common/ErrorAlert';
-import RestoreButton from './common/RestoreButton';
-import ItemHeader from './item/header/ItemHeader';
-import Items from './main/Items';
-import Main from './main/Main';
-
-type RowActionsProps = {
- data: { id: string };
-};
-
-const RowActions = ({ data: item }: RowActionsProps): JSX.Element => (
- <>
-
-
- >
-);
-
-type ToolbarActionsProps = {
- selectedIds: string[];
-};
-
-const ToolbarActions = ({ selectedIds }: ToolbarActionsProps): JSX.Element => (
- <>
-
-
- >
-);
-
-const RecycleBinLoadableContent = (): JSX.Element => {
- const { t: translateBuilder } = useBuilderTranslation();
- const { data: recycledItems, isLoading, isError } = hooks.useRecycledItems();
- if (isError) {
- return ;
- }
-
- if (isLoading) {
- return ;
- }
-
- return (
-
-
-
-
- );
-};
-
-const RecycleBinScreen = (): JSX.Element => (
-
-
-
-);
-
-export default RecycleBinScreen;
diff --git a/src/components/Root.tsx b/src/components/Root.tsx
index 0f3ef6857..04e9fd61f 100644
--- a/src/components/Root.tsx
+++ b/src/components/Root.tsx
@@ -8,6 +8,7 @@ import { ThemeProvider } from '@mui/material/styles';
import { theme as GraaspTheme } from '@graasp/ui';
+import * as Sentry from '@sentry/react';
import '@uppy/core/dist/style.css';
import 'ag-grid-community/styles/ag-grid.min.css';
import 'ag-grid-community/styles/ag-theme-material.min.css';
@@ -19,28 +20,31 @@ import {
queryClient,
} from '../config/queryClient';
import App from './App';
+import FallbackComponent from './Fallback';
import { CurrentUserContextProvider } from './context/CurrentUserContext';
import ModalProviders from './context/ModalProviders';
const Root = (): JSX.Element => (
-
-
-
-
- {true && }
-
-
-
-
-
-
-
-
-
- {import.meta.env.DEV && import.meta.env.MODE !== 'test' && (
-
- )}
-
+ }>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {import.meta.env.DEV && import.meta.env.MODE !== 'test' && (
+
+ )}
+
+
);
export default Root;
diff --git a/src/components/context/LayoutContext.tsx b/src/components/context/LayoutContext.tsx
index d0855c376..251fdff0d 100644
--- a/src/components/context/LayoutContext.tsx
+++ b/src/components/context/LayoutContext.tsx
@@ -10,8 +10,6 @@ interface LayoutContextInterface {
setMode: (mode: string) => void;
editingItemId: string | null;
setEditingItemId: (itemId: string | null) => void;
- isMainMenuOpen: boolean;
- setIsMainMenuOpen: (isOpen: boolean) => void;
openedActionTabId: string | null;
setOpenedActionTabId: (action: string | null) => void;
isItemMetadataMenuOpen: boolean;
@@ -31,10 +29,6 @@ export const LayoutContext = createContext({
setEditingItemId: () => {
// do nothing
},
- isMainMenuOpen: true,
- setIsMainMenuOpen: () => {
- // do nothing
- },
openedActionTabId: null,
setOpenedActionTabId: () => {
// do nothing
@@ -71,7 +65,6 @@ export const LayoutContextProvider = ({
null,
);
- const [isMainMenuOpen, setIsMainMenuOpen] = useState(true);
const [isItemSharingOpen, setIsItemSharingOpen] = useState(true);
const [isItemMetadataMenuOpen, setIsItemMetadataMenuOpen] = useState(false);
@@ -86,8 +79,6 @@ export const LayoutContextProvider = ({
setMode,
editingItemId,
setEditingItemId,
- isMainMenuOpen,
- setIsMainMenuOpen,
openedActionTabId,
setOpenedActionTabId,
isItemMetadataMenuOpen,
@@ -101,7 +92,6 @@ export const LayoutContextProvider = ({
editingItemId,
isChatboxMenuOpen,
isItemMetadataMenuOpen,
- isMainMenuOpen,
mode,
openedActionTabId,
isItemSharingOpen,
diff --git a/src/components/file/FileUploader.tsx b/src/components/file/FileUploader.tsx
index f9fa8d885..9277803f7 100644
--- a/src/components/file/FileUploader.tsx
+++ b/src/components/file/FileUploader.tsx
@@ -7,57 +7,44 @@ import { MAX_FILE_SIZE } from '@graasp/sdk';
import '@uppy/drag-drop/dist/style.css';
import { DragDrop } from '@uppy/react';
-import {
- DRAWER_WIDTH,
- FILE_UPLOAD_MAX_FILES,
- HEADER_HEIGHT,
-} from '../../config/constants';
+import { FILE_UPLOAD_MAX_FILES } from '../../config/constants';
import { useBuilderTranslation } from '../../config/i18n';
import { UPLOADER_ID } from '../../config/selectors';
import { BUILDER } from '../../langs/constants';
import { humanFileSize } from '../../utils/uppy';
-import { useLayoutContext } from '../context/LayoutContext';
import { UppyContext } from './UppyContext';
-const StyledContainer = styled(Box, {
- shouldForwardProp: (prop) => prop !== 'color' && prop !== 'myProp',
-})<{ isMainMenuOpen: boolean }>(({ theme, isMainMenuOpen }) => ({
+const StyledContainer = styled(Box)(({ theme }) => ({
display: 'none',
- height: '100vh',
- width: '100%',
- boxSizing: 'border-box',
- position: 'fixed',
+
+ // used to position the uppy container above the rest of the content
+ position: 'absolute',
+ // sets the borders of the container to stick to the border of the parent
top: 0,
+ bottom: 0,
left: 0,
+ right: 0,
+
+ boxSizing: 'border-box',
+
// show above drawer
zIndex: theme.zIndex.drawer + 1,
opacity: 0.8,
+}));
+const StyledDragDrop = styled(DragDrop)(({ theme }) => ({
+ // sets uppy to stretch to full width
+ width: '100%',
+ boxSizing: 'border-box',
+ padding: theme.spacing(2),
+ // these styles are necessary and can not be lifted up
'& > div': {
- width: '100%',
- height: '100vh',
boxSizing: 'border-box',
- paddingLeft: `${
- Number(theme.spacing(2).slice(0, -2)) +
- (isMainMenuOpen ? DRAWER_WIDTH : 0)
- }px`,
- paddingTop: `${Number(theme.spacing(2).slice(0, -2)) + HEADER_HEIGHT}px`,
- paddingBottom: theme.spacing(2),
- paddingRight: theme.spacing(2),
-
- '& > div': {
- boxSizing: 'border-box',
- height: '100vh',
- // container's top and bottom padding
- paddingBottom: `${
- Number(theme.spacing(4).slice(0, -2)) + HEADER_HEIGHT
- }px`,
- },
+ height: '100%',
},
}));
const FileUploader = (): JSX.Element | null => {
- const { isMainMenuOpen } = useLayoutContext();
const { uppy } = useContext(UppyContext);
const [isDragging, setIsDragging] = useState(false);
const [isValid, setIsValid] = useState(true);
@@ -141,9 +128,8 @@ const FileUploader = (): JSX.Element | null => {
onDragEnd={() => handleDragEnd()}
onDragLeave={() => handleDragEnd()}
onDrop={handleDrop}
- isMainMenuOpen={isMainMenuOpen}
>
- {
} = useLayoutContext();
return (
-
+
{isChatboxMenuOpen && (
{
)}
-
- {
- setIsItemMetadataMenuOpen(false);
- }}
- // todo
- direction="rtl"
- >
-
- {translateBuilder(BUILDER.ITEM_METADATA_TITLE)}
-
-
-
-
-
+ {isItemMetadataMenuOpen && (
+
+ {
+ setIsItemMetadataMenuOpen(false);
+ }}
+ // todo
+ direction="rtl"
+ >
+
+ {translateBuilder(BUILDER.ITEM_METADATA_TITLE)}
+
+
+
+
+
+ )}
diff --git a/src/components/main/Main.tsx b/src/components/main/Main.tsx
index 412ae9cf6..6700aa97f 100644
--- a/src/components/main/Main.tsx
+++ b/src/components/main/Main.tsx
@@ -1,4 +1,4 @@
-import { Link } from 'react-router-dom';
+import { Link, useParams } from 'react-router-dom';
import { Stack, styled } from '@mui/material';
@@ -9,7 +9,6 @@ import {
PlatformSwitch,
defaultHostsMapper,
usePlatformNavigation,
- useShortenURLParams,
} from '@graasp/ui';
import { HOST_MAP } from '@/config/externalPaths';
@@ -24,7 +23,6 @@ import {
} from '../../config/selectors';
import CookiesBanner from '../common/CookiesBanner';
import UserSwitchWrapper from '../common/UserSwitchWrapper';
-import { useLayoutContext } from '../context/LayoutContext';
import MainMenu from './MainMenu';
import NotificationButton from './NotificationButton';
@@ -48,10 +46,9 @@ export const platformsHostsMap = defaultHostsMapper({
type Props = { children: JSX.Element | (JSX.Element & string) };
const Main = ({ children }: Props): JSX.Element => {
- const { isMainMenuOpen } = useLayoutContext();
const { t } = useBuilderTranslation();
- const itemId = useShortenURLParams(ITEM_ID_PARAMS);
+ const itemId = useParams()[ITEM_ID_PARAMS];
const getNavigationEvents = usePlatformNavigation(platformsHostsMap, itemId);
const platformProps = {
@@ -79,7 +76,6 @@ const Main = ({ children }: Props): JSX.Element => {
);
-
return (
{
drawerOpenAriaLabel={t(BUILDER.ARIA_OPEN_DRAWER)}
headerRightContent={rightContent}
drawerContent={}
- open={isMainMenuOpen}
LinkComponent={LinkComponent}
PlatformComponent={
{
- const { t: translateBuilder } = useBuilderTranslation();
- const {
- data: sharedItems,
- isLoading,
- isError,
- } = hooks.usePublishedItemsForMember(member.id);
-
- if (isError) {
- return ;
- }
-
- if (isLoading) {
- return ;
- }
-
- return (
-
-
-
-
- );
-};
-
-const PublishedItems = (): JSX.Element => {
- const { data: member, isError } = useCurrentUserContext();
-
- if (!member || isError) {
- return ;
- }
-
- return (
-
-
-
- );
-};
-
-export default PublishedItems;
diff --git a/src/components/main/FavoriteItems.tsx b/src/components/pages/FavoriteItemsScreen.tsx
similarity index 59%
rename from src/components/main/FavoriteItems.tsx
rename to src/components/pages/FavoriteItemsScreen.tsx
index b59970b1f..3730ad4c9 100644
--- a/src/components/main/FavoriteItems.tsx
+++ b/src/components/pages/FavoriteItemsScreen.tsx
@@ -11,40 +11,35 @@ import {
} from '../../config/selectors';
import { BUILDER } from '../../langs/constants';
import ErrorAlert from '../common/ErrorAlert';
-import { useCurrentUserContext } from '../context/CurrentUserContext';
import ItemHeader from '../item/header/ItemHeader';
-import Items from './Items';
-import Main from './Main';
+import Items from '../main/Items';
-const FavoriteItems = (): JSX.Element => {
+const FavoriteItemsLoadableContent = (): JSX.Element | null => {
const { t: translateBuilder } = useBuilderTranslation();
- const { isLoading: isMemberLoading } = useCurrentUserContext();
- const { data, isLoading: isItemsLoading } = hooks.useFavoriteItems();
- const renderContent = () => {
- if (data) {
- return (
+ const { data, isLoading: isItemsLoading, isError } = hooks.useFavoriteItems();
+
+ if (data) {
+ return (
+
+
d.item as DiscriminatedItem)}
/>
- );
- }
+
+ );
+ }
- if (isMemberLoading || isItemsLoading) {
- return ;
- }
+ if (isItemsLoading) {
+ return ;
+ }
+ if (isError) {
return ;
- };
-
- return (
-
-
-
- {renderContent()}
-
-
- );
+ }
+ return null;
};
-export default FavoriteItems;
+const FavoriteItemsScreen = (): JSX.Element => ;
+
+export default FavoriteItemsScreen;
diff --git a/src/components/main/Home.tsx b/src/components/pages/HomeScreen.tsx
similarity index 92%
rename from src/components/main/Home.tsx
rename to src/components/pages/HomeScreen.tsx
index 4e2db8f45..c3a98a3a8 100644
--- a/src/components/main/Home.tsx
+++ b/src/components/pages/HomeScreen.tsx
@@ -20,11 +20,10 @@ import FileUploader from '../file/FileUploader';
import { UppyContextProvider } from '../file/UppyContext';
import { useItemSearch } from '../item/ItemSearch';
import ItemHeader from '../item/header/ItemHeader';
-import ItemActions from './ItemActions';
-import Items from './Items';
-import { ItemsTableProps } from './ItemsTable';
-import Main from './Main';
-import NewItemButton from './NewItemButton';
+import ItemActions from '../main/ItemActions';
+import Items from '../main/Items';
+import { ItemsTableProps } from '../main/ItemsTable';
+import NewItemButton from '../main/NewItemButton';
type HomeItemSortableColumn =
| 'item.name'
@@ -104,7 +103,7 @@ const HomeLoadableContent = (): JSX.Element => {
return (
-
+
{
return ;
};
-const Home = (): JSX.Element => (
-
-
-
-);
+const HomeScreen = (): JSX.Element => ;
-export default Home;
+export default HomeScreen;
diff --git a/src/components/main/ItemScreen.tsx b/src/components/pages/ItemScreen.tsx
similarity index 91%
rename from src/components/main/ItemScreen.tsx
rename to src/components/pages/ItemScreen.tsx
index 544d87cc4..5d7399327 100644
--- a/src/components/main/ItemScreen.tsx
+++ b/src/components/pages/ItemScreen.tsx
@@ -30,8 +30,7 @@ import ItemMain from '../item/ItemMain';
import ItemPublishTab from '../item/publish/ItemPublishTab';
import ItemSettings from '../item/settings/ItemSettings';
import ItemSharingTab from '../item/sharing/ItemSharingTab';
-import ItemForbiddenScreen from './ItemForbiddenScreen';
-import Main from './Main';
+import ItemForbiddenScreen from '../main/ItemForbiddenScreen';
const {
useItem,
@@ -94,12 +93,10 @@ const ItemScreen = (): JSX.Element => {
})();
return (
-
-
- {item.type === ItemType.FOLDER ? : undefined}
- {content}
-
-
+
+ {item.type === ItemType.FOLDER ? : undefined}
+ {content}
+
);
};
diff --git a/src/components/pages/PublishedItemsScreen.tsx b/src/components/pages/PublishedItemsScreen.tsx
new file mode 100644
index 000000000..e46632e1a
--- /dev/null
+++ b/src/components/pages/PublishedItemsScreen.tsx
@@ -0,0 +1,52 @@
+import { Box } from '@mui/material';
+
+import { Loader } from '@graasp/ui';
+
+import { useBuilderTranslation } from '../../config/i18n';
+import { hooks } from '../../config/queryClient';
+import {
+ PUBLISHED_ITEMS_ERROR_ALERT_ID,
+ PUBLISHED_ITEMS_ID,
+} from '../../config/selectors';
+import { BUILDER } from '../../langs/constants';
+import ErrorAlert from '../common/ErrorAlert';
+import { useCurrentUserContext } from '../context/CurrentUserContext';
+import ItemHeader from '../item/header/ItemHeader';
+import Items from '../main/Items';
+
+const PublishedItemsLoadableContent = (): JSX.Element | null => {
+ const { t: translateBuilder } = useBuilderTranslation();
+ const { data: member } = useCurrentUserContext();
+ const {
+ data: sharedItems,
+ isLoading,
+ isError,
+ } = hooks.usePublishedItemsForMember(member?.id);
+
+ if (sharedItems) {
+ return (
+
+
+
+
+ );
+ }
+
+ if (isLoading) {
+ return ;
+ }
+ if (isError) {
+ return ;
+ }
+ return null;
+};
+
+const PublishedItemsScreen = (): JSX.Element => (
+
+);
+
+export default PublishedItemsScreen;
diff --git a/src/components/pages/RecycledItemsScreen.tsx b/src/components/pages/RecycledItemsScreen.tsx
new file mode 100644
index 000000000..04afef7b4
--- /dev/null
+++ b/src/components/pages/RecycledItemsScreen.tsx
@@ -0,0 +1,83 @@
+import { Box } from '@mui/material';
+
+import { Loader } from '@graasp/ui';
+
+import { useBuilderTranslation } from '../../config/i18n';
+import { hooks } from '../../config/queryClient';
+import {
+ ITEMS_TABLE_DELETE_SELECTED_ITEMS_ID,
+ ITEMS_TABLE_RESTORE_SELECTED_ITEMS_ID,
+ RECYCLED_ITEMS_ERROR_ALERT_ID,
+ RECYCLED_ITEMS_ID,
+ RECYCLED_ITEMS_ROOT_CONTAINER,
+} from '../../config/selectors';
+import { BUILDER } from '../../langs/constants';
+import DeleteButton from '../common/DeleteButton';
+import ErrorAlert from '../common/ErrorAlert';
+import RestoreButton from '../common/RestoreButton';
+import ItemHeader from '../item/header/ItemHeader';
+import Items from '../main/Items';
+
+type RowActionsProps = {
+ data: { id: string };
+};
+
+const RowActions = ({ data: item }: RowActionsProps): JSX.Element => (
+ <>
+
+
+ >
+);
+
+type ToolbarActionsProps = {
+ selectedIds: string[];
+};
+
+const ToolbarActions = ({ selectedIds }: ToolbarActionsProps): JSX.Element => (
+ <>
+
+
+ >
+);
+
+const RecycleBinLoadableContent = (): JSX.Element | null => {
+ const { t: translateBuilder } = useBuilderTranslation();
+ const { data: recycledItems, isLoading, isError } = hooks.useRecycledItems();
+
+ if (recycledItems) {
+ return (
+
+
+
+
+ );
+ }
+ if (isLoading) {
+ return ;
+ }
+ if (isError) {
+ return ;
+ }
+ return null;
+};
+
+const RecycledItemsScreen = (): JSX.Element => ;
+
+export default RecycledItemsScreen;
diff --git a/src/components/SharedItems.tsx b/src/components/pages/SharedItemsScreen.tsx
similarity index 66%
rename from src/components/SharedItems.tsx
rename to src/components/pages/SharedItemsScreen.tsx
index 00d3bc6d6..8e6e46b7d 100644
--- a/src/components/SharedItems.tsx
+++ b/src/components/pages/SharedItemsScreen.tsx
@@ -5,16 +5,16 @@ import { Loader } from '@graasp/ui';
import { BUILDER } from '@/langs/constants';
-import { useBuilderTranslation } from '../config/i18n';
-import { hooks } from '../config/queryClient';
+import { useBuilderTranslation } from '../../config/i18n';
+import { hooks } from '../../config/queryClient';
import {
SHARED_ITEMS_ERROR_ALERT_ID,
SHARED_ITEMS_ID,
-} from '../config/selectors';
-import ErrorAlert from './common/ErrorAlert';
-import ItemHeader from './item/header/ItemHeader';
-import Items from './main/Items';
-import Main from './main/Main';
+ SHARED_ITEMS_ROOT_CONTAINER,
+} from '../../config/selectors';
+import ErrorAlert from '../common/ErrorAlert';
+import ItemHeader from '../item/header/ItemHeader';
+import Items from '../main/Items';
const SharedItemsLoadableContent = (): JSX.Element => {
const { t: translateBuilder } = useBuilderTranslation();
@@ -28,8 +28,8 @@ const SharedItemsLoadableContent = (): JSX.Element => {
}
return (
-
-
+
+
{translateBuilder(
"You can also find the items of this page in ''My Graasp''. This page will be unavailable soon.",
)}
@@ -46,10 +46,6 @@ const SharedItemsLoadableContent = (): JSX.Element => {
);
};
-const SharedItems = (): JSX.Element => (
-
-
-
-);
+const SharedItemsScreen = (): JSX.Element => ;
-export default SharedItems;
+export default SharedItemsScreen;
diff --git a/src/config/queryClient.ts b/src/config/queryClient.ts
index e761dcb61..c387daacc 100644
--- a/src/config/queryClient.ts
+++ b/src/config/queryClient.ts
@@ -18,9 +18,6 @@ const {
defaultQueryOptions: {
keepPreviousData: true,
refetchOnMount: false,
- // avoid refetching when same data are closely fetched
- staleTime: 3 * 1000, // ms
- cacheTime: 1000, // ms
},
DOMAIN,
});
diff --git a/src/config/selectors.ts b/src/config/selectors.ts
index 3d49272c3..854e057bb 100644
--- a/src/config/selectors.ts
+++ b/src/config/selectors.ts
@@ -2,6 +2,8 @@
// import { Platform } from '@graasp/ui';
import { ShortLinkPlatform } from '@/utils/shortLink';
+export const SHARED_ITEMS_ROOT_CONTAINER = 'sharedItemsPageRootContainer';
+export const RECYCLED_ITEMS_ROOT_CONTAINER = 'recycledItemsPageRootContainer';
export const HEADER_APP_BAR_ID = 'headerAppBar';
export const ITEM_DELETE_BUTTON_CLASS = 'itemDeleteButton';
export const ITEM_COPY_BUTTON_CLASS = 'itemCopyButton';
@@ -95,8 +97,9 @@ export const ITEM_LOGIN_SIGN_IN_MODE_ID = 'itemLoginSignInMode';
export const ITEM_MAIN_CLASS = 'itemMain';
export const HOME_ERROR_ALERT_ID = 'homeErrorAlert';
export const SHARED_ITEMS_ERROR_ALERT_ID = 'sharedItemsErrorAlert';
-export const PUBLISHED_ITEMS_ERROR_ALERT_ID = 'publishedItemsErrorAlert';
export const FAVORITE_ITEMS_ERROR_ALERT_ID = 'favoriteItemsErrorAlert';
+export const PUBLISHED_ITEMS_ERROR_ALERT_ID = 'publishedItemsErrorAlert';
+export const RECYCLED_ITEMS_ERROR_ALERT_ID = 'recycledItemsErrorAlert';
export const ITEM_MENU_SHORTCUT_BUTTON_CLASS = 'itemMenuShortcutButton';
export const ITEM_MENU_DUPLICATE_BUTTON_CLASS = 'itemMenuDuplicateButton';
export const ITEM_MENU_FAVORITE_BUTTON_CLASS = 'itemMenuFavoriteButton';
diff --git a/yarn.lock b/yarn.lock
index 874437e67..eca374614 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -19,6 +19,13 @@ __metadata:
languageName: node
linkType: hard
+"@ag-grid-community/styles@npm:31.0.3":
+ version: 31.0.3
+ resolution: "@ag-grid-community/styles@npm:31.0.3"
+ checksum: 9caa12c9231a9df0d5cfd787a668da01e628b2c55e5c7c2c558473880bdc6e07c15790f5404e1fc566288e62b3ca16f2da1591ee78d2575c0ca01474af70f764
+ languageName: node
+ linkType: hard
+
"@ampproject/remapping@npm:^2.2.0":
version: 2.2.1
resolution: "@ampproject/remapping@npm:2.2.1"
@@ -1308,9 +1315,9 @@ __metadata:
languageName: node
linkType: hard
-"@graasp/ui@npm:4.5.0":
- version: 4.5.0
- resolution: "@graasp/ui@npm:4.5.0"
+"@graasp/ui@npm:4.5.1":
+ version: 4.5.1
+ resolution: "@graasp/ui@npm:4.5.1"
dependencies:
"@graasp/sdk": "npm:3.5.0"
http-status-codes: "npm:2.3.0"
@@ -1344,7 +1351,7 @@ __metadata:
optional: true
ag-grid-react:
optional: true
- checksum: eecd53f0d9d7824c526179b84db29ff303c70f0405d19ad74fc48c5b4966ed47620da06fdda981bfc7ed70eba08d02d1bc9f3e3a958ec430c556fa6b191f5878
+ checksum: 659135ea821492202155706c4ae6c0effda5aa862ae302c9b056c3220476bc1d4042d2a25ed6d3f808f061370c8f2b970b81de1db88fb9dd9f3ab71712640db4
languageName: node
linkType: hard
@@ -6323,6 +6330,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "graasp-builder@workspace:."
dependencies:
+ "@ag-grid-community/styles": "npm:31.0.3"
"@commitlint/cli": "npm:18.4.4"
"@commitlint/config-conventional": "npm:18.4.4"
"@cypress/code-coverage": "npm:3.12.12"
@@ -6333,7 +6341,7 @@ __metadata:
"@graasp/query-client": "npm:2.4.1"
"@graasp/sdk": "npm:3.4.1"
"@graasp/translations": "npm:1.22.1"
- "@graasp/ui": "npm:4.5.0"
+ "@graasp/ui": "npm:4.5.1"
"@mui/icons-material": "npm:5.14.19"
"@mui/lab": "npm:5.0.0-alpha.151"
"@mui/material": "npm:5.14.19"