import { Component, Input } from "@angular/core"; import { FormsModule, ReactiveFormsModule, FormBuilder, Validators, FormGroup, FormControl, } from "@angular/forms"; import { Meta, StoryObj, moduleMetadata } from "@storybook/angular"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { BadgeModule } from "../badge"; import { FormControlModule } from "../form-control"; import { TableModule } from "../table"; import { I18nMockService } from "../utils/i18n-mock.service"; import { CheckboxModule } from "./checkbox.module"; const template = /*html*/ `
`; @Component({ selector: "app-example", template, }) class ExampleComponent { protected formObj = this.formBuilder.group({ checkbox: [false, Validators.requiredTrue], }); @Input() set checked(value: boolean) { this.formObj.patchValue({ checkbox: value }); } @Input() set disabled(disable: boolean) { if (disable) { this.formObj.disable(); } else { this.formObj.enable(); } } constructor(private formBuilder: FormBuilder) {} } export default { title: "Component Library/Form/Checkbox", decorators: [ moduleMetadata({ declarations: [ExampleComponent], imports: [ FormsModule, ReactiveFormsModule, FormControlModule, CheckboxModule, TableModule, BadgeModule, ], providers: [ { provide: I18nService, useFactory: () => { return new I18nMockService({ required: "required", inputRequired: "Input is required.", inputEmail: "Input is not an email-address.", }); }, }, ], }), ], parameters: { design: { type: "figma", url: "https://www.figma.com/design/Zt3YSeb6E6lebAffrNLa0h/Tailwind-Component-Library?node-id=16329-35837&t=b5tDKylm5sWm2yKo-4", }, }, } as Meta; type Story = StoryObj