From ba263a28f1ba2a543f6857de143365d892261bc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E7=AB=A5=E5=B4=87?= <792998983@qq.com> Date: Fri, 20 Aug 2021 14:43:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=A4=B4=E5=83=8F=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A4=8D=E5=88=B6toolTip=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=8C=96=E7=BB=84=E4=BB=B6=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/forge/Component/CopyTool.jsx | 44 +++++++++++++++ src/forge/Wiki/Index.jsx | 33 +++-------- src/forge/Wiki/Index.scss | 2 +- src/forge/Wiki/Preview.jsx | 17 +----- src/forge/Wiki/components/Login/index.jsx | 8 +-- src/forge/Wiki/components/Login/index.scss | 56 ------------------- src/forge/Wiki/components/ModalFun/index.jsx | 24 ++++---- src/forge/Wiki/components/ModalFun/index.scss | 11 +++- 8 files changed, 80 insertions(+), 115 deletions(-) create mode 100644 src/forge/Component/CopyTool.jsx delete mode 100644 src/forge/Wiki/components/Login/index.scss diff --git a/src/forge/Component/CopyTool.jsx b/src/forge/Component/CopyTool.jsx new file mode 100644 index 00000000..e659c077 --- /dev/null +++ b/src/forge/Component/CopyTool.jsx @@ -0,0 +1,44 @@ +import React, { useState, useCallback, memo } from 'react'; +import { Tooltip } from 'antd'; + +CopyTool.defaultProps = { + beforeText: '复制', //浮动过去显示的文字 + afterText: '复制成功', //点击后显示的文字 + className: '', //传给svg的class + inputId: 'copyText', //要复制的文本的ID +}; + + +function CopyTool({ beforeText, afterText, className,inputId }) { + const [title, setTitle] = useState(() => { + return beforeText; + }); + + // 复制链接 + const copyUrl = useCallback(() => { + let inputDom = document.getElementById(inputId); + if (!inputDom) { + console.error("您的CopyTool未设置正确的inputId"); + return; + } + inputDom.select(); + if (document.execCommand('copy')) { + document.execCommand('copy'); + } + setTitle(afterText); + inputDom.blur(); + }, []); + + return ( + { setTitle(beforeText) }} + > + + + ); +} + + +export default memo(CopyTool); \ No newline at end of file diff --git a/src/forge/Wiki/Index.jsx b/src/forge/Wiki/Index.jsx index ed5c4899..c27879b2 100644 --- a/src/forge/Wiki/Index.jsx +++ b/src/forge/Wiki/Index.jsx @@ -2,7 +2,7 @@ import React, { useEffect, useCallback, useState } from 'react'; import { Button, Dropdown, Icon, Input, Menu, Tooltip, Select, Upload, message, Spin } from 'antd'; import { getImageUrl, timeAgo } from 'educoder'; import cookie from 'react-cookies'; -// import Loading from "../../Loading"; +import CopyTool from '../Component/CopyTool'; import DelModal from './components/ModalFun'; import Welcome from './Welcome'; import { wikiPages, getWiki, deleteWiki } from './api'; @@ -14,15 +14,12 @@ const InputGroup = Input.Group; const { Option } = Select; export default (props) => { - const { match, current_user, history, showNotification, project, projectDetail } = props; - // const permission = projectDetail && projectDetail.permission !== "Reporter"; + const { match, history, showNotification, project, projectDetail } = props; const permission = projectDetail && projectDetail.permission && projectDetail.permission !== "Reporter"; let projectsId = match.params.projectsId; let owner = match.params.owner; - console.log(project); - const [fileArrInit, setFileArrInit] = useState(null); const [checkItem, setCheckItem] = useState({}); const [itemDetail, setItemDetail] = useState({}); @@ -85,7 +82,7 @@ export default (props) => { DelModal({ title: '删除页面', contentTitle: `您确定要删除“${item.name}”此页面吗?`, - content: '此操作将删除该页面,请进行确认以防文件的丢失。', + content: '此操作将删除该页面,请进行确认以防文件的丢失', onOk: () => { deleteWiki({ owner: owner, @@ -109,17 +106,6 @@ export default (props) => { window.location.href = `/users/${login}`; } - // 复制链接 - const copyUrl = useCallback(() => { - let wikiUrl = document.getElementById("wikiUrl"); - wikiUrl.select(); - if (document.execCommand('copy')) { - document.execCommand('copy'); - } - message.success('复制成功'); - wikiUrl.blur(); - }, []) - function addFile() { history.push(`/projects/${owner}/${projectsId}/wiki/add`); } @@ -231,6 +217,7 @@ export default (props) => { + @@ -246,8 +233,8 @@ export default (props) => { { fileArr.map(item => { - return
-
{ setCheckItem(item) }}> + return
+
{ setCheckItem(item) }}>
{item.name} @@ -266,9 +253,7 @@ export default (props) => { - - - + }
@@ -277,9 +262,9 @@ export default (props) => {

{checkItem.name}

- { goUser(current_user.login) }}> + { checkItem.commit && goUser(checkItem.commit.author.name) }}> {itemDetail.image_url && 头像} - {checkItem.commit ? checkItem.commit.author.name : ''} + {itemDetail.userName} 上次修改于{checkItem.commit && timeAgo(checkItem.commit.author.when)}
diff --git a/src/forge/Wiki/Index.scss b/src/forge/Wiki/Index.scss index c571da25..e40de299 100644 --- a/src/forge/Wiki/Index.scss +++ b/src/forge/Wiki/Index.scss @@ -199,7 +199,7 @@ body { word-break: break-all; } - .copy-svg { + .copy-wiki { display: inline-flex; align-items: center; justify-content: center; diff --git a/src/forge/Wiki/Preview.jsx b/src/forge/Wiki/Preview.jsx index 20645246..e7c6a623 100644 --- a/src/forge/Wiki/Preview.jsx +++ b/src/forge/Wiki/Preview.jsx @@ -1,5 +1,6 @@ import React, { useEffect, useCallback, useState } from 'react'; -import { Input, Button, Tooltip, Select, Dropdown, Icon, Menu, message } from 'antd'; +import { Input, Button, Select, Dropdown, Icon, Menu, message } from 'antd'; +import CopyTool from '../Component/CopyTool'; import { wikiPages, getWiki, } from './api'; import { httpUrl } from './fetch'; import './Index.scss'; @@ -59,16 +60,6 @@ export default (props) => { }); }, [project, checkItem]); - const copyUrl = useCallback(() => { - let wikiUrl = document.getElementById("wikiUrl"); - wikiUrl.select(); - if (document.execCommand('copy')) { - document.execCommand('copy'); - } - message.success('复制成功'); - wikiUrl.blur(); - }, []); - function goEdit() { history.push(`/projects/${owner}/${projectsId}/wiki/edit/${checkItem.name}`); } @@ -113,9 +104,7 @@ export default (props) => { - - - + } diff --git a/src/forge/Wiki/components/Login/index.jsx b/src/forge/Wiki/components/Login/index.jsx index 9574a9a5..abfa5295 100644 --- a/src/forge/Wiki/components/Login/index.jsx +++ b/src/forge/Wiki/components/Login/index.jsx @@ -1,10 +1,9 @@ import React, { useState } from 'react'; import * as ReactDOM from 'react-dom'; import LoginDialog from '../../../../modules/login/LoginDialog'; -import './index.scss'; -// 使用函数调用删除组件 -export default function DelModal(props) { +// 使用函数调用登录组件 +export default function Login(props) { const div = document.createElement('div'); document.body.appendChild(div); @@ -16,9 +15,6 @@ export default function DelModal(props) { } function render() { - /** - * Sync render blocks React event. Let's make this async. - */ setTimeout(() => { ReactDOM.render( diff --git a/src/forge/Wiki/components/Login/index.scss b/src/forge/Wiki/components/Login/index.scss deleted file mode 100644 index 13d16066..00000000 --- a/src/forge/Wiki/components/Login/index.scss +++ /dev/null @@ -1,56 +0,0 @@ -.delete-modal { - .ant-modal-header { - padding: 9px 24px; - background: #f8f8f8; - border-bottom: 1px solid #eee; - } - .ant-modal-title { - text-align: left; - } - .ant-modal-close { - top: 0px !important; - } - .ant-modal-close-x { - font-size: 24px; - } - .ant-modal-body { - text-align: center; - } - .delete-title { - display: flex; - justify-content: center; - align-items: center; - margin: 2rem 0 1rem !important; - font-size: 16px; - color: #333; - letter-spacing: 0; - line-height: 29px; - font-weight: 400; - } - .red-circle { - align-self: flex-start; - color: #ca0002; - font-size: 1.5rem !important; - } - .delete-descibe { - font-size: 14px; - color: #666; - line-height: 33px; - font-weight: 400; - } - .ant-modal-footer { - padding: 2rem 0; - text-align: center; - border: 0; - .ant-btn { - width: 6rem; - } - } - .foot-submit { - margin-left: 3rem; - color: #df0002; - &:hover { - border-color: #df0002; - } - } -} \ No newline at end of file diff --git a/src/forge/Wiki/components/ModalFun/index.jsx b/src/forge/Wiki/components/ModalFun/index.jsx index 661eca31..73fbfd37 100644 --- a/src/forge/Wiki/components/ModalFun/index.jsx +++ b/src/forge/Wiki/components/ModalFun/index.jsx @@ -8,7 +8,8 @@ export default function DelModal(props) { renderModal({ ...props, type: 'delete' }) } -export function confirmModal(props) { +// 使用函数调用选择模态框组件 +export function Confirm(props) { renderModal({ ...props, type: 'confirm' }) } @@ -35,9 +36,6 @@ function renderModal(props) { } function render() { - /** - * Sync render blocks React event. Let's make this async. - */ setTimeout(() => { ReactDOM.render( modalType(type), @@ -48,7 +46,8 @@ function renderModal(props) { render(); } -// 真正的删除组件 + +// 删除组件 function DeleteModal({ onCancel, onOk, @@ -81,7 +80,7 @@ function DeleteModal({ className="myself-modal" centered footer={[ - , ,