import { DialogModule, DialogRef, DIALOG_DATA } from "@angular/cdk/dialog"; import { Component, Inject } from "@angular/core"; import { Meta, moduleMetadata, Story } from "@storybook/angular"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { ButtonModule } from "../button"; import { I18nMockService } from "../utils/i18n-mock.service"; import { DialogService } from "./dialog.service"; import { DialogComponent } from "./dialog/dialog.component"; import { DialogCloseDirective } from "./directives/dialog-close.directive"; import { DialogTitleContainerDirective } from "./directives/dialog-title-container.directive"; interface Animal { animal: string; } @Component({ selector: "app-story-dialog", template: ``, }) class StoryDialogComponent { constructor(public dialogService: DialogService) {} openDialog() { this.dialogService.open(StoryDialogContentComponent, { data: { animal: "panda", }, }); } } @Component({ selector: "story-dialog-content", 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", component: StoryDialogComponent, decorators: [ moduleMetadata({ declarations: [ DialogCloseDirective, DialogComponent, DialogTitleContainerDirective, StoryDialogContentComponent, ], imports: [ButtonModule, 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; const Template: Story = (args: StoryDialogComponent) => ({ props: args, }); export const Default = Template.bind({});