Link.tsx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import React from "react";
  2. import { Button, Divider, Popover, Tooltip } from "antd";
  3. export default function Link({
  4. link,
  5. onDelete,
  6. onEdit
  7. }: {
  8. link: { title: string; value: string };
  9. onEdit: () => void;
  10. onDelete: () => void;
  11. }) {
  12. const [copyed, setCopyed] = React.useState(false);
  13. const handleOpenUrl = () => {
  14. window.open(link.value, "_blank");
  15. };
  16. const handleCopy = () => {
  17. navigator.clipboard.writeText(link.value);
  18. setCopyed(true);
  19. setTimeout(() => {
  20. setCopyed(false);
  21. }, 1000);
  22. };
  23. return (
  24. <Popover
  25. content={
  26. <div>
  27. {link.title || link.value} <Divider type="vertical" />
  28. <Button type="text" onClick={handleOpenUrl}>
  29. 打开链接
  30. </Button>
  31. <Tooltip title={copyed ? "复制成功" : "复制"}>
  32. <Button
  33. type="text"
  34. icon={<i className="iconfont icon-fuzhi" />}
  35. onClick={handleCopy}
  36. />
  37. </Tooltip>
  38. <Tooltip title="编辑">
  39. <Button
  40. type="text"
  41. icon={<i className="iconfont icon-bianji-" />}
  42. onClick={onEdit}
  43. />
  44. </Tooltip>
  45. <Tooltip title="删除">
  46. <Button
  47. type="text"
  48. icon={<i className="iconfont icon-shanchu" />}
  49. onClick={onDelete}
  50. />
  51. </Tooltip>
  52. </div>
  53. }
  54. >
  55. <i className="iconfont icon-link" />
  56. </Popover>
  57. );
  58. }