From 549aff2cd65e84380383f8fd3b5761b106285384 Mon Sep 17 00:00:00 2001 From: fantasticit Date: Thu, 5 May 2022 10:32:47 +0800 Subject: [PATCH] feat: improve ux --- .../src/components/document/create/index.tsx | 3 +- .../client/src/components/message/index.tsx | 2 +- .../src/components/message/placeholder.tsx | 2 +- .../src/components/template/editor/index.tsx | 92 +++++++++++++++++-- .../wiki-or-document-creator/index.tsx | 17 ++-- .../src/layouts/router-header/index.tsx | 8 +- .../src/layouts/router-header/recent.tsx | 4 +- .../client/src/layouts/router-header/wiki.tsx | 4 +- .../collaboration/collaboration/editor.tsx | 36 +++----- 9 files changed, 121 insertions(+), 47 deletions(-) diff --git a/packages/client/src/components/document/create/index.tsx b/packages/client/src/components/document/create/index.tsx index d4e42fb3..cd6a9e2c 100644 --- a/packages/client/src/components/document/create/index.tsx +++ b/packages/client/src/components/document/create/index.tsx @@ -5,7 +5,6 @@ import { useCreateDocument } from 'data/document'; import { usePublicTemplates, useOwnTemplates } from 'data/template'; import { TemplateList } from 'components/template/list'; import { TemplateCardEmpty } from 'components/template/card'; - import styles from './index.module.scss'; interface IProps { @@ -56,7 +55,7 @@ export const DocumentCreator: React.FC = ({ wikiId, parentDocumentId, vi width: '96vh', }} bodyStyle={{ - maxHeight: 'calc(90vh - 120px)', + maxHeight: 'calc(80vh - 150px)', overflow: 'auto', }} key={wikiId} diff --git a/packages/client/src/components/message/index.tsx b/packages/client/src/components/message/index.tsx index 357c30fa..54fcb339 100644 --- a/packages/client/src/components/message/index.tsx +++ b/packages/client/src/components/message/index.tsx @@ -32,7 +32,7 @@ const MessagesRender = ({ messageData, loading, error, onClick = null, page = 1, return (
{ e.preventDefault(); e.stopPropagation(); diff --git a/packages/client/src/components/message/placeholder.tsx b/packages/client/src/components/message/placeholder.tsx index c74a08f8..be3efb98 100644 --- a/packages/client/src/components/message/placeholder.tsx +++ b/packages/client/src/components/message/placeholder.tsx @@ -5,7 +5,7 @@ export const Placeholder = () => { - {Array.from({ length: 6 }).fill( + {Array.from({ length: 7 }).fill( )} diff --git a/packages/client/src/components/template/editor/index.tsx b/packages/client/src/components/template/editor/index.tsx index e50cf347..06c606e1 100644 --- a/packages/client/src/components/template/editor/index.tsx +++ b/packages/client/src/components/template/editor/index.tsx @@ -1,19 +1,53 @@ -import React from 'react'; -import { Spin } from '@douyinfe/semi-ui'; +import React, { useState, useMemo, useCallback, useEffect } from 'react'; +import Router from 'next/router'; +import cls from 'classnames'; +import { Spin, Button, Nav, Space, Typography, Tooltip, Switch, Popover, Popconfirm } from '@douyinfe/semi-ui'; +import { IconChevronLeft, IconArticle } from '@douyinfe/semi-icons'; import { useUser } from 'data/user'; +import { useTemplate } from 'data/template'; import { Seo } from 'components/seo'; import { DataRender } from 'components/data-render'; -import { useTemplate } from 'data/template'; -import { Editor } from './editor'; +import { Theme } from 'components/theme'; +import { User } from 'components/user'; +import { DocumentStyle } from 'components/document/style'; +import { useDocumentStyle } from 'hooks/use-document-style'; +import { useWindowSize } from 'hooks/use-window-size'; +import { CollaborationEditor } from 'tiptap/editor'; +import styles from './index.module.scss'; interface IProps { templateId: string; } +const { Text } = Typography; + export const TemplateEditor: React.FC = ({ templateId }) => { const { user } = useUser(); const { data, loading, error, updateTemplate, deleteTemplate } = useTemplate(templateId); + const { width: windowWidth } = useWindowSize(); + const [title, setTitle] = useState(data.title); + const [isPublic, setPublic] = useState(false); + const { width, fontSize } = useDocumentStyle(); + const editorWrapClassNames = useMemo(() => { + return width === 'standardWidth' ? styles.isStandardWidth : styles.isFullWidth; + }, [width]); + + const goback = useCallback(() => { + Router.back(); + }, []); + + const handleDelte = useCallback(() => { + deleteTemplate().then(() => { + goback(); + }); + }, [deleteTemplate, goback]); + + useEffect(() => { + if (!data) return; + setPublic(data.isPublic); + }, [data]); + return ( = ({ templateId }) => { return ( <> - {user && data && ( - - )} +
+
+ +
+
+
+
+ +
+
+
+
); }} diff --git a/packages/client/src/components/wiki-or-document-creator/index.tsx b/packages/client/src/components/wiki-or-document-creator/index.tsx index 55774aab..96b3aa2a 100644 --- a/packages/client/src/components/wiki-or-document-creator/index.tsx +++ b/packages/client/src/components/wiki-or-document-creator/index.tsx @@ -14,26 +14,27 @@ interface IProps { export const WikiOrDocumentCreator: React.FC = ({ onCreateDocument, children }) => { const { isMobile } = useWindowSize(); const { wikiId, docId } = useQuery<{ wikiId?: string; docId?: string }>(); + const [dropdownVisible, toggleDropdownVisible] = useToggle(false); const [visible, toggleVisible] = useToggle(false); const [createDocumentModalVisible, toggleCreateDocumentModalVisible] = useToggle(false); return ( <> + // @ts-ignore + 知识库 {wikiId && 文档} } > - {children || isMobile ? ( - - )} + + {children ||