From 44d569ca669f362e61e87421543972277173e991 Mon Sep 17 00:00:00 2001 From: QiShaoXuan Date: Tue, 31 Jan 2023 12:22:00 +0800 Subject: [PATCH 1/6] feat: add FlexWrapper in layout component --- packages/app/src/components/import/index.tsx | 6 +-- .../components/page-list/OperationCell.tsx | 10 ++-- .../src/components/workspace-modal/Footer.tsx | 6 +-- .../workspace-modal/WorkspaceCard.tsx | 6 +-- .../src/components/workspace-modal/index.tsx | 6 +-- .../workspace-setting/member/MembersPage.tsx | 6 +-- packages/app/src/ui/layout/Wrapper.tsx | 49 +++++++++++++++---- 7 files changed, 60 insertions(+), 29 deletions(-) diff --git a/packages/app/src/components/import/index.tsx b/packages/app/src/components/import/index.tsx index a594b08e35..05fd28182c 100644 --- a/packages/app/src/components/import/index.tsx +++ b/packages/app/src/components/import/index.tsx @@ -1,7 +1,7 @@ import { Modal, ModalWrapper, ModalCloseButton } from '@/ui/modal'; import { StyledButtonWrapper, StyledTitle } from './styles'; import { Button } from '@/ui/button'; -import { Wrapper, Content } from '@/ui/layout'; +import { Wrapper, Content, FlexWrapper } from '@/ui/layout'; import Loading from '@/components/loading'; import { usePageHelper } from '@/hooks/use-page-helper'; import { useAppState } from '@/providers/app-state-provider'; @@ -116,7 +116,7 @@ export const ImportModal = ({ open, onClose }: ImportModalProps) => { )} {status === 'importing' && ( - { OOOOPS! Sorry forgot to remind you that we are working on the import function - + )} diff --git a/packages/app/src/components/page-list/OperationCell.tsx b/packages/app/src/components/page-list/OperationCell.tsx index ca59efa60a..a9efc634c4 100644 --- a/packages/app/src/components/page-list/OperationCell.tsx +++ b/packages/app/src/components/page-list/OperationCell.tsx @@ -1,7 +1,7 @@ import { useConfirm } from '@/providers/ConfirmProvider'; import { PageMeta } from '@/providers/app-state-provider'; import { Menu, MenuItem } from '@/ui/menu'; -import { Wrapper } from '@/ui/layout'; +import { FlexWrapper } from '@/ui/layout'; import { IconButton } from '@/ui/button'; import { MoreVerticalIcon, @@ -63,13 +63,13 @@ export const OperationCell = ({ pageMeta }: { pageMeta: PageMeta }) => { ); return ( - + - + ); }; @@ -80,7 +80,7 @@ export const TrashOperationCell = ({ pageMeta }: { pageMeta: PageMeta }) => { const { confirm } = useConfirm(); const { t } = useTranslation(); return ( - + { > - + ); }; diff --git a/packages/app/src/components/workspace-modal/Footer.tsx b/packages/app/src/components/workspace-modal/Footer.tsx index ea38de2a9c..0aef077900 100644 --- a/packages/app/src/components/workspace-modal/Footer.tsx +++ b/packages/app/src/components/workspace-modal/Footer.tsx @@ -1,5 +1,5 @@ import { CloudInsyncIcon, LogOutIcon } from '@blocksuite/icons'; -import { Wrapper } from '@/ui/layout'; +import { FlexWrapper } from '@/ui/layout'; import { WorkspaceAvatar } from '@/components/workspace-avatar'; import { IconButton } from '@/ui/button'; import { useAppState } from '@/providers/app-state-provider'; @@ -18,7 +18,7 @@ export const Footer = ({ {user && ( <> - + {user.name}

{user.email}

-
+ { onLogout(); diff --git a/packages/app/src/components/workspace-modal/WorkspaceCard.tsx b/packages/app/src/components/workspace-modal/WorkspaceCard.tsx index 1a6032d65f..f3177fbafe 100644 --- a/packages/app/src/components/workspace-modal/WorkspaceCard.tsx +++ b/packages/app/src/components/workspace-modal/WorkspaceCard.tsx @@ -8,7 +8,7 @@ import { PublishIcon, UsersIcon } from '@blocksuite/icons'; import { WorkspaceUnit } from '@affine/datacenter'; import { useAppState } from '@/providers/app-state-provider'; import { StyleWorkspaceInfo, StyleWorkspaceTitle, StyledCard } from './styles'; -import { Wrapper } from '@/ui/layout'; +import { FlexWrapper } from '@/ui/layout'; export const WorkspaceCard = ({ workspaceData, @@ -26,9 +26,9 @@ export const WorkspaceCard = ({ }} active={workspaceData.id === currentWorkspace?.id} > - + - + diff --git a/packages/app/src/components/workspace-modal/index.tsx b/packages/app/src/components/workspace-modal/index.tsx index 93b1bb7279..88ab7a979f 100644 --- a/packages/app/src/components/workspace-modal/index.tsx +++ b/packages/app/src/components/workspace-modal/index.tsx @@ -1,5 +1,5 @@ import { Modal, ModalWrapper, ModalCloseButton } from '@/ui/modal'; -import { Wrapper } from '@/ui/layout'; +import { FlexWrapper } from '@/ui/layout'; import { useState } from 'react'; import { CreateWorkspaceModal } from '../create-workspace'; import { Tooltip } from '@/ui/tooltip'; @@ -101,11 +101,11 @@ export const WorkspaceModal = ({ open, onClose }: WorkspaceModalProps) => { setCreateWorkspaceOpen(true); }} > - + - + New workspace diff --git a/packages/app/src/components/workspace-setting/member/MembersPage.tsx b/packages/app/src/components/workspace-setting/member/MembersPage.tsx index b1b64ffa0e..986853652f 100644 --- a/packages/app/src/components/workspace-setting/member/MembersPage.tsx +++ b/packages/app/src/components/workspace-setting/member/MembersPage.tsx @@ -25,7 +25,7 @@ import { useConfirm } from '@/providers/ConfirmProvider'; import { toast } from '@/ui/toast'; import useMembers from '@/hooks/use-members'; import Loading from '@/components/loading'; -import { Wrapper } from '@/ui/layout'; +import { FlexWrapper } from '@/ui/layout'; import { useTranslation } from '@affine/i18n'; import { EnableWorkspaceButton } from '@/components/enable-workspace'; @@ -41,9 +41,9 @@ export const MembersPage = ({ workspace }: { workspace: WorkspaceUnit }) => { {!loaded && ( - + - + )} {loaded && members.length === 0 && ( diff --git a/packages/app/src/ui/layout/Wrapper.tsx b/packages/app/src/ui/layout/Wrapper.tsx index 00584b20f0..a463312abf 100644 --- a/packages/app/src/ui/layout/Wrapper.tsx +++ b/packages/app/src/ui/layout/Wrapper.tsx @@ -2,6 +2,14 @@ import type { CSSProperties } from 'react'; import { styled } from '@/styles'; export type WrapperProps = { + display?: CSSProperties['display']; + width?: CSSProperties['width']; + height?: CSSProperties['height']; + padding?: CSSProperties['padding']; + margin?: CSSProperties['margin']; +}; + +export type FlexWrapperProps = { display?: CSSProperties['display']; flexDirection?: CSSProperties['flexDirection']; justifyContent?: CSSProperties['justifyContent']; @@ -13,9 +21,22 @@ export type WrapperProps = { // Sometimes we just want to wrap a component with a div to set flex or other styles, but we don't want to create a new component for it. export const Wrapper = styled('div', { + shouldForwardProp: prop => { + return !['display', 'width', 'height', 'padding', 'margin'].includes(prop); + }, +})(({ display, width, height, padding, margin }) => { + return { + display, + width, + height, + padding, + margin, + }; +}); + +export const FlexWrapper = styled(Wrapper, { shouldForwardProp: prop => { return ![ - 'display', 'justifyContent', 'alignItems', 'wrap', @@ -24,18 +45,17 @@ export const Wrapper = styled('div', { 'flexGrow', ].includes(prop); }, -})( +})( ({ - display = 'flex', - justifyContent = 'flex-start', - alignItems = 'center', + justifyContent, + alignItems, wrap = false, - flexDirection = 'row', - flexShrink = '0', - flexGrow = '0', + flexDirection, + flexShrink, + flexGrow, }) => { return { - display, + display: 'flex', justifyContent, alignItems, flexWrap: wrap ? 'wrap' : 'nowrap', @@ -46,4 +66,15 @@ export const Wrapper = styled('div', { } ); +// TODO: Complete me +export const GridWrapper = styled(Wrapper, { + shouldForwardProp: prop => { + return ![''].includes(prop); + }, +})(() => { + return { + display: 'grid', + }; +}); + export default Wrapper; From c11f257943bdb7f6c7400a3580d921ebd72d4ee6 Mon Sep 17 00:00:00 2001 From: QiShaoXuan Date: Tue, 31 Jan 2023 12:28:32 +0800 Subject: [PATCH 2/6] fix: lint error --- packages/app/src/components/import/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/app/src/components/import/index.tsx b/packages/app/src/components/import/index.tsx index 05fd28182c..d8eaa2ffd5 100644 --- a/packages/app/src/components/import/index.tsx +++ b/packages/app/src/components/import/index.tsx @@ -1,7 +1,7 @@ import { Modal, ModalWrapper, ModalCloseButton } from '@/ui/modal'; import { StyledButtonWrapper, StyledTitle } from './styles'; import { Button } from '@/ui/button'; -import { Wrapper, Content, FlexWrapper } from '@/ui/layout'; +import { Content, FlexWrapper } from '@/ui/layout'; import Loading from '@/components/loading'; import { usePageHelper } from '@/hooks/use-page-helper'; import { useAppState } from '@/providers/app-state-provider'; From 2f5724578fa3ff8bcb27f8f73408e716e6bd0c17 Mon Sep 17 00:00:00 2001 From: QiShaoXuan Date: Tue, 31 Jan 2023 13:18:37 +0800 Subject: [PATCH 3/6] feat: modify Content component --- packages/app/src/ui/layout/Content.tsx | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/app/src/ui/layout/Content.tsx b/packages/app/src/ui/layout/Content.tsx index 510f3886a6..38d13251e5 100644 --- a/packages/app/src/ui/layout/Content.tsx +++ b/packages/app/src/ui/layout/Content.tsx @@ -14,8 +14,21 @@ export type ContentProps = { lineNum?: number; children: string; }; - -export const Content = styled.div( +export const Content = styled('div', { + shouldForwardProp: prop => { + return ![ + 'color', + 'fontSize', + 'weight', + 'lineHeight', + 'ellipsis', + 'lineNum', + 'width', + 'maxWidth', + 'align', + ].includes(prop); + }, +})( ({ theme, color, From 5fb22d5b654a5be765cd2569951caf0d3b95db7e Mon Sep 17 00:00:00 2001 From: QiShaoXuan Date: Tue, 31 Jan 2023 19:00:11 +0800 Subject: [PATCH 4/6] fix: workspace modal style error --- packages/app/src/components/workspace-modal/styles.ts | 3 ++- packages/app/src/styles/helper.ts | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/app/src/components/workspace-modal/styles.ts b/packages/app/src/components/workspace-modal/styles.ts index 57146afbdf..6796c3a57b 100644 --- a/packages/app/src/components/workspace-modal/styles.ts +++ b/packages/app/src/components/workspace-modal/styles.ts @@ -45,6 +45,7 @@ export const StyledCard = styled.div<{ borderRadius: '12px', border: `1px solid ${borderColor}`, ...displayFlex('flex-start', 'flex-start'), + marginBottom: '24px', ':hover': { background: theme.colors.hoverBackground, '.add-icon': { @@ -125,7 +126,7 @@ export const StyledModalContent = styled('div')({ padding: '8px 40px', marginTop: '72px', overflow: 'auto', - ...displayFlex('space-between', 'flex-start', 'column'), + ...displayFlex('space-between', 'flex-start', 'flex-start'), flexWrap: 'wrap', }); export const StyledOperationWrapper = styled.div(() => { diff --git a/packages/app/src/styles/helper.ts b/packages/app/src/styles/helper.ts index 3e5949ae3e..20e397f741 100644 --- a/packages/app/src/styles/helper.ts +++ b/packages/app/src/styles/helper.ts @@ -2,12 +2,12 @@ import type { CSSProperties } from 'react'; export const displayFlex = ( justifyContent: CSSProperties['justifyContent'] = 'unset', - alignItems: CSSProperties['alignContent'] = 'unset', + alignItems: CSSProperties['alignItems'] = 'unset', alignContent: CSSProperties['alignContent'] = 'unset' ): { display: CSSProperties['display']; justifyContent: CSSProperties['justifyContent']; - alignItems: CSSProperties['alignContent']; + alignItems: CSSProperties['alignItems']; alignContent: CSSProperties['alignContent']; } => { return { From 4545c4b56f523e86c24ced795c4d572acab943ef Mon Sep 17 00:00:00 2001 From: QiShaoXuan Date: Tue, 31 Jan 2023 19:02:11 +0800 Subject: [PATCH 5/6] fix: can not close workspace modal --- packages/app/src/ui/modal/ModalCloseButton.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/app/src/ui/modal/ModalCloseButton.tsx b/packages/app/src/ui/modal/ModalCloseButton.tsx index b42d687ca7..f5e4eaf079 100644 --- a/packages/app/src/ui/modal/ModalCloseButton.tsx +++ b/packages/app/src/ui/modal/ModalCloseButton.tsx @@ -28,7 +28,7 @@ export const ModalCloseButton = ({ ) : ( - + ); From cf2767c5686781684bbac665f5bc9e2f4d275cbd Mon Sep 17 00:00:00 2001 From: QiShaoXuan Date: Wed, 1 Feb 2023 17:59:46 +0800 Subject: [PATCH 6/6] feat: adjust layout --- .../app/src/components/workspace-slider-bar/style.ts | 2 +- packages/app/src/pages/temporary.css | 12 +++--------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/packages/app/src/components/workspace-slider-bar/style.ts b/packages/app/src/components/workspace-slider-bar/style.ts index 6f380b43e1..a8f09dcc7b 100644 --- a/packages/app/src/components/workspace-slider-bar/style.ts +++ b/packages/app/src/components/workspace-slider-bar/style.ts @@ -4,7 +4,7 @@ import Link from 'next/link'; export const StyledSliderBar = styled.div<{ show: boolean }>( ({ theme, show }) => { return { - width: show ? '320px' : '0', + width: show ? '256px' : '0', height: '100vh', background: theme.mode === 'dark' ? '#272727' : '#FBFBFC', boxShadow: theme.shadow.modal, diff --git a/packages/app/src/pages/temporary.css b/packages/app/src/pages/temporary.css index 92e2ff7b44..9bda7bdcf9 100644 --- a/packages/app/src/pages/temporary.css +++ b/packages/app/src/pages/temporary.css @@ -1,14 +1,8 @@ -debug-menu { - display: none !important; -} -.affine-block-children-container.edgeless { - background-color: #fff; -} - .affine-default-page-block-title-container { margin-top: 78px; margin-bottom: 40px; } -.affine-editor-container { - background: transparent !important; + +.affine-default-page-block-container { + width: 686px !important; }