Remodel the copy link modal
This commit is contained in:
parent
3f24ceaf93
commit
65a86ee4f5
@ -71,6 +71,7 @@ import { exportSQL } from "../../utils/exportSQL";
|
|||||||
import { databases } from "../../data/databases";
|
import { databases } from "../../data/databases";
|
||||||
import { jsonToMermaid } from "../../utils/exportAs/mermaid";
|
import { jsonToMermaid } from "../../utils/exportAs/mermaid";
|
||||||
import { isRtl } from "../../i18n/utils/rtl";
|
import { isRtl } from "../../i18n/utils/rtl";
|
||||||
|
import Share from "./Modal/Share";
|
||||||
|
|
||||||
export default function ControlPanel({
|
export default function ControlPanel({
|
||||||
diagramId,
|
diagramId,
|
||||||
@ -1376,6 +1377,7 @@ export default function ControlPanel({
|
|||||||
)}
|
)}
|
||||||
{layout.toolbar && toolbar()}
|
{layout.toolbar && toolbar()}
|
||||||
</div>
|
</div>
|
||||||
|
<Share modal={modal} setModal={setModal}/>
|
||||||
<Modal
|
<Modal
|
||||||
modal={modal}
|
modal={modal}
|
||||||
exportData={exportData}
|
exportData={exportData}
|
||||||
|
@ -42,7 +42,6 @@ import { useTranslation } from "react-i18next";
|
|||||||
import { importSQL } from "../../../utils/importSQL";
|
import { importSQL } from "../../../utils/importSQL";
|
||||||
import { databases } from "../../../data/databases";
|
import { databases } from "../../../data/databases";
|
||||||
import { isRtl } from "../../../i18n/utils/rtl";
|
import { isRtl } from "../../../i18n/utils/rtl";
|
||||||
import Share from "./Share";
|
|
||||||
import GithubToken from "./GithubToken";
|
import GithubToken from "./GithubToken";
|
||||||
|
|
||||||
const languageExtension = {
|
const languageExtension = {
|
||||||
@ -257,6 +256,7 @@ export default function Modal({
|
|||||||
};
|
};
|
||||||
|
|
||||||
const getModalBody = () => {
|
const getModalBody = () => {
|
||||||
|
if (modal === MODAL.SHARE) return;
|
||||||
switch (modal) {
|
switch (modal) {
|
||||||
case MODAL.IMPORT:
|
case MODAL.IMPORT:
|
||||||
return (
|
return (
|
||||||
@ -341,8 +341,8 @@ export default function Modal({
|
|||||||
return <SetTableWidth />;
|
return <SetTableWidth />;
|
||||||
case MODAL.LANGUAGE:
|
case MODAL.LANGUAGE:
|
||||||
return <Language />;
|
return <Language />;
|
||||||
case MODAL.SHARE:
|
// case MODAL.SHARE:
|
||||||
return <Share setModal={setModal} />;
|
// return <Share setModal={setModal} />;
|
||||||
case MODAL.GITHUB_TOKEN:
|
case MODAL.GITHUB_TOKEN:
|
||||||
return <GithubToken token={token} setToken={setToken} />;
|
return <GithubToken token={token} setToken={setToken} />;
|
||||||
default:
|
default:
|
||||||
@ -354,7 +354,7 @@ export default function Modal({
|
|||||||
<SemiUIModal
|
<SemiUIModal
|
||||||
style={isRtl(i18n.language) ? { direction: "rtl" } : {}}
|
style={isRtl(i18n.language) ? { direction: "rtl" } : {}}
|
||||||
title={getModalTitle(modal)}
|
title={getModalTitle(modal)}
|
||||||
visible={modal !== MODAL.NONE}
|
visible={modal !== MODAL.NONE && modal !== MODAL.SHARE}
|
||||||
onOk={getModalOnOk}
|
onOk={getModalOnOk}
|
||||||
afterClose={() => {
|
afterClose={() => {
|
||||||
setExportData(() => ({
|
setExportData(() => ({
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
import { Button, Input, Spin, Toast } from "@douyinfe/semi-ui";
|
import { Button, Input, Modal, Spin, Toast } from "@douyinfe/semi-ui";
|
||||||
import { MODAL } from "../../../data/constants";
|
import { MODAL } from "../../../data/constants";
|
||||||
import { useCallback, useContext, useEffect, useState, useMemo } from "react";
|
import { useCallback, useContext, useEffect, useState, useMemo } from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { Octokit } from "octokit";
|
import { Octokit } from "octokit";
|
||||||
import { IdContext } from "../../Workspace";
|
import { IdContext } from "../../Workspace";
|
||||||
import { IconLink } from "@douyinfe/semi-icons";
|
import { IconLink } from "@douyinfe/semi-icons";
|
||||||
|
import { isRtl } from "../../../i18n/utils/rtl";
|
||||||
|
|
||||||
export default function Share({ setModal }) {
|
export default function Share({ modal, setModal }) {
|
||||||
const { t } = useTranslation();
|
const { t, i18n } = useTranslation();
|
||||||
const { gistId, setGistId } = useContext(IdContext);
|
const { gistId, setGistId } = useContext(IdContext);
|
||||||
const [loading, setLoading] = useState(false);
|
const [loading, setLoading] = useState(false);
|
||||||
|
|
||||||
@ -78,7 +79,7 @@ export default function Share({ setModal }) {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
} finally {
|
} finally {
|
||||||
setModal(MODAL.SHARE);
|
setLoading(false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
updateOrGenerateLink();
|
updateOrGenerateLink();
|
||||||
@ -95,20 +96,48 @@ export default function Share({ setModal }) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
if (loading)
|
|
||||||
return (
|
return (
|
||||||
|
<Modal
|
||||||
|
visible={modal === MODAL.SHARE}
|
||||||
|
style={isRtl(i18n.language) ? { direction: "rtl" } : {}}
|
||||||
|
title={t("share")}
|
||||||
|
footer={<></>}
|
||||||
|
onCancel={() => setModal(MODAL.NONE)}
|
||||||
|
centered
|
||||||
|
closeOnEsc={true}
|
||||||
|
cancelText={t("cancel")}
|
||||||
|
width={600}
|
||||||
|
bodyStyle={{
|
||||||
|
maxHeight: window.innerHeight - 280,
|
||||||
|
overflow: "auto",
|
||||||
|
direction: "ltr",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{loading ? (
|
||||||
<div className="text-blue-500 text-center">
|
<div className="text-blue-500 text-center">
|
||||||
<Spin size="middle" />
|
<Spin size="middle" />
|
||||||
<div>{t("loading")}</div>
|
<div>{t("loading")}</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
) : (
|
||||||
|
<div>
|
||||||
return (
|
|
||||||
<div className="flex gap-3">
|
<div className="flex gap-3">
|
||||||
<Input value={url} size="large" />
|
<Input value={url} size="large" />
|
||||||
<Button size="large" theme="solid" icon={<IconLink />} onClick={copyLink}>
|
<Button
|
||||||
|
size="large"
|
||||||
|
theme="solid"
|
||||||
|
icon={<IconLink />}
|
||||||
|
onClick={copyLink}
|
||||||
|
>
|
||||||
{t("copy_link")}
|
{t("copy_link")}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
|
<hr className="opacity-20 mt-3 mb-1" />
|
||||||
|
<div className="text-xs">
|
||||||
|
* Sharing this link will not create a live real-time collaboration
|
||||||
|
session
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</Modal>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user