From 12f7de8f7ffd99fa8d48b0d991de36c9a116ffd1 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Thu, 1 May 2025 14:34:23 +0200 Subject: [PATCH 001/145] release: cut the v20.0.0-next.10 release --- CHANGELOG.md | 5 +++++ package.json | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ddae84bccfb..f4828f2f8de5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ + +# 20.0.0-next.10 "sodium-swallow" (2025-05-01) + + + # 20.0.0-next.9 "sodium-salamander" (2025-05-01) ## Breaking Changes diff --git a/package.json b/package.json index 6d4e99316b19..c563e10916a7 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "ci-notify-slack-failure": "node --no-warnings=ExperimentalWarning --loader ts-node/esm/transpile-only scripts/circleci/notify-slack-job-failure.mts", "prepare": "husky" }, - "version": "20.0.0-next.9", + "version": "20.0.0-next.10", "dependencies": { "@angular-devkit/core": "catalog:", "@angular-devkit/schematics": "catalog:", From 15fb5bba53c7f255752b41462bace8108ead588d Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Thu, 1 May 2025 09:56:47 -0600 Subject: [PATCH 002/145] docs: update the csp to include material.angular.dev for files served statically (#31007) (cherry picked from commit 18ed67ee746208e7c61a001579edeb4a62acc820) --- docs/angular.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/angular.json b/docs/angular.json index 676de1bafb11..6b4d03015bfc 100644 --- a/docs/angular.json +++ b/docs/angular.json @@ -106,7 +106,7 @@ "options": { "headers": { "--NOTE--": "Keep in sync with `firebase.json`", - "Content-Security-Policy": "upgrade-insecure-requests; default-src 'self'; font-src 'self' https://fonts.gstatic.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: *; frame-src https://www.youtube.com; media-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.google-analytics.com https://www.googletagmanager.com; child-src 'self' blob:; connect-src 'self' https://material.angular.io https://*.google-analytics.com https://stats.g.doubleclick.net https://api.github.com https://www.googletagmanager.com;" + "Content-Security-Policy": "upgrade-insecure-requests; default-src 'self'; font-src 'self' https://fonts.gstatic.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: *; frame-src https://www.youtube.com; media-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.google-analytics.com https://www.googletagmanager.com; child-src 'self' blob:; connect-src 'self' https://material.angular.io https://material.angular.dev https://*.google-analytics.com https://stats.g.doubleclick.net https://api.github.com https://www.googletagmanager.com;" }, "buildTarget": "material-angular-io:build" }, From 362833157870edec15cc565ac6ee8cb9f66911ca Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Thu, 1 May 2025 13:54:28 -0600 Subject: [PATCH 003/145] update the CSP configuration and preview location (#31009) * docs: update the CSP configuration * ci: use the browser directory of the generated documentation app for previews (cherry picked from commit 6bb437b45eb10b772b8d016e81fe9c3a48f9fc3e) --- .github/workflows/docs-preview-build.yml | 2 +- docs/angular.json | 2 +- docs/firebase.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/docs-preview-build.yml b/.github/workflows/docs-preview-build.yml index 24064070160d..0600165b5b6c 100644 --- a/.github/workflows/docs-preview-build.yml +++ b/.github/workflows/docs-preview-build.yml @@ -35,4 +35,4 @@ jobs: workflow-artifact-name: 'docs-preview' pull-number: '${{github.event.pull_request.number}}' artifact-build-revision: '${{github.event.pull_request.head.sha}}' - deploy-directory: './dist/bin/docs/dist' + deploy-directory: './dist/bin/docs/dist/browser' diff --git a/docs/angular.json b/docs/angular.json index 6b4d03015bfc..c8556ab5ce7c 100644 --- a/docs/angular.json +++ b/docs/angular.json @@ -106,7 +106,7 @@ "options": { "headers": { "--NOTE--": "Keep in sync with `firebase.json`", - "Content-Security-Policy": "upgrade-insecure-requests; default-src 'self'; font-src 'self' https://fonts.gstatic.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: *; frame-src https://www.youtube.com; media-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.google-analytics.com https://www.googletagmanager.com; child-src 'self' blob:; connect-src 'self' https://material.angular.io https://material.angular.dev https://*.google-analytics.com https://stats.g.doubleclick.net https://api.github.com https://www.googletagmanager.com;" + "Content-Security-Policy": "upgrade-insecure-requests; default-src 'self'; font-src 'self' https://fonts.gstatic.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: *; frame-src https://www.youtube.com; media-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.google-analytics.com https://www.googletagmanager.com; child-src 'self' blob:; connect-src 'self' https://material.angular.io https://*.angular.dev https://*.google-analytics.com https://stats.g.doubleclick.net https://api.github.com https://www.googletagmanager.com;" }, "buildTarget": "material-angular-io:build" }, diff --git a/docs/firebase.json b/docs/firebase.json index 0da3038f7be3..e7fce0572560 100644 --- a/docs/firebase.json +++ b/docs/firebase.json @@ -45,7 +45,7 @@ { "key": "Content-Security-Policy", // Keep in sync with `angular.json`. - "value": "upgrade-insecure-requests; default-src 'self'; font-src 'self' https://fonts.gstatic.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: *; frame-src https://www.youtube.com; media-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.google-analytics.com https://www.googletagmanager.com; child-src 'self' blob:; connect-src 'self' https://material.angular.dev https://material.angular.io https://*.google-analytics.com https://stats.g.doubleclick.net https://api.github.com https://www.googletagmanager.com;" + "value": "upgrade-insecure-requests; default-src 'self'; font-src 'self' https://fonts.gstatic.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: *; frame-src https://www.youtube.com; media-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.google-analytics.com https://www.googletagmanager.com; child-src 'self' blob:; connect-src 'self' https://*.angular.dev https://material.angular.io https://*.google-analytics.com https://stats.g.doubleclick.net https://api.github.com https://www.googletagmanager.com;" } ] }, From 3ae10e9d610494666b9d97f520267de37758e8ad Mon Sep 17 00:00:00 2001 From: Andrew Seguin Date: Thu, 1 May 2025 21:14:19 -0600 Subject: [PATCH 004/145] docs: rename material.angular.io to material.angular.dev (#30993) # Conflicts: # docs/angular.json # docs/firebase.json (cherry picked from commit 77919725a989bfd0aa097121cad04e9a38dccdd4) --- .git-blame-ignore-revs | 2 +- .github/ISSUE_TEMPLATE/docs.yml | 6 +-- .github/workflows/ci.material-aio.yml | 6 +-- .github/workflows/pr.material-aio.yml | 6 +-- CHANGELOG.md | 4 +- CHANGELOG_ARCHIVE.md | 34 ++++++++--------- CODING_STANDARDS.md | 2 +- README.md | 6 +-- docs/README.md | 20 +++++----- .../app/shared/doc-viewer/doc-viewer.spec.ts | 38 +++++++++---------- docs/src/app/shared/navbar/navbar.ts | 2 +- .../shared/stack-blitz/stack-blitz-writer.ts | 2 +- docs/src/assets/versions.json | 18 ++++----- docs/src/index.html | 16 ++++---- docs/src/robots.txt | 2 +- docs/src/sitemap.xml | 8 ++-- docs/tools/audit-docs.js | 4 +- .../creating-a-custom-form-field-control.md | 2 +- ...-a-custom-stepper-using-the-cdk-stepper.md | 4 +- guides/getting-started.md | 8 ++-- guides/material-2.md | 10 ++--- guides/schematics.md | 4 +- guides/theming.md | 4 +- scripts/deploy/publish-docs-content.sh | 2 +- scripts/docs-deploy/deploy-ci-push.mts | 10 ++--- scripts/docs-deploy/snapshot-deploy.mts | 2 +- scripts/docs-deploy/utils.mts | 8 ++-- src/cdk/menu/menu.md | 2 +- src/cdk/table/table.md | 4 +- src/cdk/testing/test-harnesses.md | 2 +- .../card-media-size-example.html | 8 ++-- .../card-overview/card-overview-example.css | 2 +- .../card-overview/card-overview-example.html | 4 +- .../chips-avatar/chips-avatar-example.html | 6 +-- src/dev-app/chips/chips-demo.html | 4 +- src/dev-app/list/list-demo.html | 4 +- src/material/autocomplete/README.md | 2 +- src/material/badge/badge.md | 2 +- src/material/badge/badge.ts | 6 +-- src/material/bottom-sheet/README.md | 2 +- src/material/button-toggle/README.md | 2 +- src/material/button/button-base.ts | 4 +- src/material/button/button.md | 6 +-- src/material/button/fab.ts | 4 +- src/material/card/README.md | 2 +- src/material/checkbox/README.md | 2 +- src/material/checkbox/checkbox-config.ts | 4 +- src/material/checkbox/checkbox.ts | 4 +- src/material/chips/README.md | 2 +- src/material/chips/chip.ts | 4 +- src/material/core/m2/_typography.scss | 2 +- src/material/core/theming/_theming.scss | 4 +- src/material/datepicker/README.md | 2 +- src/material/datepicker/datepicker-base.ts | 12 +++--- src/material/dialog/README.md | 2 +- src/material/divider/README.md | 2 +- src/material/form-field/README.md | 2 +- src/material/form-field/form-field.md | 8 ++-- src/material/form-field/form-field.ts | 8 ++-- src/material/grid-list/README.md | 2 +- src/material/icon/README.md | 2 +- src/material/icon/icon.ts | 8 ++-- src/material/input/README.md | 2 +- src/material/input/input.md | 14 +++---- src/material/list/README.md | 2 +- src/material/list/list-option.ts | 4 +- src/material/list/selection-list.ts | 4 +- src/material/menu/README.md | 2 +- src/material/paginator/paginator.ts | 4 +- src/material/progress-bar/README.md | 2 +- src/material/progress-bar/progress-bar.ts | 8 ++-- src/material/progress-spinner/README.md | 2 +- .../progress-spinner/progress-spinner.ts | 8 ++-- src/material/radio/README.md | 2 +- src/material/radio/radio.ts | 12 +++--- src/material/schematics/ng-add/schema.json | 8 ++-- .../ng-add/theming/create-custom-theme.ts | 2 +- .../ng-generate/theme-color/README.md | 6 +-- src/material/select/README.md | 2 +- src/material/select/select.md | 10 ++--- src/material/sidenav/README.md | 2 +- src/material/slide-toggle/README.md | 2 +- .../slide-toggle/slide-toggle-config.ts | 4 +- src/material/slide-toggle/slide-toggle.ts | 4 +- src/material/slider/README.md | 2 +- src/material/slider/slider-interface.ts | 2 +- src/material/slider/slider.ts | 4 +- src/material/snack-bar/README.md | 2 +- src/material/stepper/step-header.ts | 4 +- src/material/stepper/stepper.ts | 8 ++-- src/material/table/README.md | 2 +- src/material/table/table.md | 8 ++-- src/material/tabs/README.md | 2 +- src/material/tabs/tab-group.ts | 8 ++-- src/material/tabs/tab-nav-bar/tab-nav-bar.ts | 8 ++-- src/material/toolbar/README.md | 2 +- src/material/toolbar/toolbar.ts | 4 +- src/material/tooltip/README.md | 2 +- tools/dgeni/common/compute-api-url.ts | 6 +-- tools/region-parser/README.md | 2 +- 100 files changed, 269 insertions(+), 269 deletions(-) diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index bcd999bde3be..e30d8f489463 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -1,2 +1,2 @@ -# `material.angular.io/` folder renamed to `docs/` +# `material.angular.dev/` folder renamed to `docs/` cc8d090758b6448a3f745e1faf3e503a293b1757 diff --git a/.github/ISSUE_TEMPLATE/docs.yml b/.github/ISSUE_TEMPLATE/docs.yml index 32f05e124764..2a628c6ebdc1 100644 --- a/.github/ISSUE_TEMPLATE/docs.yml +++ b/.github/ISSUE_TEMPLATE/docs.yml @@ -1,5 +1,5 @@ name: Documentation -description: Suggest an improvement to our documentation at material.angular.io +description: Suggest an improvement to our documentation at material.angular.dev title: 'docs-bug(COMPONENT): TITLE' labels: ['docs', 'needs triage'] body: @@ -8,7 +8,7 @@ body: attributes: label: Documentation Feedback description: | - Provide a brief summary of what you would like to see changed in our documentation at [material.angular.io](https://material.angular.io/). + Provide a brief summary of what you would like to see changed in our documentation at [material.angular.dev](https://material.angular.dev/). Feel free to provide any suggestions of content or examples you’d like us to include. validations: required: true @@ -16,6 +16,6 @@ body: id: affected-documentation-page attributes: label: Affected documentation page - description: Insert a link to the affected page on [material.angular.io](https://material.angular.io/). + description: Insert a link to the affected page on [material.angular.dev](https://material.angular.dev/). validations: required: true diff --git a/.github/workflows/ci.material-aio.yml b/.github/workflows/ci.material-aio.yml index c62ff067985d..bd9efb8a72aa 100644 --- a/.github/workflows/ci.material-aio.yml +++ b/.github/workflows/ci.material-aio.yml @@ -1,4 +1,4 @@ -name: 'CI (material.angular.io)' +name: 'CI (material.angular.dev)' on: push: @@ -49,7 +49,7 @@ jobs: if: always() with: name: test-logs - path: material.angular.io/bazel-testlogs/ + path: material.angular.dev/bazel-testlogs/ retention-days: 14 lighthouse: @@ -70,5 +70,5 @@ jobs: if: always() with: name: lighthouse-logs - path: material.angular.io/bazel-testlogs/ + path: material.angular.dev/bazel-testlogs/ retention-days: 14 diff --git a/.github/workflows/pr.material-aio.yml b/.github/workflows/pr.material-aio.yml index 59b8ee2777a3..c194d2f51f86 100644 --- a/.github/workflows/pr.material-aio.yml +++ b/.github/workflows/pr.material-aio.yml @@ -1,4 +1,4 @@ -name: 'PR (material.angular.io)' +name: 'PR (material.angular.dev)' on: pull_request: @@ -47,7 +47,7 @@ jobs: if: always() with: name: test-logs - path: material.angular.io/bazel-testlogs/ + path: material.angular.dev/bazel-testlogs/ retention-days: 14 lighthouse: @@ -68,5 +68,5 @@ jobs: if: always() with: name: lighthouse-logs - path: material.angular.io/bazel-testlogs/ + path: material.angular.dev/bazel-testlogs/ retention-days: 14 diff --git a/CHANGELOG.md b/CHANGELOG.md index f4828f2f8de5..e74c8c138679 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3324,7 +3324,7 @@ Andy Chrzaszcz, Bobby Galli, Joey Perrott, Kristiyan Kostadinov, Miles Malerba, - `mat-tabs` - The TypeScript API should remain largely unchanged, but the DOM and CSS classes for these components have changed. - See the MDC migration guide for more information about the changes and - how to migrate your app: https://material.angular.io/guide/mdc-migration. + how to migrate your app: https://material.angular.dev/guide/mdc-migration. - Buttons inside the datepicker popup and datepicker toggle now use the MDC-based button implementation. They have different CSS classes and styles, so custom style overrides may need to be updated. @@ -6163,4 +6163,4 @@ _Breaking changes:_ # Changes Prior to 12.0.0 -To view changes that occurred prior to 12.0.0, see [CHANGELOG_ARCHIVE.md](https://github.com/angular/components/blob/main/CHANGELOG_ARCHIVE.md). \ No newline at end of file +To view changes that occurred prior to 12.0.0, see [CHANGELOG_ARCHIVE.md](https://github.com/angular/components/blob/main/CHANGELOG_ARCHIVE.md). diff --git a/CHANGELOG_ARCHIVE.md b/CHANGELOG_ARCHIVE.md index 9de1841eee84..19ab29f157a7 100644 --- a/CHANGELOG_ARCHIVE.md +++ b/CHANGELOG_ARCHIVE.md @@ -1891,8 +1891,8 @@ And the same test with harnesses: ``` Learn more about -[Angular Material's component harnesses](https://material.angular.io/guide/using-component-harnesses) -or [building your own with the CDK](https://v9.material.angular.io/cdk/testing/overview). +[Angular Material's component harnesses](https://material.angular.dev/guide/using-component-harnesses) +or [building your own with the CDK](https://v9.material.angular.dev/cdk/testing/overview). #### New `@angular/google-maps` package! @@ -1911,7 +1911,7 @@ Big thanks to @mbehrlich for contributing this! #### New `cdk/clipboard` subpackage containing helpers for working with the clipboard. This new capability for `@angular/cdk` provides some convenient helpers for dealign with -the clipboard. [See the documentation for more information](https://material.angular.io/cdk/clipboard). +the clipboard. [See the documentation for more information](https://material.angular.dev/cdk/clipboard). Big thanks to @xkxx for contributing this! @@ -3242,8 +3242,8 @@ It was always required, but is now correctly listed in the `package.json`. ### Highlights -* Support for [Drag and Drop](https://material.angular.io/cdk/drag-drop/overview) in `@angular/cdk/drag-drop`. -* Support for [Virtual Scrolling](https://material.angular.io/cdk/scrolling/overview) in `@angular/cdk/scrolling`. +* Support for [Drag and Drop](https://material.angular.dev/cdk/drag-drop/overview) in `@angular/cdk/drag-drop`. +* Support for [Virtual Scrolling](https://material.angular.dev/cdk/scrolling/overview) in `@angular/cdk/scrolling`. * Support for native `` & ` `, - standalone: false, + imports: [MatInputModule], }) class MatInputTextareaWithBindings { rows: number = 4; @@ -2025,7 +2017,7 @@ class MatInputTextareaWithBindings { @Component({ template: ``, - standalone: false, + imports: [MatInputModule], }) class MatInputMissingMatInputTestController {} @@ -2041,7 +2033,7 @@ class MatInputMissingMatInputTestController {} `, - standalone: false, + imports: [MatInputModule, ReactiveFormsModule, FormsModule], }) class MatInputWithFormErrorMessages { @ViewChild('form') form: NgForm; @@ -2064,7 +2056,7 @@ class MatInputWithFormErrorMessages { `, - standalone: false, + imports: [MatInputModule, ReactiveFormsModule], }) class InputInFormGroup { formGroup = new FormGroup({ @@ -2088,7 +2080,7 @@ class InputInFormGroup { `, - standalone: false, + imports: [MatInputModule, ReactiveFormsModule], }) class MatInputWithFormGroupErrorMessages { @ViewChild(FormGroupDirective) formGroupDirective: FormGroupDirective; @@ -2107,7 +2099,7 @@ class MatInputWithFormGroupErrorMessages { favorite `, - standalone: false, + imports: [MatInputModule], }) class MatInputWithPrefixAndSuffix {} @@ -2119,7 +2111,7 @@ class MatInputWithPrefixAndSuffix {} } `, - standalone: false, + imports: [MatInputModule], }) class MatInputWithNgIf { renderInput = true; @@ -2133,7 +2125,7 @@ class MatInputWithNgIf { `, - standalone: false, + imports: [MatInputModule, ReactiveFormsModule], }) class MatInputOnPush { formControl = new FormControl(''); @@ -2146,7 +2138,7 @@ class MatInputOnPush { `, - standalone: false, + imports: [MatInputModule], }) class MatInputWithLabel {} @@ -2157,7 +2149,7 @@ class MatInputWithLabel {} `, - standalone: false, + imports: [MatInputModule], }) class MatInputWithLabelAndPlaceholder { floatLabel: FloatLabelType; @@ -2171,7 +2163,7 @@ class MatInputWithLabelAndPlaceholder { `, - standalone: false, + imports: [MatInputModule], }) class MatInputWithAppearance { @ViewChild(MatFormField) formField: MatFormField; @@ -2185,7 +2177,7 @@ class MatInputWithAppearance { `, - standalone: false, + imports: [MatInputModule], }) class MatInputWithSubscriptSizing { @ViewChild(MatFormField) formField: MatFormField; @@ -2198,7 +2190,7 @@ class MatInputWithSubscriptSizing { `, - standalone: false, + imports: [MatInputModule], }) class MatInputWithoutPlaceholder {} @@ -2213,7 +2205,7 @@ class MatInputWithoutPlaceholder {} `, - standalone: false, + imports: [MatInputModule], }) class MatInputSelect { disabled: boolean; @@ -2231,7 +2223,7 @@ class MatInputSelect { `, - standalone: false, + imports: [MatInputModule], }) class MatInputSelectWithNoLabelNoValue {} @@ -2246,7 +2238,7 @@ class MatInputSelectWithNoLabelNoValue {} `, - standalone: false, + imports: [MatInputModule], }) class MatInputSelectWithLabel {} @@ -2261,29 +2253,10 @@ class MatInputSelectWithLabel {} `, - standalone: false, + imports: [MatInputModule], }) class MatInputSelectWithInnerHtml {} -@Component({ - template: ` - - - `, - standalone: false, -}) -class MatInputWithCustomAccessor {} - -@Component({ - template: ` - - - `, - standalone: false, -}) -class MatInputSelectWithoutOptions {} - /** Custom component that never has a value. Used for testing the `MAT_INPUT_VALUE_ACCESSOR`. */ @Directive({ selector: 'input[customInputAccessor]', @@ -2293,7 +2266,6 @@ class MatInputSelectWithoutOptions {} useExisting: CustomMatInputAccessor, }, ], - standalone: false, }) class CustomMatInputAccessor { get value() { @@ -2303,12 +2275,31 @@ class CustomMatInputAccessor { private _value = null; } +@Component({ + template: ` + + + `, + imports: [MatInputModule, CustomMatInputAccessor], +}) +class MatInputWithCustomAccessor {} + +@Component({ + template: ` + + + `, + imports: [MatInputModule], +}) +class MatInputSelectWithoutOptions {} + @Component({ template: ` `, - standalone: false, + imports: [MatInputModule], }) class MatInputWithColor { color: ThemePalette; @@ -2322,7 +2313,7 @@ class MatInputWithColor { `, - standalone: false, + imports: [MatInputModule], }) class MatInputInsideOutsideFormField {} @@ -2332,7 +2323,7 @@ class MatInputInsideOutsideFormField {} Hello `, - standalone: false, + imports: [MatInputModule, ReactiveFormsModule], }) class MatInputWithRequiredFormControl { formControl = new FormControl('', [Validators.required]); @@ -2344,7 +2335,7 @@ class MatInputWithRequiredFormControl { `, - standalone: false, + imports: [MatInputModule], }) class MatInputSimple {} @@ -2358,7 +2349,7 @@ class MatInputSimple {} icon-suffix `, - standalone: false, + imports: [MatInputModule], }) class InputWithNgContainerPrefixAndSuffix {} @@ -2368,7 +2359,7 @@ class InputWithNgContainerPrefixAndSuffix {} Hello `, - standalone: false, + imports: [MatInputModule, ReactiveFormsModule], }) class MatInputWithRequiredAssignableFormControl { formControl = new FormControl('', [Validators.required]); diff --git a/src/material/menu/menu.spec.ts b/src/material/menu/menu.spec.ts index 231f2a5e949f..b2f150e3d139 100644 --- a/src/material/menu/menu.spec.ts +++ b/src/material/menu/menu.spec.ts @@ -1,5 +1,5 @@ import {FocusMonitor} from '@angular/cdk/a11y'; -import {Direction} from '@angular/cdk/bidi'; +import {Direction, Directionality} from '@angular/cdk/bidi'; import { DOWN_ARROW, END, @@ -23,11 +23,9 @@ import { OnDestroy, Output, provideCheckNoChangesConfig, - Provider, QueryList, signal, TemplateRef, - Type, ViewChild, ViewChildren, } from '@angular/core'; @@ -50,6 +48,7 @@ import {MatMenu, MatMenuItem, MatMenuModule} from './index'; import { MAT_MENU_DEFAULT_OPTIONS, MAT_MENU_SCROLL_STRATEGY, + MatMenuContent, MatMenuPanel, MatMenuTrigger, MenuPositionX, @@ -60,35 +59,22 @@ const MENU_PANEL_TOP_PADDING = 8; describe('MatMenu', () => { let overlayContainerElement: HTMLElement; - let focusMonitor: FocusMonitor; - let viewportRuler: ViewportRuler; - - function createComponent( - component: Type, - providers: Provider[] = [], - declarations: any[] = [], - imports: Type[] = [], - ): ComponentFixture { + + beforeEach(() => { TestBed.configureTestingModule({ - providers: [ - provideCheckNoChangesConfig({exhaustive: false}), - ...providers, - {provide: MATERIAL_ANIMATIONS, useValue: {animationsDisabled: true}}, - ], - imports: [MatMenuModule, ...imports], - declarations: [component, ...declarations], + providers: [{provide: MATERIAL_ANIMATIONS, useValue: {animationsDisabled: true}}], }); overlayContainerElement = TestBed.inject(OverlayContainer).getContainerElement(); - focusMonitor = TestBed.inject(FocusMonitor); - viewportRuler = TestBed.inject(ViewportRuler); - const fixture = TestBed.createComponent(component); window.scroll(0, 0); - return fixture; - } + }); + + afterEach(() => { + window.scroll(0, 0); + }); it('should aria-controls the menu panel', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); fixture.detectChanges(); @@ -99,7 +85,7 @@ describe('MatMenu', () => { })); it('should set aria-haspopup based on whether a menu is assigned', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); const triggerElement = fixture.componentInstance.triggerEl.nativeElement; @@ -113,7 +99,7 @@ describe('MatMenu', () => { })); it('should open the menu as an idempotent operation', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); expect(overlayContainerElement.textContent).toBe(''); expect(() => { @@ -128,7 +114,7 @@ describe('MatMenu', () => { })); it('should close the menu when a click occurs outside the menu', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); @@ -141,7 +127,7 @@ describe('MatMenu', () => { })); it('should be able to remove the backdrop', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); fixture.componentInstance.menu.hasBackdrop = false; @@ -153,7 +139,7 @@ describe('MatMenu', () => { })); it('should set the correct aria-haspopup value on the trigger element', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); const triggerElement = fixture.componentInstance.triggerEl.nativeElement; @@ -161,7 +147,7 @@ describe('MatMenu', () => { })); it('should be able to remove the backdrop on repeat openings', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); @@ -188,7 +174,7 @@ describe('MatMenu', () => { })); it('should restore focus to the trigger when the menu was opened by keyboard', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); const triggerEl = fixture.componentInstance.triggerEl.nativeElement; @@ -206,7 +192,7 @@ describe('MatMenu', () => { })); it('should not restore focus to the trigger if focus restoration is disabled', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); const triggerEl = fixture.componentInstance.triggerEl.nativeElement; @@ -228,7 +214,7 @@ describe('MatMenu', () => { })); it('should be able to move focus in the closed event', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); const instance = fixture.componentInstance; fixture.detectChanges(); const triggerEl = instance.triggerEl.nativeElement; @@ -250,7 +236,7 @@ describe('MatMenu', () => { })); it('should restore focus to the trigger immediately once the menu is closed', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); const triggerEl = fixture.componentInstance.triggerEl.nativeElement; @@ -273,7 +259,9 @@ describe('MatMenu', () => { it('should move focus to another item if the active item is destroyed', fakeAsync(() => { // TODO(crisbeto): figure out why NoopAnimationsModule is necessary // here and our token isn't enough. Likely indicates an issue. - const fixture = createComponent(MenuWithRepeatedItems, [], [FakeIcon], [NoopAnimationsModule]); + TestBed.resetTestingModule().configureTestingModule({imports: [NoopAnimationsModule]}); + overlayContainerElement = TestBed.inject(OverlayContainer).getContainerElement(); + const fixture = TestBed.createComponent(MenuWithRepeatedItems); fixture.detectChanges(); const triggerEl = fixture.componentInstance.triggerEl.nativeElement; @@ -295,7 +283,7 @@ describe('MatMenu', () => { })); it('should be able to set a custom class on the backdrop', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.componentInstance.backdropClass = 'custom-backdrop'; fixture.detectChanges(); @@ -309,11 +297,16 @@ describe('MatMenu', () => { })); it('should be able to set a custom class on the overlay panel', fakeAsync(() => { - const optionsProvider = { - provide: MAT_MENU_DEFAULT_OPTIONS, - useValue: {overlayPanelClass: 'custom-panel-class'}, - }; - const fixture = createComponent(SimpleMenu, [optionsProvider], [FakeIcon]); + TestBed.resetTestingModule().configureTestingModule({ + providers: [ + { + provide: MAT_MENU_DEFAULT_OPTIONS, + useValue: {overlayPanelClass: 'custom-panel-class'}, + }, + ], + }); + overlayContainerElement = TestBed.inject(OverlayContainer).getContainerElement(); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); @@ -326,12 +319,16 @@ describe('MatMenu', () => { })); it('should be able to set a custom classes on the overlay panel', fakeAsync(() => { - const optionsProvider = { - provide: MAT_MENU_DEFAULT_OPTIONS, - useValue: {overlayPanelClass: ['custom-panel-class-1', 'custom-panel-class-2']}, - }; - const fixture = createComponent(SimpleMenu, [optionsProvider], [FakeIcon]); - + TestBed.resetTestingModule().configureTestingModule({ + providers: [ + { + provide: MAT_MENU_DEFAULT_OPTIONS, + useValue: {overlayPanelClass: ['custom-panel-class-1', 'custom-panel-class-2']}, + }, + ], + }); + overlayContainerElement = TestBed.inject(OverlayContainer).getContainerElement(); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); fixture.detectChanges(); @@ -344,7 +341,7 @@ describe('MatMenu', () => { })); it('should restore focus to the root trigger when the menu was opened by mouse', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); const triggerEl = fixture.componentInstance.triggerEl.nativeElement; @@ -362,7 +359,7 @@ describe('MatMenu', () => { })); it('should restore focus to the root trigger when the menu was opened by touch', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); const triggerEl = fixture.componentInstance.triggerEl.nativeElement; @@ -380,7 +377,7 @@ describe('MatMenu', () => { })); it('should scroll the panel to the top on open, when it is scrollable', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); // Add 50 items to make the menu scrollable @@ -400,7 +397,8 @@ describe('MatMenu', () => { })); it('should set the proper focus origin when restoring focus after opening by keyboard', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const focusMonitor = TestBed.inject(FocusMonitor); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); const triggerEl = fixture.componentInstance.triggerEl.nativeElement; @@ -418,7 +416,8 @@ describe('MatMenu', () => { })); it('should set the proper focus origin when restoring focus after opening by mouse', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const focusMonitor = TestBed.inject(FocusMonitor); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); const triggerEl = fixture.componentInstance.triggerEl.nativeElement; @@ -437,7 +436,8 @@ describe('MatMenu', () => { })); it('should set proper focus origin when right clicking on trigger, before opening by keyboard', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const focusMonitor = TestBed.inject(FocusMonitor); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); const triggerEl = fixture.componentInstance.triggerEl.nativeElement; @@ -461,7 +461,8 @@ describe('MatMenu', () => { })); it('should set the proper focus origin when restoring focus after opening by touch', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const focusMonitor = TestBed.inject(FocusMonitor); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); const triggerEl = fixture.componentInstance.triggerEl.nativeElement; @@ -481,7 +482,7 @@ describe('MatMenu', () => { })); it('should close the menu when pressing ESCAPE', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); @@ -496,7 +497,7 @@ describe('MatMenu', () => { })); it('should not close the menu when pressing ESCAPE with a modifier', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); @@ -512,7 +513,7 @@ describe('MatMenu', () => { })); it('should open a custom menu', () => { - const fixture = createComponent(CustomMenu, [], [CustomMenuPanel]); + const fixture = TestBed.createComponent(CustomMenu); fixture.detectChanges(); expect(overlayContainerElement.textContent).toBe(''); expect(() => { @@ -525,8 +526,11 @@ describe('MatMenu', () => { }); it('should set the panel direction based on the trigger direction', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [provideFakeDirectionality('rtl')], [FakeIcon]); - + TestBed.resetTestingModule().configureTestingModule({ + providers: [provideFakeDirectionality('rtl')], + }); + overlayContainerElement = TestBed.inject(OverlayContainer).getContainerElement(); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); fixture.detectChanges(); @@ -540,8 +544,11 @@ describe('MatMenu', () => { it('should update the panel direction if the trigger direction changes', fakeAsync(() => { const dir = signal('rtl'); - const fixture = createComponent(SimpleMenu, [provideFakeDirectionality(dir)], [FakeIcon]); - + TestBed.resetTestingModule().configureTestingModule({ + providers: [provideFakeDirectionality(dir)], + }); + const fixture = TestBed.createComponent(SimpleMenu); + overlayContainerElement = TestBed.inject(OverlayContainer).getContainerElement(); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); fixture.detectChanges(); @@ -568,7 +575,7 @@ describe('MatMenu', () => { })); it('should transfer any custom classes from the host to the overlay', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.componentInstance.panelClass = 'custom-one custom-two'; fixture.detectChanges(); @@ -587,7 +594,7 @@ describe('MatMenu', () => { })); it('should set the "menu" role on the overlay panel', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); fixture.detectChanges(); @@ -602,7 +609,7 @@ describe('MatMenu', () => { })); it('should forward ARIA attributes to the menu panel', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); const instance = fixture.componentInstance; fixture.detectChanges(); instance.trigger.openMenu(); @@ -637,7 +644,7 @@ describe('MatMenu', () => { })); it('should set the "menuitem" role on the items by default', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); fixture.detectChanges(); @@ -650,7 +657,7 @@ describe('MatMenu', () => { })); it('should be able to set an alternate role on the menu items', fakeAsync(() => { - const fixture = createComponent(MenuWithCheckboxItems); + const fixture = TestBed.createComponent(MenuWithCheckboxItems); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); fixture.detectChanges(); @@ -663,7 +670,7 @@ describe('MatMenu', () => { })); it('should not change focus origin if origin not specified for menu items', fakeAsync(() => { - const fixture = createComponent(MenuWithCheckboxItems); + const fixture = TestBed.createComponent(MenuWithCheckboxItems); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); fixture.detectChanges(); @@ -687,32 +694,32 @@ describe('MatMenu', () => { })); it('should not throw an error on destroy', () => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); expect(fixture.destroy.bind(fixture)).not.toThrow(); }); it('should be able to extract the menu item text', () => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); expect(fixture.componentInstance.items.first.getLabel()).toBe('Item'); }); it('should filter out icon nodes when figuring out the label', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); const items = fixture.componentInstance.items.toArray(); expect(items[2].getLabel()).toBe('Item with an icon'); })); it('should get the label of an item if the text is not in a direct descendant node', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); const items = fixture.componentInstance.items.toArray(); expect(items[3].getLabel()).toBe('Item with text inside span'); })); it('should set the proper focus origin when opening by mouse', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); spyOn(fixture.componentInstance.items.first, 'focus').and.callThrough(); @@ -727,7 +734,7 @@ describe('MatMenu', () => { })); it('should set the proper focus origin when opening by touch', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); spyOn(fixture.componentInstance.items.first, 'focus').and.callThrough(); @@ -742,7 +749,7 @@ describe('MatMenu', () => { })); it('should set the proper origin when calling focusFirstItem after the opening sequence has started', () => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); spyOn(fixture.componentInstance.items.first, 'focus').and.callThrough(); @@ -756,17 +763,18 @@ describe('MatMenu', () => { it('should close the menu when using the CloseScrollStrategy', fakeAsync(() => { const scrolledSubject = new Subject(); - const fixture = createComponent( - SimpleMenu, - [ + TestBed.resetTestingModule().configureTestingModule({ + providers: [ {provide: ScrollDispatcher, useFactory: () => ({scrolled: () => scrolledSubject})}, { provide: MAT_MENU_SCROLL_STRATEGY, useFactory: () => () => createCloseScrollStrategy(TestBed.inject(Injector)), }, ], - [FakeIcon], - ); + }); + overlayContainerElement = TestBed.inject(OverlayContainer).getContainerElement(); + + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); const trigger = fixture.componentInstance.trigger; @@ -782,7 +790,7 @@ describe('MatMenu', () => { })); it('should switch to keyboard focus when using the keyboard after opening using the mouse', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); fixture.componentInstance.triggerEl.nativeElement.click(); @@ -812,7 +820,7 @@ describe('MatMenu', () => { })); it('should set the keyboard focus origin when opened using the keyboard', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); const trigger = fixture.componentInstance.triggerEl.nativeElement; @@ -834,7 +842,7 @@ describe('MatMenu', () => { })); it('should toggle the aria-expanded attribute on the trigger', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); const triggerEl = fixture.componentInstance.triggerEl.nativeElement; @@ -854,7 +862,7 @@ describe('MatMenu', () => { })); it('should toggle aria-expanded on the trigger in an OnPush component', fakeAsync(() => { - const fixture = createComponent(SimpleMenuOnPush, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenuOnPush); fixture.detectChanges(); const triggerEl = fixture.componentInstance.triggerEl.nativeElement; @@ -875,14 +883,14 @@ describe('MatMenu', () => { it('should throw if assigning a menu that contains the trigger', fakeAsync(() => { expect(() => { - const fixture = createComponent(InvalidRecursiveMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(InvalidRecursiveMenu); fixture.detectChanges(); tick(500); }).toThrowError(/menu cannot contain its own trigger/); })); it('should be able to swap out a menu after the first time it is opened', fakeAsync(() => { - const fixture = createComponent(DynamicPanelMenu); + const fixture = TestBed.createComponent(DynamicPanelMenu); fixture.detectChanges(); expect(overlayContainerElement.textContent).toBe(''); @@ -915,7 +923,7 @@ describe('MatMenu', () => { })); it('should focus the first item when pressing home', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); @@ -943,7 +951,7 @@ describe('MatMenu', () => { })); it('should not focus the first item when pressing home with a modifier key', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); @@ -970,7 +978,7 @@ describe('MatMenu', () => { })); it('should focus the last item when pressing end', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); @@ -991,7 +999,7 @@ describe('MatMenu', () => { })); it('should not focus the last item when pressing end with a modifier key', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); @@ -1014,7 +1022,7 @@ describe('MatMenu', () => { })); it('should respect the DOM order, rather than insertion order, when moving focus using the arrow keys', fakeAsync(() => { - let fixture = createComponent(SimpleMenuWithRepeater); + let fixture = TestBed.createComponent(SimpleMenuWithRepeater); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); @@ -1043,7 +1051,7 @@ describe('MatMenu', () => { })); it('should sync the focus order when an item is focused programmatically', fakeAsync(() => { - const fixture = createComponent(SimpleMenuWithRepeater); + const fixture = TestBed.createComponent(SimpleMenuWithRepeater); // Add some more items to work with. for (let i = 0; i < 5; i++) { @@ -1076,7 +1084,7 @@ describe('MatMenu', () => { })); it('should open submenus when the menu is inside an OnPush component', fakeAsync(() => { - const fixture = createComponent(LazyMenuWithOnPush); + const fixture = TestBed.createComponent(LazyMenuWithOnPush); fixture.detectChanges(); // Open the top-level menu @@ -1096,7 +1104,7 @@ describe('MatMenu', () => { })); it('should focus the menu panel if all items are disabled', fakeAsync(() => { - const fixture = createComponent(SimpleMenuWithRepeater, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenuWithRepeater); fixture.componentInstance.items.forEach(item => (item.disabled = true)); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); @@ -1109,7 +1117,7 @@ describe('MatMenu', () => { })); it('should focus the menu panel if all items are disabled inside lazy content', fakeAsync(() => { - const fixture = createComponent(SimpleMenuWithRepeaterInLazyContent, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenuWithRepeaterInLazyContent); fixture.componentInstance.items.forEach(item => (item.disabled = true)); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); @@ -1122,13 +1130,13 @@ describe('MatMenu', () => { })); it('should clear the static aria-label from the menu host', fakeAsync(() => { - const fixture = createComponent(StaticAriaLabelMenu); + const fixture = TestBed.createComponent(StaticAriaLabelMenu); fixture.detectChanges(); expect(fixture.nativeElement.querySelector('mat-menu').hasAttribute('aria-label')).toBe(false); })); it('should clear the static aria-labelledby from the menu host', fakeAsync(() => { - const fixture = createComponent(StaticAriaLabelledByMenu); + const fixture = TestBed.createComponent(StaticAriaLabelledByMenu); fixture.detectChanges(); expect(fixture.nativeElement.querySelector('mat-menu').hasAttribute('aria-labelledby')).toBe( false, @@ -1136,7 +1144,7 @@ describe('MatMenu', () => { })); it('should clear the static aria-describedby from the menu host', fakeAsync(() => { - const fixture = createComponent(StaticAriaDescribedbyMenu); + const fixture = TestBed.createComponent(StaticAriaDescribedbyMenu); fixture.detectChanges(); expect(fixture.nativeElement.querySelector('mat-menu').hasAttribute('aria-describedby')).toBe( false, @@ -1144,7 +1152,7 @@ describe('MatMenu', () => { })); it('should be able to move focus inside the `open` event', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); fixture.componentInstance.trigger.menuOpened.subscribe(() => { @@ -1159,7 +1167,7 @@ describe('MatMenu', () => { })); it('should default to the "below" and "after" positions', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); fixture.detectChanges(); @@ -1171,7 +1179,8 @@ describe('MatMenu', () => { })); it('should keep the panel in the viewport when more items are added while open', () => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const viewportRuler = TestBed.inject(ViewportRuler); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); const triggerEl = fixture.componentInstance.triggerEl.nativeElement; @@ -1195,8 +1204,7 @@ describe('MatMenu', () => { describe('lazy rendering', () => { it('should be able to render the menu content lazily', fakeAsync(() => { - const fixture = createComponent(SimpleLazyMenu); - + const fixture = TestBed.createComponent(SimpleLazyMenu); fixture.detectChanges(); fixture.componentInstance.triggerEl.nativeElement.click(); fixture.detectChanges(); @@ -1214,27 +1222,16 @@ describe('MatMenu', () => { })); it('should detach the lazy content when the menu is closed', fakeAsync(() => { - let destroyCount = 0; - - // Note: for some reason doing `spyOn(item, 'ngOnDestroy')` doesn't work, even though a - // `console.log` shows that the `ngOnDestroy` gets called. We work around it with a custom - // directive that increments a counter. - @Directive({selector: '[mat-menu-item]', standalone: false}) - class DestroyChecker implements OnDestroy { - ngOnDestroy(): void { - destroyCount++; - } - } - - const fixture = createComponent(SimpleLazyMenu, undefined, [DestroyChecker]); + const fixture = TestBed.createComponent(SimpleLazyMenu); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); fixture.detectChanges(); tick(500); fixture.detectChanges(); + const checkers = fixture.componentInstance.destroyCheckers.toArray(); expect(fixture.componentInstance.items.length).toBe(2); - expect(destroyCount).toBe(0); + expect(checkers.map(d => d.destroyed)).toEqual([false, false]); fixture.componentInstance.trigger.closeMenu(); fixture.detectChanges(); @@ -1244,11 +1241,13 @@ describe('MatMenu', () => { expect(fixture.componentInstance.items.length) .withContext('Expected items to be removed from query list') .toBe(0); - expect(destroyCount).withContext('Expected ngOnDestroy to have been called').toBe(2); + expect(checkers.map(d => d.destroyed)) + .withContext('Expected ngOnDestroy to have been called') + .toEqual([true, true]); })); it('should focus the first menu item when opening a lazy menu via keyboard', () => { - const fixture = createComponent(SimpleLazyMenu); + const fixture = TestBed.createComponent(SimpleLazyMenu); fixture.detectChanges(); // A click without a mousedown before it is considered a keyboard open. @@ -1261,8 +1260,7 @@ describe('MatMenu', () => { }); it('should be able to open the same menu with a different context', fakeAsync(() => { - const fixture = createComponent(LazyMenuWithContext); - + const fixture = TestBed.createComponent(LazyMenuWithContext); fixture.detectChanges(); fixture.componentInstance.triggerOne.openMenu(); fixture.detectChanges(); @@ -1290,7 +1288,7 @@ describe('MatMenu', () => { let trigger: HTMLElement; beforeEach(fakeAsync(() => { - fixture = createComponent(PositionedMenu); + fixture = TestBed.createComponent(PositionedMenu); fixture.detectChanges(); trigger = fixture.componentInstance.triggerEl.nativeElement; @@ -1405,7 +1403,7 @@ describe('MatMenu', () => { describe('fallback positions', () => { it('should fall back to "before" mode if "after" mode would not fit on screen', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); const trigger = fixture.componentInstance.triggerEl.nativeElement; @@ -1439,7 +1437,7 @@ describe('MatMenu', () => { })); it('should fall back to "above" mode if "below" mode would not fit on screen', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); const trigger = fixture.componentInstance.triggerEl.nativeElement; @@ -1467,7 +1465,7 @@ describe('MatMenu', () => { })); it('should re-position menu on both axes if both defaults would not fit', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); const trigger = fixture.componentInstance.triggerEl.nativeElement; @@ -1496,7 +1494,7 @@ describe('MatMenu', () => { })); it('should re-position a menu with custom position set', fakeAsync(() => { - const fixture = createComponent(PositionedMenu); + const fixture = TestBed.createComponent(PositionedMenu); fixture.detectChanges(); const trigger = fixture.componentInstance.triggerEl.nativeElement; @@ -1545,7 +1543,7 @@ describe('MatMenu', () => { readonly trigger: HTMLElement; constructor(ctor: {new (): T}, inputs: {[key: string]: any} = {}) { - this.fixture = createComponent(ctor); + this.fixture = TestBed.createComponent(ctor); Object.keys(inputs).forEach( key => ((this.fixture.componentInstance as any)[key] = inputs[key]), ); @@ -1636,7 +1634,7 @@ describe('MatMenu', () => { describe('animations', () => { it('should enable ripples on items by default', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); @@ -1650,7 +1648,7 @@ describe('MatMenu', () => { })); it('should disable ripples on disabled items', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); @@ -1664,7 +1662,7 @@ describe('MatMenu', () => { })); it('should disable ripples if disableRipple is set', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); @@ -1683,7 +1681,7 @@ describe('MatMenu', () => { let fixture: ComponentFixture; beforeEach(fakeAsync(() => { - fixture = createComponent(SimpleMenu, [], [FakeIcon]); + fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); fixture.detectChanges(); @@ -1740,23 +1738,37 @@ describe('MatMenu', () => { let fixture: ComponentFixture; let instance: NestedMenu; let overlay: HTMLElement; - let compileTestComponent = (direction: Direction = 'ltr') => { - fixture = createComponent(NestedMenu, [provideFakeDirectionality(direction)]); - + let direction: Direction; + + beforeEach(() => { + direction = 'ltr'; + TestBed.resetTestingModule().configureTestingModule({ + providers: [ + provideCheckNoChangesConfig({exhaustive: false}), + { + provide: Directionality, + useValue: { + get value() { + return direction; + }, + }, + }, + ], + }); + overlayContainerElement = TestBed.inject(OverlayContainer).getContainerElement(); + fixture = TestBed.createComponent(NestedMenu); fixture.detectChanges(); instance = fixture.componentInstance; overlay = overlayContainerElement; - }; + }); it('should set the `triggersSubmenu` flags on the triggers', fakeAsync(() => { - compileTestComponent(); expect(instance.rootTrigger.triggersSubmenu()).toBe(false); expect(instance.levelOneTrigger.triggersSubmenu()).toBe(true); expect(instance.levelTwoTrigger.triggersSubmenu()).toBe(true); })); it('should set the `parentMenu` on the sub-menu instances', fakeAsync(() => { - compileTestComponent(); instance.rootTriggerEl.nativeElement.click(); fixture.detectChanges(); tick(500); @@ -1775,7 +1787,7 @@ describe('MatMenu', () => { })); it('should pass the layout direction the nested menus', fakeAsync(() => { - compileTestComponent('rtl'); + direction = 'rtl'; instance.rootTriggerEl.nativeElement.click(); fixture.detectChanges(); @@ -1793,7 +1805,6 @@ describe('MatMenu', () => { })); it('should emit an event when the hover state of the menu items changes', fakeAsync(() => { - compileTestComponent(); instance.rootTrigger.openMenu(); fixture.detectChanges(); tick(500); @@ -1818,7 +1829,6 @@ describe('MatMenu', () => { })); it('should toggle a nested menu when its trigger is hovered', fakeAsync(() => { - compileTestComponent(); instance.rootTriggerEl.nativeElement.click(); fixture.detectChanges(); expect(overlay.querySelectorAll('.mat-mdc-menu-panel').length) @@ -1854,7 +1864,6 @@ describe('MatMenu', () => { })); it('should close all the open sub-menus when the hover state is changed at the root', fakeAsync(() => { - compileTestComponent(); instance.rootTriggerEl.nativeElement.click(); fixture.detectChanges(); @@ -1884,7 +1893,6 @@ describe('MatMenu', () => { })); it('should close submenu when hovering over disabled sibling item', fakeAsync(() => { - compileTestComponent(); instance.rootTriggerEl.nativeElement.click(); fixture.detectChanges(); tick(500); @@ -1914,7 +1922,6 @@ describe('MatMenu', () => { })); it('should not open submenu when hovering over disabled trigger', fakeAsync(() => { - compileTestComponent(); instance.rootTriggerEl.nativeElement.click(); fixture.detectChanges(); tick(500); @@ -1940,7 +1947,6 @@ describe('MatMenu', () => { })); it('should open a nested menu when its trigger is clicked', fakeAsync(() => { - compileTestComponent(); instance.rootTriggerEl.nativeElement.click(); fixture.detectChanges(); tick(500); @@ -1965,7 +1971,6 @@ describe('MatMenu', () => { })); it('should open and close a nested menu with arrow keys in ltr', fakeAsync(() => { - compileTestComponent(); instance.rootTriggerEl.nativeElement.click(); fixture.detectChanges(); expect(overlay.querySelectorAll('.mat-mdc-menu-panel').length) @@ -1988,7 +1993,7 @@ describe('MatMenu', () => { })); it('should open and close a nested menu with the arrow keys in rtl', fakeAsync(() => { - compileTestComponent('rtl'); + direction = 'rtl'; instance.rootTriggerEl.nativeElement.click(); fixture.detectChanges(); expect(overlay.querySelectorAll('.mat-mdc-menu-panel').length) @@ -2011,7 +2016,6 @@ describe('MatMenu', () => { })); it('should not do anything with the arrow keys for a top-level menu', fakeAsync(() => { - compileTestComponent(); instance.rootTriggerEl.nativeElement.click(); fixture.detectChanges(); tick(500); @@ -2034,7 +2038,6 @@ describe('MatMenu', () => { })); it('should close all of the menus when the backdrop is clicked', fakeAsync(() => { - compileTestComponent(); instance.rootTriggerEl.nativeElement.click(); fixture.detectChanges(); tick(500); @@ -2067,7 +2070,6 @@ describe('MatMenu', () => { })); it('should shift focus between the sub-menus', fakeAsync(() => { - compileTestComponent(); instance.rootTrigger.openMenu(); fixture.detectChanges(); tick(500); @@ -2110,7 +2112,6 @@ describe('MatMenu', () => { })); it('should restore focus to a nested trigger when navigating via the keyboard', fakeAsync(() => { - compileTestComponent(); instance.rootTriggerEl.nativeElement.click(); fixture.detectChanges(); @@ -2131,7 +2132,6 @@ describe('MatMenu', () => { })); it('should position the sub-menu to the right edge of the trigger in ltr', fakeAsync(() => { - compileTestComponent(); instance.rootTriggerEl.nativeElement.style.position = 'fixed'; instance.rootTriggerEl.nativeElement.style.left = '50px'; instance.rootTriggerEl.nativeElement.style.top = '200px'; @@ -2151,7 +2151,6 @@ describe('MatMenu', () => { })); it('should fall back to aligning to the left edge of the trigger in ltr', fakeAsync(() => { - compileTestComponent(); instance.rootTriggerEl.nativeElement.style.position = 'fixed'; instance.rootTriggerEl.nativeElement.style.right = '10px'; instance.rootTriggerEl.nativeElement.style.top = '200px'; @@ -2171,7 +2170,7 @@ describe('MatMenu', () => { })); it('should position the sub-menu to the left edge of the trigger in rtl', fakeAsync(() => { - compileTestComponent('rtl'); + direction = 'rtl'; instance.rootTriggerEl.nativeElement.style.position = 'fixed'; instance.rootTriggerEl.nativeElement.style.left = '50%'; instance.rootTriggerEl.nativeElement.style.top = '200px'; @@ -2191,7 +2190,7 @@ describe('MatMenu', () => { })); it('should fall back to aligning to the right edge of the trigger in rtl', fakeAsync(() => { - compileTestComponent('rtl'); + direction = 'rtl'; instance.rootTriggerEl.nativeElement.style.position = 'fixed'; instance.rootTriggerEl.nativeElement.style.left = '10px'; instance.rootTriggerEl.nativeElement.style.top = '200px'; @@ -2211,7 +2210,6 @@ describe('MatMenu', () => { })); it('should account for custom padding when offsetting the sub-menu', () => { - compileTestComponent(); instance.rootTriggerEl.nativeElement.style.position = 'fixed'; instance.rootTriggerEl.nativeElement.style.left = '10px'; instance.rootTriggerEl.nativeElement.style.top = '200px'; @@ -2231,7 +2229,6 @@ describe('MatMenu', () => { }); it('should close all of the menus when an item is clicked', fakeAsync(() => { - compileTestComponent(); instance.rootTriggerEl.nativeElement.click(); fixture.detectChanges(); @@ -2255,7 +2252,6 @@ describe('MatMenu', () => { })); it('should close all of the menus when the user tabs away', fakeAsync(() => { - compileTestComponent(); instance.rootTriggerEl.nativeElement.click(); fixture.detectChanges(); @@ -2279,7 +2275,6 @@ describe('MatMenu', () => { })); it('should set a class on the menu items that trigger a sub-menu', fakeAsync(() => { - compileTestComponent(); instance.rootTrigger.openMenu(); fixture.detectChanges(); tick(500); @@ -2299,8 +2294,6 @@ describe('MatMenu', () => { })); it('should not change focus origin if origin not specified for trigger', fakeAsync(() => { - compileTestComponent(); - instance.levelOneTrigger.openMenu(); fixture.detectChanges(); tick(500); @@ -2318,7 +2311,6 @@ describe('MatMenu', () => { })); it('should close all of the menus when the root is closed programmatically', fakeAsync(() => { - compileTestComponent(); instance.rootTrigger.openMenu(); fixture.detectChanges(); @@ -2342,7 +2334,6 @@ describe('MatMenu', () => { })); it('should toggle a nested menu when its trigger is added after init', fakeAsync(() => { - compileTestComponent(); instance.rootTriggerEl.nativeElement.click(); fixture.detectChanges(); tick(500); @@ -2371,7 +2362,6 @@ describe('MatMenu', () => { })); it('should prevent the default mousedown action if the menu item opens a sub-menu', fakeAsync(() => { - compileTestComponent(); instance.rootTrigger.openMenu(); fixture.detectChanges(); tick(500); @@ -2388,7 +2378,7 @@ describe('MatMenu', () => { })); it('should handle the items being rendered in a repeater', fakeAsync(() => { - const repeaterFixture = createComponent(NestedMenuRepeater); + const repeaterFixture = TestBed.createComponent(NestedMenuRepeater); overlay = overlayContainerElement; expect(() => repeaterFixture.detectChanges()).not.toThrow(); @@ -2409,7 +2399,7 @@ describe('MatMenu', () => { })); it('should be able to trigger the same nested menu from different triggers', fakeAsync(() => { - const repeaterFixture = createComponent(NestedMenuRepeater); + const repeaterFixture = TestBed.createComponent(NestedMenuRepeater); overlay = overlayContainerElement; repeaterFixture.detectChanges(); @@ -2439,7 +2429,7 @@ describe('MatMenu', () => { })); it('should close the initial menu if the user moves away while animating', fakeAsync(() => { - const repeaterFixture = createComponent(NestedMenuRepeater); + const repeaterFixture = TestBed.createComponent(NestedMenuRepeater); overlay = overlayContainerElement; repeaterFixture.detectChanges(); @@ -2468,7 +2458,7 @@ describe('MatMenu', () => { 'should be able to open a submenu through an item that is not a direct descendant ' + 'of the panel', fakeAsync(() => { - const nestedFixture = createComponent(SubmenuDeclaredInsideParentMenu); + const nestedFixture = TestBed.createComponent(SubmenuDeclaredInsideParentMenu); overlay = overlayContainerElement; nestedFixture.detectChanges(); @@ -2493,7 +2483,7 @@ describe('MatMenu', () => { 'should not close when hovering over a menu item inside a sub-menu panel that is declared' + 'inside the root menu', fakeAsync(() => { - const nestedFixture = createComponent(SubmenuDeclaredInsideParentMenu); + const nestedFixture = TestBed.createComponent(SubmenuDeclaredInsideParentMenu); overlay = overlayContainerElement; nestedFixture.detectChanges(); @@ -2523,8 +2513,6 @@ describe('MatMenu', () => { ); it('should not re-focus a child menu trigger when hovering another trigger', fakeAsync(() => { - compileTestComponent(); - dispatchFakeEvent(instance.rootTriggerEl.nativeElement, 'mousedown'); instance.rootTriggerEl.nativeElement.click(); fixture.detectChanges(); @@ -2551,7 +2539,7 @@ describe('MatMenu', () => { }); it('should have a focus indicator', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + const fixture = TestBed.createComponent(SimpleMenu); fixture.detectChanges(); fixture.componentInstance.trigger.openMenu(); fixture.detectChanges(); @@ -2577,7 +2565,6 @@ describe('MatMenu default overrides', () => { }, {provide: MATERIAL_ANIMATIONS, useValue: {animationsDisabled: true}}, ], - declarations: [SimpleMenu, FakeIcon], }); })); @@ -2621,9 +2608,15 @@ const SIMPLE_MENU_TEMPLATE = ` `; +@Component({ + selector: 'mat-icon', + template: '', +}) +class FakeIcon {} + @Component({ template: SIMPLE_MENU_TEMPLATE, - standalone: false, + imports: [MatMenuTrigger, MatMenu, MatMenuItem, FakeIcon], }) class SimpleMenu { @ViewChild(MatMenuTrigger) trigger: MatMenuTrigger; @@ -2643,7 +2636,7 @@ class SimpleMenu { @Component({ template: SIMPLE_MENU_TEMPLATE, changeDetection: ChangeDetectionStrategy.OnPush, - standalone: false, + imports: [MatMenuTrigger, MatMenu, MatMenuItem, FakeIcon], }) class SimpleMenuOnPush extends SimpleMenu {} @@ -2654,7 +2647,7 @@ class SimpleMenuOnPush extends SimpleMenu {} `, - standalone: false, + imports: [MatMenuTrigger, MatMenu, MatMenuItem], }) class PositionedMenu { @ViewChild(MatMenuTrigger) trigger: MatMenuTrigger; @@ -2674,7 +2667,7 @@ interface TestableMenu { `, - standalone: false, + imports: [MatMenuTrigger, MatMenu, MatMenuItem], }) class OverlapMenu implements TestableMenu { @Input() overlapTrigger: boolean; @@ -2691,7 +2684,7 @@ class OverlapMenu implements TestableMenu { `, exportAs: 'matCustomMenu', - standalone: false, + imports: [MatMenuTrigger, MatMenu, MatMenuItem], }) class CustomMenuPanel implements MatMenuPanel { direction: Direction; @@ -2714,7 +2707,7 @@ class CustomMenuPanel implements MatMenuPanel { `, - standalone: false, + imports: [MatMenuTrigger, MatMenu, MatMenuItem, CustomMenuPanel], }) class CustomMenu { @ViewChild(MatMenuTrigger) trigger: MatMenuTrigger; @@ -2766,7 +2759,7 @@ class CustomMenu { `, - standalone: false, + imports: [MatMenuTrigger, MatMenu, MatMenuItem], }) class NestedMenu { @ViewChild('root') rootMenu: MatMenu; @@ -2805,7 +2798,7 @@ class NestedMenu { `, - standalone: false, + imports: [MatMenuTrigger, MatMenu, MatMenuItem], }) class NestedMenuRepeater { @ViewChild('rootTriggerEl') rootTriggerEl: ElementRef; @@ -2826,18 +2819,23 @@ class NestedMenuRepeater { `, - standalone: false, + imports: [MatMenuTrigger, MatMenu, MatMenuItem], }) class SubmenuDeclaredInsideParentMenu { @ViewChild('rootTriggerEl') rootTriggerEl: ElementRef; } -@Component({ - selector: 'mat-icon', - template: '', - standalone: false, -}) -class FakeIcon {} +// Note: for some reason doing `spyOn(item, 'ngOnDestroy')` doesn't work, even though a +// `console.log` shows that the `ngOnDestroy` gets called. We work around it with a custom +// directive that flips a flag. +@Directive({selector: '[mat-menu-item]'}) +class DestroyChecker implements OnDestroy { + destroyed = false; + + ngOnDestroy(): void { + this.destroyed = true; + } +} @Component({ template: ` @@ -2850,12 +2848,13 @@ class FakeIcon {} `, - standalone: false, + imports: [MatMenuTrigger, MatMenu, MatMenuItem, MatMenuContent, DestroyChecker], }) class SimpleLazyMenu { @ViewChild(MatMenuTrigger) trigger: MatMenuTrigger; @ViewChild('triggerEl') triggerEl: ElementRef; @ViewChildren(MatMenuItem) items: QueryList; + @ViewChildren(DestroyChecker) destroyCheckers: QueryList; } @Component({ @@ -2876,7 +2875,7 @@ class SimpleLazyMenu { `, - standalone: false, + imports: [MatMenuTrigger, MatMenu, MatMenuItem, MatMenuContent], }) class LazyMenuWithContext { @ViewChild('triggerOne') triggerOne: MatMenuTrigger; @@ -2894,7 +2893,7 @@ class LazyMenuWithContext { `, - standalone: false, + imports: [MatMenuTrigger, MatMenu, MatMenuItem], }) class DynamicPanelMenu { @ViewChild(MatMenuTrigger) trigger: MatMenuTrigger; @@ -2911,7 +2910,7 @@ class DynamicPanelMenu { `, - standalone: false, + imports: [MatMenuTrigger, MatMenu, MatMenuItem], }) class MenuWithCheckboxItems { @ViewChild(MatMenuTrigger) trigger: MatMenuTrigger; @@ -2926,7 +2925,7 @@ class MenuWithCheckboxItems { } `, - standalone: false, + imports: [MatMenuTrigger, MatMenu, MatMenuItem], }) class SimpleMenuWithRepeater { @ViewChild(MatMenuTrigger) trigger: MatMenuTrigger; @@ -2949,7 +2948,7 @@ class SimpleMenuWithRepeater { `, - standalone: false, + imports: [MatMenuTrigger, MatMenu, MatMenuItem, MatMenuContent], }) class SimpleMenuWithRepeaterInLazyContent { @ViewChild(MatMenuTrigger) trigger: MatMenuTrigger; @@ -2977,7 +2976,7 @@ class SimpleMenuWithRepeaterInLazyContent { `, changeDetection: ChangeDetectionStrategy.OnPush, - standalone: false, + imports: [MatMenuTrigger, MatMenu, MatMenuItem, MatMenuContent], }) class LazyMenuWithOnPush { @ViewChild('triggerEl', {read: ElementRef}) rootTrigger: ElementRef; @@ -2990,25 +2989,25 @@ class LazyMenuWithOnPush { `, - standalone: false, + imports: [MatMenuTrigger, MatMenu, MatMenuItem], }) class InvalidRecursiveMenu {} @Component({ template: '', - standalone: false, + imports: [MatMenuTrigger, MatMenu, MatMenuItem], }) class StaticAriaLabelMenu {} @Component({ template: '', - standalone: false, + imports: [MatMenuTrigger, MatMenu, MatMenuItem], }) class StaticAriaLabelledByMenu {} @Component({ template: '', - standalone: false, + imports: [MatMenuTrigger, MatMenu, MatMenuItem], }) class StaticAriaDescribedbyMenu {} @@ -3021,7 +3020,7 @@ class StaticAriaDescribedbyMenu {} } `, - standalone: false, + imports: [MatMenuTrigger, MatMenu, MatMenuItem], }) class MenuWithRepeatedItems { @ViewChild(MatMenuTrigger, {static: false}) trigger: MatMenuTrigger; diff --git a/src/material/select/select.spec.ts b/src/material/select/select.spec.ts index c2574ea65c34..67252a5885bd 100644 --- a/src/material/select/select.spec.ts +++ b/src/material/select/select.spec.ts @@ -33,7 +33,6 @@ import { ElementRef, Injector, OnInit, - Provider, QueryList, ViewChild, ViewChildren, @@ -42,14 +41,7 @@ import { provideCheckNoChangesConfig, signal, } from '@angular/core'; -import { - ComponentFixture, - TestBed, - fakeAsync, - flush, - tick, - waitForAsync, -} from '@angular/core/testing'; +import {ComponentFixture, TestBed, fakeAsync, flush, tick} from '@angular/core/testing'; import { ControlValueAccessor, FormBuilder, @@ -64,11 +56,16 @@ import { import {By} from '@angular/platform-browser'; import {Subject, Subscription} from 'rxjs'; import {map} from 'rxjs/operators'; -import {ErrorStateMatcher, MATERIAL_ANIMATIONS, MatOption, MatOptionSelectionChange} from '../core'; +import { + ErrorStateMatcher, + MATERIAL_ANIMATIONS, + MatOptgroup, + MatOption, + MatOptionSelectionChange, +} from '../core'; import {FloatLabelType, MAT_FORM_FIELD_DEFAULT_OPTIONS, MatFormFieldModule} from '../form-field'; import {MAT_SELECT_CONFIG, MatSelectConfig} from '../select'; -import {MatSelectModule} from './index'; -import {MAT_SELECT_SCROLL_STRATEGY, MatSelect} from './select'; +import {MAT_SELECT_SCROLL_STRATEGY, MatSelect, MatSelectTrigger} from './select'; import { getMatSelectDynamicMultipleError, getMatSelectNonArrayValueError, @@ -83,23 +80,9 @@ describe('MatSelect', () => { let dir: WritableSignal; let scrolledSubject = new Subject(); - /** - * Configures the test module for MatSelect with the given declarations. This is broken out so - * that we're only compiling the necessary test components for each test in order to speed up - * overall test time. - * @param declarations Components to declare for this block - * @param providers Additional providers for this block - */ - function configureMatSelectTestingModule(declarations: any[], providers: Provider[] = []) { + beforeEach(() => { dir = signal('ltr'); TestBed.configureTestingModule({ - imports: [ - MatFormFieldModule, - MatSelectModule, - ReactiveFormsModule, - FormsModule, - OverlayModule, - ], providers: [ provideCheckNoChangesConfig({exhaustive: false}), {provide: MATERIAL_ANIMATIONS, useValue: {animationsDisabled: true}}, @@ -110,28 +93,13 @@ describe('MatSelect', () => { scrolled: () => scrolledSubject, }), }, - ...providers, ], - declarations: declarations, }); overlayContainerElement = TestBed.inject(OverlayContainer).getContainerElement(); - } + }); describe('core', () => { - beforeEach(waitForAsync(() => { - configureMatSelectTestingModule([ - BasicSelect, - SelectInsideAModal, - MultiSelect, - SelectWithGroups, - SelectWithGroupsAndNgContainer, - SelectWithFormFieldLabel, - SelectWithChangeEvent, - SelectInsideDynamicFormGroup, - ]); - })); - describe('accessibility', () => { describe('for select', () => { let fixture: ComponentFixture; @@ -1448,11 +1416,6 @@ describe('MatSelect', () => { // Need to recreate the testing module, because the issue we're // testing for only happens when animations are enabled. TestBed.resetTestingModule(); - TestBed.configureTestingModule({ - imports: [MatFormFieldModule, MatSelectModule], - declarations: [BasicSelect], - }); - fixture = TestBed.createComponent(BasicSelect); fixture.detectChanges(); const select = fixture.componentInstance.select; @@ -1781,8 +1744,6 @@ describe('MatSelect', () => { TestBed.resetTestingModule(); TestBed.configureTestingModule({ - imports: [MatFormFieldModule, MatSelectModule], - declarations: [BasicSelect], providers: [ { provide: MAT_SELECT_SCROLL_STRATEGY, @@ -2708,8 +2669,6 @@ describe('MatSelect', () => { }); describe('when initialized without options', () => { - beforeEach(waitForAsync(() => configureMatSelectTestingModule([SelectInitWithoutOptions]))); - it('should select the proper option when option list is initialized later', fakeAsync(() => { const fixture = TestBed.createComponent(SelectInitWithoutOptions); const instance = fixture.componentInstance; @@ -2731,8 +2690,6 @@ describe('MatSelect', () => { }); describe('with a selectionChange event handler', () => { - beforeEach(waitForAsync(() => configureMatSelectTestingModule([SelectWithChangeEvent]))); - let fixture: ComponentFixture; let trigger: HTMLElement; @@ -2775,8 +2732,6 @@ describe('MatSelect', () => { }); describe('with ngModel', () => { - beforeEach(waitForAsync(() => configureMatSelectTestingModule([NgModelSelect]))); - it('should disable itself when control is disabled using the property', fakeAsync(() => { const fixture = TestBed.createComponent(NgModelSelect); fixture.detectChanges(); @@ -2827,8 +2782,6 @@ describe('MatSelect', () => { }); describe('with ngIf', () => { - beforeEach(waitForAsync(() => configureMatSelectTestingModule([NgIfSelect]))); - it('should handle nesting in an ngIf', fakeAsync(() => { const fixture = TestBed.createComponent(NgIfSelect); fixture.detectChanges(); @@ -2861,8 +2814,6 @@ describe('MatSelect', () => { }); describe('with multiple mat-select elements in one view', () => { - beforeEach(waitForAsync(() => configureMatSelectTestingModule([ManySelects]))); - let fixture: ComponentFixture; let triggers: DebugElement[]; let options: NodeListOf; @@ -2908,8 +2859,6 @@ describe('MatSelect', () => { }); describe('with floatLabel', () => { - beforeEach(waitForAsync(() => configureMatSelectTestingModule([FloatLabelSelect]))); - it('should be able to always float the label', () => { const fixture = TestBed.createComponent(FloatLabelSelect); fixture.detectChanges(); @@ -2929,9 +2878,7 @@ describe('MatSelect', () => { it('should default to global floating label type', () => { TestBed.resetTestingModule(); TestBed.configureTestingModule({ - imports: [MatFormFieldModule, MatSelectModule, ReactiveFormsModule, FormsModule], providers: [{provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, useValue: {floatLabel: 'always'}}], - declarations: [FloatLabelSelect], }); const fixture = TestBed.createComponent(FloatLabelSelect); @@ -2965,9 +2912,6 @@ describe('MatSelect', () => { }); describe('with a sibling component that throws an error', () => { - beforeEach(waitForAsync(() => - configureMatSelectTestingModule([SelectWithErrorSibling, ThrowsErrorOnInit]))); - it('should not crash the browser when a sibling throws an error on init', () => { // Note that this test can be considered successful if the error being thrown didn't // end up crashing the testing setup altogether. @@ -2978,8 +2922,6 @@ describe('MatSelect', () => { }); describe('with tabindex', () => { - beforeEach(waitForAsync(() => configureMatSelectTestingModule([SelectWithPlainTabindex]))); - it('should be able to set the tabindex via the native attribute', () => { const fixture = TestBed.createComponent(SelectWithPlainTabindex); fixture.detectChanges(); @@ -2990,8 +2932,6 @@ describe('MatSelect', () => { }); describe('change events', () => { - beforeEach(waitForAsync(() => configureMatSelectTestingModule([SelectWithPlainTabindex]))); - it('should complete the stateChanges stream on destroy', () => { const fixture = TestBed.createComponent(SelectWithPlainTabindex); fixture.detectChanges(); @@ -3009,8 +2949,6 @@ describe('MatSelect', () => { }); describe('when initially hidden', () => { - beforeEach(waitForAsync(() => configureMatSelectTestingModule([BasicSelectInitiallyHidden]))); - it('should set the width of the overlay if the element was hidden initially', fakeAsync(() => { const fixture = TestBed.createComponent(BasicSelectInitiallyHidden); fixture.detectChanges(); @@ -3032,8 +2970,6 @@ describe('MatSelect', () => { }); describe('with no placeholder', () => { - beforeEach(waitForAsync(() => configureMatSelectTestingModule([BasicSelectNoPlaceholder]))); - it('should set the width of the overlay if there is no placeholder', fakeAsync(() => { const fixture = TestBed.createComponent(BasicSelectNoPlaceholder); @@ -3050,8 +2986,6 @@ describe('MatSelect', () => { }); describe('with theming', () => { - beforeEach(waitForAsync(() => configureMatSelectTestingModule([BasicSelectWithTheming]))); - let fixture: ComponentFixture; beforeEach(() => { @@ -3073,8 +3007,6 @@ describe('MatSelect', () => { }); describe('when invalid inside a form', () => { - beforeEach(waitForAsync(() => configureMatSelectTestingModule([InvalidSelectInForm]))); - it('should not throw SelectionModel errors in addition to ngModel errors', () => { const fixture = TestBed.createComponent(InvalidSelectInForm); @@ -3088,8 +3020,6 @@ describe('MatSelect', () => { }); describe('with ngModel using compareWith', () => { - beforeEach(waitForAsync(() => configureMatSelectTestingModule([NgModelCompareWithSelect]))); - let fixture: ComponentFixture; let instance: NgModelCompareWithSelect; @@ -3157,8 +3087,6 @@ describe('MatSelect', () => { }); describe(`when the select's value is accessed on initialization`, () => { - beforeEach(waitForAsync(() => configureMatSelectTestingModule([SelectEarlyAccessSibling]))); - it('should not throw when trying to access the selected value on init in the view', () => { expect(() => { TestBed.createComponent(SelectEarlyAccessSibling).detectChanges(); @@ -3187,8 +3115,6 @@ describe('MatSelect', () => { }); describe('with ngIf and mat-label', () => { - beforeEach(waitForAsync(() => configureMatSelectTestingModule([SelectWithNgIfAndLabel]))); - it('should not throw when using ngIf on a select with an associated label', () => { expect(() => { const fixture = TestBed.createComponent(SelectWithNgIfAndLabel); @@ -3198,8 +3124,6 @@ describe('MatSelect', () => { }); describe('inside of a form group', () => { - beforeEach(waitForAsync(() => configureMatSelectTestingModule([SelectInsideFormGroup]))); - let fixture: ComponentFixture; let testComponent: SelectInsideFormGroup; let select: HTMLElement; @@ -3311,10 +3235,7 @@ describe('MatSelect', () => { }; fixture.destroy(); - TestBed.resetTestingModule().configureTestingModule({ - imports: [MatSelectModule, ReactiveFormsModule, FormsModule], - declarations: [SelectInsideFormGroup], providers: [{provide: ErrorStateMatcher, useValue: errorStateMatcher}], }); @@ -3350,8 +3271,6 @@ describe('MatSelect', () => { }); describe('with custom error behavior', () => { - beforeEach(waitForAsync(() => configureMatSelectTestingModule([CustomErrorBehaviorSelect]))); - it('should be able to override the error matching behavior via an @Input', () => { const fixture = TestBed.createComponent(CustomErrorBehaviorSelect); const component = fixture.componentInstance; @@ -3372,9 +3291,6 @@ describe('MatSelect', () => { }); describe('with preselected array values', () => { - beforeEach(waitForAsync(() => - configureMatSelectTestingModule([SingleSelectWithPreselectedArrayValues]))); - it('should be able to preselect an array value in single-selection mode', fakeAsync(() => { const fixture = TestBed.createComponent(SingleSelectWithPreselectedArrayValues); fixture.detectChanges(); @@ -3389,9 +3305,6 @@ describe('MatSelect', () => { }); describe('with custom value accessor', () => { - beforeEach(waitForAsync(() => - configureMatSelectTestingModule([CompWithCustomSelect, CustomSelectAccessor]))); - it('should support use inside a custom value accessor', () => { const fixture = TestBed.createComponent(CompWithCustomSelect); spyOn(fixture.componentInstance.customAccessor, 'writeValue'); @@ -3405,8 +3318,6 @@ describe('MatSelect', () => { }); describe('with a falsy value', () => { - beforeEach(waitForAsync(() => configureMatSelectTestingModule([FalsyValueSelect]))); - it('should be able to programmatically select a falsy option', fakeAsync(() => { const fixture = TestBed.createComponent(FalsyValueSelect); @@ -3426,9 +3337,6 @@ describe('MatSelect', () => { }); describe('with OnPush', () => { - beforeEach(waitForAsync(() => - configureMatSelectTestingModule([BasicSelectOnPush, BasicSelectOnPushPreselected]))); - it('should set the trigger text based on the value when initialized', fakeAsync(() => { const fixture = TestBed.createComponent(BasicSelectOnPushPreselected); @@ -3469,8 +3377,6 @@ describe('MatSelect', () => { }); describe('with custom trigger', () => { - beforeEach(waitForAsync(() => configureMatSelectTestingModule([SelectWithCustomTrigger]))); - it('should allow the user to customize the label', () => { const fixture = TestBed.createComponent(SelectWithCustomTrigger); fixture.detectChanges(); @@ -3487,8 +3393,6 @@ describe('MatSelect', () => { }); describe('when reseting the value by setting null or undefined', () => { - beforeEach(waitForAsync(() => configureMatSelectTestingModule([ResetValuesSelect]))); - let fixture: ComponentFixture; let trigger: HTMLElement; let formField: HTMLElement; @@ -3583,8 +3487,6 @@ describe('MatSelect', () => { }); describe('allowing selection of nullable options', () => { - beforeEach(waitForAsync(() => configureMatSelectTestingModule([ResetValuesSelect]))); - let fixture: ComponentFixture; let trigger: HTMLElement; let formField: HTMLElement; @@ -3684,7 +3586,6 @@ describe('MatSelect', () => { let trigger: HTMLElement; beforeEach(() => { - configureMatSelectTestingModule([SelectWithResetOptionAndFormControl]); fixture = TestBed.createComponent(SelectWithResetOptionAndFormControl); fixture.detectChanges(); trigger = fixture.debugElement.query(By.css('.mat-mdc-select-trigger'))!.nativeElement; @@ -3736,13 +3637,6 @@ describe('MatSelect', () => { }); describe('without Angular forms', () => { - beforeEach(waitForAsync(() => - configureMatSelectTestingModule([ - BasicSelectWithoutForms, - BasicSelectWithoutFormsPreselected, - BasicSelectWithoutFormsMultiple, - ]))); - it('should set the value when options are clicked', fakeAsync(() => { const fixture = TestBed.createComponent(BasicSelectWithoutForms); @@ -4086,8 +3980,6 @@ describe('MatSelect', () => { }); describe('with option centering disabled', () => { - beforeEach(waitForAsync(() => configureMatSelectTestingModule([SelectWithoutOptionCentering]))); - let fixture: ComponentFixture; let trigger: HTMLElement; @@ -4119,8 +4011,6 @@ describe('MatSelect', () => { }); describe('positioning', () => { - beforeEach(waitForAsync(() => configureMatSelectTestingModule([BasicSelect]))); - let fixture: ComponentFixture; let trigger: HTMLElement; let formField: HTMLElement; @@ -4172,9 +4062,6 @@ describe('MatSelect', () => { }); describe('with multiple selection', () => { - beforeEach(waitForAsync(() => - configureMatSelectTestingModule([MultiSelect, MultiSelectWithLotsOfOptions]))); - let fixture: ComponentFixture; let testInstance: MultiSelect; let trigger: HTMLElement; @@ -4643,9 +4530,9 @@ describe('MatSelect', () => { }); it('should be able to provide default values through an injection token', fakeAsync(() => { - configureMatSelectTestingModule( - [NgModelSelect], - [ + TestBed.resetTestingModule(); + TestBed.configureTestingModule({ + providers: [ { provide: MAT_SELECT_CONFIG, useValue: { @@ -4656,7 +4543,7 @@ describe('MatSelect', () => { } as MatSelectConfig, }, ], - ); + }); const fixture = TestBed.createComponent(NgModelSelect); fixture.detectChanges(); const select = fixture.componentInstance.select; @@ -4672,15 +4559,15 @@ describe('MatSelect', () => { it('should be able to hide checkmark icon through an injection token', () => { const matSelectConfig: MatSelectConfig = {hideSingleSelectionIndicator: true}; - configureMatSelectTestingModule( - [NgModelSelect], - [ + TestBed.resetTestingModule(); + TestBed.configureTestingModule({ + providers: [ { provide: MAT_SELECT_CONFIG, useValue: matSelectConfig, }, ], - ); + }); const fixture = TestBed.createComponent(NgModelSelect); fixture.detectChanges(); const select = fixture.componentInstance.select; @@ -4705,7 +4592,6 @@ describe('MatSelect', () => { }); it('should not not throw if the select is inside an ng-container with ngIf', () => { - configureMatSelectTestingModule([SelectInNgContainer]); const fixture = TestBed.createComponent(SelectInNgContainer); expect(() => fixture.detectChanges()).not.toThrow(); }); @@ -4714,9 +4600,6 @@ describe('MatSelect', () => { let fixture: ComponentFixture; let host: HTMLElement; - beforeEach(waitForAsync(() => - configureMatSelectTestingModule([BasicSelectWithFirstAndLastOptionDisabled]))); - beforeEach(fakeAsync(() => { fixture = TestBed.createComponent(BasicSelectWithFirstAndLastOptionDisabled); @@ -4762,7 +4645,6 @@ describe('MatSelect', () => { }); @Component({ - selector: 'basic-select', template: `
@@ -4787,7 +4669,7 @@ describe('MatSelect', () => {
`, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule, ReactiveFormsModule], }) class BasicSelect { foods: any[] = [ @@ -4821,7 +4703,6 @@ class BasicSelect { } @Component({ - selector: 'ng-model-select', template: ` @@ -4831,7 +4712,7 @@ class BasicSelect { `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule, FormsModule], }) class NgModelSelect { foods: any[] = [ @@ -4846,7 +4727,6 @@ class NgModelSelect { } @Component({ - selector: 'many-selects', template: ` @@ -4861,12 +4741,11 @@ class NgModelSelect { `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule], }) class ManySelects {} @Component({ - selector: 'ng-if-select', template: ` @if (isShowing) {
@@ -4880,7 +4759,7 @@ class ManySelects {}
} `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule, ReactiveFormsModule], }) class NgIfSelect { isShowing = false; @@ -4895,7 +4774,6 @@ class NgIfSelect { } @Component({ - selector: 'select-with-change-event', template: ` @@ -4905,7 +4783,7 @@ class NgIfSelect { `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule], }) class SelectWithChangeEvent { foods: string[] = [ @@ -4923,7 +4801,6 @@ class SelectWithChangeEvent { } @Component({ - selector: 'select-init-without-options', template: ` @@ -4933,7 +4810,7 @@ class SelectWithChangeEvent { `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule, ReactiveFormsModule], }) class SelectInitWithoutOptions { foods: any[]; @@ -4952,8 +4829,8 @@ class SelectInitWithoutOptions { } @Component({ - selector: 'custom-select-accessor', template: ``, + selector: 'custom-select-accessor', providers: [ { provide: NG_VALUE_ACCESSOR, @@ -4961,7 +4838,7 @@ class SelectInitWithoutOptions { multi: true, }, ], - standalone: false, + imports: [MatSelect, MatFormFieldModule], }) class CustomSelectAccessor implements ControlValueAccessor { @ViewChild(MatSelect) select: MatSelect; @@ -4972,7 +4849,6 @@ class CustomSelectAccessor implements ControlValueAccessor { } @Component({ - selector: 'comp-with-custom-select', template: ``, providers: [ { @@ -4981,7 +4857,7 @@ class CustomSelectAccessor implements ControlValueAccessor { multi: true, }, ], - standalone: false, + imports: [CustomSelectAccessor, MatSelect, MatOption, MatFormFieldModule, ReactiveFormsModule], }) class CompWithCustomSelect { ctrl = new FormControl('initial value'); @@ -4989,32 +4865,29 @@ class CompWithCustomSelect { } @Component({ - selector: 'select-infinite-loop', + template: '', + selector: 'throws-error-on-init', +}) +class ThrowsErrorOnInit implements OnInit { + ngOnInit() { + throw Error('Oh no!'); + } +} + +@Component({ template: ` `, - standalone: false, + imports: [ThrowsErrorOnInit, MatSelect, MatOption, MatFormFieldModule, FormsModule], }) class SelectWithErrorSibling { value: string; } @Component({ - selector: 'throws-error-on-init', - template: '', - standalone: false, -}) -class ThrowsErrorOnInit implements OnInit { - ngOnInit() { - throw Error('Oh no!'); - } -} - -@Component({ - selector: 'basic-select-on-push', changeDetection: ChangeDetectionStrategy.OnPush, template: ` @@ -5025,7 +4898,7 @@ class ThrowsErrorOnInit implements OnInit { `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule, ReactiveFormsModule], }) class BasicSelectOnPush { foods: any[] = [ @@ -5037,7 +4910,6 @@ class BasicSelectOnPush { } @Component({ - selector: 'basic-select-on-push-preselected', changeDetection: ChangeDetectionStrategy.OnPush, template: ` @@ -5048,7 +4920,7 @@ class BasicSelectOnPush { `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule, ReactiveFormsModule], }) class BasicSelectOnPushPreselected { @ViewChild(MatSelect) select: MatSelect; @@ -5061,7 +4933,6 @@ class BasicSelectOnPushPreselected { } @Component({ - selector: 'floating-label-select', template: ` Select a food @@ -5072,7 +4943,7 @@ class BasicSelectOnPushPreselected { `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule, ReactiveFormsModule], }) class FloatLabelSelect { floatLabel: FloatLabelType | null = 'auto'; @@ -5088,7 +4959,6 @@ class FloatLabelSelect { } @Component({ - selector: 'multi-select', template: ` `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule, ReactiveFormsModule], }) class MultiSelect { foods: any[] = [ @@ -5120,14 +4990,12 @@ class MultiSelect { } @Component({ - selector: 'select-with-plain-tabindex', template: ``, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule], }) class SelectWithPlainTabindex {} @Component({ - selector: 'select-early-sibling-access', template: ` @@ -5136,12 +5004,11 @@ class SelectWithPlainTabindex {}
} `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule], }) class SelectEarlyAccessSibling {} @Component({ - selector: 'basic-select-initially-hidden', template: ` @@ -5149,14 +5016,13 @@ class SelectEarlyAccessSibling {} `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule], }) class BasicSelectInitiallyHidden { isVisible = false; } @Component({ - selector: 'basic-select-no-placeholder', template: ` @@ -5164,12 +5030,11 @@ class BasicSelectInitiallyHidden { `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule], }) class BasicSelectNoPlaceholder {} @Component({ - selector: 'basic-select-with-theming', template: ` @@ -5178,7 +5043,7 @@ class BasicSelectNoPlaceholder {} `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule], }) class BasicSelectWithTheming { @ViewChild(MatSelect) select: MatSelect; @@ -5186,7 +5051,6 @@ class BasicSelectWithTheming { } @Component({ - selector: 'reset-values-select', template: ` Select a food @@ -5198,7 +5062,7 @@ class BasicSelectWithTheming { `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule, ReactiveFormsModule], }) class ResetValuesSelect { foods: any[] = [ @@ -5225,7 +5089,7 @@ class ResetValuesSelect {
`, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule, ReactiveFormsModule], }) class FalsyValueSelect { foods: any[] = [ @@ -5237,7 +5101,6 @@ class FalsyValueSelect { } @Component({ - selector: 'select-with-groups', template: ` @@ -5252,7 +5115,7 @@ class FalsyValueSelect { `, - standalone: false, + imports: [MatSelect, MatOption, MatOptgroup, MatFormFieldModule, ReactiveFormsModule], }) class SelectWithGroups { control = new FormControl(''); @@ -5296,7 +5159,6 @@ class SelectWithGroups { } @Component({ - selector: 'select-with-groups', template: ` @@ -5310,7 +5172,7 @@ class SelectWithGroups { `, - standalone: false, + imports: [MatSelect, MatOption, MatOptgroup, MatFormFieldModule, ReactiveFormsModule], }) class SelectWithGroupsAndNgContainer { control = new FormControl(''); @@ -5330,7 +5192,7 @@ class SelectWithGroupsAndNgContainer { `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule, FormsModule], }) class InvalidSelectInForm { value: any; @@ -5351,7 +5213,7 @@ class InvalidSelectInForm { `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule, ReactiveFormsModule], }) class SelectInsideFormGroup { @ViewChild(FormGroupDirective) formGroupDirective: FormGroupDirective; @@ -5376,7 +5238,7 @@ class SelectInsideFormGroup { `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule], }) class BasicSelectWithoutForms { selectedFood: string | null; @@ -5399,7 +5261,7 @@ class BasicSelectWithoutForms { `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule], }) class BasicSelectWithoutFormsPreselected { selectedFood = 'pizza-1'; @@ -5421,7 +5283,7 @@ class BasicSelectWithoutFormsPreselected { `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule], }) class BasicSelectWithoutFormsMultiple { selectedFoods: string[]; @@ -5435,7 +5297,6 @@ class BasicSelectWithoutFormsMultiple { } @Component({ - selector: 'select-with-custom-trigger', template: ` @@ -5448,7 +5309,7 @@ class BasicSelectWithoutFormsMultiple { `, - standalone: false, + imports: [MatSelect, MatSelectTrigger, MatOption, MatFormFieldModule, ReactiveFormsModule], }) class SelectWithCustomTrigger { foods: any[] = [ @@ -5459,7 +5320,6 @@ class SelectWithCustomTrigger { } @Component({ - selector: 'ng-model-compare-with', template: ` `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule, FormsModule], }) class NgModelCompareWithSelect { foods: {value: string; viewValue: string}[] = [ @@ -5517,7 +5377,7 @@ class NgModelCompareWithSelect { } `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule, ReactiveFormsModule], }) class CustomErrorBehaviorSelect { @ViewChild(MatSelect) select: MatSelect; @@ -5539,7 +5399,7 @@ class CustomErrorBehaviorSelect { `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule, FormsModule], }) class SingleSelectWithPreselectedArrayValues { foods: any[] = [ @@ -5555,7 +5415,6 @@ class SingleSelectWithPreselectedArrayValues { } @Component({ - selector: 'select-without-option-centering', template: ` @@ -5565,7 +5424,7 @@ class SingleSelectWithPreselectedArrayValues { `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule, ReactiveFormsModule], }) class SelectWithoutOptionCentering { foods: any[] = [ @@ -5584,22 +5443,6 @@ class SelectWithoutOptionCentering { @ViewChildren(MatOption) options: QueryList; } -@Component({ - template: ` - - Select a thing - - - A thing - - - `, - standalone: false, -}) -class SelectWithFormFieldLabel { - placeholder: string; -} - @Component({ template: ` @@ -5611,7 +5454,7 @@ class SelectWithFormFieldLabel { } `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule], }) class SelectWithNgIfAndLabel { showSelect = true; @@ -5627,7 +5470,7 @@ class SelectWithNgIfAndLabel { `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule, FormsModule], }) class MultiSelectWithLotsOfOptions { items = new Array(100).fill(0).map((_, i) => i); @@ -5643,7 +5486,6 @@ class MultiSelectWithLotsOfOptions { } @Component({ - selector: 'basic-select-with-reset', template: ` @@ -5654,7 +5496,7 @@ class MultiSelectWithLotsOfOptions { `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule, ReactiveFormsModule], }) class SelectWithResetOptionAndFormControl { @ViewChild(MatSelect) select: MatSelect; @@ -5663,7 +5505,6 @@ class SelectWithResetOptionAndFormControl { } @Component({ - selector: 'select-with-placeholder-in-ngcontainer-with-ngIf', template: ` @if (true) { @@ -5675,7 +5516,7 @@ class SelectWithResetOptionAndFormControl { } `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule], }) class SelectInNgContainer {} @@ -5689,7 +5530,7 @@ class SelectInNgContainer {} `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule, ReactiveFormsModule], }) class SelectInsideDynamicFormGroup { private _formBuilder = inject(FormBuilder); @@ -5711,7 +5552,6 @@ class SelectInsideDynamicFormGroup { } } @Component({ - selector: 'basic-select', template: `
@@ -5735,7 +5575,7 @@ class SelectInsideDynamicFormGroup {
`, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule, ReactiveFormsModule], }) class BasicSelectWithFirstAndLastOptionDisabled { foods: any[] = [ @@ -5767,7 +5607,6 @@ class BasicSelectWithFirstAndLastOptionDisabled { } @Component({ - selector: 'select-inside-a-modal', template: ` `, - standalone: false, + imports: [MatSelect, MatOption, MatFormFieldModule, FormsModule, OverlayModule], }) class SelectInsideAModal { foods = [ diff --git a/src/material/slider/slider.spec.ts b/src/material/slider/slider.spec.ts index 0c2db2b63fba..48b45d9f0362 100644 --- a/src/material/slider/slider.spec.ts +++ b/src/material/slider/slider.spec.ts @@ -6,7 +6,6 @@ * found in the LICENSE file at https://angular.dev/license */ -import {BidiModule} from '@angular/cdk/bidi'; import {Platform} from '@angular/cdk/platform'; import { dispatchEvent, @@ -40,11 +39,7 @@ describe('MatSlider', () => { let platform: Platform; function createComponent(component: Type, providers: Provider[] = []): ComponentFixture { - TestBed.configureTestingModule({ - imports: [FormsModule, MatSliderModule, ReactiveFormsModule, BidiModule], - providers: [...providers], - declarations: [component], - }); + TestBed.configureTestingModule({providers}); platform = TestBed.inject(Platform); return TestBed.createComponent(component); } @@ -1730,7 +1725,7 @@ const SLIDER_STYLES = ['.mat-mdc-slider { width: 300px; }']; `, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule], }) class StandardSlider {} @@ -1742,7 +1737,7 @@ class StandardSlider {} `, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule], }) class StandardRangeSlider {} @@ -1753,7 +1748,7 @@ class StandardRangeSlider {} `, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule], }) class DisabledSlider {} @@ -1765,7 +1760,7 @@ class DisabledSlider {} `, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule], }) class DisabledRangeSlider {} @@ -1776,7 +1771,7 @@ class DisabledRangeSlider {} `, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule], }) class SliderWithMinAndMax { min = 25; @@ -1791,7 +1786,7 @@ class SliderWithMinAndMax { `, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule], }) class RangeSliderWithMinAndMax { min = 25; @@ -1805,7 +1800,7 @@ class RangeSliderWithMinAndMax { `, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule], }) class SliderWithValue {} @@ -1817,7 +1812,7 @@ class SliderWithValue {} `, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule], }) class RangeSliderWithValue {} @@ -1828,7 +1823,7 @@ class RangeSliderWithValue {} `, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule], }) class SliderWithStep { step = 25; @@ -1842,7 +1837,7 @@ class SliderWithStep { `, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule], }) class RangeSliderWithStep { step = 25; @@ -1855,7 +1850,7 @@ class RangeSliderWithStep { `, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule], }) class DiscreteSliderWithDisplayWith { displayWith(v: number) { @@ -1871,7 +1866,7 @@ class DiscreteSliderWithDisplayWith { `, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule], }) class DiscreteRangeSliderWithDisplayWith { displayWith(v: number) { @@ -1886,7 +1881,7 @@ class DiscreteRangeSliderWithDisplayWith { `, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule], }) class SliderWithOneWayBinding { value = 50; @@ -1900,7 +1895,7 @@ class SliderWithOneWayBinding { `, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule], }) class RangeSliderWithOneWayBinding { startValue = 25; @@ -1914,7 +1909,7 @@ class RangeSliderWithOneWayBinding { `, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule, FormsModule], }) class SliderWithNgModel { @ViewChild(MatSlider) slider: MatSlider; @@ -1929,7 +1924,7 @@ class SliderWithNgModel { `, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule, FormsModule], }) class RangeSliderWithNgModel { @ViewChild(MatSlider) slider: MatSlider; @@ -1946,7 +1941,7 @@ class RangeSliderWithNgModel { `, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule, FormsModule], }) class RangeSliderWithNgModelEdgeCase { @ViewChild(MatSlider) slider: MatSlider; @@ -1960,7 +1955,7 @@ class RangeSliderWithNgModelEdgeCase { `, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule, ReactiveFormsModule], }) class SliderWithFormControl { control = new FormControl(0); @@ -1973,7 +1968,7 @@ class SliderWithFormControl { `, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule, ReactiveFormsModule], }) class RangeSliderWithFormControl { startInputControl = new FormControl(0); @@ -1987,7 +1982,7 @@ class RangeSliderWithFormControl { `, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule], }) class SliderWithTwoWayBinding { value = 0; @@ -2001,7 +1996,7 @@ class SliderWithTwoWayBinding { `, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule], }) class RangeSliderWithTwoWayBinding { @ViewChild(MatSlider) slider: MatSlider; @@ -2017,7 +2012,7 @@ class RangeSliderWithTwoWayBinding { `, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule], }) class SliderWithTickMarks { @ViewChild(MatSlider) slider: MatSlider; @@ -2031,7 +2026,7 @@ class SliderWithTickMarks { `, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule], }) class RangeSliderWithTickMarks { @ViewChild(MatSlider) slider: MatSlider; @@ -2047,7 +2042,7 @@ class RangeSliderWithTickMarks {
`, styles: SLIDER_STYLES, - standalone: false, + imports: [MatSliderModule, ReactiveFormsModule], }) class SliderWithFormGroup { readonly MIN = 0; diff --git a/src/material/tooltip/tooltip.spec.ts b/src/material/tooltip/tooltip.spec.ts index 5dbc7574c5e8..a83129363c43 100644 --- a/src/material/tooltip/tooltip.spec.ts +++ b/src/material/tooltip/tooltip.spec.ts @@ -53,17 +53,6 @@ describe('MatTooltip', () => { dir = signal('ltr'); TestBed.configureTestingModule({ - imports: [ - MatTooltipModule, - OverlayModule, - BasicTooltipDemo, - ScrollableTooltipDemo, - OnPushTooltipDemo, - DynamicTooltipsDemo, - TooltipOnTextFields, - TooltipOnDraggableElement, - DataBoundAriaLabelTooltip, - ], providers: [provideFakeDirectionality(dir)], }); @@ -161,7 +150,6 @@ describe('MatTooltip', () => { it('should be able to override the default show and hide delays', fakeAsync(() => { TestBed.resetTestingModule().configureTestingModule({ - imports: [MatTooltipModule, OverlayModule, BasicTooltipDemo], providers: [ { provide: MAT_TOOLTIP_DEFAULT_OPTIONS, @@ -196,8 +184,6 @@ describe('MatTooltip', () => { it('should be able to override the default position', fakeAsync(() => { TestBed.resetTestingModule().configureTestingModule({ - imports: [MatTooltipModule, OverlayModule], - declarations: [TooltipDemoWithoutPositionBinding], providers: [ { provide: MAT_TOOLTIP_DEFAULT_OPTIONS, @@ -223,8 +209,6 @@ describe('MatTooltip', () => { it('should be able to define a default (global) tooltip class', fakeAsync(() => { TestBed.resetTestingModule().configureTestingModule({ - declarations: [TooltipDemoWithoutTooltipClassBinding], - imports: [MatTooltipModule, OverlayModule], providers: [ { provide: MAT_TOOLTIP_DEFAULT_OPTIONS, @@ -250,8 +234,6 @@ describe('MatTooltip', () => { it('should be able to provide tooltip class over the custom default one', fakeAsync(() => { TestBed.resetTestingModule().configureTestingModule({ - declarations: [TooltipDemoWithTooltipClassBinding], - imports: [MatTooltipModule, OverlayModule], providers: [ { provide: MAT_TOOLTIP_DEFAULT_OPTIONS, @@ -282,11 +264,7 @@ describe('MatTooltip', () => { return; } - TestBed.resetTestingModule().configureTestingModule({ - imports: [MatTooltipModule, OverlayModule], - declarations: [WideTooltipDemo], - }); - + TestBed.resetTestingModule(); const wideFixture = TestBed.createComponent(WideTooltipDemo); wideFixture.detectChanges(); tooltipDirective = wideFixture.debugElement @@ -315,8 +293,6 @@ describe('MatTooltip', () => { } TestBed.resetTestingModule().configureTestingModule({ - imports: [MatTooltipModule, OverlayModule], - declarations: [WideTooltipDemo], providers: [ { provide: MAT_TOOLTIP_DEFAULT_OPTIONS, @@ -347,8 +323,6 @@ describe('MatTooltip', () => { it('should be able to disable tooltip interactivity', fakeAsync(() => { TestBed.resetTestingModule().configureTestingModule({ - imports: [MatTooltipModule, OverlayModule], - declarations: [TooltipDemoWithoutPositionBinding], providers: [ { provide: MAT_TOOLTIP_DEFAULT_OPTIONS, @@ -1583,7 +1557,6 @@ describe('MatTooltip', () => { }); @Component({ - selector: 'app', template: ` @if (showButton) { @@ -1709,9 +1679,8 @@ class TooltipOnDraggableElement { } @Component({ - selector: 'app', template: ``, - standalone: false, + imports: [MatTooltip], }) class TooltipDemoWithoutPositionBinding { message: any = initialTooltipMessage; @@ -1720,9 +1689,8 @@ class TooltipDemoWithoutPositionBinding { } @Component({ - selector: 'app', template: ``, - standalone: false, + imports: [MatTooltip], }) class TooltipDemoWithoutTooltipClassBinding { message = initialTooltipMessage; @@ -1731,11 +1699,10 @@ class TooltipDemoWithoutTooltipClassBinding { } @Component({ - selector: 'app', template: ` `, - standalone: false, + imports: [MatTooltip], }) class TooltipDemoWithTooltipClassBinding { message: any = initialTooltipMessage; @@ -1744,10 +1711,9 @@ class TooltipDemoWithTooltipClassBinding { } @Component({ - selector: 'app', styles: `button { width: 500px; height: 500px; }`, template: ``, - standalone: false, + imports: [MatTooltip], }) class WideTooltipDemo { message = 'Test'; From ea59bdb28c3cbd86011fae6b5bebf84cfd93409b Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 19 May 2025 08:30:14 -0600 Subject: [PATCH 047/145] build: update cross-repo angular dependencies (#31116) See associated pull request for more information. (cherry picked from commit 58a7d2f2a00604e9cc16fac65f3d7a866266d307) --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.material-aio.yml | 18 +- .github/workflows/ci.yml | 50 +- .../workflows/deploy-dev-app-main-push.yml | 6 +- .github/workflows/dev-infra.yml | 4 +- .github/workflows/docs-preview-build.yml | 8 +- .github/workflows/docs-preview-deploy.yml | 2 +- .github/workflows/google-internal-tests.yml | 2 +- .github/workflows/pr.material-aio.yml | 18 +- .github/workflows/pr.yml | 46 +- .github/workflows/preview-build-dev-app.yml | 8 +- .github/workflows/preview-deploy-dev-app.yml | 2 +- .github/workflows/scheduled-ci.yml | 14 +- WORKSPACE | 2 +- integration/harness-e2e-cli/package.json | 20 +- integration/harness-e2e-cli/pnpm-lock.yaml | 764 ++++++------------ integration/ng-add-standalone/package.json | 20 +- integration/ng-add-standalone/pnpm-lock.yaml | 749 ++++++----------- integration/ng-add/package.json | 20 +- integration/ng-add/pnpm-lock.yaml | 749 ++++++----------- integration/yarn-pnp-compat/package.json | 20 +- integration/yarn-pnp-compat/yarn.lock | 435 ++++------ package.json | 2 +- pnpm-lock.yaml | 748 +++++++++-------- pnpm-workspace.yaml | 36 +- 25 files changed, 1472 insertions(+), 2273 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 507485c2f479..13ee4c77f28d 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -16,6 +16,6 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@057595fcd4031441d5a9b1d31bf0ced68073832f + - uses: angular/dev-infra/github-actions/branch-manager@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.material-aio.yml b/.github/workflows/ci.material-aio.yml index 8add80d29752..86578b0dd732 100644 --- a/.github/workflows/ci.material-aio.yml +++ b/.github/workflows/ci.material-aio.yml @@ -21,11 +21,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Install node modules run: pnpm install --frozen-lockfile - name: Execute Build @@ -35,11 +35,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Install node modules run: pnpm install --frozen-lockfile - name: Execute Tests @@ -56,11 +56,11 @@ jobs: runs-on: ubuntu-22.04 # Note, fails on Ubuntu 24.04. see https://github.com/actions/runner-images/issues/10636 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Install node modules run: pnpm install --frozen-lockfile - name: Execute Lighthouse Audit diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ebb57e573570..dc99ccdb2c48 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: cache-node-modules: true - name: Install node modules @@ -54,13 +54,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -77,13 +77,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -100,13 +100,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -124,13 +124,13 @@ jobs: runs-on: ubuntu-latest-16core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -147,13 +147,13 @@ jobs: runs-on: ubuntu-latest-16core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -170,13 +170,13 @@ jobs: runs-on: ubuntu-latest-4core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Install node modules run: pnpm install --frozen-lockfile - name: Build and Verify Release Output @@ -201,7 +201,7 @@ jobs: runs-on: ubuntu-latest-4core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: cache-node-modules: true # See: https://github.com/puppeteer/puppeteer/pull/13196 and @@ -209,9 +209,9 @@ jobs: - name: Disable AppArmor run: echo 0 | sudo tee /proc/sys/kernel/apparmor_restrict_unprivileged_userns - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Install node modules run: pnpm install --frozen-lockfile - name: Build and Verify Release Output @@ -239,14 +239,14 @@ jobs: CI_RUNNER_NUMBER: ${{ github.run_id }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: cache-node-modules: true - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Browserstack Variables - uses: angular/dev-infra/github-actions/browserstack@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/browserstack@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Run tests on Browserstack run: ./scripts/circleci/run-browserstack-tests.sh diff --git a/.github/workflows/deploy-dev-app-main-push.yml b/.github/workflows/deploy-dev-app-main-push.yml index 40785ad84b59..b74d9dfe8266 100644 --- a/.github/workflows/deploy-dev-app-main-push.yml +++ b/.github/workflows/deploy-dev-app-main-push.yml @@ -17,13 +17,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Install node modules run: pnpm install --frozen-lockfile diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index 0df50a6e8059..728a5fb9059b 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -12,13 +12,13 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/commit-message-based-labels@057595fcd4031441d5a9b1d31bf0ced68073832f + - uses: angular/dev-infra/github-actions/commit-message-based-labels@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/post-approval-changes@057595fcd4031441d5a9b1d31bf0ced68073832f + - uses: angular/dev-infra/github-actions/post-approval-changes@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/docs-preview-build.yml b/.github/workflows/docs-preview-build.yml index b620887b6557..4b66faa89e14 100644 --- a/.github/workflows/docs-preview-build.yml +++ b/.github/workflows/docs-preview-build.yml @@ -21,16 +21,16 @@ jobs: (github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'docs: preview')) steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Install node modules run: pnpm install --frozen-lockfile - name: Build docs site run: pnpm bazel build //docs:build.production - - uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@057595fcd4031441d5a9b1d31bf0ced68073832f + - uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: workflow-artifact-name: 'docs-preview' pull-number: '${{github.event.pull_request.number}}' diff --git a/.github/workflows/docs-preview-deploy.yml b/.github/workflows/docs-preview-deploy.yml index c3c9287248d4..0c5b5b82b0b2 100644 --- a/.github/workflows/docs-preview-deploy.yml +++ b/.github/workflows/docs-preview-deploy.yml @@ -40,7 +40,7 @@ jobs: npx -y firebase-tools@latest target:clear --config docs/firebase.json --project ${{env.PREVIEW_PROJECT}} hosting mat-aio npx -y firebase-tools@latest target:apply --config docs/firebase.json --project ${{env.PREVIEW_PROJECT}} hosting mat-aio ${{env.PREVIEW_SITE}} - - uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@057595fcd4031441d5a9b1d31bf0ced68073832f + - uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: github-token: '${{secrets.GITHUB_TOKEN}}' workflow-artifact-name: 'docs-preview' diff --git a/.github/workflows/google-internal-tests.yml b/.github/workflows/google-internal-tests.yml index be10c01fb73b..f939dfc6f796 100644 --- a/.github/workflows/google-internal-tests.yml +++ b/.github/workflows/google-internal-tests.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/google-internal-tests@057595fcd4031441d5a9b1d31bf0ced68073832f + - uses: angular/dev-infra/github-actions/google-internal-tests@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: run-tests-guide-url: http://go/angular-material-presubmit github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/pr.material-aio.yml b/.github/workflows/pr.material-aio.yml index a97fc5506d71..238707a1cbc8 100644 --- a/.github/workflows/pr.material-aio.yml +++ b/.github/workflows/pr.material-aio.yml @@ -19,11 +19,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Install node modules run: pnpm install --frozen-lockfile - name: Execute Build @@ -33,11 +33,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Install node modules run: pnpm install --frozen-lockfile - name: Execute Tests @@ -54,11 +54,11 @@ jobs: runs-on: ubuntu-22.04 # Note, fails on Ubuntu 24.04. see https://github.com/actions/runner-images/issues/10636 steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Install node modules run: pnpm install --frozen-lockfile - name: Execute Lighthouse Audit diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index a7f7e1738ac6..438a200e16a4 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: cache-node-modules: true - name: Install node modules @@ -45,7 +45,7 @@ jobs: - name: Check code format run: pnpm ng-dev format changed --check ${{ github.event.pull_request.base.sha }} - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/linting/licenses@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b # Commit message check is last intentionally, because the caretaker can fix it # during merge, while other lint failures have to be resolved by the PR author. - name: Check commit message @@ -55,13 +55,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Install node modules run: pnpm install --frozen-lockfile - name: Check API Goldens @@ -71,13 +71,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Install node modules run: pnpm install --frozen-lockfile - name: Run e2e tests @@ -87,13 +87,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Install node modules run: pnpm install --frozen-lockfile - name: Run integration tests @@ -103,13 +103,13 @@ jobs: runs-on: ubuntu-latest-16core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Install node modules run: pnpm install --frozen-lockfile - name: Run tests @@ -119,13 +119,13 @@ jobs: runs-on: ubuntu-latest-16core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Install node modules run: pnpm install --frozen-lockfile - name: Run tests @@ -135,13 +135,13 @@ jobs: runs-on: ubuntu-latest-4core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Install node modules run: pnpm install --frozen-lockfile - name: Build and Verify Release Output @@ -164,7 +164,7 @@ jobs: CI_RUNNER_NUMBER: ${{ github.run_id }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: cache-node-modules: true # Checking out the pull request commit is intended here as we need to run the changed code tests. @@ -172,8 +172,8 @@ jobs: - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Browserstack Variables - uses: angular/dev-infra/github-actions/browserstack@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/browserstack@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Run tests on Browserstack run: ./scripts/circleci/run-browserstack-tests.sh diff --git a/.github/workflows/preview-build-dev-app.yml b/.github/workflows/preview-build-dev-app.yml index 9fa77e840d8e..80df7a80f5e3 100644 --- a/.github/workflows/preview-build-dev-app.yml +++ b/.github/workflows/preview-build-dev-app.yml @@ -23,18 +23,18 @@ jobs: (github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'dev-app preview')) steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b # Build the web package - run: bazel build //src/dev-app:web_package --symlink_prefix=dist/ - - uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@057595fcd4031441d5a9b1d31bf0ced68073832f + - uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: workflow-artifact-name: 'dev-app' pull-number: '${{github.event.pull_request.number}}' diff --git a/.github/workflows/preview-deploy-dev-app.yml b/.github/workflows/preview-deploy-dev-app.yml index 02362e31cbf4..d131747b2d71 100644 --- a/.github/workflows/preview-deploy-dev-app.yml +++ b/.github/workflows/preview-deploy-dev-app.yml @@ -33,7 +33,7 @@ jobs: npx -y firebase-tools@latest target:clear --project ${{env.PREVIEW_PROJECT}} hosting dev-app npx -y firebase-tools@latest target:apply --project ${{env.PREVIEW_PROJECT}} hosting dev-app ${{env.PREVIEW_SITE}} - - uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@057595fcd4031441d5a9b1d31bf0ced68073832f + - uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: github-token: '${{secrets.GITHUB_TOKEN}}' workflow-artifact-name: 'dev-app' diff --git a/.github/workflows/scheduled-ci.yml b/.github/workflows/scheduled-ci.yml index 5eb51dfe0f16..88403cb1d267 100644 --- a/.github/workflows/scheduled-ci.yml +++ b/.github/workflows/scheduled-ci.yml @@ -19,13 +19,13 @@ jobs: runs-on: ubuntu-latest-4core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Setting up Angular snapshot builds @@ -46,13 +46,13 @@ jobs: runs-on: ubuntu-latest-4core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Setting up Angular snapshot builds @@ -75,7 +75,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@057595fcd4031441d5a9b1d31bf0ced68073832f + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b with: cache-node-modules: true # See: https://github.com/puppeteer/puppeteer/pull/13196 and diff --git a/WORKSPACE b/WORKSPACE index 9ac2054e8634..b9ef8783138a 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -189,7 +189,7 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( name = "devinfra", - commit = "90560ac34ffbb40189d98d8e54110e9c43575761", + commit = "a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/integration/harness-e2e-cli/package.json b/integration/harness-e2e-cli/package.json index 9db7d9bd2e76..216bbedeb986 100644 --- a/integration/harness-e2e-cli/package.json +++ b/integration/harness-e2e-cli/package.json @@ -13,23 +13,23 @@ }, "private": true, "dependencies": { - "@angular/animations": "20.0.0-rc.0", + "@angular/animations": "20.0.0-rc.1", "@angular/cdk": "next", - "@angular/common": "20.0.0-rc.0", - "@angular/compiler": "20.0.0-rc.0", - "@angular/core": "20.0.0-rc.0", - "@angular/forms": "20.0.0-rc.0", + "@angular/common": "20.0.0-rc.1", + "@angular/compiler": "20.0.0-rc.1", + "@angular/core": "20.0.0-rc.1", + "@angular/forms": "20.0.0-rc.1", "@angular/material": "next", - "@angular/platform-browser": "20.0.0-rc.0", - "@angular/router": "20.0.0-rc.0", + "@angular/platform-browser": "20.0.0-rc.1", + "@angular/router": "20.0.0-rc.1", "rxjs": "^7.5.5", "tslib": "^2.3.0", "zone.js": "~0.15.0" }, "devDependencies": { - "@angular-devkit/build-angular": "20.0.0-rc.0", - "@angular/cli": "20.0.0-rc.0", - "@angular/compiler-cli": "20.0.0-rc.0", + "@angular-devkit/build-angular": "20.0.0-rc.2", + "@angular/cli": "20.0.0-rc.2", + "@angular/compiler-cli": "20.0.0-rc.1", "@types/jasmine": "5.1.7", "@types/node": "22.14.0", "@types/selenium-webdriver": "3.0.19", diff --git a/integration/harness-e2e-cli/pnpm-lock.yaml b/integration/harness-e2e-cli/pnpm-lock.yaml index 4e1dbd468026..47e4cbded65f 100644 --- a/integration/harness-e2e-cli/pnpm-lock.yaml +++ b/integration/harness-e2e-cli/pnpm-lock.yaml @@ -1,7 +1,7 @@ lockfileVersion: '9.0' settings: - autoInstallPeers: true + autoInstallPeers: false excludeLinksFromLockfile: false importers: @@ -9,32 +9,32 @@ importers: .: dependencies: '@angular/animations': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/cdk': specifier: next - version: 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + version: 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/common': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0 + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1 '@angular/core': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) '@angular/forms': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@angular/material': specifier: next - version: 20.0.0-rc.0(s3hqhtlo3u2ktlkecz27drcsye) + version: 20.0.0-rc.1(vzxpbajw2jndwn34orz6nopaeu) '@angular/platform-browser': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/router': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) rxjs: specifier: ^7.5.5 version: 7.8.2 @@ -46,14 +46,14 @@ importers: version: 0.15.0 devDependencies: '@angular-devkit/build-angular': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.0)(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(typescript@5.8.3)(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0)) + specifier: 20.0.0-rc.2 + version: 20.0.0-rc.2(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.1)(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(typescript@5.8.3)(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)) '@angular/cli': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@types/node@22.14.0)(chokidar@4.0.3) + specifier: 20.0.0-rc.2 + version: 20.0.0-rc.2(@types/node@22.14.0)(chokidar@4.0.3) '@angular/compiler-cli': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3) + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3) '@types/jasmine': specifier: 5.1.7 version: 5.1.7 @@ -108,12 +108,12 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2000.0-rc.0': - resolution: {integrity: sha512-O3sVOvEou7+d0YbIE/OzHs6EU/xrHjSwi3z1djyNSJflhwTe6qyY4wdzdggwWt6z6iS5sLsMolsnhR6hYfuK+A==} + '@angular-devkit/architect@0.2000.0-rc.2': + resolution: {integrity: sha512-Djnp29FKGZvfNBY6CZOTMV0RCpKWcukHTH0q1FZMAqCQX56At9828AvPDssKsSs5+ngq3LVIHLBNaPAqMULE0Q==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/build-angular@20.0.0-rc.0': - resolution: {integrity: sha512-dFiKXZTPV2Uiq938eHSxepCrZKPY3ZbS3L08Q6bgPTInq1hFIceaVty7Ujq90PD6DYEaY3bGKv+aynN8occcCw==} + '@angular-devkit/build-angular@20.0.0-rc.2': + resolution: {integrity: sha512-CrAfBf4GsE2ZEk95Mi5Z+Gv71K0ovWCZ6fxnXtSNll+LW0cdhUeDekkKla3yUk6gVdIIP6hJEe4ggWVd+uffcw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 || ^20.0.0-next.0 @@ -122,7 +122,7 @@ packages: '@angular/platform-browser': ^20.0.0 || ^20.0.0-next.0 '@angular/platform-server': ^20.0.0 || ^20.0.0-next.0 '@angular/service-worker': ^20.0.0 || ^20.0.0-next.0 - '@angular/ssr': ^20.0.0-rc.0 + '@angular/ssr': ^20.0.0-rc.2 '@web/test-runner': ^0.20.0 browser-sync: ^3.0.2 jest: ^29.5.0 @@ -162,15 +162,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2000.0-rc.0': - resolution: {integrity: sha512-pejJMhyzxetoJ5GpXOkybh6oJOPgKs+wMLA/U3F4oxT4EpwcUY+kl0VoANtqDDkHEC1cDmsWzI6XyBesmIQIfw==} + '@angular-devkit/build-webpack@0.2000.0-rc.2': + resolution: {integrity: sha512-ZH9QpGVSiXICPxI0O+aT/eFPmlNINOrl2rALFeFHyZY7DtkI5e5BLffCMw4LMD37mu81tAwYfbjC16WJQ1bQjA==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@20.0.0-rc.0': - resolution: {integrity: sha512-Crj0G0occyB1ftUQoAj4ONouJuQ336FryWhehslIzZCOGxzwPWUw/ersaIKHmGr80sQ39fL4iUUaiFmm5EyG/A==} + '@angular-devkit/core@20.0.0-rc.2': + resolution: {integrity: sha512-BGCSAIyUkGiuLQOqVjmBODRdVIJYc1RsO5GQzGmn0kZBsehu+RiELLhhbgfrSUJil0gJxgMML4x4vgIUofBEEQ==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -178,19 +178,19 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@20.0.0-rc.0': - resolution: {integrity: sha512-VJMahL7uvTT4L5fzzIrcv4bSnsXQG+2HNLQK4EWmG4j2vdKOcpCXL6EbE+ZD2ZDSqmNGSIAV0YHnsMD7mjTNYw==} + '@angular-devkit/schematics@20.0.0-rc.2': + resolution: {integrity: sha512-VmpjYyCfFL39gl1wVDR8cikpjJj6WUlGe18N1LjJEUcwVjeoYsLQyxurM6JTv2IfyfYsIbr2FwpOpdajvzWEBQ==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/animations@20.0.0-rc.0': - resolution: {integrity: sha512-+vrpMe9NJ4QmW8iBh/cf/9sDHTOcJk7UW4jCf8y9s9HLk38MgUiCE0WAZz6RmnIrFGUCfewPzp9OsSf8duG4ww==} + '@angular/animations@20.0.0-rc.1': + resolution: {integrity: sha512-SpHzz05VBhS+bGC8KOzdPbDDs87gTHR/UvvSIyAmLnFyX6QhpHV+a4+SQH1AxQAbHlj9DcpOdd3fAPL8kjqcRw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.0.0-rc.0 - '@angular/core': 20.0.0-rc.0 + '@angular/common': 20.0.0-rc.1 + '@angular/core': 20.0.0-rc.1 - '@angular/build@20.0.0-rc.0': - resolution: {integrity: sha512-cVKDaoloiiN06dMnsS0ARDP5QMKVpQSijTBHr2Fpvxi6615rTEQAhj/VgTECVYhkRRNm4cILP1RX1KvqWkawEA==} + '@angular/build@20.0.0-rc.2': + resolution: {integrity: sha512-vif6SJFtKsdHCMZElaSEo0ghNqtWhnRGvz0s07Y2+YCPEXEzzFh9aMtehWEYwltrbSev4hU3cbfFN7q14vXMZA==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^20.0.0 || ^20.0.0-next.0 @@ -200,7 +200,7 @@ packages: '@angular/platform-browser': ^20.0.0 || ^20.0.0-next.0 '@angular/platform-server': ^20.0.0 || ^20.0.0-next.0 '@angular/service-worker': ^20.0.0 || ^20.0.0-next.0 - '@angular/ssr': ^20.0.0-rc.0 + '@angular/ssr': ^20.0.0-rc.2 karma: ^6.4.0 less: ^4.2.0 ng-packagr: ^20.0.0 || ^20.0.0-next.0 @@ -235,115 +235,99 @@ packages: vitest: optional: true - '@angular/cdk@20.0.0-rc.0': - resolution: {integrity: sha512-dvSacjyg5+6GCQiQpXIfguFcjrtR2R0uweUL8R9ZpGRi35jA0HqUYYY99asqyvhMS/G7F0etxRaPWu/d6sHpzg==} + '@angular/cdk@20.0.0-rc.1': + resolution: {integrity: sha512-YlY5uKCfuMm98YGGunFOcpdr8hgEtOlXSs7i6oCSnXll0IxngcbKt2OpnEWqGMSxhVbJ3/B+/SK/8goBui5tVw==} peerDependencies: '@angular/common': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/core': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/cli@20.0.0-rc.0': - resolution: {integrity: sha512-fP+OWXhxjNVHSQbofoQv5mEB1JKc+Dh/q/1tUMk+T2VM3QsMZpelWRXb3Wk6jlScwDMChyr3VjaEngAUnoEF3A==} + '@angular/cli@20.0.0-rc.2': + resolution: {integrity: sha512-/XbwlcuEWhGYJj1TX46/lvcctUd0McphlQa27sMMeNnveuPWYmW1RptbRGT8GF47Fqrlcxzg03rgtqKVYSevYw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/common@20.0.0-rc.0': - resolution: {integrity: sha512-aaEjRPtVv0DF3q6wPHRfephY1kMYTefmFH35z+hzcUVIrVyYQdT/LIUX3L+C9ITfYyLmFWlENf3HxmVUILfXAg==} + '@angular/common@20.0.0-rc.1': + resolution: {integrity: sha512-hmqK/vxTmbtnS107Qe6hl+ecrJek5Xou8oNlAAXZuxLg+DEy46KMHGOybwcVXiGfFTOSdpBZfab6wFnfqVAEpw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/core': 20.0.0-rc.0 + '@angular/core': 20.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@20.0.0-rc.0': - resolution: {integrity: sha512-0+nEw4JXRSdBPDJvtBwQlMYd3dVsM0XOzc1hpg+1E7RWIXsxGb2WE8gEvNjNdR0oE7kjdUWSOKlDMJfE3AWVLA==} + '@angular/compiler-cli@20.0.0-rc.1': + resolution: {integrity: sha512-sD2HmxJkTfzvC7rYbb4BfrZFQgtP2madldrPRd1cBXDyC1P65fIDjgccswfezYTe4EnBkQUDB7nH2ToRISm1xw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 20.0.0-rc.0 + '@angular/compiler': 20.0.0-rc.1 typescript: '>=5.8 <5.9' - '@angular/compiler@20.0.0-rc.0': - resolution: {integrity: sha512-MJ2rJVQ/H6m9P3kIL9+wrwLnY2N48GM6vBhZ5+hVvtTPKLM0qcMwfTd/1SaG5e17tpg4mDWcr+pmnoGFgkXHvg==} + '@angular/compiler@20.0.0-rc.1': + resolution: {integrity: sha512-M4VAmo9G43M0OjxU9h3ih9x+dD3oKlbpI40Sb3LdCnBxyH5SzFxYBXR+NaPlo+UbtFsq7BUZ5CYVVo5k+xvF+Q==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} - '@angular/core@20.0.0-rc.0': - resolution: {integrity: sha512-RKIXYA129vdrRKrnac2XOgpWuYusWqwM4KsQ7b5qKIMZabJ0a2GoOlezT6+NhPkOSsyygYuZtaia5wzQeU1acA==} + '@angular/core@20.0.0-rc.1': + resolution: {integrity: sha512-kboL1+ykpCMsX8IGg+DicrtFRpzI+7yvaRJvPunNtl980rYMrzl9XarZfhgltMshc0h2hfC+2PlD3PNCeOBkQg==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 20.0.0-rc.0 + '@angular/compiler': 20.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 peerDependenciesMeta: '@angular/compiler': optional: true - '@angular/forms@20.0.0-rc.0': - resolution: {integrity: sha512-RH95gg+WBBHS+m6y2XDTCCUZMg6Xih1Y4G91tnBdzSxV32evqyNDrSA9IxOhC6Ztxcd+2aLg1S1hsaiMbF2Alw==} + '@angular/forms@20.0.0-rc.1': + resolution: {integrity: sha512-AW0jInUY+M+Erbi3ir/p3lTK4y4zlwc+KeqMRhsEK7cplWuSXmXrans3onAJSrU1knVsdzq0mq+1PrcQeVR+hA==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.0.0-rc.0 - '@angular/core': 20.0.0-rc.0 - '@angular/platform-browser': 20.0.0-rc.0 + '@angular/common': 20.0.0-rc.1 + '@angular/core': 20.0.0-rc.1 + '@angular/platform-browser': 20.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 - '@angular/material@20.0.0-rc.0': - resolution: {integrity: sha512-Z6uaTLaTdfMoT2RnL8GB1na/n2/0d9Dk5h2wSsymyZFJz/U20btCQuor9Cvb/mUlrPs/uu/5SWDMpigRXlaomg==} + '@angular/material@20.0.0-rc.1': + resolution: {integrity: sha512-chD273pzqc1ghOP5dwPXaftcfn4vwDL43VZT1Vl2CFSy9+A3Bnd1MB1O0VVrUYQe1bi38TCJ9QwZjPmCOAOzHQ==} peerDependencies: - '@angular/cdk': 20.0.0-rc.0 + '@angular/cdk': 20.0.0-rc.1 '@angular/common': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/core': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/forms': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/platform-browser': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/platform-browser@20.0.0-rc.0': - resolution: {integrity: sha512-mu2g1PNJkGCJxyCA366nGQt3abX9jx+VTcPR1PRaLqY/sGzA42sYJTG/M74CIpfnx9Sxb1hD3/XCB3xbN5rPhw==} + '@angular/platform-browser@20.0.0-rc.1': + resolution: {integrity: sha512-p5Eo8IBanauJ/2ZROrq08lvtkz3e2luNWJqQMUUvqDWn5NVwAMNBPIK+YTMw7ZpQIABy00ZlAuCiwNPvSTCxig==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/animations': 20.0.0-rc.0 - '@angular/common': 20.0.0-rc.0 - '@angular/core': 20.0.0-rc.0 + '@angular/animations': 20.0.0-rc.1 + '@angular/common': 20.0.0-rc.1 + '@angular/core': 20.0.0-rc.1 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/router@20.0.0-rc.0': - resolution: {integrity: sha512-QkViBejo2xZwyGMHcM7NJh8QxhrAEeNq58Yoph6owzGb1/LMArVvZgoJAJC8HW3ojHN8xFUIfgxM4sFjjcw0dA==} + '@angular/router@20.0.0-rc.1': + resolution: {integrity: sha512-UH3fFlRm2A3Yc1irwEjUZJvhM5kETAqmmEPGPOaG5CIv+A00slK8jh2RbFfTuUpZ1BoVHQyH/5aPSaVzIS7Csg==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.0.0-rc.0 - '@angular/core': 20.0.0-rc.0 - '@angular/platform-browser': 20.0.0-rc.0 + '@angular/common': 20.0.0-rc.1 + '@angular/core': 20.0.0-rc.1 + '@angular/platform-browser': 20.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 - '@babel/code-frame@7.26.2': - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} - '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.26.8': - resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} - engines: {node: '>=6.9.0'} - '@babel/compat-data@7.27.2': resolution: {integrity: sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==} engines: {node: '>=6.9.0'} - '@babel/core@7.26.10': - resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} - engines: {node: '>=6.9.0'} - '@babel/core@7.27.1': resolution: {integrity: sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==} engines: {node: '>=6.9.0'} - '@babel/generator@7.27.0': - resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} - engines: {node: '>=6.9.0'} - '@babel/generator@7.27.1': resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} engines: {node: '>=6.9.0'} @@ -352,10 +336,6 @@ packages: resolution: {integrity: sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.27.0': - resolution: {integrity: sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==} - engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.27.2': resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} @@ -366,12 +346,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.27.0': - resolution: {integrity: sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.27.1': resolution: {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==} engines: {node: '>=6.9.0'} @@ -387,20 +361,10 @@ packages: resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.25.9': - resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} - engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.27.1': resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.26.0': - resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-module-transforms@7.27.1': resolution: {integrity: sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==} engines: {node: '>=6.9.0'} @@ -435,26 +399,14 @@ packages: resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.25.9': - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.27.1': resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.25.9': - resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.27.1': resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} @@ -463,19 +415,10 @@ packages: resolution: {integrity: sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.27.0': - resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==} - engines: {node: '>=6.9.0'} - '@babel/helpers@7.27.1': resolution: {integrity: sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==} engines: {node: '>=6.9.0'} - '@babel/parser@7.27.0': - resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.27.2': resolution: {integrity: sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==} engines: {node: '>=6.0.0'} @@ -852,34 +795,18 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - '@babel/runtime@7.27.0': - resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} - engines: {node: '>=6.9.0'} - '@babel/runtime@7.27.1': resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} engines: {node: '>=6.9.0'} - '@babel/template@7.27.0': - resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} - engines: {node: '>=6.9.0'} - '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.27.0': - resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} - engines: {node: '>=6.9.0'} - '@babel/traverse@7.27.1': resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==} engines: {node: '>=6.9.0'} - '@babel/types@7.27.0': - resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} - engines: {node: '>=6.9.0'} - '@babel/types@7.27.1': resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} engines: {node: '>=6.9.0'} @@ -1052,17 +979,8 @@ packages: '@hapi/topo@5.1.0': resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - '@inquirer/checkbox@4.1.5': - resolution: {integrity: sha512-swPczVU+at65xa5uPfNP9u3qx/alNwiaykiI/ExpsmMSQW55trmZcwhYWzw/7fj+n6Q8z1eENvR7vFfq9oPSAQ==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@inquirer/confirm@5.1.9': - resolution: {integrity: sha512-NgQCnHqFTjF7Ys2fsqK2WtnA8X1kHyInyG+nMIuHowVTIgIuS10T4AznI/PvbqSpJqjCUqNBlKGh1v3bwLFL4w==} + '@inquirer/checkbox@4.1.6': + resolution: {integrity: sha512-62u896rWCtKKE43soodq5e/QcRsA22I+7/4Ov7LESWnKRO6BVo2A1DFLDmXL9e28TB0CfHc3YtkbPm7iwajqkg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1070,8 +988,8 @@ packages: '@types/node': optional: true - '@inquirer/core@10.1.10': - resolution: {integrity: sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==} + '@inquirer/confirm@5.1.10': + resolution: {integrity: sha512-FxbQ9giWxUWKUk2O5XZ6PduVnH2CZ/fmMKMBkH71MHJvWr7WL5AHKevhzF1L5uYWB2P548o1RzVxrNd3dpmk6g==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1088,8 +1006,8 @@ packages: '@types/node': optional: true - '@inquirer/editor@4.2.10': - resolution: {integrity: sha512-5GVWJ+qeI6BzR6TIInLP9SXhWCEcvgFQYmcRG6d6RIlhFjM5TyG18paTGBgRYyEouvCmzeco47x9zX9tQEofkw==} + '@inquirer/editor@4.2.11': + resolution: {integrity: sha512-YoZr0lBnnLFPpfPSNsQ8IZyKxU47zPyVi9NLjCWtna52//M/xuL0PGPAxHxxYhdOhnvY2oBafoM+BI5w/JK7jw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1097,8 +1015,8 @@ packages: '@types/node': optional: true - '@inquirer/expand@4.0.12': - resolution: {integrity: sha512-jV8QoZE1fC0vPe6TnsOfig+qwu7Iza1pkXoUJ3SroRagrt2hxiL+RbM432YAihNR7m7XnU0HWl/WQ35RIGmXHw==} + '@inquirer/expand@4.0.13': + resolution: {integrity: sha512-HgYNWuZLHX6q5y4hqKhwyytqAghmx35xikOGY3TcgNiElqXGPas24+UzNPOwGUZa5Dn32y25xJqVeUcGlTv+QQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1110,8 +1028,8 @@ packages: resolution: {integrity: sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==} engines: {node: '>=18'} - '@inquirer/input@4.1.9': - resolution: {integrity: sha512-mshNG24Ij5KqsQtOZMgj5TwEjIf+F2HOESk6bjMwGWgcH5UBe8UoljwzNFHqdMbGYbgAf6v2wU/X9CAdKJzgOA==} + '@inquirer/input@4.1.10': + resolution: {integrity: sha512-kV3BVne3wJ+j6reYQUZi/UN9NZGZLxgc/tfyjeK3mrx1QI7RXPxGp21IUTv+iVHcbP4ytZALF8vCHoxyNSC6qg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1119,8 +1037,8 @@ packages: '@types/node': optional: true - '@inquirer/number@3.0.12': - resolution: {integrity: sha512-7HRFHxbPCA4e4jMxTQglHJwP+v/kpFsCf2szzfBHy98Wlc3L08HL76UDiA87TOdX5fwj2HMOLWqRWv9Pnn+Z5Q==} + '@inquirer/number@3.0.13': + resolution: {integrity: sha512-IrLezcg/GWKS8zpKDvnJ/YTflNJdG0qSFlUM/zNFsdi4UKW/CO+gaJpbMgQ20Q58vNKDJbEzC6IebdkprwL6ew==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1128,8 +1046,8 @@ packages: '@types/node': optional: true - '@inquirer/password@4.0.12': - resolution: {integrity: sha512-FlOB0zvuELPEbnBYiPaOdJIaDzb2PmJ7ghi/SVwIHDDSQ2K4opGBkF+5kXOg6ucrtSUQdLhVVY5tycH0j0l+0g==} + '@inquirer/password@4.0.13': + resolution: {integrity: sha512-NN0S/SmdhakqOTJhDwOpeBEEr8VdcYsjmZHDb0rblSh2FcbXQOr+2IApP7JG4WE3sxIdKytDn4ed3XYwtHxmJQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1137,8 +1055,8 @@ packages: '@types/node': optional: true - '@inquirer/prompts@7.5.0': - resolution: {integrity: sha512-tk8Bx7l5AX/CR0sVfGj3Xg6v7cYlFBkEahH+EgBB+cZib6Fc83dwerTbzj7f2+qKckjIUGsviWRI1d7lx6nqQA==} + '@inquirer/prompts@7.5.1': + resolution: {integrity: sha512-5AOrZPf2/GxZ+SDRZ5WFplCA2TAQgK3OYrXCYmJL5NaTu4ECcoWFlfUZuw7Es++6Njv7iu/8vpYJhuzxUH76Vg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1155,8 +1073,8 @@ packages: '@types/node': optional: true - '@inquirer/search@3.0.12': - resolution: {integrity: sha512-H/kDJA3kNlnNIjB8YsaXoQI0Qccgf0Na14K1h8ExWhNmUg2E941dyFPrZeugihEa9AZNW5NdsD/NcvUME83OPQ==} + '@inquirer/search@3.0.13': + resolution: {integrity: sha512-9g89d2c5Izok/Gw/U7KPC3f9kfe5rA1AJ24xxNZG0st+vWekSk7tB9oE+dJv5JXd0ZSijomvW0KPMoBd8qbN4g==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1414,8 +1332,8 @@ packages: resolution: {integrity: sha512-zM0mVWSXE0a0h9aKACLwKmD6nHcRiKrPpCfvaKqG1CqDEyjEawId0ocXxVzPMCAm6kkWr2P025msfxXEnt8UGQ==} engines: {node: '>= 10'} - '@ngtools/webpack@20.0.0-rc.0': - resolution: {integrity: sha512-bawbfDlbvFz6De4oV2n9wpFNTWOSIxmbs+fqZcrSenP1SUiN1iVGRQBibk/q1rvutN0nWdPRsQFmRe4JeTDgkw==} + '@ngtools/webpack@20.0.0-rc.2': + resolution: {integrity: sha512-8TAQA6KNbZSgYcm+CzKvVOl8PY3trazaLMDZMEDFa3KUrQSmrAeZstVJzS54S+ovhc56KXdDmo8ipq7ObPKpAg==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 || ^20.0.0-next.0 @@ -1657,8 +1575,8 @@ packages: cpu: [x64] os: [win32] - '@schematics/angular@20.0.0-rc.0': - resolution: {integrity: sha512-LLsoqOO5waTnqvpa5zI9PyltHr/mKRrzznGzQ5IDDHKk8Vm1KgVd0+MHOPXHPCNPDgARbARM/yXwPa5dqeOYlA==} + '@schematics/angular@20.0.0-rc.2': + resolution: {integrity: sha512-PqZ7qYZKghnDaXM10J80XNlXV5n4fu/1GneYu7GQpJVPe3MIcbk+ooNierZuo0++CkWU7eEIx13e6M70gcREUw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@sideway/address@4.1.5': @@ -1882,19 +1800,9 @@ packages: ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true ajv-formats@3.0.1: resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true ajv-keywords@5.1.0: resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} @@ -2529,14 +2437,6 @@ packages: resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} engines: {node: '>=0.8.0'} - fdir@6.4.3: - resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - fdir@6.4.4: resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} peerDependencies: @@ -3650,9 +3550,6 @@ packages: regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regex-parser@2.3.1: resolution: {integrity: sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==} @@ -3773,18 +3670,14 @@ packages: webpack: optional: true - sass@1.87.0: - resolution: {integrity: sha512-d0NoFH4v6SjEK7BoX810Jsrhj7IQSYHAHLi/iSpgqKc7LaIDshFRlSg5LOymf9FqQhxEHs2W5ZQXlvy0KD45Uw==} + sass@1.88.0: + resolution: {integrity: sha512-sF6TWQqjFvr4JILXzG4ucGOLELkESHL+I5QJhh7CNaE+Yge0SI+ehCatsXhJ7ymU1hAFcIS3/PBpjdIbXoyVbg==} engines: {node: '>=14.0.0'} hasBin: true sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} - schema-utils@4.3.0: - resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} - engines: {node: '>= 10.13.0'} - schema-utils@4.3.2: resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} engines: {node: '>= 10.13.0'} @@ -3813,6 +3706,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + send@0.19.0: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} @@ -4042,8 +3940,8 @@ packages: uglify-js: optional: true - terser@5.39.0: - resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} + terser@5.39.1: + resolution: {integrity: sha512-Mm6+uad0ZuDtcV8/4uOZQDQ8RuiC5Pu+iZRedJtF7yA/27sPL7d++In/AJKpWZlU3SYMPPkVfwetn6sgZ66pUA==} engines: {node: '>=10'} hasBin: true @@ -4056,10 +3954,6 @@ packages: thunky@1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} - tinyglobby@0.2.12: - resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} - engines: {node: '>=12.0.0'} - tinyglobby@0.2.13: resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} engines: {node: '>=12.0.0'} @@ -4441,21 +4335,21 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@angular-devkit/architect@0.2000.0-rc.0(chokidar@4.0.3)': + '@angular-devkit/architect@0.2000.0-rc.2(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.0.0-rc.0(chokidar@4.0.3) + '@angular-devkit/core': 20.0.0-rc.2(chokidar@4.0.3) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.0)(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(typescript@5.8.3)(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0))': + '@angular-devkit/build-angular@20.0.0-rc.2(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.1)(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(typescript@5.8.3)(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1))': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2000.0-rc.0(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.2000.0-rc.0(chokidar@4.0.3)(webpack-dev-server@5.2.1(webpack@5.99.8))(webpack@5.99.8(esbuild@0.25.4)) - '@angular-devkit/core': 20.0.0-rc.0(chokidar@4.0.3) - '@angular/build': 20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.0)(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.3.0)(postcss@8.5.3)(terser@5.39.0)(tslib@2.8.1)(typescript@5.8.3) - '@angular/compiler-cli': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3) + '@angular-devkit/architect': 0.2000.0-rc.2(chokidar@4.0.3) + '@angular-devkit/build-webpack': 0.2000.0-rc.2(chokidar@4.0.3)(webpack-dev-server@5.2.1(webpack@5.99.8(esbuild@0.25.4)))(webpack@5.99.8(esbuild@0.25.4)) + '@angular-devkit/core': 20.0.0-rc.2(chokidar@4.0.3) + '@angular/build': 20.0.0-rc.2(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.1)(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.3.0)(postcss@8.5.3)(terser@5.39.1)(tslib@2.8.1)(typescript@5.8.3) + '@angular/compiler-cli': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3) '@babel/core': 7.27.1 '@babel/generator': 7.27.1 '@babel/helper-annotate-as-pure': 7.27.1 @@ -4466,8 +4360,8 @@ snapshots: '@babel/preset-env': 7.27.2(@babel/core@7.27.1) '@babel/runtime': 7.27.1 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.4)) - '@vitejs/plugin-basic-ssl': 2.0.0(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0)) + '@ngtools/webpack': 20.0.0-rc.2(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.4)) + '@vitejs/plugin-basic-ssl': 2.0.0(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)) ansi-colors: 4.1.3 autoprefixer: 10.4.21(postcss@8.5.3) babel-loader: 10.0.0(@babel/core@7.27.1)(webpack@5.99.8(esbuild@0.25.4)) @@ -4493,23 +4387,23 @@ snapshots: postcss-loader: 8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.4)) resolve-url-loader: 5.0.0 rxjs: 7.8.2 - sass: 1.87.0 - sass-loader: 16.0.5(sass@1.87.0)(webpack@5.99.8(esbuild@0.25.4)) - semver: 7.7.1 + sass: 1.88.0 + sass-loader: 16.0.5(sass@1.88.0)(webpack@5.99.8(esbuild@0.25.4)) + semver: 7.7.2 source-map-loader: 5.0.0(webpack@5.99.8(esbuild@0.25.4)) source-map-support: 0.5.21 - terser: 5.39.0 + terser: 5.39.1 tree-kill: 1.2.2 tslib: 2.8.1 typescript: 5.8.3 webpack: 5.99.8(esbuild@0.25.4) - webpack-dev-middleware: 7.4.2(webpack@5.99.8) - webpack-dev-server: 5.2.1(webpack@5.99.8) + webpack-dev-middleware: 7.4.2(webpack@5.99.8(esbuild@0.25.4)) + webpack-dev-server: 5.2.1(webpack@5.99.8(esbuild@0.25.4)) webpack-merge: 6.0.1 webpack-subresource-integrity: 5.1.0(webpack@5.99.8(esbuild@0.25.4)) optionalDependencies: - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) esbuild: 0.25.4 karma: 6.4.4 transitivePeerDependencies: @@ -4536,19 +4430,19 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2000.0-rc.0(chokidar@4.0.3)(webpack-dev-server@5.2.1(webpack@5.99.8))(webpack@5.99.8(esbuild@0.25.4))': + '@angular-devkit/build-webpack@0.2000.0-rc.2(chokidar@4.0.3)(webpack-dev-server@5.2.1(webpack@5.99.8(esbuild@0.25.4)))(webpack@5.99.8(esbuild@0.25.4))': dependencies: - '@angular-devkit/architect': 0.2000.0-rc.0(chokidar@4.0.3) + '@angular-devkit/architect': 0.2000.0-rc.2(chokidar@4.0.3) rxjs: 7.8.2 webpack: 5.99.8(esbuild@0.25.4) - webpack-dev-server: 5.2.1(webpack@5.99.8) + webpack-dev-server: 5.2.1(webpack@5.99.8(esbuild@0.25.4)) transitivePeerDependencies: - chokidar - '@angular-devkit/core@20.0.0-rc.0(chokidar@4.0.3)': + '@angular-devkit/core@20.0.0-rc.2(chokidar@4.0.3)': dependencies: ajv: 8.17.1 - ajv-formats: 3.0.1(ajv@8.17.1) + ajv-formats: 3.0.1 jsonc-parser: 3.3.1 picomatch: 4.0.2 rxjs: 7.8.2 @@ -4556,9 +4450,9 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics@20.0.0-rc.0(chokidar@4.0.3)': + '@angular-devkit/schematics@20.0.0-rc.2(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.0.0-rc.0(chokidar@4.0.3) + '@angular-devkit/core': 20.0.0-rc.2(chokidar@4.0.3) jsonc-parser: 3.3.1 magic-string: 0.30.17 ora: 5.4.1 @@ -4566,23 +4460,23 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))': + '@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))': dependencies: - '@angular/common': 20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/common': 20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) tslib: 2.8.1 - '@angular/build@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.0)(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.3.0)(postcss@8.5.3)(terser@5.39.0)(tslib@2.8.1)(typescript@5.8.3)': + '@angular/build@20.0.0-rc.2(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.1)(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.3.0)(postcss@8.5.3)(terser@5.39.1)(tslib@2.8.1)(typescript@5.8.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2000.0-rc.0(chokidar@4.0.3) - '@angular/compiler': 20.0.0-rc.0 - '@angular/compiler-cli': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3) + '@angular-devkit/architect': 0.2000.0-rc.2(chokidar@4.0.3) + '@angular/compiler': 20.0.0-rc.1 + '@angular/compiler-cli': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3) '@babel/core': 7.27.1 '@babel/helper-annotate-as-pure': 7.27.1 '@babel/helper-split-export-declaration': 7.24.7 - '@inquirer/confirm': 5.1.9(@types/node@22.14.0) - '@vitejs/plugin-basic-ssl': 2.0.0(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0)) + '@inquirer/confirm': 5.1.10(@types/node@22.14.0) + '@vitejs/plugin-basic-ssl': 2.0.0(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)) beasties: 0.3.3 browserslist: 4.24.4 esbuild: 0.25.4 @@ -4596,17 +4490,17 @@ snapshots: picomatch: 4.0.2 piscina: 5.0.0 rollup: 4.40.2 - sass: 1.87.0 - semver: 7.7.1 + sass: 1.88.0 + semver: 7.7.2 source-map-support: 0.5.21 tinyglobby: 0.2.13 tslib: 2.8.1 typescript: 5.8.3 - vite: 6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0) + vite: 6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1) watchpack: 2.4.2 optionalDependencies: - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) karma: 6.4.4 less: 4.3.0 lmdb: 3.3.0 @@ -4624,22 +4518,22 @@ snapshots: - tsx - yaml - '@angular/cdk@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': + '@angular/cdk@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/common': 20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) parse5: 7.2.1 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/cli@20.0.0-rc.0(@types/node@22.14.0)(chokidar@4.0.3)': + '@angular/cli@20.0.0-rc.2(@types/node@22.14.0)(chokidar@4.0.3)': dependencies: - '@angular-devkit/architect': 0.2000.0-rc.0(chokidar@4.0.3) - '@angular-devkit/core': 20.0.0-rc.0(chokidar@4.0.3) - '@angular-devkit/schematics': 20.0.0-rc.0(chokidar@4.0.3) - '@inquirer/prompts': 7.5.0(@types/node@22.14.0) - '@listr2/prompt-adapter-inquirer': 2.0.22(@inquirer/prompts@7.5.0(@types/node@22.14.0)) - '@schematics/angular': 20.0.0-rc.0(chokidar@4.0.3) + '@angular-devkit/architect': 0.2000.0-rc.2(chokidar@4.0.3) + '@angular-devkit/core': 20.0.0-rc.2(chokidar@4.0.3) + '@angular-devkit/schematics': 20.0.0-rc.2(chokidar@4.0.3) + '@inquirer/prompts': 7.5.1(@types/node@22.14.0) + '@listr2/prompt-adapter-inquirer': 2.0.22(@inquirer/prompts@7.5.1(@types/node@22.14.0)) + '@schematics/angular': 20.0.0-rc.2(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 ini: 5.0.0 jsonc-parser: 3.3.1 @@ -4648,23 +4542,23 @@ snapshots: npm-pick-manifest: 10.0.0 pacote: 20.0.0 resolve: 1.22.10 - semver: 7.7.1 + semver: 7.7.2 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' - chokidar - supports-color - '@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': + '@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3)': + '@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3)': dependencies: - '@angular/compiler': 20.0.0-rc.0 - '@babel/core': 7.26.10 + '@angular/compiler': 20.0.0-rc.1 + '@babel/core': 7.27.1 '@jridgewell/sourcemap-codec': 1.5.0 chokidar: 4.0.3 convert-source-map: 1.9.0 @@ -4676,88 +4570,60 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@20.0.0-rc.0': + '@angular/compiler@20.0.0-rc.1': dependencies: tslib: 2.8.1 - '@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)': + '@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 zone.js: 0.15.0 optionalDependencies: - '@angular/compiler': 20.0.0-rc.0 + '@angular/compiler': 20.0.0-rc.1 - '@angular/forms@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': + '@angular/forms@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/common': 20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/material@20.0.0-rc.0(s3hqhtlo3u2ktlkecz27drcsye)': + '@angular/material@20.0.0-rc.1(vzxpbajw2jndwn34orz6nopaeu)': dependencies: - '@angular/cdk': 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/common': 20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/forms': 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) - '@angular/platform-browser': 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/cdk': 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/common': 20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/forms': 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + '@angular/platform-browser': 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))': + '@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))': dependencies: - '@angular/common': 20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/common': 20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/animations': 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) - '@angular/router@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': + '@angular/router@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/common': 20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@babel/code-frame@7.26.2': - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 - '@babel/code-frame@7.27.1': dependencies: '@babel/helper-validator-identifier': 7.27.1 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.26.8': {} - '@babel/compat-data@7.27.2': {} - '@babel/core@7.26.10': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.27.0 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helpers': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/template': 7.27.0 - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - convert-source-map: 2.0.0 - debug: 4.4.0 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/core@7.27.1': dependencies: '@ampproject/remapping': 2.3.0 @@ -4778,14 +4644,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.27.0': - dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 - '@babel/generator@7.27.1': dependencies: '@babel/parser': 7.27.2 @@ -4798,14 +4656,6 @@ snapshots: dependencies: '@babel/types': 7.27.1 - '@babel/helper-compilation-targets@7.27.0': - dependencies: - '@babel/compat-data': 7.26.8 - '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.4 - lru-cache: 5.1.1 - semver: 6.3.1 - '@babel/helper-compilation-targets@7.27.2': dependencies: '@babel/compat-data': 7.27.2 @@ -4827,13 +4677,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.27.0(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.1 - regexpu-core: 6.2.0 - semver: 6.3.1 - '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.27.1)': dependencies: '@babel/core': 7.27.1 @@ -4844,7 +4687,7 @@ snapshots: '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.27.1)': dependencies: '@babel/core': 7.27.1 - '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 debug: 4.4.0 lodash.debounce: 4.0.8 @@ -4859,13 +4702,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.25.9': - dependencies: - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - transitivePeerDependencies: - - supports-color - '@babel/helper-module-imports@7.27.1': dependencies: '@babel/traverse': 7.27.1 @@ -4873,15 +4709,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.27.0 - transitivePeerDependencies: - - supports-color - '@babel/helper-module-transforms@7.27.1(@babel/core@7.27.1)': dependencies: '@babel/core': 7.27.1 @@ -4924,18 +4751,12 @@ snapshots: '@babel/helper-split-export-declaration@7.24.7': dependencies: - '@babel/types': 7.27.0 - - '@babel/helper-string-parser@7.25.9': {} + '@babel/types': 7.27.1 '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.25.9': {} - '@babel/helper-validator-identifier@7.27.1': {} - '@babel/helper-validator-option@7.25.9': {} - '@babel/helper-validator-option@7.27.1': {} '@babel/helper-wrap-function@7.27.1': @@ -4946,20 +4767,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helpers@7.27.0': - dependencies: - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 - '@babel/helpers@7.27.1': dependencies: '@babel/template': 7.27.2 '@babel/types': 7.27.1 - '@babel/parser@7.27.0': - dependencies: - '@babel/types': 7.27.0 - '@babel/parser@7.27.2': dependencies: '@babel/types': 7.27.1 @@ -5016,7 +4828,7 @@ snapshots: '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.27.1)': dependencies: '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.27.1) + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.27.1)': @@ -5429,39 +5241,17 @@ snapshots: dependencies: '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.27.0 + '@babel/types': 7.27.1 esutils: 2.0.3 - '@babel/runtime@7.27.0': - dependencies: - regenerator-runtime: 0.14.1 - '@babel/runtime@7.27.1': {} - '@babel/template@7.27.0': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 '@babel/parser': 7.27.2 '@babel/types': 7.27.1 - '@babel/traverse@7.27.0': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 - debug: 4.4.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - '@babel/traverse@7.27.1': dependencies: '@babel/code-frame': 7.27.1 @@ -5474,11 +5264,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/types@7.27.0': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/types@7.27.1': dependencies: '@babel/helper-string-parser': 7.27.1 @@ -5573,9 +5358,9 @@ snapshots: dependencies: '@hapi/hoek': 9.3.0 - '@inquirer/checkbox@4.1.5(@types/node@22.14.0)': + '@inquirer/checkbox@4.1.6(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/figures': 1.0.11 '@inquirer/type': 3.0.6(@types/node@22.14.0) ansi-escapes: 4.3.2 @@ -5583,23 +5368,10 @@ snapshots: optionalDependencies: '@types/node': 22.14.0 - '@inquirer/confirm@5.1.9(@types/node@22.14.0)': - dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) - '@inquirer/type': 3.0.6(@types/node@22.14.0) - optionalDependencies: - '@types/node': 22.14.0 - - '@inquirer/core@10.1.10(@types/node@22.14.0)': + '@inquirer/confirm@5.1.10(@types/node@22.14.0)': dependencies: - '@inquirer/figures': 1.0.11 + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/type': 3.0.6(@types/node@22.14.0) - ansi-escapes: 4.3.2 - cli-width: 4.1.0 - mute-stream: 2.0.0 - signal-exit: 4.1.0 - wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.2 optionalDependencies: '@types/node': 22.14.0 @@ -5616,17 +5388,17 @@ snapshots: optionalDependencies: '@types/node': 22.14.0 - '@inquirer/editor@4.2.10(@types/node@22.14.0)': + '@inquirer/editor@4.2.11(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/type': 3.0.6(@types/node@22.14.0) external-editor: 3.1.0 optionalDependencies: '@types/node': 22.14.0 - '@inquirer/expand@4.0.12(@types/node@22.14.0)': + '@inquirer/expand@4.0.13(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/type': 3.0.6(@types/node@22.14.0) yoctocolors-cjs: 2.1.2 optionalDependencies: @@ -5634,39 +5406,39 @@ snapshots: '@inquirer/figures@1.0.11': {} - '@inquirer/input@4.1.9(@types/node@22.14.0)': + '@inquirer/input@4.1.10(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/type': 3.0.6(@types/node@22.14.0) optionalDependencies: '@types/node': 22.14.0 - '@inquirer/number@3.0.12(@types/node@22.14.0)': + '@inquirer/number@3.0.13(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/type': 3.0.6(@types/node@22.14.0) optionalDependencies: '@types/node': 22.14.0 - '@inquirer/password@4.0.12(@types/node@22.14.0)': + '@inquirer/password@4.0.13(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/type': 3.0.6(@types/node@22.14.0) ansi-escapes: 4.3.2 optionalDependencies: '@types/node': 22.14.0 - '@inquirer/prompts@7.5.0(@types/node@22.14.0)': + '@inquirer/prompts@7.5.1(@types/node@22.14.0)': dependencies: - '@inquirer/checkbox': 4.1.5(@types/node@22.14.0) - '@inquirer/confirm': 5.1.9(@types/node@22.14.0) - '@inquirer/editor': 4.2.10(@types/node@22.14.0) - '@inquirer/expand': 4.0.12(@types/node@22.14.0) - '@inquirer/input': 4.1.9(@types/node@22.14.0) - '@inquirer/number': 3.0.12(@types/node@22.14.0) - '@inquirer/password': 4.0.12(@types/node@22.14.0) + '@inquirer/checkbox': 4.1.6(@types/node@22.14.0) + '@inquirer/confirm': 5.1.10(@types/node@22.14.0) + '@inquirer/editor': 4.2.11(@types/node@22.14.0) + '@inquirer/expand': 4.0.13(@types/node@22.14.0) + '@inquirer/input': 4.1.10(@types/node@22.14.0) + '@inquirer/number': 3.0.13(@types/node@22.14.0) + '@inquirer/password': 4.0.13(@types/node@22.14.0) '@inquirer/rawlist': 4.1.1(@types/node@22.14.0) - '@inquirer/search': 3.0.12(@types/node@22.14.0) + '@inquirer/search': 3.0.13(@types/node@22.14.0) '@inquirer/select': 4.2.1(@types/node@22.14.0) optionalDependencies: '@types/node': 22.14.0 @@ -5679,9 +5451,9 @@ snapshots: optionalDependencies: '@types/node': 22.14.0 - '@inquirer/search@3.0.12(@types/node@22.14.0)': + '@inquirer/search@3.0.13(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/figures': 1.0.11 '@inquirer/type': 3.0.6(@types/node@22.14.0) yoctocolors-cjs: 2.1.2 @@ -5766,9 +5538,9 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@2.0.22(@inquirer/prompts@7.5.0(@types/node@22.14.0))': + '@listr2/prompt-adapter-inquirer@2.0.22(@inquirer/prompts@7.5.1(@types/node@22.14.0))': dependencies: - '@inquirer/prompts': 7.5.0(@types/node@22.14.0) + '@inquirer/prompts': 7.5.1(@types/node@22.14.0) '@inquirer/type': 1.5.5 '@lmdb/lmdb-darwin-arm64@3.3.0': @@ -5878,9 +5650,9 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.0.1 optional: true - '@ngtools/webpack@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.4))': + '@ngtools/webpack@20.0.0-rc.2(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.4))': dependencies: - '@angular/compiler-cli': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3) + '@angular/compiler-cli': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3) typescript: 5.8.3 webpack: 5.99.8(esbuild@0.25.4) @@ -5908,7 +5680,7 @@ snapshots: '@npmcli/fs@4.0.0': dependencies: - semver: 7.7.1 + semver: 7.7.2 '@npmcli/git@6.0.3': dependencies: @@ -5918,7 +5690,7 @@ snapshots: npm-pick-manifest: 10.0.0 proc-log: 5.0.0 promise-retry: 2.0.1 - semver: 7.7.1 + semver: 7.7.2 which: 5.0.0 '@npmcli/installed-package-contents@3.0.0': @@ -5935,7 +5707,7 @@ snapshots: hosted-git-info: 8.0.2 json-parse-even-better-errors: 4.0.0 proc-log: 5.0.0 - semver: 7.7.1 + semver: 7.7.2 validate-npm-package-license: 3.0.4 '@npmcli/promise-spawn@8.0.2': @@ -6079,10 +5851,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.40.2': optional: true - '@schematics/angular@20.0.0-rc.0(chokidar@4.0.3)': + '@schematics/angular@20.0.0-rc.2(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.0.0-rc.0(chokidar@4.0.3) - '@angular-devkit/schematics': 20.0.0-rc.0(chokidar@4.0.3) + '@angular-devkit/core': 20.0.0-rc.2(chokidar@4.0.3) + '@angular-devkit/schematics': 20.0.0-rc.2(chokidar@4.0.3) jsonc-parser: 3.3.1 transitivePeerDependencies: - chokidar @@ -6243,9 +6015,9 @@ snapshots: dependencies: '@types/node': 22.14.0 - '@vitejs/plugin-basic-ssl@2.0.0(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0))': + '@vitejs/plugin-basic-ssl@2.0.0(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1))': dependencies: - vite: 6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0) + vite: 6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1) '@webassemblyjs/ast@1.14.1': dependencies: @@ -6349,12 +6121,12 @@ snapshots: agent-base@7.1.3: {} - ajv-formats@2.1.1(ajv@8.17.1): - optionalDependencies: + ajv-formats@2.1.1: + dependencies: ajv: 8.17.1 - ajv-formats@3.0.1(ajv@8.17.1): - optionalDependencies: + ajv-formats@3.0.1: + dependencies: ajv: 8.17.1 ajv-keywords@5.1.0(ajv@8.17.1): @@ -6426,7 +6198,7 @@ snapshots: babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.27.1): dependencies: - '@babel/compat-data': 7.26.8 + '@babel/compat-data': 7.27.2 '@babel/core': 7.27.1 '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.1) semver: 6.3.1 @@ -6704,9 +6476,9 @@ snapshots: dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 - schema-utils: 4.3.0 + schema-utils: 4.3.2 serialize-javascript: 6.0.2 - tinyglobby: 0.2.12 + tinyglobby: 0.2.13 webpack: 5.99.8(esbuild@0.25.4) core-js-compat@3.41.0: @@ -6746,7 +6518,7 @@ snapshots: postcss-modules-scope: 3.2.1(postcss@8.5.3) postcss-modules-values: 4.0.0(postcss@8.5.3) postcss-value-parser: 4.2.0 - semver: 7.7.1 + semver: 7.7.2 optionalDependencies: webpack: 5.99.8(esbuild@0.25.4) @@ -6766,7 +6538,7 @@ snapshots: date-fns@2.30.0: dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.27.1 date-format@4.0.14: {} @@ -7053,10 +6825,6 @@ snapshots: dependencies: websocket-driver: 0.7.4 - fdir@6.4.3(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - fdir@6.4.4(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -7419,7 +7187,7 @@ snapshots: istanbul-lib-instrument@4.0.3: dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -7429,10 +7197,10 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.27.1 - '@babel/parser': 7.27.0 + '@babel/parser': 7.27.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.7.1 + semver: 7.7.2 transitivePeerDependencies: - supports-color @@ -7769,7 +7537,7 @@ snapshots: mini-css-extract-plugin@2.9.2(webpack@5.99.8(esbuild@0.25.4)): dependencies: - schema-utils: 4.3.0 + schema-utils: 4.3.2 tapable: 2.2.1 webpack: 5.99.8(esbuild@0.25.4) @@ -7903,9 +7671,9 @@ snapshots: make-fetch-happen: 14.0.3 nopt: 8.1.0 proc-log: 5.0.0 - semver: 7.7.1 + semver: 7.7.2 tar: 7.4.3 - tinyglobby: 0.2.12 + tinyglobby: 0.2.13 which: 5.0.0 transitivePeerDependencies: - supports-color @@ -7926,7 +7694,7 @@ snapshots: npm-install-checks@7.1.1: dependencies: - semver: 7.7.1 + semver: 7.7.2 npm-normalize-package-bin@4.0.0: {} @@ -7934,7 +7702,7 @@ snapshots: dependencies: hosted-git-info: 8.0.2 proc-log: 5.0.0 - semver: 7.7.1 + semver: 7.7.2 validate-npm-package-name: 6.0.0 npm-packlist@9.0.0: @@ -7946,7 +7714,7 @@ snapshots: npm-install-checks: 7.1.1 npm-normalize-package-bin: 4.0.0 npm-package-arg: 12.0.2 - semver: 7.7.1 + semver: 7.7.2 npm-registry-fetch@18.0.2: dependencies: @@ -8065,7 +7833,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.27.1 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -8121,7 +7889,7 @@ snapshots: cosmiconfig: 9.0.0(typescript@5.8.3) jiti: 1.21.7 postcss: 8.5.3 - semver: 7.7.1 + semver: 7.7.2 optionalDependencies: webpack: 5.99.8(esbuild@0.25.4) transitivePeerDependencies: @@ -8233,8 +8001,6 @@ snapshots: regenerate@1.4.2: {} - regenerator-runtime@0.14.1: {} - regex-parser@2.3.1: {} regexpu-core@6.2.0: @@ -8348,14 +8114,14 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.5(sass@1.87.0)(webpack@5.99.8(esbuild@0.25.4)): + sass-loader@16.0.5(sass@1.88.0)(webpack@5.99.8(esbuild@0.25.4)): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.87.0 + sass: 1.88.0 webpack: 5.99.8(esbuild@0.25.4) - sass@1.87.0: + sass@1.88.0: dependencies: chokidar: 4.0.3 immutable: 5.1.1 @@ -8365,18 +8131,11 @@ snapshots: sax@1.4.1: {} - schema-utils@4.3.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) - ajv-keywords: 5.1.0(ajv@8.17.1) - schema-utils@4.3.2: dependencies: '@types/json-schema': 7.0.15 ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) + ajv-formats: 2.1.1 ajv-keywords: 5.1.0(ajv@8.17.1) select-hose@2.0.0: {} @@ -8400,6 +8159,8 @@ snapshots: semver@7.7.1: {} + semver@7.7.2: {} + send@0.19.0: dependencies: debug: 2.6.9 @@ -8701,18 +8462,18 @@ snapshots: mkdirp: 3.0.1 yallist: 5.0.0 - terser-webpack-plugin@5.3.14(esbuild@0.25.4)(webpack@5.99.8): + terser-webpack-plugin@5.3.14(esbuild@0.25.4)(webpack@5.99.8(esbuild@0.25.4)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 - terser: 5.39.0 + terser: 5.39.1 webpack: 5.99.8(esbuild@0.25.4) optionalDependencies: esbuild: 0.25.4 - terser@5.39.0: + terser@5.39.1: dependencies: '@jridgewell/source-map': 0.3.6 acorn: 8.14.1 @@ -8725,11 +8486,6 @@ snapshots: thunky@1.1.0: {} - tinyglobby@0.2.12: - dependencies: - fdir: 6.4.3(picomatch@4.0.2) - picomatch: 4.0.2 - tinyglobby@0.2.13: dependencies: fdir: 6.4.4(picomatch@4.0.2) @@ -8846,7 +8602,7 @@ snapshots: vary@1.1.2: {} - vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0): + vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1): dependencies: esbuild: 0.25.4 fdir: 6.4.4(picomatch@4.0.2) @@ -8859,8 +8615,8 @@ snapshots: fsevents: 2.3.3 jiti: 1.21.7 less: 4.3.0 - sass: 1.87.0 - terser: 5.39.0 + sass: 1.88.0 + terser: 5.39.1 void-elements@2.0.1: {} @@ -8890,18 +8646,18 @@ snapshots: weak-lru-cache@1.2.2: optional: true - webpack-dev-middleware@7.4.2(webpack@5.99.8): + webpack-dev-middleware@7.4.2(webpack@5.99.8(esbuild@0.25.4)): dependencies: colorette: 2.0.20 memfs: 4.17.0 mime-types: 2.1.35 on-finished: 2.4.1 range-parser: 1.2.1 - schema-utils: 4.3.0 + schema-utils: 4.3.2 optionalDependencies: webpack: 5.99.8(esbuild@0.25.4) - webpack-dev-server@5.2.1(webpack@5.99.8): + webpack-dev-server@5.2.1(webpack@5.99.8(esbuild@0.25.4)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -8924,12 +8680,12 @@ snapshots: launch-editor: 2.10.0 open: 10.1.2 p-retry: 6.2.1 - schema-utils: 4.3.0 + schema-utils: 4.3.2 selfsigned: 2.4.1 serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.99.8) + webpack-dev-middleware: 7.4.2(webpack@5.99.8(esbuild@0.25.4)) ws: 8.18.1 optionalDependencies: webpack: 5.99.8(esbuild@0.25.4) @@ -8975,7 +8731,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.2 tapable: 2.2.1 - terser-webpack-plugin: 5.3.14(esbuild@0.25.4)(webpack@5.99.8) + terser-webpack-plugin: 5.3.14(esbuild@0.25.4)(webpack@5.99.8(esbuild@0.25.4)) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: diff --git a/integration/ng-add-standalone/package.json b/integration/ng-add-standalone/package.json index 027ef076c9df..da7cd2b89e6c 100644 --- a/integration/ng-add-standalone/package.json +++ b/integration/ng-add-standalone/package.json @@ -10,23 +10,23 @@ }, "private": true, "dependencies": { - "@angular/animations": "20.0.0-rc.0", + "@angular/animations": "20.0.0-rc.1", "@angular/cdk": "next", - "@angular/common": "20.0.0-rc.0", - "@angular/compiler": "20.0.0-rc.0", - "@angular/core": "20.0.0-rc.0", - "@angular/forms": "20.0.0-rc.0", + "@angular/common": "20.0.0-rc.1", + "@angular/compiler": "20.0.0-rc.1", + "@angular/core": "20.0.0-rc.1", + "@angular/forms": "20.0.0-rc.1", "@angular/material": "next", - "@angular/platform-browser": "20.0.0-rc.0", - "@angular/router": "20.0.0-rc.0", + "@angular/platform-browser": "20.0.0-rc.1", + "@angular/router": "20.0.0-rc.1", "rxjs": "^7.5.5", "tslib": "^2.3.0", "zone.js": "~0.15.0" }, "devDependencies": { - "@angular-devkit/build-angular": "20.0.0-rc.0", - "@angular/cli": "20.0.0-rc.0", - "@angular/compiler-cli": "20.0.0-rc.0", + "@angular-devkit/build-angular": "20.0.0-rc.2", + "@angular/cli": "20.0.0-rc.2", + "@angular/compiler-cli": "20.0.0-rc.1", "@types/jasmine": "~5.1.7", "@types/node": "22.14.0", "glob": "^7.2.0", diff --git a/integration/ng-add-standalone/pnpm-lock.yaml b/integration/ng-add-standalone/pnpm-lock.yaml index 66eb41c4e542..26d278c8e3e5 100644 --- a/integration/ng-add-standalone/pnpm-lock.yaml +++ b/integration/ng-add-standalone/pnpm-lock.yaml @@ -1,7 +1,7 @@ lockfileVersion: '9.0' settings: - autoInstallPeers: true + autoInstallPeers: false excludeLinksFromLockfile: false importers: @@ -9,32 +9,32 @@ importers: .: dependencies: '@angular/animations': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/cdk': specifier: next - version: 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + version: 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/common': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0 + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1 '@angular/core': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) '@angular/forms': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@angular/material': specifier: next - version: 20.0.0-rc.0(s3hqhtlo3u2ktlkecz27drcsye) + version: 20.0.0-rc.1(vzxpbajw2jndwn34orz6nopaeu) '@angular/platform-browser': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/router': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) rxjs: specifier: ^7.5.5 version: 7.8.2 @@ -46,14 +46,14 @@ importers: version: 0.15.0 devDependencies: '@angular-devkit/build-angular': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.0)(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(typescript@5.8.3)(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0)) + specifier: 20.0.0-rc.2 + version: 20.0.0-rc.2(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.1)(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(typescript@5.8.3)(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)) '@angular/cli': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@types/node@22.14.0)(chokidar@4.0.3) + specifier: 20.0.0-rc.2 + version: 20.0.0-rc.2(@types/node@22.14.0)(chokidar@4.0.3) '@angular/compiler-cli': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3) + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3) '@types/jasmine': specifier: ~5.1.7 version: 5.1.7 @@ -91,12 +91,12 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2000.0-rc.0': - resolution: {integrity: sha512-O3sVOvEou7+d0YbIE/OzHs6EU/xrHjSwi3z1djyNSJflhwTe6qyY4wdzdggwWt6z6iS5sLsMolsnhR6hYfuK+A==} + '@angular-devkit/architect@0.2000.0-rc.2': + resolution: {integrity: sha512-Djnp29FKGZvfNBY6CZOTMV0RCpKWcukHTH0q1FZMAqCQX56At9828AvPDssKsSs5+ngq3LVIHLBNaPAqMULE0Q==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/build-angular@20.0.0-rc.0': - resolution: {integrity: sha512-dFiKXZTPV2Uiq938eHSxepCrZKPY3ZbS3L08Q6bgPTInq1hFIceaVty7Ujq90PD6DYEaY3bGKv+aynN8occcCw==} + '@angular-devkit/build-angular@20.0.0-rc.2': + resolution: {integrity: sha512-CrAfBf4GsE2ZEk95Mi5Z+Gv71K0ovWCZ6fxnXtSNll+LW0cdhUeDekkKla3yUk6gVdIIP6hJEe4ggWVd+uffcw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 || ^20.0.0-next.0 @@ -105,7 +105,7 @@ packages: '@angular/platform-browser': ^20.0.0 || ^20.0.0-next.0 '@angular/platform-server': ^20.0.0 || ^20.0.0-next.0 '@angular/service-worker': ^20.0.0 || ^20.0.0-next.0 - '@angular/ssr': ^20.0.0-rc.0 + '@angular/ssr': ^20.0.0-rc.2 '@web/test-runner': ^0.20.0 browser-sync: ^3.0.2 jest: ^29.5.0 @@ -145,15 +145,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2000.0-rc.0': - resolution: {integrity: sha512-pejJMhyzxetoJ5GpXOkybh6oJOPgKs+wMLA/U3F4oxT4EpwcUY+kl0VoANtqDDkHEC1cDmsWzI6XyBesmIQIfw==} + '@angular-devkit/build-webpack@0.2000.0-rc.2': + resolution: {integrity: sha512-ZH9QpGVSiXICPxI0O+aT/eFPmlNINOrl2rALFeFHyZY7DtkI5e5BLffCMw4LMD37mu81tAwYfbjC16WJQ1bQjA==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@20.0.0-rc.0': - resolution: {integrity: sha512-Crj0G0occyB1ftUQoAj4ONouJuQ336FryWhehslIzZCOGxzwPWUw/ersaIKHmGr80sQ39fL4iUUaiFmm5EyG/A==} + '@angular-devkit/core@20.0.0-rc.2': + resolution: {integrity: sha512-BGCSAIyUkGiuLQOqVjmBODRdVIJYc1RsO5GQzGmn0kZBsehu+RiELLhhbgfrSUJil0gJxgMML4x4vgIUofBEEQ==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -161,19 +161,19 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@20.0.0-rc.0': - resolution: {integrity: sha512-VJMahL7uvTT4L5fzzIrcv4bSnsXQG+2HNLQK4EWmG4j2vdKOcpCXL6EbE+ZD2ZDSqmNGSIAV0YHnsMD7mjTNYw==} + '@angular-devkit/schematics@20.0.0-rc.2': + resolution: {integrity: sha512-VmpjYyCfFL39gl1wVDR8cikpjJj6WUlGe18N1LjJEUcwVjeoYsLQyxurM6JTv2IfyfYsIbr2FwpOpdajvzWEBQ==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/animations@20.0.0-rc.0': - resolution: {integrity: sha512-+vrpMe9NJ4QmW8iBh/cf/9sDHTOcJk7UW4jCf8y9s9HLk38MgUiCE0WAZz6RmnIrFGUCfewPzp9OsSf8duG4ww==} + '@angular/animations@20.0.0-rc.1': + resolution: {integrity: sha512-SpHzz05VBhS+bGC8KOzdPbDDs87gTHR/UvvSIyAmLnFyX6QhpHV+a4+SQH1AxQAbHlj9DcpOdd3fAPL8kjqcRw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.0.0-rc.0 - '@angular/core': 20.0.0-rc.0 + '@angular/common': 20.0.0-rc.1 + '@angular/core': 20.0.0-rc.1 - '@angular/build@20.0.0-rc.0': - resolution: {integrity: sha512-cVKDaoloiiN06dMnsS0ARDP5QMKVpQSijTBHr2Fpvxi6615rTEQAhj/VgTECVYhkRRNm4cILP1RX1KvqWkawEA==} + '@angular/build@20.0.0-rc.2': + resolution: {integrity: sha512-vif6SJFtKsdHCMZElaSEo0ghNqtWhnRGvz0s07Y2+YCPEXEzzFh9aMtehWEYwltrbSev4hU3cbfFN7q14vXMZA==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^20.0.0 || ^20.0.0-next.0 @@ -183,7 +183,7 @@ packages: '@angular/platform-browser': ^20.0.0 || ^20.0.0-next.0 '@angular/platform-server': ^20.0.0 || ^20.0.0-next.0 '@angular/service-worker': ^20.0.0 || ^20.0.0-next.0 - '@angular/ssr': ^20.0.0-rc.0 + '@angular/ssr': ^20.0.0-rc.2 karma: ^6.4.0 less: ^4.2.0 ng-packagr: ^20.0.0 || ^20.0.0-next.0 @@ -218,115 +218,99 @@ packages: vitest: optional: true - '@angular/cdk@20.0.0-rc.0': - resolution: {integrity: sha512-dvSacjyg5+6GCQiQpXIfguFcjrtR2R0uweUL8R9ZpGRi35jA0HqUYYY99asqyvhMS/G7F0etxRaPWu/d6sHpzg==} + '@angular/cdk@20.0.0-rc.1': + resolution: {integrity: sha512-YlY5uKCfuMm98YGGunFOcpdr8hgEtOlXSs7i6oCSnXll0IxngcbKt2OpnEWqGMSxhVbJ3/B+/SK/8goBui5tVw==} peerDependencies: '@angular/common': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/core': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/cli@20.0.0-rc.0': - resolution: {integrity: sha512-fP+OWXhxjNVHSQbofoQv5mEB1JKc+Dh/q/1tUMk+T2VM3QsMZpelWRXb3Wk6jlScwDMChyr3VjaEngAUnoEF3A==} + '@angular/cli@20.0.0-rc.2': + resolution: {integrity: sha512-/XbwlcuEWhGYJj1TX46/lvcctUd0McphlQa27sMMeNnveuPWYmW1RptbRGT8GF47Fqrlcxzg03rgtqKVYSevYw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/common@20.0.0-rc.0': - resolution: {integrity: sha512-aaEjRPtVv0DF3q6wPHRfephY1kMYTefmFH35z+hzcUVIrVyYQdT/LIUX3L+C9ITfYyLmFWlENf3HxmVUILfXAg==} + '@angular/common@20.0.0-rc.1': + resolution: {integrity: sha512-hmqK/vxTmbtnS107Qe6hl+ecrJek5Xou8oNlAAXZuxLg+DEy46KMHGOybwcVXiGfFTOSdpBZfab6wFnfqVAEpw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/core': 20.0.0-rc.0 + '@angular/core': 20.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@20.0.0-rc.0': - resolution: {integrity: sha512-0+nEw4JXRSdBPDJvtBwQlMYd3dVsM0XOzc1hpg+1E7RWIXsxGb2WE8gEvNjNdR0oE7kjdUWSOKlDMJfE3AWVLA==} + '@angular/compiler-cli@20.0.0-rc.1': + resolution: {integrity: sha512-sD2HmxJkTfzvC7rYbb4BfrZFQgtP2madldrPRd1cBXDyC1P65fIDjgccswfezYTe4EnBkQUDB7nH2ToRISm1xw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 20.0.0-rc.0 + '@angular/compiler': 20.0.0-rc.1 typescript: '>=5.8 <5.9' - '@angular/compiler@20.0.0-rc.0': - resolution: {integrity: sha512-MJ2rJVQ/H6m9P3kIL9+wrwLnY2N48GM6vBhZ5+hVvtTPKLM0qcMwfTd/1SaG5e17tpg4mDWcr+pmnoGFgkXHvg==} + '@angular/compiler@20.0.0-rc.1': + resolution: {integrity: sha512-M4VAmo9G43M0OjxU9h3ih9x+dD3oKlbpI40Sb3LdCnBxyH5SzFxYBXR+NaPlo+UbtFsq7BUZ5CYVVo5k+xvF+Q==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} - '@angular/core@20.0.0-rc.0': - resolution: {integrity: sha512-RKIXYA129vdrRKrnac2XOgpWuYusWqwM4KsQ7b5qKIMZabJ0a2GoOlezT6+NhPkOSsyygYuZtaia5wzQeU1acA==} + '@angular/core@20.0.0-rc.1': + resolution: {integrity: sha512-kboL1+ykpCMsX8IGg+DicrtFRpzI+7yvaRJvPunNtl980rYMrzl9XarZfhgltMshc0h2hfC+2PlD3PNCeOBkQg==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 20.0.0-rc.0 + '@angular/compiler': 20.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 peerDependenciesMeta: '@angular/compiler': optional: true - '@angular/forms@20.0.0-rc.0': - resolution: {integrity: sha512-RH95gg+WBBHS+m6y2XDTCCUZMg6Xih1Y4G91tnBdzSxV32evqyNDrSA9IxOhC6Ztxcd+2aLg1S1hsaiMbF2Alw==} + '@angular/forms@20.0.0-rc.1': + resolution: {integrity: sha512-AW0jInUY+M+Erbi3ir/p3lTK4y4zlwc+KeqMRhsEK7cplWuSXmXrans3onAJSrU1knVsdzq0mq+1PrcQeVR+hA==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.0.0-rc.0 - '@angular/core': 20.0.0-rc.0 - '@angular/platform-browser': 20.0.0-rc.0 + '@angular/common': 20.0.0-rc.1 + '@angular/core': 20.0.0-rc.1 + '@angular/platform-browser': 20.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 - '@angular/material@20.0.0-rc.0': - resolution: {integrity: sha512-Z6uaTLaTdfMoT2RnL8GB1na/n2/0d9Dk5h2wSsymyZFJz/U20btCQuor9Cvb/mUlrPs/uu/5SWDMpigRXlaomg==} + '@angular/material@20.0.0-rc.1': + resolution: {integrity: sha512-chD273pzqc1ghOP5dwPXaftcfn4vwDL43VZT1Vl2CFSy9+A3Bnd1MB1O0VVrUYQe1bi38TCJ9QwZjPmCOAOzHQ==} peerDependencies: - '@angular/cdk': 20.0.0-rc.0 + '@angular/cdk': 20.0.0-rc.1 '@angular/common': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/core': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/forms': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/platform-browser': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/platform-browser@20.0.0-rc.0': - resolution: {integrity: sha512-mu2g1PNJkGCJxyCA366nGQt3abX9jx+VTcPR1PRaLqY/sGzA42sYJTG/M74CIpfnx9Sxb1hD3/XCB3xbN5rPhw==} + '@angular/platform-browser@20.0.0-rc.1': + resolution: {integrity: sha512-p5Eo8IBanauJ/2ZROrq08lvtkz3e2luNWJqQMUUvqDWn5NVwAMNBPIK+YTMw7ZpQIABy00ZlAuCiwNPvSTCxig==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/animations': 20.0.0-rc.0 - '@angular/common': 20.0.0-rc.0 - '@angular/core': 20.0.0-rc.0 + '@angular/animations': 20.0.0-rc.1 + '@angular/common': 20.0.0-rc.1 + '@angular/core': 20.0.0-rc.1 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/router@20.0.0-rc.0': - resolution: {integrity: sha512-QkViBejo2xZwyGMHcM7NJh8QxhrAEeNq58Yoph6owzGb1/LMArVvZgoJAJC8HW3ojHN8xFUIfgxM4sFjjcw0dA==} + '@angular/router@20.0.0-rc.1': + resolution: {integrity: sha512-UH3fFlRm2A3Yc1irwEjUZJvhM5kETAqmmEPGPOaG5CIv+A00slK8jh2RbFfTuUpZ1BoVHQyH/5aPSaVzIS7Csg==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.0.0-rc.0 - '@angular/core': 20.0.0-rc.0 - '@angular/platform-browser': 20.0.0-rc.0 + '@angular/common': 20.0.0-rc.1 + '@angular/core': 20.0.0-rc.1 + '@angular/platform-browser': 20.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 - '@babel/code-frame@7.26.2': - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} - '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.26.8': - resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} - engines: {node: '>=6.9.0'} - '@babel/compat-data@7.27.2': resolution: {integrity: sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==} engines: {node: '>=6.9.0'} - '@babel/core@7.26.10': - resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} - engines: {node: '>=6.9.0'} - '@babel/core@7.27.1': resolution: {integrity: sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==} engines: {node: '>=6.9.0'} - '@babel/generator@7.27.0': - resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} - engines: {node: '>=6.9.0'} - '@babel/generator@7.27.1': resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} engines: {node: '>=6.9.0'} @@ -335,10 +319,6 @@ packages: resolution: {integrity: sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.27.0': - resolution: {integrity: sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==} - engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.27.2': resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} @@ -349,12 +329,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.27.0': - resolution: {integrity: sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.27.1': resolution: {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==} engines: {node: '>=6.9.0'} @@ -370,20 +344,10 @@ packages: resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.25.9': - resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} - engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.27.1': resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.26.0': - resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-module-transforms@7.27.1': resolution: {integrity: sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==} engines: {node: '>=6.9.0'} @@ -418,26 +382,14 @@ packages: resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.25.9': - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.27.1': resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.25.9': - resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.27.1': resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} @@ -446,19 +398,10 @@ packages: resolution: {integrity: sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.27.0': - resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==} - engines: {node: '>=6.9.0'} - '@babel/helpers@7.27.1': resolution: {integrity: sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==} engines: {node: '>=6.9.0'} - '@babel/parser@7.27.0': - resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.27.2': resolution: {integrity: sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==} engines: {node: '>=6.0.0'} @@ -839,26 +782,14 @@ packages: resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} engines: {node: '>=6.9.0'} - '@babel/template@7.27.0': - resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} - engines: {node: '>=6.9.0'} - '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.27.0': - resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} - engines: {node: '>=6.9.0'} - '@babel/traverse@7.27.1': resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==} engines: {node: '>=6.9.0'} - '@babel/types@7.27.0': - resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} - engines: {node: '>=6.9.0'} - '@babel/types@7.27.1': resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} engines: {node: '>=6.9.0'} @@ -1021,8 +952,8 @@ packages: cpu: [x64] os: [win32] - '@inquirer/checkbox@4.1.5': - resolution: {integrity: sha512-swPczVU+at65xa5uPfNP9u3qx/alNwiaykiI/ExpsmMSQW55trmZcwhYWzw/7fj+n6Q8z1eENvR7vFfq9oPSAQ==} + '@inquirer/checkbox@4.1.6': + resolution: {integrity: sha512-62u896rWCtKKE43soodq5e/QcRsA22I+7/4Ov7LESWnKRO6BVo2A1DFLDmXL9e28TB0CfHc3YtkbPm7iwajqkg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1030,17 +961,8 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.9': - resolution: {integrity: sha512-NgQCnHqFTjF7Ys2fsqK2WtnA8X1kHyInyG+nMIuHowVTIgIuS10T4AznI/PvbqSpJqjCUqNBlKGh1v3bwLFL4w==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@inquirer/core@10.1.10': - resolution: {integrity: sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==} + '@inquirer/confirm@5.1.10': + resolution: {integrity: sha512-FxbQ9giWxUWKUk2O5XZ6PduVnH2CZ/fmMKMBkH71MHJvWr7WL5AHKevhzF1L5uYWB2P548o1RzVxrNd3dpmk6g==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1057,8 +979,8 @@ packages: '@types/node': optional: true - '@inquirer/editor@4.2.10': - resolution: {integrity: sha512-5GVWJ+qeI6BzR6TIInLP9SXhWCEcvgFQYmcRG6d6RIlhFjM5TyG18paTGBgRYyEouvCmzeco47x9zX9tQEofkw==} + '@inquirer/editor@4.2.11': + resolution: {integrity: sha512-YoZr0lBnnLFPpfPSNsQ8IZyKxU47zPyVi9NLjCWtna52//M/xuL0PGPAxHxxYhdOhnvY2oBafoM+BI5w/JK7jw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1066,8 +988,8 @@ packages: '@types/node': optional: true - '@inquirer/expand@4.0.12': - resolution: {integrity: sha512-jV8QoZE1fC0vPe6TnsOfig+qwu7Iza1pkXoUJ3SroRagrt2hxiL+RbM432YAihNR7m7XnU0HWl/WQ35RIGmXHw==} + '@inquirer/expand@4.0.13': + resolution: {integrity: sha512-HgYNWuZLHX6q5y4hqKhwyytqAghmx35xikOGY3TcgNiElqXGPas24+UzNPOwGUZa5Dn32y25xJqVeUcGlTv+QQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1079,8 +1001,8 @@ packages: resolution: {integrity: sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==} engines: {node: '>=18'} - '@inquirer/input@4.1.9': - resolution: {integrity: sha512-mshNG24Ij5KqsQtOZMgj5TwEjIf+F2HOESk6bjMwGWgcH5UBe8UoljwzNFHqdMbGYbgAf6v2wU/X9CAdKJzgOA==} + '@inquirer/input@4.1.10': + resolution: {integrity: sha512-kV3BVne3wJ+j6reYQUZi/UN9NZGZLxgc/tfyjeK3mrx1QI7RXPxGp21IUTv+iVHcbP4ytZALF8vCHoxyNSC6qg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1088,8 +1010,8 @@ packages: '@types/node': optional: true - '@inquirer/number@3.0.12': - resolution: {integrity: sha512-7HRFHxbPCA4e4jMxTQglHJwP+v/kpFsCf2szzfBHy98Wlc3L08HL76UDiA87TOdX5fwj2HMOLWqRWv9Pnn+Z5Q==} + '@inquirer/number@3.0.13': + resolution: {integrity: sha512-IrLezcg/GWKS8zpKDvnJ/YTflNJdG0qSFlUM/zNFsdi4UKW/CO+gaJpbMgQ20Q58vNKDJbEzC6IebdkprwL6ew==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1097,8 +1019,8 @@ packages: '@types/node': optional: true - '@inquirer/password@4.0.12': - resolution: {integrity: sha512-FlOB0zvuELPEbnBYiPaOdJIaDzb2PmJ7ghi/SVwIHDDSQ2K4opGBkF+5kXOg6ucrtSUQdLhVVY5tycH0j0l+0g==} + '@inquirer/password@4.0.13': + resolution: {integrity: sha512-NN0S/SmdhakqOTJhDwOpeBEEr8VdcYsjmZHDb0rblSh2FcbXQOr+2IApP7JG4WE3sxIdKytDn4ed3XYwtHxmJQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1106,8 +1028,8 @@ packages: '@types/node': optional: true - '@inquirer/prompts@7.5.0': - resolution: {integrity: sha512-tk8Bx7l5AX/CR0sVfGj3Xg6v7cYlFBkEahH+EgBB+cZib6Fc83dwerTbzj7f2+qKckjIUGsviWRI1d7lx6nqQA==} + '@inquirer/prompts@7.5.1': + resolution: {integrity: sha512-5AOrZPf2/GxZ+SDRZ5WFplCA2TAQgK3OYrXCYmJL5NaTu4ECcoWFlfUZuw7Es++6Njv7iu/8vpYJhuzxUH76Vg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1124,8 +1046,8 @@ packages: '@types/node': optional: true - '@inquirer/search@3.0.12': - resolution: {integrity: sha512-H/kDJA3kNlnNIjB8YsaXoQI0Qccgf0Na14K1h8ExWhNmUg2E941dyFPrZeugihEa9AZNW5NdsD/NcvUME83OPQ==} + '@inquirer/search@3.0.13': + resolution: {integrity: sha512-9g89d2c5Izok/Gw/U7KPC3f9kfe5rA1AJ24xxNZG0st+vWekSk7tB9oE+dJv5JXd0ZSijomvW0KPMoBd8qbN4g==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1380,8 +1302,8 @@ packages: resolution: {integrity: sha512-zM0mVWSXE0a0h9aKACLwKmD6nHcRiKrPpCfvaKqG1CqDEyjEawId0ocXxVzPMCAm6kkWr2P025msfxXEnt8UGQ==} engines: {node: '>= 10'} - '@ngtools/webpack@20.0.0-rc.0': - resolution: {integrity: sha512-bawbfDlbvFz6De4oV2n9wpFNTWOSIxmbs+fqZcrSenP1SUiN1iVGRQBibk/q1rvutN0nWdPRsQFmRe4JeTDgkw==} + '@ngtools/webpack@20.0.0-rc.2': + resolution: {integrity: sha512-8TAQA6KNbZSgYcm+CzKvVOl8PY3trazaLMDZMEDFa3KUrQSmrAeZstVJzS54S+ovhc56KXdDmo8ipq7ObPKpAg==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 || ^20.0.0-next.0 @@ -1623,8 +1545,8 @@ packages: cpu: [x64] os: [win32] - '@schematics/angular@20.0.0-rc.0': - resolution: {integrity: sha512-LLsoqOO5waTnqvpa5zI9PyltHr/mKRrzznGzQ5IDDHKk8Vm1KgVd0+MHOPXHPCNPDgARbARM/yXwPa5dqeOYlA==} + '@schematics/angular@20.0.0-rc.2': + resolution: {integrity: sha512-PqZ7qYZKghnDaXM10J80XNlXV5n4fu/1GneYu7GQpJVPe3MIcbk+ooNierZuo0++CkWU7eEIx13e6M70gcREUw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@sigstore/bundle@3.1.0': @@ -1820,19 +1742,9 @@ packages: ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true ajv-formats@3.0.1: resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true ajv-keywords@5.1.0: resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} @@ -2445,14 +2357,6 @@ packages: resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} engines: {node: '>=0.8.0'} - fdir@6.4.3: - resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - fdir@6.4.4: resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} peerDependencies: @@ -3659,18 +3563,14 @@ packages: webpack: optional: true - sass@1.87.0: - resolution: {integrity: sha512-d0NoFH4v6SjEK7BoX810Jsrhj7IQSYHAHLi/iSpgqKc7LaIDshFRlSg5LOymf9FqQhxEHs2W5ZQXlvy0KD45Uw==} + sass@1.88.0: + resolution: {integrity: sha512-sF6TWQqjFvr4JILXzG4ucGOLELkESHL+I5QJhh7CNaE+Yge0SI+ehCatsXhJ7ymU1hAFcIS3/PBpjdIbXoyVbg==} engines: {node: '>=14.0.0'} hasBin: true sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} - schema-utils@4.3.0: - resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} - engines: {node: '>= 10.13.0'} - schema-utils@4.3.2: resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} engines: {node: '>= 10.13.0'} @@ -3695,6 +3595,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + send@0.19.0: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} @@ -3918,8 +3823,8 @@ packages: uglify-js: optional: true - terser@5.39.0: - resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} + terser@5.39.1: + resolution: {integrity: sha512-Mm6+uad0ZuDtcV8/4uOZQDQ8RuiC5Pu+iZRedJtF7yA/27sPL7d++In/AJKpWZlU3SYMPPkVfwetn6sgZ66pUA==} engines: {node: '>=10'} hasBin: true @@ -3932,10 +3837,6 @@ packages: thunky@1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} - tinyglobby@0.2.12: - resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} - engines: {node: '>=12.0.0'} - tinyglobby@0.2.13: resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} engines: {node: '>=12.0.0'} @@ -4279,21 +4180,21 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@angular-devkit/architect@0.2000.0-rc.0(chokidar@4.0.3)': + '@angular-devkit/architect@0.2000.0-rc.2(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.0.0-rc.0(chokidar@4.0.3) + '@angular-devkit/core': 20.0.0-rc.2(chokidar@4.0.3) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.0)(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(typescript@5.8.3)(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0))': + '@angular-devkit/build-angular@20.0.0-rc.2(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.1)(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(typescript@5.8.3)(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1))': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2000.0-rc.0(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.2000.0-rc.0(chokidar@4.0.3)(webpack-dev-server@5.2.1(webpack@5.99.8))(webpack@5.99.8(esbuild@0.25.4)) - '@angular-devkit/core': 20.0.0-rc.0(chokidar@4.0.3) - '@angular/build': 20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.0)(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.3.0)(postcss@8.5.3)(terser@5.39.0)(tslib@2.8.1)(typescript@5.8.3) - '@angular/compiler-cli': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3) + '@angular-devkit/architect': 0.2000.0-rc.2(chokidar@4.0.3) + '@angular-devkit/build-webpack': 0.2000.0-rc.2(chokidar@4.0.3)(webpack-dev-server@5.2.1(webpack@5.99.8(esbuild@0.25.4)))(webpack@5.99.8(esbuild@0.25.4)) + '@angular-devkit/core': 20.0.0-rc.2(chokidar@4.0.3) + '@angular/build': 20.0.0-rc.2(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.1)(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.3.0)(postcss@8.5.3)(terser@5.39.1)(tslib@2.8.1)(typescript@5.8.3) + '@angular/compiler-cli': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3) '@babel/core': 7.27.1 '@babel/generator': 7.27.1 '@babel/helper-annotate-as-pure': 7.27.1 @@ -4304,8 +4205,8 @@ snapshots: '@babel/preset-env': 7.27.2(@babel/core@7.27.1) '@babel/runtime': 7.27.1 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.4)) - '@vitejs/plugin-basic-ssl': 2.0.0(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0)) + '@ngtools/webpack': 20.0.0-rc.2(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.4)) + '@vitejs/plugin-basic-ssl': 2.0.0(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)) ansi-colors: 4.1.3 autoprefixer: 10.4.21(postcss@8.5.3) babel-loader: 10.0.0(@babel/core@7.27.1)(webpack@5.99.8(esbuild@0.25.4)) @@ -4331,23 +4232,23 @@ snapshots: postcss-loader: 8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.4)) resolve-url-loader: 5.0.0 rxjs: 7.8.2 - sass: 1.87.0 - sass-loader: 16.0.5(sass@1.87.0)(webpack@5.99.8(esbuild@0.25.4)) - semver: 7.7.1 + sass: 1.88.0 + sass-loader: 16.0.5(sass@1.88.0)(webpack@5.99.8(esbuild@0.25.4)) + semver: 7.7.2 source-map-loader: 5.0.0(webpack@5.99.8(esbuild@0.25.4)) source-map-support: 0.5.21 - terser: 5.39.0 + terser: 5.39.1 tree-kill: 1.2.2 tslib: 2.8.1 typescript: 5.8.3 webpack: 5.99.8(esbuild@0.25.4) - webpack-dev-middleware: 7.4.2(webpack@5.99.8) - webpack-dev-server: 5.2.1(webpack@5.99.8) + webpack-dev-middleware: 7.4.2(webpack@5.99.8(esbuild@0.25.4)) + webpack-dev-server: 5.2.1(webpack@5.99.8(esbuild@0.25.4)) webpack-merge: 6.0.1 webpack-subresource-integrity: 5.1.0(webpack@5.99.8(esbuild@0.25.4)) optionalDependencies: - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) esbuild: 0.25.4 karma: 6.4.4 transitivePeerDependencies: @@ -4374,19 +4275,19 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2000.0-rc.0(chokidar@4.0.3)(webpack-dev-server@5.2.1(webpack@5.99.8))(webpack@5.99.8(esbuild@0.25.4))': + '@angular-devkit/build-webpack@0.2000.0-rc.2(chokidar@4.0.3)(webpack-dev-server@5.2.1(webpack@5.99.8(esbuild@0.25.4)))(webpack@5.99.8(esbuild@0.25.4))': dependencies: - '@angular-devkit/architect': 0.2000.0-rc.0(chokidar@4.0.3) + '@angular-devkit/architect': 0.2000.0-rc.2(chokidar@4.0.3) rxjs: 7.8.2 webpack: 5.99.8(esbuild@0.25.4) - webpack-dev-server: 5.2.1(webpack@5.99.8) + webpack-dev-server: 5.2.1(webpack@5.99.8(esbuild@0.25.4)) transitivePeerDependencies: - chokidar - '@angular-devkit/core@20.0.0-rc.0(chokidar@4.0.3)': + '@angular-devkit/core@20.0.0-rc.2(chokidar@4.0.3)': dependencies: ajv: 8.17.1 - ajv-formats: 3.0.1(ajv@8.17.1) + ajv-formats: 3.0.1 jsonc-parser: 3.3.1 picomatch: 4.0.2 rxjs: 7.8.2 @@ -4394,9 +4295,9 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics@20.0.0-rc.0(chokidar@4.0.3)': + '@angular-devkit/schematics@20.0.0-rc.2(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.0.0-rc.0(chokidar@4.0.3) + '@angular-devkit/core': 20.0.0-rc.2(chokidar@4.0.3) jsonc-parser: 3.3.1 magic-string: 0.30.17 ora: 5.4.1 @@ -4404,23 +4305,23 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))': + '@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))': dependencies: - '@angular/common': 20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/common': 20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) tslib: 2.8.1 - '@angular/build@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.0)(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.3.0)(postcss@8.5.3)(terser@5.39.0)(tslib@2.8.1)(typescript@5.8.3)': + '@angular/build@20.0.0-rc.2(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.1)(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.3.0)(postcss@8.5.3)(terser@5.39.1)(tslib@2.8.1)(typescript@5.8.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2000.0-rc.0(chokidar@4.0.3) - '@angular/compiler': 20.0.0-rc.0 - '@angular/compiler-cli': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3) + '@angular-devkit/architect': 0.2000.0-rc.2(chokidar@4.0.3) + '@angular/compiler': 20.0.0-rc.1 + '@angular/compiler-cli': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3) '@babel/core': 7.27.1 '@babel/helper-annotate-as-pure': 7.27.1 '@babel/helper-split-export-declaration': 7.24.7 - '@inquirer/confirm': 5.1.9(@types/node@22.14.0) - '@vitejs/plugin-basic-ssl': 2.0.0(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0)) + '@inquirer/confirm': 5.1.10(@types/node@22.14.0) + '@vitejs/plugin-basic-ssl': 2.0.0(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)) beasties: 0.3.3 browserslist: 4.24.4 esbuild: 0.25.4 @@ -4434,17 +4335,17 @@ snapshots: picomatch: 4.0.2 piscina: 5.0.0 rollup: 4.40.2 - sass: 1.87.0 - semver: 7.7.1 + sass: 1.88.0 + semver: 7.7.2 source-map-support: 0.5.21 tinyglobby: 0.2.13 tslib: 2.8.1 typescript: 5.8.3 - vite: 6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0) + vite: 6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1) watchpack: 2.4.2 optionalDependencies: - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) karma: 6.4.4 less: 4.3.0 lmdb: 3.3.0 @@ -4462,22 +4363,22 @@ snapshots: - tsx - yaml - '@angular/cdk@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': + '@angular/cdk@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/common': 20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) parse5: 7.2.1 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/cli@20.0.0-rc.0(@types/node@22.14.0)(chokidar@4.0.3)': + '@angular/cli@20.0.0-rc.2(@types/node@22.14.0)(chokidar@4.0.3)': dependencies: - '@angular-devkit/architect': 0.2000.0-rc.0(chokidar@4.0.3) - '@angular-devkit/core': 20.0.0-rc.0(chokidar@4.0.3) - '@angular-devkit/schematics': 20.0.0-rc.0(chokidar@4.0.3) - '@inquirer/prompts': 7.5.0(@types/node@22.14.0) - '@listr2/prompt-adapter-inquirer': 2.0.22(@inquirer/prompts@7.5.0(@types/node@22.14.0)) - '@schematics/angular': 20.0.0-rc.0(chokidar@4.0.3) + '@angular-devkit/architect': 0.2000.0-rc.2(chokidar@4.0.3) + '@angular-devkit/core': 20.0.0-rc.2(chokidar@4.0.3) + '@angular-devkit/schematics': 20.0.0-rc.2(chokidar@4.0.3) + '@inquirer/prompts': 7.5.1(@types/node@22.14.0) + '@listr2/prompt-adapter-inquirer': 2.0.22(@inquirer/prompts@7.5.1(@types/node@22.14.0)) + '@schematics/angular': 20.0.0-rc.2(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 ini: 5.0.0 jsonc-parser: 3.3.1 @@ -4486,23 +4387,23 @@ snapshots: npm-pick-manifest: 10.0.0 pacote: 20.0.0 resolve: 1.22.10 - semver: 7.7.1 + semver: 7.7.2 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' - chokidar - supports-color - '@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': + '@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3)': + '@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3)': dependencies: - '@angular/compiler': 20.0.0-rc.0 - '@babel/core': 7.26.10 + '@angular/compiler': 20.0.0-rc.1 + '@babel/core': 7.27.1 '@jridgewell/sourcemap-codec': 1.5.0 chokidar: 4.0.3 convert-source-map: 1.9.0 @@ -4514,88 +4415,60 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@20.0.0-rc.0': + '@angular/compiler@20.0.0-rc.1': dependencies: tslib: 2.8.1 - '@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)': + '@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 zone.js: 0.15.0 optionalDependencies: - '@angular/compiler': 20.0.0-rc.0 + '@angular/compiler': 20.0.0-rc.1 - '@angular/forms@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': + '@angular/forms@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/common': 20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/material@20.0.0-rc.0(s3hqhtlo3u2ktlkecz27drcsye)': + '@angular/material@20.0.0-rc.1(vzxpbajw2jndwn34orz6nopaeu)': dependencies: - '@angular/cdk': 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/common': 20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/forms': 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) - '@angular/platform-browser': 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/cdk': 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/common': 20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/forms': 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + '@angular/platform-browser': 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))': + '@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))': dependencies: - '@angular/common': 20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/common': 20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/animations': 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) - '@angular/router@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': + '@angular/router@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/common': 20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@babel/code-frame@7.26.2': - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 - '@babel/code-frame@7.27.1': dependencies: '@babel/helper-validator-identifier': 7.27.1 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.26.8': {} - '@babel/compat-data@7.27.2': {} - '@babel/core@7.26.10': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.27.0 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helpers': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/template': 7.27.0 - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - convert-source-map: 2.0.0 - debug: 4.4.0 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/core@7.27.1': dependencies: '@ampproject/remapping': 2.3.0 @@ -4616,14 +4489,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.27.0': - dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 - '@babel/generator@7.27.1': dependencies: '@babel/parser': 7.27.2 @@ -4636,14 +4501,6 @@ snapshots: dependencies: '@babel/types': 7.27.1 - '@babel/helper-compilation-targets@7.27.0': - dependencies: - '@babel/compat-data': 7.26.8 - '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.4 - lru-cache: 5.1.1 - semver: 6.3.1 - '@babel/helper-compilation-targets@7.27.2': dependencies: '@babel/compat-data': 7.27.2 @@ -4665,13 +4522,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.27.0(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.1 - regexpu-core: 6.2.0 - semver: 6.3.1 - '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.27.1)': dependencies: '@babel/core': 7.27.1 @@ -4682,7 +4532,7 @@ snapshots: '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.27.1)': dependencies: '@babel/core': 7.27.1 - '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 debug: 4.4.0 lodash.debounce: 4.0.8 @@ -4697,13 +4547,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.25.9': - dependencies: - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - transitivePeerDependencies: - - supports-color - '@babel/helper-module-imports@7.27.1': dependencies: '@babel/traverse': 7.27.1 @@ -4711,15 +4554,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.27.0 - transitivePeerDependencies: - - supports-color - '@babel/helper-module-transforms@7.27.1(@babel/core@7.27.1)': dependencies: '@babel/core': 7.27.1 @@ -4762,18 +4596,12 @@ snapshots: '@babel/helper-split-export-declaration@7.24.7': dependencies: - '@babel/types': 7.27.0 - - '@babel/helper-string-parser@7.25.9': {} + '@babel/types': 7.27.1 '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.25.9': {} - '@babel/helper-validator-identifier@7.27.1': {} - '@babel/helper-validator-option@7.25.9': {} - '@babel/helper-validator-option@7.27.1': {} '@babel/helper-wrap-function@7.27.1': @@ -4784,20 +4612,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helpers@7.27.0': - dependencies: - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 - '@babel/helpers@7.27.1': dependencies: '@babel/template': 7.27.2 '@babel/types': 7.27.1 - '@babel/parser@7.27.0': - dependencies: - '@babel/types': 7.27.0 - '@babel/parser@7.27.2': dependencies: '@babel/types': 7.27.1 @@ -4854,7 +4673,7 @@ snapshots: '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.27.1)': dependencies: '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.27.1) + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.27.1)': @@ -5267,35 +5086,17 @@ snapshots: dependencies: '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.27.0 + '@babel/types': 7.27.1 esutils: 2.0.3 '@babel/runtime@7.27.1': {} - '@babel/template@7.27.0': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 '@babel/parser': 7.27.2 '@babel/types': 7.27.1 - '@babel/traverse@7.27.0': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 - debug: 4.4.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - '@babel/traverse@7.27.1': dependencies: '@babel/code-frame': 7.27.1 @@ -5308,11 +5109,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/types@7.27.0': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/types@7.27.1': dependencies: '@babel/helper-string-parser': 7.27.1 @@ -5397,9 +5193,9 @@ snapshots: '@esbuild/win32-x64@0.25.4': optional: true - '@inquirer/checkbox@4.1.5(@types/node@22.14.0)': + '@inquirer/checkbox@4.1.6(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/figures': 1.0.11 '@inquirer/type': 3.0.6(@types/node@22.14.0) ansi-escapes: 4.3.2 @@ -5407,23 +5203,10 @@ snapshots: optionalDependencies: '@types/node': 22.14.0 - '@inquirer/confirm@5.1.9(@types/node@22.14.0)': + '@inquirer/confirm@5.1.10(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) - '@inquirer/type': 3.0.6(@types/node@22.14.0) - optionalDependencies: - '@types/node': 22.14.0 - - '@inquirer/core@10.1.10(@types/node@22.14.0)': - dependencies: - '@inquirer/figures': 1.0.11 + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/type': 3.0.6(@types/node@22.14.0) - ansi-escapes: 4.3.2 - cli-width: 4.1.0 - mute-stream: 2.0.0 - signal-exit: 4.1.0 - wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.2 optionalDependencies: '@types/node': 22.14.0 @@ -5440,17 +5223,17 @@ snapshots: optionalDependencies: '@types/node': 22.14.0 - '@inquirer/editor@4.2.10(@types/node@22.14.0)': + '@inquirer/editor@4.2.11(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/type': 3.0.6(@types/node@22.14.0) external-editor: 3.1.0 optionalDependencies: '@types/node': 22.14.0 - '@inquirer/expand@4.0.12(@types/node@22.14.0)': + '@inquirer/expand@4.0.13(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/type': 3.0.6(@types/node@22.14.0) yoctocolors-cjs: 2.1.2 optionalDependencies: @@ -5458,39 +5241,39 @@ snapshots: '@inquirer/figures@1.0.11': {} - '@inquirer/input@4.1.9(@types/node@22.14.0)': + '@inquirer/input@4.1.10(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/type': 3.0.6(@types/node@22.14.0) optionalDependencies: '@types/node': 22.14.0 - '@inquirer/number@3.0.12(@types/node@22.14.0)': + '@inquirer/number@3.0.13(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/type': 3.0.6(@types/node@22.14.0) optionalDependencies: '@types/node': 22.14.0 - '@inquirer/password@4.0.12(@types/node@22.14.0)': + '@inquirer/password@4.0.13(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/type': 3.0.6(@types/node@22.14.0) ansi-escapes: 4.3.2 optionalDependencies: '@types/node': 22.14.0 - '@inquirer/prompts@7.5.0(@types/node@22.14.0)': + '@inquirer/prompts@7.5.1(@types/node@22.14.0)': dependencies: - '@inquirer/checkbox': 4.1.5(@types/node@22.14.0) - '@inquirer/confirm': 5.1.9(@types/node@22.14.0) - '@inquirer/editor': 4.2.10(@types/node@22.14.0) - '@inquirer/expand': 4.0.12(@types/node@22.14.0) - '@inquirer/input': 4.1.9(@types/node@22.14.0) - '@inquirer/number': 3.0.12(@types/node@22.14.0) - '@inquirer/password': 4.0.12(@types/node@22.14.0) + '@inquirer/checkbox': 4.1.6(@types/node@22.14.0) + '@inquirer/confirm': 5.1.10(@types/node@22.14.0) + '@inquirer/editor': 4.2.11(@types/node@22.14.0) + '@inquirer/expand': 4.0.13(@types/node@22.14.0) + '@inquirer/input': 4.1.10(@types/node@22.14.0) + '@inquirer/number': 3.0.13(@types/node@22.14.0) + '@inquirer/password': 4.0.13(@types/node@22.14.0) '@inquirer/rawlist': 4.1.1(@types/node@22.14.0) - '@inquirer/search': 3.0.12(@types/node@22.14.0) + '@inquirer/search': 3.0.13(@types/node@22.14.0) '@inquirer/select': 4.2.1(@types/node@22.14.0) optionalDependencies: '@types/node': 22.14.0 @@ -5503,9 +5286,9 @@ snapshots: optionalDependencies: '@types/node': 22.14.0 - '@inquirer/search@3.0.12(@types/node@22.14.0)': + '@inquirer/search@3.0.13(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/figures': 1.0.11 '@inquirer/type': 3.0.6(@types/node@22.14.0) yoctocolors-cjs: 2.1.2 @@ -5585,9 +5368,9 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@2.0.22(@inquirer/prompts@7.5.0(@types/node@22.14.0))': + '@listr2/prompt-adapter-inquirer@2.0.22(@inquirer/prompts@7.5.1(@types/node@22.14.0))': dependencies: - '@inquirer/prompts': 7.5.0(@types/node@22.14.0) + '@inquirer/prompts': 7.5.1(@types/node@22.14.0) '@inquirer/type': 1.5.5 '@lmdb/lmdb-darwin-arm64@3.3.0': @@ -5697,9 +5480,9 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.0.1 optional: true - '@ngtools/webpack@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.4))': + '@ngtools/webpack@20.0.0-rc.2(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.4))': dependencies: - '@angular/compiler-cli': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3) + '@angular/compiler-cli': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3) typescript: 5.8.3 webpack: 5.99.8(esbuild@0.25.4) @@ -5727,7 +5510,7 @@ snapshots: '@npmcli/fs@4.0.0': dependencies: - semver: 7.7.1 + semver: 7.7.2 '@npmcli/git@6.0.3': dependencies: @@ -5737,7 +5520,7 @@ snapshots: npm-pick-manifest: 10.0.0 proc-log: 5.0.0 promise-retry: 2.0.1 - semver: 7.7.1 + semver: 7.7.2 which: 5.0.0 '@npmcli/installed-package-contents@3.0.0': @@ -5754,7 +5537,7 @@ snapshots: hosted-git-info: 8.0.2 json-parse-even-better-errors: 4.0.0 proc-log: 5.0.0 - semver: 7.7.1 + semver: 7.7.2 validate-npm-package-license: 3.0.4 '@npmcli/promise-spawn@8.0.2': @@ -5898,10 +5681,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.40.2': optional: true - '@schematics/angular@20.0.0-rc.0(chokidar@4.0.3)': + '@schematics/angular@20.0.0-rc.2(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.0.0-rc.0(chokidar@4.0.3) - '@angular-devkit/schematics': 20.0.0-rc.0(chokidar@4.0.3) + '@angular-devkit/core': 20.0.0-rc.2(chokidar@4.0.3) + '@angular-devkit/schematics': 20.0.0-rc.2(chokidar@4.0.3) jsonc-parser: 3.3.1 transitivePeerDependencies: - chokidar @@ -6044,9 +5827,9 @@ snapshots: dependencies: '@types/node': 22.14.0 - '@vitejs/plugin-basic-ssl@2.0.0(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0))': + '@vitejs/plugin-basic-ssl@2.0.0(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1))': dependencies: - vite: 6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0) + vite: 6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1) '@webassemblyjs/ast@1.14.1': dependencies: @@ -6146,12 +5929,12 @@ snapshots: agent-base@7.1.3: {} - ajv-formats@2.1.1(ajv@8.17.1): - optionalDependencies: + ajv-formats@2.1.1: + dependencies: ajv: 8.17.1 - ajv-formats@3.0.1(ajv@8.17.1): - optionalDependencies: + ajv-formats@3.0.1: + dependencies: ajv: 8.17.1 ajv-keywords@5.1.0(ajv@8.17.1): @@ -6215,7 +5998,7 @@ snapshots: babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.27.1): dependencies: - '@babel/compat-data': 7.26.8 + '@babel/compat-data': 7.27.2 '@babel/core': 7.27.1 '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.1) semver: 6.3.1 @@ -6481,9 +6264,9 @@ snapshots: dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 - schema-utils: 4.3.0 + schema-utils: 4.3.2 serialize-javascript: 6.0.2 - tinyglobby: 0.2.12 + tinyglobby: 0.2.13 webpack: 5.99.8(esbuild@0.25.4) core-js-compat@3.41.0: @@ -6521,7 +6304,7 @@ snapshots: postcss-modules-scope: 3.2.1(postcss@8.5.3) postcss-modules-values: 4.0.0(postcss@8.5.3) postcss-value-parser: 4.2.0 - semver: 7.7.1 + semver: 7.7.2 optionalDependencies: webpack: 5.99.8(esbuild@0.25.4) @@ -6822,10 +6605,6 @@ snapshots: dependencies: websocket-driver: 0.7.4 - fdir@6.4.3(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - fdir@6.4.4(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -7186,7 +6965,7 @@ snapshots: istanbul-lib-instrument@4.0.3: dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -7196,10 +6975,10 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.27.1 - '@babel/parser': 7.27.0 + '@babel/parser': 7.27.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.7.1 + semver: 7.7.2 transitivePeerDependencies: - supports-color @@ -7510,7 +7289,7 @@ snapshots: mini-css-extract-plugin@2.9.2(webpack@5.99.8(esbuild@0.25.4)): dependencies: - schema-utils: 4.3.0 + schema-utils: 4.3.2 tapable: 2.2.1 webpack: 5.99.8(esbuild@0.25.4) @@ -7644,9 +7423,9 @@ snapshots: make-fetch-happen: 14.0.3 nopt: 8.1.0 proc-log: 5.0.0 - semver: 7.7.1 + semver: 7.7.2 tar: 7.4.3 - tinyglobby: 0.2.12 + tinyglobby: 0.2.13 which: 5.0.0 transitivePeerDependencies: - supports-color @@ -7667,7 +7446,7 @@ snapshots: npm-install-checks@7.1.1: dependencies: - semver: 7.7.1 + semver: 7.7.2 npm-normalize-package-bin@4.0.0: {} @@ -7675,7 +7454,7 @@ snapshots: dependencies: hosted-git-info: 8.0.2 proc-log: 5.0.0 - semver: 7.7.1 + semver: 7.7.2 validate-npm-package-name: 6.0.0 npm-packlist@9.0.0: @@ -7687,7 +7466,7 @@ snapshots: npm-install-checks: 7.1.1 npm-normalize-package-bin: 4.0.0 npm-package-arg: 12.0.2 - semver: 7.7.1 + semver: 7.7.2 npm-registry-fetch@18.0.2: dependencies: @@ -7804,7 +7583,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.27.1 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -7860,7 +7639,7 @@ snapshots: cosmiconfig: 9.0.0(typescript@5.8.3) jiti: 1.21.7 postcss: 8.5.3 - semver: 7.7.1 + semver: 7.7.2 optionalDependencies: webpack: 5.99.8(esbuild@0.25.4) transitivePeerDependencies: @@ -8081,14 +7860,14 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.5(sass@1.87.0)(webpack@5.99.8(esbuild@0.25.4)): + sass-loader@16.0.5(sass@1.88.0)(webpack@5.99.8(esbuild@0.25.4)): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.87.0 + sass: 1.88.0 webpack: 5.99.8(esbuild@0.25.4) - sass@1.87.0: + sass@1.88.0: dependencies: chokidar: 4.0.3 immutable: 5.1.1 @@ -8099,18 +7878,11 @@ snapshots: sax@1.4.1: optional: true - schema-utils@4.3.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) - ajv-keywords: 5.1.0(ajv@8.17.1) - schema-utils@4.3.2: dependencies: '@types/json-schema': 7.0.15 ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) + ajv-formats: 2.1.1 ajv-keywords: 5.1.0(ajv@8.17.1) select-hose@2.0.0: {} @@ -8127,6 +7899,8 @@ snapshots: semver@7.7.1: {} + semver@7.7.2: {} + send@0.19.0: dependencies: debug: 2.6.9 @@ -8424,18 +8198,18 @@ snapshots: mkdirp: 3.0.1 yallist: 5.0.0 - terser-webpack-plugin@5.3.14(esbuild@0.25.4)(webpack@5.99.8): + terser-webpack-plugin@5.3.14(esbuild@0.25.4)(webpack@5.99.8(esbuild@0.25.4)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 - terser: 5.39.0 + terser: 5.39.1 webpack: 5.99.8(esbuild@0.25.4) optionalDependencies: esbuild: 0.25.4 - terser@5.39.0: + terser@5.39.1: dependencies: '@jridgewell/source-map': 0.3.6 acorn: 8.14.1 @@ -8448,11 +8222,6 @@ snapshots: thunky@1.1.0: {} - tinyglobby@0.2.12: - dependencies: - fdir: 6.4.3(picomatch@4.0.2) - picomatch: 4.0.2 - tinyglobby@0.2.13: dependencies: fdir: 6.4.4(picomatch@4.0.2) @@ -8545,7 +8314,7 @@ snapshots: vary@1.1.2: {} - vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0): + vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1): dependencies: esbuild: 0.25.4 fdir: 6.4.4(picomatch@4.0.2) @@ -8558,8 +8327,8 @@ snapshots: fsevents: 2.3.3 jiti: 1.21.7 less: 4.3.0 - sass: 1.87.0 - terser: 5.39.0 + sass: 1.88.0 + terser: 5.39.1 void-elements@2.0.1: {} @@ -8579,18 +8348,18 @@ snapshots: weak-lru-cache@1.2.2: optional: true - webpack-dev-middleware@7.4.2(webpack@5.99.8): + webpack-dev-middleware@7.4.2(webpack@5.99.8(esbuild@0.25.4)): dependencies: colorette: 2.0.20 memfs: 4.17.0 mime-types: 2.1.35 on-finished: 2.4.1 range-parser: 1.2.1 - schema-utils: 4.3.0 + schema-utils: 4.3.2 optionalDependencies: webpack: 5.99.8(esbuild@0.25.4) - webpack-dev-server@5.2.1(webpack@5.99.8): + webpack-dev-server@5.2.1(webpack@5.99.8(esbuild@0.25.4)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -8613,12 +8382,12 @@ snapshots: launch-editor: 2.10.0 open: 10.1.2 p-retry: 6.2.1 - schema-utils: 4.3.0 + schema-utils: 4.3.2 selfsigned: 2.4.1 serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.99.8) + webpack-dev-middleware: 7.4.2(webpack@5.99.8(esbuild@0.25.4)) ws: 8.18.1 optionalDependencies: webpack: 5.99.8(esbuild@0.25.4) @@ -8664,7 +8433,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.2 tapable: 2.2.1 - terser-webpack-plugin: 5.3.14(esbuild@0.25.4)(webpack@5.99.8) + terser-webpack-plugin: 5.3.14(esbuild@0.25.4)(webpack@5.99.8(esbuild@0.25.4)) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: diff --git a/integration/ng-add/package.json b/integration/ng-add/package.json index 266b1498e300..33956c99920f 100644 --- a/integration/ng-add/package.json +++ b/integration/ng-add/package.json @@ -10,23 +10,23 @@ }, "private": true, "dependencies": { - "@angular/animations": "20.0.0-rc.0", + "@angular/animations": "20.0.0-rc.1", "@angular/cdk": "next", - "@angular/common": "20.0.0-rc.0", - "@angular/compiler": "20.0.0-rc.0", - "@angular/core": "20.0.0-rc.0", - "@angular/forms": "20.0.0-rc.0", + "@angular/common": "20.0.0-rc.1", + "@angular/compiler": "20.0.0-rc.1", + "@angular/core": "20.0.0-rc.1", + "@angular/forms": "20.0.0-rc.1", "@angular/material": "next", - "@angular/platform-browser": "20.0.0-rc.0", - "@angular/router": "20.0.0-rc.0", + "@angular/platform-browser": "20.0.0-rc.1", + "@angular/router": "20.0.0-rc.1", "rxjs": "^7.5.5", "tslib": "^2.3.0", "zone.js": "~0.15.0" }, "devDependencies": { - "@angular-devkit/build-angular": "20.0.0-rc.0", - "@angular/cli": "20.0.0-rc.0", - "@angular/compiler-cli": "20.0.0-rc.0", + "@angular-devkit/build-angular": "20.0.0-rc.2", + "@angular/cli": "20.0.0-rc.2", + "@angular/compiler-cli": "20.0.0-rc.1", "@types/jasmine": "~5.1.7", "@types/node": "22.14.0", "glob": "^7.2.0", diff --git a/integration/ng-add/pnpm-lock.yaml b/integration/ng-add/pnpm-lock.yaml index 66eb41c4e542..26d278c8e3e5 100644 --- a/integration/ng-add/pnpm-lock.yaml +++ b/integration/ng-add/pnpm-lock.yaml @@ -1,7 +1,7 @@ lockfileVersion: '9.0' settings: - autoInstallPeers: true + autoInstallPeers: false excludeLinksFromLockfile: false importers: @@ -9,32 +9,32 @@ importers: .: dependencies: '@angular/animations': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/cdk': specifier: next - version: 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + version: 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/common': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) '@angular/compiler': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0 + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1 '@angular/core': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) '@angular/forms': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) '@angular/material': specifier: next - version: 20.0.0-rc.0(s3hqhtlo3u2ktlkecz27drcsye) + version: 20.0.0-rc.1(vzxpbajw2jndwn34orz6nopaeu) '@angular/platform-browser': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) '@angular/router': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) rxjs: specifier: ^7.5.5 version: 7.8.2 @@ -46,14 +46,14 @@ importers: version: 0.15.0 devDependencies: '@angular-devkit/build-angular': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.0)(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(typescript@5.8.3)(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0)) + specifier: 20.0.0-rc.2 + version: 20.0.0-rc.2(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.1)(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(typescript@5.8.3)(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)) '@angular/cli': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@types/node@22.14.0)(chokidar@4.0.3) + specifier: 20.0.0-rc.2 + version: 20.0.0-rc.2(@types/node@22.14.0)(chokidar@4.0.3) '@angular/compiler-cli': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3) + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3) '@types/jasmine': specifier: ~5.1.7 version: 5.1.7 @@ -91,12 +91,12 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2000.0-rc.0': - resolution: {integrity: sha512-O3sVOvEou7+d0YbIE/OzHs6EU/xrHjSwi3z1djyNSJflhwTe6qyY4wdzdggwWt6z6iS5sLsMolsnhR6hYfuK+A==} + '@angular-devkit/architect@0.2000.0-rc.2': + resolution: {integrity: sha512-Djnp29FKGZvfNBY6CZOTMV0RCpKWcukHTH0q1FZMAqCQX56At9828AvPDssKsSs5+ngq3LVIHLBNaPAqMULE0Q==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/build-angular@20.0.0-rc.0': - resolution: {integrity: sha512-dFiKXZTPV2Uiq938eHSxepCrZKPY3ZbS3L08Q6bgPTInq1hFIceaVty7Ujq90PD6DYEaY3bGKv+aynN8occcCw==} + '@angular-devkit/build-angular@20.0.0-rc.2': + resolution: {integrity: sha512-CrAfBf4GsE2ZEk95Mi5Z+Gv71K0ovWCZ6fxnXtSNll+LW0cdhUeDekkKla3yUk6gVdIIP6hJEe4ggWVd+uffcw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 || ^20.0.0-next.0 @@ -105,7 +105,7 @@ packages: '@angular/platform-browser': ^20.0.0 || ^20.0.0-next.0 '@angular/platform-server': ^20.0.0 || ^20.0.0-next.0 '@angular/service-worker': ^20.0.0 || ^20.0.0-next.0 - '@angular/ssr': ^20.0.0-rc.0 + '@angular/ssr': ^20.0.0-rc.2 '@web/test-runner': ^0.20.0 browser-sync: ^3.0.2 jest: ^29.5.0 @@ -145,15 +145,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2000.0-rc.0': - resolution: {integrity: sha512-pejJMhyzxetoJ5GpXOkybh6oJOPgKs+wMLA/U3F4oxT4EpwcUY+kl0VoANtqDDkHEC1cDmsWzI6XyBesmIQIfw==} + '@angular-devkit/build-webpack@0.2000.0-rc.2': + resolution: {integrity: sha512-ZH9QpGVSiXICPxI0O+aT/eFPmlNINOrl2rALFeFHyZY7DtkI5e5BLffCMw4LMD37mu81tAwYfbjC16WJQ1bQjA==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@20.0.0-rc.0': - resolution: {integrity: sha512-Crj0G0occyB1ftUQoAj4ONouJuQ336FryWhehslIzZCOGxzwPWUw/ersaIKHmGr80sQ39fL4iUUaiFmm5EyG/A==} + '@angular-devkit/core@20.0.0-rc.2': + resolution: {integrity: sha512-BGCSAIyUkGiuLQOqVjmBODRdVIJYc1RsO5GQzGmn0kZBsehu+RiELLhhbgfrSUJil0gJxgMML4x4vgIUofBEEQ==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -161,19 +161,19 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@20.0.0-rc.0': - resolution: {integrity: sha512-VJMahL7uvTT4L5fzzIrcv4bSnsXQG+2HNLQK4EWmG4j2vdKOcpCXL6EbE+ZD2ZDSqmNGSIAV0YHnsMD7mjTNYw==} + '@angular-devkit/schematics@20.0.0-rc.2': + resolution: {integrity: sha512-VmpjYyCfFL39gl1wVDR8cikpjJj6WUlGe18N1LjJEUcwVjeoYsLQyxurM6JTv2IfyfYsIbr2FwpOpdajvzWEBQ==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/animations@20.0.0-rc.0': - resolution: {integrity: sha512-+vrpMe9NJ4QmW8iBh/cf/9sDHTOcJk7UW4jCf8y9s9HLk38MgUiCE0WAZz6RmnIrFGUCfewPzp9OsSf8duG4ww==} + '@angular/animations@20.0.0-rc.1': + resolution: {integrity: sha512-SpHzz05VBhS+bGC8KOzdPbDDs87gTHR/UvvSIyAmLnFyX6QhpHV+a4+SQH1AxQAbHlj9DcpOdd3fAPL8kjqcRw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.0.0-rc.0 - '@angular/core': 20.0.0-rc.0 + '@angular/common': 20.0.0-rc.1 + '@angular/core': 20.0.0-rc.1 - '@angular/build@20.0.0-rc.0': - resolution: {integrity: sha512-cVKDaoloiiN06dMnsS0ARDP5QMKVpQSijTBHr2Fpvxi6615rTEQAhj/VgTECVYhkRRNm4cILP1RX1KvqWkawEA==} + '@angular/build@20.0.0-rc.2': + resolution: {integrity: sha512-vif6SJFtKsdHCMZElaSEo0ghNqtWhnRGvz0s07Y2+YCPEXEzzFh9aMtehWEYwltrbSev4hU3cbfFN7q14vXMZA==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^20.0.0 || ^20.0.0-next.0 @@ -183,7 +183,7 @@ packages: '@angular/platform-browser': ^20.0.0 || ^20.0.0-next.0 '@angular/platform-server': ^20.0.0 || ^20.0.0-next.0 '@angular/service-worker': ^20.0.0 || ^20.0.0-next.0 - '@angular/ssr': ^20.0.0-rc.0 + '@angular/ssr': ^20.0.0-rc.2 karma: ^6.4.0 less: ^4.2.0 ng-packagr: ^20.0.0 || ^20.0.0-next.0 @@ -218,115 +218,99 @@ packages: vitest: optional: true - '@angular/cdk@20.0.0-rc.0': - resolution: {integrity: sha512-dvSacjyg5+6GCQiQpXIfguFcjrtR2R0uweUL8R9ZpGRi35jA0HqUYYY99asqyvhMS/G7F0etxRaPWu/d6sHpzg==} + '@angular/cdk@20.0.0-rc.1': + resolution: {integrity: sha512-YlY5uKCfuMm98YGGunFOcpdr8hgEtOlXSs7i6oCSnXll0IxngcbKt2OpnEWqGMSxhVbJ3/B+/SK/8goBui5tVw==} peerDependencies: '@angular/common': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/core': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/cli@20.0.0-rc.0': - resolution: {integrity: sha512-fP+OWXhxjNVHSQbofoQv5mEB1JKc+Dh/q/1tUMk+T2VM3QsMZpelWRXb3Wk6jlScwDMChyr3VjaEngAUnoEF3A==} + '@angular/cli@20.0.0-rc.2': + resolution: {integrity: sha512-/XbwlcuEWhGYJj1TX46/lvcctUd0McphlQa27sMMeNnveuPWYmW1RptbRGT8GF47Fqrlcxzg03rgtqKVYSevYw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/common@20.0.0-rc.0': - resolution: {integrity: sha512-aaEjRPtVv0DF3q6wPHRfephY1kMYTefmFH35z+hzcUVIrVyYQdT/LIUX3L+C9ITfYyLmFWlENf3HxmVUILfXAg==} + '@angular/common@20.0.0-rc.1': + resolution: {integrity: sha512-hmqK/vxTmbtnS107Qe6hl+ecrJek5Xou8oNlAAXZuxLg+DEy46KMHGOybwcVXiGfFTOSdpBZfab6wFnfqVAEpw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/core': 20.0.0-rc.0 + '@angular/core': 20.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@20.0.0-rc.0': - resolution: {integrity: sha512-0+nEw4JXRSdBPDJvtBwQlMYd3dVsM0XOzc1hpg+1E7RWIXsxGb2WE8gEvNjNdR0oE7kjdUWSOKlDMJfE3AWVLA==} + '@angular/compiler-cli@20.0.0-rc.1': + resolution: {integrity: sha512-sD2HmxJkTfzvC7rYbb4BfrZFQgtP2madldrPRd1cBXDyC1P65fIDjgccswfezYTe4EnBkQUDB7nH2ToRISm1xw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 20.0.0-rc.0 + '@angular/compiler': 20.0.0-rc.1 typescript: '>=5.8 <5.9' - '@angular/compiler@20.0.0-rc.0': - resolution: {integrity: sha512-MJ2rJVQ/H6m9P3kIL9+wrwLnY2N48GM6vBhZ5+hVvtTPKLM0qcMwfTd/1SaG5e17tpg4mDWcr+pmnoGFgkXHvg==} + '@angular/compiler@20.0.0-rc.1': + resolution: {integrity: sha512-M4VAmo9G43M0OjxU9h3ih9x+dD3oKlbpI40Sb3LdCnBxyH5SzFxYBXR+NaPlo+UbtFsq7BUZ5CYVVo5k+xvF+Q==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} - '@angular/core@20.0.0-rc.0': - resolution: {integrity: sha512-RKIXYA129vdrRKrnac2XOgpWuYusWqwM4KsQ7b5qKIMZabJ0a2GoOlezT6+NhPkOSsyygYuZtaia5wzQeU1acA==} + '@angular/core@20.0.0-rc.1': + resolution: {integrity: sha512-kboL1+ykpCMsX8IGg+DicrtFRpzI+7yvaRJvPunNtl980rYMrzl9XarZfhgltMshc0h2hfC+2PlD3PNCeOBkQg==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 20.0.0-rc.0 + '@angular/compiler': 20.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 peerDependenciesMeta: '@angular/compiler': optional: true - '@angular/forms@20.0.0-rc.0': - resolution: {integrity: sha512-RH95gg+WBBHS+m6y2XDTCCUZMg6Xih1Y4G91tnBdzSxV32evqyNDrSA9IxOhC6Ztxcd+2aLg1S1hsaiMbF2Alw==} + '@angular/forms@20.0.0-rc.1': + resolution: {integrity: sha512-AW0jInUY+M+Erbi3ir/p3lTK4y4zlwc+KeqMRhsEK7cplWuSXmXrans3onAJSrU1knVsdzq0mq+1PrcQeVR+hA==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.0.0-rc.0 - '@angular/core': 20.0.0-rc.0 - '@angular/platform-browser': 20.0.0-rc.0 + '@angular/common': 20.0.0-rc.1 + '@angular/core': 20.0.0-rc.1 + '@angular/platform-browser': 20.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 - '@angular/material@20.0.0-rc.0': - resolution: {integrity: sha512-Z6uaTLaTdfMoT2RnL8GB1na/n2/0d9Dk5h2wSsymyZFJz/U20btCQuor9Cvb/mUlrPs/uu/5SWDMpigRXlaomg==} + '@angular/material@20.0.0-rc.1': + resolution: {integrity: sha512-chD273pzqc1ghOP5dwPXaftcfn4vwDL43VZT1Vl2CFSy9+A3Bnd1MB1O0VVrUYQe1bi38TCJ9QwZjPmCOAOzHQ==} peerDependencies: - '@angular/cdk': 20.0.0-rc.0 + '@angular/cdk': 20.0.0-rc.1 '@angular/common': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/core': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/forms': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 '@angular/platform-browser': ^20.0.0-0 || ^20.1.0-0 || ^20.2.0-0 || ^20.3.0-0 || ^21.0.0-0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/platform-browser@20.0.0-rc.0': - resolution: {integrity: sha512-mu2g1PNJkGCJxyCA366nGQt3abX9jx+VTcPR1PRaLqY/sGzA42sYJTG/M74CIpfnx9Sxb1hD3/XCB3xbN5rPhw==} + '@angular/platform-browser@20.0.0-rc.1': + resolution: {integrity: sha512-p5Eo8IBanauJ/2ZROrq08lvtkz3e2luNWJqQMUUvqDWn5NVwAMNBPIK+YTMw7ZpQIABy00ZlAuCiwNPvSTCxig==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/animations': 20.0.0-rc.0 - '@angular/common': 20.0.0-rc.0 - '@angular/core': 20.0.0-rc.0 + '@angular/animations': 20.0.0-rc.1 + '@angular/common': 20.0.0-rc.1 + '@angular/core': 20.0.0-rc.1 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/router@20.0.0-rc.0': - resolution: {integrity: sha512-QkViBejo2xZwyGMHcM7NJh8QxhrAEeNq58Yoph6owzGb1/LMArVvZgoJAJC8HW3ojHN8xFUIfgxM4sFjjcw0dA==} + '@angular/router@20.0.0-rc.1': + resolution: {integrity: sha512-UH3fFlRm2A3Yc1irwEjUZJvhM5kETAqmmEPGPOaG5CIv+A00slK8jh2RbFfTuUpZ1BoVHQyH/5aPSaVzIS7Csg==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.0.0-rc.0 - '@angular/core': 20.0.0-rc.0 - '@angular/platform-browser': 20.0.0-rc.0 + '@angular/common': 20.0.0-rc.1 + '@angular/core': 20.0.0-rc.1 + '@angular/platform-browser': 20.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 - '@babel/code-frame@7.26.2': - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} - '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.26.8': - resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} - engines: {node: '>=6.9.0'} - '@babel/compat-data@7.27.2': resolution: {integrity: sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==} engines: {node: '>=6.9.0'} - '@babel/core@7.26.10': - resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} - engines: {node: '>=6.9.0'} - '@babel/core@7.27.1': resolution: {integrity: sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==} engines: {node: '>=6.9.0'} - '@babel/generator@7.27.0': - resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} - engines: {node: '>=6.9.0'} - '@babel/generator@7.27.1': resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} engines: {node: '>=6.9.0'} @@ -335,10 +319,6 @@ packages: resolution: {integrity: sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.27.0': - resolution: {integrity: sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==} - engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.27.2': resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} @@ -349,12 +329,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.27.0': - resolution: {integrity: sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.27.1': resolution: {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==} engines: {node: '>=6.9.0'} @@ -370,20 +344,10 @@ packages: resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.25.9': - resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} - engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.27.1': resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.26.0': - resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-module-transforms@7.27.1': resolution: {integrity: sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==} engines: {node: '>=6.9.0'} @@ -418,26 +382,14 @@ packages: resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.25.9': - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.27.1': resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.25.9': - resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.27.1': resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} @@ -446,19 +398,10 @@ packages: resolution: {integrity: sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.27.0': - resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==} - engines: {node: '>=6.9.0'} - '@babel/helpers@7.27.1': resolution: {integrity: sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==} engines: {node: '>=6.9.0'} - '@babel/parser@7.27.0': - resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.27.2': resolution: {integrity: sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==} engines: {node: '>=6.0.0'} @@ -839,26 +782,14 @@ packages: resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} engines: {node: '>=6.9.0'} - '@babel/template@7.27.0': - resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} - engines: {node: '>=6.9.0'} - '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.27.0': - resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} - engines: {node: '>=6.9.0'} - '@babel/traverse@7.27.1': resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==} engines: {node: '>=6.9.0'} - '@babel/types@7.27.0': - resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} - engines: {node: '>=6.9.0'} - '@babel/types@7.27.1': resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} engines: {node: '>=6.9.0'} @@ -1021,8 +952,8 @@ packages: cpu: [x64] os: [win32] - '@inquirer/checkbox@4.1.5': - resolution: {integrity: sha512-swPczVU+at65xa5uPfNP9u3qx/alNwiaykiI/ExpsmMSQW55trmZcwhYWzw/7fj+n6Q8z1eENvR7vFfq9oPSAQ==} + '@inquirer/checkbox@4.1.6': + resolution: {integrity: sha512-62u896rWCtKKE43soodq5e/QcRsA22I+7/4Ov7LESWnKRO6BVo2A1DFLDmXL9e28TB0CfHc3YtkbPm7iwajqkg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1030,17 +961,8 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.9': - resolution: {integrity: sha512-NgQCnHqFTjF7Ys2fsqK2WtnA8X1kHyInyG+nMIuHowVTIgIuS10T4AznI/PvbqSpJqjCUqNBlKGh1v3bwLFL4w==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@inquirer/core@10.1.10': - resolution: {integrity: sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==} + '@inquirer/confirm@5.1.10': + resolution: {integrity: sha512-FxbQ9giWxUWKUk2O5XZ6PduVnH2CZ/fmMKMBkH71MHJvWr7WL5AHKevhzF1L5uYWB2P548o1RzVxrNd3dpmk6g==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1057,8 +979,8 @@ packages: '@types/node': optional: true - '@inquirer/editor@4.2.10': - resolution: {integrity: sha512-5GVWJ+qeI6BzR6TIInLP9SXhWCEcvgFQYmcRG6d6RIlhFjM5TyG18paTGBgRYyEouvCmzeco47x9zX9tQEofkw==} + '@inquirer/editor@4.2.11': + resolution: {integrity: sha512-YoZr0lBnnLFPpfPSNsQ8IZyKxU47zPyVi9NLjCWtna52//M/xuL0PGPAxHxxYhdOhnvY2oBafoM+BI5w/JK7jw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1066,8 +988,8 @@ packages: '@types/node': optional: true - '@inquirer/expand@4.0.12': - resolution: {integrity: sha512-jV8QoZE1fC0vPe6TnsOfig+qwu7Iza1pkXoUJ3SroRagrt2hxiL+RbM432YAihNR7m7XnU0HWl/WQ35RIGmXHw==} + '@inquirer/expand@4.0.13': + resolution: {integrity: sha512-HgYNWuZLHX6q5y4hqKhwyytqAghmx35xikOGY3TcgNiElqXGPas24+UzNPOwGUZa5Dn32y25xJqVeUcGlTv+QQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1079,8 +1001,8 @@ packages: resolution: {integrity: sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==} engines: {node: '>=18'} - '@inquirer/input@4.1.9': - resolution: {integrity: sha512-mshNG24Ij5KqsQtOZMgj5TwEjIf+F2HOESk6bjMwGWgcH5UBe8UoljwzNFHqdMbGYbgAf6v2wU/X9CAdKJzgOA==} + '@inquirer/input@4.1.10': + resolution: {integrity: sha512-kV3BVne3wJ+j6reYQUZi/UN9NZGZLxgc/tfyjeK3mrx1QI7RXPxGp21IUTv+iVHcbP4ytZALF8vCHoxyNSC6qg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1088,8 +1010,8 @@ packages: '@types/node': optional: true - '@inquirer/number@3.0.12': - resolution: {integrity: sha512-7HRFHxbPCA4e4jMxTQglHJwP+v/kpFsCf2szzfBHy98Wlc3L08HL76UDiA87TOdX5fwj2HMOLWqRWv9Pnn+Z5Q==} + '@inquirer/number@3.0.13': + resolution: {integrity: sha512-IrLezcg/GWKS8zpKDvnJ/YTflNJdG0qSFlUM/zNFsdi4UKW/CO+gaJpbMgQ20Q58vNKDJbEzC6IebdkprwL6ew==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1097,8 +1019,8 @@ packages: '@types/node': optional: true - '@inquirer/password@4.0.12': - resolution: {integrity: sha512-FlOB0zvuELPEbnBYiPaOdJIaDzb2PmJ7ghi/SVwIHDDSQ2K4opGBkF+5kXOg6ucrtSUQdLhVVY5tycH0j0l+0g==} + '@inquirer/password@4.0.13': + resolution: {integrity: sha512-NN0S/SmdhakqOTJhDwOpeBEEr8VdcYsjmZHDb0rblSh2FcbXQOr+2IApP7JG4WE3sxIdKytDn4ed3XYwtHxmJQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1106,8 +1028,8 @@ packages: '@types/node': optional: true - '@inquirer/prompts@7.5.0': - resolution: {integrity: sha512-tk8Bx7l5AX/CR0sVfGj3Xg6v7cYlFBkEahH+EgBB+cZib6Fc83dwerTbzj7f2+qKckjIUGsviWRI1d7lx6nqQA==} + '@inquirer/prompts@7.5.1': + resolution: {integrity: sha512-5AOrZPf2/GxZ+SDRZ5WFplCA2TAQgK3OYrXCYmJL5NaTu4ECcoWFlfUZuw7Es++6Njv7iu/8vpYJhuzxUH76Vg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1124,8 +1046,8 @@ packages: '@types/node': optional: true - '@inquirer/search@3.0.12': - resolution: {integrity: sha512-H/kDJA3kNlnNIjB8YsaXoQI0Qccgf0Na14K1h8ExWhNmUg2E941dyFPrZeugihEa9AZNW5NdsD/NcvUME83OPQ==} + '@inquirer/search@3.0.13': + resolution: {integrity: sha512-9g89d2c5Izok/Gw/U7KPC3f9kfe5rA1AJ24xxNZG0st+vWekSk7tB9oE+dJv5JXd0ZSijomvW0KPMoBd8qbN4g==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1380,8 +1302,8 @@ packages: resolution: {integrity: sha512-zM0mVWSXE0a0h9aKACLwKmD6nHcRiKrPpCfvaKqG1CqDEyjEawId0ocXxVzPMCAm6kkWr2P025msfxXEnt8UGQ==} engines: {node: '>= 10'} - '@ngtools/webpack@20.0.0-rc.0': - resolution: {integrity: sha512-bawbfDlbvFz6De4oV2n9wpFNTWOSIxmbs+fqZcrSenP1SUiN1iVGRQBibk/q1rvutN0nWdPRsQFmRe4JeTDgkw==} + '@ngtools/webpack@20.0.0-rc.2': + resolution: {integrity: sha512-8TAQA6KNbZSgYcm+CzKvVOl8PY3trazaLMDZMEDFa3KUrQSmrAeZstVJzS54S+ovhc56KXdDmo8ipq7ObPKpAg==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 || ^20.0.0-next.0 @@ -1623,8 +1545,8 @@ packages: cpu: [x64] os: [win32] - '@schematics/angular@20.0.0-rc.0': - resolution: {integrity: sha512-LLsoqOO5waTnqvpa5zI9PyltHr/mKRrzznGzQ5IDDHKk8Vm1KgVd0+MHOPXHPCNPDgARbARM/yXwPa5dqeOYlA==} + '@schematics/angular@20.0.0-rc.2': + resolution: {integrity: sha512-PqZ7qYZKghnDaXM10J80XNlXV5n4fu/1GneYu7GQpJVPe3MIcbk+ooNierZuo0++CkWU7eEIx13e6M70gcREUw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@sigstore/bundle@3.1.0': @@ -1820,19 +1742,9 @@ packages: ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true ajv-formats@3.0.1: resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true ajv-keywords@5.1.0: resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} @@ -2445,14 +2357,6 @@ packages: resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} engines: {node: '>=0.8.0'} - fdir@6.4.3: - resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - fdir@6.4.4: resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} peerDependencies: @@ -3659,18 +3563,14 @@ packages: webpack: optional: true - sass@1.87.0: - resolution: {integrity: sha512-d0NoFH4v6SjEK7BoX810Jsrhj7IQSYHAHLi/iSpgqKc7LaIDshFRlSg5LOymf9FqQhxEHs2W5ZQXlvy0KD45Uw==} + sass@1.88.0: + resolution: {integrity: sha512-sF6TWQqjFvr4JILXzG4ucGOLELkESHL+I5QJhh7CNaE+Yge0SI+ehCatsXhJ7ymU1hAFcIS3/PBpjdIbXoyVbg==} engines: {node: '>=14.0.0'} hasBin: true sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} - schema-utils@4.3.0: - resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} - engines: {node: '>= 10.13.0'} - schema-utils@4.3.2: resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} engines: {node: '>= 10.13.0'} @@ -3695,6 +3595,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + send@0.19.0: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} @@ -3918,8 +3823,8 @@ packages: uglify-js: optional: true - terser@5.39.0: - resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} + terser@5.39.1: + resolution: {integrity: sha512-Mm6+uad0ZuDtcV8/4uOZQDQ8RuiC5Pu+iZRedJtF7yA/27sPL7d++In/AJKpWZlU3SYMPPkVfwetn6sgZ66pUA==} engines: {node: '>=10'} hasBin: true @@ -3932,10 +3837,6 @@ packages: thunky@1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} - tinyglobby@0.2.12: - resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} - engines: {node: '>=12.0.0'} - tinyglobby@0.2.13: resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} engines: {node: '>=12.0.0'} @@ -4279,21 +4180,21 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@angular-devkit/architect@0.2000.0-rc.0(chokidar@4.0.3)': + '@angular-devkit/architect@0.2000.0-rc.2(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.0.0-rc.0(chokidar@4.0.3) + '@angular-devkit/core': 20.0.0-rc.2(chokidar@4.0.3) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.0)(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(typescript@5.8.3)(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0))': + '@angular-devkit/build-angular@20.0.0-rc.2(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.1)(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(typescript@5.8.3)(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1))': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2000.0-rc.0(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.2000.0-rc.0(chokidar@4.0.3)(webpack-dev-server@5.2.1(webpack@5.99.8))(webpack@5.99.8(esbuild@0.25.4)) - '@angular-devkit/core': 20.0.0-rc.0(chokidar@4.0.3) - '@angular/build': 20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.0)(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.3.0)(postcss@8.5.3)(terser@5.39.0)(tslib@2.8.1)(typescript@5.8.3) - '@angular/compiler-cli': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3) + '@angular-devkit/architect': 0.2000.0-rc.2(chokidar@4.0.3) + '@angular-devkit/build-webpack': 0.2000.0-rc.2(chokidar@4.0.3)(webpack-dev-server@5.2.1(webpack@5.99.8(esbuild@0.25.4)))(webpack@5.99.8(esbuild@0.25.4)) + '@angular-devkit/core': 20.0.0-rc.2(chokidar@4.0.3) + '@angular/build': 20.0.0-rc.2(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.1)(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.3.0)(postcss@8.5.3)(terser@5.39.1)(tslib@2.8.1)(typescript@5.8.3) + '@angular/compiler-cli': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3) '@babel/core': 7.27.1 '@babel/generator': 7.27.1 '@babel/helper-annotate-as-pure': 7.27.1 @@ -4304,8 +4205,8 @@ snapshots: '@babel/preset-env': 7.27.2(@babel/core@7.27.1) '@babel/runtime': 7.27.1 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.4)) - '@vitejs/plugin-basic-ssl': 2.0.0(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0)) + '@ngtools/webpack': 20.0.0-rc.2(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.4)) + '@vitejs/plugin-basic-ssl': 2.0.0(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)) ansi-colors: 4.1.3 autoprefixer: 10.4.21(postcss@8.5.3) babel-loader: 10.0.0(@babel/core@7.27.1)(webpack@5.99.8(esbuild@0.25.4)) @@ -4331,23 +4232,23 @@ snapshots: postcss-loader: 8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.4)) resolve-url-loader: 5.0.0 rxjs: 7.8.2 - sass: 1.87.0 - sass-loader: 16.0.5(sass@1.87.0)(webpack@5.99.8(esbuild@0.25.4)) - semver: 7.7.1 + sass: 1.88.0 + sass-loader: 16.0.5(sass@1.88.0)(webpack@5.99.8(esbuild@0.25.4)) + semver: 7.7.2 source-map-loader: 5.0.0(webpack@5.99.8(esbuild@0.25.4)) source-map-support: 0.5.21 - terser: 5.39.0 + terser: 5.39.1 tree-kill: 1.2.2 tslib: 2.8.1 typescript: 5.8.3 webpack: 5.99.8(esbuild@0.25.4) - webpack-dev-middleware: 7.4.2(webpack@5.99.8) - webpack-dev-server: 5.2.1(webpack@5.99.8) + webpack-dev-middleware: 7.4.2(webpack@5.99.8(esbuild@0.25.4)) + webpack-dev-server: 5.2.1(webpack@5.99.8(esbuild@0.25.4)) webpack-merge: 6.0.1 webpack-subresource-integrity: 5.1.0(webpack@5.99.8(esbuild@0.25.4)) optionalDependencies: - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) esbuild: 0.25.4 karma: 6.4.4 transitivePeerDependencies: @@ -4374,19 +4275,19 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2000.0-rc.0(chokidar@4.0.3)(webpack-dev-server@5.2.1(webpack@5.99.8))(webpack@5.99.8(esbuild@0.25.4))': + '@angular-devkit/build-webpack@0.2000.0-rc.2(chokidar@4.0.3)(webpack-dev-server@5.2.1(webpack@5.99.8(esbuild@0.25.4)))(webpack@5.99.8(esbuild@0.25.4))': dependencies: - '@angular-devkit/architect': 0.2000.0-rc.0(chokidar@4.0.3) + '@angular-devkit/architect': 0.2000.0-rc.2(chokidar@4.0.3) rxjs: 7.8.2 webpack: 5.99.8(esbuild@0.25.4) - webpack-dev-server: 5.2.1(webpack@5.99.8) + webpack-dev-server: 5.2.1(webpack@5.99.8(esbuild@0.25.4)) transitivePeerDependencies: - chokidar - '@angular-devkit/core@20.0.0-rc.0(chokidar@4.0.3)': + '@angular-devkit/core@20.0.0-rc.2(chokidar@4.0.3)': dependencies: ajv: 8.17.1 - ajv-formats: 3.0.1(ajv@8.17.1) + ajv-formats: 3.0.1 jsonc-parser: 3.3.1 picomatch: 4.0.2 rxjs: 7.8.2 @@ -4394,9 +4295,9 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics@20.0.0-rc.0(chokidar@4.0.3)': + '@angular-devkit/schematics@20.0.0-rc.2(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.0.0-rc.0(chokidar@4.0.3) + '@angular-devkit/core': 20.0.0-rc.2(chokidar@4.0.3) jsonc-parser: 3.3.1 magic-string: 0.30.17 ora: 5.4.1 @@ -4404,23 +4305,23 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))': + '@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))': dependencies: - '@angular/common': 20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/common': 20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) tslib: 2.8.1 - '@angular/build@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.0)(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.3.0)(postcss@8.5.3)(terser@5.39.0)(tslib@2.8.1)(typescript@5.8.3)': + '@angular/build@20.0.0-rc.2(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.1)(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.14.0)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(less@4.3.0)(postcss@8.5.3)(terser@5.39.1)(tslib@2.8.1)(typescript@5.8.3)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2000.0-rc.0(chokidar@4.0.3) - '@angular/compiler': 20.0.0-rc.0 - '@angular/compiler-cli': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3) + '@angular-devkit/architect': 0.2000.0-rc.2(chokidar@4.0.3) + '@angular/compiler': 20.0.0-rc.1 + '@angular/compiler-cli': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3) '@babel/core': 7.27.1 '@babel/helper-annotate-as-pure': 7.27.1 '@babel/helper-split-export-declaration': 7.24.7 - '@inquirer/confirm': 5.1.9(@types/node@22.14.0) - '@vitejs/plugin-basic-ssl': 2.0.0(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0)) + '@inquirer/confirm': 5.1.10(@types/node@22.14.0) + '@vitejs/plugin-basic-ssl': 2.0.0(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)) beasties: 0.3.3 browserslist: 4.24.4 esbuild: 0.25.4 @@ -4434,17 +4335,17 @@ snapshots: picomatch: 4.0.2 piscina: 5.0.0 rollup: 4.40.2 - sass: 1.87.0 - semver: 7.7.1 + sass: 1.88.0 + semver: 7.7.2 source-map-support: 0.5.21 tinyglobby: 0.2.13 tslib: 2.8.1 typescript: 5.8.3 - vite: 6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0) + vite: 6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1) watchpack: 2.4.2 optionalDependencies: - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) karma: 6.4.4 less: 4.3.0 lmdb: 3.3.0 @@ -4462,22 +4363,22 @@ snapshots: - tsx - yaml - '@angular/cdk@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': + '@angular/cdk@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/common': 20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) parse5: 7.2.1 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/cli@20.0.0-rc.0(@types/node@22.14.0)(chokidar@4.0.3)': + '@angular/cli@20.0.0-rc.2(@types/node@22.14.0)(chokidar@4.0.3)': dependencies: - '@angular-devkit/architect': 0.2000.0-rc.0(chokidar@4.0.3) - '@angular-devkit/core': 20.0.0-rc.0(chokidar@4.0.3) - '@angular-devkit/schematics': 20.0.0-rc.0(chokidar@4.0.3) - '@inquirer/prompts': 7.5.0(@types/node@22.14.0) - '@listr2/prompt-adapter-inquirer': 2.0.22(@inquirer/prompts@7.5.0(@types/node@22.14.0)) - '@schematics/angular': 20.0.0-rc.0(chokidar@4.0.3) + '@angular-devkit/architect': 0.2000.0-rc.2(chokidar@4.0.3) + '@angular-devkit/core': 20.0.0-rc.2(chokidar@4.0.3) + '@angular-devkit/schematics': 20.0.0-rc.2(chokidar@4.0.3) + '@inquirer/prompts': 7.5.1(@types/node@22.14.0) + '@listr2/prompt-adapter-inquirer': 2.0.22(@inquirer/prompts@7.5.1(@types/node@22.14.0)) + '@schematics/angular': 20.0.0-rc.2(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 ini: 5.0.0 jsonc-parser: 3.3.1 @@ -4486,23 +4387,23 @@ snapshots: npm-pick-manifest: 10.0.0 pacote: 20.0.0 resolve: 1.22.10 - semver: 7.7.1 + semver: 7.7.2 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' - chokidar - supports-color - '@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': + '@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)': dependencies: - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3)': + '@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3)': dependencies: - '@angular/compiler': 20.0.0-rc.0 - '@babel/core': 7.26.10 + '@angular/compiler': 20.0.0-rc.1 + '@babel/core': 7.27.1 '@jridgewell/sourcemap-codec': 1.5.0 chokidar: 4.0.3 convert-source-map: 1.9.0 @@ -4514,88 +4415,60 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@20.0.0-rc.0': + '@angular/compiler@20.0.0-rc.1': dependencies: tslib: 2.8.1 - '@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)': + '@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 zone.js: 0.15.0 optionalDependencies: - '@angular/compiler': 20.0.0-rc.0 + '@angular/compiler': 20.0.0-rc.1 - '@angular/forms@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': + '@angular/forms@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/common': 20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/material@20.0.0-rc.0(s3hqhtlo3u2ktlkecz27drcsye)': + '@angular/material@20.0.0-rc.1(vzxpbajw2jndwn34orz6nopaeu)': dependencies: - '@angular/cdk': 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/common': 20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/forms': 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) - '@angular/platform-browser': 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/cdk': 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/common': 20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/forms': 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2) + '@angular/platform-browser': 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))': + '@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))': dependencies: - '@angular/common': 20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/common': 20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/animations': 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) - '@angular/router@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': + '@angular/router@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)': dependencies: - '@angular/common': 20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@7.8.2)(zone.js@0.15.0)) + '@angular/common': 20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.15.0)) rxjs: 7.8.2 tslib: 2.8.1 - '@babel/code-frame@7.26.2': - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 - '@babel/code-frame@7.27.1': dependencies: '@babel/helper-validator-identifier': 7.27.1 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.26.8': {} - '@babel/compat-data@7.27.2': {} - '@babel/core@7.26.10': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.27.0 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helpers': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/template': 7.27.0 - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - convert-source-map: 2.0.0 - debug: 4.4.0 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/core@7.27.1': dependencies: '@ampproject/remapping': 2.3.0 @@ -4616,14 +4489,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.27.0': - dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 - '@babel/generator@7.27.1': dependencies: '@babel/parser': 7.27.2 @@ -4636,14 +4501,6 @@ snapshots: dependencies: '@babel/types': 7.27.1 - '@babel/helper-compilation-targets@7.27.0': - dependencies: - '@babel/compat-data': 7.26.8 - '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.4 - lru-cache: 5.1.1 - semver: 6.3.1 - '@babel/helper-compilation-targets@7.27.2': dependencies: '@babel/compat-data': 7.27.2 @@ -4665,13 +4522,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.27.0(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.1 - regexpu-core: 6.2.0 - semver: 6.3.1 - '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.27.1)': dependencies: '@babel/core': 7.27.1 @@ -4682,7 +4532,7 @@ snapshots: '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.27.1)': dependencies: '@babel/core': 7.27.1 - '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 debug: 4.4.0 lodash.debounce: 4.0.8 @@ -4697,13 +4547,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.25.9': - dependencies: - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - transitivePeerDependencies: - - supports-color - '@babel/helper-module-imports@7.27.1': dependencies: '@babel/traverse': 7.27.1 @@ -4711,15 +4554,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.27.0 - transitivePeerDependencies: - - supports-color - '@babel/helper-module-transforms@7.27.1(@babel/core@7.27.1)': dependencies: '@babel/core': 7.27.1 @@ -4762,18 +4596,12 @@ snapshots: '@babel/helper-split-export-declaration@7.24.7': dependencies: - '@babel/types': 7.27.0 - - '@babel/helper-string-parser@7.25.9': {} + '@babel/types': 7.27.1 '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.25.9': {} - '@babel/helper-validator-identifier@7.27.1': {} - '@babel/helper-validator-option@7.25.9': {} - '@babel/helper-validator-option@7.27.1': {} '@babel/helper-wrap-function@7.27.1': @@ -4784,20 +4612,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helpers@7.27.0': - dependencies: - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 - '@babel/helpers@7.27.1': dependencies: '@babel/template': 7.27.2 '@babel/types': 7.27.1 - '@babel/parser@7.27.0': - dependencies: - '@babel/types': 7.27.0 - '@babel/parser@7.27.2': dependencies: '@babel/types': 7.27.1 @@ -4854,7 +4673,7 @@ snapshots: '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.27.1)': dependencies: '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.27.1) + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.27.1)': @@ -5267,35 +5086,17 @@ snapshots: dependencies: '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.27.0 + '@babel/types': 7.27.1 esutils: 2.0.3 '@babel/runtime@7.27.1': {} - '@babel/template@7.27.0': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 '@babel/parser': 7.27.2 '@babel/types': 7.27.1 - '@babel/traverse@7.27.0': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 - debug: 4.4.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - '@babel/traverse@7.27.1': dependencies: '@babel/code-frame': 7.27.1 @@ -5308,11 +5109,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/types@7.27.0': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/types@7.27.1': dependencies: '@babel/helper-string-parser': 7.27.1 @@ -5397,9 +5193,9 @@ snapshots: '@esbuild/win32-x64@0.25.4': optional: true - '@inquirer/checkbox@4.1.5(@types/node@22.14.0)': + '@inquirer/checkbox@4.1.6(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/figures': 1.0.11 '@inquirer/type': 3.0.6(@types/node@22.14.0) ansi-escapes: 4.3.2 @@ -5407,23 +5203,10 @@ snapshots: optionalDependencies: '@types/node': 22.14.0 - '@inquirer/confirm@5.1.9(@types/node@22.14.0)': + '@inquirer/confirm@5.1.10(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) - '@inquirer/type': 3.0.6(@types/node@22.14.0) - optionalDependencies: - '@types/node': 22.14.0 - - '@inquirer/core@10.1.10(@types/node@22.14.0)': - dependencies: - '@inquirer/figures': 1.0.11 + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/type': 3.0.6(@types/node@22.14.0) - ansi-escapes: 4.3.2 - cli-width: 4.1.0 - mute-stream: 2.0.0 - signal-exit: 4.1.0 - wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.2 optionalDependencies: '@types/node': 22.14.0 @@ -5440,17 +5223,17 @@ snapshots: optionalDependencies: '@types/node': 22.14.0 - '@inquirer/editor@4.2.10(@types/node@22.14.0)': + '@inquirer/editor@4.2.11(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/type': 3.0.6(@types/node@22.14.0) external-editor: 3.1.0 optionalDependencies: '@types/node': 22.14.0 - '@inquirer/expand@4.0.12(@types/node@22.14.0)': + '@inquirer/expand@4.0.13(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/type': 3.0.6(@types/node@22.14.0) yoctocolors-cjs: 2.1.2 optionalDependencies: @@ -5458,39 +5241,39 @@ snapshots: '@inquirer/figures@1.0.11': {} - '@inquirer/input@4.1.9(@types/node@22.14.0)': + '@inquirer/input@4.1.10(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/type': 3.0.6(@types/node@22.14.0) optionalDependencies: '@types/node': 22.14.0 - '@inquirer/number@3.0.12(@types/node@22.14.0)': + '@inquirer/number@3.0.13(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/type': 3.0.6(@types/node@22.14.0) optionalDependencies: '@types/node': 22.14.0 - '@inquirer/password@4.0.12(@types/node@22.14.0)': + '@inquirer/password@4.0.13(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/type': 3.0.6(@types/node@22.14.0) ansi-escapes: 4.3.2 optionalDependencies: '@types/node': 22.14.0 - '@inquirer/prompts@7.5.0(@types/node@22.14.0)': + '@inquirer/prompts@7.5.1(@types/node@22.14.0)': dependencies: - '@inquirer/checkbox': 4.1.5(@types/node@22.14.0) - '@inquirer/confirm': 5.1.9(@types/node@22.14.0) - '@inquirer/editor': 4.2.10(@types/node@22.14.0) - '@inquirer/expand': 4.0.12(@types/node@22.14.0) - '@inquirer/input': 4.1.9(@types/node@22.14.0) - '@inquirer/number': 3.0.12(@types/node@22.14.0) - '@inquirer/password': 4.0.12(@types/node@22.14.0) + '@inquirer/checkbox': 4.1.6(@types/node@22.14.0) + '@inquirer/confirm': 5.1.10(@types/node@22.14.0) + '@inquirer/editor': 4.2.11(@types/node@22.14.0) + '@inquirer/expand': 4.0.13(@types/node@22.14.0) + '@inquirer/input': 4.1.10(@types/node@22.14.0) + '@inquirer/number': 3.0.13(@types/node@22.14.0) + '@inquirer/password': 4.0.13(@types/node@22.14.0) '@inquirer/rawlist': 4.1.1(@types/node@22.14.0) - '@inquirer/search': 3.0.12(@types/node@22.14.0) + '@inquirer/search': 3.0.13(@types/node@22.14.0) '@inquirer/select': 4.2.1(@types/node@22.14.0) optionalDependencies: '@types/node': 22.14.0 @@ -5503,9 +5286,9 @@ snapshots: optionalDependencies: '@types/node': 22.14.0 - '@inquirer/search@3.0.12(@types/node@22.14.0)': + '@inquirer/search@3.0.13(@types/node@22.14.0)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.0) + '@inquirer/core': 10.1.11(@types/node@22.14.0) '@inquirer/figures': 1.0.11 '@inquirer/type': 3.0.6(@types/node@22.14.0) yoctocolors-cjs: 2.1.2 @@ -5585,9 +5368,9 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@2.0.22(@inquirer/prompts@7.5.0(@types/node@22.14.0))': + '@listr2/prompt-adapter-inquirer@2.0.22(@inquirer/prompts@7.5.1(@types/node@22.14.0))': dependencies: - '@inquirer/prompts': 7.5.0(@types/node@22.14.0) + '@inquirer/prompts': 7.5.1(@types/node@22.14.0) '@inquirer/type': 1.5.5 '@lmdb/lmdb-darwin-arm64@3.3.0': @@ -5697,9 +5480,9 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.0.1 optional: true - '@ngtools/webpack@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.4))': + '@ngtools/webpack@20.0.0-rc.2(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.4))': dependencies: - '@angular/compiler-cli': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3) + '@angular/compiler-cli': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3) typescript: 5.8.3 webpack: 5.99.8(esbuild@0.25.4) @@ -5727,7 +5510,7 @@ snapshots: '@npmcli/fs@4.0.0': dependencies: - semver: 7.7.1 + semver: 7.7.2 '@npmcli/git@6.0.3': dependencies: @@ -5737,7 +5520,7 @@ snapshots: npm-pick-manifest: 10.0.0 proc-log: 5.0.0 promise-retry: 2.0.1 - semver: 7.7.1 + semver: 7.7.2 which: 5.0.0 '@npmcli/installed-package-contents@3.0.0': @@ -5754,7 +5537,7 @@ snapshots: hosted-git-info: 8.0.2 json-parse-even-better-errors: 4.0.0 proc-log: 5.0.0 - semver: 7.7.1 + semver: 7.7.2 validate-npm-package-license: 3.0.4 '@npmcli/promise-spawn@8.0.2': @@ -5898,10 +5681,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.40.2': optional: true - '@schematics/angular@20.0.0-rc.0(chokidar@4.0.3)': + '@schematics/angular@20.0.0-rc.2(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.0.0-rc.0(chokidar@4.0.3) - '@angular-devkit/schematics': 20.0.0-rc.0(chokidar@4.0.3) + '@angular-devkit/core': 20.0.0-rc.2(chokidar@4.0.3) + '@angular-devkit/schematics': 20.0.0-rc.2(chokidar@4.0.3) jsonc-parser: 3.3.1 transitivePeerDependencies: - chokidar @@ -6044,9 +5827,9 @@ snapshots: dependencies: '@types/node': 22.14.0 - '@vitejs/plugin-basic-ssl@2.0.0(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0))': + '@vitejs/plugin-basic-ssl@2.0.0(vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1))': dependencies: - vite: 6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0) + vite: 6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1) '@webassemblyjs/ast@1.14.1': dependencies: @@ -6146,12 +5929,12 @@ snapshots: agent-base@7.1.3: {} - ajv-formats@2.1.1(ajv@8.17.1): - optionalDependencies: + ajv-formats@2.1.1: + dependencies: ajv: 8.17.1 - ajv-formats@3.0.1(ajv@8.17.1): - optionalDependencies: + ajv-formats@3.0.1: + dependencies: ajv: 8.17.1 ajv-keywords@5.1.0(ajv@8.17.1): @@ -6215,7 +5998,7 @@ snapshots: babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.27.1): dependencies: - '@babel/compat-data': 7.26.8 + '@babel/compat-data': 7.27.2 '@babel/core': 7.27.1 '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.1) semver: 6.3.1 @@ -6481,9 +6264,9 @@ snapshots: dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 - schema-utils: 4.3.0 + schema-utils: 4.3.2 serialize-javascript: 6.0.2 - tinyglobby: 0.2.12 + tinyglobby: 0.2.13 webpack: 5.99.8(esbuild@0.25.4) core-js-compat@3.41.0: @@ -6521,7 +6304,7 @@ snapshots: postcss-modules-scope: 3.2.1(postcss@8.5.3) postcss-modules-values: 4.0.0(postcss@8.5.3) postcss-value-parser: 4.2.0 - semver: 7.7.1 + semver: 7.7.2 optionalDependencies: webpack: 5.99.8(esbuild@0.25.4) @@ -6822,10 +6605,6 @@ snapshots: dependencies: websocket-driver: 0.7.4 - fdir@6.4.3(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - fdir@6.4.4(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -7186,7 +6965,7 @@ snapshots: istanbul-lib-instrument@4.0.3: dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -7196,10 +6975,10 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.27.1 - '@babel/parser': 7.27.0 + '@babel/parser': 7.27.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.7.1 + semver: 7.7.2 transitivePeerDependencies: - supports-color @@ -7510,7 +7289,7 @@ snapshots: mini-css-extract-plugin@2.9.2(webpack@5.99.8(esbuild@0.25.4)): dependencies: - schema-utils: 4.3.0 + schema-utils: 4.3.2 tapable: 2.2.1 webpack: 5.99.8(esbuild@0.25.4) @@ -7644,9 +7423,9 @@ snapshots: make-fetch-happen: 14.0.3 nopt: 8.1.0 proc-log: 5.0.0 - semver: 7.7.1 + semver: 7.7.2 tar: 7.4.3 - tinyglobby: 0.2.12 + tinyglobby: 0.2.13 which: 5.0.0 transitivePeerDependencies: - supports-color @@ -7667,7 +7446,7 @@ snapshots: npm-install-checks@7.1.1: dependencies: - semver: 7.7.1 + semver: 7.7.2 npm-normalize-package-bin@4.0.0: {} @@ -7675,7 +7454,7 @@ snapshots: dependencies: hosted-git-info: 8.0.2 proc-log: 5.0.0 - semver: 7.7.1 + semver: 7.7.2 validate-npm-package-name: 6.0.0 npm-packlist@9.0.0: @@ -7687,7 +7466,7 @@ snapshots: npm-install-checks: 7.1.1 npm-normalize-package-bin: 4.0.0 npm-package-arg: 12.0.2 - semver: 7.7.1 + semver: 7.7.2 npm-registry-fetch@18.0.2: dependencies: @@ -7804,7 +7583,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.27.1 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -7860,7 +7639,7 @@ snapshots: cosmiconfig: 9.0.0(typescript@5.8.3) jiti: 1.21.7 postcss: 8.5.3 - semver: 7.7.1 + semver: 7.7.2 optionalDependencies: webpack: 5.99.8(esbuild@0.25.4) transitivePeerDependencies: @@ -8081,14 +7860,14 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.5(sass@1.87.0)(webpack@5.99.8(esbuild@0.25.4)): + sass-loader@16.0.5(sass@1.88.0)(webpack@5.99.8(esbuild@0.25.4)): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.87.0 + sass: 1.88.0 webpack: 5.99.8(esbuild@0.25.4) - sass@1.87.0: + sass@1.88.0: dependencies: chokidar: 4.0.3 immutable: 5.1.1 @@ -8099,18 +7878,11 @@ snapshots: sax@1.4.1: optional: true - schema-utils@4.3.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) - ajv-keywords: 5.1.0(ajv@8.17.1) - schema-utils@4.3.2: dependencies: '@types/json-schema': 7.0.15 ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) + ajv-formats: 2.1.1 ajv-keywords: 5.1.0(ajv@8.17.1) select-hose@2.0.0: {} @@ -8127,6 +7899,8 @@ snapshots: semver@7.7.1: {} + semver@7.7.2: {} + send@0.19.0: dependencies: debug: 2.6.9 @@ -8424,18 +8198,18 @@ snapshots: mkdirp: 3.0.1 yallist: 5.0.0 - terser-webpack-plugin@5.3.14(esbuild@0.25.4)(webpack@5.99.8): + terser-webpack-plugin@5.3.14(esbuild@0.25.4)(webpack@5.99.8(esbuild@0.25.4)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 - terser: 5.39.0 + terser: 5.39.1 webpack: 5.99.8(esbuild@0.25.4) optionalDependencies: esbuild: 0.25.4 - terser@5.39.0: + terser@5.39.1: dependencies: '@jridgewell/source-map': 0.3.6 acorn: 8.14.1 @@ -8448,11 +8222,6 @@ snapshots: thunky@1.1.0: {} - tinyglobby@0.2.12: - dependencies: - fdir: 6.4.3(picomatch@4.0.2) - picomatch: 4.0.2 - tinyglobby@0.2.13: dependencies: fdir: 6.4.4(picomatch@4.0.2) @@ -8545,7 +8314,7 @@ snapshots: vary@1.1.2: {} - vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0): + vite@6.3.5(@types/node@22.14.0)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1): dependencies: esbuild: 0.25.4 fdir: 6.4.4(picomatch@4.0.2) @@ -8558,8 +8327,8 @@ snapshots: fsevents: 2.3.3 jiti: 1.21.7 less: 4.3.0 - sass: 1.87.0 - terser: 5.39.0 + sass: 1.88.0 + terser: 5.39.1 void-elements@2.0.1: {} @@ -8579,18 +8348,18 @@ snapshots: weak-lru-cache@1.2.2: optional: true - webpack-dev-middleware@7.4.2(webpack@5.99.8): + webpack-dev-middleware@7.4.2(webpack@5.99.8(esbuild@0.25.4)): dependencies: colorette: 2.0.20 memfs: 4.17.0 mime-types: 2.1.35 on-finished: 2.4.1 range-parser: 1.2.1 - schema-utils: 4.3.0 + schema-utils: 4.3.2 optionalDependencies: webpack: 5.99.8(esbuild@0.25.4) - webpack-dev-server@5.2.1(webpack@5.99.8): + webpack-dev-server@5.2.1(webpack@5.99.8(esbuild@0.25.4)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -8613,12 +8382,12 @@ snapshots: launch-editor: 2.10.0 open: 10.1.2 p-retry: 6.2.1 - schema-utils: 4.3.0 + schema-utils: 4.3.2 selfsigned: 2.4.1 serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.99.8) + webpack-dev-middleware: 7.4.2(webpack@5.99.8(esbuild@0.25.4)) ws: 8.18.1 optionalDependencies: webpack: 5.99.8(esbuild@0.25.4) @@ -8664,7 +8433,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.2 tapable: 2.2.1 - terser-webpack-plugin: 5.3.14(esbuild@0.25.4)(webpack@5.99.8) + terser-webpack-plugin: 5.3.14(esbuild@0.25.4)(webpack@5.99.8(esbuild@0.25.4)) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: diff --git a/integration/yarn-pnp-compat/package.json b/integration/yarn-pnp-compat/package.json index 473cc65b862a..9bf4eae089a3 100644 --- a/integration/yarn-pnp-compat/package.json +++ b/integration/yarn-pnp-compat/package.json @@ -11,23 +11,23 @@ }, "private": true, "dependencies": { - "@angular/animations": "20.0.0-rc.0", + "@angular/animations": "20.0.0-rc.1", "@angular/cdk": "next", - "@angular/common": "20.0.0-rc.0", - "@angular/compiler": "20.0.0-rc.0", - "@angular/core": "20.0.0-rc.0", - "@angular/forms": "20.0.0-rc.0", + "@angular/common": "20.0.0-rc.1", + "@angular/compiler": "20.0.0-rc.1", + "@angular/core": "20.0.0-rc.1", + "@angular/forms": "20.0.0-rc.1", "@angular/material": "next", - "@angular/platform-browser": "20.0.0-rc.0", - "@angular/router": "20.0.0-rc.0", + "@angular/platform-browser": "20.0.0-rc.1", + "@angular/router": "20.0.0-rc.1", "rxjs": "^7.5.5", "tslib": "^2.3.0", "zone.js": "~0.15.0" }, "devDependencies": { - "@angular-devkit/build-angular": "20.0.0-rc.0", - "@angular/cli": "20.0.0-rc.0", - "@angular/compiler-cli": "20.0.0-rc.0", + "@angular-devkit/build-angular": "20.0.0-rc.2", + "@angular/cli": "20.0.0-rc.2", + "@angular/compiler-cli": "20.0.0-rc.1", "@types/jasmine": "~5.1.7", "@types/node": "22.14.0", "glob": "^7.2.0", diff --git a/integration/yarn-pnp-compat/yarn.lock b/integration/yarn-pnp-compat/yarn.lock index 7084524cc1e7..0a5f48eb042d 100644 --- a/integration/yarn-pnp-compat/yarn.lock +++ b/integration/yarn-pnp-compat/yarn.lock @@ -15,25 +15,25 @@ __metadata: languageName: node linkType: hard -"@angular-devkit/architect@npm:0.2000.0-rc.0": - version: 0.2000.0-rc.0 - resolution: "@angular-devkit/architect@npm:0.2000.0-rc.0" +"@angular-devkit/architect@npm:0.2000.0-rc.2": + version: 0.2000.0-rc.2 + resolution: "@angular-devkit/architect@npm:0.2000.0-rc.2" dependencies: - "@angular-devkit/core": "npm:20.0.0-rc.0" + "@angular-devkit/core": "npm:20.0.0-rc.2" rxjs: "npm:7.8.2" - checksum: 10/69f2dc54288fbc0c503e65faf90720abb17da538b17e8208acff3fd0750cc9e837c3090442354ec94e889422c8a9bf5e5721f0f1e704e33fc8ce5364b3857084 + checksum: 10/b424a940491c2728b9ee659c3be7e42b190e2c971bb19c6621db671e478c40ff13202877ef2fc9c53993003a485ff55516793519296d3b3985af30ca8b7aa717 languageName: node linkType: hard -"@angular-devkit/build-angular@npm:20.0.0-rc.0": - version: 20.0.0-rc.0 - resolution: "@angular-devkit/build-angular@npm:20.0.0-rc.0" +"@angular-devkit/build-angular@npm:20.0.0-rc.2": + version: 20.0.0-rc.2 + resolution: "@angular-devkit/build-angular@npm:20.0.0-rc.2" dependencies: "@ampproject/remapping": "npm:2.3.0" - "@angular-devkit/architect": "npm:0.2000.0-rc.0" - "@angular-devkit/build-webpack": "npm:0.2000.0-rc.0" - "@angular-devkit/core": "npm:20.0.0-rc.0" - "@angular/build": "npm:20.0.0-rc.0" + "@angular-devkit/architect": "npm:0.2000.0-rc.2" + "@angular-devkit/build-webpack": "npm:0.2000.0-rc.2" + "@angular-devkit/core": "npm:20.0.0-rc.2" + "@angular/build": "npm:20.0.0-rc.2" "@babel/core": "npm:7.27.1" "@babel/generator": "npm:7.27.1" "@babel/helper-annotate-as-pure": "npm:7.27.1" @@ -44,7 +44,7 @@ __metadata: "@babel/preset-env": "npm:7.27.2" "@babel/runtime": "npm:7.27.1" "@discoveryjs/json-ext": "npm:0.6.3" - "@ngtools/webpack": "npm:20.0.0-rc.0" + "@ngtools/webpack": "npm:20.0.0-rc.2" "@vitejs/plugin-basic-ssl": "npm:2.0.0" ansi-colors: "npm:4.1.3" autoprefixer: "npm:10.4.21" @@ -72,12 +72,12 @@ __metadata: postcss-loader: "npm:8.1.1" resolve-url-loader: "npm:5.0.0" rxjs: "npm:7.8.2" - sass: "npm:1.87.0" + sass: "npm:1.88.0" sass-loader: "npm:16.0.5" - semver: "npm:7.7.1" + semver: "npm:7.7.2" source-map-loader: "npm:5.0.0" source-map-support: "npm:0.5.21" - terser: "npm:5.39.0" + terser: "npm:5.39.1" tree-kill: "npm:1.2.2" tslib: "npm:2.8.1" webpack: "npm:5.99.8" @@ -92,7 +92,7 @@ __metadata: "@angular/platform-browser": ^20.0.0 || ^20.0.0-next.0 "@angular/platform-server": ^20.0.0 || ^20.0.0-next.0 "@angular/service-worker": ^20.0.0 || ^20.0.0-next.0 - "@angular/ssr": ^20.0.0-rc.0 + "@angular/ssr": ^20.0.0-rc.2 "@web/test-runner": ^0.20.0 browser-sync: ^3.0.2 jest: ^29.5.0 @@ -134,26 +134,26 @@ __metadata: optional: true tailwindcss: optional: true - checksum: 10/7ddedab3b079e311a8405967ee73302799e02aca6d58663b77608b6bcd52a2e44014ac3c8c0200c559b6e74254cd4ac0532c9819fef0440274855afa05b5c9a7 + checksum: 10/e3849ad235d5804f8ca31392f438ec25fbefca05d5c7f1b4a2292d463978977a4f83914bc0cd931069d2746285a53a8c52e14d9bee295a1b93bcfb3b84d2fcf1 languageName: node linkType: hard -"@angular-devkit/build-webpack@npm:0.2000.0-rc.0": - version: 0.2000.0-rc.0 - resolution: "@angular-devkit/build-webpack@npm:0.2000.0-rc.0" +"@angular-devkit/build-webpack@npm:0.2000.0-rc.2": + version: 0.2000.0-rc.2 + resolution: "@angular-devkit/build-webpack@npm:0.2000.0-rc.2" dependencies: - "@angular-devkit/architect": "npm:0.2000.0-rc.0" + "@angular-devkit/architect": "npm:0.2000.0-rc.2" rxjs: "npm:7.8.2" peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - checksum: 10/4bca703a5fd06e15c35be04a122d5ec073929f744ba93b943f40630c8a9fbfad7feb4857cb50b7e9b92a429d11f40e412e8d2bda360cb6aae755d233f641aa65 + checksum: 10/5e4ce47d0b3a859bf10167d9738aaee8c183d17bf75fa8c4c707912dc120a711c8f7f129d146c9df2754a2efd835d5263e44a21c36a2aad7e7725559c65d2e66 languageName: node linkType: hard -"@angular-devkit/core@npm:20.0.0-rc.0": - version: 20.0.0-rc.0 - resolution: "@angular-devkit/core@npm:20.0.0-rc.0" +"@angular-devkit/core@npm:20.0.0-rc.2": + version: 20.0.0-rc.2 + resolution: "@angular-devkit/core@npm:20.0.0-rc.2" dependencies: ajv: "npm:8.17.1" ajv-formats: "npm:3.0.1" @@ -166,45 +166,45 @@ __metadata: peerDependenciesMeta: chokidar: optional: true - checksum: 10/eb2d19011c28c757ac8c79d01d79e7c6d78fc2cad80d8b6c9ef5123d88cec26ab97e0979470d3bd37976d00d751207014cb6f6c8d59c45c881a01d703f1fa991 + checksum: 10/fd57158ecee63c7fb2f689f0d2cdd63b4637f1981800dceaa72d8f64b65658819dddbb0a42520ddc9c60c25915d5591b1d4a72c3dac23241f90364e988becd9c languageName: node linkType: hard -"@angular-devkit/schematics@npm:20.0.0-rc.0": - version: 20.0.0-rc.0 - resolution: "@angular-devkit/schematics@npm:20.0.0-rc.0" +"@angular-devkit/schematics@npm:20.0.0-rc.2": + version: 20.0.0-rc.2 + resolution: "@angular-devkit/schematics@npm:20.0.0-rc.2" dependencies: - "@angular-devkit/core": "npm:20.0.0-rc.0" + "@angular-devkit/core": "npm:20.0.0-rc.2" jsonc-parser: "npm:3.3.1" magic-string: "npm:0.30.17" ora: "npm:5.4.1" rxjs: "npm:7.8.2" - checksum: 10/d1cde64d4f3a434eba6f8a4609e2db313e689221bb8f523e26b722f56b7b5dd2ce2b143b2bf035c7500ca4764b064e886f63e624e8f7fd262b1807a0352e0b59 + checksum: 10/0cac0d2556cb8b188cfaa7ea2aef4d1a9e43ba0229d5466dcc3db066735d19c82ad160059ef6f4912d7e1f716f3a38562fa8ace7d73c2934ca6110e6884cf728 languageName: node linkType: hard -"@angular/animations@npm:20.0.0-rc.0": - version: 20.0.0-rc.0 - resolution: "@angular/animations@npm:20.0.0-rc.0" +"@angular/animations@npm:20.0.0-rc.1": + version: 20.0.0-rc.1 + resolution: "@angular/animations@npm:20.0.0-rc.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 20.0.0-rc.0 - "@angular/core": 20.0.0-rc.0 - checksum: 10/e3d1d31c3eb53120bd8463f9f26c5b85f2d5ad3713eefd062d4e7054fe7fe9cfbcf5e61a576212b64ca5bdab8cca5f649b72b44402d0c3b9987b5f3a58b082a9 + "@angular/common": 20.0.0-rc.1 + "@angular/core": 20.0.0-rc.1 + checksum: 10/81110829f61483eb879f3422bbb704ed025273ae8986c4f9f10b796b5088243aae84b33d733aa9869abe3f0baa61ad8ab5638e0c22a85288543e30dcebd678cb languageName: node linkType: hard -"@angular/build@npm:20.0.0-rc.0": - version: 20.0.0-rc.0 - resolution: "@angular/build@npm:20.0.0-rc.0" +"@angular/build@npm:20.0.0-rc.2": + version: 20.0.0-rc.2 + resolution: "@angular/build@npm:20.0.0-rc.2" dependencies: "@ampproject/remapping": "npm:2.3.0" - "@angular-devkit/architect": "npm:0.2000.0-rc.0" + "@angular-devkit/architect": "npm:0.2000.0-rc.2" "@babel/core": "npm:7.27.1" "@babel/helper-annotate-as-pure": "npm:7.27.1" "@babel/helper-split-export-declaration": "npm:7.24.7" - "@inquirer/confirm": "npm:5.1.9" + "@inquirer/confirm": "npm:5.1.10" "@vitejs/plugin-basic-ssl": "npm:2.0.0" beasties: "npm:0.3.3" browserslist: "npm:^4.23.0" @@ -220,8 +220,8 @@ __metadata: picomatch: "npm:4.0.2" piscina: "npm:5.0.0" rollup: "npm:4.40.2" - sass: "npm:1.87.0" - semver: "npm:7.7.1" + sass: "npm:1.88.0" + semver: "npm:7.7.2" source-map-support: "npm:0.5.21" tinyglobby: "npm:0.2.13" vite: "npm:6.3.5" @@ -234,7 +234,7 @@ __metadata: "@angular/platform-browser": ^20.0.0 || ^20.0.0-next.0 "@angular/platform-server": ^20.0.0 || ^20.0.0-next.0 "@angular/service-worker": ^20.0.0 || ^20.0.0-next.0 - "@angular/ssr": ^20.0.0-rc.0 + "@angular/ssr": ^20.0.0-rc.2 karma: ^6.4.0 less: ^4.2.0 ng-packagr: ^20.0.0 || ^20.0.0-next.0 @@ -271,7 +271,7 @@ __metadata: optional: true vitest: optional: true - checksum: 10/6bdb955ee51f69c1fc223bcda2f98183844cb20f852f0fcd4f9177077d9c4da267fdaae026059aed25a7cac85b3c952df2154961afe72f1e3ff973811b286483 + checksum: 10/cc3167435003b39861a28dda879e26809b6faa74488fee50c8501da0458ca63d505fa2854e4cdcf02f1cdf661ed0132616b4b7a3189e8c7140dae486631062c8 languageName: node linkType: hard @@ -289,16 +289,16 @@ __metadata: languageName: node linkType: hard -"@angular/cli@npm:20.0.0-rc.0": - version: 20.0.0-rc.0 - resolution: "@angular/cli@npm:20.0.0-rc.0" +"@angular/cli@npm:20.0.0-rc.2": + version: 20.0.0-rc.2 + resolution: "@angular/cli@npm:20.0.0-rc.2" dependencies: - "@angular-devkit/architect": "npm:0.2000.0-rc.0" - "@angular-devkit/core": "npm:20.0.0-rc.0" - "@angular-devkit/schematics": "npm:20.0.0-rc.0" - "@inquirer/prompts": "npm:7.5.0" + "@angular-devkit/architect": "npm:0.2000.0-rc.2" + "@angular-devkit/core": "npm:20.0.0-rc.2" + "@angular-devkit/schematics": "npm:20.0.0-rc.2" + "@inquirer/prompts": "npm:7.5.1" "@listr2/prompt-adapter-inquirer": "npm:2.0.22" - "@schematics/angular": "npm:20.0.0-rc.0" + "@schematics/angular": "npm:20.0.0-rc.2" "@yarnpkg/lockfile": "npm:1.1.0" ini: "npm:5.0.0" jsonc-parser: "npm:3.3.1" @@ -307,31 +307,31 @@ __metadata: npm-pick-manifest: "npm:10.0.0" pacote: "npm:20.0.0" resolve: "npm:1.22.10" - semver: "npm:7.7.1" + semver: "npm:7.7.2" yargs: "npm:17.7.2" bin: ng: bin/ng.js - checksum: 10/bbad1762ce358cb896f9807bf1211bdfe223987b9532ad845b8b74e2987c55f2bdf4089e9cddc66e66828b55e2cfcbfa572f525c155607e467fa2e820fbcdb40 + checksum: 10/8d7ef24adf96ecf4b10a4906abdf2d39e216902457d78402fb335d8709487c043c540d86ec3339e0897685d750699b5a8ae292fcc560a2d54348003807aab3c0 languageName: node linkType: hard -"@angular/common@npm:20.0.0-rc.0": - version: 20.0.0-rc.0 - resolution: "@angular/common@npm:20.0.0-rc.0" +"@angular/common@npm:20.0.0-rc.1": + version: 20.0.0-rc.1 + resolution: "@angular/common@npm:20.0.0-rc.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/core": 20.0.0-rc.0 + "@angular/core": 20.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10/76ec202df0d24e9b77853abe6a3ca4a631899b4b74874f9f06ef643edd718e32555a9daa7091d3a66a2a55c7be66ccf555cf6e732f951561a724a82228594590 + checksum: 10/6567e49267fc9c35691adaaf3f4303af900b587147816674d59962bfd4b87895e5fac7faca29452a279c661867d3cc8728e136a1a829c327825d16ce556afc9d languageName: node linkType: hard -"@angular/compiler-cli@npm:20.0.0-rc.0": - version: 20.0.0-rc.0 - resolution: "@angular/compiler-cli@npm:20.0.0-rc.0" +"@angular/compiler-cli@npm:20.0.0-rc.1": + version: 20.0.0-rc.1 + resolution: "@angular/compiler-cli@npm:20.0.0-rc.1" dependencies: - "@babel/core": "npm:7.26.10" + "@babel/core": "npm:7.27.1" "@jridgewell/sourcemap-codec": "npm:^1.4.14" chokidar: "npm:^4.0.0" convert-source-map: "npm:^1.5.1" @@ -340,51 +340,51 @@ __metadata: tslib: "npm:^2.3.0" yargs: "npm:^17.2.1" peerDependencies: - "@angular/compiler": 20.0.0-rc.0 + "@angular/compiler": 20.0.0-rc.1 typescript: ">=5.8 <5.9" bin: ng-xi18n: bundles/src/bin/ng_xi18n.js ngc: bundles/src/bin/ngc.js - checksum: 10/c25b086a6e7d9d64f0d99bafd884d249d836abd544391d01ae7fe07d86a20a47daf2d5990ff4f459578d2fbfbe6a2dcdcc3bbe52dbd2afe8706af79758b8ddd3 + checksum: 10/31f69c7fb466e8c79b714fb2646e98f8a748279b521357780bfba8aa2fcbb7c363651f0687845414161b1fb00a57cfd958a4f8162132348b3dfe017d9dcc2a4b languageName: node linkType: hard -"@angular/compiler@npm:20.0.0-rc.0": - version: 20.0.0-rc.0 - resolution: "@angular/compiler@npm:20.0.0-rc.0" +"@angular/compiler@npm:20.0.0-rc.1": + version: 20.0.0-rc.1 + resolution: "@angular/compiler@npm:20.0.0-rc.1" dependencies: tslib: "npm:^2.3.0" - checksum: 10/3deead750e22786aef35a63ee40de14e9b3961c074528bed5f7ec6272ae380273f15fb3e617776bff9919563b3d02bd6d92f4516584e3157a4f766348023866a + checksum: 10/d7131528a2d9a01da49b7b771d88bb75b37a6806b795bb59fd4da08629ce9f818924a75396640cbd5bb635b1cb19f0425630d36720be37a6fb50e2e34fe06069 languageName: node linkType: hard -"@angular/core@npm:20.0.0-rc.0": - version: 20.0.0-rc.0 - resolution: "@angular/core@npm:20.0.0-rc.0" +"@angular/core@npm:20.0.0-rc.1": + version: 20.0.0-rc.1 + resolution: "@angular/core@npm:20.0.0-rc.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/compiler": 20.0.0-rc.0 + "@angular/compiler": 20.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 peerDependenciesMeta: "@angular/compiler": optional: true - checksum: 10/4a11414b8aefbc365379b9ba72db66550baac420813dd1fc3d4e32c9e64d64ae0bcfa00dffa0d1fa8a02c079cfcdfcdd970bf034ee9e2191b927291c692a8330 + checksum: 10/711bb07367071e7177d25c9b2acbd8709bbd5667e446ebc495f416be05a068c25aa8575e5e7519c67387027151cd7fe241b5ef893051544d5697090e83a99a24 languageName: node linkType: hard -"@angular/forms@npm:20.0.0-rc.0": - version: 20.0.0-rc.0 - resolution: "@angular/forms@npm:20.0.0-rc.0" +"@angular/forms@npm:20.0.0-rc.1": + version: 20.0.0-rc.1 + resolution: "@angular/forms@npm:20.0.0-rc.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 20.0.0-rc.0 - "@angular/core": 20.0.0-rc.0 - "@angular/platform-browser": 20.0.0-rc.0 + "@angular/common": 20.0.0-rc.1 + "@angular/core": 20.0.0-rc.1 + "@angular/platform-browser": 20.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10/7f9665f812940c1d5dabcb5d25c0d9018eca55e559ef4374a7f922ddedcdb743a25c5087c723f3665ee44aca1810ecd9636ec4afd635d37c778a72413eda6a45 + checksum: 10/df33a33a944fdd98e3ec17b085cc19c9e30a98923cc96076676f60108a0d66594cfef4cb1c3aab4f28b157ce913f2ab66c53fa02a9e6fec7a4c1ba6f951512f8 languageName: node linkType: hard @@ -404,33 +404,33 @@ __metadata: languageName: node linkType: hard -"@angular/platform-browser@npm:20.0.0-rc.0": - version: 20.0.0-rc.0 - resolution: "@angular/platform-browser@npm:20.0.0-rc.0" +"@angular/platform-browser@npm:20.0.0-rc.1": + version: 20.0.0-rc.1 + resolution: "@angular/platform-browser@npm:20.0.0-rc.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/animations": 20.0.0-rc.0 - "@angular/common": 20.0.0-rc.0 - "@angular/core": 20.0.0-rc.0 + "@angular/animations": 20.0.0-rc.1 + "@angular/common": 20.0.0-rc.1 + "@angular/core": 20.0.0-rc.1 peerDependenciesMeta: "@angular/animations": optional: true - checksum: 10/a1d69854778f5311bf959cdea548b6c9d9df9a7172e5dc694e4e94bf02394a24da446d287141f1d0082058ce0ad35ef2e85ad4d226abb69624a106a82721fde0 + checksum: 10/7bf6eb8a812fe7d885c21135e40df440734f9ef15828ba355685290284625cbe3310ee00a17cce73d44afcfb2d981b6c7e89e4d9187a8944ddb7e8567084840e languageName: node linkType: hard -"@angular/router@npm:20.0.0-rc.0": - version: 20.0.0-rc.0 - resolution: "@angular/router@npm:20.0.0-rc.0" +"@angular/router@npm:20.0.0-rc.1": + version: 20.0.0-rc.1 + resolution: "@angular/router@npm:20.0.0-rc.1" dependencies: tslib: "npm:^2.3.0" peerDependencies: - "@angular/common": 20.0.0-rc.0 - "@angular/core": 20.0.0-rc.0 - "@angular/platform-browser": 20.0.0-rc.0 + "@angular/common": 20.0.0-rc.1 + "@angular/core": 20.0.0-rc.1 + "@angular/platform-browser": 20.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 - checksum: 10/ed6db2baf5ecd700b1f530278c16d8171b442dff4a5917b0d6ea92f9e518f6f9138e0ac88c8df2b1c7407aa9297b621db33d40d2a022cf61ecf2c0bc45e76e4c + checksum: 10/d97ce158092e878ee7d4b265d5e507dfec972fe80c34aa3b4aa0d16f40812a84c8b0610d3a672101f50be08fa7dfef906156dad1af729379adb7af3775db3c51 languageName: node linkType: hard @@ -470,29 +470,6 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:7.26.10": - version: 7.26.10 - resolution: "@babel/core@npm:7.26.10" - dependencies: - "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.26.2" - "@babel/generator": "npm:^7.26.10" - "@babel/helper-compilation-targets": "npm:^7.26.5" - "@babel/helper-module-transforms": "npm:^7.26.0" - "@babel/helpers": "npm:^7.26.10" - "@babel/parser": "npm:^7.26.10" - "@babel/template": "npm:^7.26.9" - "@babel/traverse": "npm:^7.26.10" - "@babel/types": "npm:^7.26.10" - convert-source-map: "npm:^2.0.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.2.3" - semver: "npm:^6.3.1" - checksum: 10/68f6707eebd6bb8beed7ceccf5153e35b86c323e40d11d796d75c626ac8f1cc4e1f795584c5ab5f886bc64150c22d5088123d68c069c63f29984c4fc054d1dab - languageName: node - linkType: hard - "@babel/core@npm:7.27.1": version: 7.27.1 resolution: "@babel/core@npm:7.27.1" @@ -552,19 +529,6 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.26.10, @babel/generator@npm:^7.27.0": - version: 7.27.0 - resolution: "@babel/generator@npm:7.27.0" - dependencies: - "@babel/parser": "npm:^7.27.0" - "@babel/types": "npm:^7.27.0" - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.25" - jsesc: "npm:^3.0.2" - checksum: 10/5447c402b1d841132534a0a9715e89f4f28b6f2886a23e70aaa442150dba4a1e29e4e2351814f439ee1775294dccdef9ab0a4192b6e6a5ad44e24233b3611da2 - languageName: node - linkType: hard - "@babel/generator@npm:^7.26.9": version: 7.26.9 resolution: "@babel/generator@npm:7.26.9" @@ -857,16 +821,6 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.26.10": - version: 7.27.0 - resolution: "@babel/helpers@npm:7.27.0" - dependencies: - "@babel/template": "npm:^7.27.0" - "@babel/types": "npm:^7.27.0" - checksum: 10/0dd40ba1e5ba4b72d1763bb381384585a56f21a61a19dc1b9a03381fe8e840207fdaa4da645d14dc028ad768087d41aad46347cc6573bd69d82f597f5a12dc6f - languageName: node - linkType: hard - "@babel/helpers@npm:^7.26.9": version: 7.26.9 resolution: "@babel/helpers@npm:7.26.9" @@ -898,17 +852,6 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.26.10, @babel/parser@npm:^7.27.0": - version: 7.27.0 - resolution: "@babel/parser@npm:7.27.0" - dependencies: - "@babel/types": "npm:^7.27.0" - bin: - parser: ./bin/babel-parser.js - checksum: 10/0fee9f05c6db753882ca9d10958301493443da9f6986d7020ebd7a696b35886240016899bc0b47d871aea2abcafd64632343719742e87432c8145e0ec2af2a03 - languageName: node - linkType: hard - "@babel/parser@npm:^7.27.1, @babel/parser@npm:^7.27.2": version: 7.27.2 resolution: "@babel/parser@npm:7.27.2" @@ -1735,17 +1678,6 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.27.0": - version: 7.27.0 - resolution: "@babel/template@npm:7.27.0" - dependencies: - "@babel/code-frame": "npm:^7.26.2" - "@babel/parser": "npm:^7.27.0" - "@babel/types": "npm:^7.27.0" - checksum: 10/7159ca1daea287ad34676d45a7146675444d42c7664aca3e617abc9b1d9548c8f377f35a36bb34cf956e1d3610dcb7acfcfe890aebf81880d35f91a7bd273ee5 - languageName: node - linkType: hard - "@babel/template@npm:^7.27.1": version: 7.27.2 resolution: "@babel/template@npm:7.27.2" @@ -1772,21 +1704,6 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.26.10": - version: 7.27.0 - resolution: "@babel/traverse@npm:7.27.0" - dependencies: - "@babel/code-frame": "npm:^7.26.2" - "@babel/generator": "npm:^7.27.0" - "@babel/parser": "npm:^7.27.0" - "@babel/template": "npm:^7.27.0" - "@babel/types": "npm:^7.27.0" - debug: "npm:^4.3.1" - globals: "npm:^11.1.0" - checksum: 10/b0675bc16bd87187e8b090557b0650135de56a621692ad8614b20f32621350ae0fc2e1129b73b780d64a9ed4beab46849a17f90d5267b6ae6ce09ec8412a12c7 - languageName: node - linkType: hard - "@babel/traverse@npm:^7.27.1": version: 7.27.1 resolution: "@babel/traverse@npm:7.27.1" @@ -1812,16 +1729,6 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.26.10, @babel/types@npm:^7.27.0": - version: 7.27.0 - resolution: "@babel/types@npm:7.27.0" - dependencies: - "@babel/helper-string-parser": "npm:^7.25.9" - "@babel/helper-validator-identifier": "npm:^7.25.9" - checksum: 10/2c322bce107c8a534dc4a23be60d570e6a4cc7ca2e44d4f0eee08c0b626104eb7e60ab8de03463bc5da1773a2f69f1e6edec1648d648d65461d6520a7f3b0770 - languageName: node - linkType: hard - "@babel/types@npm:^7.27.1": version: 7.27.1 resolution: "@babel/types@npm:7.27.1" @@ -2196,7 +2103,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/checkbox@npm:^4.1.5": +"@inquirer/checkbox@npm:^4.1.6": version: 4.1.6 resolution: "@inquirer/checkbox@npm:4.1.6" dependencies: @@ -2214,22 +2121,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/confirm@npm:5.1.9": - version: 5.1.9 - resolution: "@inquirer/confirm@npm:5.1.9" - dependencies: - "@inquirer/core": "npm:^10.1.10" - "@inquirer/type": "npm:^3.0.6" - peerDependencies: - "@types/node": ">=18" - peerDependenciesMeta: - "@types/node": - optional: true - checksum: 10/8df076d46c62fd7429c7f82491bf6971a491db7107074aa29ca566f0539746837c5116b9df489f0c6374567a23a1137f0ddef7730f3e1617faef7de5fc0f0942 - languageName: node - linkType: hard - -"@inquirer/confirm@npm:^5.1.9": +"@inquirer/confirm@npm:5.1.10, @inquirer/confirm@npm:^5.1.10": version: 5.1.10 resolution: "@inquirer/confirm@npm:5.1.10" dependencies: @@ -2244,7 +2136,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/core@npm:^10.1.10, @inquirer/core@npm:^10.1.11": +"@inquirer/core@npm:^10.1.11": version: 10.1.11 resolution: "@inquirer/core@npm:10.1.11" dependencies: @@ -2265,7 +2157,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/editor@npm:^4.2.10": +"@inquirer/editor@npm:^4.2.11": version: 4.2.11 resolution: "@inquirer/editor@npm:4.2.11" dependencies: @@ -2281,7 +2173,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/expand@npm:^4.0.12": +"@inquirer/expand@npm:^4.0.13": version: 4.0.13 resolution: "@inquirer/expand@npm:4.0.13" dependencies: @@ -2304,7 +2196,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/input@npm:^4.1.9": +"@inquirer/input@npm:^4.1.10": version: 4.1.10 resolution: "@inquirer/input@npm:4.1.10" dependencies: @@ -2319,7 +2211,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/number@npm:^3.0.12": +"@inquirer/number@npm:^3.0.13": version: 3.0.13 resolution: "@inquirer/number@npm:3.0.13" dependencies: @@ -2334,7 +2226,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/password@npm:^4.0.12": +"@inquirer/password@npm:^4.0.13": version: 4.0.13 resolution: "@inquirer/password@npm:4.0.13" dependencies: @@ -2350,30 +2242,30 @@ __metadata: languageName: node linkType: hard -"@inquirer/prompts@npm:7.5.0": - version: 7.5.0 - resolution: "@inquirer/prompts@npm:7.5.0" +"@inquirer/prompts@npm:7.5.1": + version: 7.5.1 + resolution: "@inquirer/prompts@npm:7.5.1" dependencies: - "@inquirer/checkbox": "npm:^4.1.5" - "@inquirer/confirm": "npm:^5.1.9" - "@inquirer/editor": "npm:^4.2.10" - "@inquirer/expand": "npm:^4.0.12" - "@inquirer/input": "npm:^4.1.9" - "@inquirer/number": "npm:^3.0.12" - "@inquirer/password": "npm:^4.0.12" - "@inquirer/rawlist": "npm:^4.1.0" - "@inquirer/search": "npm:^3.0.12" - "@inquirer/select": "npm:^4.2.0" + "@inquirer/checkbox": "npm:^4.1.6" + "@inquirer/confirm": "npm:^5.1.10" + "@inquirer/editor": "npm:^4.2.11" + "@inquirer/expand": "npm:^4.0.13" + "@inquirer/input": "npm:^4.1.10" + "@inquirer/number": "npm:^3.0.13" + "@inquirer/password": "npm:^4.0.13" + "@inquirer/rawlist": "npm:^4.1.1" + "@inquirer/search": "npm:^3.0.13" + "@inquirer/select": "npm:^4.2.1" peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 10/6a8dece795f3b9a45866beac6d15e9939cec8e004fdf498383286fcc28b62cff09b8d669bfd247b741fe888fb10827a079d828abf94775448e0c58507412e018 + checksum: 10/febb8a1bb6e7ff63b0e6c88ac9af7f7a2daf621f80c0e720cc7a68bd9fa99c7253911271d547ba3b55f18b580298a58440f3f45c974b8e895cfae929fadec868 languageName: node linkType: hard -"@inquirer/rawlist@npm:^4.1.0": +"@inquirer/rawlist@npm:^4.1.1": version: 4.1.1 resolution: "@inquirer/rawlist@npm:4.1.1" dependencies: @@ -2389,7 +2281,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/search@npm:^3.0.12": +"@inquirer/search@npm:^3.0.13": version: 3.0.13 resolution: "@inquirer/search@npm:3.0.13" dependencies: @@ -2406,7 +2298,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/select@npm:^4.2.0": +"@inquirer/select@npm:^4.2.1": version: 4.2.1 resolution: "@inquirer/select@npm:4.2.1" dependencies: @@ -2837,14 +2729,14 @@ __metadata: languageName: node linkType: hard -"@ngtools/webpack@npm:20.0.0-rc.0": - version: 20.0.0-rc.0 - resolution: "@ngtools/webpack@npm:20.0.0-rc.0" +"@ngtools/webpack@npm:20.0.0-rc.2": + version: 20.0.0-rc.2 + resolution: "@ngtools/webpack@npm:20.0.0-rc.2" peerDependencies: "@angular/compiler-cli": ^20.0.0 || ^20.0.0-next.0 typescript: ">=5.8 <5.9" webpack: ^5.54.0 - checksum: 10/9277f7c1d9ae52fcc3054fcd4a04e7a27f763cb31a7ce1452492c61c10f78e350152787caaf2f908cca2a07927a93d86871fa42ad0155c5b377e05e45e1929af + checksum: 10/b4c3f54e1875467bdb7ab429d583c0cf9e1d4177dfa3410bd15d31c3156d7476ff265bcd166e0996728924ce49ea8da8ac147b093ed9b39da5005b9a9a8aec40 languageName: node linkType: hard @@ -3268,14 +3160,14 @@ __metadata: languageName: node linkType: hard -"@schematics/angular@npm:20.0.0-rc.0": - version: 20.0.0-rc.0 - resolution: "@schematics/angular@npm:20.0.0-rc.0" +"@schematics/angular@npm:20.0.0-rc.2": + version: 20.0.0-rc.2 + resolution: "@schematics/angular@npm:20.0.0-rc.2" dependencies: - "@angular-devkit/core": "npm:20.0.0-rc.0" - "@angular-devkit/schematics": "npm:20.0.0-rc.0" + "@angular-devkit/core": "npm:20.0.0-rc.2" + "@angular-devkit/schematics": "npm:20.0.0-rc.2" jsonc-parser: "npm:3.3.1" - checksum: 10/ed177ce59be1b09e2d800164b56878eca7819945521708947e409ec8ea25bb9a68f2916292c0be8d47502d9137cb74aae2bc93cad734d3d79e49cbe5c88c8230 + checksum: 10/bd962076bd12122d54432d054c59fd15fce3137591ea5d4166aaf44a87e3205d17b6fb47e6a6be17895b31f23ebf38196174983688d5103ff813324fd20b3c9c languageName: node linkType: hard @@ -8449,9 +8341,9 @@ __metadata: languageName: node linkType: hard -"sass@npm:1.87.0": - version: 1.87.0 - resolution: "sass@npm:1.87.0" +"sass@npm:1.88.0": + version: 1.88.0 + resolution: "sass@npm:1.88.0" dependencies: "@parcel/watcher": "npm:^2.4.1" chokidar: "npm:^4.0.0" @@ -8462,7 +8354,7 @@ __metadata: optional: true bin: sass: sass.js - checksum: 10/43c7d9567baf08619edf46b1419882c5459d456968bb7f220eb92d2cb9c344218dbb93f00c4e76624cfd4f862531d37be731845da6a5b538cf10516746908297 + checksum: 10/dfe4aec19409d7eabca793bb5b464d81b636c853be33157b1d8121959be3f066f22ebe1d233d0eaaf29fac21cd746ba29acb50ed9bbf6e0a3b892c8e5ed0daa5 languageName: node linkType: hard @@ -8514,12 +8406,12 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.7.1, semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4": - version: 7.7.1 - resolution: "semver@npm:7.7.1" +"semver@npm:7.7.2": + version: 7.7.2 + resolution: "semver@npm:7.7.2" bin: semver: bin/semver.js - checksum: 10/4cfa1eb91ef3751e20fc52e47a935a0118d56d6f15a837ab814da0c150778ba2ca4f1a4d9068b33070ea4273629e615066664c2cfcd7c272caf7a8a0f6518b2c + checksum: 10/7a24cffcaa13f53c09ce55e05efe25cd41328730b2308678624f8b9f5fc3093fc4d189f47950f0b811ff8f3c3039c24a2c36717ba7961615c682045bf03e1dda languageName: node linkType: hard @@ -8541,6 +8433,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4": + version: 7.7.1 + resolution: "semver@npm:7.7.1" + bin: + semver: bin/semver.js + checksum: 10/4cfa1eb91ef3751e20fc52e47a935a0118d56d6f15a837ab814da0c150778ba2ca4f1a4d9068b33070ea4273629e615066664c2cfcd7c272caf7a8a0f6518b2c + languageName: node + linkType: hard + "send@npm:0.19.0": version: 0.19.0 resolution: "send@npm:0.19.0" @@ -9110,7 +9011,21 @@ __metadata: languageName: node linkType: hard -"terser@npm:5.39.0, terser@npm:^5.31.1": +"terser@npm:5.39.1": + version: 5.39.1 + resolution: "terser@npm:5.39.1" + dependencies: + "@jridgewell/source-map": "npm:^0.3.3" + acorn: "npm:^8.8.2" + commander: "npm:^2.20.0" + source-map-support: "npm:~0.5.20" + bin: + terser: bin/terser + checksum: 10/f73303c5ac748d7b9678bdb5f9ef47a6f77d2e761e6f9b8ccf0b97da472f97c3b4e98216b150f234fecfebd3f7b539384872320dd6e55a9ce6d28d57165b2d99 + languageName: node + linkType: hard + +"terser@npm:^5.31.1": version: 5.39.0 resolution: "terser@npm:5.39.0" dependencies: @@ -9865,18 +9780,18 @@ __metadata: version: 0.0.0-use.local resolution: "yarn-pnp-compat@workspace:." dependencies: - "@angular-devkit/build-angular": "npm:20.0.0-rc.0" - "@angular/animations": "npm:20.0.0-rc.0" + "@angular-devkit/build-angular": "npm:20.0.0-rc.2" + "@angular/animations": "npm:20.0.0-rc.1" "@angular/cdk": "npm:next" - "@angular/cli": "npm:20.0.0-rc.0" - "@angular/common": "npm:20.0.0-rc.0" - "@angular/compiler": "npm:20.0.0-rc.0" - "@angular/compiler-cli": "npm:20.0.0-rc.0" - "@angular/core": "npm:20.0.0-rc.0" - "@angular/forms": "npm:20.0.0-rc.0" + "@angular/cli": "npm:20.0.0-rc.2" + "@angular/common": "npm:20.0.0-rc.1" + "@angular/compiler": "npm:20.0.0-rc.1" + "@angular/compiler-cli": "npm:20.0.0-rc.1" + "@angular/core": "npm:20.0.0-rc.1" + "@angular/forms": "npm:20.0.0-rc.1" "@angular/material": "npm:next" - "@angular/platform-browser": "npm:20.0.0-rc.0" - "@angular/router": "npm:20.0.0-rc.0" + "@angular/platform-browser": "npm:20.0.0-rc.1" + "@angular/router": "npm:20.0.0-rc.1" "@types/jasmine": "npm:~5.1.7" "@types/node": "npm:22.14.0" glob: "npm:^7.2.0" diff --git a/package.json b/package.json index 8602a04fcec5..4ca42bdd2c13 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "devDependencies": { "@angular/compiler-cli": "catalog:", "@angular/localize": "catalog:", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#ff125f14e67489d7ca3839fd17ecfee59c5a7dcb", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#32c4a4b15963cdd60dd1a35e92f75e538936fcdf", "@angular/platform-server": "catalog:", "@angular/router": "catalog:", "@babel/core": "^7.16.12", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0aa1dd27b1af..cdc7fc93f3c8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,56 +7,56 @@ settings: catalogs: default: '@angular-devkit/build-angular': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0 + specifier: 20.0.0-rc.2 + version: 20.0.0-rc.2 '@angular-devkit/core': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0 + specifier: 20.0.0-rc.2 + version: 20.0.0-rc.2 '@angular-devkit/schematics': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0 + specifier: 20.0.0-rc.2 + version: 20.0.0-rc.2 '@angular/animations': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0 + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1 '@angular/cli': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0 + specifier: 20.0.0-rc.2 + version: 20.0.0-rc.2 '@angular/common': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0 + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1 '@angular/compiler': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0 + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1 '@angular/compiler-cli': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0 + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1 '@angular/core': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0 + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1 '@angular/forms': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0 + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1 '@angular/localize': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0 + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1 '@angular/platform-browser': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0 + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1 '@angular/platform-browser-dynamic': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0 + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1 '@angular/platform-server': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0 + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1 '@angular/router': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0 + specifier: 20.0.0-rc.1 + version: 20.0.0-rc.1 '@angular/ssr': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0 + specifier: 20.0.0-rc.2 + version: 20.0.0-rc.2 '@schematics/angular': - specifier: 20.0.0-rc.0 - version: 20.0.0-rc.0 + specifier: 20.0.0-rc.2 + version: 20.0.0-rc.2 rxjs: specifier: ^6.6.7 version: 6.6.7 @@ -72,28 +72,28 @@ importers: dependencies: '@angular-devkit/core': specifier: 'catalog:' - version: 20.0.0-rc.0(chokidar@4.0.3) + version: 20.0.0-rc.2(chokidar@4.0.3) '@angular-devkit/schematics': specifier: 'catalog:' - version: 20.0.0-rc.0(chokidar@4.0.3) + version: 20.0.0-rc.2(chokidar@4.0.3) '@angular/animations': specifier: 'catalog:' - version: 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0)) + version: 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0)) '@angular/common': specifier: 'catalog:' - version: 20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7) + version: 20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7) '@angular/compiler': specifier: 'catalog:' - version: 20.0.0-rc.0 + version: 20.0.0-rc.1 '@angular/core': specifier: 'catalog:' - version: 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0) + version: 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0) '@angular/forms': specifier: 'catalog:' - version: 20.0.0-rc.0(gck5n5qbgjok7klltootb34kfi) + version: 20.0.0-rc.1(7zc6f62pa2tvzuwqxa5yynhuxy) '@angular/platform-browser': specifier: 'catalog:' - version: 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0)) + version: 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0)) '@types/google.maps': specifier: ^3.54.10 version: 3.58.1 @@ -127,19 +127,19 @@ importers: devDependencies: '@angular/compiler-cli': specifier: 'catalog:' - version: 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3) + version: 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3) '@angular/localize': specifier: 'catalog:' - version: 20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.0) + version: 20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.1) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#ff125f14e67489d7ca3839fd17ecfee59c5a7dcb - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/ff125f14e67489d7ca3839fd17ecfee59c5a7dcb(encoding@0.1.13) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#32c4a4b15963cdd60dd1a35e92f75e538936fcdf + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/32c4a4b15963cdd60dd1a35e92f75e538936fcdf(encoding@0.1.13) '@angular/platform-server': specifier: 'catalog:' - version: 20.0.0-rc.0(uhmztyizciadarv37k4s3ufn4e) + version: 20.0.0-rc.1(66c4waiyzoicv6gxn24dzbippq) '@angular/router': specifier: 'catalog:' - version: 20.0.0-rc.0(gck5n5qbgjok7klltootb34kfi) + version: 20.0.0-rc.1(7zc6f62pa2tvzuwqxa5yynhuxy) '@babel/core': specifier: ^7.16.12 version: 7.26.10 @@ -172,7 +172,7 @@ importers: version: 16.0.1(rollup@2.79.2) '@schematics/angular': specifier: 'catalog:' - version: 20.0.0-rc.0(chokidar@4.0.3) + version: 20.0.0-rc.2(chokidar@4.0.3) '@types/babel__core': specifier: ^7.1.18 version: 7.20.5 @@ -370,7 +370,7 @@ importers: dependencies: '@angular/animations': specifier: 'catalog:' - version: 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0)) + version: 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0)) '@angular/cdk': specifier: workspace:* version: link:../src/cdk @@ -379,25 +379,25 @@ importers: version: link:../src/cdk-experimental '@angular/common': specifier: 'catalog:' - version: 20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7) + version: 20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7) '@angular/compiler': specifier: 'catalog:' - version: 20.0.0-rc.0 + version: 20.0.0-rc.1 '@angular/components-examples': specifier: workspace:* version: link:../src/components-examples '@angular/core': specifier: 'catalog:' - version: 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0) + version: 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0) '@angular/forms': specifier: 'catalog:' - version: 20.0.0-rc.0(gck5n5qbgjok7klltootb34kfi) + version: 20.0.0-rc.1(7zc6f62pa2tvzuwqxa5yynhuxy) '@angular/google-maps': specifier: workspace:* version: link:../src/google-maps '@angular/localize': specifier: 'catalog:' - version: 20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.0) + version: 20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.1) '@angular/material': specifier: workspace:* version: link:../src/material @@ -409,16 +409,16 @@ importers: version: link:../src/material-moment-adapter '@angular/platform-browser': specifier: 'catalog:' - version: 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0)) + version: 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0)) '@angular/platform-browser-dynamic': specifier: 'catalog:' - version: 20.0.0-rc.0(3jfeayzntifrl3qb364vor6h6y) + version: 20.0.0-rc.1(mizrq3dzpbvowxnz5dt3f3spge) '@angular/router': specifier: 'catalog:' - version: 20.0.0-rc.0(gck5n5qbgjok7klltootb34kfi) + version: 20.0.0-rc.1(7zc6f62pa2tvzuwqxa5yynhuxy) '@angular/ssr': specifier: 'catalog:' - version: 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(@angular/platform-server@20.0.0-rc.0(uhmztyizciadarv37k4s3ufn4e))(@angular/router@20.0.0-rc.0(gck5n5qbgjok7klltootb34kfi)) + version: 20.0.0-rc.2(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(@angular/platform-server@20.0.0-rc.1(66c4waiyzoicv6gxn24dzbippq))(@angular/router@20.0.0-rc.1(7zc6f62pa2tvzuwqxa5yynhuxy)) '@angular/youtube-player': specifier: workspace:* version: link:../src/youtube-player @@ -443,13 +443,13 @@ importers: devDependencies: '@angular-devkit/build-angular': specifier: 'catalog:' - version: 20.0.0-rc.0(cgyleuswwdiwtuzmnmmmratqqe) + version: 20.0.0-rc.2(nauvhduibcvmbzzeows43zmq5e) '@angular/cli': specifier: 'catalog:' - version: 20.0.0-rc.0(@types/node@22.14.1)(chokidar@4.0.3) + version: 20.0.0-rc.2(@types/node@22.14.1)(chokidar@4.0.3) '@angular/compiler-cli': specifier: 'catalog:' - version: 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3) + version: 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3) '@bazel/bazelisk': specifier: ^1.12.1 version: 1.12.1 @@ -728,12 +728,12 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-devkit/architect@0.2000.0-rc.0': - resolution: {integrity: sha512-O3sVOvEou7+d0YbIE/OzHs6EU/xrHjSwi3z1djyNSJflhwTe6qyY4wdzdggwWt6z6iS5sLsMolsnhR6hYfuK+A==} + '@angular-devkit/architect@0.2000.0-rc.2': + resolution: {integrity: sha512-Djnp29FKGZvfNBY6CZOTMV0RCpKWcukHTH0q1FZMAqCQX56At9828AvPDssKsSs5+ngq3LVIHLBNaPAqMULE0Q==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/build-angular@20.0.0-rc.0': - resolution: {integrity: sha512-dFiKXZTPV2Uiq938eHSxepCrZKPY3ZbS3L08Q6bgPTInq1hFIceaVty7Ujq90PD6DYEaY3bGKv+aynN8occcCw==} + '@angular-devkit/build-angular@20.0.0-rc.2': + resolution: {integrity: sha512-CrAfBf4GsE2ZEk95Mi5Z+Gv71K0ovWCZ6fxnXtSNll+LW0cdhUeDekkKla3yUk6gVdIIP6hJEe4ggWVd+uffcw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 || ^20.0.0-next.0 @@ -742,7 +742,7 @@ packages: '@angular/platform-browser': ^20.0.0 || ^20.0.0-next.0 '@angular/platform-server': ^20.0.0 || ^20.0.0-next.0 '@angular/service-worker': ^20.0.0 || ^20.0.0-next.0 - '@angular/ssr': ^20.0.0-rc.0 + '@angular/ssr': ^20.0.0-rc.2 '@web/test-runner': ^0.20.0 browser-sync: ^3.0.2 jest: ^29.5.0 @@ -782,15 +782,15 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.2000.0-rc.0': - resolution: {integrity: sha512-pejJMhyzxetoJ5GpXOkybh6oJOPgKs+wMLA/U3F4oxT4EpwcUY+kl0VoANtqDDkHEC1cDmsWzI6XyBesmIQIfw==} + '@angular-devkit/build-webpack@0.2000.0-rc.2': + resolution: {integrity: sha512-ZH9QpGVSiXICPxI0O+aT/eFPmlNINOrl2rALFeFHyZY7DtkI5e5BLffCMw4LMD37mu81tAwYfbjC16WJQ1bQjA==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@20.0.0-rc.0': - resolution: {integrity: sha512-Crj0G0occyB1ftUQoAj4ONouJuQ336FryWhehslIzZCOGxzwPWUw/ersaIKHmGr80sQ39fL4iUUaiFmm5EyG/A==} + '@angular-devkit/core@20.0.0-rc.2': + resolution: {integrity: sha512-BGCSAIyUkGiuLQOqVjmBODRdVIJYc1RsO5GQzGmn0kZBsehu+RiELLhhbgfrSUJil0gJxgMML4x4vgIUofBEEQ==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 @@ -798,19 +798,19 @@ packages: chokidar: optional: true - '@angular-devkit/schematics@20.0.0-rc.0': - resolution: {integrity: sha512-VJMahL7uvTT4L5fzzIrcv4bSnsXQG+2HNLQK4EWmG4j2vdKOcpCXL6EbE+ZD2ZDSqmNGSIAV0YHnsMD7mjTNYw==} + '@angular-devkit/schematics@20.0.0-rc.2': + resolution: {integrity: sha512-VmpjYyCfFL39gl1wVDR8cikpjJj6WUlGe18N1LjJEUcwVjeoYsLQyxurM6JTv2IfyfYsIbr2FwpOpdajvzWEBQ==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/animations@20.0.0-rc.0': - resolution: {integrity: sha512-+vrpMe9NJ4QmW8iBh/cf/9sDHTOcJk7UW4jCf8y9s9HLk38MgUiCE0WAZz6RmnIrFGUCfewPzp9OsSf8duG4ww==} + '@angular/animations@20.0.0-rc.1': + resolution: {integrity: sha512-SpHzz05VBhS+bGC8KOzdPbDDs87gTHR/UvvSIyAmLnFyX6QhpHV+a4+SQH1AxQAbHlj9DcpOdd3fAPL8kjqcRw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.0.0-rc.0 - '@angular/core': 20.0.0-rc.0 + '@angular/common': 20.0.0-rc.1 + '@angular/core': 20.0.0-rc.1 - '@angular/build@20.0.0-rc.0': - resolution: {integrity: sha512-cVKDaoloiiN06dMnsS0ARDP5QMKVpQSijTBHr2Fpvxi6615rTEQAhj/VgTECVYhkRRNm4cILP1RX1KvqWkawEA==} + '@angular/build@20.0.0-rc.2': + resolution: {integrity: sha512-vif6SJFtKsdHCMZElaSEo0ghNqtWhnRGvz0s07Y2+YCPEXEzzFh9aMtehWEYwltrbSev4hU3cbfFN7q14vXMZA==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler': ^20.0.0 || ^20.0.0-next.0 @@ -820,7 +820,7 @@ packages: '@angular/platform-browser': ^20.0.0 || ^20.0.0-next.0 '@angular/platform-server': ^20.0.0 || ^20.0.0-next.0 '@angular/service-worker': ^20.0.0 || ^20.0.0-next.0 - '@angular/ssr': ^20.0.0-rc.0 + '@angular/ssr': ^20.0.0-rc.2 karma: ^6.4.0 less: ^4.2.0 ng-packagr: ^20.0.0 || ^20.0.0-next.0 @@ -855,104 +855,104 @@ packages: vitest: optional: true - '@angular/cli@20.0.0-rc.0': - resolution: {integrity: sha512-fP+OWXhxjNVHSQbofoQv5mEB1JKc+Dh/q/1tUMk+T2VM3QsMZpelWRXb3Wk6jlScwDMChyr3VjaEngAUnoEF3A==} + '@angular/cli@20.0.0-rc.2': + resolution: {integrity: sha512-/XbwlcuEWhGYJj1TX46/lvcctUd0McphlQa27sMMeNnveuPWYmW1RptbRGT8GF47Fqrlcxzg03rgtqKVYSevYw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/common@20.0.0-rc.0': - resolution: {integrity: sha512-aaEjRPtVv0DF3q6wPHRfephY1kMYTefmFH35z+hzcUVIrVyYQdT/LIUX3L+C9ITfYyLmFWlENf3HxmVUILfXAg==} + '@angular/common@20.0.0-rc.1': + resolution: {integrity: sha512-hmqK/vxTmbtnS107Qe6hl+ecrJek5Xou8oNlAAXZuxLg+DEy46KMHGOybwcVXiGfFTOSdpBZfab6wFnfqVAEpw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/core': 20.0.0-rc.0 + '@angular/core': 20.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@20.0.0-rc.0': - resolution: {integrity: sha512-0+nEw4JXRSdBPDJvtBwQlMYd3dVsM0XOzc1hpg+1E7RWIXsxGb2WE8gEvNjNdR0oE7kjdUWSOKlDMJfE3AWVLA==} + '@angular/compiler-cli@20.0.0-rc.1': + resolution: {integrity: sha512-sD2HmxJkTfzvC7rYbb4BfrZFQgtP2madldrPRd1cBXDyC1P65fIDjgccswfezYTe4EnBkQUDB7nH2ToRISm1xw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 20.0.0-rc.0 + '@angular/compiler': 20.0.0-rc.1 typescript: 5.8.3 - '@angular/compiler@20.0.0-rc.0': - resolution: {integrity: sha512-MJ2rJVQ/H6m9P3kIL9+wrwLnY2N48GM6vBhZ5+hVvtTPKLM0qcMwfTd/1SaG5e17tpg4mDWcr+pmnoGFgkXHvg==} + '@angular/compiler@20.0.0-rc.1': + resolution: {integrity: sha512-M4VAmo9G43M0OjxU9h3ih9x+dD3oKlbpI40Sb3LdCnBxyH5SzFxYBXR+NaPlo+UbtFsq7BUZ5CYVVo5k+xvF+Q==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} - '@angular/core@20.0.0-rc.0': - resolution: {integrity: sha512-RKIXYA129vdrRKrnac2XOgpWuYusWqwM4KsQ7b5qKIMZabJ0a2GoOlezT6+NhPkOSsyygYuZtaia5wzQeU1acA==} + '@angular/core@20.0.0-rc.1': + resolution: {integrity: sha512-kboL1+ykpCMsX8IGg+DicrtFRpzI+7yvaRJvPunNtl980rYMrzl9XarZfhgltMshc0h2hfC+2PlD3PNCeOBkQg==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 20.0.0-rc.0 + '@angular/compiler': 20.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 peerDependenciesMeta: '@angular/compiler': optional: true - '@angular/forms@20.0.0-rc.0': - resolution: {integrity: sha512-RH95gg+WBBHS+m6y2XDTCCUZMg6Xih1Y4G91tnBdzSxV32evqyNDrSA9IxOhC6Ztxcd+2aLg1S1hsaiMbF2Alw==} + '@angular/forms@20.0.0-rc.1': + resolution: {integrity: sha512-AW0jInUY+M+Erbi3ir/p3lTK4y4zlwc+KeqMRhsEK7cplWuSXmXrans3onAJSrU1knVsdzq0mq+1PrcQeVR+hA==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.0.0-rc.0 - '@angular/core': 20.0.0-rc.0 - '@angular/platform-browser': 20.0.0-rc.0 + '@angular/common': 20.0.0-rc.1 + '@angular/core': 20.0.0-rc.1 + '@angular/platform-browser': 20.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@20.0.0-rc.0': - resolution: {integrity: sha512-x6NmY9VCjSh0IPgTBF8SMIasy97ChOZfYgi1iDZwDNaAVug+jQm8XB3zC/SmDGN4yluTA9f2dvOMRhYVaenUNw==} + '@angular/localize@20.0.0-rc.1': + resolution: {integrity: sha512-Nf2JkuTlYceXApzdpEMb25oNjollxnd+umhEvaCwmyltbuKOBw9OzJee1604GHFh8yOgg589UA0yPiA5OB5edQ==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 20.0.0-rc.0 - '@angular/compiler-cli': 20.0.0-rc.0 + '@angular/compiler': 20.0.0-rc.1 + '@angular/compiler-cli': 20.0.0-rc.1 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/ff125f14e67489d7ca3839fd17ecfee59c5a7dcb': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/ff125f14e67489d7ca3839fd17ecfee59c5a7dcb} - version: 0.0.0-057595fcd4031441d5a9b1d31bf0ced68073832f + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/32c4a4b15963cdd60dd1a35e92f75e538936fcdf': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/32c4a4b15963cdd60dd1a35e92f75e538936fcdf} + version: 0.0.0-a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b hasBin: true - '@angular/platform-browser-dynamic@20.0.0-rc.0': - resolution: {integrity: sha512-wkPfi5dYJippGMGDtkUZUY5hOGvwW9gumkO4CH8b0xH4D5I58LSbvaq2LwvNrM8VDJ7K7NCSjjjOzQ+0o5FLaA==} + '@angular/platform-browser-dynamic@20.0.0-rc.1': + resolution: {integrity: sha512-hftwbWxL0jMT4tD+FpQwxb6PqHAKwPOhMhxOLSM6ontsgEE1tdBPMI32kf5YOh0juOqORpLcw4jquKg1ooVhUQ==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.0.0-rc.0 - '@angular/compiler': 20.0.0-rc.0 - '@angular/core': 20.0.0-rc.0 - '@angular/platform-browser': 20.0.0-rc.0 + '@angular/common': 20.0.0-rc.1 + '@angular/compiler': 20.0.0-rc.1 + '@angular/core': 20.0.0-rc.1 + '@angular/platform-browser': 20.0.0-rc.1 - '@angular/platform-browser@20.0.0-rc.0': - resolution: {integrity: sha512-mu2g1PNJkGCJxyCA366nGQt3abX9jx+VTcPR1PRaLqY/sGzA42sYJTG/M74CIpfnx9Sxb1hD3/XCB3xbN5rPhw==} + '@angular/platform-browser@20.0.0-rc.1': + resolution: {integrity: sha512-p5Eo8IBanauJ/2ZROrq08lvtkz3e2luNWJqQMUUvqDWn5NVwAMNBPIK+YTMw7ZpQIABy00ZlAuCiwNPvSTCxig==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/animations': 20.0.0-rc.0 - '@angular/common': 20.0.0-rc.0 - '@angular/core': 20.0.0-rc.0 + '@angular/animations': 20.0.0-rc.1 + '@angular/common': 20.0.0-rc.1 + '@angular/core': 20.0.0-rc.1 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/platform-server@20.0.0-rc.0': - resolution: {integrity: sha512-bIZMXPDAWVYhvlBUjo4HwqIdPHL/rcTmM2IIg3imdgPrva0yJmtyqILCVEHqZJuuQTpEIKJF3TLtF7DyVcHDRw==} + '@angular/platform-server@20.0.0-rc.1': + resolution: {integrity: sha512-6b9WuG0BG9GTbhn3VPJxrrodWWkSD5ESHcsyfOhy8/YbWuZqHzE0dqLdOyudTG7GSZQrGK3IsPUbZNNaUcnIUQ==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.0.0-rc.0 - '@angular/compiler': 20.0.0-rc.0 - '@angular/core': 20.0.0-rc.0 - '@angular/platform-browser': 20.0.0-rc.0 + '@angular/common': 20.0.0-rc.1 + '@angular/compiler': 20.0.0-rc.1 + '@angular/core': 20.0.0-rc.1 + '@angular/platform-browser': 20.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 - '@angular/router@20.0.0-rc.0': - resolution: {integrity: sha512-QkViBejo2xZwyGMHcM7NJh8QxhrAEeNq58Yoph6owzGb1/LMArVvZgoJAJC8HW3ojHN8xFUIfgxM4sFjjcw0dA==} + '@angular/router@20.0.0-rc.1': + resolution: {integrity: sha512-UH3fFlRm2A3Yc1irwEjUZJvhM5kETAqmmEPGPOaG5CIv+A00slK8jh2RbFfTuUpZ1BoVHQyH/5aPSaVzIS7Csg==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0} peerDependencies: - '@angular/common': 20.0.0-rc.0 - '@angular/core': 20.0.0-rc.0 - '@angular/platform-browser': 20.0.0-rc.0 + '@angular/common': 20.0.0-rc.1 + '@angular/core': 20.0.0-rc.1 + '@angular/platform-browser': 20.0.0-rc.1 rxjs: ^6.5.3 || ^7.4.0 - '@angular/ssr@20.0.0-rc.0': - resolution: {integrity: sha512-PqAXHxJvahRbEgDVpd8eYVqM0PEYd4kpvBtpoH532TQi173hoNQxYf9JY6O/ECADqe6ZEqiIgGWy41l1jt7XcA==} + '@angular/ssr@20.0.0-rc.2': + resolution: {integrity: sha512-HYEcj+rDaMmoAfM2YeYu7wBlvLZZvHFA0bdsMmCidVq8XI/lloefARHVh22Xu6qFu2jKX1D6tMGMlkJR047Lzw==} peerDependencies: '@angular/common': ^20.0.0 || ^20.0.0-next.0 '@angular/core': ^20.0.0 || ^20.0.0-next.0 @@ -1015,12 +1015,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.27.0': - resolution: {integrity: sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.27.1': resolution: {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==} engines: {node: '>=6.9.0'} @@ -1936,8 +1930,8 @@ packages: engines: {node: '>=6'} hasBin: true - '@inquirer/checkbox@4.1.5': - resolution: {integrity: sha512-swPczVU+at65xa5uPfNP9u3qx/alNwiaykiI/ExpsmMSQW55trmZcwhYWzw/7fj+n6Q8z1eENvR7vFfq9oPSAQ==} + '@inquirer/checkbox@4.1.6': + resolution: {integrity: sha512-62u896rWCtKKE43soodq5e/QcRsA22I+7/4Ov7LESWnKRO6BVo2A1DFLDmXL9e28TB0CfHc3YtkbPm7iwajqkg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1945,8 +1939,8 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.9': - resolution: {integrity: sha512-NgQCnHqFTjF7Ys2fsqK2WtnA8X1kHyInyG+nMIuHowVTIgIuS10T4AznI/PvbqSpJqjCUqNBlKGh1v3bwLFL4w==} + '@inquirer/confirm@5.1.10': + resolution: {integrity: sha512-FxbQ9giWxUWKUk2O5XZ6PduVnH2CZ/fmMKMBkH71MHJvWr7WL5AHKevhzF1L5uYWB2P548o1RzVxrNd3dpmk6g==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1954,8 +1948,8 @@ packages: '@types/node': optional: true - '@inquirer/core@10.1.10': - resolution: {integrity: sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==} + '@inquirer/core@10.1.11': + resolution: {integrity: sha512-BXwI/MCqdtAhzNQlBEFE7CEflhPkl/BqvAuV/aK6lW3DClIfYVDWPP/kXuXHtBWC7/EEbNqd/1BGq2BGBBnuxw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1963,8 +1957,8 @@ packages: '@types/node': optional: true - '@inquirer/editor@4.2.10': - resolution: {integrity: sha512-5GVWJ+qeI6BzR6TIInLP9SXhWCEcvgFQYmcRG6d6RIlhFjM5TyG18paTGBgRYyEouvCmzeco47x9zX9tQEofkw==} + '@inquirer/editor@4.2.11': + resolution: {integrity: sha512-YoZr0lBnnLFPpfPSNsQ8IZyKxU47zPyVi9NLjCWtna52//M/xuL0PGPAxHxxYhdOhnvY2oBafoM+BI5w/JK7jw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1972,8 +1966,8 @@ packages: '@types/node': optional: true - '@inquirer/expand@4.0.12': - resolution: {integrity: sha512-jV8QoZE1fC0vPe6TnsOfig+qwu7Iza1pkXoUJ3SroRagrt2hxiL+RbM432YAihNR7m7XnU0HWl/WQ35RIGmXHw==} + '@inquirer/expand@4.0.13': + resolution: {integrity: sha512-HgYNWuZLHX6q5y4hqKhwyytqAghmx35xikOGY3TcgNiElqXGPas24+UzNPOwGUZa5Dn32y25xJqVeUcGlTv+QQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1985,8 +1979,8 @@ packages: resolution: {integrity: sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==} engines: {node: '>=18'} - '@inquirer/input@4.1.9': - resolution: {integrity: sha512-mshNG24Ij5KqsQtOZMgj5TwEjIf+F2HOESk6bjMwGWgcH5UBe8UoljwzNFHqdMbGYbgAf6v2wU/X9CAdKJzgOA==} + '@inquirer/input@4.1.10': + resolution: {integrity: sha512-kV3BVne3wJ+j6reYQUZi/UN9NZGZLxgc/tfyjeK3mrx1QI7RXPxGp21IUTv+iVHcbP4ytZALF8vCHoxyNSC6qg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1994,8 +1988,8 @@ packages: '@types/node': optional: true - '@inquirer/number@3.0.12': - resolution: {integrity: sha512-7HRFHxbPCA4e4jMxTQglHJwP+v/kpFsCf2szzfBHy98Wlc3L08HL76UDiA87TOdX5fwj2HMOLWqRWv9Pnn+Z5Q==} + '@inquirer/number@3.0.13': + resolution: {integrity: sha512-IrLezcg/GWKS8zpKDvnJ/YTflNJdG0qSFlUM/zNFsdi4UKW/CO+gaJpbMgQ20Q58vNKDJbEzC6IebdkprwL6ew==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2003,8 +1997,8 @@ packages: '@types/node': optional: true - '@inquirer/password@4.0.12': - resolution: {integrity: sha512-FlOB0zvuELPEbnBYiPaOdJIaDzb2PmJ7ghi/SVwIHDDSQ2K4opGBkF+5kXOg6ucrtSUQdLhVVY5tycH0j0l+0g==} + '@inquirer/password@4.0.13': + resolution: {integrity: sha512-NN0S/SmdhakqOTJhDwOpeBEEr8VdcYsjmZHDb0rblSh2FcbXQOr+2IApP7JG4WE3sxIdKytDn4ed3XYwtHxmJQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2012,8 +2006,8 @@ packages: '@types/node': optional: true - '@inquirer/prompts@7.5.0': - resolution: {integrity: sha512-tk8Bx7l5AX/CR0sVfGj3Xg6v7cYlFBkEahH+EgBB+cZib6Fc83dwerTbzj7f2+qKckjIUGsviWRI1d7lx6nqQA==} + '@inquirer/prompts@7.5.1': + resolution: {integrity: sha512-5AOrZPf2/GxZ+SDRZ5WFplCA2TAQgK3OYrXCYmJL5NaTu4ECcoWFlfUZuw7Es++6Njv7iu/8vpYJhuzxUH76Vg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2021,8 +2015,8 @@ packages: '@types/node': optional: true - '@inquirer/rawlist@4.1.0': - resolution: {integrity: sha512-6ob45Oh9pXmfprKqUiEeMz/tjtVTFQTgDDz1xAMKMrIvyrYjAmRbQZjMJfsictlL4phgjLhdLu27IkHNnNjB7g==} + '@inquirer/rawlist@4.1.1': + resolution: {integrity: sha512-VBUC0jPN2oaOq8+krwpo/mf3n/UryDUkKog3zi+oIi8/e5hykvdntgHUB9nhDM78RubiyR1ldIOfm5ue+2DeaQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2030,8 +2024,8 @@ packages: '@types/node': optional: true - '@inquirer/search@3.0.12': - resolution: {integrity: sha512-H/kDJA3kNlnNIjB8YsaXoQI0Qccgf0Na14K1h8ExWhNmUg2E941dyFPrZeugihEa9AZNW5NdsD/NcvUME83OPQ==} + '@inquirer/search@3.0.13': + resolution: {integrity: sha512-9g89d2c5Izok/Gw/U7KPC3f9kfe5rA1AJ24xxNZG0st+vWekSk7tB9oE+dJv5JXd0ZSijomvW0KPMoBd8qbN4g==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2039,8 +2033,8 @@ packages: '@types/node': optional: true - '@inquirer/select@4.2.0': - resolution: {integrity: sha512-KkXQ4aSySWimpV4V/TUJWdB3tdfENZUU765GjOIZ0uPwdbGIG6jrxD4dDf1w68uP+DVtfNhr1A92B+0mbTZ8FA==} + '@inquirer/select@4.2.1': + resolution: {integrity: sha512-gt1Kd5XZm+/ddemcT3m23IP8aD8rC9drRckWoP/1f7OL46Yy2FGi8DSmNjEjQKtPl6SV96Kmjbl6p713KXJ/Jg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2307,8 +2301,8 @@ packages: peerDependencies: '@angular/compiler-cli': '*' - '@ngtools/webpack@20.0.0-rc.0': - resolution: {integrity: sha512-bawbfDlbvFz6De4oV2n9wpFNTWOSIxmbs+fqZcrSenP1SUiN1iVGRQBibk/q1rvutN0nWdPRsQFmRe4JeTDgkw==} + '@ngtools/webpack@20.0.0-rc.2': + resolution: {integrity: sha512-8TAQA6KNbZSgYcm+CzKvVOl8PY3trazaLMDZMEDFa3KUrQSmrAeZstVJzS54S+ovhc56KXdDmo8ipq7ObPKpAg==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: '@angular/compiler-cli': ^20.0.0 || ^20.0.0-next.0 @@ -2764,8 +2758,8 @@ packages: cpu: [x64] os: [win32] - '@schematics/angular@20.0.0-rc.0': - resolution: {integrity: sha512-LLsoqOO5waTnqvpa5zI9PyltHr/mKRrzznGzQ5IDDHKk8Vm1KgVd0+MHOPXHPCNPDgARbARM/yXwPa5dqeOYlA==} + '@schematics/angular@20.0.0-rc.2': + resolution: {integrity: sha512-PqZ7qYZKghnDaXM10J80XNlXV5n4fu/1GneYu7GQpJVPe3MIcbk+ooNierZuo0++CkWU7eEIx13e6M70gcREUw==} engines: {node: ^20.11.1 || ^22.11.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@sentry/core@6.19.7': @@ -4821,14 +4815,6 @@ packages: fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - fdir@6.4.3: - resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - fdir@6.4.4: resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} peerDependencies: @@ -7893,8 +7879,8 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - sass@1.87.0: - resolution: {integrity: sha512-d0NoFH4v6SjEK7BoX810Jsrhj7IQSYHAHLi/iSpgqKc7LaIDshFRlSg5LOymf9FqQhxEHs2W5ZQXlvy0KD45Uw==} + sass@1.88.0: + resolution: {integrity: sha512-sF6TWQqjFvr4JILXzG4ucGOLELkESHL+I5QJhh7CNaE+Yge0SI+ehCatsXhJ7ymU1hAFcIS3/PBpjdIbXoyVbg==} engines: {node: '>=14.0.0'} hasBin: true @@ -7904,10 +7890,6 @@ packages: sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} - schema-utils@4.3.0: - resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} - engines: {node: '>= 10.13.0'} - schema-utils@4.3.2: resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} engines: {node: '>= 10.13.0'} @@ -7940,6 +7922,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + send@0.17.2: resolution: {integrity: sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==} engines: {node: '>= 0.8.0'} @@ -8448,6 +8435,11 @@ packages: engines: {node: '>=10'} hasBin: true + terser@5.39.1: + resolution: {integrity: sha512-Mm6+uad0ZuDtcV8/4uOZQDQ8RuiC5Pu+iZRedJtF7yA/27sPL7d++In/AJKpWZlU3SYMPPkVfwetn6sgZ66pUA==} + engines: {node: '>=10'} + hasBin: true + text-decoder@1.2.3: resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} @@ -9245,6 +9237,11 @@ packages: engines: {node: '>= 14'} hasBin: true + yaml@2.8.0: + resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} + engines: {node: '>= 14.6'} + hasBin: true + yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} @@ -9306,21 +9303,21 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@angular-devkit/architect@0.2000.0-rc.0(chokidar@4.0.3)': + '@angular-devkit/architect@0.2000.0-rc.2(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.0.0-rc.0(chokidar@4.0.3) + '@angular-devkit/core': 20.0.0-rc.2(chokidar@4.0.3) rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@20.0.0-rc.0(cgyleuswwdiwtuzmnmmmratqqe)': + '@angular-devkit/build-angular@20.0.0-rc.2(nauvhduibcvmbzzeows43zmq5e)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2000.0-rc.0(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.2000.0-rc.0(chokidar@4.0.3)(webpack-dev-server@5.2.1(webpack@5.99.8(esbuild@0.25.4)))(webpack@5.99.8(esbuild@0.25.4)) - '@angular-devkit/core': 20.0.0-rc.0(chokidar@4.0.3) - '@angular/build': 20.0.0-rc.0(7mxermn4rmm3ejkjmuj75uiz7q) - '@angular/compiler-cli': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3) + '@angular-devkit/architect': 0.2000.0-rc.2(chokidar@4.0.3) + '@angular-devkit/build-webpack': 0.2000.0-rc.2(chokidar@4.0.3)(webpack-dev-server@5.2.1(webpack@5.99.8(esbuild@0.25.4)))(webpack@5.99.8(esbuild@0.25.4)) + '@angular-devkit/core': 20.0.0-rc.2(chokidar@4.0.3) + '@angular/build': 20.0.0-rc.2(hafsfockbdlji4rncjntcufy7m) + '@angular/compiler-cli': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3) '@babel/core': 7.27.1 '@babel/generator': 7.27.1 '@babel/helper-annotate-as-pure': 7.27.1 @@ -9331,8 +9328,8 @@ snapshots: '@babel/preset-env': 7.27.2(@babel/core@7.27.1) '@babel/runtime': 7.27.1 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.4)) - '@vitejs/plugin-basic-ssl': 2.0.0(vite@6.3.5(@types/node@22.14.1)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1)) + '@ngtools/webpack': 20.0.0-rc.2(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.4)) + '@vitejs/plugin-basic-ssl': 2.0.0(vite@6.3.5(@types/node@22.14.1)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.1)(yaml@2.8.0)) ansi-colors: 4.1.3 autoprefixer: 10.4.21(postcss@8.5.3) babel-loader: 10.0.0(@babel/core@7.27.1)(webpack@5.99.8(esbuild@0.25.4)) @@ -9358,12 +9355,12 @@ snapshots: postcss-loader: 8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.4)) resolve-url-loader: 5.0.0 rxjs: 7.8.2 - sass: 1.87.0 - sass-loader: 16.0.5(sass@1.87.0)(webpack@5.99.8(esbuild@0.25.4)) - semver: 7.7.1 + sass: 1.88.0 + sass-loader: 16.0.5(sass@1.88.0)(webpack@5.99.8(esbuild@0.25.4)) + semver: 7.7.2 source-map-loader: 5.0.0(webpack@5.99.8(esbuild@0.25.4)) source-map-support: 0.5.21 - terser: 5.39.0 + terser: 5.39.1 tree-kill: 1.2.2 tslib: 2.8.1 typescript: 5.8.3 @@ -9373,11 +9370,11 @@ snapshots: webpack-merge: 6.0.1 webpack-subresource-integrity: 5.1.0(webpack@5.99.8(esbuild@0.25.4)) optionalDependencies: - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0) - '@angular/localize': 20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.0) - '@angular/platform-browser': 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0)) - '@angular/platform-server': 20.0.0-rc.0(uhmztyizciadarv37k4s3ufn4e) - '@angular/ssr': 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(@angular/platform-server@20.0.0-rc.0(uhmztyizciadarv37k4s3ufn4e))(@angular/router@20.0.0-rc.0(gck5n5qbgjok7klltootb34kfi)) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0) + '@angular/localize': 20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.1) + '@angular/platform-browser': 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0)) + '@angular/platform-server': 20.0.0-rc.1(66c4waiyzoicv6gxn24dzbippq) + '@angular/ssr': 20.0.0-rc.2(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(@angular/platform-server@20.0.0-rc.1(66c4waiyzoicv6gxn24dzbippq))(@angular/router@20.0.0-rc.1(7zc6f62pa2tvzuwqxa5yynhuxy)) esbuild: 0.25.4 karma: 6.4.4 protractor: 7.0.0 @@ -9405,16 +9402,16 @@ snapshots: - webpack-cli - yaml - '@angular-devkit/build-webpack@0.2000.0-rc.0(chokidar@4.0.3)(webpack-dev-server@5.2.1(webpack@5.99.8(esbuild@0.25.4)))(webpack@5.99.8(esbuild@0.25.4))': + '@angular-devkit/build-webpack@0.2000.0-rc.2(chokidar@4.0.3)(webpack-dev-server@5.2.1(webpack@5.99.8(esbuild@0.25.4)))(webpack@5.99.8(esbuild@0.25.4))': dependencies: - '@angular-devkit/architect': 0.2000.0-rc.0(chokidar@4.0.3) + '@angular-devkit/architect': 0.2000.0-rc.2(chokidar@4.0.3) rxjs: 7.8.2 webpack: 5.99.8(esbuild@0.25.4) webpack-dev-server: 5.2.1(webpack@5.99.8(esbuild@0.25.4)) transitivePeerDependencies: - chokidar - '@angular-devkit/core@20.0.0-rc.0(chokidar@4.0.3)': + '@angular-devkit/core@20.0.0-rc.2(chokidar@4.0.3)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1 @@ -9425,9 +9422,9 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics@20.0.0-rc.0(chokidar@4.0.3)': + '@angular-devkit/schematics@20.0.0-rc.2(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.0.0-rc.0(chokidar@4.0.3) + '@angular-devkit/core': 20.0.0-rc.2(chokidar@4.0.3) jsonc-parser: 3.3.1 magic-string: 0.30.17 ora: 5.4.1 @@ -9435,27 +9432,27 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))': + '@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))': dependencies: - '@angular/common': 20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7) - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0) - '@nginfra/angular-linking': 1.0.9(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3)) + '@angular/common': 20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0) + '@nginfra/angular-linking': 1.0.9(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3)) tslib: 2.8.1 transitivePeerDependencies: - '@angular/compiler-cli' - supports-color - '@angular/build@20.0.0-rc.0(7mxermn4rmm3ejkjmuj75uiz7q)': + '@angular/build@20.0.0-rc.2(hafsfockbdlji4rncjntcufy7m)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.2000.0-rc.0(chokidar@4.0.3) - '@angular/compiler': 20.0.0-rc.0 - '@angular/compiler-cli': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3) + '@angular-devkit/architect': 0.2000.0-rc.2(chokidar@4.0.3) + '@angular/compiler': 20.0.0-rc.1 + '@angular/compiler-cli': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3) '@babel/core': 7.27.1 '@babel/helper-annotate-as-pure': 7.27.1 '@babel/helper-split-export-declaration': 7.24.7 - '@inquirer/confirm': 5.1.9(@types/node@22.14.1) - '@vitejs/plugin-basic-ssl': 2.0.0(vite@6.3.5(@types/node@22.14.1)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1)) + '@inquirer/confirm': 5.1.10(@types/node@22.14.1) + '@vitejs/plugin-basic-ssl': 2.0.0(vite@6.3.5(@types/node@22.14.1)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.1)(yaml@2.8.0)) beasties: 0.3.3 browserslist: 4.24.4 esbuild: 0.25.4 @@ -9469,20 +9466,20 @@ snapshots: picomatch: 4.0.2 piscina: 5.0.0 rollup: 4.40.2 - sass: 1.87.0 - semver: 7.7.1 + sass: 1.88.0 + semver: 7.7.2 source-map-support: 0.5.21 tinyglobby: 0.2.13 tslib: 2.8.1 typescript: 5.8.3 - vite: 6.3.5(@types/node@22.14.1)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0)(yaml@2.7.1) + vite: 6.3.5(@types/node@22.14.1)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)(yaml@2.8.0) watchpack: 2.4.2 optionalDependencies: - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0) - '@angular/localize': 20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.0) - '@angular/platform-browser': 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0)) - '@angular/platform-server': 20.0.0-rc.0(uhmztyizciadarv37k4s3ufn4e) - '@angular/ssr': 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(@angular/platform-server@20.0.0-rc.0(uhmztyizciadarv37k4s3ufn4e))(@angular/router@20.0.0-rc.0(gck5n5qbgjok7klltootb34kfi)) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0) + '@angular/localize': 20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.1) + '@angular/platform-browser': 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0)) + '@angular/platform-server': 20.0.0-rc.1(66c4waiyzoicv6gxn24dzbippq) + '@angular/ssr': 20.0.0-rc.2(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(@angular/platform-server@20.0.0-rc.1(66c4waiyzoicv6gxn24dzbippq))(@angular/router@20.0.0-rc.1(7zc6f62pa2tvzuwqxa5yynhuxy)) karma: 6.4.4 less: 4.3.0 lmdb: 3.3.0 @@ -9500,14 +9497,14 @@ snapshots: - tsx - yaml - '@angular/cli@20.0.0-rc.0(@types/node@22.14.1)(chokidar@4.0.3)': + '@angular/cli@20.0.0-rc.2(@types/node@22.14.1)(chokidar@4.0.3)': dependencies: - '@angular-devkit/architect': 0.2000.0-rc.0(chokidar@4.0.3) - '@angular-devkit/core': 20.0.0-rc.0(chokidar@4.0.3) - '@angular-devkit/schematics': 20.0.0-rc.0(chokidar@4.0.3) - '@inquirer/prompts': 7.5.0(@types/node@22.14.1) - '@listr2/prompt-adapter-inquirer': 2.0.22(@inquirer/prompts@7.5.0(@types/node@22.14.1)) - '@schematics/angular': 20.0.0-rc.0(chokidar@4.0.3) + '@angular-devkit/architect': 0.2000.0-rc.2(chokidar@4.0.3) + '@angular-devkit/core': 20.0.0-rc.2(chokidar@4.0.3) + '@angular-devkit/schematics': 20.0.0-rc.2(chokidar@4.0.3) + '@inquirer/prompts': 7.5.1(@types/node@22.14.1) + '@listr2/prompt-adapter-inquirer': 2.0.22(@inquirer/prompts@7.5.1(@types/node@22.14.1)) + '@schematics/angular': 20.0.0-rc.2(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 ini: 5.0.0 jsonc-parser: 3.3.1 @@ -9516,27 +9513,27 @@ snapshots: npm-pick-manifest: 10.0.0 pacote: 20.0.0 resolve: 1.22.10 - semver: 7.7.1 + semver: 7.7.2 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' - chokidar - supports-color - '@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7)': + '@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7)': dependencies: - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0) - '@nginfra/angular-linking': 1.0.9(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3)) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0) + '@nginfra/angular-linking': 1.0.9(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3)) rxjs: 6.6.7 tslib: 2.8.1 transitivePeerDependencies: - '@angular/compiler-cli' - supports-color - '@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3)': + '@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3)': dependencies: - '@angular/compiler': 20.0.0-rc.0 - '@babel/core': 7.26.10 + '@angular/compiler': 20.0.0-rc.1 + '@babel/core': 7.27.1 '@jridgewell/sourcemap-codec': 1.5.0 chokidar: 4.0.3 convert-source-map: 1.9.0 @@ -9548,43 +9545,43 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@20.0.0-rc.0': + '@angular/compiler@20.0.0-rc.1': dependencies: tslib: 2.8.1 - '@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0)': + '@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0)': dependencies: rxjs: 6.6.7 tslib: 2.8.1 zone.js: 0.15.0 optionalDependencies: - '@angular/compiler': 20.0.0-rc.0 + '@angular/compiler': 20.0.0-rc.1 - '@angular/forms@20.0.0-rc.0(gck5n5qbgjok7klltootb34kfi)': + '@angular/forms@20.0.0-rc.1(7zc6f62pa2tvzuwqxa5yynhuxy)': dependencies: - '@angular/common': 20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7) - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0)) - '@nginfra/angular-linking': 1.0.9(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3)) + '@angular/common': 20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0)) + '@nginfra/angular-linking': 1.0.9(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3)) rxjs: 6.6.7 tslib: 2.8.1 transitivePeerDependencies: - '@angular/compiler-cli' - supports-color - '@angular/localize@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.0)': + '@angular/localize@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.1)': dependencies: - '@angular/compiler': 20.0.0-rc.0 - '@angular/compiler-cli': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3) - '@babel/core': 7.26.10 - '@nginfra/angular-linking': 1.0.9(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3)) + '@angular/compiler': 20.0.0-rc.1 + '@angular/compiler-cli': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3) + '@babel/core': 7.27.1 + '@nginfra/angular-linking': 1.0.9(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3)) '@types/babel__core': 7.20.5 - tinyglobby: 0.2.12 + tinyglobby: 0.2.13 yargs: 17.7.2 transitivePeerDependencies: - supports-color - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/ff125f14e67489d7ca3839fd17ecfee59c5a7dcb(encoding@0.1.13)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/32c4a4b15963cdd60dd1a35e92f75e538936fcdf(encoding@0.1.13)': dependencies: '@google-cloud/spanner': 7.21.0(encoding@0.1.13)(supports-color@10.0.0) '@octokit/rest': 21.1.1 @@ -9597,37 +9594,37 @@ snapshots: typed-graphqlify: 3.1.6 typescript: 5.8.3 which: 5.0.0 - yaml: 2.7.1 + yaml: 2.8.0 transitivePeerDependencies: - encoding - '@angular/platform-browser-dynamic@20.0.0-rc.0(3jfeayzntifrl3qb364vor6h6y)': + '@angular/platform-browser-dynamic@20.0.0-rc.1(mizrq3dzpbvowxnz5dt3f3spge)': dependencies: - '@angular/common': 20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7) - '@angular/compiler': 20.0.0-rc.0 - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0)) + '@angular/common': 20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7) + '@angular/compiler': 20.0.0-rc.1 + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0)) tslib: 2.8.1 - '@angular/platform-browser@20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))': + '@angular/platform-browser@20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))': dependencies: - '@angular/common': 20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7) - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0) - '@nginfra/angular-linking': 1.0.9(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3)) + '@angular/common': 20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0) + '@nginfra/angular-linking': 1.0.9(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3)) tslib: 2.8.1 optionalDependencies: - '@angular/animations': 20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0)) + '@angular/animations': 20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0)) transitivePeerDependencies: - '@angular/compiler-cli' - supports-color - '@angular/platform-server@20.0.0-rc.0(uhmztyizciadarv37k4s3ufn4e)': + '@angular/platform-server@20.0.0-rc.1(66c4waiyzoicv6gxn24dzbippq)': dependencies: - '@angular/common': 20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7) - '@angular/compiler': 20.0.0-rc.0 - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0)) - '@nginfra/angular-linking': 1.0.9(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3)) + '@angular/common': 20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7) + '@angular/compiler': 20.0.0-rc.1 + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0)) + '@nginfra/angular-linking': 1.0.9(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3)) rxjs: 6.6.7 tslib: 2.8.1 xhr2: 0.2.1 @@ -9635,26 +9632,26 @@ snapshots: - '@angular/compiler-cli' - supports-color - '@angular/router@20.0.0-rc.0(gck5n5qbgjok7klltootb34kfi)': + '@angular/router@20.0.0-rc.1(7zc6f62pa2tvzuwqxa5yynhuxy)': dependencies: - '@angular/common': 20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7) - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0) - '@angular/platform-browser': 20.0.0-rc.0(@angular/animations@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0)) - '@nginfra/angular-linking': 1.0.9(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3)) + '@angular/common': 20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0) + '@angular/platform-browser': 20.0.0-rc.1(@angular/animations@20.0.0-rc.1(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0)))(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0)) + '@nginfra/angular-linking': 1.0.9(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3)) rxjs: 6.6.7 tslib: 2.8.1 transitivePeerDependencies: - '@angular/compiler-cli' - supports-color - '@angular/ssr@20.0.0-rc.0(@angular/common@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(@angular/platform-server@20.0.0-rc.0(uhmztyizciadarv37k4s3ufn4e))(@angular/router@20.0.0-rc.0(gck5n5qbgjok7klltootb34kfi))': + '@angular/ssr@20.0.0-rc.2(@angular/common@20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(@angular/platform-server@20.0.0-rc.1(66c4waiyzoicv6gxn24dzbippq))(@angular/router@20.0.0-rc.1(7zc6f62pa2tvzuwqxa5yynhuxy))': dependencies: - '@angular/common': 20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(@angular/core@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7) - '@angular/core': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(rxjs@6.6.7)(zone.js@0.15.0) - '@angular/router': 20.0.0-rc.0(gck5n5qbgjok7klltootb34kfi) + '@angular/common': 20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/core@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0))(rxjs@6.6.7) + '@angular/core': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(rxjs@6.6.7)(zone.js@0.15.0) + '@angular/router': 20.0.0-rc.1(7zc6f62pa2tvzuwqxa5yynhuxy) tslib: 2.8.1 optionalDependencies: - '@angular/platform-server': 20.0.0-rc.0(uhmztyizciadarv37k4s3ufn4e) + '@angular/platform-server': 20.0.0-rc.1(66c4waiyzoicv6gxn24dzbippq) '@apidevtools/json-schema-ref-parser@9.1.2': dependencies: @@ -9768,13 +9765,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.27.0(@babel/core@7.27.1)': - dependencies: - '@babel/core': 7.27.1 - '@babel/helper-annotate-as-pure': 7.27.1 - regexpu-core: 6.2.0 - semver: 6.3.1 - '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.27.1)': dependencies: '@babel/core': 7.27.1 @@ -9785,7 +9775,7 @@ snapshots: '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.27.1)': dependencies: '@babel/core': 7.27.1 - '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 debug: 4.4.0(supports-color@10.0.0) lodash.debounce: 4.0.8 @@ -9802,8 +9792,8 @@ snapshots: '@babel/helper-module-imports@7.25.9': dependencies: - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 transitivePeerDependencies: - supports-color @@ -9865,7 +9855,7 @@ snapshots: '@babel/helper-split-export-declaration@7.24.7': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.27.1 '@babel/helper-string-parser@7.25.9': {} @@ -9957,7 +9947,7 @@ snapshots: '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.27.1)': dependencies: '@babel/core': 7.27.1 - '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.27.1) + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.27.1)': @@ -10370,7 +10360,7 @@ snapshots: dependencies: '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.27.0 + '@babel/types': 7.27.1 esutils: 2.0.3 '@babel/runtime@7.27.1': {} @@ -10390,7 +10380,7 @@ snapshots: '@babel/traverse@7.27.0': dependencies: '@babel/code-frame': 7.26.2 - '@babel/generator': 7.27.0 + '@babel/generator': 7.27.1 '@babel/parser': 7.27.0 '@babel/template': 7.27.0 '@babel/types': 7.27.0 @@ -10745,9 +10735,9 @@ snapshots: protobufjs: 7.4.0 yargs: 17.7.2 - '@inquirer/checkbox@4.1.5(@types/node@22.14.1)': + '@inquirer/checkbox@4.1.6(@types/node@22.14.1)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.1) + '@inquirer/core': 10.1.11(@types/node@22.14.1) '@inquirer/figures': 1.0.11 '@inquirer/type': 3.0.6(@types/node@22.14.1) ansi-escapes: 4.3.2 @@ -10755,14 +10745,14 @@ snapshots: optionalDependencies: '@types/node': 22.14.1 - '@inquirer/confirm@5.1.9(@types/node@22.14.1)': + '@inquirer/confirm@5.1.10(@types/node@22.14.1)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.1) + '@inquirer/core': 10.1.11(@types/node@22.14.1) '@inquirer/type': 3.0.6(@types/node@22.14.1) optionalDependencies: '@types/node': 22.14.1 - '@inquirer/core@10.1.10(@types/node@22.14.1)': + '@inquirer/core@10.1.11(@types/node@22.14.1)': dependencies: '@inquirer/figures': 1.0.11 '@inquirer/type': 3.0.6(@types/node@22.14.1) @@ -10775,17 +10765,17 @@ snapshots: optionalDependencies: '@types/node': 22.14.1 - '@inquirer/editor@4.2.10(@types/node@22.14.1)': + '@inquirer/editor@4.2.11(@types/node@22.14.1)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.1) + '@inquirer/core': 10.1.11(@types/node@22.14.1) '@inquirer/type': 3.0.6(@types/node@22.14.1) external-editor: 3.1.0 optionalDependencies: '@types/node': 22.14.1 - '@inquirer/expand@4.0.12(@types/node@22.14.1)': + '@inquirer/expand@4.0.13(@types/node@22.14.1)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.1) + '@inquirer/core': 10.1.11(@types/node@22.14.1) '@inquirer/type': 3.0.6(@types/node@22.14.1) yoctocolors-cjs: 2.1.2 optionalDependencies: @@ -10793,63 +10783,63 @@ snapshots: '@inquirer/figures@1.0.11': {} - '@inquirer/input@4.1.9(@types/node@22.14.1)': + '@inquirer/input@4.1.10(@types/node@22.14.1)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.1) + '@inquirer/core': 10.1.11(@types/node@22.14.1) '@inquirer/type': 3.0.6(@types/node@22.14.1) optionalDependencies: '@types/node': 22.14.1 - '@inquirer/number@3.0.12(@types/node@22.14.1)': + '@inquirer/number@3.0.13(@types/node@22.14.1)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.1) + '@inquirer/core': 10.1.11(@types/node@22.14.1) '@inquirer/type': 3.0.6(@types/node@22.14.1) optionalDependencies: '@types/node': 22.14.1 - '@inquirer/password@4.0.12(@types/node@22.14.1)': + '@inquirer/password@4.0.13(@types/node@22.14.1)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.1) + '@inquirer/core': 10.1.11(@types/node@22.14.1) '@inquirer/type': 3.0.6(@types/node@22.14.1) ansi-escapes: 4.3.2 optionalDependencies: '@types/node': 22.14.1 - '@inquirer/prompts@7.5.0(@types/node@22.14.1)': - dependencies: - '@inquirer/checkbox': 4.1.5(@types/node@22.14.1) - '@inquirer/confirm': 5.1.9(@types/node@22.14.1) - '@inquirer/editor': 4.2.10(@types/node@22.14.1) - '@inquirer/expand': 4.0.12(@types/node@22.14.1) - '@inquirer/input': 4.1.9(@types/node@22.14.1) - '@inquirer/number': 3.0.12(@types/node@22.14.1) - '@inquirer/password': 4.0.12(@types/node@22.14.1) - '@inquirer/rawlist': 4.1.0(@types/node@22.14.1) - '@inquirer/search': 3.0.12(@types/node@22.14.1) - '@inquirer/select': 4.2.0(@types/node@22.14.1) + '@inquirer/prompts@7.5.1(@types/node@22.14.1)': + dependencies: + '@inquirer/checkbox': 4.1.6(@types/node@22.14.1) + '@inquirer/confirm': 5.1.10(@types/node@22.14.1) + '@inquirer/editor': 4.2.11(@types/node@22.14.1) + '@inquirer/expand': 4.0.13(@types/node@22.14.1) + '@inquirer/input': 4.1.10(@types/node@22.14.1) + '@inquirer/number': 3.0.13(@types/node@22.14.1) + '@inquirer/password': 4.0.13(@types/node@22.14.1) + '@inquirer/rawlist': 4.1.1(@types/node@22.14.1) + '@inquirer/search': 3.0.13(@types/node@22.14.1) + '@inquirer/select': 4.2.1(@types/node@22.14.1) optionalDependencies: '@types/node': 22.14.1 - '@inquirer/rawlist@4.1.0(@types/node@22.14.1)': + '@inquirer/rawlist@4.1.1(@types/node@22.14.1)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.1) + '@inquirer/core': 10.1.11(@types/node@22.14.1) '@inquirer/type': 3.0.6(@types/node@22.14.1) yoctocolors-cjs: 2.1.2 optionalDependencies: '@types/node': 22.14.1 - '@inquirer/search@3.0.12(@types/node@22.14.1)': + '@inquirer/search@3.0.13(@types/node@22.14.1)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.1) + '@inquirer/core': 10.1.11(@types/node@22.14.1) '@inquirer/figures': 1.0.11 '@inquirer/type': 3.0.6(@types/node@22.14.1) yoctocolors-cjs: 2.1.2 optionalDependencies: '@types/node': 22.14.1 - '@inquirer/select@4.2.0(@types/node@22.14.1)': + '@inquirer/select@4.2.1(@types/node@22.14.1)': dependencies: - '@inquirer/core': 10.1.10(@types/node@22.14.1) + '@inquirer/core': 10.1.11(@types/node@22.14.1) '@inquirer/figures': 1.0.11 '@inquirer/type': 3.0.6(@types/node@22.14.1) ansi-escapes: 4.3.2 @@ -10933,9 +10923,9 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@2.0.22(@inquirer/prompts@7.5.0(@types/node@22.14.1))': + '@listr2/prompt-adapter-inquirer@2.0.22(@inquirer/prompts@7.5.1(@types/node@22.14.1))': dependencies: - '@inquirer/prompts': 7.5.0(@types/node@22.14.1) + '@inquirer/prompts': 7.5.1(@types/node@22.14.1) '@inquirer/type': 1.5.5 '@lmdb/lmdb-darwin-arm64@3.3.0': @@ -11047,9 +11037,9 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.0.1 optional: true - '@nginfra/angular-linking@1.0.9(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))': + '@nginfra/angular-linking@1.0.9(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))': dependencies: - '@angular/compiler-cli': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3) + '@angular/compiler-cli': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3) '@babel/core': 7.26.10 '@types/babel__core': 7.20.5 '@types/node': 22.14.1 @@ -11058,9 +11048,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@ngtools/webpack@20.0.0-rc.0(@angular/compiler-cli@20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.4))': + '@ngtools/webpack@20.0.0-rc.2(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.4))': dependencies: - '@angular/compiler-cli': 20.0.0-rc.0(@angular/compiler@20.0.0-rc.0)(typescript@5.8.3) + '@angular/compiler-cli': 20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3) typescript: 5.8.3 webpack: 5.99.8(esbuild@0.25.4) @@ -11104,7 +11094,7 @@ snapshots: '@npmcli/fs@4.0.0': dependencies: - semver: 7.7.1 + semver: 7.7.2 '@npmcli/git@6.0.3': dependencies: @@ -11114,7 +11104,7 @@ snapshots: npm-pick-manifest: 10.0.0 proc-log: 5.0.0 promise-retry: 2.0.1 - semver: 7.7.1 + semver: 7.7.2 which: 5.0.0 '@npmcli/installed-package-contents@3.0.0': @@ -11131,7 +11121,7 @@ snapshots: hosted-git-info: 8.0.2 json-parse-even-better-errors: 4.0.0 proc-log: 5.0.0 - semver: 7.7.1 + semver: 7.7.2 validate-npm-package-license: 3.0.4 '@npmcli/promise-spawn@8.0.2': @@ -11526,10 +11516,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.40.2': optional: true - '@schematics/angular@20.0.0-rc.0(chokidar@4.0.3)': + '@schematics/angular@20.0.0-rc.2(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 20.0.0-rc.0(chokidar@4.0.3) - '@angular-devkit/schematics': 20.0.0-rc.0(chokidar@4.0.3) + '@angular-devkit/core': 20.0.0-rc.2(chokidar@4.0.3) + '@angular-devkit/schematics': 20.0.0-rc.2(chokidar@4.0.3) jsonc-parser: 3.3.1 transitivePeerDependencies: - chokidar @@ -11901,9 +11891,9 @@ snapshots: '@types/youtube@0.1.0': {} - '@vitejs/plugin-basic-ssl@2.0.0(vite@6.3.5(@types/node@22.14.1)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1))': + '@vitejs/plugin-basic-ssl@2.0.0(vite@6.3.5(@types/node@22.14.1)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.1)(yaml@2.8.0))': dependencies: - vite: 6.3.5(@types/node@22.14.1)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1) + vite: 6.3.5(@types/node@22.14.1)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.1)(yaml@2.8.0) '@webassemblyjs/ast@1.14.1': dependencies: @@ -12277,7 +12267,7 @@ snapshots: babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.27.1): dependencies: - '@babel/compat-data': 7.26.8 + '@babel/compat-data': 7.27.2 '@babel/core': 7.27.1 '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.1) semver: 6.3.1 @@ -12961,9 +12951,9 @@ snapshots: dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 - schema-utils: 4.3.0 + schema-utils: 4.3.2 serialize-javascript: 6.0.2 - tinyglobby: 0.2.12 + tinyglobby: 0.2.13 webpack: 5.99.8(esbuild@0.25.4) core-js-compat@3.41.0: @@ -13044,7 +13034,7 @@ snapshots: postcss-modules-scope: 3.2.1(postcss@8.5.3) postcss-modules-values: 4.0.0(postcss@8.5.3) postcss-value-parser: 4.2.0 - semver: 7.7.1 + semver: 7.7.2 optionalDependencies: webpack: 5.99.8(esbuild@0.25.4) @@ -13902,10 +13892,6 @@ snapshots: dependencies: pend: 1.2.0 - fdir@6.4.3(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - fdir@6.4.4(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -14245,7 +14231,7 @@ snapshots: dependencies: abort-controller: 3.0.0 extend: 3.0.2 - https-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1(supports-color@10.0.0) is-stream: 2.0.1 node-fetch: 2.7.0(encoding@0.1.13) transitivePeerDependencies: @@ -15321,7 +15307,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/parser': 7.27.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 @@ -15332,10 +15318,10 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.27.1 - '@babel/parser': 7.27.0 + '@babel/parser': 7.27.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.7.1 + semver: 7.7.2 transitivePeerDependencies: - supports-color @@ -15450,7 +15436,7 @@ snapshots: jsdoc@4.0.4: dependencies: - '@babel/parser': 7.27.0 + '@babel/parser': 7.27.2 '@jsdoc/salty': 0.2.9 '@types/markdown-it': 14.1.2 bluebird: 3.7.2 @@ -16203,7 +16189,7 @@ snapshots: mini-css-extract-plugin@2.9.2(webpack@5.99.8(esbuild@0.25.4)): dependencies: - schema-utils: 4.3.0 + schema-utils: 4.3.2 tapable: 2.2.1 webpack: 5.99.8(esbuild@0.25.4) @@ -16449,9 +16435,9 @@ snapshots: make-fetch-happen: 14.0.3 nopt: 8.1.0 proc-log: 5.0.0 - semver: 7.7.1 + semver: 7.7.2 tar: 7.4.3 - tinyglobby: 0.2.12 + tinyglobby: 0.2.13 which: 5.0.0 transitivePeerDependencies: - supports-color @@ -16497,7 +16483,7 @@ snapshots: npm-install-checks@7.1.1: dependencies: - semver: 7.7.1 + semver: 7.7.2 npm-normalize-package-bin@4.0.0: {} @@ -16505,7 +16491,7 @@ snapshots: dependencies: hosted-git-info: 8.0.2 proc-log: 5.0.0 - semver: 7.7.1 + semver: 7.7.2 validate-npm-package-name: 6.0.0 npm-packlist@9.0.0: @@ -16517,7 +16503,7 @@ snapshots: npm-install-checks: 7.1.1 npm-normalize-package-bin: 4.0.0 npm-package-arg: 12.0.2 - semver: 7.7.1 + semver: 7.7.2 npm-registry-fetch@18.0.2: dependencies: @@ -16728,7 +16714,7 @@ snapshots: debug: 4.4.0(supports-color@10.0.0) get-uri: 3.0.2 http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1(supports-color@10.0.0) pac-resolver: 5.0.1 raw-body: 2.5.2 socks-proxy-agent: 5.0.1 @@ -16809,7 +16795,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.27.1 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -16925,7 +16911,7 @@ snapshots: cosmiconfig: 9.0.0(typescript@5.8.3) jiti: 1.21.7 postcss: 8.5.3 - semver: 7.7.1 + semver: 7.7.2 optionalDependencies: webpack: 5.99.8(esbuild@0.25.4) transitivePeerDependencies: @@ -17703,11 +17689,11 @@ snapshots: safevalues@1.2.0: {} - sass-loader@16.0.5(sass@1.87.0)(webpack@5.99.8(esbuild@0.25.4)): + sass-loader@16.0.5(sass@1.88.0)(webpack@5.99.8(esbuild@0.25.4)): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.87.0 + sass: 1.88.0 webpack: 5.99.8(esbuild@0.25.4) sass@1.86.3: @@ -17718,7 +17704,7 @@ snapshots: optionalDependencies: '@parcel/watcher': 2.5.1 - sass@1.87.0: + sass@1.88.0: dependencies: chokidar: 4.0.3 immutable: 5.1.1 @@ -17734,13 +17720,6 @@ snapshots: sax@1.4.1: {} - schema-utils@4.3.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) - ajv-keywords: 5.1.0(ajv@8.17.1) - schema-utils@4.3.2: dependencies: '@types/json-schema': 7.0.15 @@ -17772,6 +17751,8 @@ snapshots: semver@7.7.1: {} + semver@7.7.2: {} + send@0.17.2: dependencies: debug: 2.6.9 @@ -18528,7 +18509,7 @@ snapshots: jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 - terser: 5.39.0 + terser: 5.39.1 webpack: 5.99.8(esbuild@0.25.4) optionalDependencies: esbuild: 0.25.4 @@ -18540,6 +18521,13 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 + terser@5.39.1: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.14.1 + commander: 2.20.3 + source-map-support: 0.5.21 + text-decoder@1.2.3: dependencies: b4a: 1.6.7 @@ -18577,7 +18565,7 @@ snapshots: tinyglobby@0.2.12: dependencies: - fdir: 6.4.3(picomatch@4.0.2) + fdir: 6.4.4(picomatch@4.0.2) picomatch: 4.0.2 tinyglobby@0.2.13: @@ -19034,7 +19022,7 @@ snapshots: unist-util-stringify-position: 1.1.2 vfile-message: 1.1.1 - vite@6.3.5(@types/node@22.14.1)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1): + vite@6.3.5(@types/node@22.14.1)(jiti@1.21.7)(less@4.3.0)(sass@1.86.3)(terser@5.39.1)(yaml@2.8.0): dependencies: esbuild: 0.25.4 fdir: 6.4.4(picomatch@4.0.2) @@ -19048,10 +19036,10 @@ snapshots: jiti: 1.21.7 less: 4.3.0 sass: 1.86.3 - terser: 5.39.0 - yaml: 2.7.1 + terser: 5.39.1 + yaml: 2.8.0 - vite@6.3.5(@types/node@22.14.1)(jiti@1.21.7)(less@4.3.0)(sass@1.87.0)(terser@5.39.0)(yaml@2.7.1): + vite@6.3.5(@types/node@22.14.1)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)(yaml@2.8.0): dependencies: esbuild: 0.25.4 fdir: 6.4.4(picomatch@4.0.2) @@ -19064,9 +19052,9 @@ snapshots: fsevents: 2.3.3 jiti: 1.21.7 less: 4.3.0 - sass: 1.87.0 - terser: 5.39.0 - yaml: 2.7.1 + sass: 1.88.0 + terser: 5.39.1 + yaml: 2.8.0 vm2@3.9.19: dependencies: @@ -19128,7 +19116,7 @@ snapshots: mime-types: 2.1.35 on-finished: 2.4.1 range-parser: 1.2.1 - schema-utils: 4.3.0 + schema-utils: 4.3.2 optionalDependencies: webpack: 5.99.8(esbuild@0.25.4) @@ -19155,7 +19143,7 @@ snapshots: launch-editor: 2.10.0 open: 10.1.2 p-retry: 6.2.1 - schema-utils: 4.3.0 + schema-utils: 4.3.2 selfsigned: 2.4.1 serve-index: 1.9.1 sockjs: 0.3.24 @@ -19411,6 +19399,8 @@ snapshots: yaml@2.7.1: {} + yaml@2.8.0: {} + yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 8d0104527038..2be35960e2ff 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -17,22 +17,22 @@ packages: - src/youtube-player catalog: - '@angular-devkit/build-angular': 20.0.0-rc.0 - '@angular-devkit/core': 20.0.0-rc.0 - '@angular-devkit/schematics': 20.0.0-rc.0 - '@angular/animations': 20.0.0-rc.0 - '@angular/build': 20.0.0-rc.0 - '@angular/cli': 20.0.0-rc.0 - '@angular/common': 20.0.0-rc.0 - '@angular/compiler-cli': 20.0.0-rc.0 - '@angular/compiler': 20.0.0-rc.0 - '@angular/core': 20.0.0-rc.0 - '@angular/ssr': 20.0.0-rc.0 - '@angular/forms': 20.0.0-rc.0 - '@angular/localize': 20.0.0-rc.0 - '@angular/platform-browser': 20.0.0-rc.0 - '@angular/platform-browser-dynamic': 20.0.0-rc.0 - '@angular/platform-server': 20.0.0-rc.0 - '@angular/router': 20.0.0-rc.0 - '@schematics/angular': 20.0.0-rc.0 + '@angular-devkit/build-angular': 20.0.0-rc.2 + '@angular-devkit/core': 20.0.0-rc.2 + '@angular-devkit/schematics': 20.0.0-rc.2 + '@angular/animations': 20.0.0-rc.1 + '@angular/build': 20.0.0-rc.2 + '@angular/cli': 20.0.0-rc.2 + '@angular/common': 20.0.0-rc.1 + '@angular/compiler-cli': 20.0.0-rc.1 + '@angular/compiler': 20.0.0-rc.1 + '@angular/core': 20.0.0-rc.1 + '@angular/ssr': 20.0.0-rc.2 + '@angular/forms': 20.0.0-rc.1 + '@angular/localize': 20.0.0-rc.1 + '@angular/platform-browser': 20.0.0-rc.1 + '@angular/platform-browser-dynamic': 20.0.0-rc.1 + '@angular/platform-server': 20.0.0-rc.1 + '@angular/router': 20.0.0-rc.1 + '@schematics/angular': 20.0.0-rc.2 'rxjs': ^6.6.7 From ba6bc510fa310c2eb0bde513a0f72060e7d77b6e Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 19 May 2025 08:36:26 -0600 Subject: [PATCH 048/145] build: update scorecard action dependencies (#31103) See associated pull request for more information. (cherry picked from commit d4cbbbacb077fd54e37b916458a89129b04d40e3) --- .github/workflows/scorecard.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index a598d79c5c8e..c2b30283dbfb 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -30,7 +30,7 @@ jobs: persist-credentials: false - name: 'Run analysis' - uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1 + uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1 with: results_file: results.sarif results_format: sarif @@ -39,7 +39,7 @@ jobs: # Upload the results as artifacts. - name: 'Upload artifact' - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: SARIF file path: results.sarif @@ -47,6 +47,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: 'Upload to code-scanning' - uses: github/codeql-action/upload-sarif@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 + uses: github/codeql-action/upload-sarif@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18 with: sarif_file: results.sarif From 2906f4fe7ccd202c7d2dd150e4b5483ece8a8a72 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 19 May 2025 08:37:41 -0600 Subject: [PATCH 049/145] build: update dependency @bazel/buildifier to v8 (#31104) See associated pull request for more information. (cherry picked from commit 4075b66bd536c28b4198c2ac39189f1083af2e7d) --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 4ca42bdd2c13..f37558b23ee5 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "@angular/router": "catalog:", "@babel/core": "^7.16.12", "@bazel/bazelisk": "1.12.1", - "@bazel/buildifier": "6.1.2", + "@bazel/buildifier": "8.2.0", "@bazel/ibazel": "^0.25.0", "@bazel/runfiles": "5.8.1", "@firebase/app-types": "^0.7.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cdc7fc93f3c8..e510244d7dd9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -147,8 +147,8 @@ importers: specifier: 1.12.1 version: 1.12.1 '@bazel/buildifier': - specifier: 6.1.2 - version: 6.1.2 + specifier: 8.2.0 + version: 8.2.0 '@bazel/ibazel': specifier: ^0.25.0 version: 0.25.0 @@ -1527,8 +1527,8 @@ packages: resolution: {integrity: sha512-TGCwVeIiVeQUP6yLpxAg8yluFOC+tBQnWw5l8lqwMxKhRtOA+WaH1CJKAXeCBAaS2MxohhkXq44zj/7AM+t2jg==} hasBin: true - '@bazel/buildifier@6.1.2': - resolution: {integrity: sha512-psKePmRkP6acwyePOhXP67R/wdwN7BGJxHqp1j5myaO24feMsaXyyiO+oW49x8YAwOpKVSCujVzkTwX2auAc0A==} + '@bazel/buildifier@8.2.0': + resolution: {integrity: sha512-GKiCBXi8RcOH8Gc2zkeHJl30GGayplWVW/eMx9v1M2g53Iz2+CmacVW+LB5rIrZsLWiolaK9BFVWXRQol4Wt0Q==} hasBin: true '@bazel/ibazel@0.25.0': @@ -10413,7 +10413,7 @@ snapshots: '@bazel/bazelisk@1.12.1': {} - '@bazel/buildifier@6.1.2': {} + '@bazel/buildifier@8.2.0': {} '@bazel/ibazel@0.25.0': {} From c2ff37c59a2e2ac09d4147b98a54bb9ddf698528 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 19 May 2025 09:07:23 -0600 Subject: [PATCH 050/145] build: update dependency @types/glob to v8 (#31081) See associated pull request for more information. (cherry picked from commit a47aa21be99bc3bc21f40ce634899729c5f30104) --- package.json | 2 +- pnpm-lock.yaml | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index f37558b23ee5..4177be06409a 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "@schematics/angular": "catalog:", "@types/babel__core": "^7.1.18", "@types/fs-extra": "^9.0.13", - "@types/glob": "^7.2.0", + "@types/glob": "^8.0.0", "@types/jasmine": "^4.0.0", "@types/luxon": "^3.0.0", "@types/marked": "^2.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e510244d7dd9..23f452dbeea4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -180,8 +180,8 @@ importers: specifier: ^9.0.13 version: 9.0.13 '@types/glob': - specifier: ^7.2.0 - version: 7.2.0 + specifier: ^8.0.0 + version: 8.1.0 '@types/jasmine': specifier: ^4.0.0 version: 4.6.5 @@ -2921,6 +2921,9 @@ packages: '@types/glob@7.2.0': resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + '@types/glob@8.1.0': + resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} + '@types/google.maps@3.58.1': resolution: {integrity: sha512-X9QTSvGJ0nCfMzYOnaVs/k6/4L+7F5uCS+4iUmkLEls6J9S/Phv+m/i3mDeyc49ZBgwab3EFO1HEoBY7k98EGQ==} @@ -11730,6 +11733,11 @@ snapshots: '@types/minimatch': 5.1.2 '@types/node': 22.14.1 + '@types/glob@8.1.0': + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 22.14.1 + '@types/google.maps@3.58.1': {} '@types/http-errors@2.0.4': {} @@ -11817,7 +11825,7 @@ snapshots: '@types/rimraf@3.0.2': dependencies: - '@types/glob': 7.2.0 + '@types/glob': 8.1.0 '@types/node': 22.14.1 '@types/selenium-webdriver@3.0.26': {} From a3711eb09198f466b1ed04593da7e35b0b6e6aca Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 19 May 2025 17:58:30 +0200 Subject: [PATCH 051/145] fix(material/tabs): avoid not having any focusable tabs (#31144) * fix(material/tabs): avoid not having any focusable tabs In #26397 we made it possible to navigate to disabled tabs with the keyboard, however in the tabs nav bar they're still set to `tabindex="-1"` unless they're active. This means that if the nav bar only has disabled tabs, there's no way to enter it. These changes make it so the tab index is based on the focus index which ensures that at least one tab is always focusable. It also aligns the behavior with `mat-tab-group`. * fixup! fix(material/tabs): avoid not having any focusable tabs (cherry picked from commit 98065ce35931d395f5ffbf0054c94c69feff818a) --- goldens/material/tabs/index.api.md | 10 ++++- src/material/tabs/paginated-tab-header.ts | 10 +++-- .../tabs/tab-nav-bar/tab-nav-bar.spec.ts | 38 ++++++++++--------- src/material/tabs/tab-nav-bar/tab-nav-bar.ts | 36 +++++++++++------- 4 files changed, 57 insertions(+), 37 deletions(-) diff --git a/goldens/material/tabs/index.api.md b/goldens/material/tabs/index.api.md index 27b38e5a595d..7b8ba16d046a 100644 --- a/goldens/material/tabs/index.api.md +++ b/goldens/material/tabs/index.api.md @@ -15,6 +15,7 @@ import { Direction } from '@angular/cdk/bidi'; import { ElementRef } from '@angular/core'; import { EventEmitter } from '@angular/core'; import { FocusableOption } from '@angular/cdk/a11y'; +import { FocusKeyManager } from '@angular/cdk/a11y'; import { FocusOrigin } from '@angular/cdk/a11y'; import * as i0 from '@angular/core'; import * as i1 from '@angular/cdk/bidi'; @@ -98,6 +99,7 @@ export abstract class MatPaginatedTabHeader implements AfterContentChecked, Afte // (undocumented) abstract _items: QueryList; protected abstract _itemSelected(event: KeyboardEvent): void; + protected _keyManager: FocusKeyManager | undefined; // (undocumented) abstract _nextPaginator: ElementRef; // (undocumented) @@ -412,8 +414,6 @@ export class MatTabLink extends InkBarItem implements AfterViewInit, OnDestroy, // (undocumented) _getRole(): string | null; // (undocumented) - _getTabIndex(): number; - // (undocumented) _handleFocus(): void; // (undocumented) _handleKeydown(event: KeyboardEvent): void; @@ -436,6 +436,8 @@ export class MatTabLink extends InkBarItem implements AfterViewInit, OnDestroy, // (undocumented) tabIndex: number; // (undocumented) + protected _tabIndex: i0.Signal; + // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; @@ -456,8 +458,12 @@ export class MatTabNav extends MatPaginatedTabHeader implements AfterContentInit // (undocumented) _fitInkBarToContent: BehaviorSubject; // (undocumented) + _focusedItem: i0.WritableSignal; + // (undocumented) _getRole(): string | null; // (undocumented) + _hasFocus(link: MatTabLink): boolean; + // (undocumented) _inkBar: MatInkBar; _items: QueryList; // (undocumented) diff --git a/src/material/tabs/paginated-tab-header.ts b/src/material/tabs/paginated-tab-header.ts index 6dbde9e09556..407b49418c48 100644 --- a/src/material/tabs/paginated-tab-header.ts +++ b/src/material/tabs/paginated-tab-header.ts @@ -119,7 +119,7 @@ export abstract class MatPaginatedTabHeader private _scrollDistanceChanged: boolean; /** Used to manage focus between the tabs. */ - private _keyManager: FocusKeyManager; + protected _keyManager: FocusKeyManager | undefined; /** Cached text content of the header. */ private _currentTextContent: string; @@ -218,7 +218,9 @@ export abstract class MatPaginatedTabHeader // Allow focus to land on disabled tabs, as per https://w3c.github.io/aria-practices/#kbd_disabled_controls .skipPredicate(() => false); - this._keyManager.updateActiveItem(this._selectedIndex); + // Fall back to the first link as being active if there isn't a selected one. + // This is relevant primarily for the tab nav bar. + this._keyManager.updateActiveItem(Math.max(this._selectedIndex, 0)); // Note: We do not need to realign after the first render for proper functioning of the tabs // the resize events above should fire when we first start observing the element. However, @@ -243,7 +245,7 @@ export abstract class MatPaginatedTabHeader realign(); }); }); - this._keyManager.withHorizontalOrientation(this._getLayoutDirection()); + this._keyManager?.withHorizontalOrientation(this._getLayoutDirection()); }); // If there is a change in the focus key manager we need to emit the `indexFocused` @@ -339,7 +341,7 @@ export abstract class MatPaginatedTabHeader } break; default: - this._keyManager.onKeydown(event); + this._keyManager?.onKeydown(event); } } diff --git a/src/material/tabs/tab-nav-bar/tab-nav-bar.spec.ts b/src/material/tabs/tab-nav-bar/tab-nav-bar.spec.ts index 51e2aad7cd41..beb385d71d4e 100644 --- a/src/material/tabs/tab-nav-bar/tab-nav-bar.spec.ts +++ b/src/material/tabs/tab-nav-bar/tab-nav-bar.spec.ts @@ -107,24 +107,6 @@ describe('MatTabNavBar', () => { .toBe(true); }); - it('should update the tabindex if links are disabled', () => { - const tabLinkElements = fixture.debugElement - .queryAll(By.css('a')) - .map(tabLinkDebugEl => tabLinkDebugEl.nativeElement); - - expect(tabLinkElements.map(tabLink => tabLink.tabIndex)) - .withContext('Expected first element to be keyboard focusable by default') - .toEqual([0, -1, -1]); - - fixture.componentInstance.disabled = true; - fixture.changeDetectorRef.markForCheck(); - fixture.detectChanges(); - - expect(tabLinkElements.every(tabLink => tabLink.tabIndex === -1)) - .withContext('Expected element to no longer be keyboard focusable if disabled.') - .toBe(true); - }); - it('should mark disabled links', () => { const tabLinkElement = fixture.debugElement.query(By.css('a')).nativeElement; @@ -303,6 +285,15 @@ describe('MatTabNavBar', () => { expect(tabLinks[2].tabIndex).toBe(-1); }); + it('should set a tabindex even if the only tab is disabled', () => { + const fixture = TestBed.createComponent(TabBarWithDisabledTabOnInit); + fixture.detectChanges(); + + const tab: HTMLElement = fixture.nativeElement.querySelector('.mat-mdc-tab-link'); + expect(tab.getAttribute('aria-disabled')).toBe('true'); + expect(tab.tabIndex).toBe(0); + }); + it('should setup aria-controls properly', () => { const fixture = TestBed.createComponent(SimpleTabNavBarTestApp); fixture.detectChanges(); @@ -642,3 +633,14 @@ class TabBarWithInactiveTabsOnInit { class TabsWithCustomAnimationDuration { links = ['First', 'Second', 'Third']; } + +@Component({ + template: ` + + Tab panel + `, + imports: [MatTabsModule], +}) +class TabBarWithDisabledTabOnInit {} diff --git a/src/material/tabs/tab-nav-bar/tab-nav-bar.ts b/src/material/tabs/tab-nav-bar/tab-nav-bar.ts index 2ce296e3a663..b7bf3ed31799 100644 --- a/src/material/tabs/tab-nav-bar/tab-nav-bar.ts +++ b/src/material/tabs/tab-nav-bar/tab-nav-bar.ts @@ -22,6 +22,8 @@ import { ViewEncapsulation, inject, HostAttributeToken, + signal, + computed, } from '@angular/core'; import { MAT_RIPPLE_GLOBAL_OPTIONS, @@ -39,7 +41,7 @@ import {BehaviorSubject, Subject} from 'rxjs'; import {startWith, takeUntil} from 'rxjs/operators'; import {ENTER, SPACE} from '@angular/cdk/keycodes'; import {MAT_TABS_CONFIG, MatTabsConfig} from '../tab-config'; -import {MatPaginatedTabHeader} from '../paginated-tab-header'; +import {MatPaginatedTabHeader, MatPaginatedTabHeaderItem} from '../paginated-tab-header'; import {CdkObserveContent} from '@angular/cdk/observers'; import {_CdkPrivateStyleLoader} from '@angular/cdk/private'; @@ -70,6 +72,8 @@ import {_CdkPrivateStyleLoader} from '@angular/cdk/private'; imports: [MatRipple, CdkObserveContent], }) export class MatTabNav extends MatPaginatedTabHeader implements AfterContentInit, AfterViewInit { + _focusedItem = signal(null); + /** Whether the ink bar should fit its width to the size of the tab label content. */ @Input({transform: booleanAttribute}) get fitInkBarToContent(): boolean { @@ -183,6 +187,11 @@ export class MatTabNav extends MatPaginatedTabHeader implements AfterContentInit .subscribe(() => this.updateActiveLink()); super.ngAfterContentInit(); + + // Turn the `change` stream into a signal to try and avoid "changed after checked" errors. + this._keyManager!.change.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => + this._focusedItem.set(this._keyManager?.activeItem || null), + ); } override ngAfterViewInit() { @@ -203,12 +212,13 @@ export class MatTabNav extends MatPaginatedTabHeader implements AfterContentInit for (let i = 0; i < items.length; i++) { if (items[i].active) { this.selectedIndex = i; - this._changeDetectorRef.markForCheck(); - if (this.tabPanel) { this.tabPanel._activeTabId = items[i].id; } - + // Updating the `selectedIndex` won't trigger the `change` event on + // the key manager so we need to set the signal from here. + this._focusedItem.set(items[i]); + this._changeDetectorRef.markForCheck(); return; } } @@ -219,6 +229,10 @@ export class MatTabNav extends MatPaginatedTabHeader implements AfterContentInit _getRole(): string | null { return this.tabPanel ? 'tablist' : this._elementRef.nativeElement.getAttribute('role'); } + + _hasFocus(link: MatTabLink): boolean { + return this._keyManager?.activeItem === link; + } } /** @@ -238,7 +252,7 @@ export class MatTabNav extends MatPaginatedTabHeader implements AfterContentInit '[attr.aria-disabled]': 'disabled', '[attr.aria-selected]': '_getAriaSelected()', '[attr.id]': 'id', - '[attr.tabIndex]': '_getTabIndex()', + '[attr.tabIndex]': '_tabIndex()', '[attr.role]': '_getRole()', '[class.mat-mdc-tab-disabled]': 'disabled', '[class.mdc-tab--active]': 'active', @@ -260,6 +274,10 @@ export class MatTabLink /** Whether the tab link is active or not. */ protected _isActive: boolean = false; + protected _tabIndex = computed(() => + this._tabNavBar._focusedItem() === this ? this.tabIndex : -1, + ); + /** Whether the link is active. */ @Input({transform: booleanAttribute}) get active(): boolean { @@ -393,14 +411,6 @@ export class MatTabLink _getRole(): string | null { return this._tabNavBar.tabPanel ? 'tab' : this.elementRef.nativeElement.getAttribute('role'); } - - _getTabIndex(): number { - if (this._tabNavBar.tabPanel) { - return this._isActive && !this.disabled ? 0 : -1; - } else { - return this.disabled ? -1 : this.tabIndex; - } - } } /** From 9b974734097eec9852f20c97b600c437a1743add Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Mon, 19 May 2025 10:04:03 -0600 Subject: [PATCH 052/145] build: update dependency rollup to v4 (#31093) See associated pull request for more information. (cherry picked from commit c286a94ab18a37e5acc3a8f17697a8941532566b) --- package.json | 2 +- pnpm-lock.yaml | 47 +++++++++++++++++++---------------------------- 2 files changed, 20 insertions(+), 29 deletions(-) diff --git a/package.json b/package.json index 4177be06409a..c9765f6fda0e 100644 --- a/package.json +++ b/package.json @@ -134,7 +134,7 @@ "protractor": "^7.0.0", "reflect-metadata": "^0.1.13", "requirejs": "^2.3.6", - "rollup": "^2.66.1", + "rollup": "^4.0.0", "rollup-plugin-dts": "6.2.1", "rollup-plugin-sourcemaps2": "0.5.0", "sass": "^1.80.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 23f452dbeea4..2f8f2ab5668f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -166,10 +166,10 @@ importers: version: 18.3.5(encoding@0.1.13) '@rollup/plugin-commonjs': specifier: ^28.0.0 - version: 28.0.3(rollup@2.79.2) + version: 28.0.3(rollup@4.40.2) '@rollup/plugin-node-resolve': specifier: ^16.0.0 - version: 16.0.1(rollup@2.79.2) + version: 16.0.1(rollup@4.40.2) '@schematics/angular': specifier: 'catalog:' version: 20.0.0-rc.2(chokidar@4.0.3) @@ -303,14 +303,14 @@ importers: specifier: ^2.3.6 version: 2.3.7 rollup: - specifier: ^2.66.1 - version: 2.79.2 + specifier: ^4.0.0 + version: 4.40.2 rollup-plugin-dts: specifier: 6.2.1 - version: 6.2.1(rollup@2.79.2)(typescript@5.8.3) + version: 6.2.1(rollup@4.40.2)(typescript@5.8.3) rollup-plugin-sourcemaps2: specifier: 0.5.0 - version: 0.5.0(@types/node@22.14.1)(rollup@2.79.2) + version: 0.5.0(@types/node@22.14.1)(rollup@4.40.2) sass: specifier: ^1.80.6 version: 1.86.3 @@ -7778,11 +7778,6 @@ packages: '@types/node': optional: true - rollup@2.79.2: - resolution: {integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==} - engines: {node: '>=10.0.0'} - hasBin: true - rollup@4.40.2: resolution: {integrity: sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -11429,9 +11424,9 @@ snapshots: - bare-buffer - supports-color - '@rollup/plugin-commonjs@28.0.3(rollup@2.79.2)': + '@rollup/plugin-commonjs@28.0.3(rollup@4.40.2)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@2.79.2) + '@rollup/pluginutils': 5.1.4(rollup@4.40.2) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.4(picomatch@4.0.2) @@ -11439,25 +11434,25 @@ snapshots: magic-string: 0.30.17 picomatch: 4.0.2 optionalDependencies: - rollup: 2.79.2 + rollup: 4.40.2 - '@rollup/plugin-node-resolve@16.0.1(rollup@2.79.2)': + '@rollup/plugin-node-resolve@16.0.1(rollup@4.40.2)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@2.79.2) + '@rollup/pluginutils': 5.1.4(rollup@4.40.2) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 2.79.2 + rollup: 4.40.2 - '@rollup/pluginutils@5.1.4(rollup@2.79.2)': + '@rollup/pluginutils@5.1.4(rollup@4.40.2)': dependencies: '@types/estree': 1.0.7 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 2.79.2 + rollup: 4.40.2 '@rollup/rollup-android-arm-eabi@4.40.2': optional: true @@ -17556,25 +17551,21 @@ snapshots: robots-parser@3.0.1: {} - rollup-plugin-dts@6.2.1(rollup@2.79.2)(typescript@5.8.3): + rollup-plugin-dts@6.2.1(rollup@4.40.2)(typescript@5.8.3): dependencies: magic-string: 0.30.17 - rollup: 2.79.2 + rollup: 4.40.2 typescript: 5.8.3 optionalDependencies: '@babel/code-frame': 7.26.2 - rollup-plugin-sourcemaps2@0.5.0(@types/node@22.14.1)(rollup@2.79.2): + rollup-plugin-sourcemaps2@0.5.0(@types/node@22.14.1)(rollup@4.40.2): dependencies: - '@rollup/pluginutils': 5.1.4(rollup@2.79.2) - rollup: 2.79.2 + '@rollup/pluginutils': 5.1.4(rollup@4.40.2) + rollup: 4.40.2 optionalDependencies: '@types/node': 22.14.1 - rollup@2.79.2: - optionalDependencies: - fsevents: 2.3.3 - rollup@4.40.2: dependencies: '@types/estree': 1.0.7 From b2a5382cd5c9965cff360328ca50a30a236eaacb Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 20 May 2025 03:14:13 -0600 Subject: [PATCH 053/145] build: update dependency kagekiri to v2 (#31153) See associated pull request for more information. (cherry picked from commit 47454fb83d2cfbe43c075dbefc59ad561c3804c8) --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index c9765f6fda0e..fef566ce0407 100644 --- a/package.json +++ b/package.json @@ -117,7 +117,7 @@ "jasmine-core": "5.6.0", "jasmine-reporters": "^2.5.2", "jsonc-parser": "^3.3.1", - "kagekiri": "^1.4.1", + "kagekiri": "^2.0.0", "karma": "^6.3.12", "karma-browserstack-launcher": "^1.6.0", "karma-jasmine": "^4.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2f8f2ab5668f..0fffd72c167d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -252,8 +252,8 @@ importers: specifier: ^3.3.1 version: 3.3.1 kagekiri: - specifier: ^1.4.1 - version: 1.4.3 + specifier: ^2.0.0 + version: 2.0.0 karma: specifier: ^6.3.12 version: 6.4.4 @@ -6097,8 +6097,8 @@ packages: jws@4.0.0: resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} - kagekiri@1.4.3: - resolution: {integrity: sha512-aBJi52dwFm/hGTtGq3995H5KKcGP/bHo7pBpxyElpNGuo33JRpoxLx6Bx2EdOEXIy+6pg8FZUg1lk1cuNQcubg==} + kagekiri@2.0.0: + resolution: {integrity: sha512-4AG25g5A6NTS7+9RRIyB6Yn5G8QHu+spy/pENI0zfNC4j4XBsaVueykK/yJAmE1x4MyD6NpcoXhVUmBB9nI9DA==} karma-browserstack-launcher@1.6.0: resolution: {integrity: sha512-Y/UWPdHZkHIVH2To4GWHCTzmrsB6H7PBWy6pw+TWz5sr4HW2mcE+Uj6qWgoVNxvQU1Pfn5LQQzI6EQ65p8QbiQ==} @@ -15569,7 +15569,7 @@ snapshots: jwa: 2.0.0 safe-buffer: 5.2.1 - kagekiri@1.4.3: {} + kagekiri@2.0.0: {} karma-browserstack-launcher@1.6.0(karma@6.4.4): dependencies: From 0d7e979a1f58d695fa05e2e9e464e58e8134e120 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 20 May 2025 03:20:19 -0600 Subject: [PATCH 054/145] build: update dependency wait-on to v8 (#31154) See associated pull request for more information. (cherry picked from commit a3bcca5897ada5f5fce151a58cdff8e0494ff2db) --- integration/harness-e2e-cli/package.json | 2 +- integration/harness-e2e-cli/pnpm-lock.yaml | 68 ++++++++++++++++++---- 2 files changed, 59 insertions(+), 11 deletions(-) diff --git a/integration/harness-e2e-cli/package.json b/integration/harness-e2e-cli/package.json index 216bbedeb986..db7e164e2181 100644 --- a/integration/harness-e2e-cli/package.json +++ b/integration/harness-e2e-cli/package.json @@ -44,6 +44,6 @@ "selenium-webdriver": "3.6.0", "ts-node": "~10.9.1", "typescript": "5.8.3", - "wait-on": "^6.0.0" + "wait-on": "^8.0.0" } } diff --git a/integration/harness-e2e-cli/pnpm-lock.yaml b/integration/harness-e2e-cli/pnpm-lock.yaml index 47e4cbded65f..88095b568045 100644 --- a/integration/harness-e2e-cli/pnpm-lock.yaml +++ b/integration/harness-e2e-cli/pnpm-lock.yaml @@ -97,8 +97,8 @@ importers: specifier: 5.8.3 version: 5.8.3 wait-on: - specifier: ^6.0.0 - version: 6.0.1 + specifier: ^8.0.0 + version: 8.0.3 e2e: {} @@ -1858,6 +1858,9 @@ packages: array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + autoprefixer@10.4.21: resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} engines: {node: ^10 || ^12 || >=14} @@ -1865,8 +1868,8 @@ packages: peerDependencies: postcss: ^8.1.0 - axios@0.25.0: - resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==} + axios@1.9.0: + resolution: {integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==} babel-loader@10.0.0: resolution: {integrity: sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==} @@ -2047,6 +2050,10 @@ packages: colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -2210,6 +2217,10 @@ packages: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + depd@1.1.2: resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} engines: {node: '>= 0.6'} @@ -2355,6 +2366,10 @@ packages: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + esbuild-wasm@0.25.4: resolution: {integrity: sha512-2HlCS6rNvKWaSKhWaG/YIyRsTsL3gUrMP2ToZMBIjw9LM7vVcIs+rz8kE2vExvTJgvM8OKPqNpcHawY/BQc/qQ==} engines: {node: '>=18'} @@ -2481,6 +2496,10 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} + form-data@4.0.2: + resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} + engines: {node: '>= 6'} + forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -3497,6 +3516,9 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} @@ -4139,9 +4161,9 @@ packages: resolution: {integrity: sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==} engines: {node: '>=0.10.0'} - wait-on@6.0.1: - resolution: {integrity: sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==} - engines: {node: '>=10.0.0'} + wait-on@8.0.3: + resolution: {integrity: sha512-nQFqAFzZDeRxsu7S3C7LbuxslHhk+gnJZHyethuGKAn2IVleIbTB9I3vJSQiSR+DifUqmdzfPMoMPJfLqMF2vw==} + engines: {node: '>=12.0.0'} hasBin: true watchpack@2.4.2: @@ -6174,6 +6196,8 @@ snapshots: array-flatten@1.1.1: {} + asynckit@0.4.0: {} + autoprefixer@10.4.21(postcss@8.5.3): dependencies: browserslist: 4.24.4 @@ -6184,9 +6208,11 @@ snapshots: postcss: 8.5.3 postcss-value-parser: 4.2.0 - axios@0.25.0: + axios@1.9.0: dependencies: follow-redirects: 1.15.9(debug@4.4.0) + form-data: 4.0.2 + proxy-from-env: 1.1.0 transitivePeerDependencies: - debug @@ -6409,6 +6435,10 @@ snapshots: colorette@2.0.20: {} + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + commander@2.20.3: {} compressible@2.0.18: @@ -6567,6 +6597,8 @@ snapshots: define-lazy-prop@3.0.0: {} + delayed-stream@1.0.0: {} + depd@1.1.2: {} depd@2.0.0: {} @@ -6702,6 +6734,13 @@ snapshots: dependencies: es-errors: 1.3.0 + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + esbuild-wasm@0.25.4: {} esbuild@0.25.4: @@ -6875,6 +6914,13 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 + form-data@4.0.2: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + mime-types: 2.1.35 + forwarded@0.2.0: {} fraction.js@4.3.7: {} @@ -7945,6 +7991,8 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 + proxy-from-env@1.1.0: {} + prr@1.0.1: optional: true @@ -8620,9 +8668,9 @@ snapshots: void-elements@2.0.1: {} - wait-on@6.0.1: + wait-on@8.0.3: dependencies: - axios: 0.25.0 + axios: 1.9.0 joi: 17.13.3 lodash: 4.17.21 minimist: 1.2.8 From efdb4184f919ed7bfe9ce8048a1da8d99ce4b36a Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Tue, 20 May 2025 13:09:49 +0200 Subject: [PATCH 055/145] ci: update lighthouse test to run on `ubuntu-latest` (#31152) The original problem seems to apply anyone with the latest updates (cherry picked from commit e03e5b427b43eac625a85268dd587a22b0ee0fa8) --- .github/workflows/ci.material-aio.yml | 2 +- .github/workflows/pr.material-aio.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.material-aio.yml b/.github/workflows/ci.material-aio.yml index 86578b0dd732..c04b16d5976f 100644 --- a/.github/workflows/ci.material-aio.yml +++ b/.github/workflows/ci.material-aio.yml @@ -53,7 +53,7 @@ jobs: retention-days: 14 lighthouse: - runs-on: ubuntu-22.04 # Note, fails on Ubuntu 24.04. see https://github.com/actions/runner-images/issues/10636 + runs-on: ubuntu-latest steps: - name: Initialize environment uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b diff --git a/.github/workflows/pr.material-aio.yml b/.github/workflows/pr.material-aio.yml index 238707a1cbc8..f482e9e03e53 100644 --- a/.github/workflows/pr.material-aio.yml +++ b/.github/workflows/pr.material-aio.yml @@ -51,7 +51,7 @@ jobs: retention-days: 14 lighthouse: - runs-on: ubuntu-22.04 # Note, fails on Ubuntu 24.04. see https://github.com/actions/runner-images/issues/10636 + runs-on: ubuntu-latest steps: - name: Initialize environment uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b From 7876e54e4fe69c68e581a1d37a5e4ff556dd4fe0 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 20 May 2025 08:02:40 +0000 Subject: [PATCH 056/145] build: update bazel dependencies See associated pull request for more information. (cherry picked from commit 36a6ae91564b8679651bc1502c0c4e518de2b4da) --- WORKSPACE | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index b9ef8783138a..ee74cb3fb1cf 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -15,10 +15,10 @@ http_archive( # Add skylib which contains common Bazel utilities. http_archive( name = "bazel_skylib", - sha256 = "a9c5d3a22461ed7063aa7b088f9c96fa0aaaa8b6984b601f84d705adc47d8a58", - strip_prefix = "bazel-skylib-8334f938c1574ef6f1f7a38a03550a31df65274e", + sha256 = "4f7e2b6bafa9a88ac1b0ee0c3ad69850282419aa51f6bd5b45cde8d0c945d18c", + strip_prefix = "bazel-skylib-454b25912a8ddf3d90eb47f25260befd5ee274a8", urls = [ - "https://github.com/bazelbuild/bazel-skylib/archive/8334f938c1574ef6f1f7a38a03550a31df65274e.tar.gz", + "https://github.com/bazelbuild/bazel-skylib/archive/454b25912a8ddf3d90eb47f25260befd5ee274a8.tar.gz", ], ) @@ -45,9 +45,9 @@ build_bazel_rules_nodejs_dependencies() http_archive( name = "aspect_rules_js", - sha256 = "3388abe9b9728ef68ea8d8301f932b11b2c9a271d74741ddd5f3b34d1db843ac", - strip_prefix = "rules_js-2.1.1", - url = "https://github.com/aspect-build/rules_js/releases/download/v2.1.1/rules_js-v2.1.1.tar.gz", + sha256 = "83e5af4d17385d1c3268c31ae217dbfc8525aa7bcf52508dc6864baffc8b9501", + strip_prefix = "rules_js-2.3.7", + url = "https://github.com/aspect-build/rules_js/releases/download/v2.3.7/rules_js-v2.3.7.tar.gz", ) load("@aspect_rules_js//js:repositories.bzl", "rules_js_dependencies") @@ -154,9 +154,9 @@ npm_repositories() http_archive( name = "aspect_rules_ts", - sha256 = "9acd128abe77397505148eaa6895faed57839560dbf2177dd6285e51235e2724", - strip_prefix = "rules_ts-3.3.1", - url = "https://github.com/aspect-build/rules_ts/releases/download/v3.3.1/rules_ts-v3.3.1.tar.gz", + sha256 = "6b15ac1c69f2c0f1282e41ab469fd63cd40eb2e2d83075e19b68a6a76669773f", + strip_prefix = "rules_ts-3.6.0", + url = "https://github.com/aspect-build/rules_ts/releases/download/v3.6.0/rules_ts-v3.6.0.tar.gz", ) load("@aspect_rules_ts//ts:repositories.bzl", "rules_ts_dependencies") @@ -169,9 +169,9 @@ rules_ts_dependencies( http_archive( name = "aspect_rules_rollup", - sha256 = "c4062681968f5dcd3ce01e09e4ba73670c064744a7046211763e17c98ab8396e", - strip_prefix = "rules_rollup-2.0.0", - url = "https://github.com/aspect-build/rules_rollup/releases/download/v2.0.0/rules_rollup-v2.0.0.tar.gz", + sha256 = "0b8ac7d97cd660eb9a275600227e9c4268f5904cba962939d1a6ce9a0a059d2e", + strip_prefix = "rules_rollup-2.0.1", + url = "https://github.com/aspect-build/rules_rollup/releases/download/v2.0.1/rules_rollup-v2.0.1.tar.gz", ) http_archive( @@ -203,7 +203,7 @@ setup_dependencies_2() git_repository( name = "rules_angular", - commit = "84a8039330a4accc86f0b53c4ef5ff745c3e1bbe", + commit = "5b9b1fc545736b8b602a216f89134c1f20d3009c", remote = "https://github.com/devversion/rules_angular.git", ) @@ -224,9 +224,9 @@ rules_angular_step3( http_archive( name = "aspect_rules_esbuild", - sha256 = "550e33ddeb86a564b22b2c5d3f84748c6639b1b2b71fae66bf362c33392cbed8", - strip_prefix = "rules_esbuild-0.21.0", - url = "https://github.com/aspect-build/rules_esbuild/releases/download/v0.21.0/rules_esbuild-v0.21.0.tar.gz", + sha256 = "530adfeae30bbbd097e8af845a44a04b641b680c5703b3bf885cbd384ffec779", + strip_prefix = "rules_esbuild-0.22.1", + url = "https://github.com/aspect-build/rules_esbuild/releases/download/v0.22.1/rules_esbuild-v0.22.1.tar.gz", ) load("@aspect_rules_esbuild//esbuild:dependencies.bzl", "rules_esbuild_dependencies") From 363e489c823762375a2b991093dfbee74a8d71da Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Tue, 20 May 2025 11:39:00 +0000 Subject: [PATCH 057/145] build: enable merging of default shell_env and env in Bazel This is necessary to support later versions of e.g. `rules_ts`. (cherry picked from commit 841a58510fe96144ea4a055015e7b996257ddbf1) --- .bazelrc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.bazelrc b/.bazelrc index 174fe13d7304..b7a083db69ba 100644 --- a/.bazelrc +++ b/.bazelrc @@ -2,6 +2,9 @@ common --@aspect_rules_ts//ts:skipLibCheck=always common --@aspect_rules_ts//ts:default_to_tsc_transpiler +# Needed as otherwise `env` of TS actions would be ignored. +common --incompatible_merge_fixed_and_default_shell_env + ############################### # Filesystem interactions # ############################### From 704761652dfbaa32283d4dc5ce58ca7c679b217b Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Tue, 20 May 2025 17:19:48 +0200 Subject: [PATCH 058/145] fix(material/dialog): use custom token to disable animations (#31156) Fixes that the `MatDialogOpener` was using the `NoopAnimationsModule` to disable animations which requires user to have `@angular/animations` installed. These changes switch to using `MATERIAL_ANIMATIONS` in the `MatTestDialogOpenerModule` and setting the animation durations to zero in case the module isn't used. Fixes #31145. (cherry picked from commit 2971f139e9f455eda7a2898ebe47a8c80a2509c4) --- src/material/dialog/testing/dialog-opener.ts | 24 +++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/material/dialog/testing/dialog-opener.ts b/src/material/dialog/testing/dialog-opener.ts index 68cff6c9269f..6f2fdf81a47c 100644 --- a/src/material/dialog/testing/dialog-opener.ts +++ b/src/material/dialog/testing/dialog-opener.ts @@ -17,8 +17,8 @@ import { inject, } from '@angular/core'; import {MatDialog, MatDialogConfig, MatDialogModule, MatDialogRef} from '../../dialog'; -import {NoopAnimationsModule} from '@angular/platform-browser/animations'; import {Subscription} from 'rxjs'; +import {AnimationsConfig, MATERIAL_ANIMATIONS} from '@angular/material/core'; /** Test component that immediately opens a dialog when bootstrapped. */ @Component({ @@ -63,12 +63,12 @@ export class MatTestDialogOpener implements OnDestroy throw new Error(`MatTestDialogOpener does not have a component provided.`); } - this.dialogRef = this._ngZone.run(() => - this.dialog.open( - MatTestDialogOpener.component as ComponentType, - MatTestDialogOpener.config || {}, - ), - ); + this.dialogRef = this._ngZone.run(() => { + const config = {...(MatTestDialogOpener.config || {})}; + config.enterAnimationDuration = 0; + config.exitAnimationDuration = 0; + return this.dialog.open(MatTestDialogOpener.component as ComponentType, config); + }); this._afterClosedSubscription = this.dialogRef.afterClosed().subscribe(result => { this.closedResult = result; }); @@ -82,6 +82,14 @@ export class MatTestDialogOpener implements OnDestroy } @NgModule({ - imports: [MatDialogModule, NoopAnimationsModule, MatTestDialogOpener], + imports: [MatDialogModule, MatTestDialogOpener], + providers: [ + { + provide: MATERIAL_ANIMATIONS, + useValue: { + animationsDisabled: true, + } as AnimationsConfig, + }, + ], }) export class MatTestDialogOpenerModule {} From fa150969b2607cb8f02eda8f4d493828812863ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joy=20Serqui=C3=B1a?= <44146839+essjay05@users.noreply.github.com> Date: Tue, 20 May 2025 14:23:36 -0700 Subject: [PATCH 059/145] fix(material/sidenav): removes -1 tabindex from sidenav (#31155) * fix(material/sidenav): removes -1 tabindex from sidenav Updates Angular Components SideNav component so that when the mode is not equalt to side the tabIndex value is -1. Otherwise provide a null value. Fixes b/286459024 * refactor(material/sidenav): updates syntax Updates previous fix to use proper syntax to calculate which mode that the sidenav is set to. * refactor(material/sidenav): adds comments to explain reason for change Updates previous changes to add the reasoning and reference for the removal of the -1 for side mode sidenavs. (cherry picked from commit 08a3c045770615a83dffade02f3bf68c1c85773f) --- src/material/sidenav/drawer.ts | 4 +++- src/material/sidenav/sidenav.ts | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/material/sidenav/drawer.ts b/src/material/sidenav/drawer.ts index 784d26902af6..b5e19e496896 100644 --- a/src/material/sidenav/drawer.ts +++ b/src/material/sidenav/drawer.ts @@ -165,7 +165,9 @@ export class MatDrawerContent extends CdkScrollable implements AfterContentInit // this was also done by the animations module which some internal tests seem to depend on. // Simulate it by toggling the `hidden` attribute instead. '[style.visibility]': '(!_container && !opened) ? "hidden" : null', - 'tabIndex': '-1', + // The sidenav container should not be focused on when used in side mode. See b/286459024 for + // reference. Updates tabIndex of drawer/container to default to null if in side mode. + '[attr.tabIndex]': '(mode !== "side") ? "-1" : null', }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, diff --git a/src/material/sidenav/sidenav.ts b/src/material/sidenav/sidenav.ts index 0dbfe6b6ada4..2c9cc1a94736 100644 --- a/src/material/sidenav/sidenav.ts +++ b/src/material/sidenav/sidenav.ts @@ -47,7 +47,9 @@ export class MatSidenavContent extends MatDrawerContent {} templateUrl: 'drawer.html', host: { 'class': 'mat-drawer mat-sidenav', - 'tabIndex': '-1', + // The sidenav container should not be focused on when used in side mode. See b/286459024 for + // reference. Updates tabIndex of drawer/container to default to null if in side mode. + '[attr.tabIndex]': '(mode !== "side") ? "-1" : null', // must prevent the browser from aligning text based on value '[attr.align]': 'null', '[class.mat-drawer-end]': 'position === "end"', From 23631ca662a7eddeb6abdaad64715a087d9cddb8 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 20 May 2025 17:13:16 -0600 Subject: [PATCH 060/145] build: update dependency node to v22.15.1 (#31147) See associated pull request for more information. (cherry picked from commit f14cc0dfeb8838b3482fd681d7338aa27fc41efb) --- .nvmrc | 2 +- docs/.nvmrc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.nvmrc b/.nvmrc index b8ffd70759fb..8320a6d2994a 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22.15.0 +22.15.1 diff --git a/docs/.nvmrc b/docs/.nvmrc index b8ffd70759fb..8320a6d2994a 100644 --- a/docs/.nvmrc +++ b/docs/.nvmrc @@ -1 +1 @@ -22.15.0 +22.15.1 From f2207b624e127bdb02e008d86c74e5a041e4d8c0 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 20 May 2025 17:13:45 -0600 Subject: [PATCH 061/145] build: update dependency @bazel/runfiles to v6 (#31148) See associated pull request for more information. (cherry picked from commit dbdb32d6ed78122182984d99a9af1cf1d3e7146a) --- package.json | 2 +- pnpm-lock.yaml | 23 +++++++++-------------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index fef566ce0407..9481b1a4eb20 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "@bazel/bazelisk": "1.12.1", "@bazel/buildifier": "8.2.0", "@bazel/ibazel": "^0.25.0", - "@bazel/runfiles": "5.8.1", + "@bazel/runfiles": "6.3.1", "@firebase/app-types": "^0.7.0", "@material/material-color-utilities": "^0.3.0", "@octokit/rest": "18.3.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0fffd72c167d..9ff58ae13e30 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -153,8 +153,8 @@ importers: specifier: ^0.25.0 version: 0.25.0 '@bazel/runfiles': - specifier: 5.8.1 - version: 5.8.1 + specifier: 6.3.1 + version: 6.3.1 '@firebase/app-types': specifier: ^0.7.0 version: 0.7.0 @@ -1535,8 +1535,8 @@ packages: resolution: {integrity: sha512-dtosfsuZCSaqlUe5EyxNdaN7Gow0Y+ZJixdlciytcSieUcB/1lXPFTx6OihxhjgtTHkeFovlQ/QbvArRPnk+nQ==} hasBin: true - '@bazel/runfiles@5.8.1': - resolution: {integrity: sha512-NDdfpdQ6rZlylgv++iMn5FkObC/QlBQvipinGLSOguTYpRywmieOyJ29XHvUilspwTFSILWpoE9CqMGkHXug1g==} + '@bazel/runfiles@6.3.1': + resolution: {integrity: sha512-1uLNT5NZsUVIGS4syuHwTzZ8HycMPyr6POA3FCE4GbMtc4rhoJk8aZKtNIRthJYfL+iioppi+rTfH3olMPr9nA==} '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} @@ -3223,11 +3223,6 @@ packages: ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true ajv-formats@3.0.1: resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} @@ -10415,7 +10410,7 @@ snapshots: '@bazel/ibazel@0.25.0': {} - '@bazel/runfiles@5.8.1': {} + '@bazel/runfiles@6.3.1': {} '@colors/colors@1.5.0': {} @@ -12048,8 +12043,8 @@ snapshots: indent-string: 4.0.0 optional: true - ajv-formats@2.1.1(ajv@8.17.1): - optionalDependencies: + ajv-formats@2.1.1: + dependencies: ajv: 8.17.1 ajv-formats@3.0.1: @@ -13768,7 +13763,7 @@ snapshots: dependencies: '@apidevtools/json-schema-ref-parser': 9.1.2 ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) + ajv-formats: 2.1.1 body-parser: 1.20.3 content-type: 1.0.5 deep-freeze: 0.0.1 @@ -17723,7 +17718,7 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) + ajv-formats: 2.1.1 ajv-keywords: 5.1.0(ajv@8.17.1) select-hose@2.0.0: {} From 8dd64f2c02745ce21066f57866ebe3ad13a58b0d Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 20 May 2025 17:14:45 -0600 Subject: [PATCH 062/145] build: update dependency concurrently to v9 (#31149) See associated pull request for more information. (cherry picked from commit 30df8d33d6da8e85da5633401c8df3ed74a1b441) --- integration/harness-e2e-cli/package.json | 2 +- integration/harness-e2e-cli/pnpm-lock.yaml | 27 +++++----------------- 2 files changed, 7 insertions(+), 22 deletions(-) diff --git a/integration/harness-e2e-cli/package.json b/integration/harness-e2e-cli/package.json index db7e164e2181..d3e12ea79f68 100644 --- a/integration/harness-e2e-cli/package.json +++ b/integration/harness-e2e-cli/package.json @@ -33,7 +33,7 @@ "@types/jasmine": "5.1.7", "@types/node": "22.14.0", "@types/selenium-webdriver": "3.0.19", - "concurrently": "^7.0.0", + "concurrently": "^9.0.0", "jasmine": "5.6.0", "jasmine-core": "5.6.0", "karma": "6.4.4", diff --git a/integration/harness-e2e-cli/pnpm-lock.yaml b/integration/harness-e2e-cli/pnpm-lock.yaml index 88095b568045..6652b38d091d 100644 --- a/integration/harness-e2e-cli/pnpm-lock.yaml +++ b/integration/harness-e2e-cli/pnpm-lock.yaml @@ -64,8 +64,8 @@ importers: specifier: 3.0.19 version: 3.0.19 concurrently: - specifier: ^7.0.0 - version: 7.6.0 + specifier: ^9.0.0 + version: 9.1.2 jasmine: specifier: 5.6.0 version: 5.6.0 @@ -2068,9 +2068,9 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - concurrently@7.6.0: - resolution: {integrity: sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==} - engines: {node: ^12.20.0 || ^14.13.0 || >=16.0.0} + concurrently@9.1.2: + resolution: {integrity: sha512-H9MWcoPsYddwbOGM6difjVwVZHl63nwMEwDJG/L7VGtuaJhb12h2caPG2tVPWs7emuYix252iGfqOyrz1GczTQ==} + engines: {node: '>=18'} hasBin: true connect-history-api-fallback@2.0.0: @@ -2168,10 +2168,6 @@ packages: custom-event@1.0.1: resolution: {integrity: sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==} - date-fns@2.30.0: - resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} - engines: {node: '>=0.11'} - date-format@4.0.14: resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} engines: {node: '>=4.0'} @@ -3855,9 +3851,6 @@ packages: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} - spawn-command@0.0.2: - resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==} - spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} @@ -6459,14 +6452,12 @@ snapshots: concat-map@0.0.1: {} - concurrently@7.6.0: + concurrently@9.1.2: dependencies: chalk: 4.1.2 - date-fns: 2.30.0 lodash: 4.17.21 rxjs: 7.8.2 shell-quote: 1.8.2 - spawn-command: 0.0.2 supports-color: 8.1.1 tree-kill: 1.2.2 yargs: 17.7.2 @@ -6566,10 +6557,6 @@ snapshots: custom-event@1.0.1: {} - date-fns@2.30.0: - dependencies: - '@babel/runtime': 7.27.1 - date-format@4.0.14: {} debug@2.6.9: @@ -8391,8 +8378,6 @@ snapshots: source-map@0.7.4: {} - spawn-command@0.0.2: {} - spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 From 9f0c79d355610a3d99cded30a51f2602b9ca01cd Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Wed, 21 May 2025 01:16:09 +0200 Subject: [PATCH 063/145] build: update Node.js version to `22.12.0` (#31161) This will be the minimum supported version by Angular FW and CLI from the next RC version. (cherry picked from commit a9d9c25461b9c6ef99b33abc9ec13c76fff53b38) --- WORKSPACE | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index ee74cb3fb1cf..5aa2904907a2 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -54,23 +54,19 @@ load("@aspect_rules_js//js:repositories.bzl", "rules_js_dependencies") rules_js_dependencies() -NODE_VERSION = "22.11.0" - -NODE_REPOSITORIES = { - "22.11.0-darwin_arm64": ("node-v22.11.0-darwin-arm64.tar.gz", "node-v22.11.0-darwin-arm64", "2e89afe6f4e3aa6c7e21c560d8a0453d84807e97850bbb819b998531a22bdfde"), - "22.11.0-darwin_amd64": ("node-v22.11.0-darwin-x64.tar.gz", "node-v22.11.0-darwin-x64", "668d30b9512137b5f5baeef6c1bb4c46efff9a761ba990a034fb6b28b9da2465"), - "22.11.0-linux_arm64": ("node-v22.11.0-linux-arm64.tar.xz", "node-v22.11.0-linux-arm64", "6031d04b98f59ff0f7cb98566f65b115ecd893d3b7870821171708cdbaf7ae6e"), - "22.11.0-linux_ppc64le": ("node-v22.11.0-linux-ppc64le.tar.xz", "node-v22.11.0-linux-ppc64le", "d1d49d7d611b104b6d616e18ac439479d8296aa20e3741432de0e85f4735a81e"), - "22.11.0-linux_s390x": ("node-v22.11.0-linux-s390x.tar.xz", "node-v22.11.0-linux-s390x", "f474ed77d6b13d66d07589aee1c2b9175be4c1b165483e608ac1674643064a99"), - "22.11.0-linux_amd64": ("node-v22.11.0-linux-x64.tar.xz", "node-v22.11.0-linux-x64", "83bf07dd343002a26211cf1fcd46a9d9534219aad42ee02847816940bf610a72"), - "22.11.0-windows_amd64": ("node-v22.11.0-win-x64.zip", "node-v22.11.0-win-x64", "905373a059aecaf7f48c1ce10ffbd5334457ca00f678747f19db5ea7d256c236"), -} - load("@aspect_rules_js//js:toolchains.bzl", "rules_js_register_toolchains") rules_js_register_toolchains( - node_repositories = NODE_REPOSITORIES, - node_version = NODE_VERSION, + node_repositories = { + "22.12.0-darwin_arm64": ("node-v22.12.0-darwin-arm64.tar.gz", "node-v22.12.0-darwin-arm64", "293dcc6c2408da21562d135b0412525e381bb6fe150d688edb58fe850d0f3e13"), + "22.12.0-darwin_amd64": ("node-v22.12.0-darwin-x64.tar.gz", "node-v22.12.0-darwin-x64", "52bc25dd026db7247c3c00439afdb83e95087248267f02d6c1a7250d1f896173"), + "22.12.0-linux_arm64": ("node-v22.12.0-linux-arm64.tar.xz", "node-v22.12.0-linux-arm64", "8cfd5a8b9afae5a2e0bd86b0148ca31d2589c0ea669c2d0b11c132e35d90ed68"), + "22.12.0-linux_ppc64le": ("node-v22.12.0-linux-ppc64le.tar.xz", "node-v22.12.0-linux-ppc64le", "199a606ba1ee86cce6d6b369c71f9d00873d2836a6662592afc3b6a5923e2004"), + "22.12.0-linux_s390x": ("node-v22.12.0-linux-s390x.tar.xz", "node-v22.12.0-linux-s390x", "9b517f8006eb4b451d40c461cbe64f93c6455566dbe2613387ab02412bc06d35"), + "22.12.0-linux_amd64": ("node-v22.12.0-linux-x64.tar.xz", "node-v22.12.0-linux-x64", "22982235e1b71fa8850f82edd09cdae7e3f32df1764a9ec298c72d25ef2c164f"), + "22.12.0-windows_amd64": ("node-v22.12.0-win-x64.zip", "node-v22.12.0-win-x64", "2b8f2256382f97ad51e29ff71f702961af466c4616393f767455501e6aece9b8"), + }, + node_version = "22.12.0", ) load("@aspect_rules_js//npm:repositories.bzl", "npm_translate_lock") From cfbd06656ab134535c18c7cda359572a93caee11 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 20 May 2025 17:19:12 -0600 Subject: [PATCH 064/145] build: update cross-repo angular dependencies (#31158) See associated pull request for more information. (cherry picked from commit f67ac4f9853476fd2c46c185265b54b9546ea536) --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.material-aio.yml | 18 +++---- .github/workflows/ci.yml | 50 +++++++++---------- .../workflows/deploy-dev-app-main-push.yml | 6 +-- .github/workflows/dev-infra.yml | 4 +- .github/workflows/docs-preview-build.yml | 8 +-- .github/workflows/docs-preview-deploy.yml | 2 +- .github/workflows/google-internal-tests.yml | 2 +- .github/workflows/pr.material-aio.yml | 18 +++---- .github/workflows/pr.yml | 46 ++++++++--------- .github/workflows/preview-build-dev-app.yml | 8 +-- .github/workflows/preview-deploy-dev-app.yml | 2 +- .github/workflows/scheduled-ci.yml | 14 +++--- WORKSPACE | 2 +- package.json | 2 +- pnpm-lock.yaml | 26 +++++----- 16 files changed, 105 insertions(+), 105 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index 13ee4c77f28d..fe0434fb4804 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -16,6 +16,6 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + - uses: angular/dev-infra/github-actions/branch-manager@b5a3609f89c06eb4037dce22a93641213a5d1508 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.material-aio.yml b/.github/workflows/ci.material-aio.yml index c04b16d5976f..1d598cd2f2a3 100644 --- a/.github/workflows/ci.material-aio.yml +++ b/.github/workflows/ci.material-aio.yml @@ -21,11 +21,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Install node modules run: pnpm install --frozen-lockfile - name: Execute Build @@ -35,11 +35,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Install node modules run: pnpm install --frozen-lockfile - name: Execute Tests @@ -56,11 +56,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Install node modules run: pnpm install --frozen-lockfile - name: Execute Lighthouse Audit diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dc99ccdb2c48..b85a57609584 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 with: cache-node-modules: true - name: Install node modules @@ -54,13 +54,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -77,13 +77,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -100,13 +100,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -124,13 +124,13 @@ jobs: runs-on: ubuntu-latest-16core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -147,13 +147,13 @@ jobs: runs-on: ubuntu-latest-16core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -170,13 +170,13 @@ jobs: runs-on: ubuntu-latest-4core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build and Verify Release Output @@ -201,7 +201,7 @@ jobs: runs-on: ubuntu-latest-4core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 with: cache-node-modules: true # See: https://github.com/puppeteer/puppeteer/pull/13196 and @@ -209,9 +209,9 @@ jobs: - name: Disable AppArmor run: echo 0 | sudo tee /proc/sys/kernel/apparmor_restrict_unprivileged_userns - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build and Verify Release Output @@ -239,14 +239,14 @@ jobs: CI_RUNNER_NUMBER: ${{ github.run_id }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 with: cache-node-modules: true - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Browserstack Variables - uses: angular/dev-infra/github-actions/browserstack@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/browserstack@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Run tests on Browserstack run: ./scripts/circleci/run-browserstack-tests.sh diff --git a/.github/workflows/deploy-dev-app-main-push.yml b/.github/workflows/deploy-dev-app-main-push.yml index b74d9dfe8266..bf74bd0c8833 100644 --- a/.github/workflows/deploy-dev-app-main-push.yml +++ b/.github/workflows/deploy-dev-app-main-push.yml @@ -17,13 +17,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Install node modules run: pnpm install --frozen-lockfile diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index 728a5fb9059b..9babd25e7f4e 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -12,13 +12,13 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/commit-message-based-labels@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + - uses: angular/dev-infra/github-actions/commit-message-based-labels@b5a3609f89c06eb4037dce22a93641213a5d1508 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/post-approval-changes@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + - uses: angular/dev-infra/github-actions/post-approval-changes@b5a3609f89c06eb4037dce22a93641213a5d1508 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/docs-preview-build.yml b/.github/workflows/docs-preview-build.yml index 4b66faa89e14..d1d7eb8e0497 100644 --- a/.github/workflows/docs-preview-build.yml +++ b/.github/workflows/docs-preview-build.yml @@ -21,16 +21,16 @@ jobs: (github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'docs: preview')) steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build docs site run: pnpm bazel build //docs:build.production - - uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + - uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@b5a3609f89c06eb4037dce22a93641213a5d1508 with: workflow-artifact-name: 'docs-preview' pull-number: '${{github.event.pull_request.number}}' diff --git a/.github/workflows/docs-preview-deploy.yml b/.github/workflows/docs-preview-deploy.yml index 0c5b5b82b0b2..2d265cadee78 100644 --- a/.github/workflows/docs-preview-deploy.yml +++ b/.github/workflows/docs-preview-deploy.yml @@ -40,7 +40,7 @@ jobs: npx -y firebase-tools@latest target:clear --config docs/firebase.json --project ${{env.PREVIEW_PROJECT}} hosting mat-aio npx -y firebase-tools@latest target:apply --config docs/firebase.json --project ${{env.PREVIEW_PROJECT}} hosting mat-aio ${{env.PREVIEW_SITE}} - - uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + - uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@b5a3609f89c06eb4037dce22a93641213a5d1508 with: github-token: '${{secrets.GITHUB_TOKEN}}' workflow-artifact-name: 'docs-preview' diff --git a/.github/workflows/google-internal-tests.yml b/.github/workflows/google-internal-tests.yml index f939dfc6f796..4b70bb24ae27 100644 --- a/.github/workflows/google-internal-tests.yml +++ b/.github/workflows/google-internal-tests.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/google-internal-tests@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + - uses: angular/dev-infra/github-actions/google-internal-tests@b5a3609f89c06eb4037dce22a93641213a5d1508 with: run-tests-guide-url: http://go/angular-material-presubmit github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/pr.material-aio.yml b/.github/workflows/pr.material-aio.yml index f482e9e03e53..70898f45f1be 100644 --- a/.github/workflows/pr.material-aio.yml +++ b/.github/workflows/pr.material-aio.yml @@ -19,11 +19,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Install node modules run: pnpm install --frozen-lockfile - name: Execute Build @@ -33,11 +33,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Install node modules run: pnpm install --frozen-lockfile - name: Execute Tests @@ -54,11 +54,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Install node modules run: pnpm install --frozen-lockfile - name: Execute Lighthouse Audit diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 438a200e16a4..de511a10855f 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 with: cache-node-modules: true - name: Install node modules @@ -45,7 +45,7 @@ jobs: - name: Check code format run: pnpm ng-dev format changed --check ${{ github.event.pull_request.base.sha }} - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/linting/licenses@b5a3609f89c06eb4037dce22a93641213a5d1508 # Commit message check is last intentionally, because the caretaker can fix it # during merge, while other lint failures have to be resolved by the PR author. - name: Check commit message @@ -55,13 +55,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Install node modules run: pnpm install --frozen-lockfile - name: Check API Goldens @@ -71,13 +71,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Install node modules run: pnpm install --frozen-lockfile - name: Run e2e tests @@ -87,13 +87,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Install node modules run: pnpm install --frozen-lockfile - name: Run integration tests @@ -103,13 +103,13 @@ jobs: runs-on: ubuntu-latest-16core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Install node modules run: pnpm install --frozen-lockfile - name: Run tests @@ -119,13 +119,13 @@ jobs: runs-on: ubuntu-latest-16core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Install node modules run: pnpm install --frozen-lockfile - name: Run tests @@ -135,13 +135,13 @@ jobs: runs-on: ubuntu-latest-4core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Install node modules run: pnpm install --frozen-lockfile - name: Build and Verify Release Output @@ -164,7 +164,7 @@ jobs: CI_RUNNER_NUMBER: ${{ github.run_id }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 with: cache-node-modules: true # Checking out the pull request commit is intended here as we need to run the changed code tests. @@ -172,8 +172,8 @@ jobs: - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Browserstack Variables - uses: angular/dev-infra/github-actions/browserstack@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/browserstack@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Run tests on Browserstack run: ./scripts/circleci/run-browserstack-tests.sh diff --git a/.github/workflows/preview-build-dev-app.yml b/.github/workflows/preview-build-dev-app.yml index 80df7a80f5e3..5a1216ad086d 100644 --- a/.github/workflows/preview-build-dev-app.yml +++ b/.github/workflows/preview-build-dev-app.yml @@ -23,18 +23,18 @@ jobs: (github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'dev-app preview')) steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 # Build the web package - run: bazel build //src/dev-app:web_package --symlink_prefix=dist/ - - uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + - uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@b5a3609f89c06eb4037dce22a93641213a5d1508 with: workflow-artifact-name: 'dev-app' pull-number: '${{github.event.pull_request.number}}' diff --git a/.github/workflows/preview-deploy-dev-app.yml b/.github/workflows/preview-deploy-dev-app.yml index d131747b2d71..9703c9d0493c 100644 --- a/.github/workflows/preview-deploy-dev-app.yml +++ b/.github/workflows/preview-deploy-dev-app.yml @@ -33,7 +33,7 @@ jobs: npx -y firebase-tools@latest target:clear --project ${{env.PREVIEW_PROJECT}} hosting dev-app npx -y firebase-tools@latest target:apply --project ${{env.PREVIEW_PROJECT}} hosting dev-app ${{env.PREVIEW_SITE}} - - uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + - uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@b5a3609f89c06eb4037dce22a93641213a5d1508 with: github-token: '${{secrets.GITHUB_TOKEN}}' workflow-artifact-name: 'dev-app' diff --git a/.github/workflows/scheduled-ci.yml b/.github/workflows/scheduled-ci.yml index 88403cb1d267..ed0b3eca0c82 100644 --- a/.github/workflows/scheduled-ci.yml +++ b/.github/workflows/scheduled-ci.yml @@ -19,13 +19,13 @@ jobs: runs-on: ubuntu-latest-4core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Setting up Angular snapshot builds @@ -46,13 +46,13 @@ jobs: runs-on: ubuntu-latest-4core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/setup@b5a3609f89c06eb4037dce22a93641213a5d1508 - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/bazel/configure-remote@b5a3609f89c06eb4037dce22a93641213a5d1508 with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Setting up Angular snapshot builds @@ -75,7 +75,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508 with: cache-node-modules: true # See: https://github.com/puppeteer/puppeteer/pull/13196 and diff --git a/WORKSPACE b/WORKSPACE index 5aa2904907a2..5b15b7f4bed8 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -185,7 +185,7 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( name = "devinfra", - commit = "a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b", + commit = "b5a3609f89c06eb4037dce22a93641213a5d1508", remote = "https://github.com/angular/dev-infra.git", ) diff --git a/package.json b/package.json index 9481b1a4eb20..2fa3701b2310 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "devDependencies": { "@angular/compiler-cli": "catalog:", "@angular/localize": "catalog:", - "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#32c4a4b15963cdd60dd1a35e92f75e538936fcdf", + "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#a0e523780deaf6c6361b91fd0b965ba58d7551a0", "@angular/platform-server": "catalog:", "@angular/router": "catalog:", "@babel/core": "^7.16.12", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9ff58ae13e30..384c82486c71 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -132,8 +132,8 @@ importers: specifier: 'catalog:' version: 20.0.0-rc.1(@angular/compiler-cli@20.0.0-rc.1(@angular/compiler@20.0.0-rc.1)(typescript@5.8.3))(@angular/compiler@20.0.0-rc.1) '@angular/ng-dev': - specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#32c4a4b15963cdd60dd1a35e92f75e538936fcdf - version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/32c4a4b15963cdd60dd1a35e92f75e538936fcdf(encoding@0.1.13) + specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#a0e523780deaf6c6361b91fd0b965ba58d7551a0 + version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/a0e523780deaf6c6361b91fd0b965ba58d7551a0(encoding@0.1.13) '@angular/platform-server': specifier: 'catalog:' version: 20.0.0-rc.1(66c4waiyzoicv6gxn24dzbippq) @@ -907,9 +907,9 @@ packages: '@angular/compiler': 20.0.0-rc.1 '@angular/compiler-cli': 20.0.0-rc.1 - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/32c4a4b15963cdd60dd1a35e92f75e538936fcdf': - resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/32c4a4b15963cdd60dd1a35e92f75e538936fcdf} - version: 0.0.0-a9061f8b8f7bb7b0ea2b578d48dcfd4e6b83a18b + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/a0e523780deaf6c6361b91fd0b965ba58d7551a0': + resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/a0e523780deaf6c6361b91fd0b965ba58d7551a0} + version: 0.0.0-b5a3609f89c06eb4037dce22a93641213a5d1508 hasBin: true '@angular/platform-browser-dynamic@20.0.0-rc.1': @@ -9574,7 +9574,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/32c4a4b15963cdd60dd1a35e92f75e538936fcdf(encoding@0.1.13)': + '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/a0e523780deaf6c6361b91fd0b965ba58d7551a0(encoding@0.1.13)': dependencies: '@google-cloud/spanner': 7.21.0(encoding@0.1.13)(supports-color@10.0.0) '@octokit/rest': 21.1.1 @@ -9582,7 +9582,7 @@ snapshots: '@types/supports-color': 10.0.0 '@yarnpkg/lockfile': 1.1.0 chalk: 5.4.1 - semver: 7.7.1 + semver: 7.7.2 supports-color: 10.0.0 typed-graphqlify: 3.1.6 typescript: 5.8.3 @@ -11082,7 +11082,7 @@ snapshots: '@npmcli/fs@3.1.1': dependencies: - semver: 7.7.1 + semver: 7.7.2 optional: true '@npmcli/fs@4.0.0': @@ -16019,7 +16019,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.7.1 + semver: 7.7.2 make-error@1.3.6: {} @@ -16418,7 +16418,7 @@ snapshots: make-fetch-happen: 13.0.1 nopt: 7.2.1 proc-log: 4.2.0 - semver: 7.7.1 + semver: 7.7.2 tar: 6.2.1 which: 4.0.0 transitivePeerDependencies: @@ -16466,7 +16466,7 @@ snapshots: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.16.1 - semver: 7.7.1 + semver: 7.7.2 validate-npm-package-license: 3.0.4 normalize-path@3.0.0: {} @@ -16614,7 +16614,7 @@ snapshots: openapi3-ts@3.2.0: dependencies: - yaml: 2.7.1 + yaml: 2.8.0 opener@1.5.2: {} @@ -17025,7 +17025,7 @@ snapshots: jsdoc: 4.0.4 minimist: 1.2.8 protobufjs: 7.2.4 - semver: 7.7.1 + semver: 7.7.2 tmp: 0.2.3 uglify-js: 3.19.3 From 381365199d488e9970f464d4c89d7f2877c5efb1 Mon Sep 17 00:00:00 2001 From: Andrew Seguin Date: Tue, 20 May 2025 18:10:24 -0600 Subject: [PATCH 065/145] refactor: simplify component styles by removing use-tokens (#31146) * refactor: simplify component styles by removing use-tokens * refactor: fixes found from internal changes * refactor: fixes found from internal changes * refactor: fixes found from internal changes * refactor: more fixes (cherry picked from commit 7b5d88b5c9c98ba0752c7a9b20e130992d6999c2) --- src/dev-app/theme/theme-demo.scss | 10 +- .../autocomplete/_autocomplete-theme.scss | 39 +- .../autocomplete/_m2-autocomplete.scss | 9 +- .../autocomplete/_m3-autocomplete.scss | 12 +- src/material/autocomplete/autocomplete.scss | 14 +- src/material/badge/_badge-theme.scss | 31 +- src/material/badge/_m2-badge.scss | 67 +- src/material/badge/_m3-badge.scss | 63 +- src/material/badge/badge.scss | 126 ++- .../bottom-sheet/_bottom-sheet-theme.scss | 20 +- .../bottom-sheet/_m2-bottom-sheet.scss | 22 +- .../bottom-sheet/_m3-bottom-sheet.scss | 22 +- .../bottom-sheet/bottom-sheet-container.scss | 28 +- .../button-toggle/_button-toggle-theme.scss | 30 +- .../button-toggle/_m2-button-toggle.scss | 82 +- .../button-toggle/_m3-button-toggle.scss | 61 +- src/material/button-toggle/button-toggle.scss | 572 ++++++------ src/material/button/_button-base.scss | 26 +- src/material/button/_button-theme.scss | 34 +- src/material/button/_fab-theme.scss | 36 +- src/material/button/_icon-button-theme.scss | 32 +- src/material/button/_m2-button.scss | 268 +++--- src/material/button/_m2-fab.scss | 104 ++- src/material/button/_m2-icon-button.scss | 31 +- src/material/button/_m3-button.scss | 221 ++--- src/material/button/_m3-fab.scss | 95 +- src/material/button/_m3-icon-button.scss | 29 +- src/material/button/button.scss | 346 +++---- src/material/button/fab.scss | 217 +++-- src/material/button/icon-button.scss | 146 ++- src/material/card/_card-theme.scss | 42 +- src/material/card/_m2-card.scss | 49 +- src/material/card/_m3-card.scss | 47 +- src/material/card/card.scss | 118 ++- src/material/checkbox/_checkbox-common.scss | 227 +++-- src/material/checkbox/_checkbox-theme.scss | 40 +- src/material/checkbox/_m2-checkbox.scss | 67 +- src/material/checkbox/_m3-checkbox.scss | 72 +- src/material/checkbox/checkbox.scss | 30 +- src/material/chips/_chips-theme.scss | 42 +- src/material/chips/_m2-chip.scss | 98 +- src/material/chips/_m3-chip.scss | 100 +- src/material/chips/chip.scss | 375 ++++---- src/material/core/_core-theme.scss | 120 +-- src/material/core/_core.scss | 35 +- src/material/core/_m2-app.scss | 10 +- src/material/core/_m3-app.scss | 60 +- src/material/core/option/_m2-optgroup.scss | 15 +- src/material/core/option/_m2-option.scss | 23 +- src/material/core/option/_m3-optgroup.scss | 15 +- src/material/core/option/_m3-option.scss | 26 +- src/material/core/option/_optgroup-theme.scss | 28 +- src/material/core/option/_option-theme.scss | 31 +- src/material/core/option/optgroup.scss | 20 +- src/material/core/option/option.scss | 75 +- src/material/core/ripple/_m2-ripple.scss | 5 +- src/material/core/ripple/_m3-ripple.scss | 8 +- src/material/core/ripple/_ripple-theme.scss | 37 +- src/material/core/ripple/_ripple.scss | 12 +- .../pseudo-checkbox/_m2-pseudo-checkbox.scss | 21 +- .../pseudo-checkbox/_m3-pseudo-checkbox.scss | 22 +- .../_pseudo-checkbox-theme.scss | 11 +- .../pseudo-checkbox/pseudo-checkbox.scss | 62 +- src/material/core/tokens/_m3-system.scss | 87 +- src/material/core/tokens/_token-utils.scss | 180 ++-- src/material/core/tokens/m3/BUILD.bazel | 1 + src/material/core/tokens/m3/_index.scss | 1 + src/material/core/tokens/m3/_theme.scss | 47 + .../datepicker/_datepicker-theme.scss | 39 +- src/material/datepicker/_m2-datepicker.scss | 105 ++- src/material/datepicker/_m3-datepicker.scss | 91 +- src/material/datepicker/calendar-body.scss | 152 ++-- src/material/datepicker/calendar.scss | 47 +- src/material/datepicker/date-range-input.scss | 21 +- .../datepicker/datepicker-content.scss | 25 +- .../datepicker/datepicker-toggle.scss | 15 +- src/material/dialog/_dialog-theme.scss | 31 +- src/material/dialog/_m2-dialog.scss | 51 +- src/material/dialog/_m3-dialog.scss | 52 +- src/material/dialog/dialog.scss | 89 +- src/material/divider/_divider-theme.scss | 28 +- src/material/divider/_m2-divider.scss | 7 +- src/material/divider/_m3-divider.scss | 10 +- src/material/divider/divider.scss | 22 +- src/material/expansion/_expansion-theme.scss | 34 +- src/material/expansion/_m2-expansion.scss | 55 +- src/material/expansion/_m3-expansion.scss | 51 +- .../expansion/expansion-panel-header.scss | 80 +- src/material/expansion/expansion-panel.scss | 46 +- .../form-field/_form-field-focus-overlay.scss | 20 +- .../form-field/_form-field-native-select.scss | 34 +- .../form-field/_form-field-subscript.scss | 25 +- .../form-field/_form-field-theme.scss | 47 +- src/material/form-field/_m2-form-field.scss | 203 +++-- src/material/form-field/_m3-form-field.scss | 179 ++-- .../_mdc-text-field-density-overrides.scss | 85 +- .../_mdc-text-field-structure-overrides.scss | 10 +- .../form-field/_mdc-text-field-structure.scss | 858 +++++++++--------- src/material/form-field/form-field.scss | 80 +- src/material/grid-list/_grid-list-theme.scss | 25 +- src/material/grid-list/_m2-grid-list.scss | 15 +- src/material/grid-list/_m3-grid-list.scss | 14 +- src/material/grid-list/grid-list.scss | 22 +- src/material/icon/_icon-theme.scss | 26 +- src/material/icon/_m2-icon.scss | 5 +- src/material/icon/_m3-icon.scss | 8 +- src/material/icon/icon.scss | 10 +- src/material/input/_input-theme.scss | 4 +- .../list/_list-inherited-structure.scss | 187 ++-- src/material/list/_list-theme.scss | 65 +- src/material/list/_m2-list.scss | 111 +-- src/material/list/_m3-list.scss | 111 +-- src/material/list/list.scss | 112 ++- src/material/menu/_m2-menu.scss | 47 +- src/material/menu/_m3-menu.scss | 48 +- src/material/menu/_menu-theme.scss | 31 +- src/material/menu/menu.scss | 127 ++- src/material/paginator/_m2-paginator.scss | 33 +- src/material/paginator/_m3-paginator.scss | 35 +- src/material/paginator/_paginator-theme.scss | 31 +- src/material/paginator/paginator.scss | 60 +- .../progress-bar/_m2-progress-bar.scss | 13 +- .../progress-bar/_m3-progress-bar.scss | 13 +- .../progress-bar/_progress-bar-theme.scss | 20 +- src/material/progress-bar/progress-bar.scss | 49 +- .../_m2-progress-spinner.scss | 9 +- .../_m3-progress-spinner.scss | 9 +- .../_progress-spinner-theme.scss | 28 +- .../progress-spinner/progress-spinner.scss | 18 +- src/material/radio/_m2-radio.scss | 51 +- src/material/radio/_m3-radio.scss | 54 +- src/material/radio/_radio-common.scss | 129 ++- src/material/radio/_radio-theme.scss | 47 +- src/material/radio/radio.scss | 67 +- src/material/select/_m2-select.scss | 33 +- src/material/select/_m3-select.scss | 35 +- src/material/select/_select-theme.scss | 46 +- src/material/select/select.scss | 68 +- src/material/sidenav/_m2-sidenav.scss | 21 +- src/material/sidenav/_m3-sidenav.scss | 24 +- src/material/sidenav/_sidenav-theme.scss | 28 +- src/material/sidenav/drawer.scss | 118 +-- .../slide-toggle/_m2-slide-toggle.scss | 165 ++-- .../slide-toggle/_m3-slide-toggle.scss | 163 ++-- .../slide-toggle/_slide-toggle-theme.scss | 54 +- src/material/slide-toggle/slide-toggle.scss | 439 ++++----- src/material/slider/_m2-slider.scss | 92 +- src/material/slider/_m3-slider.scss | 92 +- src/material/slider/_slider-theme.scss | 31 +- src/material/slider/slider.scss | 215 ++--- src/material/snack-bar/_m2-snack-bar.scss | 21 +- src/material/snack-bar/_m3-snack-bar.scss | 22 +- src/material/snack-bar/_snack-bar-theme.scss | 27 +- .../snack-bar/snack-bar-container.scss | 42 +- src/material/sort/_m2-sort.scss | 5 +- src/material/sort/_m3-sort.scss | 5 +- src/material/sort/_sort-theme.scss | 31 +- src/material/sort/sort-header.scss | 11 +- src/material/stepper/_m2-stepper.scss | 63 +- src/material/stepper/_m3-stepper.scss | 59 +- src/material/stepper/_stepper-theme.scss | 42 +- src/material/stepper/step-header.scss | 93 +- src/material/stepper/stepper.scss | 84 +- src/material/table/_m2-table.scss | 51 +- src/material/table/_m3-table.scss | 52 +- src/material/table/_table-flex-styles.scss | 24 +- src/material/table/_table-theme.scss | 34 +- src/material/table/table.scss | 148 ++- src/material/tabs/_m2-tabs.scss | 55 +- src/material/tabs/_m3-tabs.scss | 54 +- src/material/tabs/_tabs-common.scss | 210 ++--- src/material/tabs/_tabs-theme.scss | 67 +- src/material/timepicker/_m2-timepicker.scss | 9 +- src/material/timepicker/_m3-timepicker.scss | 12 +- .../timepicker/_timepicker-theme.scss | 39 +- src/material/timepicker/timepicker.scss | 23 +- src/material/toolbar/_m2-toolbar.scss | 23 +- src/material/toolbar/_m3-toolbar.scss | 24 +- src/material/toolbar/_toolbar-theme.scss | 34 +- src/material/toolbar/toolbar.scss | 69 +- src/material/tooltip/_m2-tooltip.scss | 20 +- src/material/tooltip/_m3-tooltip.scss | 22 +- src/material/tooltip/_tooltip-theme.scss | 42 +- src/material/tooltip/tooltip.scss | 24 +- src/material/tree/_m2-tree.scss | 15 +- src/material/tree/_m3-tree.scss | 15 +- src/material/tree/_tree-theme.scss | 37 +- src/material/tree/tree.scss | 29 +- tools/extract-tokens/extract-tokens.ts | 115 +-- 189 files changed, 5569 insertions(+), 7085 deletions(-) create mode 100644 src/material/core/tokens/m3/_theme.scss diff --git a/src/dev-app/theme/theme-demo.scss b/src/dev-app/theme/theme-demo.scss index c28fafaf3317..e01e12f73000 100644 --- a/src/dev-app/theme/theme-demo.scss +++ b/src/dev-app/theme/theme-demo.scss @@ -93,11 +93,11 @@ mat-expansion-panel { margin-top: 24px; overflow: visible; @include mat.expansion-overrides(( - 'container-text-font': var(--mat-sys-body-medium-font), - 'container-text-size': var(--mat-sys-body-medium-size), - 'container-text-weight': var(--mat-sys-body-medium-weight), - 'container-text-line-height': var(--mat-sys-body-medium-line-height), - 'container-text-tracking': var(--mat-sys-body-medium-tracking), + container-text-font: var(--mat-sys-body-medium-font), + container-text-size: var(--mat-sys-body-medium-size), + container-text-weight: var(--mat-sys-body-medium-weight), + container-text-line-height: var(--mat-sys-body-medium-line-height), + container-text-tracking: var(--mat-sys-body-medium-tracking), )); } diff --git a/src/material/autocomplete/_autocomplete-theme.scss b/src/material/autocomplete/_autocomplete-theme.scss index b240471548ac..389b71352a8e 100644 --- a/src/material/autocomplete/_autocomplete-theme.scss +++ b/src/material/autocomplete/_autocomplete-theme.scss @@ -9,30 +9,20 @@ @mixin base($theme) { @if inspection.get-theme-version($theme) == 1 { - @include token-utils.create-token-values( - m3-autocomplete.$prefix, - map.get(m3-autocomplete.get-tokens($theme), base)); + @include token-utils.create-token-values(map.get(m3-autocomplete.get-tokens($theme), base)); } @else { @include sass-utils.current-selector-or-root() { - @include token-utils.create-token-values-mixed( - m2-autocomplete.$prefix, - m2-autocomplete.get-unthemable-tokens() - ); + @include token-utils.create-token-values-mixed(m2-autocomplete.get-unthemable-tokens()); } } } @mixin color($theme) { @if inspection.get-theme-version($theme) == 1 { - @include token-utils.create-token-values( - m3-autocomplete.$prefix, - map.get(m3-autocomplete.get-tokens($theme), color)); + @include token-utils.create-token-values(map.get(m3-autocomplete.get-tokens($theme), color)); } @else { @include sass-utils.current-selector-or-root() { - @include token-utils.create-token-values-mixed( - m2-autocomplete.$prefix, - m2-autocomplete.get-color-tokens($theme) - ); + @include token-utils.create-token-values-mixed(m2-autocomplete.get-color-tokens($theme)); } } } @@ -40,29 +30,20 @@ @mixin typography($theme) { @if inspection.get-theme-version($theme) == 1 { @include token-utils.create-token-values( - m3-autocomplete.$prefix, map.get(m3-autocomplete.get-tokens($theme), typography)); } @else { @include sass-utils.current-selector-or-root() { - @include token-utils.create-token-values-mixed( - m2-autocomplete.$prefix, - m2-autocomplete.get-typography-tokens($theme) - ); + @include token-utils.create-token-values-mixed(m2-autocomplete.get-typography-tokens($theme)); } } } @mixin density($theme) { @if inspection.get-theme-version($theme) == 1 { - @include token-utils.create-token-values( - m3-autocomplete.$prefix, - map.get(m3-autocomplete.get-tokens($theme), density)); + @include token-utils.create-token-values(map.get(m3-autocomplete.get-tokens($theme), density)); } @else { @include sass-utils.current-selector-or-root() { - @include token-utils.create-token-values-mixed( - m2-autocomplete.$prefix, - m2-autocomplete.get-density-tokens($theme) - ); + @include token-utils.create-token-values-mixed(m2-autocomplete.get-density-tokens($theme)); } } } @@ -71,14 +52,14 @@ @function _define-overrides() { @return ( ( - namespace: m2-autocomplete.$prefix, - tokens: m2-autocomplete.get-token-slots(), + namespace: autocomplete, + tokens: token-utils.get-overrides(m3-autocomplete.get-tokens(), autocomplete), ), ); } @mixin overrides($tokens: ()) { - @include token-utils.batch-create-token-values($tokens, _define-overrides()...); + @include token-utils.batch-create-token-values($tokens, _define-overrides()); } @mixin theme($theme) { diff --git a/src/material/autocomplete/_m2-autocomplete.scss b/src/material/autocomplete/_m2-autocomplete.scss index 6936ef19371b..95a74fc5a7e7 100644 --- a/src/material/autocomplete/_m2-autocomplete.scss +++ b/src/material/autocomplete/_m2-autocomplete.scss @@ -3,22 +3,19 @@ @use '../core/style/elevation'; @use '../core/style/sass-utils'; -// The prefix used to generate the fully qualified name for tokens in this file. -$prefix: (mat, autocomplete); - // Tokens that can't be configured through Angular Material's current theming API, // but may be in a future version of the theming API. @function get-unthemable-tokens() { @return ( - container-shape: 4px, - container-elevation-shadow: elevation.get-box-shadow(8), + autocomplete-container-shape: 4px, + autocomplete-container-elevation-shadow: elevation.get-box-shadow(8), ); } // Tokens that can be configured through Angular Material's color theming API. @function get-color-tokens($theme) { @return ( - background-color: inspection.get-theme-color($theme, background, card) + autocomplete-background-color: inspection.get-theme-color($theme, background, card) ); } diff --git a/src/material/autocomplete/_m3-autocomplete.scss b/src/material/autocomplete/_m3-autocomplete.scss index 4f148eadb41c..4a5272bbf3f8 100644 --- a/src/material/autocomplete/_m3-autocomplete.scss +++ b/src/material/autocomplete/_m3-autocomplete.scss @@ -1,24 +1,22 @@ @use 'sass:map'; @use '../core/style/elevation'; @use '../core/tokens/m3-utils'; - -// The prefix used to generate the fully qualified name for tokens in this file. -$prefix: (mat, autocomplete); +@use '../core/tokens/m3'; /// Generates custom tokens for the mat-autocomplete. /// @param {Map} $systems The MDC system tokens /// @param {Boolean} $exclude-hardcoded Whether to exclude hardcoded token values /// @param {Map} $token-slots Possible token slots /// @return {Map} A set of custom tokens for the mat-autocomplete -@function get-tokens($theme) { +@function get-tokens($theme: m3.$sys-theme) { $system: m3-utils.get-system($theme); $tokens: ( base: ( - container-shape: map.get($system, corner-extra-small), - container-elevation-shadow: elevation.get-box-shadow(2), + autocomplete-container-shape: map.get($system, corner-extra-small), + autocomplete-container-elevation-shadow: elevation.get-box-shadow(2), ), color: ( - background-color: map.get($system, surface-container), + autocomplete-background-color: map.get($system, surface-container), ), typography: (), density: (), diff --git a/src/material/autocomplete/autocomplete.scss b/src/material/autocomplete/autocomplete.scss index 1f014e9632b2..b3d3be79f849 100644 --- a/src/material/autocomplete/autocomplete.scss +++ b/src/material/autocomplete/autocomplete.scss @@ -1,12 +1,8 @@ @use '@angular/cdk'; -@use './m2-autocomplete'; @use './m3-autocomplete'; @use '../core/tokens/token-utils'; -@use '../core/tokens/m3-system'; -$token-prefix: m2-autocomplete.$prefix; -$token-slots: m2-autocomplete.get-token-slots(); -$fallbacks: m3-autocomplete.get-tokens(m3-system.$theme-with-system-vars); +$fallbacks: m3-autocomplete.get-tokens(); // Even though we don't use the MDC styles, we need to keep the classes in the // DOM for the Gmat versions to work. We need to bump up the specificity here @@ -24,11 +20,9 @@ div.mat-mdc-autocomplete-panel { // panel which is required for scroll calculations (see #30974). position: relative; - @include token-utils.use-tokens($token-prefix, $token-slots, $fallbacks) { - border-radius: token-utils.slot(container-shape); - box-shadow: token-utils.slot(container-elevation-shadow); - background-color: token-utils.slot(background-color); - } + border-radius: token-utils.slot(autocomplete-container-shape, $fallbacks); + box-shadow: token-utils.slot(autocomplete-container-elevation-shadow, $fallbacks); + background-color: token-utils.slot(autocomplete-background-color, $fallbacks); @include cdk.high-contrast { outline: solid 1px; diff --git a/src/material/badge/_badge-theme.scss b/src/material/badge/_badge-theme.scss index 34ba2cd6c362..eac410573b8a 100644 --- a/src/material/badge/_badge-theme.scss +++ b/src/material/badge/_badge-theme.scss @@ -13,14 +13,10 @@ /// @param {Map} $theme The theme to generate base styles for. @mixin base($theme) { @if inspection.get-theme-version($theme) == 1 { - @include token-utils.create-token-values( - m3-badge.$prefix, - map.get(m3-badge.get-tokens($theme), base)); + @include token-utils.create-token-values(map.get(m3-badge.get-tokens($theme), base)); } @else { @include sass-utils.current-selector-or-root() { - @include token-utils.create-token-values-mixed( - m2-badge.$prefix, - m2-badge.get-unthemable-tokens() + @include token-utils.create-token-values-mixed(m2-badge.get-unthemable-tokens() ); } } @@ -34,26 +30,20 @@ @mixin color($theme, $color-variant: null) { @if inspection.get-theme-version($theme) == 1 { @include token-utils.create-token-values( - m3-badge.$prefix, map.get(m3-badge.get-tokens($theme, $color-variant), color)); } @else { @include sass-utils.current-selector-or-root() { - @include token-utils.create-token-values-mixed( - m2-badge.$prefix, - m2-badge.get-color-tokens($theme) - ); + @include token-utils.create-token-values-mixed(m2-badge.get-color-tokens($theme)); } .mat-badge-accent { @include token-utils.create-token-values-mixed( - m2-badge.$prefix, m2-badge.private-get-color-palette-color-tokens($theme, accent) ); } .mat-badge-warn { @include token-utils.create-token-values-mixed( - m2-badge.$prefix, m2-badge.private-get-color-palette-color-tokens($theme, warn) ); } @@ -64,13 +54,10 @@ /// @param {Map} $theme The theme to generate typography styles for. @mixin typography($theme) { @if inspection.get-theme-version($theme) == 1 { - @include token-utils.create-token-values( - m3-badge.$prefix, - map.get(m3-badge.get-tokens($theme), typography)); + @include token-utils.create-token-values(map.get(m3-badge.get-tokens($theme), typography)); } @else { @include sass-utils.current-selector-or-root() { @include token-utils.create-token-values-mixed( - m2-badge.$prefix, m2-badge.get-typography-tokens($theme) ); } @@ -81,9 +68,7 @@ /// @param {Map} $theme The theme to generate density styles for. @mixin density($theme) { @if inspection.get-theme-version($theme) == 1 { - @include token-utils.create-token-values( - m3-badge.$prefix, - map.get(m3-badge.get-tokens($theme), density)); + @include token-utils.create-token-values(map.get(m3-badge.get-tokens($theme), density)); } @else { } } @@ -92,8 +77,8 @@ @function _define-overrides() { @return ( ( - namespace: m2-badge.$prefix, - tokens: m2-badge.get-token-slots(), + namespace: badge, + tokens: token-utils.get-overrides(m3-badge.get-tokens(), badge), ), ); } @@ -101,7 +86,7 @@ /// Outputs the CSS variable values for the given tokens. /// @param {Map} $tokens The token values to emit. @mixin overrides($tokens: ()) { - @include token-utils.batch-create-token-values($tokens, _define-overrides()...); + @include token-utils.batch-create-token-values($tokens, _define-overrides()); } /// Outputs all (base, color, typography, and density) theme styles for the mat-badge. diff --git a/src/material/badge/_m2-badge.scss b/src/material/badge/_m2-badge.scss index cdb2ee5e6344..1d6d8d2a1069 100644 --- a/src/material/badge/_m2-badge.scss +++ b/src/material/badge/_m2-badge.scss @@ -10,9 +10,6 @@ $_default-size: 22px; $_small-size: $_default-size - 6px; $_large-size: $_default-size + 6px; -// The prefix used to generate the fully qualified name for tokens in this file. -$prefix: (mat, badge); - // Tokens that can't be configured through Angular Material's current theming API, // but may be in a future version of the theming API. @function get-unthemable-tokens() { @@ -21,26 +18,26 @@ $prefix: (mat, badge); $large-size: $_large-size; @return ( - container-shape: 50%, - container-size: unset, - small-size-container-size: unset, - large-size-container-size: unset, - - legacy-container-size: $default-size, - legacy-small-size-container-size: $small-size, - legacy-large-size-container-size: $large-size, - - container-offset: math.div($default-size, -2) 0, - small-size-container-offset: math.div($small-size, -2) 0, - large-size-container-offset: math.div($large-size, -2) 0, - - container-overlap-offset: math.div($default-size, -2), - small-size-container-overlap-offset: math.div($small-size, -2), - large-size-container-overlap-offset: math.div($large-size, -2), - - container-padding: 0, - small-size-container-padding: 0, - large-size-container-padding: 0, + badge-container-shape: 50%, + badge-container-size: unset, + badge-small-size-container-size: unset, + badge-large-size-container-size: unset, + + badge-legacy-container-size: $default-size, + badge-legacy-small-size-container-size: $small-size, + badge-legacy-large-size-container-size: $large-size, + + badge-container-offset: math.div($default-size, -2) 0, + badge-small-size-container-offset: math.div($small-size, -2) 0, + badge-large-size-container-offset: math.div($large-size, -2) 0, + + badge-container-overlap-offset: math.div($default-size, -2), + badge-small-size-container-overlap-offset: math.div($small-size, -2), + badge-large-size-container-overlap-offset: math.div($large-size, -2), + + badge-container-padding: 0, + badge-small-size-container-padding: 0, + badge-large-size-container-padding: 0, ); } @@ -62,16 +59,16 @@ $prefix: (mat, badge); } @return map.merge($primary-color-tokens, ( - disabled-state-background-color: $disabled-background, - disabled-state-text-color: inspection.get-theme-color($theme, foreground, disabled-text), + badge-disabled-state-background-color: $disabled-background, + badge-disabled-state-text-color: inspection.get-theme-color($theme, foreground, disabled-text), )); } // Generates the tokens used to theme the badge based on a palette. @function private-get-color-palette-color-tokens($theme, $palette-name: primary) { @return ( - background-color: inspection.get-theme-color($theme, $palette-name), - text-color: inspection.get-theme-color($theme, $palette-name, default-contrast), + badge-background-color: inspection.get-theme-color($theme, $palette-name), + badge-text-color: inspection.get-theme-color($theme, $palette-name, default-contrast), ); } @@ -80,16 +77,16 @@ $prefix: (mat, badge); $base-size: 12px; @return ( - text-font: inspection.get-theme-typography($theme, body-2, font-family), - line-height: $_default-size, - text-size: $base-size, - text-weight: 600, + badge-text-font: inspection.get-theme-typography($theme, body-2, font-family), + badge-line-height: $_default-size, + badge-text-size: $base-size, + badge-text-weight: 600, - small-size-text-size: $base-size * 0.75, - small-size-line-height: $_small-size, + badge-small-size-text-size: $base-size * 0.75, + badge-small-size-line-height: $_small-size, - large-size-text-size: $base-size * 2, - large-size-line-height: $_large-size, + badge-large-size-text-size: $base-size * 2, + badge-large-size-line-height: $_large-size, ); } diff --git a/src/material/badge/_m3-badge.scss b/src/material/badge/_m3-badge.scss index f56de6cac480..1ef9287cecf4 100644 --- a/src/material/badge/_m3-badge.scss +++ b/src/material/badge/_m3-badge.scss @@ -1,11 +1,9 @@ @use 'sass:map'; @use '../core/tokens/m3-utils'; - -// The prefix used to generate the fully qualified name for tokens in this file. -$prefix: (mat, badge); +@use '../core/tokens/m3'; /// Generates custom tokens for the mat-badge. -@function get-tokens($theme, $color-variant: null) { +@function get-tokens($theme: m3.$sys-theme, $color-variant: null) { $system: m3-utils.get-system($theme); @if $color-variant { $system: m3-utils.replace-colors-with-variant($system, error, $color-variant); @@ -13,38 +11,39 @@ $prefix: (mat, badge); $tokens: ( base: ( - container-offset: -12px 0, - container-overlap-offset: -12px, - container-padding: 0 4px, - container-shape: map.get($system, corner-full), - container-size: 16px, - large-size-container-offset: -12px 0, - large-size-container-overlap-offset: -12px, - large-size-container-padding: 0 4px, - large-size-container-size: 16px, - legacy-container-size: unset, - legacy-large-size-container-size: unset, - legacy-small-size-container-size: unset, - small-size-container-offset: -6px 0, - small-size-container-overlap-offset: -6px, - small-size-container-padding: 0, - small-size-container-size: 6px, + badge-container-offset: -12px 0, + badge-container-overlap-offset: -12px, + badge-container-padding: 0 4px, + badge-container-shape: map.get($system, corner-full), + badge-container-size: 16px, + badge-large-size-container-offset: -12px 0, + badge-large-size-container-overlap-offset: -12px, + badge-large-size-container-padding: 0 4px, + badge-large-size-container-size: 16px, + badge-legacy-container-size: unset, + badge-legacy-large-size-container-size: unset, + badge-legacy-small-size-container-size: unset, + badge-small-size-container-offset: -6px 0, + badge-small-size-container-overlap-offset: -6px, + badge-small-size-container-padding: 0, + badge-small-size-container-size: 6px, ), color: ( - background-color: map.get($system, error), - disabled-state-background-color: m3-utils.color-with-opacity(map.get($system, error), 38%), - disabled-state-text-color: map.get($system, on-error), - text-color: map.get($system, on-error), + badge-background-color: map.get($system, error), + badge-disabled-state-background-color: + m3-utils.color-with-opacity(map.get($system, error), 38%), + badge-disabled-state-text-color: map.get($system, on-error), + badge-text-color: map.get($system, on-error), ), typography: ( - large-size-line-height: 16px, - large-size-text-size: map.get($system, label-small-size), - line-height: 16px, - small-size-line-height: 6px, - small-size-text-size: 0, - text-font: map.get($system, label-small-font), - text-size: map.get($system, label-small-size), - text-weight: map.get($system, label-small-weight), + badge-large-size-line-height: 16px, + badge-large-size-text-size: map.get($system, label-small-size), + badge-line-height: 16px, + badge-small-size-line-height: 6px, + badge-small-size-text-size: 0, + badge-text-font: map.get($system, label-small-font), + badge-text-size: map.get($system, label-small-size), + badge-text-weight: map.get($system, label-small-weight), ), density: (), ); diff --git a/src/material/badge/badge.scss b/src/material/badge/badge.scss index 2dd684f6fd79..ee771a08aa7f 100644 --- a/src/material/badge/badge.scss +++ b/src/material/badge/badge.scss @@ -1,46 +1,40 @@ @use 'sass:color'; @use '@angular/cdk'; -@use './m2-badge'; @use './m3-badge'; @use '../core/tokens/token-utils'; -@use '../core/tokens/m3-system'; $default-size: 22px !default; $small-size: $default-size - 6; $large-size: $default-size + 6; -$token-prefix: m2-badge.$prefix; -$token-slots: m2-badge.get-token-slots(); -$fallbacks: m3-badge.get-tokens(m3-system.$theme-with-system-vars); +$fallbacks: m3-badge.get-tokens(); @mixin _badge-size($size) { - @include token-utils.use-tokens($token-prefix, $token-slots, $fallbacks) { - $prefix: if($size == 'medium', '', $size + '-size-'); - $legacy-size-var-name: 'legacy-#{$prefix}container-size'; - $size-var-name: '#{$prefix}container-size'; - - .mat-badge-content { - // The M2 badge is implemented incorrectly because it uses `width` and `height` for its - // size which causes the text to be truncated. For M3 we want to fix this by emitting - // two declarations: - // * `legacy-container-size` token - targets width/height as in M2. In M3 the token is - // emitted as `unset`. - // * `container-size` token - In M2 the token is emitted as `unset` to preserve the legacy - // behavior while in M3 it targets `min-width` and `min-height` which allows the badge to - // grow with the content. - width: token-utils.slot($legacy-size-var-name); - height: token-utils.slot($legacy-size-var-name); - min-width: token-utils.slot($size-var-name); - min-height: token-utils.slot($size-var-name); - line-height: token-utils.slot('#{$prefix}line-height'); - padding: token-utils.slot('#{$prefix}container-padding'); - font-size: token-utils.slot('#{$prefix}text-size'); - margin: token-utils.slot('#{$prefix}container-offset'); - } - - &.mat-badge-overlap .mat-badge-content { - margin: token-utils.slot('#{$prefix}container-overlap-offset'); - } + $prefix: if($size == 'medium', '', $size + '-size-'); + $legacy-size-var-name: 'badge-legacy-#{$prefix}container-size'; + $size-var-name: 'badge-#{$prefix}container-size'; + + .mat-badge-content { + // The M2 badge is implemented incorrectly because it uses `width` and `height` for its + // size which causes the text to be truncated. For M3 we want to fix this by emitting + // two declarations: + // * `legacy-container-size` token - targets width/height as in M2. In M3 the token is + // emitted as `unset`. + // * `container-size` token - In M2 the token is emitted as `unset` to preserve the legacy + // behavior while in M3 it targets `min-width` and `min-height` which allows the badge to + // grow with the content. + width: token-utils.slot($legacy-size-var-name, $fallbacks); + height: token-utils.slot($legacy-size-var-name, $fallbacks); + min-width: token-utils.slot($size-var-name, $fallbacks); + min-height: token-utils.slot($size-var-name, $fallbacks); + line-height: token-utils.slot('badge-#{$prefix}line-height', $fallbacks); + padding: token-utils.slot('badge-#{$prefix}container-padding', $fallbacks); + font-size: token-utils.slot('badge-#{$prefix}text-size', $fallbacks); + margin: token-utils.slot('badge-#{$prefix}container-offset', $fallbacks); + } + + &.mat-badge-overlap .mat-badge-content { + margin: token-utils.slot('badge-#{$prefix}container-overlap-offset', $fallbacks); } } @@ -68,38 +62,36 @@ $fallbacks: m3-badge.get-tokens(m3-system.$theme-with-system-vars); box-sizing: border-box; pointer-events: none; - @include token-utils.use-tokens($token-prefix, $token-slots, $fallbacks) { - background-color: token-utils.slot(background-color); - color: token-utils.slot(text-color); - font-family: token-utils.slot(text-font); - font-weight: token-utils.slot(text-weight); - border-radius: token-utils.slot(container-shape); - - .mat-badge-above & { - bottom: 100%; - } - - .mat-badge-below & { - top: 100%; - } - - .mat-badge-before & { - right: 100%; - } - - [dir='rtl'] .mat-badge-before & { - right: auto; - left: 100%; - } - - .mat-badge-after & { - left: 100%; - } - - [dir='rtl'] .mat-badge-after & { - left: auto; - right: 100%; - } + background-color: token-utils.slot(badge-background-color, $fallbacks); + color: token-utils.slot(badge-text-color, $fallbacks); + font-family: token-utils.slot(badge-text-font, $fallbacks); + font-weight: token-utils.slot(badge-text-weight, $fallbacks); + border-radius: token-utils.slot(badge-container-shape, $fallbacks); + + .mat-badge-above & { + bottom: 100%; + } + + .mat-badge-below & { + top: 100%; + } + + .mat-badge-before & { + right: 100%; + } + + [dir='rtl'] .mat-badge-before & { + right: auto; + left: 100%; + } + + .mat-badge-after & { + left: 100%; + } + + [dir='rtl'] .mat-badge-after & { + left: auto; + right: 100%; } @include cdk.high-contrast { @@ -109,10 +101,8 @@ $fallbacks: m3-badge.get-tokens(m3-system.$theme-with-system-vars); } .mat-badge-disabled .mat-badge-content { - @include token-utils.use-tokens($token-prefix, $token-slots, $fallbacks) { - background-color: token-utils.slot(disabled-state-background-color); - color: token-utils.slot(disabled-state-text-color); - } + background-color: token-utils.slot(badge-disabled-state-background-color, $fallbacks); + color: token-utils.slot(badge-disabled-state-text-color, $fallbacks); } .mat-badge-hidden .mat-badge-content { diff --git a/src/material/bottom-sheet/_bottom-sheet-theme.scss b/src/material/bottom-sheet/_bottom-sheet-theme.scss index 01ea3e477a21..b68a7ee6d8ce 100644 --- a/src/material/bottom-sheet/_bottom-sheet-theme.scss +++ b/src/material/bottom-sheet/_bottom-sheet-theme.scss @@ -9,15 +9,10 @@ @mixin base($theme) { @if inspection.get-theme-version($theme) == 1 { - @include token-utils.create-token-values( - m3-bottom-sheet.$prefix, - map.get(m3-bottom-sheet.get-tokens($theme), base)); + @include token-utils.create-token-values(map.get(m3-bottom-sheet.get-tokens($theme), base)); } @else { @include sass-utils.current-selector-or-root() { - @include token-utils.create-token-values-mixed( - m2-bottom-sheet.$prefix, - m2-bottom-sheet.get-unthemable-tokens() - ); + @include token-utils.create-token-values-mixed(m2-bottom-sheet.get-unthemable-tokens()); } } } @@ -25,12 +20,10 @@ @mixin color($theme) { @if inspection.get-theme-version($theme) == 1 { @include token-utils.create-token-values( - m3-bottom-sheet.$prefix, map.get(m3-bottom-sheet.get-tokens($theme), color)); } @else { @include sass-utils.current-selector-or-root() { @include token-utils.create-token-values-mixed( - m2-bottom-sheet.$prefix, m2-bottom-sheet.get-color-tokens($theme) ); } @@ -40,12 +33,10 @@ @mixin typography($theme) { @if inspection.get-theme-version($theme) == 1 { @include token-utils.create-token-values( - m3-bottom-sheet.$prefix, map.get(m3-bottom-sheet.get-tokens($theme), typography)); } @else { @include sass-utils.current-selector-or-root() { @include token-utils.create-token-values-mixed( - m2-bottom-sheet.$prefix, m2-bottom-sheet.get-typography-tokens($theme) ); } @@ -55,7 +46,6 @@ @mixin density($theme) { @if inspection.get-theme-version($theme) == 1 { @include token-utils.create-token-values( - m3-bottom-sheet.$prefix, map.get(m3-bottom-sheet.get-tokens($theme), density)); } @else { } @@ -65,14 +55,14 @@ @function _define-overrides() { @return ( ( - namespace: m2-bottom-sheet.$prefix, - tokens: m2-bottom-sheet.get-token-slots(), + namespace: bottom-sheet, + tokens: token-utils.get-overrides(m3-bottom-sheet.get-tokens(), bottom-sheet) ), ); } @mixin overrides($tokens: ()) { - @include token-utils.batch-create-token-values($tokens, _define-overrides()...); + @include token-utils.batch-create-token-values($tokens, _define-overrides()); } @mixin theme($theme) { diff --git a/src/material/bottom-sheet/_m2-bottom-sheet.scss b/src/material/bottom-sheet/_m2-bottom-sheet.scss index 292b1e773aa8..b16feb1e3d25 100644 --- a/src/material/bottom-sheet/_m2-bottom-sheet.scss +++ b/src/material/bottom-sheet/_m2-bottom-sheet.scss @@ -2,34 +2,34 @@ @use '../core/theming/inspection'; @use '../core/style/sass-utils'; -// The prefix used to generate the fully qualified name for tokens in this file. -$prefix: (mat, bottom-sheet); - // Tokens that can't be configured through Angular Material's current theming API, // but may be in a future version of the theming API. @function get-unthemable-tokens() { @return ( // TODO: will be necessary for M3. - container-shape: 4px, + bottom-sheet-container-shape: 4px, ); } // Tokens that can be configured through Angular Material's color theming API. @function get-color-tokens($theme) { @return ( - container-text-color: inspection.get-theme-color($theme, foreground, text), - container-background-color: inspection.get-theme-color($theme, background, dialog), + bottom-sheet-container-text-color: inspection.get-theme-color($theme, foreground, text), + bottom-sheet-container-background-color: inspection.get-theme-color($theme, background, dialog), ); } // Tokens that can be configured through Angular Material's typography theming API. @function get-typography-tokens($theme) { @return ( - container-text-font: inspection.get-theme-typography($theme, body-2, font-family), - container-text-line-height: inspection.get-theme-typography($theme, body-2, line-height), - container-text-size: inspection.get-theme-typography($theme, body-2, font-size), - container-text-tracking: inspection.get-theme-typography($theme, body-2, letter-spacing), - container-text-weight: inspection.get-theme-typography($theme, body-2, font-weight), + bottom-sheet-container-text-font: inspection.get-theme-typography($theme, body-2, font-family), + bottom-sheet-container-text-line-height: + inspection.get-theme-typography($theme, body-2, line-height), + bottom-sheet-container-text-size: inspection.get-theme-typography($theme, body-2, font-size), + bottom-sheet-container-text-tracking: + inspection.get-theme-typography($theme, body-2, letter-spacing), + bottom-sheet-container-text-weight: + inspection.get-theme-typography($theme, body-2, font-weight), ); } diff --git a/src/material/bottom-sheet/_m3-bottom-sheet.scss b/src/material/bottom-sheet/_m3-bottom-sheet.scss index f4a3b104bba7..87420eb865bd 100644 --- a/src/material/bottom-sheet/_m3-bottom-sheet.scss +++ b/src/material/bottom-sheet/_m3-bottom-sheet.scss @@ -1,26 +1,24 @@ @use 'sass:map'; @use '../core/tokens/m3-utils'; - -// The prefix used to generate the fully qualified name for tokens in this file. -$prefix: (mat, bottom-sheet); +@use '../core/tokens/m3'; /// Generates custom tokens for the mat-bottom-sheet. -@function get-tokens($theme) { +@function get-tokens($theme: m3.$sys-theme) { $system: m3-utils.get-system($theme); @return ( base: ( - container-shape: 28px, + bottom-sheet-container-shape: 28px, ), color: ( - container-text-color: map.get($system, on-surface), - container-background-color: map.get($system, surface-container-low), + bottom-sheet-container-text-color: map.get($system, on-surface), + bottom-sheet-container-background-color: map.get($system, surface-container-low), ), typography: ( - container-text-font: map.get($system, body-large-font), - container-text-line-height: map.get($system, body-large-line-height), - container-text-size: map.get($system, body-large-size), - container-text-tracking: map.get($system, body-large-tracking), - container-text-weight: map.get($system, body-large-weight), + bottom-sheet-container-text-font: map.get($system, body-large-font), + bottom-sheet-container-text-line-height: map.get($system, body-large-line-height), + bottom-sheet-container-text-size: map.get($system, body-large-size), + bottom-sheet-container-text-tracking: map.get($system, body-large-tracking), + bottom-sheet-container-text-weight: map.get($system, body-large-weight), ), density: (), ); diff --git a/src/material/bottom-sheet/bottom-sheet-container.scss b/src/material/bottom-sheet/bottom-sheet-container.scss index 02914cc02a7c..8fd8c681664c 100644 --- a/src/material/bottom-sheet/bottom-sheet-container.scss +++ b/src/material/bottom-sheet/bottom-sheet-container.scss @@ -1,9 +1,7 @@ @use '@angular/cdk'; @use '../core/style/elevation'; -@use './m2-bottom-sheet'; @use './m3-bottom-sheet'; @use '../core/tokens/token-utils'; -@use '../core/tokens/m3-system'; // The bottom sheet minimum width on larger screen sizes is based // on increments of the toolbar, according to the spec. See: @@ -12,9 +10,7 @@ $_width-increment: 64px; $container-vertical-padding: 8px !default; $container-horizontal-padding: 16px !default; -$token-prefix: m2-bottom-sheet.$prefix; -$token-slots: m2-bottom-sheet.get-token-slots(); -$fallbacks: m3-bottom-sheet.get-tokens(m3-system.$theme-with-system-vars); +$fallbacks: m3-bottom-sheet.get-tokens(); @keyframes _mat-bottom-sheet-enter { from { @@ -51,15 +47,13 @@ $fallbacks: m3-bottom-sheet.get-tokens(m3-system.$theme-with-system-vars); // elements (e.g. close buttons) inside the bottom sheet. position: relative; - @include token-utils.use-tokens($token-prefix, $token-slots, $fallbacks) { - background: token-utils.slot(container-background-color); - color: token-utils.slot(container-text-color); - font-family: token-utils.slot(container-text-font); - font-size: token-utils.slot(container-text-size); - line-height: token-utils.slot(container-text-line-height); - font-weight: token-utils.slot(container-text-weight); - letter-spacing: token-utils.slot(container-text-tracking); - } + background: token-utils.slot(bottom-sheet-container-background-color, $fallbacks); + color: token-utils.slot(bottom-sheet-container-text-color, $fallbacks); + font-family: token-utils.slot(bottom-sheet-container-text-font, $fallbacks); + font-size: token-utils.slot(bottom-sheet-container-text-size, $fallbacks); + line-height: token-utils.slot(bottom-sheet-container-text-line-height, $fallbacks); + font-weight: token-utils.slot(bottom-sheet-container-text-weight, $fallbacks); + letter-spacing: token-utils.slot(bottom-sheet-container-text-tracking, $fallbacks); @include cdk.high-contrast { outline: 1px solid; @@ -80,10 +74,8 @@ $fallbacks: m3-bottom-sheet.get-tokens(m3-system.$theme-with-system-vars); // Applies a border radius to the bottom sheet. Should only be applied when it's not full-screen. %_mat-bottom-sheet-container-border-radius { - @include token-utils.use-tokens($token-prefix, $token-slots, $fallbacks) { - border-top-left-radius: token-utils.slot(container-shape); - border-top-right-radius: token-utils.slot(container-shape); - } + border-top-left-radius: token-utils.slot(bottom-sheet-container-shape, $fallbacks); + border-top-right-radius: token-utils.slot(bottom-sheet-container-shape, $fallbacks); } .mat-bottom-sheet-container-medium { diff --git a/src/material/button-toggle/_button-toggle-theme.scss b/src/material/button-toggle/_button-toggle-theme.scss index f6f07a2de20b..c5ef7186270f 100644 --- a/src/material/button-toggle/_button-toggle-theme.scss +++ b/src/material/button-toggle/_button-toggle-theme.scss @@ -12,15 +12,10 @@ /// @param {Map} $theme The theme to generate base styles for. @mixin base($theme) { @if inspection.get-theme-version($theme) == 1 { - @include token-utils.create-token-values( - m3-button-toggle.$prefix, - map.get(m3-button-toggle.get-tokens($theme), base)); + @include token-utils.create-token-values(map.get(m3-button-toggle.get-tokens($theme), base)); } @else { @include sass-utils.current-selector-or-root() { - @include token-utils.create-token-values-mixed( - m2-button-toggle.$prefix, - m2-button-toggle.get-unthemable-tokens() - ); + @include token-utils.create-token-values-mixed(m2-button-toggle.get-unthemable-tokens()); } } } @@ -32,12 +27,10 @@ @mixin color($theme, $color-variant: null) { @if inspection.get-theme-version($theme) == 1 { @include token-utils.create-token-values( - m3-button-toggle.$prefix, map.get(m3-button-toggle.get-tokens($theme, $color-variant), color)); } @else { @include sass-utils.current-selector-or-root() { @include token-utils.create-token-values-mixed( - m2-button-toggle.$prefix, m2-button-toggle.get-color-tokens($theme) ); } @@ -49,14 +42,11 @@ @mixin typography($theme) { @if inspection.get-theme-version($theme) == 1 { @include token-utils.create-token-values( - m3-button-toggle.$prefix, map.get(m3-button-toggle.get-tokens($theme), typography)); } @else { @include sass-utils.current-selector-or-root() { @include token-utils.create-token-values-mixed( - m2-button-toggle.$prefix, - m2-button-toggle.get-typography-tokens($theme) - ); + m2-button-toggle.get-typography-tokens($theme)); } } } @@ -66,26 +56,20 @@ @mixin density($theme) { @if inspection.get-theme-version($theme) == 1 { @include token-utils.create-token-values( - m3-button-toggle.$prefix, map.get(m3-button-toggle.get-tokens($theme), density)); } @else { @include sass-utils.current-selector-or-root() { - @include token-utils.create-token-values-mixed( - m2-button-toggle.$prefix, - m2-button-toggle.get-density-tokens($theme) - ); + @include token-utils.create-token-values-mixed(m2-button-toggle.get-density-tokens($theme)); } } } /// Defines the tokens that will be available in the `overrides` mixin and for docs extraction. @function _define-overrides() { - $standard-tokens: m2-button-toggle.get-token-slots(); - @return ( ( - namespace: m2-button-toggle.$prefix, - tokens: $standard-tokens, + namespace: button-toggle, + tokens: token-utils.get-overrides(m3-button-toggle.get-tokens(), button-toggle) ), ); } @@ -93,7 +77,7 @@ /// Outputs the CSS variable values for the given tokens. /// @param {Map} $tokens The token values to emit. @mixin overrides($tokens: ()) { - @include token-utils.batch-create-token-values($tokens, _define-overrides()...); + @include token-utils.batch-create-token-values($tokens, _define-overrides()); } /// Outputs all (base, color, typography, and density) theme styles for the mat-button-toggle. diff --git a/src/material/button-toggle/_m2-button-toggle.scss b/src/material/button-toggle/_m2-button-toggle.scss index 77ab67956945..6235ade542d5 100644 --- a/src/material/button-toggle/_m2-button-toggle.scss +++ b/src/material/button-toggle/_m2-button-toggle.scss @@ -5,19 +5,16 @@ @use '../core/theming/inspection'; @use '../core/style/sass-utils'; -// The prefix used to generate the fully qualified name for tokens in this file. -$prefix: (mat, button-toggle); - // Tokens that can't be configured through Angular Material's current theming API, // but may be in a future version of the theming API. @function get-unthemable-tokens() { @return ( - focus-state-layer-opacity: 0.12, - hover-state-layer-opacity: 0.04, - legacy-focus-state-layer-opacity: 1, - legacy-height: 36px, - legacy-shape: 2px, - shape: 4px, + button-toggle-focus-state-layer-opacity: 0.12, + button-toggle-hover-state-layer-opacity: 0.04, + button-toggle-legacy-focus-state-layer-opacity: 1, + button-toggle-legacy-height: 36px, + button-toggle-legacy-shape: 2px, + button-toggle-shape: 4px, ); } @@ -36,47 +33,58 @@ $prefix: (mat, button-toggle); $theme-divider-color); @return ( - background-color: inspection.get-theme-color($theme, background, card), - disabled-selected-state-background-color: + button-toggle-background-color: inspection.get-theme-color($theme, background, card), + button-toggle-disabled-selected-state-background-color: inspection.get-theme-color($theme, background, selected-disabled-button), - disabled-selected-state-text-color: inspection.get-theme-color($theme, foreground, text), - disabled-state-background-color: inspection.get-theme-color($theme, background, card), - disabled-state-text-color: inspection.get-theme-color($theme, foreground, disabled-button), - divider-color: $divider-color, - legacy-disabled-selected-state-background-color: + button-toggle-disabled-selected-state-text-color: + inspection.get-theme-color($theme, foreground, text), + button-toggle-disabled-state-background-color: + inspection.get-theme-color($theme, background, card), + button-toggle-disabled-state-text-color: + inspection.get-theme-color($theme, foreground, disabled-button), + button-toggle-divider-color: $divider-color, + button-toggle-legacy-disabled-selected-state-background-color: inspection.get-theme-color($theme, background, selected-disabled-button), - legacy-disabled-state-background-color: + button-toggle-legacy-disabled-state-background-color: inspection.get-theme-color($theme, background, disabled-button-toggle), - legacy-disabled-state-text-color: + button-toggle-legacy-disabled-state-text-color: inspection.get-theme-color($theme, foreground, disabled-button), - legacy-selected-state-background-color: + button-toggle-legacy-selected-state-background-color: inspection.get-theme-color($theme, background, selected-button), - legacy-selected-state-text-color: + button-toggle-legacy-selected-state-text-color: inspection.get-theme-color($theme, foreground, secondary-text), - legacy-state-layer-color: inspection.get-theme-color($theme, background, focused-button), - legacy-text-color: inspection.get-theme-color($theme, foreground, hint-text), - selected-state-background-color: + button-toggle-legacy-state-layer-color: + inspection.get-theme-color($theme, background, focused-button), + button-toggle-legacy-text-color: inspection.get-theme-color($theme, foreground, hint-text), + button-toggle-selected-state-background-color: inspection.get-theme-color($theme, background, selected-button), - selected-state-text-color: inspection.get-theme-color($theme, foreground, text), - state-layer-color: sass-utils.safe-color-change( + button-toggle-selected-state-text-color: inspection.get-theme-color($theme, foreground, text), + button-toggle-state-layer-color: sass-utils.safe-color-change( inspection.get-theme-color($theme, background, focused-button), $alpha: 1), - text-color: inspection.get-theme-color($theme, foreground, text), + button-toggle-text-color: inspection.get-theme-color($theme, foreground, text), ); } // Tokens that can be configured through Angular Material's typography theming API. @function get-typography-tokens($theme) { @return ( - label-text-font: inspection.get-theme-typography($theme, body-1, font-family), - label-text-line-height: inspection.get-theme-typography($theme, body-1, line-height), - label-text-size: inspection.get-theme-typography($theme, body-1, font-size), - label-text-tracking: inspection.get-theme-typography($theme, body-1, letter-spacing), - label-text-weight: inspection.get-theme-typography($theme, body-1, font-weight), - legacy-label-text-font: inspection.get-theme-typography($theme, body-1, font-family), - legacy-label-text-line-height: inspection.get-theme-typography($theme, body-1, line-height), - legacy-label-text-size: inspection.get-theme-typography($theme, body-1, font-size), - legacy-label-text-tracking: inspection.get-theme-typography($theme, body-1, letter-spacing), - legacy-label-text-weight: inspection.get-theme-typography($theme, body-1, font-weight), + button-toggle-label-text-font: inspection.get-theme-typography($theme, body-1, font-family), + button-toggle-label-text-line-height: + inspection.get-theme-typography($theme, body-1, line-height), + button-toggle-label-text-size: inspection.get-theme-typography($theme, body-1, font-size), + button-toggle-label-text-tracking: + inspection.get-theme-typography($theme, body-1, letter-spacing), + button-toggle-label-text-weight: inspection.get-theme-typography($theme, body-1, font-weight), + button-toggle-legacy-label-text-font: + inspection.get-theme-typography($theme, body-1, font-family), + button-toggle-legacy-label-text-line-height: + inspection.get-theme-typography($theme, body-1, line-height), + button-toggle-legacy-label-text-size: + inspection.get-theme-typography($theme, body-1, font-size), + button-toggle-legacy-label-text-tracking: + inspection.get-theme-typography($theme, body-1, letter-spacing), + button-toggle-legacy-label-text-weight: + inspection.get-theme-typography($theme, body-1, font-weight), ); } @@ -92,7 +100,7 @@ $prefix: (mat, button-toggle); ); @return ( - height: map.get($size-scale, $density-scale) + button-toggle-height: map.get($size-scale, $density-scale) ); } diff --git a/src/material/button-toggle/_m3-button-toggle.scss b/src/material/button-toggle/_m3-button-toggle.scss index d02fc08bc61b..75aa278f885f 100644 --- a/src/material/button-toggle/_m3-button-toggle.scss +++ b/src/material/button-toggle/_m3-button-toggle.scss @@ -3,12 +3,10 @@ @use '../core/tokens/m3-utils'; @use '../core/theming/theming'; @use '../core/theming/inspection'; - -// The prefix used to generate the fully qualified name for tokens in this file. -$prefix: (mat, button-toggle); +@use '../core/tokens/m3'; /// Generates custom tokens for the mat-button-toggle. -@function get-tokens($theme, $color-variant: null) { +@function get-tokens($theme: m3.$sys-theme, $color-variant: null) { $system: m3-utils.get-system($theme); @if $color-variant { $system: m3-utils.replace-colors-with-variant($system, secondary, $color-variant); @@ -16,30 +14,47 @@ $prefix: (mat, button-toggle); $tokens: ( base: ( - focus-state-layer-opacity: map.get($system, focus-state-layer-opacity), - hover-state-layer-opacity: map.get($system, hover-state-layer-opacity), - shape: map.get($system, corner-extra-large), + button-toggle-focus-state-layer-opacity: map.get($system, focus-state-layer-opacity), + button-toggle-hover-state-layer-opacity: map.get($system, hover-state-layer-opacity), + button-toggle-shape: map.get($system, corner-extra-large), + button-toggle-legacy-shape: null, + button-toggle-legacy-selected-state-text-color: null, + button-toggle-legacy-focus-state-layer-opacity: null, + button-toggle-legacy-height: null, ), typography: ( - label-text-font: map.get($system, label-large-font), - label-text-line-height: map.get($system, label-large-line-height), - label-text-size: map.get($system, label-large-size), - label-text-tracking: map.get($system, label-large-tracking), - label-text-weight: map.get($system, label-large-weight), + button-toggle-label-text-font: map.get($system, label-large-font), + button-toggle-label-text-line-height: map.get($system, label-large-line-height), + button-toggle-label-text-size: map.get($system, label-large-size), + button-toggle-label-text-tracking: map.get($system, label-large-tracking), + button-toggle-label-text-weight: map.get($system, label-large-weight), + button-toggle-legacy-label-text-font: null, + button-toggle-legacy-label-text-line-height: null, + button-toggle-legacy-label-text-size: null, + button-toggle-legacy-label-text-tracking: null, + button-toggle-legacy-label-text-weight: null, ), color: ( - background-color: transparent, - disabled-selected-state-background-color: + button-toggle-background-color: transparent, + button-toggle-disabled-selected-state-background-color: m3-utils.color-with-opacity(map.get($system, on-surface), 12%), - disabled-selected-state-text-color: + button-toggle-disabled-selected-state-text-color: + m3-utils.color-with-opacity(map.get($system, on-surface), 38%), + button-toggle-disabled-state-background-color: transparent, + button-toggle-disabled-state-text-color: m3-utils.color-with-opacity(map.get($system, on-surface), 38%), - disabled-state-background-color: transparent, - disabled-state-text-color: m3-utils.color-with-opacity(map.get($system, on-surface), 38%), - divider-color: map.get($system, outline), - selected-state-background-color: map.get($system, secondary-container), - selected-state-text-color: map.get($system, on-secondary-container), - state-layer-color: map.get($system, on-surface), - text-color: map.get($system, on-surface), + button-toggle-divider-color: map.get($system, outline), + button-toggle-selected-state-background-color: map.get($system, secondary-container), + button-toggle-selected-state-text-color: map.get($system, on-secondary-container), + button-toggle-state-layer-color: map.get($system, on-surface), + button-toggle-text-color: map.get($system, on-surface), + button-toggle-legacy-disabled-selected-state-background-color: null, + button-toggle-legacy-disabled-state-background-color: null, + button-toggle-legacy-disabled-state-text-color: null, + button-toggle-legacy-selected-state-background-color: null, + button-toggle-legacy-selected-state-text-color: null, + button-toggle-legacy-state-layer-color: null, + button-toggle-legacy-text-color: null, ), density: get-density-tokens(map.get($theme, inspection.$internals, density-scale)), ); @@ -53,6 +68,6 @@ $prefix: (mat, button-toggle); $index: ($scale * -1) + 1; @return ( - height: list.nth((40px, 40px, 40px, 36px, 24px), $index), + button-toggle-height: list.nth((40px, 40px, 40px, 36px, 24px), $index), ); } diff --git a/src/material/button-toggle/button-toggle.scss b/src/material/button-toggle/button-toggle.scss index cce337b1077b..9245d028ca53 100644 --- a/src/material/button-toggle/button-toggle.scss +++ b/src/material/button-toggle/button-toggle.scss @@ -4,9 +4,7 @@ @use '../core/style/layout-common'; @use '../core/style/elevation'; @use '../core/tokens/token-utils'; -@use './m2-button-toggle'; @use './m3-button-toggle'; -@use '../core/tokens/m3-system'; $standard-padding: 12px !default; $legacy-padding: 16px !default; @@ -19,365 +17,365 @@ $legacy-height: 36px !default; $standard-border-radius: 4px !default; $legacy-border-radius: 2px !default; -$token-prefix: m2-button-toggle.$prefix; -$token-slots: m2-button-toggle.get-token-slots(); -$fallbacks: m3-button-toggle.get-tokens(m3-system.$theme-with-system-vars); +$fallbacks: m3-button-toggle.get-tokens(); -@include token-utils.use-tokens($token-prefix, $token-slots, $fallbacks) { - .mat-button-toggle-standalone, - .mat-button-toggle-group { - position: relative; - display: inline-flex; - flex-direction: row; - white-space: nowrap; - overflow: hidden; - -webkit-tap-highlight-color: transparent; - border-radius: token-utils.slot(legacy-shape); +.mat-button-toggle-standalone, +.mat-button-toggle-group { + position: relative; + display: inline-flex; + flex-direction: row; + white-space: nowrap; + overflow: hidden; + -webkit-tap-highlight-color: transparent; + border-radius: token-utils.slot(button-toggle-legacy-shape, $fallbacks); - // Fixes the ripples not being clipped to the border radius on Safari. - transform: translateZ(0); + // Fixes the ripples not being clipped to the border radius on Safari. + transform: translateZ(0); - @include elevation.overridable-elevation(2); + @include elevation.overridable-elevation(2); - @include cdk.high-contrast { - outline: solid 1px; - } + @include cdk.high-contrast { + outline: solid 1px; } +} - .mat-button-toggle-standalone.mat-button-toggle-appearance-standard, - .mat-button-toggle-group-appearance-standard { - border-radius: token-utils.slot(shape); - border: solid 1px token-utils.slot(divider-color); - - .mat-pseudo-checkbox { - --mat-pseudo-checkbox-minimal-selected-checkmark-color: #{ - token-utils.slot(selected-state-text-color)}; - } - - &:not([class*='mat-elevation-z']) { - box-shadow: none; - } +.mat-button-toggle-standalone.mat-button-toggle-appearance-standard, +.mat-button-toggle-group-appearance-standard { + border-radius: token-utils.slot(button-toggle-shape, $fallbacks); + border: solid 1px token-utils.slot(button-toggle-divider-color, $fallbacks); - @include cdk.high-contrast { - outline: 0; - } + .mat-pseudo-checkbox { + --mat-pseudo-checkbox-minimal-selected-checkmark-color: #{ + token-utils.slot(button-toggle-selected-state-text-color, $fallbacks)}; } - .mat-button-toggle-vertical { - flex-direction: column; + &:not([class*='mat-elevation-z']) { + box-shadow: none; + } - .mat-button-toggle-label-content { - // Vertical button toggles shouldn't be an inline-block, because the toggles should - // fill the available width in the group. - display: block; - } + @include cdk.high-contrast { + outline: 0; } +} - .mat-button-toggle { - white-space: nowrap; - position: relative; - color: token-utils.slot(legacy-text-color); - font-family: token-utils.slot(legacy-label-text-font); - font-size: token-utils.slot(legacy-label-text-size); - line-height: token-utils.slot(legacy-label-text-line-height); - font-weight: token-utils.slot(legacy-label-text-weight); - letter-spacing: token-utils.slot(legacy-label-text-tracking); +.mat-button-toggle-vertical { + flex-direction: column; - --mat-pseudo-checkbox-minimal-selected-checkmark-color: #{ - token-utils.slot(legacy-selected-state-text-color)}; + .mat-button-toggle-label-content { + // Vertical button toggles shouldn't be an inline-block, because the toggles should + // fill the available width in the group. + display: block; + } +} - &.cdk-keyboard-focused .mat-button-toggle-focus-overlay { - opacity: token-utils.slot(legacy-focus-state-layer-opacity); - } +.mat-button-toggle { + white-space: nowrap; + position: relative; + color: token-utils.slot(button-toggle-legacy-text-color, $fallbacks); + font-family: token-utils.slot(button-toggle-legacy-label-text-font, $fallbacks); + font-size: token-utils.slot(button-toggle-legacy-label-text-size, $fallbacks); + line-height: token-utils.slot(button-toggle-legacy-label-text-line-height, $fallbacks); + font-weight: token-utils.slot(button-toggle-legacy-label-text-weight, $fallbacks); + letter-spacing: token-utils.slot(button-toggle-legacy-label-text-tracking, $fallbacks); + + --mat-pseudo-checkbox-minimal-selected-checkmark-color: #{ + token-utils.slot(button-toggle-legacy-selected-state-text-color, $fallbacks)}; + + &.cdk-keyboard-focused .mat-button-toggle-focus-overlay { + opacity: token-utils.slot(button-toggle-legacy-focus-state-layer-opacity, $fallbacks); + } - // Fixes SVG icons that get thrown off because of the `vertical-align` on the parent. - .mat-icon svg { - vertical-align: top; - } + // Fixes SVG icons that get thrown off because of the `vertical-align` on the parent. + .mat-icon svg { + vertical-align: top; } +} - .mat-button-toggle-checkbox-wrapper { - display: inline-block; - justify-content: flex-start; - align-items: center; - width: 0; - height: $_checkmark-size; - line-height: $_checkmark-size; - overflow: hidden; - box-sizing: border-box; - position: absolute; - top: 50%; - left: $legacy-padding; - - // Uses a 3d transform, because otherwise Safari has some some of rendering - // artifact that adds a small gap between the two parts of the checkmark. - transform: translate3d(0, -50%, 0); - - [dir='rtl'] & { - left: auto; - right: $legacy-padding; - } +.mat-button-toggle-checkbox-wrapper { + display: inline-block; + justify-content: flex-start; + align-items: center; + width: 0; + height: $_checkmark-size; + line-height: $_checkmark-size; + overflow: hidden; + box-sizing: border-box; + position: absolute; + top: 50%; + left: $legacy-padding; + + // Uses a 3d transform, because otherwise Safari has some some of rendering + // artifact that adds a small gap between the two parts of the checkmark. + transform: translate3d(0, -50%, 0); + + [dir='rtl'] & { + left: auto; + right: $legacy-padding; + } - .mat-button-toggle-appearance-standard & { - left: $standard-padding; - } + .mat-button-toggle-appearance-standard & { + left: $standard-padding; + } - [dir='rtl'] .mat-button-toggle-appearance-standard & { - left: auto; - right: $standard-padding; - } + [dir='rtl'] .mat-button-toggle-appearance-standard & { + left: auto; + right: $standard-padding; + } - .mat-button-toggle-checked & { - width: $_checkmark-size; - } + .mat-button-toggle-checked & { + width: $_checkmark-size; + } - .mat-button-toggle-animations-enabled & { - transition: width $_checkmark-transition; - } + .mat-button-toggle-animations-enabled & { + transition: width $_checkmark-transition; + } - // Disable the transition in vertical mode since it looks weird. - // There should be a limited amount of usages anyway. - .mat-button-toggle-vertical & { - transition: none; - } + // Disable the transition in vertical mode since it looks weird. + // There should be a limited amount of usages anyway. + .mat-button-toggle-vertical & { + transition: none; } +} - .mat-button-toggle-checked { - color: token-utils.slot(legacy-selected-state-text-color); - background-color: token-utils.slot(legacy-selected-state-background-color); +.mat-button-toggle-checked { + color: token-utils.slot(button-toggle-legacy-selected-state-text-color, $fallbacks); + background-color: token-utils.slot( + button-toggle-legacy-selected-state-background-color, $fallbacks); +} + +.mat-button-toggle-disabled { + pointer-events: none; + color: token-utils.slot(button-toggle-legacy-disabled-state-text-color, $fallbacks); + background-color: token-utils.slot( + button-toggle-legacy-disabled-state-background-color, $fallbacks); + --mat-pseudo-checkbox-minimal-disabled-selected-checkmark-color: #{ + token-utils.slot(button-toggle-legacy-disabled-state-text-color, $fallbacks)}; + + &.mat-button-toggle-checked { + background-color: token-utils.slot( + button-toggle-legacy-disabled-selected-state-background-color, $fallbacks); } +} - .mat-button-toggle-disabled { - pointer-events: none; - color: token-utils.slot(legacy-disabled-state-text-color); - background-color: token-utils.slot(legacy-disabled-state-background-color); - --mat-pseudo-checkbox-minimal-disabled-selected-checkmark-color: #{ - token-utils.slot(legacy-disabled-state-text-color)}; +.mat-button-toggle-disabled-interactive { + pointer-events: auto; +} - &.mat-button-toggle-checked { - background-color: token-utils.slot(legacy-disabled-selected-state-background-color); - } +.mat-button-toggle-appearance-standard { + $divider-color: token-utils.slot(button-toggle-divider-color, $fallbacks); + color: token-utils.slot(button-toggle-text-color, $fallbacks); + background-color: token-utils.slot(button-toggle-background-color, $fallbacks); + font-family: token-utils.slot(button-toggle-label-text-font, $fallbacks); + font-size: token-utils.slot(button-toggle-label-text-size, $fallbacks); + line-height: token-utils.slot(button-toggle-label-text-line-height, $fallbacks); + font-weight: token-utils.slot(button-toggle-label-text-weight, $fallbacks); + letter-spacing: token-utils.slot(button-toggle-label-text-tracking, $fallbacks); + + .mat-button-toggle-group-appearance-standard & + & { + border-left: solid 1px $divider-color; } - .mat-button-toggle-disabled-interactive { - pointer-events: auto; + [dir='rtl'] .mat-button-toggle-group-appearance-standard & + & { + border-left: none; + border-right: solid 1px $divider-color; } - .mat-button-toggle-appearance-standard { - $divider-color: token-utils.slot(divider-color); - color: token-utils.slot(text-color); - background-color: token-utils.slot(background-color); - font-family: token-utils.slot(label-text-font); - font-size: token-utils.slot(label-text-size); - line-height: token-utils.slot(label-text-line-height); - font-weight: token-utils.slot(label-text-weight); - letter-spacing: token-utils.slot(label-text-tracking); + .mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical & + & { + border-left: none; + border-right: none; + border-top: solid 1px $divider-color; + } - .mat-button-toggle-group-appearance-standard & + & { - border-left: solid 1px $divider-color; - } + &.mat-button-toggle-checked { + color: token-utils.slot(button-toggle-selected-state-text-color, $fallbacks); + background-color: token-utils.slot(button-toggle-selected-state-background-color, $fallbacks); + } - [dir='rtl'] .mat-button-toggle-group-appearance-standard & + & { - border-left: none; - border-right: solid 1px $divider-color; - } + &.mat-button-toggle-disabled { + color: token-utils.slot(button-toggle-disabled-state-text-color, $fallbacks); + background-color: token-utils.slot(button-toggle-disabled-state-background-color, $fallbacks); - .mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical & + & { - border-left: none; - border-right: none; - border-top: solid 1px $divider-color; + .mat-pseudo-checkbox { + --mat-pseudo-checkbox-minimal-disabled-selected-checkmark-color: #{ + token-utils.slot(button-toggle-disabled-selected-state-text-color, $fallbacks)}; } &.mat-button-toggle-checked { - color: token-utils.slot(selected-state-text-color); - background-color: token-utils.slot(selected-state-background-color); + color: token-utils.slot(button-toggle-disabled-selected-state-text-color, $fallbacks); + background-color: token-utils.slot( + button-toggle-disabled-selected-state-background-color, $fallbacks); } + } - &.mat-button-toggle-disabled { - color: token-utils.slot(disabled-state-text-color); - background-color: token-utils.slot(disabled-state-background-color); - - .mat-pseudo-checkbox { - --mat-pseudo-checkbox-minimal-disabled-selected-checkmark-color: #{ - token-utils.slot(disabled-selected-state-text-color)}; - } + .mat-button-toggle-focus-overlay { + background-color: token-utils.slot(button-toggle-state-layer-color, $fallbacks); + } - &.mat-button-toggle-checked { - color: token-utils.slot(disabled-selected-state-text-color); - background-color: token-utils.slot(disabled-selected-state-background-color); - } - } + &:hover .mat-button-toggle-focus-overlay { + opacity: token-utils.slot(button-toggle-hover-state-layer-opacity, $fallbacks); + } - .mat-button-toggle-focus-overlay { - background-color: token-utils.slot(state-layer-color); - } + // Similar to components like the checkbox, slide-toggle and radio, we cannot show the focus + // overlay for `.cdk-program-focused` because mouse clicks on the
@if (view === 'full') { diff --git a/docs/src/app/shared/example-viewer/example-viewer.ts b/docs/src/app/shared/example-viewer/example-viewer.ts index ec9bd9452a3b..889a4ba7633a 100644 --- a/docs/src/app/shared/example-viewer/example-viewer.ts +++ b/docs/src/app/shared/example-viewer/example-viewer.ts @@ -14,7 +14,7 @@ import {type LiveExample, loadExample} from '@angular/components-examples'; import {CodeSnippet} from './code-snippet'; import {normalizePath} from '../normalize-path'; import {MatTab, MatTabGroup} from '@angular/material/tabs'; -import {StackBlitzButton} from '../stack-blitz/stack-blitz-button'; +import {StackblitzButton} from '../stackblitz/stackblitz-button'; import {MatIcon} from '@angular/material/icon'; import {MatTooltip} from '@angular/material/tooltip'; import {MatIconButton} from '@angular/material/button'; @@ -37,7 +37,7 @@ const preferredExampleFileOrder = ['HTML', 'TS', 'CSS']; MatIconButton, MatTooltip, MatIcon, - StackBlitzButton, + StackblitzButton, MatTabGroup, MatTab, CodeSnippet, diff --git a/docs/src/app/shared/stack-blitz/index.ts b/docs/src/app/shared/stackblitz/index.ts similarity index 84% rename from docs/src/app/shared/stack-blitz/index.ts rename to docs/src/app/shared/stackblitz/index.ts index 56ee489dde6f..62965c2543bc 100644 --- a/docs/src/app/shared/stack-blitz/index.ts +++ b/docs/src/app/shared/stackblitz/index.ts @@ -6,4 +6,4 @@ * found in the LICENSE file at https://angular.dev/license */ -export * from './stack-blitz-button'; +export * from './stackblitz-button'; diff --git a/docs/src/app/shared/stack-blitz/stack-blitz-button.html b/docs/src/app/shared/stackblitz/stackblitz-button.html similarity index 100% rename from docs/src/app/shared/stack-blitz/stack-blitz-button.html rename to docs/src/app/shared/stackblitz/stackblitz-button.html diff --git a/docs/src/app/shared/stack-blitz/stack-blitz-button.ts b/docs/src/app/shared/stackblitz/stackblitz-button.ts similarity index 92% rename from docs/src/app/shared/stack-blitz/stack-blitz-button.ts rename to docs/src/app/shared/stackblitz/stackblitz-button.ts index e9a29e4e4900..923d99920e68 100644 --- a/docs/src/app/shared/stack-blitz/stack-blitz-button.ts +++ b/docs/src/app/shared/stackblitz/stackblitz-button.ts @@ -11,15 +11,15 @@ import {ExampleData} from '@angular/components-examples'; import {MatIconButton} from '@angular/material/button'; import {MatIcon} from '@angular/material/icon'; import {MatTooltip} from '@angular/material/tooltip'; -import {StackBlitzWriter} from './stack-blitz-writer'; +import {StackBlitzWriter} from './stackblitz-writer'; import {MatSnackBar} from '@angular/material/snack-bar'; @Component({ - selector: 'stack-blitz-button', - templateUrl: './stack-blitz-button.html', + selector: 'stackblitz-button', + templateUrl: './stackblitz-button.html', imports: [MatIconButton, MatTooltip, MatIcon], }) -export class StackBlitzButton { +export class StackblitzButton { private _stackBlitzWriter = inject(StackBlitzWriter); private _ngZone = inject(NgZone); private _snackBar = inject(MatSnackBar); diff --git a/docs/src/app/shared/stack-blitz/stack-blitz-writer.spec.ts b/docs/src/app/shared/stackblitz/stackblitz-writer.spec.ts similarity index 92% rename from docs/src/app/shared/stack-blitz/stack-blitz-writer.spec.ts rename to docs/src/app/shared/stackblitz/stackblitz-writer.spec.ts index 0c2563b8410d..82ab6bb89225 100644 --- a/docs/src/app/shared/stack-blitz/stack-blitz-writer.spec.ts +++ b/docs/src/app/shared/stackblitz/stackblitz-writer.spec.ts @@ -1,21 +1,21 @@ import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing'; import {fakeAsync, flushMicrotasks, TestBed} from '@angular/core/testing'; import {EXAMPLE_COMPONENTS, ExampleData, LiveExample} from '@angular/components-examples'; -import {StackBlitzWriter, TEMPLATE_FILES} from './stack-blitz-writer'; +import {StackBlitzWriter, TEMPLATE_FILES} from './stackblitz-writer'; import stackblitz from '@stackblitz/sdk'; const testExampleId = 'my-test-example-id'; const testExampleBasePath = `/docs-content/examples-source/cdk/my-comp/${testExampleId}`; const FAKE_DOCS: {[key: string]: string} = { - '/assets/stack-blitz/src/index.html': '', - '/assets/stack-blitz/src/main.ts': `import {MaterialDocsExample} from './material-docs-example';`, + '/assets/stackblitz/src/index.html': '', + '/assets/stackblitz/src/main.ts': `import {MaterialDocsExample} from './material-docs-example';`, [`${testExampleBasePath}/test.ts`]: 'ExampleComponent', [`${testExampleBasePath}/test.html`]: ``, [`${testExampleBasePath}/src/detail.ts`]: 'DetailComponent', }; -const TEST_URLS = TEMPLATE_FILES.map(filePath => `/assets/stack-blitz/${filePath}`).concat([ +const TEST_URLS = TEMPLATE_FILES.map(filePath => `/assets/stackblitz/${filePath}`).concat([ `${testExampleBasePath}/test.ts`, `${testExampleBasePath}/test.html`, `${testExampleBasePath}/src/detail.ts`, diff --git a/docs/src/app/shared/stack-blitz/stack-blitz-writer.ts b/docs/src/app/shared/stackblitz/stackblitz-writer.ts similarity index 99% rename from docs/src/app/shared/stack-blitz/stack-blitz-writer.ts rename to docs/src/app/shared/stackblitz/stackblitz-writer.ts index 8390451cbe67..1dcd5c1c5bd5 100644 --- a/docs/src/app/shared/stack-blitz/stack-blitz-writer.ts +++ b/docs/src/app/shared/stackblitz/stackblitz-writer.ts @@ -28,7 +28,7 @@ const COPYRIGHT = `Copyright ${new Date().getFullYear()} Google LLC. All Rights */ const DOCS_CONTENT_PATH = '/docs-content/examples-source'; -const TEMPLATE_PATH = '/assets/stack-blitz/'; +const TEMPLATE_PATH = '/assets/stackblitz/'; /** * List of boilerplate files for an example StackBlitz. diff --git a/docs/src/assets/stack-blitz/.gitignore b/docs/src/assets/stackblitz/.gitignore similarity index 100% rename from docs/src/assets/stack-blitz/.gitignore rename to docs/src/assets/stackblitz/.gitignore diff --git a/docs/src/assets/stack-blitz/.stackblitzrc b/docs/src/assets/stackblitz/.stackblitzrc similarity index 100% rename from docs/src/assets/stack-blitz/.stackblitzrc rename to docs/src/assets/stackblitz/.stackblitzrc diff --git a/docs/src/assets/stack-blitz/angular.json b/docs/src/assets/stackblitz/angular.json similarity index 100% rename from docs/src/assets/stack-blitz/angular.json rename to docs/src/assets/stackblitz/angular.json diff --git a/docs/src/assets/stack-blitz/karma.conf.js b/docs/src/assets/stackblitz/karma.conf.js similarity index 100% rename from docs/src/assets/stack-blitz/karma.conf.js rename to docs/src/assets/stackblitz/karma.conf.js diff --git a/docs/src/assets/stack-blitz/package-lock.json b/docs/src/assets/stackblitz/package-lock.json similarity index 100% rename from docs/src/assets/stack-blitz/package-lock.json rename to docs/src/assets/stackblitz/package-lock.json diff --git a/docs/src/assets/stack-blitz/package.json b/docs/src/assets/stackblitz/package.json similarity index 100% rename from docs/src/assets/stack-blitz/package.json rename to docs/src/assets/stackblitz/package.json diff --git a/docs/src/assets/stack-blitz/src/index.html b/docs/src/assets/stackblitz/src/index.html similarity index 100% rename from docs/src/assets/stack-blitz/src/index.html rename to docs/src/assets/stackblitz/src/index.html diff --git a/docs/src/assets/stack-blitz/src/main.ts b/docs/src/assets/stackblitz/src/main.ts similarity index 100% rename from docs/src/assets/stack-blitz/src/main.ts rename to docs/src/assets/stackblitz/src/main.ts diff --git a/docs/src/assets/stack-blitz/src/styles.scss b/docs/src/assets/stackblitz/src/styles.scss similarity index 100% rename from docs/src/assets/stack-blitz/src/styles.scss rename to docs/src/assets/stackblitz/src/styles.scss diff --git a/docs/src/assets/stack-blitz/src/test.ts b/docs/src/assets/stackblitz/src/test.ts similarity index 100% rename from docs/src/assets/stack-blitz/src/test.ts rename to docs/src/assets/stackblitz/src/test.ts diff --git a/docs/src/assets/stack-blitz/tsconfig.app.json b/docs/src/assets/stackblitz/tsconfig.app.json similarity index 100% rename from docs/src/assets/stack-blitz/tsconfig.app.json rename to docs/src/assets/stackblitz/tsconfig.app.json diff --git a/docs/src/assets/stack-blitz/tsconfig.json b/docs/src/assets/stackblitz/tsconfig.json similarity index 100% rename from docs/src/assets/stack-blitz/tsconfig.json rename to docs/src/assets/stackblitz/tsconfig.json diff --git a/docs/src/assets/stack-blitz/tsconfig.spec.json b/docs/src/assets/stackblitz/tsconfig.spec.json similarity index 100% rename from docs/src/assets/stack-blitz/tsconfig.spec.json rename to docs/src/assets/stackblitz/tsconfig.spec.json From 13e661e5c65f7b42b234f63bc9cdf2f4389ce4ba Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 9 Jun 2025 17:12:04 +0200 Subject: [PATCH 107/145] fix(material/core): output tokens from theme under same selector (#31295) Fixes that the tokens generated by the `theme` mixins were being separated out into different selectors, rather than being combined. (cherry picked from commit 21df04e78743ac961bdb8d8e309417a80842238b) --- src/material/core/tokens/_m3-system.scss | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/material/core/tokens/_m3-system.scss b/src/material/core/tokens/_m3-system.scss index b1d09c9e4f53..ed6c040a5a7e 100644 --- a/src/material/core/tokens/_m3-system.scss +++ b/src/material/core/tokens/_m3-system.scss @@ -19,6 +19,7 @@ @use '../theming/config-validation'; @use '../theming/definition'; @use '../theming/palettes'; +@use '../style/sass-utils'; @use './m3'; @use 'sass:map'; @use 'sass:meta'; @@ -196,7 +197,7 @@ m3.md-sys-shape-values(), m3.md-sys-state-values()); - & { + @include sass-utils.current-selector-or-root { @each $name, $value in $overrides { @if (map.has-key($sys-names, $name)) { --#{$prefix}-#{$name}: #{map.get($overrides, $name)}; @@ -222,7 +223,7 @@ $sys-colors: map.set($sys-colors, neutral-variant20, map.get($palettes, neutral-variant, 20)); $sys-colors: map.set($sys-colors, neutral10, map.get($palettes, neutral, 10)); - & { + @include sass-utils.current-selector-or-root { @each $name, $value in $sys-colors { --#{$prefix}-#{$name}: #{map.get($overrides, $name) or $value}; } @@ -261,7 +262,7 @@ typography-system-variables-prefix) or definition.$system-level-prefix; } - & { + @include sass-utils.current-selector-or-root { @each $name, $value in m3.md-sys-typescale-values($font-definition) { --#{$prefix}-#{$name}: #{map.get($overrides, $name) or $value}; } @@ -272,17 +273,18 @@ $shadow-color: map.get( $theme, definition.$internals, palettes, neutral, 0); - @each $name, $value in m3.md-sys-elevation-values() { - $level: map.get($overrides, $name) or $value; - $value: elevation.get-box-shadow($level, $shadow-color); - & { + + @include sass-utils.current-selector-or-root { + @each $name, $value in m3.md-sys-elevation-values() { + $level: map.get($overrides, $name) or $value; + $value: elevation.get-box-shadow($level, $shadow-color); --#{$prefix}-#{$name}: #{$value}; } } } @mixin system-level-shape($theme: (), $overrides: (), $prefix: definition.$system-level-prefix) { - & { + @include sass-utils.current-selector-or-root { @each $name, $value in m3.md-sys-shape-values() { --#{$prefix}-#{$name}: #{map.get($overrides, $name) or $value}; } @@ -290,7 +292,7 @@ } @mixin system-level-state($theme: (), $overrides: (), $prefix: definition.$system-level-prefix) { - & { + @include sass-utils.current-selector-or-root { @each $name, $value in m3.md-sys-state-values() { --#{$prefix}-#{$name}: #{map.get($overrides, $name) or $value}; } From 3ed3c40e28f1354de664410876f8e9ec67933f4b Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Tue, 10 Jun 2025 14:52:06 +0200 Subject: [PATCH 108/145] docs(multiple): remove invalid tags from doc strings (#31317) We had `@link` doc strings in several doc strings, but we don't have any handling for `@link` in the pipeline which was causing it to log some warnings. These changes remove the invalid tags. (cherry picked from commit ede6331377b053edd3ecd53da5e4cce79bb3ba63) --- .../dispose-view-repeater-strategy.ts | 2 +- .../recycle-view-repeater-strategy.ts | 2 +- src/cdk/collections/view-repeater.ts | 11 +++++------ src/cdk/scrolling/virtual-scrollable.ts | 2 +- src/cdk/table/table.ts | 2 +- .../map-marker-clusterer-types.ts | 16 ++++++++-------- src/material/datepicker/datepicker-base.ts | 2 +- 7 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/cdk/collections/dispose-view-repeater-strategy.ts b/src/cdk/collections/dispose-view-repeater-strategy.ts index c2b10ecff26b..3404ee747942 100644 --- a/src/cdk/collections/dispose-view-repeater-strategy.ts +++ b/src/cdk/collections/dispose-view-repeater-strategy.ts @@ -23,7 +23,7 @@ import { /** * A repeater that destroys views when they are removed from a - * {@link ViewContainerRef}. When new items are inserted into the container, + * `ViewContainerRef`. When new items are inserted into the container, * the repeater will always construct a new embedded view for each item. * * @template T The type for the embedded view's $implicit property. diff --git a/src/cdk/collections/recycle-view-repeater-strategy.ts b/src/cdk/collections/recycle-view-repeater-strategy.ts index 2e91cad9fa7d..735e32aec9de 100644 --- a/src/cdk/collections/recycle-view-repeater-strategy.ts +++ b/src/cdk/collections/recycle-view-repeater-strategy.ts @@ -24,7 +24,7 @@ import { /** * A repeater that caches views when they are removed from a - * {@link ViewContainerRef}. When new items are inserted into the container, + * `ViewContainerRef`. When new items are inserted into the container, * the repeater will reuse one of the cached views instead of creating a new * embedded view. Recycling cached views reduces the quantity of expensive DOM * inserts. diff --git a/src/cdk/collections/view-repeater.ts b/src/cdk/collections/view-repeater.ts index eeaf232cd766..1a0a2970a7b2 100644 --- a/src/cdk/collections/view-repeater.ts +++ b/src/cdk/collections/view-repeater.ts @@ -50,14 +50,14 @@ export type _ViewRepeaterItemContextFactory _ViewRepeaterItemInsertArgs; /** - * Extracts the value of an item from an {@link IterableChangeRecord}. + * Extracts the value of an item from an `IterableChangeRecord`. * * @template T The type for the embedded view's $implicit property. * @template R The type for the item in each IterableDiffer change record. */ export type _ViewRepeaterItemValueResolver = (record: IterableChangeRecord) => T; -/** Indicates how a view was changed by a {@link _ViewRepeater}. */ +/** Indicates how a view was changed by a `_ViewRepeater`. */ export enum _ViewRepeaterOperation { /** The content of an existing view was replaced with another item. */ REPLACED, @@ -70,8 +70,7 @@ export enum _ViewRepeaterOperation { } /** - * Meta data describing the state of a view after it was updated by a - * {@link _ViewRepeater}. + * Meta data describing the state of a view after it was updated by a `_ViewRepeater`. * * @template R The type for the item in each IterableDiffer change record. * @template C The type for the context passed to each embedded view. @@ -94,7 +93,7 @@ export interface _ViewRepeaterItemChange { export type _ViewRepeaterItemChanged = (change: _ViewRepeaterItemChange) => void; /** - * Describes a strategy for rendering items in a {@link ViewContainerRef}. + * Describes a strategy for rendering items in a `ViewContainerRef`. * * @template T The type for the embedded view's $implicit property. * @template R The type for the item in each IterableDiffer change record. @@ -113,7 +112,7 @@ export interface _ViewRepeater> { } /** - * Injection token for {@link _ViewRepeater}. This token is for use by Angular Material only. + * Injection token for `_ViewRepeater`. This token is for use by Angular Material only. * @docs-private */ export const _VIEW_REPEATER_STRATEGY = new InjectionToken< diff --git a/src/cdk/scrolling/virtual-scrollable.ts b/src/cdk/scrolling/virtual-scrollable.ts index 52f2ae36b16f..78c3ceead357 100644 --- a/src/cdk/scrolling/virtual-scrollable.ts +++ b/src/cdk/scrolling/virtual-scrollable.ts @@ -12,7 +12,7 @@ import {CdkScrollable} from './scrollable'; export const VIRTUAL_SCROLLABLE = new InjectionToken('VIRTUAL_SCROLLABLE'); /** - * Extending the {@link CdkScrollable} to be used as scrolling container for virtual scrolling. + * Extending the `CdkScrollable` to be used as scrolling container for virtual scrolling. */ @Directive() export abstract class CdkVirtualScrollable extends CdkScrollable { diff --git a/src/cdk/table/table.ts b/src/cdk/table/table.ts index 6debac739af8..a8ffcfabcbeb 100644 --- a/src/cdk/table/table.ts +++ b/src/cdk/table/table.ts @@ -389,7 +389,7 @@ export class CdkTable /** * Whether the sticky styler should recalculate cell widths when applying sticky styles. If * `false`, cached values will be used instead. This is only applicable to tables with - * {@link fixedLayout} enabled. For other tables, cell widths will always be recalculated. + * `_fixedLayout` enabled. For other tables, cell widths will always be recalculated. */ private _forceRecalculateCellWidths = true; diff --git a/src/google-maps/map-marker-clusterer/map-marker-clusterer-types.ts b/src/google-maps/map-marker-clusterer/map-marker-clusterer-types.ts index c0dae7a90648..0401167bb7be 100644 --- a/src/google-maps/map-marker-clusterer/map-marker-clusterer-types.ts +++ b/src/google-maps/map-marker-clusterer/map-marker-clusterer-types.ts @@ -68,16 +68,16 @@ export type onClusterClickHandler = ( export interface MarkerClustererOptions { markers?: Marker[]; /** - * An algorithm to cluster markers. Default is {@link SuperClusterAlgorithm}. Must - * provide a `calculate` method accepting {@link AlgorithmInput} and returning - * an array of {@link Cluster}. + * An algorithm to cluster markers. Default is `SuperClusterAlgorithm`. Must + * provide a `calculate` method accepting `AlgorithmInput` and returning + * an array of `Cluster`. */ algorithm?: Algorithm; algorithmOptions?: AlgorithmOptions; map?: google.maps.Map | null; /** - * An object that converts a {@link Cluster} into a `google.maps.Marker`. - * Default is {@link DefaultRenderer}. + * An object that converts a `Cluster` into a `google.maps.Marker`. + * Default is `DefaultRenderer`. */ renderer?: Renderer; onClusterClick?: onClusterClickHandler; @@ -93,7 +93,7 @@ export declare const defaultOnClusterClickHandler: onClusterClickHandler; export interface Renderer { /** - * Turn a {@link Cluster} into a `Marker`. + * Turn a `Cluster` into a `Marker`. * * Below is a simple example to create a marker with the number of markers in the cluster as a label. * @@ -125,7 +125,7 @@ export interface ClusterStats { export interface Algorithm { /** - * Calculates an array of {@link Cluster}. + * Calculates an array of `Cluster`. */ calculate: ({markers, map}: AlgorithmInput) => AlgorithmOutput; } @@ -156,7 +156,7 @@ export interface AlgorithmInput { export interface AlgorithmOutput { /** - * The clusters returned based upon the {@link AlgorithmInput}. + * The clusters returned based upon the `AlgorithmInput`. */ clusters: Cluster[]; /** diff --git a/src/material/datepicker/datepicker-base.ts b/src/material/datepicker/datepicker-base.ts index 52b846ad984e..35075750eaa9 100644 --- a/src/material/datepicker/datepicker-base.ts +++ b/src/material/datepicker/datepicker-base.ts @@ -352,7 +352,7 @@ export interface MatDatepickerControl { stateChanges: Observable; } -/** A datepicker that can be attached to a {@link MatDatepickerControl}. */ +/** A datepicker that can be attached to a `MatDatepickerControl`. */ export interface MatDatepickerPanel< C extends MatDatepickerControl, S, From af811091cdf23fd713a0ace6c02143cce746edfa Mon Sep 17 00:00:00 2001 From: Wagner Maciel Date: Tue, 10 Jun 2025 16:56:34 +0000 Subject: [PATCH 109/145] =?UTF-8?q?fix(material/slider):=20ensure=20disabl?= =?UTF-8?q?ed=20slider=20thumb=20input=20has=20'auto'=20c=E2=80=A6=20(#313?= =?UTF-8?q?11)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(material/slider): ensure disabled slider thumb input has 'auto' cursor Fixes #31306 * fix(material/slider): ensure disabled slider thumb input has 'auto' cursor Fixes #31306 --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> (cherry picked from commit 9ce023d9771b07229df59c6aa360ae0462980b60) --- src/material/slider/slider.scss | 4 ++++ src/material/slider/slider.spec.ts | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/material/slider/slider.scss b/src/material/slider/slider.scss index 288fa537bdde..6f2888d041e6 100644 --- a/src/material/slider/slider.scss +++ b/src/material/slider/slider.scss @@ -313,6 +313,10 @@ $fallbacks: m3-slider.get-tokens(); &.mdc-slider--disabled { cursor: auto; opacity: 0.38; + + .mdc-slider__input { + cursor: auto; + } } .mdc-slider__thumb, diff --git a/src/material/slider/slider.spec.ts b/src/material/slider/slider.spec.ts index 48b45d9f0362..9583826e1ecf 100644 --- a/src/material/slider/slider.spec.ts +++ b/src/material/slider/slider.spec.ts @@ -563,6 +563,22 @@ describe('MatSlider', () => { it('should set the disabled attribute on the input element', () => { expect(input._hostElement.disabled).toBeTrue(); }); + + it('should have "auto" cursor on thumb input when slider is disabled', () => { + // The beforeEach already creates a DisabledSlider component fixture and detects changes. + // We can directly access `input` (MatSliderThumb) and its `_hostElement`. + // The slider is disabled by default in this setup. + // fixture.detectChanges() might be needed if there were any dynamic changes + // but here we are checking the initial state of a disabled slider. + // However, calling it ensures the component is stable and styles are applied. + const fixture = TestBed.createComponent(DisabledSlider); + fixture.detectChanges(); + const sliderDebugElement = fixture.debugElement.query(By.directive(MatSlider)); + const slider = sliderDebugElement.componentInstance; + const inputThumb = slider._getInput(_MatThumb.END) as MatSliderThumb; + const thumbInputElement = inputThumb._hostElement; + expect(getComputedStyle(thumbInputElement).cursor).toBe('auto'); + }); }); describe('disabled range slider', () => { From 567ddbe84c3821c41bc3334a7317c70d885bc114 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Wed, 11 Jun 2025 13:03:13 +0200 Subject: [PATCH 110/145] fix(material/radio): color tokens excluded when passing in variant (#31321) Fixes that when passing in a variant into the radio button's `get-tokens` function, we were removing the color tokens altogether, because passing in multiple arguments into `map.remove` removes all those keys, rather than removing a nested value. Fixes #31319. (cherry picked from commit 3f7d2778fb0cae09a49802102ad6c994984ddb93) --- src/material/radio/_m3-radio.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/material/radio/_m3-radio.scss b/src/material/radio/_m3-radio.scss index 814ada004e1a..fa317bb3ed5c 100644 --- a/src/material/radio/_m3-radio.scss +++ b/src/material/radio/_m3-radio.scss @@ -47,7 +47,7 @@ // Temporary removal where color variants previously did not include the // unselected icon color. Remove this and approve internal screenshot changes. @if $color-variant { - $tokens: map.remove($tokens, color, radio-unselected-icon-color); + $tokens: map.deep-remove($tokens, color, radio-unselected-icon-color); } @return $tokens; From c090922e055e031be48c525bcac2d15225ba7c9e Mon Sep 17 00:00:00 2001 From: Andrew Seguin Date: Wed, 11 Jun 2025 05:41:25 -0600 Subject: [PATCH 111/145] build: update typescript sha (#31329) (cherry picked from commit d3f996778e6ca5f2d3fe217173b928dcf097d15c) --- WORKSPACE | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index b352309c7bf1..d05c4e4c578f 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -158,8 +158,8 @@ http_archive( load("@aspect_rules_ts//ts:repositories.bzl", "rules_ts_dependencies") rules_ts_dependencies( - # Obtained by: curl --silent https://registry.npmjs.org/typescript/5.8.2 | jq -r '.dist.integrity' - ts_integrity = "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + # Obtained by: curl --silent https://registry.npmjs.org/typescript/5.8.3 | jq -r '.dist.integrity' + ts_integrity = "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", ts_version_from = "//:package.json", ) From 7cf8498500d0f04e919450ec86bb90f2680c26e0 Mon Sep 17 00:00:00 2001 From: Andrew Seguin Date: Wed, 11 Jun 2025 05:43:46 -0600 Subject: [PATCH 112/145] release: cut the v20.0.3 release --- CHANGELOG.md | 11 +++++++++++ package.json | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ee0d9485a77..96362a9db8f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ + +# 20.0.3 "plastic-tube" (2025-06-11) +### material +| Commit | Type | Description | +| -- | -- | -- | +| [13e661e5c6](https://github.com/angular/components/commit/13e661e5c65f7b42b234f63bc9cdf2f4389ce4ba) | fix | **core:** output tokens from theme under same selector ([#31295](https://github.com/angular/components/pull/31295)) | +| [567ddbe84c](https://github.com/angular/components/commit/567ddbe84c3821c41bc3334a7317c70d885bc114) | fix | **radio:** color tokens excluded when passing in variant ([#31321](https://github.com/angular/components/pull/31321)) | +| [af811091cd](https://github.com/angular/components/commit/af811091cdf23fd713a0ace6c02143cce746edfa) | fix | **slider:** ensure disabled slider thumb input has 'auto' c… ([#31311](https://github.com/angular/components/pull/31311)) | + + + # 20.0.2 "amesite-armoire" (2025-06-04) ### material diff --git a/package.json b/package.json index b351b20d06b4..ea1347308971 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "ci-notify-slack-failure": "node --no-warnings=ExperimentalWarning --loader ts-node/esm/transpile-only scripts/circleci/notify-slack-job-failure.mts", "prepare": "husky" }, - "version": "20.0.2", + "version": "20.0.3", "dependencies": { "@angular-devkit/core": "catalog:", "@angular-devkit/schematics": "catalog:", From 70cd0e4f4e19ed23ccd992133ca600a866b209a6 Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Wed, 11 Jun 2025 11:03:08 -0600 Subject: [PATCH 113/145] ci: use new pull-request-labeling action (#31307) Use the pull-request-labeling action which replaced the commit-message-based-labeling action. (cherry picked from commit 1a6233dcbcd9f959c2c30a855cc8c4f84dc283cd) --- .github/workflows/dev-infra.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index 67a96048c219..97adad48a3ff 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/commit-message-based-labels@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + - uses: angular/dev-infra/github-actions/pull-request-labeling@3a765b303ce300f607b658abd4eb8a981bc7277f with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: From 675d1cda66c46ed3cf40343b165e53af421f903f Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Wed, 11 Jun 2025 11:21:07 -0600 Subject: [PATCH 114/145] ci: update to latest version of dev-infra actions (#31323) Update to the latest sha of the dev-infra actions (cherry picked from commit 6ce7de6c6a3fe0ffd25b01fbc5b2a65a46efaa61) --- .../assistant-to-the-branch-manager.yml | 2 +- .github/workflows/ci.material-aio.yml | 18 +++---- .github/workflows/ci.yml | 50 +++++++++---------- .../workflows/deploy-dev-app-main-push.yml | 6 +-- .github/workflows/dev-infra.yml | 4 +- .github/workflows/docs-preview-build.yml | 8 +-- .github/workflows/docs-preview-deploy.yml | 2 +- .github/workflows/google-internal-tests.yml | 2 +- .github/workflows/pr.material-aio.yml | 18 +++---- .github/workflows/pr.yml | 46 ++++++++--------- .github/workflows/preview-build-dev-app.yml | 8 +-- .github/workflows/preview-deploy-dev-app.yml | 2 +- .github/workflows/scheduled-ci.yml | 14 +++--- 13 files changed, 90 insertions(+), 90 deletions(-) diff --git a/.github/workflows/assistant-to-the-branch-manager.yml b/.github/workflows/assistant-to-the-branch-manager.yml index c379a7c22789..b4cea7c321e4 100644 --- a/.github/workflows/assistant-to-the-branch-manager.yml +++ b/.github/workflows/assistant-to-the-branch-manager.yml @@ -16,6 +16,6 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false - - uses: angular/dev-infra/github-actions/branch-manager@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + - uses: angular/dev-infra/github-actions/branch-manager@1f047e7dbae43ea969c2cafb53b33207e86b800f with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/ci.material-aio.yml b/.github/workflows/ci.material-aio.yml index 555d639c71b7..1acbf36e75ea 100644 --- a/.github/workflows/ci.material-aio.yml +++ b/.github/workflows/ci.material-aio.yml @@ -21,11 +21,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Install node modules run: pnpm install --frozen-lockfile - name: Execute Build @@ -35,11 +35,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Install node modules run: pnpm install --frozen-lockfile - name: Execute Tests @@ -56,11 +56,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Install node modules run: pnpm install --frozen-lockfile - name: Execute Lighthouse Audit diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 33fe180471c8..94e2c4185062 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f with: cache-node-modules: true - name: Install node modules @@ -54,13 +54,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -77,13 +77,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -100,13 +100,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -124,13 +124,13 @@ jobs: runs-on: ubuntu-latest-16core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -147,13 +147,13 @@ jobs: runs-on: ubuntu-latest-16core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Install node modules @@ -170,13 +170,13 @@ jobs: runs-on: ubuntu-latest-4core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Install node modules run: pnpm install --frozen-lockfile - name: Build and Verify Release Output @@ -201,7 +201,7 @@ jobs: runs-on: ubuntu-latest-4core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f with: cache-node-modules: true # See: https://github.com/puppeteer/puppeteer/pull/13196 and @@ -209,9 +209,9 @@ jobs: - name: Disable AppArmor run: echo 0 | sudo tee /proc/sys/kernel/apparmor_restrict_unprivileged_userns - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Install node modules run: pnpm install --frozen-lockfile - name: Build and Verify Release Output @@ -239,14 +239,14 @@ jobs: CI_RUNNER_NUMBER: ${{ github.run_id }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f with: cache-node-modules: true - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Browserstack Variables - uses: angular/dev-infra/github-actions/browserstack@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/browserstack@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Run tests on Browserstack run: ./scripts/circleci/run-browserstack-tests.sh diff --git a/.github/workflows/deploy-dev-app-main-push.yml b/.github/workflows/deploy-dev-app-main-push.yml index dac28157f38a..fccd8ceeeb19 100644 --- a/.github/workflows/deploy-dev-app-main-push.yml +++ b/.github/workflows/deploy-dev-app-main-push.yml @@ -17,13 +17,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Install node modules run: pnpm install --frozen-lockfile diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index 97adad48a3ff..62b0bcbeef5c 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -12,13 +12,13 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/pull-request-labeling@3a765b303ce300f607b658abd4eb8a981bc7277f + - uses: angular/dev-infra/github-actions/pull-request-labeling@1f047e7dbae43ea969c2cafb53b33207e86b800f with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} post_approval_changes: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/post-approval-changes@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + - uses: angular/dev-infra/github-actions/post-approval-changes@1f047e7dbae43ea969c2cafb53b33207e86b800f with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/docs-preview-build.yml b/.github/workflows/docs-preview-build.yml index ff3ec186118f..9ec1e164a1fb 100644 --- a/.github/workflows/docs-preview-build.yml +++ b/.github/workflows/docs-preview-build.yml @@ -21,16 +21,16 @@ jobs: (github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'docs: preview')) steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Install node modules run: pnpm install --frozen-lockfile - name: Build docs site run: pnpm bazel build //docs:build.production - - uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + - uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@1f047e7dbae43ea969c2cafb53b33207e86b800f with: workflow-artifact-name: 'docs-preview' pull-number: '${{github.event.pull_request.number}}' diff --git a/.github/workflows/docs-preview-deploy.yml b/.github/workflows/docs-preview-deploy.yml index 34886afcc013..d601b1f7771e 100644 --- a/.github/workflows/docs-preview-deploy.yml +++ b/.github/workflows/docs-preview-deploy.yml @@ -40,7 +40,7 @@ jobs: npx -y firebase-tools@latest target:clear --config docs/firebase.json --project ${{env.PREVIEW_PROJECT}} hosting mat-aio npx -y firebase-tools@latest target:apply --config docs/firebase.json --project ${{env.PREVIEW_PROJECT}} hosting mat-aio ${{env.PREVIEW_SITE}} - - uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + - uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@1f047e7dbae43ea969c2cafb53b33207e86b800f with: github-token: '${{secrets.GITHUB_TOKEN}}' workflow-artifact-name: 'docs-preview' diff --git a/.github/workflows/google-internal-tests.yml b/.github/workflows/google-internal-tests.yml index 800864995de0..17db4c23eb79 100644 --- a/.github/workflows/google-internal-tests.yml +++ b/.github/workflows/google-internal-tests.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: angular/dev-infra/github-actions/google-internal-tests@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + - uses: angular/dev-infra/github-actions/google-internal-tests@1f047e7dbae43ea969c2cafb53b33207e86b800f with: run-tests-guide-url: http://go/angular-material-presubmit github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/pr.material-aio.yml b/.github/workflows/pr.material-aio.yml index f28891c34ef1..219a846768fd 100644 --- a/.github/workflows/pr.material-aio.yml +++ b/.github/workflows/pr.material-aio.yml @@ -19,11 +19,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Install node modules run: pnpm install --frozen-lockfile - name: Execute Build @@ -33,11 +33,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Install node modules run: pnpm install --frozen-lockfile - name: Execute Tests @@ -54,11 +54,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Install node modules run: pnpm install --frozen-lockfile - name: Execute Lighthouse Audit diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 1a7515be7015..aeeea0602c5d 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f with: cache-node-modules: true - name: Install node modules @@ -45,7 +45,7 @@ jobs: - name: Check code format run: pnpm ng-dev format changed --check ${{ github.event.pull_request.base.sha }} - name: Check Package Licenses - uses: angular/dev-infra/github-actions/linting/licenses@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/linting/licenses@1f047e7dbae43ea969c2cafb53b33207e86b800f # Commit message check is last intentionally, because the caretaker can fix it # during merge, while other lint failures have to be resolved by the PR author. - name: Check commit message @@ -55,13 +55,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Install node modules run: pnpm install --frozen-lockfile - name: Check API Goldens @@ -71,13 +71,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Install node modules run: pnpm install --frozen-lockfile - name: Run e2e tests @@ -87,13 +87,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Install node modules run: pnpm install --frozen-lockfile - name: Run integration tests @@ -103,13 +103,13 @@ jobs: runs-on: ubuntu-latest-16core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Install node modules run: pnpm install --frozen-lockfile - name: Run tests @@ -119,13 +119,13 @@ jobs: runs-on: ubuntu-latest-16core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Install node modules run: pnpm install --frozen-lockfile - name: Run tests @@ -135,13 +135,13 @@ jobs: runs-on: ubuntu-latest-4core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Install node modules run: pnpm install --frozen-lockfile - name: Build and Verify Release Output @@ -164,7 +164,7 @@ jobs: CI_RUNNER_NUMBER: ${{ github.run_id }} steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f with: cache-node-modules: true # Checking out the pull request commit is intended here as we need to run the changed code tests. @@ -172,8 +172,8 @@ jobs: - name: Install node modules run: pnpm install --frozen-lockfile - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Browserstack Variables - uses: angular/dev-infra/github-actions/browserstack@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/browserstack@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Run tests on Browserstack run: ./scripts/circleci/run-browserstack-tests.sh diff --git a/.github/workflows/preview-build-dev-app.yml b/.github/workflows/preview-build-dev-app.yml index e8372b6c3d18..eb23e0ade5f5 100644 --- a/.github/workflows/preview-build-dev-app.yml +++ b/.github/workflows/preview-build-dev-app.yml @@ -23,18 +23,18 @@ jobs: (github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'dev-app preview')) steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f # Build the web package - run: bazel build //src/dev-app:web_package --symlink_prefix=dist/ - - uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + - uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@1f047e7dbae43ea969c2cafb53b33207e86b800f with: workflow-artifact-name: 'dev-app' pull-number: '${{github.event.pull_request.number}}' diff --git a/.github/workflows/preview-deploy-dev-app.yml b/.github/workflows/preview-deploy-dev-app.yml index a6ef9cde5ba6..e973e8018446 100644 --- a/.github/workflows/preview-deploy-dev-app.yml +++ b/.github/workflows/preview-deploy-dev-app.yml @@ -33,7 +33,7 @@ jobs: npx -y firebase-tools@latest target:clear --project ${{env.PREVIEW_PROJECT}} hosting dev-app npx -y firebase-tools@latest target:apply --project ${{env.PREVIEW_PROJECT}} hosting dev-app ${{env.PREVIEW_SITE}} - - uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + - uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@1f047e7dbae43ea969c2cafb53b33207e86b800f with: github-token: '${{secrets.GITHUB_TOKEN}}' workflow-artifact-name: 'dev-app' diff --git a/.github/workflows/scheduled-ci.yml b/.github/workflows/scheduled-ci.yml index 1fbc9dd33b8a..fcb122448e6f 100644 --- a/.github/workflows/scheduled-ci.yml +++ b/.github/workflows/scheduled-ci.yml @@ -19,13 +19,13 @@ jobs: runs-on: ubuntu-latest-4core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Setting up Angular snapshot builds @@ -46,13 +46,13 @@ jobs: runs-on: ubuntu-latest-4core steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f with: cache-node-modules: true - name: Setup Bazel - uses: angular/dev-infra/github-actions/bazel/setup@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/setup@1f047e7dbae43ea969c2cafb53b33207e86b800f - name: Setup Bazel RBE - uses: angular/dev-infra/github-actions/bazel/configure-remote@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/bazel/configure-remote@1f047e7dbae43ea969c2cafb53b33207e86b800f with: google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }} - name: Setting up Angular snapshot builds @@ -75,7 +75,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Initialize environment - uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@fd57e38fdd95d2d145adb87a1ff0cbbc231316bc + uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@1f047e7dbae43ea969c2cafb53b33207e86b800f with: cache-node-modules: true # See: https://github.com/puppeteer/puppeteer/pull/13196 and From 88bc13d88639aff36eacd33cd3d958c1993e6f57 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Thu, 12 Jun 2025 13:29:05 +0200 Subject: [PATCH 115/145] fix(material/button): harness not picking up buttons with dynamic appearance (#31327) Fixes that the button harness wasn't finding buttons with a dynamic appearance, because then Angular won't set an attribute to the DOM. These changes switch to using a class selector instead. (cherry picked from commit 5f4fa621894c7eff6a4d78b6ed9ea2c9ce0f7920) --- .../button/testing/button-harness.spec.ts | 35 ++++++++++++------- src/material/button/testing/button-harness.ts | 12 ++++--- 2 files changed, 31 insertions(+), 16 deletions(-) diff --git a/src/material/button/testing/button-harness.spec.ts b/src/material/button/testing/button-harness.spec.ts index 7f3ccda51ef8..496add10ba91 100644 --- a/src/material/button/testing/button-harness.spec.ts +++ b/src/material/button/testing/button-harness.spec.ts @@ -1,4 +1,4 @@ -import {Component} from '@angular/core'; +import {Component, signal} from '@angular/core'; import {ComponentFixture, TestBed} from '@angular/core/testing'; import {Platform} from '@angular/cdk/platform'; import {HarnessLoader, parallel} from '@angular/cdk/testing'; @@ -7,22 +7,21 @@ import {MatButtonModule} from '../module'; import {MatIconModule} from '../../icon'; import {MatIconHarness} from '../../icon/testing'; import {MatButtonHarness} from './button-harness'; +import {MatButtonAppearance} from '../button-base'; describe('MatButtonHarness', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - let platform: Platform; beforeEach(() => { fixture = TestBed.createComponent(ButtonHarnessTest); fixture.detectChanges(); loader = TestbedHarnessEnvironment.loader(fixture); - platform = TestBed.inject(Platform); }); it('should load all button harnesses', async () => { const buttons = await loader.getAllHarnesses(MatButtonHarness); - expect(buttons.length).toBe(16); + expect(buttons.length).toBe(17); }); it('should load button with exact text', async () => { @@ -41,7 +40,7 @@ describe('MatButtonHarness', () => { it('should filter by whether a button is disabled', async () => { const enabledButtons = await loader.getAllHarnesses(MatButtonHarness.with({disabled: false})); const disabledButtons = await loader.getAllHarnesses(MatButtonHarness.with({disabled: true})); - expect(enabledButtons.length).toBe(14); + expect(enabledButtons.length).toBe(15); expect(disabledButtons.length).toBe(2); }); @@ -79,7 +78,7 @@ describe('MatButtonHarness', () => { const button = await loader.getHarness(MatButtonHarness.with({text: 'Basic button'})); await button.click(); - expect(fixture.componentInstance.clicked).toBe(true); + expect(fixture.componentInstance.clicked()).toBe(true); }); it('should not click a disabled button', async () => { @@ -88,14 +87,14 @@ describe('MatButtonHarness', () => { // cancel dispatched click events on disabled buttons. We skip this check on Edge and Firefox. // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1582570 and: // https://stackoverflow.com/questions/32377026/disabled-button-is-clickable-on-edge-browser - if (platform.FIREFOX) { + if (TestBed.inject(Platform).FIREFOX) { return; } const button = await loader.getHarness(MatButtonHarness.with({text: 'Filled button'})); await button.click(); - expect(fixture.componentInstance.clicked).toBe(false); + expect(fixture.componentInstance.clicked()).toBe(false); }); it('should be able to handle nested harnesses', async () => { @@ -127,6 +126,7 @@ describe('MatButtonHarness', () => { 'basic', 'basic', 'basic', + 'basic', 'icon', 'fab', 'mini-fab', @@ -151,6 +151,7 @@ describe('MatButtonHarness', () => { 'filled', 'elevated', 'outlined', + 'tonal', null, null, null, @@ -166,16 +167,25 @@ describe('MatButtonHarness', () => { const button = await loader.getHarness(MatButtonHarness.with({appearance: 'filled'})); expect(await button.getText()).toBe('Filled button'); }); + + it('should get the appearance of a button with a dynamic appearance', async () => { + const button = await loader.getHarness( + MatButtonHarness.with({selector: '#dynamic-appearance'}), + ); + expect(await button.getAppearance()).toBe('tonal'); + fixture.componentInstance.dynamicAppearance.set('filled'); + expect(await button.getAppearance()).toBe('filled'); + }); }); @Component({ // Include one of each type of button selector to ensure that they're all captured by // the harness's selector. template: ` - - @@ -194,6 +204,7 @@ describe('MatButtonHarness', () => { Filled anchor Elevated anchor Stroked anchor + Stroked anchor Icon anchor Fab anchor Mini Fab anchor @@ -201,6 +212,6 @@ describe('MatButtonHarness', () => { imports: [MatButtonModule, MatIconModule], }) class ButtonHarnessTest { - disabled = true; - clicked = false; + clicked = signal(false); + dynamicAppearance = signal('tonal'); } diff --git a/src/material/button/testing/button-harness.ts b/src/material/button/testing/button-harness.ts index e99545d493bb..65bc7fc0040f 100644 --- a/src/material/button/testing/button-harness.ts +++ b/src/material/button/testing/button-harness.ts @@ -16,10 +16,14 @@ import {ButtonAppearance, ButtonHarnessFilters, ButtonVariant} from './button-ha /** Harness for interacting with a mat-button in tests. */ export class MatButtonHarness extends ContentContainerComponentHarness { - // TODO(jelbourn) use a single class, like `.mat-button-base` - static hostSelector = `[matButton], [mat-button], [matIconButton], [matFab], [matMiniFab], - [mat-raised-button], [mat-flat-button], [mat-icon-button], [mat-stroked-button], [mat-fab], - [mat-mini-fab]`; + // Note: `.mat-mdc-button-base` should be enough for all buttons, however some apps are using + // the harness without actually having an applied button. Keep the attributes for backwards + // compatibility. + + /** Selector for the harness. */ + static hostSelector = `.mat-mdc-button-base, [matButton], [mat-button], [matIconButton], + [matFab], [matMiniFab], [mat-raised-button], [mat-flat-button], [mat-icon-button], + [mat-stroked-button], [mat-fab], [mat-mini-fab]`; /** * Gets a `HarnessPredicate` that can be used to search for a button with specific attributes. From c1b9682e49699fe02693a68def16e5c26302d547 Mon Sep 17 00:00:00 2001 From: Andrew Seguin Date: Thu, 12 Jun 2025 16:09:59 -0600 Subject: [PATCH 116/145] fix(material/button): update button golden (#31346) Co-authored-by: Andrew Seguin (cherry picked from commit 3bde4f78f49048b3231a89bacdeda232ce1fec76) --- goldens/material/button/testing/index.api.md | 1 - 1 file changed, 1 deletion(-) diff --git a/goldens/material/button/testing/index.api.md b/goldens/material/button/testing/index.api.md index 2012bd1879e0..582029883cd2 100644 --- a/goldens/material/button/testing/index.api.md +++ b/goldens/material/button/testing/index.api.md @@ -33,7 +33,6 @@ export class MatButtonHarness extends ContentContainerComponentHarness { getAppearance(): Promise; getText(): Promise; getVariant(): Promise; - // (undocumented) static hostSelector: string; isDisabled(): Promise; isFocused(): Promise; From 023866732e7e8d6f9d126a68d0b79e642b375e6f Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Sat, 14 Jun 2025 13:53:51 +0200 Subject: [PATCH 117/145] build: prevent markdown styling from bleeding into examples (#31358) Currently we style the content in the docs by setting a `docs-markdown` class around it which then targets element tags that can be produced by the markdown renderer like `p` and `h1`. The problem with this is that some components use these elements for their own styling, e.g. the main `mat-card` example looks off because its `p` tag styling is overridden by `docs-markdown`. These changes update the docs generation script to exclude the component styles from the markdown styles. (cherry picked from commit c771a01fec96e94ea85f5f63b3d0d96e93f958b2) --- .../markdown-to-html/docs-marked-renderer.ts | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/tools/markdown-to-html/docs-marked-renderer.ts b/tools/markdown-to-html/docs-marked-renderer.ts index 1ffe0ef69a84..8893af3e4784 100644 --- a/tools/markdown-to-html/docs-marked-renderer.ts +++ b/tools/markdown-to-html/docs-marked-renderer.ts @@ -4,6 +4,12 @@ import {basename, extname} from 'path'; /** Regular expression that matches example comments. */ const exampleCommentRegex = //g; +/** Marker inserted before the start of an example. */ +const exampleStartMarker = ''; + +/** Marker inserted after the end of an example. */ +const exampleEndMarker = ''; + /** * Custom renderer for marked that will be used to transform markdown files to HTML * files that can be used in the Angular Material docs. @@ -78,6 +84,8 @@ export class DocsMarkdownRenderer extends Renderer { */ html(html: string) { html = html.replace(exampleCommentRegex, (_match: string, content: string) => { + let replacement: string; + // using [\s\S]* because .* does not match line breaks if (content.match(/\{[\s\S]*\}/g)) { const {example, file, region} = JSON.parse(content.trim()) as { @@ -85,12 +93,14 @@ export class DocsMarkdownRenderer extends Renderer { file: string; region: string; }; - return `
`; } else { - return `
`; + replacement = `
`; } + + return `${exampleStartMarker}${replacement}${exampleEndMarker}`; }); return super.html(html); @@ -120,6 +130,16 @@ export class DocsMarkdownRenderer extends Renderer { this._slugger.seen = {}; this._referencedFragments.clear(); - return `
${output}
`; + const markdownOpen = '
'; + + // The markdown styling can interfere with the example's styles, because we don't use + // encapsulation. We work around it by replacing the opening marker, left by the previous + // step, with a closing tag, and replacing the closing marker with an opening tag. + // The result is that we exclude the example code from the markdown styling. + output = output + .replace(new RegExp(exampleStartMarker, 'g'), '
') + .replace(new RegExp(exampleEndMarker, 'g'), markdownOpen); + + return `${markdownOpen}${output}`; } } From 03af078f8cef3c4a68d2f3e9443422c18ccce9d9 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 23 Jun 2025 16:13:40 +0200 Subject: [PATCH 118/145] build: some overrides not showing up in docs site (#31397) The `tokens` rule for the button didn't have a dependency on the FAB and icon button themes which meant that they weren't showing up in the docs. Fixes #31395. (cherry picked from commit 15e9a57a10d1d5bd2295bb62026b4621999c9e20) --- src/material/button/BUILD.bazel | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/material/button/BUILD.bazel b/src/material/button/BUILD.bazel index 036bf223f458..4487e6d3257f 100644 --- a/src/material/button/BUILD.bazel +++ b/src/material/button/BUILD.bazel @@ -194,7 +194,11 @@ markdown_to_html( extract_tokens( name = "tokens", - srcs = [":theme"], + srcs = [ + ":fab_theme", + ":icon_button_theme", + ":theme", + ], ) filegroup( From 160096539298821752223486b0461208ac4ffada Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Tue, 24 Jun 2025 09:53:55 +0200 Subject: [PATCH 119/145] build: update to latest glob Updates the `glob` dependency to the latest version and fixes errors that were tripping up the bot. --- integration/linker/link-packages-test.mjs | 4 +- package.json | 2 +- pnpm-lock.yaml | 63 ++++++++++++++++++- scripts/create-legacy-tests-bundle.mjs | 11 ++-- .../npm-package-output/check-package.mts | 8 +-- .../npm-package-output/output-validations.mts | 6 +- 6 files changed, 76 insertions(+), 18 deletions(-) diff --git a/integration/linker/link-packages-test.mjs b/integration/linker/link-packages-test.mjs index f9bb64a4f060..8213738af617 100644 --- a/integration/linker/link-packages-test.mjs +++ b/integration/linker/link-packages-test.mjs @@ -8,7 +8,7 @@ import {NodeJSFileSystem, ConsoleLogger, LogLevel} from '@angular/compiler-cli'; import fs from 'fs'; import path from 'path'; import babel from '@babel/core'; -import glob from 'glob'; +import {sync as globSync} from 'glob'; import chalk from 'chalk'; /** File system used by the Angular linker plugin. */ @@ -62,7 +62,7 @@ if (failedPackages) { * @returns An object containing linker failures and passed files. */ function testPackage(pkg) { - const entryPointFesmFiles = glob.sync(`fesm2022/**/*.mjs`, {cwd: pkg.pkgPath}); + const entryPointFesmFiles = globSync(`fesm2022/**/*.mjs`, {cwd: pkg.pkgPath}); const passedFiles = []; const failures = []; diff --git a/package.json b/package.json index ea1347308971..0fbd5e8fbf7e 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "esbuild": "^0.17.5", "firebase-tools": "^9.2.1", "fs-extra": "^11.0.0", - "glob": "^7.2.0", + "glob": "^11.0.3", "highlight.js": "^10.7.0", "husky": "^9.0.1", "jasmine": "^5.6.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fc03a1cff319..1ffb2446dbaf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -231,8 +231,8 @@ importers: specifier: ^11.0.0 version: 11.3.0 glob: - specifier: ^7.2.0 - version: 7.2.3 + specifier: ^11.0.3 + version: 11.0.3 highlight.js: specifier: ^10.7.0 version: 10.7.3 @@ -2060,6 +2060,14 @@ packages: '@types/node': optional: true + '@isaacs/balanced-match@4.0.1': + resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} + engines: {node: 20 || >=22} + + '@isaacs/brace-expansion@5.0.0': + resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} + engines: {node: 20 || >=22} + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -5105,6 +5113,11 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true + glob@11.0.3: + resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} + engines: {node: 20 || >=22} + hasBin: true + glob@5.0.15: resolution: {integrity: sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==} deprecated: Glob versions prior to v9 are no longer supported @@ -5948,6 +5961,10 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jackspeak@4.1.1: + resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} + engines: {node: 20 || >=22} + jasmine-core@2.8.0: resolution: {integrity: sha512-SNkOkS+/jMZvLhuSx1fjhcNWUC/KG6oVyFUGkSBEr9n1axSNduWU8GlI7suaHXr4yxjet6KjrUZxUTE5WzzWwQ==} @@ -6435,6 +6452,10 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@11.1.0: + resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -6634,6 +6655,10 @@ packages: minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + minimatch@10.0.3: + resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} + engines: {node: 20 || >=22} + minimatch@3.0.8: resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} @@ -7211,6 +7236,10 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} + path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} @@ -10883,6 +10912,12 @@ snapshots: optionalDependencies: '@types/node': 22.14.1 + '@isaacs/balanced-match@4.0.1': {} + + '@isaacs/brace-expansion@5.0.0': + dependencies: + '@isaacs/balanced-match': 4.0.1 + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -14415,6 +14450,15 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 + glob@11.0.3: + dependencies: + foreground-child: 3.3.1 + jackspeak: 4.1.1 + minimatch: 10.0.3 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.0 + glob@5.0.15: dependencies: inflight: 1.0.6 @@ -15412,6 +15456,10 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jackspeak@4.1.1: + dependencies: + '@isaacs/cliui': 8.0.2 + jasmine-core@2.8.0: {} jasmine-core@3.99.1: {} @@ -16037,6 +16085,8 @@ snapshots: lru-cache@10.4.3: {} + lru-cache@11.1.0: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -16245,6 +16295,10 @@ snapshots: minimalistic-assert@1.0.1: {} + minimatch@10.0.3: + dependencies: + '@isaacs/brace-expansion': 5.0.0 + minimatch@3.0.8: dependencies: brace-expansion: 1.1.11 @@ -16910,6 +16964,11 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 + path-scurry@2.0.0: + dependencies: + lru-cache: 11.1.0 + minipass: 7.1.2 + path-to-regexp@0.1.12: {} path-to-regexp@0.1.7: {} diff --git a/scripts/create-legacy-tests-bundle.mjs b/scripts/create-legacy-tests-bundle.mjs index 5f1f62c9ce2a..9754f6d82567 100644 --- a/scripts/create-legacy-tests-bundle.mjs +++ b/scripts/create-legacy-tests-bundle.mjs @@ -4,9 +4,8 @@ import babel from '@babel/core'; import child_process from 'child_process'; import esbuild from 'esbuild'; import fs from 'fs'; -import glob from 'glob'; +import {sync as globSync} from 'glob'; import module from 'module'; -import path from 'path'; import {dirname, join, relative} from 'path'; import * as sass from 'sass'; import url from 'url'; @@ -51,8 +50,8 @@ async function main() { const specEntryPointFile = await createEntryPointSpecFile(); // Copy tsconfig so that ESBuild can leverage its path mappings. - const esbuildTsconfig = path.join(legacyOutputDir, 'tsconfig-esbuild.json'); - await fs.promises.cp(path.join(packagesDir, 'bazel-tsconfig-build.json'), esbuildTsconfig); + const esbuildTsconfig = join(legacyOutputDir, 'tsconfig-esbuild.json'); + await fs.promises.cp(join(packagesDir, 'bazel-tsconfig-build.json'), esbuildTsconfig); const result = await esbuild.build({ bundle: true, @@ -83,7 +82,7 @@ async function main() { * explicitly added. */ async function compileSassFiles() { - const sassFiles = glob.sync('src/**/!(_*|theme).scss', {cwd: projectDir, absolute: true}); + const sassFiles = globSync('src/**/!(_*|theme).scss', {cwd: projectDir, absolute: true}); const writeTasks = []; let count = 0; @@ -132,7 +131,7 @@ async function compileProjectWithNgtsc() { * to bundle all specs in an IIFE file. */ async function createEntryPointSpecFile() { - const testFiles = glob.sync('**/*.spec.js', {absolute: true, cwd: legacyOutputDir}); + const testFiles = globSync('**/*.spec.js', {absolute: true, cwd: legacyOutputDir}); let specEntryPointFile = `import './test/angular-test.init.ts';`; let i = 0; diff --git a/tools/release-checks/npm-package-output/check-package.mts b/tools/release-checks/npm-package-output/check-package.mts index d8b8bf0381c6..22d5fb03c413 100644 --- a/tools/release-checks/npm-package-output/check-package.mts +++ b/tools/release-checks/npm-package-output/check-package.mts @@ -1,6 +1,6 @@ import {Log, bold, yellow} from '@angular/ng-dev'; import {existsSync} from 'fs'; -import glob from 'glob'; +import {sync as globSync} from 'glob'; import {basename, dirname, join} from 'path'; import { @@ -47,9 +47,9 @@ export function checkReleasePackage( failures.set(message, filePaths); }; - const jsFiles = glob.sync(releaseJsFilesGlob, {cwd: packagePath, absolute: true}); - const typeDefinitions = glob.sync(releaseTypeDefinitionsGlob, {cwd: packagePath, absolute: true}); - const packageJsonFiles = glob.sync(packageJsonFilesGlob, {cwd: packagePath, absolute: true}); + const jsFiles = globSync(releaseJsFilesGlob, {cwd: packagePath, absolute: true}); + const typeDefinitions = globSync(releaseTypeDefinitionsGlob, {cwd: packagePath, absolute: true}); + const packageJsonFiles = globSync(packageJsonFilesGlob, {cwd: packagePath, absolute: true}); // We want to walk through each bundle within the current package and run // release validations that ensure that the bundles are not invalid. diff --git a/tools/release-checks/npm-package-output/output-validations.mts b/tools/release-checks/npm-package-output/output-validations.mts index 0ebc068a1f86..09f987e3f03c 100644 --- a/tools/release-checks/npm-package-output/output-validations.mts +++ b/tools/release-checks/npm-package-output/output-validations.mts @@ -1,5 +1,5 @@ import {existsSync, readFileSync} from 'fs'; -import glob from 'glob'; +import {sync as globSync} from 'glob'; import {basename, dirname, isAbsolute, join} from 'path'; import semver from 'semver'; @@ -146,7 +146,7 @@ export function checkMaterialPackage(packagePath: string): string[] { const newThemingFilePath = join(packagePath, '_index.scss'); const failures: string[] = []; - if (glob.sync('*.css', {cwd: prebuiltThemesPath}).length === 0) { + if (globSync('*.css', {cwd: prebuiltThemesPath}).length === 0) { failures.push('No prebuilt themes could be found.'); } @@ -161,7 +161,7 @@ export function checkMaterialPackage(packagePath: string): string[] { * Checks whether the prebuilt CDK files are part of the release output. */ export function checkCdkPackage(packagePath: string): string[] { - const prebuiltFiles = glob.sync('*-prebuilt.css', {cwd: packagePath}).map(path => basename(path)); + const prebuiltFiles = globSync('*-prebuilt.css', {cwd: packagePath}).map(path => basename(path)); const newApiFilePath = join(packagePath, '_index.scss'); const failures = ['overlay', 'a11y', 'text-field'] .filter(name => !prebuiltFiles.includes(`${name}-prebuilt.css`)) From 4910b54b5b14162b337c559896a96af70e910cd1 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Tue, 24 Jun 2025 11:07:58 +0200 Subject: [PATCH 120/145] build: update markdown pipeline The pipeline for rendering Markdown was 13 major versions behind. These changes update to the latest version and account for breakages. --- package.json | 4 +- pnpm-lock.yaml | 29 +++++----- tools/highlight-files/highlight-code-block.ts | 2 +- tools/markdown-to-html/BUILD.bazel | 2 +- .../markdown-to-html/docs-marked-renderer.ts | 54 +++++++++++-------- tools/markdown-to-html/transform-markdown.ts | 7 ++- 6 files changed, 55 insertions(+), 43 deletions(-) diff --git a/package.json b/package.json index 0fbd5e8fbf7e..35eca1951749 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,6 @@ "@types/glob": "^8.0.0", "@types/jasmine": "^4.0.0", "@types/luxon": "^3.0.0", - "@types/marked": "^2.0.0", "@types/minimatch": "^5.1.2", "@types/node": "^22.14.1", "@types/selenium-webdriver": "^3.0.17", @@ -124,7 +123,7 @@ "karma-parallel": "^0.3.1", "karma-sourcemap-loader": "^0.3.8", "magic-string": "0.30.17", - "marked": "^2.0.0", + "marked": "^15.0.12", "minimatch": "^3.0.4", "node-fetch": "^2.6.0", "parse5": "^7.1.2", @@ -142,6 +141,7 @@ "semver": "^7.3.5", "send": "^0.17.2", "shelljs": "^0.8.5", + "slugify": "^1.6.6", "source-map-support": "^0.5.21", "stylelint": "^14.14.0", "terser": "^5.10.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1ffb2446dbaf..0d9ede443f89 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -188,9 +188,6 @@ importers: '@types/luxon': specifier: ^3.0.0 version: 3.6.2 - '@types/marked': - specifier: ^2.0.0 - version: 2.0.5 '@types/minimatch': specifier: ^5.1.2 version: 5.1.2 @@ -273,8 +270,8 @@ importers: specifier: 0.30.17 version: 0.30.17 marked: - specifier: ^2.0.0 - version: 2.1.3 + specifier: ^15.0.12 + version: 15.0.12 minimatch: specifier: ^3.0.4 version: 3.1.2 @@ -326,6 +323,9 @@ importers: shelljs: specifier: ^0.8.5 version: 0.8.5 + slugify: + specifier: ^1.6.6 + version: 1.6.6 source-map-support: specifier: ^0.5.21 version: 0.5.21 @@ -2976,9 +2976,6 @@ packages: '@types/markdown-it@14.1.2': resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} - '@types/marked@2.0.5': - resolution: {integrity: sha512-shRZ7XnYFD/8n8zSjKvFdto1QNSf4tONZIlNEZGrJe8GsOE8DL/hG1Hbl8gZlfLnjS7+f5tZGIaTgfpyW38h4w==} - '@types/mdurl@2.0.0': resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} @@ -6540,9 +6537,9 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - marked@2.1.3: - resolution: {integrity: sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA==} - engines: {node: '>= 10'} + marked@15.0.12: + resolution: {integrity: sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==} + engines: {node: '>= 18'} hasBin: true marked@4.3.0: @@ -8111,6 +8108,10 @@ packages: resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} engines: {node: '>=18'} + slugify@1.6.6: + resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} + engines: {node: '>=8.0.0'} + smart-buffer@4.2.0: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} @@ -11836,8 +11837,6 @@ snapshots: '@types/linkify-it': 5.0.0 '@types/mdurl': 2.0.0 - '@types/marked@2.0.5': {} - '@types/mdurl@2.0.0': {} '@types/mime@1.3.5': {} @@ -16201,7 +16200,7 @@ snapshots: marked@0.7.0: {} - marked@2.1.3: {} + marked@15.0.12: {} marked@4.3.0: {} @@ -18068,6 +18067,8 @@ snapshots: ansi-styles: 6.2.1 is-fullwidth-code-point: 5.0.0 + slugify@1.6.6: {} + smart-buffer@4.2.0: {} snake-case@2.1.0: diff --git a/tools/highlight-files/highlight-code-block.ts b/tools/highlight-files/highlight-code-block.ts index f0383dff6c71..ce7a38f15537 100644 --- a/tools/highlight-files/highlight-code-block.ts +++ b/tools/highlight-files/highlight-code-block.ts @@ -4,7 +4,7 @@ import highlightJs from 'highlight.js'; * Transforms a given code block into its corresponding HTML output. We do this using * highlight.js because it allows us to show colored code blocks in our documentation. */ -export function highlightCodeBlock(code: string, language: string) { +export function highlightCodeBlock(code: string, language?: string) { if (language) { return highlightJs.highlight(code, { language: language.toLowerCase() === 'ts' ? 'typescript' : language, diff --git a/tools/markdown-to-html/BUILD.bazel b/tools/markdown-to-html/BUILD.bazel index 0a0a08a74051..361934dde196 100644 --- a/tools/markdown-to-html/BUILD.bazel +++ b/tools/markdown-to-html/BUILD.bazel @@ -13,8 +13,8 @@ ts_project( ), tsconfig = "//tools:tsconfig", deps = [ - "//:node_modules/@types/marked", "//:node_modules/marked", + "//:node_modules/slugify", "//tools/highlight-files:sources", ], ) diff --git a/tools/markdown-to-html/docs-marked-renderer.ts b/tools/markdown-to-html/docs-marked-renderer.ts index 8893af3e4784..0686db40b181 100644 --- a/tools/markdown-to-html/docs-marked-renderer.ts +++ b/tools/markdown-to-html/docs-marked-renderer.ts @@ -1,5 +1,7 @@ -import {Renderer, Slugger} from 'marked'; +import {Renderer, Tokens} from 'marked'; import {basename, extname} from 'path'; +import slugify from 'slugify'; +import {highlightCodeBlock} from '../highlight-files/highlight-code-block'; /** Regular expression that matches example comments. */ const exampleCommentRegex = //g; @@ -18,38 +20,45 @@ export class DocsMarkdownRenderer extends Renderer { /** Set of fragment links discovered in the currently rendered file. */ private _referencedFragments = new Set(); - /** - * Slugger provided by the `marked` package. Can be used to create unique - * ids for headings. - */ - private _slugger = new Slugger(); + /** IDs that have been generated during Markdown parsing. */ + private _seenIds = new Set(); /** * Transforms a markdown heading into the corresponding HTML output. In our case, we * want to create a header-link for each H2, H3, and H4 heading. This allows users to jump to * specific parts of the docs. */ - heading(label: string, level: number, raw: string) { - if (level === 2 || level === 3 || level === 4 || level === 5 || level === 6) { - const headingId = this._slugger.slug(raw); + heading(tag: Tokens.Heading) { + const depth = tag.depth; + const content = this.parser.parseInline(tag.tokens); + + if (depth === 2 || depth === 3 || depth === 4 || depth === 5 || depth === 6) { + const headingId = slugify(tag.text, {lower: true, strict: true}); + + this._seenIds.add(headingId); return ` - + - ${label} - + ${content} + `; } - return `${label}`; + return `${content}`; } /** Transforms markdown links into the corresponding HTML output. */ - link(href: string, title: string, text: string) { + link(link: Tokens.Link) { + const {href} = link; + // We only want to fix up markdown links that are relative and do not refer to guides already. // Otherwise we always map the link to the "guide/" path. // TODO(devversion): remove this logic and just disallow relative paths. if (!href.startsWith('http') && !href.startsWith('#') && !href.includes('guide/')) { - return super.link(`guide/${basename(href, extname(href))}`, title, text); + return super.link({ + ...link, + href: `guide/${basename(href, extname(href))}`, + }); } // Keep track of all fragments discovered in a file. @@ -57,7 +66,7 @@ export class DocsMarkdownRenderer extends Renderer { this._referencedFragments.add(href.slice(1)); } - return super.link(href, title, text); + return super.link(link); } /** @@ -82,8 +91,8 @@ export class DocsMarkdownRenderer extends Renderer { * turns into * `
` */ - html(html: string) { - html = html.replace(exampleCommentRegex, (_match: string, content: string) => { + html(content: Tokens.HTML | Tokens.Tag) { + return content.raw.replace(exampleCommentRegex, (_match: string, content: string) => { let replacement: string; // using [\s\S]* because .* does not match line breaks @@ -102,8 +111,11 @@ export class DocsMarkdownRenderer extends Renderer { return `${exampleStartMarker}${replacement}${exampleEndMarker}`; }); + } - return super.html(html); + code(block: Tokens.Code): string { + const langClass = block.lang ? ` class="language-${block.lang}"` : ''; + return `
${highlightCodeBlock(block.text, block.lang)}
`; } /** @@ -116,7 +128,7 @@ export class DocsMarkdownRenderer extends Renderer { // Collect any fragment links that do not resolve to existing fragments in the // rendered file. We want to error for broken fragment links. this._referencedFragments.forEach(id => { - if (this._slugger.seen[id] === undefined) { + if (!this._seenIds.has(id)) { failures.push(`Found link to "${id}". This heading does not exist.`); } }); @@ -127,7 +139,7 @@ export class DocsMarkdownRenderer extends Renderer { process.exit(1); } - this._slugger.seen = {}; + this._seenIds.clear(); this._referencedFragments.clear(); const markdownOpen = '
'; diff --git a/tools/markdown-to-html/transform-markdown.ts b/tools/markdown-to-html/transform-markdown.ts index 705cd7660419..3fd96933e2d2 100644 --- a/tools/markdown-to-html/transform-markdown.ts +++ b/tools/markdown-to-html/transform-markdown.ts @@ -4,16 +4,15 @@ */ import {readFileSync, writeFileSync} from 'fs'; -import marked from 'marked'; +import {marked} from 'marked'; import {join} from 'path'; -import {highlightCodeBlock} from '../highlight-files/highlight-code-block'; import {DocsMarkdownRenderer} from './docs-marked-renderer'; // Custom markdown renderer for transforming markdown files for the docs. const markdownRenderer = new DocsMarkdownRenderer(); // Setup our custom docs renderer by default. -marked.setOptions({renderer: markdownRenderer, highlight: highlightCodeBlock}); +marked.setOptions({renderer: markdownRenderer}); if (require.main === module) { // The script expects the bazel-bin path as first argument. All remaining arguments will be @@ -25,7 +24,7 @@ if (require.main === module) { inputFiles.forEach(inputPath => { const outputPath = join(bazelBinPath, `${inputPath}.html`); const htmlOutput = markdownRenderer.finalizeOutput( - marked(readFileSync(inputPath, 'utf8')), + marked.parse(readFileSync(inputPath, 'utf8'), {async: false}), inputPath, ); From 814fdec2089f2b5788be24d84582b6148fbd2c06 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Tue, 24 Jun 2025 11:41:06 +0200 Subject: [PATCH 121/145] build: update chalk Updates to the latest version of Chalk which was tripping up the bot. As a result of this, some scripts had to be converted to `.mts`. --- .github/workflows/pr.yml | 2 +- package.json | 12 +++---- pnpm-lock.yaml | 4 +-- ...eaking-changes.ts => breaking-changes.mts} | 4 ++- ...t-setup.js => check-entry-point-setup.mjs} | 14 ++++---- ...ternals.ts => check-package-externals.mts} | 2 +- ...rchives.js => create-package-archives.mjs} | 34 +++++++++---------- ....ts => detect-component-id-collisions.mts} | 19 ++++++----- scripts/{ownerslint.ts => ownerslint.mts} | 8 ++--- 9 files changed, 52 insertions(+), 47 deletions(-) rename scripts/{breaking-changes.ts => breaking-changes.mts} (96%) rename scripts/{check-entry-point-setup.js => check-entry-point-setup.mjs} (84%) rename scripts/{check-package-externals.ts => check-package-externals.mts} (98%) rename scripts/{create-package-archives.js => create-package-archives.mjs} (66%) rename scripts/{detect-component-id-collisions.ts => detect-component-id-collisions.mts} (95%) rename scripts/{ownerslint.ts => ownerslint.mts} (90%) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index aeeea0602c5d..ccd095c07259 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -149,7 +149,7 @@ jobs: - name: Verify tooling setup run: pnpm check-tooling-setup - name: Build and create package artifacts - run: ./scripts/create-package-archives.js --suffix "pr${{github.event.number}}-$(git rev-parse --short HEAD)" + run: ./scripts/create-package-archives.mjs --suffix "pr${{github.event.number}}-$(git rev-parse --short HEAD)" - name: Upload artifacts uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # tag=v4.3.1 with: diff --git a/package.json b/package.json index 35eca1951749..56614bf828a9 100644 --- a/package.json +++ b/package.json @@ -29,13 +29,13 @@ "lint": "pnpm -s tslint && pnpm -s stylelint && pnpm -s ownerslint && pnpm -s ng-dev format changed --check", "e2e": "bazel test //src/... --build_tag_filters=e2e --test_tag_filters=e2e --build_tests_only", "deploy-dev-app": "node ./scripts/deploy-dev-app.js", - "breaking-changes": "ts-node --project scripts/tsconfig.json scripts/breaking-changes.ts", - "check-entry-point-setup": "node ./scripts/check-entry-point-setup.js", - "check-package-externals": "ts-node --project scripts/tsconfig.json scripts/check-package-externals.ts", + "breaking-changes": "node --no-warnings=ExperimentalWarning --loader ts-node/esm/transpile-only scripts/breaking-changes.mts", + "check-entry-point-setup": "node ./scripts/check-entry-point-setup.mjs", + "check-package-externals": "node --no-warnings=ExperimentalWarning --loader ts-node/esm/transpile-only scripts/check-package-externals.mts", "format": "pnpm -s ng-dev format changed", "cherry-pick-patch": "ts-node --project tools/cherry-pick-patch/tsconfig.json tools/cherry-pick-patch/cherry-pick-patch.ts", - "ownerslint": "ts-node --project scripts/tsconfig.json scripts/ownerslint.ts", - "detect-component-id-collisions": "ts-node --project scripts/tsconfig.json scripts/detect-component-id-collisions.ts", + "ownerslint": "node --no-warnings=ExperimentalWarning --loader ts-node/esm/transpile-only scripts/ownerslint.mts", + "detect-component-id-collisions": "node --no-warnings=ExperimentalWarning --loader ts-node/esm/transpile-only scripts/detect-component-id-collisions.mts", "tslint": "tslint -c tslint.json --project ./tsconfig.json", "stylelint": "stylelint \"(src|docs)/**/*.+(css|scss)\" --config .stylelintrc.json", "resync-caretaker-app": "ts-node --project scripts/tsconfig.json scripts/caretaking/resync-caretaker-app-prs.ts", @@ -103,7 +103,7 @@ "@types/shelljs": "^0.8.11", "@types/yargs": "^17.0.8", "autoprefixer": "^10.4.2", - "chalk": "^4.1.0", + "chalk": "^5.4.1", "dgeni": "^0.4.14", "dgeni-packages": "^0.29.5", "esbuild": "^0.17.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0d9ede443f89..84eb3c098492 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -210,8 +210,8 @@ importers: specifier: ^10.4.2 version: 10.4.21(postcss@8.5.3) chalk: - specifier: ^4.1.0 - version: 4.1.2 + specifier: ^5.4.1 + version: 5.4.1 dgeni: specifier: ^0.4.14 version: 0.4.14 diff --git a/scripts/breaking-changes.ts b/scripts/breaking-changes.mts similarity index 96% rename from scripts/breaking-changes.ts rename to scripts/breaking-changes.mts index 7a749db84529..049d3d9f0948 100644 --- a/scripts/breaking-changes.ts +++ b/scripts/breaking-changes.mts @@ -5,8 +5,10 @@ import ts from 'typescript'; const projectRoot = process.cwd(); +const packageJson = JSON.parse(readFileSync(join(projectRoot, 'package.json'), 'utf8')); + // Current version from the package.json. Splits it on the dash to ignore pre-release labels. -const packageVersion = require(join(projectRoot, 'package.json')).version.split('-')[0]; +const packageVersion = packageJson.version.split('-')[0]; // Regex used to extract versions from a string. const versionRegex = /\d+\.\d+\.\d+/; diff --git a/scripts/check-entry-point-setup.js b/scripts/check-entry-point-setup.mjs similarity index 84% rename from scripts/check-entry-point-setup.js rename to scripts/check-entry-point-setup.mjs index f2826395593c..6606360d5066 100644 --- a/scripts/check-entry-point-setup.js +++ b/scripts/check-entry-point-setup.mjs @@ -7,15 +7,15 @@ * script through a manifest file (generated by Bazel) */ -const {join, dirname} = require('path'); -const {sync: globSync} = require('glob'); -const minimatch = require('minimatch'); -const fs = require('fs'); -const chalk = require('chalk'); +import {join, dirname} from 'path'; +import {sync as globSync} from 'glob'; +import {readFileSync} from 'fs'; +import minimatch from 'minimatch'; +import chalk from 'chalk'; const [entryPointManifest] = process.argv.slice(2); -const entryPoints = JSON.parse(fs.readFileSync(entryPointManifest, 'utf8')); -const packagesDir = join(__dirname, '../src'); +const entryPoints = JSON.parse(readFileSync(entryPointManifest, 'utf8')); +const packagesDir = join(process.cwd(), 'src'); /** * Globs that matches directories which should never be considered diff --git a/scripts/check-package-externals.ts b/scripts/check-package-externals.mts similarity index 98% rename from scripts/check-package-externals.ts rename to scripts/check-package-externals.mts index 27b335b0a0b3..9f6fbce9f7bc 100644 --- a/scripts/check-package-externals.ts +++ b/scripts/check-package-externals.mts @@ -14,7 +14,7 @@ import minimatch from 'minimatch'; import {join, relative} from 'path'; import ts from 'typescript'; -const projectRoot = join(__dirname, '../'); +const projectRoot = process.cwd(); const args = process.argv.slice(2); if (args.length !== 1) { diff --git a/scripts/create-package-archives.js b/scripts/create-package-archives.mjs similarity index 66% rename from scripts/create-package-archives.js rename to scripts/create-package-archives.mjs index b22904d75d4e..537e0e782a05 100755 --- a/scripts/create-package-archives.js +++ b/scripts/create-package-archives.mjs @@ -9,12 +9,11 @@ * the primary `cdk` and `material` packages, and also don't run for pull requests. */ -const {join} = require('path'); -const {rm, mkdir, test, ls, set, exec, cd} = require('shelljs'); -const {red, green} = require('chalk'); -const yargs = require('yargs'); +import {join} from 'path'; +import sh from 'shelljs'; +import chalk from 'chalk'; +import yargs from 'yargs'; -const projectDir = join(__dirname, '../'); const archivesDir = 'dist/release-archives'; const releasesDir = 'dist/releases'; const {suffix} = yargs(process.argv.slice(2)) @@ -23,34 +22,35 @@ const {suffix} = yargs(process.argv.slice(2)) .parseSync(); // Fail if any ShellJS command fails. -set('-e'); +sh.set('-e'); -cd(projectDir); - -if (!test('-e', releasesDir)) { - console.error(red('The release output has not been built.')); +if (!sh.test('-e', releasesDir)) { + console.error(chalk.red('The release output has not been built.')); process.exit(1); } -rm('-Rf', archivesDir); -mkdir('-p', archivesDir); +sh.rm('-Rf', archivesDir); +sh.mkdir('-p', archivesDir); -const builtPackages = ls(releasesDir) +const builtPackages = sh + .ls(releasesDir) .map(name => ({name, path: join(releasesDir, name)})) - .filter(pkg => test('-d', pkg.path)); + .filter(pkg => sh.test('-d', pkg.path)); // If multiple packages should be archived, we also generate a single archive that // contains all packages. This makes it easier to transfer the release packages. if (builtPackages.length > 1) { console.info('Creating archive with all packages..'); - exec(`tar --create --gzip --directory ${releasesDir} --file ${archivesDir}/all-${suffix}.tgz .`); + sh.exec( + `tar --create --gzip --directory ${releasesDir} --file ${archivesDir}/all-${suffix}.tgz .`, + ); } for (const pkg of builtPackages) { console.info(`Creating archive for package: ${pkg.name}`); - exec( + sh.exec( `tar --create --gzip --directory ${pkg.path} --file ${archivesDir}/${pkg.name}-${suffix}.tgz .`, ); } -console.info(green(`Created package archives in: ${archivesDir}`)); +console.info(chalk.green(`Created package archives in: ${archivesDir}`)); diff --git a/scripts/detect-component-id-collisions.ts b/scripts/detect-component-id-collisions.mts similarity index 95% rename from scripts/detect-component-id-collisions.ts rename to scripts/detect-component-id-collisions.mts index 8202bd7b9799..913b0dded37d 100644 --- a/scripts/detect-component-id-collisions.ts +++ b/scripts/detect-component-id-collisions.mts @@ -9,7 +9,7 @@ import {sync as glob} from 'glob'; const errors: string[] = []; const seenMetadata = new Map(); -const fileToCheck = join(__dirname, '../src/**/!(*.spec).ts'); +const fileToCheck = join(process.cwd(), 'src/**/!(*.spec).ts'); const ignoredPatterns = [ '**/components-examples/**', '**/dev-app/**', @@ -141,13 +141,16 @@ function serializeValue(node: ts.Node): string { .slice() // Sort the fields since JS engines preserve the order properties in object literals. .sort((a, b) => (a.name?.getText() || '').localeCompare(b.name?.getText() || '')) - .reduce((accumulator, prop) => { - if (ts.isPropertyAssignment(prop)) { - accumulator[prop.name.getText()] = serializeValue(prop.initializer); - } - - return accumulator; - }, {} as Record); + .reduce( + (accumulator, prop) => { + if (ts.isPropertyAssignment(prop)) { + accumulator[prop.name.getText()] = serializeValue(prop.initializer); + } + + return accumulator; + }, + {} as Record, + ); return JSON.stringify(serialized); } diff --git a/scripts/ownerslint.ts b/scripts/ownerslint.mts similarity index 90% rename from scripts/ownerslint.ts rename to scripts/ownerslint.mts index e1f39fe9b839..e540b0c79831 100644 --- a/scripts/ownerslint.ts +++ b/scripts/ownerslint.mts @@ -1,6 +1,6 @@ import chalk from 'chalk'; import {readdirSync, readFileSync, statSync} from 'fs'; -import {IMinimatch, Minimatch} from 'minimatch'; +import minimatch from 'minimatch'; import {join} from 'path'; /** @@ -23,7 +23,7 @@ const ownedPaths = readFileSync(ownersFilePath, 'utf8') // Split off just the path glob. .map(line => line.split(/\s+/)[0]) // Turn paths into Minimatch objects. - .map(path => new Minimatch(path, {dot: true, matchBase: true})); + .map(path => new minimatch.Minimatch(path, {dot: true, matchBase: true})); const ignoredPaths = readFileSync(gitIgnorePath, 'utf8') .split('\n') @@ -32,7 +32,7 @@ const ignoredPaths = readFileSync(gitIgnorePath, 'utf8') // Remove empty lines and comments. .filter(line => line && !line.startsWith('#')) // Turn paths into Minimatch objects. - .map(path => new Minimatch(path, {dot: true, matchBase: true})); + .map(path => new minimatch.Minimatch(path, {dot: true, matchBase: true})); for (let paths = getChildPaths('.'); paths.length; ) { paths = Array.prototype.concat( @@ -72,7 +72,7 @@ if (errors) { } /** Check if the given path is owned by the given owned path matcher. */ -function isOwnedBy(path: string, ownedPath: IMinimatch) { +function isOwnedBy(path: string, ownedPath: minimatch.IMinimatch) { // If the owned path ends with `**` its safe to eliminate whole directories. if (ownedPath.pattern.endsWith('**') || statSync(path).isFile()) { return ownedPath.match('/' + path); From f48c8ad7d6d4da20c1d8f8adbdcf65649749f81a Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Tue, 24 Jun 2025 05:13:09 -0600 Subject: [PATCH 122/145] build: update scorecard action dependencies (#31409) See associated pull request for more information. (cherry picked from commit f23c0a6f55e1aca2445e16134092054e6a00da7d) --- .github/workflows/scorecard.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index c2b30283dbfb..6e37f2cc52b5 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -30,7 +30,7 @@ jobs: persist-credentials: false - name: 'Run analysis' - uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1 + uses: ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde # v2.4.2 with: results_file: results.sarif results_format: sarif @@ -47,6 +47,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: 'Upload to code-scanning' - uses: github/codeql-action/upload-sarif@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18 + uses: github/codeql-action/upload-sarif@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0 with: sarif_file: results.sarif From e89c09b8cea88d5fd8ff10622ff9e56d6784a061 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Tue, 24 Jun 2025 17:33:57 +0200 Subject: [PATCH 123/145] docs: snippet-based examples not showing after clicking away and coming back (#31415) Fixes that examples based on snippets (e.g. first example for autocomplete) weren't showing up if the user lands on the page, clicks to another tab and then comes back. The problem was that the timing is different on the second run, because we hit the cached rather than fetching the content. These changes resolve it by switching the component's internal state to signals. (cherry picked from commit d820a260148afaf3f009edabd064e08cbd53751a) --- .../app/shared/doc-viewer/doc-viewer.spec.ts | 29 ++-- docs/src/app/shared/doc-viewer/doc-viewer.ts | 24 ++- .../shared/example-viewer/example-viewer.html | 25 +-- .../shared/example-viewer/example-viewer.ts | 158 ++++++++++-------- 4 files changed, 134 insertions(+), 102 deletions(-) diff --git a/docs/src/app/shared/doc-viewer/doc-viewer.spec.ts b/docs/src/app/shared/doc-viewer/doc-viewer.spec.ts index d8ccc111b343..9c500951c83b 100644 --- a/docs/src/app/shared/doc-viewer/doc-viewer.spec.ts +++ b/docs/src/app/shared/doc-viewer/doc-viewer.spec.ts @@ -95,11 +95,12 @@ describe('DocViewer', () => { http.expectOne(testUrl).flush(FAKE_DOCS[testUrl]); - const exampleViewer = fixture.debugElement.query(By.directive(ExampleViewer)); - expect(exampleViewer.componentInstance.file).toBe('some-example.html'); - expect(exampleViewer.componentInstance.showCompactToggle).toBeTrue(); - expect(exampleViewer.componentInstance.region).toBe('some-region'); - expect(exampleViewer.componentInstance.view).toBe('snippet'); + const exampleViewer = fixture.debugElement.query(By.directive(ExampleViewer)) + .componentInstance as ExampleViewer; + expect(exampleViewer.file()).toBe('some-example.html'); + expect(exampleViewer.showCompactToggle()).toBeTrue(); + expect(exampleViewer.region()).toBe('some-region'); + expect(exampleViewer.view()).toBe('snippet'); }); it('should instantiate example viewer in demo view', () => { @@ -111,10 +112,11 @@ describe('DocViewer', () => { http.expectOne(testUrl).flush(FAKE_DOCS[testUrl]); - const exampleViewer = fixture.debugElement.query(By.directive(ExampleViewer)); - expect(exampleViewer.componentInstance.file).toBeUndefined(); - expect(exampleViewer.componentInstance.showCompactToggle).toBeFalse(); - expect(exampleViewer.componentInstance.view).toBe('demo'); + const exampleViewer = fixture.debugElement.query(By.directive(ExampleViewer)) + .componentInstance as ExampleViewer; + expect(exampleViewer.file()).toBeUndefined(); + expect(exampleViewer.showCompactToggle()).toBeFalse(); + expect(exampleViewer.view()).toBe('demo'); }); it('should instantiate example viewer in snippet view with whole snippet', () => { @@ -126,10 +128,11 @@ describe('DocViewer', () => { http.expectOne(testUrl).flush(FAKE_DOCS[testUrl]); - const exampleViewer = fixture.debugElement.query(By.directive(ExampleViewer)); - expect(exampleViewer.componentInstance.file).toBe('whole-snippet-example.ts'); - expect(exampleViewer.componentInstance.showCompactToggle).toBeTrue(); - expect(exampleViewer.componentInstance.view).toBe('snippet'); + const exampleViewer = fixture.debugElement.query(By.directive(ExampleViewer)) + .componentInstance as ExampleViewer; + expect(exampleViewer.file()).toBe('whole-snippet-example.ts'); + expect(exampleViewer.showCompactToggle()).toBeTrue(); + expect(exampleViewer.view()).toBe('snippet'); }); it('should show error message when doc not found', () => { diff --git a/docs/src/app/shared/doc-viewer/doc-viewer.ts b/docs/src/app/shared/doc-viewer/doc-viewer.ts index e0f2cb6b80d5..89b3b73cc81b 100644 --- a/docs/src/app/shared/doc-viewer/doc-viewer.ts +++ b/docs/src/app/shared/doc-viewer/doc-viewer.ts @@ -30,6 +30,7 @@ import { ViewContainerRef, input, inject, + Type, } from '@angular/core'; import {Observable, Subscription} from 'rxjs'; import {shareReplay, take, tap} from 'rxjs/operators'; @@ -113,17 +114,17 @@ export class DocViewer implements OnDestroy { if (file) { // if the html div has field `file` then it should be in compact view to show the code // snippet - exampleViewerComponent.view = 'snippet'; - exampleViewerComponent.showCompactToggle = true; - exampleViewerComponent.file = file; + exampleViewerComponent.view.set('snippet'); + exampleViewerComponent.showCompactToggle.set(true); + exampleViewerComponent.file.set(file); if (region) { // `region` should only exist when `file` exists but not vice versa // It is valid for embedded example snippets to show the whole file (esp short files) - exampleViewerComponent.region = region; + exampleViewerComponent.region.set(region); } } else { // otherwise it is an embedded demo - exampleViewerComponent.view = 'demo'; + exampleViewerComponent.view.set('demo'); } } @@ -175,7 +176,7 @@ export class DocViewer implements OnDestroy { } /** Instantiate a ExampleViewer for each example. */ - private _loadComponents(componentName: string, componentClass: any) { + private _loadComponents(componentName: string, componentClass: Type) { const exampleElements = this._elementRef.nativeElement.querySelectorAll(`[${componentName}]`); [...exampleElements].forEach((element: Element) => { @@ -185,9 +186,14 @@ export class DocViewer implements OnDestroy { const portalHost = new DomPortalOutlet(element, this._appRef, this._injector); const examplePortal = new ComponentPortal(componentClass, this._viewContainerRef); const exampleViewer = portalHost.attach(examplePortal); - const exampleViewerComponent = exampleViewer.instance as ExampleViewer; - if (example !== null) { - DocViewer._initExampleViewer(exampleViewerComponent, example, file, region); + const exampleViewerComponent = exampleViewer.instance; + if (example !== null && componentClass === ExampleViewer) { + DocViewer._initExampleViewer( + exampleViewerComponent as ExampleViewer, + example, + file, + region, + ); } this._portalHosts.push(portalHost); }); diff --git a/docs/src/app/shared/example-viewer/example-viewer.html b/docs/src/app/shared/example-viewer/example-viewer.html index 3216a817e9dd..96b7f0877c96 100644 --- a/docs/src/app/shared/example-viewer/example-viewer.html +++ b/docs/src/app/shared/example-viewer/example-viewer.html @@ -1,5 +1,8 @@ +@let exampleData = this.exampleData(); +@let fileUrl = this.fileUrl(); +
- @if (view === 'snippet') { + @if (view() === 'snippet') {
- @if (showCompactToggle) { + @if (showCompactToggle()) {
- @if (view === 'full') { + @if (view() === 'full') {
- @for (tabName of _getExampleTabNames(); track tabName) { + @for (tabName of _exampleTabNames(); track tabName) {
-
- +
}
@@ -79,10 +82,12 @@ } } - @if (view !== 'snippet') { + @if (view() !== 'snippet') {
- @if (_exampleComponentType && !example?.includes('harness')) { - + @let componentType = _exampleComponentType(); + + @if (componentType && !example?.includes('harness')) { + } @else {
This example contains tests. Open in Stackblitz to run the tests.
} diff --git a/docs/src/app/shared/example-viewer/example-viewer.ts b/docs/src/app/shared/example-viewer/example-viewer.ts index 889a4ba7633a..e8ca23cff8bc 100644 --- a/docs/src/app/shared/example-viewer/example-viewer.ts +++ b/docs/src/app/shared/example-viewer/example-viewer.ts @@ -6,7 +6,17 @@ * found in the LICENSE file at https://angular.dev/license */ -import {Component, ElementRef, inject, Input, OnInit, Type, viewChildren} from '@angular/core'; +import { + Component, + computed, + ElementRef, + inject, + Input, + model, + signal, + Type, + viewChildren, +} from '@angular/core'; import {MatSnackBar} from '@angular/material/snack-bar'; import {Clipboard} from '@angular/cdk/clipboard'; @@ -47,7 +57,7 @@ const preferredExampleFileOrder = ['HTML', 'TS', 'CSS']; '[attr.id]': 'example', }, }) -export class ExampleViewer implements OnInit { +export class ExampleViewer { private readonly _snackbar = inject(MatSnackBar); private readonly _clipboard = inject(Clipboard); private readonly _elementRef = inject>(ElementRef); @@ -55,25 +65,48 @@ export class ExampleViewer implements OnInit { readonly snippet = viewChildren(CodeSnippet); /** The tab to jump to when expanding from snippet view. */ - selectedTab: number = 0; + readonly selectedTab = signal(0); /** Map of example files that should be displayed in the view-source tab in order. */ - exampleTabs: {[tabName: string]: string} = {}; + readonly exampleTabs = signal>({}); /** Data for the currently selected example. */ - exampleData: LiveExample | null = null; + readonly exampleData = signal(null); /** URL to fetch code snippet for snippet view. */ - fileUrl: string | undefined; + readonly fileUrl = computed(() => { + const file = this.file(); + const exampleData = this.exampleData(); + const region = this.region(); + + if (!file) { + return undefined; + } + + const lastDotIndex = file.lastIndexOf('.'); + const contentBeforeDot = file.substring(0, lastDotIndex); + const contentAfterDot = file.substring(lastDotIndex + 1); + let fileName: string; + + if (region) { + fileName = `${contentBeforeDot}_${region}-${contentAfterDot}.html`; + } else { + fileName = `${contentBeforeDot}-${contentAfterDot}.html`; + } + + return exampleData + ? `/docs-content/examples-highlighted/${exampleData.packagePath}/${fileName}` + : ''; + }); /** Component type for the current example. */ - _exampleComponentType: Type | null = null; + readonly _exampleComponentType = signal | null>(null); /** View of the example component. */ - @Input() view: Views | undefined; + readonly view = model(); /** Whether to show toggle for compact view. */ - @Input() showCompactToggle = false; + readonly showCompactToggle = model(false); /** String key of the currently displayed example. */ @Input() @@ -89,30 +122,26 @@ export class ExampleViewer implements OnInit { private _example: string | undefined; /** Range of lines of the source code to display in compact view. */ - @Input() region?: string; + readonly region = signal(undefined); /** Name of file to display in compact view. */ - @Input() file?: string; - - ngOnInit() { - if (this.file) { - this.fileUrl = this.generateUrl(this.file); - } - } + readonly file = model(); /** Selects a given tab based on the example file of the compact view. */ selectCorrectTab() { - if (!this.file || !this.exampleTabs) { + const file = this.file(); + const exampleTabNames = this._exampleTabNames(); + + if (!file || !exampleTabNames.length) { return; } - const extension = this.file.substring(this.file.lastIndexOf('.') + 1); - const exampleTabNames = this._getExampleTabNames(); + const extension = file.substring(file.lastIndexOf('.') + 1); for (let i = 0; i < exampleTabNames.length; i++) { const tabName = exampleTabNames[i]; if (tabName.toLowerCase() === extension || tabName.endsWith(`.${extension}`)) { - this.selectedTab = i; + this.selectedTab.set(i); return; } } @@ -121,16 +150,16 @@ export class ExampleViewer implements OnInit { } toggleCompactView() { - if (this.view === 'snippet') { - this.view = 'full'; + if (this.view() === 'snippet') { + this.view.set('full'); this.selectCorrectTab(); } else { - this.view = 'snippet'; + this.view.set('snippet'); } } toggleSourceView(): void { - this.view = this.view === 'full' ? 'demo' : 'full'; + this.view.set(this.view() === 'full' ? 'demo' : 'full'); } copySource(snippets: readonly CodeSnippet[], selectedIndex: number = 0) { @@ -142,42 +171,29 @@ export class ExampleViewer implements OnInit { } } - generateUrl(file: string): string { - const lastDotIndex = file.lastIndexOf('.'); - const contentBeforeDot = file.substring(0, lastDotIndex); - const contentAfterDot = file.substring(lastDotIndex + 1); - let fileName: string; + protected _exampleTabNames = computed(() => { + const exampleTabs = this.exampleTabs(); - if (this.region) { - fileName = `${contentBeforeDot}_${this.region}-${contentAfterDot}.html`; - } else { - fileName = `${contentBeforeDot}-${contentAfterDot}.html`; + if (!exampleTabs) { + return []; } - return this.exampleData - ? `/docs-content/examples-highlighted/${this.exampleData.packagePath}/${fileName}` - : ''; - } + return Object.keys(exampleTabs).sort((a, b) => { + let indexA = preferredExampleFileOrder.indexOf(a); + let indexB = preferredExampleFileOrder.indexOf(b); + // Files which are not part of the preferred example file order should be + // moved after all items with a preferred index. + if (indexA === -1) { + indexA = preferredExampleFileOrder.length; + } - _getExampleTabNames() { - return this.exampleTabs - ? Object.keys(this.exampleTabs).sort((a, b) => { - let indexA = preferredExampleFileOrder.indexOf(a); - let indexB = preferredExampleFileOrder.indexOf(b); - // Files which are not part of the preferred example file order should be - // moved after all items with a preferred index. - if (indexA === -1) { - indexA = preferredExampleFileOrder.length; - } - - if (indexB === -1) { - indexB = preferredExampleFileOrder.length; - } - - return indexA - indexB || 1; - }) - : []; - } + if (indexB === -1) { + indexB = preferredExampleFileOrder.length; + } + + return indexA - indexB || 1; + }); + }); _copyLink() { // Reconstruct the URL using `origin + pathname` so we drop any pre-existing hash. @@ -193,19 +209,19 @@ export class ExampleViewer implements OnInit { private async _exampleChanged(name: string) { const examples = (await this._docsItems.getData()).examples; - this.exampleData = examples[name]; + this.exampleData.set(examples[name]); - if (!this.exampleData) { + if (!this.exampleData()) { console.error(`Could not find example: ${name}`); return; } try { - this._generateExampleTabs(); + this._generateExampleTabs(this.exampleData()); // Lazily loads the example package that contains the requested example. const moduleExports = await loadExample(name); - this._exampleComponentType = moduleExports[examples[name].componentName]; + this._exampleComponentType.set(moduleExports[examples[name].componentName]); // Since the data is loaded asynchronously, we can't count on the native behavior // that scrolls the element into view automatically. We do it ourselves while giving @@ -218,20 +234,20 @@ export class ExampleViewer implements OnInit { } } - private _generateExampleTabs() { - this.exampleTabs = {}; + private _generateExampleTabs(data: LiveExample | null) { + const tabs: Record = {}; - if (this.exampleData) { + if (data) { // Name of the default example files. If files with such name exist within the example, // we provide a shorthand for them within the example tabs (for less verbose tabs). const exampleBaseFileName = `${this.example}-example`; - const docsContentPath = `/docs-content/examples-highlighted/${this.exampleData.packagePath}`; + const docsContentPath = `/docs-content/examples-highlighted/${data.packagePath}`; const tsPath = normalizePath(`${exampleBaseFileName}.ts`); const cssPath = normalizePath(`${exampleBaseFileName}.css`); const htmlPath = normalizePath(`${exampleBaseFileName}.html`); - for (let fileName of this.exampleData.files) { + for (let fileName of data.files) { // Since the additional files refer to the original file name, we need to transform // the file name to match the highlighted HTML file that displays the source. const fileSourceName = fileName.replace(fileExtensionRegex, '$1-$2.html'); @@ -242,15 +258,17 @@ export class ExampleViewer implements OnInit { fileName = normalizePath(fileName); if (fileName === tsPath) { - this.exampleTabs['TS'] = importPath; + tabs['TS'] = importPath; } else if (fileName === cssPath) { - this.exampleTabs['CSS'] = importPath; + tabs['CSS'] = importPath; } else if (fileName === htmlPath) { - this.exampleTabs['HTML'] = importPath; + tabs['HTML'] = importPath; } else { - this.exampleTabs[fileName] = importPath; + tabs[fileName] = importPath; } } } + + this.exampleTabs.set(tabs); } } From 747218ba2fce8bac943915bb06e09c6fb4bbef2d Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Tue, 24 Jun 2025 17:35:09 +0200 Subject: [PATCH 124/145] fix(material/input): revert wheel workaround (#31391) Reverts the workaround from #29074, because it appears to make the behavior inconsistent between browsers and users don't have an easy way to opt out. Instead of adding the event from Material, users that care about this behavior can add a `wheel` event themselves. Fixes #31372. (cherry picked from commit 663d8160eea50cf7c90207cc2611bbc2bac5813e) --- src/material/input/input.ts | 32 -------------------------------- 1 file changed, 32 deletions(-) diff --git a/src/material/input/input.ts b/src/material/input/input.ts index b286d3aad979..5b45db32da37 100644 --- a/src/material/input/input.ts +++ b/src/material/input/input.ts @@ -214,7 +214,6 @@ export class MatInput return this._type; } set type(value: string) { - const prevType = this._type; this._type = value || 'text'; this._validateType(); @@ -224,10 +223,6 @@ export class MatInput if (!this._isTextarea && getSupportedInputTypes().has(this._type)) { (this._elementRef.nativeElement as HTMLInputElement).type = this._type; } - - if (this._type !== prevType) { - this._ensureWheelDefaultBehavior(); - } } protected _type = 'text'; @@ -610,33 +605,6 @@ export class MatInput } }; - private _webkitBlinkWheelListener = (): void => { - // This is a noop function and is used to enable mouse wheel input - // on number inputs - // on blink and webkit browsers. - }; - - /** - * In blink and webkit browsers a focused number input does not increment or decrement its value - * on mouse wheel interaction unless a wheel event listener is attached to it or one of its - * ancestors or a passive wheel listener is attached somewhere in the DOM. For example: Hitting - * a tooltip once enables the mouse wheel input for all number inputs as long as it exists. In - * order to get reliable and intuitive behavior we apply a wheel event on our own thus making - * sure increment and decrement by mouse wheel works every time. - * @docs-private - */ - private _ensureWheelDefaultBehavior(): void { - this._cleanupWebkitWheel?.(); - - if (this._type === 'number' && (this._platform.BLINK || this._platform.WEBKIT)) { - this._cleanupWebkitWheel = this._renderer.listen( - this._elementRef.nativeElement, - 'wheel', - this._webkitBlinkWheelListener, - ); - } - } - /** Gets the value to set on the `readonly` attribute. */ protected _getReadonlyAttribute(): string | null { if (this._isNativeSelect) { From c3bb067bf2e135d4086837a55aad476825c21b24 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Tue, 24 Jun 2025 17:50:45 +0200 Subject: [PATCH 125/145] fix(material/input): remove native clear button (#31394) Updates our CSS resets to remove the native clear button on `type="search"`. This is similar to what we do for other input types. Fixes #31298. (cherry picked from commit 0bdf5127542572e41160a8d8e3e1784000ea5e9a) --- src/material/form-field/_mdc-text-field-structure.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/material/form-field/_mdc-text-field-structure.scss b/src/material/form-field/_mdc-text-field-structure.scss index 240a6c615467..f9b63d6cca94 100644 --- a/src/material/form-field/_mdc-text-field-structure.scss +++ b/src/material/form-field/_mdc-text-field-structure.scss @@ -44,7 +44,8 @@ $fallbacks: m3-form-field.get-tokens(); // Note that while this style and the `-ms-clear` are identical, we can't combine // them because if one of them isn't supported, it'll invalidate the whole rule. - &::-webkit-calendar-picker-indicator { + &::-webkit-calendar-picker-indicator, + &::-webkit-search-cancel-button { display: none; } From 3b31dacc09f5040e5b4dc3e33bec39bad3b339f7 Mon Sep 17 00:00:00 2001 From: Matti LeBlanc Date: Wed, 25 Jun 2025 17:12:01 +1000 Subject: [PATCH 126/145] fix(youtube-player): invalid URL when playlist is passed in without videoId (#31403) * Fix null issue in url youtube url when running a playlist with no videoId When playing a playlist via playerVars.list = [playlistId] we dont have a videoId available yet. Plus we don't need one, Youtube will start at the first video of the playlist by default. By injecting an undefined videoId in the YT Player constructur, we end up with null value in the iframe url (`ps://www.youtube.com/embed/null?cc_load_policy=1&enablejsapi=1&controls=1&showinfo=0&rel=0&listType=playlist&list=PLxf07yK_HAvdwhW-L0X3uP5aMe6eEt50v`) which is causing an Invalid Video Id error for consumers. * Update youtube-player.ts apply YT.PlayerOptions to params * Update youtube-player.ts fix formatting * Update youtube-player.spec.ts fix unit test * Update youtube-player.ts Fix formatting (cherry picked from commit 2c87ec31b5a3c6ca6fdfc19d99166aa20865f6e0) --- src/youtube-player/youtube-player.spec.ts | 2 +- src/youtube-player/youtube-player.ts | 31 +++++++++++++---------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/youtube-player/youtube-player.spec.ts b/src/youtube-player/youtube-player.spec.ts index b0cfafebdb2a..ab552cc0b6bf 100644 --- a/src/youtube-player/youtube-player.spec.ts +++ b/src/youtube-player/youtube-player.spec.ts @@ -515,7 +515,7 @@ describe('YoutubePlayer', () => { let calls = playerCtorSpy.calls.all(); expect(calls.length).toBe(1); - expect(calls[0].args[1]).toEqual(jasmine.objectContaining({playerVars, videoId: undefined})); + expect(calls[0].args[1]).toEqual(jasmine.objectContaining({playerVars})); playerSpy.destroy.calls.reset(); playerCtorSpy.calls.reset(); diff --git a/src/youtube-player/youtube-player.ts b/src/youtube-player/youtube-player.ts index c5008ceb3ae6..e88844e39f99 100644 --- a/src/youtube-player/youtube-player.ts +++ b/src/youtube-player/youtube-player.ts @@ -587,17 +587,22 @@ export class YouTubePlayer implements AfterViewInit, OnChanges, OnDestroy { // Important! We need to create the Player object outside of the `NgZone`, because it kicks // off a 250ms setInterval which will continually trigger change detection if we don't. + const params: YT.PlayerOptions = { + host: this.disableCookies ? 'https://www.youtube-nocookie.com' : undefined, + width: this.width, + height: this.height, + // Calling `playVideo` on load doesn't appear to actually play + // the video so we need to trigger it through `playerVars` instead. + playerVars: playVideo ? {...(this.playerVars || {}), autoplay: 1} : this.playerVars, + }; + // We only want to injecct a videoId if one is provided, otherwise loading a playlist via + // playerVars.list, the missing videoId will create a null value in the youtube iframe url + // and that can trigger a JS error `Invalid video id` in widget api. + if (this.videoId) { + params.videoId = this.videoId; + } const player = this._ngZone.runOutsideAngular( - () => - new YT.Player(this.youtubeContainer.nativeElement, { - videoId: this.videoId, - host: this.disableCookies ? 'https://www.youtube-nocookie.com' : undefined, - width: this.width, - height: this.height, - // Calling `playVideo` on load doesn't appear to actually play - // the video so we need to trigger it through `playerVars` instead. - playerVars: playVideo ? {...(this.playerVars || {}), autoplay: 1} : this.playerVars, - }), + () => new YT.Player(this.youtubeContainer.nativeElement, params), ); const whenReady = (event: YT.PlayerEvent) => { @@ -710,9 +715,9 @@ export class YouTubePlayer implements AfterViewInit, OnChanges, OnDestroy { player.addEventListener(name, listener); }, listener => { - // The API seems to throw when we try to unbind from a destroyed player and it doesn't - // expose whether the player has been destroyed so we have to wrap it in a try/catch to - // prevent the entire stream from erroring out. + // The API seems to throw when we try to unbind from a destroyed player and it + // doesn'texpose whether the player has been destroyed so we have to wrap it in a + // try/catch to prevent the entire stream from erroring out. try { player?.removeEventListener?.(name, listener); } catch {} From 3ff0547df3d67f0b567bf4038f5dacafcb7634dd Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 25 Jun 2025 01:18:40 -0600 Subject: [PATCH 127/145] build: update dependency node to v22.17.0 (#31428) See associated pull request for more information. (cherry picked from commit 053085be2b93d51ea96545e2c7e26d24dd890de9) --- .nvmrc | 2 +- docs/.nvmrc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.nvmrc b/.nvmrc index 5b540673a828..fc37597bccdb 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22.16.0 +22.17.0 diff --git a/docs/.nvmrc b/docs/.nvmrc index 5b540673a828..fc37597bccdb 100644 --- a/docs/.nvmrc +++ b/docs/.nvmrc @@ -1 +1 @@ -22.16.0 +22.17.0 From 6f445d1fac5f4d3c61c6e34afd0c54fbb73064da Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Wed, 25 Jun 2025 01:58:56 -0600 Subject: [PATCH 128/145] build: update dependency zx to v8 (#31435) See associated pull request for more information. (cherry picked from commit b80dd5535ecd31bd24fe8024a95f3825d15f47b3) --- package.json | 2 +- pnpm-lock.yaml | 74 ++++---------------------------------------------- 2 files changed, 7 insertions(+), 69 deletions(-) diff --git a/package.json b/package.json index 56614bf828a9..5dd4e9a70951 100644 --- a/package.json +++ b/package.json @@ -154,7 +154,7 @@ "vrsource-tslint-rules": "6.0.0", "yaml": "^1.10.2", "yargs": "^17.3.1", - "zx": "^6.2.4" + "zx": "^8.0.0" }, "pnpm": { "overrides": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 84eb3c098492..99c59aaa5207 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -363,8 +363,8 @@ importers: specifier: ^17.3.1 version: 17.7.2 zx: - specifier: ^6.2.4 - version: 6.2.5 + specifier: ^8.0.0 + version: 8.6.0 docs: dependencies: @@ -2931,9 +2931,6 @@ packages: '@types/fs-extra@11.0.4': resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} - '@types/fs-extra@9.0.13': - resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} - '@types/glob@7.2.0': resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} @@ -2991,9 +2988,6 @@ packages: '@types/node-forge@1.3.11': resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - '@types/node@17.0.45': - resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@22.14.1': resolution: {integrity: sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==} @@ -3003,9 +2997,6 @@ packages: '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - '@types/ps-tree@1.1.6': - resolution: {integrity: sha512-PtrlVaOaI44/3pl3cvnlK+GxOM3re2526TJvPvh7W+keHIXdV4TE0ylpPBAcvFQCbGitaTXwL9u+RF7qtVeazQ==} - '@types/pumpify@1.4.4': resolution: {integrity: sha512-+cWbQUecD04MQYkjNBhPmcUIP368aloYmqm+ImdMKA8rMpxRNAhZAD6gIj+sAVTF1DliqrT/qUp6aGNi/9U3tw==} @@ -3083,9 +3074,6 @@ packages: '@types/vfile@3.0.2': resolution: {integrity: sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw==} - '@types/which@2.0.2': - resolution: {integrity: sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==} - '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} @@ -5160,10 +5148,6 @@ packages: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} - globby@13.2.2: - resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - globby@5.0.0: resolution: {integrity: sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ==} engines: {node: '>=0.10.0'} @@ -8092,10 +8076,6 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - slash@4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} - slice-ansi@4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} @@ -9289,11 +9269,6 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - yaml@2.7.1: - resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} - engines: {node: '>= 14'} - hasBin: true - yaml@2.8.0: resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} engines: {node: '>= 14.6'} @@ -9348,9 +9323,9 @@ packages: zone.js@0.15.0: resolution: {integrity: sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==} - zx@6.2.5: - resolution: {integrity: sha512-aTEZSL8sp1IhMUhxlXRTPH6MwzcuTBA3G4LLuH68NIj8kENfcaVGV7cn8LQXXHwG1M9LDI6ST6Qcw0EOrhRAVA==} - engines: {node: '>= 16.0.0'} + zx@8.6.0: + resolution: {integrity: sha512-CpOskNj7nNW19z5DkOTHX24Yh1qnnx1oANn8EnD3QbCUBnZpuennJaYkb4zea5GJCxT6/IdxeiA5nweQ1S2YtA==} + engines: {node: '>= 12.17.0'} hasBin: true snapshots: @@ -11790,10 +11765,6 @@ snapshots: '@types/jsonfile': 6.1.4 '@types/node': 22.14.1 - '@types/fs-extra@9.0.13': - dependencies: - '@types/node': 22.14.1 - '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 @@ -11849,8 +11820,6 @@ snapshots: dependencies: '@types/node': 22.14.1 - '@types/node@17.0.45': {} - '@types/node@22.14.1': dependencies: undici-types: 6.21.0 @@ -11859,8 +11828,6 @@ snapshots: '@types/parse-json@4.0.2': {} - '@types/ps-tree@1.1.6': {} - '@types/pumpify@1.4.4': dependencies: '@types/duplexify': 3.6.4 @@ -11948,8 +11915,6 @@ snapshots: '@types/unist': 3.0.3 '@types/vfile-message': 2.0.0 - '@types/which@2.0.2': {} - '@types/ws@8.18.1': dependencies: '@types/node': 22.14.1 @@ -14526,14 +14491,6 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globby@13.2.2: - dependencies: - dir-glob: 3.0.1 - fast-glob: 3.3.3 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 4.0.0 - globby@5.0.0: dependencies: array-union: 1.0.2 @@ -18049,8 +18006,6 @@ snapshots: slash@3.0.0: {} - slash@4.0.0: {} - slice-ansi@4.0.0: dependencies: ansi-styles: 4.3.0 @@ -19517,8 +19472,6 @@ snapshots: yaml@1.10.2: {} - yaml@2.7.1: {} - yaml@2.8.0: {} yargs-parser@18.1.3: @@ -19585,19 +19538,4 @@ snapshots: zone.js@0.15.0: {} - zx@6.2.5: - dependencies: - '@types/fs-extra': 9.0.13 - '@types/minimist': 1.2.5 - '@types/node': 17.0.45 - '@types/ps-tree': 1.1.6 - '@types/which': 2.0.2 - chalk: 5.4.1 - fs-extra: 10.1.0 - globby: 13.2.2 - ignore: 5.3.2 - minimist: 1.2.8 - node-fetch: 3.3.2 - ps-tree: 1.2.0 - which: 2.0.2 - yaml: 2.7.1 + zx@8.6.0: {} From 59be54616446b596fa36182cad9ac29f243e564c Mon Sep 17 00:00:00 2001 From: Karan Mistry Date: Wed, 25 Jun 2025 14:49:56 +0530 Subject: [PATCH 129/145] fix(cdk/menu): close sibling triggers when opening a menu (#30894) Currently, when any sibling menu is opened then it overlaps and in cases it makes the screen unresponsive. This fix will close any sibling menu if its open Fixes #30881 (cherry picked from commit 423029287ca82d9ac834f309258056dd5815b6bb) --- goldens/cdk/menu/index.api.md | 21 ++++++++++-------- src/cdk/menu/context-menu-trigger.ts | 32 ++++++++++------------------ src/cdk/menu/menu-trigger-base.ts | 22 +++++++++++++++++++ src/cdk/menu/menu-trigger.ts | 8 ++++++- 4 files changed, 52 insertions(+), 31 deletions(-) diff --git a/goldens/cdk/menu/index.api.md b/goldens/cdk/menu/index.api.md index 1f48227d1088..4767d3c5f1ae 100644 --- a/goldens/cdk/menu/index.api.md +++ b/goldens/cdk/menu/index.api.md @@ -229,6 +229,7 @@ export class CdkMenuTrigger extends CdkMenuTriggerBase implements OnChanges, OnD // @public export abstract class CdkMenuTriggerBase implements OnDestroy { protected childMenu?: Menu; + abstract close(): void; readonly closed: EventEmitter; protected readonly destroyed: Subject; protected getMenuContentPortal(): TemplatePortal; @@ -273,15 +274,6 @@ export type ContextMenuCoordinates = { y: number; }; -// @public -export class ContextMenuTracker { - update(trigger: CdkContextMenuTrigger): void; - // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; - // (undocumented) - static ɵprov: i0.ɵɵInjectableDeclaration; -} - // @public export interface FocusableElement { _elementRef: ElementRef; @@ -358,6 +350,17 @@ export interface MenuStackItem { menuStack?: MenuStack; } +// @public +class MenuTracker { + update(trigger: CdkMenuTriggerBase): void; + // (undocumented) + static ɵfac: i0.ɵɵFactoryDeclaration; + // (undocumented) + static ɵprov: i0.ɵɵInjectableDeclaration; +} +export { MenuTracker as ContextMenuTracker } +export { MenuTracker } + // @public export const PARENT_OR_NEW_INLINE_MENU_STACK_PROVIDER: (orientation: "vertical" | "horizontal") => { provide: InjectionToken; diff --git a/src/cdk/menu/context-menu-trigger.ts b/src/cdk/menu/context-menu-trigger.ts index 2c2640d4b2c1..bf1b5a86ea67 100644 --- a/src/cdk/menu/context-menu-trigger.ts +++ b/src/cdk/menu/context-menu-trigger.ts @@ -11,7 +11,6 @@ import { ChangeDetectorRef, Directive, inject, - Injectable, Injector, Input, OnDestroy, @@ -28,7 +27,7 @@ import {_getEventTarget} from '../platform'; import {merge, partition} from 'rxjs'; import {skip, takeUntil, skipWhile} from 'rxjs/operators'; import {MENU_STACK, MenuStack} from './menu-stack'; -import {CdkMenuTriggerBase, MENU_TRIGGER} from './menu-trigger-base'; +import {CdkMenuTriggerBase, MENU_TRIGGER, MenuTracker} from './menu-trigger-base'; /** The preferred menu positions for the context menu. */ const CONTEXT_MENU_POSITIONS = STANDARD_DROPDOWN_BELOW_POSITIONS.map(position => { @@ -39,23 +38,11 @@ const CONTEXT_MENU_POSITIONS = STANDARD_DROPDOWN_BELOW_POSITIONS.map(position => return {...position, offsetX, offsetY}; }); -/** Tracks the last open context menu trigger across the entire application. */ -@Injectable({providedIn: 'root'}) -export class ContextMenuTracker { - /** The last open context menu trigger. */ - private static _openContextMenuTrigger?: CdkContextMenuTrigger; - - /** - * Close the previous open context menu and set the given one as being open. - * @param trigger The trigger for the currently open Context Menu. - */ - update(trigger: CdkContextMenuTrigger) { - if (ContextMenuTracker._openContextMenuTrigger !== trigger) { - ContextMenuTracker._openContextMenuTrigger?.close(); - ContextMenuTracker._openContextMenuTrigger = trigger; - } - } -} +/** + * @deprecated Will be removed. Use `MenuTracker` instead. + * @breaking-change 22.0.0 + */ +export {MenuTracker as ContextMenuTracker}; /** The coordinates where the context menu should open. */ export type ContextMenuCoordinates = {x: number; y: number}; @@ -85,7 +72,10 @@ export type ContextMenuCoordinates = {x: number; y: number}; export class CdkContextMenuTrigger extends CdkMenuTriggerBase implements OnDestroy { private readonly _injector = inject(Injector); private readonly _directionality = inject(Directionality, {optional: true}); - private readonly _contextMenuTracker = inject(ContextMenuTracker); + + /** The app's menu tracking registry */ + private readonly _menuTracker = inject(MenuTracker); + private readonly _changeDetectorRef = inject(ChangeDetectorRef); /** Whether the context menu is disabled. */ @@ -124,7 +114,7 @@ export class CdkContextMenuTrigger extends CdkMenuTriggerBase implements OnDestr // resulting in multiple stacked context menus being displayed. event.stopPropagation(); - this._contextMenuTracker.update(this); + this._menuTracker.update(this); this._open(event, {x: event.clientX, y: event.clientY}); // A context menu can be triggered via a mouse right click or a keyboard shortcut. diff --git a/src/cdk/menu/menu-trigger-base.ts b/src/cdk/menu/menu-trigger-base.ts index d0ba4728920a..7656603cc00a 100644 --- a/src/cdk/menu/menu-trigger-base.ts +++ b/src/cdk/menu/menu-trigger-base.ts @@ -10,6 +10,7 @@ import { Directive, EventEmitter, inject, + Injectable, InjectionToken, Injector, OnDestroy, @@ -42,6 +43,24 @@ export const MENU_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>( }, ); +/** Tracks the last open menu trigger across the entire application. */ +@Injectable({providedIn: 'root'}) +export class MenuTracker { + /** The last open menu trigger. */ + private static _openMenuTrigger?: CdkMenuTriggerBase; + + /** + * Close the previous open menu and set the given one as being open. + * @param trigger The trigger for the currently open Menu. + */ + update(trigger: CdkMenuTriggerBase) { + if (MenuTracker._openMenuTrigger !== trigger) { + MenuTracker._openMenuTrigger?.close(); + MenuTracker._openMenuTrigger = trigger; + } + } +} + /** * Abstract directive that implements shared logic common to all menu triggers. * This class can be extended to create custom menu trigger types. @@ -83,6 +102,9 @@ export abstract class CdkMenuTriggerBase implements OnDestroy { /** Context data to be passed along to the menu template */ menuData: unknown; + /** Close the opened menu. */ + abstract close(): void; + /** A reference to the overlay which manages the triggered menu */ protected overlayRef: OverlayRef | null = null; diff --git a/src/cdk/menu/menu-trigger.ts b/src/cdk/menu/menu-trigger.ts index 6fa7c834fe74..d37ab81a4205 100644 --- a/src/cdk/menu/menu-trigger.ts +++ b/src/cdk/menu/menu-trigger.ts @@ -43,7 +43,7 @@ import {takeUntil} from 'rxjs/operators'; import {CDK_MENU, Menu} from './menu-interface'; import {PARENT_OR_NEW_MENU_STACK_PROVIDER} from './menu-stack'; import {MENU_AIM} from './menu-aim'; -import {CdkMenuTriggerBase, MENU_TRIGGER} from './menu-trigger-base'; +import {CdkMenuTriggerBase, MENU_TRIGGER, MenuTracker} from './menu-trigger-base'; import {eventDispatchesNativeClick} from './event-detection'; /** @@ -86,6 +86,9 @@ export class CdkMenuTrigger extends CdkMenuTriggerBase implements OnChanges, OnD private readonly _injector = inject(Injector); private _cleanupMouseenter: () => void; + /** The app's menu tracking registry */ + private readonly _menuTracker = inject(MenuTracker); + /** The parent menu this trigger belongs to. */ private readonly _parentMenu = inject(CDK_MENU, {optional: true}); @@ -109,6 +112,9 @@ export class CdkMenuTrigger extends CdkMenuTriggerBase implements OnChanges, OnD /** Open the attached menu. */ open() { + if (!this._parentMenu) { + this._menuTracker.update(this); + } if (!this.isOpen() && this.menuTemplateRef != null) { this.opened.next(); From 76451c5f481bc6be55fa0a1cd1b431d1cc1ac505 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Wed, 25 Jun 2025 17:26:22 +0200 Subject: [PATCH 130/145] build: fix failing firefox tests on main (#31441) Changes the version of `rules_browsers` which include a fix that should resolve the failing Firefox tests on the `main` branch. (cherry picked from commit 81fbf0ff979dd4488baaf6552a2d2f8a34e53354) --- WORKSPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WORKSPACE b/WORKSPACE index d05c4e4c578f..a2ad417398e0 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -238,7 +238,7 @@ esbuild_register_toolchains( git_repository( name = "rules_browsers", - commit = "fd3b3d37662206a19eaa34f157c757b3291978dc", + commit = "0952071cdc67acf1124c20c32a9b7e2e85da0aa3", remote = "https://github.com/devversion/rules_browsers.git", ) From 7b876772c079b791fe22e5001e683eb8c918a7d2 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Wed, 25 Jun 2025 16:05:23 +0000 Subject: [PATCH 131/145] release: cut the v20.0.4 release --- CHANGELOG.md | 20 ++++++++++++++++++++ package.json | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 96362a9db8f8..3f3c68183b31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,23 @@ + +# 20.0.4 "strontium-shack" (2025-06-25) +### cdk +| Commit | Type | Description | +| -- | -- | -- | +| [59be54616](https://github.com/angular/components/commit/59be54616446b596fa36182cad9ac29f243e564c) | fix | **menu:** close sibling triggers when opening a menu ([#30894](https://github.com/angular/components/pull/30894)) | +### material +| Commit | Type | Description | +| -- | -- | -- | +| [88bc13d88](https://github.com/angular/components/commit/88bc13d88639aff36eacd33cd3d958c1993e6f57) | fix | **button:** harness not picking up buttons with dynamic appearance ([#31327](https://github.com/angular/components/pull/31327)) | +| [c1b9682e4](https://github.com/angular/components/commit/c1b9682e49699fe02693a68def16e5c26302d547) | fix | **button:** update button golden ([#31346](https://github.com/angular/components/pull/31346)) | +| [c3bb067bf](https://github.com/angular/components/commit/c3bb067bf2e135d4086837a55aad476825c21b24) | fix | **input:** remove native clear button ([#31394](https://github.com/angular/components/pull/31394)) | +| [747218ba2](https://github.com/angular/components/commit/747218ba2fce8bac943915bb06e09c6fb4bbef2d) | fix | **input:** revert wheel workaround ([#31391](https://github.com/angular/components/pull/31391)) | +### youtube-player +| Commit | Type | Description | +| -- | -- | -- | +| [3b31dacc0](https://github.com/angular/components/commit/3b31dacc09f5040e5b4dc3e33bec39bad3b339f7) | fix | invalid URL when playlist is passed in without videoId ([#31403](https://github.com/angular/components/pull/31403)) | + + + # 20.0.3 "plastic-tube" (2025-06-11) ### material diff --git a/package.json b/package.json index 5dd4e9a70951..2d5d8f55987a 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "ci-notify-slack-failure": "node --no-warnings=ExperimentalWarning --loader ts-node/esm/transpile-only scripts/circleci/notify-slack-job-failure.mts", "prepare": "husky" }, - "version": "20.0.3", + "version": "20.0.4", "dependencies": { "@angular-devkit/core": "catalog:", "@angular-devkit/schematics": "catalog:", From ca00dfb9589ea220f4ec561db48fcf279eeabe71 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Wed, 25 Jun 2025 18:18:15 +0200 Subject: [PATCH 132/145] build: links to headers not working (#31436) Fixes that a previous commit stopped setting the `example` on the `HeaderLink` which means that its link isn't constructed correctly. (cherry picked from commit ea7148ca89841f54726895b98f425c25fa167180) --- docs/src/app/shared/doc-viewer/doc-viewer.ts | 18 ++++++++++------- docs/src/app/shared/doc-viewer/header-link.ts | 20 +++++++------------ 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/docs/src/app/shared/doc-viewer/doc-viewer.ts b/docs/src/app/shared/doc-viewer/doc-viewer.ts index 89b3b73cc81b..ed1b7b05f682 100644 --- a/docs/src/app/shared/doc-viewer/doc-viewer.ts +++ b/docs/src/app/shared/doc-viewer/doc-viewer.ts @@ -187,13 +187,17 @@ export class DocViewer implements OnDestroy { const examplePortal = new ComponentPortal(componentClass, this._viewContainerRef); const exampleViewer = portalHost.attach(examplePortal); const exampleViewerComponent = exampleViewer.instance; - if (example !== null && componentClass === ExampleViewer) { - DocViewer._initExampleViewer( - exampleViewerComponent as ExampleViewer, - example, - file, - region, - ); + if (example !== null) { + if (componentClass === ExampleViewer) { + DocViewer._initExampleViewer( + exampleViewerComponent as ExampleViewer, + example, + file, + region, + ); + } else { + (exampleViewerComponent as HeaderLink).example.set(example); + } } this._portalHosts.push(portalHost); }); diff --git a/docs/src/app/shared/doc-viewer/header-link.ts b/docs/src/app/shared/doc-viewer/header-link.ts index a518be234af6..889e078095a8 100644 --- a/docs/src/app/shared/doc-viewer/header-link.ts +++ b/docs/src/app/shared/doc-viewer/header-link.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import {Component, inject} from '@angular/core'; +import {Component, computed, inject, signal} from '@angular/core'; import {Router} from '@angular/router'; import {MatIcon} from '@angular/material/icon'; @@ -18,7 +18,7 @@ import {MatIcon} from '@angular/material/icon'; selector: 'header-link', template: ` + [attr.aria-describedby]="example()" [href]="_fragmentUrl()"> link `, @@ -29,18 +29,12 @@ export class HeaderLink { * Id of the anchor element. Note that is uses "example" because we instantiate the * header link components through the ComponentPortal. */ - example: string = ''; + readonly example = signal(''); /** Base URL that is used to build an absolute fragment URL. */ - private _baseUrl: string; + private _baseUrl = inject(Router).url.split('#')[0]; - constructor() { - const router = inject(Router); - - this._baseUrl = router.url.split('#')[0]; - } - - _getFragmentUrl(): string { - return `${this._baseUrl}#${this.example}`; - } + protected readonly _fragmentUrl = computed(() => { + return `${this._baseUrl}#${this.example()}`; + }); } From bdfeb04c3a220121d7b98b9ac8147e0cfdcdfeb6 Mon Sep 17 00:00:00 2001 From: Terence Honles Date: Thu, 26 Jun 2025 00:34:24 -0700 Subject: [PATCH 133/145] fix(google-maps): fix update schematic (#31448) This change fixes the `updateToV20` schematic which should be a factory function not the schematic itself. (cherry picked from commit 4052130ee0dc627242a7f863f84eced4a0af048f) --- src/google-maps/schematics/ng-update/index.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/google-maps/schematics/ng-update/index.ts b/src/google-maps/schematics/ng-update/index.ts index e195902f23b5..ca337a1bd02b 100644 --- a/src/google-maps/schematics/ng-update/index.ts +++ b/src/google-maps/schematics/ng-update/index.ts @@ -6,5 +6,9 @@ * found in the LICENSE file at https://angular.dev/license */ +import {Rule} from '@angular-devkit/schematics'; + /** Entry point for the migration schematics with target of Angular Material v20 */ -export function updateToV20(): void {} +export function updateToV20(): Rule { + return () => {}; +} From ed5a1e0ca3d97fa7719aa657f569ac1cdfe7c552 Mon Sep 17 00:00:00 2001 From: Pascal Weyrich Date: Thu, 26 Jun 2025 10:59:52 +0200 Subject: [PATCH 134/145] docs: correct treeNodeDef selectors (#31421) (cherry picked from commit b5fbf52fff33101a16595d274c425a377dfc9228) --- src/cdk/tree/tree.md | 18 +++++++++--------- src/material/tree/tree.md | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/cdk/tree/tree.md b/src/cdk/tree/tree.md index 30de3315ce20..9f8e0c7163f8 100644 --- a/src/cdk/tree/tree.md +++ b/src/cdk/tree/tree.md @@ -55,11 +55,11 @@ In order to use the tree, you must define a tree node template. There are two ty template defines the look of the tree node, expansion/collapsing control and the structure for nested children nodes. -A node definition is specified via any element with `cdkNodeDef`. This directive exports the node +A node definition is specified via any element with `cdkTreeNodeDef`. This directive exports the node data to be used in any bindings in the node template. ```html - + {{node.key}}: {{node.value}} ``` @@ -80,7 +80,7 @@ When using nested tree nodes, the node template must contain a `cdkTreeNodeOutle where the children of the node will be rendered. ```html - + {{node.value}} @@ -96,7 +96,7 @@ a tree node recursively by setting `[cdkTreeNodeToggleRecursive]` to true. activation. For icon buttons, ensure that `aria-label` is provided. ```html - + @@ -110,7 +110,7 @@ The `cdkTreeNodePadding` directive can be placed in a flat tree's node template information of a flat tree node. ```html - + {{node.value}} ``` @@ -125,10 +125,10 @@ The tree may include multiple node templates, where a template is chosen for a particular data node via the `when` predicate of the template. ```html - + {{node.value}} - + [ A special node {{node.value}} ] ``` @@ -200,11 +200,11 @@ interaction. ```html ``` In this example, `$event` contains the node's data and is equivalent to the implicit data passed in -the `cdkNodeDef` context. +the `cdkTreeNodeDef` context. diff --git a/src/material/tree/tree.md b/src/material/tree/tree.md index a9eba1238d0c..e2411fa4cda0 100644 --- a/src/material/tree/tree.md +++ b/src/material/tree/tree.md @@ -55,11 +55,11 @@ In order to use the tree, you must define a tree node template. There are two ty template defines the look of the tree node, expansion/collapsing control and the structure for nested children nodes. -A node definition is specified via any element with `matNodeDef`. This directive exports the node +A node definition is specified via any element with `matTreeNodeDef`. This directive exports the node data to be used in any bindings in the node template. ```html - + {{node.key}}: {{node.value}} ``` @@ -80,7 +80,7 @@ When using nested tree nodes, the node template must contain a `matTreeNodeOutle where the children of the node will be rendered. ```html - + {{node.value}} @@ -96,7 +96,7 @@ a tree node recursively by setting `[matTreeNodeToggleRecursive]` to true. activation. For icon buttons, ensure that `aria-label` is provided. ```html - + @@ -119,7 +119,7 @@ The `matTreeNodePadding` can be placed in a flat tree's node template to display information of a flat tree node. ```html - + {{node.value}} ``` @@ -134,10 +134,10 @@ The tree may include multiple node templates, where a template is chosen for a particular data node via the `when` predicate of the template. ```html - + {{node.value}} - + [ A special node {{node.value}} ] ``` @@ -209,11 +209,11 @@ interaction. ```html ``` In this example, `$event` contains the node's data and is equivalent to the implicit data passed in -the `matNodeDef` context. +the `matTreeNodeDef` context. From a6f449958345aad5bb4fae59906e1bab004277f9 Mon Sep 17 00:00:00 2001 From: Angular Robot Date: Fri, 27 Jun 2025 09:12:25 -0600 Subject: [PATCH 135/145] build: update github/codeql-action action to v3.29.1 (#31458) See associated pull request for more information. (cherry picked from commit 464adf010ca94f504e2f5c920c1cc2b5c6495826) --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 6e37f2cc52b5..4a7f801b2bea 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -47,6 +47,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: 'Upload to code-scanning' - uses: github/codeql-action/upload-sarif@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0 + uses: github/codeql-action/upload-sarif@39edc492dbe16b1465b0cafca41432d857bdb31a # v3.29.1 with: sarif_file: results.sarif From a5d5ed89f5bdc98351b7819ee31a500d55346d1d Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Tue, 1 Jul 2025 07:15:48 +0200 Subject: [PATCH 136/145] refactor(multiple): clean up usages of DOCUMENT (#31461) We had several places that were optionally injecting `DOCUMENT`, because historically it wasn't guaranteed to be there. That shouldn't be the case anymore so we can clean them up. (cherry picked from commit a6a385c887c994563af5ae7600c928ae0cae6718) --- goldens/cdk/a11y/index.api.md | 2 +- goldens/cdk/text-field/index.api.md | 2 +- src/cdk/a11y/focus-monitor/focus-monitor.ts | 14 ++++---------- src/cdk/dialog/dialog-container.ts | 2 +- src/cdk/scrolling/viewport-ruler.ts | 2 +- src/cdk/text-field/autosize.ts | 2 +- src/material/sidenav/drawer.ts | 6 ++---- 7 files changed, 11 insertions(+), 19 deletions(-) diff --git a/goldens/cdk/a11y/index.api.md b/goldens/cdk/a11y/index.api.md index ecd9b7654403..916d9c30d76c 100644 --- a/goldens/cdk/a11y/index.api.md +++ b/goldens/cdk/a11y/index.api.md @@ -175,7 +175,7 @@ export class FocusKeyManager extends ListKeyManager { // @public export class FocusMonitor implements OnDestroy { constructor(...args: unknown[]); - protected _document?: Document | null | undefined; + protected _document: Document; focusVia(element: HTMLElement, origin: FocusOrigin, options?: FocusOptions_2): void; focusVia(element: ElementRef, origin: FocusOrigin, options?: FocusOptions_2): void; monitor(element: HTMLElement, checkChildren?: boolean): Observable; diff --git a/goldens/cdk/text-field/index.api.md b/goldens/cdk/text-field/index.api.md index cb1f19df72e8..b9ab33d29cf3 100644 --- a/goldens/cdk/text-field/index.api.md +++ b/goldens/cdk/text-field/index.api.md @@ -51,7 +51,7 @@ export class CdkAutofill implements OnDestroy, OnInit { // @public export class CdkTextareaAutosize implements AfterViewInit, DoCheck, OnDestroy { constructor(...args: unknown[]); - protected _document?: Document | null | undefined; + protected _document: Document; get enabled(): boolean; set enabled(value: boolean); get maxRows(): number; diff --git a/src/cdk/a11y/focus-monitor/focus-monitor.ts b/src/cdk/a11y/focus-monitor/focus-monitor.ts index dc1770436476..948d0b78cf87 100644 --- a/src/cdk/a11y/focus-monitor/focus-monitor.ts +++ b/src/cdk/a11y/focus-monitor/focus-monitor.ts @@ -142,7 +142,7 @@ export class FocusMonitor implements OnDestroy { }; /** Used to reference correct document/window */ - protected _document? = inject(DOCUMENT, {optional: true}); + protected _document = inject(DOCUMENT); /** Subject for stopping our InputModalityDetector subscription. */ private readonly _stopInputModalityDetector = new Subject(); @@ -206,7 +206,7 @@ export class FocusMonitor implements OnDestroy { // If the element is inside the shadow DOM, we need to bind our focus/blur listeners to // the shadow root, rather than the `document`, because the browser won't emit focus events // to the `document`, if focus is moving within the same shadow root. - const rootNode = _getShadowRoot(nativeElement) || this._getDocument(); + const rootNode = _getShadowRoot(nativeElement) || this._document; const cachedInfo = this._elementInfo.get(nativeElement); // Check if we're already monitoring this element. @@ -280,7 +280,7 @@ export class FocusMonitor implements OnDestroy { options?: FocusOptions, ): void { const nativeElement = coerceElement(element); - const focusedElement = this._getDocument().activeElement; + const focusedElement = this._document.activeElement; // If the element is focused already, calling `focus` again won't trigger the event listener // which means that the focus classes won't be updated. If that's the case, update the classes @@ -303,15 +303,9 @@ export class FocusMonitor implements OnDestroy { this._elementInfo.forEach((_info, element) => this.stopMonitoring(element)); } - /** Access injected document if available or fallback to global document reference */ - private _getDocument(): Document { - return this._document || document; - } - /** Use defaultView of injected document if available or fallback to global window reference */ private _getWindow(): Window { - const doc = this._getDocument(); - return doc.defaultView || window; + return this._document.defaultView || window; } private _getFocusOrigin(focusEventTarget: HTMLElement | null): FocusOrigin { diff --git a/src/cdk/dialog/dialog-container.ts b/src/cdk/dialog/dialog-container.ts index 038a113a028c..67a21c365cd6 100644 --- a/src/cdk/dialog/dialog-container.ts +++ b/src/cdk/dialog/dialog-container.ts @@ -82,7 +82,7 @@ export class CdkDialogContainer private _renderer = inject(Renderer2); private _platform = inject(Platform); - protected _document = inject(DOCUMENT, {optional: true})!; + protected _document = inject(DOCUMENT); /** The portal outlet inside of this container into which the dialog content will be loaded. */ @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet: CdkPortalOutlet; diff --git a/src/cdk/scrolling/viewport-ruler.ts b/src/cdk/scrolling/viewport-ruler.ts index bd477c3ede4b..66ea77dd9f79 100644 --- a/src/cdk/scrolling/viewport-ruler.ts +++ b/src/cdk/scrolling/viewport-ruler.ts @@ -36,7 +36,7 @@ export class ViewportRuler implements OnDestroy { private readonly _change = new Subject(); /** Used to reference correct document/window */ - protected _document = inject(DOCUMENT, {optional: true})!; + protected _document = inject(DOCUMENT); constructor(...args: unknown[]); diff --git a/src/cdk/text-field/autosize.ts b/src/cdk/text-field/autosize.ts index 5abb0be0f97a..f7dd3cc9f267 100644 --- a/src/cdk/text-field/autosize.ts +++ b/src/cdk/text-field/autosize.ts @@ -122,7 +122,7 @@ export class CdkTextareaAutosize implements AfterViewInit, DoCheck, OnDestroy { private _cachedScrollTop: number; /** Used to reference correct document/window */ - protected _document? = inject(DOCUMENT, {optional: true}); + protected _document = inject(DOCUMENT); private _hasFocus: boolean; diff --git a/src/material/sidenav/drawer.ts b/src/material/sidenav/drawer.ts index 7b0bfe914e34..f3b288ef7f9c 100644 --- a/src/material/sidenav/drawer.ts +++ b/src/material/sidenav/drawer.ts @@ -182,7 +182,7 @@ export class MatDrawer implements AfterViewInit, OnDestroy { private _ngZone = inject(NgZone); private _renderer = inject(Renderer2); private readonly _interactivityChecker = inject(InteractivityChecker); - private _doc = inject(DOCUMENT, {optional: true})!; + private _doc = inject(DOCUMENT); _container? = inject(MAT_DRAWER_CONTAINER, {optional: true}); private _focusTrap: FocusTrap | null = null; @@ -347,9 +347,7 @@ export class MatDrawer implements AfterViewInit, OnDestroy { constructor() { this.openedChange.pipe(takeUntil(this._destroyed)).subscribe((opened: boolean) => { if (opened) { - if (this._doc) { - this._elementFocusedBeforeDrawerWasOpened = this._doc.activeElement as HTMLElement; - } + this._elementFocusedBeforeDrawerWasOpened = this._doc.activeElement as HTMLElement; this._takeFocus(); } else if (this._isFocusWithinDrawer()) { this._restoreFocus(this._openedVia || 'program'); From 45cc05641f89afb760077cb806af9814a01909e8 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Tue, 1 Jul 2025 07:16:14 +0200 Subject: [PATCH 137/145] fix(cdk/tree): remove leaking subscription (#31457) Fixes that we weren't unsubscribing from one observable in the tree. Fixes #31454. (cherry picked from commit 69e6600647b5c98236d87843a29a69acc990065b) --- src/cdk/tree/tree.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cdk/tree/tree.ts b/src/cdk/tree/tree.ts index 497ba28d4b86..e6e485e733f5 100644 --- a/src/cdk/tree/tree.ts +++ b/src/cdk/tree/tree.ts @@ -1400,6 +1400,7 @@ export class CdkTreeNode implements OnDestroy, OnInit, TreeKeyManagerI .changed.pipe( map(() => this.isExpanded), distinctUntilChanged(), + takeUntil(this._destroyed), ) .subscribe(() => this._changeDetectorRef.markForCheck()); this._tree._setNodeTypeIfUnset(this._type); From 0a7277d37ea75aefc6705ea19b42277e1ea38d8f Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Tue, 1 Jul 2025 07:17:39 +0200 Subject: [PATCH 138/145] build: enable type checking of host bindings in docs (#31467) The docs are on a separate tsconfig so they didn't have the config that enables type checking of their host bindings. (cherry picked from commit 933bc24546ed8692306ee3778743d7a1fe6763ce) --- docs/tsconfig.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/tsconfig.json b/docs/tsconfig.json index 0e7c0a779167..f999763b7602 100644 --- a/docs/tsconfig.json +++ b/docs/tsconfig.json @@ -31,6 +31,7 @@ "fullTemplateTypeCheck": true, "strictInjectionParameters": true, "strictInputAccessModifiers": true, - "strictTemplates": true + "strictTemplates": true, + "typeCheckHostBindings": true } } From 7556beaa7b20247d7c01f9e76d7097a0758f5ce7 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Tue, 1 Jul 2025 07:18:01 +0200 Subject: [PATCH 139/145] fix(material/schematics): typo in prompt question (#31449) Fixes a typo in one of the `theme-color` prompts. (cherry picked from commit 1bba607856641542993cc4068dd353796b763332) --- src/material/schematics/ng-generate/theme-color/schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/material/schematics/ng-generate/theme-color/schema.json b/src/material/schematics/ng-generate/theme-color/schema.json index 6adc7d434fd6..b8e36dc8ba4e 100644 --- a/src/material/schematics/ng-generate/theme-color/schema.json +++ b/src/material/schematics/ng-generate/theme-color/schema.json @@ -49,7 +49,7 @@ "type": "boolean", "default": true, "description": "Whether to generate output file in scss or CSS", - "x-prompt": "Do you want to generated file to be a scss file? This is the recommended way of setting up theming in your application. If not, a CSS file will be generated with all the system variables defined. (Leave blank to generate a scss file)" + "x-prompt": "Do you want the generated file to be a scss file? This is the recommended way of setting up theming in your application. If not, a CSS file will be generated with all the system variables defined. (Leave blank to generate a scss file)" } } } From 09d8aa464613b3f658180e65e131d255a378c558 Mon Sep 17 00:00:00 2001 From: Wagner Maciel Date: Wed, 2 Jul 2025 12:19:39 -0400 Subject: [PATCH 140/145] release: cut the v20.0.5 release --- CHANGELOG.md | 17 +++++++++++++++++ package.json | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f3c68183b31..ad466a0985ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,20 @@ + +# 20.0.5 "agardite-ant" (2025-07-02) +### cdk +| Commit | Type | Description | +| -- | -- | -- | +| [45cc05641](https://github.com/angular/components/commit/45cc05641f89afb760077cb806af9814a01909e8) | fix | **tree:** remove leaking subscription ([#31457](https://github.com/angular/components/pull/31457)) | +### material +| Commit | Type | Description | +| -- | -- | -- | +| [7556beaa7](https://github.com/angular/components/commit/7556beaa7b20247d7c01f9e76d7097a0758f5ce7) | fix | **schematics:** typo in prompt question ([#31449](https://github.com/angular/components/pull/31449)) | +### google-maps +| Commit | Type | Description | +| -- | -- | -- | +| [bdfeb04c3](https://github.com/angular/components/commit/bdfeb04c3a220121d7b98b9ac8147e0cfdcdfeb6) | fix | fix update schematic ([#31448](https://github.com/angular/components/pull/31448)) | + + + # 20.0.4 "strontium-shack" (2025-06-25) ### cdk diff --git a/package.json b/package.json index 2d5d8f55987a..2b6b137bce71 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "ci-notify-slack-failure": "node --no-warnings=ExperimentalWarning --loader ts-node/esm/transpile-only scripts/circleci/notify-slack-job-failure.mts", "prepare": "husky" }, - "version": "20.0.4", + "version": "20.0.5", "dependencies": { "@angular-devkit/core": "catalog:", "@angular-devkit/schematics": "catalog:", From 3a253398794ee3974b402df54845e1287dc87a90 Mon Sep 17 00:00:00 2001 From: Andrew Scott Date: Tue, 8 Jul 2025 00:12:18 -0700 Subject: [PATCH 141/145] test(cdk/scrolling): Change test spying on tick (#31247) tick is not called by schedulers anymore (they use an internal _tick) (cherry picked from commit 905835c0ba1cf0eb495fbab2cba0dd188f6956db) --- src/cdk/scrolling/virtual-scroll-viewport.spec.ts | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/src/cdk/scrolling/virtual-scroll-viewport.spec.ts b/src/cdk/scrolling/virtual-scroll-viewport.spec.ts index a023cb718439..2357db6d4f29 100644 --- a/src/cdk/scrolling/virtual-scroll-viewport.spec.ts +++ b/src/cdk/scrolling/virtual-scroll-viewport.spec.ts @@ -7,7 +7,6 @@ import { ScrollingModule, } from '../scrolling'; import { - ApplicationRef, Component, Directive, TrackByFunction, @@ -814,25 +813,17 @@ describe('CdkVirtualScrollViewport', () => { })); describe('viewChange change detection behavior', () => { - let appRef: ApplicationRef; - - beforeEach(() => { - appRef = TestBed.inject(ApplicationRef); - }); - - it('should not run change detection if there are no viewChange listeners', fakeAsync(() => { + it('should not emit viewChange if there are no listeners', fakeAsync(() => { + const viewChangeSpy = spyOn(testComponent.virtualForOf.viewChange, 'next'); finishInit(fixture); testComponent.items = Array(10).fill(0); fixture.changeDetectorRef.markForCheck(); fixture.detectChanges(); flush(); - spyOn(appRef, 'tick'); - viewport.scrollToIndex(5); triggerScroll(viewport); - - expect(appRef.tick).not.toHaveBeenCalled(); + expect(viewChangeSpy).not.toHaveBeenCalled(); })); }); }); From 7949a63d2899ca47c3495fda60638c752ee0e7a0 Mon Sep 17 00:00:00 2001 From: anglarett Date: Tue, 8 Jul 2025 19:06:08 +0200 Subject: [PATCH 142/145] Terms of Service (#31495) Adding a Terms of Service section. See for reference other repositories https://github.com/googlemaps/js-api-loader?tab=readme-ov-file#terms-of-service https://github.com/googlemaps/google-maps-services-js#terms-of-service (cherry picked from commit 1316951e8e1d868ca9d9e026140dac0482553a08) --- src/google-maps/README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/google-maps/README.md b/src/google-maps/README.md index e43b0cdb4df3..5b4488a6b575 100644 --- a/src/google-maps/README.md +++ b/src/google-maps/README.md @@ -86,3 +86,14 @@ zoom = 4; Not every option has its own input. See the API for each component to see if the option has a dedicated input or if it should be set in the options input. + +## Terms of Service + +This library uses Google Maps Platform services. Use of Google Maps Platform services through this library is subject to the Google Maps Platform [Terms of Service]. + +This library is not a Google Maps Platform Core Service. Therefore, the Google Maps Platform Terms of Service (e.g. Technical Support Services, Service Level Agreements, and Deprecation Policy) do not apply to the code in this library. + +### European Economic Area (EEA) developers + +If your billing address is in the European Economic Area, effective on 8 July 2025, the [Google Maps Platform EEA Terms of Service](https://cloud.google.com/terms/maps-platform/eea) will apply to your use of the Services. Functionality varies by region. [Learn more](https://developers.google.com/maps/comms/eea/faq). + From 2ad6786f00bb82ab0380ef85d6c766b139ffd32e Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Tue, 8 Jul 2025 19:07:29 +0200 Subject: [PATCH 143/145] build: clean up animations references in build files (#31498) Removes unnecessary references to the animations module from BUILD files. (cherry picked from commit efea6041e057607efbfa4ec7caf0d2952150038f) --- src/cdk/dialog/BUILD.bazel | 1 - src/e2e-app/BUILD.bazel | 1 - src/material/badge/BUILD.bazel | 1 - src/material/checkbox/BUILD.bazel | 1 - src/material/chips/BUILD.bazel | 2 -- src/material/slide-toggle/BUILD.bazel | 1 - 6 files changed, 7 deletions(-) diff --git a/src/cdk/dialog/BUILD.bazel b/src/cdk/dialog/BUILD.bazel index 252e8c6b2ee7..95735b0b92b3 100644 --- a/src/cdk/dialog/BUILD.bazel +++ b/src/cdk/dialog/BUILD.bazel @@ -17,7 +17,6 @@ ng_project( ), assets = [":dialog-container.css"] + glob(["**/*.html"]), deps = [ - "//:node_modules/@angular/animations", "//:node_modules/@angular/common", "//:node_modules/@angular/core", "//:node_modules/rxjs", diff --git a/src/e2e-app/BUILD.bazel b/src/e2e-app/BUILD.bazel index 659b2c473d52..9d6e7e992781 100644 --- a/src/e2e-app/BUILD.bazel +++ b/src/e2e-app/BUILD.bazel @@ -34,7 +34,6 @@ ng_project( exclude = ["index.html"], ), deps = [ - "//:node_modules/@angular/animations", "//:node_modules/@angular/core", "//:node_modules/@angular/forms", "//:node_modules/@angular/platform-browser", diff --git a/src/material/badge/BUILD.bazel b/src/material/badge/BUILD.bazel index b44cb37fab25..42c911bc9f0b 100644 --- a/src/material/badge/BUILD.bazel +++ b/src/material/badge/BUILD.bazel @@ -71,7 +71,6 @@ ng_project( ], assets = [":badge_css"], deps = [ - "//:node_modules/@angular/animations", "//:node_modules/@angular/common", "//:node_modules/@angular/core", "//:node_modules/@angular/platform-browser", diff --git a/src/material/checkbox/BUILD.bazel b/src/material/checkbox/BUILD.bazel index 443e706556eb..7316d2d58227 100644 --- a/src/material/checkbox/BUILD.bazel +++ b/src/material/checkbox/BUILD.bazel @@ -87,7 +87,6 @@ ng_project( ":css", ], deps = [ - "//:node_modules/@angular/animations", "//:node_modules/@angular/core", "//:node_modules/@angular/forms", "//src/material/core", diff --git a/src/material/chips/BUILD.bazel b/src/material/chips/BUILD.bazel index 9b5d385a2155..ff69bad4d322 100644 --- a/src/material/chips/BUILD.bazel +++ b/src/material/chips/BUILD.bazel @@ -96,7 +96,6 @@ ng_project( ":chip_set_css", ], deps = [ - "//:node_modules/@angular/animations", "//:node_modules/@angular/common", "//:node_modules/@angular/core", "//:node_modules/@angular/forms", @@ -116,7 +115,6 @@ ts_project( ), deps = [ ":chips", - "//:node_modules/@angular/animations", "//:node_modules/@angular/common", "//:node_modules/@angular/core", "//:node_modules/@angular/forms", diff --git a/src/material/slide-toggle/BUILD.bazel b/src/material/slide-toggle/BUILD.bazel index 6481aa1e20d9..f1c00a4dcd8d 100644 --- a/src/material/slide-toggle/BUILD.bazel +++ b/src/material/slide-toggle/BUILD.bazel @@ -77,7 +77,6 @@ ng_project( ":css", ], deps = [ - "//:node_modules/@angular/animations", "//:node_modules/@angular/core", "//:node_modules/@angular/forms", "//:node_modules/rxjs", From 1f15ad392ccb2e18f2fd6cccfcf41a77d78ea701 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Tue, 8 Jul 2025 20:12:23 +0200 Subject: [PATCH 144/145] fix(material/tabs): remove delay on touch devices (#31489) Fixes that the tabs had a small delay on touch devices. Fixes #31488. (cherry picked from commit 15d9ef55d3287b42a1a69029345451d5ed114c3b) --- src/material/tabs/_tabs-common.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/material/tabs/_tabs-common.scss b/src/material/tabs/_tabs-common.scss index ed8f1c06247e..7523f6010dfd 100644 --- a/src/material/tabs/_tabs-common.scss +++ b/src/material/tabs/_tabs-common.scss @@ -21,6 +21,7 @@ $mat-tab-animation-duration: 500ms !default; white-space: nowrap; cursor: pointer; z-index: 1; + touch-action: manipulation; } .mdc-tab__content { From 87df3fe72bb684a18ba1aaa8fdd0b7111e06c5e9 Mon Sep 17 00:00:00 2001 From: Andrew Seguin Date: Wed, 9 Jul 2025 11:27:05 -0600 Subject: [PATCH 145/145] release: cut the v20.0.6 release --- CHANGELOG.md | 9 +++++++++ package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ad466a0985ef..041032ccd16c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ + +# 20.0.6 "plastic-moon" (2025-07-09) +### material +| Commit | Type | Description | +| -- | -- | -- | +| [1f15ad392c](https://github.com/angular/components/commit/1f15ad392ccb2e18f2fd6cccfcf41a77d78ea701) | fix | **tabs:** remove delay on touch devices ([#31489](https://github.com/angular/components/pull/31489)) | + + + # 20.0.5 "agardite-ant" (2025-07-02) ### cdk diff --git a/package.json b/package.json index 2b6b137bce71..c682fb62fc47 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "ci-notify-slack-failure": "node --no-warnings=ExperimentalWarning --loader ts-node/esm/transpile-only scripts/circleci/notify-slack-job-failure.mts", "prepare": "husky" }, - "version": "20.0.5", + "version": "20.0.6", "dependencies": { "@angular-devkit/core": "catalog:", "@angular-devkit/schematics": "catalog:",