diff --git a/apps/web/src/app/vault/components/vault-items/vault-cipher-row.component.html b/apps/web/src/app/vault/components/vault-items/vault-cipher-row.component.html
index 20b87bfc036..006bf9ff197 100644
--- a/apps/web/src/app/vault/components/vault-items/vault-cipher-row.component.html
+++ b/apps/web/src/app/vault/components/vault-items/vault-cipher-row.component.html
@@ -93,73 +93,74 @@
-
-
-
-
-
-
-
-
- {{ "launch" | i18n }}
-
-
-
-
-
+ @if (!decryptionFailure && !hideMenu) {
-
-
-
-
+ appStopProp
+ appA11yTitle="{{ 'options' | i18n }}"
+ >
+
+
+
+
+
+
+
+ {{ "launch" | i18n }}
+
+
+
+
+
+
+
+
+
+
+ }
diff --git a/apps/web/src/app/vault/components/vault-items/vault-cipher-row.component.ts b/apps/web/src/app/vault/components/vault-items/vault-cipher-row.component.ts
index cb4d8ad70b1..32037493e36 100644
--- a/apps/web/src/app/vault/components/vault-items/vault-cipher-row.component.ts
+++ b/apps/web/src/app/vault/components/vault-items/vault-cipher-row.component.ts
@@ -189,8 +189,14 @@ export class VaultCipherRowComponent implements OnInit
return this.i18nService.t("noAccess");
}
+ protected get showCopyUsername(): boolean {
+ const usernameCopy = CipherViewLikeUtils.hasCopyableValue(this.cipher, "username");
+ return this.isNotDeletedLoginCipher && usernameCopy;
+ }
+
protected get showCopyPassword(): boolean {
- return this.isNotDeletedLoginCipher && this.cipher.viewPassword;
+ const passwordCopy = CipherViewLikeUtils.hasCopyableValue(this.cipher, "password");
+ return this.isNotDeletedLoginCipher && this.cipher.viewPassword && passwordCopy;
}
protected get showCopyTotp(): boolean {
@@ -201,16 +207,20 @@ export class VaultCipherRowComponent implements OnInit
return this.isNotDeletedLoginCipher && this.canLaunch;
}
- protected get disableMenu() {
+ protected get isDeletedCanRestore(): boolean {
+ return CipherViewLikeUtils.isDeleted(this.cipher) && this.canRestoreCipher;
+ }
+
+ protected get hideMenu() {
return !(
- this.isNotDeletedLoginCipher ||
+ this.isDeletedCanRestore ||
+ this.showCopyUsername ||
this.showCopyPassword ||
this.showCopyTotp ||
this.showLaunchUri ||
this.showAttachments ||
this.showClone ||
- this.canEditCipher ||
- (CipherViewLikeUtils.isDeleted(this.cipher) && this.canRestoreCipher)
+ this.canEditCipher
);
}