From 179f22cf6679aff95dc034490a55739ed9f8a80d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C5=ABdolfs=20O=C5=A1i=C5=86=C5=A1?= Date: Wed, 8 Nov 2023 10:25:28 +0100 Subject: [PATCH] Make IDs copyable by clicking anywhere in the body --- src/components/Clipboard.svelte | 17 +++----------- src/components/Command.svelte | 2 +- src/components/CopyableId.svelte | 33 ++++++++++++++++++++++++++++ src/components/NodeId.svelte | 18 +++++---------- src/views/nodes/View.svelte | 23 +++++++++---------- src/views/projects/Cob/Embeds.svelte | 4 +--- src/views/projects/Commit.svelte | 10 ++++----- src/views/projects/Layout.svelte | 23 ++++--------------- 8 files changed, 62 insertions(+), 68 deletions(-) create mode 100644 src/components/CopyableId.svelte diff --git a/src/components/Clipboard.svelte b/src/components/Clipboard.svelte index 0cef953d5..c2ab27d5e 100644 --- a/src/components/Clipboard.svelte +++ b/src/components/Clipboard.svelte @@ -6,11 +6,9 @@ import { toClipboard } from "@app/lib/utils"; - import Icon from "@app/components/Icon.svelte"; import IconSmall from "@app/components/IconSmall.svelte"; export let text: string; - export let small = false; export let tooltip: string | undefined = undefined; const dispatch = createEventDispatcher<{ copied: null }>(); @@ -31,18 +29,14 @@ @@ -51,11 +45,6 @@ tabindex="0" title={tooltip} class="clipboard" - class:small on:click|stopPropagation={copy}> - {#if small} - - {:else} - - {/if} + diff --git a/src/components/Command.svelte b/src/components/Command.svelte index 180c98eab..1343cb845 100644 --- a/src/components/Command.svelte +++ b/src/components/Command.svelte @@ -66,7 +66,7 @@ {#if showPrompt}${/if} {command}
- +
diff --git a/src/components/CopyableId.svelte b/src/components/CopyableId.svelte new file mode 100644 index 000000000..0da4c92fc --- /dev/null +++ b/src/components/CopyableId.svelte @@ -0,0 +1,33 @@ + + + + + +
{ + clipboard.copy(); + }} + class="id"> + + {id} + + +
diff --git a/src/components/NodeId.svelte b/src/components/NodeId.svelte index 45d8c718a..4035b63b2 100644 --- a/src/components/NodeId.svelte +++ b/src/components/NodeId.svelte @@ -3,7 +3,7 @@ import Avatar from "./Avatar.svelte"; import HoverPopover from "./HoverPopover.svelte"; - import Clipboard from "./Clipboard.svelte"; + import CopyableId from "./CopyableId.svelte"; export let nodeId: string; export let alias: string | undefined = undefined; @@ -29,13 +29,6 @@ height: 1.25rem; gap: 0.5rem; } - .node-id { - height: 2.5rem; - padding: 0 0.5rem 0 0.75rem; - display: flex; - align-items: center; - white-space: nowrap; - } -
- {formatNodeId(nodeId)} - - - +
+ + {formatNodeId(nodeId)} +
diff --git a/src/views/nodes/View.svelte b/src/views/nodes/View.svelte index 33dfbbd80..dcc7eaa41 100644 --- a/src/views/nodes/View.svelte +++ b/src/views/nodes/View.svelte @@ -5,12 +5,12 @@ import { isLocal, truncateId } from "@app/lib/utils"; import { loadProjects } from "@app/views/nodes/router"; - import Clipboard from "@app/components/Clipboard.svelte"; import ErrorMessage from "@app/components/ErrorMessage.svelte"; import Link from "@app/components/Link.svelte"; import Loading from "@app/components/Loading.svelte"; import ProjectCard from "@app/components/ProjectCard.svelte"; import Button from "@app/components/Button.svelte"; + import CopyableId from "@app/components/CopyableId.svelte"; export let baseUrl: BaseUrl; export let nid: string; @@ -74,11 +74,6 @@ font-size: var(--font-size-x-large); font-weight: var(--font-weight-bold); } - .address { - color: var(--color-fill-secondary); - font-family: var(--font-family-monospace); - display: flex; - } .info { display: flex; justify-content: space-between; @@ -86,6 +81,7 @@ .version { color: var(--color-fill-gray); font-family: var(--font-family-monospace); + font-size: var(--font-size-small); } .projects { display: flex; @@ -111,18 +107,19 @@ {#each externalAddresses as address} -
+ {truncateId(nid)}@{address} - -
+ {:else} -
- {nid} +
+
-
- {truncateId(nid)} +
+ + {truncateId(nid)} +
{/each}
diff --git a/src/views/projects/Cob/Embeds.svelte b/src/views/projects/Cob/Embeds.svelte index 159ad09c1..2fbe0b651 100644 --- a/src/views/projects/Cob/Embeds.svelte +++ b/src/views/projects/Cob/Embeds.svelte @@ -32,9 +32,7 @@ {#each embeds as embed} {embed.name} - + {:else}
No attachments
diff --git a/src/views/projects/Commit.svelte b/src/views/projects/Commit.svelte index c2092fd8b..78d94e92e 100644 --- a/src/views/projects/Commit.svelte +++ b/src/views/projects/Commit.svelte @@ -4,10 +4,10 @@ import { formatCommit } from "@app/lib/utils"; import Changeset from "@app/views/projects/Changeset.svelte"; - import Clipboard from "@app/components/Clipboard.svelte"; import CommitAuthorship from "@app/views/projects/Commit/CommitAuthorship.svelte"; import InlineMarkdown from "@app/components/InlineMarkdown.svelte"; import Layout from "./Layout.svelte"; + import CopyableId from "@app/components/CopyableId.svelte"; export let baseUrl: BaseUrl; export let commit: Commit; @@ -49,12 +49,12 @@
- {header.id} - +
- {formatCommit(header.id)} - + + {formatCommit(header.id)} +
{header.description}
diff --git a/src/views/projects/Layout.svelte b/src/views/projects/Layout.svelte index 1edd20296..b368c93b0 100644 --- a/src/views/projects/Layout.svelte +++ b/src/views/projects/Layout.svelte @@ -8,12 +8,12 @@ import { twemoji, isLocal } from "@app/lib/utils"; import Button from "@app/components/Button.svelte"; - import Clipboard from "@app/components/Clipboard.svelte"; import CloneButton from "@app/views/projects/Header/CloneButton.svelte"; import Link from "@app/components/Link.svelte"; import Header from "./Header.svelte"; import TrackButton from "./Header/TrackButton.svelte"; + import CopyableId from "@app/components/CopyableId.svelte"; export let activeTab: ActiveTab = undefined; export let baseUrl: BaseUrl; @@ -45,23 +45,9 @@ .project-name:hover { color: inherit; } - .id { - color: var(--color-fill-secondary); - overflow-wrap: anywhere; - display: flex; - justify-content: left; - align-items: center; - gap: 0.125rem; - margin: 1rem 0 3rem 0; - } .description :global(a) { border-bottom: 1px solid var(--color-foreground-contrast); } - .truncate { - white-space: nowrap; - text-overflow: ellipsis; - overflow-x: hidden; - } .content { width: 100%; max-width: var(--content-max-width); @@ -91,7 +77,7 @@
- + -
- {project.id} - +
+