import { DialogRef, DIALOG_DATA } from "@angular/cdk/dialog"; import { Component, Inject } from "@angular/core"; import { BrowserAnimationsModule } from "@angular/platform-browser/animations"; import { Meta, StoryObj, moduleMetadata } from "@storybook/angular"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { ButtonModule } from "../../button"; import { IconButtonModule } from "../../icon-button"; import { SharedModule } from "../../shared/shared.module"; import { I18nMockService } from "../../utils/i18n-mock.service"; import { DialogModule } from "../dialog.module"; import { DialogService } from "../dialog.service"; interface Animal { animal: string; } @Component({ template: ``, }) class StoryDialogComponent { constructor(public dialogService: DialogService) {} openDialog() { this.dialogService.open(StoryDialogContentComponent, { data: { animal: "panda", }, }); } } @Component({ template: ` Dialog Title Dialog body text goes here.
Animal: {{ animal }}
`, }) class StoryDialogContentComponent { constructor( public dialogRef: DialogRef, @Inject(DIALOG_DATA) private data: Animal, ) {} get animal() { return this.data?.animal; } } export default { title: "Component Library/Dialogs/Service/Simple", component: StoryDialogComponent, decorators: [ moduleMetadata({ declarations: [StoryDialogContentComponent], imports: [ SharedModule, IconButtonModule, ButtonModule, BrowserAnimationsModule, DialogModule, ], providers: [ DialogService, { provide: I18nService, useFactory: () => { return new I18nMockService({ close: "Close", }); }, }, ], }), ], parameters: { design: { type: "figma", url: "https://www.figma.com/file/Zt3YSeb6E6lebAffrNLa0h/Tailwind-Component-Library", }, }, } as Meta; type Story = StoryObj; export const Default: Story = {};