docs-sdk/docs-provider/src2/Overview/DemoList.tsx (52 lines of code) (raw):
import React from "react";
import copy from "copy-to-clipboard";
import toast from "react-hot-toast";
import styles from "./index.scoped.less";
interface IProps {
entryKeys: string[];
currentEntryKey?: string;
onChange?: (newKey: string) => void;
loadOpts: any;
}
const DemoList: React.FC<IProps> = ({
entryKeys,
currentEntryKey,
onChange,
loadOpts,
}) => {
return (
<ul className={styles.list}>
{entryKeys.map((oneKey) => {
return (
<li
className={
(oneKey === currentEntryKey ? styles.active : "") +
" " +
styles.item
}
onClick={() => {
if (typeof onChange === "function") {
onChange(oneKey);
}
if (oneKey === currentEntryKey) {
let { servePath, consoleOSId, entryKey } = loadOpts ?? {};
if (!entryKey) return;
servePath = encodeURIComponent(servePath);
consoleOSId = encodeURIComponent(consoleOSId);
entryKey = encodeURIComponent(entryKey);
copy(
`https://xconsole.aliyun-inc.com/demo-playground?servePath=${servePath}&consoleOSId=${consoleOSId}&entryKey=${entryKey}`
);
toast("已将demo地址复制到剪贴板");
}
}}
key={oneKey}
>
{oneKey}
</li>
);
})}
</ul>
);
};
export default DemoList;