mirror of
https://github.com/bitwarden/browser
synced 2025-12-06 00:13:28 +00:00
[PM-18804] generator nudges (#14705)
* added generator spotlight to credential generator component * moved generator spotlight to browser component and add as slot in libs. update copy for send * added an aria label for the generator nudge body content * new copy and styles for browser send will be behind feature flag * update featureflag call to observable in send-v2 * changed how nudge text is made in credential generator * added new observable to vault nudges to return specific boolean. Update naming of vault types. update observable calls in credential-generator and send-v2 * update send-v2 and credential generator to use new renamed nudges * update to create nudge generator spotlight component. using this inside the credential generator for nudge spotlight * fix imports for Nudge related code * add libs/angular to storybook --------- Co-authored-by: Nick Krantz <nick@livefront.com>
This commit is contained in:
@@ -40,6 +40,8 @@ export enum NudgeType {
|
||||
NewIdentityItemStatus = "new-identity-item-status",
|
||||
NewNoteItemStatus = "new-note-item-status",
|
||||
NewSshItemStatus = "new-ssh-item-status",
|
||||
GeneratorNudgeStatus = "generator-nudge-status",
|
||||
SendNudgeStatus = "send-nudge-status",
|
||||
}
|
||||
|
||||
export const NUDGE_DISMISSED_DISK_KEY = new UserKeyDefinition<
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
</bit-toggle>
|
||||
</bit-toggle-group>
|
||||
|
||||
<nudge-generator-spotlight></nudge-generator-spotlight>
|
||||
|
||||
<bit-card class="tw-flex tw-justify-between tw-mb-4">
|
||||
<div class="tw-grow tw-flex tw-items-center">
|
||||
<bit-color-password class="tw-font-mono" [password]="value$ | async"></bit-color-password>
|
||||
|
||||
@@ -22,6 +22,7 @@ import { CatchallSettingsComponent } from "./catchall-settings.component";
|
||||
import { CredentialGeneratorComponent } from "./credential-generator.component";
|
||||
import { ForwarderSettingsComponent } from "./forwarder-settings.component";
|
||||
import { GeneratorServicesModule } from "./generator-services.module";
|
||||
import { NudgeGeneratorSpotlightComponent } from "./nudge-generator-spotlight.component";
|
||||
import { PassphraseSettingsComponent } from "./passphrase-settings.component";
|
||||
import { PasswordGeneratorComponent } from "./password-generator.component";
|
||||
import { PasswordSettingsComponent } from "./password-settings.component";
|
||||
@@ -48,6 +49,7 @@ import { UsernameSettingsComponent } from "./username-settings.component";
|
||||
SelectModule,
|
||||
ToggleGroupModule,
|
||||
TypographyModule,
|
||||
NudgeGeneratorSpotlightComponent,
|
||||
],
|
||||
declarations: [
|
||||
CatchallSettingsComponent,
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
<div class="tw-mb-4" *ngIf="showGeneratorSpotlight$ | async">
|
||||
<bit-spotlight
|
||||
[title]="'generatorNudgeTitle' | i18n"
|
||||
(onDismiss)="dismissGeneratorSpotlight(NudgeType.GeneratorNudgeStatus)"
|
||||
>
|
||||
<p
|
||||
class="tw-text-main"
|
||||
bitTypography="body2"
|
||||
[attr.aria-label]="'generatorNudgeIconAria' | i18n"
|
||||
>
|
||||
{{ "generatorNudgeBodyOne" | i18n }} <i class="bwi bwi-generate"></i>
|
||||
{{ "generatorNudgeBodyTwo" | i18n }}
|
||||
</p>
|
||||
</bit-spotlight>
|
||||
</div>
|
||||
@@ -0,0 +1,38 @@
|
||||
import { AsyncPipe, CommonModule } from "@angular/common";
|
||||
import { Component } from "@angular/core";
|
||||
import { firstValueFrom, Observable, switchMap } from "rxjs";
|
||||
|
||||
import { NudgesService, NudgeType } from "@bitwarden/angular/vault";
|
||||
import { SpotlightComponent } from "@bitwarden/angular/vault/components/spotlight/spotlight.component";
|
||||
import { AccountService } from "@bitwarden/common/auth/abstractions/account.service";
|
||||
import { getUserId } from "@bitwarden/common/auth/services/account.service";
|
||||
import { UserId } from "@bitwarden/common/types/guid";
|
||||
import { TypographyModule } from "@bitwarden/components";
|
||||
import { I18nPipe } from "@bitwarden/ui-common";
|
||||
|
||||
@Component({
|
||||
standalone: true,
|
||||
selector: "nudge-generator-spotlight",
|
||||
templateUrl: "nudge-generator-spotlight.component.html",
|
||||
imports: [I18nPipe, SpotlightComponent, AsyncPipe, CommonModule, TypographyModule],
|
||||
})
|
||||
export class NudgeGeneratorSpotlightComponent {
|
||||
protected readonly NudgeType = NudgeType;
|
||||
private activeUserId$ = this.accountService.activeAccount$.pipe(getUserId);
|
||||
protected showGeneratorSpotlight$: Observable<boolean> = this.activeUserId$.pipe(
|
||||
switchMap((userId) =>
|
||||
this.nudgesService.showNudgeSpotlight$(NudgeType.GeneratorNudgeStatus, userId),
|
||||
),
|
||||
);
|
||||
|
||||
constructor(
|
||||
private nudgesService: NudgesService,
|
||||
private accountService: AccountService,
|
||||
) {}
|
||||
|
||||
async dismissGeneratorSpotlight(type: NudgeType) {
|
||||
const activeUserId = await firstValueFrom(this.activeUserId$);
|
||||
|
||||
await this.nudgesService.dismissNudge(type, activeUserId as UserId);
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,8 @@
|
||||
"@bitwarden/generator-history": ["../../../tools/generator/extensions/history/src"],
|
||||
"@bitwarden/key-management": ["../../../key-management/src"],
|
||||
"@bitwarden/platform": ["../../../platform/src"],
|
||||
"@bitwarden/ui-common": ["../../../ui/common/src"]
|
||||
"@bitwarden/ui-common": ["../../../ui/common/src"],
|
||||
"@bitwarden/vault": ["../../../vault/src"]
|
||||
}
|
||||
},
|
||||
"include": ["src"],
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
<button bitButton size="small" [bitMenuTriggerFor]="itemOptions" buttonType="primary" type="button">
|
||||
<button
|
||||
bitButton
|
||||
size="small"
|
||||
[bitMenuTriggerFor]="itemOptions"
|
||||
[buttonType]="buttonType"
|
||||
type="button"
|
||||
>
|
||||
<i *ngIf="!hideIcon" class="bwi bwi-plus" aria-hidden="true"></i>
|
||||
{{ (hideIcon ? "createSend" : "new") | i18n }}
|
||||
</button>
|
||||
|
||||
@@ -7,7 +7,7 @@ import { JslibModule } from "@bitwarden/angular/jslib.module";
|
||||
import { AccountService } from "@bitwarden/common/auth/abstractions/account.service";
|
||||
import { BillingAccountProfileStateService } from "@bitwarden/common/billing/abstractions";
|
||||
import { SendType } from "@bitwarden/common/tools/send/enums/send-type";
|
||||
import { BadgeModule, ButtonModule, MenuModule } from "@bitwarden/components";
|
||||
import { BadgeModule, ButtonModule, ButtonType, MenuModule } from "@bitwarden/components";
|
||||
|
||||
@Component({
|
||||
selector: "tools-new-send-dropdown",
|
||||
@@ -17,6 +17,7 @@ import { BadgeModule, ButtonModule, MenuModule } from "@bitwarden/components";
|
||||
})
|
||||
export class NewSendDropdownComponent implements OnInit {
|
||||
@Input() hideIcon: boolean = false;
|
||||
@Input() buttonType: ButtonType = "primary";
|
||||
|
||||
sendType = SendType;
|
||||
|
||||
|
||||
@@ -3,14 +3,13 @@ import { Component, Input, OnInit } from "@angular/core";
|
||||
import { firstValueFrom } from "rxjs";
|
||||
|
||||
import { NudgesService, NudgeType } from "@bitwarden/angular/vault";
|
||||
import { SpotlightComponent } from "@bitwarden/angular/vault/components/spotlight/spotlight.component";
|
||||
import { AccountService } from "@bitwarden/common/auth/abstractions/account.service";
|
||||
import { getUserId } from "@bitwarden/common/auth/services/account.service";
|
||||
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
|
||||
import { UserId } from "@bitwarden/common/types/guid";
|
||||
import { CipherType } from "@bitwarden/sdk-internal";
|
||||
|
||||
import { SpotlightComponent } from "../../../components/spotlight/spotlight.component";
|
||||
|
||||
@Component({
|
||||
selector: "vault-new-item-nudge",
|
||||
templateUrl: "./new-item-nudge.component.html",
|
||||
|
||||
@@ -27,5 +27,3 @@ export { SshImportPromptService } from "./services/ssh-import-prompt.service";
|
||||
|
||||
export * from "./abstractions/change-login-password.service";
|
||||
export * from "./services/default-change-login-password.service";
|
||||
|
||||
export { SpotlightComponent } from "./components/spotlight/spotlight.component";
|
||||
|
||||
Reference in New Issue
Block a user