Skip to content

Commit 374bb3c

Browse files
committed
fix: revert problematic copiable links
and add copy button to shortcut widget see #1217
1 parent 882f79e commit 374bb3c

File tree

2 files changed

+42
-9
lines changed

2 files changed

+42
-9
lines changed

src/app/features/dashboard-widgets/shortcut-dashboard-widget/shortcut-dashboard/shortcut-dashboard.component.html

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,31 @@
1616
<th scope="col">Label</th>
1717
</tr>
1818
<ng-container matColumnDef="icon">
19-
<td *matCellDef="let row">
19+
<td *matCellDef="let row" class="pointer" [routerLink]="row.link">
2020
<app-fa-dynamic-icon [icon]="row.icon"></app-fa-dynamic-icon>
2121
</td>
2222
</ng-container>
2323

2424
<ng-container matColumnDef="label">
25-
<td *matCellDef="let row">{{ row.label }}</td>
25+
<td *matCellDef="let row" class="pointer" [routerLink]="row.link">
26+
{{ row.label }}
27+
</td>
28+
</ng-container>
29+
30+
<ng-container matColumnDef="copy">
31+
<td *matCellDef="let row" class="text-align-end">
32+
<button
33+
mat-icon-button
34+
(click)="copyAbsoluteLink2Clipboard(row.link)"
35+
matTooltip="Copy the link to share or paste it somewhere else"
36+
i18n-matTooltip
37+
>
38+
<fa-icon [icon]="['far', 'copy']" size="xs"></fa-icon>
39+
</button>
40+
</td>
2641
</ng-container>
2742

28-
<tr
29-
mat-row
30-
*matRowDef="let row; columns: ['icon', 'label']"
31-
class="pointer"
32-
[routerLink]="row.link"
33-
></tr>
43+
<tr mat-row *matRowDef="let row; columns: ['icon', 'label', 'copy']"></tr>
3444
</table>
3545
</div>
3646
</app-dashboard-list-widget>

src/app/features/dashboard-widgets/shortcut-dashboard-widget/shortcut-dashboard/shortcut-dashboard.component.ts

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ import { FaDynamicIconComponent } from "../../../../core/common-components/fa-dy
66
import { RouterLink } from "@angular/router";
77
import { DashboardListWidgetComponent } from "../../../../core/dashboard/dashboard-list-widget/dashboard-list-widget.component";
88
import { RoutePermissionsService } from "../../../../core/config/dynamic-routing/route-permissions.service";
9+
import { FaIconComponent } from "@fortawesome/angular-fontawesome";
10+
import { MatIconButton } from "@angular/material/button";
11+
import { MatTooltip } from "@angular/material/tooltip";
12+
import { LocationStrategy } from "@angular/common";
13+
import { AlertService } from "../../../../core/alerts/alert.service";
14+
import { Clipboard } from "@angular/cdk/clipboard";
915

1016
/**
1117
* A simple list of shortcuts displayed as a dashboard widget for easy access to important navigation.
@@ -20,6 +26,9 @@ import { RoutePermissionsService } from "../../../../core/config/dynamic-routing
2026
MatTableModule,
2127
FaDynamicIconComponent,
2228
RouterLink,
29+
FaIconComponent,
30+
MatIconButton,
31+
MatTooltip,
2332
],
2433
standalone: true,
2534
})
@@ -35,5 +44,19 @@ export class ShortcutDashboardComponent {
3544
}
3645
_shortcuts: MenuItem[] = [];
3746

38-
constructor(private routePermissionsService: RoutePermissionsService) {}
47+
constructor(
48+
private routePermissionsService: RoutePermissionsService,
49+
private locationStrategy: LocationStrategy,
50+
private clipboard: Clipboard,
51+
private alertService: AlertService,
52+
) {}
53+
54+
async copyAbsoluteLink2Clipboard(link: string) {
55+
const externalLink =
56+
window.location.origin + this.locationStrategy.prepareExternalUrl(link);
57+
const success = this.clipboard.copy(externalLink);
58+
if (success) {
59+
this.alertService.addInfo("Link copied: " + externalLink);
60+
}
61+
}
3962
}

0 commit comments

Comments
 (0)