1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-06 00:13:28 +00:00

[CL-717][PM-27966] Update to Angular 20 and Storybook 9 (#17638)

This commit is contained in:
Vicki League
2025-12-01 14:15:58 -05:00
committed by GitHub
parent 79d518fcf7
commit 10424e227b
101 changed files with 2926 additions and 3531 deletions

View File

@@ -119,7 +119,7 @@
"rimraf", "rimraf",
"ssh-encoding", "ssh-encoding",
"ssh-key", "ssh-key",
"@storybook/web-components-webpack5", "@storybook/web-components-vite",
"tabbable", "tabbable",
"tldts", "tldts",
"wait-on", "wait-on",
@@ -311,26 +311,24 @@
"@compodoc/compodoc", "@compodoc/compodoc",
"@ng-select/ng-select", "@ng-select/ng-select",
"@storybook/addon-a11y", "@storybook/addon-a11y",
"@storybook/addon-actions",
"@storybook/addon-designs", "@storybook/addon-designs",
"@storybook/addon-essentials", "@storybook/addon-docs",
"@storybook/addon-interactions",
"@storybook/addon-links", "@storybook/addon-links",
"@storybook/test-runner", "@storybook/test-runner",
"@storybook/addon-themes", "@storybook/addon-themes",
"@storybook/angular", "@storybook/angular",
"@storybook/manager-api",
"@storybook/theming",
"@types/react", "@types/react",
"autoprefixer", "autoprefixer",
"bootstrap", "bootstrap",
"chromatic", "chromatic",
"ngx-toastr", "ngx-toastr",
"path-browserify",
"react", "react",
"react-dom", "react-dom",
"remark-gfm", "remark-gfm",
"storybook", "storybook",
"tailwindcss", "tailwindcss",
"vite-tsconfig-paths",
"zone.js", "zone.js",
"@tailwindcss/container-queries", "@tailwindcss/container-queries",
], ],

View File

@@ -28,15 +28,13 @@ const config: StorybookConfig = {
], ],
addons: [ addons: [
getAbsolutePath("@storybook/addon-links"), getAbsolutePath("@storybook/addon-links"),
getAbsolutePath("@storybook/addon-essentials"),
getAbsolutePath("@storybook/addon-a11y"), getAbsolutePath("@storybook/addon-a11y"),
getAbsolutePath("@storybook/addon-designs"), getAbsolutePath("@storybook/addon-designs"),
getAbsolutePath("@storybook/addon-interactions"),
getAbsolutePath("@storybook/addon-themes"), getAbsolutePath("@storybook/addon-themes"),
{ {
// @storybook/addon-docs is part of @storybook/addon-essentials // @storybook/addon-docs is part of @storybook/addon-essentials
// eslint-disable-next-line storybook/no-uninstalled-addons
name: "@storybook/addon-docs", name: getAbsolutePath("@storybook/addon-docs"),
options: { options: {
mdxPluginOptions: { mdxPluginOptions: {
mdxCompileOptions: { mdxCompileOptions: {
@@ -60,6 +58,10 @@ const config: StorybookConfig = {
webpackFinal: async (config, { configType }) => { webpackFinal: async (config, { configType }) => {
if (config.resolve) { if (config.resolve) {
config.resolve.plugins = [new TsconfigPathsPlugin()] as any; config.resolve.plugins = [new TsconfigPathsPlugin()] as any;
config.resolve.fallback = {
...config.resolve.fallback,
path: require.resolve("path-browserify"),
};
} }
return config; return config;
}, },

View File

@@ -1,5 +1,5 @@
import { addons } from "@storybook/manager-api"; import { addons } from "storybook/manager-api";
import { create } from "@storybook/theming/create"; import { create } from "storybook/theming";
const lightTheme = create({ const lightTheme = create({
base: "light", base: "light",

View File

@@ -49,7 +49,7 @@ const preview: Preview = {
}, },
}, },
backgrounds: { backgrounds: {
disable: true, disabled: true,
}, },
}, },
tags: ["autodocs"], tags: ["autodocs"],

View File

@@ -220,5 +220,31 @@
} }
} }
} }
},
"schematics": {
"@schematics/angular:component": {
"type": "component"
},
"@schematics/angular:directive": {
"type": "directive"
},
"@schematics/angular:service": {
"type": "service"
},
"@schematics/angular:guard": {
"typeSeparator": "."
},
"@schematics/angular:interceptor": {
"typeSeparator": "."
},
"@schematics/angular:module": {
"typeSeparator": "."
},
"@schematics/angular:pipe": {
"typeSeparator": "."
},
"@schematics/angular:resolver": {
"typeSeparator": "."
}
} }
} }

View File

@@ -1,13 +1,9 @@
import { createRequire } from "module"; import { createRequire } from "module";
import { dirname, join, resolve } from "path"; import { dirname, join } from "path";
import { fileURLToPath } from "url";
import type { StorybookConfig } from "@storybook/web-components-webpack5"; import type { StorybookConfig } from "@storybook/web-components-vite";
import remarkGfm from "remark-gfm"; import remarkGfm from "remark-gfm";
import TsconfigPathsPlugin from "tsconfig-paths-webpack-plugin"; import tsconfigPaths from "vite-tsconfig-paths";
const currentFile = fileURLToPath(import.meta.url);
const currentDirectory = dirname(currentFile);
const require = createRequire(import.meta.url); const require = createRequire(import.meta.url);
@@ -21,7 +17,6 @@ const config: StorybookConfig = {
getAbsolutePath("@storybook/addon-essentials"), getAbsolutePath("@storybook/addon-essentials"),
getAbsolutePath("@storybook/addon-a11y"), getAbsolutePath("@storybook/addon-a11y"),
getAbsolutePath("@storybook/addon-designs"), getAbsolutePath("@storybook/addon-designs"),
getAbsolutePath("@storybook/addon-interactions"),
{ {
name: "@storybook/addon-docs", name: "@storybook/addon-docs",
options: { options: {
@@ -34,10 +29,8 @@ const config: StorybookConfig = {
}, },
], ],
framework: { framework: {
name: getAbsolutePath("@storybook/web-components-webpack5"), name: getAbsolutePath("@storybook/web-components-vite"),
options: { options: {},
legacyRootApi: true,
},
}, },
core: { core: {
disableTelemetry: true, disableTelemetry: true,
@@ -46,33 +39,12 @@ const config: StorybookConfig = {
...existingConfig, ...existingConfig,
FLAGS: JSON.stringify({}), FLAGS: JSON.stringify({}),
}), }),
webpackFinal: async (config) => { viteFinal: async (config) => {
if (config.resolve) { return {
config.resolve.plugins = [ ...config,
new TsconfigPathsPlugin({ plugins: [...(config.plugins ?? []), tsconfigPaths()],
configFile: resolve(currentDirectory, "../../../../../tsconfig.json"), };
}),
] as any;
}
if (config.module && config.module.rules) {
config.module.rules.push({
test: /\.(ts|tsx)$/,
exclude: /node_modules/,
use: [
{
loader: require.resolve("ts-loader"),
},
],
});
config.module.rules.push({
test: /\.scss$/,
use: [require.resolve("css-loader"), require.resolve("sass-loader")],
});
}
return config;
}, },
docs: {},
}; };
export default config; export default config;

View File

@@ -1,4 +1,4 @@
import { Meta, Controls, Primary } from "@storybook/addon-docs"; import { Meta, Controls, Primary } from "@storybook/addon-docs/blocks";
import * as stories from "./action-button.lit-stories"; import * as stories from "./action-button.lit-stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Controls, Primary } from "@storybook/addon-docs"; import { Meta, Controls, Primary } from "@storybook/addon-docs/blocks";
import * as stories from "./badge-button.lit-stories"; import * as stories from "./badge-button.lit-stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Controls, Primary } from "@storybook/addon-docs"; import { Meta, Controls, Primary } from "@storybook/addon-docs/blocks";
import * as stories from "./body.lit-stories"; import * as stories from "./body.lit-stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Controls, Primary } from "@storybook/addon-docs"; import { Meta, Controls, Primary } from "@storybook/addon-docs/blocks";
import * as stories from "./close-button.lit-stories"; import * as stories from "./close-button.lit-stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Controls, Primary } from "@storybook/addon-docs"; import { Meta, Controls, Primary } from "@storybook/addon-docs/blocks";
import * as stories from "./edit-button.lit-stories"; import * as stories from "./edit-button.lit-stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Controls, Primary } from "@storybook/addon-docs"; import { Meta, Controls, Primary } from "@storybook/addon-docs/blocks";
import * as stories from "./footer.lit-stories"; import * as stories from "./footer.lit-stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Controls, Primary } from "@storybook/addon-docs"; import { Meta, Controls, Primary } from "@storybook/addon-docs/blocks";
import * as stories from "./header.lit-stories"; import * as stories from "./header.lit-stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Controls } from "@storybook/addon-docs"; import { Meta, Controls } from "@storybook/addon-docs/blocks";
import * as stories from "./icons.lit-stories"; import * as stories from "./icons.lit-stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Story, Canvas } from "@storybook/addon-docs"; import { Meta, Story, Canvas } from "@storybook/addon-docs/blocks";
import * as stories from "./popup-layout.stories"; import * as stories from "./popup-layout.stories";

View File

@@ -1,5 +1,4 @@
import { DOCUMENT } from "@angular/common"; import { inject, Inject, Injectable, DOCUMENT } from "@angular/core";
import { inject, Inject, Injectable } from "@angular/core";
import { AbstractThemingService } from "@bitwarden/angular/platform/services/theming/theming.service.abstraction"; import { AbstractThemingService } from "@bitwarden/angular/platform/services/theming/theming.service.abstraction";
import { TwoFactorService } from "@bitwarden/common/auth/two-factor"; import { TwoFactorService } from "@bitwarden/common/auth/two-factor";

View File

@@ -1,5 +1,4 @@
import { DOCUMENT } from "@angular/common"; import { Inject, Injectable, DOCUMENT } from "@angular/core";
import { Inject, Injectable } from "@angular/core";
import { firstValueFrom } from "rxjs"; import { firstValueFrom } from "rxjs";
import { AbstractThemingService } from "@bitwarden/angular/platform/services/theming/theming.service.abstraction"; import { AbstractThemingService } from "@bitwarden/angular/platform/services/theming/theming.service.abstraction";

View File

@@ -1,4 +1,4 @@
import { action } from "@storybook/addon-actions"; import { action } from "storybook/actions";
import { AccessItemType, AccessItemView } from "./access-selector.models"; import { AccessItemType, AccessItemView } from "./access-selector.models";

View File

@@ -1,5 +1,4 @@
import { DOCUMENT } from "@angular/common"; import { Inject, Injectable, DOCUMENT } from "@angular/core";
import { Inject, Injectable } from "@angular/core";
import { firstValueFrom } from "rxjs"; import { firstValueFrom } from "rxjs";
import { AbstractThemingService } from "@bitwarden/angular/platform/services/theming/theming.service.abstraction"; import { AbstractThemingService } from "@bitwarden/angular/platform/services/theming/theming.service.abstraction";

View File

@@ -1,5 +1,12 @@
import { CommonModule, DOCUMENT } from "@angular/common"; import { CommonModule } from "@angular/common";
import { Component, Inject, OnDestroy, OnInit, ChangeDetectionStrategy } from "@angular/core"; import {
Component,
Inject,
OnDestroy,
OnInit,
DOCUMENT,
ChangeDetectionStrategy,
} from "@angular/core";
import { takeUntilDestroyed } from "@angular/core/rxjs-interop"; import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
import { ActivatedRoute } from "@angular/router"; import { ActivatedRoute } from "@angular/router";
import { map, Observable, of, tap } from "rxjs"; import { map, Observable, of, tap } from "rxjs";

View File

@@ -1,5 +1,5 @@
import { CommonModule, DOCUMENT } from "@angular/common"; import { CommonModule } from "@angular/common";
import { Component, ViewChildren, QueryList, ElementRef, inject } from "@angular/core"; import { Component, ViewChildren, QueryList, ElementRef, inject, DOCUMENT } from "@angular/core";
import { takeUntilDestroyed } from "@angular/core/rxjs-interop"; import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
import { debounceTime, fromEvent } from "rxjs"; import { debounceTime, fromEvent } from "rxjs";

View File

@@ -1,5 +1,5 @@
import { DOCUMENT, NgIf } from "@angular/common"; import { NgIf } from "@angular/common";
import { Component, DestroyRef, inject, OnDestroy, OnInit } from "@angular/core"; import { Component, DestroyRef, inject, OnDestroy, OnInit, DOCUMENT } from "@angular/core";
import { takeUntilDestroyed } from "@angular/core/rxjs-interop"; import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
import { Router, RouterModule } from "@angular/router"; import { Router, RouterModule } from "@angular/router";
import { firstValueFrom, pairwise, startWith } from "rxjs"; import { firstValueFrom, pairwise, startWith } from "rxjs";

View File

@@ -71,6 +71,7 @@ export default tseslint.config(
"@angular-eslint/no-output-on-prefix": 0, "@angular-eslint/no-output-on-prefix": 0,
"@angular-eslint/no-output-rename": "error", "@angular-eslint/no-output-rename": "error",
"@angular-eslint/no-outputs-metadata-property": "error", "@angular-eslint/no-outputs-metadata-property": "error",
"@angular-eslint/prefer-inject": 0,
"@angular-eslint/prefer-on-push-component-change-detection": "error", "@angular-eslint/prefer-on-push-component-change-detection": "error",
"@angular-eslint/prefer-output-emitter-ref": "error", "@angular-eslint/prefer-output-emitter-ref": "error",
"@angular-eslint/prefer-signals": "error", "@angular-eslint/prefer-signals": "error",

View File

@@ -1,4 +1,4 @@
import { InjectFlags, InjectOptions, Injector, ProviderToken } from "@angular/core"; import { InjectOptions, Injector, ProviderToken } from "@angular/core";
export class ModalInjector implements Injector { export class ModalInjector implements Injector {
constructor( constructor(
@@ -12,8 +12,8 @@ export class ModalInjector implements Injector {
options: InjectOptions & { optional?: false }, options: InjectOptions & { optional?: false },
): T; ): T;
get<T>(token: ProviderToken<T>, notFoundValue: null, options: InjectOptions): T; get<T>(token: ProviderToken<T>, notFoundValue: null, options: InjectOptions): T;
get<T>(token: ProviderToken<T>, notFoundValue?: T, options?: InjectOptions | InjectFlags): T; get<T>(token: ProviderToken<T>, notFoundValue?: T, options?: InjectOptions | null): T;
get<T>(token: ProviderToken<T>, notFoundValue?: T, flags?: InjectFlags): T; get<T>(token: ProviderToken<T>, notFoundValue?: T, flags?: null): T;
get(token: any, notFoundValue?: any): any; get(token: any, notFoundValue?: any): any;
get(token: any, notFoundValue?: any, flags?: any): any { get(token: any, notFoundValue?: any, flags?: any): any {
return this._additionalTokens.get(token) ?? this._parentInjector.get<any>(token, notFoundValue); return this._additionalTokens.get(token) ?? this._parentInjector.get<any>(token, notFoundValue);

View File

@@ -1,4 +1,4 @@
import { Meta, Story } from "@storybook/addon-docs"; import { Meta, Story } from "@storybook/addon-docs/blocks";
import * as stories from "./input-password.stories.ts"; import * as stories from "./input-password.stories.ts";

View File

@@ -1,8 +1,8 @@
import { importProvidersFrom } from "@angular/core"; import { importProvidersFrom } from "@angular/core";
import { BrowserAnimationsModule } from "@angular/platform-browser/animations"; import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
import { action } from "@storybook/addon-actions";
import { Meta, StoryObj, applicationConfig } from "@storybook/angular"; import { Meta, StoryObj, applicationConfig } from "@storybook/angular";
import { of } from "rxjs"; import { of } from "rxjs";
import { action } from "storybook/actions";
import { ZXCVBNResult } from "zxcvbn"; import { ZXCVBNResult } from "zxcvbn";
import { AuditService } from "@bitwarden/common/abstractions/audit.service"; import { AuditService } from "@bitwarden/common/abstractions/audit.service";

View File

@@ -1,4 +1,4 @@
import { Meta, Story, Controls } from "@storybook/addon-docs"; import { Meta, Story, Controls } from "@storybook/addon-docs/blocks";
import * as stories from "./registration-start.stories"; import * as stories from "./registration-start.stories";

View File

@@ -1,5 +1,4 @@
import { DOCUMENT } from "@angular/common"; import { Injectable, Inject, NgZone, OnDestroy, DOCUMENT } from "@angular/core";
import { Injectable, Inject, NgZone, OnDestroy } from "@angular/core";
@Injectable({ providedIn: "root" }) @Injectable({ providedIn: "root" })
export class AriaDisabledClickCaptureService implements OnDestroy { export class AriaDisabledClickCaptureService implements OnDestroy {

View File

@@ -1,4 +1,4 @@
import { Meta, Story, Controls } from "@storybook/addon-docs"; import { Meta, Story, Controls } from "@storybook/addon-docs/blocks";
import * as stories from "./anon-layout-wrapper.stories"; import * as stories from "./anon-layout-wrapper.stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Story, Controls } from "@storybook/addon-docs"; import { Meta, Story, Controls } from "@storybook/addon-docs/blocks";
import * as stories from "./anon-layout.stories"; import * as stories from "./anon-layout.stories";

View File

@@ -1,4 +1,4 @@
import { Meta } from "@storybook/addon-docs"; import { Meta } from "@storybook/addon-docs/blocks";
<Meta title="Component Library/Async Actions/In Forms/Documentation" /> <Meta title="Component Library/Async Actions/In Forms/Documentation" />

View File

@@ -1,8 +1,8 @@
import { Component } from "@angular/core"; import { Component } from "@angular/core";
import { FormsModule, ReactiveFormsModule, Validators, FormBuilder } from "@angular/forms"; import { FormsModule, ReactiveFormsModule, Validators, FormBuilder } from "@angular/forms";
import { action } from "@storybook/addon-actions";
import { Meta, moduleMetadata, StoryObj } from "@storybook/angular"; import { Meta, moduleMetadata, StoryObj } from "@storybook/angular";
import { delay, of } from "rxjs"; import { delay, of } from "rxjs";
import { action } from "storybook/actions";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
import { ValidationService } from "@bitwarden/common/platform/abstractions/validation.service"; import { ValidationService } from "@bitwarden/common/platform/abstractions/validation.service";

View File

@@ -1,4 +1,4 @@
import { Meta } from "@storybook/addon-docs"; import { Meta } from "@storybook/addon-docs/blocks";
<Meta title="Component Library/Async Actions/Overview" /> <Meta title="Component Library/Async Actions/Overview" />

View File

@@ -1,4 +1,4 @@
import { Meta, Story } from "@storybook/addon-docs"; import { Meta, Story } from "@storybook/addon-docs/blocks";
import * as stories from "./standalone.stories.ts"; import * as stories from "./standalone.stories.ts";
<Meta of={stories} /> <Meta of={stories} />

View File

@@ -1,7 +1,7 @@
import { Component } from "@angular/core"; import { Component } from "@angular/core";
import { action } from "@storybook/addon-actions";
import { Meta, StoryObj, moduleMetadata } from "@storybook/angular"; import { Meta, StoryObj, moduleMetadata } from "@storybook/angular";
import { delay, of } from "rxjs"; import { delay, of } from "rxjs";
import { action } from "storybook/actions";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service";

View File

@@ -1,4 +1,4 @@
import { Description, Meta, Canvas, Primary, Controls, Title } from "@storybook/addon-docs"; import { Meta, Description, Canvas, Primary, Controls, Title } from "@storybook/addon-docs/blocks";
import * as stories from "./avatar.stories"; import * as stories from "./avatar.stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Canvas, Primary, Controls, Title, Description } from "@storybook/addon-docs"; import { Meta, Canvas, Primary, Controls, Title, Description } from "@storybook/addon-docs/blocks";
import * as stories from "./badge.stories"; import * as stories from "./badge.stories";

View File

@@ -1,4 +1,4 @@
import { Canvas, Controls, Description, Meta, Primary, Title } from "@storybook/addon-docs"; import { Canvas, Controls, Description, Meta, Primary, Title } from "@storybook/addon-docs/blocks";
import * as stories from "./banner.stories"; import * as stories from "./banner.stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Canvas, Primary, Controls, Title, Description } from "@storybook/addon-docs"; import { Meta, Canvas, Primary, Controls, Title, Description } from "@storybook/addon-docs/blocks";
import * as stories from "./breadcrumbs.stories"; import * as stories from "./breadcrumbs.stories";

View File

@@ -6,7 +6,7 @@ import {
Controls, Controls,
Title, Title,
Description, Description,
} from "@storybook/addon-docs"; } from "@storybook/addon-docs/blocks";
import * as stories from "./button.stories"; import * as stories from "./button.stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Canvas, Primary, Controls, Title, Description } from "@storybook/addon-docs"; import { Meta, Canvas, Primary, Controls, Title, Description } from "@storybook/addon-docs/blocks";
import * as stories from "./callout.stories"; import * as stories from "./callout.stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Primary, Controls, Canvas, Title, Description } from "@storybook/addon-docs"; import { Meta, Primary, Controls, Canvas, Title, Description } from "@storybook/addon-docs/blocks";
import * as stories from "./base-card.stories"; import * as stories from "./base-card.stories";

View File

@@ -1,4 +1,12 @@
import { Meta, Canvas, Source, Primary, Controls, Title, Description } from "@storybook/addon-docs"; import {
Meta,
Canvas,
Source,
Primary,
Controls,
Title,
Description,
} from "@storybook/addon-docs/blocks";
import * as stories from "./checkbox.stories"; import * as stories from "./checkbox.stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Primary, Controls, Canvas, Title, Description } from "@storybook/addon-docs"; import { Meta, Primary, Controls, Canvas, Title, Description } from "@storybook/addon-docs/blocks";
import * as stories from "./chip-select.stories"; import * as stories from "./chip-select.stories";

View File

@@ -1,6 +1,6 @@
import { FormsModule } from "@angular/forms"; import { FormsModule } from "@angular/forms";
import { Meta, StoryObj, moduleMetadata } from "@storybook/angular"; import { Meta, StoryObj, moduleMetadata } from "@storybook/angular";
import { getAllByRole, userEvent } from "@storybook/test"; import { getAllByRole, userEvent } from "storybook/test";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";

View File

@@ -1,4 +1,4 @@
import { Meta, Canvas, Primary, Controls, Title, Description } from "@storybook/addon-docs"; import { Meta, Canvas, Primary, Controls, Title, Description } from "@storybook/addon-docs/blocks";
import * as stories from "./color-password.stories"; import * as stories from "./color-password.stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Primary, Title, Description } from "@storybook/addon-docs"; import { Meta, Primary, Title, Description } from "@storybook/addon-docs/blocks";
import * as stories from "./container.stories"; import * as stories from "./container.stories";

View File

@@ -1,9 +1,9 @@
import { DIALOG_DATA, DialogRef } from "@angular/cdk/dialog"; import { DIALOG_DATA, DialogRef } from "@angular/cdk/dialog";
import { Component, Inject } from "@angular/core"; import { Component, inject } from "@angular/core";
import { NoopAnimationsModule, provideAnimations } from "@angular/platform-browser/animations"; import { NoopAnimationsModule, provideAnimations } from "@angular/platform-browser/animations";
import { RouterTestingModule } from "@angular/router/testing"; import { RouterTestingModule } from "@angular/router/testing";
import { Meta, StoryObj, applicationConfig, moduleMetadata } from "@storybook/angular"; import { Meta, StoryObj, applicationConfig, moduleMetadata } from "@storybook/angular";
import { getAllByRole, userEvent } from "@storybook/test"; import { getAllByRole, userEvent } from "storybook/test";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
@@ -36,7 +36,7 @@ interface Animal {
imports: [ButtonModule, LayoutComponent], imports: [ButtonModule, LayoutComponent],
}) })
class StoryDialogComponent { class StoryDialogComponent {
constructor(public dialogService: DialogService) {} dialogService = inject(DialogService);
openDialog() { openDialog() {
this.dialogService.open(StoryDialogContentComponent, { this.dialogService.open(StoryDialogContentComponent, {
@@ -85,10 +85,8 @@ class StoryDialogComponent {
imports: [DialogModule, ButtonModule], imports: [DialogModule, ButtonModule],
}) })
class StoryDialogContentComponent { class StoryDialogContentComponent {
constructor( dialogRef = inject(DialogRef);
public dialogRef: DialogRef, private data = inject<Animal>(DIALOG_DATA);
@Inject(DIALOG_DATA) private data: Animal,
) {}
get animal() { get animal() {
return this.data?.animal; return this.data?.animal;
@@ -118,10 +116,8 @@ class StoryDialogContentComponent {
imports: [DialogModule, ButtonModule], imports: [DialogModule, ButtonModule],
}) })
class NonDismissableContentComponent { class NonDismissableContentComponent {
constructor( dialogRef = inject(DialogRef);
public dialogRef: DialogRef, private data = inject<Animal>(DIALOG_DATA);
@Inject(DIALOG_DATA) private data: Animal,
) {}
get animal() { get animal() {
return this.data?.animal; return this.data?.animal;

View File

@@ -1,4 +1,4 @@
import { Meta, Canvas, Primary, Controls } from "@storybook/addon-docs"; import { Meta, Canvas, Primary, Controls } from "@storybook/addon-docs/blocks";
import * as stories from "./dialog.stories"; import * as stories from "./dialog.stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Canvas, Source } from "@storybook/addon-docs"; import { Meta, Canvas, Source } from "@storybook/addon-docs/blocks";
import * as stories from "./dialog.service.stories"; import * as stories from "./dialog.service.stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Canvas, Primary, Controls } from "@storybook/addon-docs"; import { Meta, Canvas, Primary, Controls } from "@storybook/addon-docs/blocks";
import * as stories from "./simple-dialog.stories"; import * as stories from "./simple-dialog.stories";

View File

@@ -1,8 +1,8 @@
import { DialogRef, DIALOG_DATA } from "@angular/cdk/dialog"; import { DialogRef, DIALOG_DATA } from "@angular/cdk/dialog";
import { Component, Inject } from "@angular/core"; import { Component, inject } from "@angular/core";
import { provideAnimations } from "@angular/platform-browser/animations"; import { provideAnimations } from "@angular/platform-browser/animations";
import { Meta, StoryObj, moduleMetadata } from "@storybook/angular"; import { Meta, StoryObj, moduleMetadata } from "@storybook/angular";
import { getAllByRole, userEvent } from "@storybook/test"; import { getAllByRole, userEvent } from "storybook/test";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
@@ -30,7 +30,7 @@ interface Animal {
imports: [ButtonModule], imports: [ButtonModule],
}) })
class StoryDialogComponent { class StoryDialogComponent {
constructor(public dialogService: DialogService) {} dialogService = inject(DialogService);
openSimpleDialog() { openSimpleDialog() {
this.dialogService.open(SimpleDialogContentComponent, { this.dialogService.open(SimpleDialogContentComponent, {
@@ -84,10 +84,8 @@ class StoryDialogComponent {
imports: [ButtonModule, DialogModule], imports: [ButtonModule, DialogModule],
}) })
class SimpleDialogContentComponent { class SimpleDialogContentComponent {
constructor( dialogRef = inject(DialogRef);
public dialogRef: DialogRef, private data = inject<Animal>(DIALOG_DATA);
@Inject(DIALOG_DATA) private data: Animal,
) {}
get animal() { get animal() {
return this.data?.animal; return this.data?.animal;
@@ -115,10 +113,8 @@ class SimpleDialogContentComponent {
imports: [ButtonModule, DialogModule], imports: [ButtonModule, DialogModule],
}) })
class NonDismissableWithPrimaryButtonContentComponent { class NonDismissableWithPrimaryButtonContentComponent {
constructor( dialogRef = inject(DialogRef);
public dialogRef: DialogRef, private data = inject<Animal>(DIALOG_DATA);
@Inject(DIALOG_DATA) private data: Animal,
) {}
get animal() { get animal() {
return this.data?.animal; return this.data?.animal;
@@ -141,10 +137,8 @@ class NonDismissableWithPrimaryButtonContentComponent {
imports: [ButtonModule, DialogModule], imports: [ButtonModule, DialogModule],
}) })
class NonDismissableWithNoButtonsContentComponent { class NonDismissableWithNoButtonsContentComponent {
constructor( dialogRef = inject(DialogRef);
public dialogRef: DialogRef, private data = inject<Animal>(DIALOG_DATA);
@Inject(DIALOG_DATA) private data: Animal,
) {}
get animal() { get animal() {
return this.data?.animal; return this.data?.animal;

View File

@@ -1,4 +1,4 @@
import { Meta, Canvas, Primary, Controls, Title, Description } from "@storybook/addon-docs"; import { Meta, Canvas, Primary, Controls, Title, Description } from "@storybook/addon-docs/blocks";
import * as stories from "./disclosure.stories"; import * as stories from "./disclosure.stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Canvas, Primary, Controls } from "@storybook/addon-docs"; import { Meta, Canvas, Primary, Controls } from "@storybook/addon-docs/blocks";
import * as stories from "./drawer.stories"; import * as stories from "./drawer.stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Canvas, Source, Primary, Controls } from "@storybook/addon-docs"; import { Meta, Canvas, Source, Primary, Controls } from "@storybook/addon-docs/blocks";
import * as stories from "./form-field.stories"; import * as stories from "./form-field.stories";

View File

@@ -6,8 +6,8 @@ import {
FormGroup, FormGroup,
} from "@angular/forms"; } from "@angular/forms";
import { NgSelectModule } from "@ng-select/ng-select"; import { NgSelectModule } from "@ng-select/ng-select";
import { action } from "@storybook/addon-actions";
import { Meta, StoryObj, moduleMetadata } from "@storybook/angular"; import { Meta, StoryObj, moduleMetadata } from "@storybook/angular";
import { action } from "storybook/actions";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";

View File

@@ -1,6 +1,6 @@
import { FormBuilder, FormsModule, ReactiveFormsModule, Validators } from "@angular/forms"; import { FormBuilder, FormsModule, ReactiveFormsModule, Validators } from "@angular/forms";
import { Meta, StoryObj, moduleMetadata } from "@storybook/angular"; import { Meta, StoryObj, moduleMetadata } from "@storybook/angular";
import { userEvent, getByText } from "@storybook/test"; import { userEvent, getByText } from "storybook/test";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";

View File

@@ -1,4 +1,4 @@
import { Meta, Canvas, Source } from "@storybook/addon-docs"; import { Meta, Canvas, Source } from "@storybook/addon-docs/blocks";
import * as formStories from "./form.stories"; import * as formStories from "./form.stories";
import * as fieldStories from "../form-field/form-field.stories"; import * as fieldStories from "../form-field/form-field.stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Canvas, Primary, Controls, Title, Description } from "@storybook/addon-docs"; import { Meta, Canvas, Primary, Controls, Title, Description } from "@storybook/addon-docs/blocks";
import * as stories from "./icon-button.stories"; import * as stories from "./icon-button.stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Story, Controls } from "@storybook/addon-docs"; import { Meta, Story, Controls } from "@storybook/addon-docs/blocks";
import * as stories from "./icon.stories"; import * as stories from "./icon.stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Canvas, Primary, Controls, Title, Description } from "@storybook/addon-docs"; import { Meta, Canvas, Primary, Controls, Title, Description } from "@storybook/addon-docs/blocks";
import * as stories from "./autofocus.stories"; import * as stories from "./autofocus.stories";

View File

@@ -1,4 +1,4 @@
import { Meta } from "@storybook/addon-docs"; import { Meta } from "@storybook/addon-docs/blocks";
<Meta title="Component Library/Form/Input Directive" /> <Meta title="Component Library/Form/Input Directive" />

View File

@@ -1,4 +1,4 @@
import { Meta, Canvas, Primary, Controls } from "@storybook/addon-docs"; import { Meta, Canvas, Primary, Controls } from "@storybook/addon-docs/blocks";
import * as stories from "./item.stories"; import * as stories from "./item.stories";

View File

@@ -1,6 +1,6 @@
import { RouterTestingModule } from "@angular/router/testing"; import { RouterTestingModule } from "@angular/router/testing";
import { Meta, StoryObj, moduleMetadata } from "@storybook/angular"; import { Meta, StoryObj, moduleMetadata } from "@storybook/angular";
import { userEvent } from "@storybook/test"; import { userEvent } from "storybook/test";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";

View File

@@ -1,4 +1,4 @@
import { Meta, Story, Primary, Controls, Title, Description } from "@storybook/addon-docs"; import { Meta, Story, Primary, Controls, Title, Description } from "@storybook/addon-docs/blocks";
import * as stories from "./link.stories"; import * as stories from "./link.stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Canvas, Primary, Controls } from "@storybook/addon-docs"; import { Meta, Canvas, Primary, Controls } from "@storybook/addon-docs/blocks";
import * as stories from "./menu.stories"; import * as stories from "./menu.stories";

View File

@@ -108,11 +108,11 @@ export class MultiSelectComponent implements OnInit, BitFormFieldControl, Contro
/** Needs to be arrow function to retain `this` scope. */ /** Needs to be arrow function to retain `this` scope. */
keyDown = (event: KeyboardEvent) => { keyDown = (event: KeyboardEvent) => {
const select = this.select(); const select = this.select();
if (!select.isOpen && event.key === "Enter" && !hasModifierKey(event)) { if (!select.isOpen() && event.key === "Enter" && !hasModifierKey(event)) {
return false; return false;
} }
if (select.isOpen && event.key === "Escape" && !hasModifierKey(event)) { if (select.isOpen() && event.key === "Escape" && !hasModifierKey(event)) {
this.selectedItems = []; this.selectedItems = [];
select.close(); select.close();
event.stopPropagation(); event.stopPropagation();
@@ -198,7 +198,9 @@ export class MultiSelectComponent implements OnInit, BitFormFieldControl, Contro
} }
set ariaDescribedBy(value: string | undefined) { set ariaDescribedBy(value: string | undefined) {
this._ariaDescribedBy = value; this._ariaDescribedBy = value;
this.select()?.searchInput.nativeElement.setAttribute("aria-describedby", value ?? ""); this.select()
?.searchInput()
.nativeElement.setAttribute("aria-describedby", value ?? "");
} }
private _ariaDescribedBy?: string; private _ariaDescribedBy?: string;

View File

@@ -1,4 +1,4 @@
import { Meta, Canvas, Primary, Controls } from "@storybook/addon-docs"; import { Meta, Canvas, Primary, Controls } from "@storybook/addon-docs/blocks";
import * as stories from "./popover.stories"; import * as stories from "./popover.stories";

View File

@@ -1,5 +1,5 @@
import { Meta, StoryObj, moduleMetadata } from "@storybook/angular"; import { Meta, StoryObj, moduleMetadata } from "@storybook/angular";
import { getByRole, userEvent } from "@storybook/test"; import { getByRole, userEvent } from "storybook/test";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";

View File

@@ -1,4 +1,4 @@
import { Meta, Canvas, Primary, Controls, Title, Description } from "@storybook/addon-docs"; import { Meta, Canvas, Primary, Controls, Title, Description } from "@storybook/addon-docs/blocks";
import * as stories from "./progress.stories"; import * as stories from "./progress.stories";

View File

@@ -1,4 +1,12 @@
import { Meta, Canvas, Source, Primary, Controls, Title, Description } from "@storybook/addon-docs"; import {
Meta,
Canvas,
Source,
Primary,
Controls,
Title,
Description,
} from "@storybook/addon-docs/blocks";
import * as stories from "./search.stories"; import * as stories from "./search.stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Primary, Controls, Canvas } from "@storybook/addon-docs"; import { Meta, Primary, Controls, Canvas } from "@storybook/addon-docs/blocks";
import * as stories from "./section.stories"; import * as stories from "./section.stories";

View File

@@ -158,7 +158,9 @@ export class SelectComponent<T> implements BitFormFieldControl, ControlValueAcce
} }
set ariaDescribedBy(value: string | undefined) { set ariaDescribedBy(value: string | undefined) {
this._ariaDescribedBy = value; this._ariaDescribedBy = value;
this.select()?.searchInput.nativeElement.setAttribute("aria-describedby", value ?? ""); this.select()
?.searchInput()
.nativeElement.setAttribute("aria-describedby", value ?? "");
} }
private _ariaDescribedBy?: string; private _ariaDescribedBy?: string;
@@ -218,7 +220,7 @@ export class SelectComponent<T> implements BitFormFieldControl, ControlValueAcce
* Needs to be arrow function to retain `this` scope. * Needs to be arrow function to retain `this` scope.
*/ */
protected onKeyDown = (event: KeyboardEvent) => { protected onKeyDown = (event: KeyboardEvent) => {
if (this.select().isOpen && event.key === "Escape" && !hasModifierKey(event)) { if (this.select().isOpen() && event.key === "Escape" && !hasModifierKey(event)) {
event.stopPropagation(); event.stopPropagation();
} }

View File

@@ -1,4 +1,4 @@
import { Meta, Canvas, Source, Primary, Controls } from "@storybook/addon-docs"; import { Meta, Canvas, Source, Primary, Controls } from "@storybook/addon-docs/blocks";
import * as stories from "./select.stories"; import * as stories from "./select.stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Canvas, Source } from "@storybook/addon-docs"; import { Meta, Canvas, Source } from "@storybook/addon-docs/blocks";
import * as skeletonStories from "./skeleton.stories"; import * as skeletonStories from "./skeleton.stories";
import * as skeletonTextStories from "./skeleton-text.stories"; import * as skeletonTextStories from "./skeleton-text.stories";

View File

@@ -1,4 +1,12 @@
import { Meta, Story, Source, Primary, Controls, Title, Description } from "@storybook/addon-docs"; import {
Meta,
Story,
Source,
Primary,
Controls,
Title,
Description,
} from "@storybook/addon-docs/blocks";
import * as stories from "./stepper.stories"; import * as stories from "./stepper.stories";

View File

@@ -1,4 +1,4 @@
import { Meta } from "@storybook/addon-docs"; import { Meta } from "@storybook/addon-docs/blocks";
<Meta title="Documentation/Colors" /> <Meta title="Documentation/Colors" />

View File

@@ -1,4 +1,4 @@
import { Meta, Story, Canvas } from "@storybook/addon-docs"; import { Meta, Story, Canvas } from "@storybook/addon-docs/blocks";
import * as itemStories from "../item/item.stories"; import * as itemStories from "../item/item.stories";
import * as popupLayoutStories from "../../../../apps/browser/src/platform/popup/layout/popup-layout.stories"; import * as popupLayoutStories from "../../../../apps/browser/src/platform/popup/layout/popup-layout.stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Canvas } from "@storybook/addon-docs"; import { Meta, Canvas } from "@storybook/addon-docs/blocks";
import * as stories from "./icons.stories"; import * as stories from "./icons.stories";

View File

@@ -1,4 +1,4 @@
import { Meta } from "@storybook/addon-docs"; import { Meta } from "@storybook/addon-docs/blocks";
<Meta title="Documentation/Introduction" /> <Meta title="Documentation/Introduction" />

View File

@@ -1,4 +1,4 @@
import { Meta, Story } from "@storybook/addon-docs"; import { Meta, Story } from "@storybook/addon-docs/blocks";
import * as stories from "./kitchen-sink.stories"; import * as stories from "./kitchen-sink.stories";

View File

@@ -9,7 +9,7 @@ import {
fireEvent, fireEvent,
getByText, getByText,
getAllByLabelText, getAllByLabelText,
} from "@storybook/test"; } from "storybook/test";
import { PasswordManagerLogo } from "@bitwarden/assets/svg"; import { PasswordManagerLogo } from "@bitwarden/assets/svg";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";

View File

@@ -1,4 +1,4 @@
import { Meta } from "@storybook/addon-docs"; import { Meta } from "@storybook/addon-docs/blocks";
<Meta title="Documentation/Migration" /> <Meta title="Documentation/Migration" />

View File

@@ -1,4 +1,4 @@
import { Meta } from "@storybook/addon-docs"; import { Meta } from "@storybook/addon-docs/blocks";
<Meta title="Documentation/Responsive Design" /> <Meta title="Documentation/Responsive Design" />

View File

@@ -1,4 +1,4 @@
import { Meta } from "@storybook/addon-docs"; import { Meta } from "@storybook/addon-docs/blocks";
<Meta title="Documentation/Virtual Scrolling" /> <Meta title="Documentation/Virtual Scrolling" />

View File

@@ -1,4 +1,12 @@
import { Meta, Canvas, Source, Primary, Controls, Title, Description } from "@storybook/addon-docs"; import {
Meta,
Canvas,
Source,
Primary,
Controls,
Title,
Description,
} from "@storybook/addon-docs/blocks";
import * as stories from "./switch.stories"; import * as stories from "./switch.stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Story, Source, Primary, Controls } from "@storybook/addon-docs"; import { Meta, Story, Source, Primary, Controls } from "@storybook/addon-docs/blocks";
import * as stories from "./table.stories"; import * as stories from "./table.stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Canvas, Primary, Controls } from "@storybook/addon-docs"; import { Meta, Canvas, Primary, Controls } from "@storybook/addon-docs/blocks";
import * as stories from "./tabs.stories"; import * as stories from "./tabs.stories";
import * as dialogStories from "../dialog/dialog/dialog.stories"; import * as dialogStories from "../dialog/dialog/dialog.stories";

View File

@@ -1,4 +1,12 @@
import { Meta, Canvas, Source, Primary, Controls, Title, Description } from "@storybook/addon-docs"; import {
Meta,
Canvas,
Source,
Primary,
Controls,
Title,
Description,
} from "@storybook/addon-docs/blocks";
import * as stories from "./toast.stories"; import * as stories from "./toast.stories";

View File

@@ -1,8 +1,8 @@
import { CommonModule } from "@angular/common"; import { CommonModule } from "@angular/common";
import { Component, Input } from "@angular/core"; import { Component, Input } from "@angular/core";
import { BrowserAnimationsModule } from "@angular/platform-browser/animations"; import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
import { action } from "@storybook/addon-actions";
import { Meta, StoryObj, applicationConfig, moduleMetadata } from "@storybook/angular"; import { Meta, StoryObj, applicationConfig, moduleMetadata } from "@storybook/angular";
import { action } from "storybook/actions";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";

View File

@@ -1,4 +1,4 @@
import { Meta, Story, Primary, Controls, Canvas } from "@storybook/addon-docs"; import { Meta, Story, Primary, Controls, Canvas } from "@storybook/addon-docs/blocks";
import * as stories from "./toggle-group.stories"; import * as stories from "./toggle-group.stories";

View File

@@ -1,4 +1,12 @@
import { Meta, Canvas, Source, Primary, Controls, Title, Description } from "@storybook/addon-docs"; import {
Meta,
Canvas,
Source,
Primary,
Controls,
Title,
Description,
} from "@storybook/addon-docs/blocks";
import * as stories from "./tooltip.stories"; import * as stories from "./tooltip.stories";

View File

@@ -1,6 +1,6 @@
import { signal } from "@angular/core"; import { signal } from "@angular/core";
import { Meta, StoryObj, moduleMetadata } from "@storybook/angular"; import { Meta, StoryObj, moduleMetadata } from "@storybook/angular";
import { getByRole, userEvent } from "@storybook/test"; import { getByRole, userEvent } from "storybook/test";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";

View File

@@ -1,4 +1,4 @@
import { Meta, Story, Canvas } from "@storybook/addon-docs"; import { Meta, Story, Canvas } from "@storybook/addon-docs/blocks";
import * as stories from "./typography.stories"; import * as stories from "./typography.stories";

View File

@@ -1,4 +1,4 @@
import { Meta, Story, Canvas } from "@storybook/addon-docs"; import { Meta, Story, Canvas } from "@storybook/addon-docs/blocks";
import * as CartSummaryStories from "./cart-summary.component.stories"; import * as CartSummaryStories from "./cart-summary.component.stories";
<Meta of={CartSummaryStories} /> <Meta of={CartSummaryStories} />

View File

@@ -1,4 +1,4 @@
import { Meta, Story, Canvas } from "@storybook/addon-docs"; import { Meta, Story, Canvas } from "@storybook/addon-docs/blocks";
import * as DiscountBadgeStories from "./discount-badge.component.stories"; import * as DiscountBadgeStories from "./discount-badge.component.stories";
<Meta of={DiscountBadgeStories} /> <Meta of={DiscountBadgeStories} />

View File

@@ -1,4 +1,4 @@
import { Meta, Story, Canvas } from "@storybook/addon-docs"; import { Meta, Story, Canvas } from "@storybook/addon-docs/blocks";
import * as PricingCardStories from "./pricing-card.component.stories"; import * as PricingCardStories from "./pricing-card.component.stories";
<Meta of={PricingCardStories} /> <Meta of={PricingCardStories} />

View File

@@ -1,4 +1,4 @@
import { Controls, Meta, Primary } from "@storybook/addon-docs"; import { Controls, Meta, Primary } from "@storybook/addon-docs/blocks";
import * as stories from "./cipher-form.stories"; import * as stories from "./cipher-form.stories";

View File

@@ -2,7 +2,6 @@
// @ts-strict-ignore // @ts-strict-ignore
import { importProvidersFrom, signal } from "@angular/core"; import { importProvidersFrom, signal } from "@angular/core";
import { ActivatedRoute } from "@angular/router"; import { ActivatedRoute } from "@angular/router";
import { action } from "@storybook/addon-actions";
import { import {
applicationConfig, applicationConfig,
componentWrapperDecorator, componentWrapperDecorator,
@@ -11,6 +10,7 @@ import {
StoryObj, StoryObj,
} from "@storybook/angular"; } from "@storybook/angular";
import { BehaviorSubject, of } from "rxjs"; import { BehaviorSubject, of } from "rxjs";
import { action } from "storybook/actions";
// This import has been flagged as unallowed for this class. It may be involved in a circular dependency loop. // This import has been flagged as unallowed for this class. It may be involved in a circular dependency loop.
// eslint-disable-next-line no-restricted-imports // eslint-disable-next-line no-restricted-imports

5997
package-lock.json generated

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More