1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-13 06:43:35 +00:00

[SM-1573] Fixing css issues relating to virtual scroll for secrets list (#16365)

* undoing unintentional style changes

* fixing virtual scroll css
This commit is contained in:
cd-bitwarden
2025-09-10 20:06:12 -04:00
committed by GitHub
parent 926f587ea2
commit 2894e40f2d
4 changed files with 2 additions and 162 deletions

View File

@@ -83,7 +83,6 @@
<h2 slot="summary" class="tw-mb-0" bitTypography="h2" noMargin>{{ "secrets" | i18n }}</h2>
<sm-secrets-list
baseRoute="secrets"
[disableVirtualScroll]="true"
(deleteSecretsEvent)="openDeleteSecret($event)"
(newSecretEvent)="openNewSecretDialog()"
(editSecretEvent)="openEditSecret($event)"

View File

@@ -2,7 +2,7 @@
<ng-container *ngIf="projectSecrets?.secrets && projectSecrets?.project; else spinner">
<div
*ngIf="projectSecrets.secrets?.length > 0 && projectSecrets.project?.write"
class="tw-float-right tw-mt-3 tw-items-center"
class="tw-flex tw-mt-3 tw-justify-end"
>
<button type="button" bitButton buttonType="secondary" (click)="openNewSecretDialog()">
<i class="bwi bwi-plus" aria-hidden="true"></i>

View File

@@ -23,11 +23,7 @@
</bit-no-items>
</ng-container>
<bit-table-scroll
*ngIf="secrets?.length >= 1 && !disableVirtualScroll"
[dataSource]="dataSource"
[rowSize]="53"
>
<bit-table-scroll *ngIf="secrets?.length >= 1" [dataSource]="dataSource" [rowSize]="66">
<ng-container header>
<th bitCell class="tw-w-0">
<label class="!tw-mb-0 tw-flex tw-w-fit tw-gap-2 !tw-font-bold !tw-text-muted">
@@ -148,158 +144,6 @@
</ng-template>
</bit-table-scroll>
<ng-container *ngIf="disableVirtualScroll">
<bit-table *ngIf="secrets?.length >= 1" [dataSource]="dataSource">
<ng-container header>
<tr>
<th bitCell class="tw-w-0">
<label class="!tw-mb-0 tw-flex tw-w-fit tw-gap-2 !tw-font-bold !tw-text-muted">
<input
type="checkbox"
(change)="$event ? toggleAll() : null"
[checked]="selection.hasValue() && isAllSelected()"
[indeterminate]="selection.hasValue() && !isAllSelected()"
/>
{{ "all" | i18n }}
</label>
</th>
<th bitCell bitSortable="name" default>{{ "name" | i18n }}</th>
<th bitCell bitSortable="projects" [fn]="sortProjects">{{ "project" | i18n }}</th>
<th bitCell bitSortable="revisionDate">{{ "lastEdited" | i18n }}</th>
<th bitCell class="tw-w-0">
<button
type="button"
bitIconButton="bwi-ellipsis-v"
buttonType="main"
[label]="'options' | i18n"
[bitMenuTriggerFor]="tableMenu"
></button>
</th>
</tr>
</ng-container>
<ng-template body let-rows$>
<tr bitRow *ngFor="let secret of rows$ | async">
<td bitCell>
<input
type="checkbox"
(change)="$event ? selection.toggle(secret.id) : null"
[checked]="selection.isSelected(secret.id)"
/>
</td>
<td bitCell>
<div class="tw-flex tw-items-center tw-gap-4 tw-break-all">
<i class="bwi bwi-key tw-text-muted" aria-hidden="true"></i>
<div>
<div *ngIf="!trash">
<button type="button" bitLink (click)="editSecret(secret)">
{{ secret.name }}
</button>
</div>
<div *ngIf="trash">{{ secret.name }}</div>
<div class="tw-text-sm tw-text-muted">
{{ secret.id }}
<button
type="button"
bitIconButton="bwi-clone"
buttonType="main"
size="small"
[label]="'copyUuid' | i18n"
(click)="copySecretUuidEvent.emit(secret.id)"
></button>
</div>
</div>
</div>
</td>
<td bitCell>
<span
*ngFor="let project of secret.projects"
bitBadge
variant="secondary"
class="tw-ml-1"
[title]="project.name"
maxWidthClass="tw-max-w-60"
>
{{ project.name }}
</span>
<span *ngIf="secret.projects.length === 0" bitBadge variant="warning" class="tw-ml-1"
><i class="bwi bwi-fw bwi-exclamation-triangle tw-mr-1" aria-hidden="true"></i
>{{ "unassigned" | i18n }}</span
>
</td>
<td bitCell class="tw-whitespace-nowrap">{{ secret.revisionDate | date: "medium" }}</td>
<td bitCell>
<button
type="button"
bitIconButton="bwi-ellipsis-v"
buttonType="main"
[label]="'options' | i18n"
[bitMenuTriggerFor]="secretMenu"
></button>
</td>
<bit-menu #secretMenu>
<button
type="button"
bitMenuItem
(click)="editSecret(secret)"
*ngIf="secret.write && !trash"
>
<i class="bwi bwi-fw bwi-pencil" aria-hidden="true"></i>
{{ "editSecret" | i18n }}
</button>
<button
type="button"
bitMenuItem
(click)="copySecretNameEvent.emit(secret.name)"
*ngIf="!trash"
>
<i class="bwi bwi-fw bwi-clone" aria-hidden="true"></i>
{{ "copySecretName" | i18n }}
</button>
<button
type="button"
bitMenuItem
(click)="copySecretValueEvent.emit(secret.id)"
*ngIf="!trash"
>
<i class="bwi bwi-fw bwi-clone" aria-hidden="true"></i>
{{ "copySecretValue" | i18n }}
</button>
<button
type="button"
bitMenuItem
(click)="restoreSecretsEvent.emit([secret.id])"
*ngIf="trash"
>
<i class="bwi bwi-fw bwi-refresh" aria-hidden="true"></i>
{{ "restoreSecret" | i18n }}
</button>
<button
type="button"
bitMenuItem
*ngIf="viewEventsAllowed$ | async as allowed"
(click)="openEventsDialog(secret)"
>
<i class="bwi bwi-fw bwi-billing" aria-hidden="true"></i>
<span> {{ "viewEvents" | i18n }} </span>
</button>
<button
type="button"
bitMenuItem
(click)="deleteSecretsEvent.emit([secret])"
*ngIf="secret.write"
>
<i class="bwi bwi-fw bwi-trash tw-text-danger" aria-hidden="true"></i>
<span class="tw-text-danger">{{
(trash ? "permanentlyDelete" : "deleteSecret") | i18n
}}</span>
</button>
</bit-menu>
</tr>
</ng-template>
</bit-table>
</ng-container>
<bit-menu #tableMenu>
<button type="button" bitMenuItem (click)="bulkRestoreSecrets()" *ngIf="trash">
<i class="bwi bwi-fw bwi-refresh" aria-hidden="true"></i>

View File

@@ -29,9 +29,6 @@ import { SecretService } from "../secrets/secret.service";
export class SecretsListComponent implements OnDestroy, OnInit {
protected dataSource = new TableDataSource<SecretListView>();
@Input()
disableVirtualScroll: boolean;
@Input()
get secrets(): SecretListView[] {
return this._secrets;