From 779463dadad2aef6bbb52076eae8540d72b33037 Mon Sep 17 00:00:00 2001
From: DiamondThree <857159145@qq.com>
Date: Tue, 10 Jan 2023 11:43:21 +0800
Subject: [PATCH] feat: add workspace route
---
.../workspace-setting/general/delete/index.ts | 2 +-
.../workspace-setting/general/index.ts | 2 +-
.../workspace-setting/general/leave/index.ts | 2 +-
.../src/components/workspace-setting/style.ts | 12 +-
.../components/workspace-slider-bar/index.tsx | 19 ++-
.../pages/workspace/[workspaceId]/setting.tsx | 159 ++++++++++++++++++
6 files changed, 176 insertions(+), 20 deletions(-)
create mode 100644 packages/app/src/pages/workspace/[workspaceId]/setting.tsx
diff --git a/packages/app/src/components/workspace-setting/general/delete/index.ts b/packages/app/src/components/workspace-setting/general/delete/index.ts
index 69b5324048..c0ea9800e4 100644
--- a/packages/app/src/components/workspace-setting/general/delete/index.ts
+++ b/packages/app/src/components/workspace-setting/general/delete/index.ts
@@ -1 +1 @@
-export * from './Delete';
+export { WorkspaceDelete } from './Delete';
diff --git a/packages/app/src/components/workspace-setting/general/index.ts b/packages/app/src/components/workspace-setting/general/index.ts
index 0ab02c523e..7e81aedd14 100644
--- a/packages/app/src/components/workspace-setting/general/index.ts
+++ b/packages/app/src/components/workspace-setting/general/index.ts
@@ -1 +1 @@
-export * from './General';
+export { GeneralPage } from './General';
diff --git a/packages/app/src/components/workspace-setting/general/leave/index.ts b/packages/app/src/components/workspace-setting/general/leave/index.ts
index c3bfa43ca5..2ef886aa53 100644
--- a/packages/app/src/components/workspace-setting/general/leave/index.ts
+++ b/packages/app/src/components/workspace-setting/general/leave/index.ts
@@ -1 +1 @@
-export * from './Leave';
+export { WorkspaceLeave } from './Leave';
diff --git a/packages/app/src/components/workspace-setting/style.ts b/packages/app/src/components/workspace-setting/style.ts
index 7b4e645526..48fbb284ff 100644
--- a/packages/app/src/components/workspace-setting/style.ts
+++ b/packages/app/src/components/workspace-setting/style.ts
@@ -4,22 +4,15 @@ import MuiAvatar from '@mui/material/Avatar';
export const StyledSettingContainer = styled('div')(({ theme }) => {
return {
- position: 'relative',
display: 'flex',
- padding: '0px',
- width: '961px',
- background: theme.colors.popoverBackground,
- borderRadius: '12px',
- overflow: 'hidden',
+ padding: '50px',
+ flexDirection: 'column',
};
});
export const StyledSettingSidebar = styled('div')(({ theme }) => {
{
return {
- width: '212px',
- height: '620px',
- background: theme.mode === 'dark' ? '#272727' : '#FBFBFC',
flexShrink: 0,
flexGrow: 0,
};
@@ -59,7 +52,6 @@ export const StyledSettingTabContainer = styled('ul')(() => {
{
return {
display: 'flex',
- flexDirection: 'column',
marginTop: '25px',
};
}
diff --git a/packages/app/src/components/workspace-slider-bar/index.tsx b/packages/app/src/components/workspace-slider-bar/index.tsx
index c40dc31c11..aae95f7a97 100644
--- a/packages/app/src/components/workspace-slider-bar/index.tsx
+++ b/packages/app/src/components/workspace-slider-bar/index.tsx
@@ -32,7 +32,7 @@ import { IconButton } from '@/ui/button';
import useLocalStorage from '@/hooks/use-local-storage';
import usePageMetaList from '@/hooks/use-page-meta-list';
import { usePageHelper } from '@/hooks/use-page-helper';
-import { WorkspaceSetting } from '@/components/workspace-setting';
+// import { WorkspaceSetting } from '@/components/workspace-setting';
import { useTranslation } from 'react-i18next';
import { WorkspaceSelector } from './WorkspaceSelector/WorkspaceSelector';
@@ -78,14 +78,15 @@ export const WorkSpaceSliderBar = () => {
const [showTip, setShowTip] = useState(false);
const [show, setShow] = useLocalStorage('AFFiNE_SLIDE_BAR', false, true);
- const [showWorkspaceSetting, setShowWorkspaceSetting] = useState(false);
-
const paths = {
all: currentWorkspaceId ? `/workspace/${currentWorkspaceId}/all` : '',
favorite: currentWorkspaceId
? `/workspace/${currentWorkspaceId}/favorite`
: '',
trash: currentWorkspaceId ? `/workspace/${currentWorkspaceId}/trash` : '',
+ setting: currentWorkspaceId
+ ? `/workspace/${currentWorkspaceId}/setting`
+ : '',
};
return (
@@ -154,18 +155,22 @@ export const WorkSpaceSliderBar = () => {
{
- setShowWorkspaceSetting(true);
+ // setShowWorkspaceSetting(true);
}}
>
- Setting
+
+
+ {t('Setting')}
+
+
- {
setShowWorkspaceSetting(false);
}}
- />
+ /> */}
{
diff --git a/packages/app/src/pages/workspace/[workspaceId]/setting.tsx b/packages/app/src/pages/workspace/[workspaceId]/setting.tsx
new file mode 100644
index 0000000000..27122bb2f4
--- /dev/null
+++ b/packages/app/src/pages/workspace/[workspaceId]/setting.tsx
@@ -0,0 +1,159 @@
+import Modal, { ModalCloseButton } from '@/ui/modal';
+import {
+ StyledSettingContainer,
+ StyledSettingContent,
+ StyledSettingSidebar,
+ StyledSettingSidebarHeader,
+ StyledSettingTabContainer,
+ StyledSettingTagIconContainer,
+ WorkspaceSettingTagItem,
+} from '../../../components/workspace-setting/style';
+import {
+ EditIcon,
+ UsersIcon,
+ PublishIcon,
+ CloudInsyncIcon,
+} from '@blocksuite/icons';
+import { ReactElement, useEffect, useState } from 'react';
+import { GeneralPage } from '../../../components/workspace-setting/general';
+import { MembersPage } from '../../../components/workspace-setting/MembersPage';
+import { PublishPage } from '../../../components/workspace-setting/PublishPage';
+import { ExportPage } from '../../../components/workspace-setting/ExportPage';
+import { SyncPage } from '../../../components/workspace-setting/SyncPage';
+import { useAppState } from '@/providers/app-state-provider';
+import WorkspaceLayout from '@/components/workspace-layout';
+
+enum ActiveTab {
+ 'general' = 'general',
+ 'members' = 'members',
+ 'publish' = 'publish',
+ 'sync' = 'sync',
+ 'export' = 'export',
+}
+
+type SettingTabProps = {
+ activeTab: ActiveTab;
+ onTabChange?: (tab: ActiveTab) => void;
+};
+
+type WorkspaceSettingProps = {
+ isShow: boolean;
+ onClose?: () => void;
+};
+
+const WorkspaceSettingTab = ({ activeTab, onTabChange }: SettingTabProps) => {
+ return (
+
+ {
+ onTabChange && onTabChange(ActiveTab.general);
+ }}
+ >
+
+
+
+ General
+
+
+ {
+ onTabChange && onTabChange(ActiveTab.sync);
+ }}
+ >
+
+
+
+ Sync
+
+
+ {
+ onTabChange && onTabChange(ActiveTab.members);
+ }}
+ >
+
+
+
+ Collaboration
+
+ {
+ onTabChange && onTabChange(ActiveTab.publish);
+ }}
+ >
+
+
+
+ Publish
+
+
+ {
+ onTabChange && onTabChange(ActiveTab.export);
+ }}
+ >
+
+
+
+ Export
+
+
+ );
+};
+
+const WorkspaceSetting = ({ isShow, onClose }: WorkspaceSettingProps) => {
+ // const { workspaces } = useAppState();
+ const [activeTab, setActiveTab] = useState(ActiveTab.general);
+ const handleTabChange = (tab: ActiveTab) => {
+ setActiveTab(tab);
+ };
+
+ const { currentMetaWorkSpace } = useAppState();
+ useEffect(() => {
+ // reset tab when modal is closed
+ if (!isShow) {
+ setActiveTab(ActiveTab.general);
+ }
+ }, [isShow]);
+ return (
+
+
+
+ Workspace Settings
+
+
+
+
+
+ {activeTab === ActiveTab.general && currentMetaWorkSpace && (
+
+ )}
+ {activeTab === ActiveTab.sync && currentMetaWorkSpace && (
+
+ )}
+ {activeTab === ActiveTab.members && currentMetaWorkSpace && (
+
+ )}
+ {activeTab === ActiveTab.publish && currentMetaWorkSpace && (
+
+ )}
+ {activeTab === ActiveTab.export && currentMetaWorkSpace && (
+
+ )}
+
+
+ );
+};
+WorkspaceSetting.getLayout = function getLayout(page: ReactElement) {
+ return {page};
+};
+
+export default WorkspaceSetting;