Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add "Copy <item type> ID" to a bunch of menus #2426

Merged
merged 16 commits into from
Feb 26, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion frontend/src/components/ui/menu-item-link.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,10 @@ export class MenuItemLink extends TailwindElement {
download=${this.download}
aria-disabled=${this.disabled}
@click=${(e: MouseEvent) => {
if (this.disabled || this.loading) return;
if (this.disabled || this.loading) {
e.preventDefault();
return;
}

if (this.download) {
const dropdown = this.shadowRoot!.host.closest<
Expand Down
42 changes: 29 additions & 13 deletions frontend/src/pages/org/archived-item-detail/archived-item-detail.ts
Original file line number Diff line number Diff line change
Expand Up @@ -630,6 +630,26 @@ export class ArchivedItemDetail extends BtrixElement {
<sl-divider></sl-divider>
`,
)}
${when(
isSuccessfullyFinished(this.item),
() => html`
<btrix-menu-item-link
href=${`/api/orgs/${this.orgId}/all-crawls/${this.itemId}/download?auth_bearer=${authToken}`}
download
>
<sl-icon name="cloud-download" slot="prefix"></sl-icon>
${msg("Download Item")}
${this.item?.fileSize
? html` <btrix-badge
slot="suffix"
class="font-monostyle text-xs text-neutral-500"
>${this.localize.bytes(this.item.fileSize)}</btrix-badge
>`
: nothing}
</btrix-menu-item-link>
<sl-divider></sl-divider>
`,
)}
${when(
this.itemType === "crawl",
() => html`
Expand Down Expand Up @@ -659,19 +679,15 @@ export class ArchivedItemDetail extends BtrixElement {
<sl-icon name="tags" slot="prefix"></sl-icon>
${msg("Copy Tags")}
</sl-menu-item>
${when(
isSuccessfullyFinished(this.item),
() => html`
<sl-divider></sl-divider>
<btrix-menu-item-link
href=${`/api/orgs/${this.orgId}/all-crawls/${this.itemId}/download?auth_bearer=${authToken}`}
download
>
<sl-icon name="cloud-download" slot="prefix"></sl-icon>
${msg("Download Item")}
</btrix-menu-item-link>
`,
)}
<sl-menu-item
@click=${() =>
ClipboardController.copyToClipboard(
this.item?.id ?? this.itemId ?? "",
)}
>
<sl-icon name="copy" slot="prefix"></sl-icon>
${msg("Copy Item ID")}
</sl-menu-item>
${when(
this.isCrawler,
() => html`
Expand Down
27 changes: 27 additions & 0 deletions frontend/src/pages/org/archived-item-detail/ui/qa.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import queryString from "query-string";
import { BtrixElement } from "@/classes/BtrixElement";
import { type Dialog } from "@/components/ui/dialog";
import type { PageChangeEvent } from "@/components/ui/pagination";
import { ClipboardController } from "@/controllers/clipboard";
import { iconFor as iconForPageReview } from "@/features/qa/page-list/helpers";
import * as pageApproval from "@/features/qa/page-list/helpers/approval";
import type { SelectDetail } from "@/features/qa/qa-run-dropdown";
Expand Down Expand Up @@ -392,6 +393,13 @@ export class ArchivedItemDetailQA extends BtrixElement {
</btrix-menu-item-link>
<sl-divider></sl-divider>
`}
<sl-menu-item
@click=${() => ClipboardController.copyToClipboard(run.id)}
>
<sl-icon name="copy" slot="prefix"></sl-icon>
${msg("Copy Run ID")}
</sl-menu-item>
<sl-divider></sl-divider>
<sl-menu-item
@click=${() => {
this.deleting = run.id;
Expand Down Expand Up @@ -750,12 +758,16 @@ export class ArchivedItemDetailQA extends BtrixElement {
"[clickable-start] minmax(12rem, auto)",
"minmax(min-content, 12rem)",
"minmax(min-content, 12rem) [clickable-end]",
"min-content",
].join(" ")}"
>
<btrix-table-head>
<btrix-table-header-cell>${msg("Page")}</btrix-table-header-cell>
<btrix-table-header-cell>${msg("Approval")}</btrix-table-header-cell>
<btrix-table-header-cell>${msg("Comments")}</btrix-table-header-cell>
<btrix-table-header-cell class="px-0">
<span class="sr-only">${msg("Row actions")}</span>
</btrix-table-header-cell>
</btrix-table-head>
<btrix-table-body class="rounded border">
${this.pages?.items.map(
Expand Down Expand Up @@ -809,6 +821,21 @@ export class ArchivedItemDetailQA extends BtrixElement {
${msg("None")}
</span>`}
</btrix-table-cell>
<btrix-table-cell class="p-0">
<div class="col action">
<btrix-overflow-dropdown>
<sl-menu>
<sl-menu-item
@click=${() =>
ClipboardController.copyToClipboard(page.id)}
>
<sl-icon name="copy" slot="prefix"></sl-icon>
${msg("Copy Page ID")}
</sl-menu-item>
</sl-menu>
</btrix-overflow-dropdown>
</div>
</btrix-table-cell>
</btrix-table-row>
`,
)}
Expand Down
46 changes: 27 additions & 19 deletions frontend/src/pages/org/archived-items.ts
Original file line number Diff line number Diff line change
Expand Up @@ -598,6 +598,26 @@ export class CrawlsList extends BtrixElement {
<sl-divider></sl-divider>
`,
)}
${when(
isSuccessfullyFinished(item),
() => html`
<btrix-menu-item-link
href=${`/api/orgs/${this.orgId}/all-crawls/${item.id}/download?auth_bearer=${authToken}`}
download
>
<sl-icon name="cloud-download" slot="prefix"></sl-icon>
${msg("Download Item")}
${item.fileSize
? html` <btrix-badge
slot="suffix"
class="font-monostyle text-xs text-neutral-500"
>${this.localize.bytes(item.fileSize)}</btrix-badge
>`
: nothing}
</btrix-menu-item-link>
<sl-divider></sl-divider>
`,
)}
${item.type === "crawl"
? html`
<sl-menu-item
Expand All @@ -615,14 +635,9 @@ export class CrawlsList extends BtrixElement {
<sl-icon name="copy" slot="prefix"></sl-icon>
${msg("Copy Workflow ID")}
</sl-menu-item>
<sl-menu-item
@click=${() => ClipboardController.copyToClipboard(item.id)}
>
<sl-icon name="copy" slot="prefix"></sl-icon>
${msg("Copy Archived Item ID")}
</sl-menu-item>
`
: nothing}

<sl-menu-item
@click=${() =>
ClipboardController.copyToClipboard(item.tags.join(", "))}
Expand All @@ -631,19 +646,12 @@ export class CrawlsList extends BtrixElement {
<sl-icon name="tags" slot="prefix"></sl-icon>
${msg("Copy Tags")}
</sl-menu-item>
${when(
isSuccessfullyFinished(item),
() => html`
<sl-divider></sl-divider>
<btrix-menu-item-link
href=${`/api/orgs/${this.orgId}/all-crawls/${item.id}/download?auth_bearer=${authToken}`}
download
>
<sl-icon name="cloud-download" slot="prefix"></sl-icon>
${msg("Download Item")}
</btrix-menu-item-link>
`,
)}
<sl-menu-item
@click=${() => ClipboardController.copyToClipboard(item.id)}
>
<sl-icon name="copy" slot="prefix"></sl-icon>
${msg("Copy Item ID")}
</sl-menu-item>
${when(
this.isCrawler && (item.type !== "crawl" || !isActive(item)),
() => html`
Expand Down
10 changes: 9 additions & 1 deletion frontend/src/pages/org/browser-profiles-detail.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import type { Profile, ProfileWorkflow } from "./types";

import { BtrixElement } from "@/classes/BtrixElement";
import type { Dialog } from "@/components/ui/dialog";
import { ClipboardController } from "@/controllers/clipboard";
import type { BrowserConnectionChange } from "@/features/browser-profiles/profile-browser";
import { pageNav } from "@/layouts/pageHeader";
import { isApiError } from "@/utils/api";
Expand Down Expand Up @@ -432,12 +433,19 @@ export class BrowserProfilesDetail extends BtrixElement {
${msg("Duplicate Profile")}
</sl-menu-item>
<sl-divider></sl-divider>
<sl-menu-item
@click=${() => ClipboardController.copyToClipboard(this.profileId)}
>
<sl-icon name="copy" slot="prefix"></sl-icon>
${msg("Copy Profile ID")}
</sl-menu-item>
<sl-divider></sl-divider>
<sl-menu-item
style="--sl-color-neutral-700: var(--danger)"
@click=${() => void this.deleteProfile()}
>
<sl-icon slot="prefix" name="trash3"></sl-icon>
${msg("Delete")}
${msg("Delete Profile")}
</sl-menu-item>
</sl-menu>
</sl-dropdown>
Expand Down
11 changes: 10 additions & 1 deletion frontend/src/pages/org/browser-profiles-list.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import {
SortDirection,
type SortValues,
} from "@/components/ui/table/table-header-cell";
import { ClipboardController } from "@/controllers/clipboard";
import { pageHeader } from "@/layouts/pageHeader";
import type {
APIPaginatedList,
Expand Down Expand Up @@ -325,14 +326,22 @@ export class BrowserProfilesList extends BtrixElement {
<sl-icon slot="prefix" name="files"></sl-icon>
${msg("Duplicate Profile")}
</sl-menu-item>
<sl-divider></sl-divider>
<sl-menu-item
@click=${() => ClipboardController.copyToClipboard(data.id)}
>
<sl-icon name="copy" slot="prefix"></sl-icon>
${msg("Copy Profile ID")}
</sl-menu-item>
<sl-divider></sl-divider>
<sl-menu-item
style="--sl-color-neutral-700: var(--danger)"
@click=${() => {
void this.deleteProfile(data);
}}
>
<sl-icon slot="prefix" name="trash3"></sl-icon>
${msg("Delete")}
${msg("Delete Profile")}
</sl-menu-item>
</sl-menu>
</btrix-overflow-dropdown>
Expand Down
18 changes: 18 additions & 0 deletions frontend/src/pages/org/collection-detail.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import { BtrixElement } from "@/classes/BtrixElement";
import type { MarkdownEditor } from "@/components/ui/markdown-editor";
import type { PageChangeEvent } from "@/components/ui/pagination";
import { viewStateContext, type ViewStateContext } from "@/context/view-state";
import { ClipboardController } from "@/controllers/clipboard";
import type { EditDialogTab } from "@/features/collections/collection-edit-dialog";
import { collectionShareLink } from "@/features/collections/helpers/share-link";
import { SelectCollectionAccess } from "@/features/collections/select-collection-access";
Expand Down Expand Up @@ -563,6 +564,16 @@ export class CollectionDetail extends BtrixElement {
)}
</btrix-menu-item-link>
<sl-divider></sl-divider>
<sl-menu-item
@click=${() =>
ClipboardController.copyToClipboard(
this.collection?.id ?? this.collectionId,
)}
>
<sl-icon name="copy" slot="prefix"></sl-icon>
${msg("Copy Collection ID")}
</sl-menu-item>
<sl-divider></sl-divider>
<sl-menu-item
style="--sl-color-neutral-700: var(--danger)"
@click=${this.confirmDelete}
Expand Down Expand Up @@ -868,6 +879,13 @@ export class CollectionDetail extends BtrixElement {
<sl-icon name="folder-minus" slot="prefix"></sl-icon>
${msg("Remove from Collection")}
</sl-menu-item>
<sl-divider></sl-divider>
<sl-menu-item
@click=${() => ClipboardController.copyToClipboard(item.id)}
>
<sl-icon name="copy" slot="prefix"></sl-icon>
${msg("Copy Item ID")}
</sl-menu-item>
</sl-menu>
</btrix-overflow-dropdown>
</btrix-table-cell>
Expand Down
13 changes: 9 additions & 4 deletions frontend/src/pages/org/collections-list.ts
Original file line number Diff line number Diff line change
Expand Up @@ -585,12 +585,10 @@ export class CollectionsList extends BtrixElement {
<sl-icon name="gear" slot="prefix"></sl-icon>
${msg("Edit Collection Settings")}
</sl-menu-item>
<sl-divider></sl-divider>
${col.access === CollectionAccess.Public ||
col.access === CollectionAccess.Unlisted
? html`
<sl-menu-item
style="--sl-color-neutral-700: var(--success)"
@click=${() => {
ClipboardController.copyToClipboard(this.getShareLink(col));
this.notify.toast({
Expand All @@ -605,21 +603,28 @@ export class CollectionsList extends BtrixElement {
</sl-menu-item>
`
: nothing}

<sl-divider></sl-divider>
<btrix-menu-item-link
href=${`/api/orgs/${this.orgId}/collections/${col.id}/download?auth_bearer=${authToken}`}
download
?disabled=${!col.totalSize}
>
<sl-icon name="cloud-download" slot="prefix"></sl-icon>
${msg("Download")}
${msg("Download Collection")}
<btrix-badge
slot="suffix"
class="font-monostyle text-xs text-neutral-500"
>${this.localize.bytes(col.totalSize)}</btrix-badge
>
</btrix-menu-item-link>
<sl-divider></sl-divider>
<sl-menu-item
@click=${() => ClipboardController.copyToClipboard(col.id)}
>
<sl-icon name="copy" slot="prefix"></sl-icon>
${msg("Copy Collection ID")}
</sl-menu-item>
<sl-divider></sl-divider>
<sl-menu-item
style="--sl-color-neutral-700: var(--danger)"
@click=${() => void this.manageCollection(col, "delete")}
Expand Down
Loading
Loading