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:
10
.github/renovate.json5
vendored
10
.github/renovate.json5
vendored
@@ -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",
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -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;
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ const preview: Preview = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
backgrounds: {
|
backgrounds: {
|
||||||
disable: true,
|
disabled: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
tags: ["autodocs"],
|
tags: ["autodocs"],
|
||||||
|
|||||||
26
angular.json
26
angular.json
@@ -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": "."
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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" />
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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" />
|
||||||
|
|
||||||
|
|||||||
@@ -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} />
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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" />
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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" />
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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" />
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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" />
|
||||||
|
|
||||||
|
|||||||
@@ -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" />
|
||||||
|
|
||||||
|
|||||||
@@ -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" />
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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} />
|
||||||
|
|||||||
@@ -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} />
|
||||||
|
|||||||
@@ -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} />
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
@@ -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
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
Reference in New Issue
Block a user