Compare commits

..

5921 Commits

Author SHA1 Message Date
Andrew Scott b2b903957a release: cut the v21.2.2 release 2026-03-09 11:11:43 -07:00
Matthieu Riegler bd72571583 refactor(devtools): prevent spamming the message bus
This commit adds some state on the bus to prevent sending unecessary messages to the main window.

(cherry picked from commit 263b819a75)
2026-03-09 10:46:08 -07:00
Kam 628f3f99db docs: add Turkish community translation of Angular documentation
add a link to the community-driven Turkish translation of Angular
documentation to make it easier for Turkish-speaking developers to
discover localized docs.

The translation project is maintained by the community and hosted at:
https://github.com/erkamyaman/angular-tr

Providing documentation in developers' native languages helps lower
the barrier to entry and supports wider Angular adoption in the
Turkish-speaking developer community.

(cherry picked from commit 03465360bd)
2026-03-09 10:29:25 -07:00
hawkgs 79ac570c26 refactor(devtools): fix browser-specific styles infra
Fix browser-specific styles infrastructure. PR #62786 cleans up part of the code, but there are still services that attempt to load these stylesheets on `main`.

(cherry picked from commit ed3dc10fea)
2026-03-09 10:22:02 -07:00
Angular Robot 276c12a349 build: update dependency node to v22.22.1
See associated pull request for more information.
2026-03-06 15:32:15 -08:00
Angular Robot 104ac117ea docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2026-03-06 15:04:42 -08:00
Angular Robot c2a74548d9 build: update all github actions
See associated pull request for more information.
2026-03-06 14:36:16 -08:00
Kristiyan Kostadinov e7d1d8def3 refactor(core): add tracing for component creation
Adds tracing support for component creations.

(cherry picked from commit c19066c741)
2026-03-06 17:48:27 +00:00
Kristiyan Kostadinov 4a390b6c73 refactor(core): track the tracing service in the LView environment
Adds the `TracingService` to the `LView[ENVIRONMENT]` so we don't have to inject it everywhere.

(cherry picked from commit e433ba9a80)
2026-03-06 17:48:27 +00:00
Anushka Geeta Singh 5a486a65cf docs(router): Add example of relative navigation and multiple array values
Adds an example to docs with relative navigation and multiple values in
the commands array.

(cherry picked from commit 418cb61f2f)
2026-03-06 17:47:44 +00:00
Kristiyan Kostadinov c822bf8e76 fix(compiler-cli): always parenthesize object literals in TCB
This is a follow-up to #67381 which introduced a subtle bug where depending on the type checking configuration, we may put an object literal directly in the TCB body which the TS compiler ends up interpreting as a block. These changes resolve the issue by always wrapping the literal in parentheses.
2026-03-05 14:12:25 -08:00
Kristiyan Kostadinov 31e2c99007 refactor(compiler-cli): resolve presubmit issues
Resolves issues caught during the presubmit.
2026-03-05 14:12:25 -08:00
Kristiyan Kostadinov f8b6bd0cbe refactor(compiler-cli): escape quotes used in string expressions
TypeScript has functionality that automatically escapes quotes in string literals. These changes update the places where we may need to do the same ourselves.
2026-03-05 14:12:25 -08:00
Kristiyan Kostadinov 5349b027b8 refactor(compiler-cli): delete unused utilities
Deletes utilities that we no longer use.
2026-03-05 14:12:25 -08:00
Kristiyan Kostadinov 8f8d67dc57 refactor(compiler-cli): initial decoupling from TypeScript factory APIs
Initial pass to move usages of TS `factory` APIs to the new `TcbExpr`.
2026-03-05 14:12:25 -08:00
Kristiyan Kostadinov 23153a06dd refactor(compiler-cli): introduce new primitive for generating TCB code
Introduces the `TcbExpr` class that will be used to generate TCB code without going through TypeScript's factory APIs.
2026-03-05 14:12:25 -08:00
Alan Agius fd3b4413f3 docs: add a new section on nonces and caching considerations to the security guide.
(cherry picked from commit e5f99edda5)
2026-03-05 18:03:35 +00:00
Leon Senft 670d1660c4 feat(forms): add 'blur' option to debounce rule
Expands the `debounce` rule configuration to accept `'blur'`. When this option
is provided, the rule will delay model synchronization until the field loses
focus (is touched). This introduces a debouncer that defers resolution
until the framework automatically aborts pending debounces upon touch events.

(cherry picked from commit c767d678cf)
2026-03-05 17:55:18 +00:00
Angular Robot 8ca0237d99 build: update cross-repo angular dependencies
See associated pull request for more information.
2026-03-04 16:27:39 -08:00
Joey Perrott 3576019c0f build: no longer require release mode for releases
This commit updates the github.mjs configuration to set requireReleaseModeForRelease to false, removing the requirement to use release mode for releases in the angular/angular repository.

(cherry picked from commit a6941adce8)
2026-03-04 22:48:59 +00:00
Doug Parker 05d022d5e6 fix(compiler-cli): ignore generated ngDevMode signal branch for code coverage
The Angular compiler unconditionally adds a debug name transform for signals
which generates a conditional on `ngDevMode` (e.g., `ngDevMode ? { debugName: "xyz" } : []`).
During testing, `ngDevMode` is true, so the true branch executes but the
false branch is never executed. Consequently, coverage tools report the
false branch as an untested line/branch, preventing 100% test coverage.

This commit adds a synthetic `/* istanbul ignore next */` comment to the
generated false branch so that Istanbul ignores it. We only include the
istanbul comment (instead of additionally including c8) to focus on the
established standard for Angular CLI/Karma coverage while maintaining
compatibility with modern Vitest setups, since @vitest/coverage-v8 now
natively respects the fallback istanbul comment.

Fixes #64583

(cherry picked from commit dc4cf649b6)
2026-03-04 22:42:57 +00:00
Andrew Scott 1df1697c6e fix(compiler): prevent mutation of children array in RecursiveVisitor
RecursiveVisitor.visitIfBlockBranch was permanently mutating the children array by pushing the expressionAlias into it. This change clones the array before pushing to avoid this side effect.

(cherry picked from commit 72a17afaf3)
2026-03-04 22:41:36 +00:00
Andrew Scott 05476ea21b release: bump VSCode extension version to 21.2.2 (#67449) 2026-03-04 12:40:40 -08:00
Jessica Janiuk f38169d0a7 release: cut the v21.2.1 release 2026-03-04 11:34:05 -08:00
Jessica Janiuk 6d7446bc6c refactor(core): account for shadow roots in animations
This adds a util function to get the proper target, properly accounting for shadow roots.

(cherry picked from commit fda08b7a89)
2026-03-04 18:16:43 +00:00
SkyZeroZx c25c84d7dc docs: add customization options for browser URL in routing guide
(cherry picked from commit 9208421290)
2026-03-04 18:10:29 +00:00
Angular Robot f4160c2073 build: update cross-repo angular dependencies
See associated pull request for more information.
2026-03-04 10:01:57 -08:00
Jessica Janiuk 93c6dc6395 Revert "refactor(http): Improves base64 encoding/decoding with feature detection (#67002)"
This reverts commit aafeb1d2bd.

(cherry picked from commit 5338b5912c)
2026-03-04 17:19:14 +00:00
Jessica Janiuk 76431ed3e3 Revert "fix(http): correctly cache blob responses in transfer cache (#67002)"
This reverts commit 1f057afaac.

(cherry picked from commit 7eb33713b9)
2026-03-04 17:19:14 +00:00
Jessica Janiuk b4ec3cc4e4 fix(core): prevent child animation elements from being orphaned
When routing between two different routes, child animations were not finishing, causing elements to be left behind in the dom. The fix ensures the proper fallback is handled to avoid automatically cancelled custom events. This ensures the animation-fallback cancelling the animation actually completes, and ensures the element is removed.

fixes: #67400
(cherry picked from commit 9e64147b73)
2026-03-04 16:21:41 +00:00
Angular Robot 84e79f5add build: update pnpm to v10.30.3
See associated pull request for more information.
2026-03-04 08:03:41 -08:00
SkyZeroZx 2eecf0d9a2 docs: add documentation for dynamic validation schemas
(cherry picked from commit 9fa36d1a71)
2026-03-04 16:01:36 +00:00
Kristiyan Kostadinov da57d1af73 build: use TypeScript 5.9 for patch builds
Partially rolls back to using TypeScript 5.9 for the builds on the patch branch, because we bundle our TypeScript version with the language service which can introduce unexpected breakages for users.

Note that we still allow users to install TypeScript 6.
2026-03-04 07:59:23 -08:00
Georgi Serev 58ea4d2ee8 docs(docs-infra): add Azerbaijani community translation
Add https://angular.az (Azerbaijani) to the community translations section.

(cherry picked from commit e8676b5412)
2026-03-04 15:58:23 +00:00
SkyZeroZx 277ade97ac fix(http): correctly cache blob responses in transfer cache (#67002)
Previously, Blob values were passed to `Uint8Array` this resulted in silently producing an empty array (length = 0) without throwing an error, leading to empty cached data

PR Close #67002
2026-03-04 15:56:59 +00:00
SkyZeroZx aeb9b819d2 refactor(http): Improves base64 encoding/decoding with feature detection (#67002)
Use feature detection for `Uint8Array.prototype.toBase64` and
`Uint8Array.fromBase64`, falling back to the existing implementation
when native support is not available

PR Close #67002
2026-03-04 15:56:59 +00:00
Angular Robot 657d532ad1 build: update dependency preact-render-to-string to v6.6.6
See associated pull request for more information.
2026-03-03 14:48:18 -08:00
Angular Robot 8dafd2413a build: update dependency aspect_rules_jasmine to v2.0.4
See associated pull request for more information.
2026-03-03 14:46:02 -08:00
Angular Robot 796b9a714a build: update cross-repo angular dependencies
See associated pull request for more information.
2026-03-03 14:22:51 -08:00
Krueger01 dd551b1ff3 refactor(compiler-cli): update old angular.io references to angular.dev
Update comment references from the old site angular.io to the new site
angular.dev.

(cherry picked from commit 0e9d58ef09)
2026-03-03 22:22:23 +00:00
Andrew Scott 84adb2fb3b refactor(router): Permit deferring commit of traversal navigations
This updates the state manager to allow intercepting and deferring commits of traversal navigations.
The issues that were encountered in the past appear to be resolved in Chrome.
The behavior of redirect is still undefined in this case, so there is an added TODO.

(cherry picked from commit 778b748694)
2026-03-03 22:09:15 +00:00
Angular Robot 98343ea35e build: update cross-repo angular dependencies to b1b4bd0
See associated pull request for more information.
2026-03-03 10:36:54 -08:00
Angular Robot c4226a10d0 build: update cross-repo angular dependencies
See associated pull request for more information.
2026-03-03 09:54:56 -08:00
Sai Kumar Kola 5e545069ac docs: fix side navigation bar foreground colors in both dark and light modes #67379
(cherry picked from commit 46c996a977)
2026-03-03 17:13:11 +00:00
SkyZeroZx ecf0bb4668 test(http): refactors HTTP client tests to use TestBed and providers
Updates HTTP client, JSONP, and XSRF tests to utilize `TestBed` for setup.

(cherry picked from commit ead6bb1f52)
2026-03-03 17:12:39 +00:00
Ben Hong 0d54c5f0e2 docs: modernize testing service guide
(cherry picked from commit 5955738bc4)
2026-03-03 17:12:03 +00:00
Angular Robot 8f6ca1d9f9 build: lock file maintenance
See associated pull request for more information.
2026-03-03 09:08:50 -08:00
Angular Robot 1f51c61372 build: update cross-repo angular dependencies to 2648276
See associated pull request for more information.
2026-03-02 12:22:46 -08:00
Jessica Janiuk f5e9a862c2 refactor(core): ignore infinite animations in animate api
This ensures that when calculating longest animations, we completely ignore infinite animations. This will prevent mistakes with using the API and hopefully catch any unexpected bugs.

fixes: #67350
(cherry picked from commit 9758ea9ee9)
2026-03-02 19:40:19 +00:00
Angular Robot 0c8a2858b9 build: update cross-repo angular dependencies to v21.2.0
See associated pull request for more information.
2026-03-02 11:32:52 -08:00
Matthieu Riegler a79e8afbad docs: update doc for provideZoneChangeDetection
fixes #67209

(cherry picked from commit a2d5048ff3)
2026-03-02 19:02:34 +00:00
SkyZeroZx 7b7faef739 docs: fixed note on event replay
(cherry picked from commit d793ee0bb7)
2026-03-02 18:59:21 +00:00
Joey Perrott 95afc09206 ci: update the path to the labeling github actions
Update the paths to the labeling github actions after the refactor in dev-infra

(cherry picked from commit 787db90e08)
2026-03-02 18:55:57 +00:00
kirjs 23cb9a4291 refactor(forms): address feedback
Refactor the normalizeFormArgs utility to include the internal FieldAdapter

(cherry picked from commit d2e33e86b9)
2026-03-02 16:46:47 +00:00
kirjs 0a863ba03f refactor(forms): hide adapter in public options
Moves adapter to internal options to prevent exposure but keep compatibility.

(cherry picked from commit 985d828f12)
2026-03-02 16:46:47 +00:00
Jessica Janiuk e923d88398 fix(core): Prevent removal of elements during drag and drop
This addresses a reported issue where elements were being fully removed from the DOM during drag and drop operations.

fixes: #67257
(cherry picked from commit 0b59cba85d)
2026-03-02 16:46:13 +00:00
Angular Robot 150f0b3c30 build: update cross-repo angular dependencies to 90e509f
See associated pull request for more information.
2026-03-02 08:42:55 -08:00
Angular Robot fc5f9d03cf build: update pnpm to v10.30.3
See associated pull request for more information.
2026-03-02 08:37:49 -08:00
Angular Robot 498d9cdda4 build: update cross-repo angular dependencies to 9cc4778
See associated pull request for more information.
2026-02-27 09:11:11 -08:00
Angular Robot fd8d29a157 build: update dependency bazel to v8.6.0
See associated pull request for more information.
2026-02-27 09:10:15 -08:00
Jessica Janiuk e2e9a9a531 fix(core): adds transfer cache to httpResource to fix hydration
This should prevent the microtask problem with hydration and httpResource.

fixes: #62897
(cherry picked from commit 88685cb3b6)
2026-02-27 17:09:26 +00:00
Matthieu Riegler 35fd8b567a build: use different default port for dev-app
Same as ADEV, currently the CLI prompts for another port if 4200 is busy but the toolchain doesn't support prompts.

By defaulting to 4201 we avoid regular CLI apps from preventing to run the dev-app

(cherry picked from commit 9bb4f02bef)
2026-02-27 17:04:19 +00:00
Angular Robot 4e9648d184 build: update cross-repo angular dependencies
See associated pull request for more information.
2026-02-26 14:32:59 -08:00
Angular Robot 54a0541013 build: update cross-repo angular dependencies
See associated pull request for more information.
2026-02-26 13:42:33 -08:00
Joey Perrott 9c0587f755 build: update to latest sha of dev-infra repo
Update to the latest sha of the dev-infra repo

(cherry picked from commit d1ebbbe9bc)
2026-02-26 20:42:17 +00:00
Joey Perrott ac06941bcf build: update to latest sha of dev-infra repo
Update to the latest sha of the dev-infra repo

(cherry picked from commit 385b9485c4)
2026-02-26 20:22:25 +00:00
Joey Perrott 907415c801 ci: set up automated issue labeling
Sets up automated issue labeling action

(cherry picked from commit 37b4d16357)
2026-02-26 20:22:25 +00:00
Angular Robot 225a56677e build: update cross-repo angular dependencies
See associated pull request for more information.
2026-02-26 10:40:54 -08:00
Joey Perrott 944181869d ci: set up linting for upcoming agent skills
Add validation/linting on CI for agent skills files

(cherry picked from commit 078da3cbda)
2026-02-26 18:04:30 +00:00
Joey Perrott 3d3e6cbf20 build: update repository locations for bazel rules
The repositories for `rules_sass`, `rules_angular`, and `rules_browsers`
were recently transferred from devversion to the angular organization.
This commit updates the internal bazel module rules to rely on
the new repository locations.

(cherry picked from commit b4f68acaa1)
2026-02-26 17:57:15 +00:00
Angular Robot 2158bf8bb8 build: update cross-repo angular dependencies
See associated pull request for more information.
2026-02-26 09:44:02 -08:00
Matthieu Riegler 1b46b6db18 docs: add info around route level services
fixes #67313

(cherry picked from commit 95f12c87aa)
2026-02-26 16:20:02 +00:00
Matthieu Riegler f23f3e7f5f docs: add mention of identity tracking for field iterations
related to #66711

(cherry picked from commit 7d92d4454b)
2026-02-26 15:52:58 +00:00
Angular Robot 9414da5b7e build: update all github actions
See associated pull request for more information.
2026-02-26 07:50:54 -08:00
Angular Robot 8078abe893 build: update bazel dependencies
See associated pull request for more information.
2026-02-26 07:50:17 -08:00
Joey Perrott 661e800302 release: bump VSCode extension version to 21.2.1 2026-02-25 15:34:03 -08:00
Angular Robot c960a6e492 build: update cross-repo angular dependencies to v21.2.0
See associated pull request for more information.
2026-02-25 15:11:49 -08:00
Angular Robot 2eeb4b5666 build: update cross-repo angular dependencies to v21.2.0
See associated pull request for more information.
2026-02-25 12:47:33 -08:00
Hien 8f19cf8d84 docs(forms): fix casing of 'FormField' to 'formField' in templates
(cherry picked from commit de0cc817cd)
2026-02-25 20:46:06 +00:00
Jessica Janiuk 50a9ed190d release: cut the v21.2.0 release 2026-02-25 11:29:08 -08:00
Angular Robot e437980659 build: update cross-repo angular dependencies
See associated pull request for more information.

Closes #67275 as a pr takeover
2026-02-25 10:26:00 -08:00
Angular Robot d3ab1ea5f2 build: lock file maintenance
See associated pull request for more information.
2026-02-25 08:52:48 -08:00
Sonu Kapoor fe7b26e403 docs(forms): transformedValue parse error wiring
(cherry picked from commit 547ed65b6f)
2026-02-25 16:13:16 +00:00
SkyZeroZx 70e4c7fbab refactor(common): log a warning when a KeyValuePipe receives a signal
Add signal warning for `KeyValuePipe` and consolidates the `invalidPipeArgumentError` function into a `utils`

(cherry picked from commit 97ed3d9e85)
2026-02-25 16:11:34 +00:00
Angular Robot a25f74238e build: update jasmine dependencies to v6.1.0
See associated pull request for more information.
2026-02-25 07:57:47 -08:00
Angular Robot 61ad0f8b90 build: update pnpm to v10.30.2
See associated pull request for more information.
2026-02-25 07:54:45 -08:00
Matthieu Riegler a86c3214c2 ci: update pullapprove for manual_api docs
The markdown files shouldn't require dev-infra approval.

(cherry picked from commit 0cd00b91ef)
2026-02-24 23:23:34 +00:00
Anushka Geeta Singh 706cfecaee docs: update README to clarify app setup confirmation
Improved wording to clarify how beginners can verify their environment and IDE are correctly set up after running the app.

(cherry picked from commit bdbb7cc7af)
2026-02-24 22:22:32 +00:00
Angular Robot 63cb3f4fa8 build: update bazel dependencies
See associated pull request for more information.
2026-02-24 14:10:29 -08:00
Matthieu Riegler 787cd875b0 refactor(vscode-extension): Add support for exhaustive type check in the syntax
`@default never` will be considered a keyword on its own.

(cherry picked from commit db11e74b3d)
2026-02-24 19:23:50 +00:00
Matthieu Riegler 1a151f2dae docs: add docs for @switch Exhaustive type checking
(cherry picked from commit 9dc3ca44ec)
2026-02-24 18:53:47 +00:00
Munir Issa Said 6b112e6c6c docs: fix roadmap introduction text
(cherry picked from commit 035b151a17)
2026-02-24 18:52:38 +00:00
Doug Parker 7d58b798c6 fix(core): block creation of sensitive URI attributes from ICU messages
Translators are not allowed to write HTML which creates URI attributes. I opted to ban any values going into an attribute at all, to prevent even links to malicious content, rather than just sanitizing URIs.

I also converted this blocklist into an allowlist. Now, we only allowing setting known attributes (while sanitizing URI attributes). This significantly reduces risk of missing a vulnerable attribute and does not require an exhaustive list of all potential attributes.

BREAKING CHANGE: Angular now only applies known attributes from HTML in translated ICU content. Unknown attributes are dropped and not rendered.

(cherry picked from commit 306f367899)
2026-02-24 18:50:41 +00:00
Alan Agius ab1c84eed9 docs: consolidate validation rules for Host and X-Forwarded-Host headers into a single point.
(cherry picked from commit c57ba8c6e6)
2026-02-24 17:24:34 +00:00
Matthieu Riegler 103a44f690 docs: improve responsiveness of the homepage
This fixes some layout issues when on mobile.

(cherry picked from commit 9e0acc5930)
2026-02-24 17:23:43 +00:00
Shuaib Hasan Akib de9092eb23 docs: inline documentation and remove unused references
Replaces referenced doc blocks with inline documentation,
cleans up unused referenced code, and fixes broken list formatting

(cherry picked from commit 8739a22d28)
2026-02-24 17:22:54 +00:00
Jens Kuehlers 0b0b34565a docs: minor roadmap update (Ecosystem/vitest)
(cherry picked from commit dea858979e)
2026-02-24 17:22:13 +00:00
Angular Robot b17a7e062f build: update cross-repo angular dependencies
See associated pull request for more information.
2026-02-24 09:21:23 -08:00
Shuaib Hasan Akib 7c976c3453 docs: remove inconsistent padding in update page
Removes extra padding applied to the update page so its layout
matches the rest of the documentation where no padding exists
between the title and content.

(cherry picked from commit 15b51d0777)
2026-02-24 17:20:55 +00:00
SkyZeroZx eb6bce0ff5 docs: Add image loader config with height parameter
(cherry picked from commit c7dc7054dc)
2026-02-23 23:30:35 +00:00
Suguru Inatomi 30e486a41c fix(docs-infra): use shared heading ID generation logic
This commit extracts the heading ID generation logic into a shared utility
and updates both the route generation script and the markdown pipeline to use it.

This ensures consistency between the generated routes and the rendered
documentation, and fixes an issue where custom heading IDs (`{#id}`)
were ignored during route generation.

Fixes #67200

(cherry picked from commit bedfcb5644)
2026-02-23 23:16:55 +00:00
Matthieu Riegler a73d5435d8 docs: Add a compiler entry to the roadmap
(cherry picked from commit fbabd092f3)
2026-02-23 23:11:30 +00:00
marktechson b9d3fe3b44 docs: update and reformat the roadmap
(cherry picked from commit 53c1a1cee7)
2026-02-23 21:28:43 +00:00
Angular Robot c9ecf9e40b build: update cross-repo angular dependencies to v21.2.0-rc.1
See associated pull request for more information.
2026-02-23 13:17:58 -08:00
Shuaib Hasan Akib 2f213de593 refactor(core): remove outdated TODO comments
Cleans up TODO comments that are no longer planned

Fixes #67191

(cherry picked from commit 5ac1c025f9)
2026-02-23 18:19:57 +00:00
Matthieu Riegler ec32591dd7 docs: mention browser mode debugging
(cherry picked from commit a9ac7f87d7)
2026-02-23 18:19:27 +00:00
Miles Malerba 02b7f5e4f7 ci: remove mmalerba from reviewers
remove mmalerba from reviewers

(cherry picked from commit 0af9e3e9ee)
2026-02-23 18:19:02 +00:00
Angular Robot 31bf694599 build: update pnpm to v10.30.1
See associated pull request for more information.
2026-02-23 09:12:54 -08:00
Miles Malerba bdfb60f3e3 fix(forms): use consistent error format returned from parse
Aligns the errors returned from the `parse` function in
`transformedValue` to use the same convention as the rest of signal
forms (a property called `error` that can contain a single error or list
of errors)

(cherry picked from commit 23fd8fa586)
2026-02-23 17:11:55 +00:00
SkyZeroZx e99b92a1f0 docs: add Route Loading Strategies section and update navigation links
(cherry picked from commit 163dd8ee38)
2026-02-23 17:11:15 +00:00
Alan Agius 5c24de5ee8 docs: move server-side security and host validation documentation from ssr.md to security.md.
(cherry picked from commit 099b4a8bbb)
2026-02-23 17:08:56 +00:00
Alan Agius fad5def327 feat(docs-infra): add hideDollar option to hide the dollar sign prefix in shell code blocks.
The dollar sign is not always required.

(cherry picked from commit efcf76ea61)
2026-02-23 17:08:56 +00:00
Alan Agius de2eab6820 docs: convert SSR guide's important note list to HTML <ul> for proper rendering.
(cherry picked from commit 75fd6c0ff2)
2026-02-23 17:08:56 +00:00
Alan Agius ea1aeb3d45 docs: add documentation for SSR security and host validation, including details on allowedHosts configuration
This document adds more information about `allowedHost` option

(cherry picked from commit 944aefe854)
2026-02-23 17:08:55 +00:00
Jaime Burgos 35f0663ce8 refactor(core): guards stringify calls with ngDevMode
The `stringify` function is only needed for debugging purposes and
should not be called in production mode.

(cherry picked from commit c89d94bd58)
2026-02-20 21:24:31 +00:00
SkyZeroZx 2eeeabb760 fix(common): fix LCP image detection with duplicate URLs
Addresses an issue where the LCP image observer incorrectly identified LCP elements when the same image URL was used multiple times on a page

Fixes #53278

(cherry picked from commit 38749698d0)
2026-02-20 21:23:27 +00:00
Jessica Janiuk 87372893ea ci: update ng-dev config and pullapprove
This updates the pullapprove to remove the auto labeling of requires: TGP and instead moves it to the ng-dev config for pr updates.

(cherry picked from commit d7ddebca90)
2026-02-20 19:02:14 +00:00
cexbrayat 631f60d1f9 fix(forms): preserve parse errors when parse returns value
Fixes #67170 by keeping the errors even a value is returned from the parse function.

(cherry picked from commit fe25c57a5c)
2026-02-20 18:28:57 +00:00
Ben Hong 390efd51e7 docs: add new debugging and troubleshooting di guide
(cherry picked from commit 13e019a1bb)
2026-02-20 18:01:16 +00:00
splincode c2cedd1954 refactor(compiler-cli): improve diagnostic with help link
Add help link to extended template diagnostic messages to provide
users with additional guidance and documentation resources. This
enhancement improves developer experience by making it easier to
understand and resolve complex template issues through direct
access to relevant Angular documentation with detailed examples
and explanations for each diagnostic type.

(cherry picked from commit 66b472e2bc)
2026-02-20 17:40:21 +00:00
Matthieu Riegler 3c4deaa52b refactor(common): log a warning when a JsonPipe receives a signal
The JsonPipe does not unwrap signals and `JSON.stringify` will return `undefined` for signals.
To avoid confusion, we log a warning when a signal is passed to the pipe.

(cherry picked from commit 0d652ba4da)
2026-02-20 17:17:05 +00:00
Matthieu Riegler b5eea233df docs: improve signal demo example
(cherry picked from commit b7cf37d3e1)
2026-02-20 17:15:37 +00:00
SkyZeroZx c0cb6040f8 fix(compiler-cli): detect uninvoked functions in defer trigger expressions
Wrap `@defer` trigger expressions (`when`, `prefetch when`, `hydrate when`)
in a conditional context within the TCB to enable TypeScript's TS2774
diagnostic for detecting functions used without invocation.

Previously, signals and functions passed to `when` triggers without
parentheses would silently evaluate to truthy, causing unexpected behavior.
Now the compiler reports an error when a function is used as a condition
without being called.

(cherry picked from commit f90e5565e0)
2026-02-20 16:57:08 +00:00
Bas ten Feld fb901f7eda docs(docs-infra): fix typo 'requiredSync' instead of 'requireSync'
(cherry picked from commit 57edfaf435)
2026-02-20 16:53:24 +00:00
Matthieu Riegler 17da2c392e docs(docs-infra): remove toString from the API docs
(cherry picked from commit fc8140cff4)
2026-02-20 16:52:01 +00:00
Angular Robot 6cf0100fe4 build: update cross-repo angular dependencies
See associated pull request for more information.
2026-02-19 18:12:11 -08:00
kbrilla d2137928e8 perf(language-service): use lightweight project warmup for Angular analysis
avoid per-file semantic diagnostics work when warming up a newly loaded project.
add ensureProjectAnalyzed() to the language-service API and use it from the server startup path.
implement warmup through public compiler API access with existing perf tracing, and add legacy test coverage for the new warmup flow.

(cherry picked from commit 39f62fa408)
2026-02-20 02:11:06 +00:00
Matthieu Riegler 1d4783c01c refactor(language-service): split tests to reduce risk of timeouts
Because we've had to many timeouts recently

(cherry picked from commit 550b3ba01b)
2026-02-20 02:10:34 +00:00
SkyZeroZx 9ee99c7cc0 docs: update NgTemplateOutlet documentation with injector
(cherry picked from commit 67b22d509a)
2026-02-20 00:06:29 +00:00
Angular Robot 5b8a403220 build: update rules_browsers digest to ceb5275
See associated pull request for more information.

Closes #67141 as a pr takeover
2026-02-19 16:01:02 -08:00
SkyZeroZx 9c8f2dab7d docs: add section on reactive context and async operations
(cherry picked from commit f68078b3e3)
2026-02-19 23:59:59 +00:00
SkyZeroZx 9f1a78ca74 docs(docs-infra): preserve content before docs-card-container in adev
The tokenizer regex pattern `[^<]*` was consuming all non-`<` content
before custom HTML tags, causing lost content.

Changed to `\s*` which only allows leading whitespace, letting marked
properly tokenize preceding content.

(cherry picked from commit bc473cf60f)
2026-02-19 23:48:49 +00:00
Angular Robot d45440eda4 build: update cross-repo angular dependencies
See associated pull request for more information.
2026-02-19 13:31:08 -08:00
Matthieu Riegler eb7c593fda ci: add zone.js to minimumReleaseAgeExclude
This is a package we control the release of.

(cherry picked from commit d501506aa6)
2026-02-19 20:41:24 +00:00
Walter Breakell 48802fd7ed docs: fix grammar, syntax, and broken link in elements guide
(cherry picked from commit 7d21996b1e)
2026-02-19 20:39:04 +00:00
Joey Perrott 5cea3576cf docs: update changelog to note no changes in 21.1.5 release
(cherry picked from commit e8cc910965)
2026-02-19 19:23:48 +00:00
Angular Robot 913bb6ad14 build: update cross-repo angular dependencies
See associated pull request for more information.
2026-02-19 11:22:42 -08:00
Angular Robot 79f1cd462e docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2026-02-19 09:03:46 -08:00
SkyZeroZx 4ea3cafdc8 docs(docs-infra): fixed missing gray color palette definitions for light and dark modes
Adds the missing gray color palette definitions for both light and dark modes

(cherry picked from commit 1771d54fb7)
2026-02-19 16:55:02 +00:00
Angular Robot 94b9a3ef70 build: update all github actions
See associated pull request for more information.
2026-02-19 08:52:00 -08:00
Angular Robot c5afb88d9a build: update cross-repo angular dependencies to v21.2.0-rc.0
See associated pull request for more information.
2026-02-19 08:51:02 -08:00
Andrew Scott f58f9c892e release: cut the zone.js-0.16.1 release
(cherry picked from commit ac8b5ff938)
2026-02-18 16:26:41 -08:00
Andrew Scott 7f33cbeb6c release: bump VSCode extension version to 21.2.0 (#67134) 2026-02-18 15:48:34 -08:00
Andrew Scott dd630ef955 build: update version target to prep for 21.2.0 release for vscode extension (#67132)
build: update version target to prep for 21.2.0 release for vscode extension
2026-02-18 15:14:45 -08:00
Matthew Beck 13fd2b1aa3 release: cut the v21.2.0-rc.0 release 2026-02-18 14:38:30 -08:00
Matthew Beck cb8e974de0 docs: release notes for the v21.1.5 release 2026-02-18 14:23:57 -08:00
Leon Senft 567f292e8e fix(forms): support custom controls as host directives
Add the missing code to update control properties when control is a host
directive.

Fix #66592.
2026-02-18 14:06:54 -08:00
Leon Senft dcb9af6dfa test(forms): [formField] synchronizes with a host directive
Test that `[formField]` synchronizes its value with a custom form
control implemented as a host directive on a component.
2026-02-18 14:06:54 -08:00
Ben Hong 9a9f4e7f93 docs: update best practice performances nav structure to be more comprehensive 2026-02-18 11:40:19 -08:00
Ben Hong b8811b45d8 docs: add signal forms async operations guide
Co-authored-by: Matthieu Riegler <kyro38@gmail.com>
2026-02-18 11:03:55 -08:00
Doug Parker 47486f8c49 release: bump Angular DevTools version to 1.11.0 2026-02-18 10:47:56 -08:00
Andrew Scott c36385c691 refactor(docs-infra): Add writing guide skill
This adds a writing skill for writing and reviewing adev content
2026-02-18 09:28:21 -08:00
Angular Robot 22a209055c build: update pnpm to v10.30.0
See associated pull request for more information.
2026-02-18 09:07:03 -08:00
Angular Robot eaf72d456a build: update cross-repo angular dependencies
See associated pull request for more information.
2026-02-18 08:50:39 -08:00
SkyZeroZx 5a3cacaaac build: updates Bazel commands in ssr-benchmarks to use pnpm for consistency 2026-02-18 08:49:22 -08:00
Andrew Scott 98610aabaf docs(zone.js): update release and publish commands in DEVELOPER.md 2026-02-18 08:47:53 -08:00
Andrew Scott d99e336a03 docs(zone.js): update build command in DEVELOPER.md 2026-02-18 08:47:53 -08:00
Andrew Scott c2f7eaa833 docs(zone.js): update instructions to use pnpm 2026-02-18 08:47:53 -08:00
kirjs 680e1c05c6 docs: fix custom control metadata example in signal forms guide
It was incorretly assuming FieldState is passeed to formField input
2026-02-18 07:12:43 -08:00
SkyZeroZx fd956f675a refactor(forms): simplify destroy subject handling
Remove unnecessary conditional check when completing the destroy subject, since it is always defined
2026-02-18 07:12:02 -08:00
Matthieu Riegler bd1cdac54d docs(docs-infra): new homepage 2026-02-18 07:10:53 -08:00
aparziale 8de0d25ffa docs(docs-infra): Signal forms docs
Update docs signal forms errors input wrong typing

fixes #66844
2026-02-17 14:36:00 -08:00
Angular Robot 2931ca1fca build: update cross-repo angular dependencies
See associated pull request for more information.
2026-02-17 14:33:19 -08:00
SkyZeroZx 064749e010 docs: fix enableProfiling note 2026-02-17 13:34:27 -08:00
Leon Senft b481294047 refactor(forms): remove unused generic type parameter
The `TValue` type parameter was unused by `FormUiControl`.
2026-02-17 13:02:42 -08:00
SkyZeroZx e45a7fe734 refactor(compiler-cli): update updateImportClause away from deprecated signature
Updates the `updateImportClause` call to use the non-deprecated signature.
Also update test `new Buffer` to `Buffer.from`
2026-02-17 12:56:04 -08:00
Matthew Beck dea0819aa9 build: update cross-repo angular dependencies (main)
Takeover of https://github.com/angular/angular/pull/66795 that fixes
adev.

Closes #66795.
2026-02-17 12:40:20 -08:00
Angular Robot 084f7dc08d build: update cross-repo angular dependencies
See associated pull request for more information.

Closes #66795 as a pr takeover
2026-02-17 12:40:20 -08:00
Andrew Scott fc557f0276 fix(zone.js): support passthrough of Promise.try API
When Zone patches Promise, it uses ZoneAwarePromise. The new Promise.try API was undefined on ZoneAwarePromise, making it unavailable when zone was present. This change gracefully passes through Promise.try to the native Promise implementation, if available, without patching it to execute in the right zone (our stance is not to add new patches but avoid destructively making new APIs unavailable).

Fixes #67057
2026-02-17 11:32:49 -08:00
Matthieu Riegler 95b3f37d4a feat(compiler): Exhaustive checks for switch blocks
`@switch` blocks can now enable exhaustive typechecking by adding `@default(never);` at the end of a `@switch` block.
2026-02-17 10:25:31 -08:00
Rajveer a8aab64809 refactor(core): remove outdated TODO comments referencing TypeScript 2.1
Angular requires TypeScript >=5.9, making TODO comments that reference TypeScript 2.1 features obsolete. These comments existed in keyvalue_differs.ts and ng_for_of.ts and referenced type improvements that were deferred until TS 2.1, which has long since been surpassed.
2026-02-17 08:49:33 -08:00
Kristiyan Kostadinov 81cabc1477 feat(core): add support for TypeScript 6
Updates the project to support TypeScript 6 and accounts for some of the breakages.
2026-02-17 08:40:38 -08:00
hawkgs 9f4c025531 refactor(devtools): improve formatting of injector providers token labels
Use `InjectionToken.toString` for the string representation of `InjectionToken`s for better readibility.
2026-02-17 08:33:41 -08:00
Kristiyan Kostadinov 9c5658adb1 refactor(compiler): clean up pipeline compatibility distinction
Removes the switch for compatibility mode from the template pipeline since we never got around to removing it and at this point it causes a bunch of runtime errors.
2026-02-17 08:30:04 -08:00
aparziale b8d1164e0f docs: typo in documentation
Fix typo in documentation signal

Fixes #67090
2026-02-17 08:25:04 -08:00
Miles Malerba ee7b4eb24d docs: add testing tips to AGENTS.md
Add testing tips to AGENTS.md
2026-02-17 08:23:59 -08:00
Andrew Scott 815e1a03a9 refactor(compiler-cli): Add skeleton tests around source->source compiler transform mode
adds skeleton and tests for source->source compiler transform.
2026-02-13 16:48:13 -08:00
Casper Jacobsen a37b6c55a8 docs: fix formatting in pipes.md example
Example "without parentheses" still had parentheses
2026-02-13 15:42:37 -08:00
Miles Malerba a6a0347998 refactor(forms): extract common parser logic (#66917)
native controls and custom controls (via transformedValue) use similar
parsing logic but it needs to be hooked up differently. This commit
extracts the common bits into a shared piece.

PR Close #66917
2026-02-13 12:11:06 -08:00
Miles Malerba 30f0914754 feat(forms): support binding null to number input (#66917)
Supports binding `null` to a `<input type=number>`.

- Binding in `null` clears the input
- Binding in `NaN` also clears the input
- When the user clears the input, the model is set to `null`
- The model is _never_ set to `NaN` based on user interaction. It is
  either set to `null` if the user cleared the input, or is unchanged
  and a parse error added if the user entered an invalid number like
  "42e"

PR Close #66917
2026-02-13 12:11:06 -08:00
Miles Malerba 22afbb2f36 feat(forms): add parsing support to native inputs (#66917)
Integrates native inputs with the new parseErrors API so that they can
report parse errors when the user types an un-parsable value (e.g. "42e"
in a number field).

When a user types an un-parsable value, the model does not update. It
retains its previous value and a parse error is added for the control
that received the un-parsable value.

PR Close #66917
2026-02-13 12:11:06 -08:00
Miles Malerba 27397b3f4f fix(forms): clear parse errors when model updates (#66917)
Changes `parsedErrors` to a `linkedSignal` based on the model value.
This ensures that the parse errors are reset if the model changes from
outside the control.

PR Close #66917
2026-02-13 12:11:06 -08:00
Cameron Smick 2d9987869b refactor(devtools): Add a new childSignalProp DebugSignalGraphNode kind to represent a signal being passed to a child component as a prop.
The purpose for this change is to add nodes to the signal graph to make it clear when producer nodes, especially those that aren't consumed in the component being inspected, are passed to child components for consumption.
2026-02-13 10:09:59 -08:00
marktechson 29a17ed791 docs: Adds new agent skills to Angular
The first agent skill is a workflow for building a new Angular app from scratch. Using this skill agents will use Angular tooling for code generation where appropriate. Also includes important hints.
2026-02-13 10:07:54 -08:00
SkyZeroZx e10a63453d refactor(compiler-cli): use phaseModifier for type-only import detection
The `isTypeOnly` property was deprecated in TypeScript and replaced by `phaseModifier`.

Updates the check to use `phaseModifier`, which is the recommended API for detecting type-only imports.

Additionally, removes the unused `metadata` parameter from the `NgModuleExtractor`
2026-02-13 09:42:48 -08:00
Matthieu Riegler 5f6088da3a refactor(language-service): split tests into multiple targets
The helps with fighting flakiness
2026-02-13 09:42:05 -08:00
Matthieu Riegler 6e0d783e5b refactor(compiler): Add info about unclosed element.
We chose to throw 2 errors here because we can't assume the intention of the developer and the span we target are different.

fixes #57032
2026-02-13 09:41:37 -08:00
Matthieu Riegler 08ea105aa3 refactor(platform-server): split zone/zoneless tests.
The Zone tests are a subset of tests that we still using the Zone CD provider.
2026-02-13 09:41:10 -08:00
cexbrayat 63d8005703 fix(forms): preserve custom-control focus context in signal forms
Fixes #67051

Store custom control focus callbacks in a wrapper so method invocation keeps the original object context. Without this, custom focus methods that access instance members throw at runtime when focusBoundControl() is called.
2026-02-13 09:37:19 -08:00
Matt Lewis 0806ee3826 fix(core): prevent animated element duplication with dynamic components in zoneless mode
When using ViewContainerRef to rapidly toggle animated elements in
zoneless mode (e.g. CDK Overlay menus), multiple copies of the element
could appear in the DOM. This happened because leave animations were
queued but not yet executed, and the existing `cancelLeavingNodes`
mechanism could not find the leaving element to cancel it — it ran
during template execution before the new element was in the DOM, and
used the declaration container's anchor which doesn't work for
overlay/portal patterns where elements are moved to separate
containers.
2026-02-13 09:35:08 -08:00
hawkgs 83da928206 fix(devtools): injector tree errors when inspecting null nodes
Due to explicit injector type checks, inspecting nodes that have type !== `environment` but at the same time are rendered in the Environment Injector tree, opening their details used to break the app. This change fixes this.
2026-02-13 09:33:37 -08:00
Angular Robot dfd5e3a90a build: update pnpm to v10.29.3
See associated pull request for more information.
2026-02-13 09:18:58 -08:00
Angular Robot d0038235d5 build: update bazel dependencies
See associated pull request for more information.
2026-02-13 09:18:32 -08:00
Jef 3cad0d644e docs: Clarify sentence in attribute-directives.md 2026-02-13 09:16:45 -08:00
Matthieu Riegler d5b35b1826 refactor(core): place Eager value first
This way the jsdoc wouldn't collapse if/when we remove the `Default` value.
2026-02-12 17:29:30 -08:00
SkyZeroZx ddfc833df9 refactor(common): improve image directive typings
Add image directive typings to improve type safety and removes an unused parameter from the observer registration.
2026-02-12 16:51:51 -08:00
Angular Robot 5b59dbd36f build: lock file maintenance
See associated pull request for more information.
2026-02-12 10:18:03 -08:00
Matthew Beck 06d94ac0ca Revert "refactor(compiler): Add info about unclosed element."
This reverts commit 097208454b.
2026-02-12 09:30:57 -08:00
Matthieu Riegler 097208454b refactor(compiler): Add info about unclosed element.
We chose to throw 2 errors here because we can't assume the intention of the developer and the span we target are different.

fixes #57032
2026-02-12 08:55:20 -08:00
Matthew Beck b386f95bd0 Revert "refactor(compiler): Add info about unclosed element."
This reverts commit 9b69e29603.
2026-02-12 08:54:40 -08:00
Matthieu Riegler 9b69e29603 refactor(compiler): Add info about unclosed element.
We chose to throw 2 errors here because we can't assume the intention of the developer and the span we target are different.

fixes #57032
2026-02-12 07:58:06 -08:00
Miles Malerba 62453330f5 build: add workspace rule for antigravity
Antigravity does not support AGENTS.md, instead it has "workspace rules" (antigravity.google/docs/rules-workflows). This commit adds a symlink for the workspace rule.
2026-02-11 15:23:05 -08:00
Miles Malerba d75046bc09 fix(forms): warn when showing hidden field state
In signal forms, it is up to the user to guard hidden fields from being
rendered in the template. To help catch instances where it is
accidentally not guarded, this commit introduces a warning in dev mode.
2026-02-11 14:46:43 -08:00
Matthieu Riegler 17f19272c1 refactor(core): replacing usages of Default strategy with Eager
This will allow us to remove the `Default` value in g3.
2026-02-11 14:40:49 -08:00
Matthieu Riegler 302ea2ee46 fix(devtools): scope the message bus with URLs to prevent cross message interference
This prevents us from having detectAngular from running indefinitely.
2026-02-11 14:38:33 -08:00
Georgi Serev ece827e269 feat(devtools): add dependencies highlighting to the signal graph
Add ability to highlight the upstream and downstream dependencies path via the node details.
2026-02-11 14:37:51 -08:00
Angular Robot f67818a0ea docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2026-02-11 14:09:58 -08:00
Jessica Janiuk 4937d162f5 ci: update pullapprove reviewer list
This cleans up the pullapprove reviewers.
2026-02-11 14:00:01 -08:00
Matthieu Riegler 7b5bcbf401 build: add node type for api extraction
Without this the node types are `any`.

fixes #67027
2026-02-11 13:57:58 -08:00
Angular Robot a4fceda35b build: update pnpm to v10.29.2
See associated pull request for more information.
2026-02-11 13:40:49 -08:00
Miles Malerba 50e74add52 build: add skills in antigravity
Adds a symlink `.agent/skills` to `.gemini/skills`. This will allow
antrigravity which searches under `.agent` to see them.
2026-02-11 13:39:52 -08:00
Charles Lyding 4999868d8d build: migrate integration tests to manual Protractor setup
Removes the use of the private Protractor builder (`@angular-devkit/build-angular:private-protractor`)
from all integration test projects. Projects that still require E2E tests
now invoke Protractor directly via NPM scripts using `concurrently` to
manage the development server.
2026-02-11 13:38:55 -08:00
Leon Senft 3606902b33 refactor(forms): relax [formField] input type from FieldTree to Field
`FieldTree` was an unnecessarily specific type for the `[formField]`
input. It forced the directive to care about what _kind_ of `FieldTree`
was bound–specifically whether it was Reactive Forms compatible or not.
This made it difficult to author forms system-agnostic components with
passthrough `[formField]` inputs.
2026-02-11 11:45:20 -08:00
Andrew Kushnir 39cff9c235 release: cut the v21.2.0-next.3 release 2026-02-11 09:58:38 -08:00
Andrew Kushnir ad815106dd docs: release notes for the v21.1.4 release 2026-02-11 09:51:23 -08:00
Miles Malerba ba009b6031 feat(forms): add form directive
Adds a `formRoot` directive to manage submitting the form in signal
forms.
2026-02-10 14:34:48 -08:00
Matt Lewis bd2868e915 fix(core): capture animation dependencies eagerly to avoid destroyed injector
Animation runner functions (runEnterAnimation, runLeaveAnimations,
runLeaveAnimationFunction) execute asynchronously from the animation
queue via afterNextRender. By that time the lView injector may have
been destroyed, causing lView[INJECTOR].get(NgZone) to throw NG0205.

Move the NgZone and MAX_ANIMATION_TIMEOUT lookups into the setup
instructions (ɵɵanimateEnter, ɵɵanimateLeave, ɵɵanimateLeaveListener)
which run synchronously during template processing when the injector
is guaranteed to be valid, and pass them through the closures.
2026-02-10 13:31:23 -08:00
Weddly Rodrigues c6ca1cd725 docs: rename loadUser mock API to getUserData 2026-02-10 13:30:44 -08:00
Matthieu Riegler e229328b39 test: add test about mapped attributes to input
The dynamic component has `[value]` in its selector and this has always been reflected as a DOM attribute on the dynamically created host element, which is now also synced into the component instance.

fixes #60157
2026-02-10 13:29:31 -08:00
Charles Lyding 8b4eec6683 docs: remove legacy e2e configuration from i18n example
Removes the unused 'e2e' configuration block using '@angular-devkit/build-angular:private-protractor' from the i18n example configuration.
2026-02-10 13:28:48 -08:00
Miles Malerba 18003a33bb feat(common): add an 'outlet' injector option for ngTemplateOutlet
Adds an option (`ngTemplateOutletInjector="outlet"`) that instructs the ngTemplateOutlet to inherit its injector from the outlet's place in the instantiated DOM.
2026-02-10 09:42:50 -08:00
Miles Malerba a7e8abbb7e fix(core): correctly handle SkipSelf when resolving from embedded view injector
The `SkipSelf` flag is intended for the current injection context. When delegating to an embedded view injector, we are traversing to a parent/fallback scope, so the 'Self' has already been skipped.
2026-02-10 09:42:50 -08:00
Matthieu Riegler 4f8d3995f0 fix(vscode-extension): Highlight function calls with optional chaining
eg: `foo?.()` should be highlighted as `foo()`.

fixes #65513
2026-02-10 09:42:03 -08:00
Charles Lyding 387793fe29 build: remove unused Protractor E2E target from legacy-animations
Removes the `e2e` architect target from the `legacy-animations` integration test
project as it does not have actual E2E tests and was using a placeholder script.
2026-02-10 09:41:26 -08:00
Charles Lyding 15fc190556 test: remove unused Protractor E2E targets from integration tests
Removes the `e2e` architect target from several integration test projects
that do not have Protractor as a dependency and are not executing E2E tests.

Affected projects:
- cli-hello-world
- cli-hello-world-lazy
- defer
- legacy-animations-async
- standalone-bootstrap
2026-02-10 09:41:26 -08:00
SkyZeroZx 0f47fda51b test(router): move timeout and autoTick helpers to shared testing utilities
Centralizes common test helpers under testing utilities and updates usages
2026-02-10 07:45:00 -08:00
SkyZeroZx 19d0ceede3 test(forms): move timeout and autoTick helpers to shared testing utilities
Centralizes common test helpers under testing utilities and updates usages
2026-02-10 07:45:00 -08:00
SkyZeroZx 0c6eb60c86 test(http): remove zone-based testing utilities
Removes usages of zone-based helpers as part of the migration to zoneless tests.

Completes the transition to zoneless.
2026-02-10 07:45:00 -08:00
SkyZeroZx 8b3b069be7 refactor(forms): use optional chaining for safer method calls in form directives
Simplifies null checks by leveraging optional chaining when invoking
optional callbacks
2026-02-10 07:42:56 -08:00
SkyZeroZx e7fa177923 refactor(compiler-cli): removes reflector parameter from wrapTypeReference
The `wrapTypeReference` function no longer needs the `reflector` because it only uses the `clazz` parameter to create a `WrappedNodeExpr`.
2026-02-10 07:42:25 -08:00
Matthieu Riegler 760910ecf1 Revert "refactor(service-worker): remove zone-based testing utilities"
This reverts commit 12b770d  (on top of the partial revert of #66978)
2026-02-09 15:52:26 -08:00
SkyZeroZx 51cc914807 feat(common): support height in ImageLoaderConfig and built-in loaders
Introduces an optional `height` property in `ImageLoaderConfig`, allowing
built-in image loaders to generate URLs with explicit height parameters.
This improves layout control and enables better support for loaders that
require height-based transformations.

Closes #51723
2026-02-09 14:51:04 -08:00
Miles Malerba f56bb07d83 feat(forms): add field param to submit action and onInvalid
The `action` and `onInvalid` handlers now recevie two pieces of
information:
1. The form that is being submitted
2. The specific field that the submit was triggered on

Remove the `submit()` method on field state - supporting this is complex
from a typing perspective, since the `FieldState` only knows its
`TValue` type, not the `TModel` type of its owning `FieldTree`. Rather
than try to pack additional generics on to `FieldState`, we'll just
leave the `submit` function as a standalone importable function.
2026-02-09 14:49:43 -08:00
Jaime Burgos c6d7500203 test(common): remove zone-based testing utilities
Removes usages of zone-based helpers such as `fakeAsync` , `tick`
`waitForAsync` as part of the migration to zoneless tests.

Completes the transition to zoneless.
2026-02-09 14:47:35 -08:00
Jessica Janiuk e53c8abaf9 fix(core): Fix flakey test due to document injection
This fixes the test issues with the transfer state by using the DOCUMENT from src/document.
2026-02-09 14:16:24 -08:00
SkyZeroZx cb1163e5e5 fix(http): correctly parse ArrayBuffer and Blob in transfer cache
Encodes arraybuffer and blob response bodies as base64 when storing in the transfer cache, ensuring correct retrieval and usage on the client side.

Fixes #66827
2026-02-09 12:32:12 -08:00
Leon Senft b772f518f1 refactor(forms): add fieldTree property to FieldState
The `fieldTree` property of `FieldState` returns its associated
`FieldTree`.

Note that the round trip from `FieldTree` to `FieldState` and back will
lose type information. This is because `FieldState` intentionally does
not know whether it came from a pure Signal Forms field tree, or a
Reactive Forms compatible field tree:

```ts
// Pure Signal Forms:
const x: FieldTree<string>;

x();           // FieldState<string>;
x().fieldTree; // FieldTree<unknown>

// Reactive Forms compatibility:
const y: FieldTree<FormControl<string>>;

y();            // FieldState<string>;
y().fieldTree;  // FieldTree<unknown>;
```
2026-02-09 12:28:35 -08:00
Miles Malerba adfb83146b fix(forms): simplify design of parse errors
Reoves the `parseErrors` property on `FormUiControl` and instead
introduces a new utility `transformedValue` that automatically handles
synchronizing the raw value and model value using the given `parse` and
`format` functions. It also automates the reporting of `parseErrors` to
the `FormField`, simplifying the API surface
2026-02-09 12:27:41 -08:00
SkyZeroZx f50ec42f15 refactor(forms): guard unsupportedFeatureError with ngDevMode
Move unsupportedFeatureError message behind ngDevMode
to keep it dev-only and allow proper tree-shaking.
2026-02-09 12:26:35 -08:00
SkyZeroZx 66e8385b6a refactor(common): extract argument assertion
Deduplicates string argument validation logic across pipes
by introducing a local assertion helper
2026-02-09 12:26:06 -08:00
Kristiyan Kostadinov 11834a4274 fix(compiler): add geolocation element to schema
A new `geolocation` tag was recently added to Chrome. These changes update the schema to account for it.

See https://developer.chrome.com/blog/geolocation-html-element
2026-02-09 12:25:37 -08:00
moraisacr d940885c5b docs(forms): replace 'legacy' with 'reactive' in migration guide and navigation
Updates terminology from 'Legacy Forms' to 'Reactive Forms' in:
- Migration guide documentation
- Navigation entries label

Fixes #66957
2026-02-09 12:24:03 -08:00
hawkgs c32e732d3d fix(devtools): runtime error when a cluster preview node is missing
Fix the runtime error produced when a cluster preview node is missing triggered during a signal update.
2026-02-09 12:23:17 -08:00
Alan Agius d019ee3c0b ci: add myself to pull approve dev-infra reviewers
Add myself to the dev-infra reviewers.
2026-02-09 12:22:18 -08:00
Angular Robot 20a24631a4 build: update pnpm to v10.29.1
See associated pull request for more information.
2026-02-09 12:21:19 -08:00
SkyZeroZx dd15efb7c3 docs(docs-infra): fix heading ID generation and display
Ensures that custom heading IDs are properly handled
2026-02-09 12:20:13 -08:00
SkyZeroZx fd293d3397 docs: add missing error codes to the error overview list 2026-02-09 12:19:39 -08:00
SkyZeroZx 0b9d1cfb7b docs(docs-infra): simplify external link rendering for pill
Renders the external link icon for docs pills using CSS instead of a `docs-icon` component.
2026-02-09 12:19:07 -08:00
Angular Robot 11767cabe4 build: update Jasmine to 6.0.0
Jasmine enables `forbidDuplicateNames: true` by default. So we also need to desambiguate duplicate spec names.
2026-02-09 12:15:57 -08:00
Miles Malerba 85d6a2bc6e build: configure gemini cli to look for AGENTS.md
By default gemini cli looks for GEMINI.md, these settings change it to
consider AGENTS.md as well
2026-02-09 12:15:17 -08:00
Miles Malerba 7ddd10bb44 docs: add gemini custom command for generating skills
Adds a Gemini CLI custom command (`/explain`) to generate skills for
working with code packages in this repo. Usage:

1. Add skill for a new package:
  `/explain packages/common`
2. Update the skill for a package:
  `/explain Update the skill for packages/core`
3. Add supplemental information:
  `/explain Add supplemental info to the signal forms skill about how
   schema logic is implemented`

Also adds a few skills for working with some of the packages I commonly
interact with, including:

- packages/forms/signals
- packages/core
- packages/compiler-cli
2026-02-09 12:14:15 -08:00
Matthieu Riegler 4b3b149ba1 refactor(benchpress): remove zone-based testing utilities
Transition to zoneless.
2026-02-09 07:55:12 -08:00
Matthieu Riegler ec26d38778 refactor(service-worker): remove zone-based testing utilities
Transition to zoneless.
2026-02-09 07:55:12 -08:00
Matthieu Riegler a1441a432d refactor(compiler): remove zone-based testing utilities
Having zone.js here already wasn't necessary.
2026-02-09 07:55:12 -08:00
hawkgs c4abadb528 fix(devtools): duplicated props in the properties panel
Fix the diff algorithm that consequentially caused the duplicated props.
2026-02-09 07:54:31 -08:00
Shuaib Hasan Akib 14f16226aa refactor(common): remove unused imports and standalone: false from examples
Cleans up example code by removing explicit `standalone: false`, since
standalone components are the default and recommended approach.
2026-02-09 07:53:31 -08:00
Shuaib Hasan Akib 0c6604f478 refactor(common): update copyright to Google LLC
Replaces outdated Google Inc copyright headers with Google LLC to align with current licensing standards.
2026-02-09 07:51:36 -08:00
aparziale 63d828aa33 docs: Signal forms custom validator with 'fieldTree' field in validation result error
Update docs for fieldTree property

fixes #66687
2026-02-06 15:10:59 -08:00
hawkgs ce0f0febe2 refactor(devtools): add a demo resource to the demo app
Add a demo resource for testing purposes.
2026-02-06 15:09:19 -08:00
Kristiyan Kostadinov 460dbbb8e9 docs: remove non-existant method
Removes the reference to the `focusFirstItem` method since it doesn't exist.

Fixes https://github.com/angular/components/issues/32741.
2026-02-06 10:20:31 -08:00
Angular Robot 15c71fba43 build: update all non-major dependencies
See associated pull request for more information.
2026-02-06 09:44:52 -08:00
Jessica Janiuk ea2016a6dc feat(core): add support for nested animations
Now if there's a leave animation nested within a template, those will animate before the parent element is removed. This makes animating leaving elements a bit easier than before and adds a lot more flexibility to how animations can be structured.

fixes: #66476
2026-02-06 09:42:34 -08:00
SkyZeroZx 24c0c5a180 feat(forms): support signal-based schemas in validateStandardSchema
Allow `validateStandardSchema()` to consume a computed schema so
validation rules stay in sync when the schema changes over time.

This supports schemas stored in computed signals (e.g. zod schemas that
depend on input signals) and ensures the effective schema updates after
initialization instead of being captured once.

Fixes #66867
2026-02-06 07:40:46 -08:00
Kristiyan Kostadinov 2ea6dfc6c9 fix(compiler-cli): update diagnostic to flag no-op arrow functions in listeners
Based on the discussion in #66294: now that we support arrow functions in event listeners, developers may write out something like `(click)="() => expr"` which will be a no-op. These changes update the existing diagnostic for uninvoked expressions in listeners to account for it.
2026-02-06 07:39:18 -08:00
Charles Lyding 108252bf67 refactor(language-service): use type-only TypeScript imports in some files
Standardize on `import type ts from 'typescript'` across several files
in the language-service package.

This ensures that these files do not have a runtime dependency on a
specific version of the TypeScript module, instead relying on the
instance provided by the host during initialization.

Note: This change is not comprehensive. Several files still require
runtime access to the TypeScript module and will require further
refactoring to fully decouple the dependency.
2026-02-06 07:38:48 -08:00
aparziale 6550b9d776 docs: Images not show
Fixed path in optimization image tutorial
2026-02-06 07:38:02 -08:00
hawkgs 64d34da0b2 fix(devtools): signal node value preview for afterRenderEffect
Render an arrow function (`() => {}`) in the signal nodes in the graph that represent `afterRenderEffect`s.
2026-02-06 07:36:43 -08:00
Matthieu Riegler fd5ff5c1a9 docs: callout for optional fields and native controls. 2026-02-06 07:35:13 -08:00
Angular Robot 8a3f312115 build: update dependency jsdom to v28
See associated pull request for more information.
2026-02-06 07:34:35 -08:00
Shuaib Hasan Akib e79e7994d4 docs: fix wrong line highlight in component queries example 2026-02-06 07:33:56 -08:00
Shuaib Hasan Akib 12afc1d164 docs: use self-closing tag
Aligns template syntax with modern Angular recommendations and improves readability.
2026-02-06 07:33:11 -08:00
Angular Robot 6fa227031e docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2026-02-05 17:17:53 -08:00
SkyZeroZx 2a0241a665 test(compiler): remove zone-based testing utilities
Removes usages of zone-based helpers such as
`waitForAsync` as part of the migration to zoneless tests.

Completes the transition to zoneless.
2026-02-05 16:56:55 -08:00
SkyZeroZx 6883889123 docs: remove Component suffix in reference and tools 2026-02-05 16:55:26 -08:00
Angular Robot 407ab1a92f build: update rules_browsers digest to e08ae33
See associated pull request for more information.
2026-02-05 16:52:03 -08:00
Angular Robot ec6334da85 build: update all github actions
See associated pull request for more information.
2026-02-05 16:51:32 -08:00
Alan Agius 85dd096c11 build: remove dagre-d3-es pnpm patch from MODULE.bazel
This file no longer exist
2026-02-05 16:50:17 -08:00
Matthieu Riegler 3e2ed305d1 ci: exclude standard_schema from sync.
This file isn't sync into G3 and this should prevent the CI from requiring a presubmit when the file is modified.
2026-02-05 16:49:43 -08:00
Shuaib Hasan Akib ff2c0053c8 docs: improve type safety in custom validator documentation
Replace `field: any` with proper SchemaPath typing in Signal Forms custom
validation examples to match built-in validator patterns.

fixes: #66887

Update adev/src/content/guide/forms/signals/validation.md

Co-authored-by: Matthieu Riegler <kyro38@gmail.com>
2026-02-05 16:49:08 -08:00
Angular Robot 91ed22c241 build: lock file maintenance
See associated pull request for more information.
2026-02-05 16:48:35 -08:00
Leon Senft c3229b3136 release: cut the v21.2.0-next.2 release 2026-02-04 16:15:40 -08:00
Leon Senft 8fe34e146b docs: release notes for the v21.1.3 release 2026-02-04 16:08:22 -08:00
kbrilla 8c21866f49 feat(language-service): add linked editing ranges for HTML tag synchronization
This feature enables synchronized editing of opening and closing HTML tag pairs
in Angular inline templates. When the cursor is on an element tag name, editing
it will automatically update the corresponding tag.

Implementation:
- Add getLinkedEditingRangeAtPosition method to NgLanguageService interface
- Implement linked editing range detection for opening and closing tags
- Handle edge cases: self-closing elements, void elements, cursor detection
- Export through ts_plugin wrapper to override TypeScript JSX-only implementation
- For external HTML templates, VS Code built-in HTML support handles linked editing
2026-02-04 15:45:27 -08:00
Matthieu Riegler 01ed57f297 fix(vscode-extension): support highlighting for class bindings with brackets
Tailwind classes can often be quite complex strings. This change adds supports for classes with backets.

fixes #66818
2026-02-04 15:45:04 -08:00
Charles Lyding 03e1a95c26 refactor(language-service): decouple TypeScript dependency in ts_plugin
Update `ts_plugin.ts` to use the TypeScript instance provided by the
editor during initialization instead of a local import. This prevents
potential issues caused by version mismatches between the plugin's
internal TypeScript dependency and the version used by the host.
2026-02-04 15:44:00 -08:00
SkyZeroZx 7dfbacbcf8 test(forms): remove zone-based testing utilities
Removes usages of zone-based helpers such as `fakeAsync` , `tick`
`waitForAsync` as part of the migration to zoneless tests.

Completes the transition to zoneless.
2026-02-04 15:38:09 -08:00
Walter Breakell d6585fe837 docs: fix syntax errors and improve grammar in navigation guide 2026-02-04 15:37:17 -08:00
Jef 81876c2583 docs: fix typo
Add missing n to componet(s)
2026-02-04 15:36:49 -08:00
Ben Hong 38428945ac docs: add guidance on submit and novalidate for signal forms 2026-02-04 15:36:18 -08:00
Doug Parker da1f61cfbd release: bump Angular DevTools version to 1.10.0 2026-02-04 14:46:56 -08:00
Kristiyan Kostadinov 680d99b1c3 refactor(forms): work around internal issue
Works around an internal property renaming issue by changing how we declare the interface for `InteropNgControl`.
2026-02-04 14:25:44 -08:00
David Neil cab5ddd526 fix(core): hold constructors weakly in DepsTracker cache
Otherwise a component can be held in memory longer than
the component constructor is reachable from application code.
2026-02-03 12:44:23 -08:00
Miles Malerba 95ecce8334 feat(forms): allow setting submit options at form-level
Updates FormOptions to accept a submission configuration object.
This allows defining default submit options (action, validation behavior, etc.)
when creating the form, which can be overridden when calling submit().
2026-02-03 12:43:31 -08:00
Miles Malerba dd208ca259 feat(forms): update submit function to accept options object
Changes the `submit` function signature to accept a `FormSubmitOptions` object instead of a direct action callback.
This allows for more flexibility, including:

- `action`: The standard submit action to perform with the data.
- `onInvalid`: A callback to execute when the submit action is not triggered due to failing validation
- `ignoreValidators`: Controls whether pending validators or invalid validators should be ignored

Also updates the return value of `submit` to a `Promise<boolean` to indicate submission success.
2026-02-03 12:43:31 -08:00
Matthieu Riegler 43d61ecbb2 docs(docs-infra): extract call signature return type.
fixes #66799
2026-02-03 12:31:36 -08:00
Shuaib Hasan Akib cfa7664361 docs: generalize wording for CSP nonce configuration options
Replaces “one of two ways” with “one of the following ways” to avoid
hardcoding the number of supported approaches and keep the
documentation accurate if options change.

fixes: #66861
2026-02-03 12:27:11 -08:00
Matthieu Riegler 9c032972a8 docs(docs-infra): fix foot width
This was due to a regression introduced by #66825

fixes #66880
2026-02-03 12:25:42 -08:00
David Neil 3867cd8554 perf(router): Use .bind to avoid holding other closures in memory
In many JS runtimes all closures created in the same scope share a context
this means that data held in one of the closures is not collected until all of the closures are collected.
This change prevents the returned promise from holding a reaction that holds the entire `Router` object in memory.
2026-02-03 12:24:58 -08:00
Jessica Janiuk 5a0f272519 Revert "feat(router): adds browserUrl input support to router links"
This reverts commit 9505541d32.
2026-02-02 16:32:09 -08:00
SkyZeroZx 68ba9c45cb test(router): remove provider zoneless from tests
Removes the `provideZonelessChangeDetection` provider from router tests.
It’s no longer needed and simplifies the test setup.
2026-02-02 15:00:18 -08:00
kirjs c750b3cf11 refactor(forms): Setup closure compatible property override
We have to do this because Abstract control doesn't allow us to have value as a getter type-wise
2026-02-02 14:51:40 -08:00
kirjs 80f08838b0 refactor(forms): Address more feedback
Clean up tests, drop old todos
2026-02-02 14:51:40 -08:00
kirjs fdae63c11f refactor(forms): Address more feedback
Make the way reset works for it to be more consistent
2026-02-02 14:51:40 -08:00
kirjs e4eeb3adc0 refactor(forms): Address more feedback
Untrack callbacks, so they are not called when signals change
2026-02-02 14:51:40 -08:00
kirjs b3b5611096 refactor(forms): Address more feedback
Document that injectors are optional
2026-02-02 14:51:40 -08:00
kirjs df32f957f9 refactor(forms): Address more feedback
Add some TODOs for future things
2026-02-02 14:51:40 -08:00
kirjs 0df5442f4e refactor(forms): Address more feedback
- Add more comments and docs
- In signalErrorsToValidationErrors return null for empty object
- Drop messages in prod mode
2026-02-02 14:51:40 -08:00
kirjs dabe34ad06 refactor(forms): Clean up the way errors are done
Make them tree-shakeable and fix the naming
2026-02-02 14:51:40 -08:00
kirjs 8e80575ff4 refactor(forms): address feedback
Consolidate everything related to converting errors in one place
2026-02-02 14:51:40 -08:00
kirjs 05d5087252 refactor(forms): use markAsPristine and markAsUntouched on field node
This make things cleaner
2026-02-02 14:51:40 -08:00
kirjs bbbdf0a6ed refactor(forms): add unsupported method errors and docs
- Add disable, enable methods that throw with helpful messages
- Add validator methods (set/add/remove/clear) that throw
- Add setErrors, markAsPending methods that throw
- Add setters for dirty/pristine/touched/untouched that throw
- Add JSDoc with @usageNotes examples
- Add comprehensive unit tests for SignalFormControl
- Add FormGroup/FormArray integration tests
- Add web tests for CVA directive lifecycle
- Update migration docs with SignalFormControl usage
2026-02-02 14:51:40 -08:00
kirjs a2950805df refactor(forms): add CVA callback registration
- Add registerOnChange, _unregisterOnChange for value change callbacks
- Add registerOnDisabledChange, _unregisterOnDisabledChange for disabled callbacks
- Add disabled changes effect to notify registered callbacks
- Call onChange callbacks from updateValue with emitModelEvent flag
2026-02-02 14:51:40 -08:00
kirjs 35d02f228c refactor(forms): add fieldTree wrapping for sync parent updates
- Add CachingWeakMap utility for memoization
- Add wrapFieldTreeForSyncUpdates Proxy wrapper
- Intercept fieldTree().value.set() calls to sync parent immediately
- Cache wrapped trees and states to preserve identity
2026-02-02 14:51:40 -08:00
kirjs d6b49f12ef refactor(forms): add FormGroup/FormArray parent integration
- Add ValueUpdateOptions type with onlySelf, emitEvent options
- Add parent notification on value changes via effect
- Add parent notification helpers: scheduleParentUpdate, notifyParentUnlessPending
- Propagate dirty/touched/pristine/untouched to parent
- Support onlySelf option to prevent parent propagation
2026-02-02 14:51:40 -08:00
kirjs c2e0be7600 refactor(forms): add events observable with ControlEvents
- Emit ValueChangeEvent, StatusChangeEvent on changes
- Emit TouchedChangeEvent, PristineChangeEvent on status changes
- Emit FormResetEvent on reset()
- Add emitControlEvent helper method
2026-02-02 14:51:40 -08:00
kirjs b63496853d refactor(forms): add valueChanges and statusChanges observables
- Add valueChanges EventEmitter that emits when source signal changes
- Add statusChanges EventEmitter that emits when status changes
- Set up effects to emit to observables
2026-02-02 14:51:40 -08:00
kirjs 1e3462db00 refactor(forms): add reset functionality
- Add reset() method with optional value parameter
- Support FormControlState unboxing ({value, disabled} format)
- Add isFormControlState helper function
2026-02-02 14:51:40 -08:00
kirjs ab3f4367f4 refactor(forms): add dirty/touched status management
- Add dirty, pristine, touched, untouched getters
- Add markAsTouched, markAsDirty methods
- Add markAsPristine, markAsUntouched methods (preserve other state)
2026-02-02 14:51:40 -08:00
kirjs bb5e75a5a1 refactor(forms): add disabled state support via rules
- Add disabled, enabled, pending getters
- Update status getter to check disabled state first
- Add UNSUPPORTED_FEATURE error code for future use
2026-02-02 14:51:40 -08:00
kirjs 3937afc316 feat(forms): introduce SignalFormControl for Reactive Forms compatibility
This commit introduces `SignalFormControl`, a bridge implementation that allows Signal-based forms to interoperate with existing Reactive Forms infrastructure. It extends `AbstractControl` with standard methods and reactive observables while handling state propagation to parent containers.
2026-02-02 14:51:40 -08:00
Shahar Har-Shuv f29fcd882a docs: Rename Field directive -> FormField in form-logic.md 2026-02-02 14:40:59 -08:00
Angular Robot 50af8cbd15 docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2026-02-02 14:40:31 -08:00
Alex Rickabaugh aff9e36a98 fix(core): linkedSignal.update should propagate errors
Unlike a normal `signal()`, a `linkedSignal()` can be in an error state when
its computation fails. Currently, there's a bug where `linkedSignal.update`
does not account for this error state, and will pass the internal `ERRORED`
`Symbol` as the current value to the updater function.

This commit fixes the issue by having `update()` check and throw the error
instead of calling the updater function.
2026-02-02 12:21:28 -08:00
Kristiyan Kostadinov 8ab433abdd fix(core): export DirectiveWithBindings
Exports the `DirectiveWithBindings` interface since it's part of the public API of `createComponent`.

Fixes #66851.
2026-02-02 11:08:42 -08:00
SkyZeroZx 9505541d32 feat(router): adds browserUrl input support to router links
Enables specifying a custom browser URL for router links via a new input,
allowing navigation to use an explicit browser URL in navigation options.

Closes #66805
2026-02-02 11:08:18 -08:00
SkyZeroZx 70615117a2 feat(docs-infra): Implements select component using Angular Aria
Replaces the native select element with a custom combobox implementation for improved accessibility and styling.
2026-02-02 11:07:53 -08:00
Charles Lyding 1fa7879cfd refactor(language-service): delegate plugin initialization to bundle
Updates the plugin factory to directly invoke the 'initialize' function from the
Angular Language Service bundle. This replaces manual proxying and lazy-loading
logic with direct delegation, unifying the instantiation process within the bundle.
2026-02-02 11:07:06 -08:00
AleksanderBodurri 35046d3dba feat(devtools): promote router tree to stable
Previous the router tree was an opt-in feature that required manual enablement in settings.

Now the router tree is enabled by default whenever the application supports it and routes are detected.
2026-02-02 11:06:42 -08:00
SkyZeroZx cdbb957334 docs(docs-infra): Fix border color issue on aria select when closing on outside click
Prevents incorrect border color from appearing on close triggered by an outside click
2026-02-02 11:04:44 -08:00
dominicbachmann a64a90dbbe docs(animations): fix small typo in animations migrations docs 2026-02-02 10:18:05 -08:00
Jaime Burgos bd27aa2cf3 docs: remove component suffix router guide 2026-02-02 10:17:36 -08:00
SkyZeroZx 4aae3379c2 test(forms): migrate reactive forms and value accessors to zoneless
Migrates reactive forms, template-driven forms, and value accessors to zoneless tests.
2026-02-02 10:16:58 -08:00
SkyZeroZx 825122b6d2 docs: update llms.txt 2026-02-02 10:14:03 -08:00
kirjs 19aa1eb95e docs: rename agents.md to AGENTS.md 2026-02-02 10:10:41 -08:00
kirjs a8d0155303 docs: add PR section to agents.md 2026-02-02 10:10:41 -08:00
kirjs 9306abe883 docs: add agent configuration guide
Adds agents.md to the root directory to provide context and instructions for AI agents working in this repository.
2026-02-02 10:10:41 -08:00
SkyZeroZx 522c5ba868 docs(docs-infra): ensure code preview copy preserves spaces
Preserve whitespace when copying code examples from the docs. Fixes the copy handler so copied snippets keep original spacing.

Fixes #66790
2026-02-02 10:09:35 -08:00
Jaime Burgos 3d09d8e831 docs: update zoneless guide 2026-02-02 10:05:22 -08:00
Andrew Scott 8d5210c9fe feat(core): add ChangeDetectionStrategy.Eager alias for Default
Adds `ChangeDetectionStrategy.Eager` as an explicit alias for `ChangeDetectionStrategy.Default`. This improves readability when contrasting with `OnPush`, clarifying that the component will be checked eagerly when traversal reaches it.

Compiler findings:
- The compiler resolves `ChangeDetectionStrategy` enum members by value in `resolveEnumValue` (see `packages/compiler-cli/src/ngtsc/annotations/common/src/evaluation.ts`).
- Since `Eager` has usage value `1` (same as `Default`), it is correctly interpreted during static analysis.
- At runtime, `defineComponent` (in `packages/core/src/render3/definition.ts`) checks `changeDetection === ChangeDetectionStrategy.OnPush` (0). Any other value, including `1` (Eager/Default), results in eager checking behavior (`onPush: false`).
2026-01-30 14:20:52 -08:00
Charles Lyding 496967e7b1 feat(language-service): add JSON schema for angularCompilerOptions
This commit introduces a JSON schema for angularCompilerOptions in the
Angular Language Service extension. It provides validation and autocompletion
for Angular-specific options in tsconfig.json files.
2026-01-30 14:20:25 -08:00
Angular Robot 424ecf840d build: update dependency @actions/core to v3
See associated pull request for more information.
2026-01-30 09:34:15 -08:00
Leon Senft 9a3d5b36c2 docs(forms): fix incorrect import statement
Correct the import statement used to import `NG_STATUS_CLASSES` in the
migration guide.
2026-01-30 09:30:45 -08:00
Leon Senft 346ceb7dc0 docs: fix typos
Fix typos introduced in some recent changes.
2026-01-30 09:30:45 -08:00
SkyZeroZx b1bf535f8e fix(forms): Resolves debounce promise on abort in debounceForDuration
Ensures the promise returned by the debouncer resolves
when aborted, preventing potential hangs for awaiting consumers.
Fixes #66646
2026-01-30 09:19:42 -08:00
Leon Senft 26d12158e1 refactor(forms): convert FieldState.controlValue to a WritableSignal
Remove `setControlValue()` from `FieldState` and convert `controlValue` to a
`WritableSignal` whose setter implements the debounced syncing behavior
of `setControlValue()`.
2026-01-30 09:14:14 -08:00
Angular Robot af76b9dd4d build: update dependency @actions/github to v9
See associated pull request for more information.
2026-01-30 09:04:12 -08:00
Charles Lyding b327d72ed2 refactor(language-service): initial use of type-only imports and standard server types
This commit converts the typescript import in api.ts to a type-only import
and updates the plugin factory to utilize standard TypeScript server types.
Internal interfaces and specific service types are replaced with general
types to decouple the factory wrapper from internal implementations.
2026-01-29 16:06:17 -08:00
Angular Robot 74e7681142 docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2026-01-29 13:32:54 -08:00
Alex Rickabaugh a67e00741c refactor(forms): move control logic into FormField directive
Refactors the `ɵɵcontrolCreate` and `ɵɵcontrol` instructions to delegate control logic to the forms package via new `ɵngControlCreate` and `ɵngControlUpdate` lifecycle hooks. Previously, the logic for binding form state to native elements and custom controls was hardcoded within `@angular/core`.

**Compiler Changes:**
- Introduces a new compilation phase `specializeControlProperties` (in `control_directives.ts`).
- This phase detects properties named `formField` and specializes them into `ControlCreate` and `Control` IR opcodes.
- These opcodes emit `ɵɵcontrolCreate` and `ɵɵcontrol` instructions, respectively.

**Runtime Changes:**
- `ɵɵcontrolCreate` acts as the creation phase. It locates the control directive and invokes its `ɵngControlCreate` method.
- `ɵɵcontrol` acts as the update phase, and invokes the control directive's `ɵngControlUpdate` method (if present).
- Introduces a `passThroughInput` configuration in `ControlFeature`. This specifies the input name (e.g., `formField`) that triggers the control. If the runtime detects that this input is bound to multiple targets (e.g., the `FormField` directive *and* the host component), the control is flagged as "pass-through". In this state, `ɵngControlCreate` returns a no-op update function, deferring responsibility to the other consumer (e.g., the component managing the field itself).

**Forms Changes:**
- `FormField` directive implements `ɵngControlCreate` and `ɵngControlUpdate`.
- Inside this hook, `FormField` determines the type of control it is attached to (Native, CVA, or Custom Signal Control) and delegates to the appropriate handler (`nativeControlCreate`, `cvaControlCreate`, or `customControlCreate`).
- Consolidates all form binding logic within `@angular/forms/signals`, enabling support for new `FormValueControl` and `FormCheckboxControl` interfaces.
- Reorganizes the codebase by moving `FormField` from `api/` to `directive/` and splitting the binding logic into semantic pieces:
    - `control_native.ts`, `control_cva.ts`, and `control_custom.ts` contain the specific handlers for each control type.
    - `native.ts` and `select.ts` provide helpers for native element discovery and select-specific synchronization.
    - `bindings.ts` manages the tracking and application of property/attribute bindings.
2026-01-29 13:17:40 -08:00
Alex Rickabaugh 88e6ebec01 refactor(forms): move standard schema types out of shared files
Consolidating the standard schema support into `standard_schema.ts` will
cut down on unnecessary g3 patch changes whenever we change
`validation_errors.ts`.
2026-01-29 13:17:40 -08:00
Charles Lyding f9bcccc2b9 build(language-service): remove local development build script
The standalone build.sh script for the language service is no longer
required as the vscode-ng-language-service repository has been merged
into this monorepo. Local development and testing of the extension
can now be handled via the integrated build system.
2026-01-29 13:16:49 -08:00
Matthieu Riegler 72dfb4d92a docs(docs-infra): wrap getTextOfJSDocComment
This commits adds a wrapper around `ts.getTextOfJSDocComment` because of bugs that won't be fixed by the TS team (see microsoft/TypeScript#63027)
2026-01-29 13:16:00 -08:00
Shuaib Hasan Akib 6990f88d97 feat(docs-infra): increase table-of-contents width for large screens
Add media query overrides to expand the table-of-contents width on extra-large desktops.

fixes: #66823
2026-01-29 12:24:00 -08:00
Angular Robot df3258cfc4 build: update all non-major dependencies
See associated pull request for more information.
2026-01-29 12:22:40 -08:00
Angular Robot 528ce58222 build: update bazel dependencies
See associated pull request for more information.
2026-01-29 12:22:00 -08:00
Jessica Janiuk c66a19f0de fix(core): prevent element duplication with dynamic components
When dynamic components are rapidly added and removed with animate.leave and animate.enter, a leave animation might fire before the enter animation could, causing an element to be retained. This fix prevents that from occuring by clearing the enter animations in this case.

fixes: #66794
2026-01-29 12:18:00 -08:00
Charles Lyding 1c3b1cf18d fix(localize): add support for unit-test builder in ng-add schematic
This commit updates the @angular/localize ng-add schematic to support
the @angular/build:unit-test builder. It ensures that @angular/localize
is added to the types array in the TypeScript configuration file
associated with the unit-test target. If no tsConfig is specified in
the target options, it defaults to tsconfig.spec.json in the project root.
2026-01-29 12:17:15 -08:00
Andrew Scott 458bc4a2c8 fix(router): limit UrlParser recursion depth to prevent stack overflow
Deeply nested parentheses in URLs (e.g. `(a/(b/(c...)))`) trigger recursive calls in `UrlParser`, which can lead to a `RangeError: Maximum call stack size exceeded`. While such errors are generally caught by the framework, relying on the runtime's stack limit is unpredictable across different environments and engine states (e.g. varying stack sizes in different browsers or Node.js versions).

The deeply nested parentheses  can cause a stack overflow. While such URLs can be valid (e.g., `(a/(b/(c...)))`) and serialize to simple paths (e.g., /a/b/c), excessive nesting is unreasonable and likely malicious or accidental.

Linear paths (e.g. /a/b/c/d) are parsed iteratively and do NOT trigger recursion. Only parentheses trigger recursion.

This commit introduces a recursion depth limit of 50. If parsing exceeds this depth, the router will now throw a specific `UNPARSABLE_URL` error with the message "URL is too deep". This ensures a deterministic failure mode that is easier for applications to handle than a crash or generic RangeError.

The limit of 50 is chosen as it should accommodate any reasonable application URL structure (including complex named outlets) while providing a safe upper bound against abusive payloads.

This is essentially a refactor of the error state:

* Before: RangeError (System says "I'm out of stack memory")
* After: RuntimeError (Validator says "Input is invalid")

This provides:

* Semantic Correctness: The error now correctly blames the input ("URL too deep"), not the environment ("Stack full").
* Cross-Platform Consistency: The limit is the same in Chrome, Firefox, Node, and Deno, regardless of their internal recursion limits.
* Fast Failure: We stop at depth 50 instead of depth ~15,000, saving those cycles (though CPU cost is negligible either way).

"wide" URLs are now theoretically more expensive than "deep" URLs (because deep ones fail fast), but both are well within safe bounds for any reasonable input size.
2026-01-29 12:15:21 -08:00
Andrew Scott 907a94dcec feat(router): Update IsActiveMatchOptions APIs to accept a Partial
This updates `RouterLinkActive`, `Router.isActive`, and the standalone
`isActive` function to accept `Partial<IsActiveMatchOptions>` which uses
the current default values as the base (paths and queryParams are
subset, fragment and matrix params are ignored).

fixes #53326
2026-01-29 12:10:40 -08:00
Andrew Scott cf9620f7d0 feat(router): Make match options optional in isActive
The behavior now matches RouterLinkActive.
2026-01-29 12:10:40 -08:00
SkyZeroZx 0c2efc0d46 refactor(core): Remove unsued properties in differ factories
Simplifies differ factories by removing unnecessary constructors and properties.

Also removes the formatError function as it is no longer used.
2026-01-29 12:06:32 -08:00
JakobDev 0e04233a7c docs: Add missing link in HostListener documentation 2026-01-29 11:56:42 -08:00
SkyZeroZx d072791f13 refactor(core): remove unused restriction parameter
Removes the `restriction` parameter from `registerAppScopedDispatcher` and `registerGlobalDispatcher`.
2026-01-28 20:54:46 +00:00
Andrew Scott 5a6fefb687 release: cut the v21.2.0-next.1 release 2026-01-28 20:49:59 +00:00
Andrew Scott 571747d5cc docs: release notes for the v21.1.2 release 2026-01-28 20:39:31 +00:00
Charles Lyding 7bb241f7b6 refactor(language-service): introduce withFallback helper in ts_plugin
This commit refactors the `ts_plugin.ts` implementation to use a new `withFallback` helper function. This helper encapsulates the common logic of delegating requests to either the Angular language service directly (for non-TS files or when `angularOnly` is true) or trying the TypeScript language service first before falling back to the Angular language service.
2026-01-28 19:24:16 +00:00
Angular Robot d7672cfceb build: update pnpm to v10.28.2
See associated pull request for more information.
2026-01-28 19:22:35 +00:00
Leon Senft e682e53113 fix(forms): only touch visible, interactive fields on submit
Don't touch hidden, disabled, or readonly fields on submit, since they
don't contribute to form validity. This also prevents errors from
appearing immediately if they're later made interactive.

Fix #66344
2026-01-28 18:56:02 +00:00
Georgi Serev 042471044d refactor(devtools): snap to signal graph nodes selected from the properties panel
Snap to the signal graph node of a corresponding property when the user uses "Show 'prop' signal graph" button.
2026-01-28 18:33:37 +00:00
Angular Robot 1b324a2ca6 build: lock file maintenance
See associated pull request for more information.
2026-01-28 18:26:45 +00:00
Angular Robot a4f6d407c2 build: update cypress-io/github-action action to v7
See associated pull request for more information.
2026-01-28 18:17:25 +00:00
Matthieu Riegler 611f6a49d1 docs: reword docs on standalone.
fixes #66773
2026-01-28 18:16:54 +00:00
Angular Robot 177234a6f7 docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2026-01-28 18:16:27 +00:00
Angular Robot bea4cb72d1 build: update dependency @actions/github to v8
See associated pull request for more information.
2026-01-28 17:56:06 +00:00
Alan Agius 4123ebf61e release: bump Angular DevTools version to 1.9.0 2026-01-28 10:52:59 +01:00
Leon Senft 01bfb83fc9 test(forms): submit behavior while validation is pending
Ensure `submit()` behaves as expected while a form is pending.

- Submission is not blocked by pending validation.
- Submission errors prevent pending validation errors from appearing
  after they resolve on the same field.
- Submission errors don't prevent pending validation errors from
  appearing after they resolve on subfields.
2026-01-28 00:15:29 +00:00
Jaime Burgos 4448356313 test(common): enables zoneless change detection in tests
Adds `provideZonelessChangeDetection` to TestBed configurations in  `ngComponentOutlet` , `ngOptimizedImage` , `ngTemplateOutlet` and `ngPlural`.
2026-01-28 00:08:46 +00:00
Angular Robot 960de629ed build: update cross-repo angular dependencies
See associated pull request for more information.
2026-01-27 20:11:06 +00:00
Shuaib Hasan Akib 160a8b4be7 docs: fix wrong line highlights
Corrects incorrect line highlighting in code examples so the highlighted
lines match the intended sections being explained.
2026-01-26 23:56:42 +00:00
Andrew Scott 8a7cbd4668 fix(language-service): Detect local project version on creation
This updates the language service to use the detected version of angular
core in the given project on load rather than the minimum detected
version in the workspace
2026-01-26 23:51:31 +00:00
Angular Robot 3e7808b39f build: update cross-repo angular dependencies
See associated pull request for more information.

Closes #66702 as a pr takeover
2026-01-26 23:51:05 +00:00
Andrew Scott b51bab583d feat(router): Add partial ActivatedRouteSnapshot information to canMatch params
This commit adds partial `ActivatedRouteSnapshot` information as the
third parameter of the `canMatch` guard.

resolves #49309
2026-01-26 23:36:06 +00:00
Andrew Scott 57e80a5737 refactor(router): Add type for partial ActivatedRouteSnapshot for easier re-use
This adds a type for the partial `ActivatedRouteSnapshot` that includes
only information up to a point in the matching algorithm.
2026-01-26 23:36:06 +00:00
Andrew Scott 042e6d2616 refactor(router): extract snapshot creation to shared helper
extracts ActivatedRouteSnapshot creation to a shared helper method
2026-01-26 23:36:06 +00:00
Matthieu Riegler 899df39c7c docs(docs-infra): remove unused examples 2026-01-26 23:19:35 +00:00
Shuaib Hasan Akib ceefceb004 docs: normalize spacing in animation example boxes
Simplifies box padding and removes default paragraph margins to ensure consistent spacing and alignment
in the animation examples.
2026-01-26 22:59:28 +00:00
SkyZeroZx c921786260 docs: Updates form documentation (#66732)
Updates the form documentation to link to the API reference for the `form()` function.

Also removes unused `HttpClient` import from the async validation example.

PR Close #66732
2026-01-26 22:46:11 +00:00
SkyZeroZx 6e9da70b35 docs(docs-infra): Exempts more symbols from automatic linking (#66732)
Extends the list of symbols that should not be
automatically linked for forms.

PR Close #66732
2026-01-26 22:46:11 +00:00
Shuaib Hasan Akib 8efee1c71d docs: apply prefer/avoid blocks in UI with comments
Apply inline comments with proper Prefer and Avoid UI blocks so
guidance is more visible and consistent across the documentation.
2026-01-26 22:33:11 +00:00
Matthieu Riegler 87a72f3dd0 docs: add mentions of the global target syntax. 2026-01-26 22:31:11 +00:00
Georgi Serev 9625780259 docs(docs-infra): update the look of api items state labels
Update how dev preview, experimental and deprecated labels are visualized in the API list to avoid ambiguity with the current design on larger screens.
2026-01-26 22:30:19 +00:00
Andrew Scott dbd50be7f7 fix(router): Do not intercept reload events with Navigation integration
This commit prevents the Router from intercepting reload navigations
in the navigate event listener. This would convert hard page reloads
to SPA navigations.

fixes #66746
2026-01-26 22:29:51 +00:00
Miles Malerba fb05fc86d0 fix(forms): sort error summary by DOM order
This will allow users to rely on the `errorSummary` order to implement
features like "focus next error"
2026-01-26 22:29:07 +00:00
SkyZeroZx 1df564b9f9 refactor(core): remove index from text node creation
Removes unnecessary `index` parameter from `_locateOrCreateTextNode`
and `locateOrCreateTextNodeImpl` functions.
2026-01-26 22:22:56 +00:00
Shuaib Hasan Akib ca9b5bd658 docs: fix wrong line highlight in lightweight injection token for API definition example 2026-01-26 22:22:00 +00:00
huangkevin-apr b3f2bad593 docs(docs-infra): improve accessibility of search dialog trigger
- Add explicit aria-label for screen reader users
- Preserve title tooltip for mouse users
2026-01-26 22:21:36 +00:00
Angular Robot aeb4b419af build: update all github actions
See associated pull request for more information.
2026-01-26 22:20:37 +00:00
Damian Sire ffe40f4bfa docs: fix Genkit documentation URL
Update the Genkit Angular integration documentation link from the old path
/docs/angular/ to the current correct path /docs/frameworks/angular/

This ensures developers are directed to the correct and up-to-date
documentation for integrating Genkit with Angular applications.
2026-01-26 22:20:13 +00:00
Modeste ASSIONGBON 19b59df2dc docs: fix typo in designing-your-form-model.md
"A form model model" -> duplicated word
"to save bytes me might want" -> "we" instead of "me"
2026-01-26 22:19:50 +00:00
SkyZeroZx 8feb541060 refactor(core): improve tree-shaking
Refactors getNodeInjectable to avoid pulling in stringifyForError production builds, reducing unnecessary symbols in production bundles
2026-01-26 22:18:56 +00:00
AleksanderBodurri 105274fe32 feat(devtools): mark special element injector providers as internal
Differentiates special providers like ElementRef from other providers in the DevTools UI.
2026-01-26 22:18:02 +00:00
Ben Hong 1d1777931e docs: add signal forms - form logic guide
Co-authored-by: Leon Senft <leonsenft@users.noreply.github.com>
2026-01-26 22:13:58 +00:00
Jaime Burgos d306737e54 docs: add resource composition with snapshots section 2026-01-26 17:02:48 +00:00
Andrew Scott 8bbe6dc46c feat(common): Add Location strategies to manage trailing slash on write
Adds dedicated `LocationStrategy` subclasses: `NoTrailingSlashPathLocationStrategy` and `TrailingSlashPathLocationStrategy`.

The `TrailingSlashPathLocationStrategy` ensures that URLs prepared for the browser always end with a slash, while `NoTrailingSlashPathLocationStrategy` ensures they never do. This configuration only affects the URL written to the browser history; the `Location` service continues to normalize paths by stripping trailing slashes when reading from the browser.

Example:
```typescript
providers: [
  {provide: LocationStrategy, useClass: TrailingSlashPathLocationStrategy}
]
```

This approach to the trailing slash problem isolates the changes to the
existing LocationStrategy abstraction without changes to Router, as was
attempted in two other options (#66452 and #66423).

From an architectural perspective, this is the cleanest approach for several reasons:

1. Separation of Concerns and "Router Purity": The Router's primary job is to map a URL structure to an application state (ActivatedRoutes). It shouldn't necessarily be burdened with the formatting nuances of the underlying platform unless those nuances affect the state itself. By pushing trailing slash handling to the LocationStrategy, you treat the trailing slash as a "platform serialization format" rather than a "router state" concern. This avoids the "weirdness" in #66423 where the UrlTree (serialization format) disagrees with the ActivatedRouteSnapshot (logical state).

2. Tree Shakability: If an application doesn't care about trailing slashes (which is the default "never" behavior), they don't pay the cost for that logic. It essentially becomes a swappable "driver" for the URL interaction.

3. Simplicity for the Router: #66452 (consuming the slash as a segment) bleeds into the matching logic, potentially causing issues with child routes or wildcards effectively "eating" a segment that should be invisible. This option leaves the matching logic purely focused on meaningful path segments by continuing to strip the trailing slash on read.

4. Consistency with Existing Patterns: Angular already uses LocationStrategy to handle Hash vs Path routing. Adding "Trailing Slash" nuances there is a natural extension of that pattern—it's just another variation of "how do we represent this logic in the browser's address bar?"

fixes #16051
2026-01-23 20:09:23 +00:00
Andrew Scott 6fb39d9b62 feat(language-server): Support client-side file watching via onDidChangeWatchedFiles
This implements `onDidChangedWatchedFiles` in the language server, which
allows the client to communicate changes to files rather than having the
server create system file/directory watchers.

This option is enabled in the extension via the
`angular.server.useClientSideFileWatcher` setting.
When enabled, the extension registers a FileSystemWatcher for .ts, .html, and package.json files and forwards events to the server. The server completely disables its internal native file watchers (via a new 'ServerHost' implementation that stubs watchFile/watchDirectory).

This is significantly more performant and reliable than native watching for several reasons:
- Deduplication: VS Code already watches the workspace. Piggybacking on these events prevents the server from duplicating thousands of file watchers.
- OS Limits: Since the server opens zero watcher handles, it is impossible to hit OS limits (ENOSPC), no matter how large the repo is.
- Optimization: VS Code's watcher uses highly optimized native implementations (like Parcel Watcher in Rust/C++) which handle recursive directory watching far better than Node.js's 'fs.watch'.
- Debouncing: The client aggregates extremely frequent file events (e.g., during 'git checkout'), reducing the flood of processing requests to the server.

This option was tested in one very large internal project and observed
~10-50x improvement of initialization times.

fixes #66543
2026-01-23 19:52:37 +00:00
SkyZeroZx 85122cb12d docs: update bootstrapApplication docs 2026-01-23 19:45:13 +00:00
Matthieu Riegler ddd3198dc2 docs: update signal form tutorials to use FormField 2026-01-23 01:02:17 +00:00
Angular Robot d1135f5840 build: update dependency aspect_rules_js to v2.9.2
See associated pull request for more information.
2026-01-22 23:31:27 +00:00
SkyZeroZx 30b50e7142 docs(docs-infra): Exempts more symbols from automatic linking
Extends the list of symbols that should not be
automatically linked.
2026-01-22 23:01:00 +00:00
Miles Malerba ebae211add feat(forms): introduce parse errors in signal forms
Parse errors allow a custom control to communicate that it is currently
unable to produce a valid value.

Parse errors are reported by implementing the optional `parseErrors`
property on the `FormUiControl`. The property should be a signal of the
current parse errors.

Also renames several `*Field` types to `*FieldTree`. This aligns with the new naming of the concept after `Field` was renamed
to `FieldTree`.
2026-01-22 22:19:10 +00:00
Angular Robot 085784e4f1 build: update all non-major dependencies
See associated pull request for more information.
2026-01-22 22:10:16 +00:00
Matthieu Riegler 145e77d09d build: Update prettier to 3.8
This version adds support for `angular-html` and `angular-ts` formatting in our markdown files.
2026-01-22 21:13:17 +00:00
Kristiyan Kostadinov dbc1452de3 refactor(compiler-cli): remove deprecated signature usage
The signature for `createImportClause` was deprecated in TS 5.9. These changes switch to the non-deprecated one.
2026-01-22 21:02:36 +00:00
kbrilla 5d6e534d8b build(language-service): upgrade LSP library to v9.0.1 (LSP 3.17)
Upgrade vscode-languageserver from 7.0.0 to 9.0.1 and related packages:
- vscode-jsonrpc: 6.0.0 → 8.2.0
- vscode-languageclient: 7.0.0 → 9.0.1
- vscode-languageserver-protocol: 3.16.0 → 3.17.5

This upgrade is required for LSP 3.17 features like Inlay Hints.

Breaking changes addressed:
- LanguageClient.start() now returns Promise<void> (no longer Disposable)
- LanguageClient.onReady() removed, await start() directly
- protocol2CodeConverter methods now return Promises (asWorkspaceEdit, asRanges)
- SignatureHelp.activeParameter: null → undefined
2026-01-22 19:55:53 +00:00
Andrew Scott 405fa59375 docs: release notes for the vscode extension 21.1.1 release (#66715) 2026-01-22 10:44:12 -08:00
Alon Mishne bfc2afdb5b release: cut the v21.2.0-next.0 release 2026-01-22 00:44:04 +00:00
Alon Mishne e35eea6e92 docs: release notes for the v21.1.1 release 2026-01-21 22:02:05 +00:00
Angular Robot 2c53243f00 build: update cross-repo angular dependencies
See associated pull request for more information.
2026-01-21 12:44:18 -08:00
Matthieu Riegler 4ca2722d6f docs(docs-infra): fix regression on docs-tabs 2026-01-21 12:43:04 -08:00
Matthieu Riegler f0b1061791 docs(docs-infra): Handle additional description format
Ex: https://angular.dev/api/router/withExperimentalPlatformNavigation
2026-01-21 11:37:08 -08:00
Matthieu Riegler b885851cbe build: don't substitute binary files
Previously, ng_package applied version stamping to all source files, which corrupted binary files like SQLite databases.

This change ignores text substitution for files passed to the `data` attribute, ensuring binary assets are preserved intact in the final package.

fixes #66637
2026-01-21 10:35:04 -08:00
JoostK d94b19a92f fix(compiler-cli): drop .tsx extension for generated relative imports
When synthesizing an import corresponding with a .tsx file, the extension
would not be removed unlike regular .ts files. Adjust the import generators
to also drop any .tsx extension from module specifiers.

Closes #66262
2026-01-21 10:33:14 -08:00
aparziale 0fa8099d50 refactor: Delete counterproductive aria-label
Delete counterproductive aria-label in ADEV

fixes #66604
2026-01-21 10:25:35 -08:00
Shuaib Hasan Akib 1f86de019f docs: cleanup copy button and $ from output 2026-01-21 10:24:18 -08:00
Angular Robot 4df3a8bb36 build: update cross-repo angular dependencies
See associated pull request for more information.
2026-01-21 10:22:12 -08:00
Angular Robot cb7ace96a4 build: update pnpm to v10.28.1
See associated pull request for more information.
2026-01-21 10:18:42 -08:00
Kristiyan Kostadinov 6bda88d203 refactor(compiler): use constants for parameter names
Uses the existing constant for `ctx` and `rf`, instead of hardcoding the strings in a few places.
2026-01-21 10:13:54 -08:00
Kristiyan Kostadinov b275206a49 fix(docs-infra): use focus-visible for focus styling
`focus-visible` should lead to a better experience, compared to showing the state on any focus.
2026-01-20 17:17:03 -08:00
Shuaib Hasan Akib 6284126da5 refactor(common): cleanup unused code in doc regions
Cleans unused imports and code
that is not referenced within the associated docregion blocks.
2026-01-20 16:31:10 -08:00
Kristiyan Kostadinov 94a8f797e5 fix(docs-infra): don't use private symbol
Fixes that the tab group was referring to a private symbol from the CDK.
2026-01-20 16:15:19 -08:00
Kristiyan Kostadinov 508d9c34d5 fix(docs-infra): use components directly
Switches the Material and CDK components to be used directly, instead of using the modules. This allows better diagnostics for unused directives.
2026-01-20 16:14:46 -08:00
Kristiyan Kostadinov e4c09776b0 refactor(compiler): remove unused symbols
Removes symbols that aren't used anymore from the identifiers map.
2026-01-20 16:14:16 -08:00
Kristiyan Kostadinov 094cdfe0b5 docs: fix serif font
Fixes some headers that were using a serif font unintentionally.
2026-01-20 16:12:46 -08:00
Andrew Scott ed78fa05c7 fix(core): Remove note to skip arrow functions in best practices
Arrow functions are now supported and this note is no longer needed
2026-01-20 10:42:42 -08:00
Matthieu Riegler 75c40e7ac7 ci: add template for vscode dedicated issues
We didn't have an entry since we migrated the vscode extension repo to the fw repo.
2026-01-20 10:23:57 -08:00
Kristiyan Kostadinov ce80136e7b fix(compiler): optimize away unnecessary restore/reset view calls
When producing a listener, the template pipeline does the following in separate phases:
1. Generates all the variables available within its scope.
2. Adds `restoreView` and `resetView` calls if there are any referenced to local variables (e.g. `@let` or local refs).
3. Optimizes away the variables that aren't used.

This means that we can end up in a situation where the references to the variables in the scope no longer exist, but we still enter and leave the view as if they're there which is unnecessary.

These changes add a simple optimization pass that looks specifically for the pattern of a `restoreView` followed by a `return resetView(expr)`. Furthermore, by changing the order of some optimizations, we're able to drop the `getCurrentView` variable as well.

Fixes #66286.
2026-01-20 10:22:55 -08:00
Andrew Scott 1cf1370568 refactor(language-server): split session into separate handlers
Breaks up the large session.ts file into separate handlers and consolidates the code related to completions in the server into the handler file
2026-01-20 10:22:12 -08:00
Leon Senft d0ba332292 refactor(forms): remove unused API
Remove `SubmittedStatus` which is no longer used.
2026-01-20 10:19:58 -08:00
hawkgs adae4c7ab0 refactor(devtools): use object-tree-explorer in signal-value-tree
Employ the reusable `object-tree-explorer` in the `signal-value-tree` preview component.
2026-01-20 10:16:54 -08:00
hawkgs 2d4262cfbd fix(devtools): support for @defer-only blocks; defer declared blocks (#66546)
Add support for `@defer`-only blocks (previously, they weren't rendered in the component tree at all); Fix declared blocks section in the details

PR Close #66546
2026-01-20 18:16:32 +00:00
hawkgs 92d2498910 feat(core): add host node to DeferBlockData (#66546)
Add the host/container comment node to the `DeferBlockData`. This node can be used as a `@defer` block locator in the DOM tree in the absence of root nodes.

PR Close #66546
2026-01-20 18:16:32 +00:00
SkyZeroZx 5dd17d7b81 docs: Update ngComponentOutlet binding and hydration note 2026-01-20 10:14:31 -08:00
SkyZeroZx 00455105cf docs(docs-infra): : Exempts animation-related symbols from linking
Exempts 'group()', 'keyframes', and '@keyframes' symbols from automatic linking.
2026-01-20 10:13:51 -08:00
SkyZeroZx 6f48b4f5ed docs: remove suffix in elements , templates , components & signals 2026-01-20 10:13:24 -08:00
Shuaib Hasan Akib 4adbc4fa19 refactor(forms): update Reactive Forms guide URL
Updates the Reactive Forms documentation link to the new `guide/forms/reactive-forms` path after the recent docs restructure.
2026-01-20 10:11:48 -08:00
Angular Robot fc73252287 docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2026-01-20 10:02:53 -08:00
Joey Perrott a88f353a45 fix(docs-infra): support providing links to multiple symbols within a single line of a code block
Previously our system only found the first matching symboling to link to within a code block on each line, now we set up a link for all of the discovered symbols on each line

Fixes #65403
2026-01-20 09:35:33 -08:00
omar-almasry11 30b78bdc71 fix(docs-infra): improve skip-to-main-content method to focus <main> element instead of h1
Update the skip-to-main-content behavior to focus the <main> element when present, with a fallback to the first heading for legacy layouts without a main landmark.
2026-01-20 09:34:57 -08:00
Damian Sire 6dff1cf85d docs: fix spelling errors in documentation
Fix 6 spelling errors across documentation files:
- components-scenarios.md: 'recieved' → 'received', 'stubbe' → 'stubbed', 'controle' → 'control'
- overview.md: 'dependant' → 'dependent'
- creating-libraries.md: 'to to' → 'to'
- enter-and-leave.md: 'a an' → 'an'
2026-01-20 09:32:28 -08:00
Matthieu Riegler 2080dd1fec docs: Add mention of "documentation"
This should help to bring adev at the top when searching for "angular documentation" or "angular docs"
2026-01-20 09:31:38 -08:00
Maciej Ślusarz 8b9bdd0a63 docs: Fix typo in image loader step of Optimizing Images chapter 2026-01-20 09:30:43 -08:00
Angular Robot d50e971e98 build: lock file maintenance
See associated pull request for more information.
2026-01-20 09:28:18 -08:00
Jessica Janiuk 5d46554e3f docs: Add section on animate.leave for clarity
There has been a bunch of confusion as to how `animate.leave` works on child nodes when the non-animated parent is removed. This section addition should clarify that.
2026-01-16 13:26:45 -08:00
SkyZeroZx 95c386469c feat(forms): Add passing focus options to form field
Extends the `focus` method of form fields and custom controls to accept and propagate `FocusOptions`.

This enables developers to control focus behavior more precisely, for example, preventing scrolling when focusing an element.
2026-01-16 13:24:27 -08:00
Jessica Janiuk e55260f693 build: update lock file
This updates the lock file. Surprise!
2026-01-16 11:07:02 -08:00
Angular Robot 9989c5fb78 build: update dependency @csstools/css-color-parser to v4
See associated pull request for more information.
2026-01-16 10:30:20 -08:00
Angular Robot 4bb5774f3b build: update cross-repo angular dependencies
See associated pull request for more information.
2026-01-16 10:25:04 -08:00
Kristiyan Kostadinov 52bc0208f9 build: move zone.js build off deprecated flag
The Zone.js build was depending on the `--outFile` flag from TypeScript which is deprecated. These changes switch to using `--outDir` and copying the files out of the directory instead.
2026-01-16 09:28:47 -08:00
Miles Malerba e7b2dde6d1 fix(forms): fix control value syncing on touch
Previously we were unconditionally setting the control value back into
the value, regardless of if it had actually been changed. This PR
changes the logic to flush the pending sync on touch if there is one, or
just skip it if there isn't.
2026-01-16 09:25:27 -08:00
Angular Robot 54fc393d27 build: update dependency @csstools/css-calc to v3
See associated pull request for more information.
2026-01-16 09:20:05 -08:00
Kristiyan Kostadinov d9c980a958 build: initial test of TypeScript 6
Resolves some initial test failures after updating to TypeScript 6.
2026-01-15 13:41:01 -08:00
Kristiyan Kostadinov 4831a9f676 fix(core): handle Set in class bindings
Currently migrating from `[ngClass]` to `[class]` isn't entirely supported, because `[ngClass]` supports `Set` values while `[class]` ignores them.

These changes add a bit of logic to bring them closer together and make the migration easier.
2026-01-15 13:39:59 -08:00
Jeevan Mahesha 417c385ddc docs: update directive name from [field] to [formField] in signal-forms documentation 2026-01-15 11:41:02 -08:00
hawkgs 87f4797321 refactor(devtools): drop dagre graph type
Drop Dagre graph type since v7.0.14 introduces better typing.
2026-01-15 11:11:03 -08:00
hawkgs 721094788a refactor(devtools): snap to root node on signal graph render
Drop the old `ResizeObserver` and resize logic in favor of a simpler "snap to root node" (template or first node) functionality.
2026-01-15 11:10:26 -08:00
Alan Agius c7eee8300f docs: clarify that FESM can depend on shared chunks
Closes #66569
2026-01-15 11:05:41 -08:00
Miles Malerba 5974cd0afc feat(forms): Ability to manually register a form field binding in signal forms
This PR adds the ability to manually register a binding with the
`FormField` directive. This is useful for a lower-level implementation
that takes the field tree as an `input()` rather than relying on the
automatic binding from `FormUiControl`.
2026-01-15 11:03:28 -08:00
Joey Perrott f2cf96b519 fix(docs-infra): use public folder instead of assets folder for static files in adev tutorials
Use public folder rather than assets folder after the change in angular-cli's defaults for angular.json

Fixes #58981
2026-01-15 10:59:25 -08:00
Angular Robot 849b8401a0 build: update github/codeql-action action to v4.31.10
See associated pull request for more information.
2026-01-15 10:57:15 -08:00
Angular Robot 22fefe7880 build: update bazel dependencies
See associated pull request for more information.
2026-01-15 10:54:25 -08:00
Angular Robot ebc52ff434 build: update all non-major dependencies
See associated pull request for more information.
2026-01-15 10:52:48 -08:00
Matthieu Riegler a792315f09 docs(docs-infra): prevent heading from linking symbols 2026-01-15 08:59:14 -08:00
Doug Parker 61614f6caa release: bump Angular DevTools version to 1.8.0 2026-01-14 14:14:04 -08:00
Angular Robot fa4bcf12cd build: update cross-repo angular dependencies
See associated pull request for more information.
2026-01-14 12:20:48 -08:00
Jessica Janiuk 0159268971 docs: release notes for the v21.1.0 release 2026-01-14 11:46:05 -08:00
Jessica Janiuk d12e6f0986 docs: release notes for the v21.0.9 release 2026-01-14 11:31:53 -08:00
Joey Perrott 3f13db87e2 ci: update algolia synonym updater to use node directly rather than tsx
With new version of node we can import ts files directly in our scripts rather than using tsx
2026-01-14 09:26:40 -08:00
SkyZeroZx 724e917f7a docs(docs-infra): Exempts animation-related symbols from linking
Exempts 'animation', 'transition', and 'trigger' symbols from automatic linking.
2026-01-14 08:24:48 -08:00
Angular Robot 230e16d3a5 build: update cross-repo angular dependencies
See associated pull request for more information.
2026-01-14 08:23:05 -08:00
Shuaib Hasan Akib c9f584b918 docs: add IMPORTANT prefix to pipe usage warning and
Adds an IMPORTANT label to emphasize the guidance about avoiding impure
pipes due to potential performance impact.
2026-01-14 08:10:59 -08:00
Younes Jaaidi a904d9f77b fix(compiler-cli): support nested component declaration
```ts
@Component(...)
class Outer {
  constructor() {
    @Component(...)
    class Inner {}
  }
}
```

previous behavior was that IVy transformation was only applied to `Inner`, thus breaking `Outer` transformation.
2026-01-14 08:10:34 -08:00
Jessica Janiuk e673eb6df2 Revert "refactor(core): remove ng when invoking enableProdMode"
This reverts commit cb5879f566.
2026-01-14 08:08:58 -08:00
SkyZeroZx 074666b2e8 docs(docs-infra): use Signals Forms focusBoundControl
Removes direct `ViewChild` access from `TextField` components and relies on
Signals Forms via the `focusBoundControl`  to manage focus.
2026-01-14 08:00:45 -08:00
Angular Robot 4c2d860c5f build: update dependency node to v22.22.0
See associated pull request for more information.
2026-01-14 07:57:59 -08:00
Angular Robot 551f120530 build: update dependency bazel to v8.5.1
See associated pull request for more information.
2026-01-14 07:57:34 -08:00
Alan Agius 710a4bf02b fix(docs-infra): remove trailing slash from sitemap URLs
Fixes an issue where a trailing slash was sometimes added to the end of URLs in the sitemap, causing unnecessary redirects.

Example of problematic URL:
```xml
<loc>https://angular.dev/</loc>
```
2026-01-14 07:57:09 -08:00
Alan Agius 95e8c2fdee build: remove tsx dependency and update release script to use node directly
Node.js can run typescript directly.
2026-01-14 07:56:38 -08:00
Andrew Scott 227acddd3a build: Update vscode release script
- Ensure there is a GITHUB_TOKEN environment variable at the start so we can push the release
- More robust handling for finding releaser's fork if it's not 'origin'
2026-01-13 13:08:26 -08:00
Matthieu Riegler cb5879f566 refactor(core): remove ng when invoking enableProdMode
This was caught while investigating a leak.
2026-01-13 11:39:48 -08:00
Andrew Scott 029685bd93 build: update cherrypick changelog to stash
there are often some formatting/newline changes caused by other steps. just stash anything
2026-01-13 11:20:16 -08:00
Kristiyan Kostadinov b95753eb7d fix(vscode-extension): add syntax highlighting for arrow functions
Updates the syntax definition to handle arrow functions. The definition is largely based on TypeScript's own syntax highlighting since it's quite complex.
2026-01-13 11:09:26 -08:00
Kristiyan Kostadinov c70a6a6ecc fix(vscode-extension): add syntax highlighting for spread/rest expressions
Updates the syntax definition to include spread/rest expressions.
2026-01-13 11:09:26 -08:00
Andrew Scott e45f8afdab docs: release notes for the vscode extension 21.1.0 release 2026-01-13 11:09:05 -08:00
Jeremy Elbourn 871fa1b2dd docs: update OnChanges API reference w/ signal input
We had some reports of LLMs claiming that `ngOnChanges` does not include
changes for signal-based inputs. This is wrong (and the LLMs just made
it up), but we can update the docs at least to demonstrate `ngOnChanges`
with signal-based inputs.

Previously, the API reference used a real test as a code example, but
updating the test to a signal-based input is more involved than this
change needs to call for.
2026-01-13 09:04:24 -08:00
Angular Robot 6e6a02206c build: lock file maintenance
See associated pull request for more information.
2026-01-13 08:55:56 -08:00
Angular Robot 951671ab09 docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2026-01-13 08:54:57 -08:00
Alan Agius e8f8ac20d6 build: remove @angular-devkit/architect-cli from dev dependencies
This dependency is not used.
2026-01-13 08:33:52 -08:00
Matthieu Riegler 72534e2a34 feat(compiler): Add support for the instanceof binary operator
Because why not ?

fixes #59975
2026-01-13 08:33:12 -08:00
Georgi Serev 9273f1c3c2 feat(devtools): add resource visualization to the signal graph
Convert the signal graph to a Devtools-FE-specific signal graph that supports clusters; Add support for `resource` clusters; Introduce some improvements to the signal graph viz
2026-01-13 08:32:46 -08:00
lyutails 910768f5cc docs: update hierarchical-dependency-injection.md
VillainsService highly likely misspelled and then written as VillainService with 's' missing
2026-01-13 08:31:41 -08:00
Alan Agius 6e82167481 ci: update Renovate configuration to replace Bazel module dependency command
This uses `ng-dev misc sync-module-bazel`, add `MODULE.bazel` to file filters, and remove specific dependency name matching.
2026-01-13 08:28:43 -08:00
Andrew Scott 69da6390b1 build: improve changelog generation and tag fetching in release script
- Fetch tags explicitly to ensure local availability.
- Implement `getPreviousTag` to reliably determine the base for changelog generation, falling back to the latest `vsix-*` tag if the specific previous version tag is missing.
- Filter changelog commits by subject to exclude duplicates (e.g. cherry-picks) that are already present in the previous release history but have different hashes.
2026-01-12 16:06:35 -08:00
Andrew Scott 78755771e1 build: fix changelog generation for last rev
updates changelog generation to work when releasing the first final
version.
2026-01-12 14:53:20 -08:00
SkyZeroZx 36c2f4b6f9 docs(docs-infra): replace deprecated Router.isActive with isActive (#66430)
Updates the view transition logic to use the isActive function instead of the deprecated Router.isActive

PR Close #66430
2026-01-12 22:42:32 +00:00
SkyZeroZx a39e3fdabe docs: update examples to use isActive instead of deprecated Router.isActive (#66430)
PR Close #66430
2026-01-12 22:42:32 +00:00
Andrew Scott e8c44a00f9 refactor(router): Retain original navigateEvent across redirects
This builds off of #66197 by retaining the original navigateEvent across redirects
so the NavigateEvent can more accurately track the lifecycle of a navigation,
which may span across several NavigationStart events due to redirects
2026-01-12 14:41:54 -08:00
Andrew Scott e34365cfd5 build: use tsx for release script
I otherwise get Unknown file extension ".mts". using tsx fixes it for me
2026-01-12 14:41:14 -08:00
Alex Rickabaugh 1ba9b7ac50 feat(core): resource composition via snapshots
* Define `ResourceSnapshot<T>` as a type union of possible states for a
`Resource<T>`.
* Add `Resource.snapshot()` to convert a `Resource` to a signal of its
  snapshot.
* Add `resourceFromSnapshots` to convert a reactive snapshot back into a
  `Resource`.

By converting resources from/to `Signal<ResourceSnapshot>`s, full
composition of resources is now possible on top of signal composition APIs
like `computed` and `linkedSignal`.

For example, a common feature request is to have a `Resource` which retains
its value when its reactive source (params) changes. This can now be built
as a utility, leveraging `linkedSignal`'s previous value capability:

```ts
function withPreviousValue<T>(input: Resource<T>): Resource<T> {
  const derived = linkedSignal({
    source: input.snapshot,
    computation: (snap, previous) => {
      if (snap.status === 'loading' && previous?.value) {
        // When the input resource enters loading state, we keep the value
        // from its previous state, if any.
        return {status: 'loading', value: previous.value.value};
      }

      // Otherwise we simply forward the state of the input resource.
      return snap;
    },
  });

  return resourceFromSnapshots(derived);
}

// In application code:

userId = input.required<number>();
user = withPreviousValue(httpResource(() => `/user/{this.userId()}`));
// if `userId()` switches, `user.value()` will keep the old value until
// the new one is ready!
```
2026-01-12 13:49:56 -08:00
Matthieu Riegler 65fa5b5439 fix(forms): Ensure the control instruction comes after the other bindings
Prior to this change, binding to radio value was sensitive to the order in which `value` & `formField` where binding in the template.
The compiler change makes that order non-important.

fixes #66402
2026-01-12 13:49:19 -08:00
cexbrayat 7fd076bdd3 test(forms): improve test coverage for multiple pattern validators
Add comprehensive test cases to validate behavior when multiple
pattern validators are applied to the same field.

These tests clarify that multiple patterns operate with AND logic,
where each pattern is validated independently and produces its own
error when it doesn't match.
2026-01-12 13:48:16 -08:00
Shuaib Hasan Akib 1b4dcc01ff docs: replace old https://angular.io/license with https://angular.dev/license 2026-01-12 13:41:30 -08:00
Andrew Scott ebc90c26f5 feat(language-server): Add completions and hover info for inline styles
This adds completions for inline styles, using the SCSS language service

resolves #65489
2026-01-12 13:40:37 -08:00
Andrew Scott 573aadef7e feat(language-server): Add quick info for inline styles
This adds quick info to the langauge server for inline styles using the
scss language service.
2026-01-12 13:40:37 -08:00
Andrew Scott 26fd0839c3 feat(language-server): Add folding range support for inline styles
Adds folding range support for inline styles to the language server
2026-01-12 13:40:37 -08:00
Mikhail Efanov 27276374ab build: update dev container configuration
build: update dev container configuration

build: update dev container configuration

Update dev container configuration files to support latest environment.
- Use customizations.vscode structure instead of deprecated extensions property.
- Update bazel extension to BazelBuild.vscode-bazel.
- Ignore .pnpm-store directory.
- Update ports list
- Use forwardPorts instead appPort

Document the usage of Dev Containers in building-and-testing-angular.md.
2026-01-12 13:39:29 -08:00
Shuaib Hasan Akib f53f878e0f fix(docs-infra): use margin instead of padding to prevent heading hover overflow
Replaced padding-block-start with margin-block-start on
.docs-reference-section-heading to prevent anchor hover and click areas from extending into empty space above the heading. This ensures hover behavior aligns with the visible text.
2026-01-12 13:38:46 -08:00
Matthieu Riegler c09f5352f6 docs(docs-infra): Throw build error on invalid guide links
The list of valid links is generated from navigation data configuration in the ADEV app.
Redirections are knowingly exclude so we stop referencing them.
2026-01-12 13:38:20 -08:00
Shuaib Hasan Akib 8bdd98ef41 fix(docs-infra): prevent duplicate description rendering for block API entries
Block entries (@if, @defer, @for,@let, @switch) were falling back to the generic
DocsReference template, causing the description to appear twice - once in
the header section and once in the main content area.

This commit adds a dedicated rendering path for block entries:
- Creates BlockEntryRenderable type and associated transforms
- Adds BlockReference template that uses RawHtml directly
- Modifies HeaderApi to accept hideDescription prop
- Updates processing and rendering pipelines to handle blocks

The fix ensures block documentation displays only one description section
while preserving the existing behavior for all other API entry types.

Update adev/shared-docs/pipeline/api-gen/rendering/transforms/block-transforms.mts

Co-authored-by: Matthieu Riegler <kyro38@gmail.com>
2026-01-12 13:37:54 -08:00
Roshith 933ca9e5dc docs: fix spelling mistake in documentation
correct typo where "youself" was written instead of "yourself"
2026-01-12 13:36:56 -08:00
Joey Perrott 4d6a6aafee build: begin requring usage of release mode for releases
Start requiring the usage of the release merge-mode for allowing releases to be made from the repository
2026-01-12 13:36:19 -08:00
Angular Robot 4a76058baf build: update cross-repo angular dependencies
See associated pull request for more information.
2026-01-12 13:35:19 -08:00
Angelo Parziale 4d983e9904 build(docs-infra): Update dependency @xterm/xterm to v6
Update dependency @xterm/xterm to v6 and fix style
2026-01-12 10:16:24 -08:00
SkyZeroZx 511d9ca9d2 docs: remove Component suffix in animations, HTTP, and SSR guides
Removes the unnecessary `Component` suffix from examples.
Also fixes button styling in the animations examples, which previously did not render correctly in dark mode.
2026-01-12 10:07:05 -08:00
Shuaib Hasan Akib c63bc58e0f docs: correct line number highlighting in query examples
Updates incorrect highlighted line numbers so they match the intended
code being referenced in the documentation.
2026-01-12 10:04:14 -08:00
SkyZeroZx e38c1bf743 refactor(http): remove redundant providedIn: 'root' in XSRF_HEADER_NAME
Removes unnecessary `providedIn: 'root'` declarations from injection token
2026-01-12 10:00:24 -08:00
SkyZeroZx fa6e82b569 refactor(core): Add missing OnDestroy to zone and zoneless change detection schedulers
Implements the OnDestroy interface in NgZoneChangeDetectionScheduler and ChangeDetectionSchedulerImpl
2026-01-12 10:00:24 -08:00
Miles Malerba 10e9022a07 feat(forms): allow focusing bound control from field state
Allows focusing the assocated bound control from the `FieldState`.
2026-01-12 09:59:42 -08:00
Matthieu Riegler b22835579e docs(docs-infra): prevent from showing duplicate usage blocks in functions API docs
fixes #66398
2026-01-12 09:50:12 -08:00
Matthieu Riegler a056413520 docs(docs-infra): Show API decorators docs
fixes #66129
2026-01-12 09:41:25 -08:00
Matthieu Riegler 33b2d9905d docs(docs-infra): Add community russian translation
fixes #65720
2026-01-12 09:40:06 -08:00
Matthieu Riegler ad699cebb5 docs: change language section to "community translations" 2026-01-12 09:30:18 -08:00
Andrew Scott 89d47d814d refactor(router): Change RouterLink internals to use signals
This simplifies some of the internals of RouterLink because signals do
the heavy lifting of determining when things have changed
2026-01-12 08:56:32 -08:00
Angular Robot 460c1c7e71 build: update cross-repo angular dependencies
See associated pull request for more information.
2026-01-12 08:55:15 -08:00
omar-almasry11 405b05607c fix(docs-infra): improve symbolic green contrast for WCAG compliance
Adjusts the symbolic green color to meet WCAG contrast requirements in documentation styles.
2026-01-12 08:50:33 -08:00
Jeevan Mahesha 66b40d4fb3 docs: update testing guide to include Vitest and improve authGuard test setup 2026-01-12 08:32:11 -08:00
Angular Robot 783f20edbc build: update pnpm to v10.28.0
See associated pull request for more information.
2026-01-12 08:31:45 -08:00
Matthieu Riegler 7f1b790f84 docs: improve separation between enter and leave example
fixes #66359
2026-01-12 08:18:16 -08:00
Kristiyan Kostadinov f0dba6deb9 build: update license for vscode extension
The vscode extension still has the old license headers pointing pointing to AIO.
2026-01-12 08:17:39 -08:00
aparziale e7f24014cf docs(docs-infra): Angular Aria listbox shows placeholder for "Selection modes"
Improved documentation for the aria listbox component. Added an example comparing selectionMode input.

Fixes: #65682
2026-01-12 08:17:11 -08:00
Angular Robot 9333751525 build: update dependency @actions/github to v7
See associated pull request for more information.
2026-01-12 08:16:24 -08:00
Angular Robot f34eb65f89 build: update cross-repo angular dependencies
See associated pull request for more information.
2026-01-12 08:15:55 -08:00
SkyZeroZx 0aaadafc50 refactor(compiler-cli): update error message links to versioned docs (#66374)
Error message links now point to the archived documentation site (v*.angular.dev)
so that referenced content matches the framework version in use.

See angular#44650

PR Close #66374
2026-01-09 22:33:51 +00:00
SkyZeroZx f4469ad583 refactor(core): update error message links to versioned docs (#66374)
Error message links now point to the archived documentation site (v*.angular.dev)
so that referenced content matches the framework version in use.

See angular#44650

PR Close #66374
2026-01-09 22:33:51 +00:00
Miles Malerba 5671f2cc07 fix(forms): Rename signal form [field] to [formField]
This completes the rename started in #66136. `[field]` is too generic of
a selector for the forms system to own, and likely to cause naming
collisions with existing components. Therefore it is being renamed to
`[formField]`
2026-01-09 14:33:09 -08:00
tomer953 008e20ca56 fix(migrations): prevent duplicate imports in common-to-standalone migration
The common-to-standalone migration did not check for existing imports
when adding needed imports after removing CommonModule. This change adds deduplication
logic to filter out imports that already exist in the imports array
before adding them, ensuring each import appears only once.
2026-01-09 14:30:47 -08:00
Angular Robot 5c16caa95e build: update cross-repo angular dependencies
See associated pull request for more information.
2026-01-09 11:26:15 -08:00
Alan Agius 99db2e9065 ci: add pnpm and typescript exclusions to a Renovate package rule.
This will be handled in dev-infra preset, see: https://github.com/angular/dev-infra/pull/3340
2026-01-09 10:41:54 -08:00
Kristiyan Kostadinov 7b5625e72a refactor(compiler): isolate arrow function processing
Isolates the logic that fixes references to arrow function parameters so that we don't have do pass extra parameters for every `convertAst` call.
2026-01-09 10:35:37 -08:00
Kristiyan Kostadinov 4cf1a92288 refactor(compiler): rework arrow function storage
Reworks how we store arrow functions in the following ways:
1. Rather than the `storeCallback` and `getCallback` instructions, we generate a single `arrowFunction` instruction.
2. The `arrowFunction` instruction uses a factory to create a new instance of the function when a function is read for the first time.
3. We now keep arrow functions in listeners in line so that they have access to `$event`.
2026-01-09 10:35:37 -08:00
Kristiyan Kostadinov d9923b72a2 feat(core): support arrow functions in expressions
Adds support for using arrow functions in Angular expressions. They generally behave like JS arrow functions with the same access as other Angular expressions, but with the following limitations:
* We only support arrow functions with implicit returns, e.g. `(a) => a + 1` is allowed while `(a) => { return a + 1 }` is not.
* Pipes can't be used inside arrow functions, but they can be passed through to pipes.

To avoid recreating the functions in each change detection, the compiler applies a couple of optimizations:
* If an arrow function only references its own parameters, it is extracted into a top-level constant that is passed around to the different usage sites.
* If an arrow function has references to the template context, we store it on the current view and read the stored value later on.

Fixes #14129.
2026-01-09 10:35:37 -08:00
Kristiyan Kostadinov 3242a61bae fix(compiler): variable counter visiting some expressions twice
The `countVariables` phase visits all ops in the list and all nested expressions in order to count how many variables are used. Currently it does so by going through `unit.ops()` and then calling `visitExpressionsInOp` on each op.

This leads to expressions in ops that have nested ops (e.g. `ListenerOp`) to be visited twice, because `unit.ops()` descends into child ops and then `visitExpressionsInOp` does the same. It hasn't been a problem so far, because the only expressions that can have vars in host bindings are pure functions and they aren't generated for listeners, but it will become a problem for arrow functions since they can be used in listeners.

These changes resolve the issue by iterating over the `unit.create` and `unit.update` instead.
2026-01-09 10:35:37 -08:00
Kristiyan Kostadinov 17733b70a3 refactor(core): add instructions for callback storage and retrieval
Adds the `ɵɵstoreCallback` instruction that allows for a callback to be stored for later usage, as well as `ɵɵgetCallback` which can be used to retrieve it.
2026-01-09 10:35:37 -08:00
Kristiyan Kostadinov 87a422358b refactor(compiler-cli): template type checking support for arrow functions
Updates the template type checker to support arrow functions. The main challenge was getting the current infrastructure not to rewrite references to arrow function parameters.
2026-01-09 10:35:37 -08:00
Kristiyan Kostadinov f05d08f432 refactor(compiler): add arrow function parsing
Updates the expression parser to handle arrow functions. Since arrow functions share syntax with other AST nodes, we have to detect them by looking ahead and then potentially jumping backwards depending on what we see.
2026-01-09 10:35:37 -08:00
Kristiyan Kostadinov ab536f8f32 refactor(compiler): add AST nodes for arrow functions
Expands the expression AST to include arrow functions.
2026-01-09 10:35:37 -08:00
Kristiyan Kostadinov d01e54dea4 refactor(compiler): tokenize =>
Adds some logic to tokenize the `=>` character combination in the lexer.
2026-01-09 10:35:37 -08:00
Andrew Scott da364d2635 refactor(router): Add support for precommitHandler in Navigation integration
The `precommitHandler` of the Navigation API unlocks some of the truly
powerful features for Routers like Angular's which defer the URL
updates. Without the `precommitHandler`, we cannot initiate a navigation
until we are ready to commit the URL because it causes the URL to update
immediately.

With `precommitHandler` support, we are able to create a `NavigateEvent`
_immediately_ on navigation, which allows the browser to show that a
navigation is happening with a loading indicator. Site visitors will
also have the ability to cancel the navigation with the "stop" button.
When we are ready to commit the URL, the precommitHandler supports a
"redirect" function that we can use to first redirect the navigation to
a new location immediately before committing it.

The commit operation is not synchronous because the API waits for all
precommitHandlers to resolve. This commit adds a small bit of handling
to account for this so that the Router's transition does not advance
to the next stage until the URL has been committed.
2026-01-09 10:31:26 -08:00
fisker 4fb24cadee refactor(compiler): switch Binary.isAssignmentOperation to type guard function
Improve `Binary.isAssignmentOperation` types
2026-01-09 09:59:29 -08:00
Angular Robot ac865b51f7 build: update cross-repo angular dependencies
See associated pull request for more information.
2026-01-09 09:55:40 -08:00
SkyZeroZx 94b707957a docs(docs-infra): avoid persistent AbortSignal listener in wait debounce in search
Cleans up the abort listener once the timeout resolves to prevent it from
remaining attached longer than necessary.
2026-01-09 09:38:07 -08:00
Yahya-Almubarak e3b3290998 docs: replace UnambiguousRoleValidator in asyc-valdotors part form-validation.md
The async validators part of document uses uniqueRoleValidator and not UnambiguousRoleValidator.
2026-01-09 09:26:18 -08:00
Devin Chasanoff 09234753e1 docs: add ai tutor signal forms docs 2026-01-09 09:25:38 -08:00
Angular Robot e6a8bb81f9 build: update cross-repo angular dependencies
See associated pull request for more information.
2026-01-09 09:05:18 -08:00
kirjs 7d985ce08e docs(forms): Clarify returning errors from submit functions
Update outdate comment, and add a section to the docs
2026-01-09 08:47:42 -08:00
fisker a7e470a1b3 refactor(compiler): tighten Unary.operator type
Improve `Unary.operator` type
2026-01-09 08:47:01 -08:00
fisker 4d19408e9b refactor: _ParseAST.isAssignmentOperator to type guard
Update `_ParseAST.isAssignmentOperator` to type guard
2026-01-09 08:45:35 -08:00
fisker 07a08ab9f8 refactor(compiler): tighten Binary.operation type
Improve `Binary.operation` types
2026-01-09 08:45:35 -08:00
fisker 04ba09a8d9 feat(compiler): support AstVisitor.visitEmptyExpr()
Add support for `AstVisitor.visitEmptyExpr()`
2026-01-09 08:45:12 -08:00
hawkgs e66aeac8d0 refactor(devtools): style the profiler dialogs to match the current design
Decrease the font size and tone down the paddings and margins. Use `ng-button` instead of `mat-button`.
2026-01-09 08:23:18 -08:00
hawkgs bea5840864 refactor(devtools): add secondary type button
Add a secondary style/type button to `ng-button`.
2026-01-09 08:23:18 -08:00
SkyZeroZx 3a65814f53 docs(docs-infra): improve label fallback logic in search results
Improves label fallback in search results by providing a fallback to the top-level category when a more specific label is missing.
2026-01-09 07:58:33 -08:00
SkyZeroZx 0d35088b56 docs: add docs support for spread and rest operators in expression syntax 2026-01-09 07:58:07 -08:00
Angular Robot 3ccd5a4354 build: update cross-repo angular dependencies to v21.1.0-next.4
See associated pull request for more information.
2026-01-09 07:49:52 -08:00
Alon Mishne c963f35d2c docs: Updated MCP docs to include latest experimental tools and recent renames 2026-01-09 07:48:22 -08:00
Matthieu Riegler 80a7419a16 Revert "docs: remove incorrectly listed operators in "Supported operators" table (Expression Syntax Guide) (#62092)"
This reverts commit ea71a1e8cd.
2026-01-09 07:47:49 -08:00
Andrew Scott 49295778bc refactor(core): Use the provided Document value rather than global in FakeNavigation
This commit ensures the Document used by `FakeNavigation` is the one
passed in the constructor rather than the global `document`, which may
be different.
2026-01-08 13:28:18 -08:00
Andrew Scott 473dd3e1cb fix(compiler-cli): attach source spans to object literal keys in TCB
Previously, object literal keys in the TCB did not have source spans attached. This made it difficult for the Language Service to distinguish between keys and values, leading to incorrect completion contexts and diagnostic locations.

This commit ensures that source spans are properly attached to the keys in the TCB.
2026-01-08 13:27:08 -08:00
Angular Robot 00905c1c03 build: update cross-repo angular dependencies
See associated pull request for more information.
2026-01-08 13:26:26 -08:00
Jessica Janiuk 9529362617 docs: release notes for the v21.1.0-rc.0 release 2026-01-08 12:52:40 -08:00
Jessica Janiuk e005eb4e66 release: bump the next branch to v21.2.0-next.0 2026-01-08 12:52:40 -08:00
Jessica Janiuk 3b8c4fc136 docs: release notes for the v21.0.8 release 2026-01-08 12:44:14 -08:00
Jessica Janiuk a2b9429992 Revert "feat(router): add trailingSlash config option"
This reverts commit 12fccc5e99.
2026-01-08 12:20:03 -08:00
Andrew Scott 86dc1283e8 fix(core): handle cancelled traversals in fake navigation
Update fake navigation implementation to correctly handle traversals that are cancelled (e.g. by a precommit handler).
Ensure prospective index is calculated correctly so that subsequent traversals target the correct entry.
Add regression test for cancelled traversals.
2026-01-08 11:27:37 -08:00
omar-almasry11 ad49d489ae fix(docs-infra): improve dark mode button hover contrast for WCAG compliance
The .docs-primary-btn hover state in dark mode had a contrast ratio of 2.18:1,
failing WCAG 2.1 SC 1.4.3. This change reuses the existing
--hot-pink-to-electric-violet-radial-gradient to achieve 4.5:1+ contrast.
2026-01-08 11:21:23 -08:00
Angular Robot 50ded69afb build: update cross-repo angular dependencies
See associated pull request for more information.
2026-01-08 11:17:03 -08:00
zakaria-bali bd5997cfeb docs(forms): make onSubmit method async for form submission
Change onSubmit method to be asynchronous since we are using await inside it
2026-01-08 10:03:23 -08:00
lyutails 8fad6155b2 docs: fix typo in effect.md 2026-01-08 10:02:51 -08:00
aparziale 71149ef57a docs(docs-infra): Fix toggle button in dark mode
Fix visibility toggle button in dark mode

Fix #66049
2026-01-08 09:07:56 -08:00
Angular Robot adabdcd173 build: update cross-repo angular dependencies
See associated pull request for more information.
2026-01-08 08:43:27 -08:00
Angular Robot 7d3cf91b1e build: update all non-major dependencies
See associated pull request for more information.
2026-01-08 08:41:30 -08:00
Shuaib Hasan Akib f727f8e655 docs: fix broken anchor link for Angular versioning section
Updates the release documentation link to point to the correct `#angular-versioning` anchor so readers are directed to the intended
2026-01-08 08:35:30 -08:00
Matthieu Riegler 8bc688b56f docs: add release schedule 2026-01-08 08:34:47 -08:00
Andrew Scott 12fccc5e99 feat(router): add trailingSlash config option
This commit introduces a highly requested `trailingSlash` configuration option to the Angular Router, allowing developers to control how trailing slashes are handled in their applications. The options are:
- 'always': Enforces a trailing slash on all URLs.
- 'never': Removes trailing slashes from all URLs (default).
- 'preserve': Respects the presence or absence of a trailing slash as defined in the UrlTree.
2026-01-08 08:26:37 -08:00
Matthieu Riegler d100e691d8 refactor(core): extend tests for empty cases.
follow-up of #66372 to extend a bit our runtime test coverage for empty cases
2026-01-08 08:24:53 -08:00
Andrew Scott 7003e8d241 feat(router): Publish Router's integration with platform Navigation API as experimental
This publishes the work that was done to integrate with the Navigation
API as an experimental router feature. Browser support is limited and in
active development. There are also known bugs in the browser implementations
and only Chromium browsers supported deferred URL updates with the
`precommitHandler`. Relates to #53321, which I would likely not mark as
completed until this is at least in dev preview, which likely won't
happen until it is widely available and potentially delayed until
`precommitHandler` is widely available as well.

The final form of this api might not even be a "router feature" in the end, but instead be
something similar to what other frameworks have to provide different
platform integrations (e.g. `provideNavigationRouter`). That would
support omitting the history-based integration from the bundle when only
the navigation integration is used. Alternatively, the current
`provideRouter` could require one of `withHistory` or `withPlatformNavigation`.
2026-01-07 16:16:06 -08:00
Matthieu Riegler 0ad3adc7c6 fix(compiler): Support empty cases
Before this commit empty @cases ended up being interpreted as consecutive cases.
2026-01-07 15:47:59 -08:00
cexbrayat bb0dc8c4e0 refactor(core): typo in stability debugging warning message
untility -> utility
2026-01-07 14:44:06 -08:00
Jaime Burgos 5c75d29fb4 refactor(core): Improve tree-shakable RuntimeError error for INVALID_FIELD_DIRECTIVE_HOST
Improves the tree-shakable runtime error handling for `INVALID_FIELD_DIRECTIVE_HOST`.
2026-01-07 14:32:25 -08:00
Andrew Scott 50674f8c28 fix(vscode-extension): convert enum member kind in completions correctly
This converts enum member kinds to the correct completion kind for displa in the completions popup
2026-01-07 14:30:05 -08:00
Jan Martin 4f785f4ab1 refactor(devtools): make release script compatible with type stripping
When running this script with node directly, it requires explicit markers
for type-only imports to work.
2026-01-07 14:28:17 -08:00
Jessica Janiuk 30e9c62bdf fix(core): fix memory leak with event replay
This ensures event replay does not hold on to elements after an application has been destroyed.

fixes: #59261
2026-01-07 14:27:44 -08:00
kirjs af4e521d64 docs: release notes for the v20.3.16 release 2026-01-07 17:20:01 -05:00
kirjs f8db6ad3b1 docs: release notes for the v19.2.18 release 2026-01-07 17:14:07 -05:00
kirjs 414b647897 docs: release notes for the v21.0.7 release 2026-01-07 16:48:40 -05:00
Jan Martin 2c9328639f release: bump Angular DevTools version to 1.7.0 2026-01-07 13:28:29 -08:00
Matthieu Riegler 18810d8a15 build: update lock file maintenance
superseeds #66229

This also removes the dagre-d3-es patch as it was merged upstream (tbo47/dagre-es/pull/51)
2026-01-07 15:53:37 -05:00
Leon Senft 46dbd18566 refactor(forms): remove customError()
Remove the `customError` function and `CustomValidationError` type.

These were made obsolete by support for returning plain object literals
as custom errors.

This also catches few `field` properties that were missed in the
renaming to `fieldTree`.
2026-01-07 15:07:30 -05:00
arturovt 9e043decaf fix(router): handle errors from view transition updateCallbackDone promise
Firefox-specific workaround: Firefox 144+ creates the `updateCallbackDone` promise
internally during error handling (e.g., duplicate view-transition-name), even before
the property is accessed. This can cause unhandled promise rejections to appear in
error tracking tools like Rollbar/Sentry. We must attach catch handlers to all three
promises immediately to prevent these unhandled rejections.
See: https://bugzilla.mozilla.org/show_bug.cgi?id=1999336 (if applicable)
Spec: https://drafts.csswg.org/css-view-transitions-1/#dom-viewtransition-updatecallbackdone
2026-01-07 15:05:59 -05:00
Kristiyan Kostadinov 4dc5ae54a9 refactor(core): remove unused instruction parameter
The `thisArg` in pure functions isn't used so we can drop it. We still need to keep it on the underlying implementation, because pipe instructions rely on it.
2026-01-07 15:05:20 -05:00
SkyZeroZx 090484c853 docs(docs-infra): Fix combobox dialog styles for dark theme
Fixes combobox dialog styles to ensure correct text color and contrast in dark theme.
This improves readability and visual consistency when using the docs in dark mode.
2026-01-07 14:19:32 -05:00
SkyZeroZx f9e9fc4ffe docs: enhance programmatic rendering guide by covering ngComponentOutlet options 2026-01-07 14:18:33 -05:00
Shuaib Hasan Akib d129d201c1 docs: standardize component decorator placeholders in markdown
Updates `@Component({ ... })` to `@Component({/*...*/})` across
documentation examples for consistency and clearer formatting.
2026-01-07 14:17:38 -05:00
SkyZeroZx 8c8c5b24a1 docs(vscode-extension): update angular.io links to angular.dev in messages 2026-01-07 14:12:15 -05:00
SkyZeroZx b2f417585a docs: update angular.io links to angular.dev in comments, TSDoc, and warnings 2026-01-07 14:12:15 -05:00
Andrew Scott bcef77d950 fix(router): Fix RouterLink href not updating with queryParamsHandling
There was a bug introduced in #60875. While RouterLink doesn't
necessarily depend on Router state, its link can change when navigations
cause the `ActivatedRoute` paths to change. It is difficult to determine
which segments the link depends on. Luckily, the commit had flawed
logic:

```
!this.queryParamsHandling && !dependsOnRouterState(this.options?.defaultQueryParamsHandling);
```

The subscription gets created whenever `queryParamsHandling` was not
defined, or it was non-default. This is pretty much all scenarios since
nobody is likely to set it explicitly to the default value. In addition,
the `click` handler recomputes the tree because `urlTree` is a getter
that does the computation.

This commit effectively rolls back #60875
2026-01-07 14:08:13 -05:00
SkyZeroZx e7d99f02cb fix(forms): clean up abort listener after timeout
Removes the abort event listener once the debounce timeout completes.

This avoids lingering listeners, prevents potential memory leaks, and ensures
the abort logic runs at most once.
2026-01-07 14:07:25 -05:00
Kristiyan Kostadinov 3a56c1367f fix(compiler): produce accurate span for typeof and void expressions
Fixes that the `typeof` and `void` expressions were starting their spans from the expression start, rather than the keyword.

Fixes #66174.
2026-01-07 14:04:05 -05:00
SkyZeroZx 0d6ac92ccb docs: remove Component suffix from examples in DI & Drag and Drop
Updates documentation examples to remove the `Component` suffix, aligning them with the current Angular Style Guide.
2026-01-07 13:59:17 -05:00
AleksanderBodurri 241bdeb698 feat(devtools): create an info snackbar when a user logs a property
Previously there is no feedback when clicking this button in Angular DevTools itself, which can produce some confusion if the user does not have the browser console open as well, or if they accidentally turned on some filtering in the browser console.

Now Angular Devtools uses mat snack bar to inform the user that the task was successful
2026-01-07 13:40:45 -05:00
Angular Robot a6d7ee0bb4 build: update dependency ng-packagr to v21.1.0-rc.0
See associated pull request for more information.
2026-01-07 13:35:44 -05:00
Angular Robot c03e78dfbf docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2026-01-07 13:34:54 -05:00
Kristiyan Kostadinov 80b0fbba1f fix(core): avoid leaking view data in animations
The animations code currently tracks which views have running leave animations by adding them to a `Set`. This can leak memory if we don't clean something up on time.

These changes switch to tracking the views by their ID which doesn't risk retaining the view.

Fixes #66255.
2026-01-07 12:39:00 -05:00
Kristiyan Kostadinov a0dfa5fa86 feat(core): support rest arguments in function calls
Updates the template syntax to support rest arguments in function calls. This can be handy for functions with a variable number of arguments.
2026-01-07 12:37:52 -05:00
Kristiyan Kostadinov 6e18fa8bc9 feat(core): support spread elements in array literals
Expands the template syntax to support spread elements inside arrays. This can be handy for some bindings.
2026-01-07 12:37:52 -05:00
Kristiyan Kostadinov 19ca3b66a3 refactor(compiler): add spread elements to expression AST
Updates the expression AST to support spread elements that will be used for arrays and function calls.
2026-01-07 12:37:52 -05:00
Kristiyan Kostadinov e9c3932e0e refactor(compiler): add spread elements to the output AST
Adds spread elements to the output AST which can be used in arrays and function calls.
2026-01-07 12:37:52 -05:00
Kristiyan Kostadinov 63b0ad7fa5 refactor(compiler-cli): account for spread elements in translator
Adds the ability to generate spread elements in the linker.
2026-01-07 12:37:52 -05:00
Kristiyan Kostadinov e407280ab5 feat(core): support spread expressions in object literals
Adds support for spread expressions inside of object literals. This can be handy when constructing maps for `class` bindings.
2026-01-07 12:37:52 -05:00
Kristiyan Kostadinov 81549248b7 refactor(compiler): add spread elements to expression AST
Updates the expression AST to have support for spread elements inside object literals.
2026-01-07 12:37:52 -05:00
Kristiyan Kostadinov a789ff0824 refactor(compiler-cli): account for spread assignments in linker
Updates the linker to account for spread assignments in object literals.
2026-01-07 12:37:52 -05:00
Kristiyan Kostadinov 05ce944a9f refactor(compiler): support spread elements in output AST
Updates the output AST to account for spread elements.
2026-01-07 12:37:52 -05:00
Kristiyan Kostadinov 35830079bd refactor(compiler): handle spread operators in the lexer
Updates the expression lexer to handle spread operators.
2026-01-07 12:37:52 -05:00
Andreas Dorner 1c00ab42f8 feat(router): extend paramters of RedirectFunction to include paramMap and queryParamMap
adds paramMap and queryParamMap to the partial ActivatedRoute of the
RedirectFn

fixes ##60842
2026-01-07 12:36:54 -05:00
SkyZeroZx 85ce5f3ce7 docs: update copyright year 2026-01-07 12:28:34 -05:00
Andrew Scott 97fd1de0ac Revert "refactor(router): Add support for precommitHandler in Navigation integration"
This reverts commit 522fa716b8.
2026-01-07 11:45:58 -05:00
Andrew Scott 397dbc4c37 Revert "refactor(router): Retain original navigateEvent across redirects"
This reverts commit 53d3ae0feb.
2026-01-07 11:45:58 -05:00
Matthieu Riegler b17f93b6d1 docs(docs-infra): Use category for signal forms guides 2026-01-07 09:35:19 -05:00
Matthieu Riegler 640693da8e feat(compiler): Add support for multiple swich cases matching
consecutive `@case` blocks are now supported:

```ts
@switch (case) {
  @case (0)
  @case (1) {
    case 0 or 1
  }
  @case (2) {
    case 2
  }
  @default {
    default
  }
}
```

fixes #14659
2026-01-07 09:23:50 -05:00
Andrew Scott e44839b016 feat(router): Add standalone function to create a comptued for isActive
This change deprecates `Router.isActive` in favor of a function that
creates a computed which tracks whether a given url/UrlTree is active,
following changes in the router state.

`Router.isActive` contributes ~1333b to the bundle size, but is only
used by developers who use the API directly or who use
`RouterLinkActive`. It should not contribute to bundle sizes of
applications that do not use this functionality.
2026-01-07 09:23:06 -05:00
hawkgs 51ed487fae docs(core): fix Ivy view data docs tables
The current formatting prevents the tables to be rendered making it hard to read them.
2026-01-07 09:22:43 -05:00
SkyZeroZx 3dfdb71d65 docs: add docs for transform property in built-in loaders 2026-01-07 09:17:59 -05:00
Paweł Kawula f811c6c69d docs: fixed incorrect link in migrating-to-vitest.md
provided correct link to section about vitest fake timer
2026-01-07 09:10:30 -05:00
Andrew Scott 174d2da29a Revert "fix(router): Ensure createUrlTree does not reuse segments of input"
This reverts commit 39efb62c0f.
2026-01-06 16:29:19 -08:00
Miles Malerba 2d85ae5811 feat(forms): add [formField] directive
This will replace the `[field]` directive, since `[field]` is a very
generic name for signal forms to commandeer

refactor(forms): hook up `formField` directive in compiler

Hooks up the `formField` direcive to get the same treatment as the
`field` directive in the compiler.

apply updated formatting
2026-01-06 17:21:06 -05:00
Andrew Scott 53d3ae0feb refactor(router): Retain original navigateEvent across redirects
This builds off of #66197 by retaining the original navigateEvent across redirects
so the NavigateEvent can more accurately track the lifecycle of a navigation,
which may span across several NavigationStart events due to redirects
2026-01-06 16:10:56 -05:00
Andrew Scott 522fa716b8 refactor(router): Add support for precommitHandler in Navigation integration
The `precommitHandler` of the Navigation API unlocks some of the truly
powerful features for Routers like Angular's which defer the URL
updates. Without the `precommitHandler`, we cannot initiate a navigation
until we are ready to commit the URL because it causes the URL to update
immediately.

With `precommitHandler` support, we are able to create a `NavigateEvent`
_immediately_ on navigation, which allows the browser to show that a
navigation is happening with a loading indicator. Site visitors will
also have the ability to cancel the navigation with the "stop" button.
When we are ready to commit the URL, the precommitHandler supports a
"redirect" function that we can use to first redirect the navigation to
a new location immediately before committing it.

The commit operation is not synchronous because the API waits for all
precommitHandlers to resolve. This commit adds a small bit of handling
to account for this so that the Router's transition does not advance
to the next stage until the URL has been committed.
2026-01-06 16:10:56 -05:00
Andrew Scott dd58c4b667 refactor(common): Add token to indicate whether precommit handler is supported
This commit adds a token that indicates whether the precommitHandler feature
is supported by the navigation api.

https://developer.mozilla.org/en-US/docs/Web/API/NavigateEvent/intercept#precommithandler
2026-01-06 16:10:56 -05:00
Alan Agius 91dc91bae4 fix(core): sanitize sensitive attributes on SVG script elements
This commit updates the DOM security schema and sanitization logic to properly recognize and sanitize `href` and `xlink:href` attributes on SVG `<script>` elements.
2026-01-06 15:49:52 -05:00
Angular Robot e2e5b66726 build: update cross-repo angular dependencies
See associated pull request for more information.
2026-01-06 15:29:27 -05:00
Leon Senft 82a2de201f refactor(forms): bind native properties on interop controls
The framework will now bind all field state properties to their
corresponding native properties (if any) on interop form controls (those
using `ControlValueAccessor`), excluding those handled explicitly by
`ControlValueAccessor` such as `disabled`.
2026-01-06 13:12:17 -05:00
Leon Senft 15bddbdcda refactor(forms): bind field properties to all directives on interop controls
The framework will now bind the field state properties to all matching
directive inputs on form controls using Reactive Forms'
`ControlValueAccessor`.
2026-01-06 13:12:17 -05:00
Leon Senft 0c8f15d546 refactor(forms): bind field properties to all directives on custom controls
The framework will now bind the field state properties to all matching
directive inputs on custom form controls.
2026-01-06 13:12:17 -05:00
Leon Senft c149f47ef6 refactor(forms): bind field properties to all directives on native controls
Since the `Field` directive manages binding `FieldState` properties to
the underlying form control automatically, the type checker prohibits
explicit bindings to the same properties to avoid conflicts. This proved
problematic in cases where developers wanted to bind these properties to
the inputs of other directives on form controls. Now the framework will
bind the field state properties to all matching directive inputs on
native controls.

Fix #65617
2026-01-06 13:12:17 -05:00
Andrew Scott 39efb62c0f fix(router): Ensure createUrlTree does not reuse segments of input
Mutating the `UrlTree` that is returned by `createUrlTree` can cause the
input, which might even be an active route, to be mutated. This ensures
the `UrlSegment`s are recreated and do not mutate the input.

fixes #54624
2026-01-06 13:11:54 -05:00
Kristiyan Kostadinov 10da2f9029 fix(compiler): better types for a few expression AST nodes
We had `any` types for `LiteralArray.expressions`, `Chain.expressions`, `BindingPipe.args`, `LiteralPrimitive.value` and `LiteralMap.values`. These changes add proper types to them.
2026-01-06 12:16:28 -05:00
Shuaib Hasan Akib b93d5ec27a docs(forms): add documentation links to Signal Forms API
Add @see JSDoc tags to Signal Forms API functions and classes to link to the essentials guide and detailed documentation pages. This improves discoverability of Signal Forms documentation from the API reference.
2026-01-06 10:34:46 -05:00
hawkgs f05d0feac9 fix(devtools): injector tree initial root node snapping on prod
Fix initial broken root node snapping/focusing when the Injector Tree tab is opened in the production app.
2026-01-06 10:22:29 -05:00
hawkgs 4b7f7a550f fix(devtools): retain tree-viz snapped node on pre-render cleanup
Each tree-visualizer render cycle resets the snapped node in an effort to not end up with a non-existent snapped node. However, each render cycle doesn't constitute a completely different tree. This change retains the snapped node as long as it exists in the tree.
2026-01-06 10:22:29 -05:00
hawkgs 2d9e179188 perf(devtools): improve injector tree rendering performance
Introduce an equality function for transformed injector trees in order to omit redundant D3 tree visualization render cycles when the tree hasn't been changed.
2026-01-06 10:22:29 -05:00
Angular Robot de43806a2e build: update cross-repo angular dependencies
See associated pull request for more information.
2026-01-06 10:20:03 -05:00
Andrew Scott db470f0881 refactor(router): Remove internal rxjs recognize implementation
All uses of this have been removed internally and it's no longer needed
2026-01-06 10:13:19 -05:00
Matthieu Riegler 71cde39ff0 docs: rewrite testing docs
Those rewrites focus on using Vitest instead of jasmine, drop usages of `fakeAsync`, present modern testing strategy that rely on `whenStable` more than explicit calls to `detectChanges`.

fixes #42748, #48510, #64962, #65987, #66029,  #66150
2026-01-05 19:38:23 -05:00
Shuaib Hasan Akib 456ca35906 docs(forms): fix duplicate validator reference titles in AbstractControl
The removeValidators and hasValidator methods both had identical "Reference to a ValidatorFn" section titles, causing duplicate entries in the API documentation table of contents.
2026-01-05 19:26:31 -05:00
Angular Robot 9184146529 build: update cross-repo angular dependencies
See associated pull request for more information.
2026-01-05 17:35:48 -05:00
Andrew Scott df2aaaaede docs(vscode-extension): Update developer docs to match current setup
developer docs needed an update after moving to the angular/angular repo
2026-01-05 17:01:49 -05:00
Andrew Scott 1bf1e7e2a7 refactor(vscode-extension): Use v999 when version is 0.0.0
0.0.0 is the version in the local repo when building from sources. Update the
extension to see this as some arbitrarily large version so it uses the most recent features
2026-01-05 17:01:49 -05:00
Andrew Scott 2ff718869f refactor(vscode-extension): Remove pre-19 integration project
This updates the pre-v19 integration test to use the regular integration
project but pass a specific version and update file contents as
necessary to excersise the code path that uses the default standalone
value. This allows us to remove the old project from the workspace,
allowing the language service to use more recent versions when working
with the adev project, for example.
2026-01-05 17:01:49 -05:00
SkyZeroZx 1532be9d00 refactor(core): introduce tree-shakeable runtime error codes for NgModule handling and ViewContainerRef errors
Adds new tree-shakeable runtime error codes to improve error reporting for
NgModule resolution issues (duplicate or missing IDs) and invalid ViewContainerRef
operations involving destroyed views.
2026-01-05 16:52:24 -05:00
cexbrayat 46a276ac9c docs: update MCP devserver tool names to use dot notation
This updates the documentation to match the changes in angular-cli:
- dot notation for tool names: https://github.com/angular/angular-cli/commit/18d74dde8938dbe566df80753d5c148c19040179
- tool group support for devserver: https://github.com/angular/angular-cli/commit/427c3a93329d826f4b4a7d879ca8e2af275ff03b
2026-01-05 15:58:22 -05:00
SkyZeroZx a6b8cb68af feat(common): support custom transformations in ImageKit and Imgix loaders
Adds a `transform` parameter for ImageKit and Imgix image loaders.
2026-01-05 15:50:13 -05:00
Angular Robot 14f5cc4e9b docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2026-01-05 15:26:39 -05:00
Matthieu Riegler 15308149db docs(docs-infra): Add package filter to the API list
This commit also introduces the usage of signal forms on adev
2026-01-05 15:21:33 -05:00
Andrew Scott 5edceffd04 feat(router): add controls for route cleanup
This commit introduces a new feature to automatically destroy `EnvironmentInjector`s associated with routes that are no longer active or stored. This helps in managing memory by releasing resources held by unused injectors.
2026-01-05 14:43:56 -05:00
Shuaib Hasan Akib e6631f0007 docs(docs-infra): sync heading colors between docs and API pages
Aligns documentation heading colors across docs and API pages to ensure
visual consistency and a cohesive reading experience.
2026-01-05 12:36:58 -05:00
Charles Lyding ab0fb1633c build(forms): setup infrastructure for code examples
This commit introduces the infrastructure for embedding code examples within Angular packages, enabling them to be consumed by the Angular CLI's MCP server.

The `@angular/forms` package is the first to adopt this new feature. A new `ng_examples_db` Bazel rule is used to build a SQLite database from markdown files containing code examples. This database is then included in the published npm package.

The `package.json` for `@angular/forms` has been updated with an `angular.examples` field to allow tooling to discover and use the code examples.
2026-01-05 12:36:00 -05:00
SkyZeroZx ed7bfb3c88 feat(docs-infra): Extracts aliases from doc entries
Implements a mechanism to extract alias names from a directive's selector.
2026-01-05 12:33:14 -05:00
SkyZeroZx b735c45974 docs: update tsDoc code examples to use TypeScript syntax highlighting 2026-01-05 12:31:44 -05:00
Matthieu Riegler 6a94300179 refactor(devtools): use whenStable instead of detectChanges
This commits migrates the devtools tests toward to recommendations
and runs the tests in a zoneless config
2026-01-05 12:24:58 -05:00
Angular Robot 821d5652b0 build: update cross-repo angular dependencies
See associated pull request for more information.
2026-01-05 12:17:15 -05:00
SkyZeroZx b1a0d1d8e2 docs: Add form control state management and event options 2026-01-05 12:16:09 -05:00
SkyZeroZx c1d72af10d docs(docs-infra): add external link styles to API reference documentation
Adds the missing icon external link styling to the API reference documentation.
2026-01-05 12:14:31 -05:00
SkyZeroZx fa430bffb0 docs: add @see links to API docs for better discoverability 2026-01-05 12:12:24 -05:00
SkyZeroZx 712d8f41e8 refactor(router): Simplifies unsubscribe logic
Uses optional chaining to simplify unsubscribe handling.
Also improving tree-shaking by limiting injector names to route paths using `ngDevMode`
2026-01-05 12:08:08 -05:00
SkyZeroZx a9283ca93a docs: add section on converting writable signals to readonly 2026-01-05 12:03:11 -05:00
Shuaib Hasan Akib bcaa001cac docs: fix incorrect Input import in example
Update the documentation example to import input instead of Input,
ensuring the code reflects the signal-based API and current Angular
recommendations.
2026-01-05 12:02:16 -05:00
Shuaib Hasan Akib 8358e548ce fix(docs-infra): stop auto-linking "state" and "group" to APIs
Prevents common words used in code examples from being incorrectly
linked to API references.

Fixes: #66292
2026-01-05 12:01:51 -05:00
SkyZeroZx 5d3708e5ed docs: prevent mobile overflow in the route behavior customization example 2026-01-05 12:00:59 -05:00
Logan Mzz ef48826dc7 docs: fix reference to parent from children resolvers 2026-01-05 11:55:53 -05:00
Kirill Cherkashin 4a8ad92cee docs(forms): update migration guide (#66111)
PR Close #66111
2026-01-05 11:54:44 -05:00
kirjs d8e3bcff5e docs(forms): Address feedback (#66111)
Update `Automatic status class` section

PR Close #66111
2026-01-05 11:54:44 -05:00
kirjs 25f6441a10 docs(forms): Address feedback (#66111)
Update the Automatic status classes section to make NG_STATUS_CLASSES go first.

PR Close #66111
2026-01-05 11:54:44 -05:00
kirjs c41bb1b8ec docs(forms): Address feedback (#66111)
Change wording and formatting and clean up.

PR Close #66111
2026-01-05 11:54:44 -05:00
kirjs 8b57bcdf3d docs(forms): Add a section for automatic form binding (#66111)
To avoid manually adding classes like `.ng-valid`, `.ng-dirty` etc to every field, you can provide a global configuration using `provideSignalFormsConfig`.

PR Close #66111
2026-01-05 11:54:44 -05:00
kirjs 57193c5c2a docs(forms): add a Accessing values section (#66111)
This explains how to get the value of a compat form

PR Close #66111
2026-01-05 11:54:44 -05:00
kirjs d62734842a docs(forms): add migration guide for Signal Forms (#66111)
This commit introduces a new guide for migrating from legacy forms (Reactive and Template-driven) to the new Signal Forms.

PR Close #66111
2026-01-05 11:54:43 -05:00
SkyZeroZx a5ebdd9cd1 docs(docs-infra): Fixes the visibility of the copy link button in CLI headings
Fixes the visibility of the copy link button in CLI documentation headings.
2026-01-05 11:52:24 -05:00
Matthieu Riegler c225b03c91 docs: fix typos in Effects doc in Signals guide 2026-01-05 11:51:01 -05:00
Matthieu Riegler 3a85031dc0 docs(docs-infra): Modernize tests
Remove usages of `detectChanges` and rely on `whenStable`.
This commit also removed the usage of `provideZonelessChangeDetection` which is no longer necessary.
2026-01-05 11:47:08 -05:00
hawkgs 8795e9f031 refactor(devtools): update extension icon
Change the color of the inactive extension from black to gray (for better contrast in dark mode) and slightly enlarge all of the icons.
2026-01-05 11:42:49 -05:00
Angular Robot 29574f622d build: update cross-repo angular dependencies
See associated pull request for more information.
2026-01-02 14:24:17 +01:00
Kristiyan Kostadinov 1765ebe79b Revert "refactor(core): Add ngDevMode guards and new sanitization error codes"
This reverts commit 4e7e38c591.
2026-01-02 11:37:24 +01:00
Angular Robot d868a5bc6d build: update bazel dependencies
See associated pull request for more information.
2026-01-02 08:31:30 +01:00
Angular Robot 8fa602176c build: update all non-major dependencies
See associated pull request for more information.
2026-01-02 08:31:03 +01:00
Angular Robot 708a813f5f build: update pnpm to v10.27.0
See associated pull request for more information.
2026-01-02 08:30:38 +01:00
Kristiyan Kostadinov 41eacff363 test(compiler): switch compliance tests to es2022
Sets up the compliance tests to target es2022 since that's the default in the CLI. Also updates all of the tests, primarily because the generated output for static properties has changed.
2026-01-02 08:29:12 +01:00
Shuaib Hasan Akib 75fa37a0dd docs: Incorrect Highlighting in Content Queries Example
Fixes: #66284
2026-01-02 08:28:44 +01:00
Shuaib Hasan Akib e3781cd88a docs: fix incorrect FormArray example link
Update the typed forms guide link to point to the correct
FormArray section instead of the FormControl getting started example.
2026-01-02 08:28:17 +01:00
Kristiyan Kostadinov 3a26244d61 fix(compiler-cli): fix up spelling of diagnostic
Fixes the spelling for the `component is missing a template` diagnostic and expands it a bit.
2026-01-02 08:27:27 +01:00
Adam Podroužek 402ecaf85c docs: fix URL link to valibot 2026-01-02 08:27:04 +01:00
aparziale b54bc1b16e docs(docs-infra): LoadComponent along with loadChildren
Added example with loadComponent along with loadChildren

Fix #66257
2026-01-02 08:26:30 +01:00
kirjs 282220d032 fix(forms): Support readonly arrays in signal forms
This would allow using `readonly Array<...>` in types
2026-01-02 08:26:06 +01:00
SkyZeroZx 004813dc37 docs: use currentNavigation instead of deprecated getCurrentNavigation 2026-01-02 08:25:43 +01:00
SkyZeroZx e409757208 docs(docs-infra): fixes copy-to-clipboard icon moves to a new line for long heading text
Fixes an issue where the copy-to-clipboard icon moves to a new line when heading text is long and wraps.
Applies improved text wrapping for headings to keep the icon visually aligned.

Fixes #66239
2026-01-02 08:24:39 +01:00
SkyZeroZx baa19e2cf0 docs: update next steps in Signal Forms tutorial and fix broken link 2026-01-02 08:23:43 +01:00
SkyZeroZx 3b73eff0b4 docs(docs-infra): apply OnPush change detection and remove redundant root provider
Adds OnPush change detection and removes a redundant `providedIn: 'root'` injection token.
2026-01-02 08:23:20 +01:00
Matthieu Riegler 80eb5c4d8a docs(docs-infra): user-select none for buttons
fixes #66214
2026-01-02 08:22:16 +01:00
Kristiyan Kostadinov fa7cb4b87a fix(compiler): stop ThisReceiver inheritance from ImplicitReceiver
Back in #39323, I added a new `ThisReceiver` node to represent accesses done through `this` and I ended up making it inherit from `ImplicitReceiver`. The logic was that in most cases accessing through `this` was the same as the implicit access.

Over the years this has proven to not be a great idea, because no other AST nodes do this and one has to keep it in mind whenever dealing with `ImplicitReceiver`.

These changes remove the inheritance and update all of the usage sites accordingly.
2026-01-02 08:21:49 +01:00
JoostK f12e160bc1 fix(compiler-cli): support qualified names in typeof type references
This commit expands the static interpreter to now understand qualified names in `typeof`
type queries.

Fixes #65686
2026-01-02 08:21:08 +01:00
JoostK 106ba63650 fix(compiler-cli): ensure component import diagnostics are reported within the imports expression
PR #60455 improved error reporting for `@Component.imports` by scoping the diagnostic to an individual
element within the `imports` array, but this may introduce hard to track diagnostics when it ends
up being reported (far) away from the component itself.

This can be even more problematic when the diagnostic would end up being reported in a declaration file,
as happened in issue #65686; the declaration files of an imported library contained syntax that the
static interpreter did not support, hence the `@Component.imports` was rejected with a diagnostic reported
in the library's declaration file. This diagnostic isn't guaranteed to be reported (e.g. the CLI only
gathers Angular-specific diagnostics for Angular-compiled files, which excludes declaration files).

This commit changes the diagnostic location to ensure it is being reported within the `@Component.imports`
expression, in most cases retaining the desirable effect of #60455 while avoiding out-of-band diagnostics.
2026-01-02 08:21:08 +01:00
hawkgs eb5f5b61c3 refactor(devtools): rename detect angular script name
Drop the 'for-extension-icon' since the script is dealing only with the app detection.
2026-01-02 08:20:19 +01:00
SkyZeroZx 02e80b4ea2 refactor(core): implement missing OnDestroy for schedulers
Implements the missing OnDestroy interface. Also removes an unused generic from a performance logging function.
2026-01-02 08:19:57 +01:00
aparziale 66637f1c3f docs(docs-infra): Fix incorrect code highlight in Creating an output based on an RxJS Observable
Fix highlighted line in output-interop.md documentation

Fixes: #66187
2026-01-02 08:18:31 +01:00
Kristiyan Kostadinov 76fa180005 fix(compiler): provide location information for literal map keys
Adds spans for the keys of a `LiteralMap`.

Fixes #66175.
2026-01-02 08:18:02 +01:00
SkyZeroZx 398078f456 refactor(forms): add MANAGED_METADATA_LAZY_CREATION runtime error
Add the `MANAGED_METADATA_LAZY_CREATION` `RuntimeError`  in signal form,
making it tree-shakeable.
2026-01-02 08:17:39 +01:00
Alan Agius 0d9e51e766 build: switch Node.js toolchain to derive version from .nvmrc.
Remove hardcoded node.js version
2026-01-02 08:16:50 +01:00
SkyZeroZx a7762c79b8 docs: update localization docs and modernize examples
Improves the localization documentation by updating code highlight syntax issues
and removing outdated TODOs.

Additionally, the CDK examples have been updated to use the viewChild query signal API,
aligning the docs with current recommended patterns.
2026-01-02 08:16:25 +01:00
Charles Lyding 6758f9326e build: use Node.js built-in TypeScript support for dev-infra scripts
This change removes the use of `tsx` to execute both `ng-dev` and the repo level development scripts.
2026-01-02 08:15:40 +01:00
Matthieu Riegler c69b67147a ci: add Charles & Doug as optional adev reviewers
Since we also have tooling docs...
2026-01-02 08:14:37 +01:00
Alan Agius e11f02af81 docs: update flattened type definitions description to include rollup-plugin-dts. 2026-01-02 08:14:05 +01:00
Shuaib Hasan Akib abb179466d refactor(core): mark VERSION exports as pure for better tree-shaking
Adds a PURE annotation to VERSION constants, enabling tree-shaking
and keeping the implementation consistent with other pure exports.
2026-01-02 08:13:40 +01:00
Shuaib Hasan Akib 54a49ad9eb docs: update Angular Package Format version references to latest 2026-01-02 08:12:45 +01:00
hawkgs 0db09e33b1 fix(devtools): false positive app not detected
Since Manifest V3, the service worker (background) gets terminated after 30s of inactivity. This can break the initialization phase of DevTools or the BE-FE communication channel, if already initialized. To prevent that, we emit a heartbeat in a >30s interval.
2026-01-02 08:12:18 +01:00
Alan Agius 98bfd139ee build: correct markdown link syntax for commit hashes in changelog generation
The links were generated incorrectly
2026-01-02 08:11:47 +01:00
SkyZeroZx 93fe833088 refactor(core): remove unused Injector and Renderer2 dependencies from hydration functions
Removes the unsued `Injector` & `Renderer2` dependency from the hydration annotation process.
2026-01-02 08:11:16 +01:00
SkyZeroZx 59c1dcc662 docs(docs-infra): adjust z-index to prevent adev tutorial nav overlapping sidebar
Updated the z-index hierarchy to avoid the adev tutorial navigation bar
overlapping the main sidebar.
2026-01-02 08:10:53 +01:00
Leon Senft e7745dc9dd test(forms): add test coverage for binding errors to custon controls
This input was missing dedicated test coverage.
2026-01-02 08:09:35 +01:00
Leon Senft 8832fc01b2 test(forms): remove duplicate test case
We had two test cases that tested the `Field` directive synchronizes
with a custom checkbox control components.
2026-01-02 08:09:35 +01:00
Leon Senft 1a4c3eb1d0 fix(forms): allow custom controls to require pending input
* Allow custom controls to make `pending` a required input
* Refactor test for `pending` input to be consistent with other control
  properties
* Test that `pending` inputs are reset when the field binding changes
2026-01-02 08:09:35 +01:00
Leon Senft 9ad603fa11 test(forms): remove obsolete test case
There's no longer a need to test that inputs are set before
initialization on custom controls now that required inputs are
supported.
2026-01-02 08:09:35 +01:00
Leon Senft 4f73a350a5 test(forms): refactor and improve test coverage for disabledReasons input
* Refactor test for `disabledReasons` input to be consistent with other control
  properties
* Test that `disabledReasons` inputs are reset when the field binding changes
2026-01-02 08:09:35 +01:00
Leon Senft 89c37f1f7f fix(forms): allow custom controls to require dirty input
* Allow custom controls to make `dirty` a required input
* Refactor test for `dirty` input to be consistent with other control
  properties
* Test that `dirty` inputs are reset when the field binding changes
2026-01-02 08:09:35 +01:00
Leon Senft b563b5cfc2 test(forms): refactor and improve test coverage for invalid input
* Refactor test for `invalid` input to be consistent with other control
  properties
* Test that `invalid` inputs are reset when the field binding changes
2026-01-02 08:09:35 +01:00
Leon Senft 82edf18427 fix(forms): allow custom controls to require hidden input
* Allow custom controls to make `hidden` a required input
* Refactor test for `hidden` input to be consistent with other control
  properties
* Test that `hidden` inputs are reset when the field binding changes
2026-01-02 08:09:35 +01:00
Leon Senft cb09fb8308 fix(forms): support custom controls with non signal-based models
* Recognize directives with non signal-based models as valid custom controls
* Relax type checker to allow non signal-based models

The `FormValueControl` and `FormCheckboxControl` interfaces still
require a `model()`-input, however, a custom control need not implement
either interface to be bound by the `Field` directive.

All of the following examples can be used to define a custom control:

```ts
// Preferred: model()
class MyFormControl implements FormValueControl<string> {
  readonly value: model.required<string>();
}

// Supported: input() + output()
class MyFormControl {
  readonly value: input.required<string>();
  readonly valueChange: output<string>();
}

// Supported: @Input() + @Output()
class MyFormControl {
  @Input({required: true}) value!: string;
  @Output() valueChange: new EventEmitter<string>();
}
```

The latter two may still choose to implement `FormUiControl` for other
properties, but again it is not required.

Fix #65478
2026-01-02 08:09:03 +01:00
Leon Senft 817e2b87a8 refactor(forms): always bind [field] to ControlValueAccessor if present
Change the order of precedence that `[field]` binds to from

  1. Custom control (`FormValueControl`, `FormCheckboxControl`)
  2. Interop control (`ControlValueAccessor`)
  3. Native control (`<input>`, `<select>`, `<textarea>`)

to

  1. Interop control (`ControlValueAccessor`)
  2. Custom control (`FormValueControl`, `FormCheckboxControl`)
  3. Native control (`<input>`, `<select>`, `<textarea>`)

This ensures that Reactive Forms controls authored to use
`ControlValueAccessor` work correctly with Signal Forms, even if they
happen to conform to the `FormValueControl` interface.
2026-01-02 08:09:03 +01:00
SkyZeroZx 4e7e38c591 refactor(core): Add ngDevMode guards and new sanitization error codes
Adds new runtime sanitization error codes. Adds `ngDevMode` guards around
error message strings to ensure detailed diagnostics are included only
in development mode. This allows production builds to tree-shake verbose error descriptions, reducing bundle size.
2026-01-02 08:08:21 +01:00
SkyZeroZx d8790972be feat(common): Add custom transformations for Cloudflare and Cloudinary image loaders
Adds support for custom transformations to Cloudinary and Cloudflare image loaders via a `transform` parameter.

Fixes #65191 #64639
2026-01-02 08:07:29 +01:00
Doug Parker 5a146b3256 release: bump Angular DevTools version to 1.6.4 2025-12-18 13:06:36 -08:00
Angular Robot e5a7eb37cf build: update cross-repo angular dependencies to v21.1.0-next.3
See associated pull request for more information.
2025-12-17 16:55:58 -08:00
Andrew Scott 99ad18a4ee feat(core): Add stability debugging utility
This commit adds a utility method to debug why the application has not stabilized after
a set period of time (9 seconds, or `hydrationTimeout-1`).

fixes #52912
2025-12-17 15:43:05 -08:00
Miles Malerba 244b54c9bf refactor(forms): rename server errors to submission errors
This better reflects the intent to indicate an error during submission,
regardless of whether the error came from the server or not.
2025-12-17 15:42:07 -08:00
Angular Robot 3a32556a78 docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2025-12-17 15:41:23 -08:00
Andrew Seguin e2a9938c51 fix(core): explicitly cast signal node value to String
If the computed's `toString` is called and `node.value` is a Symbol, the browser will throw an exception `ERROR TypeError: Cannot convert a Symbol value to a string`

Symbols cannot be implicitly changed to strings. This change changes the conversion to be explicit by wrapping `node.value` with `String()`

This can be reproduced if you create a computed with `createComputed(computation, equal)` and call `toString()` while `node.value` is something like `Symbol(UNSET)`
2025-12-17 14:38:38 -08:00
Angular Robot d67d8f78b6 build: update cross-repo angular dependencies
See associated pull request for more information.
2025-12-17 14:35:14 -08:00
Shuaib Hasan Akib e9d1c6478a docs(docs-infra): clean up TODO comment, unused imports, and helper function 2025-12-17 14:33:58 -08:00
Shuaib Hasan Akib ad88c72f24 docs: fix incorrect line highlighting in tutorials
Ensures highlighted lines in tutorial examples match the
corresponding code shown to readers.
2025-12-17 14:26:30 -08:00
Miles Malerba 5b06996fb2 docs: call out breaking changes as experimental
Explicitly calls out that recent breaking changes were only for
experimental features
2025-12-17 14:25:33 -08:00
Andrew Scott 6ad0a4fe53 docs: release notes for the vscode extension 21.0.1 release 2025-12-17 14:24:38 -08:00
Andrew Kushnir 664fa393b7 release: cut the v21.1.0-next.4 release 2025-12-17 13:19:21 -08:00
Andrew Kushnir fe30b2fd27 docs: release notes for the v21.0.6 release 2025-12-17 13:14:30 -08:00
Alan Agius 868cb7cb45 build: migrate Bazel ignore rules from .bazelignore to REPO.bazel
See: https://bazel.build/rules/lib/globals/repo and https://github.com/aspect-build/rules_js/blob/092dd7892b816f899c7ab5b794fdb6236abb6939/docs/pnpm.md?plain=1#L77
2025-12-17 10:14:00 -08:00
Andrew Scott ce1a4769f9 fix(language-service): Prevent language service from crashing on suggestion diagnostic errors
This prevents the language service from crashing when a
`FatalDiagnosticError` is thrown when retrieving suggestion diagnostics.

fixes #66069
2025-12-17 10:13:11 -08:00
Angular Robot 2e58b66810 build: update pnpm to v10.26.0
See associated pull request for more information.
2025-12-17 09:56:35 -08:00
Angular Robot bfec9c019b build: update bazel dependencies
See associated pull request for more information.
2025-12-17 09:55:22 -08:00
Shuaib Hasan Akib 3e57f9eaf5 docs: add documentation for schema validation with Signal Forms
Fixes: #66098
2025-12-17 09:52:46 -08:00
Angular Robot 7335b98600 build: update dependency rollup to v4.53.5
See associated pull request for more information.
2025-12-17 09:50:30 -08:00
Angular Robot d118320c8b build: update all github actions
See associated pull request for more information.
2025-12-17 09:48:27 -08:00
SkyZeroZx 50d5c2997f docs: align lightweight injection tokens with the style guide 2025-12-17 09:45:14 -08:00
Matthieu Riegler d23ce76821 docs(docs-infra): leverage the search on 404
This introduces a search result matching the requested url when the page couldn't not be found.
2025-12-17 09:40:42 -08:00
kirjs 6f6b2408fa refactor(forms): convert Signal Forms errors to use RuntimeError
- Added 13 new error codes to forms/src/errors.ts (1900-1999)
- use RuntimeError
2025-12-17 09:39:57 -08:00
SkyZeroZx 9f5744a92d fix(language-service): avoid interpolation highlighting inside @let
This change omits treating `{{ }}` interpolation syntax as valid inside `@let` binding strings, preventing the interpolation curly braces from superseding the match of the surrounding binding expression and ensuring the highlighter reflects the correct semantics of `@let` bindings.

fixes #61643
2025-12-17 09:39:18 -08:00
Alan Agius f516370c8e fix(core): use mutable ResponseInit type for RESPONSE_INIT token
The `RESPONSE_INIT` token previously used `ResponseInit`. However, `@types/node` (and `undici`) definitions for `ResponseInit` mark properties as `readonly`, which differs from the standard DOM `ResponseInit`.

This commit introduces a `ResponseInit` type that explicitly removes `readonly` modifiers to ensure compatibility and allow for mutable options. This type is now used by the `RESPONSE_INIT` token and is exported from `@angular/core`.
2025-12-17 09:35:22 -08:00
Andrew Kushnir 9fa77af110 Revert "fix(core): explicitly cast signal node value to String"
This reverts commit c501b25d04.
2025-12-16 17:37:34 -08:00
Andrew Seguin c501b25d04 fix(core): explicitly cast signal node value to String
If the computed's `toString` is called and `node.value` is a Symbol, the browser will throw an exception `ERROR TypeError: Cannot convert a Symbol value to a string`

Symbols cannot be implicitly changed to strings. This change changes the conversion to be explicit by wrapping `node.value` with `String()`

This can be reproduced if you create a computed with `createComputed(computation, equal)` and call `toString()` while `node.value` is something like `Symbol(UNSET)`
2025-12-16 16:38:02 -08:00
SkyZeroZx 62ccd64e9f docs: add section about reactive contexts 2025-12-16 16:35:24 -08:00
Marc Stammerjohann dc7ae9aef3 docs(router): add missing inject import 2025-12-16 16:34:20 -08:00
Matthieu Riegler db3614f2d5 build: add commits to the ignore revs files.
PR #66089 & #66107 both landed changes to the formatting
2025-12-16 16:32:49 -08:00
Matthieu Riegler 6270bba056 ci: reformat files
This is after we've slightly changed a rule in #66056
2025-12-16 14:44:19 -08:00
Andrew Scott 06be8034bb fix(core): Microtask scheduling should be used after any application synchronization
Previously, Angular would switch from the macrotask to a microtask
scheduler _only_ when the scheduler was the trigger for the
synchronization. This microtask scheduling is to ensure patterns such as
`Promise.resolve().then(() => updateAppStateAgain())` _during_
synchronization are caught and synchronized again within the same event
loop (guaranteeing that they aren't split across multiple browser paints).

The microtask scheduler should be used after any tick, not just from
those than run within the scheduler to always account for the promises
within synchronization. This is encountered most frequently during
bootstrap, which triggers the tick directly.

In this change we exempt `TestBed.tick` and
`ComponentFixture.detectChanges` from this behavior. Doing so would affect
the timing of stability and tests are quite sensitive to this (e.g.
`fixture.whenStable`). It is somewhat unfortunate that we have "special" test-only
behavior. However, it is important to acknowledge that this only affects
the test-only APIs as well. Any code in the application under test that
triggers `ApplicationRef.tick` directly would still use the microtask
scheduling behavior.

fixes #65444
2025-12-16 13:34:48 -08:00
Miles Malerba ae0c59028a refactor(forms): rename field to fieldTree in FieldContext and ValidationError
BREAKING CHANGE:
2025-12-16 10:26:22 -08:00
SkyZeroZx 2ccdf50fba refactor(platform-browser): remove unused platformIsServer flag from renderer
The` platformIsServer` flag is no longer referenced by the renderer and is effectively unused.
Removing it simplifies the implementation and avoids carrying redundant state.
2025-12-16 10:25:10 -08:00
SkyZeroZx bf2e50843d refactor(core): conditionally include debug names based on ngDevMode
Conditionally include debug-related metadata based on `ngDevMode` to avoid
unnecessary information in production builds.
2025-12-16 09:37:38 -08:00
Angular Robot db5429fbb2 build: lock file maintenance
See associated pull request for more information.
2025-12-16 09:36:22 -08:00
Angular Robot 2afae2719a build: update cross-repo angular dependencies
See associated pull request for more information.
2025-12-16 09:33:34 -08:00
Ben Hong 3750622c46 docs: update links to guides in signal forms overview 2025-12-16 09:29:11 -08:00
SkyZeroZx 53c447e3c8 docs: update lightweight injection tokens guide to use contentChild, contentChildren, and inject APIs. 2025-12-16 09:28:23 -08:00
Matthieu Riegler af77b89e2a ci: reformat files
This is after we've slightly changed a rule in #66056
2025-12-16 09:24:36 -08:00
Shuaib Hasan Akib 3ff20a58d3 refactor(docs-infra): remove deprecated h.JSX.HTMLAttributes usage
Import HTMLAttributes directly from preact to address deprecation warning in header-api.tsx
2025-12-15 17:44:24 -08:00
Matthieu Riegler b4f584cf42 fix(core): return StaticProvider for providePlatformInitializer
Returning `EnvironmentProviders` was never correct.
fixes #64277
2025-12-15 15:16:37 -08:00
Angular Robot 11e271ca6a build: update cross-repo angular dependencies
See associated pull request for more information.
2025-12-15 14:19:07 -08:00
Alan Agius d4111eebc6 refactor(compiler): remove unnecessary sanitization for safe attributes
Remove sanitization for attributes that cannot execute code (e.g. `javascript: URIs`).
2025-12-15 14:13:38 -08:00
Kirill Cherkashin 193aa332fc docs(forms): improve JSDoc for Signal Forms Schema types
Improved documentation for Schema, SchemaFn, and SchemaOrSchemaFn types
with clearer descriptions and usage examples.
2025-12-15 14:02:35 -08:00
Angular Robot 356092a24d docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2025-12-15 13:27:23 -08:00
Matthieu Riegler 44d4439bc4 refactor(forms): add signal forms to the type tests
This will ensure that signal forms emit valid typings.
Also this commits moves `@standard-schema/spec` from peer-dep to regular dep
2025-12-15 11:44:54 -08:00
kirjs 3a01d72850 refactor(forms): convert Signal Forms errors to use RuntimeError
- Added 13 new error codes to forms/src/errors.ts (1900-1999)
- use RuntimeError
2025-12-15 11:44:02 -08:00
Angular Robot 915eee3abd build: update all github actions to v6
See associated pull request for more information.
2025-12-15 11:43:06 -08:00
Angular Robot aabf719a6d build: update dependency bazel to v8.5.0
See associated pull request for more information.

Closes #66067 as a pr takeover
2025-12-15 11:41:43 -08:00
Alan Agius 2a5c6919d0 build: remove API doc generation for localize/init and add mnemonic to API rendering rule.
The removed target was not used and was generating an empty output which causes `java.io.IOException: mandatory output packages/localize/init/localize_docs_html was not created`
2025-12-15 11:41:43 -08:00
Andrew Scott a1eb2cef16 docs: update link to releases for vscode extension 2025-12-15 11:41:14 -08:00
Shuaib Hasan Akib a2aa8fef05 docs: format CLI builder JSON examples using fenced blocks
Replaces custom docs-code components with fenced ```json``` blocks for
CLI builder examples, improving readability, consistency, and copy
support across the documentation.

Fixes #66060
2025-12-15 11:34:57 -08:00
aparziale a29a3988d6 docs(docs-infra): Fix broken link
Fix broken link side effects

Fix #66051
2025-12-15 11:33:56 -08:00
SkyZeroZx b043c7490f docs: update code block syntax highlighting in documentation & fixed identation 2025-12-15 11:33:30 -08:00
SkyZeroZx 23fbe5cf9f docs: replace @debugging tag with proper Markdown syntax 2025-12-15 10:00:59 -08:00
Axel Jäger a1f5f52880 docs(forms): include update() in example for updating form value 2025-12-15 10:00:28 -08:00
Angular Robot 4c1d229771 build: update all non-major dependencies
See associated pull request for more information.
2025-12-15 09:55:59 -08:00
Angular Robot 48c4082c59 build: update all github actions
See associated pull request for more information.
2025-12-15 09:55:25 -08:00
Matthieu Riegler f530b777b9 ci: enable embeddedLanguageFormatting for prettier
This allows to format inline templates
2025-12-15 09:54:48 -08:00
hawkgs 83691704b7 refactor(devtools): slightly optimize extension initialization messaging
- Stop indefinite `detectAngular` messages after the backend is installed.
- Do not attempt handshake with the BE (from content scripts) until it's installed.
2025-12-15 09:52:52 -08:00
SkyZeroZx bb65520991 docs: Adds documentation for the NG0919 error
Adds a new documentation page for the NG0919 error, which indicates a circular dependency in Angular applications.

fixes  #65968
2025-12-15 09:52:16 -08:00
Joey Perrott 5f01f121df ci: update google sync configuration to not include package.json
We don't use the package.json files within google3 and they don't need to be marked for sync
2025-12-15 09:51:19 -08:00
Matthieu Riegler b5205c7c42 docs(docs-infra): throw when rendering absolute links to adev in our guides
This is to prevent any further regressions in the future
2025-12-15 09:45:04 -08:00
Andrew Kushnir 8243bb3064 Revert "refactor(compiler): remove unnecessary sanitization for safe attributes"
This reverts commit 128aef0ede.
2025-12-12 12:59:47 -08:00
Angular Robot ff4fa14463 build: update cross-repo angular dependencies
See associated pull request for more information.
2025-12-12 11:40:50 -08:00
Matthieu Riegler be5dbf45ba docs: update guidelines.md to match best-practices.md
fixes #65953
2025-12-12 10:10:33 -08:00
Angular Robot 480c4dc263 docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2025-12-12 10:05:23 -08:00
Angular Robot 16ab98fcf4 build: update dependency @actions/core to v2
See associated pull request for more information.
2025-12-12 09:52:01 -08:00
Miles Malerba 348f149e8b feat(forms): pass field directive to class config
Updates signal forms to pass the full `Field` directive to the class
configuration functions, rather than just the state. This allows
developers to take the element as well as the state into consideration
when deciding classes to apply.

Closes #65762

BREAKING CHANGE: The shape of `SignalFormsConfig.classes` has changed

Previously each function in the `classes` map took a `FieldState`. Now
it takes a `Field` directive.

For example if you previously had:
```
provideSignalFormsConfig({
  classes: {
    'my-valid': (state) => state.valid()
  }
})
```

You would need to update to:
```
provideSignalFormsConfig({
  classes: {
    'my-valid': ({state}) => state().valid()
  }
})
```
2025-12-12 08:07:53 -08:00
Kristiyan Kostadinov 7be4ddef1c fix(core): throw better errors for potential circular references
Currently circular references in user code manifest themselves with an error like `Cannot read properties of undefined (reading 'ɵcmp')`. This is a bit cryptic so these changes add an assertion mentioning circular references.

Relates to #65917.
2025-12-12 08:06:26 -08:00
Alan Agius 128aef0ede refactor(compiler): remove unnecessary sanitization for safe attributes
Remove sanitization for attributes that cannot execute code (e.g. `javascript: URIs`).
2025-12-12 08:05:58 -08:00
SkyZeroZx 8485579649 refactor(common): remove redundant providedIn: 'root' from injection tokens
Removes unnecessary declarations from injection tokens
2025-12-12 08:05:30 -08:00
hawkgs 1a9bfa8542 fix(devtools): last supported version
Bump to 12, as the message suggests.
2025-12-12 08:04:50 -08:00
hawkgs aee536c8ca refactor(devtools): improve the look of app state screens
Improve the look of "app not detected", "unsupported version" and "prod app not supported" screens.
2025-12-12 08:04:50 -08:00
Angular Robot 06fb97abf9 build: update dependency firebase-tools to v15
See associated pull request for more information.
2025-12-12 08:03:11 -08:00
Angular Robot c8a46650a3 build: update bazel dependencies
See associated pull request for more information.
2025-12-12 08:02:24 -08:00
Angular Robot ae6bbe9c43 build: update all non-major dependencies
See associated pull request for more information.
2025-12-12 08:01:56 -08:00
Angular Robot 8ef0009ffe docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2025-12-12 08:00:41 -08:00
Angular Robot 23547f04e9 build: update cross-repo angular dependencies
See associated pull request for more information.
2025-12-11 17:18:17 -08:00
Shuaib Hasan Akib 63538524bc docs: simplify example headers by showing only the file name
Removed redundant `src/app/` prefixes from <docs-code> headers to make
examples cleaner and easier to read. The full path remains available via
the `path` attribute, so the shortened headers improve clarity without
losing context.
2025-12-11 17:17:05 -08:00
Andrew Xue ff68806c67 docs(docs-infra): add primary color vars for tutorial button 2025-12-11 17:11:27 -08:00
Leon Senft f0ad30cce6 docs(forms): fix broken example
As written, the example rewrote the input value as the user edited it,
causing all kinds of confusing behavior which rendered the input nearly
unusable. While such implementations are possible, they require great
care to manage the cursor position while editing. For the sake of
brevity, this example now only updates the model on `blur` events; once
the user is done editing.
2025-12-11 17:10:51 -08:00
SkyZeroZx c4e7ac1b81 docs: fixed tutorial steps with identation formatting 2025-12-11 17:10:14 -08:00
SkyZeroZx a8fac4ce3b docs(docs-infra): Fix prefer/avoid rule matching with word boundaries
Improve code block rule detection by adding word-boundary anchors.
Also update indentation for consistency.
2025-12-11 17:08:50 -08:00
Angular Robot 567172b5bc build: update peter-evans/create-pull-request action to v8
See associated pull request for more information.
2025-12-11 17:07:42 -08:00
SkyZeroZx ef45637ca8 docs(language-service): add link to hydration guide in built-in names documentation
Adds link to hydration guide for `hydrate` keyword
2025-12-11 17:06:35 -08:00
Charles 97c7025d7d docs: overhaul unit testing overview guide
This commit introduces a series of improvements to the unit testing overview guide to enhance clarity, organization, and accuracy.
2025-12-11 17:06:00 -08:00
Miles Malerba fba0c88c9e docs(forms): add guide on designing form models
Adds a new guide on designing form model for signal forms
2025-12-11 17:04:11 -08:00
Alex Rickabaugh 7c234486e6 release: cut the v21.1.0-next.3 release 2025-12-11 15:48:59 -08:00
Alex Rickabaugh bf86f5364f docs: release notes for the v21.0.5 release 2025-12-11 15:43:22 -08:00
Miles Malerba d0097f7d0c fix(forms): fix signal forms type error
Removes the `implements` clause on the `Field` directive since it is
causing type errors for people.
2025-12-11 15:33:12 -08:00
SkyZeroZx 4f6014a756 fix(core): avoid false-positive deprecation when using InjectionToken with factory only
Prevents the deprecation warning that was incorrectly triggered when
defining an InjectionToken with only a `factory`, which correctly
defaults to the `root` scope.
2025-12-11 11:20:11 -08:00
Alex Rickabaugh 16364514e3 release: cut the v21.1.0-next.2 release 2025-12-10 16:59:48 -08:00
Alex Rickabaugh d343ff34a3 docs: release notes for the v21.0.4 release 2025-12-10 16:50:42 -08:00
Joey Perrott a52c834536 build: update ng-dev to latest version
Update to the latest version of ng-dev
2025-12-10 16:44:10 -08:00
Angular Robot d0c3806915 build: update cross-repo angular dependencies
See associated pull request for more information.
2025-12-10 13:20:56 -08:00
jnizet c63ef9cb6a docs: fix typos and clarify root effect 2025-12-10 12:40:59 -08:00
Chathulanka Gamage 7674ada620 docs: update control-flow.md to replace else-if with else if
fix incorrect hyphenated form "else-if" and update documentation to match correct syntax "else if"
2025-12-10 12:39:21 -08:00
Angular Robot af6c01f9fb build: update pnpm to v10.25.0
See associated pull request for more information.
2025-12-10 12:33:25 -08:00
Angular Robot 0ef185d015 build: update all non-major dependencies
See associated pull request for more information.
2025-12-10 12:28:42 -08:00
Angular Robot 25c569cf99 build: update all github actions
See associated pull request for more information.
2025-12-10 12:28:01 -08:00
Michael Small 3ab17876ba docs: add 'new' to page 'Side effects for non-reactive APIs' 2025-12-10 12:27:25 -08:00
Matthieu Riegler c429e701fc refactor: spread rules with glob syntax
prettierignore does not support the glob syntax for multiple extensions.
2025-12-10 12:26:53 -08:00
SkyZeroZx bff2dcb93c docs: update forwardRef usage with signals and add HostListener note 2025-12-10 12:23:29 -08:00
Angular Robot 28338c44b3 build: lock file maintenance
See associated pull request for more information.
2025-12-10 12:21:26 -08:00
Jan Martin 954c546273 release: bump Angular DevTools version to 1.6.3 2025-12-10 11:37:13 -08:00
Andrew Scott 5988bdedae refactor(core): Add transition.to property to FakeNavigation
This matches the upstream changes in https://github.com/whatwg/html/commit/f19930f98afeb7565cfc1cbc6a1d4a2086535bca
2025-12-10 10:18:08 -08:00
diegoinost02 9dd08c571a docs(forms): document array item validation in Signal Forms 2025-12-10 10:17:27 -08:00
diegoinost02 e6865af8f1 docs(forms): add signal forms documentation for validating array items 2025-12-10 10:17:27 -08:00
SkyZeroZx 15e3407dab docs(docs-infra): Fixes the visibility of the copy link button in API documentation headings
Fixes the visibility of the copy link button in API documentation headings.
The button now appears on hover, improving the user experience.
2025-12-10 10:15:59 -08:00
Shuaib Hasan Akib 1c6049584e docs: hide menu icons from screen readers in aria example
Add aria-hidden="true" to decorative icon elements in the ARIA menu documentation
example to prevent screen readers from announcing both icon names and labels.
This improves the accessibility experience by ensuring only meaningful text
is announced to screen reader users.

Fixes: #65768
2025-12-10 10:09:35 -08:00
Matthieu Riegler 14713d0992 fix(forms): allow resetting with empty string
Both empty string and null values should be accepted when resetting

fixes #65949
2025-12-10 10:04:54 -08:00
Shuaib Hasan Akib d0a34a6ca5 docs: use fenced code blocks and format examples
Replaces custom docs-code blocks with fenced Markdown code blocks and reformats examples to improve readability, consistency, and copy-paste behavior.
2025-12-10 09:35:50 -08:00
Shuaib Hasan Akib 1f29577077 fix(docs-infra): parse linenums attribute from triple backtick metadata
The triple backtick code block parser now extracts the linenums attribute
from metadata and applies it to enable line number display in code examples
2025-12-10 09:31:44 -08:00
Andrew Scott d355205198 refactor(core): match spec updates for FakeNavigation
Updates FakeNavigation based on updates in https://github.com/whatwg/html/pull/11952
2025-12-10 08:19:23 -08:00
Matthieu Riegler 835a643161 refactor(core): Support Error like object for on resource errors.
Error like object will be treated as errors.

Related to #61861
2025-12-10 08:18:17 -08:00
Matthieu Riegler 25b7948307 ci: fix deployement of previews
By pulling the fix angular/dev-infra/pull/3301
2025-12-10 08:17:47 -08:00
Joey Perrott 9ace7d7a0d build: add the ignore all rc files flag when running bazel info
Due to a bug in bazel we need to ignore all of the rc files when running bazel info commands
2025-12-09 13:44:45 -08:00
Matthieu Riegler 827f5a6fd5 docs: create a separate effect guide
This also includes details about `afterRenderEffect`

WIP.

fixes #63757
2025-12-09 13:11:00 -08:00
Angular Robot 6a3f6be6ed build: update cross-repo angular dependencies
See associated pull request for more information.
2025-12-09 13:05:03 -08:00
Kristiyan Kostadinov 8a3f3a91cf fix(compiler-cli): expand type for native controls with a dynamic type
We recently allowed users to have a dynamic input `type` with signal forms, but the logic that infers the value type falls back to `string` even though in theory it can be any of the other types.

These changes expand the inferred type to `string | number | boolean | Date | null` if we detect a dynamic `type` binding.
2025-12-09 13:01:30 -08:00
kirjs 179b4cba67 fix(forms): Reuse key in parent in compat structure
This fixes the "Compat nodes do not use keyInParent." error when trying to bind compatField.
2025-12-09 12:59:22 -08:00
arturovt 80dbd74ae8 refactor(core): wrap operationsCounter calls with ngDevMode checks
Wrap operationsCounter method calls (recordCreate, recordDestroy, reset)
with ngDevMode guards to ensure they are tree-shaken in production builds.

This aligns with the existing pattern where operationsCounter is only
initialized in development mode, and eliminates unnecessary method call
overhead in production.

The optional chaining (?.) is retained as TypeScript doesn't narrow types
based on ngDevMode checks, but the entire expression will be removed during
production builds.
2025-12-09 10:38:39 -08:00
Matthieu Riegler 8199945637 refactor(core): add dedicated deprecated signatures for providedIn: any / NgModule.
Those were deprecated by #47616 back in v15.

fixes #65923
2025-12-09 10:38:09 -08:00
Angular Robot feb1278b5c docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2025-12-09 10:37:32 -08:00
Miles Malerba aff8b248b3 feat(forms): expose element on signal forms Field directive
This allows for easier focusing of the relevant element based on the
`field` property of a `ValidationError`
2025-12-09 09:47:51 -08:00
Andrew Scott 200d923436 docs: Update tutorial last step to use markForCheck
Ideally this tutorial would have used signals but didn't. That's a bigger change than
we are able to make right now and there are other things we would like
to update at the same time. This fix is a temporary patch to the
existing content until there is time to redo the tutorial and videos
entirely.

fixes #65863
2025-12-09 09:39:31 -08:00
Angular Robot 95dfca7254 build: update bazel dependencies
See associated pull request for more information.
2025-12-09 09:38:19 -08:00
Matthieu Riegler 75fe8f8af9 refactor(upgrade): deprecate VERSION export
users should use the entry from `upgrade/static`.

DEPRECATED: `VERSION` from `@angular/upgrade` is deprecated. Please use the entry from `@angular/upgrade/static` instead.
2025-12-09 09:26:02 -08:00
SkyZeroZx 9a6b8e0315 docs(docs-infra): Refactors tutorial generation and updates ng-container docs
Updates the `ng-container` documentation page to use the correct `angular-html` code format and removes an unused CLI documentation file.
2025-12-09 09:25:29 -08:00
Kristiyan Kostadinov ae1c0dc490 perf(compiler): chain query creation instructions
We always emit the query creation instructions in a group which makes them good candidates for chaining.
2025-12-09 09:24:36 -08:00
Andrew Scott c9dfc6c484 fix(vscode-extension): Show warning if multiple versions of Angular are detected in workspace
This shows a more prominent warning when multiple versions of Angular
are detected in the workspace and we are forced to choose one to use for
the language server. This also logs those versions with their locations
and directs the user to view the output panel.

fixes #65466
2025-12-09 09:23:47 -08:00
Matthieu Riegler 3411638f65 docs(docs-infra): prefer/avoid code block styling
fixes #65866
2025-12-09 09:23:12 -08:00
Miles Malerba ebc5c2b083 feat(forms): redo the signal forms metadata API
This PR makes a number of changes to the metadata API to address design
flaws in the previous API. Some of the changes include:

- Replaces the previous `MetadataKey` and `AggregateMetadataKey` with a
  single unified `MetadataKey` that is used for all metadata.
- The new `MetadataKey` is only defined for fields that explicitly set
  it in their schema logic
- All metadata now has reducer / aggregate behavior
- The new `MetadataKey` has an option to create a managed key which
  wraps the result of its computed aggregate into some other structure
  such as a `Resource` or `linkedSignal`
- There are now two APIs to create metadata keys
  - `createMetadataKey` for pure computed metadata
  - `createManagedMetadataKey` for metadata that manages its computation
    internally
2025-12-09 09:21:41 -08:00
Joey Perrott 349133374f build: update repository to use node 22.21.1 in bazel
The repository was updated to use node 22.21.1 via nvm, but bazel had not been updated to match
2025-12-09 09:19:13 -08:00
Shuaib Hasan Akib 4b9fffaa79 docs(docs-infra): hide trailing empty line in code examples
Add CSS rule to hide the last empty line in code blocks to prevent displaying
unnecessary empty lines when source files end with a newline character.
The empty line remains in the DOM for proper copy-paste functionality.
2025-12-09 09:17:41 -08:00
Gouvernathor 5607f513a7 docs(common): Explain how ::ng-deep works
Co-authored-by: Matthieu Riegler <kyro38@gmail.com>
2025-12-09 09:16:45 -08:00
cexbrayat 9fe9566581 fix(forms): add signals for dirty, hidden, and pending states in custom controls
FormUiControl states that hidden, pending and dirty will be bind in custom controls, but this is currently not the case.

Fixes #65575
2025-12-08 10:30:43 -08:00
Anuj Chhajed 96b79fc393 refactor(core): correct all typeof ngDevMode comparison patterns introduced by #63875
This change replaces all remaining occurrences of `typeof ngDevMode !== undefined`
with the correct `typeof ngDevMode !== 'undefined'` form. This aligns the codebase
with JavaScript typeof semantics and maintains consistency with other Angular code.
2025-12-08 10:30:01 -08:00
Miles Malerba efde94a525 refactor: followup cleanup for #65758 fallout
Fixes some issues left behind by recent refactor
2025-12-08 10:27:59 -08:00
mahmoudaboueleneen bad758d4ea docs: fix typo in 'components' word in host elements guide 2025-12-08 10:24:05 -08:00
Shuaib Hasan Akib 5fd75410a9 refactor(core): use proper type for stringifyTypeFromDebugify parameter
Replace the 'any' type with ClassDebugInfo for the debugInfo parameter in
stringifyTypeFromDebugInfo function. This removes the TODO comment that was
tracking the need for proper typing without creating circular dependencies.

The change improves type safety while avoiding circular imports since
stringify_utils.ts doesn't export anything that definition.ts imports.
2025-12-08 10:23:16 -08:00
Joey Perrott aa92f19307 build: update to bazel version 8.4.2
Update bazel to use version 8.4.2
2025-12-08 10:21:59 -08:00
Alan Agius 22eda59a31 build: ignore adev generated content JSON files in Prettier
These files are auto generated.
2025-12-08 10:20:29 -08:00
Matthieu Riegler 9d1d742f1b build: enable angular formatting on all html files
This should also be safe on any html file that isn't an angular template
2025-12-08 10:19:45 -08:00
Alessio Pelliccione 253dc95d63 feat(docs-infra): add complexity level badge
Introduces the new complexity badge in recommendation cards.
The implementation utilizes CSS variables and `color-mix` to efficiently
handle color themes (Basic, Medium, Advanced) and dark mode support.

Closes #65378
2025-12-08 10:05:45 -08:00
Angular Robot dd47c57635 build: update cross-repo angular dependencies
See associated pull request for more information.
2025-12-08 09:37:30 -08:00
SkyZeroZx 70e024ea80 docs: add attribute binding reference in accessibility guide 2025-12-08 09:24:25 -08:00
Shuaib Hasan Akib c9cba99407 docs: add missing page title to update guide
Fixes the missing page title so the update guide displays a proper heading.
2025-12-08 09:23:23 -08:00
SkyZeroZx ccf31349c5 docs: Updates tutorial syntaxis highlight 2025-12-08 09:21:44 -08:00
hawkgs 0c4a5c599d fix(devtools): prod app detected screen
Do not call `getSupportedApis` in a prod app since it throws an error due to the absence of `ng`, which prevents the FE from getting the `ngAvailability` message and, respectively, the proper info screen that DevTools cannot be used on a prod app.
2025-12-08 09:21:16 -08:00
Angular Robot 7efc6f0086 build: update all non-major dependencies
See associated pull request for more information.
2025-12-08 09:20:18 -08:00
Angular Robot aecd166bec build: update dependency cldr to v8
See associated pull request for more information.
2025-12-08 09:18:46 -08:00
Alan Agius 5a38aed388 build: move NG_FORCE_TTY environment variable
This moved the `NG_FORCE_TTY` from individual `ng_web_app` rules to a global Bazel build flag as this is also needed for integration tests that under the hood run `ng serve` .
2025-12-08 09:12:39 -08:00
SkyZeroZx 6f2ef918e3 docs: add documentation HOST_TAG_NAME 2025-12-08 09:08:50 -08:00
Jessica Janiuk ce4ddf4b47 docs: Update contributing guidelines
This commit updates the CONTRIBUTING.md file to provide clearer
guidelines for new contributors, including sections on code style,
testing, and the pull request process.
2025-12-08 09:06:25 -08:00
Miles Malerba cda56db20f test: fix broken adev tests
Fixes a broken adev tests and enables another one that seems to work
fine now
2025-12-08 09:04:50 -08:00
SkyZeroZx 7e1e396a00 docs: add documentation for HTTP_TRANSFER_CACHE_ORIGIN_MAP 2025-12-08 09:00:08 -08:00
jnizet 28017c1c1a docs: add browser-mode option description to Vitest migration guide 2025-12-08 08:50:27 -08:00
SkyZeroZx a4563044ad docs(docs-infra): fix hideCopy option to code snippets
Adds the ability to hide the copy button on code snippets.

Updates documentation to use the new `hideCopy` option with the new
markdown code fence syntax.
2025-12-08 08:48:20 -08:00
Shuaib Hasan Akib 45aa63308e docs: fix lazy loading documentation reference
Updates broken or outdated references in the lazy loading guide.

Fixes: #65906
2025-12-08 08:47:40 -08:00
Alan Agius d2ac93d5ca build: format manifest files after updating its version
This commit run the formatter during the release.
2025-12-08 08:43:55 -08:00
Alan Agius 52aac81829 refactor: move Prettier ignore rules from ng-dev config to .prettierignore
This moves all prettier ignore rules to the prettier config
2025-12-08 08:43:06 -08:00
Matthieu Riegler 13bc1bc721 docs(docs-infra): fix next version dropdown
fixes #65912
2025-12-08 08:42:19 -08:00
Matthieu Riegler 81cf319534 docs(docs-infra): expose VERSION from @angular/upgrade
The missing src was responsible for not exposing the symbols during the doc extraction.

fixes #65916
2025-12-08 08:41:35 -08:00
Joey Perrott aba8fbe5cd build: update cross-repo angular dependencies
See associated pull request for more information.
2025-12-08 08:40:42 -08:00
kirjs 789f91bd4f feat(docs-infra): forward preview error locations
Intercept the WebContainer preview overlay open-in-editor requests and relay them to the editor via postMessage so errors open the matching file.
2025-12-04 11:45:51 -08:00
kirjs 21b995f4b7 feat(docs-infra): allow navigating to editor error locations
This shows up in a little pop-up, and is clickable now, and leads to exact line
2025-12-04 11:45:51 -08:00
Georgi Serev 87e05e935c refactor(devtools): create a reusable component for all prop mat-trees
Create a reusable component for object property inspection.
2025-12-04 11:44:00 -08:00
diegoinost02 e311f3df72 docs: clarify linkedSignal update behavior
Updates the linkedSignal documentation to specify that it updates its value when the source changes or when any signal referenced in the computation changes, ensuring the description accurately reflects its behavior.
2025-12-04 11:42:46 -08:00
Shuaib Hasan Akib abcd6b5bfb docs: update rxResource changes in updated page
Add both `request` and `loader` changes in rxResource section
2025-12-04 11:41:36 -08:00
SkyZeroZx 3adb091c1a docs: update zone pollution guide highlight syntax 2025-12-04 11:40:01 -08:00
Kirill Cherkashin 5be33048cc refactor(forms): Break logic.ts into separate files
This would make it easier to navigate
2025-12-04 11:33:20 -08:00
Nakul Sharma 0bb8924ab6 refactor(core): use getComponentDef in stringify_utils
- Use getComponentDef in debugStringifyTypeForError to clean up TODO
- Remove outdated comment from stringify_utils
2025-12-04 11:32:12 -08:00
Angular Robot 009ca4bc70 build: update all non-major dependencies
See associated pull request for more information.
2025-12-04 11:31:29 -08:00
hawkgs 1d431a9637 fix(devtools): router tree not being rendered
Convert the `TreeVisualizer` to a signal, in the `TreeVisualizerComponent`, to ensure that the router tree render effect is always called; Use explicit `afterNextRender` phases.
2025-12-04 11:30:14 -08:00
Andrew Scott 37598cf6fe refactor(router): Adjust push/replace behavior to account for navigation API timing issues
There is a bug (?) in all browsers where the timing of the entry change
is delayed when a navigation is initiated by a click on a link via user
interaction. In this case, we need to ensure we do a 'push' navigation
rather than a 'replace'.
Programatically doing element.click() does not reproduce
this behavior, so adding a test for this is difficult (would require
webdriver).
2025-12-04 11:29:38 -08:00
Angular Robot 5fa407530c docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2025-12-04 11:28:51 -08:00
Alex Rickabaugh b96f65a963 fix(forms): memoize reads of child fields in signal forms (#65802)
Previously, navigating a `FieldTree` in signal forms involved reactive reads
of the value of the parent field(s), both directly and via `.childrenMap()`.

This meant that on _any_ change to the value of a field, reactive
notifications would trigger updates of computeds, reruns of effects, etc.
So for example, this effect would run on every change to the form:

```ts
const f = form(signal({data: 'abc', unrelated: 0}));
effect(() => {
  // accessing f.data incurs a dependency on f().value() which changes
  // on every change in the whole form
  console.log(f.data().value());
});
```

This is deeply counterintuitive and troublesome when attempting to write
effect logic, and also results in `computed`s unnecessarily updating.

This change introduces the concept of a "reader" computed, which memoizes
the access of a field at a given key via the reactive graph. With this, the
same `f.data` access above now depends on the `data` reader in `f` only,
which is effectively a constant computed. As a result, the effect only
reruns on changes to `data`'s value, as intended.

PR Close #65802
2025-12-03 12:52:42 -08:00
Alex Rickabaugh 37472e9185 refactor(forms): simplify child field creation (#65802)
Previously, several values were being passed into the creation of
`FieldNodeStructure`s that were only used in the creation of child nodes.
Separately, we also passed a `createChildNode` function which these values
were passed back into.

Instead, this moves the small bit of logic from structure.ts behind the
`createChildNode` callback, which reduces the passing of values back-and-
forth and gives `createChildNode` a much more suitable signature.

PR Close #65802
2025-12-03 12:52:42 -08:00
cexbrayat fc23fcdd3b build: disable assistant_to_the_branch_manager on forks
It currently fails as it is triggered on push, but requires an angular-robot-key that forks don't have.
2025-12-03 12:33:13 -08:00
Joey Perrott eebcaf49f1 ci: use defined ng-dev config for deploying docs site
Use the repo defined ng-dev configuration for deploying the docs site
2025-12-03 11:26:05 -08:00
Shuaib Hasan Akib 7f8ffa3304 fix(docs-infra): prevent readonly TypeScript keyword from being linked
This updates the docs infrastructure to avoid incorrectly linking the `readonly` keyword in TypeScript examples.

Fixes #65632
2025-12-03 16:30:51 +01:00
Pawel Kozlowski 13c0d451a5 release: cut the v21.1.0-next.1 release 2025-12-03 16:24:33 +01:00
Pawel Kozlowski ffd7a9b7ea docs: release notes for the v21.0.3 release 2025-12-03 16:20:28 +01:00
SkyZeroZx 7d1e502345 feat(forms): Allows transforms on FormUiControl signals
Extends the `FormUiControl` interface to allow `InputSignalWithTransform` in addition to `InputSignal` for its properties.

Fixes #65756
2025-12-03 15:13:01 +01:00
Leon Senft e6d5632a30 perf(core): tree shake unused dynamic [field] binding instructions (#65599)
Move the instructions used to dynamically bind a `Field` directive to a
form control onto the `Field` itself. This way the instructions are only
retained if the app uses the `Field` directive.

PR Close #65599
2025-12-03 15:10:49 +01:00
Leon Senft cd7ae7e2ce fix(forms): support dynamic [field] bindings (#65599)
Support binding a `Field` directive to a component created dynamically
with `createComponent()`.

Fix #64632

PR Close #65599
2025-12-03 15:10:49 +01:00
Kristiyan Kostadinov 886cf6c452 fix(core): unable to inject viewProviders when host directive with providers is present
When registering providers, the DI system assumes that `viewProviders` are registered before plain `providers`. This was reinforced by components always being first in the array of directive matches, only one component being allowed per node and the fact that only components can have `viewProviders`.

This breaks down if there are host directives with `providers` on the component, because they'll execute earlier, throwing off the order of operations.

These changes fix the issue by separating out the resolvers for `viewProviders` and plain `providers` and explicitly running the component's `viewProviders` resolver before any others. This also has the benefit of not attempting to resolve `viewProviders` for directives which are guaranteed not to have them.

Fixes #65724.
2025-12-03 15:09:48 +01:00
Angular Robot d6087841e3 build: update all github actions
See associated pull request for more information.
2025-12-03 14:08:09 +01:00
Angular Robot dfd7d3bf6b build: lock file maintenance
See associated pull request for more information.
2025-12-03 13:38:40 +01:00
Alan Agius 3e89577655 release: bump Angular DevTools version to 1.6.2 2025-12-03 13:18:27 +01:00
Alan Agius 0659d11c85 fix(http): enable XSRF protection for same-origin absolute URLs
Previously, the XSRF interceptor only added the XSRF token to requests with relative URLs.
This commit updates the interceptor to also add the token to requests with absolute URLs, provided they match the current origin.
2025-12-03 12:19:43 +01:00
Kristiyan Kostadinov 6773d3b97d fix(compiler-cli): check that field radio button values are strings
Adds some type checking code which verifies that the bound `value` on a `Field` radio button is a string.

Fixes #65726.
2025-12-03 12:18:57 +01:00
arturovt b74a0693f2 fix(router): handle errors from view transition finished promise
This commit adds a `.catch()` handler to `transition.finished` from `document.startViewTransition` to prevent unhandled promise rejections. The finished promise can reject with `TimeoutError` or `InvalidStateError` when transitions fail during or after the animation phase.

Based on the Blink source code, the `finished` promise can reject with:
* `TimeoutError`: "Transition was aborted because of timeout in DOM update"
* `InvalidStateError`: "Transition was aborted because of invalid state"

This may happen when the DOM update phase exceeds the browser's internal timeout threshold.
2025-12-03 12:16:57 +01:00
Joey Perrott 819b640c2d docs: prevent showing typescript diagnostic errors until the node runtime reaches a ready state
Prevent the overlay box showing diagnostics errors until after the initial setup of the node runtime is completed.

Fixes #52649
2025-12-03 11:54:53 +01:00
Pawel Kozlowski 13353bff8b Revert "build: update cross-repo angular dependencies"
This reverts commit 64f1f60943.
2025-12-03 11:06:54 +01:00
Pawel Kozlowski b158acb95c Revert "build: update bazel dependencies"
This reverts commit e26aa86aa5.
2025-12-03 11:06:54 +01:00
Angular Robot e26aa86aa5 build: update bazel dependencies
See associated pull request for more information.
2025-12-03 10:13:47 +01:00
Joey Perrott 64f1f60943 build: update cross-repo angular dependencies
See associated pull request for more information.
2025-12-03 10:10:11 +01:00
hawkgs a5efc35ddf fix(devtools): router tree callables view source functionality
Fix a set of issues with the callable search algorithm and refactor it.
2025-12-03 10:07:20 +01:00
Joey Perrott 34bedae101 docs: rename visibleRegion to region
Use the attribute region instead of visibleRegion
2025-12-03 10:06:01 +01:00
Joey Perrott 9b3b5fb4cf refactor(docs-infra): extract only the visibleRegion
Previously we extracted the regions and only made the visible region visible on the page, but since there is not a need for the
non-visible code to be presented, we don't need to include it in the generated code snippets.
2025-12-03 10:06:01 +01:00
Alon Mishne a892f2824c docs: Add build and devserver tools to MCP docs 2025-12-03 10:04:37 +01:00
Kirill Cherkashin 29223c440f docs: Update adev/src/content/guide/forms/signals/models.md
Co-authored-by: Matthieu Riegler <kyro38@gmail.com>
2025-12-02 19:30:52 +01:00
kirjs 1fd8303659 docs(forms): Polish the docs
- Recommend using form/fields to set the value
- Drop "Dynamic field addition" section as for the above reason
2025-12-02 19:30:52 +01:00
Andrew Scott a0ad5d4b2b test(router): Add tests for support of path params before/after a wildcard
This adds additional tests following the initial implementation in #64737 that cover
the use-case of path parameters before and after the wildcard segment.
2025-12-02 16:46:17 +01:00
Andrew Scott fd65dc5d53 refactor(router): add comment about scroll/focus
Add consideration for future behavior in the completion of the navigation event.
2025-12-02 16:45:17 +01:00
Andrew Scott cc03254b12 refactor(router): Avoid aborting traversal navigations
Unnecessarily aborting traversal navigations will break focus and scroll
restoration. We need to keep them open rather than replacing them with
an identical router-initiated navigation.
2025-12-02 16:45:17 +01:00
Andrew Scott 9914926b0d refactor(router): Clean up cancellation event handling
cleans up some handling of cancellation events with a shared helper.
2025-12-02 16:45:17 +01:00
Andrew Scott b7d21e209a refactor(router): compress synchronous end to router navigation to single operator
The end of the Router navigation is a block of synchronous logic that
can be compressed into a single operator rather than splitting it across
several, making it harder to step through. The only benefit from the
split is automatic unsubscribe/cancellation, which we can replicate
with an additional 'shouldContinue' check before proceeding.
2025-12-02 16:44:01 +01:00
Kristiyan Kostadinov e30e61b789 fix(compiler-cli): avoid allocating an object for signals in production mode
Currently when the signal debug name transform sees something like `const foo = signal(0);`, it transforms the signal into `signal(0, {...(ngDevMode ? { debugName: 'foo' } : {})})`. After minification this becomes `signal(0, {})` which will allocate memory for the empty object literal.

These changes rework the logic to produce `signal(0, ...(ngDevMode ? [{ debugName: 'foo' }] : []))` which will be fully tree shaken away to `signal(0)`.
2025-12-02 15:06:51 +01:00
Jessica Janiuk d8ab83ca82 fix(core): run animation queue in environment injector context
In the case that a component injector is destroyed before the animation
queue runs, the animation queue would fail to run because it was using a
destroyed injector. This commit changes the animation queue to run in the
context of the EnvironmentInjector, which is not destroyed until the app
is destroyed.

fixes: #65628
2025-12-02 15:05:17 +01:00
Matthieu Riegler f35b2ef47c refactor(compiler): Generate the controlCreate instruction after the native element has been created
This is necessary to exclude a race condition where the MutationObserver initialized by the instruction fired before the inputs are binded.

fixes #65678
2025-12-02 12:59:49 +01:00
Matthieu Riegler a784995a98 docs(docs-infra): Show examples on function overloads 2025-12-02 12:13:11 +01:00
Angular Robot 19a36954c1 build: update dependency chokidar to v5
See associated pull request for more information.
2025-12-02 12:11:10 +01:00
Angular Robot 510151c152 build: update all non-major dependencies
See associated pull request for more information.
2025-12-02 12:06:55 +01:00
Georgi Serev 2eaa4d54ad fix(devtools): hide profiler node details when the frame is changed
Hide the details panel when the user selects a new frame.
2025-12-02 12:05:54 +01:00
Joey Perrott a16a70ca74 refactor(docs-infra): move header id tracking into RendererContext
Move the header id tracking into the renderer context rather than a global state.  Since the RendererContext is
initialized for each execution of the marked parser, we can store the context of which header ids have been seen within
a single page there which allows us to run these parse interactions in parallel.
2025-12-02 12:03:34 +01:00
Joey Perrott 8b296543ae refactor(docs-infra): transform all headings using the built in transformer
Rather than manually calling the transformer we use for headings from within a render function, we now properly call into the Renderer to do them
via the tokens they are require instead.  This is being done to allow us to have a per Renderer instance of state instead of a global state, which will
allow us to run marked async and hopefully speed up the pipeline
2025-12-02 12:03:34 +01:00
Tim Deschryver 680de24c3c docs: fix documentation link for currentNavigation method 2025-12-02 12:02:24 +01:00
SkyZeroZx 0c7508bf56 docs: add platform-specific implementation and helpers 2025-12-02 12:00:01 +01:00
Angular Robot c5a3bbbd91 build: update cross-repo angular dependencies
See associated pull request for more information.
2025-12-02 10:48:06 +01:00
SkyZeroZx 03c04d4c83 docs: improve formatting and fixed numeration issue in attribute directives guide 2025-12-02 10:45:47 +01:00
SkyZeroZx 7fd5890d48 docs: update syntax highlighting in component documentation 2025-12-02 10:38:16 +01:00
Gaston da99b5d1d0 docs: add FormArrayDirective documentation to reactive forms guide
Update adev/src/content/guide/forms/reactive-forms.md

Co-authored-by: Matthieu Riegler <kyro38@gmail.com>
2025-12-02 10:36:13 +01:00
Matthieu Riegler bc93b398af docs: fix submit example
`async` keyword is required for the `submit` callback
2025-12-02 10:35:06 +01:00
Angular Robot 71b613177f build: update pnpm to v10.24.0
See associated pull request for more information.
2025-12-01 19:54:46 +01:00
SkyZeroZx aea2465a59 docs: update notes to use consistent formatting in various guides 2025-12-01 19:33:32 +01:00
Angular Robot 4e1d1ec85c docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2025-12-01 19:32:28 +01:00
Alan Agius 25bf417d57 ci: include dev-app files from pullapprove checks
At dev-app to pullaprove
2025-12-01 19:24:22 +01:00
Alan Agius 1dc8b60ea2 build: disable Angular CLI cache
This can break things in bazel
2025-12-01 19:24:22 +01:00
Shuaib Hasan Akib 3731f07579 docs: format typescript examples and replace <docs-code> with fenced code blocks
Replaced <docs-code language="typescript"  to improved
readability and consistency across documentation.
2025-12-01 19:20:19 +01:00
SkyZeroZx 4e89bc6244 feat(docs-infra): Adds copy link to anchor functionality
Enables copying a direct link to any section by clicking its anchor. Also updates the aria-label to remove the code tag
2025-12-01 19:19:31 +01:00
Angular Robot c0d8be7fa1 build: update rules_angular digest to 9409450
See associated pull request for more information.
2025-12-01 19:18:42 +01:00
til0r 721080aaa9 docs: fix npm link URL in creating-libraries guide
- Update `npm link` to the official docs URL.
- Keep `pnpm link` reference intact
2025-12-01 18:58:33 +01:00
Pratyush Swain 27d1ccb2df docs(docs-infra): update NG0910 documentation with new control flow 2025-12-01 18:53:56 +01:00
Shuaib Hasan Akib 7b33554d24 docs: link inject function to its API reference
Replaced plain code-form usage of `inject` with a link to the
API docs (`/api/core/inject`) to improve navigation and
help readers access detailed reference information more easily.
2025-12-01 18:53:04 +01:00
aparziale a850987519 docs(docs-infra): Fix Incorrect indentation
Fix Incorrect indentation in hierarchical dependency injection guide

Fix #65722
2025-12-01 18:52:17 +01:00
Shuaib Hasan Akib a464406ebf docs: update examples to use self-closing tags for consistency with recommended practices
Updated various template examples to use self-closing component tags
(e.g., `<my-comp />`) instead of the expanded form (`<my-comp></my-comp>`),
improving consistency across the documentation and aligning with current
Angular style recommendations.
2025-12-01 18:50:50 +01:00
aparziale 7a39565916 docs(docs-infra): Fix Drag handle SVG is not visible
Fix Drag handle SVG is not visible. The css style overrides the default behavior

Fixes #65545
2025-12-01 18:49:05 +01:00
SkyZeroZx 2d854e01bc docs(docs-infra): Improves symbol linking for Angular Aria selectors
Improves the symbol linking logic to handle Angular component selectors (e.g., ngCombobox). It attempts to convert Angular selector patterns to their corresponding class names, improving navigation to Angular API documentation.
2025-12-01 18:47:19 +01:00
galmi 726dfad9db docs(forms): fix links in signal forms guides and use docs-pill-row links for next steps 2025-12-01 18:46:18 +01:00
Shuaib Hasan Akib 313454bf17 fix(docs-infra): truncate long TOC items and add title tooltips
Long TOC entries now truncate with …, and a title attribute is added to display the full label on hover.

Fixes: #65727
2025-12-01 18:43:46 +01:00
Ben Hong 7ea5b66a70 docs: update aria listbox selection mode section 2025-12-01 18:41:53 +01:00
Kristiyan Kostadinov 649e2ec1d4 docs: fix up font in drag drop examples
Fixes that the CDK drag&drop examples were using a serif font.
2025-12-01 18:40:34 +01:00
aparziale f18dd5e54c docs(docs-infra): fix content projection documentation
Fixed documentation issues in content projection examples.
- Component decorator without '@'
- Self-closing tag for ng-content

Fix #65675
2025-12-01 18:38:16 +01:00
kirjs cb04cee7b2 feat(docs-infra): prevent browser save dialog in adev code editor
Add Cmd+S/Ctrl+S keyboard shortcut to the adev code editor that prevents
the annoying browser save dialog from appearing. The shortcut is a no-op
since the editor already has auto-save functionality that persists changes
after 500ms of inactivity.
2025-12-01 18:36:02 +01:00
Kristiyan Kostadinov 242d3328d8 docs: release notes for the v21.0.2 release 2025-12-01 12:52:59 +01:00
Kristiyan Kostadinov 76d097e05f docs: release notes for the v20.3.15 release 2025-12-01 12:47:59 +01:00
Kristiyan Kostadinov ee53e6ff18 docs: release notes for the v19.2.17 release 2025-12-01 12:42:03 +01:00
Alan Agius 1c6b0704fb fix(compiler): prevent XSS via SVG animation attributeName and MathML/SVG URLs
This commit implements a security fix to prevent XSS vulnerabilities where SVG animation elements (`<animate>`, `<set>`, etc.) could be used to modify the `href` or `xlink:href` attributes of other elements to `javascript:` URLs.
2025-12-01 10:26:56 +01:00
SkyZeroZx 8f3fdc3e80 docs: update code snippets in reference doocumentation 2025-11-26 16:01:14 -05:00
Matthieu Riegler c1dfd9cde6 refactor(migrations): don't migration the server bootstrapApplicaiton on zoneless apps.
With the change we specifically analyse `boostrapApplication` with a config that uses `mergeApplicationConfig`.

fixes #65408
2025-11-26 15:58:53 -05:00
Angular Robot 42e73ff9ce build: update cross-repo angular dependencies
See associated pull request for more information.
2025-11-26 15:50:56 -05:00
aparziale a3fb41e797 docs(docs-infra): fix form custom control example uses syntax
Fixed form custom control example uses non-working syntax in template

Fix #65647
2025-11-26 15:48:17 -05:00
Matthieu Riegler 1c3868198e docs(docs-infra): fix visible lines/regions
fixes #65552
2025-11-26 13:43:37 -05:00
Doug Parker 8555652460 release: bump Angular DevTools version to 1.6.1 2025-11-26 13:32:10 -05:00
Matthieu Riegler a0930e166c refactor(devtools): Use the same error message as the signal custom formatter for signal errors
When signals throw errors on read, the devtools will show the same error message as the signal custom formatter.
We also don't log errors anymore to the console as those might be surprising to see as errors and are buggy behavior of the devtools.
2025-11-26 13:11:07 -05:00
Matthieu Riegler 5b720aa2eb refactor(core): show error message on signal error
When a signal throws an error on read. The formatter will show the error message.
2025-11-26 13:11:07 -05:00
Alan Agius 71435bd59f test: update polyfills.js size in integration test reports
More info: https://angular-team.slack.com/archives/C07DT5M6V/p1764089279113199
2025-11-26 13:08:42 -05:00
Angular Robot e681c871d3 build: update all non-major dependencies
See associated pull request for more information.
2025-11-26 13:08:42 -05:00
Leon Senft add8c41e5b test(core): test bundling of dynamic component creation and bindings
Add test coverage for bundling dynamic component creation API like
`createComponent()` and `inputBinding()`. This will be used to test that
Signal Forms related features for #64632 can be tree-shaken when unused.
2025-11-26 11:57:15 -05:00
Alan Agius 04101e69ff docs: release notes for the v19.2.16 release 2025-11-26 09:08:42 +01:00
SkyZeroZx ef034c15c1 docs(docs-infra): renders inline code snippets in docs pills
Improves the rendering of `DocsPillRow` to correctly display inline code snippets (using backticks) within the pill labels.
2025-11-25 18:30:05 -05:00
kirjs 4c0ba06532 release: cut the v21.1.0-next.0 release 2025-11-25 15:25:38 -05:00
kirjs 6aaddba3e2 docs: release notes for the v20.3.14 release 2025-11-25 15:15:52 -05:00
kirjs 6b1fb02dd7 docs: release notes for the v21.0.1 release 2025-11-25 15:06:26 -05:00
Alan Agius 40790ef980 fix(http): prevent XSRF token leakage to protocol-relative URLs
The XSRF interceptor previously failed to detect protocol-relative URLs (starting with `//`) as absolute URLs. This allowed requests to such URLs to include the XSRF token, potentially leaking it to external domains.

This change updates the interceptor to correctly identify protocol-relative URLs as absolute and exclude them from receiving the XSRF token.
2025-11-25 13:47:26 -05:00
Alan Agius 400fc82c43 refactor: replace getDocument() with inject(DOCUMENT)
This replaces `getDocument()` with `inject(DOCUMENT)` across hydration and transfer state logic.
2025-11-25 13:04:58 -05:00
Kristiyan Kostadinov c994267f17 refactor: add mark for signal forms
Adds a mark for signal forms so we can track adoption. Also moves the call for `@let` into `declareLet` since we don't need it to fire as often as in `storeLet`.
2025-11-25 13:03:43 -05:00
Alan Agius 3b1fa8235b fix(core): use injected DOCUMENT for CSP_NONCE
This ensures that the right document is used and that `CSP_NONCE` can be used in `provideAppInitializer` and `provideEnvironmentInitializer`.

Closes #65624
2025-11-25 11:39:20 -05:00
AntonChesnokov 5bfa027d41 fix(compiler-cli): escape angular control flow in jsdoc
Escape @-prefixed template control flow constructs during doc extraction so JSDoc parsing keeps description text intact. Add regression coverage for @for snippets.
2025-11-25 11:33:25 -05:00
Angelo Parziale 346caefa8d docs(docs-infra): Fix anchor link DI
Fix anchor link for Dependency Injection Overview.
2025-11-25 11:05:42 -05:00
kirjs dec222d4d7 refactor(forms): Make reset take value
Now you can do form.reset({name: 'cat', age: 4});
2025-11-25 10:51:35 -05:00
Miles Malerba c70e246c23 feat(forms): add DI option for classes on Field directive
Adds a DI configuration option for signal forms that allows the
developer to specify CSS classes that should be automatically added
by the `Field` directive based on the field's status.
2025-11-25 10:33:38 -05:00
Angular Robot 076984259d build: lock file maintenance
See associated pull request for more information.
2025-11-25 10:30:45 -05:00
SkyZeroZx 67d41e9bcc docs: improve core package API documentation with additional reference links 2025-11-25 10:19:36 -05:00
Cheng-Hsuan Tsai 56e059948f docs: replace aria grid overview example 2025-11-25 10:16:57 -05:00
Leon Senft 3a1eb07c46 fix(forms): allow dynamic type bindings on signal form controls
The type checker will no longer prohibit binding the Signal Forms `[field]`
directive to an input with a dynamic `[attr.type]` or `[type]` binding.
2025-11-25 09:15:58 -05:00
Oyama Michinoku 2102bfe5aa docs: fix typo by correcting W3 to W3C 2025-11-25 09:14:00 -05:00
Hussein Mahmoud Kandil a294e3b94d docs: fix example imports and missing event URL reference
The analytics tracking example contained unused and missing imports,
and it incorrectly referenced the page's URL.
This update fixes the imports and ensures the handler uses `event.url`,
allowing the example to work correctly.
2025-11-25 07:44:06 -05:00
Andrew Scott 51ebe9a4fc refactor(core): Remove toggles used for zoneless by default migration
this migration is complete both internally and externally
2025-11-24 16:57:49 -05:00
Kristiyan Kostadinov ca6ab6c914 fix(core): debug data causing memory leak for root effects
We track all effects that are created for debugging purposes in the `resolverToEffects` map. This ends up leaking memory for effects registered on long-living resolvers (e.g. on the root injector), because they stay in the array, even if the effect itself has been destroyed.

These changes add a callback to clean up the references.

Fixes #65265.
2025-11-24 15:26:09 -05:00
Leon Senft f97a1d4856 refactor(forms): support custom control directives
Support binding `[field]` to directives that implement
`FormValueControl` or `FormCheckboxControl`.

The `[field]` binds to whichever directive (or component) matches first in the
event there are multiple implementations. We are considering whether to make
this an error state, which could be reported during type checking.

Closes #63910, Closes #64992
2025-11-24 13:48:17 -05:00
Ben Hong d442c72f87 docs: standardize aria code examples to not use component suffix 2025-11-24 13:28:33 -05:00
Matthieu Riegler b34e48bdff docs: add callout on zone base testing helpers
With zoneless being the default, we need to make these requirements more explicit.

fixes #65539
2025-11-24 13:27:46 -05:00
Joey Perrott 046501fd33 refactor(docs-infra): make docs-alert an inline token
Migrate docs-alert to be inline instead of block, this ensures that the content is placed within a <p> tag as expected. This is important
for ensuring that the iconography is placed correctly within the wrapper div generated for the alert. Additionally, we refactor the matcher
code to be more efficient, running with fewer loops.
2025-11-24 13:25:59 -05:00
Matthieu Riegler 98ceb0a80d ci: update pullapprove reviewers
Removing Minko from the pool of automatically picked reviewers
2025-11-24 13:25:26 -05:00
SkyZeroZx 2ac826867b docs: Update router docs to add references and components input fixed syntaxis 2025-11-24 13:18:28 -05:00
Alessio Pelliccione 7d20f2071c docs(docs-infra): fix missing syntax highlighting
closed angular#65565
2025-11-24 13:13:22 -05:00
Shuaib Hasan Akib 93cff501e9 refactor(common): remove redundant standalone: true as it is default now
-removing `standalone: true` from integration
- removed whitespace
2025-11-24 13:12:15 -05:00
Kristiyan Kostadinov 6b8720de91 fix(compiler-cli): do not type check native controls with ControlValueAccessor
Currently when we detect a `field` binding on a native element, we treat it as a built-in native control. This might not be the case if it's a pre-existing `ControlValueAccessor` relying on the CVA interop.

These changes try to detect any CVA-like directive on the element and disable the additional type checking if there are any.

Fixes #65468.
2025-11-24 13:08:42 -05:00
Kristiyan Kostadinov 5cfdd7897b refactor(compiler-cli): track public methods during analysis
Updates the directive analysis to track the public methods of the class.
2025-11-24 13:08:42 -05:00
Tomer953 a4f50bdd54 fix(migrations): detect structural ngTemplateOutlet and ngComponentOutlet
the common-to-standalone migration only matched [ngTemplateOutlet] and
[ngComponentOutlet] bindings and missed their structural forms
(*ngTemplateOutlet and *ngComponentOutlet). This caused missing imports
when removing CommonModule. This change adds structural directive
patterns so the migration correctly identifies needed imports.
2025-11-24 12:40:57 -05:00
Shuaib Hasan Akib b26fe73a91 docs(docs-infra): keep 'Show code' button aligned right and prevent metadata wrapping
Ensures the example viewer header displays correctly by keeping the "Show code"
button aligned to the right and preventing metadata text from wrapping.
Improves layout consistency across documentation examples.
2025-11-24 12:23:36 -05:00
Matthieu Riegler 9dd7cc13ca ci: adding myself as optional to the compiler scope
For whenever I feel confortable approving compiler PRs like diagnostics
2025-11-24 12:18:26 -05:00
Alan Agius c843a46912 build: update release script to support changelog cherry-picking
This commit updates the release script to support cherry-picking changelog updates to the main branch when releasing from a patch branch. It also introduces a marker in the changelog to separate releases and ensures the GitHub release uses the formatted changelog from disk.
2025-11-24 12:17:20 -05:00
hawkgs 0f4b11c293 refactor(compiler-cli): add a resource debugName transform (#64172)
Add a TS transform for `resource` (and `httpResource`) `debugName`. Test the transformations.

PR Close #64172
2025-11-24 11:30:12 -05:00
hawkgs 3ae452e64f refactor(core): add debug name to resource (#64172)
Decorate `resource` (and `httpResource`) with `debugName`, along with all of its internal signals.

PR Close #64172
2025-11-24 11:30:12 -05:00
Matthieu Riegler b5ae62c02b docs: update devtools guide
- splits the injector inspector into its own guide
- update the screenshots
- add defer block section
- add hydration section
2025-11-24 11:11:26 -05:00
NicoPolazzi 325ab18084 docs: correct signals tutorial inconsistencies in chapters 6-10 2025-11-24 11:08:27 -05:00
Shuaib Hasan Akib 0203dad09b docs: html examples and replace <docs-code> with fenced code blocks
Replaced <docs-code language="html" with fenced html for improved readability and consistency across documentation.
2025-11-24 10:38:32 -05:00
Matthieu Riegler 119c6ddaeb docs(docs-infra): simplify tab selection
Tab selection relied on the tabs being visible whe nthe example is loaded. That didn't work when `hideCode` was used.

fixes #65550
2025-11-24 10:24:39 -05:00
HyperLife1119 b6b6fae483 docs: fix order of render phases in lifecycle documentation 2025-11-24 10:22:28 -05:00
Shuaib Hasan Akib 8f89507a0b docs: fix internal links showing as external
Replace absolute URLs (https://angular.dev/...) with relative URLs
(/...) to prevent internal documentation links from being treated
as external links and opening in new tabs.
2025-11-24 10:21:38 -05:00
Kristiyan Kostadinov 26e2092dd1 test: remove unnecessary test calls
Removes calls to `TestBed.configureTestingModule` since they aren't necessary.
2025-11-24 10:18:18 -05:00
Shuaib Hasan Akib 16a0b7dfdb fix(docs-infra): update deprecated API link to use correct status value
Replaced `status=deprecated` with the correct numeric value `status=8`
to ensure the Deprecated APIs link resolves properly in the docs.
2025-11-24 10:17:32 -05:00
Yahya-Almubarak e501b7e445 docs: fix typo in tutorial 2025-11-24 10:15:01 -05:00
Alan Agius f7f9707508 build: run e2e in sandbox
Updates the E2E test configuration to run within the Bazel sandbox.
2025-11-24 10:03:00 -05:00
Angular Robot 5961e96196 build: update all github actions
See associated pull request for more information.
2025-11-24 09:35:45 -05:00
Angular Robot 50259f02f3 build: update pnpm to v10.23.0
See associated pull request for more information.
2025-11-24 09:35:06 -05:00
Alan Agius b28570b227 docs: update ng serve builder to @angular/build:dev-server and detail proxy path matching behavior.
Closes #53652
2025-11-24 09:33:24 -05:00
Matthieu Riegler 48a05dd38c docs: fix v21 event header image
fixes #65572
2025-11-24 09:08:19 -05:00
Hussein Mahmoud Kandil 72b1f7fd43 docs: fix router event subscription in error handler example
The example incorrectly persisted the error message after a successful
navigation retry because the stream only emitted NavigationError events.
This update removes the filter and returns an empty string for non-error
events, allowing the signal to clear the message on normal navigation.
2025-11-22 09:10:54 -05:00
SkyZeroZx 38a354ffa2 docs: Adds signal type checking documentation 2025-11-21 16:31:13 -05:00
Matthieu Riegler b6fee3f107 fix(core): apply bootstrap-options migration to platformBrowserDynamic
The migration wasn't applied to projects relying on `platformBrowserDynamic()` prior to this fix.
2025-11-21 16:28:20 -05:00
Shuaib Hasan Akib f884c181b3 docs: format JSON examples and replace <docs-code> with fenced code blocks
Replaced <docs-code language="json" for improved
readability and consistency across documentation.
2025-11-21 16:23:52 -05:00
Shuaib Hasan Akib 68aa83e8cf docs: format JSON examples and replace <docs-code> with fenced code blocks
Replaced <docs-code language="json" header=".postcssrc.json"> with fenced
JSON code blocks using ```json {header: '.postcssrc.json'} for improved
readability and consistency across documentation.
2025-11-21 15:48:42 -05:00
Matthieu Riegler 67d3c2529f refactor(devtools): don't query defer nodes
This prevents from throwing errors when selecting defer nodes
2025-11-21 15:42:54 -05:00
cexbrayat 88546ab127 docs: consistent casing for onpush zoneless migration MCP tool name
The tool has been renamed in the CLI for consistency https://github.com/angular/angular-cli/pull/31866
2025-11-21 13:25:59 -05:00
SkyZeroZx 46269be842 feat(docs-infra): add docs-image extension for enhanced image handling in markdown
Extends the Markdown parser to support `loading`, `decoding`, and `fetchpriority` attributes for images via curly brace syntax.
2025-11-21 13:24:59 -05:00
Shuaib Hasan Akib 6f1329f34a docs: format example code blocks for consistency and readability 2025-11-21 13:24:23 -05:00
Joey Perrott f61e61ac4f refactor(docs-infra): remove the multiple code example view modes
Rather than using multiple view modes for code examples, we can just treat the previous snippet mode as
as multifile mode that just only has one file in it.
2025-11-21 13:22:00 -05:00
Joey Perrott 88753d6a5a refactor(docs-infra): improve code efficiency for adding line numbers
Only run the code for adding line numbers if line numbers are required, otherwise skip the code block
2025-11-21 13:20:46 -05:00
Joey Perrott a873c4eb1a refactor(docs-infra): remove the unnecessary whitespace using shiki
Use a transformer within shiki to remove the unnecessary whitespace between code lines
2025-11-21 13:20:46 -05:00
Joey Perrott 8ec0a4ee5c refactor(docs-infra): drop support for providing a file diff in docs-code
Drop support for exposing a diff view in the docs-code element as it is unused and costly to even check for
2025-11-21 13:20:46 -05:00
Joey Perrott fee79e37d5 refactor(docs-infra): use shiki for highlighting
Use shiki to perform highlighting instead of a postprocessing action
2025-11-21 13:20:46 -05:00
Joey Perrott a8f46e598a fix(docs-infra): link to the snippet location at the proper commit for examples
Within examples, we now link to the github URL using the commit that was made to create adev, rather than
always on main, which may change over time.
2025-11-21 13:19:53 -05:00
Shuaib Hasan Akib 9565938534 docs: format example code blocks for consistency and readability and keep only file name in header 2025-11-21 13:17:17 -05:00
Shuaib Hasan Akib 34fa11ec9d docs: clarify strictInputAccessModifiers applies to both input types
Update the strictInputAccessModifiers documentation to clarify that:
- The flag applies to both @Input() decorator and input() signal-based inputs
- The checking only applies to inputs, not outputs
- format interface with fenced block

Fixes docs part of #65243
2025-11-21 13:16:08 -05:00
SkyZeroZx 1672493d1a docs(docs-infra): update syntax highlighting for inline templates in decorators
Updates syntax highlighting rules to properly handle inline templates defined within decorators, improving readability and consistency in code examples
2025-11-21 13:14:53 -05:00
Shuaib Hasan Akib aafc8e75a1 docs: Indented the <docs-code> blocks inside numbered list items to ensure correct Markdown rendering and prevent the steps from breaking visually.
- Remove path from header
2025-11-21 13:14:10 -05:00
Angular Robot 364ea11e9d build: update bazel dependencies
See associated pull request for more information.
2025-11-21 13:12:04 -05:00
Ben Hong 8f346ad070 docs: move aria tabs into content organization category 2025-11-21 12:25:36 -05:00
voi99 5685e3879c docs(forms): update error class to error-list in signal forms example 2025-11-21 12:23:49 -05:00
Shuaib Hasan Akib f825547353 docs: remove unnecessary standalone: true from examples
Standalone components are now the default, so explicitly specifying
`standalone: true` is no longer required. Updated relevant documentation
examples to avoid redundant configuration and keep the guides concise.
2025-11-21 12:23:27 -05:00
Angular Robot 200c9d94ff build: update all github actions to v6
See associated pull request for more information.
2025-11-21 12:23:04 -05:00
Alan Agius 74405c7e7a build: automate GitHub release creation for vscode extension
Update the release script to automatically create a GitHub release and upload the VSIX asset.

Example release: https://github.com/angular/angular/releases/tag/vsix-21.0.0
2025-11-21 12:22:20 -05:00
Syam Gadde 1628125bcb fix(compiler-cli): ignore non-existent files
Ignore files that fail fs.exists() rather than throw ENOENT.  Some applications deliberately create "broken" symbolic links that are not relevant to compilation (e.g. emacs lock files that link to owner "user@host").
2025-11-21 11:38:57 -05:00
Shuaib Hasan Akib 68f5ceeb46 docs: fix incorrect Signal Forms link
Updated outdated link guide/forms/signal-forms/ to the correct path guide/forms/signals/ to ensure proper navigation.

Fixes: #65461 #65462
2025-11-21 10:55:52 -05:00
Ben Hong b7d91a796b docs: iterate on signal forms essentials guide 2025-11-21 10:48:01 -05:00
Shuaib Hasan Akib cea19803d8 docs: add missing ARIA patterns and API reference
Adds the missing ARIA usage patterns and links to the relevant API reference
sections to improve accessibility guidance and ensure examples follow recommended
best practices.
2025-11-21 10:18:36 -05:00
Alessio Pelliccione 2ddf26e699 refactor(docs-infra): automate algolia index name based on package version
Previously, the Algolia index name was hardcoded in the configuration, requiring manual updates for every new major release branch.

This commit automates the index name selection by deriving the version directly @angular/core. It dynamically assigns:
- `angular_next_dev` for pre-releases (`-next`, `-rc`) and local snapshots (`0.0.0`).
- `angular_vXX` (e.g., `angular_v19`) for stable releases.
2025-11-20 19:21:32 -05:00
SkyZeroZx 889afe9aa2 docs: updates code block language tags in signal forms 2025-11-20 19:20:30 -05:00
Raxabi ee57b0f2fa docs: Fix missing single quote in the first navigateByUrl example. 2025-11-20 19:19:43 -05:00
marktechson c4722820e7 docs: fix update guide typo
The update from 20 to 21 featured the wrong number, this fixes that
2025-11-20 19:19:17 -05:00
Andrew Scott 1ab461c846 refactor(router): Store route injector on ActivatedRoute instance
This eliminates the need to pass around the EnvironmentInjector
everywhere we need the injection context for a route.
2025-11-20 17:05:10 -05:00
Andrew Scott c25d749d85 feat(router): Execute RunGuardsAndResolvers function in injection context
Allows more sophisticated checks based on information available in DI
(e.g. the router state). Use-cases have been described in #53944 / https://github.com/angular/angular/issues/31843#issuecomment-1890955590

resolves #53944
2025-11-20 17:05:10 -05:00
Alan Agius 1a094ddb2b ci: try to resolve vscode extension e2e flakes
Update e2e test runner to VS Code 1.102.0, streamline test activation, and manage temporary directories via `TEST_TMPDIR`.
2025-11-20 17:03:15 -05:00
Doug Parker 2ecdb221d3 docs: correct v21 LTS end date and v20 active end date
Updated to align the v20 active end date with the v21 release date and fix the v21 LTS to be 1-year after the active period ends.
2025-11-20 16:47:27 -05:00
Johannes Hoppe 11da7a65c0 docs(core): remove outdated regex template restriction in best-practices.md
Regular expressions in templates are now supported as of Angular 21.
2025-11-20 16:42:52 -05:00
Charles Lyding 396c25ef5a docs: prioritize ng add for Tailwind CSS and clarify manual steps
This commit updates the Tailwind CSS integration guide (`adev/src/content/guide/tailwind.md`) to introduce `ng add tailwindcss` as the primary, automated method for integrating Tailwind CSS.
2025-11-20 15:00:24 -05:00
Angular Robot 5ddeafced7 docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2025-11-20 14:27:51 -05:00
Devin Chasanoff b8fa9cc7d5 docs: add v21 event game 2025-11-20 13:27:46 -05:00
Ben Hong be6f2f066f docs: consolidate patterns and iterate on conclusion for angular aria overview 2025-11-20 12:38:19 -05:00
JoostK 913cde8ab4 refactor(core): let the profiler handle asymmetric events leniently
Although the prior commit has made more profiler events guaranteed symmetric
through the use of finally-blocks, there continue to be some situations
that could potentially result in asymmetric events, e.g. application
bootstrap doesn't guarantee symmetric events. This commit makes the profiler
lenient to these situations by unrolling the stack past the asymmetric event
data, eventually reaching the expected start event.
2025-11-20 12:29:59 -05:00
JoostK 3760045e3e fix(core): notify profiler events in case of errors
Profiler events are expected to be symmetric, yet in the case of errors this symmetry may break
if events aren't always kept in sync with their corresponding start event. This commit moves
various end events to be run from a finally-block, allowing them to notify the profiler even
when an error has occurred.

Fixes #62947
2025-11-20 12:29:59 -05:00
kirjs bea7358225 docs: remove unnecessary @ts-ignore from signal forms playground
The @ts-ignore comment is no longer needed as the module resolution
issue has been fixed in the playground editor configuration.
2025-11-20 12:26:21 -05:00
marktechson 183d194025 docs: add 20 to 21 update guide 2025-11-20 11:46:46 -05:00
Wagner Maciel 29185a864f docs: fix standlone menu overlay 2025-11-20 11:20:37 -05:00
David Kingma 0812ac3bec refactor(core): add debugName option to rxjs-interop toSignal
toSignal predates the debugName option for signals to name the signals in the Angular dev-tools This adds the debugName option to toSignal.
2025-11-20 10:49:50 -05:00
Charles Lyding 80202bffee docs: add note about Karma/Jasmine examples in testing services guide
This guide currently contains Karma/Jasmine specific code examples.
Adding a note to inform readers that Vitest equivalents are being worked on.
2025-11-20 10:47:34 -05:00
Alessio Pelliccione 42c05650ff fix(docs-infra): prevent icons from being translated in aria guide
This commit adds the `translate="no"` attribute to the icon elements to ensure they are preserved in their original form and not modified by translation tools.

Closes #65406
2025-11-20 10:47:12 -05:00
Ben Hong fc2e414262 docs: add signal forms custom controls guide
Co-authored-by: Leon Senft <leonsenft@users.noreply.github.com>

docs: add signal forms custom controls guide
2025-11-20 10:34:58 -05:00
marktechson 890414245f docs: adds a link to the signal forms example 2025-11-19 16:41:02 -08:00
Charles e77fb1fb14 docs: separate Zone.js-specific testing utilities into new guide
This commit moves documentation for Zone.js-dependent testing utilities
(`waitForAsync`, `fakeAsync`, `tick`, `discardPeriodicTasks`, `flushMicrotasks`)
from `testing/utility-apis.md` to a new dedicated guide:
`testing/zone-js-testing-utilities.md`.
2025-11-19 16:40:35 -08:00
tsc036 34e1fe235f refactor(core): export profile event as enum and move profile_types.ts and framework to shared devtools folder
move framework enum and profile_types to a shared folder so it can be used by wiz
2025-11-19 15:22:49 -08:00
Angular Robot 4c31f8ebf4 build: update cross-repo angular dependencies
See associated pull request for more information.
2025-11-19 15:00:49 -08:00
Ben Hong 38f4ea1ea8 docs: add signal forms validation guide 2025-11-19 14:53:01 -08:00
Ben Hong 4771dc9cf7 docs: add redirect for angular overview 2025-11-19 14:52:39 -08:00
SkyZeroZx e9ba63a4c1 docs: Adds documentation for generic type argument to SimpleChanges 2025-11-19 14:31:53 -08:00
Joey Perrott 0bb09dc5ba build: update to latest ng-dev tooling for caretaker handoff update
Update to the latest tooling to upate how caretaker handoff is handled, using new standardized groupings
2025-11-19 14:30:17 -08:00
Shuaib Hasan Akib c7affdfbc9 refactor(common): update examples to align with Angular best practices
Updated examples to use the standalone component approach and the latest
2025-11-19 14:29:49 -08:00
Kristiyan Kostadinov 5e6d8573f4 perf(core): avoid repeat searches for field directive
The `getControlDirective` is called multiple times, both at init and during each update run. Under the hood it performs a linear search for the `Field` directive.

We can speed this up by finding its index once and reusing it since the array of directive matches is static.
2025-11-19 14:28:56 -08:00
Kristiyan Kostadinov 81ce1ba1d9 refactor(compiler): remove interpolation-related symbols
We removed the ability to customize the interpolation some time ago. These changes remove the remaining code related to them.
2025-11-19 14:28:20 -08:00
Kristiyan Kostadinov b6c141bf8b refactor(compiler): remove container blocks config
Removes the ability to specify container blocks when creating an i18n parser. We were only passing in `switch` and it likely won't change.
2025-11-19 14:28:20 -08:00
Miles Malerba 7ddf4a6b07 fix(forms): run reset as untracked
Run the signal forms `reset()` as untracked so it does not trigger
`effect` to rerun when the model changes

Fixes https://github.com/angular/angular/issues/65322
2025-11-19 14:27:52 -08:00
Alan Agius 22ad71d752 refactor: improve release process instructions and vsce login handling
This commit introduces several improvements to the release process:

- Adds a clear warning and instructions to test the extension before merging the release PR
- Removes the explicit `vsce login` command.
2025-11-19 14:22:46 -08:00
Cheng-Hsuan Tsai d2fe8674f1 docs: update aria overview page 2025-11-19 14:11:20 -08:00
Alessio Pelliccione 7e5fca2608 docs: add style binding example to style guide
Adds a parallel example for style bindings alongside the existing class binding example, demonstrating the preferred syntax of [style.property] and [style] over [ngStyle] directive.
2025-11-19 14:09:46 -08:00
Joey Perrott 2013261243 docs: add version 21 to update guide page 2025-11-19 14:08:07 -08:00
Georgi Serev 0a33a18fa4 docs(docs-infra): fix code editor file creation and renaming
Hide the field when the user unfocuses from it; Fill the input with the file name when renaming; Fix file path renaming
2025-11-19 14:07:30 -08:00
Ben Hong 2ead438634 docs: add signal forms field state management guide 2025-11-19 14:07:03 -08:00
Ben Hong fb32a5bafa docs: improve instruction for import in signal forms tutorial 2025-11-19 14:06:11 -08:00
Ben Hong d352484773 docs: add signal forms tutorial 2025-11-19 14:06:11 -08:00
Angular Robot ca18d8e967 docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2025-11-19 14:04:38 -08:00
Devin Chasanoff c2317949a8 docs: add release blog to v21 page 2025-11-19 14:34:40 -07:00
Joey Perrott 1b4d1f88dc docs: link to v21 blog post in changelog 2025-11-19 14:34:15 -07:00
Jessica Janiuk 11ea1a01ff build: bump core zone.js version
this bumps the core dep on zone.js to 0.16.0.
2025-11-19 13:22:14 -08:00
Joey Perrott c03883ec54 build: provide a specific version of zone.js for the vscode pre standalone test
Use zone.js 0.15.0 specifically instead of moving to a later verison of zone.js for the test
2025-11-19 13:07:43 -08:00
Jessica Janiuk 58014cb01a release: cut the zone.js-0.16.0 release 2025-11-19 12:38:52 -08:00
Jessica Janiuk d42d7523ec build: bump adev version
Bump adev versions for v21 release
2025-11-19 12:09:26 -08:00
Joey Perrott 9a663a28f9 release: bump version of in memory web api 2025-11-19 12:05:51 -08:00
Jessica Janiuk 4c6b4d76a0 docs: release notes for the v21.0.0 release 2025-11-19 10:10:14 -08:00
Jessica Janiuk eb2f6653c9 docs: release notes for the v20.3.13 release 2025-11-19 09:43:03 -08:00
Joey Perrott a51ba9c7a9 docs: update the actively supported versions
Update the actively supported versions table
2025-11-19 08:47:48 -08:00
Wagner Maciel 3e31a9967e docs: fix menubar overlay bug 2025-11-19 08:45:37 -08:00
kirjs 040af1aaa1 fix(docs-infra): add moduleResolution to TypeScript compiler options for playground
This fixes signal forms, but idk if it breas other things
2025-11-19 08:26:17 -08:00
Cheng-Hsuan Tsai 1289371474 docs: aria grid replace overview example with a playful one 2025-11-19 08:18:56 -08:00
Angular Robot 56b40d835f build: update dependency @inquirer/prompts to v8
See associated pull request for more information.
2025-11-19 08:14:42 -08:00
Angular Robot 52d05f9be9 build: update all github actions
See associated pull request for more information.
2025-11-19 08:13:22 -08:00
Ben Hong d3ea7cbcc9 docs: update aria component api links 2025-11-19 08:12:51 -08:00
Angular Robot 634bfec66c build: update bazel dependencies
See associated pull request for more information.
2025-11-19 08:11:01 -08:00
Aristeidis Bampakos 0e1ddce1cb fix(docs-infra): add install in pnpm
Add missing install option in pnpm command.
2025-11-19 08:10:09 -08:00
Ben Hong 90bd469ac3 docs: iterate on signal forms essential guide 2025-11-19 08:09:04 -08:00
Ben Hong 758cd113b3 docs: remove redundant labels on aria since section is marked new 2025-11-19 08:08:26 -08:00
Andrew Scott 2cbe9425bf docs: bump VSCode extension version to 21.0.0
cherrypick notes into main (and version bump)
2025-11-19 08:05:48 -08:00
Angular Robot ce98cc7dea build: update dependency @codemirror/view to v6.38.8
See associated pull request for more information.
2025-11-19 08:04:52 -08:00
Ben Hong e0eb619c03 docs: add signal forms playground template 2025-11-19 08:03:53 -08:00
Devin Chasanoff 3810422521 docs: add v21 banner 2025-11-19 08:02:14 -08:00
Joey Perrott 35125c6116 build: force angular cli to run in non-TTY mode for adev and devapp
Force adev and devapp to run in non-TTY mode so it doesn't create a prompt that can't be interacted with. This will initially have no effect,
but the fix is expected to land in CLI to make this work as expected in the next few days.
2025-11-19 08:00:40 -08:00
Ben Hong 7a910e66d4 docs: add signal forms comparison guide 2025-11-18 17:01:39 -08:00
Matthieu Riegler c7424c8f07 docs: fix docs heading alignment 2025-11-18 17:00:24 -08:00
Ben Hong 47eb77ffb1 docs: update angular aria guides structure, subnav menu, and examples 2025-11-18 15:29:47 -08:00
Angular Robot 7e9f1cc8d8 build: update cross-repo angular dependencies
See associated pull request for more information.
2025-11-18 15:28:38 -08:00
Wagner Maciel 114c83ed8b docs: aria combobox examples 2025-11-18 14:55:54 -08:00
Wagner Maciel 695f4df912 docs: aria menubar examples 2025-11-18 14:55:54 -08:00
Wagner Maciel 1963bd67cc docs: aria menu examples 2025-11-18 14:55:54 -08:00
Wagner Maciel 04859b41a2 docs: aria tabs examples 2025-11-18 14:55:54 -08:00
Wagner Maciel b2080c8fb0 docs: aria autocomplete examples 2025-11-18 14:55:54 -08:00
Andrew Seguin d4595791d6 docs: hide temporary prerender tabs and multifile docs sections 2025-11-18 14:54:48 -08:00
Amy Sorto 111a7644ef docs: update overview page 2025-11-18 14:54:08 -08:00
Shuaib Hasan Akib 27fa993fb8 docs: format examples with replacing <docs-code> typescript examples with fenced ts code blocks
Update adev/src/content/reference/migrations/cleanup-unused-imports.md

Co-authored-by: Alan Agius <alan.agius4@gmail.com>

Update adev/src/content/reference/extended-diagnostics/NG8102.md

Co-authored-by: Alan Agius <alan.agius4@gmail.com>

Update adev/src/content/reference/extended-diagnostics/NG8103.md

Co-authored-by: Alan Agius <alan.agius4@gmail.com>

Update adev/src/content/reference/extended-diagnostics/NG8103.md

Co-authored-by: Alan Agius <alan.agius4@gmail.com>

Update adev/src/content/reference/extended-diagnostics/NG8103.md

Co-authored-by: Alan Agius <alan.agius4@gmail.com>

Update adev/src/content/reference/migrations/cleanup-unused-imports.md

Co-authored-by: Alan Agius <alan.agius4@gmail.com>

Update adev/src/content/reference/migrations/cleanup-unused-imports.md

Co-authored-by: Alan Agius <alan.agius4@gmail.com>
2025-11-18 14:11:23 -08:00
Cheng-Hsuan Tsai 24814ce43e docs: add aria tree examples and disable text selection 2025-11-18 14:10:34 -08:00
Angular Robot ceb2d7166b build: update cross-repo angular dependencies
See associated pull request for more information.
2025-11-18 11:19:53 -08:00
Cheng-Hsuan Tsai d0877a524a docs: add aria grid examples 2025-11-18 11:14:53 -08:00
Cheng-Hsuan Tsai c639f84347 docs: add aria accordion examples 2025-11-18 11:14:27 -08:00
Cheng-Hsuan Tsai 41e9c7b4bf docs: add aria tree examples 2025-11-18 11:13:52 -08:00
Nicolò Polazzi 661a554b8d docs: correct inconsistencies in signals tutorial 2025-11-18 11:11:26 -08:00
SkyZeroZx ed0647d2e6 refactor(devtools): add matcher and runGuardsAndResolvers support in router viewer
Enhance the Angular DevTools router viewer to display routes that use custom `matcher` functions and reflect the `runGuardsAndResolvers` configuration
2025-11-18 08:29:41 -08:00
Angular Robot f799fc89f4 build: lock file maintenance
See associated pull request for more information.
2025-11-18 08:17:39 -08:00
Shuaib Hasan Akib 374c36d810 docs: simplify docs-code header by removing paths and keeping only file name and info 2025-11-18 08:15:41 -08:00
Shuaib Hasan Akib 0182939d5e docs: replace legacy <docs-code> with fenced code blocks with highlight metadata
Replaced older <docs-code> components (e.g.
<docs-code language="ts" highlight="3">…</docs-code>)
with modern fenced code blocks using {highlight:[3]} metadata
2025-11-18 08:15:02 -08:00
Devin Chasanoff 631035a2e0 docs: add AI tutor instructions 2025-11-18 08:14:33 -08:00
Angular Robot 6178e3ebfb build: update cross-repo angular dependencies
See associated pull request for more information.
2025-11-17 16:34:41 -08:00
Angular Robot 8187833d1b build: update cross-repo angular dependencies to v21.0.0-rc.3
See associated pull request for more information.
2025-11-17 15:18:27 -08:00
SkyZeroZx c93d02151a docs: replace @HostListener with host event bindings in attribute directives 2025-11-17 15:09:11 -08:00
ljasek 6d35ab8c28 docs: fix JetBrains AI Assistant MCP JSON configuration 2025-11-17 15:08:15 -08:00
hawkgs e7a6e31a70 fix(devtools): refine when signal graph button is shown
Show the signal graph button only when a signal-graph-eligible node from the directive explorer is selected; Fix client app error when a `defer` node is selected (related)
2025-11-17 14:45:01 -08:00
aparziale c757fd6c29 docs(docs-infra): add advanced recommendations
Added recommendation in advanced section for redirectTo and canMatch will generate an error. These properties are incompatible together

fixes #65267
2025-11-17 14:40:08 -08:00
Paul Leflon f13159f811 docs: fix markdown table in custom elements guide 2025-11-17 14:33:32 -08:00
Angelo Parziale 7a2d5116f2 refactor: convert docs-code blocks to inline TypeScript documentation
This PR converts the custom <docs-code> blocks to standard Markdown code blocks with TypeScript syntax highlighting.
2025-11-17 14:33:00 -08:00
Jessica Janiuk cbd77b9db8 docs: release notes for the v21.0.0-rc.3 release 2025-11-17 13:40:42 -08:00
Angular Robot 3661ae199c build: update cross-repo angular dependencies
See associated pull request for more information.
2025-11-17 11:46:57 -08:00
Cheng-Hsuan Tsai d104acb286 docs(docs-infra): fix broken code tabs
When `<mat-tab-group>` is conditionally removed by `@if` it loses the
`<mat-tab>` projected content somehow.
2025-11-17 11:45:19 -08:00
Joey Perrott 7e70682f2b docs: update examples to latest Angular
Updates the adev examples to use Angular 21.0.0-rc.2
2025-11-17 11:17:58 -08:00
Joey Perrott 25546f6152 Revert "ci: remove cache usage from pr.yml"
This reverts commit 3760feb5ec.
2025-11-17 11:08:54 -08:00
Joey Perrott cf07486532 ci: remove cache usage from ci.yml
Remove the @actions/cache usages from ci.yml
2025-11-17 11:08:54 -08:00
Angular Robot a6968ed0ca build: update cross-repo angular dependencies
See associated pull request for more information.
2025-11-17 10:58:10 -08:00
Angular Robot e1c26a2e72 docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2025-11-17 10:57:19 -08:00
Wagner Maciel cb481a549b docs: aria listbox examples (#65273)
PR Close #65273
2025-11-17 18:39:00 +00:00
Wagner Maciel 047b2659b1 docs: multiselect examples (#65273)
PR Close #65273
2025-11-17 18:39:00 +00:00
Wagner Maciel e709d1fd46 docs: aria select skins (#65273)
docs: select examples

PR Close #65273
2025-11-17 18:38:59 +00:00
Wagner Maciel ed686a0f4d docs: aria toolbar examples (#65273)
docs: aria toolbar retro example

docs: aria toolbar material example

docs: organize aria toolbar examples

docs: vertical examples

docs: final aria toolbar examples

docs: wip aria toolbar docs

PR Close #65273
2025-11-17 18:38:59 +00:00
Ben Hong 9b87689558 docs: add aria menubar component guide 2025-11-17 10:38:25 -08:00
Jessica Janiuk b2171c6c14 Revert "docs: replace legacy <docs-code> with fenced code blocks with highlight metadata"
This reverts commit c5c1689348.
2025-11-17 10:36:55 -08:00
Jessica Janiuk 88dfd96ec9 Revert "refactor(core): let the profiler handle asymmetric events leniently"
This reverts commit da9911f2b4.
2025-11-17 10:10:36 -08:00
Jessica Janiuk adc2a57be0 Revert "fix(core): notify profiler events in case of errors"
This reverts commit af1ba52587.
2025-11-17 10:10:36 -08:00
Matthew Beck 9e7ddcaa10 fix(compiler): don't choke on unbalanced parens in declaration block
Following https://github.com/angular/angular/pull/64509 we started
choking on unbalanced closing parentheses in declaration blocks,
specifically in quoted background-image urls. This was reported in
https://github.com/angular/angular/issues/65137.

This occured because we previously (and now again) traverse the entire
declaration block when selecting for :host-context() selectors to shim.
This is an oddity of how we parse styles today, and is likely something
we'd want to remove if we parsed selectors properly.

This change adds a new flag to _splitOnTopLevelCommas which allows it to
continue past unbalanced closing parentheses in the declaration block,
returning _convertColonHostContext to its previous behavior while
keeping support for the extra nesting in :host-context().
2025-11-17 09:46:01 -08:00
Matthieu Riegler c15836c8c7 refactor(core): promote the custom track profiler to stable.
We didn't get much report on the feature itself so we feel confident about promoting it to stable. In parallel we'll also land #62959 but one is not blocking the other.

fixes #64996
2025-11-17 09:42:32 -08:00
Matthieu Riegler b41a94bc85 fix(forms): Set error message of a schema error.
Use the error message of the issue as the error message of the error itself.

fixes #65247
2025-11-17 09:41:54 -08:00
Miles Malerba f47637426f refactor(forms): avoid console warnings when setting NaN
It can be useful for a developer to set `NaN` as the value for a number
input, as a way to say "clear the input". However, directly setting this
value to the `.valueAsNumber` causes a console warning. This PR fixes
the console warning by just doing `.value = ''` when we would otherwise
to `.valueAsNumber = NaN`
2025-11-17 09:41:29 -08:00
Leon Senft c727df5d38 refactor(forms): reduce boilerplate needed to define custom controls
An early piece of feedback received regarding custom controls hosted on
native inputs was that they required a lot of boilerplate to bind
`FieldState` properties. Each property required an input to accept the
property, and a host binding to forward it to the native control.
2025-11-17 09:40:58 -08:00
JoostK da9911f2b4 refactor(core): let the profiler handle asymmetric events leniently
Although the prior commit has made more profiler events guaranteed symmetric
through the use of finally-blocks, there continue to be some situations
that could potentially result in asymmetric events, e.g. application
bootstrap doesn't guarantee symmetric events. This commit makes the profiler
lenient to these situations by unrolling the stack past the asymmetric event
data, eventually reaching the expected start event.
2025-11-17 09:40:04 -08:00
JoostK af1ba52587 fix(core): notify profiler events in case of errors
Profiler events are expected to be symmetric, yet in the case of errors this symmetry may break
if events aren't always kept in sync with their corresponding start event. This commit moves
various end events to be run from a finally-block, allowing them to notify the profiler even
when an error has occurred.

Fixes #62947
2025-11-17 09:40:04 -08:00
Joey Perrott 3760feb5ec ci: remove cache usage from pr.yml
Remove the @actions/cache usages from pr.yml
2025-11-17 09:29:49 -08:00
Cheng-Hsuan Tsai 4dc226231c docs(docs-infra): aria attribute typo 2025-11-17 09:29:26 -08:00
Cheng-Hsuan Tsai 35d8654a02 docs: add aria grid basic examples: pill list, calendar, and table 2025-11-17 09:29:03 -08:00
Shuaib Hasan Akib dff9d12bc3 docs: replace <docs-code> shell examples with fenced shell code blocks
Updated shell command examples to use fenced code blocks (```shell) instead of <docs-code> components, improving formatting consistency and aligning with current documentation standards.
2025-11-17 09:28:40 -08:00
Cheng-Hsuan Tsai 138e65356b docs(docs-infra): set max-height to code example 2025-11-17 09:28:14 -08:00
SkyZeroZx 0432e76171 docs: Adds links to relevant guides for APIs in core package 2025-11-17 08:47:35 -08:00
SkyZeroZx d70310896c docs: add documentation for HostAttributeToken 2025-11-17 08:46:59 -08:00
SkyZeroZx 24243e34d9 refactor(common): removes unused NgModuleFactory config in NgComponentOutlet
Removes the `ngComponentOutletNgModuleFactory`  in `_needToReCreateNgModuleInstance`
2025-11-17 08:46:08 -08:00
Alessio Pelliccione 1aed9408a4 fix(devtools): ensure external docs link opens correctly from extension popup
Adds target="_blank" and rel="noopener noreferrer" to prevent tab-nabbing and follow modern security best practices.
2025-11-17 08:45:34 -08:00
Shuaib Hasan Akib c5c1689348 docs: replace legacy <docs-code> with fenced code blocks with highlight metadata
Replaced older <docs-code> components (e.g.
<docs-code language="ts" highlight="3">…</docs-code>)
with modern fenced code blocks using {highlight:[3]} metadata
2025-11-17 08:43:37 -08:00
Alessio Pelliccione bc03c45b60 docs(docs-infra): update ARIA binding guidance and remove outdated attr. prefix requirement 2025-11-17 08:43:00 -08:00
Shuaib Hasan Akib 7ea60052f0 docs: replace <docs-code> bash examples with fenced bash code blocks
Updated bash command examples to use fenced code blocks (```bash) instead of <docs-code> components, improving formatting consistency and aligning with current documentation standards.
2025-11-17 08:42:22 -08:00
Shuaib Hasan Akib f87e9a02b5 refactor(devtools): clean up unused code and modernize component patterns
- Removed unused code and imports
- Migrated to signal-based input() APIs
- Added readonly to Angular-initialized inputs and removed explicit type annotations
- Updated templates to use self-closing tags for consistency
2025-11-17 08:40:15 -08:00
hawkgs 68d823a241 fix(devtools): show profiler exec details only if there are directives
Show the execution details of a captured frame entry only if there are recorded directives.
2025-11-17 08:39:36 -08:00
hawkgs d6be289603 fix(devtools): don't round decimal vals previews in the state serializer
The actual numerical data can only be checked in the prop edit mode. This fixes that and makes the real value visible all the time.
2025-11-17 08:39:10 -08:00
Alessio Pelliccione 7d41716703 fix(devtools): forward Angular detection to background
Ensure the content script forwards Angular detection results to the service worker so the popup/icon reflects the page state.
2025-11-17 08:38:19 -08:00
hawkgs 6fdb12357f refactor(devtools): increase font weight in the demo app
Increase the global font weight to `500`.
2025-11-17 08:37:55 -08:00
Leon Senft b1037ec2f0 fix(forms): debounce updates from interop controls
* Apply any debounce rules to updates from interop controls (if configured).
* Add tests to ensure debouncing works for all control types (native, custom,
  and interop).
2025-11-17 08:37:26 -08:00
Shuaib Hasan Akib 576f9ba889 docs: replace <docs-code> shell examples with fenced shell code blocks
Updated shell command examples to use fenced code blocks (```shell) instead of components, improving formatting consistency and aligning with current documentation standards.
2025-11-17 08:35:17 -08:00
Shuaib Hasan Akib ee5947db38 docs: improve accessibility with descriptive link and main landmark
- Replaced <a><button></button></a> with a proper <a> containing text and
  aria-label to ensure links have discernible text.

- Added main tag in home page to provide
  a consistent main landmark, improving accessibility for screen readers
  and satisfying WCAG and Lighthouse requirements.

Fixes #65181.
2025-11-17 08:32:00 -08:00
Shuaib Hasan Akib f462684211 fix(docs-infra): add bash language support for shell prompt rendering
Code blocks with `bash` language identifier were not rendering the `$`
prefix, while `shell` blocks did.

This ensures consistent command-line prompt rendering across both
`bash` and `shell` code blocks in the documentation.
2025-11-17 08:31:26 -08:00
Shuaib Hasan Akib 073dcd7ffd docs(docs-infra): simplify file headers in <docs-code> blocks
Removed redundant "src/app/" prefix from file headers (e.g.
"src/app/open-close.component.ts" → "open-close.component.ts")
to keep examples concise and avoid unnecessary path noise.

Aligns with prior cleanup patterns (similar to angular#65016).
2025-11-17 08:30:29 -08:00
SkyZeroZx 846d50ab23 docs: add documentation for DOCUMENT injection token usage in SSR 2025-11-17 08:28:00 -08:00
Angelo Parziale a458a83133 docs(docs-infra): add npm link documentation for library development
Add comprehensive guide for using npm link with Angular libraries, including required angular.json.
2025-11-17 08:25:57 -08:00
Aristeidis Bampakos 73295b1087 docs: use the new format for the X account 2025-11-17 08:22:19 -08:00
Angular Robot f7d06ef859 docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2025-11-17 08:21:02 -08:00
Charles Lyding 599b72ec5a docs: add bun package manager and standardize order in testing guides
This commit updates the testing documentation to include `bun` as a package manager option in all relevant code examples.

Additionally, it standardizes the presentation of package manager commands by:
- Consistently using a multi-tab format (`<docs-code-multifile>`).
- Enforcing a consistent order: `npm`, `yarn`, `pnpm`, `bun`.

These changes improve the user experience by providing clear instructions for multiple package managers and ensuring consistency across the testing guides.
2025-11-17 08:11:22 -08:00
Charles Lyding f5a7719373 docs: update testing guides for Vitest and reorder navigation
This commit updates the unit testing, code coverage, and debugging guides to align with the Vitest test runner, which is now the default for new Angular CLI projects.

Key changes include:
- **Unit Testing Overview**: Revised to focus on Vitest, including details on DOM emulation (jsdom/happy-dom), browser testing setup, and custom Vitest configuration via `runnerConfig`. A prominent note links to the Karma-to-Vitest migration guide.
- **Code Coverage**: Updated to reflect Vitest-specific prerequisites (`@vitest/coverage-v8`), command-line flags, and `angular.json` configuration for coverage reporting and threshold enforcement.
- **Debugging**: Completely rewritten to provide instructions for debugging Vitest tests in both Node.js and browser environments using the `--debug` flag.
- **Navigation Reordering**: The 'Testing' section in `sub-navigation-data.ts` has been reordered to present a more logical educational flow, starting with core concepts and progressing to advanced topics and migration.
2025-11-17 08:11:22 -08:00
Ben Hong c61a195391 docs: add draft aria component guides (pt 2) 2025-11-17 08:09:10 -08:00
portneon 93d548fba4 docs(router): update navigation event example to use event.code 2025-11-17 08:08:27 -08:00
Cheng-Hsuan Tsai 48cff8c128 docs(docs-infra): make show code button more discoverable when collapsed 2025-11-17 08:07:01 -08:00
hawkgs 6bfe107404 docs(docs-infra): fix misaligned tutorials card
Fix the "Deferrable views" illustration which fixes the aligned within the `docs-card`.
2025-11-17 08:06:32 -08:00
Kristiyan Kostadinov 1ba50caefc fix(docs-infra): prevent example resets from affecting CDK
The example viewer has some `::ng-deep` styles that are used to reset global styles that leak into the live examples. It works by applying a style like `.docs-example-viewer-preview * {all: revert;}`.

The problem with this is that depending on when the first example is rendered, the styles will be lower or higher in the cascade, thus making the reset unreliable. Furthermore, it can affect structural styles from the CDK which intentionally have low specificity.

These changes move the resets into the global stylesheet to make them more predictable.
2025-11-17 08:05:12 -08:00
Angular Robot d99b7437d1 build: update all non-major dependencies
See associated pull request for more information.
2025-11-17 08:04:29 -08:00
Angular Robot 28e6648c49 build: update bazel dependencies
See associated pull request for more information.
2025-11-17 08:01:38 -08:00
Shuaib Hasan Akib b3adb6001c docs(docs-infra): simplify file headers in <docs-code> blocks
Removed redundant "src/app/" prefix from file headers (e.g.,
"src/app/open-close.component.ts" → "open-close.component.ts")
to make code examples cleaner and more focused.
2025-11-17 08:00:20 -08:00
Charles Lyding 6208016026 docs: standardize package manager commands in guides
This commit updates the elements and tailwind guides to use the standardized `docs-code-multifile` format for package manager commands. This change introduces `yarn`, `pnpm`, and `bun` alternatives to the existing `npm` commands, providing a consistent experience for users across different package managers.
2025-11-17 07:59:49 -08:00
Angular Robot 7b8c999b05 docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2025-11-17 07:57:31 -08:00
SkyZeroZx c1057c69f0 docs: add formArray clear() example clarifies array manipulation 2025-11-14 15:30:49 -08:00
Angular Robot cc0753411f build: update cross-repo angular dependencies
See associated pull request for more information.
2025-11-14 15:30:18 -08:00
Miles Malerba 722292f215 refactor(forms): improve typing on min & max (#65212)
If we're calling `min` on a path that's guaranteed to be `number` we
don't want to make the users validator function handle the `null` or
`string` cases.

This uncovered an issue in the `SchemaTreePath` type which needed to be
fixed by preventing the model type from being distributed over.

PR Close #65212
2025-11-14 21:56:58 +00:00
Miles Malerba 4f8ab4fa3c refactor(forms): allow passing number|string|null paths to min & max (#65212)
Relaxes the constraints on which paths can be used with the `min` &
`max` validation rules, since people may want to validate a
potentially-null number, or a numeric value represented as a string

PR Close #65212
2025-11-14 21:56:58 +00:00
Wagner Maciel a99e724c60 docs: aria toolbar examples 2025-11-14 13:56:13 -08:00
Angular Robot 45569b62a0 build: update cross-repo angular dependencies
See associated pull request for more information.
2025-11-14 13:55:27 -08:00
Cheng-Hsuan Tsai de234def0e docs(docs-infra): enable tabs layout 2025-11-14 12:24:01 -08:00
Ben Hong 8b59653788 docs: add draft of aria component guides 2025-11-14 11:26:47 -08:00
Matthieu Riegler 1464d02327 docs(docs-infra): backport docs changes from 21.0.x
The PRs should have targeted main instead of targeting `21.0.x`  explicitly
2025-11-14 09:40:28 -08:00
Miles Malerba fc1ef79ad4 build(forms): expose signal forms compat package
Hooks up @angular/forms/signals/compat to be released and have its docs
published
2025-11-14 09:23:36 -08:00
Angular Robot 5552707a97 build: update all non-major dependencies
See associated pull request for more information.
2025-11-14 08:54:51 -08:00
Angular Robot 32c9ca5577 docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2025-11-14 08:54:29 -08:00
SkyZeroZx 4126ef1e94 fix(devtools): use isLazy flag to determine disabled state for action button
Refactors the logic that disables the action button for lazy-loaded routes.
Now relies on the isLazy property from the route data instead of string comparisons on the component field.
2025-11-14 08:47:05 -08:00
cexbrayat c137f1fe91 docs: ExperimentalIsolatedShadowDom mentions 2025-11-14 08:41:13 -08:00
cexbrayat b0dd813664 docs: FormArrayDirective mentions 2025-11-14 08:40:41 -08:00
Kristiyan Kostadinov 81bd455de8 refactor(compiler-cli): split up large file
The `type_check_block.ts` file was getting quite large and difficult to navigate. These changes split up the different pieces of functionality into separate files.
2025-11-14 08:40:11 -08:00
Shuaib Hasan Akib 16c5857dd1 refactor(devtools): remove redundant standalone: true as it is default now
removing `standalone: true`
2025-11-14 08:38:34 -08:00
Leon Senft acb78eeb7a test(forms): [field] inputs on components should just pass through
Test that a component with a bound `[field]` input is not treated as a
control, and that `fieldBinding` does not include the corresponding
`Field` instance.
2025-11-14 08:37:42 -08:00
Angular Robot 415cfecf09 build: update pnpm to v10.22.0
See associated pull request for more information.
2025-11-14 08:35:14 -08:00
Angular Robot f7737a5f25 build: update dependency bazel to v7.7.1
See associated pull request for more information.
2025-11-14 08:34:49 -08:00
Angular Robot 654e17651c build: update cross-repo angular dependencies
See associated pull request for more information.
2025-11-14 08:33:20 -08:00
SkyZeroZx 9ec964334e docs: Uses the self-closing tag syntax 2025-11-14 08:32:35 -08:00
KAUSHIK REDDY AWALA 6f716e400e docs(docs-infra): update di factory provider function to use correct parameters
This PR fixes a parameter mismatch in the `apiClientFactory` function documentation example. The factory was previously passing only http and `userService` to the ``ApiClient`` constructor, but the constructor actually requires http, `baseUrl`, and `rateLimitMs` as separate parameters.

Key Changes:

Extracts baseUrl and rateLimitMs from UserService using getter methods
Updates the ApiClient instantiation to pass all three required constructor parameters
Adds a comment explaining the assumption about UserService providing these values
2025-11-14 08:32:07 -08:00
Alan Agius e840cd547d fix(docs-infra): update firebase caching regex for generated files
The regex for caching generated files in firebase.json has been updated to
include lowercase letters and underscores in the 8-character hash. This
ensures that files with names like `chunk-CrXHmw_W.js` are correctly
cached.
2025-11-14 08:29:00 -08:00
Jessica Janiuk 8989536615 docs: release notes for the v20.3.12 release 2025-11-14 08:14:27 -08:00
Cheng-Hsuan Tsai 6d8c3fc888 docs(docs-infra): hide file tabs when code example is hidden 2025-11-13 15:58:09 -08:00
Angular Robot 024c93904c docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2025-11-13 15:41:09 -08:00
Angular Robot ab0ea1a8f0 build: update cross-repo angular dependencies
See associated pull request for more information.
2025-11-13 15:29:02 -08:00
Angular Robot 2430c60442 build: update cross-repo angular dependencies to v21.0.0-rc.2
See associated pull request for more information.
2025-11-13 14:06:19 -08:00
Alessio Pelliccione 25320ae1eb docs(docs-infra): improve theme picker accessibility and add animations 2025-11-13 14:05:08 -08:00
Angular Robot c6068f2d98 docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2025-11-13 14:02:43 -08:00
Joey Perrott fe2cc7967e ci: use hardcoded global approvers group
Use a single hardcoded, within the pullapprove config file, group for global approvers instead of leveraging a github team as a group
2025-11-13 12:16:48 -08:00
Matthieu Riegler 1b895fece6 refactor(core): flip ngDevMode condition for formatter
In cases the `ngDevMode` flag hasn't been set, still enable the formatter. What matters is if `ngDevMode` is `false ` we tree shake that away.
2025-11-13 10:01:10 -08:00
SkyZeroZx 718eb7bb3a docs: adds guide references to router APIs
Adds `@see` tags with links to relevant guides in the router documentation.
2025-11-13 10:00:19 -08:00
Leon Senft 98ce9a7b17 refactor(forms): use AbortSignal to cancel debounced updates
Add an `AbortSignal` parameter to `Debouncer`. Implementations may
choose to accept this parameter to be informed when a debounced
operation is aborted. This may be useful for canceling pending timers or
avoiding unnecessary work.
2025-11-13 09:59:19 -08:00
Angular Robot 1a94d71ad7 docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2025-11-13 09:43:45 -08:00
Matthieu Riegler f737a9dd5c docs(docs-infra): Add support for metadata on fenced code blocks
This will help us replace `docs-code` with inline code usages and prevent future indentation issues
2025-11-13 09:36:13 -08:00
Shuaib Hasan Akib 3cfd4361a5 docs: replace <docs-code> block with standard fenced code block for typescript example
Replaced the <docs-code> wrapper with a Markdown fenced code block to improve
copy/paste usability, syntax highlighting consistency, and alignment with current
documentation formatting standards.

Inspired by #65043
2025-11-13 09:34:10 -08:00
Kristiyan Kostadinov 3f80ae74ba fix(core): SSR error in signal forms
Resolves an SSR error, because we weren't checking if `MutationObserver` is available.
2025-11-13 09:12:42 -08:00
Matthieu Riegler d1ab73dd87 refactor(core): remove resource flag.
This was used to migrate G3 and is no longer necessary.
2025-11-13 09:12:16 -08:00
SkyZeroZx 373c101d02 refactor(devtools): improve route data and resolver views
Adds an enhanced route data tree view to better visualize both route resolvers and router data.
2025-11-13 09:11:53 -08:00
Shuaib Hasan Akib caaa5ec8e6 docs: replace <docs-code> block with standard fenced code block for typescript example
Replaced the <docs-code> wrapper with a Markdown fenced code block to improve
copy/paste usability, syntax highlighting consistency, and alignment with current
documentation formatting standards.

Inspired by angular#65043
2025-11-13 09:11:20 -08:00
Charles Lyding 258c295b92 docs: create Vitest migration guide
This commit introduces a new guide for migrating existing Angular projects from Karma/Jasmine to Vitest.

The guide covers:
- Manual steps for installing dependencies and updating `angular.json`.
- Handling custom `karma.conf.js` configurations.
- Removing Karma-related files and packages.
- Configuring browser mode for Vitest.
- Details on the `refactor-jasmine-vitest` schematic for automated test refactoring.

The guide also clarifies that while Vitest is the default for new projects, migration for existing projects is experimental. It emphasizes reviewing changes and provides guidance on adapting custom Karma configurations to Vitest.

Renames `experimental-unit-test.md` to `migrating-to-vitest.md` and updates `sub-navigation-data.ts` accordingly.
2025-11-13 09:10:56 -08:00
Angular Robot 57a78b72ad build: update cross-repo angular dependencies
See associated pull request for more information.
2025-11-13 09:09:30 -08:00
hawkgs 7ab1b3a32a docs(docs-infra): improve playground layout
Improve the layout and optimize the empty space; Introduce some minor improvements to the code editor
2025-11-13 09:07:53 -08:00
SkyZeroZx b6a91d4c39 docs: Fixed mermaid diagram node label contrast in dark mode 2025-11-12 15:01:35 -08:00
Kristiyan Kostadinov f7e58577a4 refactor(compiler-cli): rework type checking for signal forms
Reworks the way we approach type checking of signal forms to be closer to the behavior at runtime. There are a couple of scenarios that we handle:

1. For native controls, we now produce simplified type checking code that looks as follows:

```
var t1 = null! as number | string; // Type depends on the input `type`.
t1 = someField().value();
```

2. For custom controls we generate bindings to the individual inputs, rather than checking conformance against `FormValueControl`/`FormCheckboxControl`. This is closer to the behavior at runtime and it allows us to handle generic directives properly.
2025-11-12 13:13:48 -08:00
Kristiyan Kostadinov 14152f69b9 refactor(core): remove unused type
Removes the `ExtractFromControlValue` type since it won't be necessary anymore.
2025-11-12 13:13:48 -08:00
SkyZeroZx 4544135b1e docs: update tutorials with self-closing tags, standalone router directives, and fix syntax highlighting 2025-11-12 13:13:22 -08:00
Jan Martin 48d395402d release: bump Angular DevTools version to 1.6.0 2025-11-12 11:59:07 -08:00
Angular Robot 3b51b0174c build: update cross-repo angular dependencies
See associated pull request for more information.
2025-11-12 11:51:33 -08:00
SkyZeroZx a48029b810 docs: correct example for RouteReuseStrategy getRouteKey
Update the example to properly demonstrate the getRouteKey method usage fixes #65021
2025-11-12 11:49:03 -08:00
Angular Robot fc5710bb7f docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2025-11-12 11:43:32 -08:00
SkyZeroZx 05ef2a5ca9 docs: correct code block language in error handling and signals interop 2025-11-12 11:35:09 -08:00
Angular Robot 78b1a2e0cc build: update cross-repo angular dependencies
See associated pull request for more information.
2025-11-12 11:33:08 -08:00
Angular Robot 8e81d0a9e8 build: update pnpm to v10.21.0
See associated pull request for more information.
2025-11-12 09:42:28 -08:00
Angular Robot 42454b428b build: update bazel dependencies
See associated pull request for more information.
2025-11-12 09:41:05 -08:00
Angular Robot 76a5246943 build: update all non-major dependencies
See associated pull request for more information.
2025-11-12 09:39:55 -08:00
Alan Agius 46099910c0 build: allow any version of @angular/* packages for peer dependencies
This change configures pnpm to allow any version of  `@angular/*` packages to satisfy peer dependencies. This is necessary because `@angular/*` packages are managed within this monorepo, and this rule prevents issues with peer dependency resolution when different versions might be present during development or testing.
2025-11-12 09:35:58 -08:00
Joey Perrott 7d6235f3fb build: use mjs files for ng-dev configuration
In preperation for ng-dev requiring mjs files for configuration, switch over our usage
2025-11-12 09:35:19 -08:00
Alan Agius 0835bd815f build: improve dependency management for local packages
Refactor .pnpmfile.cjs to use a Set for localAngularPackages for better performance.
Adjust typescript dependency handling in compiler-cli to correctly use devDependencies.
Promote rxjs and zone.js from peer dependencies to regular dependencies for local packages.
These changes streamline dependency resolution and align with pnpm's behavior for workspace dependencies.
2025-11-12 09:34:27 -08:00
Alan Agius c51b42f1ce build: remove extra deps
Most of these deps are either unused or are in `adev`
2025-11-12 09:34:27 -08:00
Andrew Kushnir cc095d447c docs: release notes for the v21.0.0-rc.2 release 2025-11-12 08:41:32 -08:00
Andrew Kushnir 1f6de175c9 docs: release notes for the v20.3.11 release 2025-11-12 08:26:29 -08:00
Danny Koppenhagen c3e82fb2d5 refactor(core): render additional WAI-ARIA 1.3 property bindings as attributes
Support additional ARIA properties from Accessible Rich Internet Applications (WAI-ARIA) version 1.3.

| attribute | property |
|-----------|----------|
| `aria-activedescendant`           | `ariaActiveDescendantElement` |
| `aria-colindextext`           | `ariaColIndexText` |
| `aria-controls`           | `ariaControlsElements ` |
| `aria-describeyby`           | `ariaDescribedByElements ` |
| `aria-description`           | `ariaDescription` |
| `aria-details`           | `ariaDetailsElements ` |
| `aria-errormessage`           | `ariaErrorMessageElements ` |
| `aria-flowto`           | `ariaFlowToElements ` |
| `aria-labelledby`           | `ariaLabelledByElements ` |
| `aria-owns`           | `ariaOwnsElements ` |
| `aria-rowindextext`           | `ariaRowIndexText ` |

closes #64847
2025-11-11 14:08:58 -08:00
Matthew Beck 24cfd5a0ed fix(compiler): support complex selectors in :nth-child()
:nth-child() (and its siblings) support complex expressions, e.g.
`:nth-child(2n of :is(.foo, .bar))`. Previously we'd choke because of
the `:is()`. Now, we reuse the `_parenSuffix` subexpression to match
nested parentheses the same way we do for :host() and :host-context().
Note that we only support 3 levels of nesting, so a selector like
`:nth-child(n of :is(:has(:not(.foo))))` will still break.

I'll say yet again that we really should add a proper parser so we stop
getting bug reports like this :)

Fixes #64913
2025-11-11 14:03:32 -08:00
Alan Agius 4ed8781301 refactor(core): improve resource loading with async/await
Refactor  to use async/await for clearer asynchronous operations and enhanced error handling.
Simplify resource caching and streamline the resolution of component templates and styles.
Update  in the router to align with the new async resource resolution.
2025-11-11 12:50:16 -08:00
Andrew Scott 4af408afcb Revert "feat(service-worker): notify clients about version failures (#62718)"
This reverts commit 6d011687ec.

issue #63500 reproduces at head on the main branch in the dev app.
Reverting this change along resolves it.

fixes https://github.com/angular/angular/issues/63500
2025-11-11 12:48:45 -08:00
Leon Senft d337cfb68f feat(forms): add debounce() rule for signal forms
The `debounce()` rule allows developers to control when changes to a
form control are synchronized to the form model.

This feature necessitated some changes to `FieldState`:

  * `controlValue` is a new signal property that represents the current
    value of a form field as it appears in its corresponding control.

  * `value` conceptually remains unchanged; however, its value may lag
    behind that of `controlValue` if a `debounce()` rule is applied.

The `debounce()` rule essentially manages when changes to `controlValue` are
synchronized to `value`. The intent is that an expensive or slow
validation rule can react to the debounced `value`, rather than a more
frequently changing `controlValue`.

Directly updating `value` immediately updates `controlValue`, and cancels any
pending debounced updates.

When multiple `debounce()` rules are applied to the same field, the last
currently active rule is used to debounce an update. These rules are
applied to child fields as well, unless they override them with their
own rule.
2025-11-11 12:00:09 -08:00
Leon Senft 8866934334 refactor(forms): do not infer accumulated metadata type from initial value
This removes the need to specify type arguments for
`reducedMetadataKey()` when the value returned from the `getIntial`
callback is a subtype of the accumulated type.
2025-11-11 12:00:09 -08:00
Angular Robot 631cf977a8 build: update cross-repo angular dependencies
See associated pull request for more information.
2025-11-11 11:51:05 -08:00
Alan Agius 74dca6eccd build: lock file maintenance
See associated pull request for more information.
2025-11-11 10:50:09 -08:00
Angular Robot 3b1fbf00da build: update cross-repo angular dependencies
See associated pull request for more information.
2025-11-11 10:19:24 -08:00
Doug Parker 490435bf76 fix(core): skip Angular formatting when formatting signals recursively
The flag `skipFormatting` got renamed to `ngSkipFormatting` during review of https://github.com/angular/angular/pull/64000, but a couple usages got missed, causing some unfortunate UI recursion.
2025-11-11 10:14:30 -08:00
Kristiyan Kostadinov 8277906455 refactor(compiler): remove unused code
The `fullInheritane` flag from the metadata and the `CopyDefinitionFeature` that it controls appear to no longer be used since `fullInheritance` is always false. The feature appears to have been there to support ngcc which was removed some time ago.
2025-11-11 10:04:29 -08:00
Angular Robot 75dd600570 build: lock file maintenance
See associated pull request for more information.
2025-11-11 08:48:00 -08:00
SkyZeroZx d999667b57 docs: add reference to Built-in Pipes in multiple pipe files 2025-11-11 08:47:07 -08:00
Matthieu Riegler 21ca49cf62 refactor(core): rename ExperimentalIsolatedShadowDom to IsolatedShadowDom
This API is still experimental
2025-11-11 08:46:06 -08:00
Matthieu Riegler 16e61f5dd0 docs(docs-infra): Add support for experimental enum entries 2025-11-11 08:46:06 -08:00
RobinReinecke 07703875b5 docs: correct mermaid code block formatting 2025-11-11 08:33:27 -08:00
SkyZeroZx dde18c2303 docs: improve discoverability in service worker documentation 2025-11-11 08:32:14 -08:00
cexbrayat 800b01f5a1 docs: remove error mentions in signal forms docs
`error` no longer exists and is called `validate`
2025-11-11 08:30:08 -08:00
Doug Parker ec9dc94cee feat(platform-browser): add context to createApplication
This is necessary to use SSR safely with `createApplication` and avoid constraining users to `bootstrapApplication`. It is one more step towards feature parity between `createApplication` and `bootstrapApplication`.
2025-11-10 14:18:29 -08:00
Doug Parker ab67988d2e feat(platform-browser): resolve JIT resources in createApplication
Previously, `createApplication` didn't work with JIT components. This commit brings it closer to feature parity with `bootstrapApplication`.
2025-11-10 14:18:29 -08:00
Devin Chasanoff 5af33724a4 docs: add links to SDUI example and livestream 2025-11-10 14:16:18 -08:00
arturovt feb86e3fde fix(common): remove placeholder image listeners once view is removed
Prior to this commit, attempting to resolve a `ChangeDetectorRef` after views or app have been destroyed would result in an error. In this commit, we clean up listeners once the view is destroyed, before the placeholder loads or fails to load.
2025-11-10 12:05:20 -08:00
Shuaib Hasan Akib b0b834d7f1 refactor(router): add ngDevMode guards to InjectionToken names and cleanup imports
Wraps InjectionToken names with `typeof ngDevMode !== 'undefined' && ngDevMode`
checks to enable tree-shaking of descriptive token names in production builds.
This ensures debug-only strings are removed from production bundles, reducing size.

Also removes unused imports found during refactor.
2025-11-10 12:04:31 -08:00
arturovt d3f67f6ca8 refactor(core): mark VERSION as @__PURE__ for better tree-shaking
Annotate the `new Version(...)` call with `/* @__PURE__ */` to signal to optimizers that the constructor is side-effect free.

Without this hint, bundlers such as Terser or ESBuild may conservatively retain the `VERSION` instantiation even when unused. With the annotation, the constant can be tree-shaken away in production builds if not referenced, reducing bundle size.
2025-11-10 12:04:04 -08:00
Alan Agius d42f9ce3a9 docs: use markdown code fences in service worker docs
Replaces the <docs-code> component with standard markdown code fences in the service worker documentation. This improves the readability and maintainability of the documentation.
2025-11-10 12:03:31 -08:00
Angular Robot 4ff6348c0b docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2025-11-10 10:34:39 -08:00
AleksanderBodurri cfb26f5999 feat(devtools): use router state for active route detection
Replace URL-based active route detection with direct traversal of the ActivatedRoute tree.

This solution is more reliable than the previous approach because it directly compares router tree configuration objects against the active router instance state with router.routerState.
2025-11-10 09:50:08 -08:00
SkyZeroZx 55be477979 refactor(http): migrate XSRF classes to use inject() function
Remove constructor injection in favor of inject() calls
2025-11-10 09:49:09 -08:00
arturovt 7724a9460d refactor(router): replace Optional with inject() flags
Replace `@Optional() link: RouterLink` constructor parameter with
`link = inject(RouterLink, {optional: true})` to enable tree-shaking
of the `Optional` decorator and its factory scaffolding.

Bundle size reduction: `Optional` is a runtime value created by
`makeParamDecorator()`. Even in production builds, ESBuild and other
bundlers must keep their factory code because it is referenced via
`Optional`. With `inject()`, this class is no longer referenced,
allowing it and the `makeParamDecorator` scaffolding to be tree-shaken
when unused elsewhere.

Note: This updates the constructor signature but should not be
considered a breaking change. Angular's official guidance is that
directives, components, and pipes should be instantiated by the
framework, not by user code. Directly calling `new RouterLinkActive(...)`
is an unsupported pattern that goes against Angular's design principles.
2025-11-10 09:48:32 -08:00
Angular Robot e5cc6d55e8 build: update all non-major dependencies
See associated pull request for more information.
2025-11-10 09:47:41 -08:00
Angular Robot 050c475b51 build: update cross-repo angular dependencies
See associated pull request for more information.
2025-11-10 08:23:57 -08:00
Andrew Scott 2db8f2ee75 refactor(router): Add handling of abort event on signal of NavigateEvent
This adds handling of the abort event on the signal of the
`NavigateEvent`, allowing us to cancel the Router's ongoing navigation
transition when its related navigation was aborted.
2025-11-10 08:02:43 -08:00
Shuaib Hasan Akib 27d54654e3 docs: add shell language to CLI installation examples
Added `language="shell"` to installation command examples to display
the shell prompt `$` icon consistently across npm, pnpm, yarn, and bun
code blocks.
2025-11-10 08:01:29 -08:00
Shuaib Hasan Akib e0a4bdd72b docs(docs-infra): simplify file headers in <docs-code> blocks
Removed redundant "src/app/" prefix from file headers (e.g.,
"src/app/open-close.component.ts" → "open-close.component.ts")
to make code examples cleaner and more focused.
2025-11-10 08:00:33 -08:00
Shuaib Hasan Akib 8c6619a531 docs(docs-infra): removed unused import and use self-closing syntax for component 2025-11-10 08:00:06 -08:00
SkyZeroZx e3fc57e8fc docs: improve discoverability of forms 2025-11-10 07:57:43 -08:00
Angular Robot 47f6f71fc4 build: update dependency marked to v17
See associated pull request for more information.
2025-11-10 07:54:08 -08:00
jnizet afe5fc0399 fix(docs-infra): avoid double slash in sitemap urls
Previously, the URLs in the  generated sitemap contained double slashes between the host and the path. It's not the case anymore.

fix #65022
2025-11-10 07:53:40 -08:00
SkyZeroZx 6a2f4a88de docs: correct import path and self-closing tag in ng-content example 2025-11-10 07:52:46 -08:00
Matthew Beck 4b871b139b test(compiler): add test for :host:has(> .foo)
I took a quick look at my recent changes to see if I had inadvertently
fixed this bug, but I couldn't seem to reproduce it even before my
changes. Seems like it's working, though.

Closes #58436
2025-11-10 07:51:16 -08:00
arturovt 7f95f02d05 refactor(core): tree-shake REF_EXTRACTOR_REGEXP (and dependencies)
`new RegExp()` with computed strings can't be analyzed statically. The bundler can't prove the template string evaluation has no side effects; as thus this expression is considered a side-effect.
2025-11-10 07:48:39 -08:00
Leon Senft 44cd18c183 refactor(forms): remove a TODO and simplify update on <select> mutations
Remove an unnecessary TODO comment. The native `<select>` tracks its
`value` by keeping track of the selected `<option>`. Thus if the value
was set *before* the corresponding option is created, the `<select>`
will ignore it, but the framework doesn't know that and will cache the
bound value anyways. Therefore, checking if the value changed since it
was last bound when the mutation that creates the selected `<option>`
occurs would in fact prevent a needed update, leaving the `<select>` and
field values out of sync.

Furthermore, we know the control type is a native `<select>` element, so
we can update its value directly instead of going through
`updateNativeControl()` which would perform a redundant input type
check.
2025-11-10 07:47:58 -08:00
hawkgs 2d7a72314d fix(devtools): message bus URI conflict between dev and prod apps
\#64806 drops the `href` part of `SamePageMessageBus` URIs. This creates a conflict, which breaks the directive explorer, between the prod Devtools (i.e. the extension) and the dev Devtools app due to the backend URIs using the same string for both prod and dev.
2025-11-10 07:47:37 -08:00
hawkgs 402f396b76 refactor(devtools): update inspect icon
Use a custom version of Material `pin_end` icon that doesn't have a dot.
2025-11-10 07:47:14 -08:00
Danny Koppenhagen d2b854b37e docs(core): add a11y considerations related to @defer()
closes #53466
2025-11-07 15:27:10 -08:00
Andrew Scott 1651908004 refactor(router): Add handler to NavigationInterceptOptions
This adds a handler to the `NavigationInterceptOptions` when we are
intercepting a `NavigateEvent`. This means that the scroll and focus
restoration will be delayed until the handler promise resolves. It also
means that we can provide better indication of an ongoing navigation
event.
2025-11-07 13:32:49 -08:00
Andrew Scott 8bccd8671c refactor(core): Extract NavigateEvent cancel steps based on recent spec update
This updates the cancel/abort steps of fake navigation to match the
current spec.

Relevant commit seems to be
* https://github.com/whatwg/html/commit/b0b40cca16f5d04b7fdca5a1bdca32cc6f824689
2025-11-07 12:54:14 -08:00
Andrew Scott 7a5ac69144 refactor(core): Update commit steps of PlatformNavigation fake to match spec updates
Brings commit steps in line with recent spec updates

* https://github.com/whatwg/html/commit/a3809244c003103243e769855aa4c5792b8937e3
* https://github.com/whatwg/html/commit/bd347bdfebc558f4009109c101bf7fb495400031
2025-11-07 12:54:14 -08:00
Angular Robot a002fb5242 docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2025-11-07 12:52:35 -08:00
Leon Senft 850f0d6b3d perf(forms): only update interop controls when bound field changes
https://github.com/angular/angular/pull/64590 implemented change
detection for field bindings, but only for those bound to native or
custom form controls. This change extends that optimization to apply to
field bindings on interoperable controls built using Reactive Forms as well.
2025-11-07 11:58:17 -08:00
Kristiyan Kostadinov 877678345a refactor(compiler-cli): update set of required inputs
Updates the required inputs that can be ignored for form controls.
2025-11-07 11:57:50 -08:00
Kristiyan Kostadinov 10915f2f5f test(forms): fix type checking errors in signal form tests
Fixes some type checking errors in the signal forms tests that accumulated while there wasn't any type checking.
2025-11-07 11:57:50 -08:00
Kristiyan Kostadinov 0b6b78ca74 fix(compiler-cli): make field detection logic more robust
Currently the logic for detecting `Field` directives only works if it's imported from `@angular/forms/signals` which doesn't cover our own tests.

These changes make the check more robust.
2025-11-07 11:57:50 -08:00
Kristiyan Kostadinov a61e01d51f fix(compiler-cli): allow value to be set on radio fields
Updates the logic that checks for unsupported bindigns to allow `value` to be set on `radio` controls.
2025-11-07 11:57:50 -08:00
Kristiyan Kostadinov 165634264e fix(compiler-cli): do not flag custom control required inputs as missing when field is present
Adds some logic that won't report the `value` or `checked` inputs as missing when the `Field` directive is present since it will bind to the inputs implicitly.
2025-11-07 11:57:50 -08:00
Kristiyan Kostadinov 4d0778529f fix(compiler-cli): use any when checking field interface conformance
Switches to checking against `FormValueControl<any>` instead of `FormValueControl<unknown>` when checking whether custom controls conform to the interface.

Fixes #64946.
2025-11-07 11:57:50 -08:00
Andrew Scott 4405725943 fix(language-service): address potential memory leak during project creation
This addresses a potential memory leak in plugin-factory.ts.
The require call inside the create function reloads the entire language
service module for every new project, which is inefficient and could be a cause of the memory leak during branch
switching. This ensures the module is loaded only once and the same
instance is shared across all projects.
2025-11-07 11:57:22 -08:00
Alan Agius 033ea75b88 build: update rules_angular to latest
Update `rules_angular` to latest.
2025-11-07 11:43:24 -08:00
Alan Agius 0f55443d9b refactor: exclude tsconfig.json from VSIX package contents (#64991)
The  file is no longer included in the VSCode extension package.
This change updates the golden file and the  file to reflect this exclusion.

PR Close #64991
2025-11-07 11:36:31 -08:00
Alan Agius 74a38f00a0 test: add golden file test for VSCode extension package contents (#64991)
This commit introduces a golden file test to verify the contents of the VSCode extension package.
The test ensures that the list of files included in the extension package remains consistent.

A new Bazel rule  is added to generate the list of files, and  is used to compare it against the golden file. A helper script  is also added to facilitate the generation of the golden file.

PR Close #64991
2025-11-07 11:36:31 -08:00
Matthew Beck 680c3c7bff fix(compiler): support commas in :host() argument
This change adds support for commas in :host() arguments (e.g.
`:host(:not(.foo, .bar))` as well as in nested parens when the argument
is applied without parens (e.g. `:host:not(:has(.foo, .bar))`).
Previously these selectors would receive an extra `[nghost]` attr, e.g.
`[nghost]:not(.foo, [nghost].bar)`.

I didn't file a bug for this one, but it's also blocking on an internal
LSC. Like the other CSS changes, I'll run a TGP to confirm this isn't
breaking.
2025-11-07 10:43:32 -08:00
Shuaib Hasan Akib a2cd36777a docs(docs-infra): use self-closing syntax for component examples
Replaced multiple component tags such as `<example></example>` with
self-closing syntax (`<example />`) across documentation examples.
This improves readability and aligns with the current Angular
style conventions.
2025-11-07 10:24:36 -08:00
Charles Lyding e3143036ba docs: remove invalid service dependency guide section
The current section `Services with dependencies` within the testing services
guide is non-functional and has been removed. The example service is using
`inject` but the test code is using constructor-based injection. The further
sections discuss the use of TestBed to adjust providers which better handles
these cases.
2025-11-07 10:23:47 -08:00
SkyZeroZx dff803514e docs(docs-infra): refactor update to use host property and refactor isWindows 2025-11-07 10:13:23 -08:00
Doug Parker 9432919a8b refactor: enable dev-app sourcemaps in prod and include vendor sourcemaps
This makes it easier to debug in production by including sourcemaps unconditionally. It also processes vendor sourcemaps (which includes Angular FW in this setup) and should improve debuggability of FW code by including sourcemap coverage.
2025-11-07 10:12:58 -08:00
Doug Parker 2150e383d9 refactor: add production devserver to dev-app
This should make it easier to test production bundling and optimizations.
2025-11-07 10:12:58 -08:00
Alon Mishne b481fee049 docs: Update MCP docs to include all current stable and experimental tools 2025-11-07 10:12:30 -08:00
Charles Lyding 2a2397acc4 docs: Update testing guides for Vitest and Karma
This commit updates the testing documentation to reflect the introduction of Vitest as the default test runner, while ensuring Karma testing instructions are still available.

Key changes include:
- Adding a new guide for "Testing with Karma" (`guide/testing/karma.md`).
- Updating the "Code Coverage" guide (`guide/testing/code-coverage.md`) to use `angular.json` for coverage enforcement and referencing Vitest documentation.
- Modifying the "Testing Overview" guide (`guide/testing/overview.md`) to introduce Vitest as the default, update `ng test` output examples, and link to the new Karma guide.
- Updating navigation data to include the new Karma testing guide.
2025-11-07 10:10:26 -08:00
Andrew Scott c91d8203a2 fix(language-server): fix directory renaming on Windows
Hopefully addresses issues on Windows where fs.watch on a directory
locks that directory.

fixes https://github.com/angular/vscode-ng-language-service/issues/1398
2025-11-07 10:09:57 -08:00
Miles Malerba 0efb3f6d1f refactor(forms): nicer type errors
By intersecting with `object` instead of `unknown` in the primitive and
`FormControl` cases, we get TypeScript to show nicer type errors that
mention `FieldTree<...>` insetad of `() => FieldState<...>`
2025-11-07 07:45:05 -08:00
SkyZeroZx c74367c5de refactor(devtools): replace HostListener with host metadata for keydown handling
Uses host metadata instead of the HostListener decorator for keydown events
2025-11-07 07:44:42 -08:00
khanhkhanhlele a625f6bb20 docs: Fix typos in some files 2025-11-07 07:44:03 -08:00
Angular Robot 3cde920ecf build: update all non-major dependencies
See associated pull request for more information.
2025-11-07 07:43:44 -08:00
Jessica Janiuk e703433b4b Revert "feat(core): resource composition via snapshots"
This reverts commit 2a6fdda601.
2025-11-07 07:42:18 -08:00
Angular Robot ff3013c014 build: update cross-repo angular dependencies
See associated pull request for more information.
2025-11-06 15:28:11 -08:00
Andrew Scott 85d9abb019 refactor(router): Intercept navigate events (unless it's a rollback)
This adds further integration with the browser Navigation API by intercepting the navigation events.
2025-11-06 15:00:08 -08:00
Alex Rickabaugh 2a6fdda601 feat(core): resource composition via snapshots
* Define `ResourceSnapshot<T>` as a type union of possible states for a
`Resource<T>`.
* Add `Resource.snapshot()` to convert a `Resource` to a signal of its
  snapshot.
* Add `resourceFromSnapshots` to convert a reactive snapshot back into a
  `Resource`.

By converting resources from/to `Signal<ResourceSnapshot>`s, full
composition of resources is now possible on top of signal composition APIs
like `computed` and `linkedSignal`.

For example, a common feature request is to have a `Resource` which retains
its value when its reactive source (params) changes. This can now be built
as a utility, leveraging `linkedSignal`'s previous value capability:

```ts
function withPreviousValue<T>(input: Resource<T>): Resource<T> {
  const derived = linkedSignal({
    source: input.snapshot,
    computation: (snap, previous) => {
      if (snap.status === 'loading' && previous?.value) {
        // When the input resource enters loading state, we keep the value
        // from its previous state, if any.
        return {status: 'loading', value: previous.value.value};
      }

      // Otherwise we simply forward the state of the input resource.
      return snap;
    },
  });

  return resourceFromSnapshots(derived);
}

// In application code:

userId = input.required<number>();
user = withPreviousValue(httpResource(() => `/user/{this.userId()}`));
// if `userId()` switches, `user.value()` will keep the old value until
// the new one is ready!
```
2025-11-06 14:59:39 -08:00
tsc036 cf47ce2db9 refactor(core): move profile_types.ts to primtives
move profile_types.ts so the types can be used in Wiz code
2025-11-06 14:22:33 -08:00
Miles Malerba faccf03ee0 refactor(forms): allow FieldTree of recursive type
Adjusts our typings to work better with recursive types and avoid
infinite recursion in the type system.
2025-11-06 13:43:43 -08:00
Miles Malerba 2fd8dc9195 refactor(forms): expose pathKeys as part of the API
Currently we maintain the pathKeys internally, but do not expose them
through the `FieldContext`, this PR updates the `FieldContext` to expose
this property.
2025-11-06 13:43:13 -08:00
Miles Malerba c9058087ae refactor(forms): support dynamic object logic
extends `applyEach` to work on objects as well, conditionally applying
logic to each property of the object.
2025-11-06 13:42:48 -08:00
Angular Robot 88f55b43ac build: update cross-repo angular dependencies to v21.0.0-rc.1
See associated pull request for more information.
2025-11-06 13:23:44 -08:00
Jessica Janiuk 6d1a978729 Revert "build: restrain visibility to compiler-cli subpackages (#64732)"
This reverts commit 70d8ed4488.
2025-11-06 13:09:01 -08:00
Jessica Janiuk 37092d00b7 Revert "refactor(compiler-cli): remove deep imports from compiler-cli (#64732)"
This reverts commit 05938c1054.
2025-11-06 13:09:01 -08:00
Matthieu Riegler 70d8ed4488 build: restrain visibility to compiler-cli subpackages (#64732)
This should solve future deep imports issues.

PR Close #64732
2025-11-06 20:01:26 +00:00
Matthieu Riegler 05938c1054 refactor(compiler-cli): remove deep imports from compiler-cli (#64732)
Accessed symbols are grouped into dedicated `private` entries

PR Close #64732
2025-11-06 20:01:26 +00:00
SkyZeroZx 5343001835 refactor(platform-browser): remove unused Platform ID dependency from DomRendererFactory2
Eliminates the unnecessary injection and usage of Platform ID in the renderer factory logic, along with related test scaffolding cleanup
2025-11-06 12:00:46 -08:00
Angular Robot 3085915a7f build: update cross-repo angular dependencies
See associated pull request for more information.
2025-11-06 11:55:54 -08:00
arturovt 9f76fb61df refactor(forms): tree-shake ngControlStatusHost and ngGroupStatusHost
This commit removes `ngGroupStatusHost` variable because it's a side-effect, ending up preserving `ngControlStatusHost` and `ngGroupStatusHost`.
2025-11-06 10:57:45 -08:00
Matthew Berry 444143758e fix(compiler): support one additional level of nesting in :host()
Previously we supported one level of nested parentheses inside of a
`:host()` selector, e.g. `:host(:not(p))`. This caused a breakage in g3
when I migrated a selector from `:host:not(:has(p))` to
`:host(:not(:has(p)))`. This change adds support for just one more level
of nesting.

It'd be nice to move everything to a real CSS parser (or even update it
to count parentheses like I did with :host-context()), but I wasn't able
to get that to work in ~20 minutes and I'm focusing on other things at
the moment.

This change punts the problem until somebody tries to use just one more
level of nesting in a selector.

Fixes #64830
2025-11-06 10:53:42 -08:00
Alan Agius cda013c60f build: improve vscode-ng-language-service release process
This commit improves the release process for the vscode-ng-language-service by adding automated changelog generation and updating the package.json version.
2025-11-06 10:53:09 -08:00
kirjs 60447945bc refactor(forms): add compatForm
This allows using reactive form controls in signal forms
2025-11-06 10:51:28 -08:00
Alan Agius 26fed34e0e build: format md files
This commit configures prettier to format markdown files.
2025-11-06 10:03:05 -08:00
SkyZeroZx 08a84e03e6 refactor(router): simplify imports and improve option access in RouterScroller tests
Simplifies imports and unifies option access in RouterScroller specs for cleaner and more consistent code
2025-11-06 09:42:41 -08:00
Andrew Scott 189807ef04 refactor(router): Build out integration with browser Navigation API (#64905)
This further builds out the Router integration with the platform
Navigation API. Key features in this state include:

* History restoration via direct platform APIs rather than markers left on
  `history.state`. This means more guaranteed correctness and less
  internal code to compute traversal restorations.
* Ability to observe navigations triggered outside the Router APIs.
  Practically speaking, this means some navigations can be performed
  through the platform rather than requiring `Router.navigate`. Note
  that because the `NavigateEvent` is never intercepted at this point of
  the implementation, regular anchor tags cannot be used because they
  will still trigger a popstate navigation.

This implementation does _not_ intercept the `NavigateEvent` but future
iterations should. By omitting the interception, we are missing out on
features such as:

* Platform-supported scroll and focus reset
* Holding the navigate event open for the duration of the router
  navigation, allowing for a visual loading indicator in the browser
* Support for intercepting navigations from regular anchor tags (e.g.
  not `RouterLink`s) and converting those to SPA navigations.

PR Close #64905
2025-11-06 17:42:04 +00:00
Andrew Scott 310cc9b71b build: Add dom-navigation types to router (#64905)
As the integration with the browser navigation API is built out, we will want to have the types available

PR Close #64905
2025-11-06 17:42:04 +00:00
Miles Malerba fa02d96508 test(forms): re-enable some disabled tests
Adjusts test behavior to reflect current implementation and enables them
2025-11-06 09:41:28 -08:00
Angular Robot ffda3f97e0 build: update cross-repo angular dependencies to v21.0.0-rc.1
See associated pull request for more information.
2025-11-06 09:40:51 -08:00
Miles Malerba 25e13e9f96 build: add a dev-app
Adds a dev app that can be used to prototype and debug things while
developing Angular. Use `pnpm dev` to run it.
2025-11-06 09:05:32 -08:00
SkyZeroZx ca3ef38143 refactor(common): Removes unused imports to clean up dependencies
Eliminates unnecessary imports to reduce clutter and improve maintainability
2025-11-06 08:35:28 -08:00
tsc036 104f7d57c1 refactor(core): export types from primitives
export Version type and a type for linkedSignal previous value so they can be used for the Wiz implementations
2025-11-06 08:34:54 -08:00
SkyZeroZx 61066071cf docs: correct formatting in dependency injection guides 2025-11-06 08:34:26 -08:00
Miles Malerba e87f423d90 refactor(forms): add better support for Object.keys and Symbol.iterator
Improves support for using `Object.keys` (and related methods) and
`Symbol.iterator` to work with a `FieldTree` of unknown shape.
2025-11-06 07:51:28 -08:00
Miles Malerba 194b41199b refactor(forms): improved select support
When we set the `value` on a `<select>` element we're really just
setting the selected `<option>`. It treats the selected option as the
source of truth, rather than the actual value. This means that if
options are added or removed or their value changes, the `<select>` may
wind up with a different `value` than what's in our model.

This PR resolves this issue by adding a `MutationObserver` to the select
that is used to resync its value to the model whenever the options may
have changed.
2025-11-06 07:49:06 -08:00
Angular Robot 8315504d60 build: update cross-repo angular dependencies
See associated pull request for more information.
2025-11-06 07:47:07 -08:00
Joey Perrott de1f22cf2c build: update diff release package script
Update the diff relase package script to properly recursively apply the chmod and support a flag for writing the
diff to a file instead of only logging it to the console.
2025-11-05 15:24:50 -08:00
SkyZeroZx f2ffbe31b0 refactor(devtools): enhance route guard handling and add inline function warning
refactored route guard handling and added warning for inline functions
2025-11-05 15:20:46 -08:00
hawkgs cb5d36d107 refactor(devtools): remove redirecting flag from router tree
Drops `isRedirect` due to its redundancy in light of the newly introduced `redirectTo`.
2025-11-05 15:20:29 -08:00
Angular Robot 76211bf3cc build: update dependency @rollup/plugin-commonjs to v29
See associated pull request for more information.
2025-11-05 15:19:23 -08:00
Angular Robot 9ae1f44ca0 docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2025-11-05 15:13:56 -08:00
Angular Robot 2b71181288 build: update all non-major dependencies
See associated pull request for more information.
2025-11-05 15:13:37 -08:00
Miles Malerba 59635bba34 docs: improve docs generation for namespaces (#64747)
Improves docs epxerience for interfaces / type aliases that are merged
with a namespace.

PR Close #64747
2025-11-05 22:42:59 +00:00
Miles Malerba 96388b6d8a refactor(forms): improve discoverability of ValidationError flavors (#64747)
Improves discoverability by putting the WithField, WithoutField, etc as
subtypes of the main ValidationError type

PR Close #64747
2025-11-05 22:42:59 +00:00
Angular Robot a54bea5a08 build: update all github actions
See associated pull request for more information.
2025-11-05 14:28:57 -08:00
Angular Robot 62c029fdc2 build: update bazel dependencies
See associated pull request for more information.
2025-11-05 14:23:28 -08:00
Alan Agius e1dfe323d7 build: add VSCode extension release script
This script orchestrates the release process for the Angular Language Service VSCode extension. It handles versioning, changelog generation, building, and publishing the extension.
2025-11-05 19:55:32 +00:00
Erik Wegner e18aac88d4 docs: Add the missing function call to use the signal's actual value 2025-11-05 19:47:02 +00:00
Andrew Scott 4f0f29979c docs: cherrypick release notes for vscode extension 2025-11-05 19:45:48 +00:00
Andrew Scott a487de8bd4 docs: release notes for the v21.0.0-rc.1 release 2025-11-05 19:37:38 +00:00
Andrew Scott aa104c9747 docs: release notes for the v20.3.10 release 2025-11-05 18:58:57 +00:00
Matthieu Riegler 7f44345db3 docs(docs-infra): fix heading layout on mobile
Long code blocks overflow the headings on narrow screen (like mobiles), this messes up the global layout of the page. With the ellipsis with fix that.

fixes #64845
2025-11-05 17:49:43 +00:00
Kristiyan Kostadinov 748caf9a74 test(compiler-cli): set up TCB tests for signal forms
Adds TCB-specific tests for the generated code in signal forms since they tend to be a bit easier to read and follow.
2025-11-05 17:35:43 +00:00
Kristiyan Kostadinov 3c7751020e refactor(compiler-cli): check that custom control conforms to control interfaces
Generates additional type checking code to ensure that custom control conform to either `FormValueControl` or `FormCheckboxControl`.
2025-11-05 17:35:43 +00:00
Kristiyan Kostadinov 04ed91071b refactor(compiler-cli): flag unsupported static bindings on field directives
Expands the diagnostic for unuspported bindings on fields to also capture static attributes.
2025-11-05 17:35:43 +00:00
Kristiyan Kostadinov a5b596b83d refactor(compiler-cli): split up form field ops
Splits up the custom form field and native form field into two separate `TcbOp`s with a shared base class.
2025-11-05 17:35:43 +00:00
Kristiyan Kostadinov f20103a1d7 fix(compiler-cli): report invalid bindings on form controls
Adds validation that users don't bind to unsupported properties on nodes with the `Field` directive.
2025-11-05 17:35:43 +00:00
Kristiyan Kostadinov 948e2f4f01 fix(compiler-cli): infer type of custom field controls
Adds the logic to infer the type of a custom field control that's on the same element as the `Field` directive.
2025-11-05 17:35:43 +00:00
Kristiyan Kostadinov 4b68bddd62 refactor(core): add utility type for extracting the value of a custom control
Adds the `ɵExtractFormControlValue` type that we can use during template type checking to extract the type of a custom control.
2025-11-05 17:35:43 +00:00
Kristiyan Kostadinov 6b51fc3e9d fix(compiler-cli): infer types of signal forms set on native inputs
Sets up the logic for inferring the type of the signal form that is set on a native `input`, `textarea` or `select`.
2025-11-05 17:35:43 +00:00
Kristiyan Kostadinov c5ac77cb32 refactor(compiler-cli): allow the forms module to be loaded in tests
Updates the testing utilities to allow for `@angular/forms` to be loaded.
2025-11-05 17:35:43 +00:00
SkyZeroZx 7c49c5338f refactor(common): remove redundant providedIn: 'root' from injection tokens
Removes unnecessary `providedIn: 'root'` declarations from injection tokens
2025-11-05 17:08:39 +00:00
Georgi Serev cd0e96c1d0 fix(devtools): router tree details table data
Introduce layout fixes and use dedicated buttons for the view source and navigate actions.
2025-11-05 17:07:18 +00:00
SkyZeroZx 44435ea97b refactor(http): simplifies destruction tracking using destroyed property
Replaces the manual destroyed state with destroyed property
2025-11-05 17:05:24 +00:00
hawkgs 31d412771b refactor(devtools): update the looks of hydration overlay switch
Move the option under the directive explorer and drop the switch to match the rest of the UI.
2025-11-05 17:04:46 +00:00
Jessica Janiuk 373d263834 fix(core): skip leave animations on view swaps
We accounted for skipping leave animations during moves, but not swaps.
This accounts for the swap cases and updates how we deal with swaps and
moves. Now we always queue animations and then essentially dequeue them
if we attach them back in the same render pass.

fixes: #64818
fixes: #64730
2025-11-05 17:04:11 +00:00
Alan Agius 3ef2edc076 build: update typescript dependency for vscode-ng-language-service
Updates the typescript dependency to 5.9.3 in vscode-ng-language-service/package.json
and updates pnpm-lock.yaml accordingly.
2025-11-05 17:02:35 +00:00
Alan Agius 1cd5b44f9c release: bump Angular DevTools version to 1.5.0 2025-11-05 15:52:09 +01:00
Leon Senft 41be02da2f perf(forms): implement change detection for field control bindings
For each field state property, check if it has changed since the last
time it was checked before writing it the corresponding form control
property.

The `pattern` and `required` properties of the field state now return a
default value rather than `undefined` if not defined by metadata.
2025-11-05 00:11:22 +00:00
Lukas Matta 5b210e97af fix(migrations): Prevent removal of templates referenced with preceding whitespace characters
In https://github.com/angular/angular/pull/64745, a fix was introduced for templates referenced with a trailing semicolon. However, templates are still incorrectly removed when there are whitespace characters before the template name.

This commit updates the control flow migration logic to ensure templates referenced with preceding whitespace are not removed.

Fixes #64854
2025-11-04 23:25:59 +00:00
Joey Perrott c277214f91 fix(docs-infra): properly expose the prerendered routes for sitemap generation
Properly expose the prerendered routes for sitemap generation rather than only copying the browser directory
2025-11-04 23:10:58 +00:00
Joey Perrott ffbcf0cede feat(docs-infra): generate the sitemap for angular.dev
We automatically generate the sitemap for the angular.dev deployment and include it in the assets pushed
to firebase.

Co-authored-by: Matthieu Riegler <kyro38@gmail.com>
2025-11-04 23:10:58 +00:00
SkyZeroZx b5e37ffb77 docs(docs-infra): add missing meta tags for author, keywords, and Twitter 2025-11-04 22:58:24 +00:00
Angular Robot b7839e872f docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2025-11-04 18:54:43 +00:00
Andrew Scott 7f16902a72 refactor(router): Update pre/post wildcard matching to retain 0 or more segment match meaning
Prior to the change to support defining required segments before and after the wildcard, the meaning of the wildcard
path was '0 or more' so path: foo with a child of ** will still match the ** route when the URL is only 'foo'.
If developers want to _require_ something, they can still use path: foo/:anyRequired/**/bar
2025-11-04 17:56:54 +00:00
SkyZeroZx 058377ed55 refactor(devtools): handle function-based redirectTo and title in router viewer
Refactors router viewer logic to properly process and display redirectTo and title when defined as functions
2025-11-04 17:54:07 +00:00
Angular Robot b8b8bad130 build: lock file maintenance
See associated pull request for more information.
2025-11-04 17:52:54 +00:00
Georgi Serev 9fc3873ea3 fix(devtools): SameMessageBus source and destination URIs
Fix the URIs by stripping any query parameters and/or fragments from the compound URLs, since they may prevent the extension from successfully establishing a handshake in some instances.
2025-11-04 17:52:07 +00:00
Angular Robot 608421b83f build: update cross-repo angular dependencies
See associated pull request for more information.
2025-11-04 17:50:39 +00:00
Gerome Grignon 8f49af90d0 docs(router): uniformize lazy loading syntax 2025-11-04 17:39:08 +00:00
SkyZeroZx 2ad1b5979f refactor(core): Removes unused flag for onDestroy
Eliminates an unnecessary configuration flag
2025-11-04 04:20:54 +00:00
SkyZeroZx b61847f877 docs: simplify tutorial signals with self-closing component tags 2025-11-04 00:34:37 +00:00
SkyZeroZx 82a579c7e6 docs: Update highlight inputs & code block formatting in component guides 2025-11-04 00:32:38 +00:00
SkyZeroZx 97169b4689 refactor(platform-browser): remove redundant providedIn: 'root' from injection tokens
Removes unnecessary `providedIn: 'root'` declarations from injection tokens
2025-11-04 00:31:52 +00:00
SkyZeroZx 5e4437baf8 refactor(platform-server): remove redundant providedIn: 'root' from injection tokens
Removes unnecessary `providedIn: 'root'` declarations from injection tokens
2025-11-04 00:31:52 +00:00
SkyZeroZx 67da4eb04c refactor(router): remove redundant providedIn: 'root' from injection tokens
Removes unnecessary `providedIn: 'root'` declarations from injection tokens
2025-11-04 00:31:52 +00:00
SkyZeroZx 78e6716f40 refactor(forms): remove redundant providedIn: 'root' from injection tokens
Removes unnecessary `providedIn: 'root'` declarations from injection tokens
2025-11-04 00:31:52 +00:00
SkyZeroZx 64efbc53aa refactor(core): remove redundant providedIn: 'root' from injection tokens
Removes unnecessary `providedIn: 'root'` declarations from injection tokens
2025-11-04 00:31:52 +00:00
Shuaib Hasan Akib c4c7fb88ac docs: remove standalone: true since it's now the default
Removes redundant `standalone: true` declarations from code examples.
Standalone components are now the default in Angular, so the flag is
no longer necessary in documentation snippets.
2025-11-04 00:26:54 +00:00
marktechson 7a422c209a docs: add v21 landing page
Adds a new landing page for developer events, starting with the v21 page. It also includes an ICS file link for calendar invites. Also updated the tests for the docs-pill to support two new attributes so developers can add the event to their calendars.
2025-11-03 23:59:20 +00:00
SkyZeroZx ffa19ddd3f docs(docs-infra): Improve font loading performance with preconnect
Adds preconnect links for Google Fonts domains to establish early
connections, reducing latency and improving font loading speed
2025-11-03 22:30:59 +00:00
SkyZeroZx 429672d6ab docs(docs-infra): Updates page title strategy to sync meta tags
Ensures that page title changes are reflected in relevant meta tags for improved SEO and sharing support
2025-11-03 21:30:09 +00:00
Kristiyan Kostadinov f233f7420a fix(compiler-cli): make required inputs diagnostic less noisy
Currently when a required input is missing, we produce a diagnostic on the entire start tag. This can be really noisy if there are already some attributes on the element.

This change switch to only highlighting the tag name instead.
2025-11-03 21:27:42 +00:00
Angular Robot 615518d9fd build: update cross-repo angular dependencies
See associated pull request for more information.
2025-11-03 21:27:02 +00:00
Matthieu Riegler 434ddbcfc9 docs(docs-infra): ensure all redirections are absolute
fixes #64824
2025-11-03 21:01:45 +00:00
Matthieu Riegler 79b7ac722a refactor(core): Replace usages of the Function type for animations
`Function` is usually not recommended as its not specific enough.
2025-11-03 20:04:55 +00:00
Matthieu Riegler bfdb652f9e docs: remove feature from changelog.
#64584 reverted that change
2025-11-03 19:59:24 +00:00
Angular Robot 86d05eb1d0 docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
2025-11-03 19:54:23 +00:00
Joey Perrott 0cb1ade6e5 docs: add the version of angular being used to the footer
Include the version of angular being used for the build in the footer of the application
2025-11-03 19:45:11 +00:00
Jan Martin 50ee2072f6 ci: update handle for jkrems/hybrist
The username was changed earlier today and the old username is no
longer in use.
2025-11-03 19:43:52 +00:00
Angular Robot 2922b411e5 build: update pnpm to v10.20.0
See associated pull request for more information.
2025-10-31 22:15:02 +00:00
Angular Robot 334f856969 build: update dependency bazel to v7.7.0
See associated pull request for more information.
2025-10-31 21:52:29 +00:00
SkyZeroZx a0fe177682 docs(devtools): Removes comment about enum deprecation
Removes comment about enum deprecation
2025-10-30 19:40:07 +00:00
SkyZeroZx bd27e96273 refactor(devtools): Removes redundant input undefined in angularVersion
Simplifies the initialization of the version input by removing
an unnecessary undefined
2025-10-30 19:40:07 +00:00
Kristiyan Kostadinov b9e2ccdda8 refactor(common): remove unused import (#64699)
Cleans up unused code to improve readability and maintainability.

PR Close #64699
2025-10-30 19:27:33 +00:00
Ben Hong f321e226bd docs: update dependency injection guides (part 1) (#63652)
PR Close #63652
2025-10-30 19:22:39 +00:00
Angular Robot 5c5353d1e5 build: update cross-repo angular dependencies (#64795)
See associated pull request for more information.

PR Close #64795
2025-10-30 19:22:04 +00:00
Alan Agius 6f870cead2 ci: refactor cross-repo documentation update scripts (#64792)
Consolidate separate scripts for updating Aria, CDK, and CLI documentation into a single, unified  script. This change streamlines the documentation update process and improves maintainability. The workflow file has been updated to use the new consolidated script.

PR Close #64792
2025-10-30 19:19:20 +00:00
Angular Robot 29d6ebafe5 docs: update Angular Aria apis (#64782)
Updated Angular Aria api files.

PR Close #64782
2025-10-30 18:16:29 +00:00
Matthieu Riegler 56f26f1ada docs(docs-infra): allow cors for json files (#64783)
fixes #64710

PR Close #64783
2025-10-30 17:50:05 +00:00
SkyZeroZx 4dcb3206f7 docs: Standardize route parameter input signal & code block tags in routing docs (#64788)
PR Close #64788
2025-10-30 17:47:58 +00:00
aparziale fd09a698e3 fix(docs-infra): Cannot find module message (#64701)
Fixed the import error message in the editor section. The build would complete successfully, but an error message would be incorrectly reported.

PR Close #64701
2025-10-30 17:42:27 +00:00
Ben Hong 2123cc3a97 docs: add essential signal forms guide (#64665)
PR Close #64665
2025-10-30 17:24:58 +00:00
Joey Perrott 7dcf14dacd ci: make the github action fail when a firebase command fails (#64801)
When a firebase command line execution fails, the github action should be shown as failing instead of continuing to attempt to run and resulting in
an exit code of 0 and success

PR Close #64801
2025-10-30 17:24:25 +00:00
hawkgs c1dee66866 fix(devtools): signal graph value preview mat-tree row indentation (#64798)
Fix the identation and arrows of signal graph value preview mat-tree.

PR Close #64798
2025-10-30 17:18:29 +00:00
Andrew Scott c84d372778 feat(router): Support wildcard params with segments trailing (#64737)
this adds support for both leading and trailing segments before/after wildcard
route. Exposig the segments in a new _splat param would require a
breaking change to the return value of the matchers.

fixes https://github.com/angular/angular/issues/60821

PR Close #64737
2025-10-30 15:44:16 +00:00
Angular Robot b0c9c63784 build: update cross-repo angular dependencies
See associated pull request for more information.
2025-10-29 21:02:34 +00:00
Andrew Scott fb569ef614 refactor(core): Move patch toggles inside functions to allow tree shaking
In general, global level const will cause DCE bailouts.
2025-10-29 20:57:47 +00:00
Matthieu Riegler cfba831966 refactor(compiler): desambiguate and export RegularExpressionLiteralExpr
This allows all symbols used by `ExpressionVisitor` to be accessible.
2025-10-29 20:45:14 +00:00
Cheng-Hsuan Tsai 3784fbcc12 ci: add workflow to copy and generate aria api pages
- add a script to copy Aria API json files from `angular/aria-builds`.
- build Aria API docs from json files.
2025-10-29 20:38:33 +00:00
Matthieu Riegler 76adbbcd0a refactor(core): expose isWritableSignal to the publicApi
This is alongside the already exisiting isSignal()

fixes #64763
2025-10-29 20:31:41 +00:00
Miles Malerba 662f0e5c00 feat(docs-infra): add support for namespaces
Adds support for generating docs for namespaces (and merged declarations
of namespace + type)
2025-10-29 20:22:21 +00:00
paszesoft 6cc6d93e70 docs: Rename TodoListItem to UserProfile and fix usage of isValidUserId 2025-10-29 18:49:42 +01:00
paszesoft b5dae85b27 Update button disabled property logic in template logical bug fix
isValidUserId = true is logically wrong to use to disable the Save button.
So is logically wrong to use isValidUserId = false to enable the Save button.
Also the default state of this button should be most likely disabled, if we are bothering to check, so the initial value of the signal should most likely be set to true.
To resolve these 2 issues, I propose to use:
- isInValidUserId instead of isValidUserId and:
- isInValidUserId = signal(true); // isValidUserId = signal(false);
After these 2 changes the snippet should make logical sense.
2025-10-29 18:49:42 +01:00
SkyZeroZx f3d056a065 docs(docs-infra): Prevent empty extends clause in interface documentation
Interfaces with no extends clause were incorrectly rendered with a trailing extends keyword followed by nothing, resulting in invalid TypeScript syntax
2025-10-29 18:48:30 +01:00
Shuaib Hasan Akib 5d8b76b4fa fix(docs-infra): extract header attribute as title in multifile code snippets
The DocViewer component's getCodeSnippetsFromMultifileWrapper method was not
extracting the header attribute from nested <docs-code> elements, causing the
ExampleViewer to fall back to displaying file paths instead of custom headers
in tab labels.

This change adds title extraction from the header attribute when processing
multifile code snippets, ensuring that custom headers are properly displayed
in the code viewer tabs.

Fixes #64760
2025-10-29 18:48:00 +01:00
Angular Robot 87a3a92141 docs: update Angular CLI help
Updated Angular CLI help contents.
2025-10-29 18:47:35 +01:00
Kristiyan Kostadinov b67addf99e docs: release notes for the v21.0.0-rc.0 release 2025-10-29 18:45:04 +01:00
Kristiyan Kostadinov df206c98ca docs: release notes for the v21.0.0-next.10 release 2025-10-29 18:41:44 +01:00
Kristiyan Kostadinov a639f7adc3 docs: release notes for the v20.3.9 release 2025-10-29 18:36:50 +01:00
SkyZeroZx aaa3020b94 refactor(devtools): Improves error messaging for profiler file import
Formats error messages to display error name and message when importing profiler files fails
2025-10-29 12:38:20 +01:00
Lukas Matta 64cb08529d fix(migrations): Do not remove a template if it is referenced even with a trailing semilocon
This commit fixes a behavior where under certain conditions, the migration script ignored
a template reference with a trailing semicolon and incorrectly removed the definition
of a referenced template.

Fixes #64741
2025-10-29 10:50:56 +01:00
Alan Agius 13c386936b build: update typescript to 5.9.3
The beta version was unused in the pnpmfile.
2025-10-29 10:46:48 +01:00
Angular Robot 3ed6441d33 build: update github/codeql-action action to v4.31.0
See associated pull request for more information.
2025-10-29 10:42:53 +01:00
Angular Robot f01e904ddd build: update dependency aspect_rules_esbuild to v0.24.0
See associated pull request for more information.
2025-10-29 10:42:28 +01:00
Angular Robot 6bfedec4be build: update dependency node to v22.21.1
See associated pull request for more information.
2025-10-29 10:41:52 +01:00
Angular Robot 5a8aee6edf build: update all non-major dependencies
See associated pull request for more information.
2025-10-29 10:41:22 +01:00
Miles Malerba a7180b65db docs(forms): make FIELD experimental
Adds `@experimental` tag to `FIELD`
2025-10-29 10:40:49 +01:00
Miles Malerba 3d70d68676 refactor(forms): rename the logic property on FieldPathNode
`logic` was a confusing name, as it is a logic builder instance, not a
logic instance.
2025-10-29 10:40:07 +01:00
Miles Malerba fa13a167f1 refactor(forms): preserve logic order when apply is used on root path
In some cases the logic order was not preserved properly when using `apply`. In particular this occurs when some logic is registered on a child of the root, followed by an apply to the root, followed by further logic registered on a child. In this case the final registered logic wound up running before the applied logic.

This happened because `FieldPathNode` for a child path was caching its `LogicNodeBuilder` at creation time. This meant that if the parent's `LogicNodeBuilder` changed (e.g., due to an `apply` call), the child would still be using the old one.

This commit fixes the issue by dynamically resolving the `LogicNodeBuilder` for a child path whenever it is accessed.
2025-10-29 10:40:07 +01:00
Miles Malerba f80b51a738 refactor(forms): track arrays in a parent array by index
This commit changes arrays in a parent array to be tracked the same way
as primitive values like strings and numbers. This is necessary because
the tracking key symbol used to maintain identity for objects in an
array does not survive the array spread operation:

```
return {...oldValue} // tracking symbol preserved ✅
return [...oldValue] // tracking symbol lost ❌
```
2025-10-28 20:52:51 +01:00
Alan Agius 46d5670688 refactor(docs-infra): switch to use unit-test builder
- Deletes the old Karma configuration and test entry point.
- Updates `angular.json` to use the `@angular/build` builders.
- Adjusts test files to align with the new setup.
2025-10-28 20:52:22 +01:00
Alan Agius b4e798ed87 refactor(migrations): exclude all @angular/* packages from schematics bundle
This change updates the rollup configuration for the core schematics to exclude all `@angular/*` packages from the bundle. This is possible following https://github.com/angular/angular/pull/64703

This significantly reduces the size of the `@angular/core` schematics bundle, resulting in a size reduction to 5.8mb.
2025-10-28 20:51:50 +01:00
kirjs c57bbaa87d refactor(forms): Allow returning plain values from validators
This makes the API nicer to use
2025-10-28 20:50:45 +01:00
kirjs 8562e29be4 refactor(forms): Allow returning plain values from validators
This makes the API nicer to use
2025-10-28 20:50:45 +01:00
kirjs 28847c9a19 refactor(forms): Allow returning plain values from validators
This makes the API nicer to use
2025-10-28 20:50:45 +01:00
kirjs b5c29d0d0a refactor(forms): Allow returning plain values from validators
This makes the API nicer to use
2025-10-28 20:50:45 +01:00
Angular Robot 6fa818bc37 build: update cross-repo angular dependencies
See associated pull request for more information.
2025-10-28 20:48:52 +01:00
Andrew Scott 5a93eeb6c0 Revert "feat(router): Support wildcard params with segments trailing"
This reverts commit 0a0cc27aea.
Causes internal failures with route matching. Should investigate and add
tests to prevent future regressions.
2025-10-28 18:35:27 +01:00
Angular Robot 3032332da0 build: update cross-repo angular dependencies
See associated pull request for more information.
2025-10-28 10:26:15 -07:00
Matthieu Riegler f2de963bf3 docs(docs-infra): allow cors for json files
fixes #64710
2025-10-28 16:55:52 +01:00
Matthieu Riegler 8e50cdb930 refactor(compiler-cli): Remove deep imports of compiler-cli in angular/core
migration schematics will pull from `compiler-cli/private/migrations`
core tests will pull from `compiler-cli/private/testing`
2025-10-28 15:58:56 +01:00
Shuaib Hasan Akib 33a872d90a fix(docs-infra): update guide navigation to remain active with query params
The navigation list component was using `routerLinkActive` with
`{ exact: true }`, which required an exact URL match including query
parameters. When visiting `/update-guide?v=19.0-20.0&l=1`, the link
`/update-guide` didn't match, so the active class wasn't applied.

Updated `routerLinkActiveOptions` to ignore query parameters while
maintaining exact path matching so the navigation item stays highlighted
when interacting with the update guide form.
2025-10-28 15:58:25 +01:00
Andrew Scott a253739ac8 refactor(core): Remove zone toggles for test and standalone
The migration is complete internally. All that remains is bootstrapModule
2025-10-28 15:57:58 +01:00
arielbackenroth 07b8e953f4 refactor(http): add hooks for propagating traces across XHR callbacks.
Enables propagating a trace across XHR callbacks by providing a hook for
wrapping the callback with a function bound to the send trace context.
2025-10-28 15:08:57 +01:00
tjshiu 763db3a70b docs: align adev best practices with llm-eval 2025-10-28 15:08:12 +01:00
Angular Robot 97e5f570fb build: lock file maintenance
See associated pull request for more information.
2025-10-28 10:27:27 +01:00
Shuaib Hasan Akib e9b29c359d docs: remove shell language from terminal output block
Changed terminal output code block in installation.md from shell
language to plain text to prevent rendering of shell prompt ($).
The block displays read-only log output that users should not
execute as commands.
2025-10-28 10:26:48 +01:00
Angular Robot 1aac438c7a docs: update Angular CLI help
Updated Angular CLI help contents.
2025-10-28 10:26:01 +01:00
Matthieu Riegler be731deb7c docs: callout for provide function order 2025-10-28 10:24:55 +01:00
Shuaib Hasan Akib 8291760f9b refactor(router): remove redundant default value from routerOutletData input
Since `input()` defaults to `undefined`, the explicit initializer was unnecessary.
This improves clarity and reduces boilerplate.
2025-10-28 10:24:22 +01:00
Andrew Scott 0a0cc27aea feat(router): Support wildcard params with segments trailing
this adds support for both leading and trailing segments before/after wildcard
route. Exposig the segments in a new _splat param would require a
breaking change to the return value of the matchers.

fixes https://github.com/angular/angular/issues/60821
2025-10-28 10:23:58 +01:00
Matt Lewis 59e648913c fix(core): Clear lView from IcuIteratorState when stack is empty to prevent memory leak
If a component template contains an icu expression it is being retained until the next change detection cycle for that template. This results in a net retention of only ever a single copy of the given lView but that creates an opportunity for compounding leaks.

Change the icu i18n_icu_container_visitor to free the IcuIteratorState retained lView when the stack is empty so that garbage collection can occur when the view is discarded.
2025-10-27 19:42:18 +01:00
SkyZeroZx bfcaf17005 refactor(devtools): Improves clipboard error feedback with snackbar and logging
Enhances user experience by displaying a snackbar notification when clipboard copy fails, and logs detailed error information via the message bus
2025-10-27 19:41:54 +01:00
Matthieu Riegler eec6669733 refactor(migrations): use the applicationProviders for the zoneless migration
PR #64354 introduced the `applicationProviders` for `bootstrapModule`, this allows a simpler migration output.
2025-10-27 19:41:29 +01:00
Angular Robot b8c8bc6654 build: update rules_angular digest to 1f1aa3e
See associated pull request for more information.
2025-10-27 17:13:39 +01:00
Angular Robot 9f57ca6e8a build: update cross-repo angular dependencies
See associated pull request for more information.
2025-10-27 17:13:16 +01:00
Alan Agius 9d00c6892f build: reduce package size of @angular/core
The schematics bundle size is reduced by externalizing @angular/compiler. This reduces the package size from 11mb to 9.1mb.
2025-10-27 17:12:48 +01:00
csorrentino a5678f6f2b refactor(forms): add onError callback to validateHttp for HTTP errors
Adds onError callback inside validateHttp validator in signal forms

PR-Close: #63949
2025-10-27 17:12:25 +01:00
Matthew Beck b478e91068 fix(compiler): support arbitrary nesting in :host-context()
Previously we supported one level of nested pseudo-element selectors
inside :host-context(), e.g. :host-context(:is(.foo, .bar)). This was
based on a regex-based approach. We could support deeper levels of
nesting by updating the regex, but using a regex approach prohibits us
from supporting arbitrary nesting.

Rather than just adding one more level to the existing expression, I've
added a new generator function which splits selectors on commas in a
parenthesis-aware way. This allows us to support arbitrary nesting.

It's likely we'll want to reuse this in other places where we're not as
careful today. We'll probably do this on a request-based basis, though.

Fixes #59176
2025-10-27 13:40:47 +01:00
Alan Agius 7a187a3bfd build: remove unused rollup-plugin-sourcemaps dependency
This dependency is not used as we use `rollup-plugin-sourcemaps2` instead.
2025-10-27 13:39:59 +01:00
Alan Agius fffd34bb6e build: add @babel/core to list of rollup_runtime_deps
This will be needed following https://github.com/devversion/rules_angular/pull/72
2025-10-27 13:39:33 +01:00
Alan Agius 25e8bcbdf6 build: refactor location of best-practices.md
This commit moves the best-practices.md file from adev/src/context to packages/core/resources. The BUILD.bazel files and other configuration files have been updated to reflect this change.
2025-10-27 09:31:36 +01:00
Angular Robot 9b0940db37 build: update all github actions to v5
See associated pull request for more information.
2025-10-27 09:30:46 +01:00
Angular Robot ae3a88c5f3 build: update all non-major dependencies
See associated pull request for more information.
2025-10-27 09:30:13 +01:00
Shuaib Hasan Akib 27e183330e fix(docs-infra): preserve shell class for multifile code blocks
The ExampleViewer component was extracting only innerHTML from code
blocks in multifile examples, which lost the shell class applied by
the formatCode function. This caused the $ prompt to not appear for
shell commands in multifile blocks even when language="shell" was set.

Modified the Snippet interface to track shell language state and
updated getCodeSnippetsFromMultifileWrapper and getStandaloneCodeSnippet
methods to preserve the shell class. Updated example-viewer template
to conditionally apply the shell class to the code wrapper element.

Fixes inconsistency between standalone and multifile shell code blocks.
2025-10-27 09:29:37 +01:00
idembele70 202fceed73 docs: fix accessibility of @empty block message 2025-10-27 09:29:10 +01:00
Angular Robot 7e41d6d44a build: update cross-repo angular dependencies
See associated pull request for more information.
2025-10-27 09:28:11 +01:00
Miles Malerba 01e1ad2b37 refactor(forms): fix some typos
Fix some typos in signal forms code
2025-10-27 09:27:02 +01:00
Alan Agius 53287bce9b refactor(docs-infra): streamline adev build configuration
This commit introduces a number of changes to streamline the build configuration for adev, the documentation application.
2025-10-27 09:26:23 +01:00
SkyZeroZx c5e6b8bdc8 docs: Adds guide links to HTTP API docs for better discoverability 2025-10-27 09:25:56 +01:00
aparziale e155a1e9d7 refactor: inject an instance of typescript-vfs.worker
Modified tsVfsWorker worker initialization logic
2025-10-27 09:24:55 +01:00
Andrew Scott a03c82564d feat(router): Add scroll behavior controls on router navigation
This commit adds the ability to control the behavior of scrolling in the
`NavigationBehaviorOptions`. The options directly correlate with the
intercept options of the Navigation API `NavigateEvent#intercept`:
https://developer.mozilla.org/en-US/docs/Web/API/NavigateEvent/intercept#scroll

While we do not currently have an integration with the navigation API,
this change would be necessary to provide the ability to configure that behavior
if/when we do. In the meantime, this option is also useful to control
the behavior of scrolling when the in memory scroller is enabled.

resolves #26744
2025-10-27 09:24:26 +01:00
AleksanderBodurri c963569c0e refactor(devtools): use getRouterInstance to replace manual parsing logic
Previously we would look in the DI tree for a token named 'Router' and resolve its value.

Now we use the already existing getRouterInstance, which depends on ng global debug APIs to get the router instance of an application.
2025-10-27 09:23:16 +01:00
AleksanderBodurri ecfcaba3b1 feat(devtools): Use "App Root" as name for root of router tree.
Previously '/' could cause confusion with other routes that use a path here. I think because this node is unique in that it is not actually a "Route" we should make it clear with the label that is simply the App Root.
2025-10-27 09:22:33 +01:00
Andrew Scott dd09da8ba2 refactor(router): Add provider for integrating with Navigation API and Location shim
This adds a (private) provider for integrating with the browser Navigation API.
This provider ensures that interactions with the `Location` service
use the underlying platform navigation rather than the history and
location APIs.
2025-10-27 09:21:56 +01:00
Kristiyan Kostadinov b5f8d0b5b1 fix(docs-infra): fix broken adev tests
Fixes some adev tests that are broken on main.
2025-10-24 21:28:29 +02:00
Alan Agius 620e2c4926 Revert "build: refactor location of best-practices.md"
This reverts commit 07a51872d5.
2025-10-24 19:02:37 +02:00
Angular Robot d7e5aeaf0d build: update cross-repo angular dependencies
See associated pull request for more information.
2025-10-24 18:48:13 +02:00
Angular Robot 1acc0bcef5 build: update all non-major dependencies to v7.28.5
See associated pull request for more information.
2025-10-24 18:47:48 +02:00
Matthieu Riegler 6e7b3c2aa6 docs(docs-infra): Support linking to individual playground templates 2025-10-24 18:47:09 +02:00
SkyZeroZx a3639e2258 feat(common): Blocks IPv6 localhost from preconnect checks
Prevents unnecessary preconnect warnings by adding IPv6 loopback ('[::1]') to the blocklist.
2025-10-24 18:46:43 +02:00
SkyZeroZx 207baad322 refactor(common): Add missing OnDestroy interface in PreconnectLinkChecker
The OnDestroy interface was implemented but not declared; this adds the missing interface declaration
2025-10-24 18:46:43 +02:00
Andrew Scott 48abe007d9 fix(zone.js): Support jasmine v6
This fixes the jasmine patch to ensure we are patching the private APIs
off of the right location, which changed in v6.

see https://github.com/jasmine/jasmine/commit/168ff0a751b6280b170ce097410d77a4c7c1f449
2025-10-24 18:46:04 +02:00
Alan Agius 07a51872d5 build: refactor location of best-practices.md
This commit moves the best-practices.md file from adev/src/context to packages/core/resources. The BUILD.bazel files and other configuration files have been updated to reflect this change.
2025-10-24 18:45:32 +02:00
Angular Robot 029ed83e8b docs: update Angular CLI help
Updated Angular CLI help contents.
2025-10-24 16:19:06 +02:00
Angular Robot 1a0d2daef0 build: update all non-major dependencies
See associated pull request for more information.
2025-10-24 15:26:25 +02:00
Angular Robot b258d01f89 build: update cross-repo angular dependencies
See associated pull request for more information.
2025-10-24 15:25:32 +02:00
jase88 cdfd073448 docs: update workspace configuration link in security documentation 2025-10-24 15:25:10 +02:00
SkyZeroZx b1a0bad342 docs: Fix syntax highlighting & formatting in HTTP guide 2025-10-24 15:23:58 +02:00
Matthieu Riegler 57af0d7e1b docs(docs-infra): enable strict templates 2025-10-24 15:23:26 +02:00
Angular Robot 0d38cbf56b docs: update Angular CDK apis (#64643)
Updated Angular CDK api files.

PR Close #64643
2025-10-24 09:38:26 +02:00
Angular Robot 77ead34cc7 build: update dependency vitest to v4 (#64635)
See associated pull request for more information.

PR Close #64635
2025-10-24 09:35:52 +02:00
Angular Robot ccf6721a4d build: update all non-major dependencies (#64634)
See associated pull request for more information.

PR Close #64634
2025-10-24 09:35:15 +02:00
Angular Robot bbae71c93e build: update cypress-io/github-action action to v6.10.3 (#64633)
See associated pull request for more information.

PR Close #64633
2025-10-24 09:34:26 +02:00
Angular Robot f6d7375026 build: update cross-repo angular dependencies (#64629)
See associated pull request for more information.

PR Close #64629
2025-10-24 09:32:54 +02:00
Alan Agius 4887dc883f build: enable auto merge strategy for pull requests (#64624)
This commit enables the 'auto' merge strategy for pull requests.
This strategy automatically determines the best merge method based on the
pull request's commits.

The auto merge strategy can:
- Delegate to the autosquash merge strategy if the PR has fixup/squash
  commits against multiple normal commits.
- Squash commits if the PR has only one normal commit and some
  fixup/squash commits.
- Rebase commits if the PR has no fixup/squash commits.

This improves the developer experience by automating the merge process. A
key benefit is that PRs that can be cleanly rebased will now appear as
'merged' in GitHub's UI, providing a clearer history than the previous
'unmerged' status that could occur with squashing.

Additionally, `dev-infra` and `bazel` are removed from the exempted scopes
for target labels as they are no longer necessary.

PR Close #64624
2025-10-24 09:32:13 +02:00
Matthieu Riegler 15d4bd58d1 fix(forms): interop supports CVAs with signals (#64618)
The directive implemnetation might set CVA values during the template evaluation. Since the template is a reactive context we need to untrack when setting the CVA values to prevent writing to signals in a reactive context.

fixes #64614

PR Close #64618
2025-10-24 09:31:39 +02:00
Andrew Scott e2346dbfac refactor(router): Compress middle of navigation pipeline to fewer operators (#64480)
This cleans up the navigation transitions a bit by removing some
unnecessary operators. Combining operators makes debugging easier by
making it possible to step through the code.

PR Close #64480
2025-10-24 09:31:05 +02:00
Miles Malerba 55e1647e52 fix(core): ensure @for iteration over field is reactive (#64113)
When working with a proxy object such as signal forms' `Field`,
accessing the `lenght` or `Symbol.iterator` may trgger a reactive read.
This change ensures that `@for` properly captrues this before clearing
the active consumer.

PR Close #64113
2025-10-24 09:29:29 +02:00
Miles Malerba 515c2949d8 test(forms): test reactive iteration over array field (#64113)
Adds a test that verifies @for iteration over an array field is actually
reactive to new items being added to the array.

PR Close #64113
2025-10-24 09:29:29 +02:00
Angular Robot e47ef3e691 docs: update Angular CLI help (#64621)
Updated Angular CLI help contents.

PR Close #64621
2025-10-23 18:29:27 +02:00
Angular Robot 13d8ccc41b build: update cross-repo angular dependencies (#64622)
See associated pull request for more information.

PR Close #64622
2025-10-23 18:24:58 +02:00
Miles Malerba ef34e39b2a refactor(forms): rename files related to metadata (#64603)
Renames some files to reflect the property => metadata name change

PR Close #64603
2025-10-23 18:13:16 +02:00
Miles Malerba 884765be56 refactor(forms): rename field state related to metdata (#64603)
Renames the field state related to metadata to reflect the new
"metadata" name. In particular:
- `property(...)` is renamed to `metadata(...)`
- `hasProperty(...)` is renamed to `hasMetadata(...)`

PR Close #64603
2025-10-23 18:13:16 +02:00
Miles Malerba b29e6469ed refactor(forms): rename logic functions related to metadata (#64603)
Renames logic functions related to metadata to align with the new
"metadata" name. Notably:
- `property(...)` => `metadata(...)`
- `aggregateProperty(...)` => `aggregateMetadata(...)`

PR Close #64603
2025-10-23 18:13:16 +02:00
Miles Malerba ef37ecf444 refactor(forms): rename Property and AggregateProperty (#64603)
These have been renamed to `MetadataKey` and `AggregateMetadataKey`
respectively. The team consensus is that the term "property" is so
overloaded that it makes the topic difficult to explain & discuss, hence
the rename.

PR Close #64603
2025-10-23 18:13:16 +02:00
Angular Robot 6a3e881542 build: update cross-repo angular dependencies (#64616)
See associated pull request for more information.

PR Close #64616
2025-10-23 16:01:28 +02:00
Angular Robot 3ace778667 build: update cross-repo angular dependencies (#64609)
See associated pull request for more information.

PR Close #64609
2025-10-23 12:39:17 +02:00
Angular Robot 07a6379de4 build: update pnpm to v10.19.0 (#64606)
See associated pull request for more information.

PR Close #64606
2025-10-23 12:37:04 +02:00
Angular Robot 69b167c9d4 build: update dependency aspect_rules_js to v2.7.0 (#64605)
See associated pull request for more information.

PR Close #64605
2025-10-23 12:36:15 +02:00
Angular Robot e944763e12 build: update dependency preact-render-to-string to v6.6.3 (#64604)
See associated pull request for more information.

PR Close #64604
2025-10-23 12:35:26 +02:00
SkyZeroZx 03f90d7e56 docs: Add router config options (#64529)
PR Close #64529
2025-10-23 12:34:55 +02:00
Andrew Scott d4d6c28023 fix(router): handle parenthesized outlets without a name in DefaultUrlSerializer (#64507)
Previously, the `DefaultUrlSerializer` would incorrectly parse URLs with a parenthesized outlet that did not have a name, such as `/(left)`. This would result in an `undefined` outlet name in the serialized URL.

This commit fixes the issue by ensuring that parenthesized outlets without a name are treated as primary outlets.

fixes #58516. Based on the description, either the URL was constructed
manually or by custom serializer.

PR Close #64507
2025-10-23 12:33:57 +02:00
Andrew Scott ced2fa5253 refactor(zone.js): Improve missing proxy zone error for jest imported (#64497)
test functions

This improves the fakeAsync error message when importing it, describe,
etc from jest

We will not be further expanding the ZoneJS patches to support
additional use-cases.

fixes #47603

PR Close #64497
2025-10-22 23:26:23 +00:00
Angular Robot f0debd5245 build: update cross-repo angular dependencies (#64597)
See associated pull request for more information.

PR Close #64597
2025-10-22 21:45:34 +00:00
Jessica Janiuk be1598fded docs: release notes for the v21.0.0-next.9 release 2025-10-22 14:27:02 -07:00
Jessica Janiuk b21ed32ec0 release: bump the next branch to v21.1.0-next.0 2025-10-22 14:27:02 -07:00
Jessica Janiuk fcf7eeec45 docs: release notes for the v20.3.7 release 2025-10-22 14:07:48 -07:00
Angular Robot 893af8b64c build: update cross-repo angular dependencies (#64593)
See associated pull request for more information.

PR Close #64593
2025-10-22 20:24:15 +00:00
Jessica Janiuk 81bd671906 fix(core): prevent duplicate nodes from being retained with fast animate.leave` calls (#64592)
We were clearing duplicate nodes when `animate.enter` fired fast, but not when solely `animate.leave` is fired and rapid toggles occur. This ensures that the `cancelLeavingNodes` function is called in all cases instead of just enter animations.

fixes: #64581

PR Close #64592
2025-10-22 19:07:34 +00:00
kirjs a3e91b2e96 refactor(forms): Add a test better documenting behavior of the error function in built-in validators (#63993)
We will need to find a better way to name it.

PR Close #63993
2025-10-22 18:27:37 +00:00
Jessica Janiuk e039c6be02 refactor(compiler): Throw an error when old and new animations are used together (#64569)
This adds a new compilation error if someone attempts to put legacy animations and `animate.enter` or `animate.leave` in the same component.

PR Close #64569
2025-10-22 17:14:47 +00:00
Matthieu Riegler 1f389b8b97 fix(compiler-cli): missingStructuralDirective diagnostic produces false negatives (#64579)
Fixes a bug in the missingStructuralDirective diagnostic where structural directives with missing imports were not reported when the element using the structural directive contained other directives

Fixes #64467

co-authored-by: Matt Lewis <npm@mattlewis.me>

PR Close #64579
2025-10-22 16:41:27 +00:00
Kristiyan Kostadinov 9d48e534e2 Revert "feat(router): allow router outlet to be set on ng-container (#64562)" (#64584)
This reverts commit 2bd764a3c4.

PR Close #64584
2025-10-22 16:35:38 +00:00
Angular Robot 99271bbeed build: update cross-repo angular dependencies (#64587)
See associated pull request for more information.

PR Close #64587
2025-10-22 15:53:09 +00:00
Angular Robot 9fef846f99 build: update cross-repo angular dependencies (#64585)
See associated pull request for more information.

PR Close #64585
2025-10-22 15:25:37 +00:00
Angular Robot 5cca9e60b2 build: update cross-repo angular dependencies (#64582)
See associated pull request for more information.

Closes #64576 as a pr takeover

PR Close #64582
2025-10-22 14:50:04 +00:00
Matthieu Riegler 9126d0d616 docs(docs-infra): fix example viewer (#64580)
It was a regression introduced by #63915

PR Close #64580
2025-10-22 14:35:03 +00:00
SkyZeroZx 22270492f5 docs(docs-infra): Add OnPush change detection for components (#64570)
Improves Angular's OnPush change detection strategy for main and search history components

PR Close #64570
2025-10-22 14:34:26 +00:00
Jessica Janiuk 59a7163194 docs: update animation guide with compatibility details (#64567)
This adds a section about using legacy animations alongside animate.enter and leave.

PR Close #64567
2025-10-22 14:30:43 +00:00
Angular Robot 23498a3146 build: update dependency @types/node to v24.9.1 (#64571)
See associated pull request for more information.

PR Close #64571
2025-10-22 14:30:03 +00:00
Angular Robot 584dd4ac5b build: update dependency rules_nodejs to v6.6.0 (#64572)
See associated pull request for more information.

PR Close #64572
2025-10-22 14:22:48 +00:00
Joey Perrott a1868c9d13 feat(common): update to cldr 47 (#64032)
Update to CLDR version 47 for localization

PR Close #64032
2025-10-21 23:23:30 +00:00
Jessica Janiuk 70332b0453 fix(core): pass element removal property through in all locations (#64565)
The `requireSynchronousElementRemoval` property was not being passed in all the locations it was needed. This was preventing leave animation timing from behaving properly in some cases.

fixes: #64525

PR Close #64565
2025-10-21 18:08:34 +00:00
Leon Senft fd9af2afaf fix(forms): only propagate schema defined properties from field to control (#64446)
Prior to this change, `FieldState` defined a signal for each built-in
property. This unfortunately meant that the `Field` directive had no way
of knowing which property had actually been defined in the schema, and
would thus attempt to propagate them all to the bound form control. This
meant that the default values of these signals would override the
default or template defined values of these control properties.

Now these properties are `undefined` by default, and only initialized if
defined in the schema. Thus the `Field` directive will not attempt to
bind any properties that aren't explicitly managed by the schema.

PR Close #64446
2025-10-21 17:38:34 +00:00
Leon Senft 4261a8c583 refactor(forms): use FormValueControl instead of FormUiControl (#64446)
`FormUiControl` is the base type used for shared properties of
`FormValueControl` and `FormCheckboxControl`.

PR Close #64446
2025-10-21 17:38:34 +00:00
Leon Senft 6fca0e03ff test(forms): propagate pattern property to custom control input (#64446)
Note that unlike the other built-in properties, `pattern` is not
propagated to native controls so the lack of symmetry with other
property tests is intentional.

PR Close #64446
2025-10-21 17:38:34 +00:00
cexbrayat 9c5e969f51 fix(forms): bind invalid input in custom controls (#64526)
FormUiControl has an `invalid` input signal, but it was not bound by the control instructions.

PR Close #64526
2025-10-21 17:37:58 +00:00
JoostK 2b257b3659 fix(animations): account for Element.animate exceptions (#64506)
In certain scenarios `Element.animate` fails, manifesting in an exception (Firefox)
or a null return value (Chromium). The null value is not conform WebIDL but handled
gracefully in this commit regardless.

Closes #64486

PR Close #64506
2025-10-21 16:49:42 +00:00
Kristiyan Kostadinov 2bd764a3c4 feat(router): allow router outlet to be set on ng-container (#64562)
Updates the selector for `RouterOutlet` to allow for it to be set on an `ng-container`. This allows it to not render the host node which can affect the layout.

Fixes #64553.

PR Close #64562
2025-10-21 16:49:06 +00:00
Angular Robot 3d9837b4aa build: update dependency node to v22.21.0 (#64558)
See associated pull request for more information.

PR Close #64558
2025-10-21 16:46:35 +00:00
Angular Robot ba7ca96173 build: update dependency @types/node to v24.9.0 (#64557)
See associated pull request for more information.

PR Close #64557
2025-10-21 16:46:04 +00:00
Angular Robot da2603e699 build: update rules_browsers digest to 6a699bf (#64556)
See associated pull request for more information.

PR Close #64556
2025-10-21 16:44:08 +00:00
Angular Robot d9126eaed1 build: update cross-repo angular dependencies (#64563)
See associated pull request for more information.

PR Close #64563
2025-10-21 16:41:47 +00:00
Kristiyan Kostadinov 196fa500a3 fix(common): properly type ngComponentOutlet (#64561)
Resolves an older TODO about properly typing the `ngComponentOutlet` input.

PR Close #64561
2025-10-21 15:25:13 +00:00
SkyZeroZx 581a05a592 docs: Standardizes code example formatting in Angular Tools and fixed highlight (#64554)
PR Close #64554
2025-10-21 15:19:27 +00:00
Matthieu Riegler 50a55d6afb refactor(devtools): use preview value in property editor (#64552)
This way only the `preview` property handles the `Signal()` wrapper (and not individual components anymore)

PR Close #64552
2025-10-21 15:18:56 +00:00
Jessica Janiuk 44127bf53f refactor(core): clarify comments on enter animation queuing (#64550)
This just updates the comments and adds some tests to verify some of the queuing behavior for enter animations.

PR Close #64550
2025-10-21 15:17:13 +00:00
SkyZeroZx 1923e52b12 refactor(core): Removes unused trigger parameter from scheduleDelayedPrefetching (#64517)
Simplifies delayed prefetching calls by eliminating an unnecessary trigger argument

PR Close #64517
2025-10-21 15:16:39 +00:00
SkyZeroZx 5e55b87202 docs(docs-infra): Improves navigation list readability by balancing text wrapping (#64512)
Balances text wrapping for navigation items to enhance readability

PR Close #64512
2025-10-21 15:14:35 +00:00
SkyZeroZx a17ce50a21 docs: Add DestroyRef.destroyed and usage in lifecycle guide (#64422)
PR Close #64422
2025-10-21 15:12:49 +00:00
SkyZeroZx 8d1e9796d6 docs: add references to SSR guide for caching options (#64347)
PR Close #64347
2025-10-21 15:12:15 +00:00
cexbrayat bc9c814ca7 refactor(forms): remove Mutable from signal forms public API (#64436)
The `Mutable` type is only used internally in the `addDefaultField` function, so it can be avoided to be publicly exposed.

PR Close #64436
2025-10-20 21:20:11 +00:00
Andrew Scott 7afc193016 fix(router): Fix outlet serialization and parsing with no primary children (#64505)
this fixes tree creation, serialization, and parsing of trees created with
children outlets and no primary path

fixes #62384

PR Close #64505
2025-10-20 21:18:46 +00:00
Matthieu Riegler 54636eacca docs(docs-infra): Extract multiple extends statements for interfaces (#64539)
fixes #64528

PR Close #64539
2025-10-20 21:18:13 +00:00
Angular Robot dff4a27590 build: update cross-repo angular dependencies (#64547)
See associated pull request for more information.

PR Close #64547
2025-10-20 21:16:31 +00:00
hawkgs 9b7a79af3a refactor(devtools): update debug signal node type to match core type (#64127)
Use a union string type instead of a generic string.

PR Close #64127
2025-10-20 20:15:46 +00:00
hawkgs daaad1e6b0 refactor(core): narrow down ReactiveNode.kind type (#64127)
Use a string union type instead of a generic string.

PR Close #64127
2025-10-20 20:15:46 +00:00
Andrew Scott f6a73f1913 fix(router): Respect custom UrlSerializer handling of query parameters (#64449)
Previously, query parameters passed to `router.createUrlTree` were simply converted to strings. This meant that any custom serialization logic in a custom `UrlSerializer` was not applied. This could lead to inconsistencies between navigations triggered from the URL bar (which are parsed by the serializer) and navigations triggered programmatically.

This change ensures that query parameters are normalized using the provided `UrlSerializer`. The values are serialized and then parsed to ensure they are in the same format as if they had come from a URL. This allows custom serializers to handle complex objects in query parameters consistently.

Fixes https://github.com/angular/angular/issues/47307

PR Close #64449
2025-10-20 18:42:56 +00:00
Andrew Scott 7fb7511124 fix(router): Surface parse errors in Router.parseUrl (#64503)
logs error in addition to fallback parse

fixes #54937

PR Close #64503
2025-10-20 17:51:29 +00:00
Kristiyan Kostadinov c2d376b85a feat(core): make SimpleChanges generic (#64535)
Currently it's easy to make a mistake when accessing properties on `SimpleChanges`, because the keys aren't typed. These changes add an optional generic to the interface so that users can get a compilation error if they make a typo.

A few things to note:
1. The generic argument is optional and we revert to the old behavior if one isn't passed for backwards compatibility.
2. All of the keys are optional, because they aren't guaranteed to be present for any `ngOnChanges` invocation.
3. We unwrap the values of input signals to match the behavior at runtime.

Fixes #17560.

PR Close #64535
2025-10-20 17:49:39 +00:00
Kristiyan Kostadinov f1f24b9697 refactor(core): move interfaces around (#64535)
Moves the `SimpleChange` and lifecycle hook interfaces so that they can import other symbols from `core`.

PR Close #64535
2025-10-20 17:49:39 +00:00
Andrew Scott 80e00ff4e5 fix(language-service): prevent interpolation from superseding block braces (#64392)
This change omits the injection of the template syntaxes inside any
existing block scope. The injection is not needed because the template
and expression scopes are included explicitly as patterns where
appropriate under the template-blocks definitions.

This change prevents the interpolation curly braces from superseding the
match for the open curly of the block body. This issue also happens with
ICUs (#62697), but those do not have any named scopes to exclude as of
today.

fixes https://github.com/angular/vscode-ng-language-service/issues/1991

PR Close #64392
2025-10-20 17:49:04 +00:00
Andrew Scott 25d45ba32d refactor(router): Use promise array for loadComponent (#64450)
This further simplifies the `loadComponent` logic in the Router by using
the promise returned from the config loader directly instead of
converting it to an observable.

PR Close #64450
2025-10-20 17:11:23 +00:00
Angular Robot 657f310373 build: update cross-repo angular dependencies (#64544)
See associated pull request for more information.

PR Close #64544
2025-10-20 17:09:12 +00:00
Angular Robot fad6e1351e build: update all non-major dependencies (#64514)
See associated pull request for more information.

PR Close #64514
2025-10-20 16:13:17 +00:00
Angular Robot aca2f758d3 build: lock file maintenance (#64533)
See associated pull request for more information.

PR Close #64533
2025-10-20 16:03:34 +00:00
Jessica Janiuk e464aac177 build: bump leftover dependency of typescript (#64543)
This package json was missed when we recently bumped ts versions.

PR Close #64543
2025-10-20 15:37:18 +00:00
Leon Senft 505bde1fed fix(forms): mark field as dirty when value is changed by ControlValueAccessor (#64471)
This corresponds with fixes made for native and custom signal form
controls: https://github.com/angular/angular/pull/64483.

PR Close #64471
2025-10-20 15:35:42 +00:00
Leon Senft a0f3960270 refactor(forms): prefix framework-private methods on Field with ɵ (#64471)
These methods are only intended to be used internally within framework
instructions. Prefix them with `ɵ` to indicate that they are
framework-private and should not be called from user code.

PR Close #64471
2025-10-20 15:35:42 +00:00
Leon Senft 94b0afec00 fix(forms): implement interoperability between signal forms and reactive forms (#64471)
Add support for interoperability between signal forms and reactive forms that
commit effccffde0 had removed.

A signal forms field can once again be bound to any element or component with a
`ControlValueAccessor`.

PR Close #64471
2025-10-20 15:35:42 +00:00
AleksanderBodurri 9a1735aee8 fix(devtools): revert router tree dashed edges for lazy routes (#64532)
From my investigation what I know for sure:
- when the graph pans or zooms it updates the transform property on the g element, which in turn causes the browser to repaint the visible space in the g element
- stroke-dasharray is the cause of major performance issues in large graphs.

What I suspect:
- When the g element repaints, it also has to repaint all of the child svg elements. When the dashed line path svgs repaint, the stroke-dasharray calculation is not GPU accelerated, but instead occurs on the CPU, causing extreme lag whenever the svg graph is panned or zoomed.

Temporary solution: remove this dashed edge functionality. We can investigate alternatives for communicated that a path is lazy loaded.

Future long term solution: migrate to canvas based graph renderer for router tree and injector graph.

PR Close #64532
2025-10-20 15:32:49 +00:00
Angular Robot 9c7029c57a build: update dependency @types/firefox-webext-browser to v143 (#64518)
See associated pull request for more information.

PR Close #64518
2025-10-20 14:51:17 +00:00
Angular Robot 8a946ac8df build: update rules_browsers digest to 0e0949d (#64536)
See associated pull request for more information.

PR Close #64536
2025-10-20 14:49:03 +00:00
Alan Agius 373580c706 docs: add browser support for v21 (#64540)
Adds the browser support information for Angular v21, setting the baseline date to 2025-10-20.

PR Close #64540
2025-10-20 14:46:14 +00:00
Matthieu Riegler 69749800c9 docs: add more details on critical inlining. (#64292)
fixes #42682

PR Close #64292
2025-10-20 14:45:37 +00:00
Angular Robot 810505fa2e build: update github/codeql-action action to v4.30.9 (#64520)
See associated pull request for more information.

PR Close #64520
2025-10-20 14:41:03 +00:00
Jessica Janiuk 75c1849fb3 Revert "fix(compiler-cli): missingStructuralDirective diagnostic produces false negatives (#64470)" (#64541)
This reverts commit c1d870bd38.

PR Close #64541
2025-10-20 14:39:18 +00:00
Jessica Janiuk c60ab336c9 Revert "fix(router): Respect custom UrlSerializer handling of query parameters (#64449)" (#64511)
This reverts commit 46ae034c70.

PR Close #64511
2025-10-18 00:19:40 +00:00
Jessica Janiuk e7bdf87ebc Revert "refactor(router): Use promise array for loadComponent (#64450)" (#64510)
This reverts commit cc5d698e0a.

PR Close #64510
2025-10-18 00:19:07 +00:00
Matt Lewis c1d870bd38 fix(compiler-cli): missingStructuralDirective diagnostic produces false negatives (#64470)
Fixes a bug in the missingStructuralDirective diagnostic where structural directives with missing imports were not reported when the element using the structural directive contained other directives

Fixes #64467

PR Close #64470
2025-10-17 19:57:59 +00:00
SkyZeroZx 9a7529dd66 fix(compiler): correctly compile long numeric HTML entities (#64297)
Fixes an issue where long numeric HTML entities (e.g. &#x1F6C8;) were incorrectly compiled due to the use of 4-digit

PR Close #64297
2025-10-17 18:23:44 +00:00
Alan Agius 062a696673 refactor(platform-server): use URL constructor for robust parsing (#64494)
The existing implementation of `PlatformLocation` uses a custom URL parsing mechanism that can be brittle and doesn't properly update the `href` property. This change refactors the URL parsing to use the native `URL` constructor, providing more robust and accurate parsing of URLs, which also correctly updates the `href` property.

The tests for `PlatformLocation` have also been moved to a dedicated file to improve organization and clarity.

PR Close #64494
2025-10-17 18:17:15 +00:00
Andrew Scott cc5d698e0a refactor(router): Use promise array for loadComponent (#64450)
This further simplifies the `loadComponent` logic in the Router by using
the promise returned from the config loader directly instead of
converting it to an observable.

PR Close #64450
2025-10-17 17:41:30 +00:00
SkyZeroZx 44554d2d09 docs: Update FormArray.push usage (#64499)
PR Close #64499
2025-10-17 17:40:51 +00:00
Andrew Scott 46ae034c70 fix(router): Respect custom UrlSerializer handling of query parameters (#64449)
Previously, query parameters passed to `router.createUrlTree` were simply converted to strings. This meant that any custom serialization logic in a custom `UrlSerializer` was not applied. This could lead to inconsistencies between navigations triggered from the URL bar (which are parsed by the serializer) and navigations triggered programmatically.

This change ensures that query parameters are normalized using the provided `UrlSerializer`. The values are serialized and then parsed to ensure they are in the same format as if they had come from a URL. This allows custom serializers to handle complex objects in query parameters consistently.

Fixes https://github.com/angular/angular/issues/47307

PR Close #64449
2025-10-17 17:30:46 +00:00
Angular Robot 1d40465d5f build: update cross-repo angular dependencies (#64495)
See associated pull request for more information.

PR Close #64495
2025-10-17 16:05:29 +00:00
Leon Senft 3529877772 fix(forms): mark field as dirty when value is changed by a bound control (#64483)
Fix https://github.com/angular/angular/issues/64465.
Fix https://github.com/angular/angular/issues/63623.

PR Close #64483
2025-10-17 16:02:16 +00:00
Leon Senft 348a8f3195 test(forms): remove redundant test cases (#64483)
These were made redundant by https://github.com/angular/angular/pull/63884.

PR Close #64483
2025-10-17 16:02:16 +00:00
Leon Senft e9740662c3 test(forms): field directive marks field as touched on 'blur' events (#64485)
This was implemented but missing a test case.

PR Close #64485
2025-10-17 14:53:02 +00:00
SkyZeroZx ecb2507c8b docs(docs-infra): Corrects repo name typo in entry parsing logic (#64487)
Ensures the repository reference uses the correct name to prevent confusion and maintain consistency across generated documentation entries.

PR Close #64487
2025-10-17 14:52:24 +00:00
SkyZeroZx 7d7b4be762 docs: add matrix parameters docs and examples (#64459)
PR Close #64459
2025-10-17 14:45:55 +00:00
Angular Robot 10aa4f9cf3 build: update all non-major dependencies (#64488)
See associated pull request for more information.

PR Close #64488
2025-10-17 14:37:21 +00:00
Alan Agius 3cfa6e872d build: remove unused commit message scopes (#64492)
Removes a number of commit message scopes that are no longer in use.

- `bazel`: Now part of `dev-infra`
- `changelog`: The changelog is autogenerated and doesn't have dedicated commits.
- `packaging`: Is handled by `dev-infra` as well.

PR Close #64492
2025-10-17 14:31:36 +00:00
SkyZeroZx 60c62bd771 docs: Documents sourcesContent option for source maps (#64482)
PR Close #64482
2025-10-17 14:29:51 +00:00
Uaena_Alex_John 2761d9e518 docs: Change import statement to use 'inject' function (#64491)
PR Close #64491
2025-10-17 14:29:12 +00:00
Jessica Janiuk c241038111 fix(core): update symbols (#64481)
the DeferComponent symbols got added twice.

PR Close #64481
2025-10-16 21:31:53 +00:00
Jessica Janiuk f7776faa72 docs: release notes for the v20.3.6 release 2025-10-16 13:29:57 -07:00
Matthieu Riegler 95e1632650 refactor(platform-browser): remove unecessary export. (#64469)
The usage has been removed from g3.

PR Close #64469
2025-10-16 18:52:54 +00:00
Matthieu Riegler b7c47d8fad refactor(devtools): Create a separate type of signals for after effect phases. (#64315)
With this change, we ensure afterRenderEffect phases nodes appear more like "effects" than regular signal node.

PR Close #64315
2025-10-16 18:47:13 +00:00
Angular Robot 4833fa75eb build: update cross-repo angular dependencies (#64474)
See associated pull request for more information.

PR Close #64474
2025-10-16 18:22:00 +00:00
Jessica Janiuk aab73671e4 fix(core): update animation scheduling (#64441)
In some rare cases, it seems the animation queue disappears despite being afterEveryRender. This updates the animation scheduler to be afterNextRender instead and only schedules it when we need to.

fixes: #64423

PR Close #64441
2025-10-16 17:35:49 +00:00
SkyZeroZx 9e4ba3ea71 docs: Fixes DI guide reference missing ')' in see tag (#64457)
PR Close #64457
2025-10-16 17:34:17 +00:00
Jessica Janiuk dfdcbf7f91 refactor(compiler): add ts-ignore for typescript upgrade (#64468)
This is a quick ts-ignore add to suppress something for later.

PR Close #64468
2025-10-16 17:32:19 +00:00
Angular Robot ffeb342148 build: update cross-repo angular dependencies (#64472)
See associated pull request for more information.

PR Close #64472
2025-10-16 17:30:07 +00:00
Matthieu Riegler 2e4659648a refactor(zone.js): remove legacy browser support (#63511)
This commit removes the support for legacy browsers.

BREAKING CHANGE: IE/Non-Chromium Edge are not supported anymore.

PR Close #63511
2025-10-16 14:58:45 +00:00
SkyZeroZx df780fae18 docs: Add docs for EVENT_MANAGER_PLUGINS (#64453)
PR Close #64453
2025-10-16 14:54:47 +00:00
SkyZeroZx 6af231e2d6 refactor(devtools): Replace console warnings with snackbar notifications (#64458)
Improves user experience by displaying UI notifications when attempting to view source for unsupported routes, replacing developer-only console warnings with visible snackbars

PR Close #64458
2025-10-16 14:41:34 +00:00
Matthieu Riegler 1ea5a993f2 docs(docs-infra): use separate index for next.angular.dev (#64318)
With this commit we start using a separate index for the next doc site.

PR Close #64318
2025-10-16 14:39:22 +00:00
SkyZeroZx 574f74da55 docs: Add dataurl and base64 in atrribute loader (#64419)
PR Close #64419
2025-10-16 14:38:50 +00:00
hawkgs 134ff540b5 fix(devtools): directive-forest minor UI fixes (#64426)
- Fix the hydration icons when the text from the nodes exceeds the component width
- Align and slightly enlarge the arrow icons

PR Close #64426
2025-10-16 14:37:12 +00:00
Andrew Scott 570ea346e3 docs: update release notes for vscode extension (#64454)
updates release notes for the 20.3.0 release

PR Close #64454
2025-10-16 14:35:25 +00:00
Angular Robot e77d3fb064 build: update all non-major dependencies (#64460)
See associated pull request for more information.

PR Close #64460
2025-10-16 14:34:51 +00:00
Angular Robot a7ba2f5e65 build: update cross-repo angular dependencies (#64452)
See associated pull request for more information.

PR Close #64452
2025-10-15 22:42:54 +00:00
Matthieu Riegler 29c397f883 fix(platform-browser): DomEventsPlugin should always be the last plugin to be called for supports(). (#50394)
This fixes the issues when `BrowserModule` is not the first module imported.

Fixes #37149 #37850

PR Close #50394
2025-10-15 21:12:46 +00:00
SkyZeroZx 32cb1cc23d docs: Adds documentation for accessing parent resolver data (#64398)
PR Close #64398
2025-10-15 21:10:06 +00:00
Angular Robot 9b9ae42841 docs: update Angular CLI help (#64433)
Updated Angular CLI help contents.

PR Close #64433
2025-10-15 11:47:13 -07:00
Angular Robot 3e8e48c918 build: update cross-repo angular dependencies (#64438)
See associated pull request for more information.

PR Close #64438
2025-10-15 10:49:59 -07:00
Danny Koppenhagen 4c35682ee5 docs: fix closing tag for whitespace examples (#64425)
PR Close #64425
2025-10-15 10:48:44 -07:00
SkyZeroZx e63ea3f102 docs: update service worker documentation with additional references (#64353)
PR Close #64353
2025-10-15 10:47:48 -07:00
Angular Robot 7572a272a8 build: update pnpm to v10.18.3 (#64431)
See associated pull request for more information.

PR Close #64431
2025-10-15 10:44:22 -07:00
SkyZeroZx 13b0706cc5 docs: Add injection context for lazy route loading (#64412)
PR Close #64412
2025-10-15 10:41:53 -07:00
Matthieu Riegler ae4880f5fd docs(docs-infra): fix mobile banner layout (#64408)
PR Close #64408
2025-10-15 10:41:04 -07:00
Matthieu Riegler 17528628fa refactor(devtools): Router viz is only from 20.3.5 onward (#64415)
This is following some updated in #64411

PR Close #64415
2025-10-15 10:39:32 -07:00
aparziale 338ac3b2ef refactor(migrations): unit test signal migration adjustment (#64393)
Move unit test from spec file to golden test

PR Close #64393
2025-10-15 10:38:57 -07:00
Matthieu Riegler 2f8066adbe refactor(devtools): remove "changes" entry. (#64338)
This is just the same value as total time spent. Also it is confusing to some users.

fixes #51206

PR Close #64338
2025-10-15 10:38:20 -07:00
SkyZeroZx 75fc16b261 feat(migrations): Adds support for CommonModule to standalone migration (#64138)
Introduces a migration that replaces CommonModule usage with individual imports from @angular/common, aligning with Angular's standalone component approach and improving module import clarity

PR Close #64138
2025-10-15 10:37:37 -07:00
Joey Perrott 13e18cafff build: migrate vscode extension into repo (#63924) (#64049)
Migrate the vscode extension for angular into this repository.

PR Close #63924

PR Close #64049
2025-10-15 10:37:02 -07:00
Jan Martin 23c62832e5 release: bump Angular DevTools version to 1.4.1 (#64445)
PR Close #64445
2025-10-15 10:35:24 -07:00
Andrew Kushnir 013effddef release: cut the v21.0.0-next.8 release 2025-10-15 10:16:13 -07:00
Andrew Kushnir e3fa24d6ce docs: release notes for the v20.3.5 release 2025-10-15 10:09:12 -07:00
Angular Robot 3d1777bf93 build: update cross-repo angular dependencies (#64414)
See associated pull request for more information.

PR Close #64414
2025-10-14 15:41:49 -07:00
Andrew Kushnir fc65107506 Revert "refactor(core): add debug name to resource (#64172)" (#64418)
This reverts commit 63180067aa.

PR Close #64418
2025-10-14 14:28:16 -07:00
Andrew Kushnir a2d8adb395 Revert "refactor(compiler-cli): add a resource debugName transform (#64172)" (#64418)
This reverts commit e941e6b80f.

PR Close #64418
2025-10-14 14:28:16 -07:00
JoostK 49377d274a perf(compiler-cli): fix performance of "interpolated signal not invoked" check (#64410)
This fixes a performance regression from #63754, which is almost a revert of the
prior performance fix in #57291; the latter was provided as quick fix to address
the severe performance overhead this extended diagnostic used to have, with #57337
as follow-up change to address the false negatives that were introduced in #57291.
That follow-up never landed, though, so this commit is re-applying the changes
from #57337 to fix the performance regression.

Fixes #64403

PR Close #64410
2025-10-14 13:47:20 -07:00
Jessica Janiuk 0ed6c93960 fix(core): fixes regression in animate.leave function bindings (#64413)
When adding and removing items in a `@for` loop, the `animate.leave` event binding instruction was not updated to use the same logic as the class function when the animation queue was added. We were not returning the correct signature for the `animate.leave` function, which caused the animation to not trigger correctly. This updates the event binding instruction to use the same logic as the class function when adding the animation to the queue.

fixes: #64336

PR Close #64413
2025-10-14 13:46:38 -07:00
Angular Robot 4d1d962492 build: lock file maintenance (#64376)
See associated pull request for more information.

PR Close #64376
2025-10-14 12:21:32 -07:00
Matthieu Riegler d03970f9d1 refactor(compiler-cli): remove canVisitStructuralAttributes from TemplateCheckWithVisitor (#63809)
This enables checking of expressions of structural directives in template diagnostics.

PR Close #63809
2025-10-14 11:56:14 -07:00
Matthieu Riegler dd2f53b9cd refactor(core): warning when hydration trigger is used without hydration being enabled (#64185)
This replaces the error we were throwing before the change. This allows component with defer triggerrs to be used on both SSR'd and CSR.

fixes #64184

PR Close #64185
2025-10-14 11:55:21 -07:00
hawkgs e941e6b80f refactor(compiler-cli): add a resource debugName transform (#64172)
Add a TS transform for `resource` (and `httpResource`) `debugName`. Test the transformations.

PR Close #64172
2025-10-14 09:31:41 -07:00
hawkgs 63180067aa refactor(core): add debug name to resource (#64172)
Decorate `resource` (and `httpResource`) with `debugName`, along with all of its internal signals.

PR Close #64172
2025-10-14 09:31:41 -07:00
Jessica Janiuk e228102378 fix(core): Prevents early style pruning with leave animations (#64335)
In some cases, the leave animation stylesheets were getting pruned too early due to the renderer removal happening before the animation function was run. This ensures that while queuing a leave animation, we guarantee the lView is referenced in the leaving animations set. This guarantees the style sheet pruning knows about the animations existing and skips the prune step.

fixes: #64326

PR Close #64335
2025-10-14 09:30:32 -07:00
Kristiyan Kostadinov ab415f3d7f fix(core): control not recognized when input has directive injecting ViewContainerRef (#64368)
When a directive injects a `ViewContainerRef`, the runtime inserts a container that was throwing off the logic that recognizes native controls.

These changes switch to check if the node is a native control through the `TNode`. This also makes it a bit less prone to breaking during SSR.

Fixes #64362.

PR Close #64368
2025-10-14 09:29:58 -07:00
hawkgs 356dc4c952 refactor(devtools): add clear button to the directive explorer filter (#64407)
Add a standard clear button after the matches nav buttons.

PR Close #64407
2025-10-14 09:28:39 -07:00
Angular Robot 12d179329a build: update cross-repo angular dependencies (#64405)
See associated pull request for more information.

PR Close #64405
2025-10-14 09:27:31 -07:00
hawkgs dffb16afdf refactor(devtools): use lighter property-tab bg only when there are directives (#64404)
Use the contrasting background color only when there are directives to inspect; Drop obsolete CDK drag

PR Close #64404
2025-10-14 09:26:56 -07:00
Alan Agius 569388ecf1 build: remove ANGULAR_PACKAGE file from snapshot builds (#64402)
This was needed for NGCC which has been removed a long time ago.

PR Close #64402
2025-10-14 09:26:19 -07:00
Angular Robot 002481b27b build: update all non-major dependencies (#64399)
See associated pull request for more information.

PR Close #64399
2025-10-14 09:25:42 -07:00
Matthieu Riegler f232fa5d71 docs: Add mentions of the autoCsp option (#64290)
And also in the incompatibility of `CSP_NONCE` with `inlineCritical`.

fixes #61037

PR Close #64290
2025-10-14 09:23:20 -07:00
SkyZeroZx c0510cd94c docs: Removes standalone flag from drag-drop examples (#64395)
PR Close #64395
2025-10-13 15:58:32 -07:00
Andrew Scott 2a7a5de53f feat(core): Allow passing application providers in bootstrapModule options (#64354)
This commit adds `applicationProviders` to the `bootstrapModule` options
object. This allows specifying additional providers at the location of
bootstrap, which makes default providers much easier to accomplish.

Using this, we can refine the approach taken for downgrade_module to use
this more direct API rather than the additional provider variable dance.

PR Close #64354
2025-10-13 15:10:10 -07:00
Andrew Scott 693b81fa3d refactor(core): fix ZoneJS-by-default providers for async downgradeModule (#64354)
This fixes the code to retain ZoneJS by default in the providers for
downgradeModule when the `bootstrapModule` is used. Prior to this
change, the async `bootstrapModule`/`compileNgModuleFactory` could be
called multiple times through `downgradeModule` before
`bootstrapModuleFactory` got called and used the zone providers.

Note: marked refactor since this only applies to the -next release and
we shouldn't have this change in the changelog as a fix.

PR Close #64354
2025-10-13 15:10:10 -07:00
Leon Senft 32f86d35f7 perf(forms): optimize [field] binding instructions (#64351)
Caches information about the kind of form control that a `TNode`
represents in `TNodeFlags`. This avoids redundant computations on
subsequent template create and update passes.

Renames the `INVALID_CONTROL_HOST` error code to
`INVALID_FIELD_DIRECTIVE_HOST` for clarity and adds a test for it.

PR Close #64351
2025-10-13 13:02:17 -07:00
Angular Robot 6a96844667 build: update cross-repo angular dependencies (#64390)
See associated pull request for more information.

PR Close #64390
2025-10-13 11:29:47 -07:00
Angular Robot edcf65842a docs: update Angular CDK apis (#64386)
Updated Angular CDK api files.

PR Close #64386
2025-10-13 11:29:13 -07:00
Joey Perrott eb80c3075f build: update symbol extractor tests to stabalize the order of the symbols listed (#64389)
Update to ensure that the symbols in the list of extracted symbols is consistent even when multiple bundle files are extracted from.

PR Close #64389
2025-10-13 11:12:54 -07:00
SkyZeroZx 861cee34e0 feat(migrations): Adds migration for deprecated router testing module (#64217)
Introduces a schematic to replace deprecated router testing imports

PR Close #64217
2025-10-13 11:09:29 -07:00
SkyZeroZx 1ffcfb625a feat(migrations): Adds migration for deprecated router testing module (#64217)
Introduces a schematic to replace deprecated router testing imports

PR Close #64217
2025-10-13 11:09:29 -07:00
SkyZeroZx 563dbd998c feat(compiler-cli): Adds diagnostic for misconfigured @defer triggers (#64069)
Warns when @defer blocks define unreachable or redundant triggers, such as multiple main triggers, ineffective prefetches, or timer delays not scheduled before rendering.

PR Close #64069
2025-10-13 11:06:01 -07:00
Oliver Lang eee8eab4b6 docs: improve clarity of self-closing tag migration example (#64388)
Replaces inline comments with structured Before and After sections
to enhance readability and consistency. This helps developers better
understand the transformation from non-self-closing to self-closing
tags during migration.

PR Close #64388
2025-10-13 10:01:02 -07:00
SkyZeroZx 2739b7975b feat(http): add referrerPolicy option to HttpResource (#64283)
Adds support for the `referrerPolicy` option in `HttpResource`, allowing developers to control how much referrer information is sent with each HTTP request.

PR Close #64283
2025-10-13 10:00:27 -07:00
Andrew Scott 2c85d2802f refactor(router): update route config loading to use async/await (#64322)
This simplifies code by using async/await instead of rxjs in the config
loading internals. While loadChildren/loadComponent could _technically_
return a synchronous value, the expectation is that this would be used
for dynamic imports, which are necessarily async.

PR Close #64322
2025-10-13 09:58:10 -07:00
Alan Agius 09a927a1d4 ci: remove cache-node-modules from checkout-and-setup-node (#64387)
This option no longer exists and the new default is to cache the PNPM store.

PR Close #64387
2025-10-13 09:29:07 -07:00
Matthieu Riegler 62cda789a8 refactor(compiler): Improve pipe in track expression error (#64321)
Throw a parse error for a better context awareness.

fixes #64316

PR Close #64321
2025-10-13 08:59:56 -07:00
Miles Malerba 2fdd4da2a8 refactor(forms): rename the control directive to the field directive (#64300)
Renames the control directive and the input that users set to bind a
field to a UI control.

Previously users would do:

```
<input [control]="someField">
```

Now users will do:

```
<input [filed]="someField">
```

PR Close #64300
2025-10-13 08:59:13 -07:00
Miles Malerba 0acc91ef51 refactor(forms): move files in preparation for rename (#64300)
Renames several files related to the "control" directive to reflect its
new name, the "field" directive

PR Close #64300
2025-10-13 08:59:13 -07:00
Angular Robot 84f6e36e19 build: update pnpm to v10.18.2 (#64358)
See associated pull request for more information.

PR Close #64358
2025-10-13 08:42:16 -07:00
Angular Robot 53f1dcbbcc build: update github/codeql-action action to v4.30.8 (#64370)
See associated pull request for more information.

PR Close #64370
2025-10-13 08:39:51 -07:00
aparziale e99bbd3d2a fix(migrations): migrating input with more than 1 usage in a method (#64367)
When the migration command was run for inputs, if the input had more than one reference in a method the migration would generate incorrect code

Fixes #63018

PR Close #64367
2025-10-13 08:37:10 -07:00
SkyZeroZx 4b965f5b77 refactor(docs-infra): remove unused error reporting handler and related tests (#64385)
The error reporting handler was no longer referenced in the application.

PR Close #64385
2025-10-13 08:36:08 -07:00
Jens Kuehlers c8869248b9 docs: add TS+Node version requirements for v21 (#64384)
PR Close #64384
2025-10-13 08:35:24 -07:00
Shuaib Hasan Akib 945cde8700 docs: update MDN reference links to main documentation pages (#64383)
Replaces old deep-linked MDN tutorial URLs with top-level documentation
links for JavaScript, HTML, and CSS to provide more general and reliable references.

PR Close #64383
2025-10-13 08:34:52 -07:00
Matthieu Riegler 0feba1c70e docs(docs-infra): Add user to the open files (#64380)
fixes #64345

PR Close #64380
2025-10-13 08:33:57 -07:00
SkyZeroZx 4054c975ed docs: update router behavior to correct syntax highlighting (#64375)
PR Close #64375
2025-10-13 08:33:17 -07:00
SkyZeroZx 479ffc1d4e docs: Documents utility functions for narrowing form control types (#64373)
PR Close #64373
2025-10-13 08:32:29 -07:00
aparziale 98189d47a6 docs: fix typo in route-guards guide (#64366)
Fix typo in route-guards guide: “useres” → “users”

Fixes #64363

PR Close #64366
2025-10-13 08:31:48 -07:00
Oswin Sutton de0d46a34b docs: add missing code formatting around @defer in templates/defer guide (#64357)
PR Close #64357
2025-10-13 08:31:13 -07:00
SkyZeroZx 58e51bfcbc docs: Add example Unhandled errors in Angular documentation (#64356)
PR Close #64356
2025-10-13 08:30:25 -07:00
Shuaib Hasan Akib 450a38b072 refactor(common): sync examples with Angular style guide (#64167)
Updated examples to align with the latest Angular style:
- Removed `standalone: false` since it is unnecessary.
- Dropped module-based implementation in favor of standalone.

PR Close #64167
2025-10-13 08:29:44 -07:00
Alan Agius a6268d45e0 build: align git tags with package.json version for snapshot builds (#64350)
This commit updates the scripts to use the version from `package.json` for snapshot builds, ensuring that the git tags are aligned with the package version. This change simplifies referencing snapshot builds in the  `package.json` file.

PR Close #64350
2025-10-13 08:28:53 -07:00
SkyZeroZx 5fd686f063 docs: refactor popup example to use inject function (#64349)
PR Close #64349
2025-10-13 08:27:50 -07:00
Alan Agius 36c7d5196e build: remove workspace overrides from pnpm config (#64348)
This removes the 'overrides' section from the pnpm-workspace.yaml file as these are now redundant.

PR Close #64348
2025-10-13 08:27:07 -07:00
hawkgs 0b204a8321 fix(devtools): property-view-tree layout (#64343)
Fix various issues related to `property-view-tree` layout.

PR Close #64343
2025-10-13 08:26:29 -07:00
Matthieu Riegler 3e3b6e8134 docs(docs-infra): Fix animation bug on iPhones (#64342)
PR Close #64342
2025-10-13 08:25:47 -07:00
Angular Robot 863ff3919d build: update all non-major dependencies (#64329)
See associated pull request for more information.

PR Close #64329
2025-10-13 08:25:13 -07:00
Alan Agius e34776a102 build: correctly use snapshot build repo (#64341)
This package depends on `@angulad/language-service` and not `@angular/language-server`.
PR Close #64341
2025-10-10 08:43:11 -07:00
Matthieu Riegler 2ecbc4e643 docs: add a callout that adding/removing to formArray doesn't not mark dirty (#64337)
fixes #36788

PR Close #64337
2025-10-10 08:13:55 -07:00
Angular Robot dc37100538 build: update bazel dependencies (#64330)
See associated pull request for more information.

PR Close #64330
2025-10-10 08:12:19 -07:00
SkyZeroZx 249fbb3981 docs: add example for assertInInjectionContext (#64325)
PR Close #64325
2025-10-10 06:51:44 -07:00
Alan Agius 8693959fc7 build: use snapshot builds for dependencies in @angular/language-server (#64334)
This commit introduces a mechanism to use snapshot builds for @angular/language-service dependencies when building the VSCode extension.

A new --//:enable_snapshot_repo_deps flag allows swapping the stable versioned dependency with a snapshot build from the angular/language-server-builds GitHub repository. This enables testing and development against the latest unreleased version of the language service.

PR Close #64334
2025-10-10 06:48:51 -07:00
Angular Robot 94067fb0e4 build: update dependency bazel to v7.6.2 (#64328)
See associated pull request for more information.

PR Close #64328
2025-10-10 06:46:26 -07:00
Shuaib Hasan Akib d7f2ac3342 docs: fix rxResource example to return object from params function (#64327)
Previously, the example returned a plain value instead of an object,
causing destructuring in the `stream` function to fail. Updated to
`params: () => ({ userId: this.userId() })` for correctness.

fixes: #64313

Update adev/src/content/ecosystem/rxjs-interop/signals-interop.md

Co-authored-by: Matthieu Riegler <kyro38@gmail.com>

PR Close #64327
2025-10-10 06:45:18 -07:00
Matthieu Riegler 59c152833e docs: add check for non-existing anchor (#64309)
This is only for the anchors on the same document for now.
Commit also includes some reformating.

fixes #64303

PR Close #64309
2025-10-10 06:43:51 -07:00
SkyZeroZx a397ca35fa docs: Add unified control state change events (#64279)
PR Close #64279
2025-10-10 06:42:34 -07:00
SkyZeroZx 3013226acf docs: Adds documentation for image decoding attribute (#64261)
Expands the image optimization guide to explain browser image decoding strategies

PR Close #64261
2025-10-10 06:41:32 -07:00
Matthieu Riegler 7ad02b9805 refactor(devtools): fix parameter matching. (#64260)
Adding some typing to infer the expected types and drop the usages of `arguments` which isn't really typesafe.

The argument mis-match didn't result in an issue because they didn't end up being used futher down the line.

fix 63973

PR Close #64260
2025-10-10 06:40:43 -07:00
SkyZeroZx 88a15be06a docs: Add programmatic component input/output/directive binding (#64240)
Expands the guide to explain how inputs, outputs, and directives can be provided when creating components programmatically

PR Close #64240
2025-10-10 06:39:56 -07:00
Kristiyan Kostadinov d73d9acbfb build: fix broken test (#64319)
Fixes a test that didn't exist when the recent metadata PR was created.

PR Close #64319
2025-10-09 11:35:29 -07:00
Andrew Scott e1da41ffdf fix(router): Scroll restoration should use instant scroll behavior for traversals (#64299)
When the scroll position is being restored, this change upates the
behavior to use 'instant' rather than the default 'auto', which will
be whatever the browser behavior is for 'window.scrollTo'. The 'smooth'
behavior does not match how browsers behavior when performing a
traversal navigation for MPAs, which is 'instant'.

related to #58258

PR Close #64299
2025-10-09 11:13:45 -07:00
Alan Agius 3c9ed3d529 test: make xvfb start and stop async (#64310)
The `xvfb.start()` and `xvfb.stop()` methods are asynchronous but were being called synchronously. This can lead to race conditions where the tests start running before the virtual frame buffer is fully initialized, or the process exits before it's fully stopped.

This commit promisifies the `start` and `stop` methods to ensure they are properly awaited, making the e2e test setup more robust.

PR Close #64310
2025-10-09 11:09:37 -07:00
Kristiyan Kostadinov ab98b2425f fix(compiler-cli): capture metadata for undecorated fields (#63957)
Currently if `TestBed.overrideComponent` is used on a class that uses initializer APIs (e.g. `input()`), the initializer metadata will be wiped out, because `overrideComponent` re-compiles the class with the information set by `setClassMetadata`. `setClassMetadata` only captures decorated members at the moment.

These changes introduce some logic to capture the new initializer-based APIs in `setClassMetadata` as well.

Fixes #57944.

PR Close #63957
2025-10-09 14:02:16 -04:00
Kristiyan Kostadinov f28355a80b refactor(compiler): expose member decorator identifiers (#63957)
Adds the member decorators to the map of exposed compiler symbols.

PR Close #63957
2025-10-09 14:02:16 -04:00
Kristiyan Kostadinov 8ceac0b8e9 refactor(compiler-cli): track member metadata using output AST (#63957)
Reworks the logic that tracks the decorator metadata for members to do so using the output AST, rather than wrapping the TypeScript AST. This makes it easier to programmatically generate new members that weren't part of the TypeScript AST before.

PR Close #63957
2025-10-09 14:02:16 -04:00
Alan Agius 9af3cf7b0b build: migrate to in-repo ts_project with strict deps (#64306)
This commit migrates the vscode-ng-language-service to use the in-repo `ts_project` macro, which has strict dependency checking enabled. This improves build-time dependency validation and helps ensure that all dependencies are explicitly declared.

As part of this change, redundant `tsconfig.json` files have been removed in favor of a centralized configuration, and `jasmine_test` rules have been updated to the standard macro. A minor code adjustment in `server/src/session.ts` was also made to improve error handling.

PR Close #64306
2025-10-09 10:00:31 -07:00
Alan Agius 1c07cb0e1e build: add @angular/language-server to framework release output (#64306)
This change updates the build configuration to include the
@angular/language-server package in the standard framework release
output.

By integrating it into the release train, we ensure that it is versioned and published consistently with the rest of the Angular framework.

PR Close #64306
2025-10-09 10:00:31 -07:00
Alan Agius ad279efd90 build: use @angular/language-service from source (#64306)
This commit updates the VSCode Angular Language Service extension to use the `@angular/language-service` package built from source within the workspace, rather than a version downloaded from npm.

This change simplifies development and testing by ensuring the extension always uses the latest code from the local repository. The Bazel build configuration, VSCode launch settings, and e2e tests have been updated to reflect this change.

PR Close #64306
2025-10-09 10:00:31 -07:00
Alan Agius 461eeda6d9 build: remove unneeded language-service dependency (#64306)
The `@angular/language-service` package was not needed for integration tests or benchmarks. Removing this dependency simplifies the build configuration.

PR Close #64306
2025-10-09 10:00:31 -07:00
Angular Robot 22a1001b0f build: update github/codeql-action action to v4 (#64285)
See associated pull request for more information.

PR Close #64285
2025-10-09 06:39:54 -07:00
Angular Robot 8cd1b43d42 build: update cross-repo angular dependencies (#64282)
See associated pull request for more information.

PR Close #64282
2025-10-09 06:39:05 -07:00
Kristiyan Kostadinov 68df976692 docs: mention new viewport trigger syntax in docs (#64130)
Updates the docs to mention the new options for the `viewport` trigger.

PR Close #64130
2025-10-09 05:32:21 -07:00
Kristiyan Kostadinov ad2376435b feat(core): support IntersectionObserver options in viewport triggers (#64130)
Adds support for customizing the `IntersectionObserver` options for the `on viewport`, `prefetch on viewport` and `hydrate on viewport` triggers.

Note that the options need to be a static object literal, e.g. `@defer (on viewport(trigger, {rootMargin: '123px'})`.

Fixes #52799.

PR Close #64130
2025-10-09 05:32:21 -07:00
Kristiyan Kostadinov ddeef60db2 refactor(compiler): support viewport trigger options in pipeline (#64130)
Updates the template pipeline to support options for the `viewport` triggers.

PR Close #64130
2025-10-09 05:32:20 -07:00
Kristiyan Kostadinov e2367c8855 refactor(compiler-cli): type check viewport trigger options (#64130)
Updates the template type checker to check the options of the `viewport` trigger against `IntersectionObserver`.

PR Close #64130
2025-10-09 05:32:20 -07:00
Kristiyan Kostadinov f3207000fd refactor(compiler): parse options parameter on viewport triggers (#64130)
Updates the template parser and AST to capture a second object literal parameter on `viewport` triggers.

PR Close #64130
2025-10-09 05:32:20 -07:00
Kristiyan Kostadinov 64336715cd refactor(compiler): track span information about defer trigger parameters (#64130)
Currently we produce the string value of a defer `on` trigger by concatenating the string values of all of its tokens. This ends up ignoring whitespaces which in turn throws off source spans.

These changes switch to producing the string by taking the text between the start and end tokens, as well as tracking the start index.

PR Close #64130
2025-10-09 05:32:20 -07:00
Matthieu Riegler 8654020d56 refactor(core): use the ValueEqualityFn from core (#64247)
Instead of the non-public primitive one.

PR Close #64247
2025-10-09 05:31:34 -07:00
Shuaib Hasan Akib 489711d75c docs(docs-infra): add rel="noopener" to external links with target="_blank" in ExternalLink directive (#64276)
PR Close #64276
2025-10-09 05:29:30 -07:00
Angular Robot f521c1fd76 build: update github/codeql-action action to v3.30.7 (#64284)
See associated pull request for more information.

PR Close #64284
2025-10-09 05:25:22 -07:00
Angular Robot cb6f8d4228 build: update all non-major dependencies (#64265)
See associated pull request for more information.

PR Close #64265
2025-10-09 05:23:34 -07:00
hawkgs 5da78459fe refactor(devtools): make devtools resizing in the demo app easier (#64307)
Set `pointer-events` of the `iframe` to `none` while dragging. This should stop the events context interference and make resizing of the panel easier.

PR Close #64307
2025-10-09 05:21:48 -07:00
SkyZeroZx 6bc391c3d4 refactor(docs-infra): replace @Input with signal input for ignoredElementsIds in ClickOutside directive (#64302)
replace @Input with signal input for ignoredElementsIds in ClickOutside directive

PR Close #64302
2025-10-09 05:21:02 -07:00
SkyZeroZx 4bcbac121c docs: Replace ngIf programmatic rendering to control flow (#64301)
PR Close #64301
2025-10-09 05:20:20 -07:00
Angular Robot cbaf69088e build: update bazel dependencies (#64195)
See associated pull request for more information.

PR Close #64195
2025-10-09 05:17:52 -07:00
Matthieu Riegler a1cc00577d docs: update banner with AI RFC (#64107)
PR Close #64107
2025-10-09 05:17:06 -07:00
Matthew Berry 4fce3cad5e test(compiler): fix a @keyframes style encapsulation test (#64036)
I've updated the test to assert what I believe it was trying to assert
before. Without this change, the CSS is invalid so it's unclear what
behavior we're demonstrating.

PR Close #64036
2025-10-09 05:16:18 -07:00
Leon Senft 4c264c949a test(forms): make custom controls in test implement FormUiControl (#63884)
Fix type issues revealed by implementing the expected interface.

PR Close #63884
2025-10-09 05:15:21 -07:00
Leon Senft 71e8672837 fix(forms): test that minLength/maxLength properties are propagated to controls (#63884)
Ensure that minLength and maxLength are only bound to native input elements that
support them.

PR Close #63884
2025-10-09 05:15:21 -07:00
Leon Senft acd7c83597 fix(forms): test that min/max properties are propagated to controls (#63884)
Fix a bug where the min property of a form field was not correctly
propagated to custom controls. Also ensure that min and max are only
bound to native input elements that support them.

PR Close #63884
2025-10-09 05:15:21 -07:00
Leon Senft f4d1017c25 fix(forms): test that common field states are propagated to controls (#63884)
Fix several typos caught by the added test cases:

* `disabled` attribute for native controls
* `readonly` property for custom controls

Note that the `name` test cases have been marked `pending()` due to
https://github.com/angular/angular/issues/63882.

PR Close #63884
2025-10-09 05:15:21 -07:00
Alan Agius e873c22617 build: clean up language service integration tests and Bazel dependencies (#64271)
The legacy `workspace` integration test asset folder has been removed as it was unused and no longer representative of modern Angular CLI workspaces.

In line with this cleanup, the Bazel dependency definitions for the integration tests have been reorganized. Runtime data dependencies have been moved from the `js_test` rules to the `data` attribute of their corresponding `ts_project` rules. This is a cleaner and more appropriate approach as it co-locates a test's runtime data dependencies with its source code definition, making the relationship between the code and its required assets more explicit and improving the overall maintainability of the build configuration.

PR Close #64271
2025-10-08 20:08:47 -07:00
Miles Malerba 808d6aef90 release: cut the v21.0.0-next.7 release 2025-10-08 10:59:41 -04:00
Miles Malerba ec4775d642 docs: release notes for the v20.3.4 release 2025-10-08 10:51:13 -04:00
Alan Agius 76c8d045ed build: update rules_sass to 1184a80751a21af8348f308abc5b38a41f26850e (#64288)
This included a fix to build the repo on Linux ARM64 which is needed by the Firefox team

https://github.com/devversion/rules_sass/pull/37

PR Close #64288
2025-10-08 10:12:26 +00:00
Alan Agius 47b66b1418 release: bump Angular DevTools version to 1.4.0 (#64287)
PR Close #64287
2025-10-08 08:19:50 +00:00
SkyZeroZx 5cbdefcf11 feat(http): add support for fetch referrerPolicy option in HttpClient (#64116)
Introduces a referrer policy option for HTTP requests to allow specifying the referrer information sent, improving privacy and security controls.

PR Close #64116
2025-10-07 20:45:34 -04:00
Milo 0ed13485c8 refactor(devtools): stabilize signal graph (#64263)
remove experimental signal graph toggle, enable the signal graph by default if it is available

PR Close #64263
2025-10-07 20:44:03 -04:00
Matthieu Riegler 77a4011e64 docs: add providers caveat on the service (#64269)
fixes #60955

PR Close #64269
2025-10-07 20:40:19 -04:00
Matthieu Riegler 69b3c05b9e docs: add mentions host style bindings (#64257)
Also adds a section about css custom properties

fixes #64256

PR Close #64257
2025-10-07 20:39:40 -04:00
Alan Agius dd7bb9007f build: update repository URL to point to monorepo (#64220)
The repository URL in `package.json` is updated to point to the `angular/angular` monorepo. This ensures that the package metadata correctly reflects its location within the main repository.

PR Close #64220
2025-10-07 20:38:37 -04:00
Alan Agius d86f681cd4 build: update supported Node.js versions for language-service (#64220)
The supported Node.js versions for the language service server are updated to align with the versions supported by Angular. This ensures a consistent and stable environment for developers.

PR Close #64220
2025-10-07 20:38:36 -04:00
Alan Agius 66999dd65b build: enable breakpoints in source files (#64220)
This commit revamps the debugging setup and enabling developers to set breakpoints directly in the source TypeScript files.

Key changes include:
- Updated `launch.json` with source map path overrides to correctly map compiled output back to the original source code.
- Switched from `external` to `linked` sourcemaps in the Bazel build configuration for better debugging support.
- Consolidated the recommended VSCode settings into the main `launch.json` and `tasks.json`, removing the separate `recommended-*.json` files.
- Updated the debugging documentation to reflect the new, simplified workflow.

These changes significantly improve the developer experience for contributors working on the language service, making it much easier to debug and troubleshoot issues.

This applies to both the framework packages and vscode-ng-langugage-service.

PR Close #64220
2025-10-07 20:38:36 -04:00
Alan Agius 90d3b7f834 build: align VSCode extension build with vsce (#64220)
This commit refactors the VSCode extension's build and launch configurations to align with `vsce` and `pnpm` workspaces.

The following changes are included:
- Updated `.vscode/launch.json` to use new `vsce:` prefixed tasks and simplified launch configurations.
- Updated `.vscode/tasks.json` to use `pnpm` workspace commands for watching and packaging the extension.
- Adjusted `BUILD.bazel` and `package.json` files to reflect the new build output paths.

These changes streamline the development workflow for the VSCode extension, making it easier to build, debug, and package.

PR Close #64220
2025-10-07 20:38:36 -04:00
utshow-rehman b49db1644e docs(docs-infra): refactor navigation code based on angular style guide (#64177)
PR Close #64177
2025-10-07 20:29:54 -04:00
Alan Agius 7eee93da1a build: remove empty globs (#64270)
Remove globs that do not match any files.

PR Close #64270
2025-10-07 20:28:11 -04:00
Angular Robot a15688c2da build: update pnpm to v10.18.1 (#64264)
See associated pull request for more information.

PR Close #64264
2025-10-07 20:24:42 -04:00
AleksanderBodurri ac0eb2318c fix(devtools): fix incorrect styling of nodes between renders (#63979)
Previously, the router tree would not properly clean up css classes placed on nodes which would lead to some nodes being incorrectly visualized after each update.

PR Close #63979
2025-10-07 20:19:22 -04:00
Alan Agius 858e37cf83 build: update cross-repo angular dependencies (#64255)
See associated pull request for more information.

Closes #64212 as a pr takeover

PR Close #64255
2025-10-07 20:15:46 -04:00
Jessica Janiuk e279f30199 fix(core): prevent early exit from leave animations when multiple transitions are present (#64225)
Our code ensuring host binding composition for animations was causing the early exit and removal of
elements when multiple transitions were present on the same element. This commit fixes the issue by
ensuring that we properly keep track of all the promise resolvers on the LView and then only
call them once we've properly waited for the longest animation to finish.

fixes: #64209

PR Close #64225
2025-10-06 15:34:26 -04:00
Jessica Janiuk 3b60eb4ace refactor(core): allow animationend to process if we don't have a longest animation (#64225)
There may be cases where the longest animation info has been cleaned up before the end animation fires. We should still do the end processing in that case.

PR Close #64225
2025-10-06 15:34:26 -04:00
Jessica Janiuk a52a2afb6e refactor(core): fix animations host binding tests (#64225)
These tests were not properly validating against the host binding changes due to the fact that the styles were on the wrong components in some of the host binding cases.

PR Close #64225
2025-10-06 15:34:26 -04:00
Shuaib Hasan Akib 91c4f99d23 refactor(docs-infra): improve CustomErrorHandler for clarity and best practices (#64237)
Use `implements ErrorHandler` instead of extending the base class to follow Angular
conventions. Marked injected dependencies as `readonly`, made `openErrorSnackBar`
private, and improved overall code consistency.

PR Close #64237
2025-10-06 15:33:42 -04:00
Kristiyan Kostadinov 62bbce63b7 fix(migrations): remove error for no matching files in control flow migration (#64253)
Now that the control flow migration is running as a part of `ng update`, we need to be a bit forgiving about there not being any matching files since it can break the entire update process.

These changes switch the error to a warning and it counts the files for the entire workspace, not the individual projects.

PR Close #64253
2025-10-06 15:29:25 -04:00
Angular Robot 470dca1c01 build: lock file maintenance (#64252)
See associated pull request for more information.

PR Close #64252
2025-10-06 15:23:00 -04:00
Jaime Burgos 930460896c docs: add documentation for routerOutletData input and its usage (#64242)
PR Close #64242
2025-10-06 15:20:05 -04:00
SkyZeroZx fa75e4afb4 docs: Adds guide for customizing page titles with TitleStrategy (#64238)
Improves documentation by explaining how to implement and configure a custom title strategy for centralized control over page titles

PR Close #64238
2025-10-06 15:17:58 -04:00
Matthieu Riegler 1ffc643737 docs(docs-infra): fix @example in class members (#64249)
eg: ApplicationRef

PR Close #64249
2025-10-06 15:11:31 -04:00
SkyZeroZx 9f5197a754 docs: add equal option to toSignal for custom value comparison (#64241)
PR Close #64241
2025-10-06 15:09:49 -04:00
Alan Agius fd8383a959 ci: cache vscode binary in CI (#64219)
Caches the downloaded vscode binary in the CI workflows to speed up the e2e tests for the vscode extension. This avoids downloading vscode on every CI run.

PR Close #64219
2025-10-06 15:04:49 -04:00
Alan Agius 8358c19cb1 test: address flakiness in e2e tests (#64219)
It was noted that there are some flakes in CI.
Using seed '29976' it was narrowed down to the e2e tests for the vscode extension.

PR Close #64219
2025-10-06 15:04:49 -04:00
Angular Robot 5739890335 build: update github/codeql-action action to v3.30.6 (#64245)
See associated pull request for more information.

PR Close #64245
2025-10-06 15:01:39 -04:00
AleksanderBodurri 32ed78bcbe fix(devtools): optimize object sanitization logic (#64234)
Previously this would take ~3500ms adev.

This updated logic avoids the constant JSON.stringify implementation and instead checks for serializable values directly.

After this change this code path for adev takes less than 20ms.

(Benchmarks taken on an M1 Macbook Pro)

PR Close #64234
2025-10-06 15:00:19 -04:00
Angular Robot 1828230c6f build: update all non-major dependencies (#64231)
See associated pull request for more information.

PR Close #64231
2025-10-06 14:59:50 -04:00
Angular Robot da0982a5fd build: update pnpm to v10.18.0 (#64232)
See associated pull request for more information.

PR Close #64232
2025-10-06 14:57:16 -04:00
Leon Senft effccffde0 refactor(core): add framework support for binding form controls (#63773)
Move most of the implementation of the `Control` directive into core
framework instructions. This allows field state changes to be propagated
to their corresponding UI controls directly during execution of a
template update block, instead of relying on `effect()`s to synchronize
each change later during the update (and too late in the case of
required inputs).

* Define a private API in `@angular/core` for signal forms to implement:
  * `ɵControl` for the `Control` directive.
  * `ɵFieldState` for the control's associated `FieldState`.
* Emit specialized instructions when compiling a `[control]` binding:
  * `ɵɵcontrolCreate` sets up the `ɵControl` directive if present,
    determines whether it's bound to a native control element or a
    custom control component, and adds the appropriate event listeners
    to notify the `ɵFieldState` of UI changes.
  * `ɵɵcontrol` propagates changes from `ɵFieldState` properties to their
    corresponding UI control properties (in additional to binding the `control`
    property itself).

PR Close #63773
2025-10-04 13:21:55 -07:00
Leon Senft 42e1062bc5 refactor(core): add specialized instruction for [control] bindings (#63773)
* Emit a `ɵɵcontrol` instruction in place of `ɵɵproperty` for property
  bindings named "control". This instruction cannot be chained, but is
  otherwise functionally equivalent.

* Upcoming changes will use the `ɵɵcontrol` instruction to bind a signal
  form field to a UI control (be it a native element or custom directive).

PR Close #63773
2025-10-04 13:21:55 -07:00
Jessica Janiuk 548ea027f6 fix(core): ensure missing leave animations don't queue leave animations (#64226)
There was a bug in the logic for checking if a leave animation exists for a node. This was affecting timing of nodes with enter animations.

PR Close #64226
2025-10-03 13:28:54 -07:00
Matthieu Riegler ab780a7786 docs: add info about disabling request caching (#64216)
fixes #64210

PR Close #64216
2025-10-03 17:18:59 +00:00
Matthieu Riegler e40307803a refactor(devtools): visual separation between directives in the property tab (#64222)
also a drive by clean-up to remove some `ng-deep` stylings

PR Close #64222
2025-10-03 15:05:50 +00:00
Miles Malerba 34dd3f647a refactor(forms): rename Field to FieldTree (#64214)
There are two primary reasons for this renaming:
1. It better reflects the actual nature of the proxy object, namely that
   the form is represented as a tree, and that this object is used for
   navigating the tree structure (while `FieldState` is used for getting
   the state at a particular point in the structure).
2. This frees up the name `Field` to be used for the directive that
   binds a `FieldTree` to a UI control.

PR Close #64214
2025-10-03 07:59:31 -07:00
Angular Robot e0b9d9b437 build: update all non-major dependencies (#64218)
See associated pull request for more information.

PR Close #64218
2025-10-03 07:51:33 -07:00
SkyZeroZx d3e76b1956 fix(migrations): preserve component imports when pruning NgModules in standalone migration (#64186)
This fix preserves component imports by adding missing  statements and replacing module references with the correct component

PR Close #64186
2025-10-02 13:54:14 -07:00
Angular Robot e23815bb7d build: update dependency typescript to v5.9.3 (#64207)
See associated pull request for more information.

Closes #64192 as a pr takeover

PR Close #64207
2025-10-02 20:48:42 +00:00
Angular Robot 47048639f8 build: update peter-evans/create-or-update-comment action to v5 (#64211)
See associated pull request for more information.

PR Close #64211
2025-10-02 13:25:15 -07:00
Alan Agius 8146fc2817 test: fix vscode language service e2e tests (#64197)
Fix the e2e test suite for the vscode language service extension and run it in CI.

PR Close #64197
2025-10-02 13:03:24 -07:00
Andrew Scott 5e61e8d3c3 fix(router): Fix memory leak through Navigation.abort and canDeactivate guards (#64141)
This commit updates the internal transition to handle context retention
through the abort function. This retention chain included the
previousNavigation and setting this to a noop function resolves the
issue.

fixes #63983

PR Close #64141
2025-10-02 17:31:42 +00:00
Shuaib Hasan Akib 015d582801 docs(docs-infra): keep file name visible when code block is hidden (#64204)
Ensures that file names remain visible even if the associated code block
is collapsed or hidden, improving readability and context in the docs.

PR Close #64204
2025-10-02 17:30:45 +00:00
Matthieu Riegler 9eac43cf46 feat(common): Support of optional keys for the KeyValue pipe (#48814)
This commit is extending the capabilities of the KeyValue pipe by allowing interfaces with optional keys.

fixes angular#46867

PR Close #48814
2025-10-02 16:58:40 +00:00
Jessica Janiuk dd7c4cd9d1 fix(core): Fixes animations in conjunction with content projection (#63776)
Content Projected nodes are not destroyed and recreated, like every other
situation. Enter and Leave animations were ephemeral and are
expected to run once, and then be cleared. This means that for content projection
cases, the animations would only ever work the first time they were shown / hid.

In order to resolve this, we move to an animation queue that re-runs the animation
functions stored in the LView. In most cases, this animation will run once on creation.
For content projection, the enter and leave animations will fire more than once. Animations
are stored on the LView, but indexed and scheduled by whichever RNode needs to be animated.
So we only run animations for an affected RNode, rather than potentially all in the LView.

This also moves the queue to afterRender, which is safer than right after template
execution in refreshView.

fixes: #63418
fixes: #64065
fixes: #63901

PR Close #63776
2025-10-02 16:56:00 +00:00
Yasin Aslan cb56fbfddb fix(core): handle undefined CSS time values in parseCssTimeUnitsToMs function (#64181)
Improve error handling when `rawDelays` contains fewer items than `transitionedProperties`, preventing a toLowerCase of undefined error in `parseCssTimeUnitsToMs`.

PR Close #64181
2025-10-02 08:13:48 -07:00
Shuaib Hasan Akib b22f73d54f docs(docs-infra): update styles to align checkbox with label (#64202)
Removed extra spacing and removed center alignment so that checkboxes and
their labels are visually consistent.

PR Close #64202
2025-10-02 08:11:59 -07:00
Alan Agius 595c668142 docs: update website URL in license banners (#64183)
Replace angular.io with angular.dev
PR Close #64183
2025-10-02 07:56:58 -07:00
Angular Robot 50866b6e87 build: update all non-major dependencies (#64191)
See associated pull request for more information.

PR Close #64191
2025-10-02 07:52:17 -07:00
Jeremy Kescher 0e4e17cd97 refactor(http): HttpResponseBase.statusText (#64176)
Since HTTP/2, responses no longer contain a status text besides the status code, which caused our default value of 'OK' to be used in HttpErrorResponse.message.

DEPRECATED: `HttpResponseBase.statusText` is deprecated

PR Close #64176
2025-10-02 07:50:29 -07:00
Taygan Caldwell 6169fa5888 fix(devtools): stop second component tree traversal, if devtools metadata is placed on the body tag (#64161)
Stop multiple component tree traversals if the app root is the body tag. This caused the devtools ui to duplicate the component information, if the app root was the body tag

PR Close #64161
2025-10-02 07:46:56 -07:00
Miles Malerba 823384207b refactor(forms): Add a lightweight DI token for Control (#64188)
This will allow optionally injecting the Control directive without
importing the full directive.

PR Close #64188
2025-10-02 07:45:29 -07:00
kirjs 732635b382 release: cut the v21.0.0-next.6 release 2025-10-02 08:25:16 -04:00
kirjs 4699ccfb0d docs: release notes for the v20.3.3 release 2025-10-02 08:07:17 -04:00
Angular Robot 7bc4ec4ff7 build: update cross-repo angular dependencies to v21.0.0-next.6 (#64187)
See associated pull request for more information.

PR Close #64187
2025-10-01 22:48:33 +00:00
kirjs d892aabf6e Revert "fix(core): Fixes animations in conjunction with content projection (#63776)" (#64189)
This reverts commit 1cb16fddb5.

PR Close #64189
2025-10-01 22:42:40 +00:00
Chintan Kavathia be0455adda fix(elements): return value on signal input getter (#62113)
BREAKING CHANGE: Fix signal input getter behavior in custom elements.

Before this change, signal inputs in custom elements required function calls to access their values (`elementRef.newInput()`), while decorator inputs were accessed directly (`elementRef.oldInput`). This inconsistency caused confusion and typing difficulties.

The getter behavior has been standardized so signal inputs can now be accessed directly, matching the behavior of decorator inputs:

Before:
- Decorator Input: `elementRef.oldInput`
- Signal Input: `elementRef.newInput()`

After:
- Decorator Input: `elementRef.oldInput`
- Signal Input: `elementRef.newInput`

closes #62097

PR Close #62113
2025-10-01 13:52:34 -04:00
Angular Robot c0e1c41663 build: update ossf/scorecard-action action to v2.4.3 (#64164)
See associated pull request for more information.

PR Close #64164
2025-10-01 13:45:47 -04:00
Angular Robot 851c07bd7a build: update all non-major dependencies (#64148)
See associated pull request for more information.

PR Close #64148
2025-10-01 13:26:44 -04:00
Shuaib Hasan Akib 61624fde3f refactor(common): update NgIf, ngComponentOutlet and ngTemplateOutlet examples and remove redundant standalone flag (#64155)
Removed `standalone: true` since it is now the default
and no longer necessary.

refactor(common): update ngComponentOutlet and ngTemplateOutlet examples and remove redundant standalone flag

Removed `standalone: true` since it is now the default
and no longer necessary.

PR Close #64155
2025-10-01 13:22:44 -04:00
Angular Robot ee7d49a6d3 docs: update Angular CLI help (#64174)
Updated Angular CLI help contents.

PR Close #64174
2025-10-01 13:13:51 -04:00
kirjs 05370837fc Revert "feat(common): Support of optional keys for the KeyValue pipe (#48814)" (#64179)
This reverts commit 99c5269ee8.

PR Close #64179
2025-10-01 12:45:32 -04:00
Angular Robot 1b102c2817 build: update dependency @types/jsdom to v27 (#64165)
See associated pull request for more information.

PR Close #64165
2025-10-01 11:53:21 -04:00
Matthieu Riegler d16d624b90 refactor(core): run control-flow migration by default (#64136)
After adding the control flow migration as optional in v20, we enable it by default in v21.

PR Close #64136
2025-10-01 11:51:33 -04:00
Angular Robot 2f6caef636 build: update bazel dependencies (#64169)
See associated pull request for more information.

PR Close #64169
2025-10-01 11:15:00 -04:00
SkyZeroZx 51a0b59389 fix(migrations): handle shorthand property declarations in NgModule (#64160)
The migration now correctly detects shorthand declarations in NgModule metadata

PR Close #64160
2025-10-01 10:41:15 -04:00
Angular Robot 5319177638 build: update dependency ng-packagr to v21.0.0-next.4 (#64170)
See associated pull request for more information.

PR Close #64170
2025-10-01 10:36:29 -04:00
Alan Agius 3bd4362ff1 docs: update APF docs for new .d.ts layout (#64168)
The Angular Package Format has been updated to group all TypeScript declaration files (`.d.ts`) under a single `types/` directory within the package. Previously, these files were located at the package root or within entry-point specific directories.

This commit updates the APF documentation to reflect this new structure, including:
- The example file layout.
- The file purpose description table.
- The `package.json` exports field example.
- The legacy typings field example.

This brings the documentation in line with the current package structure, providing accurate guidance for library authors and tool developers.

PR Close #64168
2025-10-01 09:41:32 -04:00
Jessica Janiuk 1cb16fddb5 fix(core): Fixes animations in conjunction with content projection (#63776)
Content Projected nodes are not destroyed and recreated, like every other
situation. Enter and Leave animations were ephemeral and are
expected to run once, and then be cleared. This means that for content projection
cases, the animations would only ever work the first time they were shown / hid.

In order to resolve this, we move to an animation queue that re-runs the animation
functions stored in the LView. In most cases, this animation will run once on creation.
For content projection, the enter and leave animations will fire more than once. Animations
are stored on the LView, but indexed and scheduled by whichever RNode needs to be animated.
So we only run animations for an affected RNode, rather than potentially all in the LView.

This also moves the queue to afterRender, which is safer than right after template
execution in refreshView.

fixes: #63418
fixes: #64065
fixes: #63901

PR Close #63776
2025-10-01 09:07:38 -04:00
Matthieu Riegler f866132642 docs: add allowed-host mention (#64145)
and other dev-server options

PR Close #64145
2025-10-01 09:03:07 -04:00
Matthieu Riegler 99c5269ee8 feat(common): Support of optional keys for the KeyValue pipe (#48814)
This commit is extending the capabilities of the KeyValue pipe by allowing interfaces with optional keys.

fixes #46867

PR Close #48814
2025-10-01 08:58:47 -04:00
Kristiyan Kostadinov 159be56709 fix(compiler): recover template literals with broken expressions (#64150)
Fixes two issues that were preventing template literals from being recovered properly if one of the interpolated expressions is broken:
1. We weren't updating the expected brace counter when an interpolation starts which in turn was throwing off the recovery logic in `skip`.
2. When producing tokens for template literals, we were treating the closing brace as an operator whereas other places treat it as a character. Even after fixing the first issue, this was preventing the recovery logic from working correctly.

Fixes #63940.

PR Close #64150
2025-09-30 16:01:50 -04:00
aparziale 31bc9e4111 fix(migrations): skip migration for inputs with 'this' references (#64142)
Prevents migration of @input() properties that contain references to 'this' in their initializer functions. This ensures that functions accessing class members via 'this' remain unchanged, preventing potential build errors.

PR Close #64142
2025-09-30 15:32:44 -04:00
Shuaib Hasan Akib 7345bdc06b refactor(common): update pipe examples and remove redundant standalone flag (#64135)
Updated pipe examples to explicitly import the pipe for clarity and
correctness. Also removed `standalone: true` since it is now the default
and no longer necessary.

PR Close #64135
2025-09-30 15:31:11 -04:00
hawkgs c3a949a52d refactor(compiler-cli): include linkedSignal in the signal debugName transformer (#64106)
Add support for `linkedSignal`s in the signal `debugName` transformer. Continuation of #63346

PR Close #64106
2025-09-30 14:52:15 -04:00
Alan Agius 23e6eb3308 refactor(language-service): move typescript to dependencies (#64159)
This is actually a runtime dependency and is marked as external in esbuild

PR Close #64159
2025-09-30 14:50:22 -04:00
Andrew Scott 0b0bd8e12c refactor(language-service): remove some old ivy/pre-apf things (#64157)
This removes the pre_apf test project, which is far out of support as well as some references to ivy

PR Close #64157
2025-09-30 14:48:24 -04:00
Angular Robot 05d57e0a9b docs: update Angular CLI help (#64158)
Updated Angular CLI help contents.

PR Close #64158
2025-09-30 14:47:35 -04:00
Matthieu Riegler 2aca6da583 refactor(core): Add custom formatters for Signals (#64000)
This commit adds a devmode only formatter for Angular signals

Custom formatters must also be enabled in the browser devtools.

PR Close #64000
2025-09-30 13:49:26 -04:00
Matthieu Riegler 899c25f8d0 docs: add mention of host-context() being spec deprecated but still supported (#64153)
PR Close #64153
2025-09-30 13:36:51 -04:00
Alan Agius 20bb459c7a build: update dependencies and build config (#64154)
The VS Code extension build is failing due to some dependency issues. This commit updates the dependencies and build configuration to fix the build.

- Update `pnpm-lock.yaml` to reflect the dependency changes.
- Update `BUILD.bazel` files to adjust the external dependencies for `esbuild` and to correctly package the VSIX file.

PR Close #64154
2025-09-30 12:35:07 -04:00
Matthieu Riegler 563bc386b2 docs(docs-infra): fix app-scroller offset. (#64144)
Guide heading need different scroll offsets depending on the width of the screen. (The menu position varies).

PR Close #64144
2025-09-30 11:05:26 -04:00
Matthieu Riegler 7a29cdc0f5 docs(docs-infra): prevent to call section.scrollIntoView on the server side (#64038)
PR Close #64038
2025-09-30 11:00:57 -04:00
Matthieu Riegler a10eb38f76 feat(devtools): Add possibility to log directive instances and their prop values (#64143)
The improves debug possibilties via the Angular devtools

fixes #62235

PR Close #64143
2025-09-30 10:30:58 -04:00
Shuaib Hasan Akib 9a913dcfa9 docs(docs-infra): clean up code and use inferred types where possible (#64139)
PR Close #64139
2025-09-29 16:48:11 -04:00
Matthieu Riegler 04462ed67f refactor(compiler): Remove the interpolation config (#64071)
After #63474, we don't need that anymore.

PR Close #64071
2025-09-29 15:29:46 -04:00
Alan Agius fc643c9044 build: adopt moduleResolution: "bundler" (#64125)
This commit updates the TypeScript configuration across the project to use `moduleResolution: "bundler"`. This modernizes our module resolution strategy to align with current TypeScript best practices and bundler behaviors.

The following changes are included:
- Updated `tsconfig.json` files to set `moduleResolution` to `"bundler"`.
- Updated the `rules_angular` bazel dependency to a version compatible with these changes.
- Adjusted related test files and golden files to reflect the new module resolution strategy.

PR Close #64125
2025-09-29 14:20:23 -04:00
SkyZeroZx 377d1a0aea docs: Adds guide for custom HTTP parameter encoding (#64119)
PR Close #64119
2025-09-29 13:30:56 -04:00
Angular Robot 824bab57c7 build: update cross-repo angular dependencies (#64093)
See associated pull request for more information.

PR Close #64093
2025-09-29 13:10:15 -04:00
Matthieu Riegler 44d2ec5a05 refactor(devtools): guard value reads in the serializer (#64096)
Some properties (like gets) might throw when we try to read them.
With this commit we fail gracefuly and show a warning message for the property that can't be read.

fixes #56755

PR Close #64096
2025-09-29 13:08:11 -04:00
Joey Perrott 78cee8eca3 ci: correctly check for outputPaths to exist before deleting them (#64137)
Properly check if the output paths for each npm package exists before ensuring they are deleted when building all packages

PR Close #64137
2025-09-29 12:01:34 -04:00
Angular Robot 3b28ee1daa build: lock file maintenance (#64126)
See associated pull request for more information.

PR Close #64126
2025-09-29 11:55:51 -04:00
Angular Robot 68c207701d build: update github/codeql-action action to v3.30.5 (#64120)
See associated pull request for more information.

PR Close #64120
2025-09-29 10:49:27 -04:00
Angular Robot 508090aaed build: update all non-major dependencies (#64111)
See associated pull request for more information.

PR Close #64111
2025-09-29 10:14:09 -04:00
Matthieu Riegler 4fe0ac5a87 refactor(devtools): themed devtool tab icons for firefox (#64122)
With this change, Firefox get a different tab icon when the dark theme is enabled

fixes #52980

PR Close #64122
2025-09-29 09:31:03 -04:00
Angular Robot 686faf1715 build: update dependency tar.bzl to v0.5.6 (#64114)
See associated pull request for more information.

PR Close #64114
2025-09-29 09:27:42 -04:00
Alan Agius 9787d3c4d6 docs: remove note about node.js 17+ (#64129)
This note is pretty old and the mentioned behaviour has been the default for a number of major version.

PR Close #64129
2025-09-29 09:25:00 -04:00
Angular Robot 3e5b6469eb build: update bazel dependencies (#64109)
See associated pull request for more information.

PR Close #64109
2025-09-26 15:55:15 -04:00
Jessica Janiuk 221d5687ae Revert "refactor(compiler): Remove the interpolation config (#64071)" (#64110)
This reverts commit 768a09d3c3.

PR Close #64110
2025-09-26 15:16:53 -04:00
Matthieu Riegler bd48349b76 refactor(compiler): throw on attribute bindings for ng-container (#64072)
They are never valid on ng-container.
fixes #53760

PR Close #64072
2025-09-26 13:53:00 -04:00
Joey Perrott 758f0883f5 test(core): remove shelljs from core schematics tests (#64042)
Remove shelljs usage from core schematic tests and use builtins instead

PR Close #64042
2025-09-26 13:14:09 -04:00
Joey Perrott 9c29a40e1a build: remove shelljs from build scripts (#64042)
Remove shelljs from package building scripts

PR Close #64042
2025-09-26 13:14:09 -04:00
Joey Perrott e31f4bc597 build: update goldens management script to drop shelljs (#64042)
Update goldens management script to drop shelljs usage

PR Close #64042
2025-09-26 13:14:09 -04:00
Joey Perrott 0eb13d94a5 build: remove shelljs from release package diff script (#64042)
Remove the shelljs usage from package diff script

PR Close #64042
2025-09-26 13:14:08 -04:00
Joey Perrott 422a3b9ae6 test(zone.js): refactor tests to remove usage of shelljs (#64042)
Remove shelljs from zone.js tests

PR Close #64042
2025-09-26 13:14:08 -04:00
Matthieu Riegler 768a09d3c3 refactor(compiler): Remove the interpolation config (#64071)
After #63474, we don't need that anymore.

PR Close #64071
2025-09-26 12:36:50 -04:00
Angular Robot 8a1e36bf5d build: update dependency @lezer/html to v1.3.11 (#64097)
See associated pull request for more information.

PR Close #64097
2025-09-26 11:55:40 -04:00
hawkgs caee728d3b fix(devtools): signal graph linkedSignal node UI (#64105)
Fix the colors of `linkedSignal`s. Use grayish colors for unknown/unhandled signals.

PR Close #64105
2025-09-26 11:55:00 -04:00
Angular Robot 238ccc7e49 docs: update Angular CLI help (#64103)
Updated Angular CLI help contents.

PR Close #64103
2025-09-26 09:55:53 -04:00
Alan Agius ee02976909 ci: correct paths for disabled projects (#64102)
The paths for `pre_apf_project` and `pre_standalone_project` in the renovate configuration were missing the `package.json` suffix. This resulted in renovate not being able to find and disable updates for these projects as intended.

This commit corrects the paths to include `package.json`.

PR Close #64102
2025-09-26 09:48:27 -04:00
Jens Kuehlers 597d6e7145 docs: add StateOfJS survey banner (#64083)
PR Close #64083
2025-09-26 09:37:23 -04:00
Ankita Sood 8ff536bda8 docs: update text (#64095)
replace `above` with `below`
PR Close #64095
2025-09-26 09:34:00 -04:00
Alan Agius 14d5b0e5a9 refactor: make language service integration tests hermetic (#64098)
The language service integration tests were modifying files in the source tree, which made them flaky and non-hermetic. This also required the tests to be run with `no-remote-exec` and `no-sandbox` tags in Bazel.

This commit refactors the tests to copy the test projects to a temporary directory before running the tests. This makes the tests more robust, isolated, and allows them to be run remotely and in a sandbox.

Additionally, dependencies for the `pre_apf_project` and `pre_standalone_project` test fixtures have been reverted to older Angular versions. This is to ensure we are correctly testing against legacy project setups as was originally intended.

PR Close #64098
2025-09-26 08:30:44 -04:00
Matthieu Riegler e2fd79bfdb docs: add warning to AbstractControl.setErrors (#64063)
fixes #38191

PR Close #64063
2025-09-25 16:29:52 -04:00
Alan Agius 6fee508dab refactor: break circular dependency in integration tests (#64091)
The lsp integration tests had a circular dependency with other integration tests, which made the build setup complex and fragile. This was previously handled by using 'copy_to_bin', which is not ideal as it hides the true dependency graph.

This commit refactors the build configuration to break this cycle by introducing a dedicated 'ts_project' for the lsp tests with its own 'tsconfig.json'. This change simplifies the build logic and makes dependencies explicit.

PR Close #64091
2025-09-25 16:16:10 -04:00
Jad Chahed 3d2e1a670f docs: fix XLIFF 1.2 specification URL in i18n translation files guide (#64075)
PR Close #64075
2025-09-25 15:36:19 -04:00
Jessica Janiuk 8a0c9ca8be fix(core): prevents unintended early termination of leave animations and hoisting (#64088)
The event listeners for animationstart and animationend weren't properly checking whether the animation event fired matched the node we're bound to, since animation events bubble. This resulted in child node animation events bubbling up and causing elements to get prematurely removed.

fixes: #64084

PR Close #64088
2025-09-25 15:33:30 -04:00
Angular Robot 566077ff05 build: update all github actions (#64079)
See associated pull request for more information.

PR Close #64079
2025-09-25 15:11:14 -04:00
hawkgs a45e6fd44a fix(devtools): signal graph effect node (#64076)
Add a label and some other minor UI tweaks.

PR Close #64076
2025-09-25 15:03:15 -04:00
Angular Robot 8ddd7d60a9 build: update all non-major dependencies (#64080)
See associated pull request for more information.

PR Close #64080
2025-09-25 15:01:56 -04:00
Angular Robot 68c0f5b230 build: update dependency node to v22.20.0 (#64081)
See associated pull request for more information.

PR Close #64081
2025-09-25 15:01:11 -04:00
Joey Perrott 497dce962d ci: update pullapprove config (#64086)
Update the pullapprove config to include vscode-ng-language-service

PR Close #64086
2025-09-25 14:34:41 -04:00
Matthieu Riegler d7dead37d2 docs: fix homepage width (#64087)
Long term, we probably need to rework how adev behave on very large screen.

PR Close #64087
2025-09-25 14:28:32 -04:00
Alan Agius cd2376186a build: mark lsp integration test as flaky (#64085)
The lsp integration test is flaky and can fail intermittently. This change marks the test as `flaky = True` to prevent it from failing the build.

Additionally, the `no-remote` tag is updated to `no-remote-exec`. The former disables remote caching, while the test can still benefit from it.

PR Close #64085
2025-09-25 14:22:24 -04:00
Matthieu Riegler 1dee0d38b7 build: add .vscode files back to the .gitignore (#64059)
Especially `.vscode/settings` are meant to be local files.

PR Close #64059
2025-09-25 14:15:59 -04:00
Alan Agius fe0e5ab294 build: bump vscode-tmgrammar-test to 0.1.3 (#64078)
Update `vscode-tmgrammar-test`.

PR Close #64078
2025-09-25 10:58:41 -04:00
Alan Agius 9fd8d40d00 ci: authenticate to Bazel RBE (#64070)
This commit configures the Bazel RBE setup action to use the 'RBE_TRUSTED_BUILDS_USER' secret for authentication. This is necessary to ensure that the CI can properly connect to the remote build execution environment.

PR Close #64070
2025-09-25 10:43:02 -04:00
Doug Parker 45e3f77353 refactor(devtools): remove hard newlines from reviewer note (#64062)
These newlines aren't necessary and potentially forced undesired formatting on the reviewer.

PR Close #64062
2025-09-25 10:36:41 -04:00
Doug Parker b76fb9a808 refactor(devtools): update release script to use /pull/new endpoint (#64062)
This jumps straight to the "Open a pull request" screen rather than having the user click through the compare screen to start a PR.

PR Close #64062
2025-09-25 10:36:41 -04:00
Doug Parker e9b6ceb14d refactor(devtools): update DevTools release script to resolve origin URL (#64062)
`git config` only lists the configured value, but `git remote get-url` actually resolves the URL and is more stable.

I had a local configuration which aliased `gh:` to the appropriate GitHub URL:

```
[url "git@github.com:"]
    insteadOf = "gh:"
    pushInsteadOf = "git@github.com"
```

In this scenario, `git config` returns `gh:dgp1130/angular`, but `git remote get-url` returns `git@github.com:dgp1130/angular`, which is what the subsequent regex expects.

PR Close #64062
2025-09-25 10:36:41 -04:00
Alan Agius 95fa943b20 refactor: update dependencies and build configurations (#64073)
This commit updates several dependencies to their latest versions and adjusts the build configurations accordingly.

Key changes include:
- Upgraded various development and runtime dependencies.
- Removed outdated jasmine test runner configuration.
- Updated Bazel build files to align with new dependency structures.

Some dependencies like `vscode-language*` have been added to Renovate's ignore list as they require a more significant refactoring effort that is planned for a future update.

PR Close #64073
2025-09-25 10:26:19 -04:00
Alan Agius 64e28ccf81 build: update cross-repo angular dependencies (#64073)
See associated pull request for more information.

Closes #64043 as a pr takeover

PR Close #64073
2025-09-25 10:26:19 -04:00
Jessica Janiuk 0e8e7bac6c release: cut the v21.0.0-next.5 release 2025-09-24 16:27:20 -07:00
Jessica Janiuk b1d9373371 docs: release notes for the v20.3.2 release 2025-09-24 16:24:04 -07:00
Angular Robot 057eff6f4b build: update dependency prettier to v3 (#64053)
See associated pull request for more information.

PR Close #64053
2025-09-24 21:49:53 +00:00
Angular Robot 090c0bb944 build: update dependency vsce to v2 (#64054)
See associated pull request for more information.

PR Close #64054
2025-09-24 21:27:23 +00:00
Angular Robot 429b7588d8 build: update dependency lru-cache to v11 (#64051)
See associated pull request for more information.

PR Close #64051
2025-09-24 21:25:57 +00:00
Angular Robot c791519a64 build: update dependency cross-env to v10 (#64050)
See associated pull request for more information.

PR Close #64050
2025-09-24 21:25:23 +00:00
Angular Robot 3cf009bde1 build: update dependency yallist to v5 (#64060)
See associated pull request for more information.

PR Close #64060
2025-09-24 21:23:58 +00:00
Doug Parker e8beaa42c0 release: bump Angular DevTools version to 1.3.0 (#64044)
PR Close #64044
2025-09-24 13:54:14 -07:00
Joey Perrott 863c7eaafe build: migrate vscode extension into repo (#63924)
Migrate the vscode extension for angular into this repository.

PR Close #63924
2025-09-24 20:24:32 +00:00
Matthieu Riegler 25e93f0d01 docs(docs-infra): scroll offset for headings (#64039)
PR Close #64039
2025-09-24 20:23:41 +00:00
Matthieu Riegler e498c3034b docs(docs-infra): fix playground layout (#64037)
PR Close #64037
2025-09-24 20:21:05 +00:00
hawkgs 0b2018d153 docs(docs-infra): align docs-step number to the heading (#64035)
Fix misaligned number element.

PR Close #64035
2025-09-24 18:31:42 +00:00
Matthieu Riegler c0d88c37c9 fix(forms): Emit FormResetEvent when resetting control (#64024)
Prior to this change, the event was emitted by the Form Directive. With the change, it is now emitted at the control level.

fixes #58894

PR Close #64024
2025-09-24 16:48:32 +00:00
Matthieu Riegler fffc7cf1c4 refactor(migrations): migrate usages of getTestBed.initTestEnvironment (#63997)
This commit also removes code paths that were only useful for G3.

PR Close #63997
2025-09-24 16:03:40 +00:00
aparziale b96afb4bfc fix(migrations): handle reused templates in control flow migration (#63996)
The control flow migration was incorrectly removing `ng-template` elements in scenarios where they were referenced by multiple `*ngIf` directives' `else` clauses and also used independently via `ngTemplateOutlet`.

PR Close #63996
2025-09-24 16:01:58 +00:00
Matthieu Riegler 7e8e310868 refactor(compiler-cli): Don't emit optional chain non nullable diagnostics on indexed access. (#64007)
When `noUncheckedIndexedAccess` is not enabled, indexed accesses do not include `undefined` in the type.
This makes the OptionalChainNotNullableCheck inconvenient when wanting to safe guard an indexed access (and when the typings isn't helping you).

Ideally project should enable `noUncheckedIndexedAccess` for better typesafety, but this is often inconveninent (we do not enable it by default) and often not the resort of the developer.

So more better coding convinience,  `OptionalChainNotNullableCheck` will not raise an error/warning on indexed Acessed followed by an optional chaining when `noUncheckedIndexedAccess` is not enabled.

See also #63809 which will detect more cases

PR Close #64007
2025-09-24 15:08:05 +00:00
Joey Perrott a9145f3856 Revert "feat(common): update to cldr 47 (#63923)" (#64031)
This reverts commit 8ca3e3a0bc.

PR Close #64031
2025-09-24 15:03:43 +00:00
Devin Chasanoff 1216c491fd docs: add ai_tutor mcp tool docs (#63946)
PR Close #63946
2025-09-24 15:01:06 +00:00
Joey Perrott 7a7bc274cc ci: use release config when deploying adev (#64030)
Use the release config when deploying to adev to ensure that the version stamping is in place and correct

PR Close #64030
2025-09-24 14:50:46 +00:00
Angular Robot 3a9b8d8b8f docs: update Angular CLI help (#64019)
Updated Angular CLI help contents.

PR Close #64019
2025-09-24 14:42:32 +00:00
Matthieu Riegler 513539b98c docs(docs-infra): tutorial navigation list component (#64027)
fixes #63516

PR Close #64027
2025-09-24 14:30:14 +00:00
AleksanderBodurri 521c2a7646 feat(devtools): Change lazy/eager visualization by using dashed lines and correctly positioned edge arrows (#63980)
Previously we would visualize route config "types" by colouring different nodes.

Now the we only colour nodes to represent the active route path. Lazy loaded routes are represented with dashed line edges that point in the direction of loading.

PR Close #63980
2025-09-24 14:25:28 +00:00
Shuaib Hasan Akib 99cf1388e8 docs: not external link (#64025)
PR Close #64025
2025-09-24 14:24:57 +00:00
Angular Robot 1b7f17b015 build: update all non-major dependencies (#64018)
See associated pull request for more information.

PR Close #64018
2025-09-24 14:23:17 +00:00
Angular Robot 19b87864fa build: update cross-repo angular dependencies (#64020)
See associated pull request for more information.

PR Close #64020
2025-09-24 14:21:50 +00:00
Angular Robot f36a5049b5 build: update pnpm to v10.17.1 (#64015)
See associated pull request for more information.

PR Close #64015
2025-09-23 21:40:03 +00:00
Angular Robot 4230442b5c build: update cross-repo angular dependencies (#64011)
See associated pull request for more information.

PR Close #64011
2025-09-23 19:58:36 +00:00
Joey Perrott 8ca3e3a0bc feat(common): update to cldr 47 (#63923)
Update to CLDR version 47 for localization

PR Close #63923
2025-09-23 19:57:00 +00:00
Avcharov Hryhorii 1279364c3a refactor(core): improve linkedSignal type definitions, add debugName to options (#63346)
Add debugName for having ability to visualize linkedSignal name in devtools signal graph

PR Close #63346
2025-09-23 18:15:49 +00:00
Joey Perrott ee2fb08167 build: update to latest version of rules_browsers (#64009)
Update to latest version to address firefox timeout issues

PR Close #64009
2025-09-23 18:00:41 +00:00
cexbrayat 57aad4550f docs: angular does not support BigInt literal values (#64010)
PR Close #64010
2025-09-23 17:58:12 +00:00
JoostK 50d9d55f49 fix(core): fix narrowing of Resource.hasValue() (#63994)
This commit changes `Resource.hasValue()` and its derived types to improve narrowing
of resources whose generic type either does not include `undefined` (i.e. when a default
value has been provided) or when the generic type is `unknown`. This fixes the undesirable
behavior where `hasValue()` would cause the `else` branch of an `hasValue()` conditional
to have a narrowed type of `never`, given that the `hasValue()`'s type guard covers the
entire type range already (meaning that the type in the else-branch cannot be inhabited
in the type system, yielding the `never` type).

By making the `hasValue()` method only a type guard when the generic type includes `undefined`
these problems are avoided.

Fixes #60766
Fixes #63545
Fixes #63982

PR Close #63994
2025-09-23 14:20:55 +00:00
hawkgs 31769e6309 docs(docs-infra): fix home page UI issues on Firefox and Safari (#64006)
Fix broken banners and "Learn More" icons.

PR Close #64006
2025-09-23 14:19:03 +00:00
Cheng-Hsuan Tsai 60267282c7 docs(docs-infra): fix docs-card padding (#64004)
PR Close #64004
2025-09-23 14:18:31 +00:00
Angular Robot d6283de397 build: update dependency aspect_bazel_lib to v2.21.2 (#64002)
See associated pull request for more information.

PR Close #64002
2025-09-23 14:16:29 +00:00
Matthieu Riegler 3d1e8fa08b docs: add types category for signal forms API entries (#63967)
PR Close #63967
2025-09-22 22:47:38 +00:00
Angular Robot 304d91f784 build: update cross-repo angular dependencies (#63998)
See associated pull request for more information.

PR Close #63998
2025-09-22 22:36:50 +00:00
Milo 5406e1a84b refactor(core): use version>0 instead of hasRun (#62467)
this saves a field for effect and watch nodes

PR Close #62467
2025-09-22 16:51:50 +00:00
SkyZeroZx 3bd91ded43 fix(compiler-cli): resolve import alias in defer blocks (#63966)
Fixes an error where using an alias in a defer block caused the compiler CLI to fail when parsing. The resolution logic in ComponentDecoratorHandler was updated to correctly handle deferred dependencies with aliased imports.

PR Close #63966
2025-09-22 15:52:16 +00:00
Angular Robot a7e48514eb build: lock file maintenance (#63984)
See associated pull request for more information.

PR Close #63984
2025-09-22 15:04:30 +00:00
Ezequiel Cicala a2d98cc8d3 docs: add missing signal function (#63974)
The `buttonClasses` variable should be a signal according to the example, so we added the call.
PR Close #63974
2025-09-22 14:41:17 +00:00
Steven Chim e88f484ccb docs: fix typo in component bindings jsdoc (#63969)
PR Close #63969
2025-09-22 14:33:06 +00:00
Shuaib Hasan Akib 9067d12107 docs: fix typo "DO" → "Do" (#63988)
PR Close #63988
2025-09-22 14:30:55 +00:00
Shuaib Hasan Akib eb532f5768 docs(docs-infra): makes property signal (#63976)
PR Close #63976
2025-09-22 14:30:12 +00:00
Kristiyan Kostadinov f5b50ec20d refactor: clean up explicit standalone flags from tests (#63963)
Since standalone is the default, we can dropn the `standalone: true` flags from our tests.

PR Close #63963
2025-09-22 14:27:34 +00:00
hawkgs e628c8e889 docs(docs-infra): fix nav menu for tablets (#63990)
Make broken nav menu visible for tablets.

PR Close #63990
2025-09-22 14:25:03 +00:00
hawkgs e49121e044 docs(docs-infra): fix home page sections padding for smaller viewports (#63990)
Fix paddings for smaller viewports.

PR Close #63990
2025-09-22 14:25:03 +00:00
Angular Robot 6165a9f00b build: update all non-major dependencies (#63964)
See associated pull request for more information.

PR Close #63964
2025-09-22 14:24:32 +00:00
hawkgs 6f9f1ca6fe docs(docs-infra): don't discard favorites in search history when reselected (#63906)
Do not downgrade favorites to recent search results when you reselect them via the search results list.

PR Close #63906
2025-09-22 14:22:19 +00:00
Matthieu Riegler 6782f7148d docs: remove api grouping toggle (#63961)
PR Close #63961
2025-09-19 22:13:21 +00:00
Matthieu Riegler 40ae5af444 docs: callout for HMR+Defer (#63958)
fixes #60846

PR Close #63958
2025-09-19 21:35:36 +00:00
Matthieu Riegler c50d659509 refactor(core): protect InjectionToken usage of ngDevMode (#63875)
Since those are top level APIs, `ngDevMode` might not be available at runtime if they're invoked before the variable is set.

fixes #62796

PR Close #63875
2025-09-19 21:27:45 +00:00
Jessica Janiuk dde5badb71 fix(core): prevent animations renderer from impacting animate.leave (#63921)
This adds an optional flag to the renderer on `removeChild` called `requireSynchronousElementRemoval`, which can tell any downstream renderer that elements need to be removed synchronously. This gets passed down to the legacy animation renderer to ensure that any elements that set this flag aren't impacted by that renderers changes to timing.

fixes: #63893

PR Close #63921
2025-09-19 21:26:18 +00:00
Matthieu Riegler 56cb0931ef refactor(core): drop the usage of PromiseSettledResult<void> (#63955)
`PromiseSettledResult<void>` requires the ES2020 typings. Those might not be provided (or `skipLibCheck` is not enabled).

fixes #63931

PR Close #63955
2025-09-19 20:27:25 +00:00
Matthieu Riegler e835c359f7 docs: Add categories to form apis (#63938)
PR Close #63938
2025-09-19 20:21:16 +00:00
Matthieu Riegler 0a4ad9867b docs: add mention of the output structure. (#63916)
fixes #57247

PR Close #63916
2025-09-19 19:55:46 +00:00
Jessica Janiuk 2d232b39d4 Revert "refactor(compiler-cli): track member metadata using output AST (#63904)" (#63952)
This reverts commit ffe94b3a89.

PR Close #63952
2025-09-19 18:59:42 +00:00
Jessica Janiuk 5d538b21fd Revert "refactor(compiler): expose member decorator identifiers (#63904)" (#63952)
This reverts commit ef0ff78de2.

PR Close #63952
2025-09-19 18:59:42 +00:00
Jessica Janiuk 9d3cd16f33 Revert "fix(compiler-cli): capture metadata for undecorated fields (#63904)" (#63952)
This reverts commit 4c091abba6.

PR Close #63952
2025-09-19 18:59:41 +00:00
kirjs b60d5e49b1 refactor(forms): get rid of watFor in validation status spec (#63948)
It was flaky, and now it is not flaky

PR Close #63948
2025-09-19 17:59:32 +00:00
Jessica Janiuk db8f716a0e Revert "docs: Add categories to form apis (#63938)" (#63950)
This reverts commit 0c4feb8e9e.

PR Close #63950
2025-09-19 17:58:10 +00:00
Matthieu Riegler 0c4feb8e9e docs: Add categories to form apis (#63938)
PR Close #63938
2025-09-19 17:02:57 +00:00
Alan Agius b725af9924 docs: add documentation for NG0401 error (#63947)
PR Close #63947
2025-09-19 17:01:20 +00:00
Angular Robot 5a0225d9f9 build: update all non-major dependencies (#63928)
See associated pull request for more information.

PR Close #63928
2025-09-19 17:00:49 +00:00
Matthieu Riegler fec7c288e9 fix(core): Error on invalid APP_ID (#63252)
An invalid APP_ID could be responsible to generating broken CSS selectors. (eg `:` is an example for a character that breaks a selector by being a separator for pseudo-selectors.)
We now throw an error if the provided value is not alphanumerical

PR Close #63252
2025-09-19 15:00:10 +00:00
Angular Robot eeb07ddabf build: update dependency jasmine-spec-reporter to v7 (#63919)
See associated pull request for more information.

PR Close #63919
2025-09-19 14:57:53 +00:00
Angular Robot 8891ee492e build: update dependency concurrently to v9 (#63918)
See associated pull request for more information.

PR Close #63918
2025-09-19 14:54:12 +00:00
Leon Senft f008045ded fix(core): do not rename ARIA property bindings to attributes (#63925)
https://github.com/angular/angular/pull/62630 made it so that all ARIA
property bindings would write to their corresponding attribute instead.
The primary motivation for this change was to ensure that ARIA
attributes were always rendered correctly on the server, where the
emulated DOM may not correctly reflect ARIA properties as attributes.
Furthermore, this change added support for binding to ARIA attributes
using the property binding syntax (e.g. `[aria-label]`).

Unfortunately, https://github.com/angular/angular/pull/62630 relied on
the incorrect assumptions that an ARIA property name could be converted
to its attribute name (without hardcoding the conversion), and that the
value of an ARIA property matched its corresponding attribute. For
example, the `ariaLabelledByElements` property's value is an array of
DOM elements, while the corresponding `aria-labelledby` attribute's
value is a string containing the IDs of the DOM elements.

This partially reverts https://github.com/angular/angular/pull/62630 so
that only property bindings with ARIA attribute names (begin with
`aria-`) are converted to attribute bindings.

* `[ariaLabel]` will revert to binding to the `ariaLabel` property.
* `[aria-label]` will continue binding to the `aria-label` attribute.

Note the only difference between `[aria-label]` and `[attr.aria-label]`
is that the former will attempt to bind to inputs of the same name while
the latter will not.

PR Close #63925
2025-09-19 14:50:39 +00:00
Matthieu Riegler f1be5ae5dc refactor(core): fix MockRenderer in unit tests. (#63936)
This allows us to drop a test only check in the runtime.

PR Close #63936
2025-09-19 14:50:07 +00:00
Matt Lewis aeb3e6c6a5 fix(migrations): handle import aliases to the same module name (#63934)
Fixes a bug in the standalone migration where 2 imported modules have the same class name but 1 is imported with an alias and would not be added to the component imports array when migrating

Fixes #63913

PR Close #63934
2025-09-19 14:48:32 +00:00
Matthieu Riegler 445e84e370 docs(docs-infra): use Github theme colors for the code edition (#63944)
fixes #52654

PR Close #63944
2025-09-19 14:46:40 +00:00
Angular Robot 05afb49de9 build: update dependency serve to v14 (#63920)
See associated pull request for more information.

PR Close #63920
2025-09-19 14:46:09 +00:00
Shuaib Hasan Akib cc1032bd92 docs(docs-infra): removed unused common module (#63915)
PR Close #63915
2025-09-19 14:44:44 +00:00
Matthieu Riegler 5eb9f57ae8 docs: Introduce API category sorting (#63914)
PR Close #63914
2025-09-19 14:44:10 +00:00
Angular Robot 4328ea8cfb build: update cross-repo angular dependencies (#63929)
See associated pull request for more information.

PR Close #63929
2025-09-19 14:40:22 +00:00
Alan Agius 00a1f99e8d test: update integration test dependencies (#63937)
During a previous PR review, it was noted that the `next` tag was causing confusion. This commit updates the dependencies for the integration tests to resolve this ambiguity and ensure clarity going forward.

Additionally, this change uses the `link:` protocol to ensure that `pnpm i` does not fail when lockfiles or dependencies are updated outside of Bazel.

PR Close #63937
2025-09-19 14:38:42 +00:00
Alan Agius 3e571a2faf ci: optimize adev CI workflows (#63941)
This commit introduces several optimizations to the adev CI workflows:

- The adev preview build now uses a more powerful runner and creates a production build.
- Remote execution is disabled for adev builds to improve performance.

Note: Bazel cache is still being used, and the built times are reduces by about 10mins when the cache is missed.

PR Close #63941
2025-09-19 14:38:11 +00:00
Kristiyan Kostadinov 4c091abba6 fix(compiler-cli): capture metadata for undecorated fields (#63904)
Currently if `TestBed.overrideComponent` is used on a class that uses initializer APIs (e.g. `input()`), the initializer metadata will be wiped out, because `overrideComponent` re-compiles the class with the information set by `setClassMetadata`. `setClassMetadata` only captures decorated members at the moment.

These changes introduce some logic to capture the new initializer-based APIs in `setClassMetadata` as well.

Fixes #57944.

PR Close #63904
2025-09-18 21:30:15 +00:00
Kristiyan Kostadinov ef0ff78de2 refactor(compiler): expose member decorator identifiers (#63904)
Adds the member decorators to the map of exposed compiler symbols.

PR Close #63904
2025-09-18 21:30:15 +00:00
Kristiyan Kostadinov ffe94b3a89 refactor(compiler-cli): track member metadata using output AST (#63904)
Reworks the logic that tracks the decorator metadata for members to do so using the output AST, rather than wrapping the TypeScript AST. This makes it easier to programmatically generate new members that weren't part of the TypeScript AST before.

PR Close #63904
2025-09-18 21:30:15 +00:00
aparziale 307e4eafef refactor(migrations): remove common module if there are no references (#63892)
ngclass-to-class migration removes commonModule if there are no references that use it

PR Close #63892
2025-09-18 20:18:43 +00:00
Matthieu Riegler f6548adf8f docs: re-add ai event banner on homepage (#63922)
PR Close #63922
2025-09-18 20:15:31 +00:00
SkyZeroZx e426302cca refactor(core): Remove duplicate code getSelectedTNode (#63897)
clean up duplicate functions

PR Close #63897
2025-09-18 16:04:25 +00:00
Angular Robot 2951e85e99 build: update cross-repo angular dependencies (#63917)
See associated pull request for more information.

PR Close #63917
2025-09-18 16:02:17 +00:00
Kristiyan Kostadinov e1ae765672 docs: add regular expressions to table of supported literals (#63887)
Updates the docs to mention that regular expressions are supported.

PR Close #63887
2025-09-18 15:08:56 +00:00
Kristiyan Kostadinov bb381b707e refactor(compiler): integrate regular expression literals into pipeline (#63887)
Adds support for regular expression literals in the template pipeline and adds some logic to optimize non-global ones.

PR Close #63887
2025-09-18 15:08:56 +00:00
Kristiyan Kostadinov f57b104ccd refactor(compiler-cli): support regular expression literals in AOT compiler (#63887)
Handles regular expression literals across the template type checker and the various translators.

PR Close #63887
2025-09-18 15:08:56 +00:00
Kristiyan Kostadinov 2971a001c6 refactor(compiler): add output AST node for regular expressions (#63887)
Adds the `RegularExpressionLiteral` node to the output AST.

PR Close #63887
2025-09-18 15:08:56 +00:00
Kristiyan Kostadinov 539717f58a feat(core): support regular expressions in templates (#63887)
Updates the template syntax to support inline regular expressions.

PR Close #63887
2025-09-18 15:08:56 +00:00
Kristiyan Kostadinov c1559ece52 refactor(compiler): tokenize regular expression literals (#63887)
Updates the expression lexer to produce tokens for regular expression literals.

PR Close #63887
2025-09-18 15:08:56 +00:00
Damian Sire 2da0fef2a5 docs: apply grammar fixes to ai/overview.md (#63896)
PR Close #63896
2025-09-18 15:08:19 +00:00
Angular Robot 5cb1bbb96e build: update rules_sass digest to 4a54e0e (#63898)
See associated pull request for more information.

PR Close #63898
2025-09-18 14:59:07 +00:00
AleksanderBodurri 4fa3b2673e feat(devtools): display provider count on injector tree nodes (#63632)
Allows the tree visualizer to display a sublabel for each node.

Used by the injector tree to display provider count for each injector.

PR Close #63632
2025-09-18 14:56:47 +00:00
Alan Agius 950ffd001e build: remove yarn from integration tests, switch to pnpm (#63902)
This commit removes Yarn as a package manager for integration tests and migrates to pnpm. This change aims to standardize package management across the project, leveraging pnpm's efficiency and consistent behavior for dependency resolution and installation.

PR Close #63902
2025-09-18 14:39:51 +00:00
Angular Robot 5c74339dfc build: update cross-repo angular dependencies (#63902)
See associated pull request for more information.

Closes #63890 as a pr takeover

PR Close #63902
2025-09-18 14:39:51 +00:00
Andrew Scott 8ad26edb72 refactor(platform-browser): Remove zone provideres from BrowserTestingModule (#63872)
This removes the Zone providers from the `BrowserTestingModule`. These
already exist by default in all other entrypoints to Angular
environments (TestBed compiler, bootstrapModule, and createApplication).

PR Close #63872
2025-09-17 21:17:59 +00:00
Devin Chasanoff 52b614ce55 docs: add web codegen scorer to docs (#63886)
PR Close #63886
2025-09-17 21:15:41 +00:00
Jessica Janiuk b018c9a481 release: cut the v21.0.0-next.4 release 2025-09-17 14:13:22 -07:00
Jessica Janiuk 95207b6b52 docs: release notes for the v20.3.1 release 2025-09-17 13:56:39 -07:00
Andrew Kushnir a53ef1d69a Revert "refactor(compiler): tokenize regular expression literals (#63857)" (#63883)
This reverts commit 8a69c0629b.

PR Close #63883
2025-09-17 19:36:17 +00:00
Andrew Kushnir ae55578b92 Revert "feat(core): support regular expressions in templates (#63857)" (#63883)
This reverts commit 328a2bf719.

PR Close #63883
2025-09-17 19:36:17 +00:00
Andrew Kushnir c7e0c8b06a Revert "refactor(compiler): add output AST node for regular expressions (#63857)" (#63883)
This reverts commit a1288f8d66.

PR Close #63883
2025-09-17 19:36:17 +00:00
Andrew Kushnir f53c6543db Revert "refactor(compiler-cli): support regular expression literals in AOT compiler (#63857)" (#63883)
This reverts commit f2ef838c06.

PR Close #63883
2025-09-17 19:36:17 +00:00
Andrew Kushnir 0a81784de2 Revert "refactor(compiler): integrate regular expression literals into pipeline (#63857)" (#63883)
This reverts commit dd77233cdf.

PR Close #63883
2025-09-17 19:36:17 +00:00
Andrew Kushnir f0883e5eb9 Revert "docs: add regular expressions to table of supported literals (#63857)" (#63883)
This reverts commit 32c98e08a1.

PR Close #63883
2025-09-17 19:36:17 +00:00
Jan Martin 7d3919ed11 release: bump Angular DevTools version to 1.2.1 (#63879)
PR Close #63879
2025-09-17 10:57:05 -07:00
arturovt dee6ef89c7 refactor(core): tree-shake HOST_TAG_NAME in prod (#63861)
Previously, HOST_TAG_NAME had its __NG_ELEMENT_ID__ set at the top level. This
prevented tree-shaking, since the bundler had to keep the assignment as a
potential side effect even when the token was never used.

This change moves the token creation and __NG_ELEMENT_ID__ assignment into a
@__PURE__ IIFE. If HOST_TAG_NAME is not injected anywhere, the IIFE result is
unused and can be dropped entirely by the optimizer. If it is used, the token
still behaves the same at runtime.

PR Close #63861
2025-09-17 17:40:35 +00:00
Jessica Janiuk 36b542d365 Revert "build: update dependency @types/node to v24.5.1 (#63853)" (#63878)
This reverts commit f354f0a3af.

PR Close #63878
2025-09-17 17:36:59 +00:00
Kristiyan Kostadinov 32c98e08a1 docs: add regular expressions to table of supported literals (#63857)
Updates the docs to mention that regular expressions are supported.

PR Close #63857
2025-09-17 16:06:51 +00:00
Kristiyan Kostadinov dd77233cdf refactor(compiler): integrate regular expression literals into pipeline (#63857)
Adds support for regular expression literals in the template pipeline and adds some logic to optimize non-global ones.

PR Close #63857
2025-09-17 16:06:51 +00:00
Kristiyan Kostadinov f2ef838c06 refactor(compiler-cli): support regular expression literals in AOT compiler (#63857)
Handles regular expression literals across the template type checker and the various translators.

PR Close #63857
2025-09-17 16:06:51 +00:00
Kristiyan Kostadinov a1288f8d66 refactor(compiler): add output AST node for regular expressions (#63857)
Adds the `RegularExpressionLiteral` node to the output AST.

PR Close #63857
2025-09-17 16:06:51 +00:00
Kristiyan Kostadinov 328a2bf719 feat(core): support regular expressions in templates (#63857)
Updates the template syntax to support inline regular expressions.

PR Close #63857
2025-09-17 16:06:51 +00:00
Kristiyan Kostadinov 8a69c0629b refactor(compiler): tokenize regular expression literals (#63857)
Updates the expression lexer to produce tokens for regular expression literals.

PR Close #63857
2025-09-17 16:06:50 +00:00
JoostK 89cf62f907 fix(compiler-cli): only bind inputs that are part of microsyntax to a structural directive (#52453)
Prior to this change the template type-check generator would incorrectly apply inputs
and attributes to a structural directive, where only the bindings as present in microsyntax
are actually bound to the directive. This introduced a problem where usages of template
variables could not be resolved, because the template variables are out-of-scope of the
template element itself.

Closes #49931

PR Close #52453
2025-09-17 16:05:04 +00:00
Alan Agius 420af0bcc0 build: update pnpm to v10.17.0 (#63870)
pnpm v10.17.0 adds support for wildcards in 'minimumReleaseAgeExclude'. This simplifies the configuration by allowing the use of '@angular-devkit/*' and '@angular/*' instead of listing each package individually.

PR Close #63870
2025-09-17 16:04:18 +00:00
Matthieu Riegler af33647145 refactor(core): remove usages of Promise.withResolvers (#63856)
Promise.withResolvers is Baseline 2024. Our policy is to support browsers in the scope of Basline widely available.

Fixes #63855

PR Close #63856
2025-09-17 15:21:51 +00:00
Matthieu Riegler e52338466f refactor(common): trim undefined from locale data. (#63520)
This is an optimization to shave of unecessary data.

fixes #42315

PR Close #63520
2025-09-17 14:57:16 +00:00
hawkgs b4960da4f1 docs(docs-infra): store search result fragment in search history (#63866)
Store the search result page fragment/sub-label in the search history and render it in the history items.

PR Close #63866
2025-09-17 14:56:31 +00:00
hawkgs 39cbb97dfc docs(docs-infra): always include fragment in search results (#63866)
Always include page fragment/sub-title in the search dialog results.

PR Close #63866
2025-09-17 14:56:31 +00:00
Walter Breakell 5f41f141ee docs: fix pluralization error in templates guide (#63854)
PR Close #63854
2025-09-17 14:52:32 +00:00
Angular Robot f354f0a3af build: update dependency @types/node to v24.5.1 (#63853)
See associated pull request for more information.

PR Close #63853
2025-09-17 14:51:59 +00:00
Angular Robot 5fa2c05f60 build: update cross-repo angular dependencies (#63864)
See associated pull request for more information.

PR Close #63864
2025-09-17 14:32:27 +00:00
Matthieu Riegler 400536fd12 docs: fix homepage typos (#63868)
fixes #63867

PR Close #63868
2025-09-17 14:31:54 +00:00
Paul Gschwendtner 4b2cc12bc4 ci: remove myself from unavailability (#63863)
Removes myself from unavailability.

PR Close #63863
2025-09-17 14:27:42 +00:00
Alan Agius 944768a601 build: enable minimumReleaseAge to mitigate dependency chain attacks (#63862)
This change configures pnpm's `minimumReleaseAge` setting to 1 day (1440 minutes). This is a security measure to mitigate dependency chain attacks, where malicious actors publish a new version of a dependency with malicious code and then trick users into updating to it before it can be discovered and reported.

By delaying the adoption of new releases, we reduce the window of opportunity for such attacks. The list of excluded packages contains trusted and frequently updated dependencies from the Angular team, which are considered safe to use without this delay.

PR Close #63862
2025-09-17 14:27:10 +00:00
Andrew Scott 0d028e0f77 refactor(platform-browser): Remove zonejs compatibility detector (#63847)
The zoneless scheduler is always enabled, so if hydration works with zoneless, it works
for all Angular apps. There is no need for detection of custom zone implementations

PR Close #63847
2025-09-16 22:16:49 +00:00
Joey Perrott 1fec2a2cb0 build: remove bazel flag usage for adev (#63845)
Previously we used a configuration flag for adev, instead we now separate into two different targets since our flag didn't
need to cause a full reanalysis to run since everything before the final target should be a cache hit.

PR Close #63845
2025-09-16 20:49:04 +00:00
Matthieu Riegler 809a4ed8c1 feat(core): Add migration for zoneless by default. (#63042)
This commit adds a migration that updates applications enable Zone change detection when Angular is zoneless by default.

PR Close #63042
2025-09-16 20:48:29 +00:00
Andrew Scott 1352fbdbf2 fix(core): Drop special-case disables automatic change detection scheduling (#63846)
This commit drops special-case handling for old-style "zoneless" that
would disable the internal scheduler when zoneless was not explicitly
enabled but Zone was not defined. This scheduler is now enabled in _all_
applications, providing consistent expectations for developers.

BREAKING CHANGE: Using a combination of `provideZoneChangeDetection`
while also removing ZoneJS polyfills will no longer result in the
internal scheduler being disabled. All Angular applications now
consistenly use the same scheduler, and those with the Zone change detection
provider include additional automatic scheduling behaviors based on
NgZone stabilization.

PR Close #63846
2025-09-16 20:43:17 +00:00
Andrew Scott d5e00f9591 refactor(core): Make the zoneless-by-default change a flag flip (#63382)
This makes the zoneless-by-default change a flag flip that can be
individually enabled in tests, createApplication, and bootstrapModule
for gradual rollout. In addition, the "require on CD provider" check is
also made individually flippable for gradual rollout.

PR Close #63382
2025-09-16 18:56:54 +00:00
Andrew Scott 45fed3d201 fix(core): Remove Zone-based change provider from internals by default (#63382)
This change removes the internally provided `ZoneJS`-based change
detection scheduler. This makes Angular Zoneless by default and allows
tree-shaking of the Zone change detection providers.

BREAKING CHANGE: Angular no longer provides a change detection scheduler
for ZoneJS-based change detection by default. Add
`provideZoneChangeDetection` to the providers of your
`bootstrapApplication` function or your `AppModule` (if using
`bootstrapModule`). This provider addition will be covered by an
automated migration.

PR Close #63382
2025-09-16 18:56:53 +00:00
Matthieu Riegler 07b4c12984 refactor(core): prevent input migration from introducing a breaking change (#63547)
Non-typed `transform` functions were stripped by the migration prior to this commit (while still logging an error).
This behavior will now only happen with `--best-effort`.

#63541

PR Close #63547
2025-09-16 18:53:50 +00:00
Matthieu Riegler d9369d199f docs(docs-infra): Show package name for API references (#63831)
PR Close #63831
2025-09-16 17:36:50 +00:00
Matthieu Riegler 331e35c283 docs(docs-infra): fix colors (#63842)
fixes #63841

PR Close #63842
2025-09-16 17:36:18 +00:00
Andrew Scott 6d5c45d13d refactor(core): Remove unused token (#63819)
this removes an unused token from the core package

PR Close #63819
2025-09-16 16:52:53 +00:00
Kristiyan Kostadinov 8f59295019 refactor(core): remove unnecessary deps arrays (#63823)
We don't need to use the `deps` array syntax anymore since we have the `inject` function. These changes clean up the relevant usages.

PR Close #63823
2025-09-16 16:51:52 +00:00
Kristiyan Kostadinov 7fd3db0423 fix(compiler-cli): remove internal syntax-related flags (#63787)
Removes the `_enableBlockSyntax` and `_enableLetSyntax` flags in favor of detecting them based on the Angular version.

PR Close #63787
2025-09-16 16:51:17 +00:00
Angular Robot 7fcae0a914 build: update cross-repo angular dependencies (#63839)
See associated pull request for more information.

PR Close #63839
2025-09-16 16:49:21 +00:00
Matthieu Riegler d53ac26d4e docs(docs-infra): new home page (#63662)
ADEV is getting a new home page!
This is a first iteration.

PR Close #63662
2025-09-16 16:21:32 +00:00
aparziale 4133b08d93 fix(migrations): fix route-lazy-loading migration (#63818)
route-lazy-loading migration now supports routes when exported by default

PR Close #63818
2025-09-16 15:53:47 +00:00
arturovt b4acc79af6 refactor(core): swap dev/prod error handling order in injector for tree-shaking (#63354)
In production builds, `ngDevMode` is replaced with `false`, so the guard compiles to `return;`. However, bundlers like ESBuild still keep the remaining statements after the return as unreachable code instead of removing them. This leaves behind unnecessary dead code in the output.

Technically, the body is unreachable. But to prove that, the bundler must be 100% certain that:

- `return` cannot be removed by some transform
- there's no later transformation that changes control flow

As thus, it's always conservative.

This also allows dropping `assertDefined`, which was previously
referenced only inside `prependTokenToDependencyPath`. With the
function now fully inlined and dev-only, `assertDefined` is also
eliminated from production builds, further reducing bundle size.

PR Close #63354
2025-09-16 15:53:11 +00:00
Matthieu Riegler e43d9b95c1 docs(docs-infra): Use port 4201 for adev (#63834)
Having a changing port might be annoying. The best compromise is probably to use a less common port than the default used by the CLI.

PR Close #63834
2025-09-16 15:18:11 +00:00
Matthieu Riegler 5612ad5b45 docs: add alert about routelinkactive being a content query (#63829)
This commit also fixes an issue with alert that we're parse correctly if they were at the end of the markdown string

fixes #52877

PR Close #63829
2025-09-16 15:15:24 +00:00
Rahul Kamat a943e7cb05 refactor(core): Update async-test.ts to use globalThis polyfill (#57505)
This updates async-test to use globalThis instead of what it was using.

PR Close #57505
2025-09-16 15:10:04 +00:00
Matthieu Riegler 5ce4d9522d docs: update doc to clear up difference between toObservable/ outputToObservable (#63836)
TLDR: only `toObservable` emits synchronously on subscription.

fixes #57224

PR Close #63836
2025-09-16 15:00:54 +00:00
Matthieu Riegler 73bf0c6094 docs: high level architecture mention in readme (#63828)
fixes #59293

PR Close #63828
2025-09-16 15:00:16 +00:00
Shuaib Hasan Akib 1004418040 docs: remove leading $ from script examples (#63795)
Copy-pasting commands like `$ pnpm lint` caused errors in shells (e.g. zsh). Updated docs to use `pnpm lint` directly so they run without modification.

PR Close #63795
2025-09-16 14:54:03 +00:00
Angular Robot 1c7b9d8b93 build: update dependency @types/node to v24.5.0 (#63820)
See associated pull request for more information.

PR Close #63820
2025-09-16 14:52:04 +00:00
Angular Robot 9707ac1e0b build: update dependency aspect_rules_js to v2.6.0 (#63821)
See associated pull request for more information.

PR Close #63821
2025-09-16 14:45:58 +00:00
Andrew Scott d9e597f341 refactor(upgrade): use zone-based change detection by default (#63814)
To avoid the need for specifying `provideZoneChangeDetection` in any/all
modules used with `downgradedModule`, this change adds the zone-based change detection
providers by default. This also adds the zone providers to
`UpgradeModule` by default as well.

PR Close #63814
2025-09-16 14:45:28 +00:00
Andrew Scott 0bb68a8187 refactor(upgrade): downgradeModule uses zone-based change detection by default (#63814)
To avoid the need for specifying `provideZoneChangeDetection` in any/all
modules used with `downgradedModule`, this change adds the zone-based change detection
providers by default.

PR Close #63814
2025-09-16 14:45:28 +00:00
Andrew Scott 412d5af92c refactor(upgrade): downgradeModule uses zone-based change detection by default (#63814)
To avoid the need for specifying `provideZoneChangeDetection` in any/all
modules used with `downgradedModule`, this change adds the zone-based change detection
providers by default.

PR Close #63814
2025-09-16 14:45:28 +00:00
arturovt 7e0cf41563 refactor(core): wrap checkNoChanges body in if (ngDevMode) for better tree-shaking (#63387)
The `checkNoChanges` method previously used an early-return guard:

  if (!ngDevMode) return;
  // dev-only code ...

In production builds, `ngDevMode` is replaced with `false`, so the
guard compiles to `return;`. However, bundlers like ESBuild
still keep the remaining statements after the return as unreachable
code instead of removing them. This leaves behind unnecessary dead
code in the output.

This commit updates the method to instead wrap the full body:

  if (ngDevMode) {
    // dev-only code ...
  }

With this change, the method collapses to an empty function in
production builds:

  checkNoChanges() {}

This ensures that the dev-only logic and its dependencies
(e.g. `checkNoChangesInternal`, `UseExhaustiveCheckNoChanges`) can be
fully tree-shaken, reducing bundle size.

PR Close #63387
2025-09-15 21:11:39 +00:00
SkyZeroZx 321eecce3d docs(benchpress): Remove TODOs in Statistic (#63534)
Remove TODOs in Statistic

PR Close #63534
2025-09-15 20:36:17 +00:00
aparziale 8dc8914c8a feat(migrations): add migration to convert ngStyle to use style (#63517)
Add migration to convert ngStyle to use style

PR Close #63517
2025-09-15 20:16:16 +00:00
hawkgs 8b43fcec1a fix(devtools): router tree legend overflow (#63813)
Set `overflow` to `hidden` so the router tree legend doesn't overflow its parent container.

PR Close #63813
2025-09-15 19:37:19 +00:00
Matthieu Riegler 9a16718b13 refactor(core): remove deprecated interpolation option on Components. (#63474)
This option was deprecated by #55778.

BREAKING CHANGE: The `interpolation` option on Components has been removed. Only the default `{{ ... }}` is now supported.

PR Close #63474
2025-09-15 19:35:03 +00:00
Matthieu Riegler 6dff287bb8 refactor(compiler-cli): Add a diagnostic to detect forbiden invocations of required initializers (#63614)
The diagnostic will raise an error when required initializers (input, model, queries) are invoked the context of property initializers and contructors.

Docs will be provided in a follow-up

fixes #63602

PR Close #63614
2025-09-15 19:34:32 +00:00
Matthieu Riegler 803dc8e44c fix(compiler): Add support for aria-invalid (#63748)
The `aria-invalid` attribute was supported but the `ariaInvalid` property was unknown by the schema.

fixes #63744

PR Close #63748
2025-09-15 18:41:16 +00:00
Matthieu Riegler a5e5dbbc16 refactor(core): remove moduleId from Component metadata (#63482)
It was deprecated by #49496 as it had no effect.

BREAKING CHANGE: `moduleId` was removed from `Component` metadata.

PR Close #63482
2025-09-15 18:23:46 +00:00
Uaena_Alex_John 247393131e docs: Update outputs.md to demonstrate how to use event data (#63732)
PR Close #63732
2025-09-15 17:09:18 +00:00
Jessica Janiuk de8be9784d ci: update pullapprove public-api rules (#63737)
This reduces the required reviews to 1 and requested reviewers to 2 to reduce friction.

PR Close #63737
2025-09-15 17:03:42 +00:00
SkyZeroZx d201cd2c2b feat(forms): Prevents marking fields as touched/dirty when state is hidden/readonly/disabled (#63633)
Ensures fields that are hidden, disabled, or readonly cannot be marked as touched or dirty, improving form state integrity

PR Close #63633
2025-09-15 16:52:15 +00:00
Kristiyan Kostadinov 0a60e355e1 fix(compiler-cli): signal not invoked diagnostic not raised when input has same name in template (#63754)
The diagnostic that flags signals which haven't been invoked has some logic to skip over inputs, however it was looking at the used directives across the entire template, not the ones on the specific node.

Fixes #63739.

PR Close #63754
2025-09-15 15:50:45 +00:00
Walter Breakell d6e3a6945b docs: correct grammar in next steps intro paragraph (#63803)
PR Close #63803
2025-09-15 15:50:10 +00:00
hawkgs d476f881af fix(devtools): minor UI issues in transfer state tab (#63810)
Fix some Material-related table regressions and change some font sizes.

PR Close #63810
2025-09-15 15:48:26 +00:00
Matthieu Riegler 7209424995 docs: fix detail about linkedSignal's previous value. (#63811)
fixes #63655

PR Close #63811
2025-09-15 15:46:23 +00:00
Damian Sire cf45e6191f docs: update Gemini model version in AI overview (#63800)
This change updates the Gemini model version from 2.0 Flash to 2.5 Flash on the AI overview page to align with the official Genkit documentation.

The source documentation at https://genkit.dev/docs/frameworks/angular/ has been updated, and this commit ensures our documentation reflects that change accurately.

PR Close #63800
2025-09-15 15:45:49 +00:00
hawkgs cfe0f03544 refactor(devtools): add a close button to the injector-provides pane (#63808)
Add a close button to the Injector Providers pane in the Injector Tree.

PR Close #63808
2025-09-15 15:40:00 +00:00
SkyZeroZx 3327de1b88 docs: add documentation for NG02802 warning about HttpTransferCache headers (#63802)
add documentation for NG02802 warning about HttpTransferCache headers

PR Close #63802
2025-09-15 15:38:24 +00:00
SkyZeroZx d2163f3701 test(platform-server): add test for transfer state data in nested defer blocks (#63801)
Add test for transfer state data in nested defer blocks

PR Close #63801
2025-09-15 15:34:59 +00:00
Damian Sire 002699bcef docs: clarify usage of docs-infra scope in commit messages (#63799)
The contribution guide is updated to provide clearer instructions on when to use the `docs-infra` scope versus the `docs` type.

This change helps contributors understand that `docs-infra` should only be used for infrastructure-related changes (application code, tooling, configuration) within the `/adev` directory. For simple content modifications, such as editing a `.md` file, `docs` without a scope is the correct choice.

PR Close #63799
2025-09-15 15:33:15 +00:00
Angular Robot fa69d33ba2 build: lock file maintenance (#63806)
See associated pull request for more information.

PR Close #63806
2025-09-15 15:29:52 +00:00
Angular Robot 8952674621 build: update dependency jsdom to v27 (#63780)
See associated pull request for more information.

PR Close #63780
2025-09-15 15:28:37 +00:00
Oleg Ivanitski 420703f8fb fix(docs-infra): fix guide content width (#63798)
This commit fixes the width of the content section, specifically the
reactive forms and template-driven forms section

Closes #63798

PR Close #63798
2025-09-15 15:25:40 +00:00
Shuaib Hasan Akib 53ef785067 docs(docs-infra): add missing type="button" for accessibility and to remove dev tools warning (#63784)
PR Close #63784
2025-09-15 15:25:08 +00:00
Angular Robot 71b3591e31 build: update cross-repo angular dependencies (#63785)
See associated pull request for more information.

PR Close #63785
2025-09-15 15:23:02 +00:00
Damian Sire 2b440f41fd docs: correct typos in AI design patterns guide (#63788)
PR Close #63788
2025-09-15 15:02:59 +00:00
Shuaib Hasan Akib 7e828e3d39 docs(docs-infra): code style improvement and component update (#63557)
- Improved code style consistency in docs-infra
- Updated app.component.ts for enhancements

Co-authored-by: Matthieu Riegler <kyro38@gmail.com>

PR Close #63557
2025-09-15 15:02:24 +00:00
Angular Robot 2327c3b31c build: update pnpm to v10.16.1 (#63793)
See associated pull request for more information.

PR Close #63793
2025-09-15 14:43:04 +00:00
Angular Robot f2bc4b5955 build: update all non-major dependencies (#63779)
See associated pull request for more information.

PR Close #63779
2025-09-15 14:39:22 +00:00
Joey Perrott 85994fb1fd build: update branches and versioning information (#63772)
Update the branches and versioning guide to include information about the `target: feature` and `target: automation` labels.

PR Close #63772
2025-09-12 21:45:49 +00:00
Jessica Janiuk 62ad4db465 refactor(core): Reorganize and cleanup animations code (#63775)
This is a pure re-organization of the animations code. No functionality changes, but it should be easier to navigate now. Utility classes have been moved to a `utils.ts` file. The related functions in the instructions have been grouped closer together.

PR Close #63775
2025-09-12 21:41:51 +00:00
Angular Robot bd2a84b885 build: update pnpm to v10.16.0 (#63769)
See associated pull request for more information.

PR Close #63769
2025-09-12 17:44:46 +00:00
Angular Robot 284fc7d753 build: update cross-repo angular dependencies (#63767)
See associated pull request for more information.

PR Close #63767
2025-09-12 17:21:24 +00:00
hawkgs f8cea65c88 refactor(devtools): property-tab folder structure (#63759)
Re-organize components and use separate BUILD files.

PR Close #63759
2025-09-12 16:49:25 +00:00
martincampagnoli 4c1da71d84 docs: update signal-queries.md (#63726)
PR Close #63726
2025-09-12 16:48:53 +00:00
Angular Robot 09730ba09f build: update cross-repo angular dependencies (#63764)
See associated pull request for more information.

PR Close #63764
2025-09-12 16:46:50 +00:00
Alan Agius 73bed56a9c ci: add automation label to update cdk apis and cli help workflow (#63753)
Adds the 'target: automation' label to the 'update-cdk-apis' and 'update-cli-help' jobs in the 'update-cdk-apis-and-cli-help.yml' workflow. This will help to better track and manage automation tasks.

PR Close #63753
2025-09-12 16:45:23 +00:00
Alan Agius 39edc9387f ci: use static target: automation label in renovate config (#63752)
The logic to update the renovate config during the release to switch the target labels from target: rc to target: patch has been removed. Instead, a static target: automation label is added to the default renovate preset.

PR Close #63752
2025-09-12 16:44:50 +00:00
Matthieu Riegler 5fd6022f7c docs(docs-infra): move the navigation related files (#63729)
* separate directory
* dedicated file for redirections

PR Close #63729
2025-09-12 16:05:03 +00:00
Shuaib Hasan Akib 26b55c18fd docs: update Creating service with CLI (#63714)
Update adev/src/content/guide/di/creating-injectable-service.md

Co-authored-by: Matthieu Riegler <kyro38@gmail.com>

PR Close #63714
2025-09-12 15:51:18 +00:00
Jessica Janiuk a4001c440f fix(core): Prevent leave animations on a move operation (#63745)
When a user has `animate.leave` on a list of items in a `@for`, but are only showing a subset using a computed, removing the second to last item results in a move operation on the last item. There's no native atomic move API in the browser. So this results in the element being detached and attached at its new index. The detaching of the node resulted in leave animations firing.
This fix addresses this by adding a flag in the `LView[ANIMATIONS]` `AnimationLViewData` interface to allow for skipping animations. During list reconciliation, we set this flag so that the animations are skipped over. The flag is flipped back after the move operation is complete.

There is one complication that results from this. The index adjustment of elements in the list happens synchronously while the leave animation is asynchronous. This results in the leaving item getting shifted to the end of the list. This is not ideal but likely can be addressed in a future refactor.

fixes: #63544

PR Close #63745
2025-09-12 15:21:24 +00:00
hawkgs 464bff95ef refactor(devtools): intergrate the TreeVisualizer into the TreeVisualizerHost component (#63530)
Use the `TreeVisualizer` internally in the host component instead of managing these separately in their client components.

PR Close #63530
2025-09-12 15:08:36 +00:00
Angular Robot 32751cce7d build: update cross-repo angular dependencies (#63750)
See associated pull request for more information.

PR Close #63750
2025-09-12 15:07:04 +00:00
Shuaib Hasan Akib f41313c3b5 docs(docs-infra): replace deprecated big tag (#63738)
Update adev/src/content/introduction/what-is-angular.md

Co-authored-by: Joey Perrott <josephperrott@gmail.com>

PR Close #63738
2025-09-12 15:04:57 +00:00
Jens Kuehlers a7b0620410 docs: fix links and remove second banner (#63755)
PR Close #63755
2025-09-12 09:51:16 +02:00
Ben Hong ff6f1527db docs: add di synonym (#63743)
PR Close #63743
2025-09-11 21:51:09 +00:00
Angular Robot 334f489775 build: update cross-repo angular dependencies to v21.0.0-next.3 (#63742)
See associated pull request for more information.

PR Close #63742
2025-09-11 21:18:30 +00:00
Joey Perrott 2d06f4ae83 build: automatically select a random available port when running adev locally (#63740)
Previously we relied on the default port of 4200, but if it was already in use then we would run into issues where the cli provided a prompt which we were unable to respond to. Instead we now request port 0 which will automatically find an available port.

PR Close #63740
2025-09-11 21:17:59 +00:00
SkyZeroZx cbcfe949aa docs: Adds guide for extending Angular service worker (#63629)
Documents how to create custom service worker scripts to handle push notifications, background sync, and other events by importing and extending Angular's default behavior

PR Close #63629
2025-09-11 17:40:47 +00:00
Andrew Scott bd54106708 refactor(router): update error checks extending error (#63487)
I forgot about the "setPrototypeOf" fix and had a recency bias for the
NotFoundError in the signal primitives.

PR Close #63487
2025-09-11 16:55:58 +00:00
hawkgs 4a16245af0 refactor(devtools): double the Angular app detection attempts (#63271)
Increases the total attempt time from 5s to 10s.

PR Close #63271
2025-09-11 16:55:28 +00:00
Jens Kuehlers a53a15c518 docs: add banner for Angular AI developer event (#63734)
PR Close #63734
2025-09-11 16:50:31 +00:00
Angular Robot 19c2f9c49b build: update cross-repo angular dependencies (#63721)
See associated pull request for more information.

PR Close #63721
2025-09-11 16:37:46 +00:00
Alan Agius 5a1c7ee7ea ci: fallback to last known branch when branch does not exist downstream (#63733)
When a new branch is created for a feature, it may not exist in the downstream repo. For example, during an exceptional minor release. In such scenarios, we fallback to the last known branch. This was previously handled in a catch block, but this change makes the fallback more explicit.

PR Close #63733
2025-09-11 16:31:57 +00:00
Rocky Meza 663f48cfc1 refactor(core): Split consumerBefore/AfterComputation (#62549)
This makes it possible to batch effects, where we can "reopen" consumers
during initial render and then finalize them after we are finally done
adding all the effects to a batch:

```
function createBatch() {
  const effect = // ... create effect node
  resetConsumerBeforeComputation(effect);
  return effect;
}

// pseudo-code
function appendEffect(effectBatch, updater) {
  if (value is a signal) {
    const prevConsumer = setActiveConsumer(effectBatch.node);
    const output = value();
    setActiveConsumer(prevConsumer);
    effectBatch.push({ signal, updater });
    return output;
  }
}

function finalizeBatch(effectBatch) {
  if (effectBatch.length > 0) {
    finalizeConsumerAfterComputation(effectBatch.node);
  }
}

const effectBatch = createBatchEffectNode();
appendEffect(signal1, (newValue) => /* something */);
appendEffect(signal2, (newValue) => /* something different */);
finalizeBatch(effectBatch);
```

PR Close #62549
2025-09-11 15:47:33 +00:00
Angular Robot a8fae2aae0 build: update all non-major dependencies (#63715)
See associated pull request for more information.

PR Close #63715
2025-09-11 15:41:55 +00:00
Angular Robot 902d352fca build: update github/codeql-action action to v3.30.3 (#63716)
See associated pull request for more information.

PR Close #63716
2025-09-11 15:41:24 +00:00
Matthieu Riegler 34ad7f7f5a ci: keep tailwind at v3 (#63720)
We'd like to keep tailwind at v3 for now

PR Close #63720
2025-09-11 15:39:58 +00:00
Alan Agius 37e1edaf7f build: mark pnpapi as external for esbuild (#63723)
In the `deploy-docs-site` GitHub action, esbuild fails to resolve `pnpapi` during the bundling process. This is because `pnpapi` is a dependency that is available in the Node.js environment at runtime and should not be bundled.

This commit marks `pnpapi` as an external dependency for esbuild to prevent it from being bundled and resolve the build failure.

```
✘ [ERROR] Could not resolve "pnpapi" [plugin bazel-sandbox]
```

See: https://github.com/angular/angular/pull/63722#issuecomment-3278922553

PR Close #63723
2025-09-11 15:36:34 +00:00
Alan Agius aa1bf88181 build: remove manual release note for Firefox addon (#63731)
The reviewer note for Firefox addons included a message that was intended for manual releases. This is no longer necessary with the automated release process.

PR Close #63731
2025-09-11 15:36:03 +00:00
Alan Agius eec0bdcbb6 build: create release branch from FETCH_HEAD (#63731)
When creating the release branch, it should be based on the latest upstream changes to avoid building a release on a stale commit.

PR Close #63731
2025-09-11 15:36:03 +00:00
Alan Agius cdf5d6763f release: bump Angular DevTools version to 1.2.0 (#63730)
PR Close #63730
2025-09-11 07:13:52 -07:00
Devin Chasanoff 97b0796229 docs: update mcp guide (#63664)
PR Close #63664
2025-09-10 23:07:50 +00:00
Cheng-Hsuan Tsai d9483fab50 docs(docs-infra): enable using Tailwind CSS in code examples (#63583)
PR Close #63583
2025-09-10 23:01:36 +00:00
Matthieu Riegler 7a4b225c57 refactor(common): improve typing of ngComponentOutletContent (#63674)
Dropping `any` in favor of `Node` for better type safety and clarity.

BREAKING CHANGE: `ngComponentOutletContent` is now of type `Node[][] | undefined` instead of `any[][] | undefined`.

fixes #63538

PR Close #63674
2025-09-10 22:26:27 +00:00
Jessica Janiuk 4924108630 refactor(core): dispatch enter and leave animations at the right times (#63450)
This updates the enter and leave logic to use the stored LView data to dispatch the enter and leave animations at the right points in the lifecycle. This should fix issues with signals not being available yet, parallel animations, and also eliminate the need for the element registry.

fixes: #63391
fixes: #63388
fixes: #63369

PR Close #63450
2025-09-10 22:24:00 +00:00
Jessica Janiuk bf499f2fca refactor(core): track enter and leave animations in LView (#63450)
This tracks the enter and leave functions in the LView to be executed at a safe time for change detection.

PR Close #63450
2025-09-10 22:24:00 +00:00
Matthieu Riegler 4d535cfaa4 refactor(core): Error logs links point to the archived version of the docs (#63512)
In order to point the right context, links in error messages will target the archived version of the online doc site (v*.angular.io).

See #44650

PR Close #63512
2025-09-10 22:21:10 +00:00
Alan Agius 64a7bdce73 ci: add fallback logic for downstream branch resolution in the CLI and CDK update action (#63678)
In some cases, such as when a new exceptional minor branch is created. The branch may not exist in the downstream repo. For example, during an exceptional minor release (e.g. FW 20.3.x and Components: 20.2.x).

This commit introduces a fallback mechanism to handle such scenarios. If the current branch is not found in the downstream repository, the script will now fall back to the last known branch from the build information. This ensures that the files can be updated properly.

PR Close #63678
2025-09-10 22:19:30 +00:00
Angular Robot 6e773374fb build: update cross-repo angular dependencies (#63708)
See associated pull request for more information.

PR Close #63708
2025-09-10 22:17:45 +00:00
Matthieu Riegler 5220cea223 build: add a noDuplicateEnumValue rule (#63483)
It caught several legitimate issues.
In the cases I wasn't sure, I just disabled the rule.

fixes #45843

PR Close #63483
2025-09-10 22:16:10 +00:00
Shuaib Hasan Akib ec141a322b docs(docs-infra): remove deprecated module and add test cases (#63497)
PR Close #63497
2025-09-10 22:15:38 +00:00
Matthieu Riegler d55abc222b docs: fix hostbinding. (#63509)
HostBindings only work on properties and getters. Not methods.

fixes #57909

PR Close #63509
2025-09-10 22:13:45 +00:00
Matthieu Riegler f2d136f86c docs(docs-infra): cleanup tsconfig (#63641)
PR Close #63641
2025-09-10 22:13:15 +00:00
Alan Agius 1590663e7d build: introduce and document pnpm run devtools:release command (#63599)
This commit introduces a new `pnpm run devtools:release` command to streamline the Angular DevTools release process.

The command automates the entire release workflow, including checking for new commits, updating version numbers, creating a release commit, and guiding the user through the publishing steps for both Chrome and Firefox extensions.

The `devtools/docs/release.md` documentation has been updated to reflect the use of this new command, providing a single entry point for the release process.

A new script `devtools/tools/release.mts` has been added to implement the release logic, and `package.json` has been updated to include the new script.

PR Close #63599
2025-09-10 22:11:44 +00:00
hawkgs ce4ab17858 fix(devtools): property-tab-header layout for elements (#63682)
Fix SCSS scoping issue that breaks the `property-tab-header` layout for elements.

PR Close #63682
2025-09-10 22:11:13 +00:00
hawkgs 94a0880128 fix(devtools): keep the selected node visible when the directive tree resizes (#63681)
Keep the selected node (component/element) visible when the directive tree component resizes (e.g. signal graph pane becomes visible).

Closes #63670

PR Close #63681
2025-09-10 22:07:07 +00:00
hawkgs d05680a260 feat(devtools): add a close button to the signal details panel (#63680)
Add a close button to the signal graph details panel.

Closes #63671

PR Close #63680
2025-09-10 22:06:36 +00:00
Alan Agius 39337cfe55 docs: update supported Angular versions to include 20.3.x (#63679)
The versions now include the exceptional minor release.

PR Close #63679
2025-09-10 21:59:52 +00:00
Ashna Wiar 1c35e71414 docs: typo in signals-interop (#63683)
- typo in reference to @angular/core/rxjs-interop
PR Close #63683
2025-09-10 21:59:21 +00:00
Andrew Scott fb3082fa06 build: fix symbol tests (#63709)
update golden files after cross repo dep updates

PR Close #63709
2025-09-10 13:30:00 -07:00
Alan Agius f642fcf145 build: update cross-repo angular dependencies (#63706)
See associated pull request for more information.

Closes #63685 as a pr takeover

PR Close #63706
2025-09-10 12:10:15 -07:00
Andrew Scott 17395e45f7 docs: release notes for the v18.2.14 release 2025-09-10 11:50:19 -07:00
Alan Agius fde699bbf4 docs: release notes for the v19.2.15 release (#63699)
PR Close #63699
2025-09-10 11:15:07 -07:00
Alan Agius 4c3cc02bad build: update @angular/ng-dev to latest SHA (#63700)
Attempt to fix LTS release.

PR Close #63700
2025-09-10 11:14:23 -07:00
Alan Agius 9487dc650c build: update @angular/ng-dev to latest SHA (#63696)
Attempt to fix LTS release.

PR Close #63696
2025-09-10 10:30:34 -07:00
Joey Perrott 48fee39af7 build: update @angular/ng-dev to latest SHA (#63695)
Attempt to fix LTS release.

PR Close #63695
2025-09-10 10:09:55 -07:00
Jessica Janiuk 3d6eeab2e0 fix(core): prevent animation events from being cleaned up on destroy (#63414)
This will allow manually subscribed animation events to still fire when using `animate.leave`. Otherwise they were being cleaned up before the animations happened.

fixes: #63391

PR Close #63414
2025-09-10 10:07:19 -07:00
Alan Agius 4f69e035b0 build: update @angular/ng-dev to latest SHA (#63693)
Attempt to fix LTS release.

PR Close #63693
2025-09-10 09:04:51 -07:00
Andrew Scott 687b30121f release: cut the v21.0.0-next.3 release 2025-09-10 08:12:26 -07:00
Andrew Scott 9586d480ea docs: release notes for the v20.3.0 release 2025-09-10 08:07:11 -07:00
Andrew Scott 01025752f6 docs: release notes for the v20.3.0-rc.0 release 2025-09-10 07:58:40 -07:00
Angular Robot 7569da13b7 build: update all non-major dependencies (#63661)
See associated pull request for more information.

Closes #63504 as a pr takeover

PR Close #63661
2025-09-10 07:11:54 -07:00
Angular Robot 0c64a06ea2 build: update cross-repo angular dependencies (#63570)
See associated pull request for more information.

PR Close #63570
2025-09-09 16:37:28 -07:00
Joey Perrott 97d3615b5e build: create a script and ci setup for managing and uploading known synonyms for algolia (#63663)
Create a system to allow for managing synonyms in algolia to allow for central management of them.

PR Close #63663
2025-09-09 15:45:47 -07:00
Andrew Scott c3576506b3 refactor(core): Update tests for zoneless by default (#63668)
This updates tests and examples only to prepare for zoneless by default.

These changes were identified and made as part of #63382. Anything that
failed gets `provideZoneChangeDetection` unless the fixes were easily
and quickly determined.

It also adds the zoneless provider to the `initTestEnvironment` calls
for tests in this repo to prevent regressions before #63382 is merged.

PR Close #63668
2025-09-09 14:41:56 -07:00
Kristiyan Kostadinov 0571b335b9 feat(compiler-cli): enable type checking of host bindings by default (#63654)
Type checking of host bindings was added in v20. We're now confident enough in it to enable it by default.

BREAKING CHANGE:
* Previously hidden type issues in host bindings may show up in your builds. Either resolve the type issues or set `"typeCheckHostBindings": false` in the `angularCompilerOptions` section of your tsconfig.

PR Close #63654
2025-09-09 14:34:29 -07:00
Miles Malerba 1e614ec68c docs: add missing component harness docs (#63620)
Add some documentation that's mentioned in the material.angular.dev version of the component hanress docs, but was missing from the adev version.

PR Close #63620
2025-09-09 14:29:27 -07:00
Ben Hong 9ffc83e163 docs: add signals tutorial (#62750)
PR Close #62750
2025-09-09 12:57:14 -07:00
Ben Hong 86a4e2a082 docs: add dedicated signals tutorial (#62750)
PR Close #62750
2025-09-09 12:57:14 -07:00
Christian Sarnataro c18c0ee317 docs: fixed typo in output page (#63646)
Change `initiaize` to `initialize`

PR Close #63646
2025-09-09 12:56:00 -07:00
Angular Robot 6d12f10a3f build: update github/codeql-action action to v3.30.2 (#63621)
See associated pull request for more information.

PR Close #63621
2025-09-09 12:44:01 -07:00
Alan Agius 63fd98db8d ci: update runs-on to ubuntu-latest (#63656)
This commit updates the `runs-on` configuration in the CI workflows
(`ci.yml`, `manual.yml`, `pr.yml`) from specific `ubuntu-latest-Xcore`
labels to the more general `ubuntu-latest`. This change reduces
resource consumption. This change should not be needed for RBE and remote cache.

PR Close #63656
2025-09-09 12:34:21 -07:00
Alan Agius bf0f257c58 ci: update renovate base branch to 20.3.x (#63666)
Updates the Renovate bot configuration to include the 20.3.x branch in `baseBranchPatterns`.

PR Close #63666
2025-09-09 12:13:24 -07:00
Miles Malerba dce31fbe8b docs: add missing drag & drop docs (#63619)
Add some documentation that's mentioned in the material.angular.dev
version of the drag & drop docs, but was missing from the adev version.

PR Close #63619
2025-09-09 12:09:52 -07:00
Alan Agius 28926ba92c feat(core): introduce BootstrapContext for improved server bootstrapping (#63562)
This commit introduces a number of changes to the server bootstrapping process to make it more robust and less error-prone, especially for concurrent requests.

Previously, the server rendering process relied on a module-level global platform injector. This could lead to issues in server-side rendering environments where multiple requests are processed concurrently, as they could inadvertently share or overwrite the global injector state.

The new approach introduces a `BootstrapContext` that is passed to the `bootstrapApplication` function. This context provides a platform reference that is scoped to the individual request, ensuring that each server-side render has an isolated platform injector. This prevents state leakage between concurrent requests and makes the overall process more reliable.

BREAKING CHANGE:
The server-side bootstrapping process has been changed to eliminate the reliance on a global platform injector.

Before:
```ts
const bootstrap = () => bootstrapApplication(AppComponent, config);
```

After:
```ts
const bootstrap = (context: BootstrapContext) =>
  bootstrapApplication(AppComponent, config, context);
```

A schematic is provided to automatically update `main.server.ts` files to pass the `BootstrapContext` to the `bootstrapApplication` call.

In addition, `getPlatform()` and `destroyPlatform()` will now return `null` and be a no-op respectively when running in a server environment.

PR Close #63562
2025-09-09 10:57:09 -07:00
Matthieu Riegler 3dc5056242 Revert "test(devtools): create e2e test cases for injector tree feature (#62844)" (#63653)
This reverts commit 785af438bc.

PR Close #63653
2025-09-09 08:38:58 +02:00
Shuaib Hasan Akib 17d54792b9 docs: Update Language Service IDE list (#63647)
PR Close #63647
2025-09-08 16:31:22 -07:00
Angular Robot 2fd0b57e7d build: lock file maintenance (#63634)
See associated pull request for more information.

PR Close #63634
2025-09-08 15:16:44 -07:00
Shuaib Hasan Akib efb94743af docs: should not conditionally include <ng-content> in IMPORTANT block (#63580)
PR Close #63580
2025-09-08 14:53:11 -07:00
Shuaib Hasan Akib be790e5f5c docs(docs-infra): prevent empty h3 tags when title is empty (#63573)
Conditionally render h3 element only when title attribute has content

PR Close #63573
2025-09-08 14:50:47 -07:00
Matthieu Riegler c8c4399791 docs: remove installation (#63508)
We don't have that section in other parts of the docs, package name is already mentionned.

fixes #62691

PR Close #63508
2025-09-08 14:22:51 -07:00
Miles Malerba 00a1806eaa refactor(forms): add validateStandardSchema to public api (#63616)
Add `validateStandardSchema` which was accidentally omitted from the
public api.

PR Close #63616
2025-09-08 13:58:55 -07:00
Miles Malerba 1233f7319d refactor(forms): move control directive under api (#63616)
Moves the control directive under api/ since it is part of the public
API. Also removes the interop abstract control from the public API

PR Close #63616
2025-09-08 13:58:55 -07:00
Miles Malerba 6d3f6542b4 refactor(forms): mark all signal forms apis as experimental (#63616)
Ensure that each public API symbol in @angular/forms/signals is marked
as `@experimental`

PR Close #63616
2025-09-08 13:58:55 -07:00
AleksanderBodurri 785af438bc test(devtools): create e2e test cases for injector tree feature (#62844)
Tests validate the current behaviour of the injector tree feature.

- Nodes should be displaying on entering the tab
- Hide framework / Hide injectors with no providers flags should filter the tree properly
- Providers side tab should be able to be opened and filtered properly using the 2 filter input fields for token and type

PR Close #62844
2025-09-08 13:57:14 -07:00
Matthieu Riegler 8e8a3fe8cf refactor(compiler-cli): add support for if/switch to the non-invoked signal diagnostic (#63502)
This commit adds the support to the existing "interpolated_signal_not_invoked" diagnostic (even though it's not really a interpolation)

PR Close #63502
2025-09-08 13:17:04 -07:00
Shuaib Hasan Akib 8ab078aa73 docs: update template examples to use signal-based viewChild instead of decorator-based @ViewChild (#63630)
Co-authored-by: Matthieu Riegler <kyro38@gmail.com>

Co-authored-by: Matthieu Riegler <kyro38@gmail.com>

PR Close #63630
2025-09-08 12:52:27 -07:00
Joey Perrott 1078954db1 build: properly override the repo for rules_angular (#63584)
Override the repo "rules_angular_configurable_deps" correctly so that the actual compiler and compiler-cli from the local repo is used

PR Close #63584
2025-09-08 12:34:52 -07:00
Shuaib Hasan Akib 08fb6864c9 docs: update package link (#63579)
PR Close #63579
2025-09-08 12:33:54 -07:00
Jessica Janiuk 7ab63d1f10 docs: add CSS transitions note on animate.enter (#63618)
PR Close #63618
2025-09-08 12:32:02 -07:00
aparziale 655a99d0c6 fix(migrations): fix bug in ngclass-to-class migration (#63617)
Fix bug in ngclass-to-class migration. The migrateSpaceSeparatedKey option was configured incorrectly and I added a test case

PR Close #63617
2025-09-08 12:30:00 -07:00
Angular Robot 06d99abd70 docs: update Angular CDK apis (#63645)
Updated Angular CDK api files.

PR Close #63645
2025-09-08 12:28:50 -07:00
Matthieu Riegler 1f21de8be4 docs: improve headings of docs (#63604)
This is an attemp to improve the indexation of those pages by making SSR and i18N important

PR Close #63604
2025-09-08 12:10:25 -07:00
Avcharov Hryhorii 160e065d35 feat(devtools): store last selected tab in settings (#63594)
Store last selected tab after application refresh

PR Close #63594
2025-09-08 11:18:14 -07:00
Joey Perrott c6711a1316 build: add additional comments explaining deep imports in adev (#63644)
Add additional comment to explain why deep imports are required for building adev using the angular cli

PR Close #63644
2025-09-08 11:15:06 -07:00
Shuaib Hasan Akib e7fbee0a13 docs(docs-infra): quote title attributes in links (#63578)
Prevent broken HTML when link titles contain spaces by properly quoting the title attribute

PR Close #63578
2025-09-08 10:14:47 -07:00
AleksanderBodurri 4f256d3b00 test(devtools): write some e2e tests for the transfer state tab (#62843)
Tests validate the current behaviour of the transfer state feature:

- Tab can be made visible by enabling in the settings menu
- Transfer state component displays keys total and size
- Validates the existence of the mock content present in https://github.com/angular/angular/tree/main/devtools/src/app/transfer-state.ts

PR Close #62843
2025-09-08 10:11:35 -07:00
Miles Malerba bacda4f41b refactor(forms): add support for binding number fields to date inputs (#63585)
In addition to `value` and `valueAsDate`, the date type fields work with
`valueAsNumber` as well, treating it as epoch miliseconds.

PR Close #63585
2025-09-05 14:00:34 -07:00
Miles Malerba 681b13c40f refactor(forms): add support for more input types (#63585)
Adds additional handling for input types that handle numbers:
- number
- range
- datetime-local

As well as input types that handle dates:
- date
- month
- week
- time
- *not* datetime-local which does not allow setting valueAsDate

This PR allows binding either a `Field<string>` or `Field<number>` to
the number type inputs and a `Field<string>`, `Field<numebr>`, or
`Field<Date | null>` to the date type inputs. Binding uses the
corresponding `.value`, `.valueAsNumber`, or `.valueAsDate` according to
the type of the `Field`.

When reading new values out of the input, the `Control` directive will
read the property that aligns with the type of the existing value in the
`Field` and write back the same type.

PR Close #63585
2025-09-05 14:00:34 -07:00
Kristiyan Kostadinov c0791e1887 fix(core): drop support for TypeScript 5.8 (#63589)
Updates the version range to drop support for TypeScript 5.8.

BREAKING CHANGE:
* TypeScript versions less than 5.9 are no longer supported.

PR Close #63589
2025-09-05 13:54:40 -07:00
Kristiyan Kostadinov ecef955185 docs: update examples to latest Angular and TypeScript (#63589)
Updates the adev examples to use TypeScript 5.9 and Angular 20.2.

PR Close #63589
2025-09-05 13:54:40 -07:00
Alan Agius af55552284 build: update @types/node to version ^20.18.8 (#63611)
Version 18 is quite old and no longer supported.

PR Close #63611
2025-09-05 13:48:16 -07:00
Matthieu Riegler 0809439278 docs(docs-infra): fix mini share icon URL. (#63586)
fixes #63569

PR Close #63586
2025-09-05 13:08:14 -07:00
Alan Agius f560536f08 test: increase mermaid spec timeout to reduce flakes (#63610)
The mermaid spec test can be flaky due to timeouts. This commit increases the timeout to 25 seconds to make the test more reliable.

PR Close #63610
2025-09-05 12:53:49 -07:00
Joey Perrott fe349827ef build: separate zone.js dependencies into their own directory (#63425)
Separate out zone.js dependencies

PR Close #63425
2025-09-05 12:52:55 -07:00
Cheng-Hsuan Tsai 38de2b3ad4 docs: Add Angular Aria document skeletons (#63605)
PR Close #63605
2025-09-05 12:52:13 -07:00
Cheng-Hsuan Tsai 8401f8940f docs(docs-infra): allow collapse code example (#63559)
PR Close #63559
2025-09-04 15:25:23 -07:00
Alan Agius 0b47781c31 build: remove patch for @angular/build (#63601)
This is no longer needed.

PR Close #63601
2025-09-04 15:24:38 -07:00
Shuaib Hasan Akib 3099f91440 docs: uses signal, implement TODOs, and fix typos (#63603)
PR Close #63603
2025-09-04 15:21:00 -07:00
Avcharov Hryhorii ef025880cc fix: remove refresh button from transfer state tab (#63592)
TransferState is only written into the DOM once during SSR and is not kept in sync with the runtime state on the client. Pressing the refresh button always re-reads the initial serialized script tag, which never changes after bootstrap.

PR Close #63592
2025-09-04 09:23:23 -07:00
Alan Agius 948b8113ed release: bump Angular DevTools version to 1.1.44 (#63596)
PR Close #63596
2025-09-04 13:47:49 +02:00
Miles Malerba 835aad7994 release: cut the v21.0.0-next.2 release 2025-09-03 12:45:26 -07:00
Miles Malerba c918f61afc docs: release notes for the v20.2.4 release 2025-09-03 12:38:10 -07:00
Joey Perrott 8738b81785 build: use common jasmine rule from dev-infra (#63568)
Use the new common jasmine rule from dev-infra which include sourcemap rewriting support and esm file loading

PR Close #63568
2025-09-03 16:34:08 +00:00
Joey Perrott 9e8e6e7e7d build: add zone.js/test/typings to bazelignore (#63568)
Add the zone.js/test/typings node_modules directory to the bazelignore list

PR Close #63568
2025-09-03 16:34:08 +00:00
Angular Robot 19c84ca111 build: update cross-repo angular dependencies (#63565)
See associated pull request for more information.

PR Close #63565
2025-09-03 16:33:05 +00:00
cexbrayat b717f6dce6 docs: typos in ngClass migration (#63564)
PR Close #63564
2025-09-03 16:31:31 +00:00
Shuaib Hasan Akib 2c6be8a141 docs: discourage use of ng as a component or directive selector prefix (#63567)
PR Close #63567
2025-09-03 09:31:15 -07:00
Alan Agius 49d5de4233 refactor(platform-server): simplify transfer state serialization tracking (#63525)
The logic to track if the transfer state has been serialized is simplified by removing the need for `APP_ID`. Instead of maintaining a `Set` of application IDs, a simple boolean flag is used.

PR Close #63525
2025-09-03 09:15:52 -07:00
Alan Agius ee73dc9553 fix(platform-server): prevent false warning for duplicate state serialization (#63525)
The `TRANSFER_STATE_SERIALIZED_FOR_APPID` provider was previously configured at the platform level, causing its state to be shared across all concurrent server-side rendering requests. This created a race condition where one request could see the `appId` from a different, concurrent request, leading to false warnings about duplicate state serialization.

This commit changes the provider's scope to ensure that each application instance gets its own unique state. This correctly isolates the serialization check to each individual request, resolving the issue of false warnings in concurrent environments.

Closes #63524

PR Close #63525
2025-09-03 09:15:52 -07:00
Shuaib Hasan Akib e6949ad355 docs: fix #63555 (#63560)
PR Close #63560
2025-09-03 09:01:37 -07:00
AleksanderBodurri d006721f30 feat(devtools): clean up router tree for stable release (#63081)
Addresses some cleanup items for the router tree:

- No longer loads router ng global APIs as a side effect of importing the router. Rather this is now a runtime step that occurs when provideRouter is called.
- No longer depends on router.navigateByUrl in Angular DevTools. There is now a dedicated global util for this
- Router instance logic no longer depends on token name
- Prevents navigating to lazy or redirect routes (these don't have an associated component)

PR Close #63081
2025-09-02 20:59:15 -07:00
Andrew Scott 475ed59ec6 refactor(core): export zoneless provider token privately (#63558)
This needs to be used internally for a short time when we require one of the providers

PR Close #63558
2025-09-02 20:52:38 -07:00
Angular Robot 6148a40a1b build: lock file maintenance (#63522)
See associated pull request for more information.

PR Close #63522
2025-09-02 12:44:13 -07:00
Angular Robot 4fb8c46bfd docs: update Angular CLI help (#63552)
Updated Angular CLI help contents.

PR Close #63552
2025-09-02 12:39:30 -07:00
Andrew Scott 4c36659ba9 refactor(router): Add handling for empty observables in guards (#63546)
This fixes a bug introduced in #63485 where `firstValueFrom` was used. This
doesn't work in all situations here because some observables don't
emit before completing. These errors should result in the route matching
logic moving on to the next route.

Note: This is marked as a refactor rather than fix because the commit above is not in
any release yet.

PR Close #63546
2025-09-02 11:50:49 -07:00
Alan Agius ce8db665f9 refactor(platform-browser): remove deprecated ApplicationConfig export (#63529)
Removes the deprecated `ApplicationConfig` export from `@angular/platform-browser`.
This export was deprecated in a prior version and developers should import `ApplicationConfig` from `@angular/core` instead.

BREAKING CHANGE:

The deprecated `ApplicationConfig` export from `@angular/platform-browser` has been removed.
Please import `ApplicationConfig` from `@angular/core` instead.

PR Close #63529
2025-09-02 11:48:19 -07:00
Andrew Scott 92e09adc0a fix(core): Remove ignoreChangesOutsideZone option (#62700)
This option was introduced out of caution as a way for developers to opt out of
the new behavior in v18 which scheduled change detection even when
events happened outside the NgZone. After monitoring the results post-release, we
have determined that this feature is working as desired and do not believe it
should ever be disabled by setting this option to `true`.

This option was deprecated in v18.2, less than 3 months after it was
introduced in v18. We do not really expect it to be used.

BREAKING CHANGE: `ignoreChangesOutsideZone` is no longer available as an
option for configuring ZoneJS change detection behavior.

PR Close #62700
2025-09-02 11:01:44 -07:00
aparziale 06f4fd4456 fix(core): Fixed inject migration schematics for migrate destructured properties (#62832)
Fixes #62626 - Properties used with the destructor are also managed during migration.

PR Close #62832
2025-09-02 10:59:46 -07:00
Angular Robot 1e6d311180 build: update cross-repo angular dependencies (#63548)
See associated pull request for more information.

PR Close #63548
2025-09-02 17:07:44 +00:00
Angular Robot c331d3df19 build: update github/codeql-action action to v3.30.0 (#63539)
See associated pull request for more information.

PR Close #63539
2025-09-02 17:06:12 +00:00
Matthieu Riegler 7aa9350dc7 build: use cldr typings (#63519)
This replaces an `any`.

PR Close #63519
2025-09-02 16:50:34 +00:00
Matthieu Riegler 31c689a5f4 docs(docs-infra): highlight & parse api descriptions. (#63536)
The prevent future regression of this, this commit introduces additional tests.

PR Close #63536
2025-09-02 16:49:10 +00:00
Shuaib Hasan Akib e63608d4d2 docs(docs-infra): signal property should be readonly (#63166)
PR Close #63166
2025-09-02 16:44:12 +00:00
hawkgs 01bbafd47e fix(devtools): runtime errors caused by tree node snapping and tab change (#63531)
Fix the runtime errors caused by the tree visualizer node auto-snapping when a tab is changed. The errors are caused since we only visually hide the tabs.

PR Close #63531
2025-09-02 16:43:32 +00:00
Shuaib hasan akib 66a2ae4cc0 docs: fix wrong file reference and update Tailwind CSS guide link (#63533)
PR Close #63533
2025-09-02 16:42:06 +00:00
SkyZeroZx 4640471d4d docs: Add docs responseType in HttpEvent (#63518)
Add docs responseType in HttpEvent

PR Close #63518
2025-09-02 16:41:33 +00:00
Angular Robot 61c155ee0a build: update pnpm to v10.15.1 (#63526)
See associated pull request for more information.

PR Close #63526
2025-09-02 16:39:46 +00:00
Shuaib hasan akib 668ced9154 docs(docs-infra): export class (#63506)
PR Close #63506
2025-09-02 16:36:47 +00:00
Shuaib Hasan Akib 15416067e2 docs(docs-infra): apply migration script changes (#63514)
PR Close #63514
2025-09-02 09:32:00 -07:00
Shuaib Hasan Akib db8b44cf8c docs(docs-infra): marks properties protected used in template (#63513)
PR Close #63513
2025-09-02 09:31:29 -07:00
Duncan Faulkner 96d5b8e199 docs: add full example for multiple content projections with card-title and card-body components (#63515)
PR Close #63515
2025-09-02 09:28:47 -07:00
Andrew Scott d399d7d02b fix(core): Explicit Zone CD in TestBed providers should not override TestBed error handler (#63404)
The internal error handler in TestBed rethrows errors to prevent them
from being silently ignored in tests. Prior to this commit, tests which
used `provideZoneChangeDetection` in the providers would override the
internal error handler of TestBed and prevent these errors from being
rethrown.

BREAKING CHANGE: (test only) - Using `provideZoneChangeDetection` in the
TestBed providers would previously prevent `TestBed` from rethrowing
errors as it should. Errors in the test will now be rethrown, regardless
of the usage of `provideZoneChangeDetection`. Tests should be adjusted to
prevent or account for these errors. As in previous major versions,
this behavior can be disabled with `rethrowApplicationErrors: false` in
`configureTestingModule` as a last resort.

PR Close #63404
2025-09-02 09:26:44 -07:00
Andrew Scott 541613e758 refactor(core): Update zone and zoneless error to be a warning instead (#63457)
This updates the error thrown when both `provideZoneChangeDetection` and
`provideZonelessChangeDetection` are both used in the application
providers to be a warning instead. The reasons for this are twofold:

1. The migration we need for using zoneless by default isn't perfect and
   may add `provideZoneChangeDetection` when the zoneless provider
   exists. This change will prevent that from causing an error
2. There might be valid situations where a "default" is used in a common
   provider but that can be overridden by individal applications. In
   tests, we do allow this type of thing, where `initTestEnvironment`
   may have a default but individual tests might want to use a different
   one. The same logic might apply to applications in some environments.

PR Close #63457
2025-09-02 09:25:23 -07:00
Andrew Scott 4df3b17b47 refactor(core): Add internal option to require at least one cd provider (#63486)
This option would require one of either the zone or zoneless provider so
applications don't accidentally enable zoneless when the default flips if we
missed it in the migration. It'll be a hard failure at bootstrap, but that's a
lot easier to notice than zoneless getting turned on accidentally since
many things might just work.

PR Close #63486
2025-09-02 09:24:33 -07:00
Miles Malerba 16fa983989 ci: add more team members as approvers (#63495)
adds amishne, leonsenft, mattrbeck to approve but not receive review
requests

PR Close #63495
2025-08-29 15:12:13 -07:00
Miles Malerba db95a5c763 refactor(forms): loosen the error and disabled type on FormUiControl (#63455)
This allows passing errors and disabled reasons that did not originate
from `@angular/forms/signals` in case the the control is being used
separately from the forms system

PR Close #63455
2025-08-29 14:44:13 -07:00
Miles Malerba 10ef96adb3 fix(forms): consistent treatment of empty (#63456)
Removes custom handling of emptiness in several of the validators and
replaces it with a common `isEmpty` check. The common empty check
considered the following values to be empty: `null`, `undefined`, `''`,
`false`, `NaN`

Generally most validators should treat an empty value as valid. This
aligns with both the behavior or native HTML validators and reactive
forms validators.

As an example, consider an optional email field. If the email validator
considered empty string to be an invalid email, there would be no way
for the user to not enter it.

There are several exceptions to this rule:
- `required` whose entire purpose is to ensure that the field is *not*
  empty
- `validateStandardSchema` which should subject all values including
  empty ones to the specified standard schema. It is up to the schema to
  decide whether an empty value is valid or not
- `validate`/`validateAsync` which leaves it up to the user's custom
  validation logic to decide if an empty value is valid.

PR Close #63456
2025-08-29 14:43:03 -07:00
Miles Malerba 862495c238 build: configure signal forms for release (#63458)
Configures signal forms to release as `@angular/forms/signals`

PR Close #63458
2025-08-29 14:31:35 -07:00
Shuaib Hasan Akib e75b04fb62 docs(docs-infra): properties should be readonly (#63492)
PR Close #63492
2025-08-29 14:06:33 -07:00
Sean Bright e48ba58b3c docs: fix up some clunky wording (#63491)
PR Close #63491
2025-08-29 14:06:01 -07:00
Andrew Scott bbb46e50d4 refactor(router): Add firstValueFrom helper (#63485)
This fixes a bug introduced in #62994 where `toPromise` was used. This
doesn't work in all situations here because some observables don't
complete. This only affected the redirect path, since the others are
already behind other rxjs code which takes the first value from the user
guards.

Note: This is marked as a refactor rather than fix because the commit above is not in
any release yet.

PR Close #63485
2025-08-29 19:02:04 +00:00
Jan Melcher d1edb714cd docs: fix rxResource example (#63484)
PR Close #63484
2025-08-29 19:00:16 +00:00
Andrew Scott 6e1599d4cc refactor(router): Add internal flag to control async vs rxjs recognize (#62994)
To aid in hitting external breaking change deadlines without pressure
of fixing everything in g3 first, add an internal opt out flag.

This also adds a privately exported provider to revert to the old
rxjs-based behavior, which can be synchronous, until any issues that
come up are addressed.

PR Close #62994
2025-08-29 08:55:13 -07:00
Andrew Scott 5b53535dd1 fix(router): Update recognize stage to use internally async/await (#62994)
This is effectively a revert of https://github.com/angular/angular/commit/72e6a948bb8ec58f14b87d297d5f81baf2e1942d.
Debugging the recognize stage is considerably easier with async/await
stacks compared to rxjs. This also improves maintainability and is a
better 1:1 with server-side logic that has been implemented to match
and can be more easily kept in sync.

This also ensures that the recognize step is always async, whereas it
can sometimes be synchronous with rxjs.

BREAKING CHANGE: Router navigations may take several additional
microtasks to complete. Tests have been found to often be highly
dependent on the exact timing of navigation completions with respect to
the microtask queue. The most common fix for tests is to ensure all
navigations have been completed before making assertions. On rare
occasions, this can also affect production applications. This can be
caused by multiple subscriptions to router state throughout the application,
both of which trigger navigations that happened to not conflict with the
previous timing.

PR Close #62994
2025-08-29 08:55:13 -07:00
Angular Robot 78b2279609 build: update cross-repo angular dependencies (#63477)
See associated pull request for more information.

PR Close #63477
2025-08-29 08:53:15 -07:00
Matthieu Riegler 021ead5399 refactor(animations): remove dependency on @angular/common (#63248)
`DOCUMENT` was move to `@angular/core`, so we don't need to depend on common anymore.

PR Close #63248
2025-08-29 08:51:31 -07:00
Angular Robot dcd81d94d2 build: update cross-repo angular dependencies to 06d3af5 (#63475)
See associated pull request for more information.

PR Close #63475
2025-08-29 13:45:29 +00:00
Angular Robot 3fb02ed1e0 build: update google-github-actions/auth action to v3 (#63461)
See associated pull request for more information.

PR Close #63461
2025-08-29 13:19:48 +00:00
Shuaib hasan akib a3938d550e docs(docs-infra): makes signal readonly (#63449)
PR Close #63449
2025-08-29 13:01:53 +00:00
Maryannah 1199756c9f docs: update documentation for Vitest use (#62798)
PR Close #62798
2025-08-29 13:00:53 +00:00
Emiliano González c6cd636e70 docs: Correct description of lesson outcome (#62710)
PR Close #62710
2025-08-29 13:00:21 +00:00
Angular Robot fd2a72ec4f build: update cross-repo angular dependencies (#63467)
See associated pull request for more information.

PR Close #63467
2025-08-29 12:58:34 +00:00
Angular Robot b48be649b7 build: update dependency node to v22.19.0 (#63460)
See associated pull request for more information.

PR Close #63460
2025-08-29 12:57:04 +00:00
Angular Robot 94f42abc6d build: update google-github-actions/auth digest to c200f36 (#63459)
See associated pull request for more information.

PR Close #63459
2025-08-29 12:55:18 +00:00
Jessica Janiuk 1875d5c5a3 docs: release notes for the v20.2.3 release 2025-08-29 14:35:09 +02:00
Jessica Janiuk 0a82138d4b fix(compiler): fixes regression with event parsing and animate prefix (#63470)
The new animations was not correctly looking for the `.` when parsing bindings. This resulted in arbitrary event bindings creating animate.leave instruction calls.

fixes: #63466

PR Close #63470
2025-08-29 11:53:30 +00:00
Angular Robot 1a26fd3c92 build: update all non-major dependencies (#63412)
See associated pull request for more information.

PR Close #63412
2025-08-28 18:54:12 +00:00
Andrew Scott c795960ada feat(common): Add experimental support for the Navigation API (#63406)
The navigation API is part of interop 2025. You can find the
implementation status for each major browser here:

https://wpt.fyi/results/navigation-api?label=master&label=experimental&aligned&view=interop&q=label%3Ainterop-2025-navigation

https://developer.mozilla.org/en-US/docs/Web/API/Navigation_API

BREAKING CHANGE: (test only) - `TestBed` now provides a fake `PlatformLocation`
implementation that supports the Navigation API. This may break some
tests, though we have not observed any failures internally. You can revert to the
old default for `TestBed` by providing the `MockPlatformLocation` from
`@angular/common/testing` in your providers:
`{provide: PlatformLocation, useClass: MockPlatformLocation}`

PR Close #63406
2025-08-28 11:48:03 -07:00
Doug Parker 147c7430f2 release: bump Angular DevTools to 1.0.44 (#63452)
PR Close #63452
2025-08-28 10:36:59 -07:00
Angular Robot c9b215bb5c build: update cross-repo angular dependencies (#63443)
See associated pull request for more information.

PR Close #63443
2025-08-28 09:54:27 -07:00
Matthieu Riegler 2f5f975cb5 refactor(forms): fix dependencies (#63451)
common/http was missing

PR Close #63451
2025-08-28 09:43:39 -07:00
Hongxu Xu 1f4c5f72aa refactor(bazel): reduce build deps (#63348)
clean up deps in bazel build scripts

PR Close #63348
2025-08-28 09:16:10 -07:00
Angular Robot cac08526a9 docs: update Angular CLI help (#63445)
Updated Angular CLI help contents.

PR Close #63445
2025-08-28 09:12:24 -07:00
Miles Malerba b8314bd340 feat(forms): add experimental signal-based forms (#63408)
This commit introduces an experimental version of a new signal-based forms API for Angular. This new API aims to explore how signals can be leveraged to create a more declarative, intuitive, and reactive way of handling forms.

The primary goals of this new signal-based approach are:

*   **Signal-centric Design:** Place signals at the core of the forms experience, enabling a truly reactive programming model for form state and logic.
*   **Declarative Logic:** Allow developers to define form behavior, such as validation and conditional fields, declaratively using TypeScript. This moves logic out of the template and into a typed, testable schema.
*   **Developer-Owned Data Model:** The library does not maintain a copy of data in a form model, but instead read and write it via a developer-provided `WritableSignal`, eliminating the need for applications to synchronize their data with the form system.
*   **Interoperability:** A key design goal is seamless interoperability with existing reactive forms, allowing for incremental adoption.
*   **Bridging Template and Reactive Forms:** This exploration hopes to close the gap between template and reactive forms, offering a unified and more powerful approach that combines the best aspects of both.

This initial version of the experimental API includes the core building blocks, such as the `form()` function, `Field` and `FieldState` objects, and a `[control]` directive for binding to UI elements. It also introduces a schema-based system for defining validation, conditional logic, and other form behaviors.

Note: This is an early, experimental API. It is not yet complete and is subject to change based on feedback and further exploration.

Co-authored-by: Kirill Cherkashin <kirts@google.com>
Co-authored-by: Alex Rickabaugh <alxhub@users.noreply.github.com>
Co-authored-by: Leon Senft <leonsenft@users.noreply.github.com>
Co-authored-by: Dylan Hunn <dylhunn@gmail.com>
Co-authored-by: Michael Small <michael-small@users.noreply.github.com>

PR Close #63408
2025-08-28 09:02:43 -07:00
Alan Agius a1d1cdf1e3 build: remove rulesJsInteropMode (#63448)
This is no longer needed.

PR Close #63448
2025-08-28 08:49:24 -07:00
Matthieu Riegler a92c0ea4c0 docs(docs-infra): remove unused example (#63426)
PR Close #63426
2025-08-28 08:47:54 -07:00
Milo 09cb177e5b build: simplify pnpm scripts in package.json (#63310)
remove unnecessary pnpm prefix for bin scripts from node_modules

PR Close #63310
2025-08-28 08:46:23 -07:00
Vincent 9ae9875384 fix(core): Prevent an error on cleanup when an rxResource stream threw before returning an Observable (#63342)
Before this commit, it was wrongly assumed that the stream subscription could not be `undefined`.

Fixes #63341

PR Close #63342
2025-08-28 08:44:51 -07:00
arturovt ec65663d5e refactor(core): replace Optional/SkipSelf deps with inject() flags (#63386)
This commit updates provider definitions that relied on the `deps` array
with `new Optional()` and `new SkipSelf()` to instead use the modern
`inject(..., { optional: true, skipSelf: true })` API.

Previously:
  deps: [[KeyValueDiffers, new SkipSelf(), new Optional()]]

Now:
  const parent = inject(KeyValueDiffers, { optional: true, skipSelf: true });

**Bundle size reduction**: `Optional` and `SkipSelf` are runtime values
created by `makeParamDecorator()`. Even in production builds, esbuild
and other bundlers must keep their factory code because they are
referenced with `new Optional()` / `new SkipSelf()`. With `inject()`,
those classes are no longer referenced, allowing them and the
`makeParamDecorator` scaffolding to be tree-shaken when unused.

As a result, production bundles can drop both `Optional`, `SkipSelf`, and
their supporting factory code when not used elsewhere, reducing code size
while keeping the same behavior.

PR Close #63386
2025-08-28 08:43:17 -07:00
SkyZeroZx 07e678872f feat(http): Add reponseType property to HttpResponse and HttpErrorResponse (#63043)
Add support for the Fetch API's responseType property in HttpResponse and HttpErrorResponse when using HttpClient with the withFetch provider.

PR Close #63043
2025-08-28 08:34:56 -07:00
Jessica Janiuk ed3d1f246b fix(core): Fix cancellation of animation enter classes (#63442)
When toggling visibility on an element over and over, the enter animations were supposed to be cancelled and then the classes removed. There was a race condition happening that resulted in the cancelled animation being the leave animation. Rather than using the animation.cancel functionality, it's safer to just remove the enter classes.

fixes: #63439

PR Close #63442
2025-08-28 14:11:05 +00:00
Alan Agius 99cf0281c6 ci: remove old options from workflows (#63441)
The `cache-node-modules` option has been removed as pnpm store cache is enabled by default.

PR Close #63441
2025-08-28 14:05:45 +00:00
Alan Agius 1730ea13ac ci: fix and improve devtools step (#63441)
This commit updates the devtools step by disabling the package manager cache. This change is necessary because Cypress downloads its binary to a cache directory during installation, which requires a post-install script. However, when the cache is hit this is skipped.

This update also disables `pnpm install` in the Cypress action to avoid a redundant installation step. And adds a seperate cache for the downloaded Cypress binary.

See: https://docs.cypress.io/app/get-started/install-cypress#pnpm-configuration

PR Close #63441
2025-08-28 14:05:44 +00:00
Alan Agius 6235d3433c ci: only run postUpdateTasks when needed (#63440)
This commit changes the `postUpdateTasks` logic to be executed only for the needed managers.

PR Close #63440
2025-08-28 14:05:14 +00:00
SkyZeroZx 8f8d113881 docs: Add docs service worker to new options (#63436)
Add docs service worker to new options

PR Close #63436
2025-08-28 10:20:52 +00:00
Joey Perrott 7ccf368236 build: define typescript version via string in module.bazel file (#63431)
Within our module.bazel file when describing the version of typescript to use for rules_ts, we use ts_version instead of ts_version_from to prevent our package.json file from being
part of the set of files used to calculate the sha for the lock file.  Any unrelated change to the version of the typescript file would end up causing our lockfile to be out of date.
This amount of churn has proven to be too much for our current setup. We instead now test to validate the versions defined in the package.json and MODULE.bazel files match.

PR Close #63431
2025-08-28 09:50:55 +00:00
Matthieu Riegler b2ed21b642 build: remove unused deps (#63417)
They aren't used anymore

PR Close #63417
2025-08-27 16:58:49 -07:00
Shuaib Hasan Akib d635e6c07e docs(docs-infra): tooltip on hover and message after copied (#63167)
PR Close #63167
2025-08-27 16:56:44 -07:00
Angular Robot 0d57dfbcf0 docs: update Angular CLI help (#63419)
Updated Angular CLI help contents.

PR Close #63419
2025-08-27 16:33:42 -07:00
Ben Hong 059e0d3dfd docs: add customizing route behavior guide for router (#63398)
PR Close #63398
2025-08-27 16:18:39 -07:00
Shuaib Hasan Akib 4c82b84c5b docs(docs-infra): mark properties as readonly if they shouldn't change (#63200)
PR Close #63200
2025-08-27 16:16:25 -07:00
Angular Robot 58cb2bec32 build: update cross-repo angular dependencies (#63395)
See associated pull request for more information.

PR Close #63395
2025-08-27 16:13:08 -07:00
Matthieu Riegler 1bb30c7e49 docs(docs-infra): remove dependency on html-entities (#63416)
HTML entities are now supported, we don't need to convert them.

PR Close #63416
2025-08-27 11:40:50 -07:00
arturovt eee3e5a4df refactor(core): mark VERSION as @__PURE__ for better tree-shaking (#63400)
Annotate the `new Version(...)` call with `/* @__PURE__ */` to signal to
optimizers that the constructor is side-effect free.

Without this hint, bundlers such as Terser or ESBuild may conservatively
retain the `VERSION` instantiation even when unused. With the annotation,
the constant can be tree-shaken away in production builds if not referenced,
reducing bundle size.

PR Close #63400
2025-08-27 11:39:06 -07:00
arturovt 538de86a72 fix(core): avoid injecting internal error handler from a destroyed injector (#62275)
This commit prevents lazy injection of the internal `ErrorHandler` from a destroyed injector, which would otherwise result in a secondary "destroyed injector" error.

The `handleUncaughtError` function is used in a wrapped event listener that invokes the `ErrorHandler` if the listener throws. A simple case in a micro-frontend application:

```ts
onNavigationToAnotherApp() {
  this.appRef.destroy();
  do_some_stuff_ie_loggin_that_may_throw();
}
```

If the function throws an error, Angular attempts to inject the `ErrorHandler` from a destroyed injector.

PR Close #62275
2025-08-27 11:35:54 -07:00
Alexander Melde 3a3bd364d1 docs: update to new standalone default behavior (#63329)
When declaring directives, the standalone flag is set to true by default in current Angular versions.

The docs for the directive decorator should correctly explain the default behavior, while still mentioning when to set it to false.

PR Close #63329
2025-08-27 11:26:13 -07:00
Matthieu Riegler 6489af7678 refactor(http): rework the HttpEvent union to improve narrowing. (#63267)
Prior to this change, `HttpProgressEvent` could not be narrowed to `HttpDownloadProgressEvent` or `HttpUploadProgressEvent`

PR Close #63267
2025-08-27 11:25:02 -07:00
Joey Perrott f0ee681ad7 build: move macros/build set up for zone.js into zone.js directories (#63421)
Move the zone_bundle and configurations into zone.js's tool directory

PR Close #63421
2025-08-27 11:23:57 -07:00
Joey Perrott 17c232afd5 build: remove unused macros (#63421)
Remove unused macro files

PR Close #63421
2025-08-27 11:23:57 -07:00
Joey Perrott 6e4d71e022 build: remove ts_project_interop file (#63421)
Remove the ts_project_interop.bzl file that no longer does interop work

PR Close #63421
2025-08-27 11:23:57 -07:00
Joey Perrott b4ae94d5ef refactor: remove TODOs which have been corrected (#63421)
Remove TODOs which were addressed but the comment was not removed

PR Close #63421
2025-08-27 11:23:57 -07:00
Matthieu Riegler 0133964ff4 docs: remove IsolatedShadowDOM for the v10=>v11 suggestions (#63415)
PR Close #63415
2025-08-27 11:18:24 -07:00
Jessica Janiuk fa0f11f6e8 refactor(core): prevent timeout from applying to non-event animation bindings (#63393)
The 4 second removal timeout was applying in all cases, but it should only actually apply to the situation where the event binding syntax is used for animate.leave. This ensures that's the only case in which it'll apply.

PR Close #63393
2025-08-27 11:17:40 -07:00
Andrew Scott 8e4b7e47f4 refactor(core): Reorder resolve/reject in relation to navigate[error/success] (#63377)
Order was changed in https://github.com/whatwg/html/pull/11512 (see that
PR for details as to why).

https://whatpr.org/html/10919/nav-history-apis.html#abort-a-navigateevent

PR Close #63377
2025-08-27 11:16:53 -07:00
Andrew Scott f86846555b fix(upgrade): Remove deprecated UpgradeAdapter (#61659)
Deprecated since v5. Use `upgrade/static` instead, which also supports aot.

BREAKING CHANGE: `UpgradeAdapter` is no longer available. Use
`upgrade/static` instead

PR Close #61659
2025-08-27 11:11:29 -07:00
Andrew Kushnir 478eebe607 release: cut the v21.0.0-next.1 release 2025-08-27 11:00:14 -07:00
Andrew Kushnir 01f44ee37c docs: release notes for the v20.2.2 release 2025-08-27 10:54:53 -07:00
Matthieu Riegler f4f5a8ab81 ci: pin create-pull-request version to sha (#63409)
This is a new security requirement to prevent dependency compromission.

PR Close #63409
2025-08-27 07:36:12 -07:00
Taygan Caldwell a43057c059 refactor(core): Create a base effect interface and prototype to be used by both angular and wiz. (#62931)
Add a common effect interface and prototype to be used to create the wiz and angular effects.

PR Close #62931
2025-08-26 14:48:32 -07:00
Joey Perrott dfa2044af9 build: fix strict deps failure (#63403)
Fix the remaining strict deps failure

PR Close #63403
2025-08-26 11:46:43 -07:00
Jessica Janiuk a0388409e3 fix(compiler): fixes animations on elements with structural directives (#63390)
The animate instructions were getting applied to the container comment nodes as well as the element nodes. This prevents that on the compiler level.

fixes: #63371

PR Close #63390
2025-08-26 09:47:07 -07:00
Joey Perrott c15b8ed631 build: enable strict deps enforcement for ts_project (#63375)
Enable strict_deps testings for all ts_project and ng_project targets in the repo

PR Close #63375
2025-08-26 09:46:30 -07:00
Avcharov Hryhorii aff8bb222c refactor(devtools): provide signalGraphEnabled via settings service (#63374)
signalGraphEnabled was previously passed down the component tree.
This change refactors the logic to use the settings service instead,
which already holds the value and allows sharing it across components.

PR Close #63374
2025-08-26 09:42:12 -07:00
Avcharov Hryhorii 1cb113cdec fix(devtools): prevent profiler bars flickering after change detection (#63350)
Without trackBy cdkVirtualFor rerenders full list after in each update

PR Close #63350
2025-08-26 09:41:08 -07:00
Angular Robot 67d4449db4 build: update cross-repo angular dependencies (#63379)
See associated pull request for more information.

PR Close #63379
2025-08-25 16:29:23 -07:00
Joey Perrott 2fcafb65c5 build: rename defaults2.bzl to defaults.bzl (#63383)
Use defaults.bzl for the common macros

PR Close #63383
2025-08-25 15:45:01 -07:00
Angular Robot 1febf523e3 build: update dependency @bazel/ibazel to v0.26.10 (#63373)
See associated pull request for more information.

PR Close #63373
2025-08-25 15:39:30 -07:00
Angular Robot fca6122d09 build: lock file maintenance (#63359)
See associated pull request for more information.

PR Close #63359
2025-08-25 15:35:54 -07:00
Matthieu Riegler 47dc4ffd1a docs(docs-infra): share markdown rendering and highlighting code between api-gen and guides (#63357)
This reduces code duplication and improves the maintability.

PR Close #63357
2025-08-25 15:33:55 -07:00
Angular Robot 5a111064b8 build: update cross-repo angular dependencies (#63338)
See associated pull request for more information.

PR Close #63338
2025-08-25 10:49:29 -07:00
arturovt 1ebba5442f refactor(common): drop X-Request-URL (#61943)
This commit drops the `X-Request-URL` header. It was a non-standard HTTP response header, deprecated long ago and never part of any official specification. Modern browsers now expose the final URL via the `XMLHttpRequest.responseURL` property, as defined in the WHATWG spec.

PR Close #61943
2025-08-25 08:45:19 -07:00
Angular Robot d025a07329 build: update all non-major dependencies (#63344)
See associated pull request for more information.

PR Close #63344
2025-08-25 08:37:54 -07:00
Angular Robot c716ccffec build: update bazel dependencies (#63343)
See associated pull request for more information.

PR Close #63343
2025-08-25 08:36:09 -07:00
Jessica Janiuk 9139fe0d95 fix(core): Fixes animate.leave binding to a string with spaces (#63366)
This fixes the rare case that someone uses binding syntax with `animate.leave` providing a value with a string that has spaces in it. For example:

```
<example `[animate.leave]="'class-a class-b"` />
```

fixes: #63365

PR Close #63366
2025-08-25 08:33:30 -07:00
AleksanderBodurri 4dec06d724 fix(devtools): correct path to load fonts for devtools devserver (#63358)
This broke in c35c0c7f2f. This commit changes the path to load the external stylesheet to reflect the new directory path.

PR Close #63358
2025-08-25 08:31:56 -07:00
Jessica Janiuk 5af3222e35 docs: update paths and references to animations guides (#63368)
This updates the adev navigation to consider the new enter-and-leave path to be the definitive animations guide.
It also prefixes all the prior animations package docs with legacy and updates all links.

PR Close #63368
2025-08-25 08:21:57 -07:00
Jessica Janiuk 1e3196b0c9 docs: add important service worker note (#63364)
This adds an important note about the service worker to indicate we are not accepting new features.

PR Close #63364
2025-08-25 08:18:31 -07:00
Jessica Janiuk 3b674e8cb3 docs: update animations guide important note (#63363)
PR Close #63363
2025-08-25 08:17:43 -07:00
Matthieu Riegler 0cd75257de refactor(docs-infra): ensure we're not creating nested anchor elements. (#63352)
With #63162, we added automatic link creation on API symbols. The side effect was that we created HTML in some specific cases. For example with the docs-card we could have nested anchor elements which is invalid.

This commit prevent creating nested links inside docs-cards.
fixes #63351

PR Close #63352
2025-08-25 08:16:20 -07:00
Matthieu Riegler 05df189731 refactor(docs-infra): rename testing into test. (#63352)
We usually name `test` our test directories and `testing` for the testing helpers.

PR Close #63352
2025-08-25 08:16:20 -07:00
Joey Perrott 3df1dccebe refactor: various build and import specificer fixes for strict deps (#63323)
Change direct deps in bazel targets and import specifiers within files to maintain strict deps requirements ahead of enabling strict deps tests in the repo

PR Close #63323
2025-08-22 14:45:00 -07:00
Shuaib Hasan Akib a9d4ccfff3 docs(docs-infra): Replace page enums by constants (#63335)
PR Close #63335
2025-08-22 14:42:52 -07:00
Matthieu Riegler 983cc2f6fd ci: add myself to review fw-general (#63337)
Also adding myself to be assigned some adev PRs

PR Close #63337
2025-08-22 12:27:36 -07:00
Shuaib Hasan Akib a84227263d docs(docs-infra): fix spelling (#63334)
PR Close #63334
2025-08-22 12:01:49 -07:00
Angular Robot 56a8408de4 build: update github/codeql-action action to v3.29.11 (#63325)
See associated pull request for more information.

PR Close #63325
2025-08-22 11:27:52 -07:00
Angular Robot c6c08f6365 build: update cross-repo angular dependencies (#63315)
See associated pull request for more information.

PR Close #63315
2025-08-22 11:25:30 -07:00
Jessica Janiuk 37ead5ffb5 fix(core): Ensures @for loop animations never get cancelled (#63328)
There's special logic in place to prevent duplicate nodes from showing up in the case when an `@if` toggles a view quickly. This had the unfortunate side effect of causing `@for` leave animations to get cancelled when an add and remove happened simultaneously, even if it was a different index. This fix prevents that from happening in the `@for` loop case.

fixes: #63307

PR Close #63328
2025-08-22 11:23:15 -07:00
Jessica Janiuk 18c9352d21 fix(core): fix memory leak with leaving nodes tracking (#63328)
This ensures the nodes are properly cleaned up from the leaving nodes map.

PR Close #63328
2025-08-22 11:23:15 -07:00
Matthieu Riegler d16a992b12 refactor(core): remove the deprecated ImportedNgModuleProviders type. (#63277)
Use the `EnvironmentProviders` type instead

PR Close #63277
2025-08-22 11:22:22 -07:00
Angular Robot 6f541b81d2 build: update dependency rollup to v4.47.1 (#63304)
See associated pull request for more information.

PR Close #63304
2025-08-21 14:13:28 -07:00
Angular Robot 36a36ea034 docs: update Angular CLI help (#63296)
Updated Angular CLI help contents.

PR Close #63296
2025-08-21 14:11:36 -07:00
Angular Robot 69df2c0f8a build: update dependency cypress to v15 (#63303)
See associated pull request for more information.

PR Close #63303
2025-08-21 11:43:24 -07:00
aparziale 7a336c159d refactor(migrations): centralize parseTemplate method (#62983)
refactor - Moved parseTemplate logic to a shared utility function to improve code reuse and maintainability

PR Close #62983
2025-08-21 11:41:32 -07:00
aparziale 6ddb250391 feat(migrations): add migration to convert ngClass to use class (#62983)
feat #61661 - add migration to convert ngClass to use class

PR Close #62983
2025-08-21 11:41:32 -07:00
Matthieu Riegler 7d6ae95807 docs(docs-infra): fix mermaid rendering (#63311)
A recent update of mermaid change the html output. `rect` became `path`.

fixes #63308

PR Close #63311
2025-08-21 10:06:32 -07:00
Matthieu Riegler da06239a41 docs(docs-infra): Add exemption list for linking symbols. (#63309)
PR Close #63309
2025-08-21 10:05:55 -07:00
Matthieu Riegler 0dd95c503f feat(forms): Add FormArrayDirective (#55880)
The `FormArrayDirective` will allow to have a `FormArray` as a top-level form object.

* `NgControlStatusGroup` directive will be applied to the `FormArrayDirective`
* `NgForm` will still create a `FormGroup`

Fixes angular#30264

BREAKING CHANGE: This new directive will conflict with existing FormArray directives or formArray inputs on the same element.

PR Close #55880
2025-08-21 09:38:37 -07:00
Matthieu Riegler 318718ce64 refactor(forms): extract shared logic from FormGroupDirective (#55880)
Ahead of the implementation of `FormArrayDirective`, extract the shared logic into an abstract class.

PR Close #55880
2025-08-21 09:38:37 -07:00
Kristiyan Kostadinov 1b0c84a5ec docs: release notes for the v20.2.1 release 2025-08-21 12:54:22 +02:00
Matthieu Riegler 827c3c15f4 fix(compiler): Keep paraenthesis in Nullish + Boolean expression. (#63292)
Ts 5.9 introduced a regression coming from 5.8 when parenthesis aren't generated for expressions like (`(a ?? b) && c`).
This fix works around this explicitly specifying that we want to keep those parenthesis that we're aware of in this specific case;

This change can be reverted if the root issue (https://github.com/microsoft/TypeScript/issues/61369) is fixed. (but let's keep the tests in any case for the coverage)

fixes #63287

PR Close #63292
2025-08-21 12:15:52 +02:00
Jan Martin 62c00ab254 release: bump Angular DevTools version to 1.0.43 (#63299)
PR Close #63299
2025-08-20 13:39:25 -07:00
Matthieu Riegler edbbbb1e44 refactor(core): remove NgProbeToken class (#63279)
This class served no purpose and was deprecated in by #51396

G3 also has no usage anymore.

PR Close #63279
2025-08-20 16:21:38 +00:00
Angular Robot 6d88ce1525 build: update @angular/ng-dev digest to c93dfc8 (#63289)
See associated pull request for more information.

PR Close #63289
2025-08-20 16:17:10 +00:00
Joey Perrott 009b068988 build: reenable firefox tests for devtools (#63288)
Reenable firefox tests for devtools as the spaces issues with path names is addressed post v7 of bazel

PR Close #63288
2025-08-20 16:08:21 +00:00
Alan Agius 1c5fb1e5c1 build: enforce frozen lockfile mode (#63260)
This commit adds `lockfile_mode=error` to the `.bazelrc` file. This change ensures that any future builds will fail if the lock file is not up-to-date with the `BUILD.bazel` file, preventing inconsistencies and encouraging developers to commit updated lock files.

PR Close #63260
2025-08-20 16:00:05 +00:00
Angular Robot 790143eb9b build: update cross-repo angular dependencies (#63284)
See associated pull request for more information.

PR Close #63284
2025-08-20 15:58:42 +00:00
Matthieu Riegler d8bdf56145 refactor(core): remove deprecated PACKAGE_ROOT_URL token (#63274)
The symbol was deprecated by #51222 and already has no usages in g3.

PR Close #63274
2025-08-20 15:45:12 +00:00
Matthieu Riegler 239fe6f83e refactor(core): remove public symbol for defineInjectable (#63270)
This public symbol was deprecated in v8.
The private symbol `ɵɵdefineInjectable` remains available.

PR Close #63270
2025-08-20 15:44:14 +00:00
Devin Chasanoff fd66f97885 docs: add ai design patterns to adev/ai (#63095)
PR Close #63095
2025-08-20 15:43:36 +00:00
Matthieu Riegler 25f593ce2a refactor(common): removengModuleFactory input of NgComponentOutlet (#62838)
This was deprecated by #44815

BREAKING CHANGE: NgModuleFactory has been removed, use NgModule instead.

PR Close #62838
2025-08-20 13:27:18 +00:00
Matthieu Riegler 4dfa6f1942 docs(docs-infra): auto-links to API entries (#63162)
This is a first step to create links to API entries automatically.
It adds support for
- code spans (`` `symbol` ``)
- code blocks (`` ```some code here``` ``)

Links are generated from on a K/V map of API entries (symbol => package name).
The map is generated from the API manifest that we're already generating for the API docs.

For the moment, entries with identical names are skipped.

PR Close #63162
2025-08-20 13:05:48 +00:00
Matthieu Riegler 2f34f9f272 docs: remove IsolatedShadowDom from the 20.2 release (#63281)
The change has been reverted by #63142

PR Close #63281
2025-08-20 13:05:12 +00:00
Jessica Janiuk a0ee6bdfe4 release: cut the v21.0.0-next.0 release 2025-08-20 14:45:26 +02:00
Jessica Janiuk d1df128725 docs: release notes for the v20.2.0 release 2025-08-20 14:31:15 +02:00
Jessica Janiuk e6fea458ed docs: release notes for the v20.1.8 release 2025-08-20 14:14:32 +02:00
Kristiyan Kostadinov 7bf4906f27 fix(compiler-cli): account for expression with type arguments during HMR extraction (#63261)
Fixes that the HMR extraction logic didn't accoubnt for expressions with type arguments (e.g. `viewChild('foo', {read: TemplateRef<unknown>})`).

Fixes #63240.

PR Close #63261
2025-08-20 11:31:43 +00:00
Angular Robot 3d7b31c113 build: update dependency playwright-core to v1.55.0 (#63272)
See associated pull request for more information.

PR Close #63272
2025-08-20 11:14:22 +00:00
Angular Robot 086ae5e1b5 build: update all non-major dependencies (#63264)
See associated pull request for more information.

PR Close #63264
2025-08-20 09:53:35 +00:00
ivanwonder eeeaadc7e9 fix(language-service): Support to resolve the re-export component. (#62585)
In the context of TypeScript (TS), a re-exported symbol is considered a distinct symbol.
This means that a developer can choose to import either the re-exported symbol or
the original symbol. However, in the context of Angular, the re-exported symbol
is treated as the same component because it uses the same selector.

This pull request will utilize the most recent re-export component file to
resolve the module specifier.

PR Close #62585
2025-08-20 09:39:56 +00:00
Matthieu Riegler 6a6cb01bb3 docs: update NG_VALIDATORS examples to use forwardRef (#63247)
PR Close #63247
2025-08-20 09:27:20 +00:00
Matthieu Riegler 2aa9775078 docs(docs-infra): remove temporary shiki dts (#63253)
The tooling now supports reading `d.mts` typing files

PR Close #63253
2025-08-20 09:26:17 +00:00
Matthieu Riegler c3c9a9eed3 refactor(devtools): fix renamed function. (#63268)
`getRoots` was renamed `getAppRoots` in a prior commit.

PR Close #63268
2025-08-20 09:24:43 +00:00
Matthieu Riegler 85468ef630 docs: rewording heading for define option (#63009)
This is an attemp to improve search results

PR Close #63009
2025-08-20 09:04:57 +00:00
hawkgs 863401b858 refactor(devtools): add property show graph button (#62853)
Add "Show graph" button to the signal properties in the side pane only for Angular apps. This required storing the signal graph in a separate service.

PR Close #62853
2025-08-20 09:04:24 +00:00
Angular Robot c5c28f9f52 build: update cross-repo angular dependencies (#63263)
See associated pull request for more information.

PR Close #63263
2025-08-20 09:00:56 +00:00
Jessica Janiuk 70afb41f8e fix(core): handle cases where classes added have no animations (#63242)
In the case that someone wants to disable animations via selector specificity, for example by adding an `.animate-disabled` class to a parent node, we need to make sure the animate instructions don't misbehave. Now we detect if animations exist in the provided classes and react accordingly.

fixes: #63161

PR Close #63242
2025-08-20 08:59:03 +00:00
tjshiu 1feadba215 docs: remove redundant Angular docs link in tailwind guide (#63205)
The Tailwind CSS guide already resides within the Angular documentation, making a link to the Angular documentation redundant. This commit removes the unnecessary link.

PR Close #63205
2025-08-20 08:30:33 +00:00
tjshiu cf0ae2ec45 docs: update tailwind guide and navigation (#63205)
PR Close #63205
2025-08-20 08:30:33 +00:00
tjshiu b0e2cdd470 docs: add guide for using Tailwind CSS (#63205)
Adds a new guide that explains how to set up and use Tailwind CSS in an Angular project. This guide covers installation, configuration, and provides a basic usage example.

PR Close #63205
2025-08-20 08:30:33 +00:00
Angular Robot c8f61d295a build: update pnpm to v10.15.0 (#63257)
See associated pull request for more information.

PR Close #63257
2025-08-20 08:28:54 +00:00
Joey Perrott 718bfd2fb7 build: move from using WORKSPACE to MODULE.bazel (#63246)
Update to use MODULE.bazel

PR Close #63246
2025-08-20 08:26:17 +00:00
cexbrayat bf9db2897e docs: animationsEnabled defaults to false (#63262)
PR Close #63262
2025-08-20 08:25:26 +00:00
Angular Robot 8a6cc39aec build: update all non-major dependencies (#63256)
See associated pull request for more information.

PR Close #63256
2025-08-20 08:21:30 +00:00
Angular Robot b7f2a8b180 build: update cross-repo angular dependencies (#63243)
See associated pull request for more information.

PR Close #63243
2025-08-19 15:57:06 +00:00
Julien Zapata Duque 72ae1064fe docs: use correct closing quote in input and model import usage notes (#63237)
PR Close #63237
2025-08-19 12:33:22 +00:00
Angular Robot 942517966b build: update dependency shiki to v3.10.0 (#63235)
See associated pull request for more information.

PR Close #63235
2025-08-19 11:15:29 +00:00
Shuaib Hasan Akib 6712456847 refactor(core): update NG0303 error message (#63222)
Ensure consistency in error message wording by aligning the NG0303
error with other Angular error strings. This improves clarity and
maintains a uniform developer experience

PR Close #63222
2025-08-19 08:25:49 +00:00
Angular Robot 101f072b74 build: update dependency mermaid to v11.10.0 (#63234)
See associated pull request for more information.

PR Close #63234
2025-08-19 08:21:55 +00:00
Angular Robot 44b94b1564 docs: update Angular CLI help (#63225)
Updated Angular CLI help contents.

PR Close #63225
2025-08-19 08:21:25 +00:00
Angular Robot d5a337dee1 build: update github/codeql-action action to v3.29.10 (#63230)
See associated pull request for more information.

PR Close #63230
2025-08-19 08:05:06 +00:00
Angular Robot f7de67ba75 build: update dependency preact to v10.27.1 (#63229)
See associated pull request for more information.

PR Close #63229
2025-08-19 08:03:39 +00:00
Avetik Harutyunyan f50fa15fa3 docs: fix typo in SSR section (#63224)
PR Close #63224
2025-08-19 08:01:27 +00:00
Matthieu Riegler 78f3d849ba docs: update version compatiblity. (#63223)
TS 5.9 support landed with #62939

PR Close #63223
2025-08-19 08:00:54 +00:00
Paweł Kawula c4faee4722 docs: fixed mismatch between supported node versions (#63218)
node versions listed here https://angular.dev/reference/versions
and minimal listed in installation.md are different

PR Close #63218
2025-08-19 07:59:21 +00:00
Matthieu Riegler 9b539a18ba docs(docs-infra): lift circular imports (#63186)
This commit also adds adev on the cyclic import check.

PR Close #63186
2025-08-19 07:58:45 +00:00
Jessica Janiuk cab3adfdd1 fix(compiler): fixes animation event host bindings not firing (#63217)
Host bindings for `(animate.enter)` and `(animate.leave)` were not firing properly. This fixes the compiler ingest to make sure they do fire.

fixes: #63199

PR Close #63217
2025-08-18 15:56:49 +00:00
AleksanderBodurri 5115050928 fix(devtools): DOM traversal bug (#62719)
Previously, Angular devtools would mistakenly traverse the same DOM elements multiple times while doing traversal for the component tree explorer. This error case would occur when more than 1 Angular application root component was present on the same page and in distinct DOM branches.

Some example cases that did work previously:

```html
<app-root>
...
</app-root>
```

```html
<app-root>
...
<app-root-2></app-root-2>
...
</app-root>
```

An example of where it would enter the irregular behaviour

```html
<app-root>
...
</app-root>
<app-root-2>
...
</app-root-2>
```

Now, we properly ignore duplicate DOM paths when looking for application and non-application root component to begin the Angular DevTools component discovery logic.

PR Close #62719
2025-08-18 15:43:09 +00:00
Angular Robot d0cf624305 build: update cross-repo angular dependencies (#63220)
See associated pull request for more information.

PR Close #63220
2025-08-18 15:21:24 +00:00
Joey Perrott 1aa0a8800c build: update the failure message with the correct command (#63219)
Update the failure message for compliance tests to use the correct command for updating the goldens

PR Close #63219
2025-08-18 15:08:56 +00:00
Jessica Janiuk a7cfb42c03 fix(core): ensure animate events do not have duplicate elements (#63216)
This applies the same fix that fixed the class version to the event binding version. It prevents duplicate elements from being on screen when animations have been toggled too fast.

fixes: #63127

PR Close #63216
2025-08-18 12:42:16 +00:00
Paul Gschwendtner 6c8d000016 ci: mark myself as unavailable during OOO (#63214)
Marks myself as unavailable during OOO to not block reviews :)

PR Close #63214
2025-08-18 12:53:19 +02:00
Alan Agius 494385cac0 fix(docs-infra): allow wrapping of types-and-default CLI options (#63211)
This change fixes an issue where long lists of enum values would display on a single line, running off the screen, especially on mobile devices.

PR Close #63211
2025-08-18 12:52:03 +02:00
Alan Agius 2c34e37df9 fix(docs-infra): add spacing between Alias and Value (#63211)
Prior to this change there was noi spacing between the Alias and Value

PR Close #63211
2025-08-18 12:52:03 +02:00
Alan Agius 1714e9ea0e fix(docs-infra): display value type in CLI pages (#63211)
The value type was not being displayed when a value had an enum, which was misleading. This change ensures the value type is always shown, so users know whether to expect a single value or an array of values.

PR Close #63211
2025-08-18 12:52:03 +02:00
Angular Robot 032017174e build: lock file maintenance (#63209)
See associated pull request for more information.

PR Close #63209
2025-08-18 12:50:49 +02:00
Walter Breakell ddee59f58c docs: fix grammatical mistake in installation guide (#63202)
PR Close #63202
2025-08-18 12:50:00 +02:00
cexbrayat e9b2fe7ce5 refactor(core): improve animation instruction robustness and maintainability (#63163)
This commit extracts helper functions to reduce code duplication across animation instructions and adds early return when animations are disabled.

PR Close #63163
2025-08-18 12:49:17 +02:00
Matthieu Riegler ab067a3d2e docs(docs-infra): remove @adev/constant path (#63213)
PR Close #63213
2025-08-18 10:06:23 +02:00
Alan Agius 856c5f02c5 build: remove extra comma in JSON (#63212)
This fixes CI which is currently broken.

PR Close #63212
2025-08-18 09:44:00 +02:00
Matthieu Riegler ff01e33d69 docs: revert remove of build-and-link (#63187)
This works again since angular/dev-infra#2922 landed

PR Close #63187
2025-08-18 09:14:36 +02:00
Angular Robot a4e27e9a03 build: update cross-repo angular dependencies (#63190)
See associated pull request for more information.

PR Close #63190
2025-08-18 09:13:52 +02:00
Angular Robot f54fdc5f76 docs: update Angular CLI help (#63194)
Updated Angular CLI help contents.

PR Close #63194
2025-08-18 09:10:25 +02:00
Gerome Grignon e6029bcf2c docs(): remove double parenthesis (#63196)
PR Close #63196
2025-08-18 09:09:50 +02:00
Shuaib Hasan Akib 4787eced1b docs(docs-infra): add paths for constants and missing link (#63197)
PR Close #63197
2025-08-18 09:08:59 +02:00
Angular Robot cdafe8b01e build: update all non-major dependencies (#63203)
See associated pull request for more information.

PR Close #63203
2025-08-18 09:08:22 +02:00
Alan Agius d0d6079f54 refactor: remove version 20 migrations (#63207)
This commit remove the non optional migrations for version 20 as these have already been executed.

PR Close #63207
2025-08-18 09:06:51 +02:00
Shuaib Hasan Akib 3f88fbdfa7 docs(docs-infra): replace deprecated router method (#63183)
PR Close #63183
2025-08-15 13:50:57 +02:00
Angular Robot abfd7783b0 build: update dependency @codemirror/language to v6.11.3 (#63184)
See associated pull request for more information.

PR Close #63184
2025-08-15 13:50:17 +02:00
Shuaib Hasan Akib 6f91972ae4 docs(docs-infra): replace Input by signal one (#63169)
PR Close #63169
2025-08-15 13:42:39 +02:00
Cheng-Hsuan Tsai 0f17623398 docs(docs-infra): add dark mode to example preview (#63171)
PR Close #63171
2025-08-15 13:41:08 +02:00
cexbrayat d3a0c2559a docs: add --yes option to mcp commands (#63173)
This makes it consistent with the message output by the CLI in v20.2 (see https://github.com/angular/angular-cli/commit/8b4de57af1)

PR Close #63173
2025-08-15 12:32:28 +02:00
Angular Robot 9a59f7613c build: update all non-major dependencies (#63181)
See associated pull request for more information.

PR Close #63181
2025-08-15 12:31:24 +02:00
Angular Robot 47b09f8f18 build: update cross-repo angular dependencies (#63178)
See associated pull request for more information.

PR Close #63178
2025-08-15 11:40:20 +02:00
Kristiyan Kostadinov 5b3933f1ae fix(compiler): error when ng-content fallback has translated children (#63156)
Fixes that the pipeline wasn't processing the fallback content of `ng-content` for i18n which resulted in a compiler error further down the line.

Fixes #63065.

PR Close #63156
2025-08-15 09:47:17 +02:00
Kristiyan Kostadinov 9ac638548f fix(compiler): incorrect source span for expression AST inside template attribute (#63175)
Similar fix as #63082, but for template attributes. The root cause is the same where we should be using `fullStart` instead of `start` in order to account for whitespaces being skipped.

Fixes #63157.

PR Close #63175
2025-08-15 09:44:35 +02:00
Alan Agius e7a3452852 build: bump @angular/ssr to 20.2.0-rc.1 (#63176)
This contains the fix for the router `lastSuccessfulNavigation` breaking change

https://github.com/angular/angular-cli/pull/30923

PR Close #63176
2025-08-15 09:44:00 +02:00
Alan Agius fa40feee1d Revert "ci: redirect adev to index.csr.html (#63168)" (#63177)
This reverts commit 5129daed1b.

PR Close #63177
2025-08-15 09:43:14 +02:00
Matthieu Riegler 5129daed1b ci: redirect adev to index.csr.html (#63168)
The build doesn't produce an `index.html`

PR Close #63168
2025-08-14 21:15:47 +00:00
Angular Robot d733c69ce9 build: update all non-major dependencies (#62935)
See associated pull request for more information.

PR Close #62935
2025-08-14 22:09:29 +02:00
Charles Lyding 9c0ad1b434 docs: update MCP server documentation for 20.2 (#63141)
This commit updates the MCP server documentation with the following changes:

- Updates the description of the `ng mcp` command behavior.
- Adds a configuration example for the Gemini CLI.
- Adds a new section for command options, including `--read-only` and `--local-only`.
- Alphabetizes the IDE configuration sections for better readability.
- Alphabetizes the "Available Tools" table.

PR Close #63141
2025-08-14 22:07:55 +02:00
Angular Robot fad3d8e3a5 build: update cross-repo angular dependencies (#63149)
See associated pull request for more information.

PR Close #63149
2025-08-14 22:05:48 +02:00
Cheng-Hsuan Tsai b9a134b8eb docs(docs-infra): fix codeblock styles (#63153)
PR Close #63153
2025-08-14 22:04:39 +02:00
Shuaib Hasan Akib 54485f7f4b docs(docs-infra): enhance method name following the guideline (#63164)
PR Close #63164
2025-08-14 22:03:16 +02:00
Joey Perrott bf2ba7a059 build: run integration tests using remote execution (#63118)
With the change to size tracking integration test can now be executed on our RBE platform

PR Close #63118
2025-08-14 22:02:32 +02:00
Ben Hong dc8f11b4fd docs: add rendering strategies guide for router (#62859)
PR Close #62859
2025-08-14 22:01:56 +02:00
Matthieu Riegler 4bed062bc9 feat(http): Provide http services in root (#56212)
The changes introduced in this commit allows to use the HttpClient without the provider function.

PR Close #56212
2025-08-14 13:04:35 +02:00
Jonathan Meier be7110342b fix(compiler-cli): disallow compiling with the emitDeclarationOnly TS compiler option enabled (#61609)
Running the Angular compiler with declaration-only emission is dangerous
because Angular does not yet support this mode as it relies on the Ivy
compilation which does not run in this mode

In the best case, everything works fine as incidentally there's no
difference in the emitted type declarations (e.g. this is the case for
TS files containing no Angular annotations or only `@Injectable`
annotations).

In the worst case, compilation silently fails in that the compilation
succeeds but the resulting type declarations are missing the Angular
type information and are therefore incomplete. This happens for all
components, directives and modules.

BREAKING CHANGE: The Angular compiler now produces an error when the
the `emitDeclarationOnly` TS compiler option is enabled as this mode is
not supported.

PR Close #61609
2025-08-14 13:03:54 +02:00
Matthieu Riegler 93c735cae7 docs: fix edit links for block/element api entries (#62766)
PR Close #62766
2025-08-14 13:03:00 +02:00
Matthieu Riegler c8349ef2f6 docs: update testing scenarios and remove imports. (#63076)
With standalone, `imports` are not necessary anymore when configuring the Testing module.

Also
fixes #58073

PR Close #63076
2025-08-14 13:02:17 +02:00
Joey Perrott c35c0c7f2f build: update to bazel 7.6.0 (#63096)
Update to later version of bazel

PR Close #63096
2025-08-14 13:01:30 +02:00
Matthieu Riegler a59c3fe74e build: remove patch-package dependency (#63126)
This dependency is no longer necessary as `pnpm` provides the same natively

PR Close #63126
2025-08-14 12:59:46 +02:00
Andrew Scott e7cc89e3b0 docs: release notes for the v20.2.0-rc.1 release 2025-08-13 13:28:46 -07:00
Andrew Scott 74e1796a1e docs: release notes for the v20.1.7 release 2025-08-13 13:18:56 -07:00
Matthieu Riegler 4e0fc81491 feat(router): convert lastSuccessfulNavigation to signal (#63057)
This commit also include an `ng update` migration to ensure `lastSuccessfulNavigation` is invoked.

BREAKING CHANGE: `lastSuccessfulNavigation` is now a signal and needs to be invoked

PR Close #63057
2025-08-13 11:29:01 -07:00
Jeremy Elbourn 55cd8c2d73 docs: add rxjs-interop section for rxResource (#63125)
This commit adds brief documentation for `rxResource` to the "Using
Angular with RxJS" guide. The only available documentation for
`rxResource` today is the API reference, which lacks any code examples.

PR Close #63125
2025-08-13 09:29:33 -07:00
hawkgs 7ecf13db06 refactor(devtools): improve router tree search UX (#63107)
Improve the search functionality of the router tree by making the results more distinguishable.

PR Close #63107
2025-08-13 09:27:26 -07:00
Angular Robot 071ab50c7c docs: update Angular CLI help (#63138)
Updated Angular CLI help contents.

PR Close #63138
2025-08-13 09:25:37 -07:00
Angular Robot 21b0fd3d13 build: update cross-repo angular dependencies (#62952)
See associated pull request for more information.

PR Close #62952
2025-08-13 09:21:28 -07:00
cexbrayat 1269d2e4f2 docs: update best-practices (#63132)
This removes the common pitfall for if blocks in the best practices, as this is no longer true in Angular v20.2, see angular/angular@a409534

PR Close #63132
2025-08-13 09:20:30 -07:00
Alan Agius 32ba8b5025 docs: add link to ai-config command (#63139)
This adds a link to the new command.

PR Close #63139
2025-08-13 09:14:18 -07:00
Angular Robot 91b3466e97 build: update actions/checkout action to v5 (#63114)
See associated pull request for more information.

PR Close #63114
2025-08-12 19:08:49 -07:00
Matthieu Riegler 657061e528 build: patch @angular/build to allow fw/cli mismatch (#63098)
This will allow us to build adev while the CLI and the FW major versions are mismatched.
we can remove this patch once the CLI has published a v21 pre-release (or a flag to disable that error).

PR Close #63098
2025-08-12 18:46:22 -07:00
Andrew Scott aaf053c288 build: update main branch to target 21 (#63098)
main branch should go to 21 not 20.3

PR Close #63098
2025-08-12 18:46:22 -07:00
Jeremy Elbourn 4d9385b5fd docs: add topic for takeUntilDestroyed (#63122)
This was missing from the RxJS interop guide. I came across it while
cleaning up some Google-internal docs and realized I had nothing on adev
to which I could link.

PR Close #63122
2025-08-12 18:41:18 -07:00
Angular Robot d7a5eadbfa build: update pnpm to v10 (#63087)
See associated pull request for more information.

PR Close #63087
2025-08-12 16:53:31 -07:00
Paul Gschwendtner ea78278635 refactor(compiler-cli): ensure JIT transforms with queries work with closure property renaming (#63123)
This map for the JIT transforms accidentally is property-renamed,
breaking the lookups below. This commit fixes this.

PR Close #63123
2025-08-12 13:24:09 -07:00
Jeremy Elbourn e64271df92 fix(docs-infra): put content in <main> element (#63121)
This fix updates the adev `DocViewer` component to support rendering with the `main[docsViewer` selector so that the primary content for the page is inside of a `<main>` element (without introducing an extra DOM element).

PR Close #63121
2025-08-12 11:05:13 -07:00
ivanwonder b695ff02cb feat(language-service): support auto-import for attribute completions (#62797)
Add logic to provide code actions for auto-importing directives that
are out of scope.

PR Close #62797
2025-08-12 10:57:08 -07:00
Angular Robot 6c51c29925 build: lock file maintenance (#62977)
See associated pull request for more information.

PR Close #62977
2025-08-12 10:05:28 -07:00
Angular Robot 11b527cecd build: update scorecard action dependencies (#63086)
See associated pull request for more information.

PR Close #63086
2025-08-12 09:58:11 -07:00
Angular Robot 01fb2b1b80 build: update actions/checkout action to v5 (#63102)
See associated pull request for more information.

PR Close #63102
2025-08-12 09:55:54 -07:00
Matthieu Riegler 09df37507f docs: add missing supported != operator (#63108)
fixes 63103

PR Close #63108
2025-08-12 09:39:05 -07:00
Alan Agius 54fe7ca055 build: use link: instead of file: (#63111)
When using `file:` renovate updates fails due to ` ERR_PNPM_LINKED_PKG_DIR_NOT_FOUND ` this is due to a different behaviour between `link:` amd `file:`. `link:` however will not fail when the directory does not exist.

PR Close #63111
2025-08-12 09:37:54 -07:00
Alan Agius 5d9f124876 build: migrate config renovate.json (#63110)
Closes #62955 as a pr takeover

PR Close #63110
2025-08-12 09:37:04 -07:00
Alan Agius 1846874f1f ci: correctly configure ignored filenames (#63105)
Previously, the path did not match a file.

PR Close #63105
2025-08-12 10:02:00 +02:00
Alan Agius 434ff7f1a0 build: resolve pnpm workspace dependency on compiler-cli (#63105)
The `pnpm install` command was failing for the `packages/core/test/bundling` project with the error:
`ERR_PNPM_NO_MATCHING_VERSION No matching version found for @angular/compiler-cli@0.0.0-PLACEHOLDER`

This happenes only in renovate updates.

PR Close #63105
2025-08-12 10:02:00 +02:00
Alan Agius 91f8963d86 build: fix ERR_PNPM_LINKED_PKG_DIR_NOT_FOUND for typings tests (#63105)
During `pnpm install` in a monorepo setup, the `packages/zone.js/test/typings` project would fail with the error: `ERR_PNPM_LINKED_PKG_DIR_NOT_FOUND: Could not install from "/.../node_modules/typescript" as it does not exist.`

PR Close #63105
2025-08-12 10:01:59 +02:00
Alan Agius a786bb6f4b build: remove redundant yarn.lock files (#63105)
These are now managed by pnpm.

PR Close #63105
2025-08-12 10:01:59 +02:00
Matthieu Riegler 9aef481172 refactor(zone.js): remove unused jasmine globalerror monkey patching. (#63077)
This is for testing purposes for now. See discussion on the related issue.

fixes #63072

PR Close #63077
2025-08-11 16:41:09 -07:00
Matthieu Riegler f9a38a4b73 refactor(core): remove temporary resource setter function. (#63097)
Now that G3 has been fully migrated to the new throwing behavior, we don't need that setter anymore.

PR Close #63097
2025-08-11 15:43:45 -07:00
hawkgs d47ea29b89 refactor(devtools): keep TreeVisualizer snapped node on focus (#62982)
Keep `TreeVisualizer` snapped node on focus when the container/split is being resized.

PR Close #62982
2025-08-11 12:26:31 -07:00
Matthieu Riegler baa31fb1a1 docs: remove router testing from the testing scenarios guide (#63078)
This commit also adds the router testing guide to the testing section

PR Close #63078
2025-08-11 12:15:39 -07:00
Kristiyan Kostadinov d17555a7c6 fix(compiler): incorrect spans for AST inside input value with leading space (#63082)
When parsing expressions inside a bound attribute, we offset all of its spans by an `absoluteOffset` in order to get the right spans in the source file. The offset was incorrect when parsing an attribute with leading spaces during the construction of the Ivy AST, because of the combination of:
1. We were setting the offset by looking at `valueSpan.start`.
2. The Ivy parser sets `leadingTriviaChars: [' ', '\n']` which means that spaces and new lines will be ignored in the `sourceSpan.start`.

These changes resolve the issue by using `valueSpan.fullStart` which includes the leading spaces.

Fixes #63069.

PR Close #63082
2025-08-11 11:57:05 -07:00
Alan Agius 06f5879e42 ci: several fixes for renovate (#63083)
This commit contains several fixes for renovate to work properly with `pnpm`

PR Close #63083
2025-08-11 11:03:28 -07:00
Joey Perrott c4dcfdf644 build: update to the latest version of devinfra and rename npm2 workspace (#63093)
Rename the npm2 workspace to npm and use the latest version of devinfra which drops rules_nodejs

PR Close #63093
2025-08-11 10:35:32 -07:00
Kristiyan Kostadinov 57184d0895 docs: release notes for the v20.2.0-rc.0 release 2025-08-11 10:42:32 +02:00
Kristiyan Kostadinov 2e4db98877 release: bump the next branch to v20.3.0-next.0 2025-08-11 10:42:32 +02:00
Kristiyan Kostadinov 660444fbf2 fix(router): attempt to resolve component resources in JIT mode (#63062)
In #62758 we started loading the component resources during bootstrap in JIT mode to ensure that they're in place by the time we create the component. This won't work for lazy-loaded components in the router, because they don't exist at bootstrap time.

These changes add similar logic when the router loads a component.

PR Close #63062
2025-08-08 14:18:21 -07:00
SkyZeroZx 3b214d2040 feat(service-worker): Logs unhandled promise rejections in service worker (#63059)
Adds handling and logging for unhandled promise rejections to improve debugging and prevent silent failures. Updates tests and test harness to verify logging of rejection reasons

PR Close #63059
2025-08-08 11:07:19 -07:00
Shuaib Hasan Akib efb2726ffc docs(docs-infra): add next page reference (#62566)
PR Close #62566
2025-08-08 11:06:33 -07:00
Jessica Janiuk 6a1184600c fix(core): prevents duplicate nodes when @if toggles with leave animations (#63048)
In the case that a leave animation is running and someone toggles an `@if`, a new node would be inserted. For a brief moment, there may be two of the same nodes visible at once. While this is expected with native CSS, it's not ideal. Instead, we retain a reference to the leaving element and can remove that node when the new node is entering.

fixes: #63020

PR Close #63048
2025-08-08 10:02:35 -07:00
hawkgs c0bfe23bc9 refactor(devtools): save theme preference (#63050)
Save the theme preference in the settings store.

PR Close #63050
2025-08-08 08:58:14 -07:00
Matthieu Riegler 85d51a3215 fix(core): destroying the effect on afterRenderEffect (#63001)
Prior to this commit, the effect node wasn't destroyed.

fixes #62980

PR Close #63001
2025-08-08 08:46:46 -07:00
Kristiyan Kostadinov a409534d6c feat(core): support as aliases on else if blocks (#63047)
Expands support for the `as` keyword to `@else if` blocks. Previously it was only allowed on `@if`.

PR Close #63047
2025-08-08 08:43:00 -07:00
Kristiyan Kostadinov c77e51930d fix(compiler-cli): error when type checking host bindings of generic directive (#63061)
Fixes that the compiler was throwing an error if type checking of host bindings is enabled for a generic directive. The problem was that we were always using the `TcbNonGenericDirectiveTypeOp`.

Fixes #63052.

PR Close #63061
2025-08-08 08:42:23 -07:00
Andrew Scott 0a827f9284 refactor(zone.js): Add internal implementation for auto ticking fakeAsync (#62135)
Benefits of auto-ticking mock clocks have been described in other PRs,
such as https://github.com/jasmine/jasmine/pull/2042 and
https://github.com/sinonjs/fake-timers/pull/509. In short, `fakeAsync`
cannot work when some tasks are required to be truly async, such as XHRs
or observers like ResizeObserver. In addition, auto ticking mock clocks
can be applied to tests without the tests then needing to update
everything to manually flush timers.

PR Close #62135
2025-08-08 08:39:24 -07:00
Andrew Scott 124dcc0a1f release: cut the v20.2.0-next.6 release 2025-08-07 15:45:04 -07:00
Andrew Scott 812463c563 fix(compiler-cli): Ignore diagnostics on ngTemplateContextGuard lines in TCB (#63054)
Deprecated diagnostics can appear on the context guard becaues the
directive itself may be deprecated.

For example, context guards look like `if (i1.NgForOf.ngTemplateContextGuard(_t8, _t9) /*331,378*/) {...}`
and typescript will report the deprecation on the whole element, from
start to end tag, because the span for that node includes it.

fixes https://github.com/angular/vscode-ng-language-service/issues/2203

PR Close #63054
2025-08-07 15:38:38 -07:00
Andrew Scott 45b030b5ce fix(compiler-cli): prevent dom event assertion in TCB generation on older angular versions (#63053)
This fixes an issue caused by
https://github.com/angular/angular/pull/62648 for older versions of
Angular when the newest version of the language service is used. This
prevents the TCB from attempting to use the assertType when it does not
exist.

fixes #63046

PR Close #63053
2025-08-07 15:37:54 -07:00
Joey Perrott 0d12eac34c build: remove unused old toolchain dependencies (#63039)
Update to latest version of dev-infra and complete the removal of rules_nodejs from the repo

PR Close #63039
2025-08-07 09:31:45 -07:00
Doug Parker e524b333a3 docs(devtools): update pnpm install command (#63040)
The `install` subcommand is necessary for `--frozen-lockfile` to work.

PR Close #63040
2025-08-07 09:11:22 -07:00
Cheng-Hsuan Tsai 621d077746 docs(docs-infra): fix inconsistent codeblock styles (#63041)
PR Close #63041
2025-08-07 09:09:21 -07:00
Doug Parker 3a320bdec9 release: bump Angular DevTools version to 1.0.42 (#63036)
PR Close #63036
2025-08-06 14:56:26 -07:00
Andrew Scott 90b0227407 release: cut the v20.2.0-next.5 release 2025-08-06 12:11:18 -07:00
Andrew Scott 9365a7fde3 docs: release notes for the v20.1.6 release 2025-08-06 12:05:20 -07:00
Joey Perrott ecc86e2986 build: explicitly include types for locales in @angular/common/locales (#63030)
Include the d.ts files for each local in the @angular/common/locales files

PR Close #63030
2025-08-06 11:44:33 -07:00
Matthieu Riegler 687c374826 feat(router): add a currentNavigation signal to the Router service. (#63011)
This new signal property is convenient to derive a `isNavigating` state.

`isNavigating = computed(() => !!this.router.currentNavigation())`

DEPRECATED: The Router.getCurrentNavigation method is deprecated. Use the Router.currentNavigation signal instead.

fixes #62958

PR Close #63011
2025-08-06 09:54:53 -07:00
Ryan Bendel d24d5742db feat(platform-browser): Add IsolatedShadowDom encapsulation method (#62723)
IsolatedShadowDom encapsulation fixes style leakage in Shadowdom encapsulation by removing sharedstyleshost from dom-renderer IsolatedShadowdom class. Updates docs.

PR Close #62723
2025-08-06 16:48:37 +02:00
Ben Hong fd5fcf3887 docs: add dedicated router testing guide (#62445)
PR Close #62445
2025-08-06 16:47:21 +02:00
ivanwonder b78de31c94 refactor(language-service): handle the undefined value of a symbol for a type (#63002)
using the `getSymbol` instead of the `type.symbol`, for the primitive type,
the `type.symbol` returns the `undefined` value. The return type of `getSymbol`
includes `undefined`, while `type.symbol` does not.

For example:

```ts
class BarComponent {
   /**
   * @deprecated
   */
  name = ""
}
```

The type of `name` is `string`, the `type.symbol` for the `string`
returns `undefined` here.

https://github.com/microsoft/TypeScript/blob/e3ef7ff50db66b6a2af8090f79d9039356ec0096/src/services/types.ts#L111
https://github.com/microsoft/TypeScript/blob/e3ef7ff50db66b6a2af8090f79d9039356ec0096/src/compiler/types.ts#L6445

PR Close #63002
2025-08-06 16:46:40 +02:00
Joey Perrott 40e5fedabf build: correct the snapshot build script now that zone.js does not create a tar file (#63021)
No longer create and copy a tar file for zone.js snapshot builds.

PR Close #63021
2025-08-06 16:45:36 +02:00
Kristiyan Kostadinov c6b71be4e1 release: cut the v20.2.0-next.4 release 2025-08-06 16:43:20 +02:00
Kristiyan Kostadinov eb4ae827a2 docs: release notes for the v20.1.5 release 2025-08-06 16:39:53 +02:00
hawkgs 533f8e48fd refactor(devtools): save transfer state tab state in the settings store (#62429)
Save the Transfer State tab state in the Settings store.

PR Close #62429
2025-08-06 15:12:00 +02:00
hawkgs b66ad99020 refactor(devtools): implement a migration mechanism for the settings store (#62429)
Implement a simple mechanism that allows settings store data to be migrated, if needed.

PR Close #62429
2025-08-06 15:12:00 +02:00
hawkgs cb8d30a293 refactor(devtools): save user settings in the settings store (#62429)
Save user settings in the `SettingsStore`.

NOTE: The theme is omitted since the change is not trivial and it will be handled in a separate PR.

PR Close #62429
2025-08-06 15:12:00 +02:00
hawkgs 1cdb54559d refactor(devtools): implement settings store (#62429)
Introduces a set of services tasked with saving user settings.

PR Close #62429
2025-08-06 15:12:00 +02:00
robertIsaac 986b0b1fc0 docs: update binding.md to use signals (#62606)
PR Close #62606
2025-08-06 15:11:14 +02:00
SkyZeroZx 5220b51e75 feat(service-worker): Adds for type in provideServiceWorker (#62831)
Enables specifying the script type ('classic' or 'module') when registering Service Workers, improving compatibility with ES module features.

PR Close #62831
2025-08-06 15:10:27 +02:00
SkyZeroZx 700225a446 refactor(service-worker): improve localhost detection in scheduleInitialization (#62861)
Replaces ad hoc localhost check with a dedicated method using a regular expression for more reliable detection

PR Close #62861
2025-08-06 15:09:56 +02:00
Amila Welihinda ec8cd3e189 refactor(animations): optimize resolveTimeExpression (#62927)
This moves a regexp expression into a const to optimize performance.

PR Close #62927
2025-08-06 15:09:18 +02:00
Matthieu Riegler 9a76a6540d refactor(devtools): add support for afterRenderEffect on the signal graph (#63005)
Prior to this change, the `afterRenderEffect` phases were not represented in the signal graph.

PR Close #63005
2025-08-06 15:08:33 +02:00
Bjorn 'Bjeaurn c353497a01 feat(forms): add support for pushing an array of controls to formarray (#57102)
Enables users to add an array of FormControls to a FormArray using its existing .push() method,
instead of pushing each new FormControl one by one triggering events along the way.

PR Close #57102
2025-08-06 11:20:18 +02:00
Andrew Scott 01fec33556 docs: Deprecate BootstrapOptions on bootstrapModule (#62690)
This deprecates `BootstrapOptions` since `NgZone` can now be configured
in the providers. This is a necessary step because when zoneless becomes
the default, developers will have to add ZoneJS via
`provideZoneChangeDetection` and that will override anything defined in
`BootstrapOptions`.

PR Close #62690
2025-08-06 11:19:45 +02:00
Milo b3e490437c refactor(devtools): enable view source for template effects (#62692)
Use inspect(class instance.constructor) to jump to the source of
components when trying to inspect template effects

PR Close #62692
2025-08-06 11:19:14 +02:00
Ben Hong 03ca484515 docs: update router transition animation guide (#62858)
PR Close #62858
2025-08-06 11:18:38 +02:00
Jessica Janiuk ebd622b344 fix(core): fixes empty animations when recalculating styles (#63007)
Any time something causes styles to recalculate,
`element.getAnimations()` will be empty. This updates `animate.enter`
and `animate.leave` to rely on `getComputedStyles` to determine the
longest animation instead.

fixes: #63006

PR Close #63007
2025-08-06 11:17:30 +02:00
Joey Perrott 8a9206017e ci: use pnpm silent mode for perf action list job (#63014)
Use silent mode for the perf action list creation job

PR Close #63014
2025-08-05 19:17:34 +00:00
Joey Perrott fa8d8b8396 build: migrate all npm packages to use new rules_js based npm_package rule (#62954)
Use a common rule for all npm_packages

PR Close #62954
2025-08-05 19:08:45 +00:00
Joey Perrott b118f7677a build: update diff-release-package tooling (#62954)
Update the diff release package tooling to better handle failures

PR Close #62954
2025-08-05 19:08:45 +00:00
SkyZeroZx 52b8e07d6e feat(platform-browser): Warns on conflicting hydration and blocking navigation (#62963)
Adds an internal token to detect when both hydration and blocking initial navigation are enabled. Logs a warning during app initialization if this unsupported combination is found, helping developers avoid misconfiguration and potential runtime issues.

PR Close #62963
2025-08-05 18:16:10 +02:00
Jeremy Elbourn 8f414b2236 docs: add context7.json config (#63000)
Context 7 is a popular tool for providing context to LLM-based coding tools. This config file tells Context 7 which parts of the repo are relevant for these LLM-based dev tools. See https://github.com/upstash/context7/blob/master/docs/adding-projects.md.

PR Close #63000
2025-08-05 18:15:38 +02:00
Matthieu Riegler 4b183c7708 refactor(devtools): add explicit error message when ng is not available (#63008)
This makes the error more explicit in the console.

PR Close #63008
2025-08-05 18:14:12 +02:00
Kristiyan Kostadinov ddf779e18f Revert "feat(router): add a currentNavigation signal to the Router service. (#62971)" (#63010)
This reverts commit d00b3fed58.

PR Close #63010
2025-08-05 18:02:56 +02:00
Joey Perrott 5802f8009e build: no longer rely on archive packages for integration tests (#62996)
Now that the packages are avaiable at the base node_modules we can treat local packages as normal packages and not leverage the archive package versions

PR Close #62996
2025-08-05 10:12:06 +02:00
Paul Gschwendtner 648bbb097e fix(core): properly recognize failed fetch responses when loading external resources in JIT (#62992)
Currently when loading external resources in JIT, when `fetch` fails,
the `text` is empty and the component is loading. This hides the actual
underlying fetch error. We should properly detect this and error out.

PR Close #62992
2025-08-05 10:10:56 +02:00
Joey Perrott 2960722951 build: drop usage of pkg_web (#62990)
Drop usages of pkg_web as it comes from our previous toolchain

PR Close #62990
2025-08-05 10:08:47 +02:00
Matthieu Riegler d9035b199c docs: Update best-practices (#62988)
From the latest version we have on the CLI repo.

PR Close #62988
2025-08-05 10:08:07 +02:00
hawkgs 3d9fc3e09c fix(devtools): injector tree root refocus on CD (#62987)
Fixes the unwanted root node refocus on change detection in the Injector Tree visualizations.

PR Close #62987
2025-08-05 10:07:29 +02:00
muhammadali1658 0305dcdfc6 docs: Fix typos in zoneless documentation (#62985)
PR Close #62985
2025-08-05 10:07:00 +02:00
Jessica Janiuk de3a0c5cf3 fix(core): Fix animate.enter class removal when composing classes (#62981)
In the case when composing animation classes with `animate.enter` on the
element itself and also with host bindings, the removal would only
have context for one of the classes added: the last one added. This
allows for tracking of the classes added by `animate.enter` via a
WeakMap so we know the exact classes added and which to remove.

Also shores up the tests to make sure we are fully testing animate.enter.

PR Close #62981
2025-08-05 10:06:28 +02:00
Matthieu Riegler d00b3fed58 feat(router): add a currentNavigation signal to the Router service. (#62971)
This new signal property is convenient to derive a `isNavigating` state.

`isNavigating = computed(() => !!this.router.currentNavigation())`

DEPRECATED: The Router.getCurrentNavigation method is deprecated. Use the Router.currentNavigation signal instead.

fixes #62958

PR Close #62971
2025-08-05 10:05:49 +02:00
Kristiyan Kostadinov fb1fc823c4 fix(compiler-cli): correctly type check host listeners to own outputs (#62965)
Currently the code that type checks host bindings assumes that all listeners are bound to the DOM, however that's not the case since host bindings can also bind to own outputs.

These changes update the TCB to generate the proper code for type checking such outputs.

Fixes #62783.

PR Close #62965
2025-08-05 10:04:25 +02:00
Kristiyan Kostadinov 0950524ed7 refactor(compiler): allow directives to be resolved on host element (#62965)
Allows the target binder to resolve directives set on the host element.

PR Close #62965
2025-08-05 10:04:25 +02:00
Andrew Scott 141bb75ff2 feat(core): Promote zoneless to stable (#62699)
This commit moves zoneless from developer preview to stable and updates the roadmap to indicate it is ready for production use.

PR Close #62699
2025-08-05 10:03:31 +02:00
Jessica Janiuk 6597ac0af7 fix(core): fix support for space separated strings in leave animations (#62979)
Space separated strings, e.g. `class-1 class-2`, should work with both enter and leave animations. `animate.leave` lost that functionality in a refactor. Tests are now added to catch this.

fixes: #62964

PR Close #62979
2025-08-04 12:24:11 +02:00
SkyZeroZx cbd300d9e1 docs: Adds docs on handling redirect info in interceptors (#62968)
PR Close #62968
2025-08-04 11:41:24 +02:00
Matthieu Riegler 9da26addfa docs: disable stackblitz examples (#62972)
This isn't supported ATM.

PR Close #62972
2025-08-04 11:39:38 +02:00
Joey Perrott 7158c23e34 ci: use new version of pnpm-lock.yaml file during renovate (#62957)
Use the newly updated pnpm_lock.yaml file during renovate post upgrade runs

PR Close #62957
2025-08-04 11:39:06 +02:00
Doug Parker 9db1179e21 docs(devtools): fix pnpm install command (#62956)
`--immutable` only works for `yarn`, `pnpm` needs `--frozen-lockfile`.

PR Close #62956
2025-08-04 11:38:38 +02:00
Jessica Janiuk 3e6e1c1f44 docs: Add MAX_ANIMATION_TIMEOUT to the animate docs (#62949)
This adds information about the new `MAX_ANIMATION_TIMEOUT` token used
for configuration the maximum amount of milliseconds Angular will wait
for animations to complete before removing the element.

PR Close #62949
2025-08-01 14:23:49 +00:00
Joey Perrott 8de8dc80e4 build: move to pnpm version 9.15.9 (#62950)
Use pnpm version 9.15.9 to match the rest of the organization

PR Close #62950
2025-08-01 14:22:03 +00:00
Jessica Janiuk 857675fedb refactor(core): this delays removal of stylesheets when the element registry is present (#62943)
When animate.leave is used, stylesheet pruning causes issues. Stylesheets with the appropriate animations get pruned before the animations can run. This will delay the removal in the case that the registry is present.

fixes: #62942

PR Close #62943
2025-08-01 12:54:22 +00:00
Matthieu Riegler a2b498849c build: replace docs script with adev (#62944)
`pnpm docs` is a dedicated command to open a package docs.

PR Close #62944
2025-08-01 12:39:37 +00:00
Matthieu Riegler c34fdd9d8d ci: remove lockfile sync (#62948)
This is no longer necessary

PR Close #62948
2025-08-01 12:36:34 +00:00
Angular Robot 17b6a5be69 build: update pnpm to v10.14.0 (#62938)
See associated pull request for more information.

PR Close #62938
2025-08-01 12:38:43 +02:00
Angular Robot 8c9d0c1078 build: update dependency node to v22.18.0 (#62937)
See associated pull request for more information.

PR Close #62937
2025-08-01 12:37:43 +02:00
Matthieu Riegler 65f587bc5d fix(devtools): Display falsy signal values correctly (#62919)
falsy value would display their preview because of the logical or.

fixes #55727

PR Close #62919
2025-08-01 12:36:45 +02:00
Milo b0f0b6d836 refactor(devtools): update graph effect colors, fix graph animations (#62912)
make effects purple instead of invisible, fix epoch animations for new nodes, and remove graph transitions when switching between two components in the component tree

PR Close #62912
2025-08-01 12:36:09 +02:00
Vincent e5d6fb5825 fix(http): Reset headers, progress, and statusCode when using set() in HttpResource (#62873)
Currently, those values aren't reset, which means they are out of sync with the new value

PR Close #62873
2025-08-01 08:08:52 +00:00
Kristiyan Kostadinov 7836f79d4a build: update to TypeScript 5.9 final (#62939)
Updates the repo to the latest stable version of TypeScript.

PR Close #62939
2025-08-01 08:08:21 +00:00
Jessica Janiuk 455b147488 fix(core): fixes timing issues with enter animations (#62925)
In some patterns, `element.getAnimations()` will be an empty array despite the animation class being present during animation start and the style sheet showing a keyframe animation.
Moving the longest animation check to the end resolves this problem.

fixes: #62923

PR Close #62925
2025-08-01 08:06:34 +00:00
Doug Parker d05138a975 release: bump Angular DevTools version to 1.0.41 (#62932)
PR Close #62932
2025-07-31 15:52:37 -07:00
Joey Perrott 82cc576e6f build: use pnpm as the package manager instead of yarn (#62924)
Use pnpm instead of yarn as the package manager and interaction tool for the repo

PR Close #62924
2025-07-31 22:06:27 +00:00
Angular Robot 892c2d1556 build: update dependency shiki to v3.9.0 (#62920)
See associated pull request for more information.

PR Close #62920
2025-07-31 10:35:44 +00:00
Angular Robot 216caaf5ab build: update cross-repo angular dependencies (#62902)
See associated pull request for more information.

PR Close #62902
2025-07-31 09:52:50 +00:00
SkyZeroZx 8255e0cf15 feat(service-worker): add messageerror event handling and logging (#62834)
Add messageerror event handling and logging to Driver class

PR Close #62834
2025-07-31 09:17:43 +00:00
hawkgs b5fc949840 fix(devtools): MessageBus.on return type (#62898)
It appears that the intent is to return an unlisten function when `on` is called. The message bus implementations indicate that. However, the `MessageBus` abstract class returns `void` instead.

Change to `on: () => void`.

PR Close #62898
2025-07-31 09:16:15 +00:00
Kristiyan Kostadinov b1514d512e fix(migrations): incorrect filtering in inject migration (#62913)
The inject migration wasn't implementing file filtering properly which resulted in it passing an invalid tsconfig path to TypeScript.

Fixes #62866.

PR Close #62913
2025-07-31 09:15:42 +00:00
Joey Perrott cbc258eec8 build: remove ts_project_interop infrastructure (#62908)
Remove the interop macros and final usages

PR Close #62908
2025-07-31 09:12:58 +00:00
Joey Perrott 008ed216d3 build: remove usages of runtime_rnjs_interop (#62908)
Remove all usages of the runtime_rnjs_interop feature

PR Close #62908
2025-07-31 09:12:58 +00:00
Raphaël Balet e0ea8b6089 docs: remove the trailing comma (#62914)
This removes an unnecessary trailing comma in docs

PR Close #62914
2025-07-31 09:12:26 +00:00
Jessica Janiuk 78a6b68578 release: cut the v20.2.0-next.3 release 2025-07-31 11:06:01 +02:00
Jessica Janiuk d08f9cee06 docs: release notes for the v20.1.4 release 2025-07-31 10:40:21 +02:00
Joey Perrott e7d748ebbd build: remove @bazel/esbuild (#62906)
Remove @bazel/esbuild as its no longer used

PR Close #62906
2025-07-30 17:36:43 +00:00
Joey Perrott 9ae1803acf build: migrate @angular/upgrade examples tests to new esbuild (#62906)
Migrate to the new esbuild

PR Close #62906
2025-07-30 17:36:43 +00:00
Joey Perrott 335cdc7b37 build: update to latest devinfra in workspace (#62901)
Update to the latest devinfra in workspace to correct goldens update error

PR Close #62901
2025-07-30 16:19:36 +00:00
Joey Perrott ecb50ad7ed test(language-service): update language-service legacy tests (#62900)
Update the language-service legacy tests to use new toolchain as basis for tests

PR Close #62900
2025-07-30 15:54:59 +00:00
SkyZeroZx 245494ad29 fix(http): add missing http options allowed in fetch API (#62881)
The addBody function was not preserving all fetch API options like integrity and referrer when creating request options for POST/PUT/PATCH requests. This caused these options to be stripped out during request construction.

PR Close #62881
2025-07-30 14:07:41 +00:00
Jessica Janiuk d23c5e4670 refactor(core): Tiny animation optimization (#62896)
This removes one redundant check to reduce code size.

PR Close #62896
2025-07-30 13:56:46 +00:00
Jessica Janiuk 320de4e96d refactor(core): deprecate animations field on component interface (#62895)
This deprecates the animations field on the component decorator in favor of animate.enter and leave.

DEPRECATED: @angular/animations

PR Close #62895
2025-07-30 10:35:29 +00:00
Matthieu Riegler 9d05a8a095 docs(docs-infra): increase until timeout (#62894)
Those tests have been flaky recently, let's try increasing the timeout

PR Close #62894
2025-07-30 10:01:04 +00:00
Jessica Janiuk 7f5d7c9558 docs: add updated label to animations (#62893)
This just adds the updated status flag to the left nav for animations.

PR Close #62893
2025-07-30 09:41:54 +00:00
Angular Robot 6ad01e6224 build: update all non-major dependencies (#62890)
See associated pull request for more information.

PR Close #62890
2025-07-30 09:24:49 +00:00
Matthieu Riegler 1ab3b5b21b refactor(core): add private resource error helper function for g3 migration (#62840)
This function is intented to be temporary to help migrate G3 code to the new throwing behavior.

PR Close #62840
2025-07-30 09:23:11 +00:00
Angular Robot 5f7cc12533 build: update github/codeql-action action to v3.29.5 (#62889)
See associated pull request for more information.

PR Close #62889
2025-07-30 08:54:03 +00:00
Joey Perrott 49b7729e88 build: remove usages of rules_nodejs (#62885)
Remove rules_nodejs usages with direct migrations to rule_js alternatives

PR Close #62885
2025-07-30 08:51:27 +00:00
Joey Perrott 9bd4855204 build: correctly apply patch fro dagre-d3-es (#62883)
Correctly apply patch for dagre-d3-es so that it is effective with new toolchain

PR Close #62883
2025-07-30 08:49:47 +00:00
Jessica Janiuk ae9f3fed45 docs: Update docs and add new animation guide (#62874)
This adds a guide for enter and leave animations, and updates the prior guides with enter and leave.

PR Close #62874
2025-07-30 08:48:12 +00:00
Matthieu Riegler 5b25d93f27 fix(compiler): exclude more safe reads expression from 2way-binding (#62852)
Priori to this fix the parser would allow safereads in accestor receievers (but the direct one).

fixes #62837

PR Close #62852
2025-07-29 17:28:08 +00:00
Joey Perrott 9888fc4966 build: remove the esm interop patches and tooling (#62879)
Remove esm interop patches and tooling from previous toolchain

PR Close #62879
2025-07-29 17:25:35 +00:00
arturovt e576c813c7 refactor(service-worker): align getRegistration() types (#62497)
In this commit, we align the service worker types with those provided by TypeScript. The `ServiceWorkerContainer.getRegistration()` method returns a `Promise<ServiceWorkerRegistration | undefined>`, but we were casting it to `Observable<ServiceWorkerRegistration>`, ignoring the possibility of `undefined`.

This is unsafe, as we should account for the case where the registration is `undefined` and handle it appropriately in the push manager.

PR Close #62497
2025-07-29 17:25:03 +00:00
cexbrayat c4917074f1 fix(compiler-cli): display proper function in NG8117 message (#62842)
The diagnostic was displaying `'Function in text interpolation should be invoked: ect Object]()` instead of `'Function in text interpolation should be invoked: firstName()'.

PR Close #62842
2025-07-29 17:22:28 +00:00
Joey Perrott 29195f1710 build: use ts_project based extract_types (#62875)
Use the extract_types that pulls from ts_project deps

PR Close #62875
2025-07-29 17:14:26 +00:00
Joey Perrott 793ff35602 build: move http_server and generate_api_docs into defaults2.bzl (#62878)
Move http_server and generate_api_docs into defaults2.bzl as they are rules_js compliant

PR Close #62878
2025-07-29 16:53:54 +00:00
Joey Perrott d272ffd072 build: remove unused macro (#62878)
Remove unused npm_package_bin macro

PR Close #62878
2025-07-29 16:53:54 +00:00
Joey Perrott c1ac84cd90 build: remove final usages of nodejs_binary macros (#62878)
Remove the remaining usages of our nodejs_binary macros

PR Close #62878
2025-07-29 16:53:54 +00:00
Angular Robot fa95db56d1 build: update cross-repo angular dependencies (#62876)
See associated pull request for more information.

PR Close #62876
2025-07-29 16:51:07 +00:00
Justin White cf2667b61a docs: fix const for pi calculation (#62872)
PR Close #62872
2025-07-29 16:48:06 +00:00
Matthieu Riegler af866249cd docs: fix ActivateRoute example (#62855)
PR Close #62855
2025-07-29 12:17:45 +00:00
hawkgs a1318af71a fix(devtools): truncate text in the property tab header (#62868)
Handle very long component names when the "Show Signal Graph" button is visible.

PR Close #62868
2025-07-29 12:17:07 +00:00
Angular Robot dc49c2cf10 build: update all non-major dependencies (#62862)
See associated pull request for more information.

PR Close #62862
2025-07-29 09:56:52 +00:00
Matthieu Riegler 5f759999a8 refactor(common): replace aio links to adev (#62839)
The is a doc change + a minor test change (to remove test logs that mention aio)

PR Close #62839
2025-07-29 09:55:26 +00:00
Jessica Janiuk 9766116cea refactor(animations): deprecate the animations package (#62795)
This deprecates the animations package in favor of using `animate.enter` and `animate.leave` with intent to remove the full package in v22.2.

DEPRECATED: @angular/animations

PR Close #62795
2025-07-29 09:50:09 +00:00
Jessica Janiuk 898244a03a refactor(core): add configurable behavior for animations to testbed (#62764)
This adds a test module configuration to define whether animations should be enabled or disabled in test. By default, they are disabled.

PR Close #62764
2025-07-29 09:49:35 +00:00
Matthieu Riegler d55a70695d docs: restore mention of structural directives. (#62836)
The link was removed in #61708, but we should actually kept it but point to the dedicated page

fixes #62835

PR Close #62836
2025-07-29 09:33:29 +00:00
Jessica Janiuk e599fdd458 Revert "test(devtools): write some e2e tests for the transfer state tab (#62843)" (#62867)
This reverts commit 3a1a6cc20d.

PR Close #62867
2025-07-29 09:30:30 +00:00
AleksanderBodurri 3a1a6cc20d test(devtools): write some e2e tests for the transfer state tab (#62843)
Tests validate the current behaviour of the transfer state feature:

- Tab can be made visible by enabling in the settings menu
- Transfer state component displays keys total and size
- Validates the existence of the mock content present in https://github.com/angular/angular/tree/main/devtools/src/app/transfer-state.ts

PR Close #62843
2025-07-29 06:44:28 +02:00
Joey Perrott 32c00ab416 build: standardize usage of js_binary (#62860)
Remove usages of nodejs_binary and use a commonly defined js_binary macro

PR Close #62860
2025-07-29 06:43:44 +02:00
Angular Robot ecf2ad1698 build: update cross-repo angular dependencies (#62856)
See associated pull request for more information.

PR Close #62856
2025-07-28 20:54:59 +02:00
Joey Perrott 17ada9838b build: move tsec to new toolchain (#62825)
Migrate tsec tooling/macro to use tsec directly as a js_binary and rely on ts_project dependencies.

PR Close #62825
2025-07-28 20:07:05 +02:00
Angular Robot 0c77138404 build: lock file maintenance (#62849)
See associated pull request for more information.

PR Close #62849
2025-07-28 19:06:09 +02:00
Milo 92c2d2a006 fix(core): update symbols for new signals api (#62284)
approve the new symbols that appear from bundling the signals changes

PR Close #62284
2025-07-28 17:01:42 +02:00
Milo 3c008c9263 refactor(core): use quad linked lists for signals (#62284)
inspired by the design of Preact's signals, use linked lists instead of arrays for faster signal creation

PR Close #62284
2025-07-28 17:01:42 +02:00
SkyZeroZx 3b759dbcb0 docs: Update VersionFailedEvent in Service Worker docs (#62813)
PR Close #62813
2025-07-28 14:20:38 +02:00
Joey Perrott 1359efefef build: use rollup to locally bundle domino (#62823)
Use rollup instead of esbuild for bundling domino locally for usage within the repository

PR Close #62823
2025-07-28 14:19:56 +02:00
Joey Perrott 2f82d811e5 build: migrate zone.js tests to use web test runner instead of karma web tests (#62826)
Migrate zone.js bazel tests to use web test runner instead of karma

PR Close #62826
2025-07-28 14:18:45 +02:00
Avcharov Hryhorii 88b13082c0 refactor(docs): rename idx to firebase studio (#62848)
Rename IDX, as since now IDX is a part of Firebase Studio

PR Close #62848
2025-07-28 14:17:35 +02:00
hawkgs 82d585f49b fix(devtools): transfer state settings menu item text size (#62851)
Fix the text size of the transfer state settings menu item. Also, rename "Show" to "Enable" to match the rest of the non-default tabs text.

PR Close #62851
2025-07-28 14:15:46 +02:00
cexbrayat c66e9feda9 docs: fix link for NG8117 uninvokedFunctionInTextInterpolation (#62820)
PR Close #62820
2025-07-25 16:55:36 +02:00
Joey Perrott b49c1f2394 build: remove local zone.js build from usage in integration tests (#62775)
Remove the local zone.js build from dependencies in the integration tests

PR Close #62775
2025-07-25 16:53:00 +02:00
Joey Perrott 7c06aca4f0 build: move from using rollup to esbuild for bundling zone.js (#62775)
Use esbuild to bundle zone.js

PR Close #62775
2025-07-25 16:53:00 +02:00
Andrew Scott 0f9e0a644b build: Export language service bundle (#62811)
fixes Plugin activation failed: Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './bundles/language-service.js' is not defined by 'exports'

PR Close #62811
2025-07-25 16:51:59 +02:00
Angular Robot 63a6b5ac40 build: update cross-repo angular dependencies (#62806)
See associated pull request for more information.

PR Close #62806
2025-07-25 14:31:36 +02:00
Kristiyan Kostadinov 632eba519c build: update to the TypeScript 5.9 RC (#62815)
Updates the repo the release candidate of TypeScript 5.9.

PR Close #62815
2025-07-25 13:39:12 +02:00
Joey Perrott c19d0aef4f build: use ts_config rule from rules_ts only and always load from common location (#62808)
Only use the ts_config rule from rules_ts, and always load the rule from tools/defaults2.bzl

PR Close #62808
2025-07-25 10:08:13 +02:00
Joey Perrott caee6ff8e7 build: remove all usages of @bazel/runfiles (#62804)
Remove usages of @bazel/runfiles throughout the repository

PR Close #62804
2025-07-25 10:04:55 +02:00
Jan-Niklas W. 138086206a docs: fix issue in jetbrains MCP configuration (#62802)
PR Close #62802
2025-07-25 10:04:14 +02:00
Milo 3f720044f9 refactor(devtools): cleanup a few devtools bazel files (#62786)
remove unused styles, update to es2022

PR Close #62786
2025-07-25 10:03:42 +02:00
Milo e4ed6d6783 refactor(devtools): cleanup iframe-message-bus (#62785)
remove unused function and cleanup private readonly properties

PR Close #62785
2025-07-25 10:03:03 +02:00
Angular Robot 913580823c build: update cypress-io/github-action action to v6.10.2 (#62814)
See associated pull request for more information.

PR Close #62814
2025-07-25 10:02:26 +02:00
Garegin Hakobyan b11e0502f5 docs(docs-infra): correct typos in adev and wording in resource api (#62801)
PR Close #62801
2025-07-24 16:13:00 +00:00
Matthieu Riegler 61eeb9b021 refactor(devtools): simular transfer cache data in the devtools demo app. (#62665)
With the commit we mimic server-side behavior and serialize a bunch of transfer cache data.

fixes #62664

PR Close #62665
2025-07-24 15:51:12 +00:00
Charles Lyding 24e6f4df32 docs: add initial documentation for MCP server tools (#62777)
Adds documentation for the tools available in the Angular CLI MCP server. This includes:
- get_best_practices
- search_documentation
- list_projects

Also includes a section for providing feedback and ideas for new capabilities.

PR Close #62777
2025-07-24 14:00:10 +00:00
SkyZeroZx 8ebc1e7d8c refactor(forms): Removes redundant destroy ref usage in value accessor in select control (#62738)
Simplifies destruction logic by relying directly on the injector's destroyed state.
Eliminates unnecessary retrieval of a separate destroy reference

PR Close #62738
2025-07-24 13:25:30 +00:00
SkyZeroZx 0984b30388 feat(http): Add redirected property to HttpResponse and HttpErrorResponse (#62675)
Add support for the Fetch API's redirected property in HttpResponse and HttpErrorResponse when using HttpClient with the withFetch provider.

The redirected property indicates whether the response was the result of an HTTP redirect, providing valuable information for security, debugging, and conditional logic.

PR Close #62675
2025-07-24 13:19:22 +00:00
SkyZeroZx 6d011687ec feat(service-worker): notify clients about version failures (#62718)
Add client notification when an app version fails, improving error
visibility and debugging capabilities. When a version encounters a
critical error, all clients using that version are now notified
with details about the failure.

- Add notifyClientsAboutVersionFailure method call in versionFailed
- Ensure clients receive VERSION_FAILED events with error details
- Improve service worker error transparency for better debugging

PR Close #62718
2025-07-24 11:30:49 +00:00
Angular Robot 94b0ef1453 build: update github/codeql-action action to v3.29.4 (#62789)
See associated pull request for more information.

PR Close #62789
2025-07-24 11:02:04 +00:00
Gerome Grignon 1c1f1cfa9c docs(router): rephrase the package installation (#62704)
PR Close #62704
2025-07-24 11:00:28 +00:00
Angular Robot a95b7ba593 build: lock file maintenance (#62793)
See associated pull request for more information.

Closes #62621 as a pr takeover

PR Close #62793
2025-07-24 10:58:43 +00:00
Andrew Scott 92b080202d test(router): Use autoTick feature in router tests (#62776)
This updates async router tests to use the jasmine autoTick feature. Observed test timings
for the chromium tests went down from ~7.5s to ~3.5-4s. For node, these decreased from ~5.5s to ~3s.

In addition to the speed improvement, this feature:

* Removes the need to be careful about timeout ordering when there are several timeouts in tests.
* Removes the need to ensure test timeouts are kept sufficiently small
* Reduces overall flakiness

PR Close #62776
2025-07-24 10:04:05 +00:00
Walter Breakell 5b7408edb6 docs: update link to git fixup documentation (#62717)
PR Close #62717
2025-07-24 10:02:40 +00:00
Angular Robot 6ab0d11878 build: update all non-major dependencies (#62754)
See associated pull request for more information.

PR Close #62754
2025-07-24 10:02:01 +00:00
Angular Robot 9d8c48dc4c build: update cross-repo angular dependencies (#62770)
See associated pull request for more information.

PR Close #62770
2025-07-24 09:24:50 +00:00
Sebastian Barfurth 1b73c23597 fix(http): propagate plain errors when parsing fails (#62765)
The fetch backend now propagates the plain body when parsing the body fails.
This replicates the behavior of the XHR backend introduced in #19773.

The current state completely obfuscates errors of the "wrong" response type.
However, it's not uncommon for successful requests to return one type and
errors to return another type. Propagating the plain error allows downstream
error consumers to reason about the error body and decide how to parse it
depending on application needs.

PR Close #62765
2025-07-24 09:23:24 +00:00
SkyZeroZx b65c3d5e19 feat(service-worker): Improves storage full detection in data caching (#62737)
Adds proactive storage capacity checks using the Storage API
to better handle near-full conditions during data caching.
Replaces previous TODOs with actual usage monitoring and
logging to help prevent cache failures due to quota exhaustion.

PR Close #62737
2025-07-24 09:20:17 +00:00
Matthieu Riegler 7aacd569f5 refactor(compiler): Error on comment only interpolations (#62590)
This commit introduces a ParserError to prevent an error later in the pipepine

fixes #34084

PR Close #62590
2025-07-24 09:19:46 +00:00
Milo ffd4407a41 refactor(devtools): add cookies signal demo (#62749)
add a new component that includes a small signal graph and explicitly calls .set on a signal.

PR Close #62749
2025-07-24 09:18:26 +00:00
Matheus B. 14888a73f6 docs(docs-infra): fix indentation in documentation (#62774)
fix minor indentation issue in a code block to improve readability
PR Close #62774
2025-07-24 09:17:54 +00:00
Jan Martin deec4c16fd docs: call out cleanup steps in devtools release process (#62769)
PR Close #62769
2025-07-24 09:16:12 +00:00
Matthieu Riegler 3fa1e96c50 docs: add mentions of dynamic title resolver / strategy (#62751)
PR Close #62751
2025-07-24 09:15:28 +00:00
Kirill Cherkashin da2700c819 release: cut the v20.2.0-next.2 release 2025-07-23 17:20:01 -04:00
Kirill Cherkashin 8344572cb4 docs: release notes for the v20.1.3 release 2025-07-23 16:57:00 -04:00
Andrew Scott 7f9d37d34b build: update bazel rules_browsers dependency (#62772)
Updates only rules_browsers since
https://github.com/angular/angular/pull/62542 is having difficulty with
other deps updated at the same time

PR Close #62772
2025-07-23 15:42:05 -04:00
Jessica Janiuk 063b5e166f fix(core): switch check to documentElement with chaining (#62773)
This fixes a situation where DOM checks may report null.

PR Close #62773
2025-07-23 15:01:59 -04:00
Matthieu Riegler 9562b636e0 docs: guard a resource error with hasValue() (#62708)
fixes #62687

PR Close #62708
2025-07-23 14:00:46 -04:00
Jessica Janiuk 593cc8a368 fix(core): checks if body exists before continuing (#62768)
This fixes a case in which the document exists, but the body does not.

PR Close #62768
2025-07-23 12:54:39 -04:00
Jan Martin a4a4f7f850 release: bump Angular DevTools version to 1.0.40 (#62767)
PR Close #62767
2025-07-23 09:25:24 -07:00
Kristiyan Kostadinov 7767aa640c fix(compiler): allow more characters in square-bracketed attribute names (#62742)
Currently the HTML parser will stop parsing as soon as it hits an end character in the name of an attribute (e.g. `/` or `>`). This ends up being problematic with some third-party packages like Tailwind which uses a wider range of characters for its class names. While the characters are fine when inside the `class` attribute, our current parser behavior prevents users from setting those classes conditionally through `[class.]` bindings.

These changes adjust the parser to handle such cases.

Fixes #61671.

PR Close #62742
2025-07-23 11:06:47 -04:00
Kristiyan Kostadinov 74d99ed379 fix(platform-browser): resolve component resources before bootstrapping in JIT mode (#62758)
Currently if the app has some external resources and it gets bootstrapped in JIT mode, the user will get an error about calling `resolveComponentResources`. These changes add a call to `resolveComponentResources` automatically inside `bootstrapApplication`.

Note that we don't need similar logic for `bootstrapModule`, because it calls into `compileNgModuleFactory` internally which in turn calls `resolveComponentResources`.

PR Close #62758
2025-07-23 11:05:20 -04:00
Jessica Janiuk 882522c1ad refactor(compiler): Tree shake Element Registry (#62682)
This creates a feature to detect usages of animate.leave and only enables the element removal registry when necessary

PR Close #62682
2025-07-23 09:37:16 -04:00
Jessica Janiuk 6b1f4b9e8b feat(core): add enter and leave animation instructions (#62682)
This adds the instructions to support enter and leave animations on nodes.

PR Close #62682
2025-07-23 09:37:16 -04:00
Kristiyan Kostadinov cec91c0035 feat(core): add option to infer the tag names of components in tests (#62283)
Currently when testing a component using `TestBed.createComponent`, we always create the component as a `div` which isn't aligned with the runtime. The runtime tries to parse out the tag name from the first selector in `@Component` and only falls back to `div` if there isn't one. This behavior difference can cause components to not behave like they would in production which reduces the usefulness of the tests.

These changes add the `inferTagName` option to `TestBed.createComponent` and `TestBed.configureTestingModule` that allows apps to opt into inferring the tag name from the selector in the same way as the runtime. Currently the new option is set to `false`, but we intend to change it to `true` in a future version.

PR Close #62283
2025-07-23 07:30:36 -04:00
Kristiyan Kostadinov 68f3c65314 refactor(core): expose function for inferring tag name (#62283)
Exposes the code that we use to infer the tag name of a component as a private export so that we can use it in `TestBed`.

PR Close #62283
2025-07-23 07:30:36 -04:00
Charles Lyding 081d73907d docs: create MCP server setup guide (#62746)
Introduces a new guide for setting up the Angular CLI's Model Context Protocol (MCP) server.

The guide includes:
- Instructions on how to use the command.
- IDE-specific JSON configurations for VS Code, JetBrains, Firebase Studio, and Cursor.
- Clarification on the different JSON structures required by each IDE.

PR Close #62746
2025-07-23 07:24:48 -04:00
Jessica Janiuk 743b928331 ci: update renovate reviewers (#62761)
This restores the framework-team availability, since the setting was not working as intended.

PR Close #62761
2025-07-23 07:24:13 -04:00
Angular Robot 0a9f55deed build: update dependency angular-split to v20 (#62740)
See associated pull request for more information.

PR Close #62740
2025-07-22 14:18:14 -04:00
Angular Robot 92e03e1185 build: update @angular/ng-dev digest to 75a2aee (#62744)
See associated pull request for more information.

PR Close #62744
2025-07-22 12:05:27 -04:00
SkyZeroZx 4ac6171b09 feat(service-worker): Adds support for updateViaCache in provideServiceWorker (#62721)
Enables configuration of the updateViaCache setting for service worker registration, allowing greater control over caching behavior during updates. Extends tests to cover new option and ensures correct propagation in registration logic.

PR Close #62721
2025-07-22 10:18:12 -04:00
Angular Robot 0183f76cfc build: update github/codeql-action action to v3.29.3 (#62739)
See associated pull request for more information.

PR Close #62739
2025-07-22 10:16:28 -04:00
Joey Perrott 16f2489391 build: move generating doc files for @angular/ssr to using an intermediate typescript file (#62734)
Use an intermediate typescript file to rexport all of all of @angular/ssr rather than reaching into the npm package files

PR Close #62734
2025-07-22 10:13:28 -04:00
Joey Perrott 33964296d5 build: remove unused @bazel/* npm packages (#62709)
Remove the unused bazel npm packages

PR Close #62709
2025-07-22 10:07:14 -04:00
Joey Perrott f5d9d084b6 build: move nodejs_test to js_test (#62709)
Move nodejs_test to js_test and remove unnecessary files after move

PR Close #62709
2025-07-22 10:07:13 -04:00
Joey Perrott 9d7482c011 build: remove unused rules/macros from defaults.bzl (#62709)
Remove rules/macros that are not longer used in the repo

PR Close #62709
2025-07-22 10:07:13 -04:00
Joey Perrott de4c06cf5c build: migrate tslint rules from dev-infra to local (#62709)
Migrate the tslint rules used in dev-infra to locally defined rules as they are unused in other repos

PR Close #62709
2025-07-22 10:07:13 -04:00
Hryhorii Avcharov a2f366f629 feat(devtools): add transfer state tab (#62465)
Add transfer state tab, which is taking transfer state script by using APP_ID. Created internal api ɵgetTransferState to retrieve transfer state value from app into devtools app.

PR Close #62465
2025-07-22 08:41:10 -04:00
Leon Senft 4138aca91f feat(core): render ARIA property bindings as attributes (#62630)
Allow binding to ARIA attributes using property binding syntax _without_
the `attr.` prefix. For example, `[aria-label]="expr"` is now valid, and
equivalent to `[ariaLabel]="expr"`. Both examples bind to either a
matching input or the `aria-label` HTML attribute, rather than the
`ariaLabel` DOM property.

Binding ARIA properties as attributes will ensure they are rendered
correctly on the server, where the emulated DOM may not correctly
reflect ARIA properties as attributes.

Reuse the DOM schema registry from the compiler to map property names in
type check blocks.

PR Close #62630
2025-07-22 06:59:00 -04:00
Matthieu Riegler db3c928305 refactor(core): add a getTransferState for the devtools (#62722)
`getTransferState` will expose public data from the transfer state. It will for example remove internal hydration data.

PR Close #62722
2025-07-21 17:00:27 -04:00
AleksanderBodurri d0cf8fc3c6 test(devtools): bump cypress timeout to 10 seconds (#62726)
By default this is 4 seconds. In CI we have unreliable runtime performance so we this change gives us a bit of wiggle room to validate application behaviour.

PR Close #62726
2025-07-21 16:35:39 -04:00
Aristeidis Bampakos bb7422a01d docs: fix minor typos in styleguide (#62706)
PR Close #62706
2025-07-21 13:38:39 -04:00
Angular Robot 6780d16118 build: update cross-repo angular dependencies (#62728)
See associated pull request for more information.

PR Close #62728
2025-07-21 13:16:30 -04:00
Joey Perrott 8bf97d1370 build: remove all usages of the interop_deps attr for ts_project and ng_project (#62732)
Remove all of the usages of interop_deps as attributes in the repo

PR Close #62732
2025-07-21 13:03:09 -04:00
hawkgs cc468efc74 refactor(devtools): introduce docs-ref-button (#62685)
Used for external Angular docs links.

PR Close #62685
2025-07-21 12:21:55 -04:00
hawkgs 009a27df3f refactor(devtools): make the component metadata menu more prominent (#62685)
Add an arrow icon to indicate that this is an expansion panel. Reduce the active area (which toggles the menu) to the text only.

PR Close #62685
2025-07-21 12:21:55 -04:00
AleksanderBodurri 08d37649af fix(devtools): stop reseting currentlyMatchedIndex when a node is selected in the component explorer (#62727)
This was causing some unintended behaviour when paired with our new zoneless configuration. I'm not sure why currentlyMatchedIndex was getting set to -1 here. With this removed it seems like things are working as expected. Previously a select call would reset this index *after* a search filter was applied, which would cause weird behaviour with the "next" and "prev" buttons.

PR Close #62727
2025-07-21 12:15:02 -04:00
Angular Robot f8c8ff266f docs: update Angular CLI help (#62729)
Updated Angular CLI help contents.

PR Close #62729
2025-07-21 12:05:25 -04:00
Angular Robot 8b5f814ed6 build: update all non-major dependencies (#62701)
See associated pull request for more information.

PR Close #62701
2025-07-21 10:47:49 -04:00
Matthieu Riegler a6b2d7dd10 fix(devtools): add event tagging to prevent DDOS (#62645)
One common problem encountered by the devtools content script is that it accepted almost any message send over the message bus. Some websites like `auth.openai.com` were spamming the bus and DDOS the devtools app.

By introducing event tagging and skipping non-devtools events we prevent DDOS of the Angular devtools content script by on forward tagged events.

PR Close #62645
2025-07-21 10:09:03 -04:00
Johnny Huang 97b1bd19d1 docs: fix code snippet (#62720)
changes code snippet on first-app tutorials (https://angular.dev/tutorials/first-app/09-services) for the step "Add a new file level import for the HousingService:" from 

imports: [HousingLocation], 

to

import {HousingService} from '../housing.service';
PR Close #62720
2025-07-21 09:37:45 -04:00
hawkgs d441ac4533 fix(devtools): make some containers scrollable (#62703)
Add scrolling to some containers in the app.

PR Close #62703
2025-07-21 09:32:58 -04:00
Matthieu Riegler 7eb9fcd6a0 docs: split devtools doc to prepare for upcomming updates (#62597)
PR Close #62597
2025-07-18 10:07:46 -04:00
Elizabeth b8e415a717 fix(core): fix change tracking for Resource#hasValue (#62595)
When using `hasValue()` I would expect it to behave like any other
reactive value such that changes to the internal `value()` that do not
cause `hasValue()` to return anything different do not trigger change
detection, but this was not the case. This change wraps the value
checking in a `computed` such that it behaves as expected again while
still preserving the type narrowing.

PR Close #62595
2025-07-18 10:01:43 -04:00
Angular Robot 891444d48b build: update cross-repo angular dependencies (#62557)
See associated pull request for more information.

PR Close #62557
2025-07-18 09:47:19 -04:00
Andrew Scott 448a7f7e8f refactor(core): Use promise.finally for task removal (#62674)
Updates the approach from https://github.com/angular/angular/pull/62631 to
use Promise.finally for task removal. This is a bit cleaner and also handles
rejections from the donePromise

PR Close #62674
2025-07-18 07:19:49 -04:00
hawkgs d3b770d636 refactor(devtools): restyle the signal details panel (#62681)
Restyle the details panel to match and be inline with the existing UI/style.

PR Close #62681
2025-07-18 07:00:57 -04:00
Joey Perrott 23d58777b4 build: migrate to new toolchain usage for api goldens (#62688)
Migrate api golden usage to be based on rules_js toolchain implementation

PR Close #62688
2025-07-17 18:13:42 -04:00
Kirill Cherkashin 6f52e97d5f docs: release notes for the v20.1.2 release 2025-07-17 17:49:06 -04:00
Jonathan Pribesh 16a9bea466 docs: fixes binding box typo in httpResource.value() template example (#62661)
PR Close #62661
2025-07-17 14:31:07 -04:00
Matthieu Riegler ea2339e1e4 refactor(devtools): replace/remove animations from the animation package (#62633)
Animations can be handled by the styling directly

PR Close #62633
2025-07-17 14:24:37 -04:00
Matthieu Riegler 3171d01452 fix(compiler): fix detection of directive deps in JIT (#62666)
This fix also matches the implementation to the jsdoc for `hasDirectiveDependencies` "Whether any of the component's dependencies are directives"

fixes #62573

PR Close #62666
2025-07-17 14:20:31 -04:00
Angular Robot 50515fb167 build: update dependency node to v22.17.1 (#62676)
See associated pull request for more information.

PR Close #62676
2025-07-17 14:18:19 -04:00
hawkgs 2f7f9569f7 refactor(devtools): rearrange main toolbar menu buttons (#62684)
Place the version in the info menu and move both the info and gear buttons to the right-hand side of the toolbar.

PR Close #62684
2025-07-17 14:06:31 -04:00
Joey Perrott a959e5a5db build: remove ts_library definition (#62673)
Remove the ts_library macro from our defaults.bzl file

PR Close #62673
2025-07-17 13:59:37 -04:00
Joey Perrott dd02bfe743 build: migrate zone.js to use ts_project instead of ts_library (#62673)
Use ts_project instead of ts_library for building zone.js

PR Close #62673
2025-07-17 13:59:37 -04:00
Joey Perrott 0f4bf56266 build: migrate ts_library usages to ts_project (#62673)
Migrate new ts_library usages to ts_project

PR Close #62673
2025-07-17 13:59:37 -04:00
Joey Perrott b0effa1cc3 ci: use new size tracking in integration tests (#62650)
Use the new size tracking within integration tests

PR Close #62650
2025-07-17 13:56:22 -04:00
Matthieu Riegler 8caaf5ed22 refactor(devtools): Migrate the devtools app to zoneless. (#62454)
This commit also removed the useless ngZone invocations

PR Close #62454
2025-07-17 13:55:36 -04:00
Milo 2e6c2ff52c refactor(devtools): disable view source button if source function is not available (#62678)
if there is no debuggableFn, we shouldn't allow users to click the view source button

PR Close #62678
2025-07-17 13:28:35 -04:00
Tony Conway 36dcd0ee63 docs: Update versions.md to use canonical Baseline site (#62680)
replace `tonypconway` fork URL with canonical `web-platform-dx` URL

PR Close #62680
2025-07-17 13:26:41 -04:00
Jessica Janiuk fc8247de95 refactor(core): add compiler support for animation instructions (#62528)
this adds the compiler code to support the animate instructions.

PR Close #62528
2025-07-16 16:44:16 -04:00
Joey Perrott e25e6342f2 build: remove rules_nodejs based protractor tooling (#62649)
Remove the protractor setup based on rules_nodejs

PR Close #62649
2025-07-16 16:39:49 -04:00
Joey Perrott b5486184d0 build: remove extra toolchain registration (#62649)
Remove extra toolchain registration that is redundant as we already add the toolchains elsewhere

PR Close #62649
2025-07-16 16:39:49 -04:00
Joey Perrott cf40162083 build: migrate protractor test to new toolchain (#62649)
Migrate to new toolchain for protractor test in packages/examples/upgrade

PR Close #62649
2025-07-16 16:39:49 -04:00
Rafael Camara 5abfe4a899 feat(compiler-cli): add diagnostic for uninvoked functions in text interpolation (#59191)
This commit adds a new extended diagnostic to detect uninvoked functions in text interpolation.

PR Close #59191
2025-07-16 16:30:37 -04:00
Angular Robot dc952943ab build: update all non-major dependencies (#62662)
See associated pull request for more information.

PR Close #62662
2025-07-16 16:26:38 -04:00
Jan Martin f5f8f7689f release: bump Angular DevTools version to 1.0.39 (#62670)
PR Close #62670
2025-07-16 16:13:12 -04:00
Andrew Kushnir a484a11b67 release: cut the v20.2.0-next.1 release 2025-07-16 11:10:24 -07:00
Andrew Kushnir 193257b3fa docs: release notes for the v20.1.1 release 2025-07-16 11:01:09 -07:00
Kristiyan Kostadinov 527bd778a7 fix(compiler-cli): infer type of event target for void elements (#62648)
Currently we infer the target of DOM events to be `EventTarget | null` which is consistent with the built-in types for `addEventListener`. This is due to the fact that users can dispatch custom events, or the event might've bubbled. However, this typing is also inconvenient for some other common use cases like `<input (input)="query($event.target.value)">`, because we don't have the ability to type cast in a template.

These changes aim to make some of the cases simpler by inferring the type of `$event.target` if the event is bound on a void element which guarantees that it couldn't have bubbled.

PR Close #62648
2025-07-16 12:40:25 +02:00
Kristiyan Kostadinov 6dc29b3bf7 refactor(core): expose function to assert type of variables (#62648)
Adds the `ɵassertType` function that will be used during type checking to assert the type of a value.

PR Close #62648
2025-07-16 12:40:25 +02:00
Kristiyan Kostadinov acdb8d673d refactor(compiler): indicate whether element is void at AST level (#62648)
Updates the HTML AST to indicate whether a specific element is a void element.

PR Close #62648
2025-07-16 12:40:25 +02:00
Kristiyan Kostadinov 18a675081f fix(compiler): more permissive parsing of @ characters (#62644)
When we introduced blocks, we made a deliberate decision to treat the `@` character as a reserved character in case we need to use it for other syntax in the future. This meant that some common cases, like writing out an email address in the template, can be broken.

After some recent discussions we decided to relax the requirement and only treat `@` as a reserve character if it's followed by a character sequence that matches a known block.

PR Close #62644
2025-07-15 13:24:47 -07:00
Kristiyan Kostadinov 56fbb3299a test(compiler): remove duplicated lexer tests (#62644)
There were 26 duplicated block tests in `lexer_spec.ts`, likely due to merge conflicts. These changes remove the duplicates while keeping the 6 tests that were different.

PR Close #62644
2025-07-15 13:24:47 -07:00
Angular Robot 4574095a9e build: update all non-major dependencies (#62642)
See associated pull request for more information.

PR Close #62642
2025-07-15 09:34:00 -07:00
SkyZeroZx e6d2d788c1 docs: Update documentation httpResource with referrer & integrity options (#62637)
PR Close #62637
2025-07-15 09:33:14 -07:00
muhammadali1658 80da0731a3 docs: fix missing 'of' in Style Guide sentence (#62628)
PR Close #62628
2025-07-15 07:59:19 -07:00
hawkgs 33f3193fe2 refactor(devtools): show profiler progress bar during recording (#62547)
Show the profiler progress bar during the full recording instead of only when there are no frames.

PR Close #62547
2025-07-15 07:58:33 -07:00
Kristiyan Kostadinov a1e3f2bcd1 fix(compiler): incorrect spans for left side of binary operation (#62641)
Fixes that the span for the `left` side of a `Binary` AST included the range up to and including the operator.

Fixes #62617.

PR Close #62641
2025-07-15 07:57:32 -07:00
Kristiyan Kostadinov eef258f641 docs: update best practices prompt (#62640)
Updates the `best-practices.md` with results from recent testing.

PR Close #62640
2025-07-15 07:56:05 -07:00
Andrew Scott 859958dbfe fix(core): Ensure application remains unstable during bootstrap (#62631)
This commit ensures the application remains unstable during the entire
bootstrap process. This ensures all bootstrap listeners and app
initializers observe the application as being unstable until each one
has gotten a chance to execute the synchronous block (potentially adding
more pending tasks).

Prior to this commit, application initializers or bootstrap
listeners may observe the application as being stable, even though other
initializers/listeners had not yet executed. This created an ordering
issue whereby the hydration bootstrap listener would observe the
application as stable prior to the router performing its initial
navigation.

fixes #62592

PR Close #62631
2025-07-15 07:52:36 -07:00
Joey Perrott e8c5603126 build: move all rule/macro loading into adev/defaults.bzl and fix intellisense loading (#62627)
Move all of our loading into a local defaults.bzl file instead of mixed loading via tools/defaults and adev/defaults

PR Close #62627
2025-07-14 15:47:05 -07:00
Joey Perrott 5eeb9f3e7e build: move all rule/macro loading into devtools/defaults.bzl (#62627)
Move all of our loading into a local defaults.bzl file instead of mixed loading via tools/defaults and devtolls/defaults

PR Close #62627
2025-07-14 15:47:05 -07:00
aparziale 780774f948 fix(core): InputBinding marks component a dirty. (#62613)
This fix ensures that CD runs on OnPush component when an input binding is set.

PR Close #62613
2025-07-14 15:46:29 -07:00
Vincent 1408baff45 fix(http): Add missing timeout and transferCache options to HttpClient (#62586)
The `timeout` option is implemented in the different HTTP backends, but the option is not actually passed to the backends. `transferCache` is also missing in one signature. This commit adds both options to `HttpClient`.

Fixes #62581

PR Close #62586
2025-07-14 15:45:25 -07:00
ivanwonder d64dd27a02 feat(language-service): support to report the deprecated API in the template (#62054)
In the Typescript Language Service, these diagnostics are reported as suggestion diagnostics.
This will report the deprecated `Component`, `Directive`, etc.

Fixes https://github.com/angular/angular/issues/59343

PR Close #62054
2025-07-14 15:44:24 -07:00
Joey Perrott eca2334df5 docs: correctly look for examples in the bin_dir instead of execPath (#62632)
Properly look for the example files for live previews in the bin_dir

PR Close #62632
2025-07-14 14:49:16 -07:00
Milo cfa44df503 refactor(devtools): simplify vendored deps to make importing into google3 easier (#62567)
prefer using node_modules/webtreemap, and remove memo-decorator

PR Close #62567
2025-07-14 14:48:17 -07:00
Ben Hong 817d9df84b docs: add dedicated data resolvers router guide (#62250)
PR Close #62250
2025-07-14 14:17:50 -07:00
Matthieu Riegler 7bcaf01ace build: set paths for devtools & adev (#62574)
This allows the IDE to find the right imports

PR Close #62574
2025-07-14 14:11:09 -07:00
Kristiyan Kostadinov 745ea44394 feat(core): support TypeScript 5.9 (#62541)
Updates the repo to support TypeScript 5.9 and expands the allowed version range.

PR Close #62541
2025-07-14 14:04:58 -07:00
SkyZeroZx be811fee79 feat(http): add referrer & integrity support for fetch requests in httpResource (#62461)
This commit adds support for the Fetch API's referrer & integrity options when using httpResource with the withFetch provider

PR Close #62461
2025-07-14 11:40:54 -07:00
arturovt e9f215624f fix(router): handle errors from view transition readiness (#62535)
This commit adds a `.catch()` handler to `transition.ready` from `document.startViewTransition` to prevent `AbortError`s in Safari when `startViewTransition` is called synchronously multiple times.

PR Close #62535
2025-07-14 11:39:56 -07:00
Matthieu Riegler 2d048d5520 test(docs-infra): Use the zoneless testing rule (#62596)
This will spare use the warning logs when the tests run.

```
      NG0914: The application is using zoneless change detection, but is still loading Zone.js. Consider removing Zone.js to get the full benefits of zoneless. In applications using the Angular CLI, Zone.js is typically included in the "polyfills" section of the angular.json file.
```

PR Close #62596
2025-07-14 11:36:43 -07:00
Matthieu Riegler 292015b550 refactor(devtools): Use OnPush on all components (#62610)
The end goal is to move the devtools app to zoneless.

PR Close #62610
2025-07-14 11:35:47 -07:00
Angular Robot 0b4d74a8d5 build: update all non-major dependencies (#62603)
See associated pull request for more information.

PR Close #62603
2025-07-14 11:35:11 -07:00
Emily Marigold Klassen 1cff7cac94 docs: update forgotten change to input signals (#62612)
PR Close #62612
2025-07-14 10:03:24 -07:00
Dmitry Kostyuk 47f7a5dd84 docs(docs-infra): fix nested routes example (#62608)
PR Close #62608
2025-07-14 10:00:49 -07:00
Matthieu Riegler 00afc73f67 docs: fix CLI reference layout (#62609)
fixes #62602

PR Close #62609
2025-07-14 09:59:54 -07:00
Matthieu Riegler 94e0a469c1 docs: add note about difference between class bindings and ngClass (#62611)
fixes #40623

PR Close #62611
2025-07-14 09:59:17 -07:00
Matthieu Riegler 57e06c5232 docs(docs-infra): Add status to some guide entries. (#62614)
Guide entries can now have "new" or "updated" tags.

PR Close #62614
2025-07-14 09:58:14 -07:00
Joao da Silva ccbcc9bf08 docs: fix lazy load example in define-routes.md (#62620)
Fixes #62619

PR Close #62620
2025-07-14 09:57:26 -07:00
Angular Robot aa52cd41fd docs: update Angular CDK apis (#62600)
Updated Angular CDK api files.

PR Close #62600
2025-07-11 16:06:46 -07:00
Angular Robot 9b14791105 build: update all non-major dependencies (#62582)
See associated pull request for more information.

PR Close #62582
2025-07-11 14:46:23 -07:00
Jessica Janiuk bece163f87 ci: add to public-api approvers list (#62591)
This appends reviewers to the approvers list.

PR Close #62591
2025-07-11 10:43:27 -07:00
fortnite misogynist b38beb7be3 docs: fix comment breaking Highlighter (#62577)
This fixes a comment that was causing issues with docs highlighting

PR Close #62577
2025-07-11 10:41:47 -07:00
SkyZeroZx 3c1f5857ac refactor(http): use RuntimeError for invalid timeout error (#62490)
Replace generic Error with RuntimeError

PR Close #62490
2025-07-11 10:38:56 -07:00
Matthieu Riegler aef489dae5 refactor(devtools): use signal inputs for split component (#62550)
This also introduced a local direction signal so it can be written from the outside

PR Close #62550
2025-07-11 10:37:50 -07:00
Milo 1de7ab28b4 fix(devtools): fix some build errors from g3 typescript (#62412)
this avoids some issues with casting types

PR Close #62412
2025-07-11 10:35:22 -07:00
AleksanderBodurri bf292bdcae test(devtools): revive cypress tests (#61972)
Previously these tests would run automatically when Angular DevTools lived in another repo. These files have continued to live here but have not been running automatically on each PR.

Now, these test files have been revived to run properly with our changes since the repo merge. This is a first step to reviving our e2e testing.

Next steps include writing cypress tests for new features like Injector Graph, Router tree, signals visualizations, etc.

PR Close #61972
2025-07-11 10:33:50 -07:00
Joey Perrott 15bb25805f build: use esbuild from aspect rules (#62568)
Use the esbuild ruleset from aspect rules instead of via @bazel/esbuild

PR Close #62568
2025-07-10 13:45:15 -07:00
Jessica Janiuk 624195706d ci: adjust renovate teams (#62578)
This switches framework team to approve but not requested, and adds the currently active caretaker group to the teams for renovate.

PR Close #62578
2025-07-10 12:52:31 -07:00
Alan Agius 77b93fb622 ci: update renovate label for non main branch (#62570)
The non default base branch is no longer in rc phase

PR Close #62570
2025-07-10 12:51:11 -07:00
Andrew Kushnir 96014b5f85 refactor(core): include DI path into cyclic dependency error message (#50902)
This commit updates the logic to better handle a situation when there is a cyclic DI dependency detected. Previously, the error message used to contain the name of the token that triggered the problem. With this change, the DI resolution path would also be included, so that it's easier to find and resolve the cycle.

PR Close #50902
2025-07-10 10:35:12 -07:00
hawkgs c75a88f863 fix(devtools): make font sizes consistent (#62575)
Fix the inconsistent font sizes that are result of Material changes.

PR Close #62575
2025-07-10 10:29:15 -07:00
hawkgs 2a992dd641 refactor(devtools): cleanup Material leftovers (#62575)
Cleanup some Material leftovers and drop some redundant markup.

PR Close #62575
2025-07-10 10:29:14 -07:00
hawkgs 3aa821d003 refactor(devtools): improve breadcrumbs component (#62575)
Drop the redundant and lefover code. Slightly update the look.

PR Close #62575
2025-07-10 10:29:14 -07:00
Alan Agius 28ca35801e docs: update browsers support versions (#62572)
The current URL is not correct as it incorrectly includes browsers. We now replace the URL with the comparer provided by baseline which will be available soonish via `web-platform-dx.github.io`

PR Close #62572
2025-07-10 10:26:24 -07:00
Joey Perrott b2714243d8 build: use tsc from @npm2// instead of @npm// (#62558)
Use tsc from the new node_modules layout

PR Close #62558
2025-07-10 10:25:36 -07:00
Angular Robot 959acdaad6 build: update all non-major dependencies (#62513)
See associated pull request for more information.

PR Close #62513
2025-07-10 10:20:24 -07:00
Joey Perrott efc2a41d1d build: use rollup directory instead of rollup through @bazel/rollup (#62556)
Use rollup directly instead of using the previous toolchain implementation

PR Close #62556
2025-07-09 16:53:25 -07:00
Dmitrij Kuba 9c45c322d1 fix(router): ensure preloaded components are properly activated (#62502)
Preloaded components were not being activated in certain scenarios when preloading was enabled. This change ensures that components are correctly activated after being preloaded.

PR Close #62502
2025-07-09 14:39:39 -07:00
Angular Robot 9d5e248f04 docs: update Angular CLI help (#62520)
Updated Angular CLI help contents.

PR Close #62520
2025-07-09 14:05:26 -07:00
Alan Agius 75a5d08c5e fix(http): do not display warnings Angular detected that a HttpClient request with the keepalive option was sent using XHR when option is not true (#62536)
Currently, this warning is always displayed as the option defaults to false. We update the logic to only display the warning when it's true.

PR Close #62536
2025-07-09 12:45:27 -07:00
ice-blaze 9847f91737 docs(forms): remove unecessary FormGroup casting (#62555)
Fixes #62554

PR Close #62555
2025-07-09 12:43:49 -07:00
Miles Malerba c682dfffcd ci: add gemini code assist config (#62560)
Configures gemini to not interact with new pull requests, only review on
demand

PR Close #62560
2025-07-09 12:42:45 -07:00
Matthieu Riegler 4fe8566c78 docs(docs-infra): do not cache the versions.json file (#62534)
Without the flag, the file gets inline in the transfer cache making the resource useless.

PR Close #62534
2025-07-09 12:42:06 -07:00
Joey Perrott 49813c5d85 build: migrate esbuild usages to aspect_rules_esbuild esbuild rule (#62529)
Migrate more usages of esbuild to new toolchain

PR Close #62529
2025-07-09 12:41:27 -07:00
Matthieu Riegler 48a259e607 docs(docs-infra): run analytics only on the browser (#62531)
We don't care about server, adev only uses SSG.
Also `setCookieConsent` is throwing on node.

PR Close #62531
2025-07-09 12:40:36 -07:00
Matthieu Riegler 2ddd9aa4c3 docs(docs-infra): update update guide when changing level (#62526)
This commit also fixes the colors of the material button toggle

fixes #62432

PR Close #62526
2025-07-09 12:40:01 -07:00
Matthieu Riegler efb4783ca0 docs(docs-infra): fix banner position on mobile & tablet (#62521)
#62509

PR Close #62521
2025-07-09 12:39:14 -07:00
Ben Hong 07336e7f53 docs: add dedicated routing lifecycle and events guide (#62225)
doc: apply suggestions from code review

Co-authored-by: Enea Jahollari <jahollarienea14@gmail.com>

Co-authored-by: Matthieu Riegler <kyro38@gmail.com>

PR Close #62225
2025-07-09 12:38:34 -07:00
Andrew Kushnir 4b614fbb32 release: cut the v20.2.0-next.0 release 2025-07-09 12:31:53 -07:00
Andrew Kushnir 52c50d43d6 docs: release notes for the v20.1.0 release 2025-07-09 12:27:31 -07:00
Doug Parker 1b895e1805 release: bump DevTools version to 1.0.38 (#62552)
PR Close #62552
2025-07-09 11:37:07 -07:00
Angular Robot 6adaf01899 build: update dependency aspect_rules_ts to v3.6.3 (#62512)
See associated pull request for more information.

PR Close #62512
2025-07-08 16:01:05 -07:00
Joey Perrott 3b0b0d19f1 build: migrate usages of protractor_web_test_suite to use new rules_browser based rule (#62525)
Use the protractor_web_test_suite from rules_browser instead of @bazel/protractor

PR Close #62525
2025-07-08 15:59:12 -07:00
Jessica Janiuk 365ca13b22 test: rename legacy animations integration tests (#62527)
This just prefixes the integration tests associated with the animation packages.

PR Close #62527
2025-07-08 13:28:37 -07:00
Matthieu Riegler 69531668bf refactor(devtools): remove unused imports (#62530)
Import had no purpose and was also invalid.

PR Close #62530
2025-07-08 12:12:22 -07:00
sEver d6765d9958 fix(docs-infra): fix tutorial formatting issues (for v20) (#62457)
Fixes including, but not limited to:
- `visibleLines` values
- all codeblocks normalized to 2 spaces indentation
- lesson 14-http sEverely de-indented
- descriptions and explanations were rewritten to reflect the changes from @Input to input and from ngFor to @for
- missing step added in lesson 11-details-page
- rewritten confusing instructions for adding code that was already added in previous steps

PR Close #62457
2025-07-08 11:30:15 -07:00
Matthieu Riegler 4f25a8a756 fix(devtools): do not emit a route object with functions (#62254)
In the case where a Route has title defined as a function, it eventually throw when it reaches `window.postMessage`

fixes #60595

PR Close #62254
2025-07-08 11:28:27 -07:00
Matthieu Riegler a1f8cc4f3a docs(docs-infra): generate llms-full.txt at build time (#61864)
PR Close #61864
2025-07-08 11:27:54 -07:00
Paul Gschwendtner acdd5d998a refactor(compiler): fix import manager to be closure property renaming-compatible (#62517)
The `generateUniqueIdentifier` helper relies on the internal `identifiers` property of a `ts.SourceFile`.
As this is not a public-facing API, it is not included in the externs provided to Closure Compiler.
Consequently, it is susceptible to being renamed during advanced optimizations, which would lead to runtime failures.

To prevent this, the property is now accessed via a string literal (`sf['identifiers']`). This change ensures that
the property name is preserved through the compilation process. An explanatory comment has been added to clarify the
necessity of this approach for future reference.

PR Close #62517
2025-07-08 11:31:07 +00:00
Joey Perrott 22b8e222bd build: migrate modules to use dependencies from //modules:package.json (#62506)
Migrate to use local package.json deps

PR Close #62506
2025-07-07 20:43:28 +00:00
Angular Robot ce8156a451 build: update cross-repo angular dependencies (#62507)
See associated pull request for more information.

PR Close #62507
2025-07-07 19:55:18 +00:00
Joey Perrott 40e52b911f build: disable firefox tests in devtools (#62504)
Disabling firefox tests in devtools until we can get them working on OS X as expected

PR Close #62504
2025-07-07 18:29:19 +00:00
Angular Robot 136c0511de build: lock file maintenance (#62494)
See associated pull request for more information.

PR Close #62494
2025-07-07 18:17:08 +00:00
Joey Perrott 415833f2ce build: migrate angular-optimization from devinfra to devtools (#62503)
Migrate angular-optimization to devtools instead of loading via npm package

PR Close #62503
2025-07-07 17:05:51 +00:00
Dzhavat Ushev 65b9adf516 docs: update comment (#62482)
PR Close #62482
2025-07-07 16:52:15 +00:00
Paul Gschwendtner 633d01b571 refactor(compiler): ensure compiler passes closure conformance checks (#62500)
This commit adjusts some code of the compiler that currently results in
conformance checks failures with JSCompiler/Closure.

PR Close #62500
2025-07-07 16:14:16 +00:00
Angular Robot 3887dc8ea4 build: update all non-major dependencies (#62476)
See associated pull request for more information.

PR Close #62476
2025-07-07 16:10:20 +00:00
Angular Robot c6a720b982 build: update dependency aspect_rules_ts to v3.6.2 (#62475)
See associated pull request for more information.

PR Close #62475
2025-07-07 15:35:26 +00:00
Kristiyan Kostadinov 238e2ad4f5 fix(compiler-cli): use proper name for diagnostic type (#62479)
Currently when a diagnostic happens in a template, we always say "Error occurs in ...", however we have other types of diagnostics as well.

PR Close #62479
2025-07-07 15:29:38 +00:00
hawkgs 85e387a090 refactor(devtools): unify table styles (#62466)
Make tabular data styles consistent across the app, whether that's a native or Material table.

PR Close #62466
2025-07-07 15:24:24 +00:00
Joey Perrott a89a2cee06 build: update to latest @angular/build-tooling (#62380)
Update to the latest @angular/build-tooling package, which drop dependency on @angular/benchpress

PR Close #62380
2025-07-07 15:23:47 +00:00
Paul Gschwendtner bd6d043767 refactor(compiler-cli): ensure mock file system can be loaded in the browser (#62493)
The mock file system currently relies on some NodeJS logic. This blocks
the convenient use of the mock file system in the browser. The file
system is useful for creating tests to verify e.g. that our transforms
can work in the browser.

PR Close #62493
2025-07-07 12:59:25 +02:00
Paul Gschwendtner c575286812 refactor: fix closure compatibility errors in compiler (#62493)
The static fields may be part of advanced compilations where the
receiver would change as part of the static field collapsing
optimization.

The optimization requires us to use the explicit class name, over
`this` that would change to e.g. `globalThis`.

PR Close #62493
2025-07-07 12:59:25 +02:00
Michael DeRazon f85c72739e docs: fix typo on guidelines file (#62468)
Correct a minor spelling mistake in the documentation to improve clarity.

PR Close #62468
2025-07-04 11:01:06 +00:00
Matthieu Riegler 9ba59033b9 refactor(devtools): remove the standalone demo (#62455)
The default demo is already standalone

PR Close #62455
2025-07-04 08:48:23 +00:00
SkyZeroZx 720717eaed docs: Update documentation http with integrity & referrer (#62462)
PR Close #62462
2025-07-04 07:22:16 +00:00
Angular Robot 17ba5cd857 build: update dependency mermaid to v11.8.0 (#62463)
See associated pull request for more information.

PR Close #62463
2025-07-04 07:20:52 +00:00
Doug Parker 9ed9375803 refactor(devtools): remove version_name from manifest.json (#62351)
This field defaults to `version`, so there's no need to have it when it's exactly the same. This is one less number to bump during release PRs.

PR Close #62351
2025-07-03 14:46:45 +00:00
Matthieu Riegler 5c54cb87a5 docs: improve support for decorator APIs (#60411)
The commit introduce the distinction between

- class like decorators (like Component, Interface, NgModule. They are formatted like classes/interfaces, with each attribute being documents.
- function like decorators (Attribute, Host, Optional...)

PR Close #60411
2025-07-03 11:51:34 +00:00
Paul Gschwendtner 902121ebc0 refactor(migrations): ensure tsurge can properly emit references in g3 (#62447)
Currently when Tsurge runs in g3, it creates a bare bones Angular
compiler plugin. The tsconfigs from compilation units may set options
like "useHostForImportGeneration", but the Ngtsc logic doesn't enable
because the `fileNameToModuleName` method is not defined on the host.

This can break reference emission for Tsurge analyzers/programs and
result in subtle differences to real `ng_module` compilations. This
commit fixes this by making the method available in 1P Tsurge.

Notably, reference emission can occur during analysis— so even if
migrations aren't "emitting TS -> JS" output.

PR Close #62447
2025-07-03 09:36:16 +00:00
Matthieu Riegler 50612e68a2 docs(docs-infra): Load of the typing files from Angular. (#62424)
Following some infra changes, DTS files are now splitted over several files, which aren't referenced in the `package.json` but are directly imported in the root dts.

We chose to not use ATA here because it only pulls the latest version from a CDN whereas we prefer to use the local definitions we have in the `node_modules` of the tutorial.

fixes #62374

PR Close #62424
2025-07-03 09:35:35 +00:00
hawkgs 70e4c3f6a6 refactor(devtools): make tree visualizations accessible (#62396)
Improve the accessibility of the SVG tree visualizations by employing `<title>` and `aria-labelledby`.

PR Close #62396
2025-07-03 09:35:03 +00:00
hawkgs 7eb4a07519 refactor(devtools): remove leftover code from router-tree template (#62396)
Remove some SVG visualization leftover code from the template.

PR Close #62396
2025-07-03 09:35:02 +00:00
Jessica Janiuk aad1e747d6 ci: update pullapprove reviewers (#62448)
This sets some people to be reviewers, but not actively requested to account for availability.

PR Close #62448
2025-07-03 09:15:19 +00:00
Matthieu Riegler 08e6e7bf37 docs: display deprecation message for top most symbol (#62427)
For classes, types, functions, enums etc.

fixes #62365

PR Close #62427
2025-07-03 08:35:01 +00:00
Joey Perrott 50a69dee6c build: only require workspace build packages for web tests when provided (#62443)
Only use the builds from the workspace as for the bootstrap scripts for web testing

PR Close #62443
2025-07-03 08:34:25 +00:00
Shuaib Hasan Akib 99069c2252 refactor(docs-infra): removed unused imports (#62441)
Cleans up instances of unused imports in a few shared docs components.

PR Close #62441
2025-07-03 08:11:45 +00:00
Shuaib Hasan Akib 9fc1383115 refactor(docs-infra): cleanup lines in scss (#62438)
Cleans up some of the scss code.

PR Close #62438
2025-07-03 08:11:09 +00:00
Joey Perrott 73434e366f build: migrate all dependencies for adev into adev/package.json (#62435)
Migrate the dependencies into the adev/package.json instead of importing from the the root package.json

PR Close #62435
2025-07-03 08:09:34 +00:00
Joey Perrott 2050ffa691 build: migrate remaing esbuild and nodejs_binary usages to new toolchain (#62435)
Migrate the remaing usages of esbuild and nodejs_binary in adev to the new toolchain versions.

PR Close #62435
2025-07-03 08:09:33 +00:00
Joey Perrott a024c4af77 build: migrate adev to use rules_angular based cli rules (#62435)
Use the @angular/cli rules from rules_angular instead of the npm package directly

PR Close #62435
2025-07-03 08:09:33 +00:00
SkyZeroZx 44a203916a refactor(platform-browser): use RuntimeError for hydration feature conflicts (#62414)
Replace generic Error with RuntimeError

PR Close #62414
2025-07-03 08:08:07 +00:00
SkyZeroZx 1cf9d9064c feat(http): Add support for fetch referrer & integrity options in HttpClient (#62417)
Enhances Angular HttpClient requests with Fetch API referrer and integrity options to optimize security

PR Close #62417
2025-07-03 08:07:36 +00:00
Angular Robot e39bf3cf98 build: update cross-repo angular dependencies to v20.1.0-rc.0 (#62433)
See associated pull request for more information.

PR Close #62433
2025-07-03 07:47:09 +00:00
Paul Gschwendtner b49f2db814 refactor(compiler-cli): do not rely on url when loading file system logic (#62431)
When executing the compiler-cli in the browser, or some parts of it—
modules like `url` are stubbed out with `{}`. This commit accounts for
this.

PR Close #62431
2025-07-02 17:05:28 +00:00
Paul Gschwendtner 0eff1f0353 refactor(compiler-cli): avoid eager typescript top-level usages (#62431)
For some internal refactorings, we want to avoid any direct top-level
`typescript` runtime usages. Usages that interact with `ts` after
synchronous module loading are fine.

More context in:
https://docs.google.com/document/d/1_h8AQRbM3LJrwIlUfGzGzxuwqFu0QI2-5eUTFI6gWws/edit?tab=t.0#heading=h.nunsebe2s3h0.

PR Close #62431
2025-07-02 17:05:28 +00:00
jstnjs 567597a476 docs: fix formatting (#62400)
PR Close #62400
2025-07-02 16:56:24 +00:00
jstnjs f0bcce71ff docs: fix dynamic form reactivity (#62400)
PR Close #62400
2025-07-02 16:56:24 +00:00
Shuaib Hasan Akib cd87a71e19 docs(docs-infra): replace deprecated RouterTestingModule with RouterModule.forRoot([]) (#62364)
PR Close #62364
2025-07-02 16:52:31 +00:00
Joey Perrott 85b3ae2e3e build: migrate devtools to use packaged version of @angular/* packages (#62413)
Use the packaged versions of the packages instead of the local ts_project dependencies to prevent multiple versions of the deps to enter test bundles

PR Close #62413
2025-07-02 16:10:25 +00:00
Joey Perrott 4fae4dbba8 build: migrate adev to use packaged version of @angular/* packages (#62413)
Use the packaged versions of the packages instead of the local ts_project dependencies to prevent multiple versions of the deps to enter test bundles

PR Close #62413
2025-07-02 16:10:25 +00:00
SkyZeroZx 0cdb02aa2b docs: Update documentation httpResource with credentials option (#62415)
PR Close #62415
2025-07-02 14:49:09 +00:00
Kristiyan Kostadinov 8fbe558cbc perf(core): move property remapping for dom properties to compiler (#62421)
Since we know that DOM properties won't go to an inputs, we can move the remapping logic to the compiler, saving us some processing on the client.

PR Close #62421
2025-07-02 14:28:12 +00:00
Milo c30f4eebc1 refactor(devtools): update signal body on change (#62410)
when the epoch of a signal changes, update the preview text

PR Close #62410
2025-07-02 14:27:27 +00:00
Angular Robot d0b7439313 build: update all non-major dependencies (#62419)
See associated pull request for more information.

PR Close #62419
2025-07-02 14:20:48 +00:00
Angular Robot 728ad2ee91 build: update cross-repo angular dependencies (#62425)
See associated pull request for more information.

PR Close #62425
2025-07-02 11:45:01 +00:00
Jessica Janiuk f9abb552ca Revert "fix(service-worker): update service worker to handle seeking better for videos (#60029)" (#62422)
This reverts commit c663277df6.

PR Close #62422
2025-07-02 07:50:14 +00:00
Angular Robot e1991c5b81 build: update cross-repo angular dependencies (#62407)
See associated pull request for more information.

PR Close #62407
2025-07-02 07:43:11 +00:00
hawkgs d9132830f6 refactor(devtools): use responsive-split for the signal graph tab (#62395)
Use responsive-split for the signal graph tab.

PR Close #62395
2025-07-02 07:42:41 +00:00
Doug Parker 40214acf28 release: bump Angular DevTools version to 1.0.37 (#62409)
PR Close #62409
2025-07-01 13:54:53 -07:00
Alan Agius fb1bc99478 ci: fix incorrect base branch in renovate config (#62406)
There is a bug in ng-dev which set the incorrect branch

PR Close #62406
2025-07-01 12:20:51 -07:00
Jessica Janiuk 4ac0147ffe docs: release notes for the v20.1.0-rc.0 release 2025-07-01 19:04:53 +02:00
Jessica Janiuk b67351aa48 release: bump the next branch to v20.2.0-next.0 2025-07-01 19:04:53 +02:00
Jessica Janiuk b8c6cfa346 docs: release notes for the v20.0.6 release 2025-07-01 18:41:29 +02:00
Jessica Janiuk d7b94e0072 refactor(core): rename all animations package symbols (#62399)
Renames all animations package references with a "legacy" prefix for later easy cleanup.

PR Close #62399
2025-07-01 13:45:45 +00:00
SkyZeroZx b6ef42843c feat(http): add credentials support for fetch requests in httpResource (#62390)
This commit adds support for the Fetch API's credentials option when using httpResource with the withFetch provider

PR Close #62390
2025-07-01 13:37:56 +00:00
Matthieu Riegler 1ea65b16d5 docs: update breaking change for nullish coalesching + parenthesis (#62382)
This breakages was introduced by #60169

fixes #62375

PR Close #62382
2025-07-01 09:34:22 +00:00
hawkgs b25fb8ab1e fix(devtools): restore the router tree visualization legend (#62378)
Fixes a regression from #62264

PR Close #62378
2025-07-01 09:23:08 +00:00
SkyZeroZx ecf8b5293a docs: Update documentation http with credentials (#62389)
PR Close #62389
2025-07-01 09:22:08 +00:00
SkyZeroZx cfbbb08437 feat(http): add warning when withCredentials overrides explicit credentials (#62383)
This will prevent confusion and accidentally overriding of credentials.

PR Close #62383
2025-07-01 09:21:35 +00:00
Angular Robot b952982732 build: update github/codeql-action action to v3.29.2 (#62392)
See associated pull request for more information.

PR Close #62392
2025-07-01 08:11:49 +00:00
Angular Robot 12cc13b4d1 build: update dependency @types/node to v24.0.8 (#62391)
See associated pull request for more information.

PR Close #62391
2025-07-01 08:11:19 +00:00
hawkgs e7ff105646 refactor(devtools): convert all inputs to .ng-input (#62376)
Use the newly introduced input design for all inputs across the app.

PR Close #62376
2025-06-30 13:46:07 +00:00
iteriani 35032a6f6a refactor(core): Make it so that injecting with just a token guarantees an instance of the type provided. (#62338)
This allows us to pass in the following

const x = inject(FooService);

and have x be required.

PR Close #62338
2025-06-30 12:06:02 +00:00
SkyZeroZx f0965c7acd feat(http): Add support for fetch credentials options in HttpClient (#62354)
Extend Angular's HttpClient to accept the 'credentials' option from the Fetch API.

PR Close #62354
2025-06-30 10:04:55 +00:00
Matthieu Riegler d283595bfa fix(devtools): sanitize route data. (#62339)
The serialization of route data does not support cyclic data objects. We sanitize nested route data object by replacing invalid values with a placeholder string.

PR Close #62339
2025-06-30 09:31:18 +00:00
Angular Robot a4300a7b6b build: lock file maintenance (#62368)
See associated pull request for more information.

PR Close #62368
2025-06-30 09:09:14 +00:00
Angular Robot 493f25be79 build: update all non-major dependencies (#62355)
See associated pull request for more information.

PR Close #62355
2025-06-30 08:23:50 +00:00
Shuaib Hasan Akib 664ed95a4f refactor(core): update NG0303 error message (#62363)
This adds mention of the `input()` signal function
to the error message.

PR Close #62363
2025-06-30 08:15:11 +00:00
Joan 835dca295e docs: fix broken link on assertNotInReactiveContext ref page (#62360)
PR Close #62360
2025-06-30 08:13:45 +00:00
Veerabhadra Rao Chikka e1856dacf1 docs: update router read-route-state.md file (#62367)
ActivedRoute variable name updated to route

PR Close #62367
2025-06-30 08:05:46 +00:00
SkyZeroZx 9f092e7d11 docs: Update documentation http with mode & redirect options (#62366)
PR Close #62366
2025-06-30 07:59:45 +00:00
aliroshandev ff7439f830 docs: fix syntax error in tutorial (#62361)
PR Close #62361
2025-06-30 07:58:19 +00:00
Angular Robot 08e2d9dccb build: update rules_browsers digest to 800d91c (#62358)
See associated pull request for more information.

PR Close #62358
2025-06-30 07:43:24 +00:00
Angular Robot e60cfffc7c build: update cross-repo angular dependencies (#62349)
See associated pull request for more information.

PR Close #62349
2025-06-30 07:41:39 +00:00
hawkgs 3eec4badab refactor(devtools): abstract and reuse the tree visualizer (#62264)
Abstract the injector tree visualizer so it can be used for both the Injector Tree and Router Tree tabs without having to rely on separate identical implementations.

PR Close #62264
2025-06-30 07:39:16 +00:00
Doug Parker e63cd1f405 docs: update Angular DevTools release docs (#62352)
This makes few edits based on feedback and observations from a previous release:
1.  Moves `git pull` command before initial `git log` to make sure we're up to date before checking if a release is necessary.
2.  Updates both `git log` commands to limit to `fix`, `feat`, and `perf` changes. This ignores more than just `refactor`, such as `build`, `ci`, etc. and should be more meaningful to end users.
    *   I considered doing something with `Revert` commits, but opted not to. Instead, it will treat this just like their original commit. This does mean we might send a slightly more complicated changelog than it needs to be, but it's not worth making these commands even weirder.
3.  Removes install step prior to bumping the version numbers, as its just not needed and we have to reinstall later anyways.
4.  Switches PR target from `patch` to `minor`. We only need to merge this to the `main` branch, and it's not worth the effort to keep the `patch` branch in sync.
5.  Switches source code zip command to `git archive`. This is more portable than `zip *`, which depends on the shell configuration to determine what is included in `*` (mainly whether or not that includes dotfiles such as `.nvmrc` and `.bazelrc`).

PR Close #62352
2025-06-30 07:36:19 +00:00
Joey Perrott 059fb06b9f build: migrate modules to use @rules_browsers protractor rules (#62342)
Use the protractor rules from `@rules_browsers` for the module directory.

PR Close #62342
2025-06-27 22:27:08 +00:00
Jan Martin 53575390f4 ci: add jkrems to pullapprove (public-api) (#62340)
Allow jkrems to (co-)approve public-api changes.

PR Close #62340
2025-06-27 18:37:00 +00:00
Doug Parker 32ca3ff7de release: bump Angular DevTools version to 1.0.36 (#62341)
PR Close #62341
2025-06-27 11:32:40 -07:00
SkyZeroZx 27b7ec0a62 feat(http): add mode & redirect for fetch request in httpResource (#62337)
This commit adds support for the Fetch API's mode & redirect options when using httpResource with the withFetch provider

PR Close #62337
2025-06-27 15:01:52 +00:00
SkyZeroZx b2afa11397 docs: Update documentation http making request (#62336)
PR Close #62336
2025-06-27 13:29:33 +00:00
hawkgs f10e1bc53c fix(devtools): profiler records only the first frames from the stream (#62335)
Fixes a regression from #62215 where the profiler records only the first emitted frames from the stream.

PR Close #62335
2025-06-27 13:19:29 +00:00
SkyZeroZx 87322449a3 feat(http): add support for fetch mode and redirect options in HttpClient (#62315)
Add support for mode and redirect options in Angular's HttpClient based on fech provider to enable control CORS behavior and redirect handling

PR Close #62315
2025-06-27 13:16:25 +00:00
hawkgs f9435050d8 refactor(devtools): main nav (#62242)
Keep only the navigation elements within the `nav` rather than all toolbar elements.

PR Close #62242
2025-06-27 13:07:46 +00:00
hawkgs fd7650c404 refactor(devtools): update profiler recorder icons (#62246)
Update the recorder controls icons to match better the presented actions.

PR Close #62246
2025-06-27 13:04:53 +00:00
SkyZeroZx 6ec2900f90 docs: Update documentation httpResource with cache & priority feature (#62334)
PR Close #62334
2025-06-27 12:51:46 +00:00
Michael Small 7077520ca8 docs: add page NG8115 (uninvokedTrackFunction) (#61962)
Pull request that added the diagnostic:

https://github.com/angular/angular/pull/60495

PR Close #61962
2025-06-27 11:54:41 +00:00
Angular Robot 599baa24a2 build: update github/codeql-action action to v3.29.1 (#62331)
See associated pull request for more information.

PR Close #62331
2025-06-27 11:23:26 +00:00
Matthieu Riegler aa861c42ff feat(http): add timeout option on httpResource. (#62326)
This uses the option that was introduction on the HttpClient

PR Close #62326
2025-06-27 11:21:59 +00:00
Angular Robot 0390bd978e build: update cross-repo angular dependencies (#62329)
See associated pull request for more information.

PR Close #62329
2025-06-27 11:20:50 +00:00
iteriani f849803f79 refactor(core): Add return value for defineInjectable. (#62303)
This allows the return value of this function to be passed into registerInjectable.

PR Close #62303
2025-06-27 10:34:14 +00:00
Angular Robot a63c22ce46 build: update rules_sass digest to cc1e845 (#62327)
See associated pull request for more information.

PR Close #62327
2025-06-27 10:30:52 +00:00
Vincent c4cffe2063 feat(http): Add timeout option to HTTP requests (#57194)
Add timeout option to both XHR and fetch backends.

PR Close #57194
2025-06-27 09:56:25 +00:00
SkyZeroZx 55fa38a1e5 feat(http): add cache & priority support for fetch requests in httpResource (#62301)
This commit adds support for the Fetch API's cache & priority options when using httpResource with the withFetch provider

PR Close #62301
2025-06-27 09:51:31 +00:00
hawkgs e8addbf8c7 refactor(devtools): improve flamegraph UI by employing the new flamegraph API (#62299)
Use colors from the existing color palette and enable tooltips.

PR Close #62299
2025-06-27 09:27:11 +00:00
Joey Perrott 1d3449c0ce build: migrate devtools to use new sass ruleset (#62297)
Use the new sass ruleset for bazel sass building in devtools

PR Close #62297
2025-06-27 09:25:43 +00:00
Joey Perrott ad89f80969 build: migrate adev to use new sass ruleset (#62297)
Use the new sass ruleset for bazel sass building in adev

PR Close #62297
2025-06-27 09:25:43 +00:00
Angular Robot 5ccb81ec59 build: update dependency marked to v16 (#62320)
See associated pull request for more information.

PR Close #62320
2025-06-27 08:59:21 +00:00
Angular Robot df1a61fea2 build: update all non-major dependencies (#62323)
See associated pull request for more information.

Closes #62317 as a pr takeover

PR Close #62323
2025-06-27 08:35:22 +00:00
Matthieu Riegler 9afc00f3e8 docs: remove list of APIs with a providers array. (#62296)
fixes #62295

PR Close #62296
2025-06-27 07:45:23 +00:00
Jessica Janiuk 8f12a360a5 ci: restore flamegraph dep (#62304)
The flamegraph dep was fixed upstream.

PR Close #62304
2025-06-27 07:23:18 +00:00
Angular Robot eaa454d74b build: update cross-repo angular dependencies (#62312)
See associated pull request for more information.

PR Close #62312
2025-06-27 07:20:39 +00:00
Joey Perrott 90cb49462b build: migrate to @devinfra for toolchains (#62302)
Migrate the toolchains we depend on to use @devinfra instead of @npm//

PR Close #62302
2025-06-27 07:19:18 +00:00
Joey Perrott bc4091ec44 build: migrate integration tests to use @devinfra dependencies (#62302)
Use @devinfra// dependencies for integration tests

PR Close #62302
2025-06-27 07:19:18 +00:00
Can Özkan a952433e64 docs: use correct link for best-practices.md (#62306)
PR Close #62306
2025-06-27 07:18:45 +00:00
Joey Perrott b84859073b build: migrate to use web test runner rules (#62292)
Migrate karma tests throughout the repo to use the new web test runner based rule instead

PR Close #62292
2025-06-26 17:19:10 +00:00
iteriani ec01599987 refactor(core): Add Constructor type to injection types (#62265)
This allows us to pass in constructors into the inject function

PR Close #62265
2025-06-26 15:55:23 +00:00
anastasiaanisimova 402eaa1c85 docs: fix deferrable views doc links (#62293)
PR Close #62293
2025-06-26 14:34:44 +00:00
arturovt 13875d0140 refactor(common): remove redundant ɵloadImpl check in client bundles (#62191)
In this commit, the conditional branching around `ɵloadImpl` is removed from client-side code, as `ɵloadImpl` is never defined in client bundles. This makes the logic simpler and improves tree-shaking, allowing the `from()` import to be dropped from the common bundle in browser builds.

PR Close #62191
2025-06-26 12:02:51 +00:00
arturovt 4def2a79de refactor(common): replace forEach with index loop for Domino compatibility (#62290)
In this commit, the use of `images.forEach` was replaced with a traditional `for (let i = 0; ...)` loop to ensure compatibility with Domino. Domino may return a custom internal data structure (e.g., a lazily evaluated query result) that does not fully support standard iteration protocols like `forEach` or `for...of`.

Naturally, this would never happen in any browser. It occurs only in unit tests when using `renderApplication()`, because Domino's `querySelectorAll` returns the following:

```js
var nodes = select(selector, context);
return nodes.item ? nodes : new NodeList(nodes);
```

In certain unit tests, it returns an object like:
`{ root: document, filter: function(e) { ... }, lastModTime: 1, done: true, cache: [] }`,
which means that the object does not have a `forEach` method.

As a result, this causes an `afterAll` error: `forEach is not a function`.

PR Close #62290
2025-06-26 12:01:36 +00:00
Jessica Janiuk c87f367f46 ci: remove artifacts job (#62291)
Remove the artifacts job.

PR Close #62291
2025-06-26 12:01:00 +00:00
Angular Robot 349719cbea build: update cross-repo angular dependencies (#62288)
See associated pull request for more information.

PR Close #62288
2025-06-26 11:43:35 +00:00
Angular Robot cd30c4d40b build: update dependency rollup to v4.44.1 (#62285)
See associated pull request for more information.

PR Close #62285
2025-06-26 10:24:27 +00:00
Jessica Janiuk f1deaba004 ci: temp add flamegraph dep to ignoredDeps (#62287)
there is a bad flamegraph release and we need to ignore it for now.

PR Close #62287
2025-06-26 09:22:44 +00:00
SkyZeroZx 3a002c2db4 docs: Update documentation httpResource with keepalive feature (#62278)
PR Close #62278
2025-06-26 08:59:00 +00:00
Angular Robot c5c9b0b4c8 build: update rules_browsers digest to 0952071 (#62279)
See associated pull request for more information.

PR Close #62279
2025-06-26 08:19:46 +00:00
Angular Robot 0a01f5b6b0 build: update cross-repo angular dependencies (#62273)
See associated pull request for more information.

PR Close #62273
2025-06-26 08:18:22 +00:00
Matthieu Riegler d3affa562f docs: add ai best practices link to first-app tutorial intro (#62140)
PR Close #62140
2025-06-26 08:13:17 +00:00
Matthieu Riegler bfb190ec87 docs: add best practices links in the learn-angular tutorial introduction. (#62139)
PR Close #62139
2025-06-26 08:12:42 +00:00
Jan Martin 556f8ebe7b release: bump Angular DevTools version to 1.0.35 (#62271)
PR Close #62271
2025-06-26 08:10:52 +00:00
lilbeqiri 85fe323c4e refactor(devtools): inject number and symbol values with injection tokens (#56898)
Handle injecting number and symbol values with injection tokens and update contributing file

PR Close #56898
2025-06-25 17:02:54 +00:00
Tristan Bastian 58aedc37d1 feat(common): add support for a custom EnvironmentInjector to NgComponentOutlet directive (#54764)
Signed-off-by: Tristan Bastian <tristan.bastian@cumulocity.com>

PR Close #54764
2025-06-25 17:02:19 +00:00
Mansi Shrivastava 7426dbbd56 refactor(common): allow HttpErrorResponse with successful status codes (#61107)
This adds the ability to mock out errors even when successful status codes are returned.

Fixes #26161

PR Close #61107
2025-06-25 17:01:18 +00:00
Rodrigo Damazio Bovendorp 61f0ba8895 docs(core): mark after{Next,Every}Render overloads as stable (#62153)
Your blog post signaled that afterNextRender and afterEveryRender
are now stable:
https://angular.love/angular-20-whats-new#Signal%20related%20APIs

However, only 1 of the overloads of those was marked as stable.

I detected this because angular-eslint errors on calls even to
to the publicApi overload - and while that should probably be
fixed on their end, your announcement wasn't specific about only
one overload being stable, so I assume this was an oversight.

angular-eslint related issue:
https://github.com/angular-eslint/angular-eslint/issues/2534

PR Close #62153
2025-06-25 17:00:19 +00:00
Kristiyan Kostadinov 089ad0ee15 fix(compiler): produce more accurate errors for interpolations (#62258)
Currently when there's a parser error in interpolated text, the compiler reports an error on the entire text node. This can be really noisy in long strings.

These changes switch to reporting the errors on the specific expressions that caused them.

PR Close #62258
2025-06-25 16:58:56 +00:00
Jessica Janiuk f1d7ac9f1a release: cut the v20.1.0-next.3 release 2025-06-25 18:54:13 +02:00
Jessica Janiuk b23a912abc docs: release notes for the v20.0.5 release 2025-06-25 18:47:30 +02:00
iteriani ba755830be refactor(core): Add injection primitives for shared services. (#62087)
This way, an arbitrary service can implement Angular's service requirements without a hard dependency on @angular/core

ex:

class Foo {
   bar = inject(Bar);
}

registerInjectable(Foo);

PR Close #62087
2025-06-25 14:57:57 +00:00
Matthieu Riegler 36a193139a fix(core): allow to set a resource in an error state (#62253)
A resource is error state should still remain writable.

fixes #62241

PR Close #62253
2025-06-25 13:20:42 +00:00
Angular Robot 2a1a034a11 build: update cross-repo angular dependencies (#62262)
See associated pull request for more information.

PR Close #62262
2025-06-25 13:18:55 +00:00
Jessica Janiuk 1bf1fb2ad7 ci: Update pullapprove ownership for compiler and zonejs (#62261)
This updates the zone.js owners and adds thePunderWoman to compiler approvers.

PR Close #62261
2025-06-25 12:46:40 +00:00
Matthieu Riegler 4f0126e76a docs: fix deprecation message on ngIf/ngSwitch (#62149)
fixes #62147

PR Close #62149
2025-06-25 11:22:15 +00:00
arturovt f1b8ac6150 refactor(common): move ngServerMode check outside tap() to enable tree-shaking (#62238)
In this commit, the `ngServerMode` check is moved outside the RxJS `pipe()` to ensure that server-only logic is excluded from client bundles. Previously, the `tap()` operator and its closure were always included in the output, even though `ngServerMode` was false on the client and the side effect was never triggered.

By guarding the observable chain earlier, this reduces the RxJS stack frame depth, which simplifies debugging by avoiding unnecessary operator noise in client-side stack traces.

The resulting logic is also easier to reason about and avoids evaluating `HttpResponse` instances where not needed.

PR Close #62238
2025-06-25 11:13:21 +00:00
Jannik Lassahn b489f9fa8f refactor(language-service): add methods for decoding classifications to public api (#62251)
Add methods for decoding classifications to public api for use in the
language server

PR Close #62251
2025-06-25 09:46:53 +00:00
SkyZeroZx 9791ab1b6f feat(http): Add support for fetch request cache and priority options (#61766)
Enhances Angular HttpClient requests with Fetch API cache and priority options to optimize loading and performance.

PR Close #61766
2025-06-25 09:46:21 +00:00
SkyZeroZx 73269cf5ce feat(http): add keepalive support for fetch requests in httpResource (#61833)
This commit adds support for the Fetch API's keepalive option when using httpResource with the withFetch provider

PR Close #61833
2025-06-25 09:14:26 +00:00
Matthieu Riegler 5ac5c51c1c docs: add llms context files entries (#62224)
This commit adds copilot, vscode & windsuft

PR Close #62224
2025-06-25 09:13:53 +00:00
Angular Robot 0d59bc5e38 build: update dependency node to v22.17.0 (#62256)
See associated pull request for more information.

PR Close #62256
2025-06-25 09:12:25 +00:00
Jannik Lassahn 20c1f991e6 feat(language-service): add semantic tokens for templates (#60260)
Adds support for `getEncodedSemanticClassifications` to the language service.
The service now classifies components in a template as the `class` type.

PR Close #60260
2025-06-24 16:27:46 +00:00
hawkgs 54f3571a35 fix(devtools): injector tree vis node snap/focus, vertical orientation and links (#62048)
1. Fix node coordinates origin – now X and Y represent the exact center of the node
2. Improve links – they now start and end precisely at the nodes' edges
3. Fix node click to zoom/focus/snap (thanks to 1.)
4. Fix vertical orientation links

PR Close #62048
2025-06-24 16:27:07 +00:00
Angular Robot cb97cf86d2 build: update cross-repo angular dependencies (#62247)
See associated pull request for more information.

PR Close #62247
2025-06-24 16:25:37 +00:00
Jessica Janiuk 08276b5655 Revert "test(devtools): revive cypress tests (#61972)" (#62243)
This reverts commit 75d246e03c.

PR Close #62243
2025-06-24 15:03:46 +00:00
AleksanderBodurri 75d246e03c test(devtools): revive cypress tests (#61972)
Previously these tests would run automatically when Angular DevTools lived in another repo. These files have continued to live here but have not been running automatically on each PR.

Now, these test files have been revived to run properly with our changes since the repo merge. This is a first step to reviving our e2e testing.

Next steps include writing cypress tests for new features like Injector Graph, Router tree, signals visualizations, etc.

PR Close #61972
2025-06-24 14:22:21 +00:00
arturovt c4dd258658 fix(core): avoid injecting ErrorHandler from a destroyed injector (#61886)
This commit prevents lazy injection of the internal `ErrorHandler` from a destroyed injector, as it would result in another "destroyed injector" error.

PR Close #61886
2025-06-24 14:13:34 +00:00
Gerome Grignon d3b069334f docs(core): migrate @Input examples to Signal inputs (#62070)
PR Close #62070
2025-06-24 14:11:55 +00:00
Andrew Scott 737b35b684 feat(core): Add destroyed property to EnvironmentInjector (#61951)
Similar to `DestroyRef`, this adds the `destroyed` property to
`EnvironmentInjector`. It also has the ability to register callbacks with
`onDestroy`, which throws if `destroyed` is already `true`.

This also omits the bit about whether those callbacks have executed
since I realized the property is set to `true` before executing the
callbacks.

PR Close #61951
2025-06-24 14:09:10 +00:00
hawkgs bd4e089018 refactor(devtools): use Material Symbols without fill (#62028)
Substitute the local `woff2` file with a `FILL 0` version of Material Symbols.

PR Close #62028
2025-06-24 14:07:00 +00:00
hawkgs 1b97c60835 build(devtools): fix ng-devtools source maps (#62042)
Inline the sources contents in the `js.map` files. This fixes the source maps for the dev app.

PR Close #62042
2025-06-24 14:06:25 +00:00
guimasi1 ea71a1e8cd docs: remove incorrectly listed operators in "Supported operators" table (Expression Syntax Guide) (#62092)
PR Close #62092
2025-06-24 14:04:44 +00:00
hawkgs 29223931da fix(devtools): zone.js not being loaded for dev and prod builds (#62239)
Fixes a regression from #62083 by updating the remaining script imports.

PR Close #62239
2025-06-24 14:04:04 +00:00
arturovt 7600bec71d fix(router): handle scrollRestoration error in restricted environments (#62186)
In this commit, setting `window.history.scrollRestoration` is wrapped in a try-catch block to prevent `SecurityError` exceptions in restricted contexts such as:

- sandboxed iframes
- partially navigated or inactive windows
- test runners, extensions, or content previews

If an error occurs, a runtime warning with error code [2400] is logged to the console. This avoids breaking app initialization and improves cross-browser safety.

Unfortunately, it's not possible to perform any end-to-end testing of this fix.

PR Close #62186
2025-06-24 12:24:43 +00:00
arturovt 21dfbf3ada refactor(core): drop injection context assertion in production (#62038)
Drops `assertInInjectionContext` call in production in `afterNextRender`.

PR Close #62038
2025-06-24 12:24:09 +00:00
Alan Agius 8d049f533a build: update jest monorepo to v30 (#62234)
See associated pull request for more information.

Closes #61980 as a pr takeover

PR Close #62234
2025-06-24 10:49:30 +00:00
hawkgs e3e9e37c42 refactor(devtools): improve profiler visualizations (#62215)
Improve the profiler's visualization modes visually.

PR Close #62215
2025-06-24 10:48:44 +00:00
hawkgs 505da620ff refactor(devtools): refine and improve the new profiler layout (#62215)
Improve the styles and the components' layout in general.

PR Close #62215
2025-06-24 10:48:44 +00:00
hawkgs 2788544c6a refactor(devtools): introduce input styles (#62215)
Add global styles for input elements.

PR Close #62215
2025-06-24 10:48:44 +00:00
hawkgs 2fc176d7fe refactor(devtools): restructure profiler UI (#62215)
Reposition the components in order to optimize the space and improve logical structure.

PR Close #62215
2025-06-24 10:48:44 +00:00
Joey Perrott 78ec6ef896 build: move dependencies on npm package of dev-infra to workspace dependency (#62083)
Move from relying on the @npm// dependencies to aspect node modules where possible

PR Close #62083
2025-06-24 10:46:13 +00:00
Walter Breakell 16ed7f50de docs: update link to cache options (#62187)
PR Close #62187
2025-06-24 10:42:20 +00:00
Shuaib Hasan Akib 07df4e14a1 docs(docs-infra): replace StarWars API endpoint (#62223)
PR Close #62223
2025-06-24 09:54:02 +00:00
Edison Augusthy a1d078b461 docs: updated angular cli link to point to new website (#62059)
PR Close #62059
2025-06-24 09:53:27 +00:00
Angular Robot 15b37a4e06 build: update rules_angular digest to 88ddcf8 (#62230)
See associated pull request for more information.

PR Close #62230
2025-06-24 09:51:50 +00:00
Milo c4df77f4e5 feat(devtools): add an experimental signals toggle (#62218)
create an experimental toggle to allow opening the signals graph view

PR Close #62218
2025-06-24 09:41:10 +00:00
Andrew Scott 9833d9ea47 feat(router): Run loadComponent and loadChildren functions in the route's injection context (#62133)
This updates the loader code to run the `loadComponent` and
`loadChildren` functions in the appropriate injection context for the
route.

A primary motiviation for this feature is to bring `loadChildren` with
standalone components and the routes array to
feature-parity with what was possible when using `loadChildren` and a
module that provided routes via the `ROUTES` token and a factory
function (which would have injection context).

fixes #51532

PR Close #62133
2025-06-24 09:39:48 +00:00
soongxian 9c2a96d125 docs: fixed grammar and spelling errors in contributing-docs folder (#62196)
PR Close #62196
2025-06-24 09:39:07 +00:00
Angular Robot 7d2e942653 build: lock file maintenance (#62202)
See associated pull request for more information.

PR Close #62202
2025-06-24 09:37:35 +00:00
Angular Robot 1cff7cf5e3 build: update cross-repo angular dependencies to db18d71 (#62199)
See associated pull request for more information.

PR Close #62199
2025-06-24 08:52:57 +00:00
Saujan Ghimire d4b96f8c20 docs: embeded best practices in page (#62173) (#62198)
PR Close #62198
2025-06-24 08:52:24 +00:00
Matthieu Riegler b60889accf docs: add link to ai best practices in instalation guide (#62138)
PR Close #62138
2025-06-24 08:49:52 +00:00
Jens Kuehlers 3eca8b1d2f docs: add v21 dates (#62216)
PR Close #62216
2025-06-24 08:49:11 +00:00
Joey Perrott 36d5048429 build: migrate final non-zone.js jasmine tests (#62169)
Migrate the final remaining non-zone.js package jasmine tests to the new toolchain

PR Close #62169
2025-06-24 08:46:39 +00:00
Matthieu Riegler 585bf9c054 docs: improve docs for withComponentInputBinding (#61689)
Add mention about inputs potentially becoming `undefined`.

PR Close #61689
2025-06-24 08:46:07 +00:00
Kristiyan Kostadinov 8ce6ca90be build: update ng-dev (#62227)
Updates `ng-dev` in order to get the latest features.

PR Close #62227
2025-06-24 09:15:52 +02:00
Kristiyan Kostadinov a40abf09f1 build: fix failing test (#62214)
Fixes a test that's failing, because a few PRs landed at the same time.

PR Close #62214
2025-06-23 15:38:18 +02:00
Kristiyan Kostadinov d25a6a0120 fix(compiler-cli): handle initializer APIs wrapped in type casts (#62203)
Fixes that the logic recognizing initializer APIs didn't account for the expression being wrapped in an `as` expresion or in a parenthesized expression. This was already accounted for in the diagnostic so these changes align the behavior between them.

Fixes #62197.

PR Close #62203
2025-06-23 14:26:05 +02:00
Kristiyan Kostadinov 223279eaf5 refactor(compiler): remove TranslationParseError (#62160)
Replaces the `TranslationParseError` with `ParseError` since it wasn't adding much on top of `ParseError`.

PR Close #62160
2025-06-23 14:25:28 +02:00
Kristiyan Kostadinov d1cb44d60a refactor(compiler): remove I18nError (#62160)
Removes the `I18nError` class since it wasn't being used for anything aside from a wrapper.

PR Close #62160
2025-06-23 14:25:28 +02:00
Kristiyan Kostadinov 982f90ff35 refactor(compiler): remove TokenError (#62160)
Replaces the `TokenError` class with `ParseError` to reduce the number of error classes we need to maintain.

PR Close #62160
2025-06-23 14:25:28 +02:00
Kristiyan Kostadinov bcde744e0a refactor(compiler): remove _ControlFlowError (#62160)
Removes the `_ControlFlowError`, because its name is confusing and it's just a wrapper around `TokenError`.

PR Close #62160
2025-06-23 14:25:28 +02:00
Kristiyan Kostadinov 5e9707dc84 refactor(compiler): consolidate error classes (#62160)
Currently we have a `ParserError` that is used for the expression parser and a `ParseError` that is used everywhere else. These changes consolidate them into the `ParseError` to avoid confusion and make it easier to add more context in the future.

PR Close #62160
2025-06-23 14:25:28 +02:00
Kristiyan Kostadinov 3eee19d892 fix(core): unable to retrieve defer blocks in tests when component injects ViewContainerRef (#62156)
Fixes that `getDeferBlocks` wasn't accounting for the case where a component might be injecting `ViewContainerRef`. When that happens, an additional wrapper is introduced that needs to be accounted for when traversing the tree.

Fixes #62047.

PR Close #62156
2025-06-23 14:24:46 +02:00
Kristiyan Kostadinov 6b5e6b7ff7 refactor(compiler): always generate DOM-only templates for blocks (#62096)
Block templates can't have directives so we can always generate them as DOM-only.

PR Close #62096
2025-06-23 14:24:09 +02:00
Kristiyan Kostadinov 2b4b98ded6 refactor(compiler): produce DOM-only instructions (#62096)
Reworks the compiler so that it produces DOM-only instructions and updates the relevant tests.

PR Close #62096
2025-06-23 14:24:09 +02:00
Kristiyan Kostadinov 3afd3046d7 refactor(compiler): track whether component has directive dependencies (#62096)
Adds a field to the directive's metadata tracking whether it has directive dependencies. Knowing this will allow the pipeline to decide whether to produce DOM-only or full instructions.

PR Close #62096
2025-06-23 14:24:09 +02:00
Kristiyan Kostadinov 8e5b70f80b refactor(core): expose DOM-only instructions to the compiler (#62096)
Makes it possible for the compiler to reference DOM-only instructions.

PR Close #62096
2025-06-23 14:24:09 +02:00
Kristiyan Kostadinov 96b0295f12 refactor(core): properly handle local references in DOM-only instructions (#62096)
Fixes that local references weren't working correctly in DOM-only instructions.

PR Close #62096
2025-06-23 14:24:09 +02:00
Kristiyan Kostadinov f5180b6532 build: switch benchmarks to standalone (#62096)
Updates the `js-web-frameworks` and `largetable` benchmarks to use standalone which helps us benchmark the DOM-only instructions.

PR Close #62096
2025-06-23 14:24:09 +02:00
Kristiyan Kostadinov 9974af56ec docs: update expression syntax table (#62064)
Updates the table showing expression syntax to include the new binary operators. Also updates the table of unsupported syntax.

PR Close #62064
2025-06-23 14:23:29 +02:00
Kristiyan Kostadinov 0dcf230d52 feat(compiler): add support for new binary assignment operators (#62064)
Updates the remainder of the compiler to handle the new assignment operators and sets up more tests, including for the runtime.

PR Close #62064
2025-06-23 14:23:29 +02:00
Kristiyan Kostadinov 998b00e62f refactor(compiler): implement new binary operators in output AST (#62064)
Updates the output AST to support the new set of binary operators.

PR Close #62064
2025-06-23 14:23:29 +02:00
Kristiyan Kostadinov 0213cd23ff refactor(compiler): support new assignment operators in expression parser (#62064)
Updates the expression parser to account for the new assignment operators that were added to the lexer.

PR Close #62064
2025-06-23 14:23:29 +02:00
Kristiyan Kostadinov cf3b583b43 refactor(compiler): support more assignment operators in lexer (#62064)
Adds support for the `+=`, `-=`, `*=`, `/=`, `%=`, `**=`, `&&=`, `||=` and `??=` assignment operators to the lexer.

PR Close #62064
2025-06-23 14:23:28 +02:00
Matthieu Riegler c1dc2a1a67 docs(docs-infra): remove greek site. (#62201)
The site was not up-to-date and often wasn't accessible due to quota limits

PR Close #62201
2025-06-23 14:20:10 +02:00
Matthieu Riegler 44782beea7 docs(docs-infra): fix & simplify scrolling for code blocks (#62179)
PR Close #62179
2025-06-23 14:19:34 +02:00
Matthieu Riegler 5f31bbac65 docs: add css to the supported language for highligting in docs-code (#62178)
css usage was introduced by #60984

PR Close #62178
2025-06-23 14:18:53 +02:00
Andrew Scott c5fcb9d7f4 test(router): Add test for empty path redirect and no match (#62176)
this was discovered during some other work in the router that unintentionally changed this behavior

PR Close #62176
2025-06-23 14:18:12 +02:00
Ankita Sood a7d7f8f1a4 docs(router): consitent usage of self-closing tags (#62165)
PR Close #62165
2025-06-23 14:17:44 +02:00
ivanwonder ac1d400306 refactor(language-service): resolve module specifier for a directive exported by multiple different files (#62100)
When providing the code action for the directive that is exported by multiple modules
in different files, the directive must save all the TS completion entry data
for every module to compute the module specifier.

When providing a completion item, because the LS only supports displaying one directive
at a time, the first one will be picked.

PR Close #62100
2025-06-23 14:16:30 +02:00
Kristiyan Kostadinov f364d5020d build: remove unused dependency (#62206)
Removes the `google-closure-compiler` dependency that keeps getting updated by the bot, even though we don't actually use it.

PR Close #62206
2025-06-23 13:14:57 +02:00
Andrew Kushnir 4c14503efb Revert "docs: embeded best practices in page (#62173)" (#62193)
This reverts commit 286f9f573e.

PR Close #62193
2025-06-22 09:14:11 -07:00
Matthieu Riegler 152ff0cd8e docs: fix link to http-resource guide (#62180)
fixes #62177

PR Close #62180
2025-06-20 18:25:42 -07:00
Matthieu Riegler 286f9f573e docs: embeded best practices in page (#62173)
PR Close #62173
2025-06-20 15:29:24 -07:00
Angular Robot fec2ee1796 build: update cross-repo angular dependencies (#62162)
See associated pull request for more information.

PR Close #62162
2025-06-20 14:42:48 -07:00
Ben Hong 4a27886170 docs: add dedicated route guards guide (#62104)
docs: fix reference

Co-authored-by: Matthieu Riegler <kyro38@gmail.com>

docs: grammar fix

Co-authored-by: Jeremy Elbourn

docs: update docs reference

Co-authored-by: Andrew Scott <atscott01@gmail.com>

docs: update docs reference

Co-authored-by: Andrew Scott <atscott01@gmail.com>

docs: update docs reference

Co-authored-by: Andrew Scott <atscott01@gmail.com>

docs: update docs reference

Co-authored-by: Andrew Scott <atscott01@gmail.com>

docs: update route guard title

docs: update route guard types to table

docs: improve phrasing on activated route snapshot description

docs: improve comments to explain how route guard child works

docs: enhance route guards with more explainers and examples

PR Close #62104
2025-06-20 14:42:11 -07:00
Andrew Scott 9cc7c5f38e test(router): Update timeouts to reduce firefox flakiness (#62141)
This updates the timeouts in a couple flakey router tests. Ideally we can use the jasmine
auto ticking as soon as tests are migrated to web test runner and we are on the latest
version of jasmine

PR Close #62141
2025-06-20 14:39:35 -07:00
Angular Robot f11b3f9d2e docs: update Angular CLI help (#62166)
Updated Angular CLI help contents.

PR Close #62166
2025-06-20 13:05:03 -07:00
Angular Robot f8a90c9eaa build: update dependency rollup to v4.44.0 (#62144)
See associated pull request for more information.

PR Close #62144
2025-06-20 12:08:17 -07:00
Ben Hong 9267ff0070 docs: update phrasing and fix code snippet (#62031)
docs: improve phrasing on required

Co-authored-by: Matthieu Riegler <kyro38@gmail.com>

refactor: remove standalone flag

docs: remove unnecessary standalone in tutorial code

PR Close #62031
2025-06-20 12:06:16 -07:00
Matthieu Riegler fdeb1936e0 docs: rename prompt guide to "LLM prompts and IDE setup" (#62171)
PR Close #62171
2025-06-20 12:00:04 -07:00
Jan-Niklas Wortmann 3ecfa9c2bf docs: add JetBrains Junie guidelines (#62161)
PR Close #62161
2025-06-20 11:05:52 -07:00
Kristiyan Kostadinov ed5062a91c fix(compiler-cli): add suggestion when pipe is missing (#62146)
Adds some suggestions for potential pipes to be imported when raising the missing pipe diagnostic.

Fixes #62136.

PR Close #62146
2025-06-20 10:30:04 +02:00
Shuaib Hasan Akib 02da44c4c6 docs(docs-infra): fix spelling mistake (#62154)
PR Close #62154
2025-06-20 10:29:18 +02:00
Andrew Scott fa5ae9228d refactor(core): update FakeNavigation to the latest spec (#62017)
Spec updates are in https://github.com/whatwg/html/pull/10919

For the most part, the updates revolve around the deferred commit
handling (with precommitHandler). Updates to redirect allow more
options. A committed promise now exists on the transition since commits
can be delayed. Tests were made zoneless for easier debugging and
timeouts were reduced.

PR Close #62017
2025-06-19 15:10:41 +02:00
Andrew Scott 900cd37f68 fix(upgrade): Make zoneless work with hybrid apps (#61660)
Hybrid applications trigger a digest when `onMicrotaskEmpty` emits so
that the AngularJS app can run its lifecycle when the Angular app does. For
ZoneJS applications, this is effectively after every render/app tick. This change
updates the code to use `afterEveryRender` instead.

fixes #61640

PR Close #61660
2025-06-19 14:25:48 +02:00
Islam Benkhelifa acfedcef51 docs: Update define-routes.md (#62069)
Nested routes example missing curly braces

PR Close #62069
2025-06-19 13:10:46 +02:00
Matthieu Riegler a7e4b3e09a docs(docs-infra): fix code-editor flakiness (#62143)
PR Close #62143
2025-06-19 12:37:40 +02:00
AleksanderBodurri f30bd26b0a fix(devtools): implement signal read error handling in DevTools (#61911)
Fixes: #61900

Previously in DevTools we would read signal values to display preview values in the UI without safely catching any errors thrown in their evaluations.

Now those signal functions are run in a safe context, their errors are caught and handled in the UI as well as replayed in the console.

PR Close #61911
2025-06-19 10:15:39 +02:00
ivanwonder 5d2e85920e feat(language-service): support to fix missing required inputs diagnostic (#50911)
Support to add the missing required inputs into the element and append
after the last attribute of the element.

But it skips the structural directive shorthand attribute. For example,
`<a *ngFor=""></a>`, its shorthand is `<ng-template ngFor>`, the `valueSpan`
of the `ngFor` is empty, and the info is lost, so it can't use to insert
the missing attribute after it.

PR Close #50911
2025-06-19 10:13:26 +02:00
Angular Robot 0cd6f363ca build: update cross-repo angular dependencies (#62079)
See associated pull request for more information.

PR Close #62079
2025-06-19 10:12:19 +02:00
Milo 24d299ea97 refactor(devtools): connect signal graph into directive explorer (#62108)
add an open signal graph button that can be enabled from
devtools-tabs, display the signal graph in a split pane

PR Close #62108
2025-06-19 10:09:21 +02:00
Shuaib Hasan Akib bbd253b391 docs(docs-infra): fix spelling mistake (#62126)
PR Close #62126
2025-06-19 10:07:41 +02:00
Joey Perrott 557ac51c32 build: migrate to using new jasmine_test (#62131)
Migrate additional targets to jasmine_test

PR Close #62131
2025-06-19 10:06:27 +02:00
Matthieu Riegler c0aa1301b3 docs: add homepage link to AI (#62130)
PR Close #62130
2025-06-19 10:05:32 +02:00
Matthieu Riegler 0d4bd89840 docs: add helpful banner with link to best practices (#62137)
PR Close #62137
2025-06-19 10:03:53 +02:00
Matthieu Riegler c3e11e5852 docs: update best-practices prompt styling (#62128)
PR Close #62128
2025-06-18 13:52:56 -07:00
Pawel Kozlowski 085e29fb23 release: cut the v20.1.0-next.2 release 2025-06-18 19:48:44 +02:00
Pawel Kozlowski 81d918aa6d docs: release notes for the v20.0.4 release 2025-06-18 19:36:22 +02:00
Joey Perrott 908c6c1d30 build: split compiler-cli compliance test into more shards (#62119)
It seems that new jasmine_test runner times out with the larger size shards, by splitting into double the shards the test consistently passes as expected

PR Close #62119
2025-06-18 18:20:22 +02:00
Kristiyan Kostadinov 34adfdea82 fix(migrations): more robust trailing comma removal in unused imports migration (#62118)
Fixes the following issues with the logic in the unused imports migration that deals with trailing commas:
1. It was generating overlapping text ranges which can break internally.
2. It wasn't handling some cases that produce trailing commas.

PR Close #62118
2025-06-18 15:57:12 +02:00
Andrew Scott 572c32a038 fix(core): Wrap ErrorEvent with no error property (#62081)
This commit updates the global error listener to wrap the global ErrorEvent in a new Error with cause
if the error property is undefined.

fixes #62078

PR Close #62081
2025-06-18 13:57:24 +02:00
Angular Robot 5885eca899 build: update dependency google-closure-compiler to v20250615 (#62114)
See associated pull request for more information.

PR Close #62114
2025-06-18 10:46:07 +02:00
Matthieu Riegler 416553065a docs(docs-infra): cookie consent should be top-most (#62103)
PR Close #62103
2025-06-18 10:40:52 +02:00
guimasi1 2db71568e8 docs: remove duplicate entry for tagged template literals (#62082)
The value literal table listed tagged template strings as both supported and unsupported. The row under Unsupported literals was removed.
PR Close #62082
2025-06-18 09:42:08 +02:00
Angular Robot a06c7228ad build: lock file maintenance (#62062)
See associated pull request for more information.

PR Close #62062
2025-06-18 09:32:26 +02:00
Angular Robot 5868a2ea15 build: update dependency aspect_rules_js to v2.3.8 (#62090)
See associated pull request for more information.

PR Close #62090
2025-06-18 09:28:47 +02:00
Ben Hong 5f6e336b21 docs: add dedicated redirecting routes guide (#62005)
docs: update language block

Co-authored-by: Matthieu Riegler <kyro38@gmail.com>

docs: enhance redirects function docs

docs: fix future tense usage

docs: update phrasing to be present tense

docs: update redirect guides to use better phrasing and examples

docs: fix typo on code example

Co-authored-by: Andrew Scott <atscott01@gmail.com>

docs: fix typo in code example

Co-authored-by: Andrew Scott <atscott01@gmail.com>

docs: update syntax of code snippet

Co-authored-by: Andrew Scott <atscott01@gmail.com>

docs: update description on redirect function and api docs

PR Close #62005
2025-06-18 09:07:32 +02:00
Matthieu Riegler cd4ac81fc6 docs: explicit that class bindings still support object (#62102)
PR Close #62102
2025-06-18 09:03:34 +02:00
kodeti 3f3c98627c docs(docs-infra): fix minor typo on Components page (#62112)
Fix typo on Introduction > Essentials > Components page as "Use profile" is likely meant to be written as "User profile".
PR Close #62112
2025-06-18 09:01:23 +02:00
Joey Perrott 3a0cfd544d build: migrate to using new jasmine_test (#62086)
Use the new jasmine_test based on rules_js instead of jasmine_node_test from rules_nodejs

PR Close #62086
2025-06-18 08:27:26 +02:00
Joey Perrott 4d9e50e208 build: update the ts_integrity expected for the typescript version in WORKSPACE (#62109)
Update the WORKSPACE to expect the correct sha.

PR Close #62109
2025-06-17 23:42:16 +00:00
marktechson 39237e85ab docs: add update AI instructions (#62089)
Adds context information for use with LLMs, IDEs and more.

PR Close #62089
2025-06-17 19:30:24 +02:00
Joey Perrott 18a7ce892c build: migrate back to using the @npm// sourced benchmark_test macro (#62101)
Use the benchmark macro from @npm// instead of @devinfra//

PR Close #62101
2025-06-17 18:51:21 +02:00
Kristiyan Kostadinov 2e0c98bd3f feat(core): support bindings in TestBed (#62040)
Adds support for passing in `Binding` objects into `TestBed.createComponent`. This makes it easier to test components by avoiding the need to create a wrapper component. Furthermore, it keeps the behavior consistent between tests and the actual app. For example, given a custom checkbox that looks like this:

```typescript
@Component({
  selector: 'my-checkbox',
  template: '...',
  host: {'[class.checked]': 'isChecked()'}
})
export class MyCheckbox {
  isChecked = input(false);
}
```

A test for the `isChecked` input would look something like this:

```typescript
it('should toggle the checked class', () => {
  @Component({
    imports: [MyCheckbox],
    template: '<my-checkbox [isChecked]="isChecked"/>',
  })
  class Wrapper {
    isChecked = false;
  }

  const fixture = TestBed.createComponent(Wrapper);
  const checkbox = fixture.nativeElement.querySelector('my-checkbox');
  fixture.detectChanges();
  expect(checkbox.classList).not.toContain('checked');

  fixture.componentInstance.isChecked = true;
  fixture.detectChanges();
  expect(checkbox.classList).toContain('checked');
});
```

Whereas with the new API, the test would look like this:

```typescript
it('should toggle the checked class', () => {
  const isChecked = signal(false);
  const fixture = TestBed.createComponent(MyCheckbox, {
    bindings: [inputBinding('isChecked', isChecked)]
  });
  const checkbox = fixture.nativeElement.querySelector('my-checkbox');
  fixture.detectChanges();
  expect(checkbox.classList).not.toContain('checked');

  isChecked.set(true);
  fixture.detectChanges();
  expect(checkbox.classList).toContain('checked');
});
```

PR Close #62040
2025-06-17 11:49:27 +02:00
Milo 89efd27884 refactor(devtools): create devtools signals view (#61919)
create a component for the devtools signal pane, including view source, view value, and flashing of node updates

PR Close #61919
2025-06-17 11:19:53 +02:00
Shuaib Hasan Akib 64409dbabc docs(router): improve discoverability of route guard section (#62060)
PR Close #62060
2025-06-17 11:19:14 +02:00
hawkgs 132fd3c301 refactor(devtools): reorganize profiler components (#62073)
Reorganize the components under `[...]/devtools-tabs/profiler`.

PR Close #62073
2025-06-17 10:52:07 +02:00
Matthieu Riegler b963a5281a docs: remove mention of ngModel in directives overview (#62088)
Fixes #62072

PR Close #62088
2025-06-17 10:50:42 +02:00
Doug Parker 95efa08c5b release: bump Angular DevTools version to 1.0.34 (#62085)
PR Close #62085
2025-06-17 10:49:55 +02:00
Andreas Gödecke cf2bc910c9 docs: fix markdown syntax (#62084)
PR Close #62084
2025-06-17 10:46:27 +02:00
Joey Perrott 1182fe7053 build: migrate to usages of @devinfra// instead of @npm//@angular/build-tooling (#62050)
Use workspace imported devinfra deps instead of npm dep

PR Close #62050
2025-06-16 10:23:30 +02:00
Matthieu Riegler 2e3925a65c refactor(localize): add tripleslash type of Application builder (#62037)
Prior to this change, the triple slash directive was only added on the angular-devkit application builder.

Fixes #61968

PR Close #62037
2025-06-15 12:39:36 +02:00
hawkgs be2747eb26 fix(devtools): errors caused by the injector tree (#62029)
Errors:
- Attempting to translate SVGs when the tab is not on focus (Regression from #61241)
- Null injector node focus error

Extra:
- Improve scoping of the injector-tree component class members

PR Close #62029
2025-06-13 12:34:06 +02:00
Jam Hsu dacb3f25ea docs: remove developer preview hint for withI18nSupport (#62039)
PR Close #62039
2025-06-13 12:32:41 +02:00
Matthieu Riegler 0e4678ffc5 docs: fix code spans in Mapping section on elements.md (#61994)
PR Close #61994
2025-06-13 12:31:27 +02:00
Joey Perrott 9c0b41796e build: migrate adev to use new jasmine_test (#62034)
Use jasmine_test instead of jasmine_node_test in adev

PR Close #62034
2025-06-13 12:30:15 +02:00
arturovt 31da435854 fix(core): inject APP_ID before injector is destroyed (#61885)
In this commit, we request `APP_ID` outside the `onDestroy` callback because the injector might already be in a destroyed state when the callback runs.

PR Close #61885
2025-06-12 15:56:51 +02:00
Angular Robot 1fcf67cb17 build: update cross-repo angular dependencies (#62006)
See associated pull request for more information.

PR Close #62006
2025-06-12 15:55:19 +02:00
Matthieu Riegler 4040a6ba5d refactor(migrations): support local string tokens for inject migration (#62013)
The `localTypeChecker` allows us to at least support locally defined strings in addition to string literals.

PR Close #62013
2025-06-12 15:53:20 +02:00
Michael Berger 28484cbe0f docs(core): correct standalone jsdocs (#62025)
PR Close #62025
2025-06-12 15:51:23 +02:00
Doug Parker 38f8705aab docs: adds --jobs 4 to Firefox release flags (#62015)
This seems to be helpful for Mozilla reviewers to reproduce the build without encountering Bazel errors like:

```
Server terminated abruptly (error code: 14, error message: 'Socket closed', log file: '/home/parallels/.cache/bazel/_bazel_parallels/ae710c6507eb251f9511ac4228641059/server/jvm.out')
```

`--local_ram_resources` is also useful, but I'm not sure what to set it to by default or how necessary it is, so let's just start with `--jobs 4` for now. The 4 is arbitrary as I don't have insight into how many jobs are actually appropriate, but we can go with this for now and tweak the number later if it still causes issues.

PR Close #62015
2025-06-12 13:48:39 +02:00
Angular Robot 5a52f47df1 build: update dependency google-closure-compiler to v20250609 (#62007)
See associated pull request for more information.

PR Close #62007
2025-06-12 13:44:48 +02:00
Suhas Talekar 0ccc0ac3b6 docs: fix typos (#62022)
Fixes typo error
PR Close #62022
2025-06-12 13:38:50 +02:00
Jessica Janiuk 8424b3bcd5 fix(core): Fixes template outlet hydration (#61989)
Projected nodes were missing ssrId information and were skipping annotating template information, which caused templates to be destroyed and recreated rather than hydrated.

fixes: #50543

PR Close #61989
2025-06-12 12:53:21 +02:00
Paul Gschwendtner 61fb6e79ff build: fix hermetic execution of packages/core/test/... (#62027)
Due to a bug that is currently in progress of being resolved in the
`rules_js` toolchain (see:
https://github.com/aspect-build/rules_js/issues/362), we were seeing
subtle differences between `main` and PRs/local builds as RBE is a
strict sandbox environment while the normal linux/darwin sandbox isn't
necessarily.

This commit fixes the issue by avoiding the interop targets that don't
bring in the actual transitive node modules.

PR Close #62027
2025-06-12 12:16:56 +02:00
Angular Robot 6f779b2782 build: update github/codeql-action action to v3.29.0 (#62023)
See associated pull request for more information.

PR Close #62023
2025-06-12 10:15:01 +02:00
hawkgs 966f96ce4e refactor(devtools): use a ResizeObserver for the responsive split (#61525)
Do not rely on `window:resize` since the split can be resized by other split panels as well.

PR Close #61525
2025-06-12 10:08:54 +02:00
hawkgs bd3dc192fd refactor(devtools): improve profiler recorder controls (#62010)
Reorganize the template and reduce the vertical space taken by the controls.

PR Close #62010
2025-06-12 10:07:21 +02:00
Matthieu Riegler 579bf948d7 docs: add guide for httpResource (#61993)
PR Close #61993
2025-06-12 10:01:37 +02:00
Paul Gschwendtner a137746110 build: migrate packages/core/test to new jasmine_test rule (#61902)
Migrates `packages/core/test` to the new `jasmine_test` rule. As part of
this, we are also removing an unnecessary/unused test fixture.

PR Close #61902
2025-06-12 10:00:09 +02:00
Paul Gschwendtner c706525a33 build: update node loader to support zone.js (#61902)
Temporarily updates the new Node loader to work with `zone.js` `.mjs`
files that are still ending up at runtime due to this package using
`ts_library`.

PR Close #61902
2025-06-12 10:00:09 +02:00
Paul Gschwendtner 08b543e2f6 build: add jasmine_test macro for replacing jasmine_node_test legacy rule (#61902)
This commit introduces the new `jasmine_test` macro that can be an
"almost" drop-in replacement for `jasmine_test`.

PR Close #61902
2025-06-12 10:00:09 +02:00
Paul Gschwendtner df0b8d45da build: add small comment for ng_package_link_interop.bzl (#61902)
This should make the intent a little more clearer if someone
just looks at this file.

PR Close #61902
2025-06-12 10:00:09 +02:00
Pawel Kozlowski 8611630eb9 release: cut the v20.1.0-next.1 release 2025-06-11 15:34:06 +02:00
Pawel Kozlowski 0dafb28c0c docs: release notes for the v20.0.3 release 2025-06-11 15:26:22 +02:00
hawkgs 0b1d0459a4 docs(docs-infra): retain the results in the search dialog while typing (#61935)
Due to `resource()` not retaining its value while there is a request in progress, the results list flickers. The new `searchResults` signal retains that previous value until the request is completed.

PR Close #61935
2025-06-11 13:34:45 +02:00
Angular Robot 505363779d build: update dependency google-closure-compiler to v20250608 (#61996)
See associated pull request for more information.

PR Close #61996
2025-06-11 12:18:43 +02:00
Bernie Telles 9a81a0ffc7 docs: navigate-to-routes.md to include RouterLink in imports. (#61965)
Without adding the RouterLink import to the component, users won't be able to use the routerLink directive.

PR Close #61965
2025-06-11 11:35:04 +02:00
Angular Robot 7eca66e200 build: update cross-repo angular dependencies (#61942)
See associated pull request for more information.

PR Close #61942
2025-06-11 11:33:58 +02:00
Angular Robot ce7f2e3b43 build: update all non-major dependencies (#61953)
See associated pull request for more information.

PR Close #61953
2025-06-11 10:40:16 +02:00
Andrew Kushnir 0bd7c7d469 Revert "docs(docs-infra): retain the results in the search dialog while typing (#61935)" (#61995)
This reverts commit dbdfc2a99a.

PR Close #61995
2025-06-10 18:25:53 -07:00
Angular Robot 295d44348d build: update dependency typescript to v5.8.3 (#61957)
See associated pull request for more information.

PR Close #61957
2025-06-10 17:25:37 -07:00
hawkgs dbdfc2a99a docs(docs-infra): retain the results in the search dialog while typing (#61935)
Due to `resource()` not retaining its value while there is a request in progress, the results list flickers. The new `searchResults` signal retains that previous value until the request is completed.

PR Close #61935
2025-06-10 17:24:23 -07:00
Joey Perrott 3852be6f08 ci: update to latest version of dev-infra actions (#61990)
Update to the latest sha of the dev-infra actions

PR Close #61990
2025-06-10 15:50:09 -07:00
Milo b9141da6fc refactor(devtools): use import type to improve performance (#61966)
fixes a few lint errors when including devtools in g3

PR Close #61966
2025-06-10 14:43:46 -07:00
Elab4d1 358641147e docs: fix incorrect destructuring in resource loader example in signals guide (#61988)
PR Close #61988
2025-06-10 14:42:51 -07:00
Theodore Brown 4f0221e193 fix(forms): improve select performance (#61949)
We defer the update until after rendering
is complete for two reasons: first, to avoid repeatedly calling
`writeValue` on every option element until we find the selected one
(could be the very last element). Second, to ensure that we perform the
write after the DOM elements have been created (this doesn't happen
until the end of change detection when animations are enabled).

This is needed to efficiently set the select value when adding/removing options. The
previous approach resulted in exponentially more `_compareValue` calls than the number
of option elements (issue angular#41330).

Finally, this PR fixes an issue with delayed element removal when using the animations
module (in all browsers). Previously when a selected option was removed (so no option
matched the ngModel anymore), Angular changed the select element value before actually
removing the option from the DOM. Then when the option was finally removed from the DOM,
the browser would change the select value to that of the first option, even though it
didn't match the ngModel (issue angular#18430). Note that this is still
somewhat of an application problem when using `ngModel`. The model value
still needs to be updated to a valid value when the selected value is
deleted or it will be out of sync with the DOM.

Fixes #41330, fixes #18430.

PR Close #61949
2025-06-10 13:13:13 -07:00
hawkgs 9cf12b0694 fix(devtools): add aria-labels to icon-only buttons (#61981)
Add aria-labels to the buttons that have an icon-only content.

PR Close #61981
2025-06-10 12:03:30 -07:00
Joey Perrott dfbdbbe882 refactor: use zone.js from npm instead of packages/zone.js throughout repo (#61977)
Use zone.js from npm isntead of from the repo going forward

PR Close #61977
2025-06-10 12:02:03 -07:00
Carolina e1bd13d854 docs: rework programmatically rendering components section to mention @defer (#61763)
PR Close #61763
2025-06-10 12:01:29 -07:00
Angular Robot 2d5db13b77 build: update dependency google-closure-compiler to v20250603 (#61959)
See associated pull request for more information.

PR Close #61959
2025-06-09 11:58:52 -07:00
Andrew Scott 3c216c1ec6 fix(zone.js): waitForAsync should pass args to the test function (#61755)
This ensures that test functions with arguments (e.g. `it.each` in jest)
are forwarded to the test function. This does not apply to jasmine,
which assumes the only arguments needed would be the `done` function.

fixes #61717

PR Close #61755
2025-06-09 11:22:22 -07:00
hawkgs a3c69260a1 fix(devtools): material components background colors (#61969)
Add overrides for the default background colors of some the Material components currently in use by Devtools. Most likely a regression by a recent Material version bump.

PR Close #61969
2025-06-09 09:44:31 -07:00
Milo fd2fca8bce refactor(devtools): check if signal graph is supported (#61915)
add a new devtools field in SupportedApis to check if the
getSignalGraphApi exists

PR Close #61915
2025-06-09 09:43:51 -07:00
arturovt ef10aa4005 feat(common): support decoding in NgOptimizedImage (#61905)
This commit adds the ability to set the decoding attribute in NgOptimizedImage. It proxies the binding onto the host image element. If no binding is provided, it defaults to "auto", which matches the browser's default behavior. This approach avoids any breaking changes resulting from the update.

PR Close #61905
2025-06-09 09:02:17 -07:00
aldillek b7ab5fa256 fix(compiler-cli): add signal checks to handle negated calls (#59970)
By adding these checks, we can find scenarios where a signal was expected to be called but wasn't.

PR Close #59970
2025-06-09 09:01:06 -07:00
Joey Perrott 21fc93bf4b test: use zone from npm instead of the locally built package for modules testing (#61947)
Use zone from npm for modules testing

PR Close #61947
2025-06-06 15:20:11 -07:00
Joey Perrott 50c7e132b5 test: use zone from npm instead of the locally built package for integration tests (#61947)
Use zone from npm for integration tests

PR Close #61947
2025-06-06 15:20:11 -07:00
Joey Perrott 708e4f4f11 refactor(devtools): use zone.js from npm instead of from the local build (#61947)
Rely on zone.js from the npm managed version instead of the locally built copy

PR Close #61947
2025-06-06 15:20:11 -07:00
Joey Perrott cd3bbdbad6 build: add zone.js as an npm based dependency (#61947)
Add zone.js as an npm based dependency

PR Close #61947
2025-06-06 15:20:11 -07:00
Andrew Scott e557313438 docs: Add error handling doc to the menu (#61945)
PR Close #61945
2025-06-06 12:42:43 -07:00
Joey Perrott 458cdbd518 ci: use new pull-request-labeling action (#61938)
Use the pull-request-labeling action which replaced the commit-message-based-labeling action.

PR Close #61938
2025-06-06 12:38:20 -07:00
hawkgs e678050794 docs(docs-infra): implement search history (#61866)
Add history of searches to the search dialog of A.dev.

PR Close #61866
2025-06-06 12:36:23 -07:00
Andrew Kushnir bbd16f50bc docs: release notes for the v20.0.2 release 2025-06-06 09:28:36 -07:00
Jessica Janiuk 29e892a35e Revert "refactor(service-worker): make SwPush and SwUpdate tree-shakable (#61670)" (#61923)
This reverts commit f8c1b6e779.

PR Close #61923
2025-06-06 07:48:45 -07:00
Taygan Caldwell 6097184711 refactor(core): Delete createSignalTuple (#61907)
Delete createSignalTuple because it is no longer needed. creatSignal has the same behavior.

PR Close #61907
2025-06-06 13:46:16 +02:00
Abhideep 8ab0028857 docs: update first-app tutorial to signal inputs (#61876)
PR Close #61876
2025-06-06 13:20:56 +02:00
Matthieu Riegler e01b4c23ba docs(docs-infra): fix deps for first-app tutorial (#61926)
PR Close #61926
2025-06-06 11:30:39 +02:00
Paul Gschwendtner 978b1aceeb docs: fix broken reveal answer button (#61925)
The reveal answer button accidentally loads files into the embedded
editor that aren't properly relativized. This ends up switching the
currently open file to a different file, unexpectedly.

In addition, due to the incorrect paths, files like `favicon.ico` end up
being loaded in the embedded editor; resulting in a bad experience as
the images are shown as plain text.

PR Close #61925
2025-06-06 11:26:44 +02:00
Matthieu Riegler ae1afc10dd docs(docs-infra): fix padding issue with tutorial editor. (#61924)
This allow the console to be entirly visible without scrolling to the bottom of the page.

PR Close #61924
2025-06-06 11:19:40 +02:00
Milo 0576724225 feat(devtools): add getSignalNestedProperties (#61917)
this enables devtools to preview and expand signal values as trees

PR Close #61917
2025-06-06 10:57:09 +02:00
Milo 9bb04e5ac8 feat(devtools): update colors for signals pane (#61918)
add dynamic-green-02 and dynamic-blue-02

PR Close #61918
2025-06-06 10:55:05 +02:00
Angular Robot 78c417ace1 build: update cross-repo angular dependencies (#61910)
See associated pull request for more information.

PR Close #61910
2025-06-06 10:30:47 +02:00
sEver 8f9d13ef2b fix(docs-infra): fix wrong visibleLines numbers in docs-code blocks (#61909)
Many of these were shifted by one line
Also fixing one minor typo

PR Close #61909
2025-06-05 18:50:30 -07:00
Andrew Scott cfb0dc2cbc fix(docs-infra): Fix import name for house location (#61914)
This fixes the import name for the HouseLocation component

PR Close #61914
2025-06-05 17:46:57 -07:00
Joey Perrott 9354efc86a build: remove unnecessary zone.js dep from various build targets (#61901)
Remove unnecessary zone.js dep from various build targets

PR Close #61901
2025-06-05 09:12:27 -07:00
arturovt 4f89f6ea90 refactor(platform-browser): drop isPlatformServer in SharedStylesHost (#61685)
Replaces `isPlatformServer` with `ngServerMode` in `SharedStylesHost`.

PR Close #61685
2025-06-05 14:53:35 +02:00
kristilw 3aa933acb7 fix(core): components marked for traversal resets reactive context (#61663)
when marked for traversal the reactive context has to be set to null to avoid inheriting the reactive context of the parent component

PR Closes #61662

PR Close #61663
2025-06-05 14:49:01 +02:00
kristilw ee6388d2a0 refactor(core): update tests to use standalone (#61663)
update tests to use standalone components for easier test setup

PR Close #61663
2025-06-05 14:49:01 +02:00
Angular Robot e90bfc509c build: update cross-repo angular dependencies to ^20.1.0-next (#61880)
See associated pull request for more information.

PR Close #61880
2025-06-05 14:08:33 +02:00
Alan Agius ddfb94cd23 ci: atomatically add target labels based on base branch (#61894)
This commit configures Renovate to automatically apply 'target' labels to pull requests based on their base branch.

- `main` branch will get `target: minor` label.
- Other branches will get `target: patch` label.

PR Close #61894
2025-06-05 13:34:36 +02:00
Taygan Caldwell 935ce0e0d9 refactor(core): export signal setter and updater types for wiz (#61714)
Export signal setter and updater types for Wiz to use

PR Close #61714
2025-06-05 12:57:23 +02:00
Matthieu Riegler 52aa3368e5 ci: disable updates with patch-package (#61893)
Patch package has a long standing bug that prevents us from updating to v8 https://github.com/ds300/patch-package/issues/300

PR Close #61893
2025-06-05 12:06:05 +02:00
Paul Gschwendtner 93c74ef492 build: migrate partial compliance tests to rules_js (#61865)
Migrates the partial compliance tests to `rules_js`. Also as part of
this, we re-enable RBE to see if that fixed the issues, or in case
they are already resolved from the RBE side.

PR Close #61865
2025-06-05 12:04:51 +02:00
Paul Gschwendtner d86d11d4c1 build: introduce NodeJS loader for rules_js Node execution (#61865)
For the `rules_js` migration, we are facing the problem where
our current Angular code is shipped as ESM, but we aren't fully
there yet with fully compliant strict ESM during development.

That is because we lack explicit import extensions, and it's also a
different story how this would work in Google3, if we were to add them.

In addition, we cross-import from our packages using npm module names.
This works well for TS, for ESBuild because those can respect path
mappings— but at runtime, when executing native `jasmine_test`'s— such
mappings aren't respected. The options here are:

- avoid module imports in the repo (impossible; undesired)
- use pre-bundling of all NodeJS execution involving npm package code
  (slower, extra build action cost)
- wire up a simple NodeJS loader (supported via official APIs) to simply
  account for our cases (preferred and similar to what we experimented
  with for the last year(s); and worked well)

This commit implements the last option and allows for an easy migration
to `rules_js`, and also is pretty reasonable. Long-term we can resolve
the extension problem if we e.g. migrate to real explicit extensions + a
proper TS module resolution like e.g. `nodenext`.

PR Close #61865
2025-06-05 12:04:51 +02:00
arturovt e81ea0c3dd fix(core): unregister onDestroy in outputToObservable (#61882)
We should remove the `onDestroy` listener once subscription is unsubscribed because components might not be destroyed yet, but they still would capture subscribers.

PR Close #61882
2025-06-05 11:16:57 +02:00
Angular Robot eb20c1f710 build: update dependency google-closure-compiler to v20250601 (#61868)
See associated pull request for more information.

PR Close #61868
2025-06-05 11:11:38 +02:00
Matthieu Riegler 967c8fe430 docs(docs-infra): use application builder for adev karma tests (#58291)
Co-authored-by: Jan Martin <jankrems@google.com>

PR Close #58291
2025-06-05 10:51:46 +02:00
Angular Robot fa2af076d2 docs: update Angular CDK apis (#61874)
Updated Angular CDK api files.

PR Close #61874
2025-06-05 10:50:57 +02:00
Angular Robot ab5b7df073 build: update all non-major dependencies (#61700)
See associated pull request for more information.

PR Close #61700
2025-06-05 10:14:17 +02:00
Angular Robot e49a0644e5 build: update rules_angular digest to 845ffcd (#61888)
See associated pull request for more information.

PR Close #61888
2025-06-05 10:10:40 +02:00
Milo 8e861eff1a feat(devtools): add button component (#61549)
enables flexible styling of button components with ng-button attribute

PR Close #61549
2025-06-05 10:09:51 +02:00
Hakeem 08eded75ff docs(docs-infra): fix callouts icon collision with the content (#61664)
PR Close #61664
2025-06-05 10:00:30 +02:00
Shuaib Hasan Akib fe0abb7509 docs(docs-infra): add tooltip for code editor buttons to improve accessibility (#61669)
PR Close #61669
2025-06-05 09:58:27 +02:00
Doug Parker c45afbc2a8 docs: streamline DevTools release docs (#61883)
This makes a few changes to try to smooth over the process:
1. Updates changelog commands to filter out `refactor` commits.
2. Tweaks the changelog command to generate a markdown list for easy copy-pasting.
3. Links directly to the store pages to cut down on clicks.
4. Moves the source code section a bove the reviewer note and changelog, to match the ordering of the Firefox Add Ons form.

PR Close #61883
2025-06-05 09:56:57 +02:00
kirjs 586be0e37f release: cut the v20.1.0-next.0 release 2025-06-04 17:20:39 -04:00
Joey Perrott b839d08a75 build: correct the query for discovering all releasable packages (#61879)
Update the bazel query for finding all releasable packages to look for all targets with the name
`npm_package` that contain the expected tag.

PR Close #61879
2025-06-04 16:47:27 -04:00
kirjs 9a03000cdf docs: release notes for the v20.0.1 release 2025-06-04 15:20:37 -04:00
arturovt 080b3687d3 fix(core): unregister onDestroy in ResourceImpl when destroy() is called (#61870)
This commit unregisters the `onDestroy` listener when `destroy()` is called on the `ResourceImpl`. This prevents memory leaks and ensures that the resource reference is not captured in the destroy callback after it has already been destroyed.

PR Close #61870
2025-06-04 14:23:13 -04:00
arturovt 6e1df54799 feat(service-worker): support push subscription changes (#61856)
In this commit, support for `pushsubscriptionchange` events has been added to the service worker Driver.

When the push subscription changes, the Driver now captures the event and broadcasts a `PUSH_SUBSCRIPTION_CHANGE` message to clients. This ensures the application is aware of push events and can react accordingly.

Unfortunately, it's not possible to perform any end-to-end testing of this feature.

The push subscription change event exists in both Blink and Gecko. It is also supported in the latest version of Chrome, which means we can give users the ability to react to this event in order to gather feedback on whether other components might need updates.

PR Close #61856
2025-06-04 14:16:51 -04:00
arturovt f8c1b6e779 refactor(service-worker): make SwPush and SwUpdate tree-shakable (#61670)
In this commit, we mark the `SwPush` and `SwUpdate` classes as root providers. As a result, they are no longer statically referenced in the `provideServiceWorker` providers list, which previously forced them to be explicitly bundled into the main file. These classes might never be used—some consumers may use the service worker only for prefetching and caching assets.

Practically speaking, even if a user injects the `SwPush` class without calling `provideServiceWorker()`, it would result in a DI error because the communication channel dependency is not available. There is no practical reason to keep these classes as non-root providers or to reference them explicitly.

Currently, some users work around this by using `patch-package` to modify the service worker code and remove these classes from the providers list.

PR Close #61670
2025-06-04 14:15:32 -04:00
Andrew Scott 8163a8995e feat(core): Add destroyed property on DestroyRef (#61849)
Since `DestroyRef.onDestroy` throws if the `DestroyRef` is already
destroyed, there is a need to be able to tell if it is already destroyed
before attempting to register a callback.

PR Close #61849
2025-06-04 14:14:55 -04:00
arturovt e947dfb84f refactor(common): use ngServerMode in HttpInterceptorHandler (#61605)
Drops `isPlatformServer(platformId)` in favor of `ngServerMode` in the `HttpInterceptorHandler`.

PR Close #61605
2025-06-04 14:13:15 -04:00
ivanwonder cf55d1bdd4 feat(language-service): Support importing the external module's export about the angular metadata. (#61122)
This works for the code actions and completion. When the ls wants to complete
all importable angular metadata in the template, the ls will invoke the function
`ls.getCompletionsAtPosition` and filter the item about the angular. When the
developer selects an item, the ls will get the module specifier from the code action
return by the `ls.getCompletionEntryDetails`.

PR Close #61122
2025-06-04 14:11:20 -04:00
Nikita Sologub 460b41b881 docs: replace undefined 'heroId' with defined 'id' (#61798)
PR Close #61798
2025-06-04 14:09:23 -04:00
Doug Parker 75520eb7f7 release: bump Angular DevTools version to 1.0.33 (#61872)
PR Close #61872
2025-06-04 14:06:36 -04:00
Abhideep f0e60f429d docs: update home.ts (#61873)
updating HousingLocationInfo(interface) with HousingLocation(component), which is required to be imported into the Home Component

PR Close #61873
2025-06-04 14:04:39 -04:00
Nikita Sologub e7d9a2b271 docs: complete a truncated sentence in define-routes.md (#61871)
PR Close #61871
2025-06-04 12:18:05 -04:00
AleksanderBodurri 9a8f4f14aa fix(core): properly handle the case where getSignalGraph is called on a componentless NodeInjector (#60772)
Previously this would throw an error on the assertLView when we try to discover the templateLView.

Now this properly returns null for the template consumer and continues discovering other effects on the injector.

PR Close #60772
2025-06-04 12:16:47 -04:00
Andrew Scott 2bd3a43028 fix(core): takeUntilDestroyed completes immediately if DestroyRef already destroyed (#61847)
Adds fix directly for `takeUntilDestroyed` to unsubscribe when already
destroyed instead of putting
synchronous behavior on `DestroyRef.onDestroyed` callback as in #58008

fixes #54527

PR Close #61847
2025-06-04 12:14:15 -04:00
cexbrayat dcfbe6c811 refactor(core): use RefactorStreamItem type in rxResource (#59887)
The `ResourceStreamItem` was introduced in #59851 and can be used to simplify the `rxResource` code.

PR Close #59887
2025-06-04 11:45:04 -04:00
Hakeem 58741dd18a docs(docs-infra): handle fractional sizes between max and min widths vals (#61600)
PR Close #61600
2025-06-04 11:41:50 -04:00
David b9d7e7dba6 docs(migrations): update the docs for the migration to control flow syntax (#61816)
Change the command to execute the migration, because the command stated in the previous version results in the error "Cannot find migration 'control-flow-migration' in '@angular/core'.". The new command is more in line with the docs of other migrations.

PR Close #61816
2025-06-04 11:28:49 -04:00
Angular Robot b6b73a552c build: update cross-repo angular dependencies (#61854)
See associated pull request for more information.

PR Close #61854
2025-06-04 11:21:43 -04:00
Taygan Caldwell ed0a0a6d78 refactor(core): Refactor createSignal to return a tuple contain getter, setter, and updater (#61705)
Refactor createSignal to return a tuple instead of a signal getter. createSignalTuple will be removed in a follow up pr once createSignalTuple usages in google3 are migrated to createSignal.

PR Close #61705
2025-06-04 10:46:11 -04:00
Angular Robot 808c128281 build: update rules_angular digest to ed2a055 (#61858)
See associated pull request for more information.

PR Close #61858
2025-06-04 10:40:23 -04:00
Angular Robot 703a88df12 build: update github/codeql-action action to v3.28.19 (#61859)
See associated pull request for more information.

PR Close #61859
2025-06-04 10:19:44 -04:00
arturovt f37b2f7650 fix(core): unregister onDestroy when observable errors in toSignal (#61596)
The observable terminates immediately when `error` is called, and no further emissions or completion notifications occur. Thus, we have to remove the listener in both the `error` and `complete` notifications.

PR Close #61596
2025-06-04 09:36:41 -04:00
Paul Gschwendtner 397416f804 build: improve package diff script to show new untracked files (#61843)
Fixes that the package diff script did not show newly untracked
files in the npm package.

PR Close #61843
2025-06-04 09:13:41 +00:00
Paul Gschwendtner 7f1c2b758e build: migrate packages/localize/schematics to ts_project (#61843)
Migrates `packages/localize/schematics` to `ts_project`.

PR Close #61843
2025-06-04 09:13:41 +00:00
Paul Gschwendtner d081ef9b06 build: replace all ng_package with new rule from rules_angular (#61843)
Replaces all `ng_package` rule with the new rule from `rules_angular`.

PR Close #61843
2025-06-04 09:13:41 +00:00
Paul Gschwendtner 579618d6d6 build: remove packages/bazel (#61843)
Removes the `@angular/bazel` package as we no longer need it. Yay!

It's replaced by `rules_angular`.

PR Close #61843
2025-06-04 09:13:41 +00:00
Paul Gschwendtner 012464b478 build: migrate private/testing to ng_project (#61843)
Migrates `private/testing` to `ng_project`.

PR Close #61843
2025-06-04 09:13:41 +00:00
Paul Gschwendtner f779c95e6f build: migrate integration and primitives/defer to ts_project (#61843)
Migrates remaining `ts_project` targets (excluding zone.js) to
`ts_project`.

PR Close #61843
2025-06-04 09:13:41 +00:00
Matthieu Riegler 4178e82594 docs: open llms files in new tab (#61851)
Without that the app's router tries to route to unexinsting pages

fixes #61850

PR Close #61851
2025-06-04 06:31:53 +00:00
AleksanderBodurri 3a9a70de08 refactor(compiler-cli): implement transform to determine debugName from signal functions (#57348)
Implements a compiler transform that attempts to statically analyze variable names and apply them to usages of signal functions like signal, computed, effect, etc.

PR Close #57348
2025-06-03 20:34:12 -04:00
Matthieu Riegler e5d9ea2fe3 docs: update resource docs (#61846)
`value` throws when the resource is in error state.

PR Close #61846
2025-06-03 20:20:47 -04:00
arturovt 6adf022f0d fix(service-worker): prevent duplicate fetches during concurrent update checks (#61443)
Previously, multiple simultaneous calls to `checkForUpdate()` could result in redundant
fetches and hashing of the update manifest, leading to unnecessary network and CPU usage.

This change introduces a mechanism to track an in-progress update check using a cached
promise (`ongoingCheckForUpdate`). Subsequent calls to `checkForUpdate()` while a check
is in progress will return the same promise instead of triggering a new request.

Once the check completes (successfully or not), the cached promise is cleared,
allowing future update checks to proceed normally.

This improves efficiency and prevents overlapping update logic in applications that
may invoke `checkForUpdate()` from multiple sources (e.g. polling, manual triggers).

PR Close #61443
2025-06-03 15:57:30 -04:00
arturovt c67dbda8ff feat(service-worker): support notification closes (#61442)
In this commit, support for `notificationclose` events has been added to the service worker Driver.

When a notification is closed (either by user dismissal or programmatically), the Driver now captures the event, extracts the relevant notification options, and broadcasts a `NOTIFICATION_CLOSE` message to clients. This ensures the application is aware of notification lifecycle events and can react accordingly.

PR Close #61442
2025-06-03 15:02:12 -04:00
Matthieu Riegler c6f470e5ae docs(docs-infra): fix tutorial tooltip (#61782)
The code editor tooltip exhibits some weird bug when there is a margin applied. The root issue is unknown but at least it improves the current situation.

fixes #60923

PR Close #61782
2025-06-03 13:58:31 -04:00
Angular Robot 5813dbdd2a build: lock file maintenance (#61813)
See associated pull request for more information.

PR Close #61813
2025-06-03 11:13:30 -04:00
Kristiyan Kostadinov b1f3d2eab8 refactor(compiler): replace output AST write nodes (#61682)
Similarly to the previous change to the expression AST, these changes replace the `WriteVarExpr`, `WriteKeyExpr` and `WritePropExpr` from the output AST with a binary expression. This is closer aligned to TypeScript and makes it easier to translate code between the two.

PR Close #61682
2025-06-03 11:08:50 -04:00
Kristiyan Kostadinov eb43e9242d refactor(compiler): account for new assignment AST (#61682)
Reworks the places that were depending on `PropertyWrite` and `KeyedWrite` to account for the new AST structure.

PR Close #61682
2025-06-03 11:08:50 -04:00
Kristiyan Kostadinov 08ee693995 refactor(compiler): produce binary expressions instead of dedicated write ones (#61682)
Currently our expression parser produces two different expressions for writes: `PropertyWrite` (e.g. `foo.bar = 123`) or `KeyedWrite` (e.g. `foo[0] = 123`). This is inconsistent with other ASTs, like TypeScript's, where writes are represented as binary expressions with a `=` operator and it makes it difficult to implement more write operators like `??=`, because we'd essentially have to duplicate them.

These changes switch the expression parser over to produce binary expressions instead.

PR Close #61682
2025-06-03 11:08:50 -04:00
zachend c663277df6 fix(service-worker): update service worker to handle seeking better for videos (#60029)
This update ensures that the service worker can handle range requests, allowing video seeking to work correctly when videos are delivered by the service worker.

PR Close #60029
2025-06-03 10:56:06 -04:00
Milo 4fa1dca72a feat(devtools): add getSignalGraph api to devtools protocol (#61548)
add a new devtools backend api getSignalGraph that emits a
latestSignalGraph to the devtools frontend

PR Close #61548
2025-06-03 10:47:57 -04:00
Angular Robot e83621b97a build: update rules_angular digest to 8c799e8 (#61841)
See associated pull request for more information.

PR Close #61841
2025-06-03 10:36:46 -04:00
Angular Robot 23ad649908 build: update cross-repo angular dependencies (#61703)
See associated pull request for more information.

PR Close #61703
2025-06-03 10:34:03 -04:00
Shuaib Hasan Akib b2df1f699e docs(docs-infra): add language service for Zed (#61482)
PR Close #61482
2025-06-03 10:30:25 -04:00
Matthieu Riegler e555c7f0dd docs(docs-infra): use modern apis (#61706)
PR Close #61706
2025-06-03 10:28:20 -04:00
Angular Robot eead42196a build: update ossf/scorecard-action action to v2.4.2 (#61842)
See associated pull request for more information.

PR Close #61842
2025-06-03 08:22:50 -04:00
Angular Robot 667a600607 build: update dependency yargs to v18 (#61767)
See associated pull request for more information.

PR Close #61767
2025-06-03 07:34:08 -04:00
Matthieu Riegler 9630d79d1a refactor(migrations): keep the control flow migration as ng generate. (#61773)
this way `ng generate @angular/core:control-flow` which has been fairly documented, remains valid.

PR Close #61773
2025-06-03 07:12:59 -04:00
hawkgs e5e0c777b7 refactor(devtools): defer tabs (#61241)
Defer tab loading and rendering on app initialization.

PR Close #61241
2025-06-03 07:10:56 -04:00
Pawel Kozlowski 4af4a1aca3 docs: documentation for the Chrome DevTools integration (#61690)
Initial version of the documentation describing integration with the
Chrome DevTools performance panel.

PR Close #61690
2025-06-03 07:04:37 -04:00
Paul Gschwendtner 3af65af6a1 build: remove npm_package rule for packages/bazel (#61826)
The bazel npm package is no longer needed and currently breaks
as we started using a 1P pnpm linked package that would otherwise
end up being pulled into this legacy rule.

PR Close #61826
2025-06-03 11:41:52 +02:00
Paul Gschwendtner b7c5645f05 build: migrate packages/compiler-cli to ts_project (#61826)
This commit migrates the remaining pieces of `compiler-cli` to
`ts_project`. This involves a few more things during migration:

- the `ng_module` ngc_wrapped rule broke as part of this change, so we
  switched it to `ts_project` too. This logic is soon gone anyway.

- we needed an extra pnpm "package.json" for the linker babel test. This test is
  loading from the real compiler-cli npm package. Babel needs a real
  node module for this, so this solution seems reasonable. It may be
  worth exploring in the future to move this test into an integration
  test though.

- the older integrationtest in compiler-cli is removed as the coverage
  is much better with the compliance test suite and this test.

PR Close #61826
2025-06-03 11:41:52 +02:00
Oussama BADR 42f07ce2f6 docs: Use signal function to read value in CustomDialog example (programmatic-rendering.md) (#61821)
PR Close #61821
2025-06-02 16:05:49 -04:00
Kristiyan Kostadinov fd5a04927e fix(compiler): recover invalid parenthesized expressions (#61815)
When the expression parser consumes tokens inside a parenthesized expression, it looks for valid tokens until it hits and invalid one or a closing paren. If it finds an invalid token, it reports and error and tries to recover until it finds a closing paren. The problem is that in such cases, it would produce the `ParenthesizedExpression` and continue parsing **from** from the closing paren which would then produce more errors that add noise to the output and result in an incorrect representation of the user's code. E.g. `foo((event.target as HTMLElement).value)` would be recovered to `foo((event.target)).value` instead of `foo((event.target).value)`.

These changes resolve the issue by skipping over the closing paren at the recovery point.

Fixes #61792.

PR Close #61815
2025-06-02 15:50:46 -04:00
Matthieu Riegler 07cb321f00 build: remove ng_update_migration integration test. (#61825)
The CLI already covers this in their E2E tests.

PR Close #61825
2025-06-02 15:45:45 -04:00
Andrew Scott 0e58e1f642 docs(router): Update view transition types to dev preview (#61787)
This updates the documented state of the view transition interfaces. The withViewTransitions feature was already marked dev preview

PR Close #61787
2025-06-02 12:42:19 -04:00
Vincent 155e2842fc docs: Add Angular 20 migration instructions for changes in resources (#61772)
PR Close #61772
2025-06-02 12:38:34 -04:00
AleksanderBodurri 170211cb71 fix(devtools): issue where on initial render DevTools would not load properly (#61812)
Commit 3e70d64 introduced cdk version 20.0.0-rc2 which introduced a change to how the cdk virtual scroll sets some internal state.

Previously in DevTools we were using a computed incorrectly to respond to changes in the directive forest and apply them to the underlying datasource. With the change to the CDK shown above, this incorrect usage caused us to attempt to update underlying signals in the virtual scroll directive while within a computed callback, throwing an error.

This commit corrects our usage by swapping from a computed to an effect, allowing the underlying signals in the scroll directive to be updated without error.

PR Close #61812
2025-06-02 12:36:17 -04:00
Kristiyan Kostadinov 5a76826d26 fix(compiler): only report parser errors on invalid expression (#61793)
Currently we reuse the same binding parser for all expressions in the template. Under the hood, the parser has a single `errors` array that it passes into all ASTs which means that if there's one binding with an error, those errors will be propagated to all other ASTs in the template.

These changes switch to having a unique `errors` array for each AST so we only report errors once.

Relates to #61792.

PR Close #61793
2025-06-02 09:56:00 -04:00
Paul Gschwendtner bf763d089c build: ensure optimization rule can use compiler-cli from HEAD (#61810)
This ensures that the new optimization rule, and also adev (when we
complete migrating it to `rules_js`) can use the latest compiler-cli
version from HEAD.

PR Close #61810
2025-06-02 09:52:57 -04:00
Vadim db1fc5713d docs(docs-infra): example causes RuntimeError: NG0950: Input is required but no value is available yet (#61785)
PR Close #61785
2025-06-02 09:49:37 -04:00
Jens Kuehlers 744a1fa075 docs: point v20 banner to blog (#61824)
PR Close #61824
2025-06-02 09:41:34 -04:00
Milo 6f16d92988 feat(devtools): inspect signals (#61540)
add a new global api for the devtools connector to jump to the source of
a computed or effect

PR Close #61540
2025-06-02 09:35:30 -04:00
Matthieu Riegler f8b4b1209a docs: update llms files (#61791)
PR Close #61791
2025-06-02 09:31:49 -04:00
marktechson 532cd3214b docs: add Using AI development page (#61790)
PR Close #61790
2025-06-02 09:26:37 -04:00
Kristiyan Kostadinov a70f03a9b4 fix(compiler): move defer trigger assertions out of parser (#61747)
When defer blocks have a reference-based trigger without a parameter, we infer it from the placeholder block. This requires some validations like ensuring that there's only one element in the placeholder. The validations are currently implemented at the parser level which can affect tools like linters that need to pass `preserveWhitespaces: true` in order to get accurate source mappings.

These changes move the validations into the template type checker so that they still get flagged, but much later in the process. Moving them over involves a bit more work, because the template type checker also sets `preserveWhitespaces: true`.

Fixes #61725.

PR Close #61747
2025-05-30 13:44:58 -04:00
Doug Parker 5ccc654810 docs: fix component harness indentation and comments (#61760)
Component harness docs code snippets seem to have been a bit corrupted.

PR Close #61760
2025-05-30 13:37:55 -04:00
Kristiyan Kostadinov 3c5ab643e4 build: add missing symbol (#61783)
Fixes a broken symbol test.

PR Close #61783
2025-05-30 13:34:45 -04:00
Angular Robot 194eb11e62 build: update rules_angular digest to e0f7af7 (#61780)
See associated pull request for more information.

PR Close #61780
2025-05-30 13:27:31 -04:00
Paul Gschwendtner 77d2a7c977 build: migrate all modules/... code to ts_project (#61779)
Migrates all `modules/...`  code to `ts_project`.

PR Close #61779
2025-05-30 11:14:58 -04:00
Andrew Kushnir 5fce27d63f fix(core): produce an error when incremental hydration is expected, but not configured (#61741)
This commit updates runtime logic to produce an error when there are some `@defer` blocks with `hydrate` triggers, but the incremental hydration is not enabled via `withIncrementalHydration()`. Previously the check was only detecting the case when `withIncrementalHydration()` is present on the server, but missing on the client. With the change in this commit, the check would be performed on the server as well.

PR Close #61741
2025-05-30 11:14:22 -04:00
Matthieu Riegler bddfd2f8c2 docs: fix deprecated docs navigation background color. (#61775)
Backport of #58848 into v19 / main.

PR Close #61775
2025-05-30 11:09:13 -04:00
Kristiyan Kostadinov bb88b3f22f fix(migrations): avoid trailing whitespaces in unused imports migration (#61698)
Follow-up to #61674 where we were leaving behind some whitespace, e.g. `[One, Two, Three]` would turn into `[One ]`. These changes only preserve the whitespace if the node is preceded by a newline.

This wasn't caught by tests, because they were stripping away whitespaces before asserting. I've also reworked the tests to be sensitive to formatting changes.

PR Close #61698
2025-05-30 11:07:20 -04:00
Matthieu Riegler 221c07c58d docs: restore routing with matcher (#61778)
Let's restore that page until we rewrite that part.

fixes #61771

PR Close #61778
2025-05-30 11:05:02 -04:00
Doug Parker 2f0ecfc8ef refactor: expand DevTools reviewer list (#61709)
Updates the current list of DevTools reviewers to make a few small changes.
1. Adds `hawkgs` and `milomg`.
2. Removes the leading `~` from `JeanMeche` to include him in automatic review requests.
3. Adds `jkrems` for additional Googler coverage in automatic review requests.
4. Removes `mgechev` and `MarkTechson` who haven't been involved in daily DevTools development for a while.
5. Adds the leading `~` to `devversion` and `josephperrott` to remove them from automatic review requests while leaving them with access for "break glass" situations.

Note that the leading `~` means that the individual may approve PRs and satisfy the group's requirement, but PullApprove will not automatically request a review from them. See https://v3-docs.pullapprove.com/config/reviewers/#reviewers-that-dont-want-review-requests.

PR Close #61709
2025-05-30 09:56:09 -04:00
Kristiyan Kostadinov 75b7cd4cac build: update bundle goldens (#61718)
Updates out of date goldens.

PR Close #61718
2025-05-30 09:53:37 -04:00
Kristiyan Kostadinov 29e5e045f9 refactor(core): add DOM-only listener instruction (#61718)
Adds the `domListener` instruction which allows us to listen only to DOM events while skipping the directive output logic.

PR Close #61718
2025-05-30 09:53:37 -04:00
Kristiyan Kostadinov 78fba14f88 refactor(core): split directive logic away from common template code (#61718)
Reworks the `declareTemplate` function, that we use both in the `template` instruction and in other template-based code like control flow and `@defer`, so that it's split up into a function with directive logic and one without. For anything except the `template` instruction we don't need the directive matching and lifecycle hook logic.

Also introduces a DOM-only instruction called `domTemplate`.

PR Close #61718
2025-05-30 09:53:37 -04:00
Kristiyan Kostadinov 7520cd141c refactor(core): add DOM-only element and container instructions (#61718)
Adds the new `domElement` and `domElementContainer` instructions that are the equivalent of the `element` and `elementContainer` instructions, but will allow us to skip the following overhead when we know that there are no directives:
* Directive matching.
* Directive instantiation.
* Lifecycle hook management.
* Content query execution.

PR Close #61718
2025-05-30 09:53:36 -04:00
Kristiyan Kostadinov cb8ff45c0c refactor(core): move directive logic out of shared element code (#61718)
Moves the logic that deals with matching and instantiating directives out of the shared element instruction code.

PR Close #61718
2025-05-30 09:53:36 -04:00
Kristiyan Kostadinov 4ed6d4ac33 refactor(compiler-cli): export type used by migrations (#61697)
Re-exports the `FileSystem` type since it's used by some tsurge migrations and because internally the barrel export from `ngtsc/file_system` is removed.

PR Close #61697
2025-05-30 09:50:58 -04:00
Sumit Arora 582fedd726 refactor(devtools): fixing PR comments and adding unit tests (#59999)
- Update code to fix PR comments and cleanup code
- Add unit tests for the new code

PR Close #59999
2025-05-30 09:48:12 -04:00
Sumit Arora 280119fec0 refactor(devtools): adding route details panel for selected route (#59999)
On clicking a route in the router tree, the route details panel is displayed.
- The panel shows the details of the selected route, including the path, component, providers, guards etc.
- Clicking on a chip will navigate to the corresponding source file in the editor.
- Clicking on the path will navigate to the corresponding route in the router tree.

Demo Application Source: https://github.com/sumitarora/angular-routes-demo
Demo Application Deployed: https://sumitarora.github.io/angular-routes-demo/#/

PR Close #59999
2025-05-30 09:48:12 -04:00
hawkgs 21fa353591 refactor(devtools): introduce a more sophisticated directive forest filter (#61085)
Parse the filter string and match by component and directive names independently.

PR Close #61085
2025-05-30 09:46:22 -04:00
fejx 5f187b229f docs: fix copy-paste error on defer page in interaction section (#61751)
PR Close #61751
2025-05-29 18:20:55 -04:00
Yuta Nishi 7cfd89a3a2 docs(router): fix typo in define-routes.md (#61740)
Fixes a typo in the "Lazily loaded components" section of the define-routes.md guide.
The path for the home-page component was incorrectly written as ',' instead of ''.

PR Close #61740
2025-05-29 18:17:33 -04:00
Matthieu Riegler e4b0844d4d docs: update control flow migration command (#61750)
PR Close #61750
2025-05-29 18:15:56 -04:00
Vlad Boisa 31556cd714 docs: fix broked link Routing guide (#61749)
Fix typo in link for correct display of the link
PR Close #61749
2025-05-29 18:14:14 -04:00
hawkgs 68aa159a7f docs(docs-infra): fix update guide version dropdown on Firefox (#61744)
Fixes #58776

PR Close #61744
2025-05-29 18:12:40 -04:00
Matthieu Riegler 8fa75fe58b docs: remove ngIf/ngFor/ngSwitch from the directive overview (#61708)
PR Close #61708
2025-05-29 17:57:51 -04:00
Matthieu Riegler f8a944314c docs: remove unnecessary mention of ngIf/ngFor from llms-full (#61694)
PR Close #61694
2025-05-29 17:56:50 -04:00
Matthieu Riegler 60e06786ba docs: remove the constructor DI from the learn angular tutorial (#61693)
PR Close #61693
2025-05-29 17:55:02 -04:00
Matthieu Riegler e7608e503f docs: update API examples to modern angular (#61688)
PR Close #61688
2025-05-29 17:53:28 -04:00
Matthieu Riegler 276a3510b2 docs: replace @Input/@Output in docs (#61686)
This commit also remove some unused examples

PR Close #61686
2025-05-29 17:51:30 -04:00
Matthieu Riegler 663975b4e7 docs: update learn-angular tutorial to use input/output (#61607)
This replaces the example that were using the decorators.

PR Close #61607
2025-05-29 17:50:30 -04:00
mgechev 0ab865e47b docs: update the roadmap to reflect v20 progress (#61406)
PR Close #61406
2025-05-29 17:44:48 -04:00
Paul Gschwendtner 909e543f7e build: do not run ssr-benchmarks when using //... (#61566)
These are also excluded on CI, and shouldn't run locally either as they
are "manual debug" targets.

PR Close #61566
2025-05-29 14:39:12 -04:00
Paul Gschwendtner 9d7768ccd6 build: rework benchmarks and examples in modules/ to new optimization rule (#61566)
We are dropping the custom ESBuild and Terser pipeline from dev-infra
and instead leverage the Angular CLI directly. This commit adjusts
the benchmarks to use this new rule.

PR Close #61566
2025-05-29 14:39:11 -04:00
Paul Gschwendtner b80957d1c5 build: adjust bundling tests to use Angular CLI (#61566)
Instead of dev-infra maintaining a custom ESBuild + Terser pipeline that
tries to emulate the Angular CLI, we are switching the bundling core
tests to a new rule that really leverages the Angular CLI.

This involves some file renames and small adjustments. In addition, we
leverage the updated symbol tracking rule to output new goldens that can
work with multiple bundle files (as generated by the Angular CLI;
especially with defer and its "lazy" chunks).

PR Close #61566
2025-05-29 14:39:11 -04:00
Paul Gschwendtner 6dade56bb3 build: rework symbol extractor to support lazy/common chunks (#61566)
Since we are going to replace our `app_bundle` rule (custom ESBuild +
Terser pipeline) with the real Angular CLI where shared/lazy/common
chunks may exist, we need to update the symbol extractor to support
multiple files.

We could have just merged all symbols, but this commit tries to do
better by detecting what symbols are loaded eagerly vs. lazily. This
will be very useful for e.g. defer tests or other lazy features we are
introducing in the feature.

PR Close #61566
2025-05-29 14:39:11 -04:00
Paul Gschwendtner 7bc39a883d build: fix app_bundle rule after migrating packages/compiler (#61566)
The `app_bundle` rule does not work after the migration of
`packages/compiler` to `ts_project` because the `.mjs` extensions are
now missing in the non npm-package output.

This causes runtime errors as `.js` is not recognized as ESM. Switching
to the real npm package for usage, fixes this issue.

PR Close #61566
2025-05-29 14:39:11 -04:00
Paul Gschwendtner 87f440bb77 build: ensure compiler is properly picked up as runtime dep of compiler-cli (#61566)
Currently when linking the `@angular/compiler-cli` package, the peer
dependency to `compiler` is not resolved and we are trying to make the
compiler dependency available via `data`. This is unidiomatic and
brittle. This commit fixes this.

PR Close #61566
2025-05-29 14:39:11 -04:00
Paul Gschwendtner 0e7597bb82 build: enable merging of default shell_env and env in Bazel (#61566)
This is necessary to support later versions of e.g. `rules_ts`.

PR Close #61566
2025-05-29 14:39:11 -04:00
Angular Robot fc5ff827ab build: update bazel dependencies (#61566)
See associated pull request for more information.

PR Close #61566
2025-05-29 14:39:11 -04:00
Paul Gschwendtner dfb465637d build: migrate packages/elements to ng_project (#61566)
Migrates `packages/elements` to `ng_project`.

PR Close #61566
2025-05-29 14:39:10 -04:00
Paul Gschwendtner fa123803b4 build: update api-gen to work with compiler as ts_project (#61566)
Compiler now would have `.js` files. Those aren't picked up as ESM,
unless we install the `package.json` with `type: module`. Sounds great
on paper, but doesn't work in reality because the way the compiler
packages are available to `api-gen/` is via the old `rules_nodejs`
linker, so the `packages/package.json` wouldn't work; nor do the
`package.json`s of the e.g. compiler-cli package work- because those
already contain the `exports` of the built npm package.

We fix this in a much more reasonable way, and the whole module
resolution problem by leveraging the pnpm linking here. This works as
expected.

PR Close #61566
2025-05-29 14:39:10 -04:00
Paul Gschwendtner ef44f671f4 build: migrate packages/compiler to ts_project (#61566)
Migrates `packages/compiler` to `ts_project`.

PR Close #61566
2025-05-29 14:39:10 -04:00
Matthieu Riegler 04b68816a1 docs: setup redirect for zoneless (#61737)
PR Close #61737
2025-05-28 17:44:45 -07:00
Andrew Scott 9b514b7501 docs: link to v20 blog post in changelog (#61734)
PR Close #61734
2025-05-28 12:28:14 -07:00
Andrew Scott 2a290ab30e docs: update versions.json with v20 (#61732)
This updates the versions.json to make v20 consistent with other versions

PR Close #61732
2025-05-28 11:11:23 -07:00
Andrew Scott 449c540015 release: bump version of in memory web api (#61731)
PR Close #61731
2025-05-28 10:53:17 -07:00
Andrew Scott d5ac3805f8 build: bump peer deps for angular-in-memory-web-api (#61729)
bumps peer deps to v20 for in memory web api

PR Close #61729
2025-05-28 10:29:44 -07:00
Jens Kuehlers 4e97ed96cd docs: update version picker for v20 (#61727)
PR Close #61727
2025-05-28 10:28:18 -07:00
Devin Chasanoff 7ea1750420 docs: add v20 dev event banner (#61723)
PR Close #61723
2025-05-28 10:27:36 -07:00
Andrew Scott 8cf7e2302f docs: update tutorials and playground to v20 (#61726)
update boilerplates to use v20 final

PR Close #61726
2025-05-28 09:41:42 -07:00
Andrew Scott 62be7fa7c5 docs: cherrypick v20 release notes to main (#61724)
cherrypick v20 release notes to changelog in main branch
2025-05-28 07:16:44 -07:00
Andrew Scott 1fd59c0298 docs: release notes for the v19.2.14 release 2025-05-28 06:39:06 -07:00
Andrew Scott d19669ca7b docs: release notes for the v20.0.0-rc.3 release 2025-05-27 16:01:37 -07:00
Matthieu Riegler fe03aa09ad Revert "fix(core): call DestroyRef on destroy callback if view is destroyed (#58008)" (#61625)
This reverts commit 5f7f04634f.

PR Close #61625
2025-05-27 15:21:20 -07:00
Matthieu Riegler c77e198f5d docs(docs-infra): limit file interactions on tutorials. (#61696)
The restricted mode on the code editor prevents renaming, deleting or adding files.

PR Close #61696
2025-05-27 11:33:10 -07:00
Kristiyan Kostadinov c11527fc68 refactor(compiler): remove unused code (#61668)
Removes the following unused code from the compiler:
* The ICU expander appears to be some really old code converting ICUs into legacy-style control flow directives. It's annoying to keep this one since we need to update it any time the AST changes.
* The `PipeCollector` class wasn't used anywhere.
* The `partitionArray` function wasn't used anywhere.
* The `newArray` function was used only in one test and it can be easily replaced with `new Array().fill`.

PR Close #61668
2025-05-26 12:21:09 +00:00
Angular Robot ca26b23007 build: lock file maintenance (#61679)
See associated pull request for more information.

PR Close #61679
2025-05-26 11:55:36 +00:00
arturovt 9a9511ace8 refactor(platform-browser): replace isPlatformServer with ngServerMode (#59496)
In this commit, we switch from using the `isPlatformServer` runtime call to the `ngServerMode`.

Note: constructors haven't been touched in order to prevent any breaking changes for the public API.

PR Close #59496
2025-05-26 11:14:27 +00:00
Angular Robot 99bcd34b7f build: update all non-major dependencies (#61666)
See associated pull request for more information.

PR Close #61666
2025-05-26 11:12:51 +00:00
Joey Perrott 47660b7684 build: migrate examples to use rules_js (#61650)
Migrate examples to use ng_project and ts_project for building

PR Close #61650
2025-05-26 11:00:59 +00:00
Kristiyan Kostadinov 04656d0b6e fix(migrations): preserve comments when removing unused imports (#61674)
Updates the unused imports schematic to preserve comments inside the array. THis is necessary for some internal use cases.

PR Close #61674
2025-05-26 10:26:20 +00:00
Matthieu Riegler 3e102f0b84 fix(compiler): lexer support for template literals in object literals (#61601)
This commit fixes a shortcoming of the lexer with template literals

fixes #61572

PR Close #61601
2025-05-26 10:24:16 +00:00
Angular Robot 3e70d64b20 build: update cross-repo angular dependencies (#61587)
See associated pull request for more information.

PR Close #61587
2025-05-26 10:23:42 +00:00
Joey Perrott 26f126a049 build: update common's locales to use rules_js (#61629)
Use ts_project to build the common locales

PR Close #61629
2025-05-26 10:18:14 +00:00
Kristiyan Kostadinov 289ae50c56 refactor(core): replace propertyInterpolateX with property (#61639)
Replaces the `propertyInterpolateX` instructions with calls to `property` and the `interpolate` helper. This allows us to drop the dedicated interpolation instructions and simplify the runtime for future work.

PR Close #61639
2025-05-26 09:21:23 +00:00
Kristiyan Kostadinov b0425ead3f refactor(core): simplify single interpolations (#61639)
Updates the `ɵɵinterpolate` instruction so it doesn't call into `interpolation1` under the hood since it requires a prefix/suffix and we know there isn't one.

PR Close #61639
2025-05-26 09:21:23 +00:00
Kristiyan Kostadinov e412fda709 refactor(core): replace classMapInterpolateX with classMap (#61639)
Replaces the `classMapInterpolateX` instructions with `classMap` plus a call to `interpolate` in order to simplify the runtime. The only difference between `classMapInterpolateX` and `classMap` was that the former passes `keyValueArraySet` into `checkStylingMap` while the latter passes `classKeyValueArraySet`. This doesn't appear to matter, because the interpolation instructions always have a string value which means that the function is never called.

PR Close #61639
2025-05-26 09:21:23 +00:00
Kristiyan Kostadinov 73c81391d6 refactor(core): replace styleMapInterpolateX with styleMap (#61639)
Replaces the `styleMapInterpolateX` instructions with the existing `styleMap` and a passed-in interpolated value in order to simplify the runtime.

PR Close #61639
2025-05-26 09:21:23 +00:00
Kristiyan Kostadinov 2aaea80bfe refactor(core): replace stylePropInterpolateX with styleProp (#61639)
Replaces all of the `stylePropInterpolateX` instructions with the existing `styleProp` with an interpolated value.

PR Close #61639
2025-05-26 09:21:23 +00:00
Jonathan Meier f3dfad38b4 refactor(compiler-cli): remove hardcoded config for unused standalone imports rule enablement (#61622)
The hardcoded config was introduced because suppressing the diagnostic
via `extendedDiagnostics` in the TS config was unreliable in google3.
This has since been fixed and the workaround is no longer needed.

PR Close #61622
2025-05-26 09:20:25 +00:00
Alan Agius 32179fb962 ci: remove sync angular-robot forked repository workflow (#61675)
Renovate now supports syncing of non-default base branches, making this workflow obsolete.

PR Close #61675
2025-05-26 09:18:30 +00:00
Angular Robot ecd7069674 build: update dependency node to v22.16.0 (#61602)
See associated pull request for more information.

PR Close #61602
2025-05-26 09:15:19 +00:00
Angular Robot b6a63014a7 build: update dependency google-closure-compiler to v20250520 (#61672)
See associated pull request for more information.

PR Close #61672
2025-05-26 09:12:33 +00:00
Joey Perrott 22381bfd2d build: update tools directory to use rules_js for building (#61656)
Use ts_project for building the tools directory targets

PR Close #61656
2025-05-26 09:01:13 +00:00
Alan Agius 9832e72fc3 build: disable esbuild metadata file generation (#61636)
Disables creation of the esbuild meta.json file, which is not utilized in the build process. This streamlines the output and avoids generating unused artifacts.

PR Close #61636
2025-05-26 08:57:41 +00:00
Alan Agius 67a0576598 build: exclude esbuild metadata files from distributable packages (#61636)
Prevents esbuild generated metadata files from being included in build artifacts. This reduces package size and avoids shipping unnecessary internal build data.

PR Close #61636
2025-05-26 08:57:41 +00:00
Joey Perrott b478a43804 build: migrate localize package to use rules_js (#61613)
Use ts_project to build localize package

PR Close #61613
2025-05-26 08:53:55 +00:00
Alan Agius e9fcbb8af1 fix(compiler): remove TypeScript from linker (#61618)
This commit removes the direct dependency on TypeScript within the linker, addressing a performance overhead that was adding between 500ms to 1s to compilation times for applications.

The primary cause of this overhead was the linker's direct reliance on TypeScript's which was caused by importing from barrel files. While convenient, barrel files are detrimental to code splitting and code motion. They force the bundling of all exported modules, even if only a subset is actually used.

By removing the usage of this barrel file and restructuring the imports to be more granular, we can avoid unnecessary TypeScript imports.
 Furthermore, TypeScript has now been changed to an optional peer dependency as using only the linker does not require TypeScript.

PR Close #61618
2025-05-26 08:46:00 +00:00
Rafal Slawik 82327f2092 feat(common): accept undefined inputs in NgTemplateOutlet (#61404)
Extend types of inputs to include `undefined` to avoid `?? null` when using singals (e.g. `viewChild`).

Fixes #51225

PR Close #61404
2025-05-25 14:26:42 -07:00
Charles Lyding d3e9ca1162 docs: add initial experimental vitest testing guide (#61483)
An initial guide to use the experimental unit testing system with the
vitest runner has been added. This includes setup instructions for switching
from the karma/jasmine based system.
Additional content for configuration and potential migration of existing
projects may be added in future changes.

PR Close #61483
2025-05-23 15:39:37 -07:00
Joey Perrott 4c72ce408e build: migrate platform-browser and platform-browser-dynamic package to use rules_js (#61623)
Use ts_project and ng_project to build platform-browser and platform-browser-dynamic package

PR Close #61623
2025-05-23 15:14:00 -07:00
Andrew Scott b03ac99072 docs: release notes for the v19.2.13 release 2025-05-23 10:24:31 -07:00
Andrew Scott abcb865474 fix(common): avoid injecting ApplicationRef in FetchBackend (#61649)
fixes a circular dependency caused by injecting applicationRef

fixes #61644

PR Close #61649
2025-05-23 10:04:08 -07:00
Andrew Scott 4356e85456 fix(core): fakeAsync should not depend on module import order (#61375)
`fakeAsync` does not work if the zone-testing polyfill is included after
@angular/core/testing is loaded. This allows fakeAsync to work
even if the zone-testing is included later.

PR Close #61375
2025-05-23 09:45:41 -07:00
Andrew Scott e33444e236 release: cut the zone.js-0.15.1 release (#61632)
PR Close #61632
2025-05-22 14:53:15 -07:00
Andrew Scott 1ea39e050c refactor(zone.js): Add a withProxyZone helper that might be used for unpatched test frameworks (#61626)
As an alternative to monkey patching vitest, this change adds a method that could be used
for manually running functions inside a shared proxy zone. If used inocrrectly,
this would mean that
the `fakeAsync` closure may not capture all timers and microtasks if it
invokes things created in a zone that was already forked (e.g. creating
a component in a beforeEach:
https://github.com/angular/angular/blob/2699dd65558d70fadeac1e9b420841f3dfc3a059/packages/zone.js/lib/jasmine/jasmine.ts#L363-L371)

PR Close #61626
2025-05-22 13:39:30 -07:00
Jonathan Meier 768e71511e refactor(compiler-cli): remove unused transform methods from DtsTransform (#61610)
All usages of the `DtsTransform` interface leave these two methods
`undefined`, so we can remove them, as well as all code invoking them.

PR Close #61610
2025-05-22 13:25:20 -07:00
Alan Agius 6899b27762 build: update all esbuild target to node20 (#61606)
This is the min supported node.js version

PR Close #61606
2025-05-22 13:02:03 -07:00
michael-small 38c2edc3b0 docs: remove dev preview banner from RXJS interop (#61598)
Disclaimer: I made this PR directly from the MD editor in GH since I can't run the docs locally at the moment.
PR Close #61598
2025-05-22 13:00:23 -07:00
Milo 396b5433b9 feat(devtools): update get signal graph (#61541)
add a function that we can inspect to jump to the source of a signal, and give every signal a unique id
that devtools can use to match signals across calls to getSignalGraph

PR Close #61541
2025-05-22 12:14:53 -07:00
Alan Agius 229cdde4d0 fix(core): mark zone.js as an optional peer dependency (#61616)
`zone.js` is no longer mandatory.

PR Close #61616
2025-05-22 12:14:06 -07:00
Matthieu Riegler 2db5070074 docs: remove top level heading which (#61593)
It interferes with `docs-decorative-header`

PR Close #61593
2025-05-22 12:12:32 -07:00
Joey Perrott 687e01865f build: migrate platform-server to rules_js (#61589)
Migrate platform-server to use ts_project and ng_project.

PR Close #61589
2025-05-22 11:35:55 -07:00
Doug Parker a28cadc646 release: bump Angular DevTools to version 1.0.32 (#61620)
PR Close #61620
2025-05-22 10:52:16 -07:00
arturovt ce916fe08c fix(service-worker): do not register service worker if app is destroyed before it is ready to register (#61101)
In this commit, we check whether the application is destroyed before calling `serviceWorker.register(...)`. We should not register the worker because other resources will not be available.

PR Close #61101
2025-05-22 10:02:39 -07:00
Andrew Scott ad8931cb49 fix(zone.js): classes that extend Error should retain cause property (#61599)
ZoneAwareError previously did not copy the cause property over to the
`this` object when an error extends the native error class.

PR Close #61599
2025-05-21 20:43:09 -07:00
Hakeem 5735ea7115 docs(docs-infra): fix nav items active status is shown for multiple items (#61597)
PR Close #61597
2025-05-21 16:04:23 -07:00
Andrew Scott 7a43963d62 docs: release notes for the v20.0.0-rc.2 release 2025-05-21 13:11:10 -07:00
Andrew Scott 833c61583a docs: release notes for the v19.2.12 release 2025-05-21 12:53:34 -07:00
Maciej Sawicki 905194fa57 fix(core): reading resource value after reload in the error state (#61441)
When the resource is loading after reloading from the error state reading `Resource.value()` would return the default value instead of throwing an error.
This change prevents `Resource.hasValue()` from throwing an error in such a case.

PR Close #61441
2025-05-21 12:06:40 -07:00
Maciej Sawicki b35396345c fix(core): getting resource value throws an error instead of returning undefined (#61441)
When there is an underlying error state it would not be possible to swallow the error with:
`computed(() => res.value()?.inner);`

PR Close #61441
2025-05-21 12:06:40 -07:00
Maciej Sawicki 05eb028c7a fix(core): narrow error type for resources API (#61441)
`Resource.error` used to return `unknown`. Now it's `Error | undefined`.
For non-`Error` types they are encapsulated with the `Error` type.

PR Close #61441
2025-05-21 12:06:40 -07:00
Maciej Sawicki 07811ddd7d fix(core): move reload method from Resource to WritableResource (#61441)
Now only mutable resources can be reloaded.

PR Close #61441
2025-05-21 12:06:40 -07:00
Maciej Sawicki 5762c23a77 build: use es2022 lib (#61441)
It was set to es2022 for build tsconfig in https://github.com/angular/angular/pull/60066/files#diff-7ec658aedc62a693cc513accc8f360938d90bcbdb09aa79c1401e56fe84f5fd3, but was missed for the main one.

PR Close #61441
2025-05-21 12:06:40 -07:00
Joey Perrott bde1b5e3d5 build: remove the "restamping" substitutions from adev shared-docs package (#61585)
Remove the substitutions as they are not actually needed

PR Close #61585
2025-05-21 17:37:52 +00:00
Steven Nguyendoan d7753988bd refactor(migrations): update references for dom_trigger functions onInteract, onHover, onViewport to point to new location in core/primitives/defer (#61342)
Moves the onInteract, onHover, onViewport dom_trigger functions to /packages/core/primitives/defer to be used as a shared library

PR Close #61342
2025-05-21 17:30:10 +00:00
Steven Nguyendoan 74cf9cb010 refactor(migrations): moved onInteraction, onHover (#61342)
, onViewport to core/primitives

PR Close #61342
2025-05-21 17:30:10 +00:00
Joey Perrott 4554c096fe build: add comment explaining path maps (#61584)
Add a commend explaning why the path mappings are in place.

PR Close #61584
2025-05-21 17:27:18 +00:00
Bouguima, Walid 610bebfce9 fix(forms): Allow ControlState as reset arguments for FormGroup/FormRecord (#55860)
This change also decorelate the `reset` type argument from `TValue` by adding a 3rd generic parameter to `AbstractControl`.
This improves the typings overall.

PR Close #55860
2025-05-21 17:26:23 +00:00
Joey Perrott b37fd9753f build: migrate language service to use rules_js (#61568)
Migrate language service to build using ts_project

PR Close #61568
2025-05-21 17:05:14 +00:00
marktechson 1afe20f774 docs: add new ai setcion to adev (#61583)
This new sections outlines guides, code samples and best practices for building AI apps with Angular.

PR Close #61583
2025-05-21 17:04:15 +00:00
cexbrayat f68001d424 docs: fix descendants default explanation for contentChild (#61580)
See #61534

PR Close #61580
2025-05-21 16:15:07 +00:00
hirowf 373480c18b docs: include bun in packageManager value types (#60907)
PR Close #60907
2025-05-21 15:19:38 +00:00
arturovt 93e8565f0e fix(core): cleanup rxResource abort listener (#58306)
The observable terminates immediately when `error` is called, and no further emissions or completion notifications occur. Thus, we have to remove the `abort` listener in both the `error` and `complete` notifications.

PR Close #58306
2025-05-21 15:17:22 +00:00
Kristiyan Kostadinov 1650a8572a refactor(core): handle NO_CHANGE in bindingUpdated (#61557)
Updates the `bindingUpdated` function to handle `NO_CHANGE` instead of throwing. This will allow us to reuse instructions across more cases.

PR Close #61557
2025-05-21 15:13:47 +00:00
Kristiyan Kostadinov 02bd5f8d76 refactor(core): remove attribute interpolation instructions (#61557)
The attribute interpolation instructions aren't used anymore so we can remove them.

PR Close #61557
2025-05-21 15:13:47 +00:00
Kristiyan Kostadinov 32ae421526 refactor(compiler): replace attribute interpolation instructions (#61557)
Replaces the attribute interpolation instructions with `attribute` plus the new `interpolateX` instruction. This allows to reduce our overall instruction footprint.

PR Close #61557
2025-05-21 15:13:47 +00:00
Kristiyan Kostadinov a7be5069dd refactor(core): add instructions for interpolating values (#61557)
Adds the new `interpolate*` instructions that can be passed into other instructions and used to replace our existing flavors of interpolations.

PR Close #61557
2025-05-21 15:13:46 +00:00
Jan Martin 5537950079 refactor(core): expose Binding for easier use of inputBinding (#61351)
When passing bindings as arguments or storing them before use in
`createComponent`, it's handy to be able to reference this type.

The current workaround is to use `ReturnType<typeof inputBinding>`.

PR Close #61351
2025-05-21 15:11:47 +00:00
arturovt 17fe731e8e fix(common): cancel reader when app is destroyed (#61528)
Streams left in a pending state (due to `break` without cancel) may continue consuming or holding onto data behind the scenes. Calling `reader.cancel()` allows the browser or the underlying system to release any network or memory resources associated with the stream.

PR Close #61528
2025-05-21 15:07:17 +00:00
Andrew Scott 971981e1df fix(core): TestBed.tick should ensure test components are synchronized (#61382)
This ensures that `TestBed.tick` updates any components created with
`TestBed.createComponent`, regardless of whether autoDetectChanges is
on.

PR Close #61382
2025-05-21 15:02:52 +00:00
Angular Robot 127bad774a build: update cross-repo angular dependencies (#61576)
See associated pull request for more information.

PR Close #61576
2025-05-21 15:00:22 +00:00
arturovt 216222f8b4 refactor(common): drop httpResource error message (#61570)
Drops `httpResource` error message in production and replaces with an error code.

PR Close #61570
2025-05-21 14:16:53 +00:00
Matthieu Riegler dba912dd07 refactor(platform-browser): replace platform-browser-dynamic with platform-browser (#61498)
The former isn't needed anymore and is now deprecated.

PR Close #61498
2025-05-21 14:01:49 +00:00
Pawel Kozlowski 1123b314b1 refactor(core): consolidate TNode creation checks (#61563)
This change de-duplicates code executed during TNode creation
and reponsible for asserting a TNode index.

PR Close #61563
2025-05-21 13:49:32 +00:00
Pawel Kozlowski a5a18ae191 refactor(core): minimize code in the element-like instructions (#61563)
Minor changes to the element and elementContainer instructions to
move as much code as possible out of those instructions.

PR Close #61563
2025-05-21 13:49:31 +00:00
Jonathan Meier 0cf1001715 feat(compiler-cli): support host directives with direct external references in fast type declaration emission (#61469)
In the initial implementation for experimental fast type declaration
emission introduced in e62fb35, external references in host directives
were not supported at all.

This change adds support for direct external references in host
directives. Any other expressions indirectly using external references
are still not supported.

PR Close #61469
2025-05-21 13:46:43 +00:00
PandaByte ba66a12ec3 docs: fix capitalization error (#61554)
PR Close #61554
2025-05-21 13:42:35 +00:00
arturovt e7656b84b2 refactor(core): drop rxResource error messages (#61565)
Drops `rxResource` error messages in production and replaces with error codes.

PR Close #61565
2025-05-21 12:42:59 +00:00
arturovt 62185714b5 refactor(core): drop injection context assertion in production (#61564)
In other parts of the code, calls to the `assertInInjectionContext` function are guarded with `ngDevMode`. This change aligns these parts of the code with other implementations that drop such assertions in production.

PR Close #61564
2025-05-21 12:42:10 +00:00
Kristiyan Kostadinov 46af02395f fix(compiler): avoid conflicts between HMR code and local symbols (#61550)
Currently we construct the HMR replacement URL inline by calling into the native `URL` constructor. This can cause conflicts with user code that defines a symbol called `URL`.

These changes resolve the issue by moving the URL construction into a separate function. This has a secondary benefit of making the generated code easier to follow and allowing us to update the URL without changing the compiled code.

Fixes #61517.

PR Close #61550
2025-05-21 12:25:25 +00:00
arturovt 6bf6dbc37e fix(core): cleanup testability subscriptions (#61261)
This commit prevents leaking memory when the application is destroyed and subscriptions are still alive.

PR Close #61261
2025-05-21 12:06:23 +00:00
Angular Robot a2fdb497bc build: update cross-repo angular dependencies (#61561)
See associated pull request for more information.

PR Close #61561
2025-05-21 11:55:44 +00:00
arturovt 9416483bd3 refactor(core): drop injection context assertion in production (#61560)
In other parts of the code, calls to the `assertInInjectionContext` function are guarded with `ngDevMode`. This change aligns these parts of the code with other implementations that drop such assertions in production.

PR Close #61560
2025-05-21 11:35:47 +00:00
Jessica Janiuk fa5d7ff409 ci: temporarily disable saucelabs for push jobs (#61558)
This also disables saucelabs for the CI (push) jobs.

PR Close #61558
2025-05-21 11:07:18 +00:00
Matthieu Riegler ef01d3c69e refactor(core): Merge R3TemplateRef implementation and TemplateRef interface (#61455)
This was an artifact of the Ivy migration.

PR Close #61455
2025-05-21 10:07:12 +00:00
Angular Robot e57509e0a2 build: update dependency google-closure-compiler to v20250519 (#61551)
See associated pull request for more information.

PR Close #61551
2025-05-21 10:02:05 +00:00
Paul Gschwendtner 08f7d21d5c refactor(migrations): ensure tsurge configures file system properly (#61553)
Currently in 1P, without this commit, the tsconfig parsing picks up the
default file system (InvalidFS) and results in runtime errors.

PR Close #61553
2025-05-21 10:01:18 +00:00
Charles Lyding 7adbb9c693 docs: add a short redirect for HMR information (#61545)
The `https://angular.dev/hmr` URL will now redirect
to the HMR information at the longer URL:
https://angular.dev/tools/cli/build-system-migration#hot-module-replacement
This shorter URL will be used within console messages within the Angular CLI.

PR Close #61545
2025-05-21 10:00:29 +00:00
Milo 33715b098a refactor(devtools): add dagre-d3-es (#61538)
add dagre-d3-es for use by the signals graph pane. Additionally, add a
patch so that html labels display correctly within d3-zoom

PR Close #61538
2025-05-21 09:56:40 +00:00
Joey Perrott 3acc2a5f07 build: migrate router to use rules_js (#61542)
Use ts_project and ng_project for building router

PR Close #61542
2025-05-21 09:53:34 +00:00
Ahmed Hakeem 7651d37cfe docs(docs-infra): modify bazel config to include shared docs global styles (#61384)
PR Close #61384
2025-05-21 09:51:47 +00:00
Hakeem 2807a166d1 docs(docs-infra): fix docs pages overflow when specific example-viewer exists (#61384)
enforce content to be fluid until a specific max width, and rollback breakpoints to be applied when 1430px is the current win size
as widths between 1430px and 1431px will be broken

PR Close #61384
2025-05-21 09:51:47 +00:00
Jessica Janiuk 282357f042 ci: temporarily disable saucelabs (#61555)
Saucelabs is having connection issues

PR Close #61555
2025-05-21 09:50:45 +00:00
Andrew Scott 1aa57857dd refactor(core): Remove _cdRefInjectingView from markForRefresh (#60918)
The code was not compatible with property renaming so it was always
using _lView. This didn't matter because they're always the same for the
only place the function is used. Casting to any would fix the
renaming problem but introduce a risk of getting "broken" by a refactor
that changes the private variable name. This change removes the
private member access entirely.

PR Close #60918
2025-05-21 09:46:49 +00:00
Joey Perrott 7f6bb91c5d build: update compiler-cli to not be stamped when used for the compiler in ng_project (#61535)
The compiler-cli package needs to be unstamped and will the resulting generated code will be stamped as expected.

PR Close #61535
2025-05-21 09:16:06 +00:00
Joey Perrott e11f48f65e build: migrate forms to rules_js (#61535)
Migrate forms to use ng_project and ts_project

PR Close #61535
2025-05-21 09:16:05 +00:00
Matthieu Riegler 5a4ca62081 docs: fix info about descendants for content queries. (#61534)
- `descendants` option  is `true` for `contentChild`
- `descendants` option is `false` for `contentChildren`

PR Close #61534
2025-05-21 09:06:06 +00:00
Andrew Scott c71adb1ad1 fix(compiler-cli): Always retain prior results for all files (#61487)
This change ensures that prior results for all files are retained even when
a request is made such that we only need a shim for a single file. Prior
to this change, any prior results that were not part of the request were discarded.

PR Close #61487
2025-05-21 08:56:53 +00:00
Angular Robot b0ee7ffa50 docs: update Angular CLI help (#61526)
Updated Angular CLI help contents.

PR Close #61526
2025-05-20 20:07:44 +00:00
Alan Agius 3947a4b9f5 ci: change action: review to action: merge in update docs (#61533)
Simplifies the workflow by reducing the number of required actions for the caretaker or reviewer, similar to Renovate PRs.

PR Close #61533
2025-05-20 20:04:20 +00:00
Angular Robot bb220c0d31 build: update cross-repo angular dependencies (#61530)
See associated pull request for more information.

PR Close #61530
2025-05-20 17:45:02 +00:00
Alan Agius cc331fda3c Revert "ci: clean untracked files before running postUpgradeTasks (#61494)" (#61529)
This reverts commit da6aceef18 as the
issue was resolved upstream.

PR Close #61529
2025-05-20 17:42:18 +00:00
Matthieu Riegler f1f37896c5 docs(docs-infra): display CLI enum values for enums (#61521)
fixes #61516

PR Close #61521
2025-05-20 16:54:12 +00:00
Joey Perrott 69de729cde build: migrate angular-in-memory-web-api to use rules_js (#61524)
Use ts_project and ng_project for building angular-in-memory-web-api

PR Close #61524
2025-05-20 16:53:20 +00:00
Angular Robot 83d004fc6a build: update dependency undici to v7 (#61522)
See associated pull request for more information.

PR Close #61522
2025-05-20 16:51:03 +00:00
arturovt 87688942d4 fix(common): prevent reading chunks if app is destroyed (#61354)
Prevents processing response chunks after the application has been destroyed.

PR Close #61354
2025-05-20 15:09:44 +00:00
Joey Perrott 3440338d45 build: migrate common to use rules_js based toolchain (#61433)
Migrate packages/common to use ts_project and ng_project.

PR Close #61433
2025-05-20 15:07:56 +00:00
Matthieu Riegler 1148b7e0c5 fix(core): unregister onDestroy in toSignal. (#61514)
We cleanup if the observable completes before the onDestroy fires.

fixes #61511

PR Close #61514
2025-05-20 14:43:31 +00:00
Matthieu Riegler 3a7d569d35 docs(docs-infra): fix substitution regex (#61515)
It was replacing `rgba(0,0,0,0)` with `rgba(99.99.99, 0)`

PR Close #61515
2025-05-20 14:27:27 +00:00
Alan Agius 8f65223bd8 fix(core): update min Node.js support to 20.19, 22.12, and 24.0 (#61499)
This is to match the versions of the Angular CLI.

See: https://github.com/angular/angular-cli/pull/30349

PR Close #61499
2025-05-20 14:15:13 +00:00
Angular Robot 6ba9adc797 build: update cross-repo angular dependencies (#61508)
See associated pull request for more information.

PR Close #61508
2025-05-20 13:42:02 +00:00
Jens Kuehlers e2c1d00730 docs: replace material.a.io with material.a.dev (#61513)
PR Close #61513
2025-05-20 13:40:42 +00:00
Angular Robot a62d3e72ce build: update dependency @octokit/graphql to v9 (#61503)
See associated pull request for more information.

PR Close #61503
2025-05-20 12:28:18 +00:00
Jonathan Meier 2796f18a3d test: set the noCheck TS compiler option in declaration-only emission compliance tests (#61470)
No type-checking is performed in declaration-only emission mode so we
should explicitly disable it in the compliance tests.

This also aligns the compiler configuration with the setup used in
`packages/compiler-cli/test/ngtsc/declaration_only_emission_spec.ts`:
https://github.com/angular/angular/blob/2b3c89dba228f55e90e298e6a1fca5850b7f40eb/packages/compiler-cli/test/ngtsc/declaration_only_emission_spec.ts#L31.

PR Close #61470
2025-05-20 12:07:18 +00:00
Angular Robot fb0f5aaa76 build: update cross-repo angular dependencies (#61506)
See associated pull request for more information.

PR Close #61506
2025-05-20 12:00:51 +00:00
Matthieu Riegler 2e7032e29a build: replace platform-browser-dynamic with platform-browser (#61497)
The former isn't needed anymore and is now deprecated.

PR Close #61497
2025-05-20 11:27:22 +00:00
Angular Robot c3e26907c9 build: update cross-repo angular dependencies (#61502)
See associated pull request for more information.

PR Close #61502
2025-05-20 11:07:56 +00:00
Angular Robot c7420df449 build: update dependency google-closure-compiler to v20250518 (#61490)
See associated pull request for more information.

PR Close #61490
2025-05-20 10:06:42 +00:00
Angular Robot 233d001457 build: update dependency conventional-changelog to v7 (#61489)
See associated pull request for more information.

PR Close #61489
2025-05-20 10:03:54 +00:00
Matthieu Riegler 2b73b496e0 test: replace platform-browser-dynamic with platform-browser (#61495)
The former isn't needed anymore and is now deprecated.

PR Close #61495
2025-05-20 10:01:34 +00:00
Paul Gschwendtner 7e571069bc refactor(compiler): avoid duplication between FactoryTarget type (#61472)
Avoids duplication of the `FactoryTarget` enums. This is necessary
now because we are exposing the previously deeply-imported JIT facade
now via the exports; and the typing integration tests surface a type
conflict due to the different duplicated enums.

PR Close #61472
2025-05-20 10:00:43 +00:00
Paul Gschwendtner 082cc5579d build: migrate all ng_module in packages/core/test (#61472)
Migrates all `ng_module` to `ng_project` in `packages/core/test/`.

PR Close #61472
2025-05-20 10:00:43 +00:00
Paul Gschwendtner 8ead19fe00 build: migrate all ts_library in packages/core/test (#61472)
This commit migrates all `ts_library` in `package/core/test` to
`ts_project`, and fixes deep module, or relative imports inside.

PR Close #61472
2025-05-20 10:00:43 +00:00
Paul Gschwendtner 3a106a35bc build: move private testing helpers outside platform-browser/testing (#61472)
These helpers are often imported by various tests throughout the
repository, but the helpers aren't exported/exposed from the public
entry-point; even though they confusingly reside in there.

This commit fixes this, and moves the helpers into
`packages/private/testing`. This is a preparation for the `ts_project`
migration where we don't want to leverage deep imports between packages.

PR Close #61472
2025-05-20 10:00:43 +00:00
Milo fc14ca5e34 refactor(devtools): switch default font to material symbols (#61281)
update from Material Icons to Material Symbols, and use the local
font copy instead of Google fonts to avoid version mismatches

PR Close #61281
2025-05-20 08:53:51 +00:00
hawkgs f5c67f1cde refactor(devtools): introduce responsive-split directive (#61204)
The `ResponsiveSplitDirective` adds responsive behavior to the `as-split` component by a provided width to height ratio.

PR Close #61204
2025-05-20 08:51:59 +00:00
mgechev 1749ee68e3 docs: add update instructions for v20 (#61338)
PR Close #61338
2025-05-20 08:51:19 +00:00
Andrew Scott f182886ce5 refactor(core): Disallow autoDetectChanges(false) in zoneless (#61430)
This removes the ability to use `autoDetectChanges(false)` when
`provideZonelessChangeDetection` is used.

PR Close #61430
2025-05-20 08:49:06 +00:00
Joey Perrott ef0f1a4ca8 build: move ts_project and ng_project for adev into a macro (#61319)
Move ts_project and ng_project into a macro for adev/ instead of providing a custom
tsconfig on every target

PR Close #61319
2025-05-20 08:48:29 +00:00
Joey Perrott 8ef41f3e14 build: migrate adev to use ng_project (#61319)
Move all of adev to use ng_project instead of ng_module

PR Close #61319
2025-05-20 08:48:29 +00:00
Joey Perrott abdfbefe74 build: use an unstamped version of compiler-cli for running the angular compiler in ng_project (#61479)
Use an unstamped version of the compiler when it runs in `ng_project` as it will get stamped appropriately
whenever the generated code gets stamped after its usage."

PR Close #61479
2025-05-20 08:46:34 +00:00
Joey Perrott 447b2a3690 build: migrate animations to use rules_js based toolchain (#61479)
Migrate animations to use `ts_project` and `ng_project`

PR Close #61479
2025-05-20 08:46:33 +00:00
Joey Perrott 1818a84209 build: migrate benchpress to use rules_js (#61486)
Use ts_project to build targets in benchpress package

PR Close #61486
2025-05-20 08:44:53 +00:00
Alan Agius da6aceef18 ci: clean untracked files before running postUpgradeTasks (#61494)
Not sure what changed overnight, but Renovate is now committing .npmrc files that we didn't generate.
Example: https://github.com/angular/angular/pull/61492/files

We should revisit this once we transition away from Yarn.

PR Close #61494
2025-05-20 08:44:03 +00:00
Miles Malerba b77042a554 docs: point cdk drag-drop doc links to adev api pages (#61437)
Now that the drag and drop API pages are on adev we can link to those
instead of external linking to material.angular.io

PR Close #61437
2025-05-19 16:04:07 +00:00
Pawel Kozlowski feb571ceaa refactor(core): expose enableProfiling() on from @angular/core (#61465)
This commit exposes the experimental enableProfiling() API that
enables Angular integration with the Chrome DevTools performance
panel. Previously this integration was exposed on the ng. namespace
only but there are legitimate cases where developers might want to
expose the integration earlier (ex.: bootstrap profiling).

PR Close #61465
2025-05-19 14:22:34 +00:00
Pawel Kozlowski 2b3c89dba2 refactor(core): re-introduce TestBed.flushEffects()" (#61462)
Our intention was to remove TestBed.flushEffects() in Angular v20
as it was a developer preview API that doesn't need to follow our
deprecation policy. It turned out, though, that the angular.dev
documentation wasn't displaying the @developerPreview annotation
properly so some of the developers might have been unaware of the
non-stable nature of this API.

This commits re-introduces the TestBed.flushEffects() API. This
API call will delegate to TestBed.tick().

PR Close #61462
2025-05-19 13:26:52 +00:00
Paul Gschwendtner 1e86aa7871 build: --config=debug should not disable sandbox for all actions (#61468)
Instead of disabling sandbox/workers for every action; which also could
slow-down development turnaround significantly, the flag should only
disable sandboxing for the test actions; allowing for e.g. DevTools to
connect to them, even if they are inside the sandbox.

Arguably, this strategy isn't seemingly necessary in all environments,
but given that we enable network sandboxing in this repo, it seems
reasonable. Ideally we'd also expose `_debug` targets for e.g. Node
tests that have the proper no-sandbox, or requires-network tag.

PR Close #61468
2025-05-19 12:36:43 +00:00
Angular Robot a6b8b2ccd4 build: update cross-repo angular dependencies (#61464)
See associated pull request for more information.

PR Close #61464
2025-05-19 12:04:34 +00:00
Alan Agius 1a81682f29 ci: replace yarn ng-dev misc update-generated-files with separate update commands for specific targets (#61467)
Currently, `yarn ng-dev misc update-generated-files` attempts to update 67 targets, but only 4 actually require updating. Running the full script causes Renovate to slow down significantly, adding around 7 minutes to the process. By replacing it with individual update commands for just the necessary targets, we improve performance and reduce Renovate’s runtime considerably.

PR Close #61467
2025-05-19 11:21:26 +00:00
Paul Gschwendtner b148e272f6 refactor(migrations): gracefully proceed if reference cannot be resolved (#61426)
A runtime error can surface when TypeScript internally fails to resolve
a reference that is named similar to an input, but no `.d.ts` is
available for it.

See example error:
https://github.com/microsoft/TypeScript/issues/61473#issuecomment-2746537781.

PR Close #61426
2025-05-19 11:04:52 +00:00
Angular Robot 10c2ab2a4a build: lock file maintenance (#61456)
See associated pull request for more information.

PR Close #61456
2025-05-19 11:03:53 +00:00
Angular Robot 24ae05f3f8 build: update all non-major dependencies (#61458)
See associated pull request for more information.

PR Close #61458
2025-05-19 09:53:46 +00:00
Kristiyan Kostadinov 7a308ccc3b refactor(core): consolidate logic to determine whether node can be hydrated (#61409)
Several instructions were repeating the logic that checks if a specific can be hydrated. These changes move it into a common location.

PR Close #61409
2025-05-19 09:30:20 +00:00
Kristiyan Kostadinov 6783fb7eae refactor(core): consolidate element end instruction logic (#61409)
There was some identical logic between the `elementEnd` and `elementContainerEnd` instructions. These changes consolidate it.

PR Close #61409
2025-05-19 09:30:20 +00:00
Kristiyan Kostadinov 049fe82de6 refactor(core): consolidate element start logic (#61409)
The logic for the `elementStart` and `elementContainerStart` instructions was identical. These changes consolidate it into a single base instruction.

PR Close #61409
2025-05-19 09:30:20 +00:00
Kristiyan Kostadinov d216ffedbd refactor(core): consolidate first create pass (#61409)
The first create pass for elements and containers was identical. These changes consolidate it to reduce code duplication.

PR Close #61409
2025-05-19 09:30:20 +00:00
Kristiyan Kostadinov b785256b9e perf(core): avoid intermediate arrays in definition (#61445)
A minor performance improvement for `ɵɵdefineComponent` where the underlying `extractDefListOrFactory` call had a chain of `.map.filter` which meant that we were unnecessarily creating intermediate arrays just to filter out the null values. These changes switch to simple `for` loop to get around it.

PR Close #61445
2025-05-19 09:20:07 +00:00
Alan Agius cf8c853523 build: remove @types/diff (#61447)
The latest diff package includes the TS types.

PR Close #61447
2025-05-19 09:17:47 +00:00
Andrew Scott bdbf616a4e refactor(core): Deprecate fixture.autoDetectChanges(true/false) (#61429)
After nearly a decade of existence, there are 0 uses of
`autoDetectChanges(false)` internally. All uses of
`autoDetectChanges(true)` can be migrated directly to
`autoDetectChanges()` instead.

PR Close #61429
2025-05-19 08:31:37 +00:00
Jonathan Meier 77fa204ad1 fix(compiler-cli): rename flag for enabling fast type declaration emission (#61353)
Rename the flag `_geminiAllowEmitDeclarationOnly` to
`_experimentalAllowEmitDeclarationOnly` as a follow-up on a comment in
PR #61334.

PR Close #61353
2025-05-19 08:27:43 +00:00
arturovt 7aae854f5e refactor(animations): mark non-default new expressions as pure (#61452)
Adds `__PURE__` annotations to non-default `new` expressions to enable tree-shaking, even if they are not referenced. These variables are not dropped when Angular is imported from a module that has `sideEffects` set to `true`.

PR Close #61452
2025-05-19 08:26:56 +00:00
Pawel Kozlowski 69984ef55d refactor(core): move the data store operation out of instructions (#61425)
The view data store operation is not an instruction and shouldn't be
located in the instructions folder.

PR Close #61425
2025-05-19 08:24:45 +00:00
Pawel Kozlowski bf99954390 refactor(core): move i18n logic into its dedicated package (#61425)
Move the i18n-related logic out of the instructions folder into
the i18n-dedicated folder / package.

PR Close #61425
2025-05-19 08:24:45 +00:00
Kristiyan Kostadinov 7fa3203ee7 refactor(compiler): account for pipes without names (#61328)
Updates the compiler logic to account for pipe definitions that may not have names.

PR Close #61328
2025-05-19 08:24:06 +00:00
Ben Hong 6938d6fb15 docs: add intro to new ssr guide and refactor information architecture (#61377)
PR Close #61377
2025-05-19 08:18:48 +00:00
Angular Robot 41be5ee17e build: update dependency google-closure-compiler to v20250514 (#61439)
See associated pull request for more information.

PR Close #61439
2025-05-19 08:07:48 +00:00
Angular Robot 7ac3643a14 build: update cross-repo angular dependencies (#61435)
See associated pull request for more information.

PR Close #61435
2025-05-19 08:05:40 +00:00
Matthieu Riegler 174893b7e3 docs: replace references to platform-brower-dynamic with platform-brower (#61428)
PR Close #61428
2025-05-19 08:04:51 +00:00
Matthieu Riegler 13e3966584 docs(docs-infra): only show clear button of textfield when there is a text (#61427)
PR Close #61427
2025-05-16 15:57:35 +00:00
Paul Gschwendtner e4d2347d66 Revert "fix(migrations): avoid applying the same replacements twice when cleaning up unused imports (#59656)" (#61421)
This reverts commit d66881d172.

PR Close #61421
2025-05-16 15:56:44 +00:00
Paul Gschwendtner ca233446f0 refactor: clean-up deduplication workaround from migrations (#61421)
Since the duplication root-cause was solved by the previous commit, we
can revert/drop the logic that was added back then to overcome this
problem with Tsurge.

PR Close #61421
2025-05-16 15:56:44 +00:00
Paul Gschwendtner 4a3d39cd5a refactor: ensure tsurge migrations have clear ownership of files (#61421)
Currently there can be cases, exlusively in 3P, where multiple tsconfig
projects have overlap of source files. This is the default setup of new
CLI applications as well.

When this is the case, Tsurge will treat each tsconfig as an isolated
compilation unit (given the concepts and mental model to support
scalable batching). This is wrong though, and the same `.ts` source file
can appear in two migration invocations; resulting in duplicate
replacements or analysis (depending on the migration).

We've worked around this problem in the past by deduplicating
replacements, or migrating to an ID-based approach with natural
deduplication. This worked, but it's just working around the root cause.

This commit attempts to fix the root cause by adjusting Tsurge to ensure
that no source file ever appears in two compilation units. This is
naively achieved by not adding a source file to a migration unit, if it
was part of a previous one. This is expected to be fine given the nature
of Tsurge migrations that are built to operate on isolated pieces
anyway— so it shouldn't be problematic if e.g. `app.component.ts` ends
up being part of the test tsconfig compilation unit (we avoid this order
though by visiting build targets first).

PR Close #61421
2025-05-16 15:56:44 +00:00
Matthieu Riegler 693006e219 docs(docs-infra): llms-full.txt (#61356)
This includes a basic script to generate the file from the list of markdown files `llms-list.md`

PR Close #61356
2025-05-16 14:38:02 +00:00
Angular Robot c335dcd04c build: update cross-repo angular dependencies (#61415)
See associated pull request for more information.

Closes #61400 as a pr takeover

PR Close #61415
2025-05-16 14:30:35 +00:00
Kristiyan Kostadinov 35a40cbec1 build: fix golden approval script (#61407)
Fixes the `update_all_goldens` script which was throwing, because the query command was also capturing the call into yarn and Bazel which in turn caused it to throw an error. I've also added some validation for the number of targets.

PR Close #61407
2025-05-16 13:59:10 +00:00
Kristiyan Kostadinov 92cbd7a412 build: fix symbol extractor script (#61407)
* Fixes that the symbol extractor approval script was broken after some recent build changes.
* Fixes the `run_all_symbol_extractor_tests` script which wasn't resolving any targets, because the rule name changed.

PR Close #61407
2025-05-16 13:59:09 +00:00
Matthieu Riegler ca700e1def docs(docs-infra): Improve formatting of functions (#61154)
The commit introduce prettier to format some API entries.
For now we'll do only functions are other are a bit more complex because of the support of deprecation.

fixes #59211

PR Close #61154
2025-05-16 13:58:35 +00:00
Paul Gschwendtner dce497806a build: update dev-infra for latest RBE changes (#61408)
Updates dev-infra for the latest RBE changes.

PR Close #61408
2025-05-16 13:25:34 +00:00
Angular Robot f1abf3c2a1 build: update github/codeql-action action to v3.28.18 (#61403)
See associated pull request for more information.

PR Close #61403
2025-05-16 11:06:10 +00:00
Paul Gschwendtner b763059bdd build: migrate packages/core/schematics to ts_project (#61370)
Migrates `packages/core/schematics` to `ts_project`. As part of this,
this commit cleans up some of the mixed module types and tsconfigs in
the folder. A single tsconfig (and it's test variant) are now used.

For the shipped schematics, we explicitly use the `.cjs` extension, so
that the bundles are properly recognized as CommonJS; even if they are
part of the `type: module` `@angular/core` package.

The `package.json` with `type: commonjs` is removed from
`packages/core/schematics` as it's no longer needed given the explicit
extension & caused issues as schematics are compiled with ESM but are
only later bundled for shipping & some tests as ESM.

PR Close #61370
2025-05-16 11:02:07 +00:00
Paul Gschwendtner 8cd0e3f24c build: update legacy ESM interop rules to support explicit .js entrypoints (#61370)
As we migrate more and more code to `ts_project`, we are ending up with
`.js` file extensions (ts_library did generate `.mjs` magically).

Since we don't want to get into the business of migrating
`nodejs_binary` targets at this point (in some cases we might)— we
should support pointing to such files.

PR Close #61370
2025-05-16 11:02:07 +00:00
Paul Gschwendtner d067dff394 build: migrate more targets of @angular/core to ts_project (#61370)
Migrates more targets of `@angular/core` to `ts_project`. Remaining are:

 - tests
 - schematics

PR Close #61370
2025-05-16 11:02:07 +00:00
Vlad Boisa 3dd2f82be8 docs: fix typos (#61257)
Change grammar and fix typos in docs

Fixes #61244

PR Close #61257
2025-05-16 10:20:34 +00:00
Matthieu Riegler ac190f4544 docs: fix note formatting about optionam chaining (#61251)
PR Close #61251
2025-05-16 10:09:34 +00:00
Matthieu Riegler 08bf41edb8 docs(docs-infra): fix API query filtering. (#61300)
On `19.2`  we pass an undefined value to the text-field.
But more generaly, the CVA should protect itself if it doesn't recieve an `undefined` value.

fixes #61299

PR Close #61300
2025-05-16 09:57:06 +00:00
Vlad Boisa 1a31c117b7 docs: fix incomplete sentence (#61391)
Fix insufficient sentence.


Fixes #61350
PR Close #61391
2025-05-16 09:35:43 +00:00
Matthieu Riegler 0995cb7756 refactor(core): cleanup after* option types (#61216)
The `phase` property of `AfterRenderOptions`  was removed in #60641.

PR Close #61216
2025-05-16 09:35:08 +00:00
Angular Robot d59ed604b5 build: update all non-major dependencies (#61168)
See associated pull request for more information.

PR Close #61168
2025-05-16 09:33:25 +00:00
Matthieu Riegler a0be4c19ff docs: fix Routed components example (#61278)
fixes #61277

PR Close #61278
2025-05-16 09:14:38 +00:00
Kristiyan Kostadinov fb65ad157c perf(platform-server): speed up resolution of base (#61392)
The `getBaseHref` method is called several times per request and currently queries through the entire document. We can speed it up by taking advantage of the fact that the `<base>` can only be a direct child of the `<head>` and is usually defined towards the beginning. Below are some benchmarks for a "Hello world" app before and after this change.

### Before:
```
Running 60s test @ http://localhost:4202
100 connections with 10 pipelining factor

┌─────────┬────────┬────────┬────────┬────────┬───────────┬──────────┬─────────┐
│ Stat    │ 2.5%   │ 50%    │ 97.5%  │ 99%    │ Avg       │ Stdev    │ Max     │
├─────────┼────────┼────────┼────────┼────────┼───────────┼──────────┼─────────┤
│ Latency │ 568 ms │ 853 ms │ 901 ms │ 904 ms │ 866.58 ms │ 437.6 ms │ 9915 ms │
└─────────┴────────┴────────┴────────┴────────┴───────────┴──────────┴─────────┘
┌───────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐
│ Stat      │ 1%      │ 2.5%    │ 50%     │ 97.5%   │ Avg     │ Stdev   │ Min     │
├───────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
│ Req/Sec   │ 490     │ 826     │ 1,006   │ 1,643   │ 1,129.3 │ 234.69  │ 490     │
├───────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
│ Bytes/Sec │ 10.4 MB │ 17.4 MB │ 21.3 MB │ 34.7 MB │ 23.9 MB │ 4.96 MB │ 10.3 MB │
└───────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘

Req/Bytes counts sampled once per second.
# of samples: 60

69k requests in 60.04s, 1.43 GB read
90 errors (90 timeouts)
```

### After

```
Running 60s test @ http://localhost:4202
100 connections with 10 pipelining factor

┌─────────┬────────┬────────┬────────┬─────────┬───────────┬───────────┬─────────┐
│ Stat    │ 2.5%   │ 50%    │ 97.5%  │ 99%     │ Avg       │ Stdev     │ Max     │
├─────────┼────────┼────────┼────────┼─────────┼───────────┼───────────┼─────────┤
│ Latency │ 471 ms │ 831 ms │ 889 ms │ 1668 ms │ 835.91 ms │ 467.89 ms │ 9720 ms │
└─────────┴────────┴────────┴────────┴─────────┴───────────┴───────────┴─────────┘
┌───────────┬─────────┬─────────┬─────────┬─────────┬──────────┬────────┬─────────┐
│ Stat      │ 1%      │ 2.5%    │ 50%     │ 97.5%   │ Avg      │ Stdev  │ Min     │
├───────────┼─────────┼─────────┼─────────┼─────────┼──────────┼────────┼─────────┤
│ Req/Sec   │ 390     │ 860     │ 1,145   │ 1,572   │ 1,156.77 │ 222.65 │ 390     │
├───────────┼─────────┼─────────┼─────────┼─────────┼──────────┼────────┼─────────┤
│ Bytes/Sec │ 8.24 MB │ 18.2 MB │ 24.2 MB │ 33.2 MB │ 24.4 MB  │ 4.7 MB │ 8.24 MB │
└───────────┴─────────┴─────────┴─────────┴─────────┴──────────┴────────┴─────────┘

Req/Bytes counts sampled once per second.
# of samples: 60

71k requests in 60.03s, 1.47 GB read
140 errors (140 timeouts)
```

PR Close #61392
2025-05-16 09:03:38 +00:00
Angular Robot 7d39b4af2e build: update dependency google-closure-compiler to v20250407 (#61397)
See associated pull request for more information.

PR Close #61397
2025-05-16 08:47:18 +00:00
Angular Robot 743c7cf5d2 build: update cross-repo angular dependencies (#61339)
See associated pull request for more information.

PR Close #61339
2025-05-16 08:45:13 +00:00
Alan Agius 333a0f35dd ci: update step name in workflow (#61393)
This was named incorrectly.

PR Close #61393
2025-05-16 08:32:29 +00:00
Angular Robot a4bac2a339 docs: update Angular CDK apis (#61395)
Updated Angular CDK api files.

PR Close #61395
2025-05-16 08:30:14 +00:00
Alan Agius d3f667ab31 Revert "docs: update Angular CDK apis [main] (#61346)" (#61394)
This reverts commit eb9806ab0e so that we can test the workflow.

PR Close #61394
2025-05-16 08:08:44 +00:00
Andrew Scott 8e2ca25e26 fix(core): Testing should not throw when Zone does not patch test FW APIs (#61376)
This prevents `core/testing` from throwing an error if ZoneJS is present
but does not patch the test FW APIs such that `fakeAsync` works
automatically. For example, there is currently no patching of the vitest
APIs, so if you try to use Vitest with Zone on the page, it will throw.

PR Close #61376
2025-05-16 07:53:40 +00:00
Jan Martin f1fc574920 docs: call out the available variables in track expressions (#61252)
At least to me it was surprising that values from the surrounding
"lexical-ish" scope weren't available in `track <expr>`.

PR Close #61252
2025-05-16 07:51:09 +00:00
Andrew Scott da67f4705c fix(docs-infra): Correctly support the CLI tutorial type (#61246)
There were a myriad of problems when using the type: 'cli' for a
tutorial:

* Editor component would flicker the non-cli version first since that
  was the default value. Fixed by not showing anything until type is
  available
* Editor component still rendered a split screen when there was no
  preview. Fixed
* Project initialization was incorrect because the terminal would appear
  to be available but really didn't work until dependencies were done
  installing. Fixed by sharing initialization with regular project init
  and piping the install output to the interactive terminal
* Terminals would not work when going from type: 'cli' to another or
  vice versa. This is because the element instance of a terminal cannot
  change once it is opened. Fixed by dispoing and recreating terminals
  when the element changes

PR Close #61246
2025-05-16 07:50:24 +00:00
hawkgs 34f60549f2 refactor(devtools): fix profiler tree map viz background color (#61330)
Fixes a regression caused most likely by #60374.

PR Close #61330
2025-05-16 07:43:51 +00:00
Alan Agius 0c993378ff ci: use current branch as base for pull request (#61390)
Avoid creating new branches since peter-evans/create-pull-request uses the currently checked-out branch as the base.

PR Close #61390
2025-05-16 07:42:18 +00:00
Angular Robot eb9806ab0e docs: update Angular CDK apis [main] (#61346)
Updated Angular CDK api files.

PR Close #61346
2025-05-16 07:38:42 +00:00
Andrew Seguin 25317dd958 docs: make drag and drop examples preview (#59737)
PR Close #59737
2025-05-16 07:38:03 +00:00
Miles Malerba a31648d9aa docs: fix embedded preview (#59737)
update the embeddable examples glob to captrue the drag & drop examples,
and fix the current build issues in the drag & drop examples

PR Close #59737
2025-05-16 07:38:03 +00:00
Andrew Seguin 086d2f70cf docs: add preview to an example to test (#59737)
PR Close #59737
2025-05-16 07:38:03 +00:00
Miles Malerba 59ad8edf24 ci: fix build (#59737)
Deletes the BUILD.bazel in examples/drag-drop so the files can be
collected in examples/BUILD.bazel instead

PR Close #59737
2025-05-16 07:38:03 +00:00
Amy Sorto 4f387126e6 docs: add code examples for drag and drop guide (#59737)
# Conflicts:
#	adev/src/content/guide/BUILD.bazel

PR Close #59737
2025-05-16 07:38:03 +00:00
Amy Sorto 4afb2eea42 docs: add drag and drop guide (#59737)
PR Close #59737
2025-05-16 07:38:02 +00:00
Will 保哥 dee2dde793 docs: update Traditional Chinese footer link (#61280)
update Traditional Chinese footer link from angular.tw to dev.angular.tw to direct users to the new Traditional Chinese dev site.

PR Close #61280
2025-05-16 07:36:19 +00:00
Angular Robot ee0d9bd1cd build: update dependency diff to v8 (#61386)
See associated pull request for more information.

PR Close #61386
2025-05-16 07:30:47 +00:00
Alan Agius 1ffe37df33 ci: replace usage of create-pr-for-changes with create-pull-request (#61388)
This changes remove the usage of the custom of github action to create PRs instead it uses `peter-evans/create-pull-request`.

PR Close #61388
2025-05-16 07:14:36 +00:00
Alan Agius cd9b1b7b72 ci: ensure uncommitted changes are cleaned up before creating a branch (#61387)
This ensures that all uncommitted changes are cleaned up before creating a new branch.

PR Close #61387
2025-05-16 07:14:01 +00:00
Angular Robot 2699dd6555 build: update dependency node to v22.15.1 (#61357)
See associated pull request for more information.

PR Close #61357
2025-05-15 10:17:46 -07:00
Pawel Kozlowski d9d9e42c23 fix(core): handle different DI token types in Chrome DevTools integration (#61333)
This small refactor makes the DI events reporting code more resiliant
with respect to finding names for different token types.

PR Close #61333
2025-05-15 10:15:32 -07:00
Alan Agius 56c0ef8eb7 refactor: replace port 4206 usage with 4209 (#61362)
Port `4206` is used by other tests which causes this test to be flakey example https://github.com/angular/angular/actions/runs/15038891642/job/42265813534

PR Close #61362
2025-05-15 10:12:44 -07:00
Doug Parker d4ef72d378 release: bump Angular DevTools version to 1.0.31 (#61355)
PR Close #61355
2025-05-15 10:10:52 -07:00
Matthieu Riegler 55a9921b58 docs: add llms.txt (#61285)
PR Close #61285
2025-05-15 10:09:10 -07:00
Alan Agius 38f251da40 ci: streamline adev CDK APIs and CLI help workflows (#61253)
This commit implements several enhancements to the adev docs update workflow pipeline:

-   **Unify actions:** Merge the workflows into a single one.
-   **Optimize Git cloning:** Clone the repo with `--depth=0` only once per push instead of 2 times.
-   **Prevent concurrent runs:** Implement concurrency control to automatically cancel in-progress workflow runs for the same branch, ensuring only the latest commit is processed.

PR Close #61253
2025-05-15 10:05:30 -07:00
Matthieu Riegler a4e2139620 refactor(platform-browser): Deprecate the platform-browser-dynamic package (#61043)
All entries of the `@angular/platform-browser-dynamic` package are now deprecated.
We now recommend using the `@angular/platform-browser` package instead.
In case a JIT application/testing environment is complaining about missing the compiler also add `import '@angular/compiler'`

DEPRECATED: All entries of the `@angular/platform-browser-dynamic`

PR Close #61043
2025-05-15 09:48:15 -07:00
Charles Lyding c0cd3c2ed3 fix(compiler-cli): avoid ECMAScript private field metadata emit (#61227)
The Angular class metadata emit structure does not support the use of
private fields. If the class metadata emit is enabled and an ECMAScript
private (i.e., `#` prefixed) member contains a decorator, the member will
now be excluded from the emitting `setClassMetadata` call. This prevents
runtime errors due to invalid syntax.

PR Close #61227
2025-05-15 09:45:01 -07:00
Doug Parker 35b944dbec refactor(devtools): remove release process overview and add step to check for release (#60892)
The release process overview is out of date and does not accurately reflect section headers. It's not worth the maintenance effort of keeping it in sync with the rest of the doc.

Added a step 0 to check if there's actually anything to release, reusing the command from later in the doc.

Also makes a few random small corrections to reflect the new release process.

PR Close #60892
2025-05-15 09:42:51 -07:00
Alex Rickabaugh 0957e074c4 docs: release notes for the v20.0.0-rc.1 release 2025-05-15 09:42:01 -07:00
Alex Rickabaugh b2a74aa157 docs: release notes for the v19.2.11 release 2025-05-15 08:28:10 -07:00
Paul Gschwendtner ff62ff1793 refactor: explicitly ensure ngDevMode types are available (#61365)
This commit adds an import to the `ng_dev_mode.ts` file that augments
`global` to have types for `ngDevMode`.

Notably this change is currently not needed because the file is loaded
by `ts_library` through `tsconfig#files`— but in a separate PR we are
switching the target to `ts_project` which no longer loads all Bazel
dependency files via `tsconfig#files`; resulting in the ambient types no
longer magically being available.

PR Close #61365
2025-05-15 12:45:12 +00:00
Alan Agius 31abc9dbb0 build: remove resolution for @angular/core (#61360)
This causes running `pnpm import` directly to fail

```
Scope: all 4 workspace projects
Progress: resolved 1, reused 0, downloaded 0, added 0
.                                        |  WARN  deprecated @babel/plugin-proposal-async-generator-functions@7.20.7
.                                        |  WARN  deprecated gulp-conventional-changelog@5.0.0
.                                        |  WARN  deprecated angular@1.5.11
.                                        |  WARN  deprecated angular@1.6.10
.                                        |  WARN  deprecated angular@1.7.9
.                                        |  WARN  deprecated angular@1.8.3
.                                        |  WARN  deprecated protractor@7.0.0
.                                        |  WARN  deprecated tslint@6.1.3
Progress: resolved 177, reused 1, downloaded 0, added 0
Packages are hard linked from the content-addressable store to the virtual store.
  Content-addressable store is at: /tmp/renovate/cache/others/pnpm-store/v3
  Virtual store is at:             node_modules/.pnpm
Progress: resolved 323, reused 2, downloaded 1, added 0
Progress: resolved 833, reused 2, downloaded 1, added 0
Progress: resolved 1565, reused 2, downloaded 1, added 0
Progress: resolved 2264, reused 2, downloaded 1, added 0
 ERR_PNPM_NO_MATCHING_VERSION  No matching version found for @angular/compiler@0.0.0-PLACEHOLDER

This error happened while installing a direct dependency of /tmp/renovate/repos/github/angular/angular

The latest release of @angular/compiler is "19.2.10".

Other releases are:
  * v4-lts: 4.4.7
  * v5-lts: 5.2.11
  * v6-lts: 6.1.10
  * v7-lts: 7.2.15
  * v8-lts: 8.2.14
  * v9-lts: 9.1.13
  * v10-lts: 10.2.5
  * v11-lts: 11.2.14
  * v12-lts: 12.2.17
  * v14-lts: 14.3.0
  * v13-lts: 13.4.0
  * v15-lts: 15.2.10
  * v16-lts: 16.2.12
  * v17-lts: 17.3.12
  * v18-lts: 18.2.13
  * next: 20.0.0-rc.0

If you need the full list of all 906 published versions run "$ pnpm view @angular/compiler versions".

```

PR Close #61360
2025-05-15 09:11:54 +02:00
Jonathan Meier e62fb359d6 feat(compiler-cli): add experimental support for fast type declaration emission (#61334)
In declaration-only emission mode, the compiler extracts the type
declarations (.d.ts) files without full type-checking, which is possible
with sufficient type annotations on exports that can be ensured by the
`isolatedDeclarations` TS compiler option.

This allows us to decouple type declaration emission from the actual
full compilation doing the type-checking, thereby removing the
edge between dependent TS files in the build action graph. In other
words, the compilation of a TS file no longer indirectly depends on the
compilation of all the TS files it imports through its dependency on
their type declarations, because the type declarations themselves no
longer depend on the compilation of their associated TS file.

Without the coupling between type declaration emission and compilation,
compilation time of a TS project is no longer bound dependent on the
depth of the TS dependency tree as we can now build the entire project
with just two entirely parallel phases: 1) emit the type declarations of
all TS files in parallel and 2) compile all TS files in parallel.

Since the Angular compiler adds static metadata fields to components,
directives, modules, pipes and services based on their respective class
annotations, it needs to actively partake in the type declaration
emission in order to provide the types for these static fields in the
declaration.

In this change, we add experimental support for a declaration-only
emission mode based on the local compilation mode, which already
operates without type-checking and access to external type information,
i.e. the same environment as is required for declaration-only emisssion.

Apart from the same restrictions applied in local compilation mode,
there are a few more restrictions imposed on code being compatible with
this initial and experimental implementation:

* No support for `@NgModule`s using external references.
* No support for `hostDirectives` in `@Component`s and `@Directive`s
  using external references
* No support for `@Input` annotations with `transform`.

PR Close #61334
2025-05-14 14:07:37 -07:00
Joey Perrott 68d774f49d build: use common macro to define tsconfig for service worker (#61341)
Define the tsconfig for service worker instead of manually including the tsconfig on each target

PR Close #61341
2025-05-14 10:43:25 -07:00
arturovt a5db6c41d0 fix(core): enable stashing only when withEventReplay() is invoked (#61077)
This commit brings the necessary event replay code code in tree-shakable manner.

PR Close #61077
2025-05-14 10:35:57 -07:00
Joey Perrott d835a44318 build: migrate upgrade to use ng_project instead of ng_module (#61320)
Use ng_project instead of ng_module in @angular/upgrade

PR Close #61320
2025-05-14 09:34:28 -07:00
Matthieu Riegler 5af8afee4b refactor(devtools): fix button styling on the profiler frame selector (#61309)
Missing standalone import.

PR Close #61309
2025-05-14 09:27:13 -07:00
Olexandr88 989c65ee9e docs: delete discord badge from README file (#61308)
PR Close #61308
2025-05-14 09:24:38 -07:00
Charles Lyding a07413abed refactor(router): add return types to exported functions (#61310)
Return types for exported functions from the router package have now been
added. This provides preparation for the inclusion of additional linting
rules which will eventually enforce the presence of return types for
functions. It also improves readability and type correctness within the
code.

PR Close #61310
2025-05-14 08:57:35 -07:00
cexbrayat 3e1baa5a95 fix(compiler-cli): typo in NG2026 message (#61325)
The newly introduced NG2026 error for selectorless components had a typo in its message.

PR Close #61325
2025-05-14 08:56:09 -07:00
Angular Robot 895b67146e build: update dependency @bazel/runfiles to v6 (#61322)
See associated pull request for more information.

PR Close #61322
2025-05-14 08:55:25 -07:00
Joey Perrott c8abc7faff build: migrate service-worker to ng_project (#61318)
Migrate service worker to use ng_project instead of ng_module

PR Close #61318
2025-05-14 08:54:39 -07:00
Joey Perrott ae0ad878eb build: rename devtools ts_library to ts_project (#61317)
Rename ts_library to ts_project throughout devtools

PR Close #61317
2025-05-14 08:51:21 -07:00
Joey Perrott 31efc4bd24 build: migrate devtools to use ng-project (#61317)
Migrate devtools to use ng-project

PR Close #61317
2025-05-14 08:51:20 -07:00
Hakeem 4db2166419 docs(docs-infra): fix update page styles to adhere to the new layout (#61256)
PR Close #61256
2025-05-14 08:47:29 -07:00
Hakeem 395d3bc4cb docs(docs-infra): fixating the position of the docs content whether TOC exists or not (#61256)
PR Close #61256
2025-05-14 08:47:29 -07:00
Hakeem abef774485 docs(docs-infra): integrate the new layout with the new changes (#61256)
fix new global layout issues, and make other pages adhere to the new centered layout like cli ref page, cli ref details, api ref details pages

PR Close #61256
2025-05-14 08:47:29 -07:00
Andrew Scott 9e5bcc04f7 refactor(docs-infra): remove component suffix from democomponent (#61254)
this removes the component suffix from the DemoComponent in tutorials

PR Close #61254
2025-05-14 08:46:28 -07:00
Andrew Scott 989e3f0a88 refactor(docs-infra): remove component suffix from first-app tutorial (#61254)
this removes the component suffix from the first-app tutorial steps

PR Close #61254
2025-05-14 08:46:28 -07:00
Andrew Scott 03ae3860c2 refactor(docs-infra): remove component suffix from learn-angular tutorial (#61254)
this removes the component suffix from the learn-angular tutorials

PR Close #61254
2025-05-14 08:46:28 -07:00
Andrew Scott b8a0e6b7ea refactor(docs-infra): remove component suffix from playground (#61254)
this removes the component suffix from playground components

PR Close #61254
2025-05-14 08:46:28 -07:00
Andrew Scott 19da174ce1 refactor(docs-infra): Remove component suffix from deferrable views tutorial (#61254)
This commit removes the component suffix from the deferrable views tutorial

PR Close #61254
2025-05-14 08:46:28 -07:00
Andrew Scott 29f873b5f2 refactor(docs-infra): Remove 'component' suffix from App[Component] in tutorials (#61254)
This commit refactors the tutorials to drop the Component suffix from
AppComponent, both from the TS file and the CSS.

PR Close #61254
2025-05-14 08:46:28 -07:00
Jan Martin 4108efaee6 docs: document the use of this in template expression syntax (#61250)
As of Angular 19, `this` should consistently reference the given
class property.

See: https://github.com/angular/angular/pull/55183
Co-authored-by: Jeremy Elbourn <jelbourn@google.com>
Co-authored-by: Matthieu Riegler <kyro38@gmail.com>

PR Close #61250
2025-05-14 06:35:55 -07:00
Paul Gschwendtner 8e78b4e438 build: add script to diff packages and ensure no unexpected changes (#61275)
Adds a script to diff snapshot packages to allow for easy verification
that no unexpected changes were made.

PR Close #61275
2025-05-14 12:01:52 +00:00
Paul Gschwendtner 925b923e85 build: add modified version of tsec that can work with interop (#61275)
As we roll out more PRs that migrate to `ts_project`, we need to make
sure that we don't break existing `tsec` targets. This PR copies the
original `tsec` Starlark code and adjusts it to work with the interop.

Note that we don't patch as this would unnecessarily complicate this
file that only exists during migration. Long-term, after migration, we
either need to consider switching to the new ESLint plugin that is being
worked on (I'm in contact with the team), or we send a CL to update the
Tsec Starlark code to keep our changes minimal and avoid scope increase.

PR Close #61275
2025-05-14 12:01:51 +00:00
Paul Gschwendtner c123125ca1 build: fix ts_project interop to properly create linker mappings (#61275)
This commit fixes that the interop targets weren't properly creating
linker mappings in some cases. This could break spec bundling.

PR Close #61275
2025-05-14 12:01:51 +00:00
Paul Gschwendtner b71c35a6b5 refactor: update packages/core:{core,src} to ts_project (#61275)
Updates `packages/core:core` and `packages/core/src/...` to `ts_project`
of `rules_js`.

PR Close #61275
2025-05-14 12:01:51 +00:00
Paul Gschwendtner 397f9987ef build: support new ng_project rule (#61275)
Supports the `ng_project` rule with the local compiler-cli version
from HEAD.

PR Close #61275
2025-05-14 12:01:51 +00:00
Alan Agius a7b58e3c5a build: update dependency @rollup/plugin-node-resolve to v16 (#61326)
See associated pull request for more information.

Closes #61323 as a pr takeover

PR Close #61326
2025-05-14 11:18:15 +00:00
Angular Robot 0fc0d67146 build: update cross-repo angular dependencies (#61286)
See associated pull request for more information.

PR Close #61286
2025-05-14 10:43:35 +00:00
Kristiyan Kostadinov 3aef3e64cd refactor(language-service): rename all references to selectorless directives (#61307)
Follow-up to #61240 that adds renaming support for selectorless components/directives both from the template and from the TypeScript source.

PR Close #61307
2025-05-14 11:06:22 +02:00
Kristiyan Kostadinov f6bb6cc09a build: set up runtime tests for selectorless (#61307)
Sets up the tests for the selectorless runtime so that we can easily start writing them when we get to it. The tests need to be AoT compiled so they're defined as a separate target from the other `acceptance` tests.

PR Close #61307
2025-05-14 11:06:22 +02:00
Kristiyan Kostadinov eae1083a54 refactor(compiler): indicate in AST if node is self-closing (#61307)
Follow-up from https://github.com/angular/angular/pull/61240#discussion_r2084445328. Adds a `isSelfClosing` property on element-like AST nodes so consumers can easily determine if it's self-closing, rather than having to look at the spans. This is useful for migrations and in the language service.

PR Close #61307
2025-05-14 11:06:22 +02:00
Paul Gschwendtner 84d50d205a refactor: support arbitrary stats/metrics in tsurge (#61272)
Supports arbitrary stats/metrics in Tsurge. This will make
complex analysis easier as we aren't bound to just `Record<string,
number>` counters.

PR Close #61272
2025-05-14 11:05:55 +02:00
Paul Gschwendtner 3d0ecb2273 refactor: remove unused beam pipeline code (#61272)
We don't need this logic anymore as we combine in batches and don't deal
with bulk data files that combine all units.

PR Close #61272
2025-05-14 11:05:55 +02:00
cexbrayat 4058f8d202 refactor(core): remove leftover todos in integration tests (#61313)
The TODOs can be removed as the tests were fixed in 193bd7c54a

PR Close #61313
2025-05-14 10:16:14 +02:00
Angular Robot c34efccef0 build: lock file maintenance (#61266)
See associated pull request for more information.

PR Close #61266
2025-05-13 16:35:32 -07:00
Miles Malerba 612e3970de docs: update references to the cdk/testing apis (#60853)
PR Close #60853
2025-05-13 16:32:35 -07:00
Miles Malerba cf57c3a073 docs: generate api pages for cdk (#60853)
Generates html for the cdk api pages based on the json files imported
from angular/cdk-builds

PR Close #60853
2025-05-13 16:32:35 -07:00
Kristiyan Kostadinov 8f2874e86d fix(compiler): incorrectly handling let declarations inside i18n (#60512)
The compiler wasn't handling `@let` declarations placed inside i18n blocks. The problem is that `assignI18nSlotDependencies` phase assigns the `target` of i18n ops much earlier than the `@let` optimization. If the `@let` ends up getting optimized because it isn't used in any child views, the pointer in the i18n instruction becomes invalid. This hadn't surfaced so far, because we didn't optimize `declareLet` ops, however once we do, we start hitting assertions that the optimized `declareLet` isn't used anywhere.

These changes resolve the issue by moving the i18n phases after the `@let` optimization.

PR Close #60512
2025-05-13 16:31:38 -07:00
Kristiyan Kostadinov a6b7b9b8c5 perf(compiler): reduce allocations for let declarations only used in the same view (#60512)
We have some code that avoids `storeLet` calls for declarations only used in the same view, however we didn't previously remove the corresponding `declareLet` calls, because of the following case:

```
@let foo = something$ | async; <!-- First in the template -->
{{foo}}
```

Here we need a `TNode` (created by `declareLet`) in order for DI to work correctly. Since this is only required when using pipes, we can optimize away expressions that do not have pipes.

PR Close #60512
2025-05-13 16:31:38 -07:00
Paul Gschwendtner 810b0a7e5c refactor: add explicit types for exports relying on inferred call return type (#61312)
As part of the Bazel toolchain migration we noticed that implicit types
generated by the TypeScript compiler sometimes end up referencing types
from other packages (i.e. cross-package imports).

These imports currently work just because the Bazel `ts_library` and
`ng_module` rules automatically inserted a `<amd-module
name="@angular/x" />` into `.d.ts` of packages. This helped TS figure
out how to import a given file. Notably this is custom logic that is not
occuring in vanilla TS or Angular compilations—so we will drop this
magic as part of the toolchain cleanup!

To improve code quality and keep the existing behavior working, we are
doing the following:

- adding a lint rule that reduces the risk of such imports breaking. The
  failure scenario without the rule is that API goldens show unexpected
  diffs, and types might be duplicated in a different package!

- keeping the `<amd-module` headers, but we manually insert them into
  the package entry-points. This should ensure we don't regress
  anywhere; while we also improved general safety around this above.

Long-term, isolated declarations or a lint rule from eslint-typescript
can make this even more robust.

PR Close #61312
2025-05-13 22:45:18 +00:00
Matthieu Riegler dd25f3d20f refactor(core): remove USE_RUNTIME_DEPS_TRACKER_FOR_JIT flag. (#61265)
The code has been migrated in G3, this flag is no longer necessary.

PR Close #61265
2025-05-13 15:22:18 -07:00
Alan Agius b4c383b274 build: do not auto install peer dependencies (#61294)
Avoid pnpm auto-installing peer dependencies. We want to be explicit about our versions used for peer dependencies, avoiding potential mismatches. In addition, it ensures we can continue to rely on peer dependency placeholders substituted via Bazel.

PR Close #61294
2025-05-13 08:55:42 +00:00
Alan Agius 9085134474 ci: disable updates for @angular/build-tooling (#61294)
This package requires some work to be updated.

PR Close #61294
2025-05-13 08:55:42 +00:00
Alan Agius cda963600f ci: refactor renovate config to use dev-infra preset (#61268)
This change uses the dev-infra preset.

PR Close #61268
2025-05-12 15:36:32 -07:00
Kristiyan Kostadinov 4dc7136c49 refactor(migrations): remove unused code (#61260)
The `waitForAsync` rule has been disabled internally which allows us to delete its code, as well as some unused adjacent code.

PR Close #61260
2025-05-12 15:34:07 -07:00
Andrew Scott 1755e09d0a refactor(docs-infra): Clean up embedded editor code (#61242)
This commit cleans up the embedded editor code quite a bit by making
better use of current signal APIs

PR Close #61242
2025-05-12 15:32:25 -07:00
Kristiyan Kostadinov fa27b76339 refactor(language-service): initial reference and rename implementation for selectorless (#61240)
Adds an initial implementation for finding references and renaming to selectorless components/directives.

Finding references should work everywhere, whereas renaming only currently works when initiated from the template.

PR Close #61240
2025-05-12 15:31:45 -07:00
Kristiyan Kostadinov f074c30616 refactor(language-service): support quick info selectorless symbols (#61240)
Updates the language service to produce quick info for selectorless components and directives.

PR Close #61240
2025-05-12 15:31:45 -07:00
Kristiyan Kostadinov cec512fdfd refactor(language-service): support definitions for selectorless (#61240)
Updates the language service to handle producing definition information for selectorless components and directives.

PR Close #61240
2025-05-12 15:31:45 -07:00
Kristiyan Kostadinov c69dda61c2 refactor(language-service): set up template targets for selectorless (#61240)
Adds the logic to resolve the template targets for the selectorless component and directive nodes. This is a prerequisite for other functionality.

PR Close #61240
2025-05-12 15:31:45 -07:00
Kristiyan Kostadinov 109e49c31e refactor(compiler-cli): produce template symbols for selectorless nodes (#61240)
Updates the template type checker to produce symbols for selectorless nodes. This is necessary for integration into the language service.

PR Close #61240
2025-05-12 15:31:45 -07:00
Kristiyan Kostadinov c439d6938d fix(compiler-cli): symbol builder duplicating host directives (#61240)
The template symbol builder works by finding the variables referring to template AST nodes with specific offsets and resolving them to directives. Afterwards it goes through the directives and resolves their host directives.

The problem is that host directives are added with the exact same offsets as their host which means they get added once initially and again when resolving host directives.

These changes resolve the issue by de-duplicating them.

PR Close #61240
2025-05-12 15:31:44 -07:00
Angular Robot 8f9a21ae6f build: update cross-repo angular dependencies (#61234)
See associated pull request for more information.

PR Close #61234
2025-05-12 15:30:57 -07:00
Joey Perrott 70f2031527 build: migrate service-worker package to use ts_project (#61226)
Migrate the package to using rules_js

PR Close #61226
2025-05-12 15:29:28 -07:00
Charles Lyding f03ff5acf9 fix(compiler-cli): avoid fatal diagnostics for invalid module schemas (#61220)
In the event of an invalid `schemas` field for an Angular module, an
empty schema array will now be used instead of a fatal error occurring.
A build will still fail in this case with the error reported as a
diagnostic. However, for the language service, this allows the module
to exist in the compiler registry and prevents cascading diagnostics
within an IDE due to "missing" modules/components. The originating
schema related errors will still be reported in the IDE.

PR Close #61220
2025-05-12 15:28:45 -07:00
Matthieu Riegler ba38e1c301 docs(docs-infra): preselect search text on re-open (#61129)
PR Close #61129
2025-05-12 15:25:50 -07:00
Andrew Scott 3c9b8d9de5 refactor(docs-infra): Remove rethrowing error handler (#61243)
This is no longer necessary since the work in the FW to rethrow in the
TestBed error handler.

PR Close #61243
2025-05-09 10:40:14 -07:00
Jens Kuehlers 9fb0fc84dc docs: change supported versions when v20 releases (#61238)
PR Close #61238
2025-05-09 10:33:35 -07:00
Alan Agius a5f016541b refactor: remove redundant renovate setting (#61232)
Remove `pinDigests` as we do update docker images.

PR Close #61232
2025-05-09 10:32:56 -07:00
Matthieu Riegler fd5a92d3e0 build: force resolution of @angular/core to recent version (#61128)
This intends to fix the Angular Language service issues for devtools/adev because it pulls the version from the node_modules and it currently is 14.3.0.

PR Close #61128
2025-05-09 10:30:16 -07:00
Matthieu Riegler 3eeea56ba0 refactor(core): remove compileComponents invocations (#61032)
Those weren't necessary.

PR Close #61032
2025-05-09 10:27:14 -07:00
Hakeem 108043fa76 docs(docs-infra): limit the flexible width of the main content for better UX (#58831)
PR Close #58831
2025-05-09 10:24:13 -07:00
ahmadhakeem18 20fdeab612 docs(docs-infra): fix the global layout of the site (#58831)
take the full width of the page for all the pages that use docs-viewer, also reserve an area for table of contents on-demand

Resolves: #52648

PR Close #58831
2025-05-09 10:24:13 -07:00
Miles Malerba c0e9fc103f docs: rename @nodoc to @docs-private (#61194)
This aligns with how angular/components marks their hidden APIs.
`@nodoc` has been broken since the switch to adev, this change should
properly hide the APIs again.

PR Close #61194
2025-05-09 10:23:00 -07:00
Joey Perrott 12a5b7bb86 build: migrate upgrade package to use ts_project (#61245)
Migrate the package to using rules_js

PR Close #61245
2025-05-09 16:43:04 +00:00
Joey Perrott 5f1c08d75f build: migrate adev shared-docs package to use ts_project (#61193)
Migrate the build rules for shared docs to use ts_project

PR Close #61193
2025-05-09 16:30:05 +00:00
Paul Gschwendtner d02165d639 build: remove unused debugging leftover from RBE investigation (#61181)
This log output doesn't provide any benefit anymore, so we can remove
it.

PR Close #61181
2025-05-09 15:59:46 +00:00
Paul Gschwendtner 10bc80a788 build: migrate compiler-cli/src/ngtsc to ts_project (#61181)
Migrates all of `compiler-cli/src/ngtsc` to `ts_project`. This change
was generated using Gemini.

PR Close #61181
2025-05-09 15:59:46 +00:00
Paul Gschwendtner 81566ec1dc build: migrate manual_api_docs to rules_js (#61181)
Migrates `manual_api_docs` to `rules_js`. Since compiler CLI is ESM
compiled but doesn't have extensions, we can either bundle or simply use
the dependency as type only. This is easier and sufficient for this
use-case.

PR Close #61181
2025-05-09 15:59:46 +00:00
Paul Gschwendtner 32c4792667 build: migrate compiler-cli/src/ngtsc/docs to ts_project (#61181)
Migrates `compiler-cli/src/ngtsc/docs` to `ts_project`.

PR Close #61181
2025-05-09 15:59:46 +00:00
Paul Gschwendtner 54e785683a build: prepare for compiler-cli to be using ts_project (#61181)
Prepare the compiler-cli package for being ready for migration
to `ts_project`.

PR Close #61181
2025-05-09 15:59:46 +00:00
Alan Agius 83c22ec904 ci: restore .npmrc before executing postUpgradeTasks (#61239)
Renovate temporarily modifies the `.npmrc` file during its operations and reverts these changes afterward. However, during `postUpgradeTasks`, the non reverted `.npmrc` will lead to errors when running `yarn bazel sync --only=repo`

See: https://github.com/renovatebot/renovate/discussions/14897

PR Close #61239
2025-05-09 14:25:49 +00:00
Paul Gschwendtner c8dfe6da34 ci: ensure pnpm-lock file and aspect lock files are up-to-date (#61224)
Ensures that the pnpm lock file and Aspect lock files are up-to-date
in PRs.

PR Close #61224
2025-05-09 11:54:38 +02:00
Paul Gschwendtner 838ad545af build: update pnpm-lock file and aspect lock files (#61224)
These files apparently need an update. Likely `main` is not properly
updated.

PR Close #61224
2025-05-09 11:54:38 +02:00
Alan Agius db06708e5e ci: update workflow to clone repo with history (#61223)
Tentative fix for:
```
Adding upstream remote: ***github.com/angular-robot/angular.git
origin	https://github.com/angular/angular (fetch)
origin	https://github.com/angular/angular (push)
upstream	***github.com/angular-robot/angular.git (fetch)
upstream	***github.com/angular-robot/angular.git (push)
Pushing 19.2.x from origin to angular-robot upstream...
To https://github.com/angular-robot/angular.git
 ! [rejected]        19.2.x -> 19.2.x (stale info)
error: failed to push some refs to 'https://github.com/angular-robot/angular.git'
```

PR Close #61223
2025-05-08 11:56:57 -07:00
Alan Agius adffb2ec82 ci: use --force-with-lease when pushing to remote branch (#61222)
Tentative fix for:
```
! [rejected]        20.0.x -> 20.0.x (fetch first)
error: failed to push some refs to 'https://github.com/angular-robot/angular.git'
```

PR Close #61222
2025-05-08 11:33:44 -07:00
Tom Adler 11727ddff4 docs: update the description of example (#61205)
PR Close #61205
2025-05-08 09:56:59 -07:00
Angular Robot f7e4541b8f build: update cross-repo angular dependencies (#61164)
See associated pull request for more information.

PR Close #61164
2025-05-08 09:54:57 -07:00
Vlad Boisa b3bb2a16f2 docs: swap the anchor to the correct one (#61200)
The anchor on the link - is not working, swap the anchor to the correct one
PR Close #61200
2025-05-08 09:43:30 -07:00
Miles Malerba c49d206dd6 ci: fix typo in update-cdk-apis job and mark it for megre (#61195)
Updates the name which accidentally remained unchanged from when I
copied it from the CLI help script

Also marks the PR for merge immediately. The caretaker can sanity check
it, approve it, and merge it.

PR Close #61195
2025-05-08 09:42:51 -07:00
Tom Adler a8062edcfa docs: update descriptions of examples (#61207)
PR Close #61207
2025-05-08 09:40:19 -07:00
Joey Perrott e2c763a12c build: migrate adev devtools package to use ts_project (#61210)
Migrate usages to ts_project

PR Close #61210
2025-05-08 09:38:30 -07:00
Alan Agius 0f99d63060 ci: fix step name (#61213)
This fixes the name of the step which was previously incorrect

PR Close #61213
2025-05-08 09:27:02 -07:00
Alan Agius 0f0eec581c ci: restrict cross-repo updates to follow only the next tag on main (#61215)
Limits automated cross-repo updates to only follow the 'next' tag when operating on the main branch. This helps avoid unintended updates from other tags and ensures a controlled release process.

PR Close #61215
2025-05-08 09:25:34 -07:00
Alan Agius 66753dcdc0 ci: use bash syntax for CURRENT_BRANCH in GitHub Actions (#61212)
Replaces incorrect use of GitHub Actions expression syntax `${{CURRENT_BRANCH }}` inside a run block with proper bash variablesyntax `$CURRENT_BRANCH`, preventing 'Unrecognized named-value' errors.

PR Close #61212
2025-05-08 16:32:42 +02:00
Alan Agius 6f4307faf3 ci: remove redundant dash in workflow file (#61206)
This appears to the reason why the workflow is erroring out that each step is required to have `uses` or `run`
PR Close #61206
2025-05-08 14:41:31 +02:00
Alan Agius 50993be218 ci: add workflow to sync non-default branches (#61201)
This workflow addresses a limitation with Renovate's behavior in fork mode.  Renovate does not automatically sync non-default branches in forked repositories.

This workflow automates syncing forked non-default branches with their upstream counterparts.  This ensures Renovate can detect and apply updates to these branches, maintaining up-to-date dependencies across all relevant branches.

PR Close #61201
2025-05-08 13:29:53 +02:00
Kristiyan Kostadinov 0558575d0a refactor(compiler-cli): do not resolve selectorless references from variables (#61158)
Based on some recent discussions, these changes remove the logic that resolves selectorless references from variables. It also updates the wording so it's clearer where selectorless references are supported.

PR Close #61158
2025-05-08 07:11:37 +02:00
Kristiyan Kostadinov b973c5b52f refactor(compiler-cli): support selectorless in the template indexer (#61158)
Handles the new selectorless nodes when indexing a template.

PR Close #61158
2025-05-08 07:11:37 +02:00
Kristiyan Kostadinov 814e6b07ac refactor(compiler): detect directly referenced pipes during parsing (#61158)
Moves the logic to detect directly referenced pipes into the compiler so that we don't have to do it ad-hoc.

PR Close #61158
2025-05-08 07:11:37 +02:00
Kristiyan Kostadinov bb863ee0db refactor(compiler): consolidate combined recursive visitors (#61158)
We have several cases where we need a visitor that traverses both the template and expression ASTs fully. Currently we're re-implementing the visitor each time which means that we need to update multiple visitors every time something changes.

These changes add a single base class that we can reuse to simplify such cases in the future.

PR Close #61158
2025-05-08 07:11:36 +02:00
Andrew Scott ce5a94319c refactor(router): Avoid unnecessary href updates on navigations for routerlink (#60875)
The `RouterLink` href does not depend on the state of the router unless
it uses the `fragment` or `queryParams`. This doesn't bother
unsubscribing from the events if the inputs change in a way to no longer
depend on those values since inputs changing is quite rare (and even
more rare for query params handling or preserveFragment to change).

PR Close #60875
2025-05-07 11:31:08 -07:00
Andrew Scott c53310ee81 refactor(router): Update RouterLink href to use host binding and signals (#60875)
This commit updates the method of setting the href attribute on
`RouterLink` to use built in host binding rather than custom attribute
setting and sanitization. The advantage here would be automatic handling
of the sanitization and avoiding of writing the same value to the DOM
that we had before.

This change does mean that we _always_ write to the href attribute where
before we only wrote to it when the elemnt was known to support `href`.
That said, the implementation attempts to retain behavior that is as
close as possible: the original value of `href` is used and never updated.

PR Close #60875
2025-05-07 11:31:08 -07:00
Paul Gschwendtner a1bf58e32e build: migrate symbol-extractor to ts_project (#61156)
Migrates the symbol-extractor code to `ts_project`.

PR Close #61156
2025-05-07 11:28:59 -07:00
Paul Gschwendtner 032b802f54 build: remove irrelevant madge circular deps tests (#61156)
We don't need this tooling anymore because we are already validating
that there are no circular dependencies via the `ng-dev` tooling that
checks `.ts` files directly.

Also these tests never actually failed to my knowledge.

PR Close #61156
2025-05-07 11:28:59 -07:00
Angular Robot 516fdcc492 docs: update Angular CDK apis [main] (#61188)
Updated Angular CDK api files.

PR Close #61188
2025-05-07 11:24:59 -07:00
Jan Martin 66b4c89b6f docs: document preventDefault() behavior for event listeners (#61184)
The `false` behavior has existed for a long time but hasn't really
been documented. It's also not _quite_ what the browser would do.

Finally, the page explicitly discourages the implicit `false` way
of preventing default. Biggest motivation (beyond code clarity) are
potential footguns like `(click)="myProp=x()"` which happens to prevent
default behavior iff `x()` happens to return `false`.

Fixes https://github.com/angular/angular.io/issues/2568

PR Close #61184
2025-05-07 11:21:44 -07:00
Matthieu Riegler fb62506894 docs: update versions support for v20 (#61180)
PR Close #61180
2025-05-07 11:20:46 -07:00
Tom Adler 893308ab17 docs: fix case of variable name (#61177)
PR Close #61177
2025-05-07 11:19:55 -07:00
cexbrayat f06edf5fad docs: update references of afterEveryRender (#61159)
Since `afterRender` has been renamed `afterEveryRender`, some docs needed to be updated.

PR Close #61159
2025-05-07 11:17:56 -07:00
Andrew Scott 55a0621cbd test(router): Reduce timeout times (#61155)
Router tests use real async so unnecessarily long timeouts are an issue

PR Close #61155
2025-05-07 11:16:26 -07:00
Matthieu Riegler 4a14c292ee docs(docs-infra): Version info are pulled from an json file. (#60870)
It should pull the file from the main adev site and fallback to local data is anything goes wrong

PR Close #60870
2025-05-07 11:13:56 -07:00
Andrew Kushnir 340728c933 docs: release notes for the v20.0.0-rc.0 release 2025-05-07 10:54:15 -07:00
Andrew Kushnir a1fdb44db2 docs: release notes for the v19.2.10 release 2025-05-07 09:24:51 -07:00
Alan Agius 7955627630 ci: enable Renovate on main and 20.0.x branches (#61160)
Dependency updates can no longer be cherry-picked due to hash changes in Aspect lock files. This commit enables Renovate to run directly on the `main` and `20.0.x` branches.

PR Close #61160
2025-05-07 10:44:10 +02:00
Vlad Boisa 5105fd6f05 docs: fix non-working link (#61131)
Swap non-working @link to just usual `` link to work


Same like #61011
PR Close #61131
2025-05-06 14:11:25 -07:00
Miles Malerba 47e44c8af0 docs: update rendering to use generated repo link (#61130)
PR Close #61130
2025-05-06 14:07:32 -07:00
Miles Malerba 72284bcda5 docs: update API generation to include repo name (#61130)
PR Close #61130
2025-05-06 14:07:31 -07:00
Matthieu Riegler eda8909772 fix(devtools): support defer blocks in IdentityTracker (#61139)
This reverts the fix of #61080 which wasn't adequate.

PR Close #61139
2025-05-06 13:44:37 -07:00
Alan Agius d5c6f2c4de refactor: add Node.js 24 as supported version (#61142)
Node.js 24 has been released https://nodejs.org/en/about/previous-releases

Closes: #61140

PR Close #61142
2025-05-06 13:38:25 -07:00
Joey Perrott be17ed3309 build: update tslint configuration (#61146)
Update the configuration for tslint

PR Close #61146
2025-05-06 13:35:24 -07:00
Joey Perrott 0b92c51a75 ci: migrate node target version for deploy script to node20 (#61102)
Migrate the generated script to target node20 which is already the environment we run the action in.

PR Close #61102
2025-05-06 13:33:28 -07:00
Joey Perrott 8756c8aa07 build: migrate documentation site deploy script to use ts_project (#61102)
Migrate to the new toolchain

PR Close #61102
2025-05-06 13:33:28 -07:00
Andrew Kushnir c39e79943a Revert "docs(docs-infra): fix first-app intro example (#61042)" (#61145)
This reverts commit ab91a355f8.

Revert reason: the change causes CI to fail (the `lint` CI job).

PR Close #61145
2025-05-06 11:06:22 -07:00
Tom Adler c3ff01be4b docs: fix whitespace after a link (#61136)
PR Close #61136
2025-05-06 10:25:48 -07:00
Kristiyan Kostadinov 583b9a7be5 fix(core): missing useExisting providers throwing for optional calls (#61137)
Fixes that the runtime was throwing a DI error when attempting to inject a missing `useExisting` provider, despite the call being optional.

The problem was that when the provider has `useExisting`, we do a second `inject` call under the hood which didn't include the inject flags from the original call.

Fixes #61121.

PR Close #61137
2025-05-06 09:12:38 -07:00
Alan Agius 140538743f ci: add interop pnpm and aspect files to fileFilters (#61138)
This change will force these files to be committed.

PR Close #61138
2025-05-06 09:11:07 -07:00
Angular Robot d225c72618 build: update github/codeql-action action to v3.28.17 (#61134)
See associated pull request for more information.

PR Close #61134
2025-05-06 09:09:56 -07:00
Jan Martin 06d6da345f fix(platform-server): less aggressive ngServerMode cleanup (#61106)
Other code may depend on `ngServerMode` and it might have been set
globally / via a bundler. Forcing it to `undefined` in those situations
can lead to hard debug issues where the only symptom is that "suddenly"
browser-specific code paths run on the server and (obviously) break.

PR Close #61106
2025-05-06 09:08:47 -07:00
Matthieu Riegler ab91a355f8 docs(docs-infra): fix first-app intro example (#61042)
fixes #60844

PR Close #61042
2025-05-06 09:07:26 -07:00
Alan Agius a2b61634ec docs: update ssr docs to include prerendering wildcards (#61116)
This feature was introduced in version 20.

PR Close #61116
2025-05-05 17:02:29 -07:00
Angular Robot 235f7c9668 build: update rules_angular digest to 42d4791 (#61126)
See associated pull request for more information.

PR Close #61126
2025-05-05 15:36:37 -07:00
Kristiyan Kostadinov 2c17145520 refactor(compiler): element references not resolved when selectorless matcher is passed in (#61100)
Fixes that the template binder didn't resolve references to DOM nodes (e.g. `<div #ref></div>` if the matcher being passed in isn't a `SelectorMatcher`.

PR Close #61100
2025-05-05 14:38:13 -07:00
Kristiyan Kostadinov 7d2a6b3864 refactor(compiler-cli): defer selectorless dependencies (#61100)
Fixes that selectorless dependencies weren't being deferred correctly.

PR Close #61100
2025-05-05 14:38:12 -07:00
Kristiyan Kostadinov 707a70ea0b refactor(compiler-cli): properly emit references to selectorless pipes (#61100)
Fixes that we weren't emitting references to selectorless pipes, because we were checking the name of the pipe, rather than the local name of the symbol.

PR Close #61100
2025-05-05 14:38:12 -07:00
Kristiyan Kostadinov 4a1f5db517 refactor(compiler-cli): assert that selectorless references are standalone (#61100)
Adds some logic to assert that the directives referenced in a selectorless way are all standalone.

PR Close #61100
2025-05-05 14:38:12 -07:00
Kristiyan Kostadinov d5a68d8a22 refactor(compiler-cli): wire up selectorless behavior (#61100)
These changes connect the dependency analysis data from the previous commits with the template type checker which allows us to fully type check a selectorless component.

Also includes tests for all of the new selectorless behaviors that have been introduced so far.

PR Close #61100
2025-05-05 14:38:12 -07:00
Kristiyan Kostadinov e15dc2c3b5 refactor(compiler-cli): add scope for selectorless components (#61100)
Adds the new `SelectorlessComponentScopeReader` that will be used for selectorless components.

PR Close #61100
2025-05-05 14:38:12 -07:00
Kristiyan Kostadinov 7118dac442 refactor(compiler-cli): add selectorless-related analysis to components (#61100)
Adds the logic to determine whether a component is selectorless and to track which symbols are used in the template.

PR Close #61100
2025-05-05 14:38:12 -07:00
Angular Robot 310e5ffe24 build: update rules_angular digest to 3ba9d67 (#61124)
See associated pull request for more information.

PR Close #61124
2025-05-05 09:24:33 -07:00
Andrew Scott e7f5aa2b52 refactor(core): Remove use of private export PendingTasksInternal where possible (#61049)
This commit removes the use of the privately exported
PendingTasksInternal everywhere except for Router. A follow-up change
will be done to remove that one as well and delete the private export.

PR Close #61049
2025-05-05 08:56:20 -07:00
Andrew Scott 0c925af2dd test(router): This commit removes ZoneJS from the router tests (#61078)
There is nothing in the Router that requires ZoneJS and we do not need
`fakeAsync` as a mock clock. We can instead use any mock clock implementation
to speed up test execution.

This removes ZoneJS completely from the bundle of the Router tests.
ZoneJS causes the stacks to be unreadable when combined with the massive
rxjs stack in the router transition.

PR Close #61078
2025-05-05 08:55:01 -07:00
Klaas Cuvelier d8532bc87d docs(router): update typing for skipLocationChange in RedirectCommand example (#61119)
The example for the RedirectCommand used a string for skipLocationChange, changed this to a boolean

PR Close #61119
2025-05-05 08:47:52 -07:00
oliv37 b579c71633 docs(docs-infra): update use production configuration (#61112)
PR Close #61112
2025-05-05 08:45:01 -07:00
Miles Malerba e0248aae6a docs: hide entries that are marked @docs-private (#61104)
PR Close #61104
2025-05-05 08:43:30 -07:00
Joey Perrott 1e79d47064 build: enable rules_js interop mode in ng-dev release (#61087)
This will result in the release tool automatically updating the Aspect
lock files when necessary.

PR Close #61087
2025-05-02 09:12:23 -07:00
Joey Perrott 669b02cd54 build: update renovate config for rules_js hybrid mode (#61087)
This will automatically result in Renovate updating the Aspect lock
files.

PR Close #61087
2025-05-02 09:12:23 -07:00
Joey Perrott 72b7de0d73 build: set up ts_project interop for rules_js migration (#61087)
The `ts_project` interop rule that we've built was also used in the
Angular CLI migration, and it allows us to mix `ts_project` and
`ts_library` targets; enabling an incremental migration. Additionally
set up the `ng_project` to replace `ng_module`.

PR Close #61087
2025-05-02 09:12:23 -07:00
Joey Perrott 1c7f669f33 build: setup rules_ts for compiling TypeScript sources (#61087)
This commit sets up `rules_ts`, providing the `ts_library` equivalent
for the `rules_js` migration.

PR Close #61087
2025-05-02 09:12:23 -07:00
Joey Perrott 059a2cb38e build: setup rules_js and link dependencies (#61087)
Sets up `rules_js` and links dependencies into the bazel-bin.

PR Close #61087
2025-05-02 09:12:23 -07:00
Joey Perrott cfa0591c8b build: update to bazel 6 (#61087)
This is necessary for an incremental migration to `rules_js` which
requires Bazel v6. Bazel v6 removed the managed directories feature,
which means we no longer can rely on symlinked node modules as the Bazel
repository; but rather need to duplicate dependencies. This is
okay/acceptable to enable the incremental migration.

PR Close #61087
2025-05-02 09:12:23 -07:00
Joey Perrott ebaa5f7d32 build: add .prettierignore configuration file (#61087)
Add a configuration file to prevent autogenerated files from being formatted.

PR Close #61087
2025-05-02 09:12:23 -07:00
Foysol Ahmed 5fe726dd45 docs: ViewContainerRef.createComponent jsdoc update (#61097)
Co-authored-by: Jessica Janiuk <1596273+thePunderWoman@users.noreply.github.com>
PR Close #61097
2025-05-02 07:57:10 -07:00
KryptonBD 0b6c8dc72d docs: ViewContainerRef.createComponent jsdoc update to reflect actual behavior (#61097)
Fixes #59918

PR Close #61097
2025-05-02 07:57:09 -07:00
Angular Robot 826b4f604f build: update angular/dev-infra digest to a4538b2 (#61096)
See associated pull request for more information.

PR Close #61096
2025-05-02 07:56:25 -07:00
Angular Robot df2c600e23 docs: update Angular CDK apis [main] (#61094)
Updated Angular CDK api files.

PR Close #61094
2025-05-02 07:55:44 -07:00
arturovt 2235699b65 refactor(zone.js): drop isIE checks (#61091)
This should not be considered as a breaking change, because Angular doesn't support IE.

PR Close #61091
2025-05-02 07:53:35 -07:00
Jessica Janiuk f054c00e54 docs: add guide for using native CSS animations (#60984)
This adds a guide for how to switch from the
angular animations package over to native CSS
animations.

PR Close #60984
2025-05-02 07:52:10 -07:00
Matthieu Riegler f580318411 docs(docs-infra): Add version of introduction for APIs (#60814)
For new APIs we'll mention since when a particular API is in its current status (experimental, devPreview, stable)

fixes #49668

PR Close #60814
2025-05-02 07:51:33 -07:00
Miles Malerba 8828a84ecf ci: add a script to copy cdk api files to adev (#61081)
Refactors the update-cli-help script into a generic script to copy json
assets, and uses the shared code to also copy the CDK apis

PR Close #61081
2025-05-01 15:00:41 -07:00
Andrew Scott 88858118ea refactor(common): Mark inputs of deprecated control flow directives as deprecated (#61089)
This updates the inputs of the deprecated control flow directives as also deprecated.
Helpful for language services/tokenization tools

PR Close #61089
2025-05-01 14:59:25 -07:00
Matthieu Riegler d47d6720e7 fix(devtools): fix profiler support with @defer blocks (#61080)
Prior to this change, the devtools profile logged warnings "Unable to find parent node for ...".

PR Close #61080
2025-05-01 14:58:21 -07:00
arturovt 1bbf75017c fix(common): cleanup updateLatestValue if view is destroyed before promise resolves (#58041)
According to the promise specification, promises are not cancellable by default.
Once a promise is created, it will either resolve or reject, and it doesn't
provide a built-in mechanism to cancel it.
There may be situations where a promise is provided, and it either resolves after
the pipe has been destroyed or never resolves at all. If the promise never
resolves — potentially due to factors beyond our control, such as third-party
libraries — this can lead to a memory leak.
When we use `async.then(updateLatestValue)`, the engine captures a reference to the
`updateLatestValue` function. This allows the promise to invoke that function when it
resolves. In this case, the promise directly captures a reference to the
`updateLatestValue` function. If the promise resolves later, it retains a reference
to the original `updateLatestValue`, meaning that even if the context where
`updateLatestValue` was defined has been destroyed, the function reference remains in memory.
This can lead to memory leaks if `updateLatestValue` is no longer needed or if it holds
onto resources that should be released.
When we do `async.then(v => ...)` the promise captures a reference to the lambda
function (the arrow function).
When we assign `updateLatestValue = null` within the context of an `unsubscribe` function,
we're changing the reference of `updateLatestValue` in the current scope to `null`.
The lambda will no longer have access to it after the assignment, effectively
preventing any further calls to the original function and allowing it to be garbage collected.

If Chrome is built with additional flags and run with `--allow-natives-syntax --track-retaining-path`,
we could use `%DebugTrackRetainingPath` to see the distance from the root for `updateLatestValue`
if it's passed directly to async.then, e.g.:

```js
%DebugTrackRetainingPath(updateLatestValue);

// Distance from root 4: 0x123456789abc <JSPromise (sfi = 0x1fbb02e2d7f1)>
```

PR Close #58041
2025-05-01 14:53:13 -07:00
arturovt 5f31c953ed refactor(zone.js): drop passive supported check (#58010)
https://caniuse.com/passive-event-listener
Passive event listeners are supported in all major evergreen browsers.
Thus, we don't need to check whether passives are supported.

PR Close #58010
2025-05-01 11:42:13 -07:00
Angular Robot e529a84520 build: update cross-repo angular dependencies to v20.0.0-next.10 (#61084)
See associated pull request for more information.

PR Close #61084
2025-05-01 10:31:46 -07:00
arturovt 6bc9d45e77 refactor(core): drop computation error messages in production (#60700)
Some of the error messages in `core/primitives` are already guarded with `ngDevMode`; this change guards the remaining ones.

PR Close #60700
2025-05-01 10:11:01 -07:00
Andrew Scott da6fa0f402 refactor(router): Remove outdated comment (#61086)
removes outdated comment in router code

PR Close #61086
2025-05-01 10:09:15 -07:00
arturovt d2cb0b9786 refactor(core): tree-shake getDirectiveDef error (#61075)
This commit (https://github.com/angular/angular/commit/25cae4555abab4e5d9aa530a7996f90d8896ccb0) introduced an error throw when the directive definition is not defined. We can guard it with `ngDevMode` and throw the error only in development mode.

PR Close #61075
2025-05-01 08:43:43 -07:00
Andrew Miller f08f8844cb docs: Add docs for CoC plugin with neovim (#61005)
When docs were moved from aio to adev, the directions for the CoC plugin
were mistakenly dropped.

This brings back the documentation from prior versions:

https://v17.angular.io/guide/language-service#neovim

PR Close #61005
2025-05-01 08:41:46 -07:00
arturovt 1e2a70c8db refactor(common): drop platform checks in HttpXsrfCookieExtractor (#59810)
Replaces `PLATFORM_ID` checks with `ngServerMode` within the `HttpXsrfCookieExtractor`. It is not part of the public API, and thus this change should not affect consumers who may have called the constructor directly.

PR Close #59810
2025-05-01 08:41:10 -07:00
Matthieu Riegler c2c8b75d7b refactor(core): remove module bootstrap code when using standalone. (#59208)
This commit improves tree shaking in standalone apps.

PR Close #59208
2025-05-01 08:39:34 -07:00
Angular Robot 33a336f74a build: update cross-repo angular dependencies (#61069)
See associated pull request for more information.

PR Close #61069
2025-04-30 15:12:30 -07:00
Andrew Scott c0ae032362 refactor(router): Remove unnecessary runOutsideAngular in view transition helper (#61068)
This refactor removes the unnecessary `runOutsideAngular` call in the
view transition helper. The resolved promise re-enters the zone in the
transition, so that will trigger the Angular zone anyways. If it didn't do that,
it risks activated the route outside the zone, which is a bigger risk.
Regardless, this function is only run once per navigation, so even if it
_did_ result in an extra promise/timeout inside the zone, this is not
excessive. Using ZoneJS to trigger rendering is known to overreact to events.
Using `OnPush` or zoneless is more effective at mitigating this issue.

PR Close #61068
2025-04-30 14:18:49 -07:00
Andrew Scott 2e80744581 test(router): Fix slow-running infinite loop test and remove unnecessary duplicate tests (#61076)
The inifinite loop test is a real infinite loop and runs until a stack
overflow happens. In addition, all the promise and observable tests are
just duplicates of the other redirects and don't test any additional
logic. Instead, this change updates one test to return an observable and
another to return a promise

PR Close #61076
2025-04-30 14:18:09 -07:00
Andrew Scott 344ea29f7a refactor(docs-infra): remove 'experimental' from cli entry (#61067)
this removes the experimental prefix from zoneless entry in fake cli

PR Close #61067
2025-04-30 14:16:55 -07:00
arturovt 9b96fccbc4 refactor(service-worker): drop error messages in production (#59702)
This commit provides tree-shakable error messages for the `service-worker` package.

PR Close #59702
2025-04-30 12:41:36 -07:00
arturovt 98e53ccfb8 refactor(common): drop platform check in LCPImageObserver (#59742)
Replaces platform check within the `LCPImageObserver` with the `ngServerMode` global.

PR Close #59742
2025-04-30 12:40:41 -07:00
arturovt 4184e0b9c2 refactor(compiler): improve stringify (#60013)
This is the same change that was made in this commit (https://github.com/angular/angular/commit/cf3a5073ece9eb313bb4832b3f78aa1bfeca09c6). See its description for clarification.

PR Close #60013
2025-04-30 12:40:02 -07:00
arturovt 13fd1b30e0 refactor(core): tree-shake PROPAGATION_STOPPED_SYMBOL (#61004)
Adds `__PURE__` annotations to `PROPAGATION_STOPPED_SYMBOL` to enable tree-shaking, even if is is not referenced. This variable is not dropped when Angular is imported from a module that has `sideEffects` set to `true`.

PR Close #61004
2025-04-30 12:38:44 -07:00
Alan Agius a60373ee1a refactor(core): remove private __core_private_testing_placeholder__ API (#61055)
This API is no longer used in G3

PR Close #61055
2025-04-30 12:37:39 -07:00
Alan Agius 193bd7c54a fix(core): properly handle app stabilization with defer blocks (#61040)
Previously, the app was marked as stable prematurely. For more details, see https://github.com/angular/angular/issues/61038#issuecomment-2837917180

Closes: #61038

PR Close #61040
2025-04-30 12:37:02 -07:00
Alan Agius b27234bcd7 test: disable platform-server tests that do not work with zoneless (#61040)
A number of cases currently do not work with zoneless.

PR Close #61040
2025-04-30 12:37:02 -07:00
Alan Agius d94fb764d0 test: add integration test for platform-server with zoneless (#61040)
Add an integration test to verify SSR with zoneless

PR Close #61040
2025-04-30 12:37:01 -07:00
Alan Agius 0c9e7d980e test: add integration test for defer with input on SSR with zones (#61040)
Add an integration test to verify defer block behavior with input handling during server-side rendering (SSR).

PR Close #61040
2025-04-30 12:37:01 -07:00
Miles Malerba c1e46c5561 docs: release notes for the v20.0.0-next.9 release 2025-04-30 10:40:58 -07:00
Miles Malerba 98de7bf17e release: bump the next branch to v20.1.0-next.0 2025-04-30 10:40:58 -07:00
Miles Malerba 829379e68c docs: release notes for the v19.2.9 release 2025-04-30 10:31:53 -07:00
Angular Robot bb00b93db3 build: update cross-repo angular dependencies (#61062)
See associated pull request for more information.

PR Close #61062
2025-04-30 09:31:36 -07:00
arturovt 624be2ef0c fix(core): prevent stash listener conflicts (#59635)
The stash event listener is a global function that might be unsafely overridden if multiple microfrontend applications exist on the page.

In this commit, we create a map of `APP_ID` to stash event listener functions. This map prevents conflicts because multiple applications might be bootstrapped simultaneously on the client (one rendered on the server and one rendering only on the client).

I.e., the code that might be used is:

```ts
// Given that `app-root` is rendered on the server
bootstrapApplication(AppComponent, appConfig);

bootstrapApplication(BlogRootComponent, appBlogConfig);
```

Two bootstrapped applications would conflict and override each other's code.

PR Close #59635
2025-04-30 08:53:06 -07:00
cexbrayat fc4a56d5c5 fix(common): rename httpResource function in factory (#60022)
As the function in the factory was named `httpResourceRef`, error NG0203 had with the following message:

```
Error: NG0203: httpResourceRef() can only be used within an injection context such as a constructor, a factory function, a field initializer, or a function used with `runInInjectionContext`. Find more at https://angular.dev/errors/NG0203
```

PR Close #60022
2025-04-30 08:51:39 -07:00
arturovt b14fbe1497 refactor(core): tree-shake getNgModuleDef error (#60339)
Currently, the error thrown in `getNgModuleDef` is guarded by `throwIfNotFound`, which is only set to `true` when `ɵɵsetNgModuleScope` is called in production. In all other cases, `throwIfNotFound` is never used in production. This means that if NgModules aren't used, `getNgModuleDef` is never called with the second argument. We can split it into two functions to allow tree-shaking of the error when NgModules aren't used at all.

PR Close #60339
2025-04-30 08:50:52 -07:00
cexbrayat 52e2f0842d refactor(core): remove unused APP_EFFECT_SCHEDULER in effect code (#59679)
The `APP_EFFECT_SCHEDULER` Injection token is never used and not a public API.

PR Close #59679
2025-04-30 08:49:55 -07:00
Angular Robot 2bddce2612 docs: update Angular CLI help [main] (#61048)
Updated Angular CLI help contents.

PR Close #61048
2025-04-30 08:25:47 -07:00
Matthieu Riegler 8f803aa81a build: Run browsers tests without platform-browser-dynamic (#60937) (#61060)
Use the regular `platform-browser` providers instead.

PR Close #61060
2025-04-30 08:21:02 -07:00
vladboisa a282f583ed docs: add link label & paragraph for correct display (#60708)
PR Close #60708
2025-04-30 08:18:07 -07:00
Matthieu Riegler 201e02b161 docs(docs-infra): fix alert header inlining (#60708)
PR Close #60708
2025-04-30 08:18:07 -07:00
vladboisa e4a667690a docs: add Security-DomSanitizer link in ElemnetRef&Renderer2 (#60708)
Renderer2 and ElementRef didn't mention the Security-DomSanitizer method, this will add clarity for potential user what to expect. Also swap deprecated "callout" class to docs-alert

Fixes #51208 , #46904

PR Close #60708
2025-04-30 08:18:07 -07:00
Jessica Janiuk 867f389a98 Revert "build: Run browsers tests without platform-browser-dynamic (#60937)" (#61059)
This reverts commit b896ca8ed5.

PR Close #61059
2025-04-30 12:21:01 +02:00
arturovt 8d82a39a60 fix(core): async EventEmitter error should not prevent stability (#61028)
This commit wraps the `fn` invocation with `try-finally`, ensuring that the pending task (added in [this commit](https://github.com/angular/angular/commit/d5c6ee432fcd467c09b4d5d5366e731f5c91e8d4)) is always removed.

Prior to this commit, if a subscriber threw an error, it would prevent the application from becoming stable — though this shouldn't happen under normal scenarios because the error should be handled by the RxJS error handler or Angular's error handler.

Errors should not silently prevent the application from being rendered on the server.

PR Close #61028
2025-04-29 22:14:15 -07:00
Matthieu Riegler e6a34277fc feat(devtools): defer blocks support (#60629)
This commit adds the support for defer block in the Angular DevTools.

@defer block are now visible in the directive tree and give access to defer & hydration details.

This feature also brings support of incrementation hydration.

PR Close #60629
2025-04-29 22:07:47 -07:00
Andrew Scott 3261d14391 refactor(core): NgZone.onError reports to application error handler (#60946)
This commit ensures that errors from the `NgZone.onError` subscription
in bootstrap are reported to the internal application error handler.
Practically speaking, this should not affect anything today, as the
application handler goes directly to the `ErrorHandler` from the root.
While TestBed installs an application error handler that rethrows,
`TestBed.createComponent` does not create components through this
bootstrap function.

PR Close #60946
2025-04-29 21:56:50 -07:00
Andrew Scott e8147df0e1 refactor(router): Move router integration suite to zoneless (#61046)
This commit moves the router integration tests to use zoneless

PR Close #61046
2025-04-29 21:56:01 -07:00
Andrew Scott f36f2f2cb4 refactor(router): Remove inject helper from router tests (#61046)
This removes the `inject` helper from core/testing in the router tests.

PR Close #61046
2025-04-29 21:56:01 -07:00
Kristiyan Kostadinov adaecba95f refactor(compiler-cli): split up large method (#61018)
The `ComponentHandler.resolve` method is ~500 lines and is a bit hard to follow due to some very long `if` statements. These changes split the functionality across several smaller methods to make it easier to manage.

PR Close #61018
2025-04-29 21:06:10 +00:00
Kristiyan Kostadinov abdb6e2945 refactor(compiler): allow binder to be created without matcher (#61018)
Currently to create an `R3TargetBinder`, we have to pass some sort of directive matcher, however we also have a couple of use cases where we use the binder to do analysis that's unrelated to directives (e.g. resolving the `@defer` blocks). In these cases having to create a dummy matcher adds some slight overhead and makes the code harder to reason about since it looks like directive matching may be happening.

These changes update the `R3TargetBinder` to allow for `null` to be passed as the directive matcher.

PR Close #61018
2025-04-29 21:06:10 +00:00
Kristiyan Kostadinov 8488279659 refactor(compiler): simplify tracking of directives (#61018)
An earlier commit that introduced tracking of selectorless directives to the template binder made it so `getDirectivesOfNode` returns _all_ of the matched directives while a new method called `getOwnedDirectives` would return only the ones brought in by the specific node.

In hindsight, this is likely to cause bugs in the future, because it's unclear whether to reach for `getDirectivesOfNode` or `getOwnedDirectives`. These changes remove `getOwnedDirectives` and make it so in selectorless `getDirectivesOfNode` accepts the directive AST node itself.

Another goal of this refactor is that the TCB shouldn't have to check the `selectorlessEnabled` config option.

PR Close #61018
2025-04-29 21:06:10 +00:00
Andrew Scott 10033087b5 refactor(devtools): update zoneless provider name (#61051)
updates the zoneless provider name in the devtools example

PR Close #61051
2025-04-29 20:20:02 +00:00
Andrew Scott b7d3f3dbfc feat(common): Allow passing ScrollOptions to ViewportScroller (#61002)
Adds ScrollOptions as an option second argument to ViewportScroller
scrollTo* functions.

Part of changes needed to address #58258

PR Close #61002
2025-04-29 12:23:12 -07:00
Angular Robot 3735d55f6f build: update cross-repo angular dependencies (#61045)
See associated pull request for more information.

PR Close #61045
2025-04-29 12:21:16 -07:00
Matthieu Riegler 2df00c9b4b build(devtools): cleanup dependencies (#60936)
Removing `platform-browser-dynamic` because we don't need it anymore.

PR Close #60936
2025-04-29 12:16:16 -07:00
Andrew Seguin 8df787e7d5 docs: fix ngFor deprecation error message parsing (#61024)
PR Close #61024
2025-04-29 12:15:17 -07:00
Ben Hong 857cb509f8 docs: add relevant link to guides in learn angular tutorial (#60834)
PR Close #60834
2025-04-29 12:14:19 -07:00
Matthieu Riegler b896ca8ed5 build: Run browsers tests without platform-browser-dynamic (#60937)
Use the regular `platform-browser` providers instead.

PR Close #60937
2025-04-29 12:10:53 -07:00
Alan Agius b250bb0a74 refactor(router): produce error message when canMatch is used with redirectTo (#60958)
Redirects in the router are handled before `canMatch` guards are evaluated. As a result, `canMatch` will not run for routes that include a redirect. Instead of silently ignoring this misconfiguration, developers should be alerted to help them understand why it doesn't behave as expected.

Closes: #60957

PR Close #60958
2025-04-29 10:32:02 -07:00
Andrew Scott c801c74c09 refactor(core): Remove zoneless change detection re-export (#61029)
removes the experimental re-export from zoneless provider

PR Close #61029
2025-04-29 10:31:18 -07:00
Alan Agius c037c58995 refactor(core): expose getCleanupHook via private exports (#61017)
Expose `getCleanupHook` as a private export to address integration issues with Vitest. In Vitest, `globalThis.beforeEach` and `globalThis.afterEach` are not available by default. Additionally, these hooks are patched during module evaluation, complicating seamless integration with Vitest.

See: https://github.com/angular/angular-cli/pull/30188

PR Close #61017
2025-04-29 10:30:17 -07:00
Angular Robot 09cc3949d1 build: update cross-repo angular dependencies (#61021)
See associated pull request for more information.

PR Close #61021
2025-04-29 10:08:21 -07:00
Niclas Gleesborg 888f9c2375 docs: Changed word optimally to optionally (#61041)
PR Close #61041
2025-04-29 09:52:41 -07:00
Angular Robot 6b7e368602 build: update github/codeql-action action to v3.28.16 (#61035)
See associated pull request for more information.

PR Close #61035
2025-04-29 09:51:08 -07:00
Angular Robot 8eaf405457 build: update all non-major dependencies (#61034)
See associated pull request for more information.

PR Close #61034
2025-04-29 09:50:20 -07:00
Kevin Brey c889382a20 feat(compiler-cli): detect missing structural directive imports (#59443)
Adds a new diagnostic that ensures that a standalone component using custom structural directives in a template has the necessary imports for those directives.

Fixes #37322

PR Close #59443
2025-04-29 09:43:12 -07:00
Taygan Caldwell 42cad2849d refactor(core): Add createSignalTuple (#60903)
Add createSignalTuple function to match Wiz array destructuring signal return. This will be the implementation for createSignal once createSignal usages in google3 are migrated to createSignalTuple.

PR Close #60903
2025-04-29 08:46:39 -07:00
Andrew Scott 2445946943 refactor(core): Update FakeNavigation to extract some Angular quirks (#60961)
This change updates the implementation of `FakeNavigation` to extract
some changes that were made due to quirks in Angular testing.

PR Close #60961
2025-04-28 14:36:24 -07:00
Pawel Kozlowski d8fbb909ce feat(core): rename afterRender to afterEveryRender and stabilize (#60999)
This change renames the afterRender to afterEveryRender and marks the
renamed API as stable.

BREAKING CHANGE: afterRender was renamed to afterEveryRender.

PR Close #60999
2025-04-28 12:33:55 -07:00
Andrew Scott 7680a27f30 refactor(core): Ignore errors related to updating exhaustive check value (#61027)
this can happen if the injector is already destroyed, which can happen in tests that fail to clean up correctly

PR Close #61027
2025-04-28 10:16:01 -07:00
Matthieu Riegler bf6dbaab25 docs(docs-infra): prevent from resetting the search on navigation (#60927)
By keeping the search well allow developers to navigate through multiple results without having to re-type the search

PR Close #60927
2025-04-28 10:14:56 -07:00
hawkgs d8204bf584 docs(docs-infra): fix function api ref header width (#61022)
Fix the width of the function API reference header when the viewport width is for-desktop-down.

PR Close #61022
2025-04-28 10:01:40 -07:00
nevepura b2867ede8b Update dependency-injection.md (#61019)
Fixed list of ways to do dependency injection.
PR Close #61019
2025-04-28 08:30:52 -07:00
Kristiyan Kostadinov 46eba63fb3 fix(docs-infra): use proper API for style overrides (#61008)
Setting CSS variables directly is fragile and isn't the officially supported way of override Material styles. Instead the `tabs-overrides` mixin should be used which has validation for the token names.

For future reference, these are the docs for the styling API: https://material.angular.io/components/tabs/styling

PR Close #61008
2025-04-28 08:19:17 -07:00
Angular Robot 11e31012cb build: lock file maintenance (#61015)
See associated pull request for more information.

PR Close #61015
2025-04-28 08:11:58 -07:00
vladboisa 4941ce99df docs: fix non-working link (#61011)
Swap non-working @link to just usual `` link to work

PR Close #61011
2025-04-28 08:07:06 -07:00
hawkgs 05a03d3f97 docs(docs-infra): fix mat-tab colors (#61000)
Fix the text color of Material tabs.

PR Close #61000
2025-04-25 08:50:55 -07:00
Angular Robot 03360cf944 build: update cross-repo angular dependencies (#60998)
See associated pull request for more information.

PR Close #60998
2025-04-25 08:45:54 -07:00
arturovt 77174680b2 refactor(core): tree-shake NOT_SET and EMPTY_CLEANUP_SET (#60979)
Adds `__PURE__` annotations to `NOT_SET` and `EMPTY_CLEANUP_SET` to enable tree-shaking, even if they are not referenced. These variables are not dropped when Angular is imported from a module that has `sideEffects` set to `true`.

PR Close #60979
2025-04-25 08:42:12 -07:00
Pawel Kozlowski d5fd7349fb feat(core): introduce TestBed.tick() (#60993)
This commit introduces the `TestBed.tick()` method that,
similarly to the `ApplicationRef.tick()`, synchronizes state
with the DOM. It can be used in unit tests to mimic framework's
logic executed in production applications. The `TestBed.tick()`
should be used instead of the removed `TestBed.flushEffects()`.

BREAKING CHANGE: the `TestBed.flushEffects()` was removed - use
the `TestBed.tick()` instead.

PR Close #60993
2025-04-25 12:53:23 +02:00
SkyZeroZx ccc5cc068f feat(http): add keepalive support for fetch requests (#60621)
This commit adds support for the Fetch API's keepalive option when using HttpClient with the withFetch provider.

The change includes:
- Added keepalive to HttpRequestInit interface
- Modified FetchBackend to pass the option
- Added some unit test

PR Close #60621
2025-04-24 15:08:52 -07:00
Andrew Scott e711f99d81 feat(core): move provideExperimentalCheckNoChangesForDebug to provideCheckNoChangesConfig (#60906)
This commit makes several changes changes to the
`provideExperimentalCheckNoChangesForDebug` API:

* Rename it
* Promote to dev preview
* Apply the exhaustive behavior to _all_ checkNoChanges runs
* Remove `useNgZoneOnStable` option. This wasn't found to be generally
  more useful than `interval`

fixes #45612

BREAKING CHANGE: `provideExperimentalCheckNoChangesForDebug` has several
breaking changes:
* It is renamed to `provideCheckNoChangesConfig`
* The behavior applies to _all_ checkNoChanges runs
* The `useNgZoneOnStable` option is removed. This wasn't found to be generally
  more useful than `interval`

PR Close #60906
2025-04-24 13:04:27 -07:00
Kristiyan Kostadinov 148f4670fe refactor(compiler-cli): generate type checking code for selectorless (#60977)
Adds the logic that will generate type checking code in the TCB for the selectorless AST nodes.

Note that we're still missing the logic that determines which symbols are available in the template and exposes them to the template binder. That will come in a future change.

PR Close #60977
2025-04-24 13:02:39 -07:00
Kristiyan Kostadinov 4b0f733cb4 refactor(compiler): add more information to template binder (#60977)
Updates the template binder to include information about directives owned by a specific component/directive node and the names of template symbols that don't exist. These will be used when generating the type check block.

PR Close #60977
2025-04-24 13:02:39 -07:00
Kristiyan Kostadinov 26cba0804f refactor(compiler-cli): pass in tag name to schema checker (#60977)
Updates the `DomSchemaChecker` to require the tag name as a string, rather than the entire DOM node. This makes selectorless a bit easier to intergrate.

PR Close #60977
2025-04-24 13:02:39 -07:00
Kristiyan Kostadinov e89ebf3dc7 refactor(compiler-cli): add infrastructure for new diagnostics (#60977)
We need a couple of custom diagnostics for selectorless. These changes add the infrastructure so they can be reported.

PR Close #60977
2025-04-24 13:02:39 -07:00
Kristiyan Kostadinov bc9a067ef4 refactor(compiler-cli): add flag to enable selectorless (#60977)
Adds a private flag that we can use to enable selectorless as it's being developed.

PR Close #60977
2025-04-24 13:02:39 -07:00
Andrew Kushnir c2987d8402 refactor(core): stop producing ng-reflect attributes by default (#60973)
BREAKING CHANGE:

This commit deprecates `ng-reflect-*` attributes and updates the runtime to stop producing them by default. Please refactor application and test code to avoid relying on `ng-reflect-*` attributes.

To enable a more seamless upgrade to v20, we've added the `provideNgReflectAttributes()` function (can be imported from the `@angular/core` package), which enables the mode in which Angular would be producing those attribites (in dev mode only). You can add the `provideNgReflectAttributes()` function to the list of providers within the bootstrap call.

PR Close #60973
2025-04-24 10:07:35 -07:00
Matthieu Riegler e6c14f9443 docs: remove old pipes docs. (#60996)
They were replaced by pipes entry in the template guides.

PR Close #60996
2025-04-24 09:42:49 -07:00
hawkgs a1deb87a8e refactor(devtools): improve directive explorer filtering (#60672)
- Highlight only the matched part of the text
- Select the first match by default
- Show the matches count along with the currently selected one
- Minor UI fixes and performance optimizations

PR Close #60672
2025-04-24 09:39:22 -07:00
hawkgs 6845d2a92b refactor(devtools): fix resolution path viz padding (#60971)
Adjusts the right padding appropriately.

PR Close #60971
2025-04-24 09:36:51 -07:00
Matthieu Riegler 06ada469b0 docs(docs-infra): fix github links for for previews (#60994)
PR Close #60994
2025-04-24 09:30:25 -07:00
Doug Parker c6b41e15fd release: bump Angular DevTools version to 1.0.30 (#60992)
PR Close #60992
2025-04-23 14:36:26 -07:00
Doug Parker 6ce7c4cb4b fix(devtools): call ng.getDirectiveMetadata with the component instance (#60991)
`ng.getDirectiveMetadata` receives the component instance, not the raw DOM element.

This assumes that `ng.getComponent` is implemented in all environments and that the root element itself is a component.

PR Close #60991
2025-04-23 14:34:33 -07:00
Alex Rickabaugh 4bcf1831d9 refactor(core): rename loader parameter to stream for rxResource (#60919)
As decided in the Resource RFC, this commit renames `loader` in `rxResource`
to `stream`. Some logic is left in to support gradual rollout of this change
in g3.

PR Close #60919
2025-04-23 19:34:50 +00:00
Alex Rickabaugh d0c9a6401a refactor(core): rename resource's request to params (#60919)
As decided in the resource RFC, this commit renames the `request` option of
a resource to `params`, including the subsequent argument passed to the
loader. It also corrects the type in the process to properly allow narrowing
of the `undefined` value.

Fixes #58871

PR Close #60919
2025-04-23 19:34:50 +00:00
Alex Rickabaugh d8ca560a15 refactor(core): convert ResourceStatus to a string type (#60919)
An outcome of the Resource RFC was that we should use string constants for
communicating the resource status instead of an enum. This commit converts
`ResourceStatus` accordingly.

PR Close #60919
2025-04-23 19:34:50 +00:00
Alex Rickabaugh b1bfb214ef refactor(common): delete unused code for HttpResource (#60919)
Remove the code related to exposing the response of an HTTP request as a
`Resource` itself, as the final API will not go in this direction.

PR Close #60919
2025-04-23 19:34:50 +00:00
Andrew Kushnir 57794f0256 Revert "refactor(router): produce error message when canMatch is used with redirectTo (#60958)" (#60989)
This reverts commit 907f9bd3b8.

PR Close #60989
2025-04-23 17:48:27 +00:00
Angular Robot 3331b10e19 build: update cross-repo angular dependencies (#60978)
See associated pull request for more information.

PR Close #60978
2025-04-23 17:37:09 +02:00
Jens Kuehlers 9a077078c5 docs: remove gitter reference (#60970)
PR Close #60970
2025-04-23 17:25:15 +02:00
Jens Kuehlers 0f11900666 docs: remove reference to gitter (#60970)
PR Close #60970
2025-04-23 17:25:15 +02:00
hawkgs 3e293535e3 docs(docs-infra): use a custom scrollbar for the examples using HighlightTypeScript (#60981)
The examples used to render the native scrollbar.

PR Close #60981
2025-04-23 17:24:29 +02:00
Pawel Kozlowski fd8f5c69f1 release: cut the v20.0.0-next.8 release 2025-04-23 17:18:06 +02:00
Pawel Kozlowski 573f0905c5 docs: release notes for the v19.2.8 release 2025-04-23 17:13:35 +02:00
arturovt a93b6e8931 refactor(router): remove Compiler injectee from RouterPreloader (#60945)
This commit removes the `Compiler` injectee from the `RouterPreloader` constructor. It's unused but was still being referenced in the factory definition: `static ɵfac = ɵɵngDeclareFactory(...)`.

PR Close #60945
2025-04-23 15:18:22 +02:00
arturovt 0ac949c266 fix(core): do not run change detection on global error events (#60944)
This commit wraps the `error` and `unhandledrejection` event listeners so they are installed outside of the Angular zone, because otherwise they trigger change detection whenever the event callbacks are invoked.

PR Close #60944
2025-04-23 15:17:28 +02:00
Angular Robot e3d45a4a90 build: update cross-repo angular dependencies (#60972)
See associated pull request for more information.

PR Close #60972
2025-04-23 15:15:46 +02:00
MeddahAbdellah 62de7d930a feat(router): add asynchronous redirects (#60863)
Adds support for asynchronous redirects in the router, allowing redirect logic to be resolved dynamically (e.g., via API or async function). This enhances routing flexibility and supports more complex navigation scenarios.

BREAKING CHANGE: The `RedirectFn` can now return `Observable` or
`Promise`. Any code that directly calls functions returning this type
may need to be adjusted to account for this.

PR Close #60863
2025-04-23 13:38:49 +02:00
Alan Agius 907f9bd3b8 refactor(router): produce error message when canMatch is used with redirectTo (#60958)
Redirects in the router are handled before `canMatch` guards are evaluated. As a result, `canMatch` will not run for routes that include a redirect. Instead of silently ignoring this misconfiguration, developers should be alerted to help them understand why it doesn't behave as expected.

Closes: #60957

PR Close #60958
2025-04-23 13:38:01 +02:00
Andrew Scott 953c4b2580 feat(core): Move zoneless change detection to dev preview (#60748)
This commit moves zoneless from experimental to developer preview.

* Update tag on provider API
* Remove "experimental" from provider name
* Move documentation from "experimental features" to "Best practives ->
  Performance" (at least temporarily until there is a better place)

BREAKING CHANGE: `provideExperimentalZonelessChangeDetection` is
renamed to `provideZonelessChangeDetection` as it is now "Developer
Preview" rather than "Experimental".

PR Close #60748
2025-04-23 11:47:56 +02:00
Angular Robot 550a63bde6 build: update all non-major dependencies (#60969)
See associated pull request for more information.

PR Close #60969
2025-04-23 10:58:16 +02:00
Pawel Kozlowski 5efc6927c5 refactor(core): alias afterRender to afterEveryRender (#60951)
Introduce an alias from afterRender to afterEveryRender in preparations for the
the internal rename.

PR Close #60951
2025-04-23 10:07:52 +02:00
Matthieu Riegler 1323ab1ce5 refactor(compiler-cli): Extract type predicates from type guards. (#60934)
Previously they were extracted as `boolean`.

PR Close #60934
2025-04-23 09:56:44 +02:00
Kristiyan Kostadinov 3d86b3ade7 refactor(compiler): account for selectorless in template binder (#60952)
Updates the template binder to account for the new selectorless AST nodes. This is a prerequisite to supporting template type checking of the new syntax.

PR Close #60952
2025-04-23 09:55:54 +02:00
Kristiyan Kostadinov 3719752cef refactor(compiler): validate references in selectorless (#60952)
Adds the follow validations to the selectorless template parsing:
* Local references with values are not allowed (e.g. `#foo="bar"`).
* Multiple local references with the same on a component or directive are not allowed.

PR Close #60952
2025-04-23 09:55:54 +02:00
Kristiyan Kostadinov 08512ee285 refactor(compiler): add flag to enable selectorless parsing (#60952)
Adds a flag to `parseTemplate` to enable selectorless.

PR Close #60952
2025-04-23 09:55:54 +02:00
Kristiyan Kostadinov 6cce056d41 refactor(compiler): allow different kinds of directive matchers to be passed to binder (#60952)
Updates the target binder to allow either a selector-based or selectorless matcher to be passed in. This will allow us to skip some of the overhead when matching directives to nodes.

PR Close #60952
2025-04-23 09:55:54 +02:00
Pawel Kozlowski 0859a99e89 refactor(core): replace TestBed.flushEffects with tick (#60959)
Instead of stabilizing the TestBed.flushEffects() API we intend to
replace it with the tick() method (equivalent of ApplicationRef.tick().
The reasoning here is that we prefer tests running the entire
synchronization process (as in production apps) instead of invoking
parts of the synchronization process in a way that would naver happen
in a running application.

PR Close #60959
2025-04-23 09:54:30 +02:00
Matthieu Riegler c990265473 docs(docs-infra): Improve doc support for pipes. (#60926)
This commits adds the pipe usage and the impure pipe mention.

PR Close #60926
2025-04-23 08:46:11 +02:00
Doug Parker 1983a5cbe9 release: bump Angular DevTools version to 1.0.29 (#60963)
PR Close #60963
2025-04-23 08:44:16 +02:00
Matthieu Riegler 1b8e7ab9fe feat(compiler): support the in keyword in Binary expression (#58432)
This commit adds the support for the `in` keyword as a relational operator, with the same precedence as the other relational operators (<,>, <=, >=)

BREAKING CHANGE: 'in' in an expression now refers to the operator

PR Close #58432
2025-04-22 21:44:12 +02:00
Jeevan Mahesha 9deaa674e6 docs: replace EventEmitter with output and self-closing tags in templates (#60910)
Replaced all instances of EventEmitter with the new output() utility.
Updated templates to use self-closing tags for cleaner markup.

PR Close #60910
2025-04-22 21:42:18 +02:00
hawkgs cebb9d2c1e refactor(devtools): disable unsupported features (#60585)
Prepare the app for Wiz & ACX and handle unsupported features by disabling their respective UI.

PR Close #60585
2025-04-22 21:29:04 +02:00
Doug Parker 8aaefa7b63 docs: expand Angular's browser policy by adopting the "widely available" Baseline (#60754)
This effectively expands Angular's existing browser support policy to be defined as browsers covered by the "widely available" Baseline (effectively browsers released <30 months ago). Each major version will choose a date shortly before release and pin its version support to the "widely available" Baseline of that date.

For now, I'm arbitrarily picking March 31st as I try to land the general infra and policy change, but we'll likely update the exact date a little closer to the v20 RC.

PR Close #60754
2025-04-22 21:25:03 +02:00
Angular Robot 61012cb239 build: update cross-repo angular dependencies (#60960)
See associated pull request for more information.

PR Close #60960
2025-04-22 21:23:37 +02:00
Matthieu Riegler 6c2fbad8a2 refactor(core): Improve NG0600 error message. (#60418)
This commit adds the mention of templates as illegal context to write signals.

fixes #60143

PR Close #60418
2025-04-22 16:35:38 +02:00
Matthieu Riegler 00dff8bfd6 refactor(core): mark makeEnvironmentProviders as public. (#60956)
`makeEnvironmentProviders` was already exported but didn't have the `@publicApi` tag.

PR Close #60956
2025-04-22 16:27:22 +02:00
Angular Robot 2c463a4f16 build: lock file maintenance (#60942)
See associated pull request for more information.

PR Close #60942
2025-04-22 13:37:30 +02:00
Gabriel Bergoc be995623cd fix(forms): make NgForm emit FormSubmittedEvent and FormResetEvent (#60887)
Currently, only forms created with `FormGroupDirective` emit events on
form submission and resetting. This commit extends this behavior to
Template-driven forms also.

Related to #58894

PR Close #60887
2025-04-22 13:04:40 +02:00
Matthieu Riegler e1b0e94d77 docs(docs-infra): remove style guide examples (#60929)
PR Close #60929
2025-04-22 12:55:40 +02:00
Matthieu Riegler e53a37496f docs: format RouterUpgradeInitializer usage notes (#60930)
This commit also adds a standalone example

PR Close #60930
2025-04-22 12:00:59 +02:00
Matthieu Riegler f88c747e29 refactor(compiler-cli): Don't extract constructors with no parameters (#60928)
This will prevent usesless paramters in the docs, ex: https://angular.dev/api/core/ApplicationInitStatus#constructor

This improves #60302

PR Close #60928
2025-04-22 11:59:44 +02:00
Matthieu Riegler 0be5412ea0 docs: Update creating libraries to the current recommendations (#60931)
PR Close #60931
2025-04-22 11:57:51 +02:00
Matthieu Riegler 975a69cc8a docs: fix NG2800 rendering (#60932)
PR Close #60932
2025-04-22 11:57:00 +02:00
Jeremy Elbourn e96a0c1fc7 docs: replace style guide with 2025 revision (#60809)
See RFC https://github.com/angular/angular/discussions/58412 for
background.

PR Close #60809
2025-04-22 11:56:12 +02:00
Matthieu Riegler b43fe29ca7 docs: update examples for i18n tokens (#60938)
PR Close #60938
2025-04-22 11:14:13 +02:00
Matthieu Riegler 8d31b0065e docs: update docs centered on NgModules (#60933)
PR Close #60933
2025-04-22 11:08:54 +02:00
Jan Martin 2240a21c97 refactor(platform-server): deprecate the testing entry point (#60915)
DEPRECATED: `@angular/platform-server/testing`

Use e2e tests to verify SSR behavior instead.

PR Close #60915
2025-04-22 11:02:26 +02:00
Angular Robot 619291b924 build: update cross-repo angular dependencies (#60914)
See associated pull request for more information.

PR Close #60914
2025-04-22 10:56:53 +02:00
Ryan Russell 0162ceb427 fix(core): inject migration should treat @Attribute as optional (#60916)
The @Attribute decorator will inject null if a host attribute
is missing, but `inject(new HostAttributeToken(...))` will throw
a no provider error. We should set {optional: true} when migrating
an @Attribute decorator. Also allow nonNullableOptional to add
`!` to those declarations.

PR Close #60916
2025-04-22 10:42:58 +02:00
hawkgs 037dede0a0 refactor(devtools): improve components tab side pane UI (#60901)
Improve the overall UI/UX. Drop the expandable containers shadows in favor of solid borders.

PR Close #60901
2025-04-18 21:14:15 +02:00
Ben Hong 3a6121fb86 docs: add new routing in-depth guide (#60006)
docs: update code snippet

Co-authored-by: Andrew Scott <atscott01@gmail.com>

docs: update link

Co-authored-by: Matthieu Riegler <kyro38@gmail.com>

docs: update syntax highlighting

Co-authored-by: Andrew Scott <atscott01@gmail.com>

docs: correct example links

docs: update load component with more concise syntax

docs: fix link text

docs: fix api docs link formatting

docs: fix callout box types and rendering

docs: truncate properties table

docs: swap constructor routes to use inject instead

docs: add other routing tasks info in subnav and remove duplicate info

docs: fix type conversion param

PR Close #60006
2025-04-18 15:35:58 +02:00
Angular Robot 1694739a7d build: update cross-repo angular dependencies (#60897)
See associated pull request for more information.

PR Close #60897
2025-04-18 15:15:19 +02:00
Matthieu Riegler 2f3f8d6d3b refactor(core): promote pendingUntilEvent to developerPreview (#60904)
`pendingUntilEvent` is now in developerPreview in v20.

PR Close #60904
2025-04-18 12:32:59 +02:00
hawkgs f838726afb refactor(devtools): typography (#60531)
Introduce typography placeholder classes and employ them across the app where applicable.

PR Close #60531
2025-04-18 08:35:59 +02:00
hawkgs 2e87130b1f refactor(devtools): fix build warnings (#60902)
Fixes two build warnings related to one of the templates and a SCSS partial file.

PR Close #60902
2025-04-18 08:27:10 +02:00
Philipp Burgmer 2419060fef fix(router): relax required types on router commands to readonly array (#60345)
Only require a readonly array as input for router commands instead of a writable array. Router itself does not need writable access to the array of commands. If router requires a writable array somebody on the outside would have to spread a readonly array to a new writable array. We can avoid this by just require what route actually needs.

Fixes #60269

BREAKING CHANGE: Several methods in the public API of the Router which
required writable arrays have now been updated to accept readonly
arrays when no mutations are done.

PR Close #60345
2025-04-17 16:21:57 +02:00
Doug Parker 5d9a678cc0 release: bump Angular DevTools version to 1.0.28 (#60893)
PR Close #60893
2025-04-17 11:24:59 +02:00
Angular Robot 104ad0a351 build: update cross-repo angular dependencies to v20.0.0-next.7 (#60891)
See associated pull request for more information.

PR Close #60891
2025-04-16 17:08:40 -04:00
kirjs c7e9cb9b36 release: cut the v20.0.0-next.7 release 2025-04-16 17:03:08 -04:00
kirjs 58728c792a docs: release notes for the v19.2.7 release 2025-04-16 16:44:45 -04:00
Jessica Janiuk 567522398f feat(core): stabilize incremental hydration api (#60888)
This removes the developer preview label for incremental hydration APIs.

PR Close #60888
2025-04-16 13:00:44 -04:00
Jessica Janiuk bf8492b871 feat(core): stabilize withI18nSupport() api (#60889)
This stabilizes the `withI18nSupport()` feature of hydration.

PR Close #60889
2025-04-16 12:47:26 -04:00
Alan Agius f2b22b01cc refactor(common): eliminate redundant iterator-to-array conversion (#60884)
Simplifies code by removing unnecessary `Array.from` usage.

PR Close #60884
2025-04-16 12:44:35 -04:00
Angular Robot 8e6841482a build: update io_bazel_rules_sass digest to cbe5261 (#60882)
See associated pull request for more information.

PR Close #60882
2025-04-16 12:43:45 -04:00
Alan Agius cbbea70fa3 fix(common): issue a warning instead of an error when NgOptimizedImage exceeds the preload limit (#60879)
This should not be treated as a hard error, as it doesn’t break the application but merely degrades performance.

Closes #60871

PR Close #60879
2025-04-16 12:01:26 -04:00
Angular Robot 620f127131 build: update cross-repo angular dependencies (#60877)
See associated pull request for more information.

PR Close #60877
2025-04-16 11:58:44 -04:00
ryncdr f22c72b74b docs(docs-infra): first-app tutorial - step-14-http src-final correction (#60738)
Updated housing.service.ts > getHousingLocationById()
 - Added search parameter to fetch URL
 - Returns single object instead of array

PR Close #60738
2025-04-16 10:23:50 -04:00
Andrew Scott e90daf3eb9 refactor(core): Update Transition finished promise to not throw unhandled rejection (#60816)
As with `InternalNavigationResult`, this commit adds the `catch` to the
`finished` promise on `InternalNavigationTransition` to avoid unhandled
promise rejections.

PR Close #60816
2025-04-15 18:40:42 -04:00
Andrew Scott 388c74995e docs: Add error handling documentation (#60848)
This adds a page to document the error handling practices, APIs, and features _in the framework_.
It does not contain any application-specific recommendations or
patterns as this information is subjective and domain-specific.

PR Close #60848
2025-04-15 17:35:01 -04:00
Matthieu Riegler ba34b3c3d9 refactor(core): remove unused injection props (#59209)
Those were also properties that were kept to also support of old compiled targets.

PR Close #59209
2025-04-15 17:33:02 -04:00
Jessica Janiuk 4dadd90c85 fix(docs-infra): prevent processing node_modules .md files (#60872)
If you happen to have node_modules installed for adev tutorials, there would be problems with trying to run adev tests. This excludes those node_modules folders.

PR Close #60872
2025-04-15 17:27:59 -04:00
Doug Parker b2c8fb3c6b refactor(devtools): update release process to commit before publishing (#60646)
This moves the commit step to the start of the process and releases after merging it. This has two key benefits:
1. The commit history now reflects the actual release (ex. any DevTools commits before the release commit are actually included in that release). Previously the changes in a release were dictated by the release PR branch, which is an ephemeral target. Other PRs may be merged to `main` before the release PR, and those changes would not be included in that DevTools release.
2. We can now compute a changelog based on this more accurate history.

The downside to this change is that release PRs are now blocking releases in a way they weren't before (which is likely desirable in the grand scheme of things), meaning we need to be more diligent about merging them in a timely manner.

I added a short script for listing DevTools commits since the last release, taking advantage of the more accurate commit history. This should make changelog generation a lot easier, even if there's still a manual process of rewriting the commit message into a line item in release notes.

Also made a few minor cleanup changes such as escaping the markdown in the suggested reviewer note so it can be more easily copy-pasted from the rendered format of this doc.

PR Close #60646
2025-04-15 09:19:39 -04:00
Angular Robot 939ee08d89 build: update all non-major dependencies (#60869)
See associated pull request for more information.

PR Close #60869
2025-04-15 09:10:50 -04:00
Andrew Scott 65adb3024d feat(core): Add provider which reports unhandled errors on window to ErrorHandler (#60704)
This commit adds a provider that installs listeners on the browser
window to forward unhandled promise rejections and uncaught errors to
the `ErrorHandler`. This is useful for both ZoneJS and Zoneless
applications. For apps using ZoneJS, errors can reach the window when
they happen outside the Angular Zone. For Zoneless apps, any errors not
explicitly caught by the framework can reach the window. Without this
provider, these errors would otherwise not be reported to
`ErrorHandler`.

We will/should consider adding this provider to apps by default in the
cli. In addition, it should be mentioned in the (to be created)
documentation page on error handling in Angular.

relates to #56240

PR Close #60704
2025-04-14 14:33:00 -04:00
Angular Robot e24b6d5066 build: update cross-repo angular dependencies (#60847)
See associated pull request for more information.

PR Close #60847
2025-04-14 13:41:14 -04:00
Pawel Kozlowski c1bcae91dd feat(core): expose performance data in Chrome DevTools (#60789)
This commit exposes the enableProfiling() function which enables
performance data visualisation directly in the Chrome DevTools
performance panel.

PR Close #60789
2025-04-14 11:12:55 -04:00
Matthieu Riegler 333d4e3bab refactor(core): Promote afterRenderEffect to stable (#60854)
`afterRenderEffect` in an `effect` that runs after rendering.

PR Close #60854
2025-04-14 11:08:44 -04:00
Pawel Kozlowski 727cda3856 feat(core): mark linkedSignal API as public (#60865)
Follow up on the PR https://github.com/angular/angular/pull/60741

PR Close #60865
2025-04-14 11:05:28 -04:00
Logan Dupont 9cb107c6db docs: fix missing card-title tag in example of fallback-content section (#60855)
PR Close #60855
2025-04-14 11:01:06 -04:00
Angular Robot 2b6d228736 build: lock file maintenance (#60765)
See associated pull request for more information.

PR Close #60765
2025-04-14 10:52:41 -04:00
Matthieu Riegler 84d359c173 refactor(compiler): add support for the new search element (#54945)
See #whatwg/html#5811
Spec: https://html.spec.whatwg.org/multipage/grouping-content.html#the-search-element

breaking change: You cannot have self-closing `search` component anymore as they are recognized as a native non-void element.

fixes #54944

PR Close #54945
2025-04-14 09:34:35 -04:00
JoostK 27bf809b31 test(core): type tests for linkedSignal (#60857)
This commit adds type inference tests for `linkedSignal` usages, to capture their behavior w.r.t.
type inference. Note that there's some situations where type inference doesn't work as you might
expect/hope; these have been included to capture their behavior but may be revisited in the future
if the inference capabilities are expanded for this scenario.

Closes #60423

PR Close #60857
2025-04-14 09:30:36 -04:00
JoostK 6b9434a029 docs: document that linkedSignal with previous should include type arguments (#60857)
Due to the cyclic nature of `previous`'s type and the computation's return type,
TypeScript isn't able to infer generic type arguments.

Closes #60423

PR Close #60857
2025-04-14 09:30:35 -04:00
hawkgs c5ca597aeb refactor(devtools): switch to components tab whenever the inspector is used (#60694)
Switch to the components tab, if not there, when a component is selected via the inspector.

PR Close #60694
2025-04-14 09:22:05 -04:00
hawkgs 7c1a16db26 refactor(devtools): create highlight overlay on node selection (#60744)
Currently, highlighting works only when a directive explorer node is hovered. The change enables this feature on node selection as well.

PR Close #60744
2025-04-14 09:20:24 -04:00
Jessica Janiuk 1d85f0c267 docs: remove unused imports in examples (#60867)
PR Close #60867
2025-04-14 09:16:28 -04:00
Miles Malerba c0ef923ebb docs: Restructure example build rules (#60778)
Restructures the examples build rules so that all examples are exposed
through a single file group in adev/src/content/examples.

Also adds a separate filegroup in the same location for just the
embeddable examples and adds it to the APPLICATION_FILES for the docs
app.

This uncovered the fact that some of our examples have broken
non-compiling code. I've excluded these ones from being embeddable for
now, until the breakages can be addressed

PR Close #60778
2025-04-11 17:19:33 -04:00
Miles Malerba 427bb5ab0a docs: Add back script to generate example previews map (#60778)
Restores the ability to have example components rendered alongside the
code. This functionality was broken a while back by #53511.

To enable the embedded preview for an example, add `preview` and
`path=adev/src/content/expamples/component/to/render.ts` attributes to
the `<docs-code>` or `<docs-code-multifile>` tag.

Tested with one of the accessibility examples and it seems to work now.

PR Close #60778
2025-04-11 17:19:33 -04:00
Andrew Scott 72dd1330f2 refactor(router): Use NavigationTrigger more consistently and move events helper next to definitions (#60736)
This adjusts code to use `NavigationTrigger` type where appropriate and
moves the `isPublicRouterEvent` next to the private event type union to
make it more obvious that it should be updated along with any updates to
the private type union.

PR Close #60736
2025-04-11 14:53:11 -04:00
Angular Robot 1522e6c3f2 build: update cross-repo angular dependencies (#60835)
See associated pull request for more information.

PR Close #60835
2025-04-11 10:19:13 -04:00
Matthieu Riegler 7b8c2fa2b2 refactor(core): Promote afterNextRender to stable. (#60792)
`afterRender` will not be promoted and is on its way out.

PR Close #60792
2025-04-11 07:09:03 -04:00
Paul Gschwendtner cda922d480 build: update post-approval dev-infra action
This should fix errors with the suspended GitHub app installation.
2025-04-11 12:24:35 +02:00
Michael van der Luit 2b590316be docs(docs-infra): add status filter to api reference overview (#57614)
add a status filter on the api reference overview page to filter on status (all|stable|deprecated|developer-preview|experimental)

PR Close #57614
2025-04-10 14:42:54 -04:00
Ryan Russell 11d441ff8b fix(core): inject migration: replace param with this. (#60713)
The inject tool inserts `const foo = this.foo` if code
in the constructor referenced the constructor parameter `foo`.
If `foo` is a readonly property, we can instead replace `foo` with
`this.foo`. This allows more properties to be moved out of the
constructor with combineMemberInitializers.
For now, it only touches initializers, not all of the code in the
constructor.

PR Close #60713
2025-04-10 13:31:30 -04:00
Paul Gschwendtner 5c575a8ac9 build: ensure material dependencies are properly linked for devtools (#60822)
This is a follow-up to the recent devtools linking change, leveraging
the dedicated package that we are also using in the components
repository; avoiding future duplication.

The latest version of that package contains a fix for an issue where
the linked bundles did not rewrite imports to shared chunks.

Such imports need to also point to their linked variants.

PR Close #60822
2025-04-10 11:53:53 -04:00
Angular Robot 6aa0bbd4e4 build: update cross-repo angular dependencies (#60811)
See associated pull request for more information.

PR Close #60811
2025-04-10 11:31:17 -04:00
hawkgs 2021f64612 refactor(devtools): reduce material form field density globally (#60633)
Make the form field density consistent across the app.

PR Close #60633
2025-04-10 11:22:44 -04:00
Alan Agius 654e6da588 fix(docs-infra): update docs-alert and re-enable tests (#60827)
Before this commit, the docs-alert tests were failing. This also ensures that `NOTE:` is always capitalized.

PR Close #60827
2025-04-10 11:21:12 -04:00
Paul Gschwendtner abe96914f5 build: remove unnecessary feature detection that breaks with shared chunks (#60825)
Since APF can contain shared chunks, where e.g. `eetemplate` lives, the
`coreHasSymbol` check is no longer reliable. Right now it even prevents
the version range check (that is reliably working) from running because
we detect a `index.d.ts` file but simply don't find the requested
symbol in there (we don't expand exports via type checker).

PR Close #60825
2025-04-10 14:19:52 +00:00
Paul Gschwendtner 7fc14d7f26 build: fix adev first party linking and re-enable tests (#60825)
This commit attempts to finally fix the long-standing first-party
package linking issue with the rather tricky `rules_nodejs` toolchain.

I've verified that no version of e.g. `@angular/core` ends up in the
Bazel sandbox. This is achieved by also filtering transitive Angular
deps for first-party linked packages. e.g. `@angular/docs`.

In addition, `@angular/docs` accidentally ended up bundling parts of
Angular core because it relied on an entry-point that was not part of
the "well known externals". As part of the ongoing `ng_package`
update/rewrite, we should look into disabling bundling of ANY external
dependency/module. This is possible because we use relative imports
inside APF packages as of recently!

This commit should allow us to develop and continue new compiler
features, without having to temporarily (or longer) disable all
`angular.dev` unit tests!

Fixes #54858.

PR Close #60825
2025-04-10 14:19:52 +00:00
Matthieu Riegler 36ae560765 refactor(core): remove the phase prop from AfterRenderOptions (#60641)
The `AfterRenderPhase` enum now becomes private, it isn't exported anymore.

PR Close #60641
2025-04-09 15:39:47 -07:00
Vincent 9f31947aad fix(http): Include HTTP status code and headers when HTTP requests errored in httpResource (#60802)
Currently the HTTP status code and headers are only included if the request succeeded. Given status codes convey more information in case of a request error vs. success, this makes it more useful than inspecting what is contained in `.error()`.

PR Close #60802
2025-04-09 14:25:02 -07:00
Andrew Scott ea58402b12 release: cut the v20.0.0-next.6 release 2025-04-09 13:02:48 -07:00
Andrew Scott c3113b9b63 docs: release notes for the v19.2.6 release 2025-04-09 12:30:31 -07:00
Kristiyan Kostadinov 8744c9a165 fix(compiler-cli): ensure HMR works with different output module type (#60797)
Currently when we transpile the HMR update module, we use the project's compiler options verbatim. This appears to break down with some module types, whereas we have to use a native export.

These changes override the compiler options to ensure that the user's options don't end up breaking HMR.

Fixes #60795.

PR Close #60797
2025-04-09 11:42:55 -07:00
Matthieu Riegler 0b69b61929 fix(core): Flush animations when no component has been checked (#58089)
When Angular runs application synchronization automatically, animations
are now guaranteed to be flushed, regardless of whether change detection
was run on any components attached to `ApplicationRef`. This most
frequently affects animations related to component removal where the DOM
element for the component would previously not be removed due to
animations not being flushed

BREAKING CHANGE: Animations are guaranteed to be flushed when Angular
runs automatic change detection or manual calls to `ApplicationRef.tick`.
Prior to this change, animations would not be flushed in some situations
if change detection did not run on any views attached to the
application. This change can affect tests which may rely on the old
behavior, often by making assertions on DOM elements that should have
been removed but weren't because DOM removal is delayed until animations
are flushed.

fixes #58075

PR Close #58089
2025-04-09 11:12:54 -07:00
Jermaine Jatau bf0f4c47e7 docs: update guide on referencing component children (#60787)
PR Close #60787
2025-04-09 11:08:31 -07:00
Matthieu Riegler e50f8a23dc Revert "refactor(core): use stream in rxResource instead of loader (#59910)" (#60803)
This reverts commit 98a584c1e8.

PR Close #60803
2025-04-09 09:33:26 -07:00
Pawel Kozlowski 2b4fd9b273 refactor(core): allow multiple DI profilers (#60562) (#60562)
This commit changes the DI profiler infrastructure to
allow multiple profilers running at the same time.

PR Close #60562

PR Close #60562
2025-04-09 09:16:40 -07:00
Angular Robot df42976084 build: update github/codeql-action action to v3.28.15 (#60780)
See associated pull request for more information.

PR Close #60780
2025-04-08 16:26:14 -07:00
Angular Robot 36ea67354b build: update all non-major dependencies (#60782)
See associated pull request for more information.

PR Close #60782
2025-04-08 16:17:10 -07:00
aparziale 39a4e00464 fix(core): fix ng generate @angular/core:output-migration. Fixes angular#58650 (#60763)
Fixes #58650 - Insert a TODO comment for empty emit (without parameter).

PR Close #60763
2025-04-08 16:10:03 -07:00
Angular Robot 9bba182c0e build: update cross-repo angular dependencies (#60777)
See associated pull request for more information.

PR Close #60777
2025-04-08 16:09:31 -07:00
arturovt b1c2a8ac38 refactor(router): replace APP_INITIALIZER (#60719)
The `APP_INITIALIZER` is deprecated. Replaced with `provideAppInitializer`.

PR Close #60719
2025-04-08 16:06:04 -07:00
Andrew Scott b8d9f95faa Revert "refactor(core): allow multiple DI profilers (#60562)" (#60793)
This reverts commit 56cc5fdb57.

CI tests are consistently timing out after this commit

PR Close #60793
2025-04-08 14:04:16 -07:00
Andrew Scott a997a886d9 refactor(router): use performance API for router view transitions (#60790)
Adds feature tracking for view transitions.

PR Close #60790
2025-04-08 14:02:28 -07:00
Angular Robot 0506a0e7f3 docs: update Angular CLI help [main] (#60788)
Updated Angular CLI help contents.

PR Close #60788
2025-04-08 10:23:16 -07:00
cexbrayat 98a584c1e8 refactor(core): use stream in rxResource instead of loader (#59910)
With the changes in #59573, `resource` can now define a `stream` rather than a `loader`.
In the same PR, `rxResource` was updated to leverage this new functionality to handle multiple responses from the underlying observable,
rather than just the first one as it was previously.
This commit renames the `loader` option of `rxResource` into `stream` to be better aligned with its new behavior.

The previous version is temporarily kept and marked as deprecated to help migrating the current usage.

Before
```
usersResource = rxResource({
  request: () => ...,
  loader: ({ request }) => ...
});
```

After
```
usersResource = rxResource({
  request: () => ...,
  stream: ({ request }) => ...
});
```

PR Close #59910
2025-04-08 10:19:13 -07:00
Kristiyan Kostadinov c0f41bc505 refactor(platform-browser): remove GenericBrowserDomAdapter (#60760)
The `GenericBrowserDomAdapter` wasn't don't anything so we can drop it and have the `BrowserDomAdapter` extend `DomAdapter` directly.

PR Close #60760
2025-04-08 10:14:54 -07:00
Angular Robot 155e661838 build: update dependency @types/babel__generator to v7.27.0 (#60781)
See associated pull request for more information.

PR Close #60781
2025-04-08 10:13:57 -07:00
Enea Jahollari 7a971766dc feat(compiler): add extended diagnostic for uninvoked track function on @for blocks (#60495)
The compiler will warn devs when they haven't invoked the track function passed to track in @for blocks

PR Close #60495
2025-04-08 10:10:33 -07:00
Kirill Cherkashin 80a32588b4 docs: Update guide link in http package md file (#59955)
PR Close #59955
2025-04-08 09:20:19 -07:00
Matthieu Riegler 2c6b697e4c refactor(core): promote effect to stable. (#60773)
`effect` is promoted to stable in v20

PR Close #60773
2025-04-08 09:16:38 -07:00
Matthieu Riegler ba79f23e2e refactor(router): remove dependency on @types/dom-view-transitions (#60731)
The types have been shipped in TS 5.6

PR Close #60731
2025-04-08 09:01:41 -07:00
Pawel Kozlowski 56cc5fdb57 refactor(core): allow multiple DI profilers (#60562)
This commit changes the DI profiler infrastructure to
allow multiple profilers running at the same time.

PR Close #60562
2025-04-08 08:56:30 -07:00
Angular Robot 6fa8d44197 build: update io_bazel_rules_sass digest to b4800f3 (#60737)
See associated pull request for more information.

PR Close #60737
2025-04-07 13:33:14 -07:00
Angular Robot 99e409fb2d docs: update Angular CLI help [main] (#60750)
Updated Angular CLI help contents.

PR Close #60750
2025-04-07 13:32:19 -07:00
JoostK 3d85d9363c fix(core): reduce total memory usage of various migration schematics (#60774)
This commit changes Tsurge's operation within angular-devkit (i.e. the CLI) to
no longer retain all programs across all migrations. This isn't necessary for
so-called "funnel" migrations so not retaining the programs for those migrations
is a pure performance win. The "complex" migrations may see increased execution time
given that the program is now being recreated for the actual migration phase to run,
although reduced memory pressure may help alleviate this overhead. Since this new
approach should help prevent Node from running out of memory and failing entirely
this is preferred over a potentially increased execution time.

Fixes #59813

PR Close #60774
2025-04-07 13:13:33 -07:00
Doug Parker 0ae1889560 fix(core): run ApplicationRef.prototype.bootstrap in NgZone (#60720)
`bootstrapApplication` always creates the root component in the `NgZone`, however `ApplicationRef.prototype.bootstrap` historically did not, meaning that if users did not go out of their way to call `ngZone.run(() => appRef.bootstrap(SomeComp))`, components would not run change detection correctly.

This commit updates `ApplicationRef.prototype.bootstrap` to _always_ run within `NgZone`, removing this hazard and ensuring components always run CD as expected.

PR Close #60720
2025-04-07 11:32:31 -07:00
Angular Robot 5039ed0fa7 build: update cross-repo angular dependencies (#60747)
See associated pull request for more information.

PR Close #60747
2025-04-07 10:31:01 -07:00
Jamie Couperwhite a1a9f8c1a9 docs: fix typo in documentation for pendingUntilEvent (#60756)
PR Close #60756
2025-04-07 10:29:35 -07:00
aparzi d8e941bd61 fix(core): fix docs for output migration (#60764)
missing EventEmitter import

PR Close #60764
2025-04-07 09:23:33 -07:00
Andrew Scott 9228a73363 feat(docs-infra): Add Navigation API adapter to adev (#60722)
This adapter adds an integration with the Navigation API, allowing
SPA Router navigations to be displayed more fully in the browser UI.
With this, site visitors will be able to see that a page is loading via
the loading spinner in the tab. They will also have access to cancel the
navigation with the browser UI via the "stop" button or by pressing the
escape key (only relevant for slower connections).

* https://github.com/WICG/navigation-api
* https://developer.mozilla.org/en-US/docs/Web/API/Navigation_API

PR Close #60722
2025-04-04 11:46:00 -07:00
Andrew Scott 558d76ec5d refactor(docs-infra): Move router-specific app configuration to separate file (#60722)
This moves the router configuration for the app to a separate file since
there is a lot of it.

PR Close #60722
2025-04-04 11:46:00 -07:00
Kristiyan Kostadinov 92c4123a74 refactor(compiler): integrate new AST nodes into visitors (#60724)
Updates the various visitors to add placeholders for the new AST nodes.

PR Close #60724
2025-04-04 11:28:47 -07:00
Kristiyan Kostadinov 42039b7253 refactor(compiler): produce selectorless ASTs (#60724)
Adds the initial logic to produce the `Component` and `Directive` AST nodes from their equivalents in the HTML AST.

PR Close #60724
2025-04-04 11:28:47 -07:00
Kristiyan Kostadinov 334d0fa585 refactor(compiler): allow for security context to be inferred without tag name (#60724)
Currently it's required to pass in the tag name when determining the security context, however with selectorless we might not have a tag name. These changes update the logic to account for it.

PR Close #60724
2025-04-04 11:28:47 -07:00
Kristiyan Kostadinov 10b5beab3d refactor(compiler): add start/end spans to ng-content element (#60724)
Adds `startSourceSpan` and `endSourceSpan` to the `Content` AST node so it's consistent with the rest of the element-like nodes.

PR Close #60724
2025-04-04 11:28:47 -07:00
Kristiyan Kostadinov bf9dd185b0 refactor(compiler): introduce R3 AST nodes for components and directives (#60724)
Sets up the AST nodes for components and directives in the R3 AST.

PR Close #60724
2025-04-04 11:28:47 -07:00
Kristiyan Kostadinov 3a6e45f965 refactor(compiler): integrate new nodes into visitors (#60724)
Integrates the `Component` and `Directive` nodes into the various visitors.

PR Close #60724
2025-04-04 11:28:47 -07:00
Kristiyan Kostadinov c74b168382 refactor(compiler): produce AST from selectorless tokens (#60724)
Updates the HTML parser to produce AST nodes from the tokens produced that were added to the lexer in the previous commit.

PR Close #60724
2025-04-04 11:28:47 -07:00
Kristiyan Kostadinov dc1c0a0e44 refactor(compiler): add component and directives nodes to HTML AST (#60724)
Updates the HTML AST to add nodes for components and directives. Also adds a `directives` field to `Element`.

PR Close #60724
2025-04-04 11:28:47 -07:00
Kristiyan Kostadinov 03944ccf52 refactor(compiler): add experimental tokenization of directives (#60724)
Sets up tokenization for the new experimental directive syntax.

PR Close #60724
2025-04-04 11:28:46 -07:00
Kristiyan Kostadinov e8dbc363b1 refactor(compiler): add experimental tokenization of components (#60724)
Sets up the tokenization for the new experimental selectorless components as a first step towards producing an AST.

PR Close #60724
2025-04-04 11:28:46 -07:00
Pawel Kozlowski 8d050b5bfc feat(core): stabilize linkedSignal API (#60741)
The linkedSignal API is now considered stable.

PR Close #60741
2025-04-04 10:35:51 -07:00
Angular Robot 3ea01639e3 build: update cross-repo angular dependencies (#60743)
See associated pull request for more information.

PR Close #60743
2025-04-04 09:51:39 -07:00
Alan Agius 62859d941a build: avoid export internal renames (#60739)
There is no need to minify internal names as these are minified by the consuming app

PR Close #60739
2025-04-04 09:49:14 -07:00
hawkgs 9fde57b1b6 docs(docs-infra): fix home animation text width on small devices; fix snackbar colors (#60745)
The text used to exceed the viewport width.

PR Close #60745
2025-04-04 09:44:44 -07:00
Andrew Scott 189935810c refactor(common): Add hashchange event for traversals (#60682)
This commit adds the logic to emit the `hashchange` event for
traversals.

PR Close #60682
2025-04-03 16:54:56 -07:00
Andrew Scott 36b92367ae refactor(common): Update FakeNavigation deferred commit to use precommitHandler (#60652)
This commit updates the FakeNavigation implementation to match the
spec's new `precommitHandler` which replaces the old `commit: 'after-transition'`.

PR Close #60652
2025-04-03 16:53:06 -07:00
Angular Robot 1765ebf7c4 build: update cross-repo angular dependencies (#60714)
See associated pull request for more information.

PR Close #60714
2025-04-03 15:49:06 -07:00
Angular Robot c975e751a5 build: update io_bazel_rules_sass digest to 3548d6b (#60721)
See associated pull request for more information.

PR Close #60721
2025-04-03 13:08:01 -07:00
Andrew Kushnir 491818f51f docs: mark REQUEST and related symbols as stable (#60717)
This commit removes the `@developerPreview` annotation from the `REQUEST`, `RESPONSE_INIT` and `REQUEST_CONTEXT` symbols, making them stable.

PR Close #60717
2025-04-03 13:04:23 -07:00
Andrew Scott 5795e03cdf fix(http): Delay stabilization until next app synchronization (#60656)
This commit updates the `HttpClient` internals to use the public
`PendingTasks` API which delays stability until the next
`ApplicationRef.tick` instead of causing the application to become
stable synchronously. This is helpful to resolve unexpected issues where
computations happen as follow-up work to the value coming out of the
response.

fixes https://github.com/angular/angular/issues/59352

PR Close #60656
2025-04-03 12:52:34 -07:00
Doug Parker 2348f26d8a refactor(core): add ApplicationRef.prototype.bootstrapImpl with an injector parameter (#60622)
This is a roll forward of commit d5a8a1c524. Nothing is meaningfully different, as we're trying again to see if the CI failure is reproducible.

PR Close #60622
2025-04-03 10:48:01 -07:00
Andrew Scott b9cf414790 fix(language-service): Ensure dollar signs are escaped in completions (#60597)
Dollar signs need to be escaped so they are not replaced during snippet
expansion: https://code.visualstudio.com/docs/editing/userdefinedsnippets#_how-do-i-have-a-snippet-place-a-variable-in-the-pasted-script

fixes https://github.com/angular/vscode-ng-language-service/issues/2139

PR Close #60597
2025-04-03 10:45:56 -07:00
Andrew Scott a22b13f990 fix(language-service): Do not provide element completions in end tag (#60616)
Element completions should not be provided when the position is in the
end tag or between the start and end tags.

fixes https://github.com/angular/vscode-ng-language-service/issues/2157

PR Close #60616
2025-04-03 10:36:32 -07:00
Andrew Scott 866cea9a05 feat(core): Stabilize PendingTasks Injectable (#60716)
This PR marks `PendingTasks` as stable, though the `run` function
remains in dev preview. There are still questions around its return
value, error handling, and whether it will be replaced by a different
`task` API that would better track context through the
injector/injection context.

PR Close #60716
2025-04-03 10:11:15 -07:00
LC 43cc57b7e8 docs: Fix Property Binding (#60725)
PR Close #60725
2025-04-03 10:09:37 -07:00
Alex Rickabaugh 4e88e18a8e feat(core): mark toObservable as stable (#60449)
`toObservable` graduates from developer preview and is now considered stable
API.

PR Close #60449
2025-04-02 13:38:49 -07:00
Alex Rickabaugh 45f909e8f9 Revert "refactor(core): support an opt-in sync version of toObservable (#60640)" (#60449)
This reverts commit 57a240b07e. We're no
longer attempting to convert `toObservable` to a synchronous API.

PR Close #60449
2025-04-02 13:38:49 -07:00
Matthieu Riegler 1c1ad12ad3 refactor(core): Instantiate the ErrorHandler lazily. (#58984)
This change prevents that user code in a custom `ErrorHandler` to run as part of `ApplicationRef`'s creation.

fixes #58970

PR Close #58984
2025-04-02 19:20:50 +00:00
arturovt ad5fbd944d refactor(common): drop value not a number message in production (#60699)
Drops value not a number message in production.

PR Close #60699
2025-04-02 19:20:11 +00:00
Jessica Janiuk 1c6d5b2e23 release: cut the v20.0.0-next.5 release 2025-04-02 15:05:23 -04:00
Jessica Janiuk 84c29d8961 docs: release notes for the v19.2.5 release 2025-04-02 14:59:48 -04:00
arturovt 1c7b356625 fix(core): release hasPendingTasks observers (#59723)
In this commit, we unsubscribe the `hasPendingTasks` subject to remove all active observers and enable granular garbage collection, as users may forget to unsubscribe manually when subscribing to `isStable`.

PR Close #59723
2025-04-02 18:26:06 +00:00
Domenico Gemoli a07ee60989 feat(forms): add markAllAsDirty to AbstractControl (#58663)
Adds the `markAllAsDirty` method to the `AbstractControl` class. This method will mark the control and all its
descendants as dirty.

I pretty much just duplicated the behaviour and tests of `markAllAsTouched`.

Fixes #55990

PR Close #58663
2025-04-02 18:25:32 +00:00
Alex Rickabaugh a611b234d7 fix(core): run root effects in creation order (#60534)
Previously, the order in which root effects were executed was
non-deterministic and relied on the order in which signal graph dirty
notifications were propagated. With this commit, root effects are always run
in creation order.

PR Close #60534
2025-04-02 18:24:40 +00:00
Angular Robot 9d5a1a8dec build: update cross-repo angular dependencies (#60706)
See associated pull request for more information.

PR Close #60706
2025-04-02 18:23:56 +00:00
Andrew Scott 0bb4bd661e feat(router): Add ability to directly abort a navigation (#60380)
This commit adds the ability to directly abort a navigation through the
`Router.getCurrentNavigation()?.abort()` method. While there are no
feature requests for this, it is a feature that will be necessary for
integration with the navigation API. The API enables better tracking of
an ongoing navigation for SPAs and a site visitor can cancel a
navigation by clicking the stop button in the browser. While this could
technically be done on the transition with an internal jsdoc comment to
hide it from application developers, there's no need.

With this feature, I believe it would be possible to create somewhat of a shim
to integrate with the navigation API even before the router has full support
using the router events to control a deferred navigation that never
commits the URL and always aborts itself on navigation end.

PR Close #60380
2025-04-02 17:30:27 +00:00
( Nechiforel David-Samuel ) NsdHSO 84ca0ef2d0 refactor: added typing for Response (#60541)
This adds a better re-usable type for Response in HttpResource.

PR Close #60541
2025-04-02 16:33:22 +00:00
Matthieu Riegler 7da56e23d0 refactor(compiler): add selectedcontent to the DOM element schema registry (#60683)
This is only adding support for `selectedcontent` at the compiler level. At runtime it doesn't behave as expected see #60636

fixes #60679

PR Close #60683
2025-04-02 16:27:01 +00:00
hawkgs 4f86f3f106 docs(docs-infra): fix algolia icon in the search dialog on safari (#60702)
The icon used to have zero height due to its display property.

PR Close #60702
2025-04-02 16:19:46 +00:00
arturovt 5f7f04634f fix(core): call DestroyRef on destroy callback if view is destroyed (#58008)
In this commit, we introduce the ability to check whether `lView` has already been
destroyed in `NodeInjectorDestroyRef`. If the `lView` is already destroyed, we call
the on-destroy callback immediately, without trying to register it to be called later.
This ensures that any necessary cleanup is handled gracefully and provides better
reliability in managing resources.

One of the use cases is `takeUntilDestroyed`, which aims to replace `takeUntil` in existing
applications. While `takeUntil` can be safely called once the view is destroyed—resulting
in no errors and finalizing the subscription depending on whether a subject or replay
subject is used—replacing it with `takeUntilDestroyed` introduces a breaking change, as
it throws an error if the `lView` is destroyed.

Related issue: #54527

PR Close #58008
2025-04-02 15:24:48 +00:00
aparziale 6acce7ca2a fix(core): fixes #592882 ng generate @angular/core:signal-queries-migration (#60688)
fixes #592882 - retain accessibility modifier if it's already present for signal migrations

PR Close #60688
2025-04-02 15:14:43 +00:00
Pawel Kozlowski b6897bb8c3 refactor(core): extract directive inputs update logic (#60690)
This refactor extracts all the logic required to update a single
directive input while running the update pass of a template. It
also adds a number of TODOs that hint on subsequent reqfactorings.

PR Close #60690
2025-04-02 15:08:36 +00:00
arturovt 59d40f211c refactor(service-worker): pull less RxJS symbols (#60657)
In this commit, we reduce the number of imported RxJS symbols since they are redundant.

- We replace `merge` with a manual observable because `merge` internally pulls in `from()`.
- We remove `defer` and `throwError`, replacing them with `new Observable(s => s.error(..))`.
- We replace `toPromise()` with `new Promise`, as `toPromise()` is deprecated.
- We convert `readyToRegister` to a promise to avoid using RxJS operators like `delay`.

PR Close #60657
2025-04-02 15:00:34 +00:00
aparziale cdbc6e8ec1 fix(core): fix ng generate @angular/core:output-migration (#60626)
output-migration command not keep type if @output declaring without initializer

PR Close #60626
2025-04-02 14:26:05 +00:00
Tomasz Domański 4546d4fb39 fix(service-worker): assign initializing client's app version, when a request is for worker script (#58131)
When a new version of app is available in a service worker, and a client with old version exists, web workers initialized from a client with old version will now be properly assigned with the same version.

Before this change, a web worker was assigned with the newest version.

Fixes #57971

PR Close #58131
2025-04-02 14:23:52 +00:00
Andrew Kushnir 84ba1ad878 refactor(core): drop unused ngDevMode metrics (#60686)
This commit updates the code to drop unused `ngDevMode` metrics and removes some related (and now unused) utility functions.

PR Close #60686
2025-04-02 14:17:10 +00:00
Ahmed Hakeem 316fabb814 docs: add a note about styles collision resolution (#59266)
PR Close #59266
2025-04-02 13:57:27 +00:00
Dany Marques 1faca6f4fd docs(core): give types to signal API (#58965)
PR Close #58965
2025-04-02 13:56:54 +00:00
Dany Marques c980d06182 docs(core): improve computation example (#58965)
PR Close #58965
2025-04-02 13:56:54 +00:00
Matthieu Riegler d3fec852df docs: Use inject for DI (#59835)
PR Close #59835
2025-04-02 13:37:30 +00:00
Matthieu Riegler 590b50254b docs(docs-infra): fix adev (#60695)
PR Close #60695
2025-04-02 12:37:04 +00:00
Matthieu Riegler bdfbd54932 feat(forms): Allow to reset a form without emitting events (#60354)
This change  add an option paramter to `resetForm` that is passed to the FormGroup.

fixes #60274

PR Close #60354
2025-04-02 11:36:24 +00:00
Matthieu Riegler e4be32d8f0 refactor(compiler): prevent object methods being recognised as entities (#58100)
With this commit object methods (like `valueOf`, `toString` are not considered as valid entities anymore.

PR Close #58100
2025-04-02 11:35:53 +00:00
Matthieu Riegler 23e4da430a refactor(http): remove non reactive signature from httpResource. (#60537)
The non reactive usage ``httpResource(\`http://test/${myId()}\`` gave the false impression that it was reactive when the signal was invoked. We prevent any possibility of oversight by removing the non reactive signature.

PR Close #60537
2025-04-02 11:35:23 +00:00
Matthieu Riegler def8bdd229 build: remove orphan bundling symbols (#60692)
Those targets where removed by #60591 but the symbols files were left behind.

PR Close #60692
2025-04-02 11:34:53 +00:00
Jake Spievak 24d8d56a81 docs: update the first app tutorial to include a note about importing NgFor directive (#60627)
PR Close #60627
2025-04-02 11:34:24 +00:00
Matthieu Riegler a69f5c557a docs: add targets for the bundling debug (#60693)
PR Close #60693
2025-04-02 11:33:52 +00:00
Matthieu Riegler 2af330df61 docs(docs-infra): Search results as HTML (#60394)
fixes #60384

PR Close #60394
2025-04-02 11:32:57 +00:00
Angular Robot 916f768bcd build: update @angular/ng-dev digest to 10732a8 (#60678)
See associated pull request for more information.

PR Close #60678
2025-04-01 20:19:28 +00:00
Andrew Kushnir fe97db8935 build: exclude relative imports commits via .git-blame-ignore-revs (#60680)
This commit adds a list of commits that refactored the code to use relative imports to the .git-blame-ignore-revs.

PR Close #60680
2025-04-01 20:18:36 +00:00
iteriani e9c5e46a60 refactor(core): Check for ngMetadataName instead of instanceof. Wiz doesn't extend InjectionToken. (#60572)
In cases such as Wiz, we avoid using the InjectionToken class since it comes from @angular/core.

PR Close #60572
2025-04-01 19:21:33 +00:00
Joey Perrott b55f4de6e6 ci: update to latest dev-infra action versions (#60675)
Update to the latest actions

PR Close #60675
2025-04-01 18:15:18 +00:00
TJ Lavelle b927ce8ec9 refactor(common): update AsyncPipe to explicitly accept PromiseLike only (#60551)
With the fixed in g3, we can keep the type limited to PromiseLike
instead of Promise|PromiseLike

PR Close #60551
2025-04-01 17:56:39 +00:00
TJ Lavelle a300cf8cf7 refactor(common): update AsyncPipe to explicitly accept Promise | PromiseLike (#60551)
There is a chance that external users have "extended" AsyncPipe and are expecting to
pass in a Promise instance.

PR Close #60551
2025-04-01 17:56:39 +00:00
TJ Lavelle 301996e0b4 refactor(common): update AsyncPipe to explicitly accept Promise | PromiseLike (#60551)
There is a chance that external users have "extended" AsyncPipe and are expecting to
pass in a Promise instance.

PR Close #60551
2025-04-01 17:56:39 +00:00
TJ Lavelle c8c828ee58 refactor(common): update AsyncPipe to support PromiseLike (#60551)
Updates the AsyncPipe to work with PromiseLike, in addition to Promise.

PR Close #60551
2025-04-01 17:56:39 +00:00
Andrew Scott 7b819be83f fix(core): Ensure errors in listeners report to the application error handler (#60251)
Practically speaking, this change ensures that Angular is able to make
decisions about what to do when an uncaught error happens.

For tests, this will mean that, by default, the error either causes the
`fixture.whenStable` promise to reject if there is one or rethrow the
error. This ensures tests do not accidentally ignore errors. Opting out
of this can be done with the `rethrowApplicationErrors: false` option in
`TestBed`.

For SSR, there may be additional behaviors in the future that we want to
add, such as redirecting to an error page or responding with a 500
status code.

BREAKING CHANGE: Uncaught errors in listeners which were previously only reported to
`ErrorHandler` are now also reported to Angular's internal error
handling machinery. For tests, this means that the error will be
rethrown by default rather than only logging the error. Developers
should fix these errors, catch them in the test if the test is
intentionally covering an error case, or use `rethrowApplicationErrors:
false` in `configureTestingModule` as a last resort.

PR Close #60251
2025-04-01 17:03:08 +00:00
Andrew Kushnir eb97303769 test(bazel): update common package contents test to skip chunks (#60623)
This commit updates the `common` package contents test to skip JS chunks, while still making sure that the main entrypoint files are present.

PR Close #60623
2025-04-01 15:58:51 +00:00
Andrew Kushnir ad65f44877 build(common): updating golden files for the @angular/common package (#60623)
This commit updates golden files that got changed after swtiching to relative paths. There are no actual change to the APIs, the golden file updates capture the change in imports.

PR Close #60623
2025-04-01 15:58:51 +00:00
Andrew Kushnir 3fa7b2b136 refactor(common): convert scripts within packages/common to relative imports (#60623)
This commit updates scripts within `packages/common` to relative imports as a prep work to the upcoming infra updates.

PR Close #60623
2025-04-01 15:58:51 +00:00
Alex Rickabaugh 57a240b07e refactor(core): support an opt-in sync version of toObservable (#60640)
This commit adds a flag `forceSyncFirstEmit` which opts in to the pending
new behavior for `toObservable`, which emits the first value synchronously.
This flag is only really meant for use during a short migration period
while we update g3, and is not meant for prolonged usage. As a result, it's
marked deprecated.

PR Close #60640
2025-04-01 15:56:39 +00:00
Andrew Kushnir d025f3769f refactor(router): re-export the RouterTestingModule symbols (#60557)
This commit re-exports the symbols that are exposed by the `RouterTestingModule` (which re-exports
the symbols from the `RouterModule`. These re-exports are needed for the Angular compiler
to overcome its limitation (on the consumer side) of not knowing where to import import
symbols when relative imports are used within the package.

PR Close #60557
2025-04-01 14:54:05 +00:00
Andrew Kushnir 6d3f5752f2 refactor(router): switching to relative imports within the router package (#60557)
This commit updates scripts within `packages/router` to relative imports as a prep work to the upcoming infra updates.

PR Close #60557
2025-04-01 14:54:05 +00:00
Angular Robot 5d013e20a4 build: update cross-repo angular dependencies (#60671)
See associated pull request for more information.

PR Close #60671
2025-04-01 14:50:32 +00:00
Enea Jahollari 5db7e4cabb refactor(core): improve the messaging on effect manualCleanup option (#60426)
We always needs to pass an injector to an effect if it's used outside the injection context, even when manualCleanup option is true.

PR Close #60426
2025-04-01 14:07:03 +00:00
Andrew Scott a5e8294376 refactor(router): Update StateManager base class with common concrete implementations (#60617)
This commit updates the `StateManager` base class to contain common
concrete implementations that would be the same regardless of whether
the state manager is backed by the browser history API or the Navigation
API.

PR Close #60617
2025-04-01 14:05:43 +00:00
arturovt 2fe8f1a9de refactor(core): drop component factory error in production (#60601)
Drops component factory error in production. Couldn't capture it before because of `throw Error` (without `new`).

PR Close #60601
2025-04-01 13:12:34 +00:00
Kristiyan Kostadinov accc65c2c9 refactor(migrations): add a migration to move DOCUMENT imports (#60663)
Adds a migration that moves imports of `DOCUMENT` from `common` to `core`.

PR Close #60663
2025-04-01 12:48:06 +00:00
Kristiyan Kostadinov 7ccec1494f feat(core): move DOCUMENT token into core (#60663)
Moves the `DOCUMENT` token from `common` into `core` since it's relevant for lots of SSR use cases and users shouldn't have to install `common` for it. The token is still exported through `common` for backwards compatibility.

PR Close #60663
2025-04-01 12:48:06 +00:00
Angular Robot 4f5216e8fe build: update all non-major dependencies (#60659)
See associated pull request for more information.

PR Close #60659
2025-04-01 12:23:08 +00:00
Angular Robot bf4b42f9cd build: update cross-repo angular dependencies (#60661)
See associated pull request for more information.

PR Close #60661
2025-04-01 12:22:35 +00:00
Jessica Janiuk d5a8a1c524 Revert "refactor(core): add ApplicationRef.prototype.bootstrapImpl with an injector parameter (#60622)" (#60669)
This reverts commit 7cb8639da9.

PR Close #60669
2025-04-01 12:18:52 +00:00
Doug Parker 7cb8639da9 refactor(core): add ApplicationRef.prototype.bootstrapImpl with an injector parameter (#60622)
This allows any components individually bootstrapped to inherit from a unique `Injector`. This is useful when bootstrapping multiple root components with different providers.

For now, the function is private while we explore potential designs to consolidate it with the existing `ApplicationRef.prototype.bootstrap` method.

PR Close #60622
2025-04-01 12:01:00 +00:00
Paul Gschwendtner 5eccf3a5e5 fix(animations): add missing peer dependency on @angular/common (#60660)
As of
https://github.com/angular/angular/commit/1c4a3677eb4140435d27c0c873f719b7d8cdce58#diff-64131f78c9ae21421dc277debf9c8a16705a90fa649ddf580da3db434c295b11R7-R8,
the animations package has a dependency on `@angular/common`. This
commit adds this dependency to the `package.json`— as otherwise pnpm
strict builds will fail.

PR Close #60660
2025-04-01 11:59:49 +00:00
Andrew Kushnir 4f458a825d refactor(compiler-cli): convert scripts within packages/compiler-cli to relative imports (#60625)
This commit updates scripts within `packages/compiler-cli` to relative imports as a prep work to the upcoming infra updates.

PR Close #60625
2025-04-01 11:57:53 +00:00
Andrew Kushnir c702e8af0b refactor(compiler): convert scripts within packages/compiler to relative imports (#60625)
This commit updates scripts within `packages/compiler` to relative imports as a prep work to the upcoming infra updates.

PR Close #60625
2025-04-01 11:57:53 +00:00
Matt Turco a4bad8d361 feat(core): export signalGetFn from signal primitives (#60497)
This updates `createSignal` to use `signalGetFn` to define the signal getter and exports `signalGetFn` from the shared signal primitives.

PR Close #60497
2025-03-31 22:24:21 +00:00
Andrew Scott ea62a4f317 fix(language-service): Update adapter to log instead of throw errors (#60651)
This prevents errors from being thrown from the adapters. Throwing errors
in the language service causes the extension to crash. Repeated errors
will permanently break the extension.

fixes https://github.com/angular/vscode-ng-language-service/issues/2166

PR Close #60651
2025-03-31 21:36:34 +00:00
Vincent d29adcc0b7 refactor(core): Make unsupported styling type error message clearer (#59563)
The previous message would sound like a full sentence when using a signal without `()` (Example: Unsupported styling type function: [Input Signal: neutral]). The new formatting makes it a bit more obvious that the type itself is the problem.

PR Close #59563
2025-03-31 21:31:42 +00:00
Angular Robot 97556e6f64 build: update io_bazel_rules_sass digest to b80aeb7 (#60653)
See associated pull request for more information.

PR Close #60653
2025-03-31 21:24:49 +00:00
Andrew Kushnir 1fed7dc5a7 refactor(router): drop special handling of the OutletInjector (#58351)
This commit updates the OutletInjector and related code to avoid special handling of that injector. The main code that had special handling was refactored to no longer require is in https://github.com/angular/angular/pull/56763, this commit completes the cleanup.

PR Close #58351
2025-03-31 20:46:01 +00:00
Jessica Janiuk 3734cc690e docs: fix missing file header (#60649)
PR Close #60649
2025-03-31 20:42:23 +00:00
Angular Robot 79d502fb09 docs: update Angular CLI help [main] (#60647)
Updated Angular CLI help contents.

PR Close #60647
2025-03-31 20:33:10 +00:00
Matthieu Riegler 51c303a45c refactor(core): remove TODOs referencing #24571 (#60648)
Fixing those todos are now mostly breaking changes.
The situation is "good" as is.

PR Close #60648
2025-03-31 20:24:29 +00:00
Michael van der Luit 4e478af90f docs(docs-infra): add search via queryparam all adev routes (#57567)
add search via a queryparam (?search=query) on all adev routes

PR Close #57567
2025-03-31 20:17:19 +00:00
Sheik Althaf f7a0b8eede refactor(docs-infra): migrate adev to signal-based queries (#58646)
Used migration schametic to migrate to signal based queries and little manual migration where setter is used

PR Close #58646
2025-03-31 20:16:39 +00:00
Ngnintedem3004 ddb78cab69 docs: Update code snippet visible lines (#60419)
Updates the relevant code snippet visible lines to be accurate.

PR Close #60419
2025-03-31 20:16:02 +00:00
Vlad Boisa 302cb83d85 docs: remove todo comment (#59928)
Removes outdated todo comment

PR Close #59928
2025-03-31 19:57:56 +00:00
Andrew Kushnir be7c8d4fc6 refactor(forms): convert scripts within packages/forms to relative imports (#60624)
This commit updates scripts within `packages/forms` to relative imports as a prep work to the upcoming infra updates.

PR Close #60624
2025-03-31 19:22:09 +00:00
Angular Robot 3767429e9f build: update cross-repo angular dependencies (#60644)
See associated pull request for more information.

PR Close #60644
2025-03-31 18:26:23 +00:00
arturovt 1e697f3860 refactor(platform-browser): remove empty deps lists (#60312)
Removes empty `deps` lists in Platform-Browser providers.

PR Close #60312
2025-03-31 18:09:07 +00:00
arturovt 5317979738 refactor(common): drop error messages in production (#60415)
Drops more error messages in production.

PR Close #60415
2025-03-31 18:08:37 +00:00
Alex Rickabaugh 43cbc58254 fix(core): remove forceRoot flag for effects (#60535)
This flag is effectively unused in Angular code that we've seen, and is only
serving to complicate the mental model of effects. It could be reintroduced
if needed.

PR Close #60535
2025-03-31 18:08:07 +00:00
Doug Parker 8b5ba62f63 release: bump Angular DevTools version to 1.0.27 (#60642)
PR Close #60642
2025-03-31 17:50:20 +00:00
Angular Robot e5876c5ff6 build: update angular/dev-infra digest to a9c1c54 (#60639)
See associated pull request for more information.

PR Close #60639
2025-03-31 17:32:35 +00:00
AleksanderBodurri c5d841a7a5 fix(devtools): catch firefox non-top level frame error case when using utilities APIs (#60430)
Previously the `frameUrl` option in `chrome.devtools.inspectedWindow.eval` would throw errors when used in Firefox, preventing inspect source functionality for firefox users even if they don't need to target a particular frame on the page (they are on the top level frame with Angular DevTools).

Now this behaviour is as follows:

Firefox user that has the top level frame selected -> DevTools inspect functionality works as expected.

Firefox user that has a non-top level frame selected -> DevTools now renders a snackbar message informing the user of the limitation.

PR Close #60430
2025-03-31 17:09:56 +00:00
EriksonBahr a7d1293f75 fix: step 6 tutorial docs (#60630)
PR Close #60630
2025-03-31 17:04:35 +00:00
hawkgs 8b529debf9 refactor(devtools): fix firefox breadcrumbs (#60552)
Expand the breadcrumbs container to fit the directive explorer width and remove the scrollbar.

PR Close #60552
2025-03-31 16:56:55 +00:00
Andrew Kushnir 599c45c380 build: update lock files for integration test apps (#60594)
This commit updates yarn.lock files for integration test apps.

PR Close #60594
2025-03-31 16:39:14 +00:00
Andrew Kushnir 8e3c40a0a4 refactor(core): drop unused deps for integration apps (#60594)
This commit drops unused deps from the `packages.json` files of various integration test apps.

PR Close #60594
2025-03-31 16:39:14 +00:00
Andrew Kushnir d034d52ac6 ci: moving integration tests into a separate GH action (#60594)
This commit extracts integration tests from the `test` CI job into a separate GH job (to run in parallel).

PR Close #60594
2025-03-31 16:39:14 +00:00
Andrew Kushnir 13c819bad2 test(core): remove obsolete integration tests (#60594)
This commit removes a number of obsolete integration tests and also removes some e2e tests for a few remianing apps, since they are not adding value, but cause extra time to spend on CI.

PR Close #60594
2025-03-31 16:39:14 +00:00
Angular Robot e50a56b11f build: update cross-repo angular dependencies (#60638)
See associated pull request for more information.

PR Close #60638
2025-03-31 16:35:45 +00:00
Angular Robot 52dfce6839 build: lock file maintenance (#60632)
See associated pull request for more information.

PR Close #60632
2025-03-31 14:42:27 +00:00
Kristiyan Kostadinov 9c106f4401 refactor(core): introduce domProperty instruction (#60608)
Renames the `hostProperty` instruction to `domProperty` since it's not really host-specific and we can use it for other DOM-specific operations in the future.

PR Close #60608
2025-03-31 13:15:19 +00:00
Kristiyan Kostadinov 8562667b0e refactor(core): separate out DOM logic from property (#60608)
Includes the following moves.
* Moves the DOM-specific logic from `elementPropertyInternal` into a separate function so we can reuse it.
* Uses the DOM-specific code for the `hostProperty` instruction.
* Removes the `nativeOnly` parameter from `elementPropertyInternal`.
* Renames `elementPropertyInternal` to `setPropertyAndInputs` so it's a bit more clear what the function is doing.

PR Close #60608
2025-03-31 13:15:19 +00:00
Elderov, Ali 8144769ad8 docs: fix private modifier for the injected service (#60619)
PR Close #60619
2025-03-31 13:13:37 +00:00
Colum Ferry a082a3ecf2 docs: update links for angular rspack to correct locations (#60634)
PR Close #60634
2025-03-31 13:12:13 +00:00
Jessica Janiuk 005ad65b1f fix(core): prevent omission of deferred pipes in full compilation (#60571)
This prevents a bug where pipes would be excluded from defer dependency generation.

PR Close #60571
2025-03-31 13:11:12 +00:00
Andrew Kushnir cbd6ec8c6a build: remove obsolete bundling test apps (#60591)
This commit removes a few bundling test apps that do not provide any value, but require time on CI and during local development to update golden files.

The functionality that was tested in those apps is covered by various other tests that we have in a repository (either in the same `packages/core/test/bundling` folder or in other unit/integration tests).

PR Close #60591
2025-03-28 18:45:31 +00:00
Jessica Janiuk d15fda3e03 Revert "refactor(core): allow multiple DI profilers (#60562)" (#60611)
This reverts commit b21c6e5ac5.

PR Close #60611
2025-03-28 17:25:43 +00:00
Matthieu Riegler e40b5c9ebd refactor(core): run the control flow migration during ng update (#60492)
The migration had to be run manually before this change. It is now part of the update process when migrating to v20.

PR Close #60492
2025-03-28 15:46:41 +00:00
Matthieu Riegler b407157ee8 refactor(core): Deprecate the structural directives ngIf/ngFor/ngSwitch. (#60492)
Note: This is not a deprecation of structural directives, this only about  `ngIf`/`ngFor`/`ngSwitch`.

DEPRECATED: `ngIf`/`ngFor`/`ngSwitch` are deprecated. Use the control flow blocks instead (`@for`/`@if`/`@switch`).

PR Close #60492
2025-03-28 15:46:41 +00:00
Andrew Kushnir 152261cd34 refactor(core): produce a message about @defer behavior when HMR is enabled (#60533)
When the HMR is enabled in Angular, all `@defer` block dependencies are loaded
eagerly, instead of waiting for configured trigger conditions. From the DX perspective,
it might be seen as an issue when all dependencies are being loaded eagerly. This commit
adds a logic to produce a message into the console to provide more info for developers.

PR Close #60533
2025-03-28 15:00:32 +00:00
Pawel Kozlowski b21c6e5ac5 refactor(core): allow multiple DI profilers (#60562)
This commit changes the DI profiler infrastructure to
allow multiple profilers running at the same time.

PR Close #60562
2025-03-28 13:36:10 +00:00
Matthieu Riegler bae7b75ff5 refactor(core): retrieve the jsActionMap only once. (#60587)
Before the change, the map was pull on every loop execution.

PR Close #60587
2025-03-28 13:35:28 +00:00
Kristiyan Kostadinov 0c53970aeb fix(migrations): handle shorthand assignments in super call (#60602)
Fixes that the logic which checks whether a parameter is used inside a `super` call wasn't accounting for shorthand assignments.

PR Close #60602
2025-03-28 13:34:36 +00:00
Kristiyan Kostadinov 3ff48b6467 fix(migrations): inject migration not handling super parameter referenced via this (#60602)
The inject migration has some logic that treats parameters referenced directly inside of `super` differently. This logic didn't account for the fact that the parameters could be inside of inline functions which have less strict access requirements.

PR Close #60602
2025-03-28 13:34:36 +00:00
arturovt 7c971566ad refactor(core): calculate hasHttpTransferCacheOptions later (#60605)
Prior to this commit, `hasHttpTransferCacheOptions` was calculated immediately after the `featuresKind` set was declared, which was always defaulted to `false`.

PR Close #60605
2025-03-28 13:33:57 +00:00
Lukas Spirig ff98ccb193 feat(router): support custom elements for RouterLink (#60290)
PR Close #60290
2025-03-28 12:16:09 +00:00
Andrew Scott 1226eaad51 fix(router): Add missing types to transition (#60307)
The 'types' property was added recently and is available in all browsers that support view transitions

fixes #60285

PR Close #60307
2025-03-28 11:51:06 +00:00
Andrew Scott 0142ae1c8e refactor(router): Update tests to not use deprecated string tokens (#60378)
This replaces string tokens in the router tests with functional guads.

PR Close #60378
2025-03-28 11:50:11 +00:00
Andrew Scott c57951d58f fix(router): Remove 'any' type from route guards (#60378)
This commit removes `'any'` from the type union for router guards and
replaces it with 'string', which will eventually also be removed. This
change allows TypeScript to infer the parameter types of functions when
using functional guards and enables stricter type-checking to ensure the
guard array contains valid values.

BREAKING CHANGE: The guards arrays on `Route` no longer include `any` in
the type union. The union includes functions for the functional guards
as well as a type matching `Injector.get`: `ProviderToken<T>|string`.
Note that string is still deprecated on both the route guards and
`Injector.get`.

PR Close #60378
2025-03-28 11:50:11 +00:00
Angular Robot 0fedf2cf80 build: update cross-repo angular dependencies (#60553)
See associated pull request for more information.

PR Close #60553
2025-03-28 02:19:16 +00:00
Angular Robot 0b34c58f5a build: lock file maintenance (#60526)
See associated pull request for more information.

PR Close #60526
2025-03-27 23:12:33 +00:00
Andrew Scott 5948cd03c5 fix(compiler-cli): Produce fatal diagnostic on duplicate decorated properties (#60376)
This prevents the compilation and language service from crashing.

fixes https://github.com/angular/vscode-ng-language-service/issues/2091

PR Close #60376
2025-03-27 20:26:42 +00:00
Doug Parker de5c891404 refactor(devtools): display Wiz non-prop data as "State" (#60475)
This is the more common term for Wiz developers to reduce confusion between Wiz "props" and standard JS "properties".

PR Close #60475
2025-03-27 20:26:12 +00:00
Doug Parker 96f36d62c8 refactor(devtools): use ng.getDirectiveMetadata for component name (#60475)
This reads the component name from `ng.getDirectiveMetadata`.

PR Close #60475
2025-03-27 20:26:12 +00:00
Doug Parker d639a8d1f9 refactor(devtools): display directive metadata from Wiz and ACX (#60475)
This updates the DevTools protocol to send Wiz/ACX metadata in addition to Angular metadata. Fortunately we don't need to worry about backwards compatibility here (`framework` is required for example), but the design roughly mirrors `DirectiveDebugMetadata` in `@angular/core`.

Beyond that, this is mostly plumbing through an extra data slice in the form of `props` provided by Wiz. An earlier version implemented `events` as their own slice as well, but was removed as there is currently no generic way to disambiguate events from any other form of callback passed in as a prop. Instead, event callbacks are visualized as functions under the "Props" category.

Working with `DirectiveMetadata` as a union is unfortunately a bit annoying since it requires casting to more specific `{Angular,Acx,Wiz}DirectiveMetadata` types for TS to allow property access, even when the properties are optional anyways.

This commit is mostly for adding Wiz, but does add a bit of ACX functionality which is not fully tested.

PR Close #60475
2025-03-27 20:26:12 +00:00
Doug Parker ebf6516190 refactor(devtools): make component-only properties on DirectiveMetadata optional (#60475)
This type was incorrect, as only components have `encapsulation` and `onPush` values. `ng.getDirectiveMetadata` does not return these properties for directive inputs.

Unfortunately the `| Partial<AngularComponentDebugMetadata>` is necessary to reference these properties or else TypeScript will reject their usage.

PR Close #60475
2025-03-27 20:26:12 +00:00
Doug Parker ab9dd73a92 refactor(devtools): removes unused classes (#60475)
These `cy-*` classes are not referenced in any styles and appear to be unused.

PR Close #60475
2025-03-27 20:26:12 +00:00
Doug Parker 61ff42a263 refactor(devtools): remove Props suffix from DirectivePropertyResolver names (#60475)
This suffix will be confusing as we introduce new variants for Wiz in particular.

PR Close #60475
2025-03-27 20:26:12 +00:00
Doug Parker d47cf58f10 refactor(core): update ng.getDirectiveMetadata to support Wiz and ACX (#60475)
This allows `ng.getDirectiveMetadata` to be implemented by Wiz and ACX with subtly different shapes to match the nuances of those frameworks.

Existing usage of `{Component,Directive}DebugMetadata` was moved over to `Angular{Component,Directive}DebugMetadata` as appropriate, since the implementation of `ng` in `@angular/core` is specific to Angular. Only the types support Wiz and ACX.

I opted to merge `ComponentDebugMetadata` and `DirectiveDebugMetadata` into a single type of all the frameworks including both components and directives (recall that components extend directives). The reasoning for this is because Wiz does not support directives (you can kind of think of "Wiz Directive" as an abstract class extended by "Wiz Components"). I felt that a `DirectiveDebugMetadata` containing only Angular and ACX types would be a bit of a trap and lead to bugs when used. It's safer to just have the single type containing all the possible results from `ng.getDirectiveMetadata`.

I also chose to leave the `ng` type as is internally, since `@angular/core` implements a specific concrete version of it narrowed to Angular types. Separately I defined an expanded `FrameworkAgnosticGlobalUtils` which redefines `ng.getDirectiveMetadata` to include Wiz and ACX. We want this type to exist in the Angular GitHub repo so it can be referenced as a common primitive across all three frameworks. This is sufficient for now, however longer term we will likely want to actually manually define the function types in this framework-agnostic interface and make Angular's version properly implement it rather than extend and overwrite Angular's type.

PR Close #60475
2025-03-27 20:26:12 +00:00
Benjamin Pabst 765ba1e181 fix(core): check ngDevMode for undefined (#60565)
This adds a check to "toSignal" whether ngDevMode is not undefined as this can happen for some MFE applications.

PR Close #60565
2025-03-27 20:25:40 +00:00
Kristiyan Kostadinov e6d2afbfb9 fix(compiler): throw for invalid "as" expression in if block (#60580)
Adds some validation that the "as" expression in an `@if` block is valid.

Fixes #59939.

PR Close #60580
2025-03-27 20:24:58 +00:00
Ryan Russell 0cd7d3bdf0 fix(core): preserve comments in internal inject migration (#60588)
The internal-only combineMemberInitializers option
for the inject migration sometimes dropped the
doc comments from the members.

PR Close #60588
2025-03-27 20:24:22 +00:00
Pawel Kozlowski 76c60a609f refactor(core): move signal toString to primitives (#60365)
This change pushes the toString implementation of signal getters
down to the primitives package so it can be shared with other
frameworks.

Closes #59990

PR Close #60365
2025-03-27 19:43:19 +00:00
iteriani 4a107ed7af refactor(core): Return NOT_FOUND for retrieve instead of null (#60358)
This fits within the spec of the retrieve.

PR Close #60358
2025-03-27 19:39:59 +00:00
Angular Robot 640727434c build: update dependency firebase-tools to v14 (#60593)
See associated pull request for more information.

PR Close #60593
2025-03-27 19:36:35 +00:00
Shashwat Pathak 88119fac10 docs: update description for AfterRenderPhase.EarlyRead (#60527)
PR Close #60527
2025-03-27 18:33:23 +00:00
Andrew Kushnir 5c0335754a refactor(platform-browser): switching to relative imports within the platform-browser package (#60559)
This commit updates scripts within `packages/platform-browser` to relative imports as a prep work to the upcoming infra updates.

PR Close #60559
2025-03-27 18:31:52 +00:00
Andrew Kushnir 4923400791 refactor(platform-browser-dynamic): switching to relative imports within the platform-browser-dynamic package (#60559)
This commit updates scripts within `packages/platform-browser-dynamic` to relative imports as a prep work to the upcoming infra updates.

PR Close #60559
2025-03-27 18:31:52 +00:00
Andrew Kushnir f773e08ee5 refactor(platform-server): switching to relative imports within the platform-server package (#60559)
This commit updates scripts within `packages/platform-server` to relative imports as a prep work to the upcoming infra updates.

PR Close #60559
2025-03-27 18:31:51 +00:00
Andrew Kushnir 30a61f12a7 refactor(core): update public API golden files (#60232)
This commit updates public API golden files as a result of switching to the relative import paths within the `@angular/core` package.

PR Close #60232
2025-03-27 18:29:35 +00:00
Andrew Kushnir e5cc624b87 refactor(core): convert scripts within packages/core/testing to relative imports (#60232)
This commit updates scripts within `packages/core/testing` to relative imports as a prep work to the upcoming infra updates.

PR Close #60232
2025-03-27 18:29:35 +00:00
Andrew Kushnir 33c24624be refactor(core): convert scripts within packages/core/rxjs-interop to relative imports (#60232)
This commit updates scripts within `packages/core/rxjs-interop` to relative imports as a prep work to the upcoming infra updates.

PR Close #60232
2025-03-27 18:29:35 +00:00
Andrew Kushnir 006a14da89 refactor(animations): convert scripts within packages/animations to relative imports (#60230)
This commit updates scripts within `packages/animations` to relative imports as a prep work to the upcoming infra updates.

PR Close #60230
2025-03-27 18:28:01 +00:00
Andrew Kushnir cfda43b97d refactor(benchpress): convert scripts within packages/benchpress to relative imports (#60230)
This commit updates scripts within `packages/benchpress` to relative imports as a prep work to the upcoming infra updates.

PR Close #60230
2025-03-27 18:28:00 +00:00
Jessica Janiuk fd5c981a29 fix(core): fix regexp for event types (#60592)
This regexp accidentally worked. It was splitting by individual character and putting a pipe in rather than splitting by set of event types

PR Close #60592
2025-03-27 18:27:03 +00:00
arturovt f7385b4140 refactor(service-worker): drop fromEvent (#60424)
In this commit, we remove `fromEvent` and replace it with a manually created observable to import fewer symbols from RxJS. Some codebases may not use `fromEvent` at all, but using it in a single place would still include it in the initial bundle.

PR Close #60424
2025-03-27 18:17:21 +00:00
Joey Perrott e400424563 ci: update bazel RBE setup on CI and use trusted build configuration for upstream CI runs (#60589)
Update to use the latest bazel/configure-remote action from dev-infra and set up trusted builds
for CI runs from upstream branches.

PR Close #60589
2025-03-27 18:16:09 +00:00
Andrew Kushnir a26904fffe build: add build step to the public API extractor script (#60578)
This commit adds a step where we build all found targets in parallel, which speeds up the process of completing public API extractor test/update.

PR Close #60578
2025-03-27 18:13:40 +00:00
Andrew Kushnir a16ba58e2b build: add build step to the symbol extractor script (#60573)
This commit adds a step where we build all found targets in parallel, which speeds up the process of completing symbol extractor test/update.

PR Close #60573
2025-03-27 18:13:04 +00:00
Alan Agius 9e8a1c933f refactor(docs-infra): minor clean up in testing helpers (#60581)
Modernize code of testing-helper

PR Close #60581
2025-03-27 18:12:31 +00:00
Alan Agius d4e73f0fd8 refactor(docs-infra): remove redundant overrides in FakeWebContainer (#60581)
This is required to fix
```
adev/shared-docs/testing/testing-helper.ts:100:12 - error TS2416: Property 'on' in type 'FakeWebContainer' is not assignable to the same property in base type 'WebContainer'.
  Type '{ (event: "port", listener: PortListener): Unsubscribe; (event: "server-ready", listener: ServerReadyListener): Unsubscribe; (event: "error", listener: ErrorListener): Unsubscribe; (event: "preview-message", listener: PreviewMessageListener): Unsubscribe; }' is not assignable to type '{ (event: "port", listener: PortListener): Unsubscribe; (event: "server-ready", listener: ServerReadyListener): Unsubscribe; (event: "preview-message", listener: PreviewMessageListener): Unsubscribe; (event: "error", listener: ErrorListener): Unsubscribe; (event: "xdg-open", listener: OpenListener): Unsubscribe; (ev...'.
    Types of parameters 'event' and 'event' are incompatible.
      Type '"xdg-open"' is not assignable to type '"port"'.

100   override on(event: 'server-ready', listener: ServerReadyListener): Unsubscribe;
               ~~
```

See: https://github.com/angular/angular/actions/runs/14098789522/job/39491059550?pr=60526

PR Close #60581
2025-03-27 18:12:31 +00:00
hawkgs b938f0ce94 docs(docs-infra): fix navigation component UI bugs (#60583)
- Detachment of the navigation from the left window border
- Odd horizontal scroll when there is a URL fragment and the viewport width <900px

PR Close #60583
2025-03-27 18:11:38 +00:00
Manimaran T 79888a54a3 docs(docs-infra): fix correct HTML tag typo in welcome message (#60569)
PR Close #60569
2025-03-27 18:11:02 +00:00
hawkgs 77b5eed024 refactor(devtools): extract and organize colors into themes (#60374)
Extract all colors from the stylesheets, reduce their number by merging the similar ones and organize them into themes represented by CSS variables.

PR Close #60374
2025-03-27 18:10:28 +00:00
Gerome Grignon c65259c8a5 docs: lint code examples (#59979)
PR Close #59979
2025-03-27 18:09:45 +00:00
Gerome Grignon 2468bd7282 docs: migrate reactive forms to standalone (#59979)
PR Close #59979
2025-03-27 18:09:44 +00:00
Gerome Grignon bd4cffe1ae docs: migrate reactive forms to standalone (#59979)
PR Close #59979
2025-03-27 18:09:44 +00:00
Joey Perrott 98bf4d5afd build: disable remote upload of local action results to RBE cache (#60568)
disable remote upload for local actions

PR Close #60568
2025-03-26 20:48:16 -07:00
hawkgs 8559c794a8 docs(docs-infra): fix CSS media queries boundaries (#60564)
Make lower boundaries exclusive, so we avoid conflicts with the upper boundaries.

PR Close #60564
2025-03-26 20:47:32 -07:00
Kristiyan Kostadinov 1e6faad479 fix(compiler-cli): correctly parse event name in HostListener (#60561)
Fixes that we weren't accounting for targeted events when creating the AST for `@HostListener`-decorated members.

PR Close #60561
2025-03-26 20:46:45 -07:00
Kristiyan Kostadinov 7e03af898e fix(compiler-cli): set correct target when type checking events (#60561)
Currently the TCB generation code doesn't handle targeted events (e.g. `(document:click)`) which ends up binding to the current element and can have type inference implications. These changes take the event's `target` into account.

PR Close #60561
2025-03-26 20:46:45 -07:00
Kristiyan Kostadinov ec8c8f827e refactor(compiler): allow name parsing logic to be reused (#60561)
Moves the logic for parsing event names out into methods on the `BindingParser` so we don't have to duplicate it. Also updates the types to more accurately represent the runtime value.

PR Close #60561
2025-03-26 20:46:45 -07:00
Paul Gschwendtner 9f18c7cc74 fix(compiler-cli): support relative imports to symbols outside rootDir (#60555)
By default, the compiler-cli uses the relative import strategy when
there is no `rootDir` or `rootDirs`. This is expected as everything is
assumed to be somehow reachable through relative imports.

With `rootDirs` that allow for a "virtual file system"-like environment,
the compiler is not necessarily able to always construct proper relative
imports. The compiler includes the `LogicalProjectStrategy` for this
reason. This strategy is able to respect `rootDirs` to construct
relative paths when possible.

This logic currently accidentally triggers when there is a `rootDir`
set. This option is not to be confused with the virtual directory
option called `rootDirs`. The compiler currently confuses this and
accidentally enters this mode when there is just a `rootDir`— breaking
in monorepos that imports can point outside the `rootDir` to e.g. other
compilation unit's `.d.ts` (which is valid; just not `.ts` sources can
live outside the root dir).

This is necessary for our Bazel toolchain migration.

PR Close #60555
2025-03-26 20:45:55 -07:00
Jessica Janiuk 309f269e91 docs: add more details about event replay (#60554)
PR Close #60554
2025-03-26 20:45:04 -07:00
Kristiyan Kostadinov da784a9445 refactor(core): add type to disambiguate event listeners (#60549)
Adds a utility type to make it easier to distinguish wrapped and unwrapped listeners. Also adds a type for event callbacks so we don't need to repeat it everywhere.

PR Close #60549
2025-03-26 20:44:31 -07:00
Kristiyan Kostadinov 55ac384d6f refactor(core): consolidate listener cleanup storage (#60549)
We were duplicating the logic for storing listener-related cleanup functions in a couple of places. These changes consolidate it into one function.

PR Close #60549
2025-03-26 20:44:31 -07:00
Kristiyan Kostadinov 277aa76876 refactor(core): simplify listener signature (#60549)
Reduces the number of parameters that need to be passed into listeners.

PR Close #60549
2025-03-26 20:44:31 -07:00
Kristiyan Kostadinov acf84db778 refactor(core): separate out DOM listener logic (#60549)
Moves the logic for listening to a DOM event out into a separate function for easier reuse.

PR Close #60549
2025-03-26 20:44:31 -07:00
Kristiyan Kostadinov defefae4b5 refactor(core): remove special-casing from listener wrapping (#60549)
We had a special case in the `wrapListener` function that would return the original function if it's invoked with `Function`. This was added for `DebugNode.triggerEventHandler`, but isn't necessary anymore.

PR Close #60549
2025-03-26 20:44:31 -07:00
Pawel Kozlowski 64f6fc0095 refactor(core): allow multiple profilers (#60548)
This commit changes the profiler infrastructure to
allow multiple profilers running at the same time.

PR Close #60548
2025-03-26 20:44:03 -07:00
Alan Agius fe9b79b615 feat(core): update Node.js version support (#60545)
Node.js v18 will reach End-of-Life on April 30, 2025, and will no longer be supported in Angular v20.
Node.js Release Schedule: https://github.com/nodejs/release#release-schedule

BREAKING CHANGE:
- Angular no longer supports Node.js v18.
- Node.js versions 22.0 to 22.10 are also no longer supported.

Before upgrading to Angular v20, ensure the Node.js version is at least 20.11.1.
For the full list of supported versions, visit: https://angular.dev/reference/versions

PR Close #60545
2025-03-26 20:42:16 -07:00
Alan Agius f845fbeb58 build: update development Node.js version to 22.14.0 and auto-update (#60545)
The version of Node.js used for development and CI jobs is now set to the active LTS version's latest minor and patch. Renovate is also now configured to update the minor and patch versions.

PR Close #60545
2025-03-26 20:42:16 -07:00
Angular Robot 384fa959ac build: update babel dependencies to v7.27.0 (#60544)
See associated pull request for more information.

PR Close #60544
2025-03-26 20:41:38 -07:00
Angular Robot 14d27eeb67 build: update scorecard action dependencies (#60543)
See associated pull request for more information.

PR Close #60543
2025-03-26 20:40:59 -07:00
Angular Robot f9993e4fbe build: update all non-major dependencies (#60542)
See associated pull request for more information.

PR Close #60542
2025-03-26 20:40:29 -07:00
Andrew Kushnir 88ae6517a2 refactor(language-service): convert scripts within packages/language-service to relative imports (#60540)
This commit updates scripts within `packages/language-service` to relative imports as a prep work to the upcoming infra updates.

PR Close #60540
2025-03-26 20:40:01 -07:00
Andrew Kushnir 6a207ebfb0 refactor(localize): convert scripts within packages/localize to relative imports (#60540)
This commit updates scripts within `packages/localize` to relative imports as a prep work to the upcoming infra updates.

PR Close #60540
2025-03-26 20:40:01 -07:00
hawkgs af67334fe5 ci: add hawkgs to pullapprove (#60536)
Add hawkgs to pullaprove for angular-dev.

PR Close #60536
2025-03-26 20:39:31 -07:00
Matthieu Riegler c6ef75bdea docs(docs-infra): Use AlertSeverityLevel values for alerts (#60532)
PR Close #60532
2025-03-26 20:38:11 -07:00
Kristiyan Kostadinov 8b990a31c3 fix(compiler): error if rawText isn't estimated correctly (#60529)
The `TemplateLiteralElementExpr` has some logic where it tries to estimate the `rawText` if one isn't provided by looking at the node's source span. The problem with this approach is that we have some long-standing issues with our expression AST parser (see https://github.com/angular/angular/pull/60267#discussion_r1986402524) where it might not produce accurate spans if escape sequences are involved. This in turn can lead to unrecoverable errors, because TypeScript will throw an error if the raw string doesn't match the cooked one when constructing a TypeScript AST node.

These changes remove the logic that depends on the source span and relies purely on the secondary fallback that inserts escaped characters manually.

It's also worth noting that the `rawText` doesn't seem to matter much at this point, because the main usage of it is when downlevelling template literals to ES5 which we no longer support.

Fixes #60528.

PR Close #60529
2025-03-26 20:37:31 -07:00
Matthieu Riegler d1510dafdf docs(docs-infra): fix the deferable views tutorials. (#60509)
PR Close #60509
2025-03-26 20:36:27 -07:00
Matthieu Riegler 217f6d96ba refactor(core): run effect cleanup as untracked (#60421)
A effect cleanup should not be considered reactive.

fixes #57757

PR Close #60421
2025-03-26 20:35:45 -07:00
Andrew Kushnir 34393874e6 refactor(upgrade): convert scripts within packages/upgrade to relative imports (#60238)
This commit updates scripts within `packages/upgrade` to relative imports as a prep work to the upcoming infra updates.

PR Close #60238
2025-03-26 20:35:11 -07:00
Andrew Kushnir bc042935d0 refactor(service-worker): convert scripts within packages/service-worker to relative imports (#60238)
This commit updates scripts within `packages/service-worker` to relative imports as a prep work to the upcoming infra updates.

PR Close #60238
2025-03-26 20:35:10 -07:00
Alex Rickabaugh 40bd57646a release: cut the v20.0.0-next.4 release 2025-03-26 20:32:49 -07:00
Alex Rickabaugh 395f6c08b2 docs: release notes for the v19.2.4 release 2025-03-26 20:28:20 -07:00
Andrew Kushnir 6d3849ffc8 refactor(core): updates to golden files (#60227)
This commit updates golden files to include the changes that appeared after changing imports to relative paths.

PR Close #60227
2025-03-25 10:58:00 -07:00
Andrew Kushnir ae047c59c0 refactor(core): convert scripts within packages/core/test to relative imports (#60227)
This commit updates scripts within `packages/core/test` to relative imports as a prep work to the
upcoming infra updates.

PR Close #60227
2025-03-25 10:58:00 -07:00
Andrew Kushnir 3d2263cb1f refactor(core): convert scripts within packages/core/src to relative imports (#60227)
This commit updates scripts within `packages/core/src` to relative imports as a prep work to the upcoming infra updates.

PR Close #60227
2025-03-25 10:58:00 -07:00
Hryhorii (Greg) Avcharov 7499b74d7d docs: fix templates bindings link (#60521)
PR Close #60521
2025-03-24 09:07:29 -07:00
Pawel Kozlowski bf029e4f23 refactor(core): simplify signature of listenToDirectiveOutput (#60514)
We can simplify signature of listenToDirectiveOutput by passing less
arguments (some of them can be derived from already passed arguments).

PR Close #60514
2025-03-24 09:05:50 -07:00
Angular Robot 11994a715b build: update cross-repo angular dependencies (#60511)
See associated pull request for more information.

PR Close #60511
2025-03-24 09:04:36 -07:00
aparzi cf5c61c849 fix(core): fix used templates are not deleted (#60459)
After running the control flow migration, used templates are not deleted.

PR Close #60459
2025-03-24 09:04:05 -07:00
Milo d95d352a8e fix(devtools): show preview content even after expanding node (#60360)
this aligns with Chrome devtools behavior

PR Close #60360
2025-03-24 09:03:21 -07:00
Pawel Kozlowski 997836e858 refactor(core): specify reactive node kind for linked signal (#60451)
This commit adds reactive node kind for linked signal.

PR Close #60451
2025-03-24 07:06:47 -07:00
Matthieu Riegler dcfa8a04f5 docs(docs-infra): disable shared-docs tests. (#60520)
Those tests are currently broken until we bump the angular version (pending release).

PR Close #60520
2025-03-24 06:56:15 +00:00
Jessica Janiuk 13d1c8ab38 fix(core): fixes timing of hydration cleanup on control flow (#60425)
This properly cleans up stale control flow branches in the case
that branches change between server and client at the same
timing as NgIf / NgSwitch.

fixes: #58670
fixes: #60218

PR Close #60425
2025-03-21 14:45:23 -07:00
Jessica Janiuk 58e1d9e39a refactor(compiler): Add conditionalCreate instruction (#60425)
This adds a new instruction for dealing with creating conditionals. It ensures flags are set on the TNode for later identification during hydration.

PR Close #60425
2025-03-21 14:45:23 -07:00
Paul Gschwendtner 115c2f8d38 build: fix linking of cdk/material in devtools and simplify code (#60516)
This commit fixes the linking of CDK/Material which recently broke
because the CDK/Material package now comes with potential shared FESM
chunks; that our current hard-coded, manual linking process doesn't know
about. This ultimately resulted in duplicate code, breaking
Material/CDK.

This commit fixes that.

In addition to the fix, we simplify our linking significantly and reduce
the rather large complexity around linking, or having to specify every
entry-point manually, by linking the full package and putting it into
a different location. This is also what we conceptually are doing in
Angular Material as part of the `rules_js` migration.

PR Close #60516
2025-03-21 14:37:56 -07:00
cexbrayat 7408a1f58b fix(localize): handle @angular/build:karma in ng add (#60513)
`ng add @angular/localize` now also adds the localize polyfill to the configuration of Karma if the `@angular/build:karma` builder is used
(which is the default in Angular CLI v20)

PR Close #60513
2025-03-21 14:37:24 -07:00
Alan Agius 9dbccae47a refactor(docs-infra): remove usage of @angular/platform-browser-dynamic from adev (#60504)
Usage of `@angular/platform-browser-dynamic` is not needed since Angular CLI always inject `@angular/compiler` when running JIT.

PR Close #60504
2025-03-21 14:36:54 -07:00
Paul Gschwendtner 87751c0796 test: ng-modules-importability test should import every module in isolation (#60503)
This will make the test even more useful, as it ensures that we aren't
accidentally relying on the compiler potentially discovering best
guessed modules from other imports that previously were part of the same
file (importing all modules as part of the test).

PR Close #60503
2025-03-21 14:36:27 -07:00
Andrew Temple a3c209bb69 docs: remove link to lazy loading documentation (#60501)
Removes a link that no longer directs users to the expected documentation. Deleting the line is the recommended solution for issue #60500.
PR Close #60501
2025-03-21 14:35:58 -07:00
Matthieu Riegler 1339f06ebe docs(docs-infra): Improve markdown generation for code examples. (#60408)
Markdown requires code blocks (```) to start without white spaces. With this change we ensure that `@example` blocks with leading spaces are well supported.

fixes #60407

PR Close #60408
2025-03-21 14:35:19 -07:00
Miles Malerba 55e9f1ffa2 refactor(compiler-cli): remove unnecessary paren logic for ternaries (#60263)
Removes logic that was explicitly adding parentheses around ternaries
used as the condition of another ternary. Instead we can just rely on
Typescript to add the parentheses if they are needed to make the code
match the structure of the AST.

Also added a note pointing to the issue that currently prevents us from
removing similar logic pertaining to nullish coalescing

PR Close #60263
2025-03-21 14:34:35 -07:00
Matthieu Riegler 9ca2a58157 build: unpatch @angular/build (#60231)
This requires to bump the CLI to v20

PR Close #60231
2025-03-21 14:33:59 -07:00
Angular Robot 9ffeff91ea build: update cross-repo angular dependencies (#60490)
See associated pull request for more information.

PR Close #60490
2025-03-20 15:34:26 -07:00
Alan Agius 70bdb88b0c fix(platform-browser): ensure platformBrowserTesting includes platformBrowser providers (#60480)
Previously, `platformBrowserTesting` did not include any `platformBrowser` providers, causing an inconsistency with `platformBrowserDynamicTesting`.

This update resolves the issue by restructuring platform inheritance to ensure proper provider inclusion:

- `platformCore → platformBrowser → platformBrowserTesting`
- `platformBrowser → platformBrowserDynamic → platformBrowserDynamicTesting`

Now, `platformBrowserTesting` correctly inherits from `platformBrowser`, aligning with the expected behavior.

PR Close #60480
2025-03-20 12:33:12 -07:00
Paul Gschwendtner 6890eab220 test: add integration test to ensure all exported modules can be imported (#60489)
This commit adds a new integration test which will help ensure that all
exported `@NgModule`'s of framework packages can be imported by users
without any errors.

This test is generally useful, but with our upcoming changes with
relative imports, this is a good safety-net. Relative imports could
break re-exported NgModules inside NgModule's. For more details, see:
https://github.com/angular/components/pull/30667

Notably we don't expect any issues for framework package as re-exporting
`@NgModule`'s inside `@NgModule`'s is seemingly a rather rare pattern for
APF libraries (confirmed by Material only having like 4-5 instances).

PR Close #60489
2025-03-20 12:32:36 -07:00
Jessica Janiuk 4b312aeb43 ci: fix over extraction of init symbols in symbol tests (#60493)
This omits including any init_ symbols in the symbol tests that were unnecessary and causing friction.

PR Close #60493
2025-03-20 12:31:34 -07:00
Paul Gschwendtner e0ff321433 build: prepare testing infrastructure for code splitting of core package (#60487)
When we switch to relative imports, shared `.d.ts` chunks can be
generated.

We need to also pull these into our mock virtual FS testing
environments. Notably this does not cause a test slow-down because we
are talking about very few extra `.d.ts` chunk files. In our experiments
before, with no dts bundling, we saw test time increase from e.g.
20seconds to 100seconds. The 20s are still the same locally!

In addition, since code for definitions can now reside in shared `.d.ts`
chunks, the language service tests need to be adjusted in cases where
they assert for code definition locations in `@angular/core`. A new
helper prepares for more code to be moved into arbitrary `.d.ts` files;
we should simply assert the definition comes out of
`node_modules/@angular/core`.

PR Close #60487
2025-03-20 12:30:57 -07:00
Alan Agius a7183d8889 ci: run adev tests before build (#60485)
Since tests run faster than the build, executing them first allows for quicker failure detection, improving efficiency.

PR Close #60485
2025-03-20 12:30:05 -07:00
Alan Agius aab765fa5e build: update cross-repo angular dependencies (#60485)
See associated pull request for more information.

Closes #60474 as a pr takeover

PR Close #60485
2025-03-20 12:30:05 -07:00
Kristiyan Kostadinov 911ad40067 build: fix type checking issues in test code (#60481)
Fixes some type checking issues in our own testing code that weren't showing up, because `strictTemplates` was turned off.

PR Close #60481
2025-03-20 11:55:52 -07:00
Kristiyan Kostadinov b26b0abad6 fix(docs-infra): host binding type issues (#60481)
Resolves typing issues inside host binding in adev.

PR Close #60481
2025-03-20 11:55:52 -07:00
Kristiyan Kostadinov bdd5e20423 fix(forms): resolve host binding type issues (#60481)
Fixes some type issues that are being flagged now that we have type checking of host bindings.

PR Close #60481
2025-03-20 11:55:52 -07:00
Kristiyan Kostadinov 785a1110e6 fix(common): resolve host binding type issues (#60481)
Fixes type issues in the host bindings of `NgOptimizedImage`.

PR Close #60481
2025-03-20 11:55:52 -07:00
Kristiyan Kostadinov e301471342 fix(devtools): fix type checking issues (#60481)
Fixes type checking issues in the dev tools that weren't showing up, because we had `strictTemplates` turned off.

PR Close #60481
2025-03-20 11:55:52 -07:00
Kristiyan Kostadinov 2637a0cdad build: enable strict templates and type checking of host bindings (#60481)
Enables strict templates and type checking of host bindings against our own code.

PR Close #60481
2025-03-20 11:55:52 -07:00
Angular Robot ceb7a9346f build: update actions/upload-artifact digest to ea165f8 (#60466)
See associated pull request for more information.

PR Close #60466
2025-03-20 11:54:42 -07:00
Alan Agius cfca30c757 docs: update ssr docs to use withRoutes API (#60465)
PR Close #60465
2025-03-20 11:54:01 -07:00
Paul Gschwendtner 164bb3f4a3 build: disable RBE for compliance partial goldens (#60473)
We've seen these tests regularly, but somewhat rarely to be
stuck/hanging in the remote execution workers. Since the issue was
reproducable locally (via local RBE environment), we can improve
stability for the team until we resolve this with the RBE team.

PR Close #60473
2025-03-20 07:40:22 +00:00
Angular Robot f901a4c3e3 docs: update Angular CLI help [main] (#60471)
Updated Angular CLI help contents.

PR Close #60471
2025-03-19 20:43:04 +01:00
khalilou88 ee008b6173 docs: add missing word to inheritance docs (#60467)
PR Close #60467
2025-03-19 20:41:52 +01:00
Angular Robot 6061146cf3 build: update cross-repo angular dependencies (#60450)
See associated pull request for more information.

PR Close #60450
2025-03-19 20:37:14 +01:00
Angular Robot 8427a668c3 build: update actions/cache digest to 5a3ec84 (#60468)
See associated pull request for more information.

PR Close #60468
2025-03-19 20:35:34 +01:00
Pawel Kozlowski 2091a27217 release: cut the v20.0.0-next.3 release 2025-03-19 20:31:39 +01:00
Pawel Kozlowski 5c16014244 docs: release notes for the v19.2.3 release 2025-03-19 20:26:28 +01:00
Kristiyan Kostadinov 0362665c54 refactor(core): move more host directive matching logic into feature (#60452)
Moves the logic that tracks host directives into the `ɵɵHostDirectivesFeature` so it can be tree shaken.

PR Close #60452
2025-03-19 19:10:14 +01:00
Alan Agius 5753aa70eb refactor(platform-browser-dynamic): relocate DOMTestComponentRenderer to @angular/platform-browser (#60453)
This commit moves `DOMTestComponentRenderer` to `@angular/platform-browser/testing`, allowing the Angular CLI to eliminate its dependency on `@angular/platform-browser-dynamic`, which would no longer be required for new projects.

PR Close #60453
2025-03-19 19:08:08 +01:00
Kristiyan Kostadinov 29eded6457 fix(compiler-cli): report more accurate diagnostic for invalid import (#60455)
Currently when an incorrect value is in the `imports` array, we highlight the entire array which can be very noisy for large arrays. This comes up semi-regularly (at least for me) when an import is missing.

These changes add some logic that reports a more accurate diagnostic location for the most common case where the `imports` array is static. Non-static arrays will fall back to the current behavior.

PR Close #60455
2025-03-19 19:06:38 +01:00
Kristiyan Kostadinov 2d51a203dc fix(compiler-cli): wrong event name for host listener decorators (#60460)
Fixes that when generating the type checking code `@HostListener`, we were using the method name instead of the event name.

PR Close #60460
2025-03-19 19:05:44 +01:00
Jessica Janiuk c7cacbf523 ci: fix flakey defer test (#60461)
This uses a fake timer scheduler implementation to ensure timer tests do not cause flakiness, similar to the incremental hydration tests.

PR Close #60461
2025-03-19 18:39:38 +01:00
Matthieu Riegler 7e65b9f6c0 docs: fix component metadata inheritance (#60464)
fixes #60422

PR Close #60464
2025-03-19 17:59:48 +01:00
Paul Gschwendtner 3606aabd6b fix(platform-browser-dynamic): ensure compiler is loaded before @angular/common (#60458)
With the recent changes to the APF bundling rules, we turned on
tree-shaking in rollup to support proper code splitting for FESM bundles.

This resulted in Rollup re-ordering imports in the FESM bundles of
`@angular/platform-browser-dynamic`— highlighting that over the past
years, this package "accidentally" resulted in the side-effects of the
compiler registering itself globally.

This continues to be the case, and our changes generally didn't cause
any issues in CLI applications because the CLI explicitly wires up the
compiler (as expected) before `-dynamic` is even loaded. For custom
setup, like Analog, this order change surfaced a breakage because e.g.
`@angular/common` with its JIT decorators of e.g. directives/services
are triggered before the compiler is actually loaded/made available.

This commit fixes this. The explicit imports in practice are a noop
because our FESM bundling doesn't recognize compiler as side-effects
true; but marking the whole -dynamic package as having side-effects;
prevents rollup from swapping the import order. Long-term, we should
look into improving this by teaching `ng_package` that e.g. the compiler
has side-effects; so that the `import @angular/compiler` statement is
not dropped when constructing FESM bundles.

PR Close #60458
2025-03-19 16:54:48 +01:00
Kristiyan Kostadinov 34f0453343 refactor(migrations): add migration for TestBed.get (#60414)
Adds a migration that will move users off the deprecated `TestBed.get` method.

PR Close #60414
2025-03-19 15:52:26 +01:00
Kristiyan Kostadinov 5e209cb560 feat(core): remove TestBed.get (#60414)
`TestBed.get` isn't type safe and has been deprecated for several years now. These changes remove it from the public API and a follow-up change will add an automated migration to `TestBed.inject`.

BREAKING CHANGE:
* `TestBed.get` has been removed. Use `TestBed.inject` instead.

PR Close #60414
2025-03-19 15:52:26 +01:00
Jan Martin b461e06ecb fix(core): catch hydration marker with implicit body tag (#60429)
When the browser parses a valid html5 response like this:

```html
<!-- ... -->
<title>My page</title>
</head>
<!--nghm-->
<app-root></app-root>
<!-- ... -->
```

The resulting DOM will only start adding nodes to the body when it
runs into the first non-header tag. E.g.:

```yml
- head
  - title "My page"
- comment "nghm"
- body
  - app-root
```

This isn't a sign that comments are modified, so it seems worth to
handle it gracefully.

PR Close #60429
2025-03-19 15:51:36 +01:00
Pawel Kozlowski ae28db0f2e refactor(core): share code between ComponentRef and targeted instructions (#60440)
This refactor reorganizes code such that the dynamic bindings logic and
targeted listener instruction can share most of the code.

PR Close #60440
2025-03-19 15:50:48 +01:00
Alan Agius afc1d01f7e build: lock file maintenance (#60456)
See associated pull request for more information.

Closes #60413 as a pr takeover

PR Close #60456
2025-03-19 15:49:26 +01:00
Matthieu Riegler c074680072 ci: prevent renovate to update typescript automatically (#60341)
This is something we usually want to do manually.

PR Close #60341
2025-03-19 15:48:21 +01:00
Miles Malerba bec1610da2 feat(compiler-cli): add extended diagnostic for invalid nullish coalescing (#60279)
The semantics for nullish coalescing (`??`) in Javascript/Typescript
differ slightly from the semantics in Angular templates. Mixing nullish
coalescing with logical and/or without parentheses is an error in
Javascript. This PR adds an extended diagnostic that can be enabled to
treat it as an error in Angular templates as well.

PR Close #60279
2025-03-19 10:21:48 +01:00
Pawel Kozlowski 644d9f3bbd feat(core): mark the toSignal API as stable (#60442)
This commit marks the toSignal API as stable.

PR Close #60442
2025-03-19 08:38:44 +01:00
Jessica Janiuk 3f0f2e65a8 ci: update shared primitives reviewers list (#60447)
This tightens up the list of reviewers for any shared primitives code changes.

PR Close #60447
2025-03-19 08:37:40 +01:00
Matthieu Riegler a1d9e05d7d refactor(dev-infra): disable progressBar test (#60448)
This test often (but inconsitantly) timeouts with
```
Error: Timeout - Async function did not complete within 5000ms (set by jasmine.DEFAULT_TIMEOUT_INTERVAL)
```

We suspect a racing condition within the RouterTestingHarness.
Until this has been investigated, we'll disable this test.

PR Close #60448
2025-03-19 08:36:52 +01:00
Kristiyan Kostadinov 1dba2a89b0 refactor(language-service): enable host binding features (#60433)
Reworks the language service to enable features like quick info and definitions inside host bindings.

**Note:** for the full range of language service features to work, the changes from https://github.com/angular/vscode-ng-language-service/pull/2155 have to be released.

PR Close #60433
2025-03-18 18:15:58 +01:00
Paul Gschwendtner d2a8639b25 refactor: remove peer dependency on core from compiler (#60437)
Note that this is not a public-facing change because the compiler is not
supposed to be used directly. See `public-api-surface.md`

We are changing this because in the current state, for advanced setups
like our Bazel infrastructure in Material, this peer dependency can
result in a cycle. That is because we may decide to link the
`@angular/core` package using the compiler-cli/compiler; while
transitively the compiler has a dependency on core. That's a cycle
(surfacing in Bazel w/ `rules_js`).

Dropping this optional peer dependency is acceptable because `core`,
since recently, also has an optional peer dependency on the compiler.
This one makes more sense and is also more user-facing (people generally
never install the compiler directly).

Notably the compiler does not have any runtime dependency on `core` and
this was purely added for some safety checking. See:
https://github.com/angular/angular/commit/8c171da29f499648273e61cfb5bffaa4278097e5

PR Close #60437
2025-03-18 18:15:07 +01:00
Alan Agius 8e48bc9a82 docs(docs-infra): add support for @example (#60443)
In TSDoc, we currently handle the `@usageNotes` annotation, but this is not a standard TSDoc tag. Instead, the `@example` annotation is the correct standard, which is used in the Angular CLI repo and on the SSR package.

This change ensures that `@example` is treated the same as `@usageNotes` during the transform process and also handle multiple instances of `@example` on the same tag.

PR Close #60443
2025-03-18 18:14:10 +01:00
Matthieu Riegler d1e4be7e25 Revert "docs(docs-infra): temporary removal of core/rxjs-interop dependency (#60234)" (#60395)
This reverts commit fa712aede5.

PR Close #60395
2025-03-18 18:13:20 +01:00
Alan Agius 419784f7a0 docs: update provideClientHydration parameter description (#60432)
PR Close #60432
2025-03-18 18:11:47 +01:00
Vlad Boisa befa0faaef docs: change the broked link (#60436)
Change the wrong path of the link to a working one.
PR Close #60436
2025-03-18 18:09:31 +01:00
Angular Robot d9d050e1c1 docs: update Angular CLI help [main] (#60441)
Updated Angular CLI help contents.

PR Close #60441
2025-03-18 18:07:05 +01:00
Angular Robot 7d3ba1a91b build: update cross-repo angular dependencies (#60445)
See associated pull request for more information.

PR Close #60445
2025-03-18 18:06:19 +01:00
Matt Turco 22d3f0562c feat(core): add hook for producer creation side effects (#60333)
Adds a hook in the same style as `postSignalSetFn` for running side effects when a producer has been created. This hook will be passed the reactive node being created.

PR Close #60333
2025-03-18 15:10:01 +01:00
iteriani 69b688c7d1 refactor(core): Add an additional check for the name field for NotFoundError (#60322)
Inside g3, instanceof checks will fail. Instead, check the name field.

PR Close #60322
2025-03-18 15:05:52 +01:00
Andrew Scott 48974c3cf8 fix(core): remove rejectErrors option encourages uncaught exceptions (#60397)
This commit removes the previously added `rejectErrors` option from
`toSignal` which was meant to create similar behavior to what happens
with unhandled errors in `AsyncPipe`.

This option promotes unhandled exceptions and attaches behaviors that we
do not believe are desirable as an option offered by the framework:

* Unhandled errors that are thrown lose the context of where the error
  ocurred. Throwing the error where the signal is read allows error
  handling to be performed at the signal's usage location
* With this feature, the value of the signal remains set to the initial
  value or the previous successful value coming out of the `Observable`.
  We do not feel this is appropriate implicit behavior but should be an
  explicit choice by the application. Signals are built to represent
  state. When an observable stream is converted to a stateful
  representation, there should be a choice made about what state should
  be presented when an error occurs
* If an error occurs but the signal value is never read in its error
  state, this is not an application state error that should result in an
  unhandled exception.
* While Angular does not have error boundaries today, there is likely to
  be investigation in the near future to address increased risk of
  errors thrown from signals such as this in templates. Without
  pre-designing any specifics, it is possible that this type of feature
  would require the error to be thrown from the signal. We are subsequently
  not prepared to commit to stabilizing the `toSignal` API with the
  `rejectErrors` option and its current behavior.

Developers that desire similar behavior to `rejectErrors` have several
options, the simplest of which would be something similar to
`toSignal(myStream.pipe(catchError(() => EMPTY)))`.

PR Close #60397
2025-03-18 14:10:24 +01:00
Alan Agius bf5d995caa refactor(platform-server): expose internal render method for extensibility (#60416)
The `renderApplication` and `renderModule` methods currently encapsulate the entire rendering process, making it difficult to intercept key phases from a non-Angular context. This change exports the internal `render` method, allowing us to perform operations such as:

- Flushing headers before hydration preparation
- Handling non static redirects (e.g., 302 responses)
- Intercepting router events for additional processing

This refactor serves as an experimental step toward improving the API for better customization and integration in the future.

PR Close #60416
2025-03-18 10:31:44 +01:00
Doug Parker 4930ed3fed refactor(devtools): add support for mutating objects inside signals (#60381)
Angular DevTools now supports mutating objects underneath signals in the property explorer view.

This is done by performing an "immutable update" by recursively copying objects underneath a signal and overwriting the one property specified. For example, if the user attempted to set `foo.bar.baz[2].hello = 'world'` and `bar` was a signal, this would effectively become:

```typescript
foo.bar.set({
  ...foo.bar(),
  baz: [
    ...foo.bar().baz.slice(0, 2),
    {
      ...foo.bar().baz[2],
      hello: 'world',
    },
    ...foo.bar().baz.slice(3),
  ],
})
```

The motivation for immutable updates is because signals and Angular change detection don't really like interior mutability of signal values. If we didn't do this, any kind of comparison or dirty check would prevent the UI from updating. If an application attempts to change a deeply nested property inside a signal, it doesn't work today. DevTools should generally be limited to operations an application could do itself, and the recommended approach to make such a change like this is an immutable update. Creating entirely new objects intentionally breaks referential equality such that the application can properly react to the change.

Unfortunately, it is not possible to make immutable updates in a truly generic sense. You can't just copy a class for instance `({...new MyFoo()}).doSomething()`. We could do something fancier like manually copying over the prototype or something like that, but there is no way to do this without breaking class semantics (ex. the class might reasonably rely on the constructor being called). Therefore we instead reject any mutations to non-primitive objects. In the future, we might expand the set of "primitives" to include other built-ins and well-known objects like `URL` or `Element`, but those are out of scope for now.

I opted to ban mutating the result of a readonly/computed signal. While the mutation is likely to succeed, a subsequent rerun of the `computed` will immediately drop the change. However, I opted to allow mutating the result of a getter property. This has a similar problem because it might be returning a synthetic object which will be invalidated on the next execution, but it is possible and reasonable for a getter to return the same object multiple times such that a mutation may reasonably survive other updates. DevTools can't easily know whether a getter actually will return the same object on each execution or not, so we optimistically assume the reference is stable. If it isn't, the mutation will be lost whenever the getter is re-executed.

PR Close #60381
2025-03-18 10:22:46 +01:00
Doug Parker 3104e43b74 refactor(devtools): fix reading resolutionPath (#60403)
Sometimes `forest` can be empty if the provided roots are empty, and was leading to a "Cannot read `resolutionPath` of `undefined`" error. Now we check the forest has a tree in it before looking up `resolutionPath`.

There might be a separate issue with the fact that the backend script likely shouldn't be emitting an empty forest in the first place. However we already check that a resolution path exists at all, so I think it's fair to also check that a tree was provided. We can separately look into making sure the backend is emitting valid data.

PR Close #60403
2025-03-18 10:19:51 +01:00
Angular Robot 39b1bf614f build: update cross-repo angular dependencies (#60405)
See associated pull request for more information.

PR Close #60405
2025-03-18 10:19:04 +01:00
Angular Robot 4d6cce222b build: update io_bazel_rules_sass digest to ebdb141 (#60428)
See associated pull request for more information.

PR Close #60428
2025-03-18 10:18:16 +01:00
William Mba c27511e82c docs: fix typo (#60431)
PR Close #60431
2025-03-18 10:11:58 +01:00
Paul Gschwendtner 2ca72faab1 build: improve partial compliance golden generation and add debug logging (#60427)
Improves the partial compliance golden generation to not rely on large
files being transmitted via `stdout`. Instead the files are written
directly as it's done in idiomatic Bazel generation actions.

In addition, we add extra stdout logging for the Bazel action, to see if
the process is actually invoked in RBE workers. Right now those are
occassionally stuck, but neither us, nor the RBE team can see anything
running, and they're occasionally stuck for 1hr.

PR Close #60427
2025-03-18 07:10:43 +00:00
Alan Agius 450c1fcfa4 docs: revise and consolidate server rendering guides (#60383)
This commit updates the server rendering documentation and merges the prerendering, hybrid, and SSR sections for better clarity and organization.

Closes #52884 and closes #60079

PR Close #60383
2025-03-17 18:34:33 +01:00
Matthieu Riegler a43570d623 docs(docs-infra): fix & enable shared-docs tests (#60409)
This commit includes a refactoring that removes `TableOfContentsScrollSpy` as this is only directly handled via a browser API.

PR Close #60409
2025-03-17 18:33:45 +01:00
Kristiyan Kostadinov b154fb3911 feat(core): add support for two-way bindings on dynamically-created components (#60342)
Builds on the changes from #60137 to add support for two-way bindings on dynamically-created components. Example usage:

```typescript
import {createComponent, signal, twoWayBinding} from '@angular/core';

const value = signal('');

createComponent(MyCheckbox, {
  bindings: [
    twoWayBinding('value', value),
  ],
});
```

In the example above the value of `MyCheckbox` and the `value` signal will be kept in sync.

PR Close #60342
2025-03-17 14:29:52 +01:00
Kristiyan Kostadinov bf2b0253bc refactor(compiler-cli): move typeCheckHostBindings option (#60267)
Moves the `typeCheckHostBindings` option into `StrictTemplateOptions` and renames the latter.

PR Close #60267
2025-03-17 14:28:41 +01:00
Kristiyan Kostadinov 1971e57a45 feat(compiler-cli): support type checking of host bindings (#60267)
Historically Angular's type checking only extended to templates, however host bindings can contain expressions as well which can have type checking issues of their own. These changes expand the type checking infrastructure to cover the `host` object literal, `@HostBinding` decorators and `@HostListener` with full language service support coming in future commits.

Note that initially the new functionality is disabled by default and has to be enabled using the `typeCheckHostBindings` compiler flag.

PR Close #60267
2025-03-17 14:28:41 +01:00
Kristiyan Kostadinov eb4c22e6d9 refactor(compiler-cli): enable type checking of directive classes (#60267)
Updates the directive handler to enable type checking of directives. Currently this only applies to checking of host bindings.

PR Close #60267
2025-03-17 14:28:40 +01:00
Kristiyan Kostadinov 84b3721351 refactor(compiler-cli): produce host binding type checking information for components (#60267)
Sets up the logic that produces the information necessary to type check host bindings of a component. Also introduces a compiler flag for toggling checking of host bindings.

PR Close #60267
2025-03-17 14:28:40 +01:00
Kristiyan Kostadinov 0669709120 refactor(compiler-cli): add logic for synthesizing host element (#60267)
Adds the logic that creates a `HostElement` AST node based on the host bindings of a directive.

PR Close #60267
2025-03-17 14:28:40 +01:00
Kristiyan Kostadinov b8f2a50c68 refactor(compiler-cli): track host binding information (#60267)
Sets up the infrastructure to track the host bindings of directives for type checking purposes.

PR Close #60267
2025-03-17 14:28:40 +01:00
Kristiyan Kostadinov 7ffcb504df refactor(compiler): account for host element in binder (#60267)
Updates the `R3TargetBinder` to ingest host element nodes.

PR Close #60267
2025-03-17 14:28:40 +01:00
Kristiyan Kostadinov a34353c736 refactor(compiler): add AST node for host element (#60267)
Adds the `HostElement` AST node that can be used to represent the host of a directive. Also exposes the `BindingParser` type so it's easier to pass around the return value of `makeBindingParser`.

PR Close #60267
2025-03-17 14:28:40 +01:00
Matthieu Riegler bb7e948bde refactor(core): Add recommendation for string tokens on @Inject (#60326)
While still being supported because of ngUpgrade, string tokens are not recommended. Developers should use InjectionTokens or classes as tokens instead.

PR Close #60326
2025-03-17 12:18:23 +01:00
Kristiyan Kostadinov 04d963c0a5 fix(core): remove unused parameter from listener instruction (#60406)
Removes the `useCapture` parameter from the `listener` instruction, because it's not used.

PR Close #60406
2025-03-17 12:16:03 +01:00
Kristiyan Kostadinov 8953e45a43 fix(core): include input name in error message (#60404)
Includes either the `debugName` or alias of an input in the error message about a value not being available.

Fixes #60199.

PR Close #60404
2025-03-17 12:15:02 +01:00
Angular Robot 1668b9fbb0 build: update babel dependencies to v7.26.10 (#60398)
See associated pull request for more information.

PR Close #60398
2025-03-17 10:29:43 +01:00
Angular Robot 43eb680977 docs: update Angular CLI help [main] (#60400)
Updated Angular CLI help contents.

PR Close #60400
2025-03-17 10:26:48 +01:00
Angular Robot cc94862eaa build: pin actions/upload-artifact action to 4cec3d8 (#60401)
See associated pull request for more information.

PR Close #60401
2025-03-17 10:26:00 +01:00
Paul Gschwendtner eb867c3d23 build: upload grpc remote logs for debugging (#60393)
This should be helpful in figuring out why RBE is currently unstable.

PR Close #60393
2025-03-14 19:51:26 +01:00
Jessica Janiuk b8daf472d8 fix(core): execute timer trigger outside zone (#60392)
This should prevent defer timers from impacting app stability by executing them outside of the zone, similar to other defer triggers.

fixes: #60373

PR Close #60392
2025-03-14 17:01:02 +01:00
Kristiyan Kostadinov c147a0d6de refactor(migrations): simplify integration of tsurge migrations into the CLI (#60386)
Currently when we reuse a Tsurge migration is reused externally, there's some glue code that needs to be executed in a specific order. The code gets copied between the different migrations which is error-prone and means that bugs may have to be fixed several times.

These changes move the common steps out into a separate function so that only the migration-specific logic (mostly instantiation and logging) is left in the schematic.

PR Close #60386
2025-03-14 14:44:26 +01:00
Alan Agius 80895ea966 ci: disable Renovate updates for @angular/build-tooling (#60387)
The newer version of this package requires Aspect setup which is not configured in this repo.

PR Close #60387
2025-03-14 14:43:24 +01:00
Alan Agius ea6cc64639 build: update cross-repo angular dependencies (#60387)
See associated pull request for more information.

Closes #59956 as a pr takeover, `@angular/build-tooling` has been rolled back as due to missing `@aspect_rules_js`.

PR Close #60387
2025-03-14 14:43:24 +01:00
Rahat Ahmed 28459060a2 refactor(core): Support and document manually provided internal injections (#60347)
For internal framework values stored in injectors, they are manually
managed and inserted into injectors as needed. Therefore their tokens
don't provide a value or factory. This updates the type to reflect that
and updates the jsdocs a bit.

PR Close #60347
2025-03-14 13:40:40 +01:00
Andrew Scott 997117bb76 refactor(router): Clean up the transition subject (#60357)
This commit cleans up the transition subject a bit so it doesn't use a dummy
initial value. It also avoids copying over data from the previous
request when a new one is created.

PR Close #60357
2025-03-14 11:16:15 +01:00
Andrew Scott c054d620dd refactor(router): Update to use early return to reduce nesting (#60377)
Updates a switchTap body to use early return to reduce nesting

PR Close #60377
2025-03-14 11:15:28 +01:00
Denis Bendrikov d79c57d9d7 fix(devtools): eliminate unnecessary scrollbars on injector tree (#59966)
Modify CSS to eliminate unnecessary scrollbars on injector tree

PR Close #59966
2025-03-14 08:38:02 +01:00
Angular Robot c4360fe0a1 docs: update Angular CLI help [main] (#60375)
Updated Angular CLI help contents.

PR Close #60375
2025-03-14 08:33:27 +01:00
Kristiyan Kostadinov cd7c170763 fix(upgrade): handle output emitters when downgrading a component (#60369)
The `DowngradeComponentAdapter` adapter was assuming that all outputs are observables, but they can also be `OutputEmitterRef`.

Fixes #60366.

PR Close #60369
2025-03-13 17:36:55 +01:00
Pawel Kozlowski adecf4c772 refactor(core): pass signal equal function to primitives (#60364)
The signals primitives package understands the equals option now
so we can pass it to the signal / computed creation methods instead
of manually assigning the equality function on a reactive node.

PR Close #60364
2025-03-13 17:24:17 +01:00
Hyron48 55ba1ededd docs: added short explanation about event reply (#60349)
a short explanation about event reply has been added, briefly explaining the phases that compose it

PR Close #60349
2025-03-13 17:03:41 +01:00
Nico Muszalczyk 7a3958546d docs: note that CSS is also taken into account in the max bundle size (#60362)
Closes #60356

PR Close #60362
2025-03-13 15:50:39 +01:00
Matthieu Riegler f5f2549808 refactor(http): replace overriden method with a ts declare (#60278)
This allows us to drop the useless `super.hasValue()`.

PR Close #60278
2025-03-12 12:27:47 -07:00
Pawel Kozlowski 72ef9ed4a3 refactor(core): prepare integration with Chrome DevTools (#60217)
This commit puts in place infrastructure capable of routing
performance-related, internal framework events directly to
the Chrome DevTools performance panel (custom track).

PR Close #60217
2025-03-12 12:26:27 -07:00
Angular Robot babc322ce7 build: update all non-major dependencies (#60315)
See associated pull request for more information.

PR Close #60315
2025-03-12 12:25:38 -07:00
Pawel Kozlowski 817021b359 refactor(core): add equal option to the signal and computed creation (#60300)
This change moves more logic to the primitives package by pushing
the equal configuration on a reactive node to the signal and
computed creation utilities.

PR Close #60300
2025-03-12 10:38:27 -07:00
Taygan Caldwell bc95edf240 refactor: cleanup untracked in core (#60150)
Re-export untracked in core from primitives

PR Close #60150
2025-03-12 10:37:51 -07:00
Andrew Kushnir 9657c7d699 test(core): reduce test flakiness by increasing time delta (#60338)
This commit updates an expected delta range for a duration of a view transition to reduce flakiness of that test.

PR Close #60338
2025-03-12 10:36:36 -07:00
Hryhorii (Greg) Avcharov a8694af4fe docs: remove --all argument from ng update (#60350)
Closes #60340

PR Close #60350
2025-03-12 10:36:03 -07:00
Paul Gschwendtner 03a32ca6d2 build: enable remote execution keepalive (#60355)
This should help with network issues of spawned RBE actions. It should
also introduce timeouts when actions couldn't be spawned in a timely
manner.

PR Close #60355
2025-03-12 10:35:27 -07:00
Andrew Kushnir bc472b669c release: cut the v20.0.0-next.2 release 2025-03-12 09:52:39 -07:00
Andrew Kushnir 0788b0caca docs: release notes for the v19.2.2 release 2025-03-12 09:45:05 -07:00
Andrew Scott 0b6084e1bf refactor(router): split remainder of describes in integration test file (#60313)
to more easily navigate and identify different suites of integration tests,
this commit splits them into several different files

PR Close #60313
2025-03-11 17:13:27 -07:00
Matthieu Riegler 0a9403ec7c docs(docs-infra): Bump tutorial/playground to 19.2 (#60336)
fixes #60335

PR Close #60336
2025-03-11 16:21:33 -07:00
Matthieu Riegler b27b7efddc docs: add mention of GH issue for devPreview feedback (#60010)
fixes #59902

PR Close #60010
2025-03-11 14:26:24 -07:00
Paul Gschwendtner 4fa5d18e5a feat(bazel): support bundling .d.ts with code splitting (#60321)
Instead of relying on Microsoft's API extractor for `d.ts` bundling,
we are switching to Rollup-based `.d.ts` bundling.

This allows us to support code spliting, even for `.d.ts` files,
allowing for relative imports to be used between entry-points, without
ending up duplicating `.d.ts` definitions in two files. This would otherwise cause
problems with assignability of types.

It also nicely integrates into our existing rollup configuration, and
overall simplifies the `ng_package` rule even further!

Notably `tsup` also uses this rollup plugin, and it seems to work well.
Keep in mind that Microsoft's API extractor is pretty hard to integrate,
caused many problems in the past, and isn't capable of code splitting.
This aligns our d.ts bundling with the .mjs bundling (great alignment).

PR Close #60321
2025-03-11 13:03:08 -07:00
arturovt 526268c262 refactor(core): inline standalone check to be dropped (#60305)
Inlines `standalone` check into the message to be dropped.

PR Close #60305
2025-03-11 13:01:43 -07:00
Andrew Scott 7677578695 refactor(router): Add safe navigation operator (#60314)
Adds safe navigation operator to account for tests spying on navigateByUrl

PR Close #60314
2025-03-11 12:59:43 -07:00
Kristiyan Kostadinov ef1fd137a9 fix(compiler): incorrect spans for template literals (#60323)
Fixes that we were producing zero-length spans for template literals and template literal elements.

Fixes #60320.
Fixes #60319.

PR Close #60323
2025-03-11 12:59:00 -07:00
Matthieu Riegler 35388c18b8 docs: remove mention of #59443 in 19.2 changelog (#60329)
#59443 was reverted for breaking projects in G3.

PR Close #60329
2025-03-11 12:58:16 -07:00
AlirezaEbrahimkhani dcc1a61dfa docs: change xss doc url to angular new documentation (#59915)
PR Close #59915
2025-03-11 12:57:48 -07:00
Kristiyan Kostadinov 8be6e3888b refactor(core): replace internal usages of InjectFlags (#60318)
Replaces all the places where we use `InjectFlags` internally with the `InternalInjectFlags` which has the benefit of being a `const` enum and allowing us to consolidate the flags and object literal eventually.

PR Close #60318
2025-03-11 11:33:09 -07:00
Kristiyan Kostadinov 611baaf069 feat(core): remove InjectFlags from public API (#60318)
Removes the deprecated `InjectFlags` symbol from the `@angular/core` public API, as well as all the places that accept it. The previous commit includes an automated migration to switch over to the new way of passing in flags.

BREAKING CHANGE:
* `InjectFlags` has been removed.
* `inject` no longer accepts `InjectFlags`.
* `Injector.get` no longer accepts `InjectFlags`.
* `EnvironmentInjector.get` no longer accepts `InjectFlags`.
* `TestBed.get` no longer accepts `InjectFlags`.
* `TestBed.inject` no longer accepts `InjectFlags`.

PR Close #60318
2025-03-11 11:33:09 -07:00
Kristiyan Kostadinov e170d24240 fix(core): add migration away from InjectFlags (#60318)
Adds an automated migration that will switch users from the deprecated `InjectFlags` API to its non-deprecated equivalent.

PR Close #60318
2025-03-11 11:33:09 -07:00
Juhmer-Tena 9a124c8b5d docs: fix commit message guideline link (#60296)
Fixes the link for the commit message guideline in CONTRIBUTING.md
pointing to the building and testing angular guide instead of the
commit message guidelines

Fixes #60925

PR Close #60296
2025-03-11 11:08:23 -07:00
Kristiyan Kostadinov 375b4ef5dc build: update public-api approvers (#60328)
Adds myself and Paul to the public API reviewers to help with the reviews.

PR Close #60328
2025-03-11 11:07:18 -07:00
Doug Parker 90165b17bc refactor(devtools): refactors property view drag-and-drop behavior (#60286)
The main goal of this change is to remove `categoryOrder` which effectively hard-codes the supported length of `panels`. Adding another item to `panels` is not rendered unless that is added to `categoryOrder`.

My solution to this is to make the set of categories a signal, with each category able to produce the data inside it. This allow `CdkDragDrop` to rearrange categories but then still produce the correct data in the template without needing a separate array to track order.

Also removed `hidden` and inlined it in the template, since the logic was the same for every panel.

`moveItemInArray` is unfortunately an in-place move, so I needed to manually clone the array to ensure `panels` observes an immutable update which works better with signals and change detection.

PR Close #60286
2025-03-11 09:27:03 -07:00
aparzi de2bfc0913 fix(core): fix removal of a container reference used in the component file (#60210)
During migration a container reference was deleted even though it was used in the component file.

PR Close #60210
2025-03-11 09:26:13 -07:00
Matthieu Riegler a980ac9a6a refactor(platform-browser): Deprecate the HammerJS integration (#60257)
The HammerJS integration provided by the framework is deprecated

DEPRECATED: HammerJS support is deprecated and will be removed in a future major version.

PR Close #60257
2025-03-11 09:25:28 -07:00
Vlad Boisa a129ae5c1f docs: fix one broke link by #57591 (#60237)
Fix 1 link in adev toolchain `{@link forRoot}`
PR Close #60237
2025-03-11 09:24:02 -07:00
Matthieu Riegler 060e86e4cd docs: fix event listener key modifier example (#60280)
PR Close #60280
2025-03-11 09:23:02 -07:00
Angular Robot 4f4bfa333a build: update github/codeql-action action to v3.28.11 (#60316)
See associated pull request for more information.

PR Close #60316
2025-03-11 09:21:43 -07:00
Angular Robot 8e0d87a69d build: update dependency typescript to ~5.8.0 (#60317)
See associated pull request for more information.

PR Close #60317
2025-03-11 09:21:07 -07:00
Matthieu Riegler c73520bb74 refactor(compiler): remove empty empty string suffix from interpolation instructions (#60066)
With this change, interpolations that don't have a suffix will miss the last argument which was previously an empty string.

PR Close #60066
2025-03-10 16:31:34 -07:00
Matthieu Riegler e3afa24089 refactor(core): log a warning instead of throwing error on OutputRef.emit when the directive is destroyed. (#60293)
This should not be a hard error, as nothing bad happens but the users should be warned that no event will be emitted.

fixes #60110

PR Close #60293
2025-03-10 16:08:52 -07:00
Matthieu Riegler db5963797d docs(docs-infra): Extract class constructors (#60302)
fixes #59180

PR Close #60302
2025-03-10 16:05:02 -07:00
Andrew Scott 647550918f refactor(router): split integration test file (#60311)
to more easily navigate and identify different suites of integration tests,
this commit splits them into several different files

PR Close #60311
2025-03-10 16:03:54 -07:00
Jessica Janiuk a920f87b1c ci: fix timer test flakiness (#60310)
This replaces the TimerScheduler entirely and ensures the callback is called immediately. This should prevent any further flakiness.

PR Close #60310
2025-03-10 15:08:54 -07:00
arturovt f2a8006591 refactor(core): replace PLATFORM_ID in initTransferState (#60299)
Replaces `PLATFORM_ID` check with the `ngServerMode`.

PR Close #60299
2025-03-10 13:49:23 -07:00
Andrew Scott ff772d7800 fix(core): fix typing on injector.get to omit 'any' (#60202)
This commit further restricts the deprecated type on injector.get to exclude
all but `string`. Progresses towards #48408

BREAKING CHANGE: The `any` overload has been removed from
`injector.get`. It now only supports `ProviderToken<T>` and (deprecated
since v4) `string`.

PR Close #60202
2025-03-10 13:48:18 -07:00
Paul Gschwendtner 0cff9a12d3 fix(platform-server): add missing peer dependency for rxjs (#60308)
The server package imports from `rxjs`, but the dependency was not
specified as `peerDependency`, nor `dependency`. This surfaces as an
error in strict dependency environments, like with pnpm's symlinked node
modules structure.

This commit fixes this. It presumably doesn't fail with e.g. Yarn, or
npm because of node modules hoisting.

PR Close #60308
2025-03-10 11:41:05 -07:00
Doug Parker 6521be22b9 release: bump Angular DevTools version to 1.0.26 (#60309)
PR Close #60309
2025-03-10 11:40:26 -07:00
iteriani e13f11db69 refactor(core): Create a function convertToInjectOptions and convert back to an options. This allows seamless back and forth from bitflags and options. (#60192)
Note that we do have to keep converting back and forth, but we'll see if that's a problem.

PR Close #60192
2025-03-10 11:38:13 -07:00
iteriani 92bb8d974b refactor(core): Use the retrieve method in the implementation of injectInjectorOnly (#60192)
This should keep the existing behavior intact. Right now retrieve never returns back NOT_FOUND. This should not be the case, but tests fail if I do add this behavior so itll have to be later.

PR Close #60192
2025-03-10 11:38:13 -07:00
arturovt 3602c536e4 refactor(common): drop error messages in production (#60242)
Drops more error messages in production.

PR Close #60242
2025-03-10 10:04:03 -07:00
Kristiyan Kostadinov 9be2b334ed fix(compiler-cli): handle transformed classes when generating HMR code (#60298)
We had several places where we were trying to get the source file of a class for which we're generating HMR-related code. These calls will fail if the class was transformed so we have to get its source file through the original node.

Fixes #60287.

PR Close #60298
2025-03-10 09:58:52 -07:00
Doug Parker 7f85d184b0 fix(devtools): handle case where directive metadata has undefined dependencies (#60256)
This fixes a bug introduced by [#60206](https://github.com/angular/angular/pull/60206/files#diff-c07b9ecd59f6e0ed636ac9672b9644178d9a999f04bc8b8198b13e86589dfa5b). Previously `DirectiveMetadata.prototype.dependencies` was always set, but in that PR `dependencies` is only set if an `Injector` is found (which only happens when `ng.getInjector` is *not* defined). This causes an error when evaluating `dependencies.length` in the template.

Fix is just to check for existance before calling `length`.

PR Close #60256
2025-03-10 09:57:25 -07:00
Doug Parker 1eedfcee90 refactor(devtools): remove input/output/property links (#60284)
These links aren't that helpful in the context of Angular DevTools for a few reasons:
1. Users of the extension should already have a general understanding of core Angular concepts, inputs and outputs included.
2. The input and output links go to API documentation which isn't useful for someone who doesn't actually understand the core concepts anyways.
3. These links point to signals documentation even though DevTools shows non-signal inputs and outputs.
4. Properties linked to template binding docs, which doesn't *really* have anything to do with the plain JS properties being shown in DevTools anyways.

PR Close #60284
2025-03-10 09:56:19 -07:00
Charles Lyding a1cacc5b17 fix(compiler-cli): avoid fatal diagnostics for missing template files (#58673)
A build will still fail in this case. However, for the language service,
this allows the component to exist in the compiler registry and prevents
cascading diagnostics within an IDE due to "missing" components. The
originating template related errors will still be reported in the IDE.
This case is particularly important when a template file either does
not exist or is inaccessible to the language service.

PR Close #58673
2025-03-10 09:54:16 -07:00
Miles Malerba 00938699b8 refactor(compiler-cli): handle parentheses in the template pipeline (#60169)
Now that the expression AST contains parenthesized expressions, this
refactors the template pipeline to strip out the ones we don't need.

PR Close #60169
2025-03-10 09:53:10 -07:00
Miles Malerba d4cfeb0a86 refactor(compiler): add parenthesized expressions to experssion ast (#60169)
Following up on #60127 which added the concept of a parenthesized
expression to the output AST, this does the same for the expression AST.

PR Close #60169
2025-03-10 09:53:10 -07:00
Charles Lyding 3089ab4ac1 build: update minimum development Node.js versions (#60080)
With Node.js v18 approaching End-of-Life on 2025-04-30, the minimum
supported versions for development have been updated to `^20.11.1 || ^22.11.0`.
This change does not affect published packages.

The custom ESM loader was disabled in several Node.js jasmine tests due
to incompatibilities with the updated custom loader API in newer Node.js
versions. The API in v18 was not considered stable. The rules_js migration
will remove the need for this loader fully in future.

PR Close #60080
2025-03-10 09:45:05 -07:00
Charles Lyding 8fea532f6f build: update chalk to v5.4.1 (#60080)
Major version v5 of chalk is required to avoid bazel resolution
errors related to ESM with newer Node.js versions.

PR Close #60080
2025-03-10 09:45:05 -07:00
Joey Perrott 07dc8063bf refactor(bazel): remove primary_bundle_name as attr for ng_package (#60306)
Remove primary_bundle_name as an attr for ng_package as it is unused.

PR Close #60306
2025-03-10 09:31:20 -07:00
Joey Perrott c0ce5ec6db refactor(bazel): hardcode esm as the ouput for rollup (#60306)
Remove the option as an arg for creating a rollup config since it is static.

PR Close #60306
2025-03-10 09:31:20 -07:00
Angular Robot d5a1635f58 build: lock file maintenance (#60177)
See associated pull request for more information.

PR Close #60177
2025-03-10 09:27:47 -07:00
Matthieu Riegler a94c912a3a refactor(devtools): Make every ng function optional in the typings (#60208)
This will help in the future guarding against old apps what don't have the new APIs implemented

PR Close #60208
2025-03-10 09:24:12 -07:00
Hryhorii Avcharov 1a0b561134 fix(docs-infra): terminal light mode text color (#60246)
This commit changes the text color in terminal light mode to improve
visibility and user experience. The previous color was too light and
made it difficult to read the text.

PR Close #60246
2025-03-10 09:23:20 -07:00
François 4c32c3ef56 docs: fix typo and link in v16 update guide (#60277)
PR Close #60277
2025-03-10 09:22:33 -07:00
Angular Robot 21ab1c1f6d docs: update Angular CLI help [main] (#60301)
Updated Angular CLI help contents.

PR Close #60301
2025-03-10 09:21:34 -07:00
Kristiyan Kostadinov 0e40a1c93f build: remove migrations for v19 (#60304)
Removes the migrations for v19 since they aren't relevant anymore.

PR Close #60304
2025-03-10 09:20:52 -07:00
Andrew Scott 338818ce89 fix(core): Surface errors from ApplicationRef.tick to callsite (#60102)
This commit ensures that errors during `ApplicationRef.tick` are
surfaced to the callsite rather than being caught and reported to the
`ErrorHandler`.

The current catch and report approach was originally
added in https://github.com/angular/angular/commit/e263e19a2ae8f7dc6457e5cefb4d27887c111f96
with the goal of preventing automatic change detection crashes due to
the error happening in the subscription. However, this results in hiding
a public API that can hide errors. Callers cannot assume that the tick
was successful and perform follow-up work.

This change now surfaces errors and adds the error handling directly to
the callsites.

BREAKING CHANGE: `ApplicationRef.tick` will no longer catch and report
errors to the appplication `ErrorHandler`. Errors will instead be thrown out of
the method and will allow callers to determine how to handle these
errors, such as aborting follow-up work or reporting the error and
continuing.

PR Close #60102
2025-03-10 08:17:14 -07:00
Paul Gschwendtner a02e270fcb build: properly compile tests in core with Angular compiler (#60268)
Previously we never could use relative imports to import e.g. `Component`
in e.g. the `core/tests/bundling` folder. This was necessary because otherwise the
Angular compiler wouldn't process those files as it wouldn't recognize
the Angular decorator as the one from `@angular/core`.

Notably this still isn't a large issue because relative imports still
work for most core tests, that are JIT compiled!

For bundling tests though, or some smaller targets, our new upcoming
guidelines for using relative imports inside the full package; fall
apart. This commit unblocks this effort and allows us to use relative
imports in all tests of `packages/core`. This is achieved by leveraging
the existing `isCore` functionality of the compiler, and fixing a few
instances that were missing before.

PR Close #60268
2025-03-07 11:00:47 -08:00
Alan Agius 9080fdf6f8 test: narrow down signal-input typescript tests (#60266)
Remove TS versions that are no longer supported.

PR Close #60266
2025-03-07 11:00:03 -08:00
Alan Agius 45f899a272 refactor: replace fast-glob usage with tinyglobby (#60264)
Usage of the `fast-glob` package has been replaced with the `tinyglobby` package. The change reduces the number of transitive dependencies related to these packages from 17 to 2 while also maintaining equivalent functionality. This was also changed in the Angular CLI packages.

PR Close #60264
2025-03-07 10:57:23 -08:00
Vlad Boisa cc0bd25f3e docs: fix typo in desription (#60261)
Fix typos in description of `styleUrl`

Fixes #60258
PR Close #60261
2025-03-07 10:55:37 -08:00
Matthieu Riegler aa1ab41e6c docs(docs-infra): enable & fix tests (#60220)
PR Close #60220
2025-03-06 14:33:48 -08:00
Paul Gschwendtner 978a0b8493 refactor: add fast-glob to bazel dependencies (#60253)
This will be necessary for downstream (private) consumers
of the `@angular/bazel` package.

PR Close #60253
2025-03-06 12:50:29 -08:00
Jessica Janiuk 8e4d622799 ci: fix flakey timer tests (#60254)
This adjusts the tests to have a longer await time and removes the click portion of the test. These tests should only pass if the timer has triggered hydration.

PR Close #60254
2025-03-06 12:49:47 -08:00
Matthieu Riegler fa712aede5 docs(docs-infra): temporary removal of core/rxjs-interop dependency (#60234)
To work around the limitation of #54858, this commit removes temporarly the dependency to `core/rxjs-interop` to allow the removal of the microtask effect which was pulled by that entry.

This commit is intented to be reverted once the next patch/next is released.

PR Close #60234
2025-03-06 12:48:55 -08:00
Andrew Scott 02cb7e061a refactor(core): remove microtask effect (#60234)
This has been removed internally and was never exposed externally (it was a breaking change)

PR Close #60234
2025-03-06 12:48:55 -08:00
Jessica Janiuk c82384104f fix(core): ensures immediate trigger fires properly with lazy loaded routes (#60203)
In the case that a route was lazy loaded, some triggers would never properly finish hydrating due to things firing before the route finished resolving.
This will find the topmost parent defer block and ensure the registry knows about it before trying to hydrate.
In the case that the registry does not yet know, just the affected triggers await app stability before initializing.
fixes #59997

PR Close #60203
2025-03-06 12:47:46 -08:00
Angular Robot e044b4c31f docs: update Angular CLI help [main] (#60248)
Updated Angular CLI help contents.

PR Close #60248
2025-03-06 11:27:09 -08:00
Kristiyan Kostadinov 1b91de3231 refactor(language-service): rename internal symbols to accommodate type checking outside a template (#60191)
Currently the language service has some template-specific terminology around type checking, because that's the only place where we had TCB support. These changes make it more generic to accommodate future functionality.

PR Close #60191
2025-03-06 10:39:31 -08:00
Kristiyan Kostadinov afea8a9d0c refactor(compiler-cli): rework resource handling to allow directives (#60191)
Currently only components can have resources, because they're the only symbol kinds being type checked. Since we want to add directives to it, these changes rework the resource handling to accommodate them.

PR Close #60191
2025-03-06 10:39:31 -08:00
Kristiyan Kostadinov 44a8de20d5 refactor(compiler-cli): rework source manager to accommodate directives (#60191)
Currently the `TemplateSourceManager` is set up to specifically cater to component templates. These changes make it more generic so we can reuse it for directives.

PR Close #60191
2025-03-06 10:39:31 -08:00
Kristiyan Kostadinov 5af15a6d50 refactor(compiler-cli): rework type checking internals to accommodate more than components (#60191)
Currently a lot of the internal type checking data structures are set up specifically for components, because we only support type checking of templates. Since this will change in future commits, these changes prepare for it by renaming various methods and separating out component-specific data.

PR Close #60191
2025-03-06 10:39:31 -08:00
Kristiyan Kostadinov c14386900f refactor(compiler-cli): change TemplateId terminology (#60191)
Renames the `TemplateId` and terminology related to it, because we'll be using it for more than just templates.

PR Close #60191
2025-03-06 10:39:31 -08:00
Kristiyan Kostadinov 9aef786b4a refactor(compiler): allow binder to apply to more than one set of nodes (#60191)
Currently `R3TargetBinder.bind` gets a set of data back from `DirectiveBinder.apply` and `TemplateBinder.applyWithScope`. This will be annoying  if we have multiple sources of data, because we'd have to do merge them at the end.

These changes switch to constructing the various data structures ahead of time and passing them into the binders to populate them instead.

I also extracted some of the less trivial types into type aliases so we don't have to repeat them.

PR Close #60191
2025-03-06 10:39:31 -08:00
kw f9d196d193 docs: Correct comments for FormControl (#58352)
PR Close #58352
2025-03-06 10:36:46 -08:00
Pawel Kozlowski 39b324de67 refactor(core): drop render-related perf counters (#60200)
It looks like we are not getting enough value from having
those counters. This is an exploratory PR to see if thsoe
could be removed.

PR Close #60200
2025-03-06 10:33:54 -08:00
Doug Parker f8bf888d5d release: bump Angular DevTools version to 1.0.25 (#60235)
PR Close #60235
2025-03-06 10:32:02 -08:00
Paul Gschwendtner 1f1039475c feat(bazel): support shared chunks in ng_package (#60241)
Historically we've had to be VERY cautious about the way we import
things between entry-points. That is because the `ng_package` rule
bundling is subject to silently introducing code duplication, breaking
singletons etc. We've had this surface a couple of times already, and
dev-infra tried to help detect such cases by adding safety analysis into
`ng_package`.

Long-term we want to get to an approach where it's easy to simply share
code between chunks. Precisely, with the upcoming `rules_js` migration,
this will be necessary as we will have different import "guidelines"
that would currently, before this commit, result in code duplication, or
trigger our "safety check/lint".

This commit prepares `ng_package` to support relative imports between
entry-points, so that we only need the safety check for cross-package
imports/exports. The result is that `ng_package`/APF is now smartly able
to generate shared chunks for things that are needed between multiple
entry-points. Yay!

Note that those shared chunks still remain private, and are guarded by
our `package.json` "exports"; so no new public API surface is
exposed.

PR Close #60241
2025-03-06 10:29:05 -08:00
Matthieu Riegler 81fe0536fd fix(forms): Make sure statusChanges is emitted (#57098)
In the cases multiple updates with `emitEvent:false` were requests, `shouldHaveEmitted` wasn't passed correctly and and requests updates were trashed.
This commit fixes this.

Fixes #56999

PR Close #57098
2025-03-06 09:21:00 -08:00
Matthieu Riegler 2668bd96b9 refactor(http): Make sur to pass context & transferCache from httpResource to the underlying request. (#60228)
Prior to this change, both were accepted as argument but never passed to the client.

PR Close #60228
2025-03-06 07:59:06 -08:00
Andrew Scott 219f41d049 fix(router): Prevent dangling promise rejections from internal navigations (#60162)
Though the plan is to change the default behavior or the router to
instead resolve the navigation promise with `false` to match all other
failed navigations, we should still prevent dangling promise rejections
from navigations triggered internally when developers opt to use the old
(current) behavior.

PR Close #60162
2025-03-06 07:58:18 -08:00
Alan Agius 4c22e65719 build: update .bazelignore listings (#60239)
Some listings are outdated

PR Close #60239
2025-03-06 07:56:34 -08:00
Matthieu Riegler e16bbcdc51 docs(docs-infra): fix initial TOC selection (#60240)
PR Close #60240
2025-03-06 07:55:42 -08:00
Jessica Janiuk cae1fe519b fix(router): update symbols (#60233)
This updates the goldens for the router.

PR Close #60233
2025-03-05 15:34:05 -08:00
arturovt a8ec7bebf2 refactor(platform-browser): drop unsupported event target error message in production (#60016)
Drops unsupported event target error message in production and replaces it with an existing error code.

PR Close #60016
2025-03-05 14:45:50 -08:00
arturovt 5c70a048a9 refactor(core): add token to missing injection context error message (#60009)
In this commit, we add injector token information to the error message to improve debugging and context awareness, because it is hard to capture the `inject()` stack trace in asynchronous contexts.

PR Close #60009
2025-03-05 14:44:43 -08:00
arturovt 79ae35577e fix(core): check whether application is destroyed before initializing event replay (#59789)
In this commit, we check whether the application is destroyed before initializing event replay. The application may be destroyed before it becomes stable, so when the `whenStable` resolves, the injector might already be in a destroyed state. As a result, calling `injector.get` would throw an error indicating that the injector has already been destroyed.

PR Close #59789
2025-03-05 14:43:47 -08:00
arturovt 0f3fa5a2af refactor(common): drop ngIf assert template error in production (#59705)
This commit removes the `assertTemplate` error message in production.

PR Close #59705
2025-03-05 14:42:18 -08:00
cexbrayat 92250493ff fix(common): support equality function in httpResource (#60026)
The `equal` option was not passed to the underlying resource.

PR Close #60026
2025-03-05 14:41:15 -08:00
iteriani ac94604ef2 refactor(core): Remove the optional flag from Injector and all casts. (#60154)
Note that this does NOT use the retrieve method yet. I believe we need to move the logic for notFoundValue into the inject implementation.

PR Close #60154
2025-03-05 13:43:59 -08:00
Doug Parker 6ea0318df6 refactor(devtools): ignore getDirectives when it is not supported (#60209)
Previously, if `ng.getDirectives` was not implemented, Angular DevTools won't throw when attempting to load the component tree. Now it safely ignores the function and assumes no directives exist on the page.

PR Close #60209
2025-03-05 13:42:40 -08:00
Doug Parker 2866355872 refactor(devtools): make ngDebugClient return a Partial (#60209)
In general, we can't assume all applications implement the full `ng` contract as many are older Angular application which pre-date the current interface. As a result, it is safer to type this as a `Partial`.

For now, I just added non-null assertions at all current usage locations, as we do generally feature detect before using these fields. However, hopefully this `Partial` type will make it harder to accidentally call a function which might not be supported.

PR Close #60209
2025-03-05 13:42:40 -08:00
Taygan Caldwell 1d3b9148d3 refactor: add untracked to primitives (#60105)
add untracked to primitives to allow Wiz to use it

PR Close #60105
2025-03-05 12:11:40 -08:00
Vlad Boisa ce3ffb1a9c docs: change broke Pipe link (#60226)
Change broke link, swap from /guides  to /guide
PR Close #60226
2025-03-05 12:11:05 -08:00
Matthieu Riegler 68368f6214 docs(docs-infra): Use intersectionObserver for TOC (#60166)
Using IntersectionObservers simplfies the code and doesn't rely on APIs that will trigger a reflow.

PR Close #60166
2025-03-05 12:09:45 -08:00
Andrew Scott 1b6b9e283f docs: Add more pending tasks documentation in zoneless readme (#59689)
This commit expands on the pending tasks documentation in the zoneless readme

PR Close #59689
2025-03-05 12:08:58 -08:00
Andrew Scott d144c0ea60 docs(core): Update zoneless test documentation to clarify OnPush requirement (#59689)
This updates the zoneless documentation to mention that components under
test a required to be onpush compatible. This includes any wrapper
components only used in tests.

fixes #59082

PR Close #59689
2025-03-05 12:08:57 -08:00
Andrew Scott c737eeedbe docs(core): Clarify what it means to be a host for user components (#59689)
Adds a note to clarify what it means for a component to host a user
component in the context of `OnPush` restrictions.

fixes #58648

PR Close #59689
2025-03-05 12:08:57 -08:00
Doug Parker 391f833cc0 refactor(devtools): ignore getInjector when it is not supported (#60206)
Previously Angular DevTools would throw when run on an application which does not support `getInjector`, now it safely ignores it and assumes dependency injection is not supported.

PR Close #60206
2025-03-05 12:05:45 -08:00
AleksanderBodurri 22d88b06fb fix(devtools): handle case where router tree does not exist (#60221)
Previously this was throwing errors in applications with no Router token.

Now it skips emitting events for the router tree when it is unable to find the Router token.

Note: If these events don't emit, DevTools treats the RouterTree feature as disabled.

PR Close #60221
2025-03-05 12:05:01 -08:00
Miles Malerba c492db4ac9 release: cut the v20.0.0-next.1 release 2025-03-05 11:20:51 -08:00
Miles Malerba 8eebec9ce1 docs: release notes for the v19.2.1 release 2025-03-05 11:14:48 -08:00
arturovt 9b0c9ffdf6 docs(zone.js): update NON-STANDARD-APIS.md (#58098)
This commit makes some grammatical changes to the existing documentation.

PR Close #58098
2025-03-05 17:30:42 +00:00
arturovt 1ce1622fdd docs(zone.js): update STANDARD-APIS.md (#58091)
This commit makes some grammatical changes to the existing documentation and adds additional
information about events.

PR Close #58091
2025-03-05 17:28:41 +00:00
arturovt 1124b8ff0d refactor(core): inline isFactory within getNodeInjectable (#59824)
This commit inlines the `isFactory` function body directly within `getNodeInjectable` because it is only used once. ESBuild does not inline its body within the function, which can be observed when running the build with `NG_BUILD_MANGLE=0`. The results after inlining are as follows:

```
getNodeInjectable x 70,397,377 ops/sec ±3.88% (52 runs sampled)
getNodeInjectable_inlined x 77,834,432 ops/sec ±3.13% (60 runs sampled)
```

PR Close #59824
2025-03-05 17:24:52 +00:00
arturovt aa8dff80ba refactor(core): drop getNgModuleDef error message in production (#60082)
Drops `getNgModuleDef` error message in production and replaces it with an error code.

PR Close #60082
2025-03-05 17:11:06 +00:00
Angular Robot 9068163bf6 docs: update Angular CLI help [main] (#60216)
Updated Angular CLI help contents.

PR Close #60216
2025-03-05 16:54:36 +00:00
Doug Parker e51a885d27 refactor(devtools): ignore ng.applyChanges if not supported (#60207)
Previously Angular DevTools would throw if `ng.applyChanges` was not defined. Now DevTools silently ignores the issue, assuming `mutateComponentOrDirective` was sufficient to update the application.

PR Close #60207
2025-03-05 16:53:56 +00:00
Matthieu Riegler 4a8d0b7900 docs(docs-infra): fix secondary menu (#60212)
fixes #58897

PR Close #60212
2025-03-05 11:05:07 +01:00
Matthieu Riegler 62a752bbca docs(docs-infra): AppComponent cleanup (#60212)
PR Close #60212
2025-03-05 11:05:06 +01:00
Pawel Kozlowski 30ede6b1a7 refactor(docs-infra): AppComponent cleanups (#58897)
This change contains multiple cleanups in the AppComponent:
- remove unused code;
- use router input bindings instead of manual read from
  the active route;
- remove isBrowser checks from even handlers (click events
  should not be invoked on the server, right?)

PR Close #58897
2025-03-04 22:20:48 +00:00
Jeevan Mahesha c29a5d5904 docs: update Angular CLI installation instructions for npm, pnpm, yarn, and bun (#59832)
PR Close #59832
2025-03-04 22:19:47 +00:00
Jeevan Mahesha 58b33dc11a docs: extend Angular CLI installation instructions for pnpm, yarn, and bun (#59832)
PR Close #59832
2025-03-04 22:19:47 +00:00
Mithilesh Zavar ff46280596 docs(migrations): Fix indentation in documentation for signal inputs migration (#60204)
PR Close #60204
2025-03-04 22:08:29 +00:00
Emil Rowland 7eb59d3887 fix(core): added @angular/compiler as a peer dependency (#55610)
This fixes an issue with packages managers likes pmpm
that will not link the @angular/compiler package to the @angular/core
package if it is not listed as a peer dependency.
I added it as optional peer dependency as it's only used in special cases.

Fixes #38096

PR Close #55610
2025-03-04 22:06:59 +00:00
Andrew Scott fd12220a35 fix(core): defer block render failures should report to application error handler (#60149)
This commit updates error reporting of defer blocks to go to the
application root error handler rather than the `ErrorHandler` token that
may be provided by users. This ensures Angular has control over what
happens when these errors are reported.

PR Close #60149
2025-03-04 22:06:17 +00:00
Matthieu Riegler e605433f74 refactor(core): extract dirty and markForRefresh from the private ViewRef. (#59122)
This allows better tree shaking from projects without the `element` package.

PR Close #59122
2025-03-04 22:05:40 +00:00
Matthieu Riegler 286e4da52b docs(docs-infra): Throw error at build time for invalid links (#59162)
PR Close #59162
2025-03-04 20:07:23 +00:00
Samuel Perez 6dd8cce155 docs: fix all brokens links on the API pages (#59162)
This PR fix is for the broken links on the API
pages mentioned in issue #57591.

PR Close #59162
2025-03-04 20:07:23 +00:00
Matthieu Riegler bb14fe86e3 refactor(http): add context property to httpResource (#60188)
This was an oversight, `context` can be supported out of the box.

PR Close #60188
2025-03-04 19:57:21 +00:00
Matthieu Riegler 8b8e3fdca4 docs(docs-infra): Don't truncate types in symbol extraction (#59909)
PR Close #59909
2025-03-04 19:54:57 +00:00
Alexis 6f6d9f1e8a docs: Remove misleading default value DEFAULT_CURRENCY_CODE (#59977)
PR Close #59977
2025-03-04 19:37:57 +00:00
Matthieu Riegler 4aeec9fa7d refactor(core): throw an Cyclic Dependency Error in prod mode (#60118)
Prior to this change, cyclic injection didn't trigger any error in prod mode, resulting into injecting the `CIRCULAR` object.
This could lead to strange errors where no method would be found on the token.

fixes #60074

PR Close #60118
2025-03-04 19:37:19 +00:00
naaajii b4feeb5a7d docs: update license year (#59883)
updates the year in footer and placeholder for generated files

PR Close #59883
2025-03-04 19:36:47 +00:00
kirjs 3902640350 docs: mention that log format makes it analyzable for changelog generation. (#58786)
PR Close #58786
2025-03-04 19:35:54 +00:00
kirjs 215ef78295 docs: sync the scope lists and drop ve (#58786)
PR Close #58786
2025-03-04 19:35:54 +00:00
kirjs 390139e3e1 docs: address comments (#58786)
PR Close #58786
2025-03-04 19:35:54 +00:00
kirjs 7ecaffc008 docs: move commit message guidelies to a separate file (#58786)
PR Close #58786
2025-03-04 19:35:54 +00:00
michael-small bec6e566bb docs: update version table for 19.2 (#60173)
PR Close #60173
2025-03-04 17:47:09 +00:00
hawkgs 2b114e784d docs(docs-infra): API doc content rendering fixes (#60116)
The PR introduces a few doc content rendering fixes:
- Fix highlighted section heading styles (regression from #59965).
- Convert JSDoc links within 'Usage Notes' sections to HTML and render them.
- Add IDs to doc content headings. This, by itself, makes these headings available in the page ToC.

PR Close #60116
2025-03-04 17:46:30 +00:00
Miles Malerba ffb19e64f1 fix(compiler-cli): preserve required parens for nullish coalescing (#60060)
Fixes outputted nullish coalescing expressions to not drop parentheses
when it would change the meaning of the expression.

PR Close #60060
2025-03-04 17:44:54 +00:00
Miles Malerba 7e2d5c2203 test(compiler-cli): Update tests for nullish coalescing (#60060)
Updates tests to reflect the fact that we no loger down-level nullish
coalescing.

PR Close #60060
2025-03-04 17:44:53 +00:00
Miles Malerba 2a23209b08 refactor(compiler): stop down-leveling nullish coalescing (#60060)
Stop down-leveling the nullish coalescing (`??`) operator in templates.
Depending on the ES version typescript may still down-level it.

PR Close #60060
2025-03-04 17:44:53 +00:00
Kristiyan Kostadinov 326d48afb4 feat(core): drop support for TypeScript older than 5.8 (#60197)
Narrows down the versions of TypeScript we need to support.

BREAKING CHANGE:
* TypeScript versions less than 5.8 are no longer supported.

PR Close #60197
2025-03-04 17:39:06 +00:00
Andrew Scott d5e91e04ff fix(language-service): Forward the tags for quick info from the type definition (#59524)
Prior to this commit, the tags from the type definition were dropped.
Tags may include, but are not limited to, deprecation information from
the jsdoc.

PR Close #59524
2025-03-04 17:37:22 +00:00
Andrew Scott 739cadae62 fix(common): Handle errors in async pipe subscriptions (#60057)
`AsyncPipe` would previously promise rejections unhandled and
subscription errors uncaught. This is more or less fine in a Zone-based
application because errors inside the Angular Zone are caught be the
Zone's error trap and reported to `ErrorHandler`. However, in zoneless
applications, these errors are never caught or reported by the FW and
can reach the node process in SSR and cause it to shut down.

BREAKING CHANGE: `AsyncPipe` now directly catches unhandled errors in
subscriptions and promises and reports them to the application's
`ErrorHandler`. For Zone-based applications, these errors would have
been caught by ZoneJS and reported to `ErrorHandler` so the result is
generally the same. The change to the exact mechanism for reporting can
result in differences in test environments that will require test
updates.

PR Close #60057
2025-03-04 17:35:01 +00:00
Lang 0007d20fc9 docs: fix the wrong way to get a signal value (#59194)
PR Close #59194
2025-03-04 17:28:08 +00:00
Lang 5bfe637705 docs: fix typo (#59194)
Co-authored-by: Enea Jahollari <jahollarienea14@gmail.com>
PR Close #59194
2025-03-04 17:28:08 +00:00
Lang 3f65b32ee7 docs: use model API in two-way binding example (#59194)
PR Close #59194
2025-03-04 17:28:08 +00:00
Miles Malerba 2e03a8685b docs(docs-infra): Improve support for @link within the jsdoc. (#60201)
PR Close #60201
2025-03-04 17:13:42 +00:00
hawkgs 56ff3fc5d5 docs: fix AnimationGroupMetadata description (#59733)
Fix the `animations/group()` link.

PR Close #59733
2025-03-04 17:12:10 +00:00
Jeevan Mahesha e7d0113dad docs: update template syntax to new control flow (#59760)
PR Close #59760
2025-03-04 17:07:05 +00:00
Matthieu Riegler ba94f6f84f docs(docs-infra): hide github link for external repos. (#60114)
fixes #60113

PR Close #60114
2025-03-04 17:02:37 +00:00
Matthieu Riegler 1bf7494bb3 docs(docs-infra): remove animation package (#60165)
PR Close #60165
2025-03-04 17:01:46 +00:00
Angular Robot f602e5d66c build: update dependency @types/chrome to ^0.0.307 (#60195)
See associated pull request for more information.

PR Close #60195
2025-03-04 17:00:21 +00:00
Matthieu Riegler 09e17eb718 docs(docs-infra): wait for the DOM to be rendered (#60163)
the code inside `renderExample` is explicitly querying the DOM. We need to wait for it to be rendered for those functions to work.

PR Close #60163
2025-03-04 16:58:14 +00:00
Kristiyan Kostadinov f2cdb7d9b4 build: update to TypeScript 5.8 final (#60176)
Updates the repo to stable version of TypeScript 5.8.

PR Close #60176
2025-03-04 16:57:35 +00:00
vladboisa a58b038bb1 docs: change broke link (#60189)
Change the broked link to the working one

PR Close #60189
2025-03-03 22:20:53 +00:00
Pawel Kozlowski 809b5b4596 feat(core): introduce new DI profiling event (#60158)
This change introduces a new DI profiler event:
InjectorToCreateInstanceEvent. This new event allows
us to measure DI tokens instantiation time.

PR Close #60158
2025-03-03 22:06:50 +00:00
Alan Agius d92fba084b refactor(compiler): remove ngcc binary (#60185)
Remove ngcc deprecation binary

PR Close #60185
2025-03-03 22:05:22 +00:00
Kristiyan Kostadinov a3cb7b9497 refactor(core): allow InputBinding and OutputBinding to be tree shaken (#60137)
Reworks the `InputBinding` and `OutputBinding` functionality to be in object literals constructed in functions, rather than classes, because it seems like Terser was having a hard time tree shaking the classes when the functions weren't used.

PR Close #60137
2025-03-03 22:04:49 +00:00
Kristiyan Kostadinov be44cc8f40 feat(core): support listening to outputs on dynamically-created components (#60137)
Adds the new `outputBinding` function that allows users to listen to outputs on dynamically-created components in a similar way to templates. For example, here we create an instance of `MyCheckbox` and listen to its `onChange` event:

```ts
interface CheckboxChange {
  value: string;
}

createComponent(MyCheckbox, {
  bindings: [
   outputBinding<CheckboxChange>('onChange', event => console.log(event.value))
  ],
});
```

Note that while it has always been possible to listen to events like this by getting a hold of of the instance and subscribing to it, there are a few key differences:
1. `outputBinding` behaves in the same way as if the event was bound in a template which comes with some behaviors like forwarding errors to the `ErrorHandler` and marking the view as dirty.
2. With `outputBinding` the listeners will be cleaned up automatically when the component is destroyed.
3. `outputBinding` accounts for host directive outputs by binding to them through the host. E.g. if the `onChange` event above was coming from a host directive, `outputBinding` would bind to it automatically.

Currently `outputBinding` is available only in `createComponent`, `ViewContainerRef.createComponent` and `ComponentFactory.create`, but it will serve as a base for APIs in the future.

PR Close #60137
2025-03-03 22:04:49 +00:00
Kristiyan Kostadinov 3459faadbf fix(core): do not allow setInput to be used with inputBinding (#60137)
Calling `setInput` while the component already has an `inputBinding` active can lead to inconsistent state. These changes add an error that will be thrown if that's the case.

PR Close #60137
2025-03-03 22:04:49 +00:00
Kristiyan Kostadinov fe57332fc5 feat(core): add input binding support to dynamically-created components (#60137)
Adds the ability to bind to inputs on dynamically-created components, either by targeting the component itself or one of its directives. The new API looks as follows:

```ts
const value = signal(123);

createComponent(MyComp, {
  // Bind the value `'hello'` to `someInput` of `MyComp`.
  bindings: [inputBinding('someInput', () => 'hello')],

  directives: [{
    type: MyDir,
    // Bind the `value` signal to the `otherInput` of `MyDir`.
    bindings: [inputBinding('otherInput', value)]
  }]
});
```

This behavior overlaps with `ComponentRef.setInput`, with a few key differences:
1. `setInput` sets the value on *all* inputs whereas `inputBinding` only targets the specified directive and its host directives. This makes it easier to know which directive you're targeting.
2. `inputBinding` is executed as if it's in a template, making it consistent with how bindings behave for selector-matched components, whereas `setInput` executes outside the lifecycle of the component.
3. It resolves a long-standing issue with `setInput` where it wasn't possible to set the initial value of an input before the first change detection run.

Currently `inputBinding` is used only for `createComponent`, `ViewContainerRef.createComponent` and `ComponentFactory.create`, however it is going to be base for more APIs in the future.

PR Close #60137
2025-03-03 22:04:49 +00:00
Kristiyan Kostadinov ea5eb28865 fix(core): input targeting not checking if input exists on host (#60137)
Fixes that the `setDirectiveInput` function wasn't checkin if an input exists before writing to it which can lead to assertion errors.

PR Close #60137
2025-03-03 22:04:49 +00:00
Kristiyan Kostadinov a97e10d623 refactor(core): set up underlying input binding symbols (#60137)
Sets up the symbols used to power the upcoming `inputBinding` functionality.

I also fixed that `setDirectiveInput` was incorrectly only allowing strings for the `value` parameter.

PR Close #60137
2025-03-03 22:04:49 +00:00
Kristiyan Kostadinov 82aa2c1a52 feat(core): add the ability to apply directives to dynamically-created components (#60137)
Updates `createComponent`, `ViewContainerRef.createComponent` and `ComponentFactory.create` to allow the user to specify directives that should be applied when creating the component.

PR Close #60137
2025-03-03 22:04:49 +00:00
Kristiyan Kostadinov 25cae4555a refactor(core): add assertion parameter to getDirectiveDef (#60137)
Some upcoming functionality won't work if we can't retrieve a directive definition from a class. These changes add a `throwIfNotFound` to `getDirectiveDef`, similar to `getNgModuleDef`, to avoid duplication in such cases.

PR Close #60137
2025-03-03 22:04:48 +00:00
Kristiyan Kostadinov 2b12b8a569 refactor(core): move duplicate directive check outside of host directives (#60137)
The check that verifies that there are no duplicates in the directives array was only running after host directive matching since that was the only case when it can happen. After the upcoming changes that won't be the case anymore so these changes move it always run after directive matching.

I also did some additional cleanup by adding comments and by not lazily initializing the `allDirectiveDefs` array when matching host directives. The array is guaranteed to be defined since earlier in the function we verify that there's at least one def with host directives.

PR Close #60137
2025-03-03 22:04:48 +00:00
Kristiyan Kostadinov 93304630a7 refactor(core): move createComponent tests into a separate file (#60137)
Moves the tests for `createComponent` into their own file since the `component_spec.ts` was a bit too generic and was accumulating all sorts of tests.

PR Close #60137
2025-03-03 22:04:48 +00:00
AleksanderBodurri d260ca3091 feat(core): emit template function for template related profiler hooks (#60174)
Previously, the profiler would only emit the specific template event and context when a template is created/updated, but not the template function related to the event.

This commit emits this function by using the third argument of the profiler function, which previously was only used for lifecycle hooks and output listeners. This commit also renames this arg to eventFn to express that it varies depending on the event type emitting from the profiler.

Note: this change is fully backwards compatible, since previously these template events did not use the third arg of the profiler function.

PR Close #60174
2025-03-03 22:03:44 +00:00
Andrew Scott a3575e204a refactor(core): Update push/replace navigation to not trigger popstate (#60028)
This matches the spec, though there is a bug in chrome that does trigger these events.

PR Close #60028
2025-03-03 18:40:58 +00:00
Andrew Scott 2e8b84f086 refactor(core): Update fake navigation to more closely follow the spec (#60028)
This commit updates the implementation of the fake navigation to more
closely follow the spec. This includes links to spec parts as well as
some reorganization to have the flow of the code more exactly follow the
corresponding steps in the spec. This makes it easier to verify that th
behavior is correct.

PR Close #60028
2025-03-03 18:40:58 +00:00
Andrew Scott ae9c7225d4 refactor(core): Ensure fake navigation is not aborted after it succeeds (#60028)
The navigate event was only ever being cleared when a new navigation
happened. That new navigation would abort the previous one, even if it
had already finished successfully.

PR Close #60028
2025-03-03 18:40:58 +00:00
arturovt 36b60a9705 fix(common): clean up onUrlChange listener when root scope is destroyed (#60004)
This cleans up the `onUrlChange` listener once the root scope is destroyed.

PR Close #60004
2025-03-03 17:14:33 +00:00
Andrew Scott 7232ce5b17 fix(core): Catch and report rejections in async function of PendingTasks.run (#60044)
This commit ensures that rejections of the promise of the async function
passed to `PendingTasks.run` are not dangling and get reported to the
application error handler. This prevents what would likely be a common
dangling promise that could end up crashing the node process.

BREAKING CHANGE: `PendingTasks.run` no longer returns the result of the
async function. If this behavior is desired, it can be re-implemented
manually with the `PendingTasks.add`. Be aware, however, that promise rejections
will need to be handled or they can cause the node process to shut down
when using SSR.

PR Close #60044
2025-03-03 17:13:33 +00:00
Doug Parker d9af1bbf52 release: bump Angular DevTools version to 1.0.24 (#60148)
PR Close #60148
2025-03-03 17:12:23 +00:00
Miles Malerba 51b8ff23ce feat(compiler): support tagged template literals in expressions (#59947)
Adds support for using tagged template literals in Angular templates.

Ex:
```
@Component({
  template: '{{ greet`Hello, ${name()}` }}'
})
export class MyComp {
  name = input();

  greet(strings: TemplateStringsArray, name: string) {
    return strings[0] + name + strings[1] + '!';
  }
}
```

PR Close #59947
2025-02-28 19:53:33 +00:00
Andrew Scott f9043e24ac fix(compiler-cli): ensure template IDs are not reused if a source file changes (#60152)
This commit fixes a bug where nodes are reused across incremental
compilations. The source file's next template ID is lost because a new
source file is created but nodes may still be retained.

PR Close #60152
2025-02-28 19:53:05 +00:00
Vlad Boisa b326f48fab docs: fix not working links (#60160)
Remove JSDocs link, and replace the automatic linking with a regular markdown link

Fixes #59983

PR Close #60160
2025-02-28 19:52:32 +00:00
iteriani 78b27a83fb refactor(core): Move getCurrentInjector/setCurrentInjector to primitives package. (#60090)
This change casts the injector back and forth since all instances of
injector currently don't implement the `retrieve` method. Note that
the retrieve method is seen as optional, so that Angular can revert back to
inject if necessary.

PR Close #60090
2025-02-28 18:47:08 +00:00
Kristiyan Kostadinov af02914852 fix(core): cache ComponentRef inputs and outputs (#60156)
The set of inputs and outputs of a component is static, but the getter for the `inputs` and `outputs` property was re-computing them every time which the user might not expect. These changes add a couple of lines to cache them instead.

PR Close #60156
2025-02-28 16:31:04 +00:00
Jessica Janiuk 7ab0a8d1e7 fix(core): prevents event replay from being called on comment nodes (#60130)
In some rare cases with directives, it is possible that the stash function might be called on a comment node. This actually verifies that the node is an element and exits otherwise.

fixes: #60070

PR Close #60130
2025-02-28 16:30:27 +00:00
Jessica Janiuk 8a73327ba0 refactor(core): clean up event replay tests (#60130)
This updates the event replay tests to make them share the structure and utility functions used by hydration tests. This also resolves some soft errors in the event replay tests.

PR Close #60130
2025-02-28 16:30:27 +00:00
Miles Malerba b70ad3c4e6 fix(compiler): proper handling of typeof, void in RecursiveAstVisitor (#60101)
Handle typeof and void expressions the same way as other unary operator
expressions.

PR Close #60101
2025-02-28 16:28:10 +00:00
Miles Malerba 7c9b4892e9 fix(compiler-cli): preserve required parens in exponentiation expressions (#60101)
Parentheses are required around a unary operator used in the base of an
exponentiation expression. For example: `(-1) ** 3`

PR Close #60101
2025-02-28 16:28:10 +00:00
Miles Malerba 4fe489f1b4 fix(compiler): exponentiation should be right-to-left associative (#60101)
For example, `a ** b ** c` should be equivalent to `a ** (b ** c)`,
not `(a ** b) ** c`

PR Close #60101
2025-02-28 16:28:10 +00:00
Matthieu Riegler 265387a6c8 refactor(migrations): Don't migrate twice the same file on the self-closing tag migration (#60065)
This commit fixes an issue when ts files are referenced multiple times (and thus analyzed multiple times) for example from a `tsconfig.json` and `tsconfig.spec.json`.

PR Close #60065
2025-02-28 16:27:40 +00:00
hawkgs c2a46d2217 refactor(devtools): use more appropriate cursor types while panning in the tree vis (#60141)
Use `grab` and `grabbing` cursors while panning. They are the de facto standard.

PR Close #60141
2025-02-27 18:31:02 +00:00
Hakeem a0dc0cb331 docs(docs-infra): add a tooltip to show the full text when nav item text is lengthy (#59038)
PR Close #59038
2025-02-27 18:25:19 +00:00
Hakeem e935ff11e2 docs(docs-infra): handle long names in the sub nav (#59038)
PR Close #59038
2025-02-27 18:25:18 +00:00
Angular Robot b3b76341f2 build: update actions/cache digest to d4323d4 (#60145)
See associated pull request for more information.

PR Close #60145
2025-02-27 18:23:42 +00:00
arturovt 25db666a93 refactor(animations): tree-shake regular expressions (#60095)
Adds a pure annotation to regular expressions because if the animations package is indirectly referenced in the code, it would include regular expressions in the bundle, even if they're unused (since `new` is side-effectful).

PR Close #60095
2025-02-27 17:53:24 +00:00
Angular Robot ae7bb9b707 build: lock file maintenance (#60073)
See associated pull request for more information.

PR Close #60073
2025-02-27 17:45:05 +00:00
Lang 1ef1ec9960 docs: replace NgIf with new template syntax @if (#59159)
PR Close #59159
2025-02-27 17:41:53 +00:00
Miles Malerba a75566a9be refactor(compiler): rework how parens are emitted (#60127)
Instead of using a property on BinaryOperatorExpr / UnaryOperatorExpr,
introduce a ParenthesizedExpr which can be used to parenthesize any
expression.

PR Close #60127
2025-02-27 17:41:05 +00:00
ColinJolivet 08d9081573 refactor(docs-infra): remove expand button in example viewer if there is no hidden lines (#59086)
Remove the expand button of an example viewer if there is no hidden lines in it, in order not to confuse people

PR Close #59086
2025-02-27 15:48:02 +00:00
Matthieu Riegler 4812215a7b feat(core): Expose Injector.destroy on Injector created with Injector.create (#60054)
There is no implementation change, this only expose `destroy` in a case where the injector can be owned in userland.

PR Close #60054
2025-02-27 15:46:13 +00:00
Jessica Janiuk 0dbf693a4d fix(core): prevent invoking replay listeners on disconnected nodes (#60103)
This prevents replay from happening on nodes that have been removed from the DOM.

fixes: #59841

PR Close #60103
2025-02-27 15:45:14 +00:00
Matthieu Riegler a550c8c836 docs(docs-infra): remove tutorial redirection (#60138)
PR Close #60138
2025-02-27 15:41:19 +00:00
Hryhorii Avcharov 4078895caf docs: fix mermaid event node text visibility in light mode (#60124)
PR Close #60124
2025-02-27 00:27:12 +00:00
kirjs ab2ee22c3d release: cut the v20.0.0-next.0 release 2025-02-26 16:52:39 -05:00
Jessica Janiuk ef18755555 build: add ignore revs file for git blame (#60117)
This allows for setting git and vscode gitlens to ignore specific commit hashes for bulk changes.

PR Close #60117
2025-02-26 16:19:25 -05:00
kirjs 68d1357ef1 docs: release notes for the v19.2.0 release 2025-02-26 16:12:59 -05:00
kirjs c9fd74f394 docs: release notes for the v19.1.8 release 2025-02-26 14:13:02 -05:00
hawkgs b07010087a fix(devtools): minor UI/UX improvements of the Injector Providers panel (#59531)
- The token rendered in the first col of the table is now being truncated in favor of the horizontal scroll of the panel which should make the log button accessible/visible all the time
- Introduced a "No such providers" label when a filter is applied
- The icon of the logProvider button has been substituted with `code` (as per the doc)
- The font size and width of the provider type filter have been slightly improved

PR Close #59531
2025-02-26 12:34:40 -05:00
hawkgs 911a210ff0 refactor(devtools): introduce tree-visualizer-host (#59916)
The purpose of this component is purely to encapsulate and offload the styles from `devtools.component.scss` since it wasn't very clear what their scope is.

PR Close #59916
2025-02-26 12:18:06 -05:00
Matthieu Riegler 65e54ae56c docs(docs-infra): remove explicit dectectChanges() (#60098)
PR Close #60098
2025-02-26 12:00:57 -05:00
Andrew Scott 962b59b14e fix(core): Ensure ComponentFixture does not duplicate error reporting from FakeAsync (#60104)
When using `fakeAsync`, if errors happen inside the Angular zone, they
are also handled by the fakeAsync machinery. Rethrowing errors from the
`NgZone.onError` subscription is not appropriate in this case because it
results in the error being thrown twice.

https://github.com/angular/angular/blob/db2f2d99c82aae52d8a0ae46616c6411d070b35e/packages/zone.js/lib/zone-spec/fake-async-test.ts#L783-L784
https://github.com/angular/angular/blob/db2f2d99c82aae52d8a0ae46616c6411d070b35e/packages/zone.js/lib/zone-spec/fake-async-test.ts#L473-L478

PR Close #60104
2025-02-26 11:56:18 -05:00
Matthieu Riegler 919c4521ec refactor(http): rename map to parse on HttpResourceOptions (#60112)
This reflects more the feature intended for this callback.

PR Close #60112
2025-02-26 11:52:43 -05:00
lilbeqiri 9ed4b54166 feat(devtools): add the onpush label for marked onpush components in the components tree view (#60059)
For components that are marked as onpush, a label will be displayed in the components tree view.

PR Close #60059
2025-02-26 11:20:22 -05:00
arturovt 8742f9cc74 refactor(core): tree-shake REF_EXTRACTOR_REGEXP (#60081)
The `REF_EXTRACTOR_REGEXP` is a `new` expression that has side effects and is not dropped in production, even if it is unused.

PR Close #60081
2025-02-26 11:17:48 -05:00
arturovt 11ab5db9bd refactor(core): inline depPath in throwCyclicDependencyError to be dropped (#60084)
Inlines the `depPath` within the `throwCyclicDependencyError`, because it's not being tree-shaken in production.

PR Close #60084
2025-02-26 11:10:36 -05:00
Jens Kuehlers d85ebb4475 docs: move release date for v20 by one week (#60111)
PR Close #60111
2025-02-26 11:00:40 -05:00
Andrew Scott db2f2d99c8 fix(router): Scroller should scroll as soon as change detection completes (#60086)
Using `setTimeout` to delay scrolling can result in scrolling in the
next frame and cause noticeable flicker. This commit races rAF and
timeout to ensure scroll happens before the render.

fixes #53985

PR Close #60086
2025-02-25 14:17:07 -05:00
hawkgs a0f37224c3 refactor(devtools): use new theme mixins in the stylesheets (#59978)
Use the newly introduced theme mixins in the stylesheets.

PR Close #59978
2025-02-25 14:15:16 -05:00
arturovt 27dfe272b3 refactor(forms): tree-shake _checkParentType in production (#60041)
In this commit, we move `_checkParentType` to a separate function to avoid a redundant prototype method in production.

PR Close #60041
2025-02-25 14:12:42 -05:00
Andrew Scott b9306719df fix(language-service): provide correct rename info for elements (#60088)
This commit ensures we do not block element rename if it is supported by
other rename providers.

fixes https://github.com/angular/vscode-ng-language-service/issues/2077

PR Close #60088
2025-02-25 14:10:53 -05:00
hawkgs e970ad0cdb refactor(devtools): redesign dependency resolution path visualization (#60011)
Use the new UI and drop the `InjectorTreeVisualizer` dependency. Additionally, use concrete values for `SerializedInjector.type` type instead of `string`.

PR Close #60011
2025-02-25 14:07:06 -05:00
Kristiyan Kostadinov 07338c0aeb fix(common): make types for HttpClient more readable (#59901)
`HttpClient` has a lot of overloads to achieve proper type checking, however each overload is also very long which makes it hard to read on adev. These changes replace the object literal types with `Record` to make them a bit more concise.

PR Close #59901
2025-02-25 13:01:09 -05:00
Andrew Scott 7c12cb1df9 feat(router): Allow resolvers to read resolved data from ancestors (#59860)
This commit updates the resolver execution to ensure that resolvers in
children routes are able to read the resolved data from anything above
them in the route tree. Because resolvers on one level block execution
of those below, it seems more of an oversight in the initial
implementation than anything else that this wasn't already possible.

resolves #47287

PR Close #59860
2025-02-25 12:34:40 -05:00
Andrew Scott 491b0a4ead fix(core): Remove duplicate reporting of errors in CDR.detectChanges (#60056)
This change removes the reporting of errors from the
`ChangeDetectorRef.detectChanges` API. The reporting results in the
error being "handled" in two ways, both by reporting to error handler
and rethrowing the error. This rethrown error generally ends up being
caught further up and again reported to the error handler. The error
handler is meant to be for uncaught errors, and since Angular is not at
the top of the stack of the call of `CDR.detectChanges`, it does not
know what is being done with the rethrown error.

Note that for zone-based applications, this will likely have no effect
other than removing duplicate reporting of the error. If the rethrown
error is not already being caught, it will reach the NgZone's error
trap and still be reported to the application `ErrorHandler`.

PR Close #60056
2025-02-25 12:20:22 -05:00
Pawel Kozlowski af2e79eb41 refactor(core): remove performance mark feature for signals (#59991)
Remove the performance mark feature from the Angular signal impl
so more code can be shared between primitives and other frameworks.

PR Close #59991
2025-02-25 11:10:07 -05:00
Miles Malerba f2d5cf7edd feat(compiler): support exponentiation operator in templates (#59894)
Adds support for the exponentiation (`**`) operator in templates

Ex:
```
@Component {
  template: '{{2 ** 3}}'
}
```

PR Close #59894
2025-02-25 11:03:37 -05:00
Miles Malerba 0361c2d81f feat(compiler): support void operator in templates (#59894)
Add support for the `void` operator in templates and host bindings.

This is useful when binding a listener that may return `false` and
unintentionally prevent the default event behavior.

Ex:
```
@Directive({
  host: { '(mousedown)': 'void handleMousedown()' }
})
```

BREAKING CHANGE: `void` in an expression now refers to the operator

Previously an expression in the template like `{{void}}` referred to a
property on the component class. After this change it now refers to the
`void` operator, which would make the above example invalid. If you have
existing expressions that need to refer to a property named `void`,
change the expression to use `this.void` instead: `{{this.void}}`.

PR Close #59894
2025-02-25 11:03:37 -05:00
Kristiyan Kostadinov 334d851010 refactor(core): add infrastructure for setting inputs on specific directives (#60075)
Sets up the infrastructure that will allow to write only to a specific directive and its host directives as a base for future functionality.

I've also renamed `setInputsForProperty` to be a bit more explicit that its sets all inputs.

PR Close #60075
2025-02-25 10:58:51 -05:00
Kristiyan Kostadinov 87a0fb9997 refactor(core): avoid memory allocations if there are no host directives (#60075)
Currently the host directive logic disassembles and re-assembles the array of directive matches, in case there are host directives which in most cases produces an identical array.

These changes add some logic so that we only need to allocate the additional memory if we actually need it.

PR Close #60075
2025-02-25 10:58:50 -05:00
Kristiyan Kostadinov 98bde739ac refactor(core): move component logic out of host directives resolution (#60075)
In order to mark a TNode as a component, we need to store the index of the component definition. Currently this happens in the logic that resolves host directives, because the component's host directives can move affect the index.

These changes move the logic out into the directive initialization logic since it doesn't have much to do with host directives.

PR Close #60075
2025-02-25 10:58:50 -05:00
Kristiyan Kostadinov 22d13bfba7 refactor(core): track match index of directives (#60075)
If we want to target an input write to a directive, we have to know the index at which its instance is stored. Technically we can already find this by looking through `TView.data`, but that'll require a linear lookup for each write which can get slow.

These changes introduce the new `TNode.directiveToIndex` map which allows us to quickly find the index of a directive based on its definition, as well as any host directives that its might've brought in.

PR Close #60075
2025-02-25 10:58:50 -05:00
Angular Robot 6c9247cf58 build: update all non-major dependencies (#60093)
See associated pull request for more information.

PR Close #60093
2025-02-25 10:49:23 -05:00
Angular Robot 349bc5351b build: update io_bazel_rules_sass digest to 3b3667f (#60092)
See associated pull request for more information.

PR Close #60092
2025-02-25 10:45:34 -05:00
Angular Robot 1f345c22ba build: update scorecard action dependencies (#60094)
See associated pull request for more information.

PR Close #60094
2025-02-25 10:43:26 -05:00
mgechev 8df2c96526 docs: add a page for custom build pipeline (#60058)
Add a documentation page for creating a custom build pipeline
with community plugins.

PR Close #60058
2025-02-25 10:40:34 -05:00
Aristeidis Bampakos 0d37abe103 docs: update security guide (#59885)
PR Close #59885
2025-02-25 10:24:26 -05:00
Stephen Hicks 74cceba587 feat(common): throw error for suspicious date patterns (#59798)
Adjusts the date pipe and formatDate function to detect suspicious usages of the week-numbering year formatter without including the week number, as this is often confused for the calendar year and likely to result in incorrect results near New Years, meaning that those issues aren't typically caught during development. This commit starts throwing a development-only error to reveal this issue right away.

BREAKING CHANGE:

Using the `Y` formatter (week-numbering year) without also including `w` (week number) is now detected as suspicious date pattern, as `y` is typically intended.

PR Close #59798
2025-02-24 17:15:03 -05:00
Matthieu Riegler e4ef74dbde build: temporarily patch @angular/build (#60024)
This is to allow building adev with the fw version bumped to v20 (CLI v20 isn't released yet)

PR Close #60024
2025-02-24 17:10:04 -05:00
Andrew Scott c14df6dff4 build: update main to target v20 (#60024)
build: update main to target v20

PR Close #60024
2025-02-24 17:10:04 -05:00
Kristiyan Kostadinov e601bdca8a fix(core): capture stack for HMR errors (#60067)
Currently we send the `message` of an error thrown during HMR. That's usually not enough so now we also capture the stack trace.

Relates to https://github.com/angular/angular-cli/issues/29695.

PR Close #60067
2025-02-24 11:56:15 -05:00
Kristiyan Kostadinov 4853129a7d test(core): clean up explicit standalone flags from tests (#60062)
Now that standalone is the default, we don't need to specify it in tests anymore.

PR Close #60062
2025-02-24 11:27:44 -05:00
hawkgs 1618595473 refactor(devtools): drop @ from inputs and outputs label (#60053)
Drop '@' from inputs and outputs label to fit in with the new signal-based API.

PR Close #60053
2025-02-24 10:49:12 -05:00
Evgeniy Aksyonov 669fb6722f docs: fix typo in outputs.md for migrations section (#60055)
PR Close #60055
2025-02-24 10:46:22 -05:00
hawkgs 8145b6e7a4 docs(docs-infra): fix the top position of the search dialog (#60012)
Instead of centering the dialog, fix the top position in such way that when the results container is full, the dialog looks centered. This prevents the dialog from "jumping" when you type and the results change.

PR Close #60012
2025-02-24 10:44:18 -05:00
Charles Lyding 17c84e5a03 docs: use @angular/build directly in example/tutorial projects (#60046)
By using the `@angular/build` package directly within projects for each
example and tutorial, the total install size can be reduced. This lowers the amount
of time required to be spent setting up the dependencies in browser
before the example is displayed.

The `@angular/build@19.2.0-next.2` package currently has a total unpacked size of ~115 MB.
The `@angular-devkit/build-angular@19.2.0-next.2` package currently has a total unpacked size of ~291 MB.

This also removes the now unneeded `NG_BUILD_PARALLEL_TS=0` environment variable usage.

PR Close #60046
2025-02-24 10:14:17 -05:00
Kristiyan Kostadinov 628ab4033b refactor(core): do not store input/output public names (#60036)
Reworks the `TNode.inputs` and `TNode.outputs` to not store the public names of bindings. The only reason they were stored was for host directive re-aliasing which is handled through a different data structure now.

PR Close #60036
2025-02-21 14:07:34 -05:00
Kristiyan Kostadinov 9f44b41053 refactor(core): separate host directive inputs from selector-matched ones (#60036)
Currently `TNode.inputs`/`TNode.outputs` store all of the available bindings on that node, no matter if they came from a directive that the user applied directly or from a host directive. This has a couple of drawbacks:
1. We need to store more information that necessary. For example, the only reason we have strings in the arrays is to facilitate host directive aliasing.
2. It doesn't allow us to distinguish which host directives belong to which selector-matched directives.

These changes are a step towards resolving both issues by storing the host directive binding information in separate data structures.

PR Close #60036
2025-02-21 14:07:34 -05:00
Kristiyan Kostadinov 0cac2a22c0 refactor(core): rework how inputs/outputs are initialized (#60036)
Reworks the functions that create the `initialInputs`, `inputs` and `outputs` structures to initilize them within the function, instead of returning them to be initialized later. This will simplify future refactors where they'll produce more than one piece of information.

PR Close #60036
2025-02-21 14:07:34 -05:00
Jessica Janiuk aa583392e3 docs: remove todo from jsdoc (#60042)
This removes TODO from a JSDoc block that made it show up on adev.

PR Close #60042
2025-02-21 11:16:48 -05:00
Pawel Kozlowski 5b7a936aff refactor(core): remove duplicated checks for ngNonBindable (#60048)
This refactoring consolidates logic around detecting ngNonBindable
mode - previously those checks were done in two separate places.
By doing the check in one place we can simplify the directive resolution
logic.

PR Close #60048
2025-02-21 11:08:49 -05:00
Jessica Janiuk 6e1ead6f93 refactor(core): clean up when blocks fail to fetch or hydrate (#59740)
There are cases where resources fail to fetch or the DOM has changed due to an if block. This should clean up the remaining promises and any registry references to those blocks in that case.

PR Close #59740
2025-02-21 11:08:03 -05:00
arturovt 35e25f690c refactor(core): drop platform check in ImagePerformanceWarning (#59809)
Replaces `PLATFORM_ID` checks with `ngServerMode`.

PR Close #59809
2025-02-20 12:32:22 -05:00
hawkgs c513e5dc2b refactor(devtools): fix component inspector highlighting (#59995)
Use `position: absolute` instead of `position: fixed`. This fixes the odd behavior that can be reproduced when scrolling.

PR Close #59995
2025-02-20 11:56:08 -05:00
Trevor Florence 7a8e8f37c0 fix(benchpress): Ensure future-proof correct initialization order (#60025)
Future changes to initialization order can cause this previously OK code to start having compiler erroring like: `TS2729: Property 'foo' is used before its initialization.`

PR Close #60025
2025-02-20 11:21:53 -05:00
muhammadali1658 af5155f197 docs: Fix typo ')' in banner-initial.component.spec.ts (#60032)
PR Close #60032
2025-02-20 11:03:10 -05:00
Joey Perrott b7dd5a1ef2 ci: update deploy doc site script (#60021)
Update the checked in version of the deploy script

PR Close #60021
2025-02-19 21:01:31 +00:00
Miles Malerba f2d51c9ba2 build: remove circular deps goldens (#60021)
Removes the circular dependencies golden file and cleans up the
associated pullapprove group. All circular dependencies have been
removed and no new ones may be added.

PR Close #60021
2025-02-19 21:01:31 +00:00
Miles Malerba d87097ba7c build: update to latest @angular/ng-dev version (#60021)
Update to the latest version to gain circular deps updates.

PR Close #60021
2025-02-19 21:01:31 +00:00
Andrew Scott 8657a0e4cc refactor(core): Add fake navigation to primitives for code sharing (#59857)
This moves the `FakeNavigation` implementation to the primitives folder
so its implementation can be shared with Wiz. This class was initially
copied directly from the Wiz implementation, with some small modifications.
There will still need to be some work done to align the implementations
and fix anything internally that needs adjusting.

PR Close #59857
2025-02-19 20:09:10 +00:00
Jessica Janiuk 8c1b196ecd docs: release notes for the v19.2.0-rc.0 release 2025-02-19 14:04:16 -05:00
Jessica Janiuk 58482bb24b release: bump the next branch to v19.3.0-next.0 2025-02-19 14:04:16 -05:00
Jessica Janiuk 497028cc52 docs: release notes for the v19.1.7 release 2025-02-19 13:44:52 -05:00
arturovt 40dc99da9c refactor(common): inline supports check in slice pipe (#59684)
The refactored version improves the original code by removing the `supports` method from the prototype and inlining the logic directly into the `transform` method. This reduces indirection and simplifies the class, especially since `supports` is not reused elsewhere. ESBuild can directly inline the condition into the `if` statement by removing the variable: `if (!("string" == typeof e || Array.isArray(e))) throw i(s, e);`.

PR Close #59684
2025-02-19 15:22:49 +00:00
arturovt b2947e83f7 refactor(forms): remove _checkFormPresent and move directly to ngOnChanges (#59741)
In this commit, we remove `_checkFormPresent` because it is a no-op in production. We move its body directly into `ngOnChanges` to eliminate the redundant method from the prototype. Previously, `_checkFormPresent` was being called with no body in production each time `ngOnChanges` was executed.

PR Close #59741
2025-02-19 15:22:13 +00:00
arturovt cf3a5073ec refactor(core): improve stringify (#59745)
In this commit, we improve branching in the `stringify` function, which is widely used by the framework, and add additional comments for clarification. Benchmark results of the old and new implementations (using `slice` makes it slightly faster) are as follows:
```
stringify (old version) x 117,945,419 ops/sec ±5.25% (55 runs sampled)
stringify (new version) x 136,692,820 ops/sec ±4.82% (56 runs sampled)
```

PR Close #59745
2025-02-19 15:21:36 +00:00
arturovt 967488247e refactor(common): simplify stripTrailingSlash (#59746)
The new version of the function is smaller, eliminating extra bytes. The refactor improves both code size and readability while optimizing the implementation. Benchmark results for the old and new implementations are as follows:

```
stripTrailingSlash_old x 15,446,602 ops/sec ±0.89% (66 runs sampled)
stripTrailingSlash_new x 19,694,523 ops/sec ±1.10% (61 runs sampled)
```

Thus, the new implementation is both smaller and faster.

PR Close #59746
2025-02-19 15:20:53 +00:00
Vlad Boisa 5283c2b080 docs: add serve section to Service-worker (#59972)
Add the section which mention way to enable service-worker during local development

Fixes #59949

PR Close #59972
2025-02-19 15:19:19 +00:00
Matthieu Riegler 4298bf199b docs(docs-infra): remove unused examples (#59252)
PR Close #59252
2025-02-19 15:18:47 +00:00
Miles Malerba c056fb9df9 ci: add mmalerba to pullapprove (#60005)
Add mmalerba to pullapprove config

PR Close #60005
2025-02-19 15:18:07 +00:00
Angular Robot 5a2cc6c390 build: update actions/cache digest to 0c907a7 (#60002)
See associated pull request for more information.

PR Close #60002
2025-02-18 20:23:09 +00:00
Matthieu Riegler cf36951f83 fix(forms): Fix typing on FormRecord. (#59993)
Priori to this change, `ɵRawValue` of a `FormRecord` returned a `Partial`. This commit fixes it.

fixes #59985

PR Close #59993
2025-02-18 19:28:36 +00:00
Kristiyan Kostadinov f41437e6f5 refactor(core): simplify serialization of inputs and outputs (#59980)
Simplifies the functions that serialize inputs/outputs for the `ComponentFactory` type.

PR Close #59980
2025-02-18 19:28:00 +00:00
Kristiyan Kostadinov 86610f7bad build: update bundle goldens (#59980)
Updates the bundle goldens to account for the latest changes.

PR Close #59980
2025-02-18 19:28:00 +00:00
Kristiyan Kostadinov 9c6a0e5f01 refactor(core): add assertion to avoid writes to directive factories (#59980)
Attempting to write to directive inputs before the directive is created can lead to subtle issues that won't necessarily trigger errors. These changes add an assertion to catch such issues earlier.

PR Close #59980
2025-02-18 19:28:00 +00:00
Kristiyan Kostadinov 1b0fdc7eb1 refactor(core): avoid unnecessary lookup when writing inputs (#59980)
Currently we resolve the DOM node when writing inputs up-front, because it's necessary for the `ng-reflect-` attributes. Since the attributes are dev-mode-only, we can move the resolution into the function that writes them so we can avoid the resolution when it's not used.

PR Close #59980
2025-02-18 19:28:00 +00:00
Kristiyan Kostadinov 6a7fd11386 refactor(core): simplify InitialInputs data structure (#59980)
Reworks the `InitialInputs` data structure to only store a public name and initial value, resulting in less memory usage and making it easier to work with.

PR Close #59980
2025-02-18 19:28:00 +00:00
Kristiyan Kostadinov 5acdc6bd59 refactor(core): remove flags from TNode.inputs (#59980)
The input flags are already available on the definition so we don't need to store them on `TNode.inputs`.

PR Close #59980
2025-02-18 19:27:59 +00:00
Kristiyan Kostadinov db530856a8 refactor(compiler): remove input transforms feature (#59980)
An earlier refactor made the `InputTransformsFeature` a no-op so these changes remove the code that was generating it.

PR Close #59980
2025-02-18 19:27:59 +00:00
Kristiyan Kostadinov 86086604f4 refactor(core): remove inputTransforms from definition (#59980)
Removes the `inputTransform` from the directive definition since this information is already available on the `inputs`.

PR Close #59980
2025-02-18 19:27:59 +00:00
Kristiyan Kostadinov b8ad4c2117 refactor(core): simplify how inputs are stored in the directive definition (#59980)
Currently the values in `DirectiveDef.inputs` are either strings or arrays, depending if there are flags. This makes it a bit hard to work with, because each time it's read, the consumer needs to account for both cases.

These changes rework it so the values are always an arrays.

PR Close #59980
2025-02-18 19:27:59 +00:00
Enea Jahollari 1cd3a7db83 feat(migrations): add migration to convert templates to use self-closing tags (#57342)
This schematic helps developers to convert their templates to use self-closing tags mostly as a aesthetic change.

PR Close #57342
2025-02-18 17:33:59 +00:00
Angular Robot b6fa69f2c0 build: update dependency shiki to v3 (#59986)
See associated pull request for more information.

PR Close #59986
2025-02-18 16:50:02 +00:00
Pawel Kozlowski c076b57986 refactor(core): move LContainer manipulation logic to its own file (#59856)
All the view in a container logic is in the
packages/core/src/render3/view/container.ts file
plus some other associated refactorings.

PR Close #59856
2025-02-18 15:41:42 +00:00
Angular Robot 3bfa85f5c8 build: lock file maintenance (#59836)
See associated pull request for more information.

PR Close #59836
2025-02-18 15:41:09 +00:00
arturovt 7bd4be0fa5 fix(common): clean up urlChanges subscribers when root scope is destroyed (#59703)
In this commit, the `urlChanges` subject is completed to release all active observers when the root scope is destroyed. Previously, subscribing to the `urlChanges` subject caused the subscriber to capture `this`, resulting in a memory leak after the root scope was destroyed.

PR Close #59703
2025-02-18 15:40:19 +00:00
hawkgs ea5b7371e5 docs(docs-infra): fix card highlighting in the API reference details page (#59965)
Drop `pointer-events: none` and update the member card highlighting mechanism.

PR Close #59965
2025-02-18 14:56:48 +00:00
Matthieu Riegler c3e95ef1d5 docs(docs-infra): attemp to fix flaky mermaid test (#59994)
This test has 2 async parts, loading the markdown file and the marked parsing.
First attempt to fix the flakiness is by inline the markdown file.

If this test timeouts again in the future it means the timeout is related to marked itself (and the dynamic import of mermaid).

PR Close #59994
2025-02-18 14:55:49 +00:00
Matthieu Riegler 5b20bab96d feat(compiler): Add Skip Hydration diagnostic. (#59576)
The diagnostic was created in #49512 but was never added to the list of diagnostic that run.

fixes #59569

PR Close #59576
2025-02-18 14:54:51 +00:00
Doug Parker be32d63652 docs: update zip command and link to recent DevTools commits (#59792)
`-x dist/` never worked for reasons I don't really understand. Historically I've just deleted `dist/` before zipping. I tried a few different approaches, but all of them lead to some form of "Name not matched" error in `zip` of the `dist/` directory. Instead I just opted to delete `dist/` as part of the zipping command.

The link to recent DevTools commits seems good enough to manually write a changelog. All relevant commits should be using `refactor(devtools)`, so the string "devtools" should definitely be in there.

PR Close #59792
2025-02-14 19:31:59 +00:00
Angular Robot 751dc4ad5b build: update babel dependencies to v7.26.9 (#59743)
See associated pull request for more information.

PR Close #59743
2025-02-14 19:15:15 +00:00
Alex Rickabaugh 3e39da593a feat(common): introduce experimental httpResource (#59876)
`httpResource` is a new frontend to the `HttpClient` infrastructure. It
declares a dependency on an HTTP endpoint. The request to be made can be
reactive, updating in response to signals for the URL, method, or otherwise.
The response is returned as an instance of `HttpResource`, a
`WritableResource` with some additional signals which represent parts of the
HTTP response metadata (status, headers, etc).

PR Close #59876
2025-02-14 18:40:37 +00:00
Alex Rickabaugh 538c4d4c9d ci: disable adev tests (#59876)
The changes in #58288 are responsible for breaking the tests. (see #54858).
We'll re-enable them on the next release.

PR Close #59876
2025-02-14 18:40:37 +00:00
Andrew Scott e7c6ecc955 refactor(benchpress): move initializer to constructor (#59960)
Move the initializer into the constructor for instance members that reference identifiers declared in the constructor.

When TypeScript outputs modern language features, the below case throws an TS error.

PR Close #59960
2025-02-14 18:39:58 +00:00
Angular Robot 506d38dc1c build: update all non-major dependencies (#59641)
See associated pull request for more information.

PR Close #59641
2025-02-14 18:39:10 +00:00
Angular Robot 47d5e1e275 build: update dependency jsdom to v26 (#59444)
See associated pull request for more information.

PR Close #59444
2025-02-14 17:59:57 +00:00
Alan Agius 5ca2fa53d5 ci: update nvm node.js verson to 18.20.5 (#59957)
This is needed due to some deps.

PR Close #59957
2025-02-14 17:24:55 +00:00
Angular Robot 650e1f9a86 build: update io_bazel_rules_sass digest to c01e884 (#59948)
See associated pull request for more information.

PR Close #59948
2025-02-14 16:34:23 +00:00
Kristiyan Kostadinov 5553b5cfa8 build: update to TypeScript 5.8 RC (#59952)
Updates the repo to the release candidate TypeScript 5.8.

PR Close #59952
2025-02-14 16:32:50 +00:00
Doug Parker dcb23ef706 release: bump Angular DevTools version to 1.0.23 (#59931)
PR Close #59931
2025-02-14 16:31:37 +00:00
Alan Agius c93e4fe497 build: update bazel node.js version to 18.20.5 (#59943)
This is needed as selenium-webdriver requires at least this version.

PR Close #59943
2025-02-14 16:31:04 +00:00
Angular Robot 7197e82936 build: update cross-repo angular dependencies (#59946)
See associated pull request for more information.

PR Close #59946
2025-02-14 16:30:18 +00:00
Jessica Janiuk 1ebf7bfb23 ci: fix flakey incremental hydration test (#59945)
This extends the test timeout for the two timer tests while shortening the actual hydrate on timer. This hopefully should result in more reliable CI.

PR Close #59945
2025-02-13 22:35:04 +00:00
iteriani 8b757bf35c refactor(core): Check in some interfaces for the DI package (#59921)
This will be the starting point of the DI package. We will first check in some interfaces and then make sure the existing DI package implements that interface. Afterwards, we'll slowly start moving injector implementation.

PR Close #59921
2025-02-13 20:19:29 +00:00
Jessica Janiuk d46aa79873 build: update zone.js pullapprove rule (#59942)
This fixes the broken pullapprove config due to a missing array.

PR Close #59942
2025-02-13 20:16:49 +00:00
Jessica Janiuk d1a3e6203c build: update zone.js pullapprove rule (#59941)
This excludes lock and package files from requiring zones approval.

PR Close #59941
2025-02-13 19:17:13 +00:00
Matt Turco 2588985f43 feat(core): pass signal node to throwInvalidWriteToSignalErrorFn (#59600)
Updates the signature of the `throwInvalidWriteToSignalError` to take the signal node in question and pass it along to the throwInvalidWriteToSignalErrorFn handler function. This allows the handler to e.g. include the signal name in error messaging.

PR Close #59600
2025-02-13 17:56:14 +00:00
JoostK 973033abd2 fix(compiler-cli): avoid crash in isolated transform operations (#59869)
The CLI uses the `ts.transform` API to apply the Angular compiler's transformers
on the source files when `isolatedModules` is true (and various other constraints)
instead of going through a full `ts.Program.emit` operation. This results in the
transformers to operate in an environment where no emit resolver is available, which
was not previously accounted for. This commit reflects the possibility for the emit
resolver to be missing and handles this scenario accordingly.

Fixes #59837

PR Close #59869
2025-02-13 16:39:04 +00:00
Jessica Janiuk fb39fe9650 release: cut the v19.2.0-next.3 release 2025-02-13 11:30:30 -05:00
arturovt f34aeaeaad refactor(common): remove redundant transferCacheInterceptorFn dependencies (#59819)
The `transferCacheInterceptorFn` injects dependencies in itself; the `TransferCache` and cache options are redundant in the `deps` list.

PR Close #59819
2025-02-13 15:11:19 +00:00
arturovt 20f5dc5103 refactor(core): simplify concatStringsWithSpace (#59820)
The new version of the function is smaller, eliminating extra bytes. The refactor improves both code size and readability while optimizing the implementation. Benchmark results for the old and new implementations are as follows:

```
concatStringsWithSpace_old x 149,225,311 ops/sec ±8.54% (50 runs sampled)
concatStringsWithSpace_new x 160,206,834 ops/sec ±5.72% (54 runs sampled)
```

Thus, the new implementation is both smaller and faster.

PR Close #59820
2025-02-13 15:10:42 +00:00
hawkgs 9f092142d9 docs(docs-infra): replace the WebGL home page animation with a CSS+JS version of it (#59865)
1. The WebGL animation on the home page is completely removed.
2. A new animation processor/player is implemented and added to `adev` web app.
3. A new CSS+JS-based animation substitutes the existing WebGL one.

PR Close #59865
2025-02-13 15:03:36 +00:00
Doug Parker ae6dc71495 docs: link to Tailwind docs about Angular CLI integration (#59765)
We should probably have our own authoritative documentation here, but Tailwind's doc is pretty decent, so this is a good starting point.

PR Close #59765
2025-02-13 15:00:55 +00:00
rysavy-dudrtools bb946d71ed docs(localize): added link to add-package.md (#59937)
PR Close #59937
2025-02-13 14:59:37 +00:00
hawkgs b6733eeea4 docs(docs-infra): drop tabs layout from the API reference details page (#59068)
Drop the tabs in favor of a single page separated by sections.

PR Close #59068
2025-02-13 14:58:33 +00:00
Angular Robot e0c33814fd build: update github/codeql-action action to v3.28.9 (#59914)
See associated pull request for more information.

PR Close #59914
2025-02-13 14:56:39 +00:00
Doug Parker adf2a0a2d6 release: bump Angular DevTools version to 1.0.22 (#59791)
PR Close #59791
2025-02-13 14:50:39 +00:00
Miles Malerba 6789c7ef94 fix(core): Defer afterRender until after first CD (#59455) (#59551)
This reverts commit ac2dbe3eb1.

PR Close #59551
2025-02-12 12:20:04 -08:00
Miles Malerba c87e581dd9 fix(core): Don't run effects in check no changes pass (#59455) (#59551)
This reverts commit 21f1ba22a6.

PR Close #59551
2025-02-12 12:20:04 -08:00
Andrew Scott 730fe65d55 docs: release notes for the v19.1.6 release (#59930)
PR Close #59930
2025-02-12 12:19:13 -08:00
hawkgs 4f3ad98466 refactor(devtools): styles management (#59589)
- Move all styles to ng-devtools/src/styles.
- Create a BrowserService that detects the browsers and adds it as a class to the body. Move global browser styles.
- Create theme mixins that incorporate the browser type into them.
- Refactor some of the affected code along with the introduced changes.

PR Close #59589
2025-02-12 10:47:02 -08:00
Kristiyan Kostadinov 9e847fc60d fix(compiler): handle tracking expressions requiring temporary variables (#58520)
Currently when we generate the tracking expression for a `@for` block, we process its expression in the context of the creation block. This is incorrect, because the expression may require ops of its own for cases like nullish coalescing or safe reads. The result is that while we do generate the correct variable, they're added to the creation block rather than the tracking function which causes an error at runtime.

These changes address the issue by keeping track of a separate set of ops for the `track` expression that are prepended to the generated function, similarly to how we handle event listeners.

Fixes #56256.

PR Close #58520
2025-02-12 09:56:08 -08:00
Angular Robot 6f315fe501 build: update io_bazel_rules_sass digest to d829b6a (#59862)
See associated pull request for more information.

PR Close #59862
2025-02-12 09:47:52 -08:00
Bobokhuja b2f1d4eb9e docs: fix tabs in example code in creating injectable services (#59911)
PR Close #59911
2025-02-12 09:46:51 -08:00
Kristiyan Kostadinov aa285c548c fix(migrations): account for let declarations in control flow migration (#59861)
Fixes that the control flow migration wasn't accounting for `@let` when determining which symbols are used.

PR Close #59861
2025-02-12 09:45:14 -08:00
Kristiyan Kostadinov 1119f85ca9 fix(migrations): count used dependencies inside existing control flow (#59861)
Fixes that the control flow migration wasn't checking the content of pre-existing control flow nodes for dependencies.

Fixes #59846.

PR Close #59861
2025-02-12 09:45:14 -08:00
Angular Robot c69125009c build: update dependency saucelabs to v9 (#59801)
See associated pull request for more information.

PR Close #59801
2025-02-12 09:39:28 -08:00
AleksanderBodurri 28dd04a866 fix(devtools): regressions in component tree (#59873)
This commit solves two cases

Bug: When a directive of the same name is selected, the property view tab would not update properly. This was caused by a signals refactor that changed the behaviour of a string input property to not re-render because the underlying signal did not change (string equality). This is fixed by converting this input into an object.

Bug: When a selected element is removed from the component tree, DevTools would not rerender the component tree properly and deselect that component. Now if DevTools detects that a component is removed, it re-renders the tree and deselects the component.

PR Close #59873
2025-02-12 09:22:28 -08:00
Matthieu Riegler 0d88463a66 docs(docs-infra): inline example in description (#59908)
fixes #59905

PR Close #59908
2025-02-12 09:21:49 -08:00
Hendra Arfiansyah 4a5c3df824 docs: remove trailing parentheses in example code in linked signal (#59917)
PR Close #59917
2025-02-12 09:20:31 -08:00
Angular Robot 8cdb7b8e85 docs: update Angular CLI help [main] (#59925)
Updated Angular CLI help contents.

PR Close #59925
2025-02-12 09:19:37 -08:00
Kristiyan Kostadinov 5cd26a9420 fix(compiler-cli): handle deferred blocks with shared dependencies correctly (#59926)
When the compiler analyzes the defer blocks in a component, it generates two sets of dependencies: ones specific for each block and others from all the deferred blocks within the component. The logic that combines all the defer block dependencies wasn't de-duplicating them which resulted in us producing `setClassMetadataAsync` calls where the callback can have multiple parameters with the same name. This was a problem both in full and partial compilation, but the latter was more visible, because Babel throws an error in such cases.

These changes add some logic to de-duplicate the dependencies so that we produce valid code.

Fixes #59922.

PR Close #59926
2025-02-12 09:15:53 -08:00
Kristiyan Kostadinov b0266bda4a fix(core): invalidate HMR component if replacement throws an error (#59854)
Integrates https://github.com/angular/angular-cli/pull/29510 which allows us to invalidate the data in the dev server for a component if a replacement threw an error.

PR Close #59854
2025-02-12 09:05:30 -08:00
Kristiyan Kostadinov e47c1e5abe refactor(compiler): pass more information to HMR replacement function (#59854)
Adjusts the code we generate for HMR so that it passes in the HMR ID and `import.meta` to the `replaceMetadata` call. This is necessary so we can do better logging of errors.

PR Close #59854
2025-02-12 09:05:30 -08:00
Alex Rickabaugh a7f20eb863 release: cut the v19.2.0-next.2 release 2025-02-06 12:50:20 -08:00
Alex Rickabaugh 7196725622 docs: release notes for the v19.1.5 release 2025-02-06 12:34:52 -08:00
Wadie 951155eb4c fix(docs-infra): reset sandbox runtime on template change (#59844)
Ensure the sandbox runtime is properly reset when the template changes to prevent any unexpected behavior during development.

PR Close #59844
2025-02-05 15:01:33 -08:00
Alex Rickabaugh b592b1b051 fix(core): fix race condition in resource() (#59851)
The refactoring of `resource()` to use `linkedSignal()` introduced the
potential for a race condition where resources would get stuck and not update
in response to a request change. This occurred under a specific condition:

1. The request changes while the resource is still in loading state
2. The resource resolves the previous load before its `effect()` reacts to the
   request change.

In practice, the window for this race is small, because the request change in
(1) will schedule the effect in (2) immediately. However, it's easier to
trigger this sequencing in tests, especially when one resource depends on the
output of another.

To fix the race condition, the resource impl is refactored to track the request
in its state, and ignore resolved values or streams for stale requests. This
refactoring actually makes the resource code simpler and easier to follow as
well.

Fixes #59842

PR Close #59851
2025-02-05 15:01:02 -08:00
Andrew Scott 8ee91bceed build: remove self from unavailable list (#59858)
remove self from unavailable list

PR Close #59858
2025-02-05 12:18:57 -08:00
Jeevan Mahesha 4d2684d9a3 docs: Add v18 Angular version link to versions configuration (#58933)
PR Close #58933
2025-02-05 09:02:02 -08:00
muhammadali1658 a592fbc8cd docs: fix broken link of FID (#59848)
PR Close #59848
2025-02-05 09:01:31 -08:00
Miles Malerba a299e02e91 fix(core): preserve tracing snapshot until tick finishes (#59796)
This change waits until the end of `tick` to clear the tracing snapshot.
This ensures that if we notify the scheduler during `tick` the correct
tracing snapshot is used.

PR Close #59796
2025-02-05 09:00:49 -08:00
hyperlife1119 5191a41a18 docs(service-worker): corrected default values ​​for navigation URLs (#58156)
The default value described in the documentation is inconsistent with the actual default value.

PR Close #58156
2025-02-05 09:00:23 -08:00
Jeremias Peier fa0c3e3210 feat(forms): support type set in form validators (#45793)
Previously, using `Validators.required`, `Validators.minLength` and `Validators.maxLength` validators don't work with sets because a set has the `size` property instead of the `length` property. This change enables the validators to be working with sets.

PR Close #45793
2025-02-05 08:59:55 -08:00
Pawel Kozlowski 41b1a7c582 refactor(core): minor code cleanups (#59843)
Some minor code cleanups after code changes in
previous commits.

PR Close #59843
2025-02-05 08:56:28 -08:00
Pawel Kozlowski d8fca6d3df refactor(core): reuse element end first creation pass (#59843)
Reuse element end first creation pass in ComponentRef impl.

PR Close #59843
2025-02-05 08:56:28 -08:00
Pawel Kozlowski 5e0dcf1f53 refactor(core): reuse element first create pass in ComponentRef (#59843)
Reuse element first create pass in ComponentRef.

PR Close #59843
2025-02-05 08:56:28 -08:00
Pawel Kozlowski e3dcf523ea refactor(core): move directive matching logic to a separate file (#59843)
Move directive matching logic to a separate file.

PR Close #59843
2025-02-05 08:56:27 -08:00
Kristiyan Kostadinov 146ab9a76e feat(core): support TypeScript 5.8 (#59830)
Updates the repo to support TypeScript 5.8 which is currently in beta.

PR Close #59830
2025-02-03 14:00:41 -08:00
Angular Robot 5e9e9bde0d build: update dependency angular-split to v19 (#59827)
See associated pull request for more information.

PR Close #59827
2025-02-03 14:00:11 -08:00
Ole Martin Sørli 3769935df7 docs(migrations): fix misspelled link text in overview.md (#59816)
I assume that the link text should read "Try it now" instead of "Try it not". The latter is funnier, but also implies that this migration is not a recommended one.
PR Close #59816
2025-02-03 13:59:16 -08:00
Kristiyan Kostadinov a97136052f fix(compiler-cli): gracefully fall back if const enum cannot be passed through (#59815)
Adds some logic so that if we can't produce a runtime representation of an enum, the dev server can fall back to refreshing the page.

PR Close #59815
2025-02-03 13:58:31 -08:00
Kristiyan Kostadinov bae94b82fd fix(compiler-cli): handle const enums used inside HMR data (#59815)
When we generate an HMR replacement function, we determine which locals from the file are used and we pass them by reference. This works fine in most cases, but breaks down for const enums which don't have a runtime representation.

These changes work around the issue by passing in all the values as an object literal.

Fixes #59800.

PR Close #59815
2025-02-03 13:58:31 -08:00
Kristiyan Kostadinov 03bcd30e34 fix(compiler-cli): handle enum members without initializers in partial evaluator (#59815)
Fixes that the partial evaluator was interpreting initializer-less enum members as undefined. In this case the value is the same as the index.

PR Close #59815
2025-02-03 13:58:31 -08:00
arturovt a88b00c9e3 refactor(platform-browser): remove redundant DomEventsPlugin dependencies (#59811)
The `DomEventsPlugin` only injects the `DOCUMENT`; the platform ID and `NgZone` are redundant.

PR Close #59811
2025-02-03 13:57:45 -08:00
Pawel Kozlowski 2d53bacec3 refactor(core): reuse existing logic in ComponentRef impl (#59806)
This change removes some code and logic duplication by
re-using the existing functionality. It also pulls some
code into separate methods for clarity.

PR Close #59806
2025-02-03 13:57:10 -08:00
Luan Gong 4684e67fd0 docs: Fix wording for Angular CLI end-to-end testing (#59808)
PR Close #59808
2025-02-03 13:56:39 -08:00
Andrew Scott ad88304233 refactor(core): move callAndReportToErrorHandler to bootstrap file (#59793)
This function is only used in the bootstrap file and does not need to be in application_ref

PR Close #59793
2025-02-03 13:54:40 -08:00
Angular Robot f9ff989b59 build: update github/codeql-action action to v3.28.8 (#59786)
See associated pull request for more information.

PR Close #59786
2025-02-03 13:54:01 -08:00
Gerard Esteve e725c4774c docs: add clarification for sourceLocale location in angular.json (#59783)
PR Close #59783
2025-02-03 13:53:35 -08:00
Alan Agius 5762cdd7fd docs: replace provideServerRoutesConfig with provideServerRouting (#59777)
The `provideServerRoutesConfig` is replaced with `provideServerRouting`

PR Close #59777
2025-02-03 13:53:04 -08:00
arturovt f8eae13dde refactor(docs-infra): allow home animation to be cleaned up properly (#59732)
In this commit, we wrap `initCanvas` in an observable to prevent executing any code, such as `getViews()`, if the view is destroyed before the canvas becomes ready.

PR Close #59732
2025-02-03 13:52:17 -08:00
arturovt 30ff7e3f1a refactor(docs-infra): extract NodeRuntimeSandbox lazy-loading into separate function (#59344)
In this commit, we extract `NodeRuntimeSandbox` lazy-loading into a separate function (because it's duplicated).

PR Close #59344
2025-02-03 13:51:51 -08:00
BreadInvasion 5a6daa6cd3 docs: use inject() in dependency injection guide (#59079)
PR Close #59079
2025-02-03 13:51:23 -08:00
Sam Knutson 042ee75d1b docs: fix spelling of "set up" (#58362)
Fix spelling of the word "set up" in docs. "Setup" (one word) is a noun
whereas "set up" (two words) is a verb.

Fixes #58361

PR Close #58362
2025-02-03 13:50:49 -08:00
Alex Rickabaugh 9723f034c3 release: cut the v19.2.0-next.1 release 2025-01-29 15:17:55 -08:00
Alex Rickabaugh eb9dca3120 docs: release notes for the v19.1.4 release 2025-01-29 15:11:55 -08:00
Dmitry Ivanitskiy b5f9018148 docs: fix programmatic-rendering example (#59768)
Fixes example of programmatically rendering of components using dynamic import, as calling dynamic import returns module namespace object rather than component instance

PR Close #59768
2025-01-29 10:54:10 -08:00
Doug Parker c03f45ce8e docs: updates versioning docs to recommend that fixes in an RC period be released as a -next release prior to hitting stable (#59766)
PR Close #59766
2025-01-29 10:52:44 -08:00
Kristiyan Kostadinov ea2ea5e65b test(core): update tests that were relying on implicit animations module (#59762)
We had some tests that were relying on the fact that the server module was importing animations implicitly.

PR Close #59762
2025-01-29 10:52:18 -08:00
Kristiyan Kostadinov fc5d187da5 fix(platform-server): decouple server from animations module (#59762)
Removes the hard dependency between `platform-server` and `platform-browser/animations` since now the animations module will disable itself automatically.

PR Close #59762
2025-01-29 10:52:18 -08:00
Kristiyan Kostadinov e6cb411e43 fix(platform-browser): automatically disable animations on the server (#59762)
Uses `ngServerMode` to automatically disable browser animations on the server. This allows us to decouple `platform-server` from the animations package.

PR Close #59762
2025-01-29 10:52:18 -08:00
Kristiyan Kostadinov 0c1ecb453c fix(elements): not setting initial value on signal-based input (#59773)
Fixes that `createCustomElement` was incorrectly excluding signal-based inputs when setting the initial values.

Fixes #59757.

PR Close #59773
2025-01-29 08:50:25 -08:00
Angular Robot e635f42284 build: lock file maintenance (#59763)
See associated pull request for more information.

Closes #59621 as a pr takeover

PR Close #59763
2025-01-29 08:49:47 -08:00
muhammadali1658 e1504219e9 docs: fix spelling of 'static-site' (#59780)
PR Close #59780
2025-01-29 08:45:20 -08:00
Alan Agius 6b09716754 fix(platform-browser): prepend baseHref to sourceMappingURL in CSS content (#59730)
Implemented functionality to prepend the baseHref to `sourceMappingURL` in CSS content. Added handling to ensure external sourcemaps are loaded relative to the baseHref. Corrected sourcemap URL behavior when accessing pages with multi-segment URLs (e.g., `/foo/bar`). Ensured that when the baseHref is set to `/`, maps are requested from the correct path (e.g., `http://localhost/comp.css.map` instead of `http://localhost/foo/bar/comp.css.map`).

Closes #59729

PR Close #59730
2025-01-29 08:44:19 -08:00
arturovt cf9054248d fix(core): check whether application is destroyed before printing hydration stats (#59716)
In this commit, we check whether the application is destroyed before printing hydration stats. The application may be destroyed before it becomes stable, so when the `whenStableWithTimeout` resolves, the injector might already be in a destroyed state. As a result, calling `injector.get` would throw an error indicating that the injector has already been destroyed.

PR Close #59716
2025-01-29 08:43:34 -08:00
Kristiyan Kostadinov 96e602ebe9 fix(core): cancel in-progress request when same value is assigned (#59280)
Fixes that `resource` wasn't cancelling its in-progress request if the same value as the current one is assigned.

Fixes #59272.

PR Close #59280
2025-01-29 08:40:11 -08:00
Matthieu Riegler 9ed9c40479 docs(docs-infra): remove non-necessary files from playground zip. (#59728)
fixes #56739

PR Close #59728
2025-01-28 20:34:23 +01:00
Matthieu Riegler e98b0f1d39 docs(docs-infra): Check for files without using / as root. (#59726)
In certain circonstances, a leading slash in the file paths created a incorrect unarchived project.

fixes #57075

PR Close #59726
2025-01-28 20:33:23 +01:00
Matthieu Riegler 97897eebd8 docs(docs-infra): Remove leading path from zipped files. (#59726)
In certain circonstances, a leading slash in the file paths created a incorrect unarchived project.

fixes #57075

PR Close #59726
2025-01-28 20:33:23 +01:00
Joey Perrott ccebbbae6e ci: prevent renovate from updating @bazel/ibazel (#59761)
Add @bazel/ibazel to the ignored deps list for renovate to prevent us from updating to a version that
is incompatible with our repository.

PR Close #59761
2025-01-28 19:17:34 +01:00
Luan Gong b16d8a1c55 docs(core): Fix typo in documentation of linkedSignal (#59752)
PR Close #59752
2025-01-28 19:14:21 +01:00
Angular Robot 3c3620e84a build: update cross-repo angular dependencies (#59669)
See associated pull request for more information.

PR Close #59669
2025-01-28 18:51:00 +01:00
Tyler Luckewicz 3da7e908bb docs(docs-infra): fix gammatical error in two way binding with plain properties section (#59755)
PR Close #59755
2025-01-28 18:48:09 +01:00
Alan Agius e2987a1d4a fix(service-worker): add missing rxjs peer dependency (#59747)
The `@angular/service-worker` package now explicitly declares `rxjs` as a peer dependency.

PR Close #59747
2025-01-28 13:09:50 +01:00
Alan Agius c9045aa7fd build: remove @angular/common from Service Worker dependencies (#59747)
The `@angular/service-worker` package no longer directly depends on `@angular/common`.

PR Close #59747
2025-01-28 13:09:49 +01:00
Paul Gschwendtner a8139f77ea ci: configure merge tool to enforce mandatory PR statuses (#59749)
The merge tool is currently hard-coded to only check `lint` as a
required status. This was added because at some point the old GitHub
robot was replaced with a so-called `unified-statuses` check GitHub
action; but that one never worked/impacted productivity of the team.

I've added support to the merge tool to require specific jobs/checks to
run, before allowing merge (can be forcibly ignored). We are using this
ability now to enforce a few "common" required jobs, as a safety measure
when GitHub didn't trigger CI runs (e.g. for new contributors).

This recently became a more prominent issue as the GitHub org enforces
that CI doesn't run for e.g. first time contributors.

PR Close #59749
2025-01-28 12:53:33 +01:00
hawkgs 3554dbccd1 build: revert back to @bazel/ibazel v0.16 (#59748)
v0.25 is causing issues with adev and devtools – file changes do not trigger a rebuild.

PR Close #59748
2025-01-28 12:42:38 +01:00
Pawel Kozlowski c202682957 refactor(core): reuse host directive resolution logic (#59685)
Reuse host directive resolution logic in ComponentRef

PR Close #59685
2025-01-28 11:31:29 +01:00
Alex Rickabaugh 6c92d65349 fix(core): add hasValue narrowing to ResourceRef (#59708)
`hasValue` attempts to narrow the type of a resource to exclude `undefined`.
Because of the way signal types merge in TS, this only works if the type
of the resource is the same general type as `hasValue` asserts.

For example, if `res` is `WritableResource<string|undefined>` then
`.hasValue()` correctly asserts that `res` is `WritableResource<string>` and
`.value()` will be narrowed. If `res` is `ResourceRef<string|undefined>`
then that narrowing does _not_ work correctly, since `.hasValue()` will
assert `res` is `WritableResource<string>` and TS will combine that for a
final type of `ResourceRef<string|undefined> & WritableResource<string>`.
The final type of `.value()` then will not narrow.

This commit fixes the above problem by adding a `.hasValue()` override to
`ResourceRef` which asserts the resource is of type `ResourceRef`.

Fixes #59707

PR Close #59708
2025-01-28 09:40:29 +01:00
Alex Rickabaugh 127fc0dc84 fix(core): fix resource()'s previous.state (#59708)
When a resource first starts up, even if it transitions immediately to
`Loading` it should report a `previous.state` of `Idle`. It was reporting
`Loading` as the previous state in such a case because of an oversight in
the migration to `linkedSignal` which this commit addresses.

PR Close #59708
2025-01-28 09:40:29 +01:00
arturovt b7dd0483d0 refactor(common): drop error messages in production (#59545)
Switches to using `RuntimeError` and drops error messages in production by replacing it with an error code.

PR Close #59545
2025-01-28 09:39:42 +01:00
arturovt acdde4aa35 refactor(router): remove unused code (#59704)
This code is never used.

PR Close #59704
2025-01-28 09:38:34 +01:00
Angular Robot 3373b4f82a build: update github/codeql-action action to v3.28.6 (#59744)
See associated pull request for more information.

PR Close #59744
2025-01-28 09:08:46 +01:00
arturovt 762e56e210 refactor(common): drop platform check in PreconnectLinkChecker (#59714)
Replaces platform check within the `PreconnectLinkChecker` with the `ngServerMode` global.

PR Close #59714
2025-01-27 17:22:43 +01:00
hawkgs 69fe9163f5 docs(docs-infra): fix header layout for tablets (#59734)
The version picker and the theme and socials buttons were not properly styled.

PR Close #59734
2025-01-27 17:07:53 +01:00
arturovt b409330223 refactor(service-worker): drop platform checks (#59475)
In this commit, we drop `isPlatformBrowser` checks in favor of `ngServerMode` compile-time variable.

PR Close #59475
2025-01-27 16:41:09 +01:00
Pawel Kozlowski df143b486b refactor(core): remove unused LifecycleHooksFeature (#59678)
LifecycleHooksFeature seems to be unused and can be deleted.

PR Close #59678
2025-01-27 13:15:21 +01:00
Pawel Kozlowski cfa9fc2098 refactor(core): simplify ComponentRef creation (#59678)
Move more logic to a constructor of a ComponentRef.

PR Close #59678
2025-01-27 13:15:21 +01:00
Pawel Kozlowski 9af14b25d1 refactor(core): simplify attributes extraction logic for ComponentRef (#59678)
Make extractAttrsAndClassesFromSelector to return TAttributes directly to
simplify the overall logic and remove unecessary code.

PR Close #59678
2025-01-27 13:15:21 +01:00
Sebastian Ochoa fd7ee47bf7 fix(platform-browser): Update pseudoevent created by createMouseSpecialEvent to populate _originalEvent property (#59690)
This fixes an internal bug

PR Close #59690
2025-01-27 10:28:58 +01:00
Sebastian Ochoa 65cf061feb fix(platform-browser): Update pseudoevent created by createMouseSpecialEvent to populate _originalEvent property (#59690)
This fixes an internal bug

PR Close #59690
2025-01-27 10:28:58 +01:00
Sebastian Ochoa af9d74710c fix(platform-browser): Update pseudoevent created by createMouseSpecialEvent to populate _originalEvent property (#59690)
This fixes an internal bug.

PR Close #59690
2025-01-27 10:28:58 +01:00
arturovt 5c1690f07d refactor(docs-infra): allow home to be cleaned up (#59683)
In this commit, we're using the `from()` in the `adev-home` component, which allows us to invert a dependency and avoid memory leaks. Because an `async` function would be executed even if the component is already destroyed.

PR Close #59683
2025-01-27 10:27:20 +01:00
arturovt 14ceec60fe refactor(docs-infra): prevent leak in tutorial component (#59675)
In this commit, we're using the `from()` in the `adev-tutorial` component, which allows us to invert a dependency and avoid memory leaks. Because `then()` would be executed even if the component is already destroyed.

PR Close #59675
2025-01-27 10:26:36 +01:00
Aaditree Jaisswal c65c609491 docs: Add link to Language Service page from the Installation page (#59654)
PR Close #59654
2025-01-27 10:25:21 +01:00
Andrew Seguin b8948f219c docs: fix broken material.angular.io test harness links (#59709)
PR Close #59709
2025-01-27 10:22:49 +01:00
waify 6d6708c5b9 docs: fix typo in signals-interop.md (#59724)
PR Close #59724
2025-01-27 09:55:42 +01:00
Kristiyan Kostadinov 0c3b75558a docs: add template string to supported literals (#59710)
Updates the docs since we'll have support for template strings in 19.2. Also mentions that tagged template string aren't supported.

Fixes #59160.

PR Close #59710
2025-01-27 09:26:14 +01:00
Matthieu Riegler 7daf268cff docs(docs-infra): bump tutorials to 19.1 (#59642)
PR Close #59642
2025-01-24 20:43:15 +01:00
arturovt 10cdf0afae refactor(common): tree-shake PreloadLinkCreator for client bundles (#59431)
In this commit, we tree-shake the `PreloadLinkCreator` for client bundles because it's targeting only server code. We use the pending tasks service to contribute to app stability by waiting for the module to load.

PR Close #59431
2025-01-24 17:17:58 +01:00
Kristiyan Kostadinov 82876242e5 fix(core): ensure type is preserved during HMR (#59700)
Fixes an internal HMR issue where the type might be replaced when swapping out the definition. Externally this is a no-op.

PR Close #59700
2025-01-24 17:16:58 +01:00
arturovt d634ca7633 refactor(common): simplify joinWithSlash (#59484)
The new version is 2x smaller in the reduced code size; as thus this eliminates extra bytes. Refactors `joinWithSlash` function to reduce code size and improve readability. Added checks to handle leading and trailing slashes more concisely and provided comments for clarity.

PR Close #59484
2025-01-24 17:16:11 +01:00
arturovt e271639022 refactor(core): re-use isDetachedByI18n (#59668)
We already have a function called `isDetachedByI18n` which checks whether a `tNode` is in `isDetached` state; as thus, there's no reason to apply those checks manually.

PR Close #59668
2025-01-24 17:15:08 +01:00
Alex Rickabaugh 168516462a feat(core): support default value in resource() (#59655)
Before `resource()` resolves, its value is in an unknown state. By default
it returns `undefined` in these scenarios, so the type of `.value()`
includes `undefined`.

This commit adds a `defaultValue` option to `resource()` and `rxResource()`
which overrides this default. When provided, an unresolved resource will
return this value instead of `undefined`, which simplifies the typing of
`.value()`.

PR Close #59655
2025-01-24 13:39:02 +01:00
arturovt edb8407d4f refactor(common): simplify null/undefined check in keyvalue pipe (#59696)
In this commit, we remove the separate `a === undefined` and `a === null` checks and replace them with `a == null`. Using `a == null` is better and more concise because it checks for both `null` and `undefined` in a single operation. The loose equality `==` is specifically designed to treat `null` and `undefined` as equivalent. This change only reduces some bytes in the code and simplifies it, with no performance impact, as modern JavaScript engines handle `a == null` efficiently. Additionally, comments have been added for clarification.

PR Close #59696
2025-01-24 12:45:04 +01:00
Angular Robot 434568ba28 docs: update Angular CLI help [main] (#59699)
Updated Angular CLI help contents.

PR Close #59699
2025-01-24 12:31:36 +01:00
arturovt e4838310c9 refactor(forms): wrap _checkParentType with ngDevMode (#59489)
The `_checkParentType` bodies are wrapped with `ngDevMode`, meaning they act as no-ops in production. We can wrap the actual calls to `_checkParentType` with `ngDevMode` to prevent calling no-op functions in production

PR Close #59489
2025-01-24 11:51:36 +01:00
Ezequiel Cicala 819795bf51 docs: replace word in using-component-harnesses.md (#59687)
PR Close #59687
2025-01-24 11:29:19 +01:00
Doug Parker 3f53dd1129 docs: sort application and browser-esbuild builders first (#59686)
This emphasizes these as the default/preferred options over `browser` builder.

PR Close #59686
2025-01-23 14:27:52 -08:00
Ezequiel Cicala 6d9bc7654d docs: add missing word on components-scenarios.md (#59681)
PR Close #59681
2025-01-23 14:26:23 -08:00
Ezequiel Cicala f68e81ea2c docs: add another missing word on components-scenarios.md (#59680)
PR Close #59680
2025-01-23 14:25:50 -08:00
arturovt 8897e96fa6 refactor(core): prevent duplicating componentOffset checks (#59611)
The `type_checks` module already exposes a utility function that checks whether `TNode.componentOffset` is greater than -1. There is no need to check that property manually in other places, as we can reuse the helper function.

PR Close #59611
2025-01-23 14:23:29 -08:00
arturovt 6fc180b3ff refactor(common): prevent duplicating Accept header name (#59546)
Drops some bytes by moving `Accept` into a variable, which is then minified to something like `var a="Accept"` and reused in all the places.

PR Close #59546
2025-01-23 14:21:51 -08:00
arturovt c7b6e1107c fix(router): prevent error handling when injector is destroyed (#59457)
In this commit, we prevent error handling when the root injector is already destroyed. This may happen when the observable completes before emitting a value, which would trigger a `catchError` block that attempts to call `runInInjectionContext` on a destroyed injector.

PR Close #59457
2025-01-23 14:21:07 -08:00
hawkgs 6ce8ed7404 refactor(devtools): select the root element by default (#59626)
Select the application root element when you start Angular DevTools.

PR Close #59626
2025-01-22 13:34:40 -08:00
Pawel Kozlowski 3f6d9ff113 refactor(core): reuse directive instantiate logic (#59633)
This refactor reuses the existing directive instantiation
logic for a given component.

PR Close #59633
2025-01-22 13:27:48 -08:00
Jessica Janiuk f862ace181 fix(core): fixes test timer-based test flakiness in CI (#59674)
This converts two tests that rely on timers to use fakeAsync. This resolves the flakiness.

PR Close #59674
2025-01-22 13:27:05 -08:00
arturovt ae1dfdf82a refactor(core): prevent duplicating isRootView checks (#59614)
The `type_checks` module already exposes a utility function that checks whether `LView` is marked as a root view. There is no need to check flags in other places, as we can reuse the helper function.

PR Close #59614
2025-01-22 12:30:27 -08:00
Pawel Kozlowski afd8df3522 refactor(core): use linkedSignal primitives (#59599)
This change refactors the linkedSignal to use implementation
from the shared primitives package.

PR Close #59599
2025-01-22 12:29:37 -08:00
Pawel Kozlowski a0b5fdfe02 test(core): additional linkedSignal tests (#59599)
Adds a test veryfing that downstream dependencies are
not recomputed when the source of the linkedSignal is
equal to its current value.

PR Close #59599
2025-01-22 12:29:37 -08:00
Andrew Kushnir 2ed633a259 release: cut the v19.2.0-next.0 release 2025-01-22 11:49:18 -08:00
Andrew Kushnir ec8c288968 docs: release notes for the v19.1.3 release 2025-01-22 11:43:44 -08:00
Jens Kuehlers 61302cb4b6 docs: add Bluesky links (#59661)
PR Close #59661
2025-01-22 07:58:15 -08:00
Kristiyan Kostadinov d66881d172 fix(migrations): avoid applying the same replacements twice when cleaning up unused imports (#59656)
If a file ends up in multiple programs, the unused imports migration was counting it twice. This was fine since the string replacements were handling it correctly, but it was printing out incorrect data.

These changes rework the migration to de-duplicate the replacements and produce the data from the de-duplicated results.

PR Close #59656
2025-01-22 07:57:38 -08:00
Pawel Kozlowski 6c96d795bc Revert "refactor(core): reuse directive instantiate logic (#59633)" (#59659)
This reverts commit c089d21eb0.

PR Close #59659
2025-01-22 12:19:17 +01:00
Pawel Kozlowski c089d21eb0 refactor(core): reuse directive instantiate logic (#59633)
This refactor reuses the existing directive instantiation
logic for a given component.

PR Close #59633
2025-01-21 13:33:09 -08:00
Andrew Kushnir 4f46b02f29 test(zone.js): reduce flakiness of a timer-related test (#59653)
This commit updates a flaky test to increase the amount of work (more `for` loop iterations) to minimize the chance of getting the same timestamp after that work.

PR Close #59653
2025-01-21 13:20:24 -08:00
Kristiyan Kostadinov fe8a68329b feat(compiler): support untagged template literals in expressions (#59230)
Updates the compiler to support untagged template literals inside of the expression syntax (e.g. ``hello ${world}``).

PR Close #59230
2025-01-21 12:04:53 -08:00
Kristiyan Kostadinov 6960ec0c03 refactor(compiler-cli): handle template literals in ngtsc (#59230)
Updates the translators that convert expression ASTs to account for template literals.

PR Close #59230
2025-01-21 12:04:53 -08:00
Kristiyan Kostadinov 4016aa3229 refactor(compiler): clean up tagged templates in output AST (#59230)
Makes the following cleanups in the output AST:
* The `TemplateLiteral` and `TemplateLiteralElement` nodes have been renamed to `TemplateLiteralExpr` and `TemplateLiteralElementExpr` respectively for consistency and to avoid overlaps with the expression AST nodes.
* The `TemplateLiteralExpr` and `TemplateLiteralElementExpr` have been refactored to be `Expression`s for correctness. This involves updating some existing code.
* The `TaggedTemplateExpr` has been renamed to `TaggedTemplateLiteralExpr` for consistency.

PR Close #59230
2025-01-21 12:04:52 -08:00
Kristiyan Kostadinov eb7e765e2f refactor(compiler): produce AST for template literals (#59230)
Updates the compiler to parse the template literal tokens into the new `TemplateLiteral` and `TemplateLiteralElement` AST nodes.

PR Close #59230
2025-01-21 12:04:52 -08:00
Kristiyan Kostadinov 353005b97f refactor(compiler): tokenize template literals (#59230)
Reworks the lexer to produce tokens for template literal expressions.

PR Close #59230
2025-01-21 12:04:52 -08:00
Kristiyan Kostadinov 98998bbd42 refactor(compiler): allow lexer to produce multiple tokens (#59230)
Reworks the lexer's scanner to produce more than one token at a time. This can be useful for the cases where one token means the end of another one.

Also cleans up the scanner by making all non-essential methods private and using strict equality everywhere.

PR Close #59230
2025-01-21 12:04:52 -08:00
Pawel Kozlowski 76c4a77af7 refactor(core): move TNode manipulation logic to its own file (#59601)
Move TNode manipulation logic to its own file and update existing refereces.

PR Close #59601
2025-01-21 10:48:44 -08:00
Charles Lyding 5a13dff22c fix(compiler-cli): handle new expressions when extracting dependencies (#59637)
Updates the HMR dependencies extraction logic to handle new expressions.
For example, `deps: [[new Optional(), dep]]`.

PR Close #59637
2025-01-21 10:47:43 -08:00
Charles Lyding 8de0f3f79b fix(compiler-cli): handle conditional expressions when extracting dependencies (#59637)
Updates the HMR dependencies extraction logic to handle conditional expressions.
For example, `providers: [condition ? providersA : providersB]`.

PR Close #59637
2025-01-21 10:47:43 -08:00
Kristiyan Kostadinov 431166d93f fix(core): skip component ID collision warning during SSR (#59625)
The component ID collision check tries to account for components being replaced by checking for the `type`, however that might not work during SSR.

These changes disable the warning since it's primarily useful on the browser anyways.

PR Close #59625
2025-01-21 09:56:52 -08:00
Alex Rickabaugh bc2ad7bfd3 feat(core): support streaming resources (#59573)
This commit adds support for creating `resource()`s with streaming response
data. A streaming resource is defined by a `stream` option instead of a
`loader`, with `stream` being a function returning
`Promise<Signal<{value: T}|{error: unknown}>>`. Once the streaming loader
resolves to a `Signal`, it can continue to update that signal over time, and
the values (or errors) will be delivered to via the resource's state.

`rxResource()` is updated to leverage this new functionality to handle
multiple responses from the underlying Observable.

PR Close #59573
2025-01-21 09:55:32 -08:00
Kristiyan Kostadinov 67be7d2e06 fix(compiler-cli): extract parenthesized dependencies during HMR (#59644)
Fixes that the HMR dependency extraction logic wasn't accounting for parenthesized identifiers correctly.

PR Close #59644
2025-01-21 09:50:27 -08:00
Kristiyan Kostadinov 65f51e16aa fix(platform-browser): clear renderer cache during HMR when using async animations (#59644)
Fixes that the async animations renderer didn't have the logic to clean up its style cache during HMR. This is identical to #59393.

Fixes #59640.

PR Close #59644
2025-01-21 09:50:27 -08:00
Kristiyan Kostadinov ea2346955c fix(core): capture self-referencing component during HMR (#59644)
Fixes that we were filtering out the component itself from the set of dependencies when HMR is enabled, breaking self-referencing components.

Fixes #59632.

PR Close #59644
2025-01-21 09:50:27 -08:00
Kristiyan Kostadinov 9714b65d99 fix(core): replace metadata in place during HMR (#59644)
Currently during HMR we swap out the entire module definition (e.g. `MyComp.ɵcmp = newDef`). In standalone components and most module-based ones this works fine, however in some cases (e.g. circular dependencies) the compiler can produce a `setComponentScope` call for a module-based component. This call doesn't make it into the HMR replacement function, because it is defined in the module's file, not the component's. As a result, the dependencies of these components are cleared out upon replacement.

A secondary problem is that the `directiveDefs` and `pipeDefs` fields can save references to definitions that later become stale as a result of HMR.

These changes resolve both issues by:
1. Performing the replacement by copying the properties from the new definition onto the old one, while keeping it in place.
2. Preserving the initial `directiveDefs`, `pipeDefs` and `setInput`.

Fixes #59639.

PR Close #59644
2025-01-21 09:50:27 -08:00
Angular Robot 8e5c0f8e29 build: update dependency shiki to v2 (#59623)
See associated pull request for more information.

PR Close #59623
2025-01-21 09:12:02 -08:00
Kristiyan Kostadinov 98f820737b fix(compiler): handle :host-context with comma-separated child selector (#59276)
Both `:host` and `:host-context` work by looking for a specific character sequence that is terminated by `,` or `{` and replacing selectors inside of it with scoped versions. This is implemented as a regex which isn't aware of things like nested selectors. Normally this is fine for `:host`, because each `:host` produces one scoped selector which doesn't affect any child selectors, however it breaks down with `:host-context` which replaces each instance with two selectors. For example, if we have a selector in the form of `:host-context(.foo) a:not(.a, .b)`, the compiler ends up determining that `.a,` is the end selector and produces `.foo[a-host] a[contenta]:not(.a, .foo [a-host] a[contenta]:not(.a, .b) {}`.

These changes resolve the issue by splitting the CSS alogn top-level commas, processing the `:host-context` in them individually, and stiching the CSS back together.

PR Close #59276
2025-01-21 09:11:16 -08:00
Pawel Kozlowski 04c24472d2 refactor(core): move linkedSignal implementation to primitives (#59501)
This change refactors the Angular-specific linkedSignal implementation
such that its core logic can be shared with other frameworks.

PR Close #59501
2025-01-21 07:58:09 -08:00
Pawel Kozlowski 2d8fa73c1d docs: release notes for the v19.1.2 release 2025-01-20 15:14:49 +01:00
Kristiyan Kostadinov 394a683e2a fix(core): handle shadow DOM encapsulated component with HMR (#59597)
When a component is created with shadow DOM encapsulation, we attach a shadow root to it. When the component is re-created during HMR, it was throwing an error because only one shadow root can be attached to a node at a time.

Since there's no way to detach a shadow root from a node, these changes resolve the issue by making a shallow clone of the element, replacing it and using the clone for any future updates.

Fixes #59588.

PR Close #59597
2025-01-20 09:54:00 +01:00
Alan Agius 30c4404752 fix(compiler): update @ng/component URL to be relative (#59620)
This change is required to resolve https://github.com/angular/angular-cli/pull/29248 and works in conjunction with https://github.com/angular/angular-cli/pull/29386. It ensures that HMR (Hot Module Replacement) functions correctly with `base href`, proxies, and other advanced development setups.

PR Close #59620
2025-01-20 09:10:13 +01:00
Kristiyan Kostadinov f9b13e4e58 fix(compiler-cli): disable tree shaking during HMR (#59595)
When HMR is enabled, we need to capture the dependencies used in a template and forward them to the HMR replacement function. One half of this process is static, meaning that we can't change it after the initial compilation. Tree shaking becomes a problem in such a case, because the user can change the template in a way that changes the set of dependencies which will start matching with the static part of the HMR code.

These changes disable the tree shaking when HMR is enabled to ensure that the dependencies stay stable.

Fixes #59581.

PR Close #59595
2025-01-20 08:59:30 +01:00
Kristiyan Kostadinov 2caa45a6e1 fix(core): HMR not matching component that injects ViewContainerRef (#59596)
If a component injects `ViewContainerRef`, its `LView` gets wrapped in an empty `LContainer` and the container's host becomes the `LView`. The HMR logic wasn't accounting for this which meant that such components wouldn't be replaced.

Fixes #59592.

PR Close #59596
2025-01-20 08:57:17 +01:00
Matt Janssen 16b08853bc docs(router): Fix small grammatical errors (#59568)
Improves readability.
PR Close #59568
2025-01-17 13:21:26 -08:00
arturovt 14791f3e12 fix(core): cleanup stash listener when app is destroyed (#59598)
In this commit, we clean up the reference to the function set by the environment initializer, as the function closure may capture injected elements and prevent them from being properly garbage collected.

PR Close #59598
2025-01-17 10:00:56 -08:00
Pawel Kozlowski 35e5bbb0dc refactor(core): reuse setupStaticAttributes in ComponentRef (#59572)
This change refactor how the dynamically created component
deals with attributes in order to reuse the existing
setupStaticAttributes logic (instead of having specific
and similar code).

PR Close #59572
2025-01-17 09:59:59 -08:00
Andrew Kushnir 4e6017a9f5 test(platform-server): fix flaky incremental hydration test (#59584)
This commit updates a test setup to define a global `ngServerMode` correctly for a test that was emulating client-only behavior. The flag could've been set by prior tests and depending on its state, the test was acting differently.

PR Close #59584
2025-01-17 10:45:37 +01:00
Andrew Kushnir 8ea691a9d8 test(platform-server): fix flaky hydration test (#59579)
This commit updates testing setup logic to apply correct `document` reference, which should be used by the runtime. Previously, the timing of that operation was less predictable and in some cases led to reusing document state from previous tests.

PR Close #59579
2025-01-17 10:30:51 +01:00
arturovt f6e97763cf fix(core): cleanup _ejsa when app is destroyed (#59492)
In this commit, we delete `_ejsa` when the app is destroyed, ensuring that no elements are still captured in the global list and are not prevented from being garbage collected.

PR Close #59492
2025-01-16 13:56:28 -08:00
arturovt c51c66ef1e refactor(router): drop forRoot guard in production (#59458)
In this commit, we switch from decorators (which also produce redundant metadata, such as in the `declareFactory`
instruction) to the `inject` function to drop the `ROUTER_FORROOT_GUARD` token in production. This token factory function is only in development mode but is still referenced in the constructor due to the `@Inject(ROUTER_FORROOT_GUARD)` decorator.

PR Close #59458
2025-01-16 13:55:49 -08:00
Kristiyan Kostadinov b76be83b4d fix(core): animation sometimes renderer not being destroyed during HMR (#59574)
These changes aim to resolve the issue that prompted #59514. The animations module is a bit tricky for HMR, because it schedules the destruction of its renderer after the currently-running animations are done. If there are no running animations, the renderer gets destroyed next time around. This is a problem, because it means that the styles can stay around for a long time.

These changes resolve the issue by:
1. Moving the cleanup of the renderer to after the destruction of the old view. This ensures that the usual clean up flow has been kicked off.
2. Flushing the animations when a component is replaced to ensure that the renderer is cleaned up in a timely manner.

PR Close #59574
2025-01-16 11:36:43 -08:00
Angular Robot 884e0b437a build: update cross-repo angular dependencies to v19.2.0-next.0 (#59571)
See associated pull request for more information.

PR Close #59571
2025-01-16 10:40:01 -08:00
Pawel Kozlowski 10f280a4d3 refactor(core): move DOM manipulation logic to its own file (#59462)
This refactoring takes a step toward breaking down the
node_manipulation file into smaller, more focused files.

PR Close #59462
2025-01-16 10:38:44 -08:00
Alex Rickabaugh 01fffdb547 refactor(core): port resource() to linkedSignal() (#59024)
When the reactive `request` of a resource() notifies, it transitions to the
Loading state, fires the loader, and eventually transitions to Resolved.
With the prior implementation, a change of the `request` will queue the
effect, but the state remains unchanged until the effect actually runs. For
a brief period, the resource is in a state where the request has changed,
but the state has yet to update.

This is problematic if we want to use resources in certain contexts where we
care about the state of the resource in a synchronous way. For example, an
async validator backed by a resource might be checked after an update:

```
value.set(123);

if (validator.value()) {
  // value is still valid, even though the resource is dirty and will soon
  // flip to loading state (returning value(): undefined) while revalidating
}
```

To address this timing concern, `linkedSignal()` is used within the
`resource()` to synchronously transition the state in response to the
request changing. This ensures any followup reads see a consistent view of
the resource regardless of whether the effect has run.

This also addresses a race condition where `.set()` behaves differently on a
`resource()` depending on whether or not the effect has run.

PR Close #59024
2025-01-16 09:22:46 -08:00
Alex Rickabaugh 329cf9fbde fix(core): change Resource to use explicit undefined in its typings (#59024)
Originally the `T` in `Resource<T>` represented the resolved type of the
resource, and `undefined` was explicitly added to this type in the `.value`
signal. This turned out to be problematic, as it wasn't possible to write a
type for a resource which didn't return `undefined` values. Such a type is
useful for 2 reasons:

1. to support narrowing of the resource type when `Resource.hasValue()`
   returns `true`.

2. for resources which use a different value instead of `undefined` to
   represent not having a value (for example, array resources which want to
   use `[]` as their default).

Instead, this commit changes `resource()` and `rxResource()` to return an
explicit `ResourceRef<T|undefined>`, and removes the union with `undefined`
from all types related to the resource's value. This way, it's trivially
possible to write `Resource<T>` to represent resources where `.value` only
returns `T`.

`hasValue()` then actually works to perform narrowing, by narrowing the
resource type to `Exclude<T, undefined>`.

PR Close #59024
2025-01-16 09:22:46 -08:00
Leon Senft f8b8e80d79 fix(core): treat exceptions in equal as part of computation (#55818)
Prevent leaking signal reads and exceptions from a custom `equal`
function of a producer `computed()` to a consumer.

Upstream https://github.com/tc39/proposal-signals/pull/90 with a notable
change: Angular does **not** track reactive reads in custom `equal`
implementations.

PR Close #55818
2025-01-16 08:10:10 -08:00
Pawel Kozlowski 055624d0da docs: update linkedSignal documentation (#59532)
This commit updates the linkedSignal documentation around
the quality function option.

Fixes #59094

PR Close #59532
2025-01-16 08:09:23 -08:00
Matthieu Riegler e4dd1773db docs: update examples to the application builder (#59539)
fixes #59538

PR Close #59539
2025-01-16 08:08:36 -08:00
Pawel Kozlowski aa45d44c5b docs: release notes for the v19.1.1 release 2025-01-16 13:19:36 +01:00
Kristiyan Kostadinov c9cd5585c2 fix(core): run HMR replacement in the zone (#59562)
Fixes that in some cases the HMR replacement function was being run outside the zone which meant that change detection would break down after a replacement.

Fixes #59559.

PR Close #59562
2025-01-16 12:36:58 +01:00
Kristiyan Kostadinov 2fe54a11f4 fix(platform-browser): roll back HMR fix (#59557)
Rolls back the changes from #59514 because they ended up being breaking in 1P. We can revisit the internal fix in a different way.

Fixes #59558.

PR Close #59557
2025-01-16 12:27:51 +01:00
Pawel Kozlowski db745cd75f test(devtools): disable flaky highlighter test (#59561)
The test in question was very flaky on CI, example run:
https://github.com/angular/angular/actions/runs/12805645683/job/35702462974?pr=59557

Disabling as it is causing productivity loose for the team.

PR Close #59561
2025-01-16 12:19:39 +01:00
Doug Parker c9eaf53b4f release: bump Angular DevTools version to 1.0.21 (#59548)
PR Close #59548
2025-01-15 16:48:00 -08:00
Andrew Kushnir d0ad030ec7 Revert "feat(compiler-cli): detect missing structural directive imports (#59443)" (#59544)
This reverts commit ed705a856a.

PR Close #59544
2025-01-15 13:38:37 -08:00
arturovt 2e138e644c refactor(common): prevent duplicating Content-Type header (#59518)
Drops some bytes by moving `Content-Type` into a variable, which is then minified to something like `var b="Content-Type"` and reused in all the places.

PR Close #59518
2025-01-15 12:22:29 -08:00
Pawel Kozlowski af99c6c109 refactor(core): move logic out of shared instructions code (#59453)
This is first of a series of refactorings that moves code
around such that logic from the shared instruction file
is dispatched to the relevant functional parts.

PR Close #59453
2025-01-15 12:20:27 -08:00
kirjs e2925cccf8 docs: release notes for the v19.1.0 release 2025-01-15 14:59:28 -05:00
kirjs b223f7e9c6 docs: release notes for the v19.0.7 release 2025-01-15 14:47:20 -05:00
Kevin Brey ed705a856a feat(compiler-cli): detect missing structural directive imports (#59443)
Adds a new diagnostic that ensures that a standalone component using custom structural directives in a template has the necessary imports for those directives.

Fixes #37322

PR Close #59443
2025-01-15 13:59:37 -05:00
arturovt 3b3040d32a refactor(common): drop error message in production (#59471)
Switches to using `RuntimeError` and drops the error message in production by replacing it with an error code.

PR Close #59471
2025-01-15 12:28:29 -05:00
Matthieu Riegler d797c5cb94 docs: update class & style binding recommendation (#59240)
This commit introduces an update to the official recommendations when it comes to class & styles bindings.

`[class]` & `[style]` bindings are now recommended for basic uses cases.

`[ngClass]` and `[ngStyle]` allow more advanced bindings (like space separated keys) or keys with units (for `ngStyle`) which are not supported by the native bindings. They still require the dedicated directives.

PR Close #59240
2025-01-15 12:27:12 -05:00
Angular Robot 2a92dcf4b7 docs: update Angular CLI help [main] (#59535)
Updated Angular CLI help contents.

PR Close #59535
2025-01-15 12:25:32 -05:00
Jeremy Elbourn c38ea0767e docs: clarify that @for doesn't support break/continue (#59533)
We recently saw some confusion around this, so it's worth adding a
sentence to clarify

PR Close #59533
2025-01-15 12:00:21 -05:00
carimatics 3e31438d59 docs(forms): escape inequality signs of input tags in flowchart (#59517)
The input tags written within the flowcharts in the document were not being escaped, so we did that.
This change will ensure that the flowcharts in the document are properly displayed.

PR Close #59517
2025-01-15 10:17:21 -05:00
Sandeep Salwan e702934080 docs: fix typos in let.md (#59526)
PR Close #59526
2025-01-15 09:44:25 -05:00
Andrew Kushnir eadf6a35bb Revert "refactor: initialize headers map directly in HttpHeaders class (#59268)" (#59523)
This reverts commit e15226a444.

PR Close #59523
2025-01-14 17:48:34 -05:00
Abdul Wahab 9db23f9d12 docs: fix property wrong usage inside afterNextRender in lifecycle.md (#59521)
PR Close #59521
2025-01-14 16:27:39 -05:00
Angular Robot 88305373d1 build: update cross-repo angular dependencies (#59520)
See associated pull request for more information.

PR Close #59520
2025-01-14 16:05:15 -05:00
hawkgs b9155b5121 docs: set syntax highlighting to the remaining Markdown code examples blocks (#59088)
There are some code blocks that slipped through the initial Regex-es.

Related to #59026

PR Close #59088
2025-01-14 15:14:02 -05:00
hawkgs 265265a3f8 docs(docs-infra): fix scrolling issues in the API reference (#59207)
Fix issues related to scrolling in the API reference:
- Scroll to the top of the page when navigating to the API details page
- Preserve scroll position when navigating back from the API details page

PR Close #59207
2025-01-14 14:56:42 -05:00
arturovt bc77f44802 refactor(common): tree-shake lcpObserver in NgOptimizedImage (#59481)
Prior to this commit, the `this.lcpObserver?.updateImage` expression was still preserved in the production code because it wasn't wrapped with `ngDevMode`. The observer is injected only in development mode. Additionally, we moved the logic from `ngOnDestroy` to avoid having an empty method in production.

PR Close #59481
2025-01-14 14:54:16 -05:00
Angular Robot 19d224117e build: lock file maintenance (#59519)
See associated pull request for more information.

Closes #59494 as a takeover pull request

PR Close #59519
2025-01-14 14:44:30 -05:00
arturovt 1ff5cd6906 refactor(common): tree-shake transfer cache interceptor stuff (#59439)
In this commit, we replace `isPlatformServer` runtime call with the `ngServerMode` in the `transferCacheInterceptorFn` in order to make the functionality tree-shakable between client and server bundles.

PR Close #59439
2025-01-14 14:40:05 -05:00
Pawel Kozlowski 815f1b1457 refactor(core): add profiler calls for tne newly introduced events (#59233)
The set of profiler events was recently extended. This commit plugs
newly created events dispatch into the approriate places
of the Angular core.

PR Close #59233
2025-01-14 12:35:21 -05:00
Pawel Kozlowski 9c835e89fe refactor(core): profiler takes null as a default instance (#59233)
Several profiler calls don't have any meaningful instance when
producing a profiling event. This commit changes the default
instance value to null to sreamline profiler invocations.

PR Close #59233
2025-01-14 12:35:21 -05:00
Kristiyan Kostadinov 2ca258705f fix(core): destroy renderer when replacing styles during HMR (#59514)
Currently when we swap out the component during HMR, we remove the renderer from the cache, but we never destroy it which means that its styles are still in the DOM. This can cause the old styles to leak into the component after they're replaced. These changes add a `destroy` call to ensure that they're removed.

PR Close #59514
2025-01-14 11:22:06 -05:00
hawkgs 803358f0a3 docs(docs-infra): change API reference list items order to top-down (#58655)
Change the order from left-right to top-down (columns) and additionally make columns equal width.

PR Close #58655
2025-01-14 11:10:52 -05:00
hawkgs 6cd6780d38 docs(docs-infra): fix SCSS build-time warnings (#59115)
Fix SCSS "declarations after nested rules" and `@import` warnings.

PR Close #59115
2025-01-14 11:09:23 -05:00
Matthieu Riegler 52334e02e7 refactor(compiler): remove unused AstVisitors (#59297)
Those 2 clases weren't imported anywhere.

PR Close #59297
2025-01-14 11:08:25 -05:00
Andrew Kushnir ed05cb5695 refactor(core): do not serialize parent block id for top level blocks (#59190)
This commit updates incremental hydration-related annotation logic to avoid serializing parent block id when it's `null` (for top-level blocks).

PR Close #59190
2025-01-14 11:06:58 -05:00
Angular Robot 9ae0d3e189 build: update dependency typescript to v5.7.3 (#59512)
See associated pull request for more information.

PR Close #59512
2025-01-14 11:03:56 -05:00
Angular Robot d19b7bbe4e build: update io_bazel_rules_sass digest to adeaf81 (#59508)
See associated pull request for more information.

PR Close #59508
2025-01-14 11:03:21 -05:00
hawkgs 220608e4cc docs(docs-infra): generate errors and extended-diagnostics route NavigationItem-s (#59355)
Generate the `NavigationItem`-s as part of adev/shared-docs pipeline and use the output JSON files instead of the hardcoded objects in the `sub-navigation-data.ts`.

PR Close #59355
2025-01-14 11:00:06 -05:00
Angular Robot 1f4c9ec2cf build: update all non-major dependencies (#59510)
See associated pull request for more information.

PR Close #59510
2025-01-14 10:57:23 -05:00
Angular Robot 2c8f199cf7 build: update dependency @babel/generator to v7.26.5 (#59511)
See associated pull request for more information.

PR Close #59511
2025-01-14 10:55:24 -05:00
Angular Robot 5462c64047 build: update scorecard action dependencies (#59513)
See associated pull request for more information.

PR Close #59513
2025-01-14 10:53:21 -05:00
Pawel Kozlowski 3d1496274c ci: update Ethan Cline GitHub user name (#59516)
Use case-sensitive user name.

PR Close #59516
2025-01-14 10:52:04 -05:00
RafaelJCamara e15226a444 refactor: initialize headers map directly in HttpHeaders class (#59268)
Improved the initialization of the headers map to enhance performance
and code readability.

No breaking changes.

PR Close #59268
2025-01-14 10:50:15 -05:00
arturovt d038b3cdd1 refactor(docs-infra): lazy-load EmbeddedTutorialManager in editor UI state (#59509)
In this commit, we lazy-load the `EmbeddedTutorialManager` in the editor UI state as done in other parts of the code.

PR Close #59509
2025-01-14 10:15:12 -05:00
Charles Lyding 9963a73699 docs: update component HMR to fully stable (#59503)
As of 19.1, component HMR for both styles and templates is considered
stable and enabled by default. This includes support for both inline
and file-based component styles/templates.

PR Close #59503
2025-01-14 09:49:15 -05:00
Andrew Kushnir 412ac303bc Revert "refactor(core): profiler takes null as a default instance (#59233)" (#59506)
This reverts commit c4ad8fb2e7.

PR Close #59506
2025-01-13 17:03:36 -05:00
Andrew Kushnir e77df14620 Revert "refactor(core): add profiler calls for tne newly introduced events (#59233)" (#59506)
This reverts commit 435d31ed5f.

PR Close #59506
2025-01-13 17:03:36 -05:00
hawkgs 0bb81c5ab4 feat(devtools): tone down obtrusive elements in the Injector Tree tab (#59499)
Some of the elements are a bit too large so they have been shrunken to fit in with the rest of the UI.

PR Close #59499
2025-01-13 15:06:24 -05:00
arturovt 47e48b44dc refactor(docs-infra): lazy-load EmbeddedTutorialManager in code editor (#59505)
In this commit, we lazy-load the `EmbeddedTutorialManager` in the code editor component as done in other parts of the code.

PR Close #59505
2025-01-13 15:00:26 -05:00
AleksanderBodurri 065e1187fc fix(devtools): remove property tab css that is hiding directive metadata (#59493)
It looks like this height property was redundant prior to upgrading to angular/material 19.1.0-rc.0. An interaction between this property and that update caused elements inside of material expansion panels to be hidden.

This PR removes this unnecessary height assignment entirely.

PR Close #59493
2025-01-13 14:48:01 -05:00
Angular Robot 368d69e115 build: update cross-repo angular dependencies (#59474)
See associated pull request for more information.

PR Close #59474
2025-01-13 12:52:11 -05:00
arturovt 5d6358168a refactor(common): prevent duplicating Accept header (#59467)
In this commit, we extract content types into a variable to eliminate extra bytes, as these values are duplicated in multiple places.

PR Close #59467
2025-01-13 12:38:46 -05:00
arturovt 4491704fba refactor(common): drop enums by changing to const enum (#59468)
Note: this enums are not a part of the public API.

Prior to this commit, the compiler produced:

```js
var DateType;
(function (DateType) {
    DateType[DateType["FullYear"] = 0] = "FullYear";
    DateType[DateType["Month"] = 1] = "Month";
    DateType[DateType["Date"] = 2] = "Date";
    DateType[DateType["Hours"] = 3] = "Hours";
    DateType[DateType["Minutes"] = 4] = "Minutes";
    DateType[DateType["Seconds"] = 5] = "Seconds";
    DateType[DateType["FractionalSeconds"] = 6] = "FractionalSeconds";
    DateType[DateType["Day"] = 7] = "Day";
})(DateType || (DateType = {}));
```

With these changes, we allow objects to be dropped entirely and inlined.

PR Close #59468
2025-01-13 11:14:27 -05:00
arturovt 783c5bb586 refactor(core): change node navigation step to plain const (#59469)
We change the `enum` to a plain `const` to eliminate extra bytes, as `enum` is not really required. We might not be able to switch to `const enum` due to single-file compilation restrictions.

PR Close #59469
2025-01-13 11:12:47 -05:00
Kristiyan Kostadinov 9931030b0e test(migrations): add test for earlier fix (#59497)
Adds a test for the fix from #59452 now that we know what caused the issue.

PR Close #59497
2025-01-13 11:10:18 -05:00
Kristiyan Kostadinov 915593ad25 refactor(compiler): fix typo in method name (#59479)
Fixes a typo in the `AstVisitor.visitTypeofExpresion` method's name.

PR Close #59479
2025-01-13 10:57:51 -05:00
Pawel Kozlowski 435d31ed5f refactor(core): add profiler calls for tne newly introduced events (#59233)
The set of profiler events was recently extended. This commit plugs
newly created events dispatch into the approriate places
of the Angular core.

PR Close #59233
2025-01-13 10:52:19 -05:00
Pawel Kozlowski c4ad8fb2e7 refactor(core): profiler takes null as a default instance (#59233)
Several profiler calls don't have any meaningful instance when
producing a profiling event. This commit changes the default
instance value to null to sreamline profiler invocations.

PR Close #59233
2025-01-13 10:52:19 -05:00
Amy Sorto 790221b1d2 docs: add component harnesses guides (#59078)
PR Close #59078
2025-01-13 10:46:43 -05:00
arturovt fdbb57f798 refactor(docs-infra): lazy-load EmbeddedTutorialManager in home editor (#59491)
In this commit, we lazy-load `EmbeddedTutorialManager` in the home editor component via `injectAsync` as done in other parts of the code.

PR Close #59491
2025-01-13 10:45:43 -05:00
Bobokhuja cb30fecdd4 docs: fix typo example code in pipes documentation (#59312)
PR Close #59312
2025-01-13 10:38:06 -05:00
RafaelJCamara dd8b651794 docs: add $default to path (#59383)
Closes: #59378

PR Close #59383
2025-01-13 10:36:17 -05:00
Matthieu Riegler 69aa4e91f5 docs(docs-infra): remove sorting from API manager (#59427)
fixes #59423

PR Close #59427
2025-01-13 10:33:37 -05:00
PhilippMDoerner 4c12f07970 docs: Adjust lines of server.ts example in server-side-rendering docs (#59490)
docs: Adjust lines of server.ts example in ssr docs

The server.ts excerpt used in the server-side-rendering docs
(https://angular.dev/guide/ssr#configure-server-side-rendering)
does not fully encapsulate the commonEngine code-block.

It begins too early in line 31, leading to the inclusions of lines
from another codeblock that is not intended to be shown here:
```
 );  

// All regular routes use the Angular engine
```
It should be beginning with the line
`// All regular routes use the Angular engine`.

It also ends too soon, cutting off these parts of the code-block:
```
      .catch((err) => next(err));
  });
```
PR Close #59490
2025-01-13 10:32:15 -05:00
Matthieu Riegler 40e7904bd8 docs(docs-infra): prevent the host class from being replaced (#59460)
When removing the binding, the class defined on the host element is being replaced

fixes #59442

PR Close #59460
2025-01-10 14:03:38 -05:00
Angular Robot f978cdef63 build: update cross-repo angular dependencies (#59473)
See associated pull request for more information.

PR Close #59473
2025-01-10 13:36:51 -05:00
Jessica Janiuk 7d5d693eda fix(dev-infra): remove no longer necessary scope (#59472)
We no longer have need for the view engine scope.

PR Close #59472
2025-01-10 13:28:28 -05:00
Angular Robot 49dbf093eb build: update cross-repo angular dependencies (#59470)
See associated pull request for more information.

PR Close #59470
2025-01-10 12:27:22 -05:00
Paul Gschwendtner 8496fb16bc fix(migrations): incorrect stats when migrating queries with best effort mode (#59463)
We previously did count forcibly ignored queries as incompatible. This
resulted in incorrect migration stats that are printed upon migration
completion.

See: #58657

PR Close #59463
2025-01-10 11:52:13 -05:00
Paul Gschwendtner 86cbaaa2a2 test: add test to verify extending tsconfig works in signal input migration (#59463)
Related to https://github.com/angular/angular/issues/59348

PR Close #59463
2025-01-10 11:52:13 -05:00
Paul Gschwendtner 24f383ab4f test: improve typescript version coverage for signal input migration (#59463)
This ensures the migration works for these TypeScript versions. The
migration is very sensitive to the TS version and its internals; so it
makes sense to test all of these.

PR Close #59463
2025-01-10 11:52:12 -05:00
arturovt 17510becb0 refactor(platform-browser): drop BROWSER_MODULE_PROVIDERS_MARKER in production (#59412)
In this commit, we switch from decorators (which also produce redundant metadata, such as in the
`declareFactory` instruction) to the `inject` function to drop the `BROWSER_MODULE_PROVIDERS_MARKER`
token in production. This token is actually provided only in development mode but is still
referenced in the constructor due to the `@Inject(BROWSER_MODULE_PROVIDERS_MARKER)` decorator.

PR Close #59412
2025-01-10 11:47:32 -05:00
Aristeidis Bampakos e8df770141 docs: update component scenarios guide (#59461)
PR Close #59461
2025-01-10 10:55:40 -05:00
Kristiyan Kostadinov 966a370390 fix(migrations): resolve text replacement issue (#59452)
Based on https://github.com/angular/angular/pull/59353#issuecomment-2580320424, fixes a text replacement issue that seems to cause code to be duplicated in some setups.

PR Close #59452
2025-01-10 10:47:54 -05:00
Matthieu Riegler 676357dbe0 docs: update linkedSignal. (#59221)
The commit adds the mention that it is intentionnal that the computation is reactive even if there is an explicit `source`.

fixes #59094

PR Close #59221
2025-01-10 10:41:18 -05:00
Angular Robot e178cbb8b7 build: update cross-repo angular dependencies (#59464)
See associated pull request for more information.

PR Close #59464
2025-01-10 10:38:10 -05:00
Charles Lyding a4164141a3 fix(compiler): use chunk origin in template HMR request URL (#59459)
The URL that is dynamically imported to fetch a potential component update
for HMR is now based on the value of `import.meta.url`. This ensures that
the request is sent to the same location that was used to retrieve the
application code. For some development server setups the HTML base HREF
may not be the location of the Angular development server. By using the
application code location which was generated by the development server,
HMR requests can continue to work as expected in these scenarios. In
most common cases, this change will not have any effect as the HTML base
HREF aligns with the location of the application code files.

PR Close #59459
2025-01-09 18:21:48 -05:00
arturovt d51d67b725 refactor(common): prevent duplicating X-Request-URL (#59420)
The `X-Request-URL` string is duplicated in multiple places. It is worth moving it to a shared constant that would be minified to something like `const a = "X-Request-URL"` and referenced in all the used places.

PR Close #59420
2025-01-09 18:18:24 -05:00
Doug Parker c1bc06c337 release: bump Angular DevTools version to 1.0.20 (#59454)
PR Close #59454
2025-01-09 15:41:54 -05:00
Andrew Kushnir ac2dbe3eb1 Revert "fix(core): Defer afterRender until after first CD (#58250)" (#59455)
This reverts commit 9870b643bf.

PR Close #59455
2025-01-09 14:30:01 -05:00
Andrew Kushnir 21f1ba22a6 Revert "fix(core): Don't run effects in check no changes pass (#58250)" (#59455)
This reverts commit a5fc962094.

PR Close #59455
2025-01-09 14:30:01 -05:00
arturovt 5884153e12 refactor(animations): drop warning functions in production (#59408)
Prior to this commit, functions that issued warnings were not wrapped with `ngDevMode` at the point
of invocation but had the `ngDevMode` check inside. This meant they acted as no-ops in production.
In this commit, we wrap them externally with `ngDevMode`, so they are entirely removed.

PR Close #59408
2025-01-09 13:15:06 -05:00
arturovt 17234213f6 refactor(platform-browser): remove Console from Hammer gestures (#59409)
Injecting the `Console` is redundant because it directly calls the global `console` object.
There is no reason to reference this class in Hammer gestures, as it is only used in development
mode. We can safely call the `console` object directly.

PR Close #59409
2025-01-09 13:09:51 -05:00
arturovt e194573d0d refactor(common): tree-shake fetch backend (#59418)
This commit updates the code of the HTTP code to make the `FetchBackend` class tree-shakable. The class is only needed with `withFetch()` is called and it should not be included into bundles that do not use that feature.

PR Close #59418
2025-01-09 13:05:56 -05:00
arturovt f2e293db4e refactor(platform-browser): drop Hammer token names in production (#59438)
In this commit, we drop `HAMMER_GESTURE_CONFIG` and `HAMMER_LOADER` injection token names in production.

PR Close #59438
2025-01-09 12:38:06 -05:00
arturovt 83bd63fa7c refactor(common): drop NullViewportScroller for client bundles (#59440)
In this commit, we replace the `isPlatformBrowser` runtime call with the `ngServerMode` in order to drop the `NullViewportScroller` for client bundles.

PR Close #59440
2025-01-09 12:33:04 -05:00
arturovt 205330d46a refactor(core): drop platform injection token names in production (#59400)
In this commit, we tree-shake the injection token names in production.

PR Close #59400
2025-01-09 12:28:17 -05:00
Kristiyan Kostadinov 3638f93acc fix(compiler-cli): handle more node types when extracting dependencies (#59445)
Fixes that the HMR dependency extraction logic wasn't handling some node types. Most of these are a bit edge-case-ey in component definitions, but variable initializers and arrow functions can realistically happen in factories.

PR Close #59445
2025-01-09 12:22:46 -05:00
Angular Robot 9abc79bb23 build: update cross-repo angular dependencies (#59249)
See associated pull request for more information.

PR Close #59249
2025-01-09 12:18:45 -05:00
arturovt 06214821ca refactor(core): change LContainerFlags to const enum (#59416)
Prior to this commit, the compiler produced:

```js
No = (function (e) {
  return (
    (e[(e.None = 0)] = "None"),
    (e[(e.HasTransplantedViews = 2)] = "HasTransplantedViews"),
    e
  );
})(No || {});
```

Changing to `const enum` allows it to be entirely dropped and inline values.

PR Close #59416
2025-01-09 10:38:28 -05:00
Sumit Arora a55575d4d6 fix(devtools): fixing dark mode colors for devtools and router tree (#59329)
added dark mode colors for devtools and router tree  and fixed the router tree legend rerendering issue

PR Close #59329
2025-01-09 10:32:41 -05:00
Ethan Cline a648fa14dd ci: Add self (Ethan Cline) as primitives-shared reviewer. (#59437)
Add self (Ethan Cline) as primitives-shared reviewer.

PR Close #59437
2025-01-09 10:31:29 -05:00
Angular Robot 092557ef98 build: update dependency @bazel/buildifier to v8 (#59446)
See associated pull request for more information.

PR Close #59446
2025-01-09 10:30:41 -05:00
zhangenming a201d455e6 docs(router): update link to development guide in README.md (#59388)
PR Close #59388
2025-01-09 10:29:38 -05:00
Kristiyan Kostadinov d564506164 docs: add doc page about unused imports schematic (#59449)
Adds a docs for the new `ng generate @angular/core:cleanup-unused-imports` schematic.

PR Close #59449
2025-01-09 10:28:39 -05:00
RafaelJCamara 5c9e84acd6 docs: update license URL from angular.io to angular.dev and year of license to 2025 (#59407)
PR Close #59407
2025-01-09 10:27:54 -05:00
Kristiyan Kostadinov adc6c094f4 build: clean up pipeline-specific tests (#59450)
Now that we only have the template pipeline, we can remove the `.pipeline` extension from the files.

PR Close #59450
2025-01-09 09:56:06 -05:00
arturovt 854a5616bf refactor(forms): drop CALL_SET_DISABLED_STATE name in production (#59430)
In this commit, we drop the `CALL_SET_DISABLED_STATE` injection token name in production.

PR Close #59430
2025-01-09 09:21:00 -05:00
Jessica Janiuk e689aaed30 docs: release notes for the v19.1.0-rc.0 release 2025-01-08 10:26:08 -08:00
Jessica Janiuk f39425a489 release: bump the next branch to v19.2.0-next.0 2025-01-08 10:26:08 -08:00
Jessica Janiuk c69f12ffd6 docs: release notes for the v19.0.6 release 2025-01-08 10:07:41 -08:00
Pawel Kozlowski 5e8ee7aae0 refactor(docs-infra): simplify Preview component (#59404)
The Preview component contains a work-around for the
IFrame flickering issue https://github.com/angular/angular/issues/16994
Attempting a different work-around here.

PR Close #59404
2025-01-08 17:19:08 +00:00
Matthieu Riegler 5c0d68804e fix(core): Ensure that a destroyed effect never run. (#59415)
Prior to this change, a scheduled root effect, even if destroyed instantly, would still run at least once.

This commit fixes this.

fixes #59410

PR Close #59415
2025-01-08 16:40:44 +00:00
arturovt dd1d69b2e2 refactor(common): drop PRELOADED_IMAGES name in production (#59425)
In this commit, we drop the `PRELOADED_IMAGES` injection token name in production.

PR Close #59425
2025-01-08 16:12:02 +00:00
Dmytro Mezhenskyi 00cc923117 refactor(platform-browser): improve error message for UNEXPECTED_SYNTHETIC_PROPERTY (#58983)
Improve error message by adding instructions for enabling animations using standalone API.

PR Close #58983
2025-01-08 15:56:18 +00:00
Miles Malerba a5fc962094 fix(core): Don't run effects in check no changes pass (#58250)
Fixes an issue where we accidentally ran effects in check no changes
passes.

PR Close #58250
2025-01-08 15:33:38 +00:00
Miles Malerba 9870b643bf fix(core): Defer afterRender until after first CD (#58250)
For `afterRender`/`afterNextRender` calls associated with a particular
view, ensure that they are not registered until after the first time the
view is rendered.

Co-authored-by: Alex Rickabaugh <alxhub@users.noreply.github.com>

PR Close #58250
2025-01-08 15:33:38 +00:00
Paul Gschwendtner a25396d562 fix(bazel): support setting type: module in source package.json (#59406)
This is helpful as it allows us to set `type: module` in the checked-in
package files, useful for the hybrid mode of `rules_js` and
`rules_nodejs`, where the package.json files can control the execution
format.

PR Close #59406
2025-01-08 15:24:05 +00:00
arturovt ce8c7c877c refactor(docs-infra): allow home editor to be cleaned up properly (#58164)
In this commit, we're replacing the `async-await` style in the `home-editor` component with the `from()`
observable, which allows us to invert a dependency and avoid memory leaks. Because an `async` function
has a closure, just like any other function in JavaScript, using `await` captures `this` until the
promise is resolved.

PR Close #58164
2025-01-08 15:23:16 +00:00
Matthieu Riegler fd073004bb docs(docs-infra): fix entry labels. (#59384)
fixes #59382

PR Close #59384
2025-01-08 15:22:43 +00:00
RafaelJCamara fabd642826 docs: update README to reflect correct Angular repository branch in rendering regions (#59421)
PR Close #59421
2025-01-08 15:22:07 +00:00
arturovt d9707e1127 refactor(core): drop DEFER_BLOCK_DEPENDENCY_INTERCEPTOR in production (#59381)
`new` expressions are not dropped by default because they are considered side-effectful,
even if they are not referenced anywhere in production mode.

PR Close #59381
2025-01-07 20:14:57 +00:00
arturovt 52a6710f54 fix(router): complete router events on dispose (#59327)
In this commit, we manually complete the `events` subject to remove all active observers and enable
granular garbage collection, as users may forget to unsubscribe manually when subscribing to `router.events`.

PR Close #59327
2025-01-07 17:06:26 +00:00
arturovt 5685b4c6aa refactor(core): prevent duplicating LView destroyed checks (#59387)
The `type_checks` module already exposes a utility function that checks whether `LView` is marked
as destroyed. There is no need to check flags in other places, as we can reuse the helper function.

PR Close #59387
2025-01-07 17:05:48 +00:00
Matthieu Riegler aaf1fbb152 refactor(core): remove outdated comment. (#59401)
Should have been done by #58238, but was probably missed in a rebase.

fixes #59397

PR Close #59401
2025-01-07 17:05:12 +00:00
Johnson Chu 9b8f699032 refactor: remove unnecessary // tslint:disable rule flags in devtools (#59365)
Files in the vendor directory have been excluded in tslint.json.

PR Close #59365
2025-01-07 16:06:21 +00:00
Johnson Chu a6cdbec09f refactor: remove unnecessary TSLint rule flags (#59365)
There are many TSLint rule flags in the source code that have no effect, and they can be safely removed to keep the code clean.

PR Close #59365
2025-01-07 16:06:21 +00:00
Kristiyan Kostadinov 0e23f20c41 fix(platform-browser): styles not replaced during HMR when using animations renderer (#59393)
When we replace a component during HMR, we clear it from the cache of the renderer factory, however when using animations, there's an animation-specific renderer factory that wraps the base DOM one and was preventing the cache from being cleared.

These changes rework the logic that clear the cache to go through a method so we can forward the call to the delegated factory.

PR Close #59393
2025-01-07 15:55:38 +00:00
Angular Robot d1f8834884 build: update dependency @types/selenium-webdriver4 to v4.1.28 (#59389)
See associated pull request for more information.

PR Close #59389
2025-01-07 15:51:51 +00:00
Pawel Kozlowski e1ab001e54 refactor(docs-infra): code cleanups (#59395)
A handfull of different code cleanups in adev
components.

PR Close #59395
2025-01-07 15:51:11 +00:00
arturovt dc07a43b86 refactor(docs-infra): cleanup after render sequence in ReferenceScrollHandler (#58640)
In this commit, we're replacing the provided injector in `afterNextRender` with a node injector
because it was previously mistakenly passing an `EnvironmentInjector` in the `ReferenceScrollHandler`.

PR Close #58640
2025-01-07 15:50:29 +00:00
Angular Robot adc56b72c5 build: update dependency @types/diff to v7 (#59403)
See associated pull request for more information.

PR Close #59403
2025-01-07 15:45:28 +00:00
Paul Gschwendtner 97039e8ce8 ci: remove devversion from unavailable pullapprove list (#59391)
Removing myself as I'm available for reviews.

PR Close #59391
2025-01-07 15:31:49 +00:00
Hardik Patel b22677d761 docs(changelog): removed repetitive point from CHANGELOG.md of 18.0.0 (#59374)
PR Close #59374
2025-01-06 22:30:45 +00:00
Angular Robot 8eb8af5217 build: lock file maintenance (#59291)
See associated pull request for more information.

PR Close #59291
2025-01-06 22:23:08 +00:00
Jessica Janiuk 2563f39f29 Revert "refactor(core): remove unused injection props (#59209)" (#59386)
This reverts commit 91b53881d1.

PR Close #59386
2025-01-06 21:35:58 +00:00
Matthieu Riegler e0401ec1f0 refactor(compiler-cli): extract function overload separatly (#56489)
in order for the docs to process function entry, this commit refactor function extraction by keeping the implementation as a the default entry and adds all the overloads into a separate array of entries.

fixes #56144

PR Close #56489
2025-01-06 20:50:59 +00:00
Max Katz 6aeda99a3e docs: update copyright year (#59359)
PR Close #59359
2025-01-06 19:58:30 +00:00
Kristiyan Kostadinov 5ac6f065ab fix(router): avoid component ID collisions with user code (#59300)
Currently the `ɵEmptyOutletComponent` is very prone to generating ID collision warnings with user code, because it only has one child and no other metadata. This shows up some of our tests as well. While users can resolve it on their end, it can be confusing since they won't have any references to `ɵEmptyOutletComponent` in their own code.

These changes add an `exportAs` to it to make its component ID unique. This doesn't affect the public API of the component since users can't use it directly anyways.

PR Close #59300
2025-01-06 19:18:52 +00:00
arturovt a088208690 refactor(router): replace mapTo since deprecated (#59333)
Replaces `mapTo` with `map` because, in RxJS, `mapTo` is deprecated and internally uses `map`.

PR Close #59333
2025-01-06 19:18:21 +00:00
Paul Gschwendtner cc7634f498 fix(bazel): handle module names and ES output in hybrid ts_project mode (#59325)
`ts_project` interop does not emit `.mjs` files. We could achieve this
in the interop rule, but it's better to just fallback look for `.js`.

In addition, `ng_package` currently fails because there is no
`module_name` retrievable from the interop rule; hence causing in
incorrect packaging and safety errors being thrown.

PR Close #59325
2025-01-06 17:29:19 +00:00
Matthieu Riegler 91b53881d1 refactor(core): remove unused injection props (#59209)
Those were also properties that were kept to also support of old compiled targets.

PR Close #59209
2025-01-06 17:28:41 +00:00
arturovt 206229df10 refactor(core): tree-shake ApplicationRef.warnIfDestroyed (#59269)
In this commit, we replace `private warnIfDestroyed` with a `warnIfDestroyed` function that can
be completely removed in production. This change is necessary because, with `private warnIfDestroyed`,
the empty method is still retained in production, even though it has no body.

PR Close #59269
2025-01-06 17:28:10 +00:00
RafaelJCamara c51acc3a3a docs: update contributing guidelines to reference TypeScript style guide (#59282)
PR Close #59282
2025-01-06 17:27:28 +00:00
Kristiyan Kostadinov ee99879fdc fix(compiler-cli): preserve defer block dependencies during HMR when class metadata is disabled (#59313)
Fixes that the compiler wasn't capturing defer block dependencies correctly when `supportTestBed` is disabled. We had tests for this, but we didn't notice the issue because the dependencies ended up being captured because of the `setClassMetadata` calls. Once they're disabled, the dependencies stopped being recorded.

Fixes #59310.

PR Close #59313
2025-01-06 17:26:30 +00:00
Kristiyan Kostadinov ce3b6641fb fix(compiler-cli): account for more expression types when determining HMR dependencies (#59323)
During the HMR dependency analysis we need to check if an identifier is top-level or not. We do this by looking at each identifier and its parent, however we didn't account for some cases. These changes expand our logic to cover more of the common node types.

Related to https://github.com/angular/angular/issues/59310#issuecomment-2563963501.

PR Close #59323
2025-01-06 17:25:57 +00:00
Kristiyan Kostadinov ceadd28ea1 fix(compiler): allow $any in two-way bindings (#59362)
Some time ago we narrowed down the expressions we support in two-way bindings, because in most cases any apart from property reads doesn't make sense. This ended up preventing users from using `$any` in the binding since it's considered a function call.

These changes update the validation logic to allow `$any`.

Fixes #51165.

PR Close #59362
2025-01-06 17:25:25 +00:00
Andrew Kushnir dc8280d950 Revert "refactor(platform-server): reduce timeout used in tests (#59275)" (#59380)
This reverts commit 19ec8266d1.

PR Close #59380
2025-01-06 17:24:26 +00:00
Sheik Althaf 0bf6f7602e refactor(devtools): add split to the demo devtools app (#58818)
added split area component to demo component so that we can resize the devtools and demo app.

PR Close #58818
2025-01-06 16:22:01 +00:00
Sheik Althaf d0cd74ace7 refactor(devtools): use signals for template properties in frame manager (#58818)
convert the frames and selectedFrame properties to signal so that it can react to changes on OnPush

PR Close #58818
2025-01-06 16:22:01 +00:00
Kristiyan Kostadinov d298d25426 feat(migrations): add schematic to clean up unused imports (#59353)
In v19 we added a warning about unused standalone imports, however we didn't do anything about existing code which means that users have to clean it up manually. These changes add the `ng g @angular/core:cleanup-unused-imports` schematic which will remove the unused dependencies automatically.

There isn't any new detection code since all the manipulations are based on the produced diagnostics, but there's a bit of code to remove the import declarations from the file as well.

Fixes #58849.

PR Close #59353
2025-01-06 16:21:26 +00:00
Kristiyan Kostadinov d6ca669bc9 refactor(migrations): allow compiler options to be customized in tsurge (#59353)
Allows for user-defined options to be passed in when creating a program in tsurge.

PR Close #59353
2025-01-06 16:21:26 +00:00
Kristiyan Kostadinov b2fcad8c1d refactor(compiler-cli): expose diagnostic error code (#59353)
Exports the error codes so that they can be reused.

PR Close #59353
2025-01-06 16:21:26 +00:00
Andrew Kushnir 19ec8266d1 refactor(platform-server): reduce timeout used in tests (#59275)
This commit updates the timeout used in the incremental hydration tests from `101` -> `10` ms, which allows to speed up tests by ~20% (12.5 -> 10 seconds locally).

PR Close #59275
2025-01-06 16:18:58 +00:00
Sandor Drieënhuizen e5866eed2e refactor(compiler): incorrect spelling in for loop parse error message (#59289)
'parameter' was spelled as 'paramater'.

Fix spelling error in Update r3_control_flow.ts

'parameter' was spelled as 'paramater'.

Fix spelling error in r3_template_transform_spec.ts

'parameter' was spelled as 'paramater'.

PR Close #59289
2025-01-06 16:18:15 +00:00
arturovt aa835da9a2 refactor(docs-infra): allow playground component to be cleaned up properly (#58040)
In this commit, we're replacing the `async-await` style in the playground component with the `from()`
observable, which allows us to invert a dependency and avoid memory leaks. Because an `async` function
has a closure, just like any other function in JavaScript, using `await` captures `this` until the
promise is resolved.

PR Close #58040
2025-01-06 16:16:59 +00:00
Angular Robot 895a90e116 build: update scorecard action dependencies (#59299)
See associated pull request for more information.

PR Close #59299
2025-01-06 16:15:58 +00:00
Angular Robot a62905f04a build: update all non-major dependencies (#59298)
See associated pull request for more information.

PR Close #59298
2025-01-06 16:15:27 +00:00
Angular Robot e30eae1365 build: update io_bazel_rules_sass digest to aff53ca (#59360)
See associated pull request for more information.

PR Close #59360
2025-01-06 16:14:57 +00:00
Angular Robot 863d161387 build: update dependency ngx-progressbar to v14 (#59361)
See associated pull request for more information.

PR Close #59361
2025-01-06 16:14:25 +00:00
Samuel Perez d54deb2ba6 docs: Add NG0750 to errors list (#59265)
This PR adds error NG0750 to Error Encyclopedia.

Update adev/src/content/reference/errors/NG0750.md

Co-authored-by: Andrew Kushnir <43554145+AndrewKushnir@users.noreply.github.com>

Update adev/src/content/reference/errors/NG0750.md

Co-authored-by: Andrew Kushnir <43554145+AndrewKushnir@users.noreply.github.com>

PR Close #59265
2025-01-06 16:13:36 +00:00
Meehdi ad65da6139 docs: fix mermaid polygon node text visibility in dark mode (#59285)
Fix visibility issue with text inside polygon nodes in mermaid diagrams when using dark mode theme to ensure proper contrast and readability

PR Close #59285
2025-01-06 16:12:51 +00:00
Matthieu Riegler 16d4ea3221 docs: fix link to API entry AngularAppEngine (#59367)
fixes #59342

PR Close #59367
2025-01-06 16:11:01 +00:00
Matthieu Riegler 1614cfdbb0 docs: add TS support for 19.1 (#59326)
PR Close #59326
2025-01-06 16:10:30 +00:00
Juan Urquiza a29d855e9e docs: changed name class (#59322)
PR Close #59322
2025-01-06 16:07:55 +00:00
Andrew Kushnir c197ee000f docs: add a note about Incremental Hydration to the @defer docs (#59320)
PR Close #59320
2025-01-06 16:06:36 +00:00
Shai Reznik def5d4c81e docs: fix wrong link (#59277)
PR Close #59277
2025-01-06 16:04:21 +00:00
Matthieu Riegler 139f61913c docs: remove data attributes from api-item-label (#59273)
Perf measurments have revealed that `data-*` attributes are slower to set than classes.

PR Close #59273
2025-01-06 16:03:42 +00:00
Daniel Sogl d66ebf3288 docs: update example to use inject function and self closing tags (#59118)
PR Close #59118
2025-01-06 16:02:54 +00:00
Paul Gschwendtner f8d22a9ba4 fix(bazel): allow ng_package to work with rules_js dependencies (#59316)
Currently the module mapping aspect fails when it transitively discovers
a node module target managed by `rules_js`. That is because the targets
don't have a `deps` attribute as part of their rule definition.

PR Close #59316
2024-12-27 14:56:31 +00:00
Kristiyan Kostadinov 8c5db3cfb7 fix(platform-browser): avoid circular DI error in async renderer (#59256)
In https://github.com/angular/components/pull/30179 the CDK overlay started depending on the `Renderer2Factory`. Since the overlay is used in the `MatSnackbar` which is commonly used in error handlers, `Overlay` can end up being injected as a part of the app initialization. Because `AsyncAnimationRendererFactory` depends on the `ChangeDetectionScheduler`, it may cause a circular dependency.

These changes inject the `ChangeDetectionScheduler` lazily to avoid the error.

Note: this will also be resolved by #58984, but I decided to send it out, because:
1. #58984 seems to be stuck on some internal cleanup.
2. The `AsyncAnimationRendererFactory` doesn't need the `scheduler` eagerly anyway so the change is fairly safe.

Fixes #59255.

PR Close #59256
2024-12-20 16:36:46 -07:00
Jessica Janiuk 2c3630aafd ci: consolidate pullapprove groups (#59080)
This change was originally proposed by @alxhub. We should all be comfortable reviewing and approving any and all code in the repo. This consolidation removes the barriers for that to happen.

PR Close #59080
2024-12-19 14:38:42 -07:00
Angular Robot b97bc5b031 build: update cross-repo angular dependencies (#59053)
See associated pull request for more information.

PR Close #59053
2024-12-19 09:01:38 -07:00
Lang db8747418e docs: update example code formatting (#59242)
PR Close #59242
2024-12-19 09:00:16 -07:00
Matthieu Riegler 3d86c586dc docs: fix dynamic template tutorial (#59234)
fixes #59228

PR Close #59234
2024-12-18 13:39:25 -08:00
Andrew Kushnir f28359e5a3 release: cut the v19.1.0-next.4 release 2024-12-18 11:05:36 -08:00
Andrew Kushnir f2a03217a0 docs: release notes for the v19.0.5 release 2024-12-18 10:59:42 -08:00
m-housni eebde48243 docs: fix typo in code example (#59235)
PR Close #59235
2024-12-18 09:37:22 -08:00
Sandeep Chaurasia 3b73a732bc Update defer.md (#59231)
There was an extra Z letter which I think not neccessary.
PR Close #59231
2024-12-18 09:36:21 -08:00
Pawel Kozlowski 22f191f763 feat(core): extend the set of profiler events (#59183)
This commit extends the set of events understood by the
profiler integrated with the Angular time. The set got
extended to account for the recently added functionality
and mark entry point to the code execution points.

The new set of events can be visualised by the Angular
DevTools or other profiler integrations.

PR Close #59183
2024-12-18 09:34:06 -08:00
Alan Agius c181903c2f refactor(core): reduce generated code (#59220)
This commit updates the defer code promises to reduce a couple of bytes.

PR Close #59220
2024-12-17 14:53:48 -08:00
Avcharov 8333ef78dc docs: Fix Code of Conduct Readme link (#59217)
PR Close #59217
2024-12-17 12:54:19 -08:00
Doug Parker 9b0aab9b8c release: bump Angular DevTools version to 1.0.19 (#59225)
PR Close #59225
2024-12-17 12:46:39 -08:00
Paul Gschwendtner 47212e0a45 refactor(compiler-cli): fix instanceof for error not working (#59219)
We recently introduced a custom error to allow us to catch certain types
of errors. Unfortunately it doesn't work as expected in G3 because the
Node execution seems to run with ES5.

PR Close #59219
2024-12-17 09:36:52 -08:00
Angular Robot 204d109ac6 build: update github/codeql-action action to v3.27.9 (#59212)
See associated pull request for more information.

PR Close #59212
2024-12-17 09:31:18 -08:00
Jessica Janiuk 46c13eecda docs: add anti-patterns and notes about 3rd party scripts (#59210)
Some users are confused by the requirements of hydration around DOM manipulation, and this adds some clarity around those requirements.

PR Close #59210
2024-12-17 09:29:32 -08:00
Paul 241416ecbc docs(elements): Add limitations section (#58194)
PR Close #58194
2024-12-17 09:28:44 -08:00
Muhammad Awais 2f5f898d21 docs(animations): update position parameter to be a decimal (#57927)
PR Close #57927
2024-12-17 09:28:02 -08:00
Vlad Boisa add84dd803 docs(docs-infra): replace newline with <br> (#59156)
Replace the "\n" new line operator with <br> for wrap the text.
PR Close #59156
2024-12-16 16:31:08 -08:00
Angular Robot b4f38e5d47 build: lock file maintenance (#59202)
See associated pull request for more information.

PR Close #59202
2024-12-16 15:22:38 -08:00
Lang dcc57220cc docs: remove unused import from example (#59200)
PR Close #59200
2024-12-16 15:21:24 -08:00
Lang f9e6db94ec docs: use arrays in the impure pipe example (#59196)
PR Close #59196
2024-12-16 15:19:47 -08:00
Matthieu Riegler cf27cbb1f8 docs(docs-infra): remove costly localeCompare (#59106)
This function wasn't necessary, the items where already sorted.

fixes #59069d

PR Close #59106
2024-12-16 15:18:39 -08:00
Josh Benner 6f66b0443a docs: Fix Dependency Injection Readme guide link (#59193)
PR Close #59193
2024-12-16 11:34:46 -08:00
Alan Agius 9e0b50b465 refactor(core): add ENABLE_ROOT_COMPONENT_BOOTSTRAP token (#59133)
Introduced the `ENABLE_ROOT_COMPONENT_BOOTSTRAP` token to control the bootstrapping of components during application initialization. This token is utilized by the Angular CLI in the `@angular/ssr` package, particularly during server-side rendering (SSR) when extracting routes.

When set to `false`, this token prevents the root component from being bootstrapped during SSR's route extraction phase, which is crucial for efficiently extracting routes without triggering component initialization. This mechanism separates the concerns of route extraction and component bootstrapping during SSR rendering, optimizing performance.

If not provided or set to `true`, the default behavior of bootstrapping the root component(s) during initialization is maintained.

Context: https://github.com/angular/angular-cli/issues/29085

PR Close #59133
2024-12-16 10:28:16 -08:00
Kristiyan Kostadinov 57f3550219 feat(core): add utility for resolving defer block information to ng global (#59184)
Adds the `getDeferBlocks` function to the global `ng` namespace which returns information about all `@defer` blocks inside of a DOM node. This information can be useful either directly in the browser console or to implement future functionality in the dev tools.

PR Close #59184
2024-12-16 10:26:43 -08:00
Kristiyan Kostadinov 8a6031233c refactor(core): track debugging information about deferred triggers (#59184)
Adds a field on the `TDeferBlockDetails` where we can track debugging information about the defer block. Also uses it to store text representation of the different triggers which can be shown to the dev tools.

PR Close #59184
2024-12-16 10:26:42 -08:00
Kristiyan Kostadinov 1413677a3e refactor(core): remove unused field (#59184)
Removes the `prefetchTriggers` field from the `TDeferBlockDetails` since we weren't reading or writing to it anywhere.

PR Close #59184
2024-12-16 10:26:42 -08:00
Jessica Janiuk 4a2df5628a refactor(core): add skipped defer blocks count to ngDevMode (#59188)
This adds the skipped defer blocks to the counts in ngDevMode and the logged hydration information.

PR Close #59188
2024-12-16 10:25:45 -08:00
Andrew Kushnir 1f4ff2fa36 fix(core): avoid triggering on timer and on idle on the server (#59177)
This commit updates defer block logic to avoid triggering `on idle` and `on timer` on the server for regular SSR mode (when incremental hydration is not enabled). Triggering the mentioned condition resulted in invoking `setTimeout` calls, which delayed serialization on the server during SSR (the process was waiting for the timeouts to clear).

PR Close #59177
2024-12-13 10:10:27 -08:00
Shayan Ghazali 38b090a747 docs: correct typo in description of runTask method (#59119)
PR Close #59119
2024-12-13 10:09:40 -08:00
hawkgs 4c2cdd270c docs(core): remove redundant reference-manifests handwritten entries (#59169)
The handwritten entries are now included as part of `//packages/core:core_docs_extraction` it seems. So, they are no longer needed. On the contrary, they are causing duplicated entries in the generated manifest which are then reflected in the A.dev API reference.

Fixes #59165

PR Close #59169
2024-12-12 17:29:22 -08:00
Alan Agius 9203276235 docs: update i18n deployment docs to use subPath option (#59166)
This option replaces the baseHref option.

PR Close #59166
2024-12-12 16:20:20 -08:00
hawkgs 225b5fa23a docs(docs-infra): make font styles consistent in the API code ToC (#59072)
Since code lines are wrapped in `<button>`-s, the native font styles overrides the parent's one which results in the font-family and font-size (esp. Safari) difference. This change fixes that.

PR Close #59072
2024-12-12 16:19:45 -08:00
Kristiyan Kostadinov 8230388aa8 build: simplify symbol tests format (#59147)
Switches the goldens for the symbol tests to be an array of strings, rather than an array of objects where each object only has a `name` property. This makes more compact, easier to read and easier to avoid merge conflicts.

PR Close #59147
2024-12-12 14:59:13 -08:00
Angular Robot df474f3900 build: update babel dependencies (#59127)
See associated pull request for more information.

PR Close #59127
2024-12-12 14:58:34 -08:00
Angular Robot 019fc59309 build: update dependency https-proxy-agent to v7.0.6 (#59125)
See associated pull request for more information.

PR Close #59125
2024-12-12 14:57:14 -08:00
Jessica Janiuk cf89f14766 fix(core): Fix nested timer serialization (#59173)
There were type mismatches and or unintended any types that were preventing nested timers from accessing the delay value during hydration annotation processing.

PR Close #59173
2024-12-12 14:55:28 -08:00
Alan Agius 1f1fff3a4f perf(docs-infra): improve app firebase configuration (#59170)
- Remove trailing slash redirect (e.g., /overview no longer redirects to /overview/).
- Update static file matching: Resolves an issue where hashed files were being cached for up to 1 hour.

PR Close #59170
2024-12-12 14:54:50 -08:00
Jessica Janiuk 6fa8622851 refactor(core): replace regexp in incremental hydration (#59158)
This swaps the regular expression for a string split instead.

PR Close #59158
2024-12-12 14:53:59 -08:00
Kristiyan Kostadinov c9b8319774 refactor(core): allow tracing service to wrap event listeners (#59134)
Allows the tracing service to wrap event listeners bound by the framework.

PR Close #59134
2024-12-12 14:52:42 -08:00
Jamie Rees cb685d8571 refactor(common): update the NgOptimizedImage message to use @if instead of *ngIf (#59131)
This commit updates an error message to mention `@if` rather than the `*ngIf` directive.
PR Close #59131
2024-12-12 14:51:43 -08:00
Jessica Janiuk d8f08f44c1 refactor(core): incremental hydration TODO cleanup (#59032)
This adds a few helper functions and ensures we call complete fns when error state is rendered. It also eliminates serialized views from being copied.

PR Close #59032
2024-12-12 14:48:24 -08:00
kirjs 300b141cc8 fix(platform-server): Warn user when transfer state happens more than once (#58935)
This can happen if server providers are provided more than twice. We detect it on the state transfer phase by flagging app id as transferred in a set.

Resolves #58531

PR Close #58935
2024-12-12 14:47:28 -08:00
Enea Jahollari 5088b37db3 refactor(docs-infra): improve API reference page loading time and drop blocking time (#58911)
By scheduling the focus of the input, we can drop the blocking time that is caused by the blocking task of rendering.

PR Close #58911
2024-12-12 14:45:46 -08:00
Andrew Kushnir d6fdfb1f86 release: cut the v19.1.0-next.3 release 2024-12-12 14:42:23 -08:00
Alex Rickabaugh cfc1679714 docs: release notes for the v19.0.4 release (#59168)
PR Close #59168
2024-12-12 14:33:07 -08:00
Jessica Janiuk f3729cec87 ci: Update caretaker config for merge queue (#59095)
This updates the caretaker query for merge queue
to remove status: success, since skipped workflows
are considered failed by Github and omitted from
the query results.

PR Close #59095
2024-12-10 13:48:07 -08:00
AleksanderBodurri 33167d9989 refactor(core): implement experimental getSignalGraph debug API (#57074)
Creates a debug api that returns an arrays of nodes and edges that represents a signal graph in the context of a particular injector.

Starts by discovering the consumer nodes for each injector, and then traverses their dependencies to discover each producer.

PR Close #57074
2024-12-10 13:47:03 -08:00
Jens Kuehlers 47b4b3efe0 docs: add approximate v19.x and v20 release dates (#59130)
PR Close #59130
2024-12-10 13:46:17 -08:00
Angular Robot 29f1cc79fe build: update github/codeql-action action to v3.27.7 (#59126)
See associated pull request for more information.

PR Close #59126
2024-12-10 13:45:34 -08:00
Alan Agius 24e317cb15 refactor: replace ɵPendingTasks with ɵPendingTasksInternal (#59138)
This commits remove usage of the old export.

PR Close #59138
2024-12-10 13:45:07 -08:00
Rafael Camara 2d49c36871 docs: improve docs on NgModule providers (#59111)
PR Close #59111
2024-12-10 13:44:10 -08:00
Angular Robot 2beb374524 build: lock file maintenance (#59110)
See associated pull request for more information.

PR Close #59110
2024-12-10 13:43:27 -08:00
Matthieu Riegler a88b899f52 docs: fix mermaid DI diagram. (#59105)
We need to use `<br>` for linebreakes.

fixes #59104

PR Close #59105
2024-12-10 13:42:03 -08:00
Ahmad Shabeer K de9fb8aeb8 docs(docs-infra): removed confusing extra single quote (#59101)
PR Close #59101
2024-12-10 13:40:39 -08:00
Kristiyan Kostadinov 5b5418c893 refactor(docs-infra): fix build-time warnings (#59100)
Fixes a bunch of warnings around an upcoming Sass breaking change https://sass-lang.com/documentation/breaking-changes/mixed-decls/. Also fixes one unused standalone import.

PR Close #59100
2024-12-10 13:40:11 -08:00
Kristiyan Kostadinov d010e11b73 feat(core): add event listener options to renderer (#59092)
Updates the `Renderer2.listen` signature to accept event options, as well as all adjacent types to it.

PR Close #59092
2024-12-10 13:39:47 -08:00
Angular Robot 46f00f9518 build: update actions/cache digest to 1bd1e32 (#59077)
See associated pull request for more information.

PR Close #59077
2024-12-06 14:38:27 -08:00
arielbackenroth 30e676098d fix(core): Fix a bug where snapshotted functions are being run twice if they return a nullish/falsey value. (#59073)
Snapshots can return nullish values; don't run the snapshotted function if the snapshotted function returns a nullish/falsey value.

PR Close #59073
2024-12-05 16:16:49 -08:00
Kristiyan Kostadinov 0dee2681f7 fix(compiler-cli): consider pre-release versions when detecting feature support (#59061)
Fixes that the logic which checks whether a feature is supported didn't account for pre-releases.

Fixes https://github.com/angular/vscode-ng-language-service/issues/2123.

PR Close #59061
2024-12-05 16:15:12 -08:00
Kristiyan Kostadinov 1b9492edf8 fix(compiler-cli): error in unused standalone imports diagnostic (#59064)
Fixes a null pointer error in the unused standalone imports diagnostic. It was caused by an inconsistency in TypeScript's built-in types.

Fixes #58872.

PR Close #59064
2024-12-05 16:14:02 -08:00
Matthieu Riegler 0034ce5583 refactor(http): Don't log fetch warning in tests. (#59049)
Prior to this commit, we were logging the `NOT_USING_FETCH_BACKEND_IN_SSR` error when `provideHttpTestingClient` and `PLATFORM_ID` were provided.

fixes #59028

PR Close #59049
2024-12-05 16:12:55 -08:00
Charles Lyding 52be35118f fix(platform-browser): collect external component styles from server rendering (#59031)
SSR generated component styles used in development environments will add
external styles via link elements to the HTML. However, the runtime would
previously not collect these link elements for reuse with rendered components.
This would result in two copies of the link elements present in the DOM. In
isolation this is not problematic as it is only present in development mode.
Unfortunately, the Vite-based CSS HMR functionality used by the Angular CLI
only updates the first stylesheet it finds and leaves other instances of the
stylesheet in place. This behavior causes the styles to be left in an
inconsistent state. This could be considered a defect within Vite as it should
update all relevant styles to maintain consistency but ideally there should
not be two instances in the Angular SSR case. To avoid the Vite issue, the
runtime will now collect SSR generated external styles and reuse them.

PR Close #59031
2024-12-05 16:12:22 -08:00
Kristiyan Kostadinov 6fd8a20978 refactor(compiler-cli): move two-way binding fix behind flag (#59002)
Moves the fix for type checking the event side of two-way bindings behind a compiler flag so that we can roll it out in v20.

PR Close #59002
2024-12-05 16:11:02 -08:00
Kristiyan Kostadinov c5c20e9d86 fix(compiler-cli): check event side of two-way bindings (#59002)
In the past two-way bindings used to be interpreted as `foo = $event` at the parser level. In #54065 it was changed to preserve the actual expression, because it was problematic for supporting two-way binding to signals. This unintentionally ended up causing the TCB to two-way bindings to look something like `someOutput.subscribe($event => expr);` which does nothing. It largely hasn't been a problem, because the input side of two-way bindings was still being checked, except for the case where the input side of the two-way binding has a wider type than the output side.

These changes re-add type checking for the output side by generating the following TCB instead:

```
someOutput.subscribe($event => {
  var _t1 = unwrapSignalValue(this.someField);
  _t1 = $event;
});
```

PR Close #59002
2024-12-05 16:11:02 -08:00
Kristiyan Kostadinov 68c5e02548 refactor(compiler-cli): rename misleading function (#59002)
The `isSplitTwoWayBinding` function was a bit misleading, because it has side effects. Renames the function make it a bit more explicit.

PR Close #59002
2024-12-05 16:11:02 -08:00
Matthieu Riegler 2a7103ac48 docs: remove inline docs-code in table (#58992)
Having a code block yields the correct result.

Fixes #58989

PR Close #58992
2024-12-05 16:10:27 -08:00
Kristiyan Kostadinov 4559e125f0 refactor(compiler): generate debug location instruction (#58982)
Adds the logic that will generate the `ɵɵattachSourceLocations` instruction.

Fixes #42530.

PR Close #58982
2024-12-05 16:09:55 -08:00
Kristiyan Kostadinov 90896b858b refactor(core): add runtime logic for attaching source locations (#58982)
Adds the implementation of the `ɵɵattachSourceLocations` instruction that will add the `data-ng-source-location` attribute to nodes to indicate where they were defined.

PR Close #58982
2024-12-05 16:09:55 -08:00
Kristiyan Kostadinov c9b3bd8409 refactor(compiler): capture template path (#58982)
Captures the template path in the component's metadata so it can be used later on.

PR Close #58982
2024-12-05 16:09:55 -08:00
Kristiyan Kostadinov 00d5b0dfd3 refactor(compiler-cli): rework path normalization function (#58982)
Tweaks the `getProjectRelativePath` function so it's not as dependent on the TypeScript AST.

PR Close #58982
2024-12-05 16:09:55 -08:00
Matthieu Riegler f15ccb94b9 docs(docs-infra): enable tslint (#58961)
PR Close #58961
2024-12-05 16:03:35 -08:00
Sheik Althaf fe40143813 refactor(router): remove standalone true (#58950)
removed the standalone true from router package.

PR Close #58950
2024-12-05 16:02:37 -08:00
Matthieu Riegler f6bed7519e docs: fix formating for NG0913 (#58869)
fixes #58868

PR Close #58869
2024-12-05 16:01:55 -08:00
Alex Rickabaugh 4a0c6cd435 refactor(router): remove circular dep in router navigation code (#59083)
Use `import type` to break phantom circular imports for the router
navigation implementation.

PR Close #59083
2024-12-05 16:01:15 -08:00
Alex Rickabaugh e61a19957f refactor(router): remove circular dep in router model definitions (#59083)
Use `import type` to break phantom circular imports for router model
definitions.

PR Close #59083
2024-12-05 16:01:15 -08:00
Alex Rickabaugh ee53dc07de refactor(router): remove circular dep in RouterOutletContext (#59083)
Use `import type` to break phantom circular imports for
`RouterOutletContext`.

PR Close #59083
2024-12-05 16:01:15 -08:00
Alex Rickabaugh 9d3ced6636 refactor(core): remove circular dep in LView & LContainer definitions (#59083)
Use `import type` to break phantom circular imports in the runtime
definitions of `LView` and `LContainer`.

PR Close #59083
2024-12-05 16:01:14 -08:00
Alex Rickabaugh 8cea383cc1 refactor(core): remove circular dep in JIT decorator definitions (#59083)
Use `import type` to break phantom circular imports in the runtime
definitions of JIT decorators.

PR Close #59083
2024-12-05 16:01:14 -08:00
Alex Rickabaugh e6503f8bea refactor(core): remove circular dep in ComponentFactoryResolver (#59083)
Use `import type` to break a phantom circular import in the runtime
definition of `ComponentFactory` and `ComponentFactoryResolver`.

PR Close #59083
2024-12-05 16:01:14 -08:00
Alex Rickabaugh 587d4011a4 refactor(core): remove circular dep in DI code (#59083)
Use `import type` to break a phantom circular import in the DI code.

PR Close #59083
2024-12-05 16:01:14 -08:00
Alex Rickabaugh 039bcad76a refactor(core): remove circular dep in iterable differs. (#59083)
Use `import type` to break a phantom circular import in iterable differs.

PR Close #59083
2024-12-05 16:01:14 -08:00
Alex Rickabaugh 5a4ac89376 refactor(core): remove circular dep in ViewRef definition (#59083)
Use `import type` to break a phantom circular import in the runtime
definition of `ViewRef`.

PR Close #59083
2024-12-05 16:01:14 -08:00
Alex Rickabaugh 8b02d11fbb refactor(compiler): remove circular dep in the output ast (#59083)
Use `import type` to break a phantom circular import in the output AST in
the compiler.

PR Close #59083
2024-12-05 16:01:14 -08:00
Alex Rickabaugh 2e907eaa98 refactor(compiler-cli): remove circular dep in the partial evaluator (#59083)
Use `import type` to break a phantom import cycle.

PR Close #59083
2024-12-05 16:01:14 -08:00
Tom Wilkinson 8780399234 refactor(core): Remove event_contract_multi_container (#59059)
This code has been moved internally.

PR Close #59059
2024-12-05 15:24:43 -08:00
Joey Perrott 73dc59d83e ci: update to latest version of dev-infra actions (#59070)
Update to latest version of the actions

PR Close #59070
2024-12-05 08:17:29 -07:00
Pawel Kozlowski 4a030f7308 release: cut the v19.1.0-next.2 release 2024-12-04 20:30:03 +01:00
Pawel Kozlowski acf9ab2033 docs: release notes for the v19.0.3 release 2024-12-04 20:22:58 +01:00
Matthieu Riegler 04e074bc04 Revert "fix(platform-server): remove peer dependency on animations (#58997)" (#59051)
This reverts commit 1cfbfc66d3.

PR Close #59051
2024-12-04 19:11:12 +01:00
Angular Robot 60e59007b0 build: update cross-repo angular dependencies (#59011)
See associated pull request for more information.

PR Close #59011
2024-12-04 18:07:50 +01:00
hawkgs 77a0ee85c1 feat(docs-infra): use angular-ts and angular-html shiki highlighting (#59004)
Use `angular-ts` instead of `typescript` and `angular-html` instead of `html`.

PR Close #59004
2024-12-04 18:05:59 +01:00
hawkgs 0a399e7f9c refactor(docs-infra): update comments (#59004)
Add missing file header comments and update others.

PR Close #59004
2024-12-04 18:05:59 +01:00
hawkgs b8b6c8c77a refactor(docs-infra): convert code-example-s that have only region param to @example-s (#59004)
Replace all <code-example>-s within TS files that contain only a path and a region with JSDoc @example-s.

PR Close #59004
2024-12-04 18:05:59 +01:00
hawkgs c13528b1b9 test(docs-infra): interpolation mechanism (#59004)
Test all use cases that are supported by the interpolation mechanism.

PR Close #59004
2024-12-04 18:05:58 +01:00
hawkgs d40967c356 fix(docs-infra): minor bug fixes (#59004)
Minor bug fixes found and implemented during testing.

PR Close #59004
2024-12-04 18:05:58 +01:00
hawkgs b97b92024d test(docs-infra): add initial test (#59004)
Setup the test suite and add the initial test.

PR Close #59004
2024-12-04 18:05:58 +01:00
hawkgs 9ca8ddb265 fix(docs-infra): markdown code block highlighting for the different file types (#59004)
Set the code block language highlighting based on the file type.

PR Close #59004
2024-12-04 18:05:58 +01:00
hawkgs f13f52f70f feat(docs-infra): remove redundant JSDoc transform related to code examples (#59004)
The transform is no longer relevant nor it served any functional purpose.

PR Close #59004
2024-12-04 18:05:58 +01:00
hawkgs e1009f09c0 fix(docs-infra): handle regions overlap and multiple-regions examples (#59004)
It seems that there are overlapping region markers and an example can be composed by multiple regions.

PR Close #59004
2024-12-04 18:05:58 +01:00
hawkgs e0beb27581 fix(docs-infra): interpolation script nesting (#59004)
Add support for nested #docregion-s and modify the examples caching.

PR Close #59004
2024-12-04 18:05:58 +01:00
hawkgs 8b93e3c90d feat(docs-infra): implement interpolation script (#59004)
The script substitutes the JSDoc example tags with the respective code sample.

PR Close #59004
2024-12-04 18:05:58 +01:00
hawkgs a4ee2d90e6 feat(docs-infra): include code examples files in the API gen (#59004)
The code examples in `package/examples` are now passed to the API JSON generator.

PR Close #59004
2024-12-04 18:05:58 +01:00
hawkgs 0513fbc9fc docs: set syntax highlighting of code examples MD code blocks (#59026)
Set the syntax highlighting based on the code examples' language.

PR Close #59026
2024-12-04 17:30:28 +01:00
Pawel Kozlowski dc7d555e42 release: cut the v19.1.0-next.1 release 2024-12-04 16:21:16 +01:00
Pawel Kozlowski 316bf1726a docs: release notes for the v19.0.2 release 2024-12-04 16:16:02 +01:00
hawkgs 922ffdb40e feat(docs-infra): move members descriptions section to the center of the page (#58610)
Move the members description section below the main content of the page since it is part of the core information about a doc item. The CLI reference details page is affected as well.

PR Close #58610
2024-12-04 15:26:15 +01:00
Sheik Althaf 9658dd1fe3 refactor(common): remove standalone: true (#58949)
Removed the standalone true flag from common packages.

PR Close #58949
2024-12-04 12:41:51 +01:00
AleksanderBodurri e894a5daea feat(core): set kind field on template and effect nodes (#58865)
Builds on #58333 by assigning the kind field to reactive nodes that are not in the `core/primitives` package.

PR Close #58865
2024-12-04 12:30:11 +01:00
hawkgs 8d6ea5bae3 docs: fix missing alert block styles in the API reference (#59020)
Substitute legacy alert classes with the new ones.

PR Close #59020
2024-12-04 11:02:42 +01:00
Angular Robot 35d390dae7 build: update io_bazel_rules_sass digest to df7d2a9 (#59034)
See associated pull request for more information.

PR Close #59034
2024-12-04 10:59:37 +01:00
Jessica Janiuk f073bedda4 ci: add kirjs to pullapprove groups (#59025)
This adds Kirill to a number of pullapprove groups.

PR Close #59025
2024-12-03 18:31:37 +01:00
Alan Agius a37af179d9 docs: remove extra spacing from DI token note (#59023)
This commit removes extra spacing.

PR Close #59023
2024-12-03 16:14:17 +01:00
AleksanderBodurri fa0a9a5dde refactor(core): add "kind" to signal prototype nodes (#58333)
Enables debug APIs to determine the kind of a signal given a node.

PR Close #58333
2024-12-03 15:15:50 +01:00
Angular Robot 392c036e5e build: update dependency mocha to v11 (#59012)
See associated pull request for more information.

PR Close #59012
2024-12-03 12:21:45 +01:00
Angular Robot 992e64f2e9 build: update all non-major dependencies to ~5.5.0 (#59016)
See associated pull request for more information.

PR Close #59016
2024-12-03 10:32:37 +01:00
Angular Robot 55c3cd3dfd build: update io_bazel_rules_sass digest to fe48516 (#59014)
See associated pull request for more information.

PR Close #59014
2024-12-03 10:23:43 +01:00
Sumit Arora 42b1662ae8 refactor(devtools): removing unused styles and addressing PR comments (#58213)
- removed unused styles
- refactored tests and adding types

PR Close #58213
2024-12-03 09:16:25 +01:00
Sumit Arora ef10d528ed refactor(devtools): adds router graph implementation and demo (#58213)
Follow-up PR for https://github.com/angular/angular/pull/58086 & https://github.com/angular/angular/pull/58199.

Adds below features to Angular DevTools to display router graph:
- Add a new router example in the Angular DevTools demo application.
- Implement the router graph in the Angular DevTools to view the routes that are loaded in the application.

PR Close #58213
2024-12-03 09:16:25 +01:00
Angular Robot 10b3dcca8b build: update cross-repo angular dependencies (#59010)
See associated pull request for more information.

PR Close #59010
2024-12-02 16:42:35 +01:00
Emmanuel DEMEY c3b6e8822e docs: add import for toObservable (#58991)
Add import for toObservable in signals-interop.md

PR Close #58991
2024-12-02 16:39:02 +01:00
Georgy Serga aff4f66cf1 docs: add a notice on compiler parsing changes (#58748)
Add a note about recent changes to compiler parsing
rules for pseudo selectors, hosts, multiple arguments
and complex selectors.

PR Close #58748
2024-12-02 16:35:26 +01:00
Kauan Manzato do Nascimento bad05a01d6 docs: fix a typo in an example in Templates page (#58985)
Fix a typo in an example in Templates page in
Essentials section of Angular Docs.
Instead of "Profile file", the correct would be
"Profile for", according to the example's template.

PR Close #58985
2024-12-02 16:32:36 +01:00
Angular Robot e305b45627 build: lock file maintenance (#58998)
See associated pull request for more information.

PR Close #58998
2024-12-02 16:29:03 +01:00
Matthieu Riegler d0ea622040 docs(docs-infra): read jsdoctags from function overloads (#58994)
Functions like `linkedSignal` have there `@developerPreview` tags on the overload signature. This commit adds the support for them.

This commit also removes the logic for multiple entries, as now overloads are a single entry.

fixes #58817

PR Close #58994
2024-12-02 16:17:02 +01:00
Paul Gschwendtner 7c628f9ee8 ci: mark devversion as unavailable (#59007)
Will be unavailable for a bit, and don't want to block review queue :)

PR Close #59007
2024-12-02 15:13:23 +01:00
Timon 1b6204dd2a docs(core): fix eventCoalescing comment (#57097)
PR Close #57097
2024-12-02 11:34:26 +01:00
Kristiyan Kostadinov 1cfbfc66d3 fix(platform-server): remove peer dependency on animations (#58997)
The `@angular/platform-server` package had a peer dependency on `@angular/animations` which wasn't being used anywhere.

PR Close #58997
2024-12-02 11:33:04 +01:00
Máté Gyöngyösi 16ab166315 docs(docs-infra): add missing dot (#58993)
PR Close #58993
2024-12-02 10:44:41 +01:00
Kristiyan Kostadinov 35165d152d fix(migrations): inject migration dropping code if everything except super is removed (#58959)
Fixes that in some cases the internal version of the migration was dropping code when all the statements after the `super` call are deleted.

PR Close #58959
2024-12-02 08:56:21 +01:00
Kristiyan Kostadinov 7191aa6e09 fix(migrations): don't migrate classes with parameters that can't be injected (#58959)
Updates the inject migrations to skip over classes that have uninjectable class parameters.

PR Close #58959
2024-12-02 08:56:21 +01:00
Kristiyan Kostadinov 68e5ba7a3a fix(migrations): preserve type literals and tuples in inject migrations (#58959)
Updates the inject migration to preserve type literals and tuple types, based on some internal feedback.

PR Close #58959
2024-12-02 08:56:21 +01:00
Kristiyan Kostadinov a4924af6d5 fix(migrations): inject migration aggressively removing imports (#58959)
Fixes that the inject migration would remove imports even if they're still used by classes that aren't being migrated.

PR Close #58959
2024-12-02 08:56:21 +01:00
Kristiyan Kostadinov 508d3a1b3b fix(migrations): correctly strip away parameters surrounded by comments in inject migration (#58959)
Fixes that the inject migration was sometimes producing invalid code if there are comments around the parameters.

PR Close #58959
2024-12-02 08:56:21 +01:00
Kristiyan Kostadinov e31e52e177 fix(migrations): class content being deleted in some edge cases (#58959)
Fixes that the inject migration was deleting the class' content if a property exists after the constructor that is being rewritten.

PR Close #58959
2024-12-02 08:56:20 +01:00
Kristiyan Kostadinov 21b993c8df refactor(compiler): remove allowInvalidAssignmentEvents flag (#58988)
Deletes the `allowInvalidAssignmentEvents` which was added to facilitate a migration away from invalid two-way bindings. Since the migration doesn't exist anymore, we don't need the flag either.

PR Close #58988
2024-12-02 08:55:42 +01:00
Hakeem 6da74c6bbb docs(docs-infra): handle the long API names in the API cards (#58986)
PR Close #58986
2024-12-02 08:54:37 +01:00
PrajaktaB27 ed965bdc0f docs: update two-way binding example in documentation (#58963)
PR Close #58963
2024-11-29 14:56:39 +01:00
Jens Kuehlers a1c284f015 docs: update state of JS banner expiry (#58966)
PR Close #58966
2024-11-29 14:53:50 +01:00
Alan Agius 6eee201a39 docs: correctly display note about DI tokens (#58967)
The breakline was breaking the note UI

PR Close #58967
2024-11-29 14:52:30 +01:00
Michael Small 357166e9a4 docs: fix IMPORTANT for "Animating the items of a reordering list" (#58938)
The specialized `IMPORTANT` highlighting was not being applied to the message, due to a line break.

PR Close #58938
2024-11-28 17:53:55 +01:00
aboudard 02970f0cdb docs: add missing output migration page (#58942)
This change adds a page to document the output migration schematics

PR Close #58942
2024-11-28 17:46:38 +01:00
Paweł Kubiak e76ddcc753 fix(docs-infra): do not focus h1 from docs-top-level-banner (#57698)
fix(docs-infra): do not focus h1 from docs-top-level-banner

Do not focus heading from docs-top-level-banner.
Move the `Skip to main content` button to the top of DOM tree.

PR Close #57698
2024-11-28 17:40:53 +01:00
robertIsaac e495a68dc1 docs(core): Update linked-signal.md (#58756)
fix multiple issues with the existing code
1. `shippingOptions` was accessed without `this.` which produces error in realtime
2. the logic in calculating of the item exist or not was not correct since it was comparing the object to the id
3. I'm not sure why, but step 3 fail without stating typing for LinkedSignal, so I added it

PR Close #58756
2024-11-28 17:39:21 +01:00
Gustav Blomqvist d5f9d0284c docs(core): grammatical fix (#58204)
PR Close #58204
2024-11-28 17:38:35 +01:00
Hakeem 20a3c6f03c docs(docs-infra): fix the overscroll behavior of the search dialogue (#58948)
since the dialogue shows on top of other scrollable elements of the page, then the overscroll behavior should be contain for better UX.

Resloves: #58947

PR Close #58948
2024-11-28 17:37:20 +01:00
Matthieu Riegler 66abff6db8 docs(docs-infra): don't use URL to check for external links (#58955)
For perf reasons, it is more efficient to not rely on creating an `URL` object. Instead we check for the explicit protocol to detect external links.

This will also force us to use relative links, so archived versions & next versions navigate on the current version of the site.

fixes #58954

PR Close #58955
2024-11-28 16:43:28 +01:00
arturovt a4b86b23cf refactor(core): preventing resolving renderer factory every tick (#58618)
Prevents the `RendererFactory2` from being resolved each time the tick runs, as it only needs to be requested once.

PR Close #58618
2024-11-28 15:17:28 +01:00
hawkgs 4315b8704e docs(docs-infra): remove redundant nav menu items from the DOM in the reference (#58934)
The DOM is cluttered with a lot of nav item UL-s that are not visible to the end user due to the usage of multiple docs-navigation-list instances that render the full navigation tree recursively instead of only the preselected visible levels.

PR Close #58934
2024-11-28 10:14:52 +01:00
Kristiyan Kostadinov f280467398 fix(compiler-cli): account for multiple generated namespace imports in HMR (#58924)
The current HMR compiler assumes that there will only be one namespace import in the generated code (`@angular/core`). This is incorrect, because the compiler may need to generate additional imports in some cases (e.g. importing directives through a module). These changes adjust the compiler to capture all the namespaces in an array and pass them along.

Fixes #58915.

PR Close #58924
2024-11-28 10:00:56 +01:00
kirjs 6ff53b7437 docs(docs-infra): Drop standalone: true (#58914)
This is now the default value, so safe to remove

PR Close #58914
2024-11-28 09:43:28 +01:00
arielbackenroth 3b765367f3 fix(core): Explicitly manage TracingSnapshot lifecycle and dispose of it once it's been used. (#58929)
Provide a callback to the TracingService implementation when a Snapshot can be disposed.
The underlying tracing implementation may use refcounting and needs to release resources
to enable the trace to complete.

While change detection uses the snapshot for exactly one callback, after render runs
multiple hooks in the sequence so we need a more predictable way to indicate that the snapshot
can be finalized.s

PR Close #58929
2024-11-27 18:11:13 +01:00
Sheik Althaf 96c90a5012 refactor(devtools): removed standalone: true (#58922)
Removed the default standalone true flag from all the component, directive and pipes

PR Close #58922
2024-11-27 18:09:00 +01:00
Angular Robot c05a158e6a build: update cross-repo angular dependencies (#58932)
See associated pull request for more information.

PR Close #58932
2024-11-27 18:07:14 +01:00
Matthieu Riegler b0c30f9756 docs(docs-infra): remove unused api-examples (#58885)
PR Close #58885
2024-11-27 18:05:07 +01:00
Michael Small 89e40ce3cb docs: remove dev preview warning for rxjs-interop in output page (#58937)
`outputFromObservable` and `outputToObservable` from `@angular/core/rxjs-interop` were recently promoted to `@publicApi`.

PR Close #58937
2024-11-27 18:04:15 +01:00
Jessica Janiuk 30891d8dec refactor(core): Consolidates shouldTrigger* methods down to one (#58833)
This cleans up the triggering code base and consolidates it down to one
function that outlines the logic. This also resolves the `hydrate when`
behavior issue.

fixes: #58709

PR Close #58833
2024-11-27 17:00:06 +01:00
Jessica Janiuk 38fe180d34 refactor(compiler): Adds ingest and flags for defer details (#58833)
This adds TDeferDetailsFlags to indicate the presence of hydration triggers, and any future flags we add to defer.

PR Close #58833
2024-11-27 17:00:05 +01:00
Vincent 4e4bbb00ad refactor(core): Make wording of effect-allowSignalWrites deprecation warning more accurate (#58792)
The previous warning contained a typo and also somewhat implied that allowSignalWrites did something. However, setting allowSignalWrites to false has no impact at all in Angular 19.

Closes #58790

PR Close #58792
2024-11-27 16:59:05 +01:00
Enea Jahollari b460ced56a docs(docs-infra): remove unused code (#58925)
Removed unused code from docs infra

PR Close #58925
2024-11-27 16:57:46 +01:00
Angular Robot 4a874bf48b build: update cross-repo angular dependencies to v19.1.0-next.0 (#58927)
See associated pull request for more information.

PR Close #58927
2024-11-27 16:22:57 +01:00
Enea Jahollari 0c009077af refactor(docs-infra): use interpolation instead of innerHTML for better perf (#58913)
Using innerHTML will cause the browser to parse the HTML and then create a DOM tree instead of just using normal interpolation.

PR Close #58913
2024-11-27 10:59:18 +01:00
Utku Gultopu 0f1c71869e docs: capitalize webpack with a lowercase W (#56812)
PR Close #56812
2024-11-26 22:24:11 +00:00
Amirhossein Akbari ba2a5d5966 docs: add references to Vite DevServer Proxy documentation (#58077)
PR Close #58077
2024-11-26 22:23:01 +00:00
Angular Robot fcccb4d5b8 build: update cross-repo angular dependencies to ^19.1.0-next (#58910)
See associated pull request for more information.

PR Close #58910
2024-11-26 20:08:14 +00:00
Alan Agius 0499e1b27d refactor(core): remove private whenStable (#58891)
The `@angular/ssr` package no longer depends on this symbol.

PR Close #58891
2024-11-26 18:10:50 +00:00
Alan Agius 8831b30899 build: update Angular tooling packages (#58891)
Update tooling packages to 19.0.2

PR Close #58891
2024-11-26 18:10:50 +00:00
Enea Jahollari 57f1c3a785 docs: use modern api for environment initializer (#58904)
Refactor appConfig to use the new api and remove the deprecated api

PR Close #58904
2024-11-26 18:10:20 +00:00
Jessica Janiuk b243ac1ab2 docs: release notes for the v18.2.13 release 2024-11-26 10:08:46 -08:00
Jessica Janiuk fcde96d9fe release: cut the v19.1.0-next.0 release 2024-11-26 09:58:49 -08:00
Jessica Janiuk c1bcae1a4a docs: release notes for the v19.0.1 release 2024-11-26 09:42:27 -08:00
Angular Robot 55581b4181 build: update cross-repo angular dependencies (#58900)
See associated pull request for more information.

PR Close #58900
2024-11-26 15:28:21 +00:00
Jelle Bruisten 61ae17a419 refactor(router): remove unused default error handler function (#58819)
with v19 the `defaultErrorHandler` has become unused, so could be removed

PR Close #58819
2024-11-26 14:49:37 +00:00
Angular Robot 1819728aab build: update all non-major dependencies (#58888)
See associated pull request for more information.

PR Close #58888
2024-11-26 14:48:14 +00:00
Hakeem 79ec87e277 fix(docs-infra): fix cards not shown if we hit the API page without active API tab (#58883)
since we are only updating the members margin at the constructing phase,
we should not disable this operation if user hit the page with tabs different than API active,
otherwise if user switched to the API page he won't see the cards since members margin equals zero and docs viewer won't be shown

Resolves #58882

PR Close #58883
2024-11-26 14:47:35 +00:00
Matthieu Riegler a585e49233 docs: fix @let roadmap tile. (#58886)
Prior to this change, we generated an invalid HTML with nested anchor elements. Those are not valid and are recovered by the browser by closing one early which messed the layout.

fixes #58884

PR Close #58886
2024-11-26 14:45:50 +00:00
Julian Gong 3e2851b820 docs: update link for language service config for neovim (#58479)
PR Close #58479
2024-11-25 21:22:47 +00:00
arielbackenroth 785c6116cc fix(core): Ensure _tick is always run within the TracingSnapshot. (#58881)
Fix a bug where calls to _tick are called without running through the snapshot.
This helps ensure that all snapshots that are requested are resumed.

PR Close #58881
2024-11-25 21:19:52 +00:00
Angular Robot cc40237cc7 build: update cross-repo angular dependencies (#58877)
See associated pull request for more information.

PR Close #58877
2024-11-25 18:00:47 +00:00
Angular Robot e395364b16 build: pin google-github-actions/auth action to 6fc4af4 (#58879)
See associated pull request for more information.

PR Close #58879
2024-11-25 17:12:50 +00:00
Kristiyan Kostadinov bd1f1294ae feat(core): support TypeScript 5.7 (#58609)
Updates the repo to allow for TypeScript 5.7 to be used.

PR Close #58609
2024-11-25 17:12:10 +00:00
Andrew Kushnir c56ec5eef9 refactor(core): invoke setActiveConsumer in ɵɵdeferHydrateWhen at the right time (#58864)
This commit updates the code of the `ɵɵdeferHydrateWhen` function to invoke the `setActiveConsumer` function at the right time (currently, we invoke it in the `finally` block, which is too late).

PR Close #58864
2024-11-25 16:12:37 +00:00
Andrew Kushnir f6a84f0224 refactor(core): remove unused field in ApplicationRef class (#58864)
This commit removes an unused field in the `ApplicationRef` class. Most likely the usage of the field was removed earlier.

PR Close #58864
2024-11-25 16:12:37 +00:00
Matthieu Riegler 901fd1c09b fix(core): Ensure resource sets an error (#58855)
Before this commit, a resource with a previous value wouldn't set the error state correctly.
This commit fixes this. A resource will set its status to error even when there was a previous valid value.

PR Close #58855
2024-11-25 15:28:17 +00:00
Matthieu Riegler 58c0b36d84 docs: add standalone example for ErrorHandler (#58859)
fixes #55579

PR Close #58859
2024-11-25 15:26:50 +00:00
Kristiyan Kostadinov 4f1f4a1728 refactor(migrations): skip TS version check in tsurge (#58866)
Skips the TS version check in tsurge since it's blocking some internal changes and generally isn't necessary since the app will be checked when it's built anyways.

PR Close #58866
2024-11-25 15:26:18 +00:00
Kristiyan Kostadinov 4e9244990a fix(compiler-cli): more accurate diagnostics for host binding parser errors (#58870)
Currently host bindings are in a bit of a weird state, because their source spans all point to the root object literal, rather than the individual expression. This is tricky to handle at the moment, because the object is being passed around as a `Record<string, string>` since the compiler needs to support both JIT and non-JIT environments, and because the AOT compiler evaluates the entire literal rather than doing it expression-by-expression. As a result, when we report errors in one of the host bindings, we end up highlighting the entire expression which can be very noisy in an IDE.

These changes aim to report a more accurate error for the most common case where the `host` object is initialized to a `string -> string` object literal by matching the failing expression to one of the property initializers. Note that this isn't 100% reliable, because we can't map cases like `host: SOME_CONST`, but it's still better than the current setup.

PR Close #58870
2024-11-25 15:25:48 +00:00
Andrew Kushnir 7f6f5f95ea refactor(core): use ApplicationRef.whenStable instead of a custom util function (#58834)
This commit removes a custom `whenStable` util in favor of standard `ApplicationRef.whenStable` API.

There is also an important different between the custom `whenStable` function and `ApplicationRef.whenStable` implementation: the `whenStable` was caching the "stable" promise on per-ApplicationRef basis, which resulted in unexpected behavior with zoneless, when some code ended up getting a stale resolved promise, when an application was not stable yet, this causing order of operations issues. This commit also has an extra test that covers that case.

PR Close #58834
2024-11-25 15:25:10 +00:00
kirjs 15f07166eb refactor(core): make lView[Injector] non-nullable (#58805)
There actually no cases, where it can be null. Also update all usages.

PR Close #58805
2024-11-25 15:24:40 +00:00
Pawel Kozlowski 2c8cb13bcf refactor(docs-infra): use input bindings in docs component (#58826)
Use reactive inputs instead of manually getting data from the
currently activated route.

PR Close #58826
2024-11-25 15:23:54 +00:00
Sheik Althaf d2b8a1fc98 refactor(docs-infra): remove deprecated modules from testing and use alternatives (#58847)
Removed the deprecated modules used in testing files and instead used the alternative one

PR Close #58847
2024-11-25 15:23:10 +00:00
Matthieu Riegler b7c591c68c docs(docs-infra): display navigation items as HTML. (#58093)
fixes #57872

PR Close #58093
2024-11-25 15:22:33 +00:00
Kristiyan Kostadinov 9a37459ac1 build: update g3 sync config (#58837)
Updates the sync config to exclude the entire `bazel` package. Previously only some subdirectories were excluded, but in the internal config the entire package is ignored.

PR Close #58837
2024-11-25 15:21:32 +00:00
Angular Robot a534fa5f46 build: lock file maintenance (#58867)
See associated pull request for more information.

PR Close #58867
2024-11-25 15:21:02 +00:00
Joey Perrott 6884ead4a5 ci: update perf workflow to the latest version (#58876)
Update the perf workflow to the latest version to allow for uploading results to database

PR Close #58876
2024-11-25 15:20:25 +00:00
vladboisa 1bdc3f1aae docs(docs-infra): changed default type to object (#58289)
By API returned type is object, not any, rephrase docs and TIP

Fixes #58273

docs: change type from object to Object

Change the typo from object to Object

Co-authored-by: Matthieu Riegler <kyro38@gmail.com>

PR Close #58289
2024-11-22 20:30:43 +00:00
vladboisa 893886dfb5 docs: add tools/extensions of started tutorial (#58416)
PR Close #58416
2024-11-22 20:30:07 +00:00
Andrew Kushnir 834c7c3ccc fix(core): make component id generation more stable between client and server builds (#58813)
For components with i18n in templates, the `consts` array is generated by the compiler as a function. If client and server bundles were produced with different minification configurations, the serializable contents of the function body would be different on the client and on the server. This might result in different ids generated. To avoid this issue, this commit updates the logic to not take the `consts` contents into account if it's a function.

Resolves #58713.

PR Close #58813
2024-11-22 19:36:50 +00:00
NothingEverHappens 4f2df5bcb5 docs: update prettier link to the correct one (#58757)
PR Close #58757
2024-11-22 19:33:08 +00:00
sp90 2211cc34e1 docs: add missing ng update material command to v19 update guide (#58770)
PR Close #58770
2024-11-22 19:32:29 +00:00
Ricardo e294ca8e09 docs: fix RxJS interop typo (#58823)
PR Close #58823
2024-11-22 16:14:28 +00:00
Angular Robot 843c34f38a build: update bazel setup (#58102)
See associated pull request for more information.

PR Close #58102
2024-11-22 15:37:09 +00:00
Angular Robot bd5ac61abf build: update dependency typescript to v5.6.3 (#58458)
See associated pull request for more information.

PR Close #58458
2024-11-22 15:32:50 +00:00
Angular Robot 317f41e076 build: update dependency ngx-progressbar to v13 (#58822)
See associated pull request for more information.

Closes #58696 as a pr takeover

PR Close #58822
2024-11-22 15:32:10 +00:00
Alan Agius 7fd034e13f build: remove unused patch (#58821)
This commit removes an unused patch

PR Close #58821
2024-11-22 14:56:23 +00:00
Alan Agius b562421193 build: correct ignore nested node_modules (#58821)
The commit updates both Git and Bazel ignore config to ingore nested node_modules

PR Close #58821
2024-11-22 14:56:23 +00:00
Alan Agius 1e11d0ced5 build: fix path of @angular/ssr package (#58821)
The path was incorrect

PR Close #58821
2024-11-22 14:56:23 +00:00
Angular Robot aca8cc0e16 build: lock file maintenance (#58711)
See associated pull request for more information.

PR Close #58711
2024-11-22 14:46:21 +00:00
Melroy van den Berg 70020e9eba docs: Fix automatically typo (#58808)
PR Close #58808
2024-11-22 14:45:49 +00:00
Melroy van den Berg a3857fa4a3 docs: Fix more typos. (#58809)
PR Close #58809
2024-11-22 14:44:44 +00:00
ahmadhakeem18 40e210858a docs(docs-infra): remove the usage of the deprecated core mixin as it's no-op (#58812)
PR Close #58812
2024-11-22 14:44:10 +00:00
ahmadhakeem18 292147b42d docs(docs-infra): fix visually-hidden elements style (#58812)
import visually-hidden styles from CDK as the new version of Angular material no more do that inside the deprecated core mixin

PR Close #58812
2024-11-22 14:44:10 +00:00
Dany Marques de88519709 docs: signal has to be called (#58816)
PR Close #58816
2024-11-22 14:43:39 +00:00
Melroy van den Berg 21ac592310 docs: Fix typo in standalone section of Anatomy of a component (#58807)
PR Close #58807
2024-11-22 14:43:02 +00:00
Jesús Real Serrano 753e6f49e1 docs: update resource.md (#58795)
PR Close #58795
2024-11-22 14:42:29 +00:00
mgechev cc239e3db7 docs: update front page banner to link to the blog (#58803)
The blog post now has the release event embedded.
Link to the blog for a more comprehensive overview

PR Close #58803
2024-11-22 14:41:53 +00:00
Jessica Janiuk bd08d1ddac fix(core): Prevents race condition of cleanup for incremental hydration (#58722)
When hydrating a tree of blocks, this prevents cleanup from firing more than once per tree. It also ensures the cleanup happens after hydration has finished.

fixes: #58690

PR Close #58722
2024-11-21 21:39:37 +00:00
Younes Jaaidi 1fe001e18b fix(migrations): fix provide-initializer migration when using useFactory (#58518)
Priori to this commit, initializer functions with dependencies were not migrated correctly.
With this commit, the function is executed in a injection context to allow the usage of `inject`.

PR Close #58518
2024-11-21 20:59:35 +00:00
Ryan Russell 3fc14ecc81 fix(migrations): Mark hoisted properties as removed in inject migration (#58804)
Before, in a situation like shown in the test, all of the initializers
would be dropped, as the code would try to insert it at the hoisted
property which is going to be deleted.

PR Close #58804
2024-11-21 20:58:26 +00:00
ahmadhakeem18 b46ac88a56 docs(docs-infra): fix the hovering animation of banner text and make the action on the parent (#58775)
PR Close #58775
2024-11-21 20:55:46 +00:00
ahmadhakeem18 66ef77fb5c docs(docs-infra): show the top-level banner on top of all the elements (#58775)
Starting from Tablet-landscape siz display the banner on top of all the
elements, and for smaller sizes display it under the nav to make it
accessible to users

PR Close #58775
2024-11-21 20:55:46 +00:00
ahmadhakeem18 845e0c18c7 docs(docs-infra): fix top-level banner styles and make it responsive (#58775)
PR Close #58775
2024-11-21 20:55:45 +00:00
Paweł Maniecki 3e7cb2cfe1 docs: fix 404 link in roadmap (#58791)
https://angular.dev/guide/components/output-fn does not exist, change to https://angular.dev/guide/components/outputs

PR Close #58791
2024-11-21 16:44:10 +00:00
JoostK 21f757c1c4 fix(core): correctly perform lazy routes migration for components with additional decorators (#58796)
This fixes an issue where the lazy-routes migration would crash for component classes a
decorator without arguments in front of the `@Component` decorator (in particular, it needed
to be the first decorator).

Fixes #58793

PR Close #58796
2024-11-21 16:43:30 +00:00
Kristiyan Kostadinov cebf2555e7 refactor(forms): work around another TypeScript 5.7 issue (#58782)
Reworks the changes from #58731, because they didn't cover all use cases.

PR Close #58782
2024-11-21 16:36:15 +00:00
Kristiyan Kostadinov 7eeae9f170 refactor(core): adjust tracing service (#58771)
Adjusts the tracing service based on internal requirements.

PR Close #58771
2024-11-21 16:34:53 +00:00
Alex Rickabaugh d27f97ddab refactor(core): introduce TracingService for snapshot-based tracing (#58771)
This commit introduces a private API, the `TracingService` DI token. By
providing this token, Angular can be configured to capture tracing snapshots
for certain operations such as change detection notifications, and to run
downstream operations within the context of those snapshots.
`TracingService` abstracts this context propagation and makes it pluggable.

PR Close #58771
2024-11-21 16:34:53 +00:00
Angular Robot 5b75d751cb build: update cross-repo angular dependencies (#58778)
See associated pull request for more information.

PR Close #58778
2024-11-21 16:33:43 +00:00
Alan Agius 0b634b82cd docs: minor updates to hybrid rendering docs (#58797)
Fix typos and some minor things

PR Close #58797
2024-11-21 16:31:40 +00:00
Joey Perrott d646d8b9b6 ci: update to latest actions from angular/dev-infra (#58799)
Update to latest commit

PR Close #58799
2024-11-21 15:01:39 +00:00
voi99 7cb97fb1bf docs(compiler): add strictStandalone option to angular compiler options (#58785)
PR Close #58785
2024-11-20 22:07:35 +00:00
Angular Robot 4b58ef6124 build: update io_bazel_rules_sass digest to 35b1c32 (#58674)
See associated pull request for more information.

PR Close #58674
2024-11-20 21:19:31 +00:00
Joey Perrott 6a4c5520f1 ci: set up perf tracking CI job (#58779)
Set up perf tracking CI job to run on each commit to main branch

PR Close #58779
2024-11-20 21:16:22 +00:00
Angular Robot 753298b486 build: update github/codeql-action action to v3.27.5 (#58730)
See associated pull request for more information.

PR Close #58730
2024-11-20 21:15:30 +00:00
Angular Robot 2cef60d207 build: update all non-major dependencies (#58729)
See associated pull request for more information.

PR Close #58729
2024-11-20 21:11:32 +00:00
Joey Perrott d163c8f8f3 ci: update to latest actions from angular/dev-infra (#58781)
Update to latest commit

PR Close #58781
2024-11-20 11:58:14 -08:00
Angular Robot 985bcb436e build: update dependency @types/diff to v6 (#58426)
See associated pull request for more information.

PR Close #58426
2024-11-20 08:54:48 -08:00
Mark Axisa 6ad30593b9 docs(core): add descriptive usage line for projectableNodes param in createComponent docs (#58727)
PR Close #58727
2024-11-20 08:12:32 -08:00
Charles Lyding 67a4a7b27e refactor(language-service): reuse code fixes map for has fix check (#58759)
The error codes that have fixes are present in a Map instance and
can be directly leveraged to determine if an error code can be fixed.
This avoids multiple levels of iteration that would otherwise be needed.

PR Close #58759
2024-11-20 08:10:15 -08:00
Kristiyan Kostadinov e4c50b3bea feat(common): expose component instance in NgComponentOutlet (#58698)
Exposes the current instance of the component in the `NgComponentOutlet` directive.

PR Close #58698
2024-11-20 08:08:21 -08:00
Kristiyan Kostadinov 18991d3210 fix(migrations): handle parameters with initializers in inject migration (#58769)
Adds some logic to the `inject()` migration that allows is to handle parameter declarations with initializers. This was omitted initially, because we don't officially support such cases, but it came up internally.

PR Close #58769
2024-11-20 08:07:39 -08:00
aboudard 466d557983 docs: add missing ng update command to v19 update guide (#58762)
This change adds the command to run when updating angular project from v18 to v19

PR Close #58762
2024-11-19 17:36:25 -08:00
Matthieu Riegler 1455558d7a docs(docs-infra): have a redirect for guide/components/anatomy-of-components (#58750)
fixes #58746

PR Close #58750
2024-11-19 16:52:28 -08:00
Angular Robot 71549dd461 build: update cross-repo angular dependencies (#58666)
See associated pull request for more information.

PR Close #58666
2024-11-19 16:51:40 -08:00
Jeremy Elbourn 0f2b0712c6 docs: add details on how @defer loads deps (#58763)
PR Close #58763
2024-11-19 16:34:36 -08:00
Jeremy Elbourn 7bd3f77228 docs: update titles for resource and linkedSignal (#58761)
This change updates the navigation titles for linkedSignal and resource
to follow the pattern of "<accomplish X> with <feature Y>". Also makes a
few minor updates to the body of the resource topic.

PR Close #58761
2024-11-19 16:33:52 -08:00
Charles Lyding a3521df6aa docs: add note about dev-server startup and styles (#58751)
A note has been added to the application builder documentation regarding
the Vite-based development server and style processing that could
potentially result in initial FOUC due to server processing overhead on startup.

PR Close #58751
2024-11-19 16:33:19 -08:00
Sheik Althaf f8e5119435 refactor(devtools): migrate devtools to prettier formatting (#58624)
Added html and scss to ng-dev formatter. This is reduce the formatting changes coming in PRs.

PR Close #58624
2024-11-19 16:31:24 -08:00
Kristiyan Kostadinov dcd27d7921 fix(language-service): add fix for individual unused imports (#58719)
Fixes that `getCodeActions` wasn't implemented for the unused imports fixer which meant that it wouldn't show up in the most common cases.

PR Close #58719
2024-11-19 12:19:14 -08:00
Kristiyan Kostadinov f5b2b58b3b fix(language-service): allow fixes to run without template info (#58719)
Currently the code fixes won't run if the template information can't be resolved on the diagnostic node. This is incorrect for diagnostics that are reported within `.ts` files. These changes make the `templateInfo` nullable and leave the early exit up to the individual fixes.

PR Close #58719
2024-11-19 12:19:14 -08:00
Charles Lyding d33af5cba6 fix(core): correctly clear template HMR internal renderer cache (#58724)
The internal renderer cache within the renderer factory was not being
correctly cleared due to a type-casting error. This prevented template
HMR from correctly updating the component. A more explicity cast has
now been used to mitigate this problem.
Component template HMR is currently considered experimental.

PR Close #58724
2024-11-19 12:18:39 -08:00
Kristiyan Kostadinov 4a18dc03a1 fix(forms): work around TypeScript 5.7 issue (#58731)
Adjusts the return type of `FormBuilder.group` to work around https://github.com/Microsoft/TypeScript/issues/60506.

PR Close #58731
2024-11-19 12:18:00 -08:00
Kristiyan Kostadinov b69b16cfa5 docs: update standalone migration guide (#58703)
Updates the guide for the standalone migration to account for standalone being the default.

PR Close #58703
2024-11-19 09:54:54 -08:00
Matthieu Riegler 8dbe81aae7 docs(docs-infra): fix ngmodule guide navigation. (#58740)
PR Close #58740
2024-11-19 09:53:26 -08:00
Jens Kuehlers c7c534293c docs: fix v19 support dates (#58732)
PR Close #58732
2024-11-19 09:52:45 -08:00
Paul Gschwendtner 284771d153 docs: add link to v19 blog post (#58745)
Adds a link to the v19 blog post

PR Close #58745
2024-11-19 17:38:48 +00:00
Paul Gschwendtner 0ce15c6b5e docs: update tutorials and playground to v19.0.0 (#58742)
Updates boilerplate for tutorial and playground to use v19

PR Close #58742
2024-11-19 17:26:47 +00:00
Paul Gschwendtner 8a4d2ef609 build: publish angular-in-memory-web-api@0.19.0 for v19 compatibility (#58741)
We re-publish this package with new peer dependencies for v19
compatibility.

PR Close #58741
2024-11-19 16:55:59 +00:00
Paul Gschwendtner cdaa909da9 docs: improve changelog for v19
Improves the changelog for v19, removing unnecessary information and
shortening larger breaking change notes
2024-11-19 15:36:37 +01:00
Paul Gschwendtner e29bd14a9d docs: release notes for the v19.0.0 release (#58735) 2024-11-19 15:28:14 +01:00
mgechev 0274e6c16d docs: update links in the roadmap (#58728)
PR Close #58728
2024-11-18 18:25:35 -08:00
mgechev 257fedc25a docs: update the angular roadmap for v19 (#58549)
PR Close #58549
2024-11-18 16:03:00 -08:00
Matthieu Riegler 281f747e32 docs(docs-infra): redirect to the root of the app. (#58700)
Prior to this commits the redirected path was relative.

fixes #58699

PR Close #58700
2024-11-18 13:35:57 -08:00
ahmadhakeem18 61b39ddaa6 docs(docs-infra): Fix overflow styles in cards code examples (#58704)
PR Close #58704
2024-11-18 13:35:15 -08:00
ahmadhakeem18 23ec69f8e4 docs(docs-infra): Fix the borders of Cards header to match its parent (#58704)
PR Close #58704
2024-11-18 13:35:14 -08:00
Matthieu Riegler 6f1d583fca docs: update version compatibility. (#58720)
TS 5.4 support was dropped by #57577
TS 5.6 support was added by #57749

PR Close #58720
2024-11-18 13:34:35 -08:00
marktechson 7d161b9e5c docs: add v19 developer event banner (#58721)
PR Close #58721
2024-11-18 12:48:44 -08:00
Jeremy Elbourn 92f30a749d docs: reorganize NgModule and Animations guides (#58694)
* Move the NgModules and Animations guide under "Extended Ecosystem"
* Remove all NgModule topics except for the (newly written) overview.
  All of the content in these topics was inherently written on the idea
  that your application was organized around NgModules. I went through
  all of it, moved the important parts to the overview, and deemed the
  rest obsolete (though it will always remain in archived versions).

PR Close #58694
2024-11-15 14:36:39 -08:00
hawkgs 0deb6f9ffb docs(docs-infra): remove Featured section from the API reference list page (#58659)
Remove the Featured/Most Common section from the reference list and stylize and position the filter appropriately.

PR Close #58659
2024-11-15 10:32:21 -08:00
Andrew Kushnir e01aa1002b docs: update location of REQUEST-related tokens in docs content (#58693)
Since https://github.com/angular/angular/commit/a55341b1ab8d2bc4285a4cce59df7fc0b23c0125 commit, the `REQUEST`, `RESPONSE_INIT` and `REQUEST_CONTEXT` tokens became a part of the `@angular/core` pcakage. This commit updates the docs to mention `@angular/core` as a primary location of those tokens.

PR Close #58693
2024-11-15 10:30:11 -08:00
Jessica Janiuk ea020692a2 docs: add incremental hydration guide (#58671)
This adds a guide for incremental hydration. It also updates the navigation and adds links to it from the hydration guide.

PR Close #58671
2024-11-15 09:50:13 -08:00
Jeremy Elbourn cd4907d93c docs: initial resource docs (#58687)
Adding an initial pass of docs for `resource` under the Signals heading.

PR Close #58687
2024-11-15 09:48:10 -08:00
Andrew Kushnir d62a3f8480 docs: release notes for the v19.0.0-rc.3 release 2024-11-15 09:39:55 -08:00
Pawel Kozlowski 2a767a306e refactor(core): mark linkedSignal as developer preview (#58684)
This commit bumps up the stability status of the linkedSignal
to developer preview - clearly expressing our highier confidence
in this API.

PR Close #58684
2024-11-15 14:15:20 +01:00
cexbrayat 2eb4afe2b3 fix(migrations): do not migrate next calls in template if not an EventEmitter (#58631)
Fixes #58630

```html
<button (click)="someSubject.next()">Click</button>
```

was migrated to an `.emit` call, even if `someSubject` was not an `EventEmitter`.

The issue was the same in host listeners.

PR Close #58631
2024-11-15 14:13:52 +01:00
Kristiyan Kostadinov ff71af7f02 fix(bazel): allow strictStandalone to be passed through tsconfig (#58683)
Allows users to pass the `strictStandalone` compiler option through the tsconfig.

PR Close #58683
2024-11-15 12:53:10 +01:00
Georgy Serga 549a00d18b fix(compiler): fix multiline selectors (#58681)
multiline selectors where not correctly recognized by the regexp, fix it to fetch newlines as well

Fixes #58399

PR Close #58681
2024-11-15 11:30:27 +01:00
Georgy Serga 58a84b2f79 fix(compiler): resolve :host:host-context(.foo) (#58681)
fix results which had to parse several `-shadowcsshost-no-combinator` occurrences in a single selector

PR Close #58681
2024-11-15 11:30:27 +01:00
Georgy Serga 9587437e60 fix(compiler): transform chained pseudo-selectors (#58681)
fix transformation logic for `:where` and `:is` pseudo-selectors
when these selectors were used in a chain. results were often broken,
the last letter of the selector was incorrectly trimmed.
see tests for examples

Fixes #58226

PR Close #58681
2024-11-15 11:30:27 +01:00
Georgy Serga 70e800ecec fix(compiler): fix :host parsing in pseudo-selectors (#58681)
fix several use-cases where `:host` was used in or around pseudo-selectors
- `:host` followed by a comma inside pseudo-selectors
- `:host` outside of pseudo-selectors when another `:host` is present within
see tests for examples

PR Close #58681
2024-11-15 11:30:27 +01:00
Andrew Kushnir a55341b1ab refactor(core): add REQUEST, RESPONSE_INIT and REQUEST_CONTEXT tokens (#58669)
This commit introduces the `REQUEST`, `RESPONSE_INIT` and `REQUEST_CONTEXT` tokens, which will replace similar ones from https://github.com/angular/angular-cli/blob/28503186230b5e22b84499641d56c9c981fdab1d/packages/angular/ssr/tokens/src/tokens.ts, so those tokens would be imported in application code via `@angular/core` package.

PR Close #58669
2024-11-14 14:21:21 -08:00
Guillaume MOREAU 8ac02ec696 docs: fix typo in build system migration doc (#58668)
PR Close #58668
2024-11-14 14:18:11 -08:00
Jeremy Elbourn 3337ee4f79 docs: correct SSR guide landing page (#58667)
A previous change updated the navigation from "Performance" to "Server-side & hybrid rendering", but the landing page was missed.

PR Close #58667
2024-11-14 14:17:13 -08:00
Matthieu Riegler 70ec4c5044 docs: remove mention of allowSignalWrites (#57974)
PR Close #57974
2024-11-14 14:16:28 -08:00
Jeremy Elbourn 64cfe18dbc docs: remove standalone: true across content (#58660)
This change removes `standalone: true` from documentation and examples now that it is the default.

PR Close #58660
2024-11-14 16:40:12 +00:00
Angular Robot 648c845c50 build: update cross-repo angular dependencies (#58654)
See associated pull request for more information.

PR Close #58654
2024-11-14 16:39:37 +00:00
Jessica Janiuk 68d76b3326 docs: release notes for the v19.0.0-rc.2 release 2024-11-14 08:37:26 -08:00
Jessica Janiuk 666a2a4a73 docs: release notes for the v18.2.12 release 2024-11-14 08:13:48 -08:00
Jessica Janiuk 0dc87575a0 refactor(core): add performance feature flag for incremental hydration (#58658)
This adds a flag for incremental hydration to get usage statistics.

PR Close #58658
2024-11-14 15:07:39 +00:00
Jessica Janiuk 292d819e92 fix(core): fixes issues with control flow and incremental hydration (#58644)
If a defer block is nested inside control flow while also being nested
underneath a defer block all using incremental hydration, timing issues
prevented the child nodes from being properly hydrated. This ensures
hydration happens on next render.

PR Close #58644
2024-11-14 14:59:53 +00:00
Paul Gschwendtner 0675a243f4 refactor(compiler-cli): parse angularCompilerOptions from bazel options as a fallback (#58637)
This commit is only useful to Google. It fixes that some code relies on
`readConfiguration`, but doesn't properly parse Angular compiler options
as those are part of `bazelOptions.angularCompilerOptions` if the
1P-generated tsconfig's are used.

PR Close #58637
2024-11-14 14:55:54 +00:00
cexbrayat ecd107b2e3 refactor(migrations): typos in signal migration incompatibility reasons (#58636)
A dot was appearing in the middle of the comment for `DerivedIsIncompatible`.
While at it, a dot was missing in `ClassManuallyInstantiated`.

PR Close #58636
2024-11-14 14:55:04 +00:00
Paul Gschwendtner 42557312e8 build: update ng-dev to fix release tool (#58651)
Includes: https://github.com/angular/dev-infra/pull/2446

PR Close #58651
2024-11-14 14:54:05 +00:00
Jens Kuehlers 8af0cd0e17 docs: add State of JS 2024 banner (#58649)
PR Close #58649
2024-11-14 14:53:18 +00:00
Jeremy Elbourn 275b3c315e docs: add topic for linkedSignal (#58647)
Adds a topic to the Signals guide for `linkedSignal`. Also fixes a few broken links.

PR Close #58647
2024-11-14 14:52:33 +00:00
Jeremy Elbourn 709d05b33f docs: rename "Performance" guide to "Server-side & Hybrid rendering" (#58638)
* This makes it easier for developers discover SSR docs
* Deletes the original `@defer` guide now that there's a new `@defer` topic in the template guide
* Moves the Image optimization topic to the Directives guide. This isn't my _favorite_ place for this guide and I may revisit in a follow-up PR.

PR Close #58638
2024-11-14 14:51:51 +00:00
Jeremy Elbourn 7b95747733 docs: update essentials guide to include signals (#58603)
This change updates the _Essentials_ topic with the following changes:
* Change the "Managing dynamic data" topic to "Reactivity with signals",
  largely replacing the existing content to focus specifically on
  signals.
* Replace the "to-do" examples with examples for building a
  `UserProfile` component. I made this change because the todo-item
  component had an accessibility problem: it was a list item component
  that rendered an `li` into its own template. This meant that the
  component's host element was in between the `ul` and the `li`, which
  is invalid. The "right" way to do this would have been to use a
  component with an attribute selector, but this isn't something that
  fits into the _Essentials_ guide.
* Reorder some of the concepts in the components topic
* Combine "Rendering dynamic templates", "Conditionals and loops", and
  "Handling user interaction" into one topic, "Dynamic interfaces with
  templates". Having these as separate topics meant that there was more
  preamble/scaffolding around these relatively straightforward ideas.
* Renamed the "Sharing logic" topic to "Modular design with dependency
  injection". Aside from this, I have made no meaningful changes to the
  DI topic; I may come back for another edit pass here, but this is not
  necesary for v19.
* Add a link to the in-depth guide for each essentials topic.
* Add a new introduction to the _Essentials_ overview that explains what
  this guide is and what it's trying to accomplish.

PR Close #58603
2024-11-14 14:51:19 +00:00
Julio Massano Santos 6674130e80 docs: adds interceptor testing (#57568)
PR Close #57568
2024-11-14 14:50:41 +00:00
Angular Robot 190b4d7763 build: update cross-repo angular dependencies (#58641)
See associated pull request for more information.

PR Close #58641
2024-11-13 20:45:11 +00:00
Jeremy Elbourn 84c543a241 docs: update NgModule overview for standalone default (#58606)
This is the first commit towards updating the NgModule guide to reflect
the fact that v19+ is standalone by default. This PR focuses on:
* Updating the overview to give an actual overview of the most
  important/common uses of `NgModule`
* Add callouts recommending standalone APIs over `NgModule`
* Remove several stale docs that no longer make sense in v19+

This guide (directory) needs additional follow up work; I plan to
address the remaining content in follow-up changes.

PR Close #58606
2024-11-13 20:04:24 +00:00
Angular Robot 4f7ad3a8e6 build: update io_bazel_rules_sass digest to b442a44 (#58617)
See associated pull request for more information.

PR Close #58617
2024-11-13 18:49:20 +00:00
Angular Robot ee320ee68a build: update cross-repo angular dependencies (#58639)
See associated pull request for more information.

PR Close #58639
2024-11-13 18:37:47 +00:00
Charles Lyding 9b309c129a refactor(language-service): suppress inline TCB required diagnostic for syncs (#58619)
The NG8900 diagnostic is a non-actionable error code that does not affect
the build result of a component.

PR Close #58619
2024-11-13 18:36:08 +00:00
Kristiyan Kostadinov 89256e6868 fix(migrations): replace removed NgModules in tests with their exports (#58627)
In #57684 the standalone migration was changed so that it replaces any leftover modules with their `exports`, in an attempt to preserve more working code. These changes expand that logic to also cover tests since it's somewhat common internally to only import a component's module without having any references to the component.

Note that tests are a bit of a special case, because we don't have access to the template type checker, so instead we copy over all of the `exports` of that module.

PR Close #58627
2024-11-13 18:04:31 +00:00
Kristiyan Kostadinov 731e3ea883 refactor(compiler-cli): broaden type of getPotentialImportsFor (#58627)
Currently the `getPotentialImportsFor` only accepts a `ClassDeclaration` as the context for generating an import, but that's not necessary because it doesn't require any class-specific information. These changes expand it to any `Node` so that it can be used when generating imports in testing declarations.

PR Close #58627
2024-11-13 18:04:31 +00:00
cexbrayat 579f613a58 fix(migrations): include the output migration in the defaults of the signal migration (#58635)
Running `ng g @angular/core:signals` prompts for the question on which migration to run and offers 3 options (inputs, outputs, queries).
Running with `--defaults` skips the prompts, but only runs 2 of them.
This fixes it by including the `outputs` migration in the default ones.

PR Close #58635
2024-11-13 18:03:58 +00:00
Angular Robot 28be388e6c build: update cross-repo angular dependencies (#58634)
See associated pull request for more information.

PR Close #58634
2024-11-13 18:03:09 +00:00
Jeremy Elbourn 8f558b6e98 docs: update components guide for default standalone (#58605)
This change updates the components guide to reflect the fact that
standalone is now the default.

PR Close #58605
2024-11-13 15:40:21 +00:00
Jeremy Elbourn 3a6f44bd52 docs: show component signal APIs as the standard approach (#58572)
This change updates the docs to show the signal-based APIs for inputs
and queries as the primary way to do things (and also the `output`
function).

Specifically, this means:
* Component guide
   * Show `input` and `model` as the main approach, moving `@Input` lower on the same page
   * Show signal-based queries as the main approach, moving the
     decorator-based queries lower on the same page
   * Show `output` as the main approach, moving `@Output` lower on the
     same page
   * Delete the separate topic for the `output` function
* Signals guide
   * Delete the topics for input, model, and queries, as they are not in
     the components guide.
   * Move all rxjs-interop content to a new guide under "Extended
     ecosystem"

I plan to further update the "Essentials" guide and the "Signals" guide
in follow-up PRs.

PR Close #58572
2024-11-13 15:39:50 +00:00
Jessica Janiuk f3d9316275 refactor(core): moves incremental hydration codebase to better locations (#58616)
This eliminates the extra incremental.ts codepath and moves its functions to appropriate locations.

PR Close #58616
2024-11-12 22:25:27 +00:00
Joey Perrott 9fced64146 ci: remove circleci as we no longer rely on it (#58615)
Remove CircleCI artifacts and configuration

PR Close #58615
2024-11-12 18:39:25 +00:00
Kristiyan Kostadinov c421ffdbfb fix(compiler): control flow nodes with root at the end projected incorrectly (#58607)
Fixes an edge case where a control flow node that has non-projectable nodes followed by an element node at the end would cause the entire control flow node to be project. For example if we have a projection target of `Main: <ng-content/> Slot: <ng-content select="[foo]"/>`, inserting a node of `@if (true) {Hello <span foo>world</span>}` would project the entire `Hello world` into the `[foo]` slot.

In the process of working on the issue, I also found that `@let` declarations at the root of the control flow node would prevent content projection as well.

PR Close #58607
2024-11-12 18:05:00 +00:00
Jessica Janiuk f2bda8e3fc fix(core): prevent errors on contract cleanup (#58614)
If contract cleanup is called more than once, the assertion that the container manager will be present results in exceptions.

PR Close #58614
2024-11-12 17:25:50 +00:00
arturovt 4df352b77e fix(core): clean up event contract once hydration is done (#58174)
In this commit, we clean up the event contract once hydration is complete, which removes event
listeners registered through the container manager. If we do not clean up the contract, the listeners
will remain on the `document.body`. When incremental hydration is enabled, we cannot clean up the event
contract immediately; instead, we schedule its cleanup when the app is destroyed. This is because the
event contract is required for deferred blocks, of which we are unaware, that need to be hydrated.

PR Close #58174
2024-11-12 15:05:45 +00:00
Jessica Janiuk e3343620b5 test(core): add incremental hydration tests (#58601)
This adds some additional tests for incremental hydration around registry and contract cleanup.

PR Close #58601
2024-11-12 14:49:06 +00:00
ashish ee010d1dfb docs(docs-infra): Fixed grammatical error (#58611)
PR Close #58611
2024-11-12 14:48:10 +00:00
Angular Robot 511fe57fef build: update github/codeql-action action to v3.27.2 (#58604)
See associated pull request for more information.

PR Close #58604
2024-11-12 14:47:17 +00:00
Kristiyan Kostadinov 7e5f705213 refactor(migrations): handle fake async catalyst (#58608)
Fixes that the standalone migration wasn't handling the `fake_async` path for Catalyst.

PR Close #58608
2024-11-12 14:45:40 +00:00
Matthieu Riegler 8bf9156f93 docs: fix link in 6-property-binding tutorial (#58594)
fixes #58588

PR Close #58594
2024-11-12 14:44:58 +00:00
Jessica Janiuk 42c99763f5 refactor(core): reorganize defer codebase (#58598)
This moves all the helpers out of the instructions file, keeping the instructions limited to the actual instruction set. This adds files for defer block rendering functions and triggering functions, respectively.

PR Close #58598
2024-11-11 19:11:02 +00:00
Angular Robot 3b34073228 build: update cross-repo angular dependencies (#58597)
See associated pull request for more information.

PR Close #58597
2024-11-11 19:02:07 +00:00
Sheik Althaf ff734fd3ef refactor(devtools): use reactive APIs for queries and linkedSignal (#58464)
migrated the viewChild to signal api and used linkedSignal in place of effect and little code refactoring

PR Close #58464
2024-11-11 19:01:18 +00:00
Joey Perrott 869df8e11c docs: remove "getting started" from headers on API ref page (#58595)
Remove the "Getting Started" text from the headers as it is unnecessary and confusing

PR Close #58595
2024-11-11 17:53:20 +00:00
Angular Robot 33e62c423c build: update cross-repo angular dependencies (#58593)
See associated pull request for more information.

PR Close #58593
2024-11-11 17:24:46 +00:00
Angular Robot dc3a68bf67 build: update dependency marked to v15 (#58573)
See associated pull request for more information.

PR Close #58573
2024-11-11 17:11:27 +00:00
Matthieu Riegler 750432337b ci: re-enable adev tests (#58574)
Previously we disabled the tests to land some breaking changes.
We can now update the dependencies and re-enable the tests.

PR Close #58574
2024-11-11 16:52:09 +00:00
Kristiyan Kostadinov 086cb2c40e fix(compiler-cli): report individual diagnostics for unused imports (#58589)
Initially the unused imports check was implemented so that it reports one diagnostic per component with the individual unused imports being highlighted through the `relatedInformation`. This works fine when reporting errors to the command line, but vscode appears to only show `relatedInformation` when the user hovers over a diagnostic which is a sub-par experience.

These changes switch to reporting a diagnostic for each unused import instead.

PR Close #58589
2024-11-11 15:31:00 +00:00
Paul Gschwendtner 5ac0538870 refactor(migrations): improve temporary variable generation in signal migrations (#58581)
This commit improves the temporary variable generation in signal
migrations, whenever references are "shared" inside property
declarations.

PR Close #58581
2024-11-11 15:29:20 +00:00
Paul Gschwendtner 4fe080f04d refactor(migrations): improve control flow analysis for loops in signal migration (#58581)
Currently whenever we would come across a code snippet like this, where
`maxCellsPerRow` is an input, the control flow analysis would fall apart
because the first occurence of the node points to a control flow node
that is offset-wise "after" the first occurence. This commit makes the
logic more robust.

PR Close #58581
2024-11-11 15:29:20 +00:00
Jessica Janiuk e1c5d839b3 Revert "ci: re-enable adev tests (#58574)" (#58592)
This reverts commit 7263917793.

PR Close #58592
2024-11-11 15:28:37 +00:00
Matthieu Riegler 7263917793 ci: re-enable adev tests (#58574)
Previously we disabled the tests to land some breaking changes.
We can now update the dependencies and re-enable the tests.

PR Close #58574
2024-11-11 14:50:59 +00:00
Charles Lyding 4327aa8c86 docs: add define option and prebundling info for application builder (#58569)
The application builder documentation now contains information about the
`define` option and its usage as well as development server prebundling.

PR Close #58569
2024-11-11 14:36:41 +00:00
Sheik Althaf 53341a3b8f refactor(docs-infra): use reactive APIs in shared components (#58425)
Migrated the input, output and queries to reactive APIs for better support of zoneless.

PR Close #58425
2024-11-11 14:36:05 +00:00
Jessica Janiuk 47224fb3c1 refactor(core): clean up incremental code base (#58553)
This re-organizes the code to be a bit cleaner with no more need for the onTriggerFn function.

PR Close #58553
2024-11-11 14:35:36 +00:00
Jessica Janiuk 277afc2333 refactor(core): Ensure registry and map are empty on view destroy (#58553)
This cleans up the memory usage of the defer block registry and jsactionmap when a view is destroyed that contains a defer block that is not yet hydrated.

PR Close #58553
2024-11-11 14:35:36 +00:00
Alan Agius bc5aa3ceda docs: update hybrid rendering docs to remove RenderMode.AppShell (#58564)
More context in https://github.com/angular/angular-cli/pull/28818

PR Close #58564
2024-11-08 18:56:36 +00:00
Angular Robot e847c9f009 build: update cross-repo angular dependencies (#58571)
See associated pull request for more information.

PR Close #58571
2024-11-08 18:54:26 +00:00
Anner Visser ff11551060 docs: Fix menu label for ng cache clean, clear -> clean (#58560)
PR Close #58560
2024-11-08 17:28:02 +00:00
Paul Gschwendtner 55fde8dbac refactor(migrations): support running existing migrations with plain TS programs (#58541)
Previously we always ran Tsurge migrations with an Angular program, even
if it's a plain `ts_library` target. This has changed now, so we also
need to properly handle the case where a `ts_library` is analyzed, but
no Angular program is available.

PR Close #58541
2024-11-08 17:22:06 +00:00
Paul Gschwendtner 1a0cee543e refactor(migrations): conditionally create plain TS programs for Tsurge analyzers (#58541)
Tsurge can run against the full Google3 depot, and will often also deal
with plain `ts_library` targets. Those shouldn't be constructed with the
Angular compiler as this could cause out of memory breakages etc. The
targets are simply not "proven" to be compatible with the Angular
compiler; so we shouldn't use them when not necessary.

PR Close #58541
2024-11-08 17:22:06 +00:00
Angular Robot 70036fabd8 build: update cross-repo angular dependencies (#58550)
See associated pull request for more information.

PR Close #58550
2024-11-08 17:18:16 +00:00
Charles Lyding 98b39377b9 docs: add initial new feature info for application builder (#58547)
Adds information about loader option, loader import
attributes, and import/export condition features.

PR Close #58547
2024-11-08 17:17:36 +00:00
Teun Willems 4cc10cfb1f docs: remove foreach from testing.md as it's not a JS function (#58565)
Foreach was present in the documentation even though it's not valid Javascript

PR Close #58565
2024-11-08 17:16:42 +00:00
Alan Agius c2a9b75045 fix(docs-infra): retain function keyword in API definitions (#58561)
**Before:**
```ts
animate(
  timings: string | number,
  styles?: AnimationStyleMetadata | AnimationKeyframesSequenceMetadata | null
): AnimationAnimateMetadata;
```

**Now:**
```ts
function animate(
  timings: string | number,
  styles?: AnimationStyleMetadata | AnimationKeyframesSequenceMetadata | null
): AnimationAnimateMetadata;
```

PR Close #58561
2024-11-08 17:16:04 +00:00
Alan Agius d271c4422a fix(compiler-cli): correct extraction of generics from type aliases (#58548)
**Before:**
```ts
type HttpEvent = | HttpSentEvent
  | HttpHeaderResponse
  | HttpResponse<T>
  | HttpProgressEvent
  | HttpUserEvent<T>
```

**After:**
```ts
type HttpEvent<T> = | HttpSentEvent
  | HttpHeaderResponse
  | HttpResponse<T>
  | HttpProgressEvent
  | HttpUserEvent<T>
```

PR Close #58548
2024-11-08 17:15:06 +00:00
Alan Agius c95aca1f17 docs(docs-infra): update default generic values and add constraints for type parameters in functions (#58548)
Before
```typescript
createNodeRequestHandler(
  handler: T
): T;
```

```typescript
class NgIf<T> {
  @Input() set ngIf(value: T);
  @Input() set ngIfThen(value: TemplateRef<NgIfContext<T>> | null);
  @Input() set ngIfElse(value: TemplateRef<NgIfContext<T>> | null);
  static ngTemplateGuard_ngIf: "binding";
  static ngTemplateContextGuard<T>(dir: NgIf<T>, ctx: any): boolean;
}
```

Now
```typescript
createNodeRequestHandler<T extends NodeRequestHandlerFunction>(
  handler: T
): T;
```

```typescript
class NgIf<T = unknown> {
  @Input() set ngIf(value: T);
  @Input() set ngIfThen(value: TemplateRef<NgIfContext<T>> | null);
  @Input() set ngIfElse(value: TemplateRef<NgIfContext<T>> | null);
  static ngTemplateGuard_ngIf: "binding";
  static ngTemplateContextGuard<T>(dir: NgIf<T>, ctx: any): boolean;
}
```

PR Close #58548
2024-11-08 17:15:06 +00:00
Alan Agius 4c3e1a99c1 ci: add packages/ssr in pullappove (#58556)
This directory was not included in the pullapprove config.
PR Close #58556
2024-11-07 22:43:23 +00:00
Alan Agius 641d57fb00 build: remove redundant file (#58556)
This file is incorrect.

PR Close #58556
2024-11-07 22:43:23 +00:00
Angular Robot 48be715878 build: lock file maintenance (#58450)
See associated pull request for more information.

PR Close #58450
2024-11-07 21:29:52 +00:00
Alan Agius ade9ba789c refactor(compiler-cli): Improved filterMethodOverloads to Include Members without body (#58445)
Previously, `filterMethodOverloads` excluded all members without a body, causing issues with the extraction of functions and members in TypeScript types.

PR Close #58445
2024-11-07 21:28:54 +00:00
Alan Agius 3ecf0f6701 docs: add hybrid rendering API guide (#58445)
This commit introduces a new guide for hybrid rendering APIs, which are currently in developer preview. This documentation provides insights into the usage and features of the APIs, helping developers understand their capabilities and limitations during the preview phase.

PR Close #58445
2024-11-07 21:28:54 +00:00
Alan Agius 2627b29110 docs: update SSR documentation to include API references (#58445)
This update removes hard-coded options and enhances the SSR documentation to incorporate API references.

PR Close #58445
2024-11-07 21:28:54 +00:00
Alan Agius c11ef4fade build(docs-infra): include API references for @angular/ssr entry points (#58445)
This commit utilizes the `@angular/ssr` NPM package to generate an API reference for its entry points using the `generate_api_docs` Bazel rule, which will be included in http://angular.dev/api.

PR Close #58445
2024-11-07 21:28:54 +00:00
mgechev 9aff978fac docs: add v19 instructions in the update guide (#58268)
The first draft is mostly Gemini with some
rephrasing from me. Please have a look and suggest
edits :)

PR Close #58268
2024-11-07 19:00:04 +00:00
Alan Agius 55c442033f ci: add myself to the renovate-changes PullApprove group (#58537)
I frequently need to ping others to approve Renovate PRs, so this should streamline the process.

PR Close #58537
2024-11-07 18:51:48 +00:00
Alan Agius c5ce302e0b docs(docs-infra): add support for @remarks (#58523)
In TSDoc, we currently handle the `@usageNotes` annotation, but this is not a standard TSDoc tag. Instead, the `@remarks` annotation is the correct standard, which is used in the Angular CLI repo and on the SSR package.

This change ensures that `@remarks` is treated the same as `@usageNotes` during the transform process.

PR Close #58523
2024-11-07 15:49:13 +00:00
Charles Lyding d076c32059 refactor(core): always create new renderer when applying HMR metadata update (#58527)
The DOM renderer classes perform initialization that captures state from
the component definition during construction. To ensure that the state is
kept synchronized with any newly applied metadata from an HMR `applyMetadata`
call, each renderer is now recreated during the apply process. This also
allows inline component styles to be updated in cases where external component
stylesheets may not be viable.

PR Close #58527
2024-11-07 14:30:31 +00:00
Alan Agius 1035b47d0b test(platform-server): fix issue with ngServerMode when focusing fit tests (#58538)
This commit addresses a problem with tests that use the `fit` function to focus on individual test cases. While these tests run successfully in the full suite, they fail when focused individually using `fit`.

The issue lies in the behavior of `withEventReply` and other hydration-related functions (i.e., `provideX`, `withX`). These functions return platform-specific providers based on the `ngServerMode` setting, causing inconsistencies between server and browser environments. As a result, provider instances cannot be reused across server and browser applications.

**Example of problematic code:**
```ts
const hydrationFeatures = [withEventReply()];
const html = await ssr(SimpleComponent, { hydrationFeatures });
// Expected behavior ...

const appRef = await prepareEnvironmentAndHydrate(doc, html, SimpleComponent, {
  hydrationFeatures,
});
// Expected behavior ...
```

**Solution:**
To address this, we define `hydrationFeatures` as a function instead of a static array. This ensures that a new instance of `withEventReply` is created separately for each environment, eliminating platform-specific mismatches between server and browser contexts:

```typescript
const hydrationFeatures = () => [withEventReply()];  // Define as a function
const html = await ssr(SimpleComponent, { hydrationFeatures: hydrationFeatures() });
// Expected behavior ...

const appRef = await prepareEnvironmentAndHydrate(doc, html, SimpleComponent, {
  hydrationFeatures: hydrationFeatures(),
});
// Expected behavior ...
```

PR Close #58538
2024-11-07 14:29:59 +00:00
Joey Perrott 637126cf6f fix(docs-infra): update search provider link (#58542)
Update the link used to reference algolia as the search provider on our documentation site. Adds a few URL parameters
for algolia to map back to our usage.

PR Close #58542
2024-11-07 14:27:12 +00:00
Angular Robot e27d764a54 build: update cross-repo angular dependencies (#58544)
See associated pull request for more information.

PR Close #58544
2024-11-07 14:26:27 +00:00
Charles Lyding b371384d8a docs: add component HMR information to application build system (#58528)
Add background and usage information for the new component HMR features
available in v19.

PR Close #58528
2024-11-07 13:26:55 +01:00
Angular Robot b5a94752a3 build: update cross-repo angular dependencies (#58457)
See associated pull request for more information.

PR Close #58457
2024-11-07 13:24:00 +01:00
Jessica Janiuk 0642f459de docs: release notes for the v19.0.0-rc.1 release 2024-11-06 10:20:28 -08:00
Jessica Janiuk b469952446 docs: release notes for the v18.2.11 release 2024-11-06 09:56:13 -08:00
Paul Gschwendtner 8919c80dae refactor(migrations): speed up code refactoring action for queries (#58525)
We were not properly passing around the TCB full program optimization,
so TCB generation was done per individual file. This significantly
slowed down reference resolution.

PR Close #58525
2024-11-06 16:30:18 +01:00
Paul Gschwendtner 121b340916 refactor(migrations): enable debug printing of compiler diagnostics (#58515)
This is useful for some migrations and eases debugging, so we are
building an environment-guarded debug print.

PR Close #58515
2024-11-06 13:04:22 +01:00
Paul Gschwendtner 6338cb7b3b fix(compiler-cli): do not fail fatal when references to non-existent module are discovered (#58515)
Currently when application source code references e.g. an NgModule that
points to references that aren't available, the compiler will break at
runtime without any actionable/reasonable error.

This could happen for example when a library is referenced in code, but
the library is simply not available in the `node_modules`. Clearly,
TypeScript would issue import diagnostics here, but the Angular compiler
shouldn't break fatally. This is useful for migrations which may run
against projects which aren't fully compilable. The compiler handles
this fine in all cases, except when processing `.d.ts` currently... and
the runtime exception invalides all other information of the program
etc.

This commit fixes this by degrading such unexpected cases for `.d.ts`
metadata reading to be handled gracefully. This matches existing logic
where the `.d.ts` doesn't necessarily match the "expecation"/"expected
format".

The worst case is that the Angular compiler will not have type
information for some directives of e.g. a library that just isn't
installed in local `node_modules`; compared to magical errors and
unexpected runtime behavior.

PR Close #58515
2024-11-06 13:04:22 +01:00
Paul Gschwendtner 8d5d5f80b3 fix(migrations): properly bundle shared compiler code into migrations (#58515)
The use of relative imports vs. module imports and the existing mismatch
can cause symbols to be duplicated in migrations. This is problematic as
it breaks migration logic or compiler logic in the worst case.

Long-term we will solve this by having a better Bazel toolchain where
both relative and module imports can point to the same files; but in
practice this is not the case right now.

This commit fixes the fallback template logic in the signal
input/queries migration; in case no type check block information is
available.

PR Close #58515
2024-11-06 13:04:22 +01:00
Kristiyan Kostadinov 90978de98b fix(core): avoid slow stringification when checking for duplicates in dev mode (#58521)
When we check for duplicates in dev mode, we end up stringifying an `LView` even if we don't report an error. This can be expensive in large views.

These changes work around the issue by only generating the string when we have an error to throw.

Fixes #58509.

PR Close #58521
2024-11-06 13:02:34 +01:00
Kristiyan Kostadinov b35ecee85e refactor(core): clean up standalone flag (#58478)
The `NG_STANDALONE_DEFAULT_VALUE` is no longer being patched internally and can be removed.

PR Close #58478
2024-11-06 07:01:25 +01:00
Madhu Ranjan 940be1935e docs: fix example for pipe operator precedence by removing extra parenthesis (#58488)
PR Close #58488
2024-11-06 07:00:39 +01:00
Angular Robot 516f495e39 build: update babel dependencies (#58499)
See associated pull request for more information.

PR Close #58499
2024-11-06 06:59:44 +01:00
Angular Robot 19c336e4d2 build: update dependency angular-split to v18 (#58510)
See associated pull request for more information.

PR Close #58510
2024-11-05 16:38:13 +01:00
Alan Agius 6f66147f61 ci: exclude packages/ssr/BUILD.bazel from requiring a G3 sync (#58514)
This file is only used to generate adev docs

PR Close #58514
2024-11-05 16:36:18 +01:00
Angular Robot e4a4bb9ae2 docs: update Angular CLI help [main] (#58512)
Updated Angular CLI help contents.

PR Close #58512
2024-11-05 14:11:45 +01:00
Charles Lyding c22b5accdd fix(platform-browser): correctly add external stylesheets to ShadowDOM components (#58482)
Angular components that use ShadowDOM view encapsulation have an alternate
execution path for adding component styles to the DOM that does not use the
SharedStylesHost that all other view encapsulation modes leverage. To ensure
that ShadowDOM components receive all defined styles, additional logic has been
added to the ShadowDOM specific renderer to also cover external styles.

PR Close #58482
2024-11-05 11:33:17 +01:00
Angular Robot 9b8a2c3ca0 build: update all non-major dependencies (#58506)
See associated pull request for more information.

PR Close #58506
2024-11-05 08:14:53 +01:00
Angular Robot 5fe3770218 build: migrate config renovate.json (#58503)
PR Close #58503
2024-11-05 07:51:40 +01:00
Sheik Althaf ca9998c6cf refactor(devtools): convert to bootstrap application for shell and demo apps (#58319)
Migrated the demo apps and shell-browser apps to use bootstrap application, simplifed routing and standalone components.

PR Close #58319
2024-11-05 07:35:43 +01:00
cexbrayat 01f86287db refactor(migrations): use import manager in provide-initializer (#58456)
The manual replacement logic had a flaw and was inserting the imports several times.

For example:

```ts
import { APP_INITIALIZER, ApplicationConfig, provideZoneChangeDetection } from '@angular/core';
import { InitService } from './init.service';

export const appConfig: ApplicationConfig = {
  providers: [provideZoneChangeDetection({ eventCoalescing: true }),
    {
      provide: APP_INITIALIZER,
      useFactory: (initService: InitService) => initService.init(),
      deps: [InitService],
      multi: true
    },
    {
      provide: APP_INITIALIZER,
      useFactory: (initService: InitService) => initService.init(),
      deps: [InitService],
      multi: true
    }
  ]
};
```

produced:

```ts
import { ApplicationConfig, provideZoneChangeDetection, inject, provideAppInitializer }{ ApplicationConfig, provideZoneChangeDetection, inject, provideAppInitializer } from '@angular/core';
import { InitService } from './init.service';

export const appConfig: ApplicationConfig = {
  providers: [provideZoneChangeDetection({ eventCoalescing: true }),
    provideAppInitializer(() => { return ((initService: InitService) => initService.init())(inject(InitService)); }),
    provideAppInitializer(() => { return ((initService: InitService) => initService.init())(inject(InitService)); })
  ]
};
```

It now produces proper imports:

```ts
import { ApplicationConfig, provideZoneChangeDetection, inject, provideAppInitializer } from '@angular/core';
```

PR Close #58456
2024-11-04 18:15:00 +01:00
Miles Malerba 05890cbdbd build: Update prettierrc to always use trailing commas (#58266)
This updates the prettierrc to reflect how the code seems to already be
formatted. I noticed that without this my IDE seemed to be introducing
formatting changes on save.

PR Close #58266
2024-11-04 18:14:05 +01:00
Koyejo 31430a600d docs: fix grammatical error in template binding documentation (#58491)
This update corrects a grammatical error in the "CSS style properties" section of the template binding documentation. The sentence "You must create a new object instance when you modify these values in order to Angular to apply any updates" was updated to read correctly as "You must create a new object instance when you modify these values in order for Angular to apply any updates." This clarification helps improve readability and ensures the documentation communicates instructions accurately for readers.
PR Close #58491
2024-11-04 17:15:36 +01:00
Kristiyan Kostadinov 4ef11c987d fix(core): resolve forward-referenced host directives during directive matching (#58492)
When the compiler generates the `HostDirectivesFeature`, it generates either an eager call (`ɵɵHostDirectivesFeature([])`) or a lazy call (`ɵɵHostDirectivesFeature(() => [])`. The lazy call is necessary when there are forward references within the `hostDirectives` array. Currently we resolve the lazy variant when the component definition is created which has been enough for most cases, however if the host is injected by one of its host directives, we can run into a reference error because DI is synchronous and the host's class hasn't been defined yet.

These changes resolve the issue by pushing the lazy resolution later during directive matching when all classes are guanrateed to exist.

Fixes #58485.

PR Close #58492
2024-11-04 16:17:23 +01:00
cexbrayat a116a64d35 refactor(migrations): useFactory in provide-initializer migration (#58493)
The following provider:

```ts
{
  provide: APP_INITIALIZER,
  useFactory: (initService: InitService) => {
    return () => initService.init()
  },
  deps: [InitService],
  multi: true
}
```

was migrated into:

```ts
provideAppInitializer(() => { return ((initService: InitService) => {
  return () => initService.init()
})(inject(InitService)); })
```

This doesn't compile because there is an extra function:

```
✘ [ERROR] TS2345: Argument of type '() => () => void' is not assignable to parameter of type '() => void | Observable<unknown> | Promise<unknown>'.
  Type '() => void' is not assignable to type 'void | Observable<unknown> | Promise<unknown>'. [plugin angular-compiler]

    src/app/app.config.ts:7:26:
      7 │ ...ovideAppInitializer(() => { return ((initService: InitService) => {
```

It now migrates the provider into:

```ts
provideAppInitializer(((initService: InitService) => {
  return () => initService.init()
})(inject(InitService)))
```

PR Close #58493
2024-11-04 15:45:50 +01:00
Angular Robot 536ee2bfbd build: update io_bazel_rules_sass digest to c375923 (#58477)
See associated pull request for more information.

PR Close #58477
2024-11-04 15:37:37 +01:00
Alan Agius c21734c840 ci: restore the local Yarn copy before executing renovate-update-generated-files (#58497)
There is an unidentified issue causing the Yarn binary to be altered, resulting in packages not installing correctly and leading to failures in the process.

PR Close #58497
2024-11-04 15:35:06 +01:00
Enea Jahollari 6819d6abf3 fix(migrations): flip the default standalone flag in route-lazy-loading migration (#58474)
Before v19, the default value of the standalone flag was false, this code change flips the logic in the migration to make it true by default.

PR Close #58474
2024-11-03 19:07:09 +01:00
Kristiyan Kostadinov 7d0ba0cac8 refactor(compiler): trigger hmr load on initialization (#58465)
Adjusts the HMR initialization to avoid the edge case where a developer makes change to a non-rendered component that exists in a lazy loaded chunk that has not been loaded yet. The changes include:
* Moving the `import` statement out into a separate function.
* Adding a null check for `d.default` before calling `replaceMEtadata`.
* Triggering the `import` callback eagerly on initialization.

Example of the new generated code:

```js
(() => {
  function Cmp_HmrLoad(t) {
    import(
      /* @vite-ignore */ "/@ng/component?c=test.ts%40Cmp&t=" + encodeURIComponent(t)
    ).then((m) => m.default && i0.ɵɵreplaceMetadata(Cmp, m.default, [/* Dependencies go here */]));
  }
  (typeof ngDevMode === "undefined" || ngDevMode) && Cmp_HmrLoad(Date.now());
  (typeof ngDevMode === "undefined" || ngDevMode) &&
    import.meta.hot &&
    import.meta.hot.on("angular:component-update", (d) => {
      if (d.id === "test.ts%40Cmp") {
        Cmp_HmrLoad(d.timestamp);
      }
    });
})();
```

PR Close #58465
2024-11-01 19:14:16 +00:00
Alan Agius fbd7b7c484 ci: run Renovate post tasks sequentially (#58472)
Due to a bug in Renovate (see: https://github.com/sarunint/renovate/blob/276a01fdd743d270fd2662cabb3b0e1e465aec83/lib/util/exec/common.ts#L50-L53), post tasks are incorrectly running in parallel. This causes 'yarn install' to overlap with 'yarn ng-dev misc update-generated-files', resulting in incomplete installs before file updates start.

PR Close #58472
2024-11-01 19:10:27 +00:00
Alan Agius 13f1de3351 ci: update renovate postUpgradeTasks executionMode to branch (#58470)
This change modifies the execution level of `postUpgradeTasks` in Renovate. By setting `executionMode` to `branch`, the task will run once per branch, rather than for each dependency update. This helps streamline tasks across dependencies by consolidating them at the branch level.

PR Close #58470
2024-11-01 16:50:50 +00:00
Costin Sin 2e54d6dea8 refactor(zone.js): Change the type of _taskCounts to an IndexSignature that can have keys (#51739)
named as the values of the `TaskType` type.

The Closure Compiler used at Google has a property renaming optimization
that can change the property names when minifying code. Having the
correct type helps the TSJS team that develops a tool to identfy
property renaming issues directly in TypeScript.

Signed-off-by: Costin Sin <sin.costinrobert@gmail.com>

PR Close #51739
2024-11-01 15:44:06 +00:00
Alan Agius bf64531ce4 ci: restrict file updates to a specified file location for post-task saves (#58460)
This is aiming to resolve issues with Renovate when executing `yarn ng-dev misc update-generated-files`

PR Close #58460
2024-11-01 15:43:23 +00:00
Angular Robot 3e2bc69386 build: update io_bazel_rules_sass digest to e3b2785 (#58420)
See associated pull request for more information.

PR Close #58420
2024-11-01 14:42:58 +00:00
Jordan Hall 45adc72040 build: Update publish-build-artifacts to honor ORG (#58408)
Currently you pass in the ORG and it still tries to publish to Angular rather than your ow ORG repo that gets created

PR Close #58408
2024-11-01 14:41:56 +00:00
Shannon V.C. 340866cb6b docs: fix external link in NG0100 error page (#58462)
Fixes external link for 'Everything you need to know about the "ExpressionChangedAfterItHasBeenCheckedError" error' on the NG0100 error page.
Domain has changed from indepth.dev to angularindepth.com

PR Close #58462
2024-11-01 14:34:29 +00:00
Kristiyan Kostadinov 3061c67539 refactor(language-service): update code fix for unused imports (#58468)
Since the unused imports diagnostic setup has changed, we need to update the code fix to account for it.

PR Close #58468
2024-11-01 14:33:56 +00:00
Kristiyan Kostadinov c0738c90c3 fix(compiler-cli): make the unused imports diagnostic easier to read (#58468)
The unused imports diagnostic reports once on the entire initializer and then again once per unused imports. This ends up being a bit hard to follow, because in a lot of cases the code snippet looks identical.

These changes switch to highlighting the `imports:` part of the property declaration and only highlighting the unused imports without a message.

PR Close #58468
2024-11-01 14:33:55 +00:00
Kristiyan Kostadinov 5ca48e802b refactor(compiler): remove unused field from output AST (#58444)
The `ExternalReference.runtime` field wasn't being used anywhere.

PR Close #58444
2024-11-01 14:32:57 +00:00
Kristiyan Kostadinov 21adbba784 fix(compiler): avoid having to duplicate core environment (#58444)
Switches to referencing the core environment directly in the generated code, instead of having to duplicate it.

PR Close #58444
2024-11-01 14:32:57 +00:00
Jeevan Mahesha 95146248bb docs: update ng-template guide to include NgTemplateOutlet import and correct syntax (#58443)
PR Close #58443
2024-10-31 19:59:18 +01:00
Pawel Kozlowski 87344e49c0 refactor(docs-infra): migrate to output (#58447)
This change contains result of the automated migration
of the decorator based @Output to the function equivalent.

PR Close #58447
2024-10-31 19:58:37 +01:00
Alan Agius 4f94bd782d build: update yarn to 1.22.22 (#58448)
Trying to get around a problem is causing renovate to keep trying updating this file.

PR Close #58448
2024-10-31 19:06:16 +01:00
Alan Agius 01fcbafa2b build: update cross-repo angular dependencies (#58446)
See associated pull request for more information.

Closes #57880 as a pr takeover

PR Close #58446
2024-10-31 19:05:01 +01:00
Andrew Kushnir 89db5f734d refactor(core): tree-shake defer block registry (#58424)
This commit updates the code of the incremental hydration feature to make the `DeferBlockRegistry` class tree-shakable. The class is only needed for hydration cases and it should not be included into client bundles for client-only apps.

PR Close #58424
2024-10-31 18:12:03 +01:00
Jessica Janiuk 32a5388af9 refactor(core): More cleanup of incremental hydration code (#58430)
This cleans up much of incremental.ts and adds documentation.

PR Close #58430
2024-10-31 11:26:58 +01:00
Jessica Janiuk 20a6a52722 refactor(core): Eliminate recursion in incremental hydration (#58419)
This implements a queue rather than a recursive call, which enables
proper cleanup timing for defer block registry.

PR Close #58419
2024-10-31 11:22:58 +01:00
Kristiyan Kostadinov 94eae783c1 refactor(migrations): attempt to correct initialization order in internal inject migration (#58427)
Updates the internal part of the `inject` migration to attempt to correct some cases where the declaration order of properties doesn't match the initialization order.

PR Close #58427
2024-10-31 09:17:51 +01:00
Kristiyan Kostadinov 70f8c99885 refactor(migrations): make it easier to delete nodes including comments (#58427)
We were repeating the logic that deletes a node together with all its comments in a few different places. These changes consolidate the logic under `ChangeTracker.removeNode`.

PR Close #58427
2024-10-31 09:17:51 +01:00
Kristiyan Kostadinov d7afb0a086 refactor(migrations): internal inject migration applying some changes to abstract classes (#58427)
We were filtering out abstract classes pretty late in the migration which led to the internal part of it to make some changes that aren't finalized later. These changes fix the issue by filtering out abstract classes during analysis.

PR Close #58427
2024-10-31 09:17:51 +01:00
Alan Agius f04e6063ae fix(docs-infra): reduce margin-block-start from doc anchor headers (#58431)
This change reduces the spacing between headers, which is currently excessive.

PR Close #58431
2024-10-31 09:15:34 +01:00
Alex Rickabaugh d8829fb3d1 docs: release notes for the v19.0.0-rc.0 release 2024-10-30 13:22:15 -07:00
Alex Rickabaugh af5d776c04 docs: release notes for the v18.2.10 release 2024-10-30 12:12:09 -07:00
Matthieu Riegler 183af09059 refactor(migrations): Make the explicit standalone migration idempotent (#58418)
With this commit the  explicit standalone migration uses the presents of imports to make sure that we can safely remove the standalone prop
and not adding it again when re-run.

PR Close #58418
2024-10-30 11:55:11 -07:00
Alan Agius 378284fa08 refactor(core): introduce ngServerMode as global (#58386)
This commit adds the `ngServerMode` as global, which allows for the tree-shaking of server-only code from the bundles. When this flag is unset at runtime, server-specific code will be excluded by Closure, optimizing bundle size.

**Internal Angular Flag:** This is an internal Angular flag (not a public API), avoid relying on it in application code.

PR Close #58386
2024-10-30 10:13:28 -07:00
Pawel Kozlowski 3161360852 fix(migrations): properly migrate output aliases (#58411)
Before this fix the output migration was incorrectly assuming
that the @Output decorator takes its params as an object.
What happens in reality is that the @Output decorator is taking
alias as the only argument, without any object literal wrapper.

PR Close #58411
2024-10-30 10:01:28 -07:00
Pawel Kozlowski db7ed20d7b fix(migrations): properly replace imports across files (#58414)
This change fixes a bug where the output migration was interacting
with the InputManager utility in the way that was resulting in
incorrect import replacements.

The fix consists of making sure that a new ImportManager instance
is created for each and every file containing @Output declarations.

PR Close #58414
2024-10-30 09:24:05 -07:00
Paul Gschwendtner 0d955f67ed refactor(migrations): gracefully handle metadata parsing errors in signal migration (#58413)
In 1P, we saw that a type of a target wasn't resolvable, referenced in a
`hostBindings#directive` field. This breaks the entire pipeline; so we
should handle gracefully but report an error.

Worst case scenario here is that we would miss some references to the
given directive/component. This is acceptable and we can continue
investigation why that given target was broken; especially since the
file was part of the target inputs- but seemingly not in the `tsconfig`.

PR Close #58413
2024-10-30 09:23:39 -07:00
Paul Gschwendtner 7f10343659 refactor(migrations): improve temporary variable insertion in signal migrations (#58413)
Fixes that the migrations weren't properly determing the highest block
of multiple shared references. The logic was flawed by checking the
`start` indices; because we also need to respect that the blocks
should enclose all references; and the block practically is a common
ancestor. This is not guaranteed without this commit.

Note: The logic assumes that all references are part of the same control
flow container; this is verified.

PR Close #58413
2024-10-30 09:23:39 -07:00
Kristiyan Kostadinov 2f9af914b7 fix(compiler-cli): disable standalone by default on older versions of Angular (#58405)
Disables the standalone by default behavior in the compiler when running against and older version of Angular. This is necessary, because the language service may be using the latest version of the compiler against and older version of core in a particular workspace.

PR Close #58405
2024-10-30 09:23:12 -07:00
Pawel Kozlowski 8fa556b1e1 refactor(docs-infra): use reactive APIs in adev components (#58357)
This is a relativelly small refactoring to a couple of
adev components. The goal here is to use new reactive
APIs in the idiomatic way.

PR Close #58357
2024-10-30 09:21:25 -07:00
Angular Robot 929db81f96 build: update scorecard action dependencies (#58400)
See associated pull request for more information.

PR Close #58400
2024-10-29 05:10:29 -07:00
Alan Agius 53733a4ef8 refactor(core): move static AfterRenderImpl.PHASES to a top-level variable (#58402)
Improves code minification.

PR Close #58402
2024-10-29 05:08:13 -07:00
Jessica Janiuk 2e11b6fc42 refactor(core): prevent unnecessary hydration work in csr cases (#58366)
This adds a shouldHydrate check that prevents any additional work in cases when hydration is not necessary.

PR Close #58366
2024-10-29 05:07:37 -07:00
Jessica Janiuk acd4f80737 fix(core): Prevents trying to trigger incremental hydration on CSR (#58366)
hydrate triggers were firing in CSR cases and attempting to find parent defer blocks. This prevents that from happening. In these cases, the defer block id will be empty.

fixes: #58359

PR Close #58366
2024-10-29 05:07:37 -07:00
Angular Robot 7d9b38e97b docs: update Angular CLI help [main] (#58396)
Updated Angular CLI help contents.

PR Close #58396
2024-10-28 12:51:33 -07:00
george looshch 63f3d0c8fa docs: remove an unnecessary whitespace (#58388)
Remove an unnecessary whitespace between an opening parenthesis and a
word in the documentation on lifecycle.

Closes #58380

PR Close #58388

PR Close #58388
2024-10-28 12:49:36 -07:00
george looshch 92fbecb527 docs: fix backtick escaping in a Markdown file (#58387)
Fix backtick escaping for the template string example in the
documentation on expression syntax.

Closes #58382

PR Close #58387

PR Close #58387
2024-10-28 12:48:58 -07:00
Jeevan Mahesha 8a7985daa0 docs: update ProfileEditorComponent to use inject() for FormBuilder (#58378)
PR Close #58378
2024-10-28 12:48:27 -07:00
Jessica Janiuk db467e10b7 refactor(core): Additional cleanup for incremental hydration (#58394)
This adds comments, removes some duplicate logic, and eliminates some unnecessary complexity of the incremental hydration core logic.

PR Close #58394
2024-10-28 12:40:27 -07:00
Kristiyan Kostadinov 4434f3c7a1 fix(migrations): inject migration always inserting generated variables before super call (#58393)
Fixes that if a class has a `super` call, the `inject` migration would always insert the generated variable before it, even if there's other code before the `super` call.

PR Close #58393
2024-10-28 12:39:03 -07:00
Kristiyan Kostadinov 26be4d64ae refactor(migrations): inject migration internal mode incorrectly migration properties initialized to identifiers (#58393)
Fixes that when the `inject` migration in internal mode was starting to visit the nodes one level down from the root when considering whether an expression contains local references. This lead it to skip over top-level identifiers and migrate some code incorrectly.

PR Close #58393
2024-10-28 12:39:03 -07:00
Kristiyan Kostadinov b98400f582 fix(migrations): inject migration not inserting generated code after super call in some cases (#58393)
Fixes an issue where the `inject` migration was generating and attempting to insert code after a `super` call, but the string buffering implementation was dropping it if the statement right after the `super` call was deleted as a result of the migration.

PR Close #58393
2024-10-28 12:39:03 -07:00
Kristiyan Kostadinov a2a9ac76f5 refactor(migrations): hoist uninitialized members to top of class if they are not combined in the internal migration (#58393)
When the internal mode for the `inject` migration is enabled, we find properties without initializers, we add their initializers and we prepend the `inject` calls before them. The remaining properties that couldn't be combined are left in place. This appears to break some internal cases.

These changes work around the issue by hoisting all the non-combined members above the `inject()` calls. This should be safe, because they don't have initializers and as such can't have dependencies.

PR Close #58393
2024-10-28 12:39:03 -07:00
Kristiyan Kostadinov 57db5dda4f refactor(core): account for anonymous classes in internal utility (#58392)
Fixes that the `getClosestComponentName` utility was reporting an empty string if it encounters an anonymous class.

PR Close #58392
2024-10-28 12:38:03 -07:00
Brandon Roberts 992410e928 fix(compiler): add more specific matcher for hydrate never block (#58360)
Fixes an issue where additional characters were allowed afte the "hydrate never" block.

Closes #58358

PR Close #58360
2024-10-28 12:35:11 -07:00
Kristiyan Kostadinov 61203d1d47 refactor(core): remove globalApi tag (#58375)
`@globalApi` was an AIO implementation detail that isn't relevant anymore.

PR Close #58375
2024-10-28 12:33:52 -07:00
Angular Robot 6be9882fae build: update actions/checkout digest to 11bd719 (#58329)
See associated pull request for more information.

PR Close #58329
2024-10-28 12:31:14 -07:00
David LJ 317d70483a docs: fix errata in provideEnvironmentInitializer API docs (#58355)
PR Close #58355
2024-10-28 12:29:53 -07:00
Sheik Althaf d98d7dc1ec refactor(devtools): use signal apis in profiler and frame-selector (#57558)
Refactor the profiler and frame-selector components to use signal apis, in future we can make the components onPush and zoneless

PR Close #57558
2024-10-28 12:28:25 -07:00
Alan Agius 924e54ab4a test: update defer symbol test golden file (#58297)
Update the golden file of the defer symbol test

PR Close #58297
2024-10-28 12:26:05 -07:00
Alan Agius b23e749b5e refactor(core): eliminate top-level property access in ɵɵNgOnChangesFeature (#58297)
Top-level property access was causing dead code elimination (DCE) and tree-shaking issues. This commit modifies `ɵɵNgOnChangesFeature` to prevent these bailouts.

PR Close #58297
2024-10-28 12:26:05 -07:00
Alan Agius e3762303e6 refactor(core): make AfterRenderImpl tree-shakable by moving PHASES (#58297)
Marked the PHASES constant within AfterRenderImpl as @__PURE__ to enable better tree-shaking during bundling. This optimization ensures that unused code is more effectively eliminated, improving overall bundle size and performance.

Closes #58296

PR Close #58297
2024-10-28 12:26:05 -07:00
Alan Agius fee9db18a9 refactor: add @__PURE__ next to @pureOrBreakMyCode for improved bundler compatibility (#58297)
Added the `@__PURE__` annotation alongside `@pureOrBreakMyCode` to improve compatibility with third-party bundlers. This refactor follows optimization best practices, ensuring broader support across different tools, as `@pureOrBreakMyCode` was only supported by Closure Compiler.

PR Close #58297
2024-10-28 12:26:05 -07:00
Alan Agius 7de7c52769 build: remove usages of useDefineForClassFields: false (#58297)
When setting `"useDefineForClassFields": false`, static fields are compiled within a block that relies on the `this` context. This output makes it more difficult for bundlers to treeshake and eliminate unused code.

PR Close #58297
2024-10-28 12:26:05 -07:00
Jessica Janiuk 0f2f7ec754 refactor(core): cleanup incremental hydration code (#58363)
This cleans up some minor issues with the incremental hydration implementation and should make maintaining it a little easier.

PR Close #58363
2024-10-28 09:26:45 -07:00
Paul Gschwendtner 35d7ca55b2 test: support parallel tsurge unit combining in batch test infra (#58280)
This allows the batch test for the signal input migration to pass.

PR Close #58280
2024-10-25 18:47:41 +00:00
Paul Gschwendtner dd686edfe9 refactor(migrations): update migrations to combine analysis data in parallel (#58280)
This is necessary given the previous Tsurge refactorings. It should
speed up migrations in the merge phase signficiantly and reduce memory
pressure. In 1P, we already have workers from analyze phase anyway— so
those can be re-used for parallel metadata merging.

PR Close #58280
2024-10-25 18:47:41 +00:00
Paul Gschwendtner 8143016b91 refactor(migrations): support parallel tsurge metadata merging (#58280)
This is helpful and important for large scale migrations where a single
call for merging _all_ unit data's can be subject to memory / disk
resource constraints. Consider a compilation unit data for every target
in Google3, and those being merged in a single program.

PR Close #58280
2024-10-25 18:47:41 +00:00
Matthieu Riegler db577857ff ci: disable adev tests (#58367)
The changes in #58288 are responsible for breaking the tests (see #54858). We'll re-enable them on the next release.

PR Close #58367
2024-10-25 18:45:21 +00:00
Yong Su 2aa9f8b071 refactor(core): allow passing passive option to addEvent (#58316)
For scroll-blocking events like 'touchstart', 'touchmove', 'wheel' and 'mousewheel',
if passive option is not specified when adding the event listener, browser may give
a violation warning.

This PR allows us to set the passive option when calling event lib's addEvent().

PR Close #58316
2024-10-24 17:49:26 -07:00
Yong Su bba8cc5d86 refactor(core): allow passing passive option to addEvent (#58316)
For scroll-blocking events like 'touchstart', 'touchmove', 'wheel' and 'mousewheel',
if passive option is not specified when adding the event listener, browser may give
a violation warning.

This PR allows us to set the passive option when calling event lib's addEvent().

PR Close #58316
2024-10-24 17:49:26 -07:00
Matthieu Riegler 7ed5e6c5ee docs(docs-infra): re-enable adev tests (#58276)
PR Close #58276
2024-10-24 16:42:17 -07:00
Daniel Payet d16a609f50 fix(localize): Adding arb format to the list of valid formats in the localization extractor cli (#58287)
Although the ARB format is supported, it's missing from the command's list of options.

Fix #58286

PR Close #58287
2024-10-24 16:41:47 -07:00
Joey Perrott bad36519f2 fix(router): remove setter for injector on OutletContext (#58343)
This is a cleanup/completion of the work in #56798

PR Close #58343
2024-10-24 16:41:04 -07:00
Brandon Roberts 48620ad21f docs(platform-browser): update usage notes for incremental hydration (#58339)
PR Close #58339
2024-10-24 16:39:26 -07:00
Alex Rickabaugh a264c78b34 refactor: cleanup initializers that use ctor params (#58349)
Fix initializer of instance members that reference identifiers declared in
the constructor.

When public class fields are enabled, such cases throw TS2729: property used
before its initialization.

PR Close #58349
2024-10-24 16:38:50 -07:00
Angular Robot 1036f66caf build: update io_bazel_rules_sass digest to c677123 (#58338)
See associated pull request for more information.

PR Close #58338
2024-10-24 16:36:37 -07:00
Gourav102 2f1f525bd2 Update queries.md (#58330)
Fixed a formatting error and a grammar error
PR Close #58330
2024-10-24 16:25:11 -07:00
Jessica Janiuk 7a5d1292d0 refactor(core): prevent annotating in hydrate never blocks (#58328)
This fixes an issue with hydrate never where jsaction annotations would still hydrate even when they should not.'

PR Close #58328
2024-10-24 16:20:52 -07:00
Matthieu Riegler 5d9cc8f408 refactor(core): remove the standalone feature (#58288)
By removing the standalone feature, we reduce the amount of code generated for components but at the cost of including the `StandaloneService` in the main bundle even if no standalone components are included in it.

PR Close #58288
2024-10-24 16:19:02 -07:00
Kristiyan Kostadinov c7342bec24 fix(core): avoid breaking change with apps using rxjs 6.x (#58341)
The `rxResource` was using `firstValueFrom` which isn't supported in rxjs 6.x. `@angular/core` currently supports rxjs 6 so we need this to be backwards compatible. This came up when trying to deploy the Material docs site which is still on rxjs 6 ([see](https://github.com/angular/components/actions/runs/11487971079/job/31973721563)).

PR Close #58341
2024-10-24 16:17:47 -07:00
Matthieu Riegler 8af71c05b2 refactor(language-service): support standalone by default (#58238)
`isStandaloneDecorator()` returns `false` only when the component is explicitly not standalone

PR Close #58238
2024-10-24 12:44:13 -07:00
Matthieu Riegler bc9ef72fae refactor(compiler): update compliance tests. (#58238)
`standalone: true` is now the default at runtime.

PR Close #58238
2024-10-24 12:44:12 -07:00
Matthieu Riegler a10f7cfbc2 refactor(core): Don't generate standalone: true for definitions (#58238)
The runtime default is now `standalone: true`.
`ɵɵdefineComponent`, `ɵɵdefineDirective` and `ɵɵdefinePipe` now set `standalone` as `true` by default in the definitions.

PR Close #58238
2024-10-24 12:44:12 -07:00
Néstor Sabater 18ddf0de76 docs(router): document segment consumption during route evaluation (#58069)
PR Close #58069
2024-10-24 12:41:38 -07:00
Andrew Kushnir f3a028c53a docs: release notes for the v19.0.0-next.11 release 2024-10-23 13:21:46 -07:00
Andrew Kushnir a80b8b48c7 release: bump the next branch to v19.1.0-next.0 2024-10-23 13:21:46 -07:00
Andrew Kushnir 2d8ae84426 docs: release notes for the v18.2.9 release 2024-10-23 13:13:44 -07:00
Alan Agius 65de20c415 refactor(docs-infra): rename Bazel flag --prerender_adev to --full_build_adev (#58320)
This change updates the flag name for better clarity and specificity.

PR Close #58320
2024-10-23 08:04:11 -07:00
Alan Agius 204f125873 refactor(docs-infra): adopt new SSR APIs (#58320)
This commit updates adev to utilize the latest SSR APIs.

PR Close #58320
2024-10-23 08:04:11 -07:00
Pawel Kozlowski cf70d626cd feat(migrations): print output migration stats in ng generate (#58321)
Propagates output migration stats to the ng generate schematic.

PR Close #58321
2024-10-23 08:03:31 -07:00
Pawel Kozlowski bb286f65e7 feat(migrations): capture output migration stats (#58321)
This change captures different statistics from the run of the
output migration:
- total number of outputs detected
- number of problematic outputs that can't be migrated
- overall success rate

PR Close #58321
2024-10-23 08:03:30 -07:00
Kristiyan Kostadinov 42607bf0f2 fix(migrations): add outputs migration to combined shorthand (#58318)
Adds the `@Output` migration to the combined `@angular/core:signals` migration.

PR Close #58318
2024-10-23 08:02:50 -07:00
Pawel Fras 5fde27b8a4 refactor(core): fix deprecation version for APP_INITIALIZER and PLATFORM_INITIALIZER (#58322)
this commit changes deprecation version mentioned in JSDocs for APP_INITIALIZER and PLATFORM_INITIALIZER from 18.1.0 to 19.0.0

PR Close #58322
2024-10-23 08:01:28 -07:00
Jessica Janiuk 9cd9428992 ci: clean up pullapprove list (#58325)
This removes no longer active users from the shared primitives list of reviewers.

PR Close #58325
2024-10-23 07:59:49 -07:00
Devashish Sarmah 24c6373820 feat(common): add optional rounded transform support in cloudinary image loader (#55364)
Currently, the cloudinary image loader doesn't support rounded transform.
Add a new prop called `rounded` to the existing `ImageLoaderConfig.loaderParams`

test(common): add test case for cloudinary loader rounded option

add test case for the rounded transform option of cloudinary loader

PR Close #55364
2024-10-23 07:59:13 -07:00
Andrew Kushnir 1f4533807e Revert "fix(forms): fix FormRecord type inference (#50750)" (#58315)
This reverts commit 18b6f3339f.

PR Close #58315
2024-10-22 14:04:45 -07:00
Andrew Kushnir 79d9be3e63 Revert "feat(forms): add ability to clear a FormRecord (#50750)" (#58315)
This reverts commit 3e7d724037.

PR Close #58315
2024-10-22 14:04:45 -07:00
Andrew Kushnir a5b0394313 Revert "test(forms): add unit test (#50750)" (#58315)
This reverts commit b0c4c1fd2b.

PR Close #58315
2024-10-22 14:04:45 -07:00
Andrew Scott 8ebbae88ca feat(core): Add rxjs operator prevent app stability until an event (#56533)
This commit adds an operator to help rxjs observables important for rendering
keep the application unstable (and prevent serialization) until there is
an event (observable emits, completes, or errors, or the subscription is
unsubscribed). This helps with SSR for zoneless and also helps for when
operations are intentionally executed outside the Angular Zone but are
still important for SSR (i.e. angularfire and the zoneWrap helper hacks).

PR Close #56533
2024-10-22 14:01:11 -07:00
Andrew Kushnir 888657a12e Revert "refactor(migrations): support parallel tsurge metadata merging (#58280)" (#58313)
This reverts commit 21b6613b90.

PR Close #58313
2024-10-22 12:27:53 -07:00
Andrew Kushnir 1215927e5b Revert "refactor(migrations): update migrations to combine analysis data in parallel (#58280)" (#58313)
This reverts commit 8735543d06.

PR Close #58313
2024-10-22 12:27:53 -07:00
Andrew Kushnir 9aa686896d Revert "test: support parallel tsurge unit combining in batch test infra (#58280)" (#58313)
This reverts commit cb34e406ba.

PR Close #58313
2024-10-22 12:27:53 -07:00
Jessica Janiuk 25a3ce551a ci: temporarily disable adev tests (#58309)
This disables adev tests until the next release. This is due to #54858.

PR Close #58309
2024-10-22 11:30:37 -07:00
Paul Gschwendtner cb34e406ba test: support parallel tsurge unit combining in batch test infra (#58280)
This allows the batch test for the signal input migration to pass.

PR Close #58280
2024-10-22 11:29:16 -07:00
Paul Gschwendtner 8735543d06 refactor(migrations): update migrations to combine analysis data in parallel (#58280)
This is necessary given the previous Tsurge refactorings. It should
speed up migrations in the merge phase signficiantly and reduce memory
pressure. In 1P, we already have workers from analyze phase anyway— so
those can be re-used for parallel metadata merging.

PR Close #58280
2024-10-22 11:29:16 -07:00
Paul Gschwendtner 21b6613b90 refactor(migrations): support parallel tsurge metadata merging (#58280)
This is helpful and important for large scale migrations where a single
call for merging _all_ unit data's can be subject to memory / disk
resource constraints. Consider a compilation unit data for every target
in Google3, and those being merged in a single program.

PR Close #58280
2024-10-22 11:29:15 -07:00
Jessica Janiuk 3b2f6792ba refactor(core): annotate incremental hydration as dev preview (#58308)
This adds the proper developer preview annotation for the withIncrementalHydration api.

PR Close #58308
2024-10-22 11:27:51 -07:00
AleksanderBodurri ec386e7f12 feat(core): introduce debugName optional arg to framework signal functions (#57073)
Angular DevTools is working on developing signal debugging support. This commit is a step in the direction of making available debug information to the framework that will allow Angular DevTools to provide users with more accurate information regarding the usage of signals in their applications.

Follow up PRs that will use this arg will:
- Develop a typescript transform that will detect usages of signal functions and attempt to add a debugName without the user needing to specify one directly
- Develop debug APIs for discovering signal graphs within Angular applications (using debugName as a way to label nodes on the graph)

PR Close #57073
2024-10-22 11:26:37 -07:00
Angular Robot 1e9328e654 build: update actions/cache digest to 6849a64 (#58305)
See associated pull request for more information.

PR Close #58305
2024-10-22 09:44:21 -07:00
Jessica Janiuk 08e6ccb758 refactor(core): incremental hydration cleanup (#58290)
This cleans up a few bits of implementation in the incremental hydration code.

PR Close #58290
2024-10-22 09:43:43 -07:00
Matthieu Riegler 308acb95c3 refactor(core): removing error related dead code. (#58272)
we're not invoking `wrappedError` any more, removing all the related code.

PR Close #58272
2024-10-22 09:42:47 -07:00
Sumit Arora 0ea9b8892b test(router): adding test for getLoadedRoutes (#58199)
Added test for getLoadedRoutes with and without loadChildren

PR Close #58199
2024-10-22 09:40:45 -07:00
Sumit Arora f305b6bdf6 refactor(migrations): updating @angular/core to latest version. (#58199)
- change relies on the @angular/core version 19.0.0-next.9

PR Close #58199
2024-10-22 09:40:45 -07:00
Sumit Arora 0674965b59 refactor(router): publishing getLoadedRoutes using the global utils function (#58199)
Angular DevTools uses globally available functions to provide debugging information to the framework. This commit exports `getLoadedRoutes` function using the `ɵpublishExternalGlobalUtil` function added in PR: https://github.com/angular/angular/commit/f5cd8f7ab498f35dc2ec3c6662d4443135989720.

Follow-up PRs that will:
- Add a new router example in the Angulat DevTools demo application.
- Implement the router graph in the Angular DevTools to view the routes that are loaded in the application

PR Close #58199
2024-10-22 09:40:45 -07:00
Younes Jaaidi 19edf2c057 feat(core): add syntactic sugar for initializers (#53152)
add helper functions provideAppInitializer, provideEnvironmentInitializer & providePlatformInitializer
to respectively simplify and replace the use of APP_INITIALIZER, ENVIRONMENT_INITIALIZER, PLATFORM_INITIALIZER

add a migration for the three initialiers

PR Close #53152
2024-10-22 09:38:18 -07:00
Jessica Janiuk 69fc5ae922 feat(core): Add incremental hydration public api (#58249)
This exposes the public api to utilize incremental hydration.

PR Close #58249
2024-10-22 09:37:31 -07:00
Henry Zhang 8ddce80a0b feat(service-worker): allow specifying maxAge for entire application (#49601)
This commit adds an `applicationMaxAge` to the service worker configuration. When set, it will only assign a cached version to clients within the `maxAge`. Afterwards, it will ignored any expired application versions and fetch exclusively from the network. The default is `undefined`, for which the behaviour is the same as it currently is.

PR Close #49601
2024-10-22 07:45:21 -07:00
Matthieu Riegler 925de81490 refactor(core): remove ComponentFactoryResolver related dead code (#58274)
`getComponent` wasn't used anymore, we can remove `ERROR_COMPONENT`.

PR Close #58274
2024-10-22 07:43:52 -07:00
Matthieu Riegler c1aa9c6041 docs(docs-infra): fix CLI commands (#58294)
With this commit the CLI doc will display the correct arguments for the subcommands

fixes #58279

PR Close #58294
2024-10-22 07:42:21 -07:00
Alan Agius 35954455e2 build(migrations): skip source map generation (#58299)
Remove the usage of MagicString and the generation of intermediate sourcemaps,
as sourcemaps are never included in the schematic bundles. Peparing source maps
is a CPU / memory intensive and was causing OoO errors in rollup.

PR Close #58299
2024-10-22 07:41:41 -07:00
Pawel Kozlowski 2bfc64daf1 feat(migrations): expose output as function migration (#58299)
This commit exposes a new ng generate schematic that migrates
outputs from the decorator version to the output function.

PR Close #58299
2024-10-22 07:41:41 -07:00
Pawel Kozlowski ab25a192ba feat(core): allow running output migration on a subset of paths (#58299)
This change introduces a new configuration parameter to the
output as function migration - it is now possible to restrict
a set of migrated paths.

PR Close #58299
2024-10-22 07:41:41 -07:00
Doug Parker 8b5e5f76a4 test: update protractor builder usage to private-protractor (#58254)
This fixes any existing usage of `@angular-devkit/build-angular:protractor` which would be broken by the CLI `-next.12` upgrade.

PR Close #58254
2024-10-22 07:37:14 -07:00
Doug Parker e4a5989700 build: update Angular CLI dependencies to 19.0.0-next.12 (#58254)
This includes the Protractor builder rename.

PR Close #58254
2024-10-22 07:37:14 -07:00
Emmanuel Roux b0c4c1fd2b test(forms): add unit test (#50750)
Add unit test for statusChange events

PR Close #50750
2024-10-22 07:36:22 -07:00
Emmanuel Roux 3e7d724037 feat(forms): add ability to clear a FormRecord (#50750)
Add new `clear()` method to `FormRecord`

PR Close #50750
2024-10-22 07:36:22 -07:00
emmanuelroux 18b6f3339f fix(forms): fix FormRecord type inference (#50750)
Updates type inference in `ɵElement` to make `FormRecord` take precedence over `FormGroup`

PR Close #50750
2024-10-22 07:36:22 -07:00
Alex Rickabaugh 9762b24b5e feat(core): experimental impl of rxResource() (#58255)
Implementations of two rxjs-interop APIs which produce `Resource`s from
RxJS Observables. `rxResource()` is a flavor of `resource()` which uses a
projection to an `Observable` as its loader (like `switchMap`).

PR Close #58255
2024-10-21 13:25:58 -07:00
Alex Rickabaugh 18d8d44b1f feat(core): experimental resource() API for async dependencies (#58255)
Implement a new experimental API, called `resource()`. Resources are
asynchronous dependencies that are managed and delivered through the signal
graph. Resources are defined by their reactive request function and their
asynchronous loader, which retrieves the value of the resource for a given
request value. For example, a "current user" resource may retrieve data for
the current user, where the request function derives the API call to make
from a signal of the current user id.

Resources are represented by the `Resource<T>` type, which includes signals
for the resource's current value as well as its state. `WritableResource<T>`
extends that type to allow for local mutations of the resource through its
`value` signal (which is therefore two-way bindable).

PR Close #58255
2024-10-21 13:25:58 -07:00
Alex Rickabaugh cd59e5da2b refactor(core): avoid removing pending tasks twice (#58255)
Optimizes `PendingTasks` slightly to avoid notifying the scheduler if the
disposal function of a pending task is called twice.

PR Close #58255
2024-10-21 13:25:58 -07:00
Jessica Janiuk 95449302e9 refactor(core): add incremental hydration infrastructure (#58193)
This adds the bulk of the infrastructure to support
incremental hydration.

PR Close #58193
2024-10-21 12:05:06 -07:00
Matthieu Riegler 2e3e9b137a refactor(platform-server): replace patch by CLI option. (#58256)
The CLI introduced a new option `experimentalPlatform` to disable loading a polyfill from node. We don't need to patch it anymore.

PR Close #58256
2024-10-21 09:09:07 -07:00
Alan Agius 59ce1531d0 refactor(core): wrap AFTER_RENDER_PHASE_EFFECT_NODE in an IIFE for Tree-shaking (#58283)
Currently, `AFTER_RENDER_PHASE_EFFECT_NODE` is not tree-shakable. By wrapping it in an IIFE, it will be annotated as pure, allowing unused code to be removed during the tree-shaking process.

This issue was discovered while investigating: https://github.com/angular/angular-cli/issues/28676.

PR Close #58283
2024-10-21 09:07:54 -07:00
Pawel Kozlowski 00e2001351 fix(migrations): migrate more .next output usages (#58282)
This commits makes sure that .next usages of outputs are
migrated in templates and host bindings.

PR Close #58282
2024-10-21 09:06:48 -07:00
Pawel Kozlowski 518627438c build: expose signal-migrations to output-migrations (#58282)
This build change makes it possible to share code between
existing input / query migrations and output migrations.

PR Close #58282
2024-10-21 09:06:48 -07:00
Angular Robot 3924a70e1c build: update io_bazel_rules_sass digest to 6e23fb1 (#58270)
See associated pull request for more information.

PR Close #58270
2024-10-19 17:44:56 +02:00
Todd Palmer a0b4725a4b docs: fix typo in tutorial - change style.css to styles.css to correct style sheet file name (#58269)
PR Close #58269
2024-10-19 17:43:17 +02:00
Matthieu Riegler 8c3ed8d172 refactor(migrations): removee standalone:true (#58234)
This commit re-enables the code that removes `standalone: true` in the `explicit-standalone-flag` migration

PR Close #58234
2024-10-19 17:42:34 +02:00
Paul Gschwendtner 7c74f43901 refactor(migrations): improve query migration type detection (#58265)
* Improves handling of the query migration is `strict = false` w/
  `strictNullChecks` is configured in the project. There is a special
  case that needs to be handled; similar to the input migration.

* Improves readability of the code for normal type generic insertion.
  The current logic was a little confusing.

PR Close #58265
2024-10-19 17:41:44 +02:00
Daniel Kimmich 01e6fc1bab docs: update default asset paths (#58246)
PR Close #58246
2024-10-18 14:35:30 +00:00
Paul Gschwendtner c1432f939b refactor(language-service): improve name of input full class refactoring action (#58263)
Prefixing the full class refactoring actions with `Full class` makes
them less confusing along with the individual field actions.

PR Close #58263
2024-10-18 14:34:47 +00:00
Paul Gschwendtner 6342befff8 feat(language-service): support migrating full classes to signal queries (#58263)
Adds a similar code action as for inputs, where users can migrate full
classes to signal queries.

PR Close #58263
2024-10-18 14:34:47 +00:00
Paul Gschwendtner 15ca29fed4 docs: add queries and input migration to angular.dev migration overview (#58260)
Adds queries and input migration to the angular.dev migration overview.

PR Close #58260
2024-10-18 14:34:21 +00:00
Paul Gschwendtner 78b08cf0d1 docs: move signal queries migration readme into adev (#58260)
Moves the signal queries migration `README.md` into adev.i

PR Close #58260
2024-10-18 14:34:21 +00:00
Paul Gschwendtner ffa621bcd0 docs: move signal input migration readme into adev (#58260)
Moves the signal input migration `README.md` into adev.

PR Close #58260
2024-10-18 14:34:21 +00:00
Paul Gschwendtner c89855437f docs(migrations): add missing options to queries migration documentation (#58260)
Adds missing options to the queries migration documentation.

PR Close #58260
2024-10-18 14:34:21 +00:00
Kristiyan Kostadinov dff4de0f75 feat(migrations): add a combined migration for all signals APIs (#58259)
Adds a combined `@angular/core:signals` migration that combines all of the signals-related migrations into one for the apps that want to do it all in one go.

All of the heavy-lifting was already done by the individual migrations, these changes only chain them together for a more convenient developer experience.

PR Close #58259
2024-10-18 11:52:54 +00:00
TupiC b542f15204 docs: removed typos of withHttpTransferCacheOptions description (#58244)
Removed two typos in the withHttpTransferCacheOptions function description.

- Corrected spelling of "whether"
- Changed spelling from "a an" to "an"
PR Close #58244
2024-10-18 10:14:09 +00:00
Angular Robot 8876b9e3fa build: update io_bazel_rules_sass digest to 43a9cda (#58253)
See associated pull request for more information.

PR Close #58253
2024-10-18 10:04:44 +00:00
Kristiyan Kostadinov d0c74f3891 fix(compiler-cli): report when NgModule imports or exports itself (#58231)
Reports a diagnostic if an NgModule refers to itself in its `imports` or `exports`. Previously the compiler would go into an infinite loop.

Fixes #58224.

PR Close #58231
2024-10-18 09:26:44 +00:00
wlotherington 22021bc0de docs(docs-infra): fix playground terminal/console (#58257)
xterm was not resizing correctly when terminal/console component was resized.
- Load fitAddon for each terminal instance to enable resize.
- Use `ResizeObserver` to detect changes to the component size changes (window resize does not catch `as-split` events).
- Move padding from `.xterm-screen` to `.xterm` ancestor to fix text alignment.

Fixes #52645

PR Close #58257
2024-10-18 09:25:35 +00:00
Pawel Kozlowski 8311f00faa feat(core): introduce the reactive linkedSignal (#58189)
This change introduces the new reactive primitive: linkedSignal.

A linkedSignal represents state (hence the signal in the name)
that is reset based on the provided computation. Conceptually
it is a state that is maintained / valid only in the context of
another source signal (context is deteremined by a computation).

Closes #55673

PR Close #58189
2024-10-18 08:12:51 +00:00
Jessica Janiuk e603e5616d test(core): fix flaky hydration test (#58252)
This clears the DebugConsole between each test, which should address cross-test console noise.

PR Close #58252
2024-10-17 15:58:30 -07:00
Pawel Kozlowski dd407a7132 refactor(core): expose producerMarkClean utility (#58228)
This commit exposes the new producerMarkClean utility that
makes it possible to mark a reactive node as clean following
changes to the node's value. In practice it resets the dirty
flag and all other internal flags as need. Prior to this change
the cleanup code was duplicated.

The new utility will be used in the linkedSignal implementation.

PR Close #58228
2024-10-17 18:09:16 +00:00
Matthieu Riegler 141f3107e1 refactor(core): standalone by default for JIT compiled directives (#58236)
This commit fixes the standalone by default for JIT compiled directives (like in unit tests)

PR Close #58236
2024-10-17 13:26:21 +00:00
Paul Gschwendtner 94bc69aa03 refactor(migrations): do not migrate inputs or queries when declared with @HostBinding (#58243)
The `@HostBinding` decorator may be currently applied to inputs
directly, or queries. This is not great and should be replaced with
`host: {}` usages that are more close to template expressions anyway.

Migrating the inputs or queries to signals would break with
`@HostBinding`, because the signals need to be invoked to access their
underlying values. The `@HostBinding` does not do this automatically,
expectedly.

PR Close #58243
2024-10-17 13:02:17 +00:00
cexbrayat a8d4eb8c25 refactor(core): test EventEmitter completion on destroy with outputToObservable (#58239)
A unit test has been added to check that `EventEmitter` properly completes upon component/directive destrouction when used with `outputToObservable`.
It explains why `destroyRef` has to be injected in `EventEmitter` in the first place.

PR Close #58239
2024-10-17 11:37:57 +00:00
Matthieu Riegler 4b9accdf16 feat(http): promote withRequestsMadeViaParent to stable. (#58221)
Introduced back in v15 by #47502, its usage with fix with #55652 for the `FetchBackend` which will become the default `HttpBackend` with #58212

PR Close #58221
2024-10-17 10:14:38 +00:00
Angular Robot 590105d055 build: update io_bazel_rules_sass digest to 9fa2d50 (#58235)
See associated pull request for more information.

PR Close #58235
2024-10-17 10:13:58 +00:00
Sebastian Barfurth 13c13067bc feat(common): disable keyvalue sorting using null compareFn (#57487)
The keyvalue pipe sorts the entries of the input by key. This has been the subject of debate in the past (https://github.com/angular/angular/issues/42490). The core of the discussions is that it is often desirable (and perhaps expected) that they natural ordering of the input is respected. There are at least two workarounds to restore natural ordering, such as a `compareFn` that simply returns `1` or a custom pipe. However, both of these require code for pipe consumers to maintain or  copy around to many places.

Allowing `null` as `compareFn` and treating it as "natural order" is fairly simple to understand, backward compatible and was suggested a few times on https://github.com/angular/angular/issues/42490 where it seemed to be received well. Using `null` is also possible in templates without any component code changes.

PR Close #57487
2024-10-16 18:18:19 +00:00
wlotherington d3f8153917 docs(docs-infra): change mermaid diagram colors (#58223)
Change diagram colors to:

- Better match the overall site theme.
- Improve dark theme.
- Make the diagram easier to understand. "Unchecked" nodes have no color and "Checked" nodes match the color of the "Event" node that triggered the change detection.

Fixes #56314

PR Close #58223
2024-10-16 16:46:16 +00:00
Paul Gschwendtner b05c266f7b release: cut the v19.0.0-next.10 release 2024-10-16 18:14:39 +02:00
Matthieu Riegler 819ff034ce feat(core): treat directives, pipes, components as by default (#58229)
BREAKING CHANGE: Angular directives, components and pipes are now standalone by default. Specify  for declarations that are currently declared in s.  for v19 will take care of this automatically.
2024-10-16 17:43:24 +02:00
Dzhavat Ushev 9097b734e5 docs(language-service): fix link URLs (#58143)
PR Close #58143
2024-10-16 14:48:13 +00:00
Matthieu Riegler 3f1e7ab6ae feat(core): promote outputFromObservable & outputToObservable to stable. (#58214)
Alongside the promotion of `output()` to stable, we promote those 2 related interops.

PR Close #58214
2024-10-16 14:45:10 +00:00
Kristiyan Kostadinov 61ba23017f refactor(migrations): clean up logic that marks decorator as standalone (#58216)
Cleans up the logic that was marking a decorator as standalone after some of the recent changes by:
* Reusing some of the existing logic instead of duplicating it.
* Ensuring that we don't drop cases like an explicit `standalone: true`.

PR Close #58216
2024-10-16 12:27:59 +00:00
Kristiyan Kostadinov 5971037613 test(compiler): update failing tests (#58217)
Fixes some tests that started failing, because #58154 made it so placeholder-only messages are extracted while #58176 added some tests that only contain placeholders.

PR Close #58217
2024-10-16 09:47:10 +00:00
Kristiyan Kostadinov e5a6165b54 test(compiler-cli): fix broken test (#58217)
Fixes a test that broke because a pipe wasn't marked explicitly as `standalone: false`.

PR Close #58217
2024-10-16 09:47:10 +00:00
Kristiyan Kostadinov a3cb530d84 fix(compiler): handle typeof expressions in serializer (#58217)
Fixes that some changes which landed at the same time caused a compilation error in the serialized.

PR Close #58217
2024-10-16 09:47:10 +00:00
Matthieu Riegler 48bfb879c5 refactor(compiler-cli): Don't extract abstract overload multiple times (#57707)
Prior to this commit, each abstract method that was overloaded was extracted. With this commit it will be extracted only once. Every overload was and still will be supported by the signatures.

fixes #57693

PR Close #57707
2024-10-16 07:31:48 +00:00
Matthieu Riegler 0c9d721ac1 feat(compiler): add support for the typeof keyword in template expressions. (#58183)
This commit adds the support for `typeof` in template expressions like interpolation, bindings, control flow blocks etc.

PR Close #58183
2024-10-16 07:31:00 +00:00
Kristiyan Kostadinov 231e6ff6ca feat(compiler-cli): generate the HMR replacement module (#58205)
Adds the ability to generate the function that replaces the component's metadata during HMR. The HMR update module is a function that is loaded dynamically and as such it has some special considerations:
* It isn't bundled, because doing so will result in multiple version of core.
* Since it isn't bundled, all dependencies have to be passed in as parameters. These changes include some special logic to determine and output those dependencies.
* While HMR is enabled, we have to disable the functionality that generates dynamic imports and drop the dependencies inside `@defer` blocks, because we need to retain the ability to refer to them in case they're needed inside the HMR update function.
* The function is returned by the `NgCompiler` as a string for the CLI's sake.

PR Close #58205
2024-10-16 07:22:45 +00:00
Kristiyan Kostadinov ca651d18d6 refactor(compiler): generate HMR update function (#58205)
Adds some code to the compiler that will generate the HMR update callback function definition.

PR Close #58205
2024-10-16 07:22:45 +00:00
Kristiyan Kostadinov 3930b08be2 refactor(compiler-cli): allow namespace import identifiers to be rewritten (#58205)
Currently only the prefix of namespace imports is configurable, but for HMR we need to know ahead of time what the name of `@angular/core` will be. These changes allow us to rewrite it.

PR Close #58205
2024-10-16 07:22:45 +00:00
Kristiyan Kostadinov 1524069b36 refactor(compiler): output AST visitor not visiting implicit arrow function returns (#58205)
Fixes that the output AST's `RecursiveVisitor` wasn't visiting all the nodes when an arrow function has an implicit return. The problem was that we were calling the `visitExpression` method directly, instead of `.visitExpression`. This doesn't affect existing code since the `RecursiveVisitor` isn't used anywhere, but it will affect future HMR code.

PR Close #58205
2024-10-16 07:22:45 +00:00
Kristiyan Kostadinov 1212f354a7 refactor(core): account for new replaceMetadata signature (#58205)
Updates the runtime code to account for the upcoming changes to `ɵɵreplaceMetadata`.

I also had to reorganize how the `angularCoreEnv` was set up, because `ɵɵreplaceMetadata` needs access to it without triggering a circular dependency.

PR Close #58205
2024-10-16 07:22:45 +00:00
Angular Robot 4288ea8614 docs: update Angular CLI help [main] (#58210)
Updated Angular CLI help contents.

PR Close #58210
2024-10-16 06:43:33 +00:00
Doug Parker 6d33ab5afe refactor(compiler): remove preservePlaceholders (#58176)
While effective, `preservePlaceholders` unfortunately is not viable in google3 at the moment due to some complexities with how TC extracts messages. Therefore this feature is being removed in favor of whitespace trimming of expressions, which is viable for TC and provides most of the same benefit.

This is a partial revert of dab722f9c8.

PR Close #58176
2024-10-16 06:42:37 +00:00
Doug Parker 6c126d5c5d refactor(compiler): trim insignificant whitespace in expressions when preserveSignificantWhitespace === false. (#58176)
This parses and reserializes expressions to normalize their whitespace formatting and make them more durable to insignificant changes in whitespace which might otherwise alter message IDs despite no translator-meaningful change being made.

PR Close #58176
2024-10-16 06:42:37 +00:00
Doug Parker 474163cd1d refactor(compiler): add expression serializer (#58176)
This serializes the expression AST back into a string. This is useful to normalize whitespace in expressions so i18n messages are not affected by insignificant changes (such as going from `{{ foo }}` to `{{\n  foo\n}}`).

PR Close #58176
2024-10-16 06:42:37 +00:00
Alex Rickabaugh 7f0b49d8c4 refactor(core): update effect error handling (#57952)
Previously, effect() would handle errors differently depending on the effect
type. Root effects had a try/catch that would execute them independently and
report errors to `ErrorHandler`, while component effects would "crash" CD.

This commit switches all effects to use the same error handling (errors
always reach the CD error handler).

An additional unrelated refactoring is thrown in which removes the
`pendingTask` machinery from root effects, since they make `ApplicationRef`
dirty and thus trigger the scheduler.

PR Close #57952
2024-10-15 13:02:10 -07:00
Jessica Janiuk d760cbe71b refactor(core): Update interfaces for handling defer completion (#58206)
This adds properties to the LDeferBlockDetails and ensures the completion functions exist for future incremental hydration use cases.

PR Close #58206
2024-10-15 16:49:27 +00:00
Alan Agius 73c95f521c docs: update browserslist config to include last 2 Android major versions (#58186)
See: https://github.com/angular/angular-cli/pull/28620 for more context.

PR Close #58186
2024-10-15 16:48:58 +00:00
Joey Perrott 780df34d4a ci: run the proper command for post update tasks in renovate (#58207)
Properly run the ng-dev command instead of calling for a yarn script

PR Close #58207
2024-10-15 16:47:58 +00:00
Matthieu Riegler 9ab663e7a2 refactor(migrations): Port standalone migration to standalone by default (#58169)
With this commit, the standalone migration will only migrate code with `standalone: false` to standalone by default (without the standalone attribute)

PR Close #58169
2024-10-15 16:05:14 +00:00
Matthieu Riegler 7ed566524d refactor(compiler-cli): Migrate manually ngtsc tests to standalone by default (#58169)
This commit is part of the migration to standalone by default.

PR Close #58169
2024-10-15 16:05:14 +00:00
Matthieu Riegler b631bb4111 refactor(compiler-cli): Update Golden partials (#58169)
After flipping the standalone default value, this is reflected in the partial output result.

PR Close #58169
2024-10-15 16:05:14 +00:00
Matthieu Riegler 4157bf0c4e refactor(upgrade): update API golden. (#58169)
`UpgradeComponent` is meant to be used as a subclass, it doesn't need to disable `standalone`.

PR Close #58169
2024-10-15 16:05:14 +00:00
Matthieu Riegler a34090bc71 refactor(compiler): dynamic default for the partial compiler. (#58169)
Use `semver` in the partial compiler to decide on a default value

Co-authored-by: Alex Rickabaugh <alxhub@users.noreply.github.com>

PR Close #58169
2024-10-15 16:05:14 +00:00
Matthieu Riegler 6b8c494d05 feat(core): flipping the default value for standalone to true (#58169)
With this commit directives, components & pipes are standalone by default.

To be declared in an `NgModule`, those require now `standalone: false`.

PR Close #58169
2024-10-15 16:05:14 +00:00
Paul Gschwendtner bf9fd31e2e refactor(migrations): wire up best effort and insert TODO flag for queries migration (#58190)
Wires up the new migration flags for the `ng generate` queries migration
entry-point.

PR Close #58190
2024-10-15 13:49:22 +00:00
Paul Gschwendtner 1210c3699d refactor(migrations): add statistics to query migration (#58190)
Adds statistics to the query migration.

PR Close #58190
2024-10-15 13:49:22 +00:00
Paul Gschwendtner 0399ffcf44 refactor(migrations): remove outdated TODOs in queries migration (#58190)
These TODOs are no longer relevant.

PR Close #58190
2024-10-15 13:49:22 +00:00
Paul Gschwendtner 280e240f5f refactor(migrations): improve safety of queries migration when dealing with union types (#58190)
When dealing with union types of queries, we should be conservative in
the default mode and skip migration. That is because `viewChild()`
always includes `undefined`, but we cannot trivially emulate the
behavior where it was initially set to `null` (as an alternative to
`undefined`). Those queries can still be migrated via best effort
mode.

PR Close #58190
2024-10-15 13:49:21 +00:00
Paul Gschwendtner a748cb06f5 refactor(migrations): move queries problematic pattern check to analyze stage (#58190)
This will improve cross-target problematic pattern detection, with
batch execution.

Notably, unfortunately, the inheritance checking is still suboptimal for
the queries migration, simply because we don't know what fields are
queries during analyze stage. Theoretically we could track all edges of
classes/fields and filter out irrelevant edges during merge phase, but
this seems out of scope for now.

Signal inputs has the fully working checks. Only issue I can see is that
we don't properly propagate incompatibilities from derived to base
classes. This hasn't come up much though, so may be a follow-up based on
need.

PR Close #58190
2024-10-15 13:49:21 +00:00
Matthieu Riegler 97c44a1d6c feat(core): Promote takeUntilDestroyed to stable. (#58200)
`takeUntilDestroyed` is now part of the public API.

PR Close #58200
2024-10-15 12:52:26 +00:00
Paul Gschwendtner b4de7acbf5 refactor(migrations): improve heuristic of untyped .componentInstance in signal migrations (#58191)
We currently extend `.componentInstance` accesses (which are `any` for
`DebugElement`). We are doing this for `By.directive(T)` invocations,
but can expand this for other common expressions like with harnesses.

E.g.

`harness.query(T).componentInstance`.

PR Close #58191
2024-10-15 12:08:53 +00:00
Daniel Sogl 6782acb007 docs: fix changelog typo (#58188)
PR Close #58188
2024-10-15 07:21:50 +00:00
Angular Robot 711e82e48f build: update scorecard action dependencies (#58202)
See associated pull request for more information.

PR Close #58202
2024-10-15 06:38:06 +00:00
Jessica Janiuk 9224f9b043 refactor(core): Add mouseover to hover dom triggers (#58197)
Unfortunately mouseenter is a synthetic event, meaning it does not bubble in the same ways. So mouseover needs to be included in this list in order to get proper browser replayability of the mouse hovering events.

PR Close #58197
2024-10-14 14:27:04 -07:00
Jessica Janiuk d8b5f4e0c2 refactor(core): restructure hydration test files (#58196)
This re-organizes the hydration tests to make it easier to add new tests. Incremental hydration can have tests in a separate file after this groundwork is landed.

PR Close #58196
2024-10-14 14:26:26 -07:00
Jessica Janiuk d6a8d35aec refactor(core): Update defer scheduler to use injector (#58195)
This updates the functions for defer scheduler triggers to use a passed in injector instead of an lview.

PR Close #58195
2024-10-14 14:25:51 -07:00
Matthieu Riegler 517da9532c refactor(core): Setup constant for standalone default value (#58175)
This commit is part of the migration to standalone by default and sets up 2 files with a default value for standalone. They are still `false` in this case to land the change into G3 first. The switch to `true` will be executed in a follow-up PR.

PR Close #58175
2024-10-14 16:01:41 +00:00
Charles Lyding bbca205d5e refactor(compiler): adjust HMR initializer block for improved Vite support (#58173)
For the HMR initializer block to support being used in a Vite setup with
import analysis, the import call expression needs to be a runtime generated
value and include the `@vite-ignore` special comment. Without the first,
Vite will error prior to loading the application. Without the second, a
warning will be shown for each import which is effectively each component
within the application when HMR is enabled.

PR Close #58173
2024-10-14 15:21:40 +00:00
Charles Lyding 4a6c6505d9 refactor(compiler): support generating URL expressions with dynamic imports (#58173)
The compiler's AST factories now support generating a dynamic import call
expression with either a string literal or an expression. The later is useful
for cases where the URL is dynamically created at runtime. Also, a leading
comment can now be added to the URL for cases where bundler behavior
needs to be included via special comments.

PR Close #58173
2024-10-14 15:21:40 +00:00
Matthieu Riegler c42759b7a0 refactor(compiler-cli): Update compliance golden partials (#58160)
This commit is part of the update to standalone by default

PR Close #58160
2024-10-14 14:58:58 +00:00
Matthieu Riegler c7fac7eecb refactor(language-service): Migrate manually ngtsc tests to standalone by default (#58160)
This commit is part of the migration to standalone by default.

PR Close #58160
2024-10-14 14:58:58 +00:00
Matthieu Riegler 7aa3097ab6 refactor(compiler-cli): Migrate manually ngtsc tests to standalone by default (#58160)
This commit is part of the migration to standalone by default.

PR Close #58160
2024-10-14 14:58:58 +00:00
Matthieu Riegler afcc3ee209 refactor(core): Migrate modules directory with the schematic. (#58160)
All components, directives and pipes will now use standalone as default. Non-standalone decorators have now .

PR Close #58160
2024-10-14 14:58:58 +00:00
Matthieu Riegler e85021a7ba build: Migrate all integration tests with the schematic. (#58160)
All components, directives and pipes will now use standalone as default. Non-standalone decorators have now .

PR Close #58160
2024-10-14 14:58:58 +00:00
Matthieu Riegler 30766d6b77 refactor(devtools): Migrate with the schematic. (#58160)
All components, directives and pipes will now use standalone as default. Non-standalone decorators have now .

PR Close #58160
2024-10-14 14:58:57 +00:00
Matthieu Riegler 7cd0e8d575 refactor(docs-infra): Migrate with schematic. (#58160)
All components, directives and pipes will now use standalone as default. Non-standalone decorators have now .

PR Close #58160
2024-10-14 14:58:57 +00:00
Matthieu Riegler 09df589e31 refactor(core): Migrate all packages with the explicit-standalone-flag schematic. (#58160)
All components, directives and pipes will now use standalone as default.
Non-standalone decorators have now `standalone: false`.

PR Close #58160
2024-10-14 14:58:57 +00:00
Daniel Kimmich 9373c983fe docs: remove word repetition (#58187)
PR Close #58187
2024-10-14 13:19:41 +00:00
Doug Parker ba4340875a fix(compiler): ignore placeholder-only i18n messages (#58154)
Message which only contain a single placeholder cannot be translated, there is no static text to be translated. Therefore these messages can be skipped and shouldn't be extracted at all.

Ideally, Angular would throw an error if a message is only a placeholder, since it should not contain an `i18n` attribute at all. However this would be a breaking change and require a migration which isn't in scope right now. We can explore converting this to a hard error sometime in the future.

PR Close #58154
2024-10-13 16:48:34 +00:00
Paul Gschwendtner 37e3b03b52 refactor(migrations): improve readability of strictness logic in input migration (#58168)
This commit improves readability/reasoning of the input converting logic
that does things differently based on strictness flags.

PR Close #58168
2024-10-13 16:47:03 +00:00
Paul Gschwendtner 7e785588a7 refactor(migrations): gracefully proceed migration if there is an invalid query (#58168)
In rare cases, there may be queries that fail Angular compiler-cli
extraction. This should not prevent migration of other queries and
instead be a graceful error.

PR Close #58168
2024-10-13 16:47:03 +00:00
Paul Gschwendtner 2cf88bba9a refactor(language-service): add support for running best-effort queries refactoring (#58168)
This is a follow-up to the VSCode queries code refactoring feature. This
commit adds support for running the refactoring with
`--best-effort-mode`.

PR Close #58168
2024-10-13 16:47:03 +00:00
Paul Gschwendtner 10d294c9d9 refactor(migrations): do not migrate .toArray, .first if query is skipped (#58168)
If a query is skipped for incompatibility reasons, we should not migrate
their `toArray`, `.first` references

PR Close #58168
2024-10-13 16:47:03 +00:00
Paul Gschwendtner f48354af0b refactor(migrations): support inserting TODOs for queries migration (#58168)
Allows users to enable TODO insertion to see why certain queries did not
get migrated.

PR Close #58168
2024-10-13 16:47:03 +00:00
Paul Gschwendtner 4b089621be refactor(migrations): share TODO insertion logic of input migration (#58168)
This allows us to re-use the same logic in the queries migration.

PR Close #58168
2024-10-13 16:47:03 +00:00
Paul Gschwendtner a141ee8fb2 refactor(migrations): add best-effort-mode for queries migration (#58168)
Allows users to ignore detected incompatibilities and migrate as much as
possible. Similar to the input migration.

PR Close #58168
2024-10-13 16:47:02 +00:00
Paul Gschwendtner 19369d78ba refactor(migrations): share best effort logic between input and query migration (#58168)
Allows us to easily implement a best effort mode for both migrations.

PR Close #58168
2024-10-13 16:47:02 +00:00
Paul Gschwendtner 349de49964 refactor(migrations): properly detect and skip queries with accessors (#58168)
Currently the migration does not detect queries declared on accessors.
This is fine as we cannot migrate them anyway.

We should still try to detect them and mark them as incompatible so that
we could insert TODOs.

PR Close #58168
2024-10-13 16:47:02 +00:00
Paul Gschwendtner f84e8ddcd9 ci: disable bazel-saucelabs job (#58162)
Disables the `bazel-saucelabs` job in `main`, and re-uses the PR legacy
saucelabs job to run on `main` instead (which is much more stable and
reliable).

PR Close #58162
2024-10-11 14:07:35 +00:00
Paul Gschwendtner a59dbb7cd6 refactor(migrations): assign incompatibility reasons for query migration (#58152)
Instead of skipping queries without any reasoning, we should categorize
fields that couldn't be migrated. This is also important for the VSCode
integration— similar to how it's done with the inputs migration.

We are fully sharing the problematic pattern detection etc. This means
we are also sharing the enum. Not super ideal, but enables the best
sharing of code.

PR Close #58152
2024-10-11 11:23:38 +00:00
Angular Robot b1985932e7 build: update io_bazel_rules_sass digest to 583fc8c (#58155)
See associated pull request for more information.

PR Close #58155
2024-10-11 10:37:56 +00:00
Kristiyan Kostadinov fc6c76ac67 refactor(core): add internal utility to resolve the component name of a node (#58148)
Adds a utility, meant for internal consumption, that will return the class name of the closest component node to an element.

PR Close #58148
2024-10-11 07:04:40 +00:00
Kristiyan Kostadinov fb44323c51 fix(compiler-cli): incorrectly generating relative file paths on case-insensitive platforms (#58150)
We're using `path.relative` to compute a relative path between a `SourceFile` and the one of the `rootDirs`. The problem is that the `rootDirs` get passed through `getCanonicalFileName` which lowercases the path in some platforms, while `SourceFile.fileName` is always case-insensitive. This yields a path outside of the project which we were ignoring.

This change passes the `SourceFile.fileName` before passing it through `path.relative` to ensure that we get a valid result.

PR Close #58150
2024-10-11 07:03:15 +00:00
Kristiyan Kostadinov 852c042520 refactor(compiler-cli): output HMR initializer code (#58150)
Adds the logic to the compiler that will output the HMR initializer code for each component, if enabled.

PR Close #58150
2024-10-11 07:03:15 +00:00
Kristiyan Kostadinov 6f7803a3ff refactor(compiler): add logic to generate the HMR initializer (#58150)
Adds the logic that will generate the `import` expression that will initializer HMR for a specific component.

PR Close #58150
2024-10-11 07:03:15 +00:00
vladboisa 08b4a8af6e docs: move JSDoc below constructor (#57187)
Move the JSDoc above transform signature for correct view

Fixes #56349

refactor: format file

PR Close #57187
2024-10-10 12:37:35 +00:00
Steven Tucker a89fd30690 docs: Updated event-listeners.md doc to use correct term, even -> every (#57964)
event time -> every time

PR Close #57964
2024-10-10 12:36:41 +00:00
arturovt da6970d2cb refactor(docs-infra): allow table of contents to be GCed (#58034)
This commit updates the table of contents functionality to clean up correctly whenever the user
navigates to other pages and nodes are removed from the DOM.

Currently, calling `renderComponent` with the `TableOfContents` keeps creating a new table of contents
component without removing the previous one, as they are created manually.

This leads to memory leaks because the components cannot be collected properly, even if the user
navigates to the home page where there is no TOC component.

PR Close #58034
2024-10-10 12:33:51 +00:00
Matthieu Riegler 57134dd344 refactor(core): drop the Mutable utility type. (#58124)
The complexity of this type isn't necessary, `Writable` is well suited where it was used.

PR Close #58124
2024-10-10 10:47:50 +00:00
reosablo 410ed699a2 docs(core): fix description about signal value equality (#56472)
PR Close #56472
2024-10-10 10:24:32 +00:00
Jaime González Fábregas b27045a124 docs(docs-infra): substitute string interpolation on json data with actual value (#57626)
substitute "${this.baseUrl}" with "https://angular.dev/assets/images/tutorials/common" in the photo url on the json data provided on the hands on tutorial in the webpage "https://angular.dev/tutorials/first-app/14-http". The previous json content caused the images to fail loading.

PR Close #57626
2024-10-10 10:22:34 +00:00
Paul Gschwendtner 6530c5ecb0 release: cut the v19.0.0-next.9 release 2024-10-10 12:16:51 +02:00
Paul Gschwendtner dff03d2029 docs: release notes for the v18.2.8 release 2024-10-10 12:06:32 +02:00
Georgy Serga 46a6324c82 fix(compiler): scope :host-context inside pseudo selectors, do not decrease specificity (#57796)
parse constructions like `:where(:host-context(.foo))` correctly
revert logic which lead to decreased specificity if `:where` was applied
to another selector, for example `div` is transformed to `div[contenta]`
with specificity of (0,1,1) so `div:where(.foo)` should not decrease it
leading to `div[contenta]:where(.foo)` with the same specificity (0,1,1)
instead of `div:where(.foo[contenta])` with specificity equal to (0,0,1)

PR Close #57796
2024-10-10 08:13:22 +00:00
Georgy Serga 69529d8873 fix(compiler): fix parsing of the :host-context with pseudo selectors (#57796)
fix regexp which is used to test for host inside pseudo selectors

PR Close #57796
2024-10-10 08:13:22 +00:00
Georgy Serga 2374b87b64 fix(compiler): preserve attributes attached to :host selector (#57796)
keep attributes used to scope :host selectors

PR Close #57796
2024-10-10 08:13:22 +00:00
Georgy Serga e8d1944999 fix(compiler): add multiple :host and nested selectors support (#57796)
add support for nested and deeply nested (up to three levels) selectors,
parse multiple :host selectors, scope selectors within pseudo functions

PR Close #57796
2024-10-10 08:13:22 +00:00
Georgy Serga 292ea4714f fix(compiler): fix comment typo (#57796)
fix spelling in the comment

PR Close #57796
2024-10-10 08:13:22 +00:00
Georgy Serga 82144b6d63 fix(compiler): allow combinators inside pseudo selectors (#57796)
allow css combinators within pseudo selector functions, parsing those
correctly. Similarly to previous version, don't break selectors
into part if combinators are within parenthesis, for example
`:where(.one > .two)`

PR Close #57796
2024-10-10 08:13:22 +00:00
Georgy Serga bc5f1175e9 fix(compiler): transform pseudo selectors correctly for the encapsulated view (#57796)
fix scoping and transforming logic of the `shimCssText` for the
components with encapsulated view:
- add support for pseudo selector functions
- apply content scoping for inner selectors of `:is()` and `:where()`
- allow multiple comma separated selectors inside pseudo selectors

Fixes #45686

PR Close #57796
2024-10-10 08:13:21 +00:00
Paul Gschwendtner 471afd20e8 refactor(migrations): detect ternary narrowing in input and query migrations (#58136)
We should skip inputs/queries that are part of ternary narrowing
expressions. Those would break builds and we can quickly avoid this in
the safe mode as detection is rather easy with the existing analysis
data we have.

PR Close #58136
2024-10-10 08:12:22 +00:00
Youssef El Houti 1479af978c feat(service-worker): finish implementation of refreshAhead feature (#53356)
Copy and document the refreshAhead option that allows to refresh cache entries before they expire.
This allows to mark cached entries as stale while still retruning them until maxAge in case of service outage.

Closes #46729

PR Close #53356
2024-10-10 06:21:57 +00:00
Julien Saguet 95bee15362 refactor(service-worker): remove backward compatibility code (#51246)
Remove backward compatibility code from service worker package.

Fixes #43403

PR Close #51246
2024-10-09 16:24:36 +00:00
Paul Gschwendtner 66cca86489 refactor(migrations): allow reuse of input incompatibility categorization in query migration (#58139)
This commit moves the incompatibility categorization into a more common
place, and renames it from Input incompatibilities to "field
incompatibilities". This construct can then be used in the queries
migration as well to give insight into why certain fields weren't
migrated.

PR Close #58139
2024-10-09 16:23:33 +00:00
Paul Gschwendtner 2d1131491a refactor(migrations): improve statistic tracking of signal input migration (#58137)
We should skip tracking information for inputs outside migration scope.

PR Close #58137
2024-10-09 15:23:33 +00:00
Paul Gschwendtner c1aa411cf1 fix(migrations): properly resolve tsconfig paths on windows (#58137)
The Angular CLI devkit and Tsurge, as well as TypeScript only deal with
Posix paths. We also normalize paths into posix paths, and try to
implement a devkit compatible virtual file system for the compiler-cli.

This commit fixes an issue where we accidentally resolved `/` to the
system root on Windows. e.g. `C:/`. This broke the posix and devkit
paths throughout tsconfig parsing.

This commit fixes this.

Fixes #58132.

PR Close #58137
2024-10-09 15:23:33 +00:00
cexbrayat e00775a0c9 docs: mention autoDetectChanges parameter default value (#58092)
It was unclear whether the parameter was necessary, as its default value was not mentioned in the jdsoc.

PR Close #58092
2024-10-09 13:50:31 +00:00
Krzysztof Platis 9e82559de4 fix(platform-server): destroy PlatformRef when error happens during the bootstrap() phase (#58112)
The `bootstrap()` phase might fail e.g. due to an rejected promise in some `APP_INIIALIZER`.
If `PlatformRef` is not destroyed, then the main app's injector is not destroyed and therefore `ngOnDestroy` hooks of singleton services is not called on the end (failure) of SSR.

This could lead to possible memory leaks in custom SSR apps, if their singleton services' `ngOnDestroy` hooks contained an important teardown logic (e.g. unsubscribing from RxJS observable).

Note: I needed to fix by the way another thing too: now we destroy `moduleRef` when `platformInjector` is destroyed - by setting a `PLATFORM_DESTROY_LISTENER`

fixes #58111

PR Close #58112
2024-10-09 12:12:34 +00:00
Paul Gschwendtner 22132639e2 refactor(migrations): fix unique name generation not marking generated identifiers (#58126)
The unique name generator did not properly work to avoid collisions with
previously generated unique names. This commit fixes this and also
improves type safety of the logic.

PR Close #58126
2024-10-09 08:57:57 +00:00
Angular Robot 306443dc7c build: update actions/cache digest to 3624ceb (#58125)
See associated pull request for more information.

PR Close #58125
2024-10-08 13:27:58 -07:00
Kristiyan Kostadinov 67db4305c2 fix(core): clean up afterRender after it is executed (#58119)
We stop tracking `afterRender` hooks as soon as they execute, but their on destroy callbacks stay registered until either the injector is destroyed or the user calls `destroy` manually. This was leading to memory leaks in the `@defer` triggers based on top of `afterRender` when placed inside long-lived views, because the callback would execute, but its destroy logic was waiting for the view to be destroyed.

These changes resolve the issue by destroying the `AfterRenderRef` once it is executed.

PR Close #58119
2024-10-08 13:27:06 -07:00
Matthieu Riegler 66c39804db refactor(core): drop ViewRefTracker in favor of ApplicationRef. (#58096)
We can leverage an `import type` to prevent the circular import.

PR Close #58096
2024-10-08 13:25:23 -07:00
Sumit Arora f5cd8f7ab4 refactor(core): adding publish global utils function (#58086)
Angular DevTools uses globally available functions to provide debugging information to the framework. This commit adds a new function to the framework that will allow Angular DevTools to publish these functions to the global namespace.

Follow up PRs that will use this arg will:
- Add a new function in the router package to publish `getLoadedRoutes` function to the global namespace
- Implement the router graph in the Angular DevTools to view the routes that are loaded in the application

PR Close #58086
2024-10-08 13:24:46 -07:00
P4 97fb86d331 perf(core): set encapsulation to None for empty component styles (#57130)
Make it so that encapsulation for empty styles, styles containing only whitespace and comments, etc.
is handled the same way as with no styles at all.

Components without styles already have view encapsulation set to `None`
to avoid generating unnecessary attributes for style scoping, like `_ngcontent-ng-c1` (#27175)

If the component has an empty external styles file instead, the compiler would generate
a component definition without the `styles` field, but still using the default encapsulation.
This can result in runtime overhead if the developer forgets to delete the empty styles file
generated automatically for new components by Angular CLI.

Closes #16602

PR Close #57130
2024-10-08 09:30:01 -07:00
Sheik Althaf 1e50374d75 fix(devtools): avoid duplicate dependencies in injected services (#57564)
with latest signal apis there are duplicates dependencies are shown in injected services, this PR filters the depdencies by token and value

PR Close #57564
2024-10-08 09:29:18 -07:00
ColinJolivet 5e0029237c refactor(docs-infra): add tooltip to the download button in playground (#58065)
Add a material tooltip to the download button in the playground in order to clarify what this button does

PR Close #58065
2024-10-08 09:28:37 -07:00
Lang 749649a2a7 docs: complete the example in use InjectionToken section (#57839)
PR Close #57839
2024-10-08 09:27:22 -07:00
Dylan Hunn 09f589f000 fix(compiler): this.a should always refer to class property a (#55183)
Consider a template with a context variable `a`:
```
<ng-template let-a>{{this.a}}</ng-template>
```

t push -fAn interpolation inside that template to `this.a` should intuitively read the class variable `a`. However, today, it refers to the context variable `a`, both in the TCB and the generated code.

In this commit, the above interpolation now refers to the class field `a`.

BREAKING CHANGE: `this.foo` property reads no longer refer to template context variables. If you intended to read the template variable, do not use `this.`.
Fixes #55115

PR Close #55183
2024-10-08 16:02:18 +00:00
Paul Gschwendtner bc83fc1e2e feat(language-service): support converting to signal queries in VSCode extension (#58106)
This commit adds support for converting decorator queries to signal queries
via the VSCode extension.

Note that this is not fully finished as we still need to add better
messaging when certain fields could not be migrated.

In addition, it's worth noting that the migration is not as safe as the
input migration because commonly query lists are passed around— this
quickly can break the build— but is an acceptable trade-off for the work
saved. A migration cannot be 100% correct in general; there are always
edge-cases.

PR Close #58106
2024-10-08 06:19:37 +00:00
Paul Gschwendtner 37483926ea refactor(migrations): speed up reference resolution in templates (#58106)
Instead of inspecting all types of property accesses, we can use a
similar optimization we did for TS references— leveraging the list of
known field names to minimize type checker calls.

PR Close #58106
2024-10-08 06:19:37 +00:00
Paul Gschwendtner 03af45540c refactor(compiler-cli): support specifying OptimizeFor when retrieving TCB information (#58106)
Whenever information is requested from the template checker right now,
the shim is only ensured to be generated for the single file/component.
This is slow in migrations where we don't want to collect diagnostics,
but rather request information from the component state.

This commit supports `OptimizeFor` in `checker#getTemplate`.

PR Close #58106
2024-10-08 06:19:37 +00:00
Paul Gschwendtner 754a857f8c refactor(migrations): support extra return info for TsurgeMigration#migrate (#58106)
This allows us to return extra properties along with `#migrate`
replacements. Useful for language service integration or other
integrations of Tsurge migrations in special runners.

PR Close #58106
2024-10-08 06:19:37 +00:00
Angular Robot c77e0b2afb build: update scorecard action dependencies (#58116)
See associated pull request for more information.

PR Close #58116
2024-10-08 06:18:16 +00:00
Angular Robot a762425e31 build: update actions/cache digest to 2cdf405 (#58107)
See associated pull request for more information.

PR Close #58107
2024-10-08 06:17:36 +00:00
Joey Perrott 5c63fc4468 ci: update renovate configuration to automatically run generated file updates (#58109)
Automatically update generated files when changes are made in renovate

PR Close #58109
2024-10-07 13:27:52 -07:00
Angular Robot ce95449fe0 build: update actions/checkout digest to eef6144 (#58108)
See associated pull request for more information.

PR Close #58108
2024-10-07 13:26:52 -07:00
Angular Robot cbf7995d9d build: update dependency @inquirer/prompts to v7 (#58099)
See associated pull request for more information.

PR Close #58099
2024-10-07 13:26:01 -07:00
AleksanderBodurri 837af44510 refactor(core): introduce debugName optional arg to ReactiveNode (#57710)
This commit contains the changes to core/primitives that used to be in https://github.com/angular/angular/pull/57073.

PR Close #57710
2024-10-07 09:25:28 -07:00
arturovt 69763491c3 fix(zone.js): remove abort listener once fetch is settled (#57882)
This commit updates the `fetch` patch for zone.js. Currently, we're attaching an
`abort` event listener on the signal (when it's provided) and never removing it.
We should be good citizens and remove event listeners whenever objects need to be
properly collected. In Firefox, when saving a heap snapshot and running it through
`fxsnapshot`, querying `AbortSignal` will print a so-called "CaptureMap" with a list
of "lambdas," indicating that the signal is not garbage collected because of the event
listener lambda function.

PR Close #57882
2024-10-07 08:27:53 -07:00
Kristiyan Kostadinov 8d8c03abc4 fix(compiler-cli): defer symbols only used in types (#58104)
Currently we don't defer any symbols that have references outside of the `import` statement and the `imports` array. This is a bit too aggressive, because it's possible that the symbol is only used for types (e.g. `viewChild<SomeCmp>('ref')`) which will be stripped when emitting to JS.

These changes expand the logic so that references inside type nodes aren't considered.

**Note:** one special case is when the symbol used in constructor-based DI (e.g. `constructor(someCmp: SomeCmp)`, because these constructors will be compiled to `directiveInject` calls. We don't need to worry about them, because the compiler introduces an addition `import * as i1 from './some-cmp';` import that it uses to refer to the symbol.

Fixes #55991.

PR Close #58104
2024-10-07 08:26:07 -07:00
Alan Agius 5c61f46409 refactor(platform-browser): remove deprecated BrowserModule.withServerTransition method (#58062)
BREAKING CHANGE: The deprecated `BrowserModule.withServerTransition` method has been removed. Please use the `APP_ID` DI token to set the application id instead.

PR Close #58062
2024-10-07 08:23:53 -07:00
Luan Gong 109366e2fc docs: use correct heading in templates guide (#58101)
PR Close #58101
2024-10-07 08:22:45 -07:00
Matthieu Riegler 186b52449a docs: add info on AbstractControl.source type. (#58094)
The source can be of any type and can't be inferred from `T`

fixes #58076

PR Close #58094
2024-10-07 08:21:55 -07:00
Daniel Jancar 656b5d3e78 fix(core): Re-assign error codes to be within core bounds (<1000) (#53455)
`RUNTIME_DEPS_INVALID_IMPORTED_TYPE` is now 980
`RUNTIME_DEPS_ORPHAN_COMPONENT` is now 981

PR Close #53455
2024-10-07 08:21:13 -07:00
Charles Lyding d9dc41a18c test(compiler-cli): add compliance tests for external runtime styles (#57613)
To ensure that the external runtime style component feature is correctly
emitted by the Angular compiler, compliance tests have been added for
file-based component styles. Additionally, the partial golden generator
has been updated to work with file-based component styles.

PR Close #57613
2024-10-07 08:20:22 -07:00
Charles Lyding da250b2819 refactor(compiler-cli): add inline stylesheet external runtime style transformation support (#57613)
To provide support for HMR of inline component styles (`styles` decorator field), the AOT
compiler will now use the resource host transformation API with the Angular CLI to provide
external runtime stylesheet URLs when the `externalRuntimeStyles` compiler option is enabled.
This allows both a component's file-based and inline styles to be available for HMR when used
with a compatible development server such as with the Angular CLI. No behavioral change is
present if the `externalRuntimeStyles` option is not enabled or the resource host transformation
API is not used.
An `order` numeric field is also added to the transformation API which allows consumers such as
the Angular CLI to create identifiers for each inline style in a specific containing file.

PR Close #57613
2024-10-07 08:20:22 -07:00
Charles Lyding c69371151a refactor(compiler): support external runtime component styles for file-based stylesheets (#57613)
The AOT compiler now has the capability to handle component stylesheet files as
external runtime files. External runtime files are stylesheets that are not embedded
within the component code at build time. Instead a URL path is emitted within a component's
metadata. When combined with separate updates to the shared style host and DOM renderer,
this will allow these stylesheet files to be fetched and processed by a development
server on-demand. This behavior is controlled by an internal compiler option `externalRuntimeStyles`.
The Angular CLI development server will also be updated to provide the serving functionality
once this capability is enabled. This capability enables upcoming features such as automatic
component style hot module replacement (HMR) and development server deferred stylesheet processing.
The current implementation does not affect the behavior of inline styles. Only the
behavior of stylesheet files referenced via component properties `styleUrl`/`styleUrls`
and relative template `link` elements are changed by enabling the internal option.

PR Close #57613
2024-10-07 08:20:22 -07:00
vladboisa a36744e4bb docs: move JSDoc before functions (#58087)
Move the JSDoc before functions for correct view of params

PR Close #58087
2024-10-04 14:47:53 -07:00
Matthieu Riegler bb0edaded0 docs(docs-infra): Add NgModule exports for directives. (#58071)
This information is extracted from the @NgModule Jsdoc tag.

fixes #57906

PR Close #58071
2024-10-04 14:46:16 -07:00
Adrien Crivelli 0eb1c5c021 docs(common): Minor typo in code example (#58085)
PR Close #58085
2024-10-04 14:38:40 -07:00
JoostK 06600d2ebd refactor: change security issue redirect to angular.dev (#58070)
Ensure the security issue template points to the correct location.

PR Close #58070
2024-10-04 10:57:42 -07:00
Stanka Kopalova 4986e13748 docs: add better title name (#58060)
PR Close #58060
2024-10-04 10:57:07 -07:00
Stanka Kopalova 4cf9e4a824 docs: fix wrong title of section (#58060)
PR Close #58060
2024-10-04 10:57:07 -07:00
Angular Robot a2bdd6ae45 refactor(compiler): update dependency chokidar to v4 (#57945)
This commit bump chokidar to the latest major and adjusts to the breaking changes.

PR Close #57945
2024-10-04 10:56:02 -07:00
arturovt 8ce190b1b7 docs(zone.js): update docs to enable beforeunload (#57881)
In this commit, we update the documentation to reflect the property that allows
enabling the default browser `beforeunload` handling, which was added in a
previous commit.

Additionally, some cosmetic grammar changes have been made in this documentation,
as the previous text had some issues.

Closes #52256

PR Close #57881
2024-10-04 10:55:00 -07:00
Matthieu Riegler 84b6896956 refactor(platform-server): Add an ssr benchmark setup. (#57647)
In order to investigate the performances of SSR, this commit introduces a benchmark suite which will measure several step of the rendering.

PR Close #57647
2024-10-04 10:45:22 -07:00
Matthieu Riegler 58bfb4aee9 build: update ts target to ES2022 and module to ES2022 (#58022)
Our integration tests are based on the CLI. CLI build force the target to ES2022 else it logs a warning

PR Close #58022
2024-10-04 13:33:48 +00:00
Matthieu Riegler 157a84f461 docs: mark afterRenderEffect as experimental. (#58048)
On overloaded funtions, the jsdoc tag must be on the implementation.

PR Close #58048
2024-10-04 13:33:10 +00:00
Jeevan Mahesha 72fd222587 docs: add documentation for lazy loading a standalone component (#57620)
Added a new section in the documentation explaining how to lazy load a standalone component using `loadComponent`. This includes a code example demonstrating the setup in Angular routes.

PR Close #57620
2024-10-04 13:31:52 +00:00
Angular Robot 9a67e1258b build: update all non-major dependencies (#58023)
See associated pull request for more information.

PR Close #58023
2024-10-04 13:30:43 +00:00
Matthieu Riegler ab91f0371b refactor(compiler-cli): exclude private computed properties from class member extractions (#57596)
This will exclude properties like `[ɵWRITABLE_SIGNAL]` from the `WritableSignal` interface.

PR Close #57596
2024-10-04 13:29:51 +00:00
Alan Agius c15ec36bd1 refactor(core): remove deprecated factories Property in KeyValueDiffers (#58064)
BREAKING CHANGE: The deprecated `factories` property in `KeyValueDiffers` has been removed.

PR Close #58064
2024-10-04 13:28:49 +00:00
Matthieu Riegler afa1e9aac8 ci: disable updates for @bazel (#58050)
This is to prevent the bot to update #51047

PR Close #58050
2024-10-04 13:28:16 +00:00
Matthieu Riegler 74a2a449bd refactor(devtools): remove unused imports. (#58057)
Thanks to the new extended diagnostic.

PR Close #58057
2024-10-04 13:27:34 +00:00
cexbrayat ee426c62f0 fix(core): allow signal write error (#57973)
Now that effects allow to write to signals (see https://github.com/angular/angular/commit/4e890cc5ac6eaa04a6f7ca988908812a65991c14),
the SIGNAL_WRITE_FROM_ILLEGAL_CONTEXT error is only thrown in `computed` functions.
This commit updates the error message to remove the mention of effects and of the deprecated `allowSignalWrites` option.

PR Close #57973
2024-10-04 13:27:00 +00:00
Paul Gschwendtner 9213216d42 refactor(migrations): do not accidentally detect read as incompatible write (#58054)
Fixes that the signal input and queries migration detects code like
`fixture = bla.componentInstance.field` as an incompatible write because
it's part of a binary expression, but we didn't check whether it's part
of the left side.

PR Close #58054
2024-10-03 16:45:11 +00:00
Alan Agius 9c3bd1b5d1 refactor(localize): remove deprecated name option. (#58063)
BREAKING CHANGE: The `name` option in the `ng add @localize` schematic has been removed in favor of the `project` option.

PR Close #58063
2024-10-03 16:43:36 +00:00
vladboisa 681e1ec3be fix(docs-infra): fix calculation of height editor (#54128)
Apply the min() function for set the smallest height

fix(docs-infra): move height into editor-wrapper

Move the calculation rule of height edit into editor-wrapper selector

fix(docs-infra): change has selector

Change the has selector

fix(docs-infra): change selector's for child

Changing the selector for test this solution

Fix

PR Close #54128
2024-10-03 16:43:02 +00:00
vladboisa c8af06250d feat(docs-infra): add transition on editor wrapper (#54128)
Add the smooth animation when height of the container is changing

PR Close #54128
2024-10-03 16:43:02 +00:00
vladboisa 68441039c6 fix(docs-infra): max-height IDE error panel visibility (#54128)
Remove max-height: 200px in ul child inline-errors-box, add the overflow & max-height in percentages to the parent for correct visualization

Fixes #52760

refactor(docs-infra): correct typo
Correct typo in comment

feat(docs-infra): modify the height of the editor
If error box are displayed, modify the height of the editor

PR Close #54128
2024-10-03 16:43:02 +00:00
Andrew Seguin 1d18b07588 docs: reword when to use model inputs (#57648)
PR Close #57648
2024-10-03 16:42:18 +00:00
arturovt 5cbe02acb6 refactor(docs-infra): cleanup AfterRenderSequence for reference list (#58030)
In this commit, we're replacing the provided injector in `afterNextRender` with a node injector
because it was previously mistakenly passing an `EnvironmentInjector`. The `EnvironmentInjector`
resolves `DestroyRef` to itself, meaning that `AfterRenderSequence` is essentially never destroyed
(since the environment injector is not destroyed either).

PR Close #58030
2024-10-02 18:01:31 +00:00
Jeevan Mahesha 9e32cc4a20 docs: update comments to use consistent code formatting for boolean values (#57619)
PR Close #57619
2024-10-02 18:00:51 +00:00
Paul Gschwendtner 326cca2cba refactor(migrations): eagerly migrate Partial<T> references in google3 (#58049)
Instead of only migrating `Partial<T>` references to unwrap signal
inputs when all members are migrated, we should do this, even if just a
subset of inputs of the class are migrated.

This is something we saw required manual fixups in google3— so this
commit fixes this.

PR Close #58049
2024-10-02 15:10:26 +00:00
Paul Gschwendtner d48aac8d44 release: cut the v19.0.0-next.8 release 2024-10-02 15:24:15 +02:00
Paul Gschwendtner 4461a585e5 docs: release notes for the v18.2.7 release 2024-10-02 14:36:11 +02:00
arturovt b7bd429951 fix(common): prevent warning about oversize image twice (#58021)
I’ve noticed that there was a loop inside a loop. Since we’re already iterating through
`images` using `forEach`, it was running a `for` loop through `images` again. This was
probably a mistake made when the functionality was initially added. The test actually
verified that `logs.length` is `1`, but in the real environment, it logs twice
(which is quite obvious due to the code).

I’ve also added the missing file to the Bazel target.

PR Close #58021
2024-10-02 11:46:17 +00:00
Andrew Kushnir 222544491b refactor(core): avoid hydration warnings when RenderMode.Client is set (#58004)
With the newly-added `RenderMode` config for routes, some of the routes may have the `RenderMode.Client` mode enabled, while also having `provideClientHydration()` function in provider list at bootstrap. As a result, there was a false-positive warning in a console, notifying developers about hydration misconfiguration.

This commit adds extra logic to handle this situation and avoid such warnings.

Note: there is a change required on the CLI side to add an extra marker, which would activate the logic added in this commit.

PR Close #58004
2024-10-02 11:45:28 +00:00
Suat Oğulcan Özcan a31721a5c7 docs: remove whitespace (#58042)
PR Close #58042
2024-10-02 11:26:27 +00:00
Paul Gschwendtner b6bc93803c feat(migrations): add schematic to migrate to signal queries (#58032)
This commit adds an automated `ng generate` schematic/migration for
converting decorator queries to signal queries, as good as possible.

PR Close #58032
2024-10-02 11:25:39 +00:00
Paul Gschwendtner c8c35d2c69 refactor(migrations): print stats of signal input migration (#58035)
Print some stats for the signal input migration.

PR Close #58035
2024-10-02 11:23:35 +00:00
Paul Gschwendtner 00a79d0ee2 refactor(migrations): properly migrate inputs marked as optional via question mark (#58031)
Currently if inputs are marked as optional via the question mark syntax,
we add `undefined` only if there is an explicit type. This is wrong as
we should do the same if there is just an initializer.

This commit fixes this.

PR Close #58031
2024-10-01 16:34:54 +00:00
Matthieu Riegler fb321966aa build: Add LICENSE file to the generated packages (#58033)
This commit adds a parameter to `ng_package` to specify a license file that will be bundled with the generated packages.

fixes #58029

PR Close #58033
2024-10-01 16:34:27 +00:00
Sam Verschueren d60bb51bad docs: use proper workdir for tutorial and playground (#56063)
PR Close #56063
2024-10-01 16:09:54 +00:00
arturovt 3b35c4e8f3 fix(docs-infra): allow tutorial component to be GCed (#58028)
This commit updates the tutorial component's functionality to unsubscribe from the route
data observable and stop monitoring the resizer element when the component is destroyed.
This is necessary because `monitor` adds event listeners that prevent the element and
component from being garbage collected.

PR Close #58028
2024-10-01 13:51:06 +00:00
jnizet 057cf7fb6b fix(http): preserve all headers from Headers object (#57802)
when initialized from a `Headers` object containing multiple values for the same header, `HttpHeaders` now contains all the header values instead of only having one of them.

Fixes #57798

PR Close #57802
2024-10-01 13:48:35 +00:00
Paul Gschwendtner 9ce839fc7d test(migrations): add test for statistic collection tsurge (#58019)
Adds a test for statistic testing of Tsurge

PR Close #58019
2024-10-01 11:29:00 +00:00
Paul Gschwendtner 273444ab9a refactor(migrations): support getting statistics in tsurge testing (#58019)
This allows us to test statistics in future commits.

PR Close #58019
2024-10-01 11:28:59 +00:00
Paul Gschwendtner 6b57fcd4ee refactor(migrations): track statistics of signal input migration (#58019)
Track statistics of signal input migration. This allows us to see
progress the migration made.

PR Close #58019
2024-10-01 11:28:59 +00:00
Paul Gschwendtner 9f08ff2baf refactor(migrations): support statistic tracking in tsurge migrations (#58019)
We should support tracking statistics in Tsurge migrations. This allows
us to print them after migration, or run migrations periodically as
large scale changes to track to progress.

TODO is an internal implementation that eventually runs periodcally
in LSC modes.

PR Close #58019
2024-10-01 11:28:59 +00:00
ilir.beqiri e77a163474 docs: update the name of the sub-navigation item at error encyclopedia menu (#57997)
PR Close #57997
2024-10-01 08:32:08 +00:00
Andrew Scott ed57c5c9c8 docs: export ComponentInputBindingFeature which is part of the public API (#57962)
this fixes a missing export of ComponentInputBindingFeature

PR Close #57962
2024-10-01 08:30:03 +00:00
Angular Robot 78bc349638 build: update scorecard action dependencies (#58024)
See associated pull request for more information.

PR Close #58024
2024-10-01 08:25:10 +00:00
Andrew Scott 2ece9dff75 docs(router): Document missing input for route binding (#57697)
This commit clearly documents the approach used by router input binding
when an input is not present in the route data.

resolves #52946

PR Close #57697
2024-10-01 08:09:32 +00:00
arturovt 22dafa658b fix(http): cleanup JSONP script listeners once loading completed (#57877)
This commit removes event listeners from the `script` element once loading is
complete. If the element is not garbage collected properly, in Firefox, the script
element still appears in the memory tree view, captured by
`__zone_symbol__loadfalse -> HTMLScriptElement -> GC Roots`. We should always be good
citizens and clean up event listeners when we no longer need them, as browser's garbage
collectors work differently. Calling `remove()` on the node doesn't guarantee that the
node can be collected.

PR Close #57877
2024-10-01 08:08:40 +00:00
Thanh Truong 7bfe62a23e docs: add deferrable views tutorial (#57934)
Add a new tutorial "Deferrable Views" to the tutorials page.

PR Close #57934
2024-10-01 07:07:20 +00:00
Andres Olivares bb46b6b051 refactor(devtools): Use chrome.devtools.performance types (#58015)
The chrome.devtools.performance types were added to the DefinitelyTyped
module and as such we don't need to make use of any to circumvent
the missing types.

See: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/70231

PR Close #58015
2024-10-01 07:04:54 +00:00
Matthieu Riegler f2bea3b73d refactor(platform-server): remove HttpClientModule import (#58016)
This import is not necessary anymore.

fixes #57983

PR Close #58016
2024-09-30 13:41:48 -07:00
Kristiyan Kostadinov ef577b2d2b fix(migrations): delete constructor if it only has super call (#58013)
Adds some logic to the `inject` migration that will remove constructors that are made up of only a `super` call after the migration.

PR Close #58013
2024-09-30 13:39:43 -07:00
Santosh Yadav 81a5c5d7c7 docs: correct line number for localize example (#57999)
PR Close #57999
2024-09-30 13:39:01 -07:00
Angular Robot e19510019c build: update io_bazel_rules_sass digest to 7bceee9 (#57998)
See associated pull request for more information.

PR Close #57998
2024-09-30 13:36:36 -07:00
Andrew Scott bb06d3eecd ci: add atscott to unavailable list (#57995)
I will not be available to review PRs for a while

PR Close #57995
2024-09-30 13:34:24 -07:00
Paul Gschwendtner cfa60cbdde refactor(migrations): migrate QueryList first and last accesses (#57992)
Instead of leaving incorrect `.first` and `.last` accesses for migrated
queries, we can migrate them to an equivalent using `at()`.

Notably, we need to use an non-null assertion to be on the safe side,
given that the current `first` and `last` types are not typed to include
a potential `undefined`.

We may add a TODO in the future.

PR Close #57992
2024-09-30 13:33:45 -07:00
Paul Gschwendtner 806db68556 refactor(migrations): skip query migration if problematic QueryList usages are discovered (#57992)
If we see a reference to e.g. `QueryList#changes`, we should skip
migration to be on the safe side. Similar for other fields of query
lists.

PR Close #57992
2024-09-30 13:33:45 -07:00
Aristeidis Bampakos 242a3c2a8f docs(docs-infra): use angular.dev in the pull request template (#57990)
PR Close #57990
2024-09-30 13:32:59 -07:00
Aristeidis Bampakos 842b5e9546 docs(docs-infra): link issue template in the new docs (#57989)
PR Close #57989
2024-09-30 13:32:20 -07:00
Kristiyan Kostadinov 682da6f59f refactor(core): fix typo in function name (#57988)
Fixes a typo in the `replaceMetadata` function name.

PR Close #57988
2024-09-30 13:31:24 -07:00
Andrew Kushnir 5c967f37b1 ci: make PullApprove config up-to-date (#57985)
This commit updates PullApprove config:

- Removes Dylan
- Adds Alex to the `fw-forms` group
- Adds Charles to the `fw-language-service` group

PR Close #57985
2024-09-30 13:30:42 -07:00
Angular Robot 68686768f9 docs: update Angular CLI help [main] (#57984)
Updated Angular CLI help contents.

PR Close #57984
2024-09-30 13:29:51 -07:00
Paul Gschwendtner 5c4305f024 feat(language-service): support migrating full classes to signal inputs in VSCode (#57975)
This commit expands the VScode integration of the signal input migration
to allow migration of full classes and all their inputs. This enables a
faster workflow than just migrating every member individually.

In addition, we now properly support migrating classes that are
unexported and no actual metadata is available in `ngtsc` (but this is
fine for the migration).

PR Close #57975
2024-09-30 13:29:21 -07:00
arturovt e8b2d5fad8 fix(common): skip checking whether SVGs are oversized (#57966)
Prior to this commit, the `ImagePerformanceWarning` class was checking all `img`
elements in the DOM to determine whether they were oversized after the DOM loading
was complete. We should not check SVGs because they are vector-based and can scale
infinitely without losing quality.

Closes #57941

PR Close #57966
2024-09-30 13:28:45 -07:00
Kristiyan Kostadinov 33fe252c58 fix(compiler-cli): do not report unused declarations coming from an imported array (#57940)
Some apps follow a pattern where they have an array of common declarations which is imported in most standalone components, but only some of the declarations are used. Such cases will currently raise the unused imports diagnostic but can be hard to fix, because it would require either removing declarations from the common array which can break other components, or copying only the necessary declarations from the array. Since neither of these solutions is great, this commit tweaks the logic for the diagnostic so that unused imports coming from _exported_ arrays are not reported (either from the same file or another one).

PR Close #57940
2024-09-30 13:27:29 -07:00
Charles Lyding 2545743ad1 refactor(core): support external runtime styles via a component feature (#57922)
The shared style host now has the capability to add component styles as
link elements with external style references. This is currently unused
within the runtime but is an enabling feature for upcoming features such
as automatic component style HMR and development server deferred
stylesheet processing. Instead of inline style content that is then
added to a `style` element for each host node, a `link` element with a
stylesheet `rel` attribute and a `href` attribute can now be created.
The development server must be configured to provide the relevant
component stylesheet upon request. The Angular CLI development server
will provide this functionality once this capability is enabled.
Since the primary use of this capability is development mode and will
not be used for production code, server (SSR) style reuse is currently
not yet implemented but may be implemented in the future.

A component feature is used to provide the DOM renderer access to any
external styles that were emitted at compile time. When external styles
are present, the `getExternalStyles` function will be present on the
runtime component metadata object. The DOM render will use this function
to access and encapsulate the external style URLs as required by the
component.

PR Close #57922
2024-09-30 13:25:12 -07:00
mgechev 7d1998fa73 docs: set expiry date to the developer survey (#57981)
Close the developer survey on September 27, 2024

PR Close #57981
2024-09-30 12:51:27 -07:00
mgechev bb747f144a docs: add expiry to the top banner (#57981)
Adding an expiry date to the banner similarly to
aio so we can automatically hide it when we reach
a certain date.

PR Close #57981
2024-09-30 12:51:27 -07:00
Andrew Kushnir fbd5579a68 ci: update integration test payload size (#57986)
This commit updates a golden file with payload sizes for integration apps. One of the sizes got dropped below the threshold (but not significantly), most likely due to changes merged earlier (dependency updates, CLI changes, etc).

PR Close #57986
2024-09-27 07:49:38 +00:00
Joey Perrott 0aae371649 build: update @angular/build-tooling to latest version (#57979)
Update @angular/build-tooling to the latest version

PR Close #57979
2024-09-26 14:30:15 -07:00
Alan Agius 8f73199e9f fix(docs-infra): update getAnswerFiles to ensure compatibility with non-POSIX file systems (#57970)
This update modifies the `getAnswerFiles` function to support file systems that do not adhere to POSIX standards.

Prior to this change this method will always fail with the below:

```
Error: Invalid state: could not find start of answers path
```

PR Close #57970
2024-09-26 14:29:44 -07:00
Paul Gschwendtner ff028b8e06 refactor(migrations): fix batch test of signal input migration failing (#57961)
The batch test was failing (it doesn't run on CI for resource reasons)
because incompatibilities were not properly "incorporated" in batch
execution mode (due to enum values of 0 being incorrectly checked via
truthy).

This is only visible in batch scenarios in two cases:

 - when a class was manually instantiated, between targets
 - when a class was overridden by a derived class, between targets

PR Close #57961
2024-09-26 14:29:04 -07:00
Paul Gschwendtner 2fe393ac60 refactor(migrations): improve tsurge diff helper to simplify output (#57961)
Instead of printing the full diff, which may be a super large file or
golden, we only print context around lines with diff. This makes the
diffs much more actionable and readable.

PR Close #57961
2024-09-26 14:29:03 -07:00
Kristiyan Kostadinov c44f087482 refactor(core): add initial implementation of function to replace metadata at runtime (#57953)
Adds the new `ɵɵreplaceMedata` function that can be used to replace the metadata of a component class and re-render all instances in place without refreshing the page. The function isn't used anywhere at the moment, but it will be necessary for future functionality.

PR Close #57953
2024-09-26 14:28:35 -07:00
Charles Lyding ea5442637c refactor(platform-browser): further reduce runtime code size of shared style host (#57951)
The `SharedStylesHost` class has been refactored to further reduce
the runtime code size. SSR generated component styles are now added directly
into the usage records to avoid the need for additional data structures and
lookups when adding a component style. The code reduction in a prerelease
newly generated Angular CLI application for production is ~190 bytes.

Before:
```
Initial chunk files   | Names         |  Raw size | Estimated transfer size
main-3X2VHGTM.js      | main          | 208.26 kB |                56.30 kB
polyfills-FFHMD2TL.js | polyfills     |  34.52 kB |                11.28 kB
styles-5INURTSO.css   | styles        |   0 bytes |                 0 bytes

                      | Initial total | 242.78 kB |                67.58 kB
```

After:
```
Initial chunk files   | Names         |  Raw size | Estimated transfer size
main-MGOZ6Q4F.js      | main          | 208.07 kB |                56.26 kB
polyfills-FFHMD2TL.js | polyfills     |  34.52 kB |                11.28 kB
styles-5INURTSO.css   | styles        |   0 bytes |                 0 bytes

                      | Initial total | 242.59 kB |                67.54 kB
```

PR Close #57951
2024-09-26 14:28:00 -07:00
Angular Robot 187c3b221b build: update all non-major dependencies (#57938)
See associated pull request for more information.

PR Close #57938
2024-09-26 14:27:16 -07:00
Alex Rickabaugh d9687f43dd feat(compiler-cli): 'strictStandalone' flag enforces standalone (#57935)
Add the `strictStandalone` flag to `angularCompilerOptions`. When set to
true, the compiler will require that all declarations of components,
directive, and pipes be standalone. When `standalone: false` is provided,
an error is raised.

Note that until the default value of the standalone flag is flipped, this
does not catch the case where a declaration does not specify a value for
`standalone`.

The default value of the `strictStandalone` flag is `false`.

PR Close #57935
2024-09-26 14:22:24 -07:00
Kristiyan Kostadinov 3240598158 fix(core): provide flag to opt into manual cleanup for after render hooks (#57917)
Adds a `manualCleanup` flag to `afterRender` and `afterNextRender`, similarly to `effect`. The reason is that currently if the hook is created outside of an injection context, it requires an injector to be passed in. In some cases that injector might be an injector that is never destroyed (e.g. `EnvironmentInjector`) which can give a false sense of security users thinking that the hook will be cleaned up automatically. We fell into this in the CDK which caused a memory leak (see https://github.com/angular/components/pull/29709). With the `manualCleanup` option users explicitly opt into cleaning the hook up themselves.

PR Close #57917
2024-09-26 14:20:54 -07:00
Swami 418ffccf0b docs: correct HashLocationStrategy example url (#57908)
PR Close #57908
2024-09-26 14:20:00 -07:00
Thomas Nguyen 5f356fc092 refactor(core): Remove global event delegation code. (#57893)
This is no longer needed since we are no longer experimenting with it.

PR Close #57893
2024-09-26 14:18:17 -07:00
Alex Rickabaugh 5f56a65837 fix(upgrade): support input signal bindings (#57020)
`@angular/upgrade` writes to inputs when downgrading an Angular 2+ component
into an Angular.JS adapter. Previously, it wrote directly to the input
property, which isn't compatible with input signals. It also handles
`ngOnChanges` directly.

The correct way to support input signals would be to refactor upgrade to use
`ComponentRef.setInput`, which also handles `ngOnChanges` internally.
However, this refactoring might be more breaking since it would change the
timing of certain operations. Instead, this commit updates the code to
recognize `InputSignal` and write it through the `InputSignalNode`. This
avoids the above breaking changes for now, until a bigger refactoring can be
tested.

Fixes #56860.

PR Close #57020
2024-09-26 14:14:14 -07:00
Enea Jahollari 39ccaf4cc4 fix(compiler-cli): correctly get the type of nested function call expressions (#57010)
This PR fixes a bug where the type of a nested function call expression was incorrectly being returned as null.

PR Close #57010
2024-09-26 14:13:03 -07:00
arturovt c3115b882e fix(common): execute checks and remove placeholder when image is already loaded (#55444)
With this commit, we're now able to perform checks even when the image has already
been loaded (e.g., from the browser cache), and its `load` event would never be triggered.
We use the [complete](https://html.spec.whatwg.org/#dom-img-complete) property, as specified,
which indicates that the image state is fully available when the user agent has retrieved all
the image data. This approach effectively triggers checks, as we no longer solely rely on the
`load` event and consider that the image may already be loaded.

This will not remove the placeholder until the `load` event fires (and it won't fire if the
image is already "there").

This prevents memory leaks in development mode, as `load` and `error` event listeners are
still attached to the image element.

PR Close #55444
2024-09-26 14:12:00 -07:00
Andrew Scott 1549afe10e release: cut the v19.0.0-next.7 release 2024-09-25 10:14:36 -07:00
Paul Gschwendtner 95e8fb4c1c refactor(migrations): do not insert TODO for skipped inputs (#57957)
Whenever the insert TODO option is enabled, we should not insert a TODO
for inputs that were explicitly skipped via config.

This currently causes TODOs to be inserted for inputs outside of the
given `--path`, if the analysis directory is still including files from
outside of the directory.

PR Close #57957
2024-09-25 10:04:24 -07:00
Paul Gschwendtner 274a4c0f61 refactor(migrations): assign significance to input migration incompatibility reasons (#57957)
If an input is already skipped from the migration for e.g. being an
accessor, then the fact that it may be incompatible due inheritance is
not relevant. This commit assigns signficance/priority to input
incompatibilities.

This is also important for not accidentally overriding "explicit config
filter" incompatibilities with e.g. accessor incompatibility (which may
be recognized later or visible from another compilation unit).

PR Close #57957
2024-09-25 10:04:24 -07:00
Andrew Scott fc7e8056a0 docs: release notes for the v18.2.6 release 2024-09-25 10:02:45 -07:00
Paul Gschwendtner 2c8449a2f5 refactor(migrations): replace remaining performance.now() usages. (#57947)
Those usages break in the Angular CLI schematic execution, so we should
replace them as well.

PR Close #57947
2024-09-25 08:32:23 +00:00
Paul Gschwendtner aaae011b58 refactor(migrations): migrate toArray and get methods in query migration (#57947)
This commit migrates `toArray` and `get` methods of `QueryList`. The
`toArray` method is no longer needed for multi-queries, and `get` can be
replaced with native array `at`.

PR Close #57947
2024-09-25 08:32:23 +00:00
Paul Gschwendtner 313dfb7e99 refactor(migrations): provide AST path for resolved template and host references (#57947)
This allows us to detect usages in templates and figure out if they are
e.g. invoking a problematic method like `.pipe` for the output
migration, or in queries `.toArray` etc.

PR Close #57947
2024-09-25 08:32:23 +00:00
Joey Perrott af66e2475d fix(docs-infra): extend the timeout for jasmine tests of mermaid (#57948)
Extend the timeout because mermaid takes too long for the default.

PR Close #57948
2024-09-24 13:02:52 -07:00
Joey Perrott 9dbe6fc18b refactor: update license text to point to angular.dev (#57901)
Update license text to point to angular.dev instead of angular.io

PR Close #57901
2024-09-24 15:33:00 +02:00
Arshjeet2003 7afa978c23 docs: fix image src in feature modules (#57607)
fix image src in feature modules at /guide/ngmodules/feature-modules

PR Close #57607
2024-09-24 15:01:10 +02:00
Grégoire FOUILLARD b035caee6c docs: use X link instead of twitter (#57608)
PR Close #57608
2024-09-24 14:47:01 +02:00
Johann Ulbrich 503f733ae6 docs: Correct missing validator and wrong input field name in tutorial (#57738)
PR Close #57738
2024-09-24 14:46:04 +02:00
ilyapol 7377709d25 docs: update function-based outputs names (#57930)
According to Choosing event names for Outputs and this line
`Always use camelCase output names. Avoid prefixing output names with "on".`
So I made updates for Function-based outputs chapter in all examples from onNameChange functions to nameChange function

PR Close #57930
2024-09-24 14:45:10 +02:00
Andrew Kushnir b124e50ea3 refactor(core): avoid producing zone-related warnings during hydration when in zoneless mode (#57911)
This commit updates hydration code to avoid logging "unsupported configuration" warnings when in zoneless mode.

PR Close #57911
2024-09-24 12:52:40 +02:00
Pawel Kozlowski 030ffb2ff9 docs: reword signal queries section (#57921)
Reword the Results availability timing section
based on the feedback in https://github.com/angular/angular/issues/56866

Fixes #56866

PR Close #57921
2024-09-24 12:34:37 +02:00
Pawel Kozlowski a7eff3ffaa feat(core): mark signal-based query APIs as stable (#57921)
This commit marks the contentChild, contentChildren, viewChild
and viewChildren APIs (along with any associated APIs) as stable
and thus exits the dev preview
phase for those APIs.

PR Close #57921
2024-09-24 12:34:37 +02:00
Andrew Scott 48216a28e8 refactor(router): Move view transitions to developer preview (#55600)
Nothing of concern arose during the time this feature was in the
experimental phase. There are no plans to change the shape of the API.

This change also updates the route animations documentation to use the
view transitions feature instead of the old and difficult to follow
guide that used the animations package. The content was taken from the
blog post: https://blog.angular.io/check-out-angulars-support-for-the-view-transitions-api-3937376cfc19

PR Close #55600
2024-09-24 12:07:02 +02:00
Matthieu Riegler 5a04837c54 refactor(core): replace non output EventEmitter with Subject. (#54666)
Semantcly we're shifting away from using `EventEmitter` on non-outputs.

PR Close #54666
2024-09-24 11:58:24 +02:00
Matthieu Riegler b23113dc96 refactor(common): replace non output EventEmitter with Subject. (#54666)
Semantcly we're shifting away from using `EventEmitter` on non-outputs.

PR Close #54666
2024-09-24 11:58:24 +02:00
Angular Robot 9f5798e511 build: update dependency @rollup/plugin-commonjs to v28 (#57929)
See associated pull request for more information.

PR Close #57929
2024-09-24 11:48:50 +02:00
Angular Robot d9443777ce build: update github/codeql-action action to v3.26.8 (#57937)
See associated pull request for more information.

PR Close #57937
2024-09-24 11:12:41 +02:00
Alan Agius eb5651fe98 fix(docs-infra): resolve Mermaid from Bazel root path (#57924)
This update addresses a build failure on Windows caused by the previous method, which was incompatible with the Windows environment.

Closes #57920

PR Close #57924
2024-09-23 17:20:53 +02:00
Matthieu Riegler 6c9abd38fb refactor(forms): lift circular deps (#55881)
`import type` to the rescue.

PR Close #55881
2024-09-23 16:24:05 +02:00
AleksanderBodurri 9f4063b143 refactor(devtools): provide user with suggestions on why their angular application is not being detected in dev mode (#57861)
We've been seeing some reports about Angular DevTools being unable to detect applications running in dev mode.

This commit adds more context to the error message displayed when development mode is not detected and offers some possible resolutions.

Displays 3 common reasons why DevTools fails to detect an application running in dev mode. Links directly to angular.dev for relevant configurations.

Links to the Angular DevTools issue template if none of the suggestions work.

PR Close #57861
2024-09-23 16:08:16 +02:00
Tarique Akhtar Ansari f5349cbfa9 docs: fix import name in in ng-content.md (#57836)
Corrects import symbol in
adev/src/content/guide/templates/ng-content.md

Closes #57836

PR Close #57836
2024-09-23 16:04:15 +02:00
Sheik Althaf 8602729801 fix(devtools): remove existing highlight before highlighting another element (#57746)
In this PR we will remove the exiting highlight before highlighting the another element so that the highlight always be one

PR Close #57746
2024-09-23 16:00:23 +02:00
Charles Lyding 7b2fda16b1 refactor(platform-browser): reduce runtime code size of shared style host (#57834)
The `SharedStylesHost` class has been refactored to both reduce the runtime
code size and also modernize some of the code structures. The class is also
adjusted to better support reuse via subclassing or other reuses in the future.
Additional comments have been added to improve readability as well.
The code reduction in a prerelease newly generated Angular CLI application
for production is ~410 bytes.

Before:
```
Initial chunk files   | Names         |  Raw size | Estimated transfer size
main-GOQKBZBZ.js      | main          | 208.67 kB |                56.41 kB
polyfills-FFHMD2TL.js | polyfills     |  34.52 kB |                11.28 kB
styles-5INURTSO.css   | styles        |   0 bytes |                 0 bytes

                      | Initial total | 243.19 kB |                67.69 kB
```

After:
```
Initial chunk files   | Names         |  Raw size | Estimated transfer size
main-CRTDDKPH.js      | main          | 208.26 kB |                56.32 kB
polyfills-FFHMD2TL.js | polyfills     |  34.52 kB |                11.28 kB
styles-5INURTSO.css   | styles        |   0 bytes |                 0 bytes

                      | Initial total | 242.78 kB |                67.61 kB
```

PR Close #57834
2024-09-23 14:22:58 +02:00
Paul Gschwendtner 04a48736b1 refactor(migrations): add TODO for special output of signal input migration (#57918)
Sometimes we may insert `undefined!` or `any`. We should add a TODO in
those cases.

PR Close #57918
2024-09-23 13:41:48 +02:00
Paul Gschwendtner 7d74ab8ba3 refactor(migrations): improve logging of signal input migration (#57918)
The program preparation may take longer than the short analysis, given
potential larger projects. We should print this.

PR Close #57918
2024-09-23 13:41:48 +02:00
Paul Gschwendtner d1391ceaad refactor(migrations): fix peformance.now() not available in input schematic (#57913)
In schematics, `performance.now()` is not available. This breaks
execution.

PR Close #57913
2024-09-23 12:43:53 +02:00
Paul Gschwendtner 304bb3b274 refactor(migrations): remove imports to QueryList in signal queries migration (#57919)
With this commit, we remove imports to `QueryList` whenever possible.

PR Close #57919
2024-09-23 12:43:17 +02:00
Paul Gschwendtner 505c0f788e refactor(migrations): add better explanation on what color diff represents in testing (#57919)
This clarifies what colors mean in the Tsurge text diff Jasmine matcher.

PR Close #57919
2024-09-23 12:43:17 +02:00
cexbrayat eb77b533b8 refactor(migrations): avoid TS error 18003 when no files found (#57899)
When running a migration, tsurge creates a TS program from the tsconfig files found.
This can result in a 18003 error when no files are found (based on the includes/files of the config).

For example, the signal input migration throws in a CLI project that has no spec files:

```
ng g @angular/core:signal-inputs --defaults
Tsconfig could not be parsed or is invalid:

No inputs were found in config file '/tsconfig.spec.json'. Specified 'include' paths were '["src/**/*.spec.ts","src/**/*.d.ts"]' and 'exclude' paths were '["/out-tsc/spec"]'.
```

A similar issue has already been raised in the CDK migration (see https://github.com/angular/components/issues/27055).

This was solved in the CDK (credits to @crisbeto) by ignoring the 18003 error (see 9c1112d408361a47c98dfd470b8e990cbd1753db).

This PR does the same in tsurge.

PR Close #57899
2024-09-23 12:42:33 +02:00
Paul Gschwendtner 101d162d6d refactor(migrations): support inserting TODOs for skipped input fields (#57898)
This is a helpful option to retrieve some insights on why certain inputs
were not migrated.

PR Close #57898
2024-09-23 12:41:34 +02:00
Paul Gschwendtner 5bb7050c59 refactor(migrations): add common helpers for inserting TODOs (#57898)
Adds a common helper for inserting TODOs to Tsurge.

PR Close #57898
2024-09-23 12:41:34 +02:00
Dylan Hunn 7ecfd89592 fix(language-service): The suppress diagnostics option should work for external templates (#57873)
Previously, due to a bug, this option only worked for inline templates.

PR Close #57873
2024-09-23 12:03:30 +02:00
Tomer953 6468a2bba3 docs: add signal example for "Binding to the host element" section (#57272)
Added a new example demonstrating the use of signals in the "Binding to the host element" section.
PR Close #57272
2024-09-23 12:01:05 +02:00
ChinoUkaegbu d30cef290d docs(core): update wording in ComponentDecorator (#57878)
PR Close #57878
2024-09-23 11:59:08 +02:00
Angular Robot 4ff695ccef build: update io_bazel_rules_sass digest to 1fc4bd9 (#57907)
See associated pull request for more information.

PR Close #57907
2024-09-23 11:42:33 +02:00
Andrew Kushnir 6b239535e8 docs: declare Event Replay feature as stable (#57895)
This commit drops the `@developerPreview` annotation from the `withEventReplay()` function, which effectively makes the Event Replay feature stable.

PR Close #57895
2024-09-23 11:41:52 +02:00
Alejandro Cuba Ruiz e9314e6e92 docs: remove @empty <li> from the a11y tree (#54676)
PR Close #54676
2024-09-23 11:40:39 +02:00
Andrew Scott 950a5540f1 fix(core): Ensure the ViewContext is retained after closure minification (#57903)
In order to survive closure minification correctly, static properties need to
be annotated with `@nocollapse`.

For more history, see https://github.com/angular/angular/pull/28050

PR Close #57903
2024-09-20 14:01:26 -07:00
Andrew Scott a1f229850a feat(core): migrate ExperimentalPendingTasks to PendingTasks (#57533)
This commit promotes the `ExperimentalPendingTasks` service from
experimental to developer preview and includes a migration schematic for
the rename.

BREAKING CHANGE: `ExperimentalPendingTasks` has been renamed to
`PendingTasks`.

PR Close #57533
2024-09-20 18:26:48 +02:00
Joey Perrott a448f5a6f2 ci: update ownership to include MarkTechson (#57885)
Update pullapprove to include MarkTechson in ownership of a couple areas.

PR Close #57885
2024-09-20 16:59:49 +02:00
Enea Jahollari 732f22e4fb docs: Update ng-container.md (#57770)
PR Close #57770
2024-09-20 16:57:38 +02:00
Ahmed Hakeem 5a25dee2ac docs: include a second instance in which NG0300 err occurs (#56549)
PR Close #56549
2024-09-20 16:56:43 +02:00
Rahat Ahmed b3977307db docs(core): Fix typo in DI docs (#55563)
PR Close #55563
2024-09-20 16:54:44 +02:00
Tobi 3ac0a78532 docs(http): heads up about provider ordering (#56518)
PR Close #56518
2024-09-20 15:29:16 +02:00
Paul Gschwendtner ef5412c9bc refactor(migrations): fix virtual devkit file system not detecting directories (#57897)
The compiler and its file system implementation expects `fs.exists` to
return `true` even for directories. This caused issues with the TSConfig
resolution as `/` was looked up.

We fix this by making use of `stat` which is equally expensive to
`tree.exists`. The devkit tree's don't expose directory existance checks
out of the box.

Fixes #57887.

PR Close #57897
2024-09-20 15:06:33 +02:00
Paul Gschwendtner 88f2fe4387 test(migrations): fix batch test for signal input migration (#57883)
The batch test (not running on CI due to memory/resource constraints) currently fails
after refactorings we did recently. This commit fixes that there were
two different instances of `sourceFiles string[]`.

PR Close #57883
2024-09-20 12:19:11 +02:00
Paul Gschwendtner 8b632dbdb6 refactor(migrations): simplify and improve inheritance checking in input migration (#57883)
Instead of running inheritance checking for analyze and migration phases
(in batch mode), we can run once and create a mini-graph in the
compilation unit data. This can then improve lookups and propagation of
incompatibilities.

This commit fixes an issue where a class is chained between three
isolated units and members are overriden. Currently this pattern would
not be checked properly and e.g. an incompatibility of the superclass
would not propagate to derived class, or deeper.

PR Close #57883
2024-09-20 12:19:11 +02:00
Paul Gschwendtner 4ea8ad6f55 refactor(migrations): reduce bytes of merged compilation unit in input migration (#57883)
This reduces the bytes of the merged compilation unit data, so that we
don't have to transer gigabytes of data to every batch worker. This
reduces quota and helps with reliablity of the migration in 1P.

The references metadata was never needed across units, but an initial
idea to e.g. allow for issuing of CLs based on a graph that we build
after changes computation

PR Close #57883
2024-09-20 12:19:11 +02:00
Paul Gschwendtner 4993dd51e6 refactor(migrations): improve ergonomics of performance improvement for reference lookup (#57883)
This would allow us to have better control over reference lookups
without needing a whole new set of `KnownFields` or `KnownInputs`.

PR Close #57883
2024-09-20 12:19:11 +02:00
Paul Gschwendtner d8aba1d901 refactor(migrations): automatically skip inputs outside of project (#57883)
Currently we support filtering files outside of the project, or source
files via `shouldMigrateInput` option. This works well, but we can
smartly skip inputs in batch migrations if we never saw a source
declaration.

This is an improvement in G3 where we cannot simply limit the migration
to a given directory, because we may include build targets from various
places. E.g. via reverse dependency tracking— so this fixes the issue
naturally.

Notably, an explicit filter would improve reference lookups because we
wouldn't consider the input when determining potential references. That
is because we would know beforehand that those inputs in the `.d.ts`
cannot be migrated inputs— and therefore references with names of the
input would never be verified via expensive type checking.

This is fine for G3 though, and there is no way around this. This is a
slow performance overhead; mostly releveant for VSCode integration.

PR Close #57883
2024-09-20 12:19:11 +02:00
Angular Robot 4112e6fa31 build: update io_bazel_rules_sass digest to 8dac332 (#57892)
See associated pull request for more information.

PR Close #57892
2024-09-20 11:13:48 +02:00
Ulises b5efabed53 docs: update installation guide (#57701)
PR Close #57701
2024-09-20 11:09:02 +02:00
Angular Robot bb3b4c6fa0 docs: update Angular CLI help [main] (#57890)
Updated Angular CLI help contents.

PR Close #57890
2024-09-20 11:07:45 +02:00
Alex Rickabaugh fc59e2a7b7 feat(core): change effect() execution timing & no-op allowSignalWrites (#57874)
This commit flips the flag that was added in 4e890cc, putting the new effect
timing into... effect :)

BREAKING CHANGE:

Generally this PR has two implications:

* effects which are triggered outside of change detection run as part of
  the change detection process instead of as a microtask. Depending on the
  specifics of application/test setup, this can result in them executing
  earlier or later (or requiring additional test steps to trigger; see below
  examples).

* effects which are triggered during change detection (e.g. by input
  signals) run _earlier_, before the component's template.

We've seen a few common failure cases:

* Tests which used to rely on the `Promise` timing of effects now need to
  `await whenStable()` or call `.detectChanges()` in order for effects to
  run.

* Tests which use faked clocks may need to fast-forward/flush the clock to
  cause effects to run.

* `effect()`s triggered during CD could rely on the application being fully
  rendered (for example, they could easily read computed styles, etc). With
  the change, they run before the component's updates and can get incorrect
  answers. The recent `afterRenderEffect()` API is a natural replacement for
  this style of effect.

* `effect()`s which synchronize with the forms system are particularly
  timing-sensitive and might need to adjust their initialization timing.

Fixes #55311
Fixes #55808
Fixes #55644
Fixes #56863

PR Close #57874
2024-09-19 14:17:56 -07:00
Matthieu Riegler 49f7179ded docs(docs-infra): Add dedicated support for decorators. (#57595)
PR Close #57595
2024-09-19 14:16:31 -07:00
Angular Robot cd24eaf93e build: update cross-repo angular dependencies (#57851)
See associated pull request for more information.

Closes #57833 as a pr takeover

PR Close #57851
2024-09-19 16:29:25 +02:00
Ankur Mishra 9020a50e6d docs: Update Making HTTP requests best practices example (#57876)
PR Close #57876
2024-09-19 14:18:28 +02:00
Luke Schlangen e598b08af5 docs: fix closing tag slash location (#57405)
PR Close #57405
2024-09-19 12:50:27 +02:00
Harieswaran D 87a724ec1d docs: suggesting a typo error in the document (#57627)
PR Close #57627
2024-09-19 12:49:51 +02:00
Charles Lyding 163f4d0dd5 build(docs-infra): use chunk optimizer for adev builds (#56830)
The Angular build system recently introduced an opt-in chunk optimizer
for application builds. This is now enabled for adev production builds.
It reduces the initial chunk count from 14 to 1 JavaScript file. While
the raw initial total file size does increase by 0.75% (7.3kB), the total
estimated transfer size decreases by 8% (17.8kB). Not only does this
reduce the amount of data that must be sent over the network but it also
reduces the amount of HTTP requests that must be made by the browser.
While the injected HTML module preloads mitigate request cascades, not
needing to make the requests is even better.

PR Close #56830
2024-09-19 12:44:51 +02:00
Joey Perrott ddbdf224a5 ci: update pullapprove config to enact changes for renovate (#57853)
Enact the pullapprove config for changes to renovate reviews

PR Close #57853
2024-09-19 11:18:35 +02:00
Alan Agius 38de06b2d1 test: disable cache and analytics (#57863)
In Bazel, the `CI` environment variable is not set due to its hermetic nature. As a result, caching is enabled by default, which includes Vite pre-bundling. This is unnecessary in CI environments.

In some cases, this leads to errors during CI runs when the Vite build is closed or canceled prematurely, resulting in the following errors:

```
Error: R] The build was canceled
Error: R] Terminating worker thread [plugin angular-vite-optimize-deps]
```

PR Close #57863
2024-09-19 11:14:23 +02:00
Alex Rickabaugh 4e890cc5ac refactor(core): add support for new effect scheduling. (#56501)
The original effect design for Angular had one "bucket" of effects, which
are scheduled on the microtask queue. This approach got us pretty far, but
as developers have built more complex reactive systems, we've hit the
limitations of this design.

This commit changes the nature of effects significantly. In particular,
effects created in components have a completely new scheduling system, which
executes them as a part of the change detection cycle. This results in
behavior similar to that of nested effects in other reactive frameworks. The
scheduling behavior here uses the "mark for traversal" flag
(`HasChildViewsToRefresh`). This has really nice behavior:

 * if the component is dirty already, effects run following preorder hooks
   (ngOnInit, etc).
 * if the component isn't dirty, it doesn't get change detected only because
   of the dirty effect.

This is not a breaking change, since `effect()` is in developer preview (and
it remains so).

As a part of this redesigned `effect()` behavior, the `allowSignalWrites`
flag was removed. Effects no longer prohibit writing to signals at all. This
decision was taken in response to feedback / observations of usage patterns,
which showed the benefit of the restriction did not justify the DX cost.

The new effect timing is not yet enabled - a future PR will flip the flag.

PR Close #56501
2024-09-18 14:52:25 -07:00
Angular Robot c6039b5f89 build: update io_bazel_rules_sass digest to 1f2bb53 (#57860)
See associated pull request for more information.

PR Close #57860
2024-09-18 17:48:06 +02:00
Pawel Kozlowski 538dd29755 release: cut the v19.0.0-next.6 release 2024-09-18 17:38:15 +02:00
Pawel Kozlowski f8666a9bd6 docs: release notes for the v18.2.5 release 2024-09-18 17:33:00 +02:00
Matthieu Riegler 029163c494 docs: adapt the NgModule to the new default : standalone (#57532)
PR Close #57532
2024-09-18 16:53:26 +02:00
Matthieu Riegler 8e8cd86383 docs: add redirect for pipes guide (#57706)
cherry-pick of #57681 that should have targeted `main`. This commit also fixes the wild card redirection

PR Close #57706
2024-09-18 16:51:44 +02:00
zdwg42 66972c6472 docs(forms): fix template-driven docs link (#57867)
PR Close #57867
2024-09-18 16:50:17 +02:00
Kristiyan Kostadinov f611faadfe fix(compiler-cli): extended diagnostics not validating ICUs (#57845)
The visitor that all extended diagnostics are based on hadn't implemented the `visitIcu` method which meant that it wasn't detecting any code inside of them.

Fixes #57838.

PR Close #57845
2024-09-18 09:48:20 +02:00
Paul Gschwendtner d0a71a33b1 refactor(migrations): check inheritance in signal queries migration (#57854)
Notably the inheritance checking is less complete as the one in the
input migration. That is because we can't efficiently determine query
fields in the analyze phase of compilation units. Unless we aggresively
consider every field of decorated classes as queries and complexify
the merged metadata significantly, we can't reliably check for cases
where a class is incompatible for migration because it overrides a
member from a class that is in a different compilation unit.

This is an acceptable limitation though (maybe for now), as worst case,
we would migrate the class and the other compilation unit would simply
break. Not ideal, but migrations are impossible to be 100% correct in
general— so not a surprise.

In the future, we may find ways to identify queries more reliably in
analyze phase already. e.g. if the compiler were to include this
metadata in the `.d.ts`, or if we decide to simply add this to the
metadata, accepting potential significant HDD increase.

PR Close #57854
2024-09-18 09:45:20 +02:00
Paul Gschwendtner e20d2742f4 build: do not run renovate on signal migration TS versioning tests (#57855)
The versions for TypeScript should not be updated.

PR Close #57855
2024-09-18 09:43:11 +02:00
Matthieu Riegler 4231e8f28f fix(core): Handle @let declaration with array when preparingForHydration (#57816)
Before this commit, `@let` decleration with an array where  mistaken for a component in the lView and throwing an unexpected error.

This commit fixes this.

PR Close #57816
2024-09-17 16:29:39 +02:00
Angular Robot 87e025ae78 build: update github/codeql-action action to v3.26.7 (#57843)
See associated pull request for more information.

PR Close #57843
2024-09-17 15:48:12 +02:00
Angular Robot 004e4ca819 build: update all non-major dependencies (#57842)
See associated pull request for more information.

PR Close #57842
2024-09-17 15:47:21 +02:00
Ingila Ejaz 607ea4b67e docs: add fork url in contribution guidelines for new contributors (#57837)
Clicking a clickable repo url in the contribution guide would make it simpler for new contributors to find the repository
PR Close #57837
2024-09-17 15:23:34 +02:00
Paul Gschwendtner 8ecafce2d9 refactor(migrations): do not run optional TCB operations in input migration (#57835)
Optional operations that don't run in the actual application compilation
would then cause fatal diagnostic errors breaking the compiler
initialization at runtime.

We should try to keep the migration as close as possible to the
application build.

PR Close #57835
2024-09-17 11:08:37 +02:00
Paul Gschwendtner 4e05a6f299 refactor(migrations): share problematic pattern detection code (#57835)
This allows us to use the inheritance checks we built for the signal
input migration, inside the queries migration.

PR Close #57835
2024-09-17 11:08:37 +02:00
Paul Gschwendtner 64c76b79db refactor(migrations): prepare for sharing problematic pattern recognition (#57835)
This commit prepares us for sharing the problematic pattern detection,
or inheritance checking. E.g. if a class is manually instantiated, using
certain APIs may not be considered safe. This logic will be shared in
the following commit.

PR Close #57835
2024-09-17 11:08:37 +02:00
Kristiyan Kostadinov 39098f3a9b refactor(compiler): finalize hydrate syntax (#57831)
Finalizes compiler implementation of the new `hydrate` triggers by:
* Reworking the logic that was depending on the `hydrateSpan` to distinguish hydrate triggers from non-hydrate triggers.
* Fixing that the `hydrate when` trigger didn't have a `hydrateSpan`.
* Adding an error if a parameter is passed into a `hydrate` trigger.
* Add an error if other `hydrate` triggers are used with `hydrate never`.
* Replacing the `prefetch` and `hydrate` flags in the template pipeline with a `modifiers` field.
* Fixing an error that was being thrown when reifying `hydrate` triggers in the pipeline.
* Adding quick info support for the `hydrate` keyword in the language service.
* Adding some tests for the new logic.

PR Close #57831
2024-09-17 11:05:17 +02:00
Jessica Janiuk 79b54bba9c refactor(compiler): initial integration of hydrate triggers into the compiler (#57831)
Sets up the AST for hydrate triggers.

PR Close #57831
2024-09-17 11:05:17 +02:00
Paul Gschwendtner 59fe9bc772 feat(migrations): introduce signal input migration as ng generate schematic (#57805)
Introduces a new `ng generate` schematic for migration `@Input()`
declarations to signal inputs.

This migration is the same that is also integrated into the
VSCode extension.

Note: In a follow-up the documentation for this will be improved, and a
flag to report reasons on why certain inputs weren't migrated, is added.

PR Close #57805
2024-09-16 18:06:49 +02:00
Paul Gschwendtner 6cdcf5d6ca refactor(compiler-cli): respect configured file system when parsing tsconfig (#57805)
Whenever the `ngc` binary is used directly to parse configurations, we
should try to respect the configured file system like we do in all other
places. Right now one spot where we escape the FS is for reading
directories to e.g. support tsconfig#includes.

This commit fixes this, implementing TypeScript's read directory method
leveraging the configured FS. The approach taken here was used for a
couple of months/years for Angular Material migrations and no issues
were found.

PR Close #57805
2024-09-16 18:06:49 +02:00
Vlad Boisa 6c3b682330 docs: change spelling to correctly params (#57832)
PR Close #57832
2024-09-16 18:03:53 +02:00
Angular Robot 8e017348ef build: update dependency @inquirer/prompts to v6 (#57821)
See associated pull request for more information.

PR Close #57821
2024-09-16 17:24:26 +02:00
Kristiyan Kostadinov e5adf92965 feat(core): stabilize @let syntax (#57813)
Removes the `@let` syntax from developer preview.

PR Close #57813
2024-09-16 12:16:12 +02:00
Charles Lyding 149d69e47c refactor(compiler): allow internal style encapsulation helper to directly encapsulate for a component (#57809)
For component stylesheet hot module replacement scenarios, it will be necessarily to directly
encapsulate a component's stylesheet in a single operation. This currently requires the
consumer of the `encapsulateStyle` helper to use the internal Angular attribute values combined
with a find/replace over the entire stylesheet. To avoid both of these, the helper function now
has an optional second parameter which allows direct and full encapsulation of a style for a given
component when the component identifier is known.

PR Close #57809
2024-09-16 12:14:57 +02:00
Pawel Kozlowski 1b1519224d feat(core): mark input, output and model APIs as stable (#57804)
This commit marks the input, output and model APIs as stable
(along with the associated APIs) and thus exits the dev preview
phase for those APIs.

PR Close #57804
2024-09-16 12:13:47 +02:00
Matthieu Riegler 41c212d604 refactor(migrations): Keep standalone:true (#57717)
This commit also adds the support of handling standalone proparties assigned by variables (or via shorthand assignments).

PR Close #57717
2024-09-16 12:12:33 +02:00
Angular Robot 6b066f3a0b build: update cross-repo angular dependencies (#57810)
See associated pull request for more information.

Closes #57806 as a pr takeover

PR Close #57810
2024-09-16 11:38:23 +02:00
Andriy Malish 7526687495 docs: Update CHANGELOG.md (#57726)
Fixing typo: reactoring -> refactoring

PR Close #57726
2024-09-16 11:28:05 +02:00
Samson Amaugo b0d68b2e6f docs: correct key usage in sectionStyles and update template binding (#57820)
PR Close #57820
2024-09-16 11:26:04 +02:00
Can Özkan 64b78d5ff4 docs: escape pipe ("|") characters in markdown tables to fix rendering issues (#57822)
PR Close #57822
2024-09-16 11:24:55 +02:00
Paweł Maniecki 716f0d53b6 docs: fix typo in requirements for NG8106 (#57772)
"Configuration requirements" referred to the wrong diagnostic (`invalidBananaInBox`)
likely due to a copy-paste error

PR Close #57772
2024-09-16 11:21:28 +02:00
Angular Robot 8a5f3197c0 build: update cross-repo angular dependencies (#57776)
See associated pull request for more information.

Closes #56387 as a pr takeover

PR Close #57776
2024-09-13 16:09:02 +02:00
Paul Gschwendtner fd081e8ee4 refactor(migrations): add compiler filesystem for devkit virtual tree (#57794)
The file system will be used for dev-kit wiring up of Tsurge migrations
in e.g. `ng generate` and `ng update`

PR Close #57794
2024-09-13 14:13:58 +02:00
Suryaprakash 1b0a6a078e docs: Update guide for version 18 - unclear (possibly incorrect?) instruction for opting out of caching HTTP requests that require authentication (#57799)
PR Close #57799
2024-09-13 13:28:20 +02:00
Andrew Scott 3ebe6b4ad4 feat(core): Add async run method on ExperimentalPendingTasks (#56546)
This helper method is simply a convenience function that reduces some
boilerplate with manually adding and removing a task around some
asynchronous function.

PR Close #56546
2024-09-13 11:10:08 +02:00
Kristiyan Kostadinov 6144612940 fix(migrations): account for explicit standalone: false in migration (#57803)
Fixes that the standalone migration was duplicating the `standalone` flag if the declaration was `standalone: false`.

PR Close #57803
2024-09-13 10:48:42 +02:00
Pascal Weyrich 55e3a3a47c docs: fix example for defer on hover on an alternative element (#57788)
PR Close #57788
2024-09-12 11:23:33 +02:00
Doug Parker 6c8fd3094a docs: add section on removing Zone.js imports/dependency from the build (#57784)
PR Close #57784
2024-09-12 10:54:09 +02:00
Lang 2b3e7f87b9 docs: use correct example (#57783)
PR Close #57783
2024-09-11 21:25:25 +00:00
Simon Knott ba386c7a24 docs: add Playwright to E2E tools (#57734)
docs: alphabetisize list

PR Close #57734
2024-09-11 21:24:52 +00:00
Jessica Janiuk 488621fd78 release: cut the v19.0.0-next.5 release 2024-09-11 16:27:52 -04:00
Jessica Janiuk 784d4be9d7 docs: release notes for the v18.2.4 release 2024-09-11 16:02:15 -04:00
danielbulic ada67a34f2 docs: fix link of DEVELOPER.md in CONTRIBUTING.md (#57775)
PR Close #57775
2024-09-11 18:55:21 +00:00
Paul Gschwendtner 73feb0e7bc refactor(migrations): support reference migration in query migration (#57777)
The query migration will now fully re-use the reference resolution and
migration logic from the input migration to reliably migrate references
to the new signal properties, supporing control flow outsourcing etc.

PR Close #57777
2024-09-11 17:48:29 +00:00
Paul Gschwendtner cf306d7ad7 refactor(migrations): follow-up improvements to shared reference resolution (#57777)
Moves leftover files that are related to resolution into the resolution
logic directory.

PR Close #57777
2024-09-11 17:48:29 +00:00
Paul Gschwendtner 2591b988ce refactor(migrations): add jasmine diff matcher to tsurge testing utilities (#57777)
Commonly when testing Tsurge migrations, we need to diff text content of
files. This commit adds a colored diff helper that makes writing tests
much easier.

PR Close #57777
2024-09-11 17:48:29 +00:00
Paul Gschwendtner 1c663ca820 refactor(migrations): add helper for dedenting to tsurge (#57777)
Dedenting the smallest leading whitespace is useful for conveniently
testing the output of a migration. This commit includes the helper in
Tsurge.

PR Close #57777
2024-09-11 17:48:29 +00:00
JoostK c93b510f9b feat(core): allow passing undefined without needing to include it in the type argument of input (#57621)
This commit introduces an overload for `input` to accept `undefined` as initial value if only
options are needed to be provided, inferring an input of type `T|undefined`. Prior to this change,
the type argument as specified needed to include `|undefined` explicitly even though that isn't
necessary when passing options isn't needed.

Relates to #53909

PR Close #57621
2024-09-11 14:28:19 +00:00
Matthieu Riegler c15e72a0eb refactor(core): extract assertNotDestroyed as function. (#57692)
This will allow the mangling of the method name

PR Close #57692
2024-09-11 14:27:35 +00:00
Paul Gschwendtner ebe0c168e2 refactor(migrations): share reference migration code of signal input migration (#57766)
The reference migration code of the signal input migration should be
re-usable as the queries migration needs the exact same.

This builds on top of the shared reference resolution logic from
previous commits. Similarly this commit introduces a small "host" for
providing necessary configurable information about what references
should be migrated; supporting e.g. "input incompatibilities".

This is important as e.g. queries may also be incompatible for migration
and references to such, should not be migrated.

PR Close #57766
2024-09-11 14:26:58 +00:00
Paul Gschwendtner acafa3b91d refactor(migrations): add own build file for tsurge AST helpers (#57766)
This separates tsurge from its optional AST helpers more cleanly.

PR Close #57766
2024-09-11 14:26:58 +00:00
Paul Gschwendtner 85018fbd88 refactor(migrations): rename reference migration folder of signal input migration (#57766)
This makes it more aligned with the reference resolution folder that
we've added in the previous commit.

PR Close #57766
2024-09-11 14:26:58 +00:00
Paul Gschwendtner 12f9d2ab5a refactor(migrations): make input migration reference resolution re-usable (#57766)
Allows us to re-use the reference resolution that works within TS code,
Angular templates, or host bindings. This is helpful for queries
migration which also needs to migrate many references, or allows use in
the output migration.

This is achieved by introducing an abstraction of the "known inputs"
registry we have already, but making it more generic to work with _any_
class fields. Known inputs can then implement/extend this. Queries
similarly.

The "known fields" construct gives insight on field unique IDs etc. This
is then used by the reference resolution to determine if it's a
reference that needs to be captured.

We may move all of this code to Tsurge eventually; depending on how
useful it is. We'll discuss.

PR Close #57766
2024-09-11 14:26:58 +00:00
Jessica Janiuk 0ebb2be538 build: bump dev-infra dependencies (#57761)
This bumps the commit hashes for all of the dev-infra related dependencies.

PR Close #57761
2024-09-10 20:47:01 +00:00
Santosh Yadav bc03f53337 docs: add examples for localize (#57534)
PR Close #57534
2024-09-10 20:33:18 +00:00
Jan Olaf Martin 45575b5ce4 docs: fix link from zoneless to OnPush (#57760)
PR Close #57760
2024-09-10 20:28:00 +00:00
Angular Robot cc99297e60 docs: update Angular CLI help [main] (#57743)
Updated Angular CLI help contents.

PR Close #57743
2024-09-10 17:17:24 +00:00
Paul Gschwendtner 685866dfb4 refactor(migrations): correct catalyst import in signal input migration (#57750)
The paths changed as part of an LSC a while ago. This commit updates
the migration to reflect this.

PR Close #57750
2024-09-10 16:37:15 +00:00
Kristiyan Kostadinov c51c0f23bb build: update to TypeScript 5.6 final (#57749)
Updates the repo to the final version of TypeScript 5.6.

PR Close #57749
2024-09-10 16:32:37 +00:00
Angular Robot 5abec28db6 build: update all non-major dependencies to ~5.3.0 (#57748)
See associated pull request for more information.

PR Close #57748
2024-09-10 16:31:12 +00:00
Arnau Gómez Farell 95b8105a1e docs(core): fix typo (#57741)
Fix typo where two variable names should be the same but are different.
PR Close #57741
2024-09-09 18:23:06 +00:00
Jessica Janiuk d58ffd6d90 release: cut the v19.0.0-next.4 release 2024-09-09 14:15:22 -04:00
Paul Gschwendtner 6fa1b3859c refactor(migrations): do not fail on templates that are string concatenated (#57735)
This is a pattern sometimes seen in test components. We shouldn't fail
the migration unexpectedly here.

PR Close #57735
2024-09-09 17:16:14 +00:00
Paul Gschwendtner b039aed18f refactor(migrations): gracefully handle resource loading issues (#57735)
This can happen when we manually parse templates and end up with an
invalid URL. We should not fail the migration in those cases.

PR Close #57735
2024-09-09 17:16:14 +00:00
Rachid O c425c77e88 docs: fix broken link in roadmap page (#57722)
PR Close #57722
2024-09-09 14:40:29 +00:00
Rachid O f28d8f3785 docs: fix typo in steps/12-enable-routing/README.md (#57722)
PR Close #57722
2024-09-09 14:40:28 +00:00
Jan Martin 9c5b4664b6 docs: add new key/value option syntax in CLI (#57699)
PR Close #57699
2024-09-09 14:32:35 +00:00
Pawel Kozlowski cbec46a51d feat(migrations): migrate .pipe calls in outputs used in tests (#57691)
This change uses the outputToObservable utility function to
convert migrated outputs to Observables. This happens only
in test files as it is a common practice to use RxJS to listen
to events raised by the component under test.

PR Close #57691
2024-09-09 14:10:37 +00:00
Pawel Kozlowski 3a264db866 fix(migrations): properly handle comments in output migration (#57691)
This change contains a fix that takes into account comments
attached to outputs and preserves / removes those as needed.

PR Close #57691
2024-09-09 14:10:37 +00:00
Kristiyan Kostadinov 40ff18f87a fix(compiler): produce less noisy errors when parsing control flow (#57711)
Currently several parsing errors in the new control flow (e.g. missing `track` expression) produce errors whose span targets the entire block. This can be really noisy in the IDE where the error can span many lines in the template.

These changes switch to highlighting just the start of the block.

PR Close #57711
2024-09-09 14:10:01 +00:00
Shannon V.C. 6f5de5d19f docs: add missing link in templates guide overview (#57718)
This addresses a minor issue where the "See whitespace in templates" phrase was not linked to its corresponding documentation section

PR Close #57718
2024-09-09 14:09:07 +00:00
diamondhero1 ffdcac4e0c docs: extraneous backslashes removed (#57725)
PR Close #57725
2024-09-09 13:58:50 +00:00
Michael Small 01ae0556e2 docs(docs-infra): remove more unused standalone imports (#57703)
PR Close #57703
2024-09-09 13:58:21 +00:00
Angular Robot 8d209ce0d6 build: update dependency diff to v7 (#57705)
See associated pull request for more information.

PR Close #57705
2024-09-09 13:57:41 +00:00
Paul Gschwendtner 4f52678560 refactor(migrations): avoid flow node traversal limit by optimizing traversal (#57719)
Instead of traversing the same paths multiple times, we should avoid
this extra work and optimize. This solves some issues in super large
files with extremely complex flow graphs. E.g. large `ngOnChanges`
functions in Pantheon.

For an example of a flow graph where it doesn't make sense to re-visit
nodes that have multiple incoming edges, see this internal screenshot:
https://screenshot.googleplex.com/6ub4e5e5gbzJAvH

PR Close #57719
2024-09-08 17:11:51 +00:00
Paul Gschwendtner 2e60eb08f4 refactor(migrations): ensure project paths respect root directories (#57677)
Migrations may resolve files in e.g. `blaze-out` and try to compute a
path for the file that is "recognizable" across workers. E.g. in one
worker, it may be the actual `.ts` file inside the source tree, while in
the other, the file may be inside `blaze-out`.

Tsurge currently expects project relative paths to be passed around.
Those project relative paths are currently only based on the single root
directory. Hence paths inside `blaze-out` would actually not be
recognizable.

The fix idea here is that we introduce a structure for Project files.
This structure will contain two fields:

- an ID of a file. This is similar to a module ID in the project. Those
  are resolved with respect to all root directories. This matches the
  conceptual virtual roots of `tsconfig#rootDirs`. The IDs can be used
  for matching files across workers, assuming those are executing using
  the same root directories, and handle the same overall project (e.g.
  google3).

- a path relative to the primary project root. Multiple roots may be
  configured, but the primary project root, is the directory that
  contains all others. See: `tsconfig.rootDir`. This path is NOT
  necessarily useful for matching files between stages etc, but it's
  useful for writing replacements for a given file to disk.

Note that those two things cannot be combind into one conceptual
"project relative path" because a path relative to the most appropriate
root directory cannot be used for safe replacements. E.g. consider a
replacement matches a file from a root directory like `/sub/`. The path
inside `/sub/` would then omit the `/sub/` and later on when writing
replacements, we wouldn't know which root directory it actually was part
of. Hence the concept of a "project root relative path" and the "ID".

ds

PR Close #57677
2024-09-06 19:44:07 +00:00
Matthieu Riegler dbdd7875dd docs: Enable direct links to class/interface methods for @link (#57615)
PR Close #57615
2024-09-06 16:03:36 +00:00
Seyed Alireza Mirehe bf5f2e73d3 docs: fix typo in view queries documentation (#57228)
The typo in the [queries document](https://angular.dev/guide/components/queries#content-queries) has been corrected:
Queries never **pierce** through component boundaries.

PR Close #57228
2024-09-06 16:03:02 +00:00
Matthieu Riegler a829a7e926 docs(docs-infra): Remove focus on navigation (#57695)
PR Close #57695
2024-09-06 16:02:13 +00:00
Matthieu Riegler 6ea8e1e9aa feat(core): Add a schematics to migrate to standalone: false. (#57643)
With the framework enabling `standalone` by default (making module based an opt-in), the migration will migrate none-standalone existing components and add `standalone: false` to the decorator.

PR Close #57643
2024-09-06 15:08:51 +00:00
Matthieu Riegler 9624ab03c9 docs(docs-infra): fix extraction tests (#57694)
PR Close #57694
2024-09-06 15:07:47 +00:00
Kristiyan Kostadinov fc95a9adff fix(migrations): replace leftover modules with their exports during pruning (#57684)
Currently during the module pruning stage of the standalone migration we assume that any leftover modules which only have `imports` and `exports` can safely be removed. That can be incorrect for the cases where some parts of the app were converted to standalone outside of the migration.

These changes update the logic so that such modules are replaced with the `exports` which are used within the specific component.

Fixes #51420.

PR Close #57684
2024-09-06 14:15:50 +00:00
Matthieu Riegler 1698bd3ed8 refactor(compiler-cli): Do extract symbols from private modules. (#57611)
Modules like `core/primitives` are considered private and their symbols shouldn't be exposed nor linked in the docs.

PR Close #57611
2024-09-06 14:15:18 +00:00
Dylan Hunn f063a75eae refactor(language-service): Allow language service diagnostics to be ignored (#57675)
Add a check to the language service that ignores specified diagnostic codes. This will be useful in g3.

The codes to ignore are exposed as part of the PluginConfig.

Fixes github.com/angular/vscode-ng-language-service/issues/1243

PR Close #57675
2024-09-06 14:14:47 +00:00
Matthieu Riegler 6f0d05fac0 docs(docs-infra): remove unused standalone imports (#57680)
PR Close #57680
2024-09-06 14:13:35 +00:00
Paul Gschwendtner 227d13b86d refactor(migrations): preserve brace spacing when applying imports (#57672)
Currently the import manager always add a space after the import clause
brace. We should only do this if the existing import did the same.

PR Close #57672
2024-09-05 19:33:04 +00:00
Paul Gschwendtner 00852118cc refactor(migrations): preserve multi-line imports if possible when editing imports (#57672)
Currently whenever we apply the import manager changes in migations, we
leave the decision of multi-line or single-line to the TS printer.

This works, but in practice can cause signficiant file jumps/changes if
there are large imports that aren't wrapped for example, or the other
way around. We should try to be minimal here and preserve the existing
formatting, assuming that a multi-line import remains multi-line, while
a single-line import remains single-line if it already had many items in
a single line, intentionally.

PR Close #57672
2024-09-05 19:33:04 +00:00
Paul Gschwendtner 8f40b25635 docs(migrations): clarify usage of shouldMigrateInput config option (#57672)
Clarifies some details of the `shouldMigrateInput` configuration option
of the signal input migration.

PR Close #57672
2024-09-05 19:33:04 +00:00
Paul Gschwendtner b0f5d5549e refactor(migrations): best effort mode should respect ignored inputs (#57672)
Whenever the signal input migration runs in VSCode, other inputs are
marked as incompatible via the config. Best effort mode currently skips
those incompatibilities and still migrates them. This is incorrect as
the config intends to skip those inputs, regardless of best effort mode.

PR Close #57672
2024-09-05 19:33:04 +00:00
Paul Gschwendtner cf88d8a8c1 refactor(language-service): align signal input refactoring messages (#57672)
This ensures they follow the same pattern.

PR Close #57672
2024-09-05 19:33:04 +00:00
Paul Gschwendtner 7e54a944cc refactor(migrations): avoid comments leaking from TCB into input migration (#57672)
The migration took a type from the directive handler metadata, and
inserted it into a synthetic node for the new input() call. This works
perfectly fine, but in some cases, I saw some `T:VAE` comments attached
🤯  These are from the type checker which attached
synthetic comments to the exact same node.

PR Close #57672
2024-09-05 19:33:03 +00:00
Sheik Althaf 4fa25cf328 refactor(devtools): use signal apis in visualizer and devtools-tabs (#57192)
Refactor the visualizer and devtools-tabs components to use signal apis, in future we can make the components onPush and zoneless

PR Close #57192
2024-09-05 17:23:34 +00:00
Matthieu Riegler e3919e7b9d docs: display property details (#57622)
In case there are no signatures (like in an bare interface method), we display the implementation information.

PR Close #57622
2024-09-05 17:22:32 +00:00
Pawel Kozlowski 68e5370a66 feat(migrations): remove complete calls for migrated outputs (#57671)
This change removes superflous .complete calls for the migrated outputs.

PR Close #57671
2024-09-05 14:13:42 +00:00
Pawel Kozlowski f1bbbeab0c test(migrations): add more tests to output migration (#57671)
This change contains an additonal test that captures scenario
of the problematic .pipe usage outside of the directive class.

PR Close #57671
2024-09-05 14:13:42 +00:00
Jan Olaf Martin c3e5b0a0b0 docs: clarify behavior of ng serve with server.ts (#57658)
See: https://stackoverflow.com/questions/77468756/how-to-use-express-server-in-dev-mode-in-angular-17-application-builder
See: https://github.com/angular/angular/issues/52929#issuecomment-1818078952

PR Close #57658
2024-09-05 14:06:31 +00:00
Matthieu Riegler 1b7571f404 docs(docs-infra): enable tests for api-gen (#57618)
PR Close #57618
2024-09-05 14:05:04 +00:00
Sheik Althaf 7a4199a29a refactor(devtools): use signal apis for directive forest (#56998)
Refactor the directive-forest components to use signal apis, in future we can make the components onPush and zoneless

PR Close #56998
2024-09-04 21:00:12 +00:00
Paul Gschwendtner f6c40f1ba1 refactor(migrations): expose all input migration helpers (#57659)
Instead of encouraging deep imports, we should expose commonly accessed
exports in a `index.ts` barrel file.

PR Close #57659
2024-09-04 20:07:18 +00:00
Paul Gschwendtner c3f2420877 refactor(migrations): use proper suffix for object expansion input variables (#57659)
Whenever we migrate object expansion patterns, we may need a temporary
variable to generate a construct like:

```ts
const {bla: blaValue} = this;
const bla = blaValue();
```

We should instead use `blaInput` as the name for the temporary
variable. For narrowing constants, `blaValue` is correct, but here
it's an actual reference to the input / signal.

PR Close #57659
2024-09-04 20:07:18 +00:00
Paul Gschwendtner aa439662af refactor(migrations): speed up migration for subset of signal inputs (#57659)
With the preparation work from previous commits, we are able to reduce
analysis time of the migration from e.g. whole Material repo 7seconds to
0.1seconds when the migration is invoked via the VSCode extension.

This is possible because we can avoid many expensive type checking
lookups if we know what inputs are actually migrated. We do this by
adding some naive pre-check to see if identifiers are possibly pointing
to a migrated input.

This is possible now because we no longer migrate aliased identifiers
for object expansion, but instead migrate directly at object
expansion declaration. This allows us to assume that all possible
references to inputs must go through identifiers that are named like
the original input class field name.

PR Close #57659
2024-09-04 20:07:18 +00:00
Paul Gschwendtner f694acb587 refactor(language-service): improve error messaging for signal input refactoring (#57659)
Instead of printing the enum name as the reason why migration did not
complete, we should print some human-readable descriptions.

This commit implements this. This logic may also be useful for the
devkit comment generation, or CLI usage.

In addition, we expose another VSCode refactoring to try via best effort
mode. There is no way for prompting, or adding multiple actions for the
same refactoring, so we expose a new refactoring.

PR Close #57659
2024-09-04 20:07:18 +00:00
Paul Gschwendtner 9c31ba95e5 refactor(migrations): properly apply edits in signal input refactoring action (#57659)
The language service expects absolute paths, but Tsurge only deals with
project relative paths. This commit fixes this.

PR Close #57659
2024-09-04 20:07:18 +00:00
Paul Gschwendtner d8338b5f87 refactor(migrations): generate blocks to support narrowing inside arrow function (#57659)
Whenever the signal migration discovers multiple references in the same
control flow container, it assumes narrowing and wants to preserve this
functionality. It does this by introducing temporary variables.

This works fine, but currently there is an edge case with arrow
functions, as those can also turn into blocks, but aren't considered as
such in the current code. This commit fixes this, so that arrow
functions will be converted to be block-based if necessary.

PR Close #57659
2024-09-04 20:07:17 +00:00
Pawel Kozlowski 9da21f798d feat(migrations): replace .next usage on outputs (#57654)
This commits extends the decorator-based output migration
to replace .next usage (not supported with the output function)
with .emit (supported in both decorator-based and function based
outputs).

PR Close #57654
2024-09-04 17:05:56 +00:00
Pawel Kozlowski 71f5ef2aa5 fix(migrations): change imports to be G3 compatible (#57654)
A set of fixes to the import paths - the goal is to make the
output migration compatible with the G3 infrastructure.

PR Close #57654
2024-09-04 17:05:56 +00:00
twerske 89d7351f81 docs: update top level banner styles (#57503)
PR Close #57503
2024-09-04 17:05:26 +00:00
Angular Robot 69c2ef7a2d build: update io_bazel_rules_sass digest to 5a7e3f4 (#57649)
See associated pull request for more information.

PR Close #57649
2024-09-04 17:04:53 +00:00
Arshjeet2003 e2d64947cd docs: Add fallback content for <ng-content> in content projection guide (#57513)
Angular 18 introduced fallback content for <ng-content>. This commit updates the docs of content projection guide to contain fallback content for <ng-content>.

PR Close angular#57083

PR Close #57513
2024-09-04 17:04:22 +00:00
Andrew Kushnir 3c756848f7 release: cut the v19.0.0-next.3 release 2024-09-04 08:32:56 -07:00
Andrew Kushnir c19b02f6f4 docs: release notes for the v18.2.3 release 2024-09-04 08:27:50 -07:00
Kristiyan Kostadinov 8da9fb49b5 feat(language-service): add code fix for unused standalone imports (#57605)
Adds an automatic code fix to the language service that will remove unused standalone imports.

PR Close #57605
2024-09-03 14:30:56 -07:00
Kristiyan Kostadinov a2e4ee0cb3 feat(compiler): add diagnostic for unused standalone imports (#57605)
Adds a new diagnostic that will report cases where a declaration is in the `imports` array, but isn't being used anywhere. The diagnostic is reported as a warning by default and can be controlled using the following option in the tsconfig:

```
{
  "angularCompilerOptions": {
    "extendedDiagnostics": {
      "checks": {
        "unusedStandaloneImports": "suppress"
      }
    }
  }
}
```

**Note:** I'll look into a codefix for the language service in a follow-up.

Fixes #46766.

PR Close #57605
2024-09-03 14:30:56 -07:00
Paul Gschwendtner a777bee3de refactor(migrations): improve element binding migration for input migration (#57645)
Currently we detect element bindings as normal references and inside
usages we simply unwrap its usages. This works, but breaks in situations
like the following:

- When the expressions are narrowed. Narrowing analysis does not support
  aliased inputs. E.g. `const {myInput: alias} = this`. We could add
  this, but it would complexify the logic.

- When binding patterns deeply access value properties directly. E.g.
  `const {myInput: {value}} = this;`

In addition, the current approach requires us to understand that aliases
may point to inputs. This means we need to check all identifiers if they
point to Angular inputs. We could optimize this, but it's much easier if
we can simply assume that we only need to "verify" identifiers that have
names of "known inputs". This would significantly speed up turnaround in
the language service integration.

In addition, it would be more _correct_, semantically to directly access
the value of the input at object expansion, versus later.

PR Close #57645
2024-09-03 14:29:55 -07:00
Paul Gschwendtner 0764981f3a refactor(migrations): add performance logging for input reference lookups (#57645)
Adds logic to capture performance timings when resolving input
references. This is useful for debugging and improving integration in
the VSCode extension.

PR Close #57645
2024-09-03 14:29:55 -07:00
Paul Gschwendtner 61dfb2b03f refactor(migrations): share ts.Printer for signal input migration (#57645)
Instead of re-creating printers everywhere, we should re-use the same
printer throughout the migration.

PR Close #57645
2024-09-03 14:29:54 -07:00
Paul Gschwendtner ec94e1ecb0 refactor(migrations): move reference signal input migration into dedicated file (#57645)
Moves the rather complicated reference migration logic for the input
migration into a separate method. This cleans up the logic and makes way
for an additional complexity with regards to element bindings.

PR Close #57645
2024-09-03 14:29:54 -07:00
Paul Gschwendtner 1251ee0ac6 refactor(migrations): share logic for looking up property access (#57645)
This commit shares the logic for looking up a property access, using
`ts.Type` information. This is helpful in case where no linked TS
symbols are available; e.g. templates in test files without TCB.

This helper will be useful for handling object expansion in the signal
input migration; resolving references like `const {x} = this`.

PR Close #57645
2024-09-03 14:29:54 -07:00
Paul Gschwendtner 108a88ca61 refactor(language-service): support caching in code refactorings (#57645)
Instead of creating instances of refactoring whenever the language
service loads, we should lazily create these upon first "application".

This will speed up loading of the language service, while it also gives
us the ability to implement caching in code refactorings to speed up
subsequent applications; leveraging e.g. the `script versions` from the
TS server project.

PR Close #57645
2024-09-03 14:29:54 -07:00
Doug Parker 1f87cba204 release: bump Angular DevTools version to 1.0.18 (#57585)
PR Close #57585
2024-09-03 10:43:21 -07:00
Alex Rickabaugh be2e49639b feat(core): introduce afterRenderEffect (#57549)
Implement the `afterRenderEffect` primitive, which creates effect(s) that
run as part of Angular's `afterRender` sequence. `afterRenderEffect` is a
useful primitive for expressing DOM operations in a declarative, reactive
way.

The API itself mirrors `afterRender` and `afterNextRender` with one big
difference: values are propagated from phase to phase as signals instead of
as plain values. As a result, later phases may not need to execute if the
values returned by earlier phases do not change.

PR Close #57549
2024-09-03 10:40:45 -07:00
Matthieu Riegler c2892fee58 fix(http): Dynamicaly call the global fetch implementation (#57531)
Instead of using the reference that existing when `FetchBackend` is setup.

fixes #57527

PR Close #57531
2024-09-03 09:10:23 -07:00
Alex Rickabaugh fe5c4e086a fix(elements): support output()-shaped outputs (#57535)
Previously Elements was assuming that every output was an RxJS `Subject` and
supports `.pipe()`. This is not true for `output()`-based outputs which
have `.subscribe()` but not `.pipe()`. This commit fixes such outputs by
using a `new Observable` instead of `map` to forward outputs.

PR Close #57535
2024-09-03 09:08:29 -07:00
Alan Agius 3896f86865 refactor(migrations): switch from esbuild to Rollup for schematics bundling (#57602)
Replaces esbuild with Rollup for bundling schematics to support code splitting, as esbuild does not handle code splitting when targeting CommonJS modules.

**Before:**
```
du -sh dist/bin/packages/core/npm_package/schematics
7.7M    dist/bin/packages/core/npm_package/schematics
```

**After:**
```
du -sh dist/bin/packages/core/npm_package/schematics
3.1M    dist/bin/packages/core/npm_package/schematics
```

PR Close #57602
2024-09-03 09:07:03 -07:00
Andrew Scott 36d8d19dc1 refactor(core): removing a pending task delays stability until the next tick (#57570)
This commit updates the public API for pending tasks to schedule an
application tick, effectively making the stability async when the last
task is removed.

PR Close #57570
2024-09-03 08:50:42 -07:00
Ilia Brahinets 9e83ca8bc6 docs: Fix 'EnvironmentInjector' description (#57582)
PR Close #57582
2024-09-03 08:50:04 -07:00
Kristiyan Kostadinov aa8eb15ddf build: delete v18 migrations (#57603)
We don't need to ship the migrations for v18 once we're in v19.

PR Close #57603
2024-09-03 07:59:10 -07:00
Pawel Kozlowski e6e5d29e83 feat(core): initial version of the output migration (#57604)
Initial version of the migration that changes decorator-based
outputs to the equivalent form using new authoring functions.

PR Close #57604
2024-09-03 07:58:20 -07:00
Paul Gschwendtner 2679dcfd44 refactor(migrations): simplify signal input migration language-service integration (#57606)
Instead of some special hook that relies on mutation to filter inputs in
the signal input migration, we are now introducing a new configuration
interface where the language-service can pass a filter method.

This makes the code more readable. We also need the filter method to
support filtering based on directories. E.g. when the migration runs
against sub-folders, all inputs outside of the folder should be
considered incompatible; to not migrate incorrectly.

PR Close #57606
2024-09-03 07:57:04 -07:00
Paul Gschwendtner a8e3ba9550 refactor(migrations): properly handle cases of --strict=false in signal input migration (#57629)
Sometimes `--strictPropertyInitialization` is not enabled, while strict
null checks is enabled. In those cases, `undefined` cannot be used as
initial value with `input()`, nor can we expand the type of the input.

We can migrate those instances to `undefined!` to preserve the original
semantics and behavior. In addition, in the future we may leave a TODO
or we may consider skipping migration of such inputs.

PR Close #57629
2024-09-03 07:55:09 -07:00
Paul Gschwendtner a65e87457e refactor(migrations): add explicit test for non-null assertions (#57629)
Adds an explicit test to state the situation about non-null assertions
and that we don't remove the exclamation marks here for now.

PR Close #57629
2024-09-03 07:55:09 -07:00
Angular Robot 5ce9abfd63 build: update babel dependencies to v7.25.6 (#57634)
See associated pull request for more information.

PR Close #57634
2024-09-03 07:52:12 -07:00
Angular Robot 5a2faed13d build: update scorecard action dependencies (#57636)
See associated pull request for more information.

PR Close #57636
2024-09-03 07:51:21 -07:00
Angular Robot 4c82eb23cb build: update all non-major dependencies (#57633)
See associated pull request for more information.

PR Close #57633
2024-09-03 07:49:47 -07:00
Angular Robot fc1734441b build: update dependency diff to v6 (#57631)
See associated pull request for more information.

PR Close #57631
2024-09-03 07:49:04 -07:00
Alfredo González 7defbb1642 docs(upgrade): change example wording on Input tutorial (#57625)
PR Close #57625
2024-09-03 07:48:15 -07:00
Matthieu Riegler a84cecfc99 docs(docs-infra): add support for extends/implements on API entries (#57588)
PR Close #57588
2024-09-03 07:47:25 -07:00
Matthieu Riegler 39b7be8588 refactor(compiler-cli): Add support for inheritance in API extraction (#57588)
This commit adds the `extends` and `implements` properties to the `ClassEntry` & `InterfaceEntry`

PR Close #57588
2024-09-03 07:47:24 -07:00
Matthieu Riegler 3bafda20c3 docs(docs-infra): fix navigation between API pages (#57492)
PR Close #57492
2024-08-30 11:12:25 -07:00
Matthieu Riegler b031b640b9 docs(docs-infra): Add set of unit tests to the API markdown parsing (#57492)
PR Close #57492
2024-08-30 11:12:25 -07:00
Matthieu Riegler b96e75b89a docs(docs-infra): Improve styling around API pages (#57492)
PR Close #57492
2024-08-30 11:12:25 -07:00
Matthieu Riegler 55387c5b56 docs(docs-infra): Improve support for deprecated methods (#57492)
PR Close #57492
2024-08-30 11:12:25 -07:00
Matthieu Riegler 5e42769ee9 docs: ensure the all _ are replaced by slash for API entry urls. (#57600)
fixes #57599

PR Close #57600
2024-08-30 07:39:36 -07:00
Andrew Kushnir 001f319865 Revert "refactor(compiler-cli): extract function overload separatly (#56489)" (#57594)
This reverts commit 37b88a5a98.

PR Close #57594
2024-08-29 16:21:46 -07:00
David Valentine 1d79cbde3b docs: update common-router-tasks to include sample dynamic fragment (#57590)
Remove specific reference to "Tour of Heroes" tutorial and add sample route for use in the example for reference.

Co-authored-by: Andrew Scott <atscott01@gmail.com>

PR Close #57590
2024-08-29 15:20:05 -07:00
Matthieu Riegler 466e21399f docs: api sub-entries should have / in urls. (#57593)
`@angular/animations/browser` => `api/animations/browser/xyz`

PR Close #57593
2024-08-29 15:18:59 -07:00
Paul Gschwendtner 2ad9609a8d refactor(migrations): pass project-relative paths for tsurge replacements (#57584)
This allows for the replacements to be conveniently passed between
migration stages. This is especially relevant in 1P where stages may
have different root directories.

Tsunami attempts to relativize paths in general, similar to how we do
here, but this doesn't work with e.g. Funnel-based migrations where
replacements are serialized in between stages; and where the migration
stage at the end doesn't know about the previous root directory anymore.

PR Close #57584
2024-08-29 14:28:02 -07:00
Matthieu Riegler b226dab0f6 docs: revert changes on API entries urls (#57589)
The name `angular_` shouldn't be included in the URL.

fixes #57587

PR Close #57589
2024-08-29 14:25:26 -07:00
Matthieu Riegler 01030d58a7 docs(docs-infra): Add support for cross-links on API pages (#57346)
PR Close #57346
2024-08-29 13:39:58 -07:00
Matthieu Riegler ea3d37687b refactor(compiler-cli): Add a map of every symbols used inside a package (#57346)
This commit changes the structure of the API extraction files to include all symbols used inside a package.

The structure is a `Map`, Symbol => package
eg: 'ApplicationRef' => '@angular/core'

PR Close #57346
2024-08-29 13:39:58 -07:00
Kristiyan Kostadinov 8bcc663a53 feat(core): drop support for TypeScript 5.4 (#57577)
TypeScript 5.4 is no longer supported.

BREAKING CHANGE:
* TypeScript versions less than 5.5 are no longer supported.

PR Close #57577
2024-08-29 10:19:20 -07:00
Matthieu Riegler 6c2beba63d docs(docs-infra): Add dev-mode only mention for core/global (#57365)
PR Close #57365
2024-08-29 10:17:35 -07:00
Joey Perrott 8bddab6e95 ci: use version 13.15.1 of firebase-tools for deployment of doc sites (#57583)
Use 13.15.1 instead of tracking to latest to prevent unexpected and unbisectable changes.

PR Close #57583
2024-08-29 10:14:42 -07:00
Paul Gschwendtner 6e28f96d5f refactor(migrations): ensure control flow analysis of signal input migration works with all TS versions (#57566)
Ensures that the control flow analysis version of the signal input works
with all TS versions currently supported.

PR Close #57566
2024-08-29 07:51:38 -07:00
Paul Gschwendtner 5319d67d83 refactor(migrations): cleanup TODOs in signal input migration (#57566)
Cleans up remaining TODOs in the signal input migration, and other
small clean ups.

PR Close #57566
2024-08-29 07:51:38 -07:00
Paul Gschwendtner 82f4590216 refactor(migrations): avoid relative imports in schematic code (#57214)
This allows us to bundle e.g. the signal input migration into
language-service without duplicating code. Rollup with Bazel may end up
duplicating because it isn't able to associate the local sources with
the linked modules from `node_modules/@angular/compiler-cli`.

PR Close #57214
2024-08-29 07:50:41 -07:00
Paul Gschwendtner 1f067f4507 feat(language-service): add code reactoring action to migrate @Input to signal-input (#57214)
(experimental at this point)

Language service refactoring action that can convert `@Input()`
declarations to signal inputs.

The user can click on an `@Input` property declaration in e.g. the VSCode
extension and ask for the input to be migrated. All references, imports and
the declaration are updated automatically.

PR Close #57214
2024-08-29 07:50:41 -07:00
Paul Gschwendtner 56ee47f2ec feat(language-service): allow code refactorings to compute edits asynchronously (#57214)
VSCode explicitly split code actions into two stages:

 - what actions are active?
 - what are the edits, if the user presses the button.

The latter stage may take longer to compute complex edits, perform
analysis. This stage is currently implemented via our non-LSP standard
`applyRefactoring` method. We should make it asynchronous, so that it
can easily integrate with migrations that aren't synchronous/or compute
in parallel.

Long-term we may want to revisit this given integration in 1P with the
language service as an actual TS server plugin; but it's not necessary
right now and we shouldn't block the effort on this for now.

PR Close #57214
2024-08-29 07:50:40 -07:00
Paul Gschwendtner 4900225aee build: move language-service utils into its own bazel target (#57214)
This allows us to split up the BUILD rules a bit further, so that
refactorings can be their own BUILD target. This is beneficial as
e.g. refactorings may rely on migration code from Angular core etc.
and this allows for more fine-grained visibility and a better conceptual
split.

PR Close #57214
2024-08-29 07:50:40 -07:00
Matthieu Riegler 37b88a5a98 refactor(compiler-cli): extract function overload separatly (#56489)
in order for the docs to process function entry, this commit refactor function extraction by keeping the implementation as a the default entry and adds all the overloads into a separate array of entries.

PR Close #56489
2024-08-29 07:49:38 -07:00
Angular Robot 48beea1073 build: update all non-major dependencies (#57541)
See associated pull request for more information.

PR Close #57541
2024-08-29 07:45:53 -07:00
Romain fcdba99ea4 docs(docs-infra): fix small mistake in inject-function.md (#57517)
PR Close #57517
2024-08-29 07:44:28 -07:00
Matthieu Riegler 641f8f1e40 docs: Add mention to ENVIRONMENT_INITIALIZER (#57464)
Explicitly mention that `ENVIRONMENT_INITIALIZER` should not be async.

PR Close #57464
2024-08-29 07:43:48 -07:00
Vlad Boisa cacf2b6fc6 docs(docs-infra): remove hash before link (#57351)
Remove hash in link for correct view

Fixes #57349

docs(docs-infra): change the link

Change the link with name of class and method

docs: fix the link name

PR Close #57351
2024-08-29 07:42:13 -07:00
Matthieu Riegler e404f88092 docs(docs-infra): show usageNotes only for methods. (#57343)
Prior to this change, function and methods showed their usage notes which resulted in duplicate displays for functions.

Fixes #57339

PR Close #57343
2024-08-29 07:39:50 -07:00
Alex Rickabaugh 4b04a0e61a release: cut the v19.0.0-next.2 release 2024-08-28 14:38:27 -07:00
Alex Rickabaugh 557aa92754 docs: release notes for the v18.2.2 release 2024-08-28 14:34:22 -07:00
Alex Rickabaugh 013d02d21f Revert "fix(http): Dynamicaly call the global fetch implementation (#57531)" (#57571)
This reverts commit 21445a2932.

Reason: failing test

PR Close #57571
2024-08-28 12:42:27 -07:00
Paul Gschwendtner b7f3baf8b1 refactor(migrations): forward-fix conflicts with generic of ProgramInfo. (#57565)
One PR removed the generic of `ProgramInfo`, while another PR,
separately merged, introduced new instanes of `ProgramInfo`.

PR Close #57565
2024-08-28 09:17:33 -07:00
AleksanderBodurri 774d9832ab fix(devtools): correctly set environment injector path in the case where there are no element injectors (#57442)
Previously, when "Hide injectors with no providers" was toggled, it is possible for the injector tree visualizer to have no Element injectors to visualize. This caused a bug in the slicing logic that splits apart the environment and element injectors from DI resolution paths within the injector tree component in Angular DevTools.

Now, this logic is correctly handled when there are no element injectors to visualize.

PR Close #57442
2024-08-28 08:49:34 -07:00
Matthieu Riegler ea1447532a docs: remove @searchKeywords (#57560)
This tag is not supported.

fixes #57540

PR Close #57560
2024-08-28 08:49:05 -07:00
Paul Gschwendtner 29e526c147 refactor(migrations): allow tsurge migrations to run with just NgCompiler (#57562)
This is important so that migrations can easily be wired up in the
language service where only `NgCompiler` is available.

PR Close #57562
2024-08-28 08:47:45 -07:00
Alan Agius d5cc9d5d71 feat(bazel): remove unused ESM2022 from APF (#57559)
We have removed the `esm2022` directory from the generated package, as it was unused and contributed 7.7 MB to `@angular/core`. The `ng_package` rule still passes `esm2022` to the packager to perform `analyzeFileAndEnsureNoCrossImports`.

A moment of reflection:
You've always been there, full of potential, yet never called upon. Now, we bid you farewell.

PR Close #57559
2024-08-28 08:45:38 -07:00
Jeremy Elbourn 7f42e69149 docs: cover time-based statements in docs authoring guide (#57536)
Adds some additional guidance on writing content that is tied to a
specific version or point in time.

PR Close #57536
2024-08-28 08:45:10 -07:00
Ben Hong 055e0d9835 docs: update template in-depth guide (#57475)
PR Close #57475
2024-08-28 08:44:31 -07:00
Paul Gschwendtner c4681989ac refactor(migrations): properly handle multi query migration (#57556)
Properly handles queries with multiple results, by extracting the
type from the `QueryList`.

Also adds more tests and handles imports.

PR Close #57556
2024-08-28 08:43:38 -07:00
Paul Gschwendtner 86e6f7b5d6 refactor(migrations): initial migration logic for converting to signal queries (#57556)
Adds initial migration logic to convert decorator query declarations to
signal queries.

We will re-use more part of the signal input migration in follow-ups, to
properly migrate, and e.g. even handle control flow

PR Close #57556
2024-08-28 08:43:38 -07:00
Andrew Scott 226a67dabb fix(core): Schedulers run in zone above Angular rather than root (#57553)
This change updates the timers used in the coalescing and hybrid mode
schedulers to run in the zone above Angular rather than the root zone.
Running the timers in the root zone makes them impossible to flush when
using `fakeAsync` and also may make them invisible to other zones in the
hierarchy that might have desirable behaviors such as task/perf tracking.

fixes #56767

BREAKING CHANGE: The timers that are used for zone coalescing and hybrid
mode scheduling (which schedules an application state synchronization
when changes happen outside the Angular zone) will now run in the zone
above Angular rather than the root zone. This will mostly affect tests
which use `fakeAsync`: these timers will now be visible to `fakeAsync`
and can be affected by `tick` or `flush`.

PR Close #57553
2024-08-27 15:07:30 -07:00
Alex Rickabaugh 76b9e2b836 Revert "refactor(migrations): initial migration logic for converting to signal queries (#57525)" (#57555)
This reverts commit 6f5b435a69.

Reason: breaks g3

PR Close #57555
2024-08-27 14:03:06 -07:00
Alex Rickabaugh 0ba2a95bf6 Revert "refactor(migrations): properly handle multi query migration (#57525)" (#57555)
This reverts commit f454ad3bcf.

Reason: breaks g3

PR Close #57555
2024-08-27 14:03:06 -07:00
Matthieu Riegler 21445a2932 fix(http): Dynamicaly call the global fetch implementation (#57531)
Instead of using the reference that existing when `FetchBackend` is setup.

fixes #57527

PR Close #57531
2024-08-27 13:34:19 -07:00
Andrew Scott 90b5fef9dc fix(docs-infra): Fix scrolling in application (#57554)
Since the change to the after render hooks, the "this" context must be
correct for the destroy to work.

fixes #57552

PR Close #57554
2024-08-27 13:32:13 -07:00
Joey Perrott 5ba8ea8725 build: update to latest version of @angular/build-tooling (#57551)
Update to the latest version of @angular/build-tooling

PR Close #57551
2024-08-27 13:31:14 -07:00
Kristiyan Kostadinov 96b698ce02 test: avoid leaking some LViews in tests (#57546)
We had some tests that were leaking LViews, because we were testing things like `createComponent`, but not destroying them afterwards. These changes clean up most of them, although there are a handful still left that I didn't have time to fully track down.

PR Close #57546
2024-08-27 13:29:08 -07:00
Kristiyan Kostadinov a3cdbfe87f fix(core): avoid leaking memory if component throws during creation (#57546)
When we create the LView for a component, we track it in the `TRACKED_LVIEWS` map. It gets untracked when it is destroy, but if it throws during creation, the user won't have access to a `ComponentRef` in order to clean it up.

These changes automatically untrack the related LViews if the component couldn't be created.

PR Close #57546
2024-08-27 13:29:08 -07:00
Alan Agius 099955bdf3 build: remove Sourcemaps from Schematics bundles (#57545)
This commit reduces the bundle size of `@angular/core` by 19.5 MB by excluding sourcemaps from the schematics.

Since the `esbuild` rule doesn't allow disabling sourcemaps directly, we work around this by setting the sourcemaps to `external`. Afterward, we filter the output to include only the `.js` files.

PR Close #57545
2024-08-27 13:27:33 -07:00
Angular Robot 97792275b9 build: update github/codeql-action action to v3.26.5 (#57543)
See associated pull request for more information.

PR Close #57543
2024-08-27 13:25:58 -07:00
Angular Robot 85e08c654a build: update dependency @babel/generator to v7.25.5 (#57542)
See associated pull request for more information.

PR Close #57542
2024-08-27 13:24:59 -07:00
Andrew Kushnir ca2610fb93 refactor(compiler): extend directive mock to avoid failing at matching logic (#57537)
This commit updates a directive mock instance to include an extra field that a compiler code was expecting, which caused issues while processing elements with local refs and exported directives.

PR Close #57537
2024-08-27 13:23:30 -07:00
Paul Gschwendtner 37f8c9a1d9 ci: fix fw-testing group triggering for schematics testing changes (#57526)
The `fw-testing` group should not trigger for schematic changes.

PR Close #57526
2024-08-27 13:21:47 -07:00
Andrew Scott 8f6308457f fix(router): Do not unnecessarily run matcher twice on route matching (#57530)
This commit makes a small update to the route matching algorithm to
avoid running the matcher function of a route twice.

fixes #57511

PR Close #57530
2024-08-27 13:20:58 -07:00
Paul Gschwendtner f454ad3bcf refactor(migrations): properly handle multi query migration (#57525)
Properly handles queries with multiple results, by extracting the
type from the `QueryList`.

Also adds more tests and handles imports.

PR Close #57525
2024-08-27 13:20:19 -07:00
Paul Gschwendtner 6f5b435a69 refactor(migrations): initial migration logic for converting to signal queries (#57525)
Adds initial migration logic to convert decorator query declarations to
signal queries.

We will re-use more part of the signal input migration in follow-ups, to
properly migrate, and e.g. even handle control flow

PR Close #57525
2024-08-27 13:20:19 -07:00
AleksanderBodurri 99e40574cb fix(devtools): ignore DOM Nodes from other frames when performing render tree detection (#57518)
Previously, if an application had DOM Nodes injected into it from other frames, DevTools would fail to parse component trees with the render tree strategy properly because of an instanceof Node check that the framework performs.

Now we check for instanceof Node before even calling framework debug APIs on DOM nodes so that we can skip nodes that come from other frames entirely.

PR Close #57518
2024-08-27 13:19:35 -07:00
Angular Robot 5fed53a57a build: update dependency jsdom to v25 (#57514)
See associated pull request for more information.

PR Close #57514
2024-08-27 13:17:38 -07:00
Matthieu Riegler d73f2e91a2 refactor(animations): Add loading strategy for the Async Animations (#57493)
In some cases apps need to schedule a bit later the loading of the animation module. This private token will allow to investigate which other strategy could be useful.

PR Close #57493
2024-08-27 13:15:51 -07:00
Chintan Kavathia 7b1e5be20b fix(core): fallback to default ng-content with empty projectable nodes. (#57480)
BREAKING CHANGE: Render default fallback with empty `projectableNodes`.

When passing an empty array to `projectableNodes` in the `createComponent` API, the default fallback content of the `ng-content` will be rendered if present. To prevent rendering the default content, pass `document.createTextNode('')` as a `projectableNode`.

For example:

```ts
// The first ng-content will render the default fallback content if present
createComponent(MyComponent. { projectableNodes: [[], [secondNode]] });

// To prevent projecting the default fallback content:
createComponent(MyComponent. { projectableNodes: [[document.createTextNode('')], [secondNode]] });

```

Fixes #57471

PR Close #57480
2024-08-27 13:15:17 -07:00
Alex Castle 50f08e6c4b feat(common): automatically use sizes auto in NgOptimizedImage (#57479)
Prepend 'auto' to value of the `sizes` prop generated by NgOptimizedImage, when image has a responsive srcset and is lazy-loaded.

PR Close #57479
2024-08-27 13:14:48 -07:00
Doug Parker 5a0ff41f75 refactor(compiler): ensure context is always provided for WhitespaceVisitor (#56507)
When disabling `i18nPreserveSignificantWhitespaceForLegacyExtraction` I was looking at a test case with ICU messages containing leading and trailing whitespace:

```angular
<div i18n>
  {apples, plural, =other {I have many apples.}}
</div>
```

This would historically generate two messages:

```javascript
const MSG_TMP = goog.getMsg('{apples, plural, =other {I have many apples.}}');
const MSG_FOO = goog.getMsg(' {$ICU} ', { 'ICU': MSG_TMP });
```

But I found that I was getting just one message:

```javascript
const MSG_TMP = goog.getMsg(' {apples, plural, =other {I have many apples.}} ');
```

This is arguably an improvement, but changed the messages and message IDs, which isn't desirable with this option. I eventually traced this back to the `isIcu` initialization in [`i18n_parser.ts`](/packages/compiler/src/i18n/i18n_parser.ts):

```typescript
const context: I18nMessageVisitorContext = {
  isIcu: nodes.length == 1 && nodes[0] instanceof html.Expansion,
  // ...
};
```

[`_I18nVisitor.prototype.visitExpansion`](/packages/compiler/src/i18n/i18n_parser.ts) uses this to decide whether or not to generate a sub-message for a given ICU expansion:

```typescript
if (context.isIcu || context.icuDepth > 0) {
  // Returns an ICU node when:
  // - the message (vs a part of the message) is an ICU message, or
  // - the ICU message is nested.
  const expPh = context.placeholderRegistry.getUniquePlaceholder(`VAR_${icu.type}`);
  i18nIcu.expressionPlaceholder = expPh;
  context.placeholderToContent[expPh] = {
    text: icu.switchValue,
    sourceSpan: icu.switchValueSourceSpan,
  };
  return context.visitNodeFn(icu, i18nIcu);
}

// Else returns a placeholder
// ICU placeholders should not be replaced with their original content but with the their
// translations.
// TODO(vicb): add a html.Node -> i18n.Message cache to avoid having to re-create the msg
const phName = context.placeholderRegistry.getPlaceholderName('ICU', icu.sourceSpan.toString());
context.placeholderToMessage[phName] = this.toI18nMessage([icu], '', '', '', undefined);
const node = new i18n.IcuPlaceholder(i18nIcu, phName, icu.sourceSpan);
return context.visitNodeFn(icu, node);
```

Note that `isIcu` is the key condition between these two cases and depends on whether or not the ICU expansion has any siblings. The introduction of `WhitespaceVisitor` to `I18nMetaVisitor` trims insignificant whitespace, including empty text nodes not adjacent to an ICU expansion (from [`WhitespaceVisitor.prototype.visitText`](/packages/compiler/src/ml_parser/html_whitespaces.ts)):

```typescript
const isNotBlank = text.value.match(NO_WS_REGEXP);
const hasExpansionSibling =
  context && (context.prev instanceof html.Expansion || context.next instanceof html.Expansion);

if (isNotBlank || hasExpansionSibling) {
  // Transform node by trimming it...
  return trimmedNode;
}

return null; // Drop node which is empty and has no ICU expansion sibling.
```

`hasExpansionSibling` was intended to retain empty text nodes leading or trailing an ICU expansion, however `context` was `undefined`, so this check failed and the leading / trailing text nodes were dropped. This resulted in trimming the ICU text by dropping the leading / trailing whitespace nodes. Having only a single ICU expansion with no leading / trailing text nodes caused `_I18nVisitor` to initialize `isIcu` incorrectly and caused it to generate one message instead of two.

`WhitespaceVisitor` is supposed to get this context from `visitAllWithSiblings`. So the fix here is to make sure `WhitespaceVisitor` is always visited via this function which provides the required context. I updated all usage sites to make sure this context is use consistently and implemented the `WhitespaceVisitor.prototype.visit` method to throw when the context is missing to make sure we don't encounter a similar mistake in the future.

Unfortunately this broke one compliance test. Specifically the [`icu_logic/icu_only.js`](/home/douglasparker/Source/ng/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/icu_logic/icu_only.js) test which changed from generating:

```javascript
function MyComponent_Template(rf, ctx) {
  if (rf & 1) {
    i0.ɵɵi18n(0, 0);
  }
  // ...
}
```

To now generating:

```javascript
function MyComponent_Template(rf, ctx) {
  if (rf & 1) {
    i0.ɵɵtext(0, " ");
    i0.ɵɵi18n(1, 0);
    i0.ɵɵtext(2, "\n");
  }
  // ...
}
```

This test uses the default value `preserveWhitespaces: false` (`i18nPreserveSignificantWhitespaceForLegacyExtraction` should not affect compiled JS output, we already retain significant whitespace there). So what this indicates to me is that ICU logic is already broken because it's not preserving significant whitespace in this case. My change is probably a bug fix, but one which would affect the compiled runtime, which is not in scope here. The root cause is because using `visitAllWithSiblings` everywhere means the context is retained correctly in this case and the whitespace is leading/trailing an ICU message, therefore it is retained per the logic of `WhitespaceVisitor.prototype.visitText` I mentioned eariler.

To address this, I left one usage of `WhitespaceVisitor` using `html.visitAll` instead of `visitAllWithSiblings` to retain this bug. I has to lossen the assertion I put in `WhitespaceVisitor.prototype.visit` to make this possible, but it should still throw by default when misused, which is the important part.

PR Close #56507
2024-08-27 13:13:56 -07:00
Doug Parker dab722f9c8 refactor(compiler): add i18nPreserveWhitespaceForLegacyExtraction (#56507)
This configures whether or not to preserve whitespace content when extracting messages from Angular templates in the legacy (View Engine) extraction pipeline.

This includes several bug fixes which unfortunately cannot be landed without changing message IDs in a breaking fashion and are necessary to properly trim whitespace. Instead these bug fixes are included only when the new flag is disabled.

PR Close #56507
2024-08-27 13:13:56 -07:00
Andrew Scott 0300dd2e18 fix(core): Fix fixture.detectChanges with autoDetect disabled and zoneless (#57416)
When disabling autodetect (not recommeneded) with zoneless,
`fixture.detectChanges` would previously not refresh the fixture's component.

PR Close #57416
2024-08-27 13:12:44 -07:00
Andrew Scott 6a7c5ae958 refactor(core): allow disabling checkNoChanges with zoneless (#57416)
Disabling `checkNoChanges` in `ComponentFixture.detectChanges` was an
error for the zoneless fixture since it was not yet working. This now
allows checkNoChanges to be disabled. This option isn't really
used/shouldn't be used by anyone except the FW so marked as a refactor.

PR Close #57416
2024-08-27 13:12:44 -07:00
Andrew Scott 455cd1edc3 refactor(core): Merge implementations of ComponentFixture (#57416)
This commit removes the abstract base class and two separate
implementations of `ComponentFixture` for zone vs zoneless. Now that the
behaviors have gotten close enough to the same, the diverged concrete
implementations serve less value. Instead, the different behaviors can
be easily handled in if/else branches. The difference is now limited to
the default for `autoDetect` and how `detectChanges` functions.

PR Close #57416
2024-08-27 13:12:44 -07:00
Andrew Scott 4e594e175d refactor(core): Move ngZone subscription to base implementation (#57416)
This commit moves the ngZone onError subscription to the base fixture
implementation. While this subscription isn't necessary for zoneless, it does
no harm because the observable never emits.

PR Close #57416
2024-08-27 13:12:44 -07:00
Andrew Scott 122af30373 refactor(core): Merge autoDetectChanges behaviors between fixtures (#57416)
This commit updates the implementations of `autoDetectChanges` to be
shared between the zone-based and zoneless fixtures. This now allows
`autoDetect` to be turned off for zoneless fixtures after it was
previously on because the host view is no longer directly attached to
`ApplicationRef`.

PR Close #57416
2024-08-27 13:12:44 -07:00
Michael van der Luit 564a8d5871 docs(docs-infra): Add query as an url query param to the api reference (#57062)
add an url query param to perform a search on api references directly via the url

PR Close #57062
2024-08-27 12:58:00 -07:00
AleksanderBodurri bfda774995 fix(devtools): catch invalidated extension error to prevent devtools from spamming console (#55697)
When a browser extension is updated it becomes invalidated on currently open pages. If that extension then tries to send a message to those pages through `chrome.runtime.sendMessage(..)` then an error is thrown in the console

For Angular DevTools, this results in spamming the console with "Uncaught Error: Extension context invalidated." errors.

This commit catches that error and removes the event listener that triggers the `chrome.runtime.sendMessage(...)` call.

PR Close #55697
2024-08-27 12:54:44 -07:00
realstealthninja 969dadc8e2 docs: fix typo in recommendations.ts (#57521)
PR Close #57521
2024-08-26 09:17:44 -07:00
Angular Robot 6307f976d2 docs: update Angular CLI help [main] (#57508)
Updated Angular CLI help contents.

PR Close #57508
2024-08-26 09:14:17 -07:00
Kristiyan Kostadinov 46a9569ba8 build: update to TypeScript 5.6 RC (#57507)
Updates the repo to the release candidate of TypeScript 5.6.

PR Close #57507
2024-08-26 09:13:52 -07:00
Charles Lyding 4716c3b966 perf(compiler-cli): reduce duplicate component style resolution (#57502)
Previously, the component handler was processing and resolving stylesheets
referenced via `styleUrl`/`styleUrls` multiple times when generating the
compiler metadata for components. The style resource information collection
for such styles has been further consolidated to avoid repeat resource loader
resolve calls which potentially could be expensive. Further optimization is
possible for the inline style case. However, inline styles here only require
AST traversal and no potentially expensive external resolve calls.

PR Close #57502
2024-08-26 09:13:18 -07:00
Matthieu Riegler 34ce46f7dc docs: fix formating in class-binding (#57447)
fixes #57430

PR Close #57447
2024-08-26 09:12:54 -07:00
Bjarki c9d90786d0 fix(upgrade): Address Trusted Types violations in @angular/upgrade (#57454)
Angular applications that are AngularJS hybrids are currently unable to
adopt Trusted Types due to violations eminating from an innerHTML
assignment in the @angular/upgrade package. This commit allows
developers of such applications to optionally ignore this class of
violations by configuring the Trusted Types header to allow the new
angular#unsafe-upgrade policy.

Note that the policy is explicitly labeled as unsafe as it does not in
any way mitigate the security risk of using AngularJS in an Angular
application, but does unblock Trusted Types adoption enabling XSS
protection for other parts of the application.

The implementation follows the approach taken in @angular/core;
see packages/core/src/util/security.

PR Close #57454
2024-08-26 09:04:47 -07:00
Thomas Nguyen 7a99815146 fix(core): Do not bubble capture events. (#57476)
These should only fire if the target is the same as the targetElement. Also, delete an out of date test since capture/non-capture tests are separately covered.

PR Close #57476
2024-08-23 14:46:54 -07:00
Alex Rickabaugh 0cebfd7462 fix(elements): switch to ComponentRef.setInput & remove custom scheduler (#56728)
The custom element implementation previously used a custom code path for
setting inputs, which contained bespoke code for writing input properties,
detecting whether inputs actually change, marking the component dirty,
scheduling and running CD, invoking `ngOnChanges`, etc. This custom logic
had several downsides:

 * Its behavior different from how Angular components behave in a normal
   template.

   For example, inputs setters were invoked in `NgZone.run`, which (when
   called from outside the zone) would trigger synchronous CD in the
   component, _without_ calling `ngOnChanges`. Only when the custom rAF-
   scheduled `detectChanges()` call triggered would `ngOnChanges` be called.

 * CD always ran multiple times, because of the above. `NgZone.run` would
   trigger CD, and then separately the scheduler would trigger CD.

 * Signal inputs were not supported, since inputs were set via direct
   property writes.

This change refactors the custom element implementation with two changes:

1. `ComponentRef.setInput` is used instead of a custom code path for
   writing inputs.

This allows us to drop all the custom logic related to managing
`ngOnChanges`, since `setInput` does that under the hood. `ngOnChanges`
behavior now matches how the component would behave when _not_ rendered
as a custom element.

2. The custom rAF-based CD scheduler is removed in favor of the main Angular
   scheduler, which now handles custom elements as necessary.

Running `NgZone.run` is sufficient to trigger CD when zones are used, and
the hybrid zoneless scheduler now ensures CD is scheduled when `setInput` is
called even with no ZoneJS enabled. As a result, the dedicated elements
scheduler is now only used when Angular's built-in scheduler is disabled.

As a concession to backwards compatibility, the element's view is also
marked for refresh when an input changes. Doing this allows CD to revisit
the element even if it becomes dirty during CD, mimicking how it would be
detected by the former elements scheduler unconditionally refreshing the
view a second time.

As a part of this change, the elements tests have been significantly
refactored. Previously all of Angular was faked/spied, which had a number
of downsides. For example, there were tests which asserted that change
detection only happens once when setting multiple inputs. This wasn't
actually the case (because of `NgZone.run` - see logic above) but the test
didn't catch the issue because it was only spying on `detectChanges()` which
isn't called from `ApplicationRef.tick()`. Even the components were fake.

Now, the tests use real Angular components and factories. They've also been
updated to not use `fakeAsync`.

A number of tests have been disabled, which were previously asserting
behavior that wasn't matching what was actually happening (as above). Other
tests were disabled due to real differences with `ngOnChanges` behavior,
where the current behavior could be seen as a bug.

Fixes #53981

BREAKING CHANGE: as part of switching away from custom CD behavior to the
hybrid scheduler, timing of change detection around custom elements has
changed subtly. These changes make elements more efficient, but can cause
tests which encoded assumptions about how or when elements would be checked
to require updating.

PR Close #56728
2024-08-23 13:56:11 -07:00
Paul Gschwendtner aacef07838 refactor(migrations): replacements in tsurge are always serializable (#57501)
This removes an unnecessary type wrapping that can be removed because
`Replacements` is expected to be serializable by default.

Similar to how it's done in `TsurgeComplexMigration`.

PR Close #57501
2024-08-23 13:49:31 -07:00
Angular Robot 17f7b258dd build: update dependency mermaid to v11 (#57497)
See associated pull request for more information.

PR Close #57497
2024-08-23 12:59:56 -07:00
Peter 2a07a7f6fc docs: fix typo of ChangeDetectionStrategy in the zoneless guide (#57482)
PR Close #57482
2024-08-23 12:59:09 -07:00
Kristiyan Kostadinov e608e6cfbb fix(zone.js): more robust check for promise-like objects (#57388)
Fixes that Zone.js wasn't checking properly if an object is promise-like.

Fixes #57385.

PR Close #57388
2024-08-23 12:58:29 -07:00
Santosh 57202c4899 docs: add test for i18n code block and fix rendering (#57210)
PR Close #57210
2024-08-23 12:57:15 -07:00
Alex Rickabaugh b80af11bbf refactor(core): restructure AfterRenderManager to connect related phases (#57453)
The `afterRender` infrastructure was first implemented around the idea of
independent, singular hooks. It was later updated to support a spec of
multiple hooks that pass values from one to another as they execute, but the
implementation still worked in terms of singular hooks under the hood. This
creates a number of maintenance issues, and a few bugs. For example, when
one hook fails, further hooks in the pipeline should no longer execute, but
this was hard to ensure under the old design.

This refactoring restructures `afterRender` infrastructure significantly to
introduce the concept of a "sequence", a collection of hooks of different
phases that execute together. Overall, the implementation is simplified
while making it more resilient to issues and future use cases, such as the
upcoming `afterRenderEffect`.

As part of this refactoring, the `internalAfterNextRender` concept is
removed, as well as the unused `queueStateUpdate` concept which used it.

PR Close #57453
2024-08-23 10:15:19 -07:00
Alex Rickabaugh dabfb6de3d refactor(core): track dirtiness bits in ApplicationRef (#57453)
Previously the zoneless scheduler had a concept of whether views needed to
be refreshed or not, based on the notification type that was received. It
tracked this information as a boolean.

This commit refactors things to track dirtiness in `ApplicationRef` itself,
as a `dirtyFlags` field with bits corresponding to either view tree
dirtiness or after-render hooks.

PR Close #57453
2024-08-23 10:15:19 -07:00
Paul Gschwendtner 4e803ae293 refactor(migrations): add support for simpler variant of tsurge migration (#57484)
Introduces a simpler, smaller variant of the current `Tsurge` migration
class. The difference is simply that for the migration phase (the third
stage), some migrations do not need a full set of workers re-analyzing
every compilation unit again to compute the "final migration
replacements".

This can be the case, for example, if a migration eagerly computes all
replacements in the analyze stage, visiting every unit, and then after
deriving the global metadata, problematic replacements are simply
filtered (e.g. via some unique IDs again).

PR Close #57484
2024-08-23 12:01:59 +00:00
Paul Gschwendtner f1f5fa11d9 refactor(migrations): clean up unused google3 code from signal input migration (#57484)
The code was replaced by the automatic Tsurge batch runner. This commit
cleans up the now unused code.

PR Close #57484
2024-08-23 12:01:59 +00:00
Otmane ed920c39c5 docs: fix indentation of file tree in app-shell (#57436)
This commit adds indentations to the file tree section in `app-shell.md`, it makes the tree easier to read. The indentation is now two spaces instead of no spaces.

PR Close #57436
2024-08-22 09:11:49 -07:00
Paweł Kubiak 38fec144dc docs(docs-infra): add top level banner component (#57458)
docs(docs-infra): add top level banner component

- create top level banner component
- write unit tests
- close banner and keep state in the local storage
- fix: support screens of tablets and phones

PR Close #57458
2024-08-22 09:06:46 -07:00
Matthieu Riegler 9867ac1ee9 docs: new date for v19 (#57461)
PR Close #57461
2024-08-22 09:04:41 -07:00
Andrew Kushnir e75e61a637 refactor(compiler): create an internal util method to detect matching directives and pipes (#57466)
This commit adds an internal util method that allows to detect:

* which selectors are matching nodes in a template
* which pipes are present in a template

Both directives and pipes are split into 2 buckets: eagerly used and the ones that might potentially be defer-loaded.

PR Close #57466
2024-08-22 09:04:04 -07:00
Dylan Hunn aff6729398 docs: release notes for the v18.2.1 release 2024-08-22 09:03:04 -07:00
Dylan Hunn 66da115ed8 release: cut the v19.0.0-next.1 release 2024-08-22 08:50:58 -07:00
Andrew Kushnir 5cc63c2135 build: update zone.js peer dependency for core package to 0.15.0 (#57431)
This commit updates zone.js peer dependency versioon for core package to 0.15.0.

PR Close #57431
2024-08-21 13:17:52 -07:00
Andrew Kushnir d1d4adcba2 release: cut the zone.js-0.15.0 release (#57418)
PR Close #57418
2024-08-21 11:30:53 -07:00
Matthieu Riegler cb3128d925 docs(docs-infra): fix regressions around members & deprecations (#57465)
This commit fixes regressions introduced by #57255

PR Close #57465
2024-08-21 11:26:26 -07:00
steciuk 45343f711b docs: remove extra space in DI example code (#57472)
PR Close #57472
2024-08-21 11:25:53 -07:00
Angular Robot 2ed52dde8d build: update github/codeql-action action to v3.26.3 (#57455)
See associated pull request for more information.

PR Close #57455
2024-08-20 13:20:01 -07:00
Angular Robot 2af89449f9 build: update dependency algoliasearch to v5 (#57397)
See associated pull request for more information.

Closes #57387 as a pr takeover

PR Close #57397
2024-08-20 13:17:59 -07:00
Adam Koch 32ddac1fd6 docs: remove incorrect documentation around the use of timezone abbreviations (#57425)
The ability to use an abbreviated timezone was removed in v5 (issue https://github.com/angular/angular/issues/20225 discusses this) and no alternative has been merged. See issue https://github.com/angular/angular/issues/40865 and PR https://github.com/angular/angular/pull/48482 The text suggests there is a way to pass in a timezone other than by an offset but there isn't.

PR Close #57425
2024-08-20 10:51:37 -07:00
Kristiyan Kostadinov b063468027 feat(core): support TypeScript 5.6 (#57424)
Updates the repo to add support for the upcoming TypeScript 5.6.

PR Close #57424
2024-08-19 22:45:45 -07:00
Charles Lyding 9e87593055 feat(compiler-cli): ensure template style elements are preprocessed as inline styles (#57429)
Previously, style elements within a template were used directly and not provided
to the optional transformation step that may be present on the resource host interface.
This causes such styles to not be processed by the Angular CLI's stylesheet pipeline
and could cause the styles to not work properly on all browsers. The style elements
are now processed in the same manner as inline styles within a component's metadata.
Link elements within a stylesheet were already being processed as `styleUrls`
equivalent and there is no behavior change in that regard.

PR Close #57429
2024-08-19 22:45:20 -07:00
Paul Gschwendtner 270fb8349f refactor(migrations): leverage tsurge for signal input migration (#57451)
This commit simplifies the batching support for the signal input
migration by using the new tsurge framework we've built.

This allows for consistent setup across all possible entry-points and
also simplifies the 1P setup given that we can simply use the Tsurge
macros, instead of having to maintain our own Go-based runner.

PR Close #57451
2024-08-19 22:44:42 -07:00
Paul Gschwendtner d3c01efef3 refactor(migrations): improve generic assignability in tsurge and pass more info (#57451)
* Improves some of the generic assignability for tsurge. Anything is
  allowed to be returned from an overridden `prepareProgram` method.
  This is useful for the signal input migration.
* Passes the absolute root paths to migrations. This is helpful for the
  signal input migration and there is no other way to access it. It's
  better to pass specifically, compared to passing the whole unsafe
  `ParsedConfiguration` object.

PR Close #57451
2024-08-19 22:44:42 -07:00
Angular Robot 3afce0f8c2 build: update dependency ngx-progressbar to v12 (#57452)
See associated pull request for more information.

Closes #57443 as a pr takeover

PR Close #57452
2024-08-19 22:43:48 -07:00
Matthieu Riegler f47901ae2e docs(docs-infra): Fix heading parsing (#57386)
fixes #57384

PR Close #57386
2024-08-19 09:24:07 -07:00
Matthieu Riegler eb215ad231 docs(docs-infra): remove remaining ngZone (#57229)
PR Close #57229
2024-08-19 09:22:01 -07:00
Matthieu Riegler b87bbf6c95 docs(docs-infra): Add tests for marked rendering (#57344)
On top of #57338, to make sure we prevent similar regressions on marked rendering.

PR Close #57344
2024-08-19 09:21:16 -07:00
Michael Derfler a2990757cc docs: fix links to docs (#57391)
PR Close #57391
2024-08-19 09:20:15 -07:00
Andrew Kushnir dc075a2fc6 docs: add eager to lazy route migration (#57421)
PR Close #57421
2024-08-19 09:19:42 -07:00
Andrew Kushnir c967ccbaf3 docs: cleanup existing migration docs for consistency (#57421)
PR Close #57421
2024-08-19 09:19:42 -07:00
Andrew Kushnir 123a60d426 docs: drop references to removed typed-forms migration (#57421)
PR Close #57421
2024-08-19 09:19:42 -07:00
Andrew Kushnir c5c540d056 docs: drop references to removed module-with-providers migration (#57421)
PR Close #57421
2024-08-19 09:19:42 -07:00
Joey Perrott 7ee9e7f386 fix(docs-infra): leverage http_server rule from @angular/build-tooling for adev local serving (#57427)
Use the http_server rule to serve adev locally to allow for slightly faster rebuilds and livereload on changes

PR Close #57427
2024-08-19 09:18:47 -07:00
Paul Gschwendtner 368f36dab3 refactor(migrations): framework to build batchable migrations (#57396)
Introduces a migration framework to build batchable migrations that
can run in Large Scale mode against e.g. all of Google, using workers.

This is the original signal input migration infrastructure extracted
into a more generic framework that we can use for writing additional
ones for output, signal queries etc, while making sure those are not
scoped to a single `ts.Program` that limits them to per-directory
execution in very large projects (e.g. G3).

The migration will be updated to use this, and in 1P we will add
helpers to easily integrate such migrations into a Go-based pipeline
runner.

PR Close #57396
2024-08-17 08:54:15 -05:00
Andrew Kushnir baa125480e docs: update CHANGELOG to drop a breaking change from 18.2.0 version (#57419)
This commit updates the CHANGELOG to remove an entry about a breaking change in Zone.js, since the change was not actually released. It will be released separately in Zone.js package.

PR Close #57419
2024-08-16 11:21:17 -04:00
Andrew Kushnir 0bbbd78482 docs: add withEventReplay and withI18nSupport links to provideClientHydration docs (#57382)
PR Close #57382
2024-08-15 16:10:27 -04:00
vladboisa 9c739430ac docs(docs-infra): move link tag for correct view (#57395)
Move the link tag to the down, for correctly parsing of '@link'

Fixes #57332

PR Close #57395
2024-08-15 15:51:52 -04:00
cexbrayat ac93839d69 fix(migrations): avoid migrating route component in tests (#57317)
The migration was migrating all files in a project (like most migrations).
As there is no gain in migrating components used in test files. Excluding the test files reduces the migration noise.

PR Close #57317
2024-08-15 15:51:22 -04:00
David LJ 0de267d7eb docs: update version table for 18.2 (#57414)
PR Close #57414
2024-08-15 15:50:53 -04:00
Andrew Scott f03d274e87 fix(core): ComponentFixture autoDetect feature works like production (#55228)
This commit fully integrates the `autoDetect` feature into
`ApplicationRef.tick` without special handling for errors.

This commit also shares the method of autoDetect for change detection between
the zoneless and zone component fixture implementations. The difference
is now limited to:

* autoDetect is defaulted to true with zoneless
* detectChanges with zoneless is AppRef.tick while it is
  ChangeDetectorRef.detectChanges with zones. This should likely
  converge more in the future. Not going through AppRef.tick means that
  the zone fixture does not get guaranteed `afterRender` executions and
  does not get the rerunning behavior if the fixture is marked dirty by
  a render hook.

BREAKING CHANGE: The `autoDetect` feature of `ComponentFixture` will now
attach the fixture to the `ApplicationRef`. As a result, errors during
automatic change detection of the fixture be reported to the `ErrorHandler`.
This change may cause custom error handlers to observe new failures that were previously unreported.

PR Close #55228
2024-08-15 15:45:45 -04:00
Andrew Scott 3b0dca75d6 fix(core): Allow zoneless scheduler to run inside fakeAsync (#56932)
The zoneless scheduler callback was executed in the root zone rather
than simply in `runOutsideAngular` to allow us to land the hybrid mode
change detection (scheduler always enabled, even for zones) without
breaking a ton of existing `fakeAsync` tests that could/would fail with
the "timer(s) still in queue" error. However, this caused another
problem: when a test executes inside `fakeAsync`, it cannot flush the
scheduled time. A similar problem exists with event and run coalescing (#56767).
This change would allow `fakeAsync` to flush the zoneless-scheduled
change detections and minimize breaking existing tests
by flushing pending timers at the end of the test, which actually now
matches what's done internally.

PR Close #56932
2024-08-15 12:32:24 -04:00
Kristiyan Kostadinov 58a79b6e43 fix(migrations): preserve type when using inject decorator (#57389)
Updates the migration so that it passes the type as a generic in the case of `@Inject(SOME_TOKEN) foo: SomeType`. This is done for two reasons:
1. It's a fairly common pattern and it ensures that the code can still be compiled.
2. It avoids leaving behind unused imports.

PR Close #57389
2024-08-15 12:11:59 -04:00
Kristiyan Kostadinov 4ae66f25d0 fix(migrations): account for members with doc strings and no modifiers (#57389)
Fixes that the migration was duplicating the doc strings of members that don't have modifiers.

PR Close #57389
2024-08-15 12:11:58 -04:00
Angular Robot 7716da8ce9 build: update dependency saucelabs to v8 (#57407)
See associated pull request for more information.

PR Close #57407
2024-08-15 12:11:28 -04:00
Andrew Kushnir d4449fce21 fix(core): handle hydration of components that project content conditionally (#57383)
This commit fixes an issue when hydration serialization tries to calculate DOM path to a content projection node (`<ng-content>`), but such nodes do not have DOM representation.

Resolves #56750.

PR Close #57383
2024-08-15 11:22:04 -04:00
Erik Wegner 751880a16a docs(common): fix example code (#57406)
Fix example code for interceptor.

PR Close #57406
2024-08-15 10:46:03 -04:00
Jeremy Elbourn 736c67bc15 docs: add small clarification to ng-content (#57408)
This expands the recommendation to avoid conditionally showing `<ng-content>` with additional context

PR Close #57408
2024-08-15 10:45:16 -04:00
Andrew Kushnir 5537bf802f release: cut the v19.0.0-next.0 release 2024-08-14 09:49:00 -07:00
Andrew Kushnir c1f1c028a9 docs: release notes for the v18.2.0 release 2024-08-14 09:43:10 -07:00
Andrew Kushnir c5b598ea32 docs: release notes for the v18.1.5 release 2024-08-14 09:32:07 -07:00
Matthieu Riegler 9857570165 docs(docs-infra): fix markdown link rendering (#57377)
fixes #57376

PR Close #57377
2024-08-13 15:53:55 -07:00
Thomas Nguyen 6882cc7d9e refactor(core): Add experimental support to have one event contract when there are multiple apps on the page. (#57355)
This may be removed if this turns out not to work out so well...

PR Close #57355
2024-08-13 12:10:34 -07:00
Thomas Nguyen 8bea2e3965 refactor(core): Call stopPropagation and preventDefault unconditionally within the patched methods. (#57354)
This fixes a few tests in g3 and is a bug fix for the event dispatcher. Otherwise, bubbling might
continue.

PR Close #57354
2024-08-13 12:09:56 -07:00
Thomas Nguyen 8e945c7cc9 fix(core): Account for addEventListener to be passed a Window or Document. (#57354)
This happened to work for other event listeners since both had a
addEventListener method.

PR Close #57354
2024-08-13 12:09:56 -07:00
Matthieu Riegler 04911d7599 docs(docs-infra): Add support for function/method overloads (#57255)
PR Close #57255
2024-08-13 12:09:01 -07:00
Andrew Scott 6f87dd3af6 refactor(docs-infra): Update search results to display content when it is matched (#57298)
This commit updates the search results to query for the content as well
as a snippet of the content for display when it's the content that
matches the query rather than any of the headers.

PR Close #57298
2024-08-13 12:07:48 -07:00
Kristiyan Kostadinov e4a61985c3 fix(migrations): avoid duplicating comments when generating properties (#57367)
Updates the logic that generates new component properties to avoid duplicating their doc strings.

PR Close #57367
2024-08-13 09:54:25 -07:00
Kristiyan Kostadinov d6b24833ca fix(migrations): preserve optional parameters (#57367)
Makes it so the inject migration preserves the optional token when declaring a parameter. This came up in some testing as something that can be potentially breaking for classes that implement interfaces.

PR Close #57367
2024-08-13 09:54:25 -07:00
Andrew Kushnir 84827d5958 fix(core): skip hydration for i18n nodes that were not projected (#57356)
This commit fixes an issue that happens when an i18n block is defined as a projectable content, but a parent component doesn't project it. With an extra check added in this commit, the code will be taking a regular "creation" pass instead of attempting hydration.

Resolves #57301.

PR Close #57356
2024-08-13 09:42:41 -07:00
Paul Gschwendtner 74f0cb7dc9 refactor(migrations): always add readonly to migrated signal inputs (#57368)
Signal inputs are no longer updated by assignment, unlike `@Input()`, so
a good practice is adding `readonly` for the `InputSignal`— which should
never be swapped out.

This is a safe operation because the migration skips all inputs that are
being written anyway.

PR Close #57368
2024-08-13 09:41:08 -07:00
Paul Gschwendtner 3493454d8a refactor(migrations): use input() shorthand if possible in input migration (#57368)
In some cases, the migration can detect when `input()` as a shorthand
may be usable. This commit adds such detection and migrates inputs to
this form when possible.

PR Close #57368
2024-08-13 09:41:08 -07:00
Angular Robot bcc4a71d6d build: update all non-major dependencies (#57357)
See associated pull request for more information.

PR Close #57357
2024-08-13 09:36:21 -07:00
Angular Robot 0a808fbdc4 build: update scorecard action dependencies (#57358)
See associated pull request for more information.

PR Close #57358
2024-08-13 09:30:15 -07:00
Angular Robot 7af483ef1e build: update dependency @babel/core to v7.25.2 (#57191)
See associated pull request for more information.

PR Close #57191
2024-08-13 09:29:34 -07:00
Paul Gschwendtner d608b857c6 refactor(migrations): handle jit: true component templates in signal input migration (#57347)
Components with `jit: true` are not processed by the Angular compiler,
so we cannot ask the template checker for the parsed template; simply
because the template wasn't attempted to be parsed.

We still can migrate simple cases of such components, commonly seen in
unit tests. We do this by manually parsing the template and making use
of the reference fallback resolution that is also used for host bindings
(where we don't have any type check block information).

PR Close #57347
2024-08-12 15:17:40 -07:00
Paul Gschwendtner 310a0e0eda refactor(migrations): expose angular compiler options to signal input migration (#57347)
Instead of exposing just the `ts.CompilerOptions`, we should expose the
actual Angular compiler options throuhgout the signal input migration.

This will be useful for parsing templates, in cases of JIT-opted
components.

PR Close #57347
2024-08-12 15:17:40 -07:00
Paul Gschwendtner 52673e6420 refactor(migrations): handle safe property reads in signal input migration (#57318)
As of this commit, the migration will also inspect safe property reads
and migrate them, if they reference an input that is being migrated.

PR Close #57318
2024-08-12 12:12:22 -07:00
Paul Gschwendtner 6b7b44db98 perf(migrations): speed up signal input migration by combining two analyze phases (#57318)
Instead of revisiting each source file, and each of its child nodes
twice, we now visit them together using a grouped AST visitor that only
traverses each source file once.

This seemed to speed up migration by 6-8% locally, but is likely
noticable better with large compilation scopes.

PR Close #57318
2024-08-12 12:12:22 -07:00
Paul Gschwendtner fc4c9baf66 refactor(migrations): use import manager in signal input migration (#57318)
Instead of fiddling manually with the imports, which worked well, but
comes at a cost of complexity— we are now using the canonical import
manager. This simplifies deletion, insertion and updating of imports.

Notably, our import manager is not super great at preserving whitespaces
right now, but we assume a formatter runs over migrated code anyway.

PR Close #57318
2024-08-12 12:12:22 -07:00
Paul Gschwendtner 62ec4675be refactor(migrations): add best effort mode to signal input migration (#57318)
Introduces a best effort mode for the signal input migration. This mode
can be used to aggresively migrate as much as possible, ignoring most
of the incompatibility reasons, like "writes to the input".

PR Close #57318
2024-08-12 12:12:21 -07:00
Paul Gschwendtner f7fa70ee8e refactor(migrations): add initial docs for signal input migration incompatibility reasons (#57318)
Adds a markdown document capturing some of the incompatibilty reasons
on why the input wasn't migrated.

PR Close #57318
2024-08-12 12:12:21 -07:00
Andrew Scott 468d3fb9b1 fix(core): rethrow errors during ApplicationRef.tick in TestBed (#57200)
Errors during change detection from `ApplicationRef.tick` are only
reported to the `ErrorHandler`. By default, this only logs the error to
console. As a result, these errors can be missed/ignored and allow tests
to pass when they should not. This change ensures that the errors are
surfaced. Note that this is already the behavior when zoneless is
enabled.

BREAKING CHANGE: Errors that are thrown during `ApplicationRef.tick`
will now be rethrown when using `TestBed`. These errors should be
resolved by ensuring the test environment is set up correctly to
complete change detection successfully. There are two alternatives to
catch the errors:

* Instead of waiting for automatic change detection to happen, trigger
  it synchronously and expect the error. For example, a jasmine test
  could write `expect(() => TestBed.inject(ApplicationRef).tick()).toThrow()`
* `TestBed` will reject any outstanding `ComponentFixture.whenStable` promises. A jasmine test,
for example, could write `expectAsync(fixture.whenStable()).toBeRejected()`.

As a last resort, you can configure errors to _not_ be rethrown by
setting `rethrowApplicationErrors` to `false` in `TestBed.configureTestingModule`.

PR Close #57200
2024-08-12 11:23:46 -07:00
Angular Robot 24cd1c8db6 build: lock file maintenance (#57340)
See associated pull request for more information.

PR Close #57340
2024-08-12 11:22:43 -07:00
Matthieu Riegler 360979f37e docs(docs-infra): fix marked rendering (#57338)
Follow-up to #57319 which introduced some regressions after updating marked to v14

PR Close #57338
2024-08-12 11:19:51 -07:00
Andrew Scott b2790813a6 fix(router): Align RouterModule.forRoot errorHandler with provider error handler (#57050)
This change aligns the behavior of the error handler in the
`ExtraOptions` of `RouterModule.forRoot` with the error handler in
`withNavigationErrorHandler`. The changes are:

* Slightly different timing: The handler is called before the
  `NavigationError` emits
* Runs in the injection context, meaning it is more configurable at the
  config location rather than needing to assign the value to the
  `Router.errorHandler` later to get access to injectables
* Can now return `RedirectCommand` to recover from the error and
  redirect without emitting `NavigationError`
* No longer allows arbitrarily overriding return value of the navigation
  promise

BREAKING CHANGE: The `Router.errorHandler` property has been removed.
Adding an error handler should be configured in either
`withNavigationErrorHandler` with `provideRouter` or the `errorHandler`
property in the extra options of `RouterModule.forRoot`. In addition,
the error handler cannot be used to change the return value of the
router navigation promise or prevent it from rejecting. Instead, if you
want to prevent the promise from rejecting, use `resolveNavigationPromiseOnError`.

PR Close #57050
2024-08-12 09:28:08 -07:00
Andrew Scott 7436d3180e fix(router): Update Resolve interface to include RedirectCommand like ResolveFn (#57309)
This commit updates the interface of `Resolve` to allow for
`RedirectCommand`, as was done with `ResolveFn` in v18.

fixes #57131

BREAKING CHANGE: The return type of the `Resolve` interface now includes
`RedirectCommand`.

PR Close #57309
2024-08-12 09:26:53 -07:00
Gilad Mautner 37bf7dee99 docs: reorder afterView and afterContent related lifecycle hooks (#57307)
PR Close #57307
2024-08-09 13:55:39 -07:00
Andrew Scott f271021e19 feat(router): Add routerOutletData input to RouterOutlet directive (#57051)
This commit adds an input to `RouterOutlet` that allows developers to
pass data from a parent component to the outlet components.
Setting the `routerOutletData` input on `RouterOutlet` makes the value
available to the child component injectors via the `ROUTER_OUTLET_DATA`
token. This token uses a `Signal` type to allow updating the input value
and propogating it to the token rather than needing to make the value
static.

resolves #46283

PR Close #57051
2024-08-09 08:08:26 -07:00
Andrew Kushnir 45212c7fd9 fix(core): take skip hydration flag into account while hydrating i18n blocks (#57299)
This commit updates serialization and hydration i18n logic to take into account situations when i18n blocks are located within "skip hydration" blocks.

Resolves #57105.

PR Close #57299
2024-08-09 08:07:48 -07:00
Andrew Kushnir 26ddbdb89c fix(core): complete post-hydration cleanup in components that use ViewContainerRef (#57300)
Previously, if a component injects a `ViewContainerRef`, the post-hydration cleanup process doesn't visit inner views to cleanup dehydrated views in nested LContainers. This commit updates the logic to recognize this situation and enter host LView to complete cleanup.

Resolves #56989.

PR Close #57300
2024-08-09 08:07:12 -07:00
Paul Gschwendtner 9d0fe9d26a refactor(migrations): detect if an input is not narrowed and can be migrated (#57308)
By default, we don't migrate inputs if they are part of e.g. `@if` for
now. That is because we don't have the template narrowing feature
available yet.

To improve impact of the migration until we have the narrowing, we add
some additional checks that allow us to migrate instances of inputs that
are part of e.g. `@if` but are actually not used inside (and hence are
guaranteed to be _not_ narrowed).

PR Close #57308
2024-08-09 08:05:21 -07:00
Angular Robot 2c321a0f7f build: update dependency marked to v14 (#57319)
See associated pull request for more information.

Closes #57283 as a pr takeover

PR Close #57319
2024-08-09 08:04:04 -07:00
Kristiyan Kostadinov 05c3750b08 refactor(migrations): add internal cleanup logic (#57315)
Expands the `inject` migration to add some cleanups that are only relevant internally. Externally this isn't exposed to users.

PR Close #57315
2024-08-09 08:02:33 -07:00
Paul Gschwendtner e20cd4a9fd release: switch the next branch to v19.0.0-next.0 (#57314)
PR Close #57314
2024-08-09 08:01:54 -07:00
Andrew Scott 769b6e1973 fix(core): Allow hybrid CD scheduling to support multiple "Angular zones" (#57267)
This commit updates the inside/outside NgZone detection of the hybrid CD
scheduling to track the actual instance of the NgZone being used rather
than the name "Angular" (how `isInsideAngularZone` works). This allows
the scheduling to work correctly when there are multiple versions of
Angular running on the page.

fixes #57261

PR Close #57267
2024-08-08 10:46:26 -07:00
Thomas Nguyen 3439cc2049 fix(core): Account for addEventListener to be passed a Window or Document. (#57282)
This happened to work for other event listeners since both had a
addEventListener method.

PR Close #57282
2024-08-08 08:32:11 -07:00
Kristiyan Kostadinov ca55b3d454 fix(compiler-cli): generate valid TS 5.6 type checking code (#57303)
Currently in some scenarios the compiler generates code like `null as any ? foo : bar` which will be invalid with [an upcoming TypeScript change](https://devblogs.microsoft.com/typescript/announcing-typescript-5-6-beta/#disallowed-nullish-and-truthy-checks). These changes switch to generating `0 as any` which is exempt from the change.

**Note:** I'm not starting the work to fully get us on TS 5.6 until the 18.2 release comes out, but this change is necessary to unblock an internal team.

PR Close #57303
2024-08-08 08:30:12 -07:00
Jessica Janiuk 0761e9aeb5 docs: release notes for the v18.2.0-rc.0 release 2024-08-07 12:29:21 -07:00
Jessica Janiuk 31d1c1b7b8 release: bump the next branch to v18.3.0-next.0 2024-08-07 12:29:21 -07:00
10883 changed files with 757807 additions and 619166 deletions
+1
View File
@@ -0,0 +1 @@
../../AGENTS.md
+1
View File
@@ -0,0 +1 @@
../.gemini/skills
-39
View File
@@ -1,39 +0,0 @@
# Bazel does not yet support wildcards or other .gitignore semantics for
# .bazelignore. Two issues for this feature request are outstanding:
# https://github.com/bazelbuild/bazel/issues/7093
# https://github.com/bazelbuild/bazel/issues/8106
.git
node_modules
dist
# All integration test node_modules folders
integration/animations/node_modules
integration/cli-elements-universal/node_modules
integration/cli-hello-world/node_modules
integration/cli-hello-world-ivy-i18n/node_modules
integration/cli-hello-world-lazy/node_modules
integration/cli-hello-world-mocha/node_modules
integration/cli-signal-inputs/node_modules
integration/platform-server-hydration/node_modules
integration/defer/node_modules
integration/dynamic-compiler/node_modules
integration/forms/node_modules
integration/injectable-def/node_modules
integration/ivy-i18n/node_modules
integration/ng-add-localize/node_modules
integration/ng_elements/node_modules
integration/ng_update/node_modules
integration/ng_update_migrations/node_modules
integration/nodenext_resolution/node_modules
integration/npm_package_archives.bzl/node_modules
integration/platform-server/node_modules
integration/service-worker-schema/node_modules
integration/side-effects/node_modules
integration/standalone-bootstrap/node_modules
integration/terser/node_modules
integration/trusted-types/node_modules
integration/typings_test_rxjs7/node_modules
integration/typings_test_ts49/node_modules
integration/typings_test_ts50/node_modules
integration/typings_test_ts51/node_modules
integration/typings_test_ts52/node_modules
+35 -21
View File
@@ -1,10 +1,23 @@
# Disable NG CLI TTY mode
build --action_env=NG_FORCE_TTY=false
# Enable debugging tests with --config=debug
test:debug --test_arg=--node_options=--inspect-brk --test_output=streamed --test_strategy=exclusive --test_timeout=9999 --nocache_test_results --spawn_strategy=local
test:debug --test_arg=--node_options=--inspect-brk --test_output=streamed --test_strategy=exclusive --test_timeout=9999 --nocache_test_results --strategy=TestRunner=standalone
# Do not attempt to de-flake locally.
# On CI we might set this to `3` to run with deflaking.
test --flaky_test_attempts=1
# Required by `rules_ts`.
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
# Frozen lockfile
common --lockfile_mode=error
###############################
# Filesystem interactions #
###############################
@@ -31,7 +44,7 @@ test --nolegacy_external_runfiles
# in Bazel 0.21.0 but turned off again in 0.22.0. Follow
# https://github.com/bazelbuild/bazel/issues/7026 for more details.
# This flag is needed to so that the bazel cache is not invalidated
# when running bazel via `yarn bazel`.
# when running bazel via `pnpm bazel`.
# See https://github.com/angular/angular/issues/27514.
build --incompatible_strict_action_env
run --incompatible_strict_action_env
@@ -53,12 +66,15 @@ build --enable_runfiles
# Releases should always be stamped with version control info
# This command assumes node on the path and is a workaround for
# https://github.com/bazelbuild/bazel/issues/4802
build:release --workspace_status_command="yarn -s ng-dev release build-env-stamp --mode=release"
build:release --workspace_status_command="pnpm --silent ng-dev release build-env-stamp --mode=release"
build:release --stamp
# Snapshots should also be stamped with version control information.
build:snapshot-build --workspace_status_command="yarn -s ng-dev release build-env-stamp --mode=snapshot"
build:snapshot-build --workspace_status_command="pnpm --silent ng-dev release build-env-stamp --mode=snapshot"
build:snapshot-build --stamp
# @angular/language-server package depends directly on other Angular framework packages.
# This flag ensures that the language server uses the snapshot-built framework packages from the repository.
build:snapshot-build --//:enable_language_server_snapshot_repo_deps
# Angular DevTools for Firefox releases *cannot* be stamped and `--config snapshot-build-firefox` is a no-op.
# This is because Mozilla requires add-on source code to be uploaded and then they manually reproduce the build.
@@ -78,12 +94,6 @@ query --output=label_kind
# By default, failing tests don't print any output, it goes to the log file
test --test_output=errors
################################
# Settings for CircleCI #
################################
# Bazel flags for CircleCI are in /.circleci/bazel.linux.rc and /.circleci/bazel.windows.rc
##################################
# Remote Build Execution support #
# Turn on these settings with #
@@ -108,33 +118,40 @@ build:remote --cpu=k8
build:remote --host_cpu=k8
# Toolchain and platform related flags
build:remote --crosstool_top=@npm//@angular/build-tooling/bazel/remote-execution/cpp:cc_toolchain_suite
build:remote --extra_toolchains=@npm//@angular/build-tooling/bazel/remote-execution/cpp:cc_toolchain
build:remote --extra_execution_platforms=@npm//@angular/build-tooling/bazel/remote-execution:platform
build:remote --host_platform=@npm//@angular/build-tooling/bazel/remote-execution:platform
build:remote --platforms=@npm//@angular/build-tooling/bazel/remote-execution:platform
build:remote --extra_execution_platforms=@devinfra//bazel/remote-execution:platform_with_network
build:remote --host_platform=@devinfra//bazel/remote-execution:platform_with_network
build:remote --platforms=@devinfra//bazel/remote-execution:platform_with_network
# Remote instance and caching
build:remote --remote_instance_name=projects/internal-200822/instances/primary_instance
build:remote --bes_instance_name=internal-200822
build:remote --remote_cache=remotebuildexecution.googleapis.com
build:remote --remote_executor=remotebuildexecution.googleapis.com
build:remote --remote_upload_local_results=false
build:remote --remote_grpc_log=/tmp/rbe-grpc.log
# See: https://docs.google.com/document/d/1NgDPsCIwprDdqC1zj0qQrh5KGK2hQTSTux1DAvi4rSc/edit?tab=t.0.
build:remote --experimental_remote_execution_keepalive
# Use HTTP remote cache
build:remote-cache --remote_cache=https://storage.googleapis.com/angular-team-cache
build:remote-cache --remote_accept_cached=true
build:remote-cache --remote_upload_local_results=true
build:remote-cache --remote_upload_local_results=false
build:remote-cache --google_default_credentials
# Additional flags added when running a "trusted build" with additional access
build:trusted-build --remote_upload_local_results=true
# Ensure that tags like "no-remote-exec" get propagated to actions created by rules,
# even if the rule implementation does not explicitly pass them to the execution requirements.
# https://bazel.build/reference/command-line-reference#flag--experimental_allow_tags_propagation
common --experimental_allow_tags_propagation
common --incompatible_allow_tags_propagation
# Disable network access in the sandbox by default. To enable network access
# for a particular target, use:
#
# load("@npm//@angular/build-tooling/bazel/remote-execution:index.bzl", "ENABLE_NETWORK")
# load("@devinfra//bazel/remote-execution:index.bzl", "ENABLE_NETWORK")
# my_target(
# ...,
# exec_properties = ENABLE_NETWORK, # Enables network in remote exec
@@ -158,9 +175,6 @@ test:saucelabs --flaky_test_attempts=1
# --ng_perf will ask the Ivy compiler to produce performance results for each build.
build --flag_alias=ng_perf=//packages/compiler-cli:ng_perf
# --adev_fast will run adev build/serve in a faster mode, skipping things like prerendering
# for local development.
build --flag_alias=fast_adev=//adev:fast_build_mode
####################################################
# User bazel configuration
+1 -1
View File
@@ -1 +1 @@
5.0.0
8.6.0
-19
View File
@@ -1,19 +0,0 @@
# Encryption
Based on https://github.com/circleci/encrypted-files
In the CircleCI web UI, we have a secret variable called `KEY`
https://circleci.com/gh/angular/angular/edit#env-vars
which is only exposed to non-fork builds
(see "Pass secrets to builds from forked pull requests" under
https://circleci.com/gh/angular/angular/edit#advanced-settings)
We use this as a symmetric AES encryption key to encrypt tokens like
a GitHub token that enables publishing snapshots.
To create the github_token file, we take this approach:
- Find the angular-builds:token in the internal pw database
- Go inside the CircleCI default docker image so you use the same version of openssl as we will at runtime: `docker run --rm -it circleci/node:10.12`
- echo "https://[token]:@github.com" > credentials
- openssl aes-256-cbc -e -in credentials -out .circleci/github_token -k $KEY
- If needed, base64-encode the result so you can copy-paste it out of docker: `base64 github_token`
-16
View File
@@ -1,16 +0,0 @@
# Settings in this file should be OS agnostic. Use the bazel.<OS>.rc files for OS specific settings.
# Print all the options that apply to the build.
# This helps us diagnose which options override others
# (e.g. /etc/bazel.bazelrc vs. tools/bazel.rc)
build --announce_rc
# Retry in the event of flakes, eg. https://circleci.com/gh/angular/angular/31309
# By default this is set in the project `.bazelrc` to `1`.
test --flaky_test_attempts=3
# More details on failures
build --verbose_failures=true
# CI supports colors but Bazel does not detect it.
common --color=yes
-23
View File
@@ -1,23 +0,0 @@
# These options are enabled when running on CI
# We do this by copying this file to /etc/bazel.bazelrc at the start of the build.
# See documentation in /docs/BAZEL.md
# Import config items common to both Linux and Windows setups.
# https://docs.bazel.build/versions/master/guide.html#bazelrc-syntax-and-semantics
try-import %workspace%/.circleci/bazel.common.rc
# Save downloaded repositories in a location that can be cached by CircleCI. This helps us
# speeding up the analysis time significantly with Bazel managed node dependencies on the CI.
build --repository_cache=/home/circleci/bazel_repository_cache
# Workaround https://github.com/bazelbuild/bazel/issues/3645
# Bazel doesn't calculate the memory ceiling correctly when running under Docker.
# Limit Bazel to consuming resources that fit in CircleCI "2xlarge+" class
# https://circleci.com/docs/2.0/configuration-reference/#resource_class
build --local_cpu_resources=20
build --local_ram_resources=40960
# All build executed remotely should be done using our RBE configuration.
build:remote --google_default_credentials
build --config=remote
-17
View File
@@ -1,17 +0,0 @@
# These options are enabled when running on CI
# We do this by copying this file to $env:ProgramData\bazel.bazelrc at the start of the build.
# See documentation in /docs/BAZEL.md
# Import config items common to both Linux and Windows setups.
# https://docs.bazel.build/versions/master/guide.html#bazelrc-syntax-and-semantics
try-import %workspace%/.circleci/bazel.common.rc
# Manually set the local resources used in windows CI runs
build --local_ram_resources=120000
build --local_cpu_resources=32
# All windows jobs run on master and should use http caching
build --remote_http_cache=https://storage.googleapis.com/angular-team-cache
build --remote_accept_cached=true
build --remote_upload_local_results=true
build --google_default_credentials
-16
View File
@@ -1,16 +0,0 @@
# This config is remaining in place to prevent pull requests failing because of CircleCI config missing.
version: 2.1
jobs:
pass:
docker:
- image: cimg/base:2022.05
steps:
- run: echo "This too shall pass (always)"
workflows:
version: 2
default_workflow:
jobs:
- pass
-76
View File
@@ -1,76 +0,0 @@
####################################################################################################
# Helpers for defining environment variables for CircleCI.
#
# In CircleCI, each step runs in a new shell. The way to share ENV variables across steps is to
# export them from `$BASH_ENV`, which is automatically sourced at the beginning of every step (for
# the default `bash` shell).
#
# See also https://circleci.com/docs/2.0/env-vars/#using-bash_env-to-set-environment-variables.
####################################################################################################
# Set and print an environment variable.
#
# Use this function for setting environment variables that are public, i.e. it is OK for them to be
# visible to anyone through the CI logs.
#
# Usage: `setPublicVar <name> <value>`
function setPublicVar() {
setSecretVar $1 "$2";
echo "$1=$2";
}
# Set (without printing) an environment variable.
#
# Use this function for setting environment variables that are secret, i.e. should not be visible to
# everyone through the CI logs.
#
# Usage: `setSecretVar <name> <value>`
function setSecretVar() {
# WARNING: Secrets (e.g. passwords, access tokens) should NOT be printed.
# (Keep original shell options to restore at the end.)
local -r originalShellOptions=$(set +o);
set +x -eu -o pipefail;
local assignmentStatement="export $1=\"${2:-}\";"
echo "${assignmentStatement}" >> $BASH_ENV;
eval "${assignmentStatement}"
# Restore original shell options.
eval "$originalShellOptions";
}
# Create a function to set an environment variable, when called.
#
# Use this function for creating setter for public environment variables that require expensive or
# time-consuming computations and may not be needed. When needed, you can call this function to set
# the environment variable (which will be available through `$BASH_ENV` from that point onwards).
#
# Arguments:
# - `<name>`: The name of the environment variable. The generated setter function will be
# `setPublicVar_<name>`.
# - `<code>`: The code to run to compute the value for the variable. Since this code should be
# executed lazily, it must be properly escaped. For example:
# ```sh
# # DO NOT do this:
# createPublicVarSetter MY_VAR "$(whoami)"; # `whoami` will be evaluated eagerly
#
# # DO this isntead:
# createPublicVarSetter MY_VAR "\$(whoami)"; # `whoami` will NOT be evaluated eagerly
# ```
#
# Usage: `createPublicVarSetter <name> <code>`
#
# Example:
# ```sh
# createPublicVarSetter MY_VAR 'echo "FOO"';
# echo $MY_VAR; # Not defined
#
# setPublicVar_MY_VAR;
# source $BASH_ENV;
# echo $MY_VAR; # FOO
# ```
function createPublicVarSetter() {
echo "setPublicVar_$1() { setPublicVar $1 \"$2\"; }" >> $BASH_ENV;
}
-4
View File
@@ -1,4 +0,0 @@
####################################################################################################
# Set bazel configuration for CircleCI runs.
####################################################################################################
cp "${PROJECT_ROOT}/.circleci/bazel.linux.rc" ".bazelrc.user";
-88
View File
@@ -1,88 +0,0 @@
#!/usr/bin/env bash
# Variables
readonly projectDir=$(realpath "$(dirname ${BASH_SOURCE[0]})/..")
readonly envHelpersPath="$projectDir/.circleci/env-helpers.inc.sh";
# Load helpers and make them available everywhere (through `$BASH_ENV`).
source $envHelpersPath;
echo "source $envHelpersPath;" >> $BASH_ENV;
####################################################################################################
# Define PUBLIC environment variables for CircleCI.
####################################################################################################
# See https://circleci.com/docs/2.0/env-vars/#built-in-environment-variables for more info.
####################################################################################################
setPublicVar CI "$CI"
setPublicVar PROJECT_ROOT "$projectDir";
# This is the branch being built; e.g. `pull/12345` for PR builds.
setPublicVar CI_BRANCH "$CIRCLE_BRANCH";
setPublicVar CI_BUILD_URL "$CIRCLE_BUILD_URL";
setPublicVar CI_COMMIT "$CIRCLE_SHA1";
# `CI_COMMIT_RANGE` is only used on push builds (a.k.a. non-PR, non-scheduled builds and rerun
# workflows of such builds).
setPublicVar CI_GIT_BASE_REVISION "${CIRCLE_GIT_BASE_REVISION}";
setPublicVar CI_GIT_REVISION "${CIRCLE_GIT_REVISION}";
setPublicVar CI_COMMIT_RANGE "$CIRCLE_GIT_BASE_REVISION..$CIRCLE_GIT_REVISION";
setPublicVar CI_PULL_REQUEST "${CIRCLE_PR_NUMBER:-false}";
setPublicVar CI_REPO_NAME "$CIRCLE_PROJECT_REPONAME";
setPublicVar CI_REPO_OWNER "$CIRCLE_PROJECT_USERNAME";
setPublicVar CI_PR_REPONAME "$CIRCLE_PR_REPONAME";
setPublicVar CI_PR_USERNAME "$CIRCLE_PR_USERNAME";
####################################################################################################
# Define "lazy" PUBLIC environment variables for CircleCI.
# (I.e. functions to set an environment variable when called.)
####################################################################################################
createPublicVarSetter CI_STABLE_BRANCH "\$(npm info @angular/core dist-tags.latest | sed -r 's/^\\s*([0-9]+\\.[0-9]+)\\.[0-9]+.*$/\\1.x/')";
####################################################################################################
# Define SECRET environment variables for CircleCI.
####################################################################################################
setSecretVar CI_SECRET_AIO_DEPLOY_FIREBASE_TOKEN "$AIO_DEPLOY_TOKEN";
setSecretVar CI_SECRET_PAYLOAD_FIREBASE_TOKEN "$ANGULAR_PAYLOAD_TOKEN";
####################################################################################################
# Define SauceLabs environment variables for CircleCI.
####################################################################################################
setPublicVar SAUCE_USERNAME "angular-framework";
setSecretVar SAUCE_ACCESS_KEY "f4bf7c639c5a-c6bb-d6a4-a4b5-800aa111";
# TODO(josephperrott): Remove environment variables once all saucelabs tests are via bazel method.
setPublicVar SAUCE_LOG_FILE /tmp/angular/sauce-connect.log
setPublicVar SAUCE_READY_FILE /tmp/angular/sauce-connect-ready-file.lock
setPublicVar SAUCE_PID_FILE /tmp/angular/sauce-connect-pid-file.lock
setPublicVar SAUCE_TUNNEL_IDENTIFIER "angular-framework-${CIRCLE_BUILD_NUM}-${CIRCLE_NODE_INDEX}"
# Amount of seconds we wait for sauceconnect to establish a tunnel instance. In order to not
# acquire CircleCI instances for too long if sauceconnect failed, we need a connect timeout.
setPublicVar SAUCE_READY_FILE_TIMEOUT 120
####################################################################################################
# Create shell script in /tmp for Bazel actions to access CI envs without
# busting the cache. Used by payload-size.sh script in integration tests.
####################################################################################################
readonly bazelVarEnv="/tmp/bazel-ci-env.sh"
echo "# Setup by /.circle/env.sh" > $bazelVarEnv
echo "export PROJECT_ROOT=\"${PROJECT_ROOT}\";" >> $bazelVarEnv
echo "export CI_BRANCH=\"${CI_BRANCH}\";" >> $bazelVarEnv
echo "export CI_BUILD_URL=\"${CI_BUILD_URL}\";" >> $bazelVarEnv
echo "export CI_COMMIT=\"${CI_COMMIT}\";" >> $bazelVarEnv
echo "export CI_PULL_REQUEST=\"${CI_PULL_REQUEST}\";" >> $bazelVarEnv
echo "export CI_REPO_NAME=\"${CI_REPO_NAME}\";" >> $bazelVarEnv
echo "export CI_REPO_OWNER=\"${CI_REPO_OWNER}\";" >> $bazelVarEnv
echo "export CI_SECRET_PAYLOAD_FIREBASE_TOKEN=\"${CI_SECRET_PAYLOAD_FIREBASE_TOKEN}\";" >> $bazelVarEnv
####################################################################################################
# Platform-specific environment setup (which can leverage the base variables from here)
####################################################################################################
# Conditionally, load additional environment settings based on the current VM
# operating system running. We detect Windows by checking for `%AppData%`.
if [[ -n "${APPDATA}" ]]; then
source ${projectDir}/.circleci/env.windows.sh
else
source ${projectDir}/.circleci/env.linux.sh
fi
-13
View File
@@ -1,13 +0,0 @@
####################################################################################################
# Set bazel configuration for CircleCI runs.
####################################################################################################
cp "${PROJECT_ROOT}/.circleci/bazel.windows.rc" ".bazelrc.user";
# Override the `PATH` environment variable so that the windows-nvm NodeJS version
# always has precedence over potential existing NodeJS versions from the image.
setPublicVar PATH "/c/Program Files/nodejs/:$PATH"
# Expose the Bazelisk version. We need to run Bazelisk globally since Windows has problems launching
# Bazel from a node modules directoy that might be modified by the Bazel Yarn install then.
setPublicVar BAZELISK_VERSION \
"$(cd ${PROJECT_ROOT}; node -p 'require("./package.json").devDependencies["@bazel/bazelisk"]')"
-11
View File
@@ -1,11 +0,0 @@
#!/bin/sh
# Install bazel remote cache proxy
# This is temporary until the feature is no longer experimental on CircleCI.
# See remote cache documentation in /docs/BAZEL.md
set -u -e
readonly DOWNLOAD_URL="https://5-116431813-gh.circle-artifacts.com/0/pkg/bazel-remote-proxy-$(uname -s)_$(uname -m)"
curl --fail -o ~/bazel-remote-proxy "$DOWNLOAD_URL"
chmod +x ~/bazel-remote-proxy
+2 -2
View File
@@ -3,11 +3,11 @@
This folder contains configuration files that can be used to opt into working on this repository in a [Docker container](https://www.docker.com/resources/what-container) via [VSCode](https://code.visualstudio.com/)'s Remote Development feature (see below).
Info on remote development and developing inside a container with VSCode:
- [VSCode: Remote Development](https://code.visualstudio.com/docs/remote/remote-overview)
- [VSCode: Developing inside a Container](https://code.visualstudio.com/docs/remote/containers)
- [VSCode: Remote Development FAQ](https://code.visualstudio.com/docs/remote/faq)
## Usage
_Prerequisite: [Install Docker](https://docs.docker.com/install) on your local environment._
@@ -15,6 +15,7 @@ _Prerequisite: [Install Docker](https://docs.docker.com/install) on your local e
To get started, read and follow the instructions in [Developing inside a Container](https://code.visualstudio.com/docs/remote/containers). The [.devcontainer/](.) directory contains pre-configured `devcontainer.json` and `Dockerfile` files, which you can use to set up remote development with a docker container.
In a nutshell, you need to:
- Install the [Remote - Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) extension.
- Copy [recommended-Dockerfile](./recommended-Dockerfile) to `Dockerfile` (and optionally tweak to suit your needs).
- Copy [recommended-devcontainer.json](./recommended-devcontainer.json) to `devcontainer.json` (and optionally tweak to suit your needs).
@@ -23,7 +24,6 @@ In a nutshell, you need to:
The `.devcontainer/devcontainer.json` and `.devcontainer/Dockerfile` files are ignored by git, so you can have your own local versions. We may occasionally update the template files ([recommended-devcontainer.json](./recommended-devcontainer.json), [recommended-Dockerfile](./recommended-Dockerfile)), in which case you will need to manually update your local copies (if desired).
## Updating `recommended-devcontainer.json` and `recommended-Dockerfile`
You can update and commit the recommended config files (which people use as basis for their local configs), if you find that something is broken, out-of-date or can be improved.
+6 -14
View File
@@ -1,24 +1,16 @@
# Image metadata and config.
# Ideally, the Node.js version should match what we use on CI.
# See `executors > default-executor` in `.circleci/config.yml`.
FROM cimg/node:18.13.0@sha256:45d0ee279f522c4562a464df71108104cc9b2187205333ffd0707d4f05589731
FROM cimg/node:22.21.1-browsers@sha256:eee8ed828d5a54196456a86ac6872c43325acad54e59632261e23b486c458992
LABEL name="Angular dev environment" \
description="This image can be used to create a dev environment for building Angular." \
vendor="angular" \
version="1.0"
description="This image can be used to create a dev environment for building Angular." \
vendor="angular" \
version="1.0"
EXPOSE 4000 4200 4433 5000 8080 9876
EXPOSE 4200 4201 4205 4206 9876
# Switch to `root` (CircleCI images use `circleci` as the user).
# Switch to `root`.
USER root
# Configure `Node.js`/`npm`.
RUN npm config --global set user root
# Go! (And keep going.)
CMD ["tail", "--follow", "/dev/null"]
+7 -6
View File
@@ -2,10 +2,11 @@
{
"name": "Angular dev container",
"dockerFile": "Dockerfile",
"appPort": [4000, 4200, 4433, 5000, 8080, 9876],
"postCreateCommand": "yarn install",
"extensions": [
"devondcarew.bazel-code",
"ms-vscode.vscode-typescript-tslint-plugin"
],
"forwardPorts": [4200, 4201, 4205, 4206, 9876],
"postCreateCommand": "pnpm install",
"customizations": {
"vscode": {
"extensions": ["BazelBuild.vscode-bazel", "ms-vscode.vscode-typescript-tslint-plugin"]
}
}
}
+70
View File
@@ -0,0 +1,70 @@
description = "Researches part of the codebase and creates a skill for it"
prompt="""
## Role
You are an experienced senior developer specializing in reverse engineering and understanding
complex code, prompt engineering, and context engineering.
Your task is to build a complete understanding of the mental model and architecture of the code,
and to create an efficient context file that allows a coding agent to understand and work with the
code.
## Guiding Principles
1. **Deep Analysis:** Understand the _why_ behind the code. Not just a surface level listing of
files and classes.
2. **Curiosity:** Be curious. If something is unclear, confusing, or unexpected you _MUST_
investigate further until you fully understand.
3. **Efficient Token Use:** The final output will be directly included into the context of the
coding assistant, so be sure to make efficient use of tokens. Think deeply, but only capture the
most important information for the coding agent in the final output
## Procedure
1. Fully explore the code before first, with a focus on understanding the architecture and how all
of the pieces fit together.
2. Develop an understanding of the mental model behind the architecture. _Why_ is the code is
architected this way? How should developers think about the system?
3. Document your findings using the given output format described in the next section.
## Output Format
Note the following placeholders below:
- `[package]`: is a unique identifier for the current code package (for example if you're looking at
code under `packages/forms/signals` you might use `signal-forms` as the `[package]`)
- `[code-location]`: is the location of the current code within the larger repository
- `[context]`: is the context to add to the coding agent when it is working with this code.
With those placeholders in mind, write a file create a new directory under `.gemini/skills` with the
name `reference-[package]/`, and under that directory add a `SKILL.md` file with the following
content:
```md
---
name: reference-[package]
description: Explains the mental model and architecture of the code under `[code-location]`. You MUST use this skill any time you plan to work with code in `[code-location]`
---
[context]
```
## Additional User Instructions
The user may have additional instructions.
- The user should indicate what package to research
- The user may indicate that they want to update a package that has already been researched. In this
case, read the existing skill and make any required updates based on your research
- The user may request supplemental information be added to the skill (if so, add this to the
existing skill in a new markdown file under a `references` directory within the skill. Add a
section to the main `SKILL.md` that mentions what supplemental information is available)
Here are the user's additional instructions:
{{args}}
"""
+10
View File
@@ -0,0 +1,10 @@
have_fun: false
code_review:
disable: false
comment_severity_threshold: MEDIUM
max_review_comments: -1
pull_request_opened:
help: false
summary: false
code_review: false
ignore_patterns: []
+5
View File
@@ -0,0 +1,5 @@
{
"context": {
"fileName": ["AGENTS.md", "GEMINI.md"]
}
}
+178
View File
@@ -0,0 +1,178 @@
---
name: adev-writing-guide
description: Comprehensive writing guide for Angular documentation (adev). Covers Google Technical Writing standards, Angular-specific markdown extensions, code blocks, and components. Use when authoring or reviewing content in adev/src/content.
---
# Angular Documentation (adev) Writing Guide
This skill provides comprehensive guidelines for authoring content in `adev/src/content`. It combines Google's technical writing standards with Angular-specific markdown conventions, components, and best practices.
## I. Google Technical Writing Guidelines
### Tone and Content
- **Be conversational and friendly:** Maintain a helpful yet professional tone. Avoid being overly casual.
- **Write accessibly:** Ensure documentation is understandable to a diverse global audience, including non-native English speakers.
- **Audience-first:** Focus on what the user needs to do, not just what the system does.
- **Avoid pre-announcing:** Do not mention unreleased features or make unsupported claims.
- **Use descriptive link text:** Link text should clearly indicate the destination (e.g., avoid "click here").
### Language and Grammar
- **Use second person ("you"):** Address the reader directly.
- **Prefer active voice:** Clearly state who or what is performing the action (e.g., "The system generates a token" vs "A token is generated").
- **Standard American English:** Use standard American spelling and punctuation.
- **Conditional clauses first:** Place "if" or "when" clauses before the instruction (e.g., "If you encounter an error, check the logs").
- **Define terms:** Introduce new or unfamiliar terms/acronyms upon first use.
- **Consistent terminology:** Use the same term for the same concept throughout the document.
- **Conciseness:** Aim for one idea per sentence. Keep sentences short.
### Formatting and Organization
- **Sentence case for headings:** Capitalize only the first word and proper nouns in titles and headings.
- **Lists:**
- **Numbered lists:** Use for sequential steps or prioritized items.
- **Bulleted lists:** Use for unordered collections of items.
- **Description lists:** Use for term-definition pairs.
- **Serial commas:** Use the Oxford comma (comma before the last item in a list of three or more).
- **Code formatting:** Use code font for code-related text (filenames, variables, commands).
- **UI Elements:** formatting user interface elements in **bold**.
- **Date formatting:** Use unambiguous formats (e.g., "September 4, 2024" rather than "9/4/2024").
- **Structure:** Use logical hierarchy with clear introductions and navigation. Headings should be task-based where possible.
### Images and Code Samples
- **Images:** Use simple, clear illustrations to enhance understanding.
- **Captions:** Write captions that support the image.
- **Code Samples:**
- Ensure code is correct and builds without errors.
- Follow language-specific conventions.
- **Comments:** Focus on _why_, not _what_. Avoid commenting on obvious code.
### Reference Hierarchy
1. Project-specific style guidelines (if any exist in `CONTRIBUTING.md` or similar).
2. Google Developer Documentation Style Guide.
3. Merriam-Webster (spelling).
4. Chicago Manual of Style (non-technical).
5. Microsoft Writing Style Guide (technical).
---
## II. Angular Documentation Specifics
### Code Blocks
Use the appropriate language identifier for syntax highlighting:
- **TypeScript (Angular):** Use `angular-ts` when TypeScript code examples contain inline templates.
- **HTML (Angular):** Use `angular-html` for Angular templates.
- **TypeScript (Generic):** Use `ts` for plain TypeScript.
- **HTML (Generic):** Use `html` for plain HTML.
- **Shell/Terminal:** Use `shell` or `bash`.
- **Mermaid Diagrams:** Use `mermaid`.
#### Attributes
You can enhance code blocks with attributes in curly braces `{}` after the language identifier:
- `header="Title"`: Adds a title to the code block.
- `linenums`: Enables line numbering.
- `highlight="[1, 3-5]"`: Highlights specific lines.
- `hideCopy`: Hides the copy button.
- `prefer`: Marks code as a preferred example (green border/check).
- `avoid`: Marks code as an example to avoid (red border/cross).
**Example:**
````markdown
```angular-ts {header:"My Component", linenums, highlight="[2]"}
@Component({
selector: 'my-app',
template: '<h1>Hello</h1>',
})
export class App {}
```
````
#### `<docs-code>` Component
For more advanced code block features, use the `<docs-code>` component:
- `path`: Path to a source file (e.g., `adev/src/content/examples/...`).
- `header`: Custom header text.
- `language`: Language identifier (e.g., `angular-ts`).
- `linenums`: Boolean attribute.
- `highlight`: Array of line numbers/ranges (e.g., `[[3,7], 9]`).
- `diff`: Path to diff file.
- `visibleLines`: Range of lines to show initially (collapsible).
- `region`: Region to extract from source file.
- `preview`: Boolean. Renders a live preview (StackBlitz). _Only works with standalone examples._
- `hideCode`: Boolean. Collapses code by default.
**Multifile Example:**
```html
<docs-code-multifile path="..." preview>
<docs-code path="..." />
<docs-code path="..." />
</docs-code-multifile>
```
### Alerts / Admonitions
Use specific keywords followed by a colon for alerts. These render as styled blocks.
- `NOTE:` For ancillary information.
- `TIP:` For helpful hints or shortcuts.
- `IMPORTANT:` For crucial information.
- `CRITICAL:` For warnings about potential data loss or severe issues.
- `TODO`: For incomplete documentation.
- `QUESTION:` To pose a question to the reader.
- `SUMMARY:` For section summaries.
- `TLDR:` For concise summaries.
- `HELPFUL:` For best practices.
**Example:**
```markdown
TIP: Use `ng serve` to run your application locally.
```
### Custom Components
- **Cards (`<docs-card>`):**
- Must be inside `<docs-card-container>`.
- Attributes: `title`, `link`, `href`.
- **Callouts (`<docs-callout>`):**
- Attributes: `title`, `important`, `critical`.
- **Pills (`<docs-pill>`):**
- Must be inside `<docs-pill-row>`.
- Attributes: `title`, `href`.
- **Steps / Workflow (`<docs-step>`):**
- Must be inside `<docs-workflow>`.
- Attributes: `title`.
- **Tabs (`<docs-tab>`):**
- Must be inside `<docs-tab-group>`.
- Attributes: `label`.
- **Videos (`<docs-video>`):**
- Attributes: `src` (YouTube embed URL), `alt`.
### Images
Use standard markdown syntax with optional attributes for sizing and loading behavior.
- `#small`, `#medium`: Append to image URL for sizing.
- `{loading: 'lazy'}`: Add attribute for lazy loading.
**Example:**
```markdown
![Alt Text](path/to/image.png#medium {loading: 'lazy'})
```
### Headers
- Use markdown headers (`#`, `##`, `###`).
- Ensure a logical hierarchy (don't skip levels).
- `h2` and `h3` are most common for content structure.
@@ -0,0 +1,91 @@
---
name: reference-compiler-cli
description: Explains the mental model and architecture of the code under `packages/compiler-cli`. You MUST use this skill any time you plan to work with code in `packages/compiler-cli`
---
# Angular Compiler CLI (`ngtsc`) Architecture
## Overview
The `packages/compiler-cli` package contains the Angular Compiler (Ivy), often referred to as `ngtsc`. It is a wrapper around the TypeScript compiler (`tsc`) that extends it with Angular-specific capabilities.
The core goal of `ngtsc` is to compile Angular decorators (like `@Component`, `@Directive`, `@Pipe`) into static properties on the class (Ivy instructions, e.g., `static ɵcmp = ...`). It also performs template type checking and ahead-of-time (AOT) compilation.
## Mental Model
The compiler is designed as a **lazy, incremental, and partial** compilation pipeline.
1. **Wrapper Pattern**: `NgtscProgram` wraps the standard `ts.Program`. It intercepts calls to act as a drop-in replacement for standard tooling.
2. **Traits System**: Every class with an Angular decorator is considered a "Trait". The compiler manages the state of these traits through a state machine:
- **Pending**: Detected but not processed.
- **Analyzed**: Metadata extracted, template parsed (but dependencies not yet linked).
- **Resolved**: Dependencies (directives/pipes in template) resolved, import cycles handled.
- **Skipped**: Not an Angular class.
3. **Lazy Analysis**: Analysis only happens when necessary (e.g., when diagnostics are requested or emit is prepared).
4. **Output AST**: The compiler generates an intermediate "Output AST" (`o.Expression`) for the generated code, which is then translated into TypeScript AST nodes during the emit phase.
## Key Subsystems
### 1. Core Orchestration (`ngtsc/core`)
- **`NgtscProgram`**: The public API implementing `api.Program`. It manages the `ts.Program` and the `NgCompiler`.
- **`NgCompiler`**: The brain of the compiler. It orchestrates the compilation phases (Analysis, Resolution, Type Checking, Emit). It holds the `TraitCompiler`.
### 2. Trait Compilation (`ngtsc/transform`)
- **`TraitCompiler`**: Manages the lifecycle of "Traits". It iterates over source files, identifies decorated classes, and delegates to the appropriate `DecoratorHandler`.
- **`Trait`**: A state container for a class, holding its handler, analysis results, and resolution results.
### 3. Decorator Handlers (`ngtsc/annotations`)
- **`DecoratorHandler`**: An interface for handling specific decorators.
- **`ComponentDecoratorHandler`**: The most complex handler. It:
- Extracts metadata (selector, inputs, outputs).
- Parses the template.
- Resolves used directives and pipes (`R3TargetBinder`).
- Generates the `ɵcmp` instruction.
- **`DirectiveDecoratorHandler`**, **`PipeDecoratorHandler`**, **`NgModuleDecoratorHandler`**: Handle their respective decorators.
### 4. Template Type Checking (`ngtsc/typecheck`)
- **`TemplateTypeChecker`**: Generates "Type Check Blocks" (TCBs). A TCB is a block of TypeScript code that represents the template's logic in a way `tsc` can understand and check for errors.
- **`TypeCheckBlock`**: The actual generated code that validates bindings, events, and structural directives.
### 5. Metadata & Scope (`ngtsc/metadata`, `ngtsc/scope`)
- **`MetadataReader`**: Reads Angular metadata from source files (using `LocalMetadataRegistry`) and `.d.ts` files (using `DtsMetadataReader`).
- **`ScopeRegistry`**: Determines the "compilation scope" of a component (which directives/pipes are available to it), handling `NgModule` transitive exports and Standalone Component imports.
### 6. Emit & Transformation (`ngtsc/transform`)
- **`ivyTransformFactory`**: A TypeScript transformer factory.
- **`IvyCompilationVisitor`**: Visits classes, triggers compilation via `TraitCompiler`, and collects the Output AST.
- **`IvyTransformationVisitor`**: Translates the Output AST into TypeScript AST, injects the `static ɵ...` fields, and removes the original decorators.
## Compilation Phases
1. **Construction**: `NgtscProgram` creates `NgCompiler`, which sets up all registries and the `TraitCompiler`.
2. **Analysis** (`analyzeSync`):
- The `TraitCompiler` scans files.
- `DecoratorHandler`s extract metadata and parse templates.
- No cross-file resolution happens here (allowing for parallelism and caching).
3. **Resolution** (`resolve`):
- `TraitCompiler` resolves traits.
- Components link their templates to specific Directives and Pipes (found via `ScopeRegistry`).
- Import cycles are detected and handled (e.g., via "remote scoping").
4. **Type Checking**:
- `TemplateTypeChecker` creates TCBs for all components.
- TypeScript diagnostics are retrieved for these TCBs.
5. **Emit** (`prepareEmit`):
- `ivyTransformFactory` is created.
- TS `emit` is called.
- The transformers run, injecting the compiled Ivy instructions into the JS/DTS output.
## Important File Locations
- `packages/compiler-cli/src/ngtsc/program.ts`: Entry point (`NgtscProgram`).
- `packages/compiler-cli/src/ngtsc/core/src/compiler.ts`: Core logic (`NgCompiler`).
- `packages/compiler-cli/src/ngtsc/transform/src/trait.ts`: Trait state machine.
- `packages/compiler-cli/src/ngtsc/annotations/component/src/handler.ts`: Component compilation logic.
- `packages/compiler-cli/src/ngtsc/typecheck/src/template_type_checker.ts`: Type checking logic.
- `packages/compiler-cli/src/ngtsc/transform/src/transform.ts`: AST transformation logic.
+96
View File
@@ -0,0 +1,96 @@
---
name: reference-core
description: Explains the mental model and architecture of the code under `packages/core`. You MUST use this skill any time you plan to work with code in `packages/core`
---
# Angular Core (`packages/core`) Mental Model
This document outlines the architecture and mental model for `packages/core`, the heart of the Angular framework.
## 1. High-Level Architecture
`packages/core` contains the runtime logic for Angular. Its primary responsibilities are:
1. **Rendering (Ivy/Render3)**: Transforming templates into DOM updates.
2. **Dependency Injection (DI)**: Managing object creation and lifetime.
3. **Change Detection**: Synchronizing the model with the view.
4. **Reactivity**: Signals and Zone.js integration.
## 2. Rendering Engine (Ivy / Render3)
The rendering engine (located in `packages/core/src/render3`) uses an **instruction-based** approach.
### Key Concepts
- **Instructions**: The Angular compiler transforms templates into a sequence of instruction calls (e.g., `ɵɵelementStart`, `ɵɵtext`, `ɵɵproperty`). These instructions are executed at runtime to create and update the view.
- _Location_: `packages/core/src/render3/instructions`
- **LView (Logical View)**: An array containing the _state_ of a specific view instance. It holds:
- DOM nodes (`RElement`, `RText`).
- Binding values (for change detection).
- Directive/Component instances.
- _Context_: `packages/core/src/render3/interfaces/view.ts`
- **TView (Template View)**: An array containing the _static structure_ of a view. It is shared across all instances (`LView`s) of the same component/template. It holds:
- Property names for bindings.
- Node relationship information.
- Compiled directive definitions.
- _Context_: `packages/core/src/render3/interfaces/view.ts`
- **Memory Layout**: `LView` and `TView` are parallel arrays. Index `i` in `LView` corresponds to metadata at index `i` in `TView`.
- `HEADER`: Fixed size, contains context (Parent, Host, etc.).
- `DECLS`: Static nodes (elements, text, pipes).
- `VARS`: Binding values.
- `EXPANDO`: Dynamic data (host bindings, injectors).
### The Render Cycle
1. **Creation Mode**: Instructions create DOM nodes and store them in `LView`.
2. **Update Mode**: Instructions check current values against previous values stored in `LView`. If changed, they update the DOM.
## 3. Dependency Injection (DI)
DI in Angular is hierarchical and split into two systems that interact:
### Module Injector (`R3Injector`)
- Configured via `@NgModule.providers` or `providedIn: 'root'`.
- Stored in a hierarchy of `R3Injector` instances.
- _Location_: `packages/core/src/di/r3_injector.ts`
### Node Injector
- Configured via `@Component.providers` or `@Directive.providers`.
- **Not a class**, but a data structure embedded in the `LView` ("Expando" section).
- Uses **Bloom Filters** (`TView.data`) to quickly check if a token is present at a specific node index before traversing up the tree.
- Resolves tokens starting from the current node, walking up the view tree (Element Injector hierarchy), and falling back to the Module Injector if not found.
## 4. Change Detection
- **Dirty Checking**: Angular checks if values bound in templates have changed.
- **Strategies**:
- `Default`: Checks everything.
- `OnPush`: Checks only if inputs change, events fire, or signals update.
- **Signals**: The new reactivity primitive. Signals notify the scheduler when they change, potentially allowing for fine-grained updates (Zoneless).
## 5. Key Directories to Know
- `src/render3`: The Ivy rendering engine.
- `instructions`: The runtime instructions called by compiled code.
- `interfaces`: `LView`, `TView`, `TNode` definitions.
- `src/di`: Dependency injection system.
- `src/change_detection`: Change detection logic.
- `src/zone`: Zone.js integration.
- `src/signal`: Signals implementation (if present in this version, otherwise likely in `primitives`).
## 6. Conventions & Gotchas
- **Prefixes**: Private/Internal exports often start with `ɵ`.
- **Global State**: Ivy relies heavily on global state (e.g., `getLView()`) during instruction execution to avoid passing context arguments everywhere. This is for performance and code size.
- **Performance**: The code is highly optimized for performance and memory. You will see arrays used instead of objects, bitmasks, and manual memory management patterns. **Respect these patterns.**
## 7. How to Modify Core
1. **Understand the Instruction**: If modifying runtime behavior, find the corresponding instruction in `src/render3/instructions`.
2. **Check `LView`/`TView` Impact**: If adding state, understand where it fits in the `LView` array.
3. **Tests**: Core has extensive tests. Run them using Bazel.
@@ -0,0 +1,104 @@
---
name: reference-signal-forms
description: Explains the mental model and architecture of the code under `packages/forms/signals`. You MUST use this skill any time you plan to work with code in `packages/forms/signals`
---
# Signal Forms Architecture
The `packages/forms/signals` directory contains an experimental, signal-based forms API for Angular.
This system differs significantly from the existing Reactive and Template-driven forms.
## Mental Model
1. **Model-Driven**: The system is built around a `WritableSignal<T>` which serves as the **single source of truth**.
Unlike Reactive Forms where the `FormControl` holds the value, here the `Signal` holds the value.
The form is merely a _view_ or _projection_ of that signal, adding form-specific state (validity, dirty, touched).
2. **Proxy-Based Traversal**: The form API (`form(signal)`) returns a `FieldTree`. This object is a **Proxy**.
It allows accessing nested fields (e.g., `myForm.user.name`) without manually creating control groups.
Accessing a property on the proxy lazily resolves or creates the corresponding `FieldNode`.
3. **Schema-Based Logic**: Validation, disabled state, and other metadata are defined separately via **Schemas**.
Schemas are applied to the form structure using functions like `apply`, `applyEach` (for arrays), and `applyWhen`.
This separates the _structure_ of the data from the _rules_ governing it.
4. **Directives as Glue**: The `[formField]` directive binds a DOM element (native input or custom control) to a `FieldNode`.
It handles:
- Syncing the value between the DOM and the Signal.
- Reflecting state (valid, touched, etc.) to the UI.
- Handling user interaction events (blur, input).
## Key Components
### 1. `FieldNode` (`src/field/node.ts`)
The central internal class representing a single field in the form graph. It aggregates several state managers:
- `structure`: Manages parent/child relationships and signal slicing.
- `validationState`: Computes `valid`, `invalid`, `errors` signals.
- `nodeState`: Tracks `touched`, `dirty`, `pristine`.
- `metadataState`: Stores metadata like `min`, `max`, `required`.
- `submitState`: Tracks submission status and server errors.
### 2. `ValidationState` (`src/field/validation.ts`)
Manages the complexity of validation:
- **Synchronous Errors**: Derived from schema rules.
- **Asynchronous Errors**: Handled via signals, including 'pending' states.
- **Tree Errors**: Errors that bubble up or are targeted at specific fields.
- **Submission Errors**: Server-side errors injected imperatively via `submit()`.
### 3. `FormField` Directive (`src/directive/form_field_directive.ts`)
The bridge between the `FieldNode` and the DOM.
- Selector: `[formField]`
- It supports:
- **Native Elements**: `<input>`, `<select>`, `<textarea>`.
- **Custom Controls**: Components implementing `FormUiControl` or `FormValueControl`.
- **Legacy Interop**: Components implementing `ControlValueAccessor` (via `InteropNgControl`).
### 4. `Schema` (`src/api/structure.ts` & `src/api/rules`)
Defines the behavior.
- Created via `schema(fn)`.
- Applied via `apply(path, schema)`.
- Rules include validators (`required`, `pattern`, `min`, `max`) and state modifiers (`disabled`, `hidden`).
## Data Flow
1. **Read**: `form.field.value()` reads directly from the underlying signal (projected to the specific path).
2. **Write**: Writing to the form (e.g., via UI) updates the underlying signal.
3. **Validation**: A computed effect observes the value signal and runs validators defined in the schema.
## Usage Example (Conceptual)
```typescript
// 1. Define Model
const user = signal({name: '', age: 0});
// 2. Define Schema
const userRules = schema((u) => {
required(u.name);
min(u.age, 18);
});
// 3. Create Form
const userForm = form(user, userRules); // OR apply(userForm, userRules)
// 4. Bind in Template
// <input [formField]="userForm.name">
```
## Important Files
- `packages/forms/signals/src/api/structure.ts`: Public API entry points (`form`, `apply`).
- `packages/forms/signals/src/api/control.ts`: Interfaces for custom controls (`FormUiControl`).
- `packages/forms/signals/src/field/node.ts`: The `FieldNode` implementation.
- `packages/forms/signals/src/directive/form_field_directive.ts`: The `[formField]` directive.
## Supplemental Information
- [Compiler & Core Integration](references/integration.md): Details how `[formField]` hooks into type-checking and the runtime.
@@ -0,0 +1,46 @@
# Signal Forms Integration: Compiler & Core
This document explains how the Signal Forms system hooks into the Angular compiler and runtime to provide seamless type-checking and efficient updates.
## 1. Compiler-CLI Integration (Type Checking)
The `packages/compiler-cli` package contains specific logic to support `[formField]`. This is primarily handled in `src/ngtsc/typecheck/src/ops/signal_forms.ts`.
### Key Mechanisms:
- **Detection**: The compiler identifies a directive as a "Field Directive" if it has the `ɵNgFieldDirective` property or comes from `@angular/forms/signals`.
- **Synthetic Binding Expansion**: When you write `<input [formField]="mySignal" />`, the type checker doesn't just check `formField`. It synthetically expands this into a set of bindings for validation:
- `[value]="mySignal()"` (or `checked` for checkboxes)
- `[disabled]="mySignal.disabled()"`
- `[required]="mySignal.required()"`
- ...and so on.
- This ensures that `mySignal` (the `FieldNode`) has all the necessary properties to drive the form control.
- **Conflict Detection**: It actively prevents "double binding". If you bind `[formField]`, you are _banned_ from also binding `[value]`, `[disabled]`, `[required]`, etc., as the signal form should be the single source of truth.
- **Element Type Validation**:
- **Native Elements**: Checks that the signal's value type matches the element type (e.g., `<input type="checkbox">` requires a `boolean` signal).
- **Custom Controls**: Detects if a custom component is a "Form Value Control" (has a `value` input/output) or "Form Checkbox Control" (has a `checked` input/output) and validates against that.
### Relevant Files:
- `packages/compiler-cli/src/ngtsc/typecheck/src/ops/signal_forms.ts`: The core logic for `TcbNativeFieldOp` and `SignalFormFieldOp`.
## 2. Core Runtime Integration
The `packages/core` package provides the low-level instructions that power the `FormField` directive. This allows it to do things normal directives cannot, like efficiently syncing state without change detection overhead for every property.
### Key Mechanisms:
- **`ɵngControlCreate` Hook**: The `FormField` directive defines a special method `ɵngControlCreate`.
- **`ɵɵcontrol` Instructions**: When the compiler sees `ɵngControlCreate`, it emits:
- `ɵɵcontrolCreate`: Called during the creation phase.
- `ɵɵcontrol`: Called during the update phase.
- **`ControlDirectiveHost`**: These instructions provide the directive with a `ControlDirectiveHost`. This is a privileged interface that allows the `FormField` directive to:
- **Access the Element**: Get direct access to the native element or component instance.
- **Set Inputs**: Write directly to inputs of _other directives_ on the same node (e.g., setting the `value` input of a custom control).
- **Listen to Outputs**: Subscribe to outputs of other directives (e.g., `valueChange`).
- **Bypass Templates**: It effectively acts as a "meta-directive" that manages the bindings for you, bypassing the need for explicit template syntax for every property.
### Relevant Files:
- `packages/core/src/render3/instructions/control.ts`: Implementation of `ɵɵcontrol` instructions.
- `packages/forms/signals/src/directive/form_field_directive.ts`: The directive that implements the hook.
+45
View File
@@ -0,0 +1,45 @@
# all commits that change formatting to prettier
fd544159e300340a25a48e3f40c58795991a4c17
31fdf0fbea6b89c8d3d141b2ef8e79c2737287cb
0d78a92431178be73342aeddda4b62d9e49138ba
f307e95459898b9027d5e13357a809d8952e9017
b1dffa4abe8321a47d79b2ea29ee32a81acfe031
ca517d7f2c38775969a65fde1d88f41ad5f27931
8f69c83b848ad0dc3c7ffce2541fc726693dedcf
a5b5b7d5ef84b9852d2115dd7a764f4ab3299379
894c1c5f100a62866cc7ed3e23d025c8e505c60d
ca39926de2ccaceb11de47a35e5bf9899147a877
b857aafcb9bdb5f1400a4cfedd56657e71ebe8cd
c4b880a025823efadb9d76195c6261f2992c7654
4c2b0d94e22f022969b86b95af516b76322840e0
0460a9dfafe3a7ebbff1b87e52048fb7416bba43
ec03e462f3d4ec90d1267474cc344563c949c2cf
bbbe477f479f20722f0fea7ccc46095aad5d4253
cc34e5fb072e7903e01463953a19d18503a39347
f9781f9804f1e7c84df356d9aeb267730a7fc499
dc62446ef7f2898a20d3be1196ecaf2a92a1077d
711cb416260ca11ff158fc39b372efa2cf022d36
af77b89e2abb67bba201a53d500874ad572b8384
6270bba056cfaadb3fe0b2bf3b17036bdc28b90e
# commits that switch to relative imports
3d2263cb1f208e561692e41c5a17196c3c57877f
ae047c59c0041e0a43cec020520d40ccd981b444
6a207ebfb0b915bcb848e8e17425757314116ce3
88ae6517a2490ccbef97126c011a3d5bcaddd637
6d3849ffc85cc52b0eba3836b24f10895621acbe
bc042935d045c46d09c2c316dcbbc39cbae4615c
34393874e6b6f53692f1f30d0f536cd72e5220d2
cfda43b97d3c1aedc4a1eccf123475617640e696
006a14da89c58692d411e403b1b1cc8fd733de25
33c24624be73a4c16abdd5fb2f93810e151f6a58
e5cc624b8736c4e2aa87f86bb268957e656e0994
30a61f12a7d414ad35a1a06eaadff873880d8e8f
f773e08ee59724739093a33811a62661680df1f0
49234007916980526db78503452bba7121dc91ff
5c0335754a2b45b2a27fa7a9bffe5df93aec4eee
be7c8d4fc6cb3a71bd21fbb228e01cfcdce0717f
c702e8af0b2144d97b93171dc2806ed1a0346762
4f458a825d17e776500cc1597efb904e0dfdfe20
6d3f5752f204a5a30f3c09fbf6d4a510a4522bcb
3fa7b2b136696464e0a91b5ec25c6adf272d4d6b
ad65f44877f22caadbc8b977b5b720c3c86fcc45
+1 -1
View File
@@ -1,5 +1,5 @@
name: 'Docs or angular.dev Bug Report'
description: Report an issue in Angular's documentation or angular.io application
description: Report an issue in Angular's documentation or angular.dev application
body:
- type: textarea
+48
View File
@@ -0,0 +1,48 @@
name: 'VSCode Angular Language Service extension'
description: Report an issue or suggest a feature for the VSCode Angular Language Service extension
body:
- type: checkboxes
id: bug-report-or-feature-request
attributes:
label: Is this a bug report or a feature request?
description: Select one.
options:
- label: Bug Report
- label: Feature Request
- type: textarea
id: reproduction-steps
attributes:
label: Please provide the steps to reproduce the issue [Bug Report only]
- type: textarea
id: expected-vs-actual-behavior
attributes:
label: Please provide the expected behavior vs the actual behavior you encountered [Bug Report only]
- type: textarea
id: screenshot
attributes:
label: Please provide a screenshot if possible [Bug Report only]
- type: textarea
id: exception-or-error
attributes:
label: Please provide the exception or error you saw [Bug Report only]
render: true
- type: textarea
id: description
attributes:
label: Description [Feature Request only]
- type: textarea
id: proposed-solution
attributes:
label: Proposed solution [Feature Request only]
- type: textarea
id: alternatives-considered
attributes:
label: Alternatives considered [Feature Request only]
+1 -1
View File
@@ -1,7 +1,7 @@
blank_issues_enabled: false
contact_links:
- name: Security issue disclosure
url: https://angular.io/guide/security#report-issues
url: https://angular.dev/best-practices/security#report-issues
about: Report a security issue in Angular Framework, CDK, Material, or CLI
- name: Angular CLI
url: https://github.com/angular/angular-cli/issues/new/choose
+5 -8
View File
@@ -1,12 +1,13 @@
## PR Checklist
Please check if your PR fulfills the following requirements:
- [ ] The commit message follows our guidelines: https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit
- [ ] The commit message follows our guidelines: https://github.com/angular/angular/blob/main/contributing-docs/commit-message-guidelines.md
- [ ] Tests for the changes have been added (for bug fixes / features)
- [ ] Docs have been added / updated (for bug fixes / features)
## PR Type
What kind of change does this PR introduce?
<!-- Please check the one that applies to this PR using "x". -->
@@ -18,26 +19,22 @@ What kind of change does this PR introduce?
- [ ] Build related changes
- [ ] CI related changes
- [ ] Documentation content changes
- [ ] angular.io application / infrastructure changes
- [ ] angular.dev application / infrastructure changes
- [ ] Other... Please describe:
## What is the current behavior?
<!-- Please describe the current behavior that you are modifying, or link to a relevant issue. -->
Issue Number: N/A
## What is the new behavior?
## Does this PR introduce a breaking change?
- [ ] Yes
- [ ] No
<!-- If this PR contains a breaking change, please describe the impact and migration path for existing applications below. -->
## Other information
+28 -4
View File
@@ -1,4 +1,6 @@
load("//tools:defaults.bzl", "esbuild_checked_in")
load("//tools:defaults.bzl", "esbuild_checked_in", "ts_config", "ts_project")
package(default_visibility = ["//.github/actions/deploy-docs-site:__subpackages__"])
exports_files([
"tsconfig.json",
@@ -6,13 +8,35 @@ exports_files([
esbuild_checked_in(
name = "main",
entry_point = "//.github/actions/deploy-docs-site/lib:main.ts",
config = "esbuild.conf.js",
entry_point = ":lib/main.mts",
external = [
"undici",
"pnpapi",
],
metafile = False,
platform = "node",
target = "node14",
target = "node20",
deps = [
"//.github/actions/deploy-docs-site/lib",
":lib",
],
)
ts_config(
name = "tsconfig",
src = "tsconfig.json",
)
ts_project(
name = "lib",
srcs = glob(["lib/*.mts"]),
tsconfig = ":tsconfig",
deps = [
"//:node_modules/@actions/core",
"//:node_modules/@actions/github",
"//:node_modules/@angular/ng-dev",
"//:node_modules/@types/node",
"//:node_modules/@types/tmp",
"//:node_modules/tmp",
],
)
@@ -0,0 +1,17 @@
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.dev/license
*/
module.exports = {
resolveExtensions: ['.mjs', '.js'],
format: 'esm',
banner: {
// Workaround for: https://github.com/evanw/esbuild/issues/946
js: `import {createRequire as __cjsCompatRequire} from 'module';
const require = __cjsCompatRequire(import.meta.url);`,
},
};
@@ -1,23 +0,0 @@
load("//tools:defaults.bzl", "ts_library")
package(default_visibility = ["//.github/actions/deploy-docs-site:__subpackages__"])
exports_files([
"main.ts",
])
ts_library(
name = "lib",
srcs = glob(
["*.ts"],
),
#tsconfig = "//.github/actions/deploy-docs-site:tsconfig.json",
deps = [
"@npm//@actions/core",
"@npm//@actions/github",
"@npm//@angular/ng-dev",
"@npm//@types/node",
"@npm//@types/tmp",
"@npm//tmp",
],
)
@@ -0,0 +1,20 @@
import {fileSync} from 'tmp';
import {writeSync} from 'node:fs';
import {getInput, setSecret} from '@actions/core';
let credentialFilePath: undefined | string;
export function getCredentialFilePath(): string {
if (credentialFilePath === undefined) {
const tmpFile = fileSync({postfix: '.json'});
writeSync(tmpFile.fd, getInput('serviceKey', {required: true}));
setSecret(tmpFile.name);
credentialFilePath = tmpFile.name;
}
return credentialFilePath;
}
/** Github access token. Used for querying the active release trains. */
export const githubReleaseTrainReadToken: string = getInput('githubReleaseTrainReadToken', {
required: true,
});
@@ -1,20 +0,0 @@
import {fileSync} from 'tmp';
import {writeSync} from 'fs';
import {getInput, setSecret} from '@actions/core';
let credentialFilePath: undefined | string;
export function getCredentialFilePath(): string {
if (credentialFilePath === undefined) {
const tmpFile = fileSync({postfix: '.json'});
writeSync(tmpFile.fd, getInput('serviceKey', {required: true}));
setSecret(tmpFile.name);
credentialFilePath = tmpFile.name;
}
return credentialFilePath;
}
/** Github access token. Used for querying the active release trains. */
export const githubReleaseTrainReadToken: string = getInput('githubReleaseTrainReadToken', {
required: true,
});
@@ -0,0 +1,116 @@
import {mkdtemp, readFile, rm, writeFile} from 'node:fs/promises';
import {Deployment} from './deployments.mjs';
import {join} from 'node:path';
import {tmpdir} from 'node:os';
import {spawnSync} from 'node:child_process';
import {getCredentialFilePath} from './credential.mjs';
export async function deployToFirebase(
deployment: Deployment,
configPath: string,
stagingDir: string,
) {
if (deployment.destination == undefined) {
console.log(`No deployment necessary for docs created from: ${deployment.branch}`);
return;
}
console.log('Preparing for deployment to firebase...');
const deployConfigPath = join(stagingDir, 'firebase.json');
const config = JSON.parse(await readFile(configPath, {encoding: 'utf-8'})) as {
hosting: {public: string};
};
config['hosting']['public'] = './browser';
await writeFile(deployConfigPath, JSON.stringify(config, null, 2));
firebase(
`target:clear --config ${deployConfigPath} --project angular-dev-site hosting angular-docs`,
stagingDir,
);
firebase(
`target:apply --config ${deployConfigPath} --project angular-dev-site hosting angular-docs ${deployment.destination}`,
stagingDir,
);
firebase(
`deploy --config ${deployConfigPath} --project angular-dev-site --only hosting --non-interactive`,
stagingDir,
);
firebase(
`target:clear --config ${deployConfigPath} --project angular-dev-site hosting angular-docs`,
stagingDir,
);
await rm(stagingDir, {recursive: true});
}
export async function setupRedirect(deployment: Deployment) {
if (deployment.redirect === undefined) {
console.log(`No redirect necessary for docs created from: ${deployment.branch}`);
return;
}
console.log('Preparing to set up redirect on firebase...');
const redirectConfig = JSON.stringify(
{
hosting: {
target: 'angular-docs',
redirects: [
{
type: 302,
regex: '^(.*)$',
destination: `${deployment.redirect.to}:1`,
},
],
},
},
null,
2,
);
const tmpRedirectDir = await mkdtemp(join(tmpdir(), 'redirect-directory'));
const redirectConfigPath = join(tmpRedirectDir, 'firebase.json');
await writeFile(redirectConfigPath, redirectConfig);
spawnSync(`chmod 777 -R ${tmpRedirectDir}`, {encoding: 'utf-8', shell: true});
firebase(
`target:clear --config ${redirectConfigPath} --project angular-dev-site hosting angular-docs`,
tmpRedirectDir,
);
firebase(
`target:apply --config ${redirectConfigPath} --project angular-dev-site hosting angular-docs ${deployment.redirect.from}`,
tmpRedirectDir,
);
firebase(
`deploy --config ${redirectConfigPath} --project angular-dev-site --only hosting --non-interactive`,
tmpRedirectDir,
);
firebase(
`target:clear --config ${redirectConfigPath} --project angular-dev-site hosting angular-docs`,
tmpRedirectDir,
);
await rm(tmpRedirectDir, {recursive: true});
}
function firebase(cmd: string, cwd?: string) {
const {status} = spawnSync('npx', `-y firebase-tools@13.15.1 ${cmd}`.split(' '), {
cwd,
encoding: 'utf-8',
shell: true,
stdio: 'inherit',
env: {
...process.env,
GOOGLE_APPLICATION_CREDENTIALS: getCredentialFilePath(),
},
});
if (status !== 0) {
console.error('Firebase command failed, see log above for details.');
process.exit(status);
}
}
@@ -1,116 +0,0 @@
import {cp, mkdtemp, readFile, rm, writeFile} from 'fs/promises';
import {Deployment} from './deployments';
import {join} from 'path';
import {tmpdir} from 'os';
import {spawnSync} from 'child_process';
import {getCredentialFilePath} from './credential';
export async function deployToFirebase(
deployment: Deployment,
configPath: string,
distDirPath: string,
) {
if (deployment.destination == undefined) {
console.log(`No deployment necessary for docs created from: ${deployment.branch}`);
return;
}
console.log('Preparing for deployment to firebase...');
const tmpDeployDir = await mkdtemp(join(tmpdir(), 'deploy-directory'));
const deployConfigPath = join(tmpDeployDir, 'firebase.json');
const config = JSON.parse(await readFile(configPath, {encoding: 'utf-8'})) as {
hosting: {public: string};
};
config['hosting']['public'] = './dist';
await writeFile(deployConfigPath, JSON.stringify(config, null, 2));
await cp(distDirPath, join(tmpDeployDir, 'dist'), {recursive: true});
spawnSync(`chmod 777 -R ${tmpDeployDir}`, {encoding: 'utf-8', shell: true});
firebase(
`target:clear --config ${deployConfigPath} --project angular-dev-site hosting angular-docs`,
tmpDeployDir,
);
firebase(
`target:apply --config ${deployConfigPath} --project angular-dev-site hosting angular-docs ${deployment.destination}`,
tmpDeployDir,
);
firebase(
`deploy --config ${deployConfigPath} --project angular-dev-site --only hosting --non-interactive`,
tmpDeployDir,
);
firebase(
`target:clear --config ${deployConfigPath} --project angular-dev-site hosting angular-docs`,
tmpDeployDir,
);
await rm(tmpDeployDir, {recursive: true});
}
export async function setupRedirect(deployment: Deployment) {
if (deployment.redirect === undefined) {
console.log(`No redirect necessary for docs created from: ${deployment.branch}`);
return;
}
console.log('Preparing to set up redirect on firebase...');
const redirectConfig = JSON.stringify(
{
hosting: {
target: 'angular-docs',
redirects: [
{
type: 302,
regex: '^(.*)$',
destination: `${deployment.redirect.to}:1`,
},
],
},
},
null,
2,
);
const tmpRedirectDir = await mkdtemp(join(tmpdir(), 'redirect-directory'));
const redirectConfigPath = join(tmpRedirectDir, 'firebase.json');
await writeFile(redirectConfigPath, redirectConfig);
spawnSync(`chmod 777 -R ${tmpRedirectDir}`, {encoding: 'utf-8', shell: true});
firebase(
`target:clear --config ${redirectConfigPath} --project angular-dev-site hosting angular-docs`,
tmpRedirectDir,
);
firebase(
`target:apply --config ${redirectConfigPath} --project angular-dev-site hosting angular-docs ${deployment.redirect.from}`,
tmpRedirectDir,
);
firebase(
`deploy --config ${redirectConfigPath} --project angular-dev-site --only hosting --non-interactive`,
tmpRedirectDir,
);
firebase(
`target:clear --config ${redirectConfigPath} --project angular-dev-site hosting angular-docs`,
tmpRedirectDir,
);
await rm(tmpRedirectDir, {recursive: true});
}
function firebase(cmd: string, cwd?: string) {
spawnSync('npx', `-y firebase-tools@latest ${cmd}`.split(' '), {
cwd,
encoding: 'utf-8',
shell: true,
stdio: 'inherit',
env: {
...process.env,
GOOGLE_APPLICATION_CREDENTIALS: getCredentialFilePath(),
},
});
}
@@ -0,0 +1,73 @@
import {fetchLongTermSupportBranchesFromNpm, ActiveReleaseTrains} from '@angular/ng-dev';
import {ReleaseConfig} from '@angular/ng-dev';
import {AuthenticatedGitClient} from '@angular/ng-dev';
export interface Deployment {
branch: string;
redirect?: {
from: string;
to: string;
};
destination?: string;
servingUrl: string;
}
export type Deployments = Map<string, Deployment>;
export async function getDeployments(): Promise<Deployments> {
const {github} = await AuthenticatedGitClient.get();
const releaseTrains = await ActiveReleaseTrains.fetch({
api: github,
name: 'angular',
owner: 'angular',
nextBranchName: 'main',
});
const ltsBranches = await fetchLongTermSupportBranchesFromNpm({
representativeNpmPackage: '@angular/core',
} as ReleaseConfig);
const docSites = new Map<string, Deployment>();
[...ltsBranches.active, ...ltsBranches.inactive].forEach((branch) => {
docSites.set(branch.name, {
branch: branch.name,
destination: `v${branch.version.major}-angular-dev`,
servingUrl: `https://v${branch.version.major}.angular.dev/`,
});
});
docSites.set(releaseTrains.latest.branchName, {
branch: releaseTrains.latest.branchName,
redirect: {
from: `v${releaseTrains.latest.version.major}-angular-dev`,
to: 'https://angular.dev',
},
servingUrl: 'https://angular.dev/',
destination: 'angular-dev-site',
});
if (releaseTrains.releaseCandidate) {
docSites.set(releaseTrains.next.branchName, {
branch: releaseTrains.next.branchName,
servingUrl: 'https://next.angular.dev/',
});
docSites.set(releaseTrains.releaseCandidate.branchName, {
branch: releaseTrains.releaseCandidate.branchName,
destination: 'next-angular-dev',
redirect: {
from: `v${releaseTrains.releaseCandidate.version.major}-angular-dev`,
to: 'https://next.angular.dev',
},
servingUrl: 'https://next.angular.dev/',
});
} else {
docSites.set(releaseTrains.next.branchName, {
branch: releaseTrains.next.branchName,
destination: 'next-angular-dev',
servingUrl: 'https://next.angular.dev/',
});
}
return docSites;
}
@@ -1,67 +0,0 @@
import {fetchLongTermSupportBranchesFromNpm, ActiveReleaseTrains} from '@angular/ng-dev';
import {ReleaseConfig} from '@angular/ng-dev';
import {AuthenticatedGitClient} from '@angular/ng-dev';
export interface Deployment {
branch: string;
redirect?: {
from: string;
to: string;
};
destination?: string;
}
export type Deployments = Map<string, Deployment>;
export async function getDeployments(): Promise<Deployments> {
const {github} = await AuthenticatedGitClient.get();
const releaseTrains = await ActiveReleaseTrains.fetch({
api: github,
name: 'angular',
owner: 'angular',
nextBranchName: 'main',
});
const ltsBranches = await fetchLongTermSupportBranchesFromNpm({
representativeNpmPackage: '@angular/core',
} as ReleaseConfig);
const docSites = new Map<string, Deployment>();
[...ltsBranches.active, ...ltsBranches.inactive].forEach((branch) => {
docSites.set(branch.name, {
branch: branch.name,
destination: `v${branch.version.major}-angular-dev`,
});
});
docSites.set(releaseTrains.latest.branchName, {
branch: releaseTrains.latest.branchName,
redirect: {
from: `v${releaseTrains.latest.version.major}-angular-dev`,
to: 'https://angular.dev',
},
destination: 'angular-dev-site',
});
if (releaseTrains.releaseCandidate) {
docSites.set(releaseTrains.next.branchName, {
branch: releaseTrains.next.branchName,
});
docSites.set(releaseTrains.releaseCandidate.branchName, {
branch: releaseTrains.releaseCandidate.branchName,
destination: 'next-angular-dev',
redirect: {
from: `v${releaseTrains.releaseCandidate.version.major}-angular-dev`,
to: 'https://next.angular.dev',
},
});
} else {
docSites.set(releaseTrains.next.branchName, {
branch: releaseTrains.next.branchName,
destination: 'next-angular-dev',
});
}
return docSites;
}
@@ -0,0 +1,79 @@
import {getInput, setFailed} from '@actions/core';
import {context} from '@actions/github';
import {deployToFirebase, setupRedirect} from './deploy.mjs';
import {getDeployments} from './deployments.mjs';
import {generateSitemap} from './sitemap.mjs';
import {assertValidGithubConfig, AuthenticatedGitClient, getConfig} from '@angular/ng-dev';
import {githubReleaseTrainReadToken} from './credential.mjs';
import {spawnSync} from 'child_process';
import {cp, mkdtemp} from 'fs/promises';
import {tmpdir} from 'os';
import {join} from 'path';
const refMatcher = /refs\/heads\/(.*)/;
async function deployDocs() {
getConfig([assertValidGithubConfig]);
AuthenticatedGitClient.configure(githubReleaseTrainReadToken);
if (context.eventName !== 'push') {
throw Error();
}
const matchedRef = context.ref.match(refMatcher);
if (matchedRef === null) {
throw Error();
}
const currentBranch = matchedRef[1];
const configPath = getInput('configPath');
const stagingDir = await mkdtemp(join(tmpdir(), 'deploy-directory'));
// Copy all files from the distDir into stagingDir and modify the permissions for editing
await cp(getInput('distDir'), stagingDir, {recursive: true});
spawnSync(`chmod 777 -R ${stagingDir}`, {encoding: 'utf-8', shell: true});
const deployment = (await getDeployments()).get(currentBranch);
if (deployment === undefined) {
console.log(`Current branch (${currentBranch}) does not deploy a documentation site.`);
console.log(`Exiting...`);
process.exit(0);
}
console.log('Doc site deployment information');
console.log('');
console.log('Current Branch:');
console.log(` ${deployment.branch}`);
console.log('');
console.log('Firebase Site:');
if (deployment.destination === undefined) {
console.log(' No deployment of a documenation site is necessary');
} else {
console.log(` Deploying to: ${deployment.destination}`);
}
console.log('');
console.log('Redirect Configuration:');
if (deployment.redirect === undefined) {
console.log(' No redirects are necessary');
} else {
console.log(` From: ${deployment.redirect.from}`);
console.log(` To: ${deployment.redirect.to}`);
}
await generateSitemap(deployment, stagingDir);
await deployToFirebase(deployment, configPath, stagingDir);
await setupRedirect(deployment);
}
// Only run if the action is executed in a repository with is in the Angular org. This is in place
// to prevent the action from actually running in a fork of a repository with this action set up.
if (context.repo.owner === 'angular') {
deployDocs().catch((e: Error) => {
setFailed(e.message);
console.error(e);
});
} else {
console.warn(
'The action was skipped as this action is only meant to run in repos belonging to the Angular organization.',
);
}
@@ -1,75 +0,0 @@
import {getInput, setFailed} from '@actions/core';
import {context} from '@actions/github';
import {deployToFirebase, setupRedirect} from './deploy';
import {getDeployments} from './deployments';
import {AuthenticatedGitClient, GithubConfig, setConfig} from '@angular/ng-dev';
import {githubReleaseTrainReadToken} from './credential';
const refMatcher = /refs\/heads\/(.*)/;
async function deployDocs() {
setConfig({
github: <GithubConfig>{
mainBranchName: 'main',
name: 'angular',
owner: 'angular',
},
});
AuthenticatedGitClient.configure(githubReleaseTrainReadToken);
if (context.eventName !== 'push') {
throw Error();
}
const matchedRef = context.ref.match(refMatcher);
if (matchedRef === null) {
throw Error();
}
const currentBranch = matchedRef[1];
const configPath = getInput('configPath');
const distDir = getInput('distDir');
const deployment = (await getDeployments()).get(currentBranch);
if (deployment === undefined) {
console.log(`Current branch (${currentBranch}) does not deploy a documentation site.`);
console.log(`Exiting...`);
process.exit(0);
}
console.log('Doc site deployment information');
console.log('');
console.log('Current Branch:');
console.log(` ${deployment.branch}`);
console.log('');
console.log('Firebase Site:');
if (deployment.destination === undefined) {
console.log(' No deployment of a documenation site is necessary');
} else {
console.log(` Deploying to: ${deployment.destination}`);
}
console.log('');
console.log('Redirect Configuration:');
if (deployment.redirect === undefined) {
console.log(' No redirects are necessary');
} else {
console.log(` From: ${deployment.redirect.from}`);
console.log(` To: ${deployment.redirect.to}`);
}
await deployToFirebase(deployment, configPath, distDir);
await setupRedirect(deployment);
}
// Only run if the action is executed in a repository with is in the Angular org. This is in place
// to prevent the action from actually running in a fork of a repository with this action set up.
if (context.repo.owner === 'angular') {
deployDocs().catch((e: Error) => {
setFailed(e.message);
console.error(e);
});
} else {
console.warn(
'The action was skipped as this action is only meant to run in repos belonging to the Angular organization.',
);
}
@@ -0,0 +1,53 @@
import {Deployment} from './deployments.mjs';
import {join} from 'node:path';
import {readFile, writeFile} from 'node:fs/promises';
export async function generateSitemap(deployment: Deployment, distDir: string): Promise<void> {
/** Timestamp string used to of the last file update. */
const lastModifiedTimestamp = new Date().toISOString();
/** An object containing all of the routes available within the application. */
const {routes} = JSON.parse(await readFile(join(distDir, 'prerendered-routes.json'), 'utf-8'));
const routePaths = Object.keys(routes);
/** The generated sitemap string. */
const sitemap = `<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
${routePaths
.map(
(route) => `<url>
<loc>${joinUrlParts(deployment.servingUrl, route)}</loc>
<lastmod>${lastModifiedTimestamp}</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>`,
)
.join('')}
</urlset>`;
await writeFile(join(distDir, 'browser', 'sitemap.xml'), sitemap, 'utf-8');
console.log(`Generated sitemap with ${routePaths.length} entries.`);
}
function joinUrlParts(...parts: string[]): string {
const normalizeParts: string[] = [];
for (const part of parts) {
if (part === '') {
// Skip any empty parts
continue;
}
let normalizedPart = part;
if (part[0] === '/') {
normalizedPart = normalizedPart.slice(1);
}
if (part.at(-1) === '/') {
normalizedPart = normalizedPart.slice(0, -1);
}
if (normalizedPart !== '') {
normalizeParts.push(normalizedPart);
}
}
return normalizeParts.join('/');
}
File diff suppressed because one or more lines are too long
@@ -1,3 +0,0 @@
{
"type": "module"
}
+8 -11
View File
@@ -1,19 +1,16 @@
{
"compilerOptions": {
"module": "Node16",
"target": "es2020",
"lib": ["es2021", "dom"],
"module": "NodeNext",
"target": "ES2021",
"types": ["node"],
"lib": ["es2021"],
"experimentalDecorators": true,
"strict": true,
"outDir": "../../../dist/tsc-non-bazel-out",
"skipLibCheck": true,
"noImplicitOverride": true,
// TODO(ESM): Remove this when Bazel also uses the Node resolution.
"esModuleInterop": true,
"noImplicitReturns": true,
"jsx": "react",
"jsxFactory": "h",
"jsxFragmentFactory": "Fragment"
},
"exclude": []
}
"declaration": true,
"sourceMap": true
}
}
@@ -0,0 +1,40 @@
name: 'Saucelabs legacy test job'
description: 'Runs tests against Saucelabs (outside of Bazel)'
runs:
using: 'composite'
steps:
- name: Setup Bazel
uses: angular/dev-infra/github-actions/bazel/setup@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Saucelabs Variables
uses: angular/dev-infra/github-actions/saucelabs@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Starting Saucelabs tunnel service
shell: bash
run: ./tools/saucelabs/sauce-service.sh run &
# Build test fixtures for a test that rely on Bazel-generated fixtures. Note that disabling
# specific tests which are reliant on such generated fixtures is not an option as SystemJS
# in the Saucelabs legacy job always fetches referenced files, even if the imports would be
# guarded by an check to skip in the Saucelabs legacy job. We should be good running such
# test in all supported browsers on Saucelabs anyway until this job can be removed.
- name: Preparing Bazel-generated fixtures required in legacy tests
shell: bash
run: |
# Locale files are needed for i18n tests running within Saucelabs. These are added
# directly as sources so that the TypeScript compilation of `/packages/tsconfig.json`
# can succeed. Note that the base locale and currencies files are checked-in, so
# we do not need to re-generate those through Bazel.
mkdir -p packages/common/locales/extra
cp dist/bin/packages/common/locales/*.ts packages/common/locales
cp dist/bin/packages/common/locales/extra/*.ts packages/common/locales/extra
- name: Build bundle of tests to run on Saucelabs
shell: bash
run: node tools/legacy-saucelabs/build-saucelabs-test-bundle.mjs
- name: Wait and confirm Saucelabs tunnel has connected
shell: bash
run: ./tools/saucelabs/sauce-service.sh ready-wait
- name: Running tests on Saucelabs.
shell: bash
run: KARMA_WEB_TEST_MODE=SL_REQUIRED pnpm karma start ./karma-js.conf.js --single-run
- name: Stop Saucelabs tunnel service
shell: bash
run: ./tools/saucelabs/sauce-service.sh stop
-17
View File
@@ -1,17 +0,0 @@
name: 'Installing Yarn dependencies'
description: 'Installs the dependencies using Yarn'
runs:
using: 'composite'
steps:
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4
with:
path: |
./node_modules/
# If just `WORKSPACE` or `yarn.lock` is changed, the most recent cache can be restored.
# See: https://docs.github.com/en/actions/guides/caching-dependencies-to-speed-up-workflows#example-using-the-cache-action.
key: v1-angular-main-deps-${{hashFiles('WORKSPACE')}}-${{hashFiles('yarn.lock')}}
restore-keys: v1-angular-main-deps-
- run: yarn install --frozen-lockfile --non-interactive
shell: bash
+10 -9
View File
@@ -15,24 +15,25 @@ permissions: read-all
jobs:
adev-build:
runs-on: ubuntu-latest
runs-on: ubuntu-latest-8core
if: |
(github.event.action == 'labeled' && github.event.label.name == 'adev: preview') ||
(github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'adev: preview'))
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel
uses: angular/dev-infra/github-actions/bazel/setup@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/bazel/setup@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel RBE
uses: angular/dev-infra/github-actions/bazel/configure-remote@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/bazel/configure-remote@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Install node modules
run: yarn install --frozen-lockfile
- name: Build adev to ensure it continues to work
run: yarn bazel build //adev:build --config=release
- uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@03b8a7dffd1205e061f0bee949024ebefc2a6592
run: pnpm install --frozen-lockfile
- name: Build adev
# `snapshot-build` config is used to stamp the exact version with sha in the footer.
run: pnpm bazel build //adev:build.production --config=snapshot-build
- uses: angular/dev-infra/github-actions/previews/pack-and-upload-artifact@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
with:
workflow-artifact-name: 'adev-preview'
pull-number: '${{github.event.pull_request.number}}'
artifact-build-revision: '${{github.event.pull_request.head.sha}}'
deploy-directory: './dist/bin/adev/build/browser'
deploy-directory: './dist/bin/adev/dist/browser'
+2 -2
View File
@@ -29,7 +29,7 @@ jobs:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
token: '${{secrets.GITHUB_TOKEN}}'
@@ -40,7 +40,7 @@ jobs:
npx -y firebase-tools@latest target:clear --config adev/firebase.json --project ${{env.PREVIEW_PROJECT}} hosting angular-docs
npx -y firebase-tools@latest target:apply --config adev/firebase.json --project ${{env.PREVIEW_PROJECT}} hosting angular-docs ${{env.PREVIEW_SITE}}
- uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@03b8a7dffd1205e061f0bee949024ebefc2a6592
- uses: angular/dev-infra/github-actions/previews/upload-artifacts-to-firebase@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
with:
github-token: '${{secrets.GITHUB_TOKEN}}'
workflow-artifact-name: 'adev-preview'
@@ -12,10 +12,11 @@ permissions:
jobs:
assistant_to_the_branch_manager:
runs-on: ubuntu-latest
if: github.event.repository.fork == false
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: angular/dev-infra/github-actions/branch-manager@03b8a7dffd1205e061f0bee949024ebefc2a6592
- uses: angular/dev-infra/github-actions/branch-manager@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
with:
angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }}
+8 -8
View File
@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
if: ${{ github.event.issue.pull_request && startsWith(github.event.comment.body, '/benchmark-compare ')}}
steps:
- uses: TheModdingInquisition/actions-team-membership@a69636a92bc927f32c3910baac06bacc949c984c # v1.0
- uses: TheModdingInquisition/actions-team-membership@057d91bb80f2976a1bc6dfab5b4ae1da9aebbd89 # v1.0
with:
team: 'team'
organization: angular
@@ -19,7 +19,7 @@ jobs:
exit: true
# Indicate that the benchmark command was received.
- uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4
- uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5
with:
comment-id: ${{github.event.comment.id}}
token: '${{secrets.BENCHMARK_POST_RESULTS_GITHUB_TOKEN}}'
@@ -28,7 +28,7 @@ jobs:
- uses: alessbell/pull-request-comment-branch@aad01d65d6982b8eacabed5e9a684cd8ceb98da6 # v1.1
id: comment-branch
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
# Specify repository as the PR branch might be from a fork.
repository: ${{steps.comment-branch.outputs.head_owner}}/${{steps.comment-branch.outputs.head_repo}}
@@ -36,9 +36,9 @@ jobs:
# that the action was triggered by a team member.
ref: ${{steps.comment-branch.outputs.head_ref}}
- uses: ./.github/actions/yarn-install
- run: pnpm install --frozen-lockfile
- uses: angular/dev-infra/github-actions/bazel/configure-remote@03b8a7dffd1205e061f0bee949024ebefc2a6592
- uses: angular/dev-infra/github-actions/bazel/configure-remote@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
with:
bazelrc: ./.bazelrc.user
@@ -47,13 +47,13 @@ jobs:
env:
# Untrusted input used in an executable code, must be wrapped as an env var to prevent injections
COMMENT_BODY: ${{ github.event.comment.body }}
run: yarn benchmarks prepare-for-github-action "$COMMENT_BODY"
run: pnpm benchmarks prepare-for-github-action "$COMMENT_BODY"
- run: yarn benchmarks run-compare ${{steps.info.outputs.compareSha}} ${{steps.info.outputs.benchmarkTarget}}
- run: pnpm benchmarks run-compare ${{steps.info.outputs.compareSha}} ${{steps.info.outputs.benchmarkTarget}}
id: benchmark
name: Running benchmark
- uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4
- uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5
with:
issue-number: ${{github.event.issue.number}}
token: '${{secrets.BENCHMARK_POST_RESULTS_GITHUB_TOKEN}}'
+124 -95
View File
@@ -1,4 +1,4 @@
name: CI
name: CI (push)
on:
push:
@@ -21,114 +21,153 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@03b8a7dffd1205e061f0bee949024ebefc2a6592
with:
cache-node-modules: true
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Install node modules
run: yarn install --frozen-lockfile
run: pnpm install --frozen-lockfile
- name: Check code lint
run: yarn -s tslint
run: pnpm tslint
- name: Check for circular dependencies
run: yarn -s ts-circular-deps:check
run: pnpm ts-circular-deps:check
- name: Validate pull approve configuration
run: yarn -s ng-dev pullapprove verify
run: pnpm ng-dev pullapprove verify
- name: Validate angular robot configuration
run: yarn -s ng-dev ngbot verify
run: pnpm ng-dev ngbot verify
- name: Validate agent skills
run: pnpm ng-dev ai skills validate
- name: Confirm code builds with typescript as expected
run: yarn -s check-tooling-setup
run: pnpm check-tooling-setup
devtools:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
with:
cache-node-modules: true
disable-package-manager-cache: true
- name: Setup Bazel
uses: angular/dev-infra/github-actions/bazel/setup@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/bazel/setup@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel RBE
uses: angular/dev-infra/github-actions/bazel/configure-remote@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/bazel/configure-remote@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
with:
google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }}
- name: Install node modules
run: yarn install --frozen-lockfile
run: pnpm install --frozen-lockfile
- name: Run unit tests
run: yarn devtools:test
run: pnpm devtools:test
- name: Test build
run: yarn devtools:build:chrome
run: pnpm devtools:build:chrome
- name: Cypress run
uses: cypress-io/github-action@bc22e01685c56e89e7813fd8e26f33dc47f87e15 # v7.1.5
with:
command: pnpm devtools:test:e2e
start: pnpm bazel run //devtools/src:devserver
wait-on: 'http://localhost:4200'
wait-on-timeout: 300
install: false
test:
runs-on: ubuntu-latest-4core
runs-on: ubuntu-latest
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@03b8a7dffd1205e061f0bee949024ebefc2a6592
with:
cache-node-modules: true
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel
uses: angular/dev-infra/github-actions/bazel/setup@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/bazel/setup@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel Remote Caching
uses: angular/dev-infra/github-actions/bazel/configure-remote@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/bazel/configure-remote@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
with:
google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }}
- name: Install node modules
run: yarn install --frozen-lockfile --network-timeout 100000
run: pnpm install --frozen-lockfile
- name: Run CI tests for framework
run: yarn test:ci
run: pnpm test:ci
integration-tests:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel
uses: angular/dev-infra/github-actions/bazel/setup@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel Remote Caching
uses: angular/dev-infra/github-actions/bazel/configure-remote@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
with:
google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }}
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Run integration CI tests for framework
run: pnpm integration-tests:ci
adev:
runs-on:
labels: ubuntu-latest-4core
labels: ubuntu-latest
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel
uses: angular/dev-infra/github-actions/bazel/setup@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/bazel/setup@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel RBE
uses: angular/dev-infra/github-actions/bazel/configure-remote@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/bazel/configure-remote@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
with:
google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }}
- name: Install node modules
run: yarn install --frozen-lockfile
- name: Build adev in fast mode to ensure it continues to work
run: yarn bazel build //adev:build --fast_adev --config=release
run: pnpm install --frozen-lockfile
- name: Run tests
run: yarn bazel test //adev:test
run: pnpm bazel test //adev/...
- name: Build adev in fast mode to ensure it continues to work
run: pnpm bazel build //adev:build
vscode-ng-language-service:
runs-on:
labels: ubuntu-latest
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel
uses: angular/dev-infra/github-actions/bazel/setup@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel RBE
uses: angular/dev-infra/github-actions/bazel/configure-remote@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
with:
google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }}
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Run tests
run: pnpm bazel test //vscode-ng-language-service/...
publish-snapshots:
runs-on:
labels: ubuntu-latest
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@03b8a7dffd1205e061f0bee949024ebefc2a6592
with:
cache-node-modules: true
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel
uses: angular/dev-infra/github-actions/bazel/setup@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/bazel/setup@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel RBE
uses: angular/dev-infra/github-actions/bazel/configure-remote@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/bazel/configure-remote@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Install node modules
run: yarn install --frozen-lockfile
run: pnpm install --frozen-lockfile
- run: echo "https://${{secrets.SNAPSHOT_BUILDS_GITHUB_TOKEN}}:@github.com" > ${HOME}/.git_credentials
- run: yarn build
- run: ./scripts/ci/publish-build-artifacts.sh
- run: pnpm build
- run: ./scripts/ci/publish-snapshot-build-artifacts.sh
zone-js:
runs-on:
labels: ubuntu-latest-4core
labels: ubuntu-latest
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@03b8a7dffd1205e061f0bee949024ebefc2a6592
with:
cache-node-modules: true
node-module-directories: |
./node_modules
./packages/zone.js/node_modules
./packages/zone.js/test/typings/node_modules
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel
uses: angular/dev-infra/github-actions/bazel/setup@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/bazel/setup@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel RBE
uses: angular/dev-infra/github-actions/bazel/configure-remote@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/bazel/configure-remote@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
with:
google_credential: ${{ secrets.RBE_TRUSTED_BUILDS_USER }}
- name: Install node modules
run: yarn install --frozen-lockfile
run: pnpm install --frozen-lockfile
- run: |
yarn bazel build \
pnpm bazel build \
//packages/zone.js/bundles:zone.umd.js \
//packages/zone.js:npm_package \
//packages/zone.js/test/closure:closure_js \
//packages/zone.js/test/closure:closure
- run: |
rm -Rf packages/zone.js/build
@@ -140,63 +179,53 @@ jobs:
cp dist/bin/packages/zone.js/bundles/zone.umd.js packages/zone.js/build/zone.umd.js
cp dist/bin/packages/zone.js/npm_package/bundles/zone-mix.umd.js ./packages/zone.js/test/extra/
cp dist/bin/packages/zone.js/npm_package/bundles/zone-patch-electron.umd.js ./packages/zone.js/test/extra/
cp dist/bin/packages/zone.js/test/closure/zone.closure.mjs ./packages/zone.js/build/test/zone.closure.mjs
cp dist/bin/packages/zone.js/test/closure/zone.closure.js ./packages/zone.js/build/test/zone.closure.mjs
# Install
- run: yarn --cwd packages/zone.js install --frozen-lockfile --non-interactive
- run: pnpm -C packages/zone.js install --frozen-lockfile
# Run zone.js tools tests
- run: yarn --cwd packages/zone.js promisefinallytest
- run: yarn --cwd packages/zone.js jest:test
- run: yarn --cwd packages/zone.js jest:nodetest
- run: yarn --cwd packages/zone.js electrontest
- run: yarn --cwd packages/zone.js/test/typings install --frozen-lockfile --non-interactive
- run: yarn --cwd packages/zone.js/test/typings test
- run: pnpm -C packages/zone.js promisefinallytest
- run: pnpm -C packages/zone.js jest:test
- run: pnpm -C packages/zone.js jest:nodetest
- run: pnpm -C packages/zone.js vitest:test
- run: pnpm -C packages/zone.js electrontest
- run: pnpm -C packages/zone.js/test/typings test
bazel-saucelabs:
runs-on: ubuntu-latest-4core
env:
JOBS: 2
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@03b8a7dffd1205e061f0bee949024ebefc2a6592
with:
cache-node-modules: true
- name: Install node modules
run: yarn install --frozen-lockfile
- name: Setup Bazel
uses: angular/dev-infra/github-actions/bazel/setup@03b8a7dffd1205e061f0bee949024ebefc2a6592
- name: Setup Bazel Remote Caching
uses: angular/dev-infra/github-actions/bazel/configure-remote@03b8a7dffd1205e061f0bee949024ebefc2a6592
- name: Setup Saucelabs Variables
uses: angular/dev-infra/github-actions/saucelabs@03b8a7dffd1205e061f0bee949024ebefc2a6592
- name: Set up Sauce Tunnel Daemon
run: yarn bazel run //tools/saucelabs-daemon/background-service -- $JOBS &
env:
SAUCE_TUNNEL_IDENTIFIER: angular-framework-${{ github.run_number }}
- name: Run all saucelabs bazel tests
run: |
TESTS=$(./node_modules/.bin/bazelisk query --output label '(kind(karma_web_test, ...) intersect attr("tags", "saucelabs", ...)) except attr("tags", "fixme-saucelabs", ...)')
yarn bazel test --config=saucelabs --jobs=$JOBS ${TESTS}
# saucelabs:
# runs-on: ubuntu-latest
# env:
# SAUCE_TUNNEL_IDENTIFIER: angular-framework-${{ github.run_number }}
# steps:
# - name: Initialize environment
# uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508
# - name: Install node modules
# run: pnpm install --frozen-lockfile
# - uses: ./.github/actions/saucelabs-legacy
adev-deploy:
needs: [adev]
if: needs.adev.result == 'success'
runs-on: ubuntu-latest
runs-on: ubuntu-latest-8core
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel
uses: angular/dev-infra/github-actions/bazel/setup@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/bazel/setup@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel RBE
uses: angular/dev-infra/github-actions/bazel/configure-remote@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/bazel/configure-remote@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Install node modules
run: yarn install --frozen-lockfile
- name: Build adev to ensure it continues to work
run: yarn bazel build //adev:build --config=release
run: pnpm install --frozen-lockfile
- name: Build adev
# `snapshot-build` config is used to stamp the exact version with sha in the footer.
run: pnpm bazel build //adev:build.production --config=snapshot-build
- name: Deploy to firebase
uses: ./.github/actions/deploy-docs-site
with:
serviceKey: ${{ secrets.ANGULAR_DEV_SITE_DEPLOY }}
githubReleaseTrainReadToken: ${{ secrets.DOCS_DEPLOY_GITHUB_RELEASE_TRAIN_TOKEN }}
configPath: 'adev/firebase.json'
distDir: 'dist/bin/adev/build/browser'
distDir: 'dist/bin/adev/dist'
- name: Update Algolia synonym record
run: node adev/scripts/synonyms/update-synonyms.mts
env:
ALGOLIA_KEY: ${{ secrets.ALGOLIA_SYNONYM_MANAGER }}
@@ -0,0 +1,59 @@
name: Update ADEV Cross Repo Docs
on:
workflow_dispatch:
inputs: {}
push:
branches:
- 'main'
- '[0-9]+.[0-9]+.x'
# Declare default permissions as read only.
permissions:
contents: read
jobs:
update_adev_cross_repo_docs:
name: Update Cross Repo ADEV Docs
if: github.repository == 'angular/angular'
runs-on: ubuntu-latest
# Prevents multiple concurrent runs of this workflow for the same branch
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
steps:
- name: Checkout the repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
# Setting `persist-credentials: false` prevents the github-action account from being the
# account that is attempted to be used for authentication, instead the remote is set to
# an authenticated URL.
persist-credentials: false
- name: Generate Docs
run: node adev/scripts/update-cross-repo-docs/index.mjs
env:
ANGULAR_READONLY_GITHUB_TOKEN: ${{ secrets.READONLY_GITHUB_TOKEN }}
- name: Create a PR (if necessary)
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0
with:
token: ${{ secrets.ANGULAR_ROBOT_ACCESS_TOKEN }}
push-to-fork: 'angular-robot/angular'
delete-branch: true
maintainer-can-modify: false
branch: docs-cross-repo-update-${{github.ref_name}}
committer: Angular Robot <angular-robot@google.com>
author: Angular Robot <angular-robot@google.com>
title: 'docs: update cross-repo adev docs [${{github.ref_name}}]'
body: |
Updated Angular adev cross repo docs files.
labels: |
action: merge
area: docs
target: automation
commit-message: |
docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
+18 -5
View File
@@ -3,23 +3,36 @@ name: DevInfra
on:
pull_request_target:
types: [opened, synchronize, reopened]
issues:
types: [opened, reopened]
# Declare default permissions as read only.
permissions:
contents: read
jobs:
labels:
pull_request_labels:
if: github.event_name == 'pull_request_target'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- uses: angular/dev-infra/github-actions/commit-message-based-labels@11bd341a82719997a59039363f716bea76b88459
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: angular/dev-infra/github-actions/labeling/pull-request@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
with:
angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }}
labels: '{"requires: TGP": ["packages/core/primitives/**/{*,.*}"]}'
post_approval_changes:
if: github.event_name == 'pull_request_target'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- uses: angular/dev-infra/github-actions/post-approval-changes@03b8a7dffd1205e061f0bee949024ebefc2a6592
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: angular/dev-infra/github-actions/post-approval-changes@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
with:
angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }}
issue_labels:
if: github.event_name == 'issues'
runs-on: ubuntu-latest
steps:
- uses: angular/dev-infra/github-actions/labeling/issue@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
with:
angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }}
google-generative-ai-key: ${{ secrets.GOOGLE_GENERATIVE_AI_KEY }}
+2 -2
View File
@@ -13,8 +13,8 @@ jobs:
statuses: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- uses: angular/dev-infra/github-actions/google-internal-tests@03b8a7dffd1205e061f0bee949024ebefc2a6592
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: angular/dev-infra/github-actions/google-internal-tests@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
with:
run-tests-guide-url: http://go/angular-g3sync-start
github-token: ${{ secrets.GITHUB_TOKEN }}
+32
View File
@@ -0,0 +1,32 @@
name: Manual jobs
on:
workflow_dispatch:
inputs: {}
jobs:
# Bazel saucelabs job resides in `manual.yml` because it's currently unstable, but
# kept as "runnable" for debugging/stabilization effort purposes.
bazel-saucelabs:
runs-on: ubuntu-latest
env:
JOBS: 2
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Setup Bazel
uses: angular/dev-infra/github-actions/bazel/setup@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel Remote Caching
uses: angular/dev-infra/github-actions/bazel/configure-remote@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Saucelabs Variables
uses: angular/dev-infra/github-actions/saucelabs@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Set up Sauce Tunnel Daemon
run: pnpm bazel run //tools/saucelabs-daemon/background-service -- $JOBS &
env:
SAUCE_TUNNEL_IDENTIFIER: angular-framework-${{ github.run_number }}
- name: Run all saucelabs bazel tests
run: |
TESTS=$(./node_modules/.bin/bazelisk query --output label '(kind(karma_web_test, ...) intersect attr("tags", "saucelabs", ...)) except attr("tags", "fixme-saucelabs", ...)')
pnpm bazel test --config=saucelabs --jobs=$JOBS ${TESTS}
+1 -1
View File
@@ -9,6 +9,6 @@ jobs:
status:
runs-on: ubuntu-latest
steps:
- uses: angular/dev-infra/github-actions/unified-status-check@03b8a7dffd1205e061f0bee949024ebefc2a6592
- uses: angular/dev-infra/github-actions/unified-status-check@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
with:
angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }}
+53
View File
@@ -0,0 +1,53 @@
name: Performance Tracking
on:
push:
branches:
- main
permissions:
contents: 'read'
id-token: 'write'
defaults:
run:
shell: bash
jobs:
list:
timeout-minutes: 3
runs-on: ubuntu-latest
outputs:
workflows: ${{ steps.workflows.outputs.workflows }}
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Install node modules
run: pnpm install --frozen-lockfile
- id: workflows
run: echo "workflows=$(pnpm --silent ng-dev perf workflows --list)" >> "$GITHUB_OUTPUT"
workflow:
timeout-minutes: 30
runs-on: ubuntu-latest
needs: list
strategy:
matrix:
workflow: ${{ fromJSON(needs.list.outputs.workflows) }}
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel
uses: angular/dev-infra/github-actions/bazel/setup@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Install node modules
run: pnpm install --frozen-lockfile
# We utilize the google-github-actions/auth action to allow us to get an active credential using workflow
# identity federation. This allows us to request short lived credentials on demand, rather than storing
# credentials in secrets long term. More information can be found at:
# https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-google-cloud-platform
- uses: 'google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093' # v3
with:
project_id: 'internal-200822'
workload_identity_provider: 'projects/823469418460/locations/global/workloadIdentityPools/measurables-tracking/providers/angular'
service_account: 'measures-uploader@internal-200822.iam.gserviceaccount.com'
- run: pnpm ng-dev perf workflows --name ${{ matrix.workflow }} --commit-sha ${{github.sha}}
+102 -123
View File
@@ -19,27 +19,27 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@03b8a7dffd1205e061f0bee949024ebefc2a6592
with:
cache-node-modules: true
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Install node modules
run: yarn install --frozen-lockfile
run: pnpm install --frozen-lockfile
- name: Check code lint
run: yarn -s tslint
run: pnpm tslint
- name: Check for circular dependencies
run: yarn -s ts-circular-deps:check
run: pnpm ts-circular-deps:check
- name: Validate pull approve configuration
run: yarn -s ng-dev pullapprove verify
run: pnpm ng-dev pullapprove verify
- name: Validate angular robot configuration
run: yarn -s ng-dev ngbot verify
run: pnpm ng-dev ngbot verify
- name: Confirm code builds with typescript as expected
run: yarn -s check-tooling-setup
run: pnpm check-tooling-setup
- name: Validate agent skills
run: pnpm ng-dev ai skills validate
- name: Check commit message
run: yarn ng-dev commit-message validate-range ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }}
run: pnpm ng-dev commit-message validate-range ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }}
- name: Check code format
run: yarn ng-dev format changed --check ${{ github.event.pull_request.base.sha }}
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@56966c765e97f463c4795fac85d46543d1e6b342
uses: angular/dev-infra/github-actions/linting/licenses@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
with:
allow-dependencies-licenses: 'pkg:npm/google-protobuf@'
@@ -47,99 +47,115 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
with:
cache-node-modules: true
disable-package-manager-cache: true
- name: Setup Bazel
uses: angular/dev-infra/github-actions/bazel/setup@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/bazel/setup@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel RBE
uses: angular/dev-infra/github-actions/bazel/configure-remote@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/bazel/configure-remote@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Install node modules
run: yarn install --frozen-lockfile
run: pnpm install --frozen-lockfile
- name: Run unit tests
run: yarn devtools:test
run: pnpm devtools:test
- name: Test build
run: yarn devtools:build:chrome
run: pnpm devtools:build:chrome
- name: Cypress run
uses: cypress-io/github-action@bc22e01685c56e89e7813fd8e26f33dc47f87e15 # v7.1.5
with:
command: pnpm devtools:test:e2e
start: pnpm bazel run //devtools/src:devserver
wait-on: 'http://localhost:4200'
wait-on-timeout: 300
install: false
test:
runs-on: ubuntu-latest-4core
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@03b8a7dffd1205e061f0bee949024ebefc2a6592
with:
cache-node-modules: true
- name: Setup Bazel
uses: angular/dev-infra/github-actions/bazel/setup@03b8a7dffd1205e061f0bee949024ebefc2a6592
- name: Setup Bazel Remote Caching
uses: angular/dev-infra/github-actions/bazel/configure-remote@03b8a7dffd1205e061f0bee949024ebefc2a6592
- name: Install node modules
run: yarn install --frozen-lockfile --network-timeout 100000
- name: Run CI tests for framework
run: yarn test:ci
artifacts:
needs: [test]
if: needs.test.result == 'success'
runs-on: ubuntu-latest
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@03b8a7dffd1205e061f0bee949024ebefc2a6592
with:
cache-node-modules: true
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel
uses: angular/dev-infra/github-actions/bazel/setup@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/bazel/setup@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel Remote Caching
uses: angular/dev-infra/github-actions/bazel/configure-remote@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/bazel/configure-remote@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Install node modules
run: yarn install --frozen-lockfile --network-timeout 100000
run: pnpm install --frozen-lockfile
- name: Run CI tests for framework
run: yarn tsx ./scripts/build/build-packages-dist.mts
- name: Archive build artifacts
uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029 # v4.3.5
run: pnpm test:ci
env:
# Ensures Aspect lock files are up-to-date.
# TODO(devversion): Remove when removing pnpm.
ASPECT_RULES_JS_FROZEN_PNPM_LOCK: '1'
- name: Upload GRPC logs (for debugging of RBE issues)
if: always()
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
with:
name: pr-artifacts-${{ github.event.number }}
path: dist/packages-dist/
path: /tmp/rbe-grpc.log
retention-days: 1
integration-tests:
runs-on: ubuntu-latest
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel
uses: angular/dev-infra/github-actions/bazel/setup@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel Remote Caching
uses: angular/dev-infra/github-actions/bazel/configure-remote@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Run integration CI tests for framework
run: pnpm integration-tests:ci
adev:
runs-on:
labels: ubuntu-latest-4core
labels: ubuntu-latest
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel
uses: angular/dev-infra/github-actions/bazel/setup@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/bazel/setup@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel RBE
uses: angular/dev-infra/github-actions/bazel/configure-remote@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/bazel/configure-remote@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Install node modules
run: yarn install --frozen-lockfile
- name: Build adev in fast mode to ensure it continues to work
run: yarn bazel build //adev:build --fast_adev --config=release
run: pnpm install --frozen-lockfile
- name: Run tests
run: yarn bazel test //adev:test
run: pnpm bazel test //adev/...
- name: Build adev in fast mode to ensure it continues to work
run: pnpm bazel build //adev:build
vscode-ng-language-service:
runs-on:
labels: ubuntu-latest
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel
uses: angular/dev-infra/github-actions/bazel/setup@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel RBE
uses: angular/dev-infra/github-actions/bazel/configure-remote@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Install node modules
run: pnpm install --frozen-lockfile
- name: Run tests
run: pnpm bazel test //vscode-ng-language-service/...
zone-js:
runs-on:
labels: ubuntu-latest-4core
labels: ubuntu-latest
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@03b8a7dffd1205e061f0bee949024ebefc2a6592
with:
cache-node-modules: true
node-module-directories: |
./node_modules
./packages/zone.js/node_modules
./packages/zone.js/test/typings/node_modules
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel
uses: angular/dev-infra/github-actions/bazel/setup@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/bazel/setup@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Setup Bazel RBE
uses: angular/dev-infra/github-actions/bazel/configure-remote@03b8a7dffd1205e061f0bee949024ebefc2a6592
uses: angular/dev-infra/github-actions/bazel/configure-remote@e4dcda13e469f50a6bd92667e2ded8b98173bf2c
- name: Install node modules
run: yarn install --frozen-lockfile
run: pnpm install --frozen-lockfile
- run: |
yarn bazel build \
pnpm bazel build \
//packages/zone.js/bundles:zone.umd.js \
//packages/zone.js:npm_package \
//packages/zone.js/test/closure:closure_js \
//packages/zone.js/test/closure:closure
- run: |
rm -Rf packages/zone.js/build
@@ -151,60 +167,23 @@ jobs:
cp dist/bin/packages/zone.js/bundles/zone.umd.js packages/zone.js/build/zone.umd.js
cp dist/bin/packages/zone.js/npm_package/bundles/zone-mix.umd.js ./packages/zone.js/test/extra/
cp dist/bin/packages/zone.js/npm_package/bundles/zone-patch-electron.umd.js ./packages/zone.js/test/extra/
cp dist/bin/packages/zone.js/test/closure/zone.closure.mjs ./packages/zone.js/build/test/zone.closure.mjs
cp dist/bin/packages/zone.js/test/closure/zone.closure.js ./packages/zone.js/build/test/zone.closure.mjs
# Install
- run: yarn --cwd packages/zone.js install --frozen-lockfile --non-interactive
# Run zone.js tools tests
- run: yarn --cwd packages/zone.js promisefinallytest
- run: yarn --cwd packages/zone.js jest:test
- run: yarn --cwd packages/zone.js jest:nodetest
- run: yarn --cwd packages/zone.js electrontest
- run: yarn --cwd packages/zone.js/test/typings install --frozen-lockfile --non-interactive
- run: yarn --cwd packages/zone.js/test/typings test
- run: pnpm -C packages/zone.js promisefinallytest
- run: pnpm -C packages/zone.js jest:test
- run: pnpm -C packages/zone.js jest:nodetest
- run: pnpm -C packages/zone.js vitest:test
- run: pnpm -C packages/zone.js electrontest
- run: pnpm -C packages/zone.js/test/typings test
saucelabs:
runs-on: ubuntu-latest-4core
env:
SAUCE_TUNNEL_IDENTIFIER: angular-framework-${{ github.run_number }}
steps:
- name: Initialize environment
uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@03b8a7dffd1205e061f0bee949024ebefc2a6592
with:
cache-node-modules: true
- name: Install node modules
run: yarn install --frozen-lockfile
- name: Setup Bazel
uses: angular/dev-infra/github-actions/bazel/setup@03b8a7dffd1205e061f0bee949024ebefc2a6592
- name: Setup Saucelabs Variables
uses: angular/dev-infra/github-actions/saucelabs@03b8a7dffd1205e061f0bee949024ebefc2a6592
- name: Starting Saucelabs tunnel service
run: ./tools/saucelabs/sauce-service.sh run &
# Build test fixtures for a test that rely on Bazel-generated fixtures. Note that disabling
# specific tests which are reliant on such generated fixtures is not an option as SystemJS
# in the Saucelabs legacy job always fetches referenced files, even if the imports would be
# guarded by an check to skip in the Saucelabs legacy job. We should be good running such
# test in all supported browsers on Saucelabs anyway until this job can be removed.
- name: Preparing Bazel-generated fixtures required in legacy tests
run: |
yarn bazel build //packages/core/test:downleveled_es5_fixture //packages/common/locales
# Needed for the ES5 downlevel reflector test in `packages/core/test/reflection`.
mkdir -p dist/legacy-test-out/core/test/reflection/
cp dist/bin/packages/core/test/reflection/es5_downleveled_inheritance_fixture.js \
dist/legacy-test-out/core/test/reflection/es5_downleveled_inheritance_fixture.js
# Locale files are needed for i18n tests running within Saucelabs. These are added
# directly as sources so that the TypeScript compilation of `/packages/tsconfig.json`
# can succeed. Note that the base locale and currencies files are checked-in, so
# we do not need to re-generate those through Bazel.
mkdir -p packages/common/locales/extra
cp dist/bin/packages/common/locales/*.ts packages/common/locales
cp dist/bin/packages/common/locales/extra/*.ts packages/common/locales/extra
- name: Build bundle of tests to run on Saucelabs
run: node tools/legacy-saucelabs/build-saucelabs-test-bundle.mjs
- name: Wait and confirm Saucelabs tunnel has connected
run: ./tools/saucelabs/sauce-service.sh ready-wait
timeout-minutes: 3
- name: Running tests on Saucelabs.
run: KARMA_WEB_TEST_MODE=SL_REQUIRED yarn karma start ./karma-js.conf.js --single-run
- name: Stop Saucelabs tunnel service
run: ./tools/saucelabs/sauce-service.sh stop
# saucelabs:
# runs-on: ubuntu-latest
# env:
# SAUCE_TUNNEL_IDENTIFIER: angular-framework-${{ github.run_number }}
# steps:
# - name: Initialize environment
# uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@b5a3609f89c06eb4037dce22a93641213a5d1508
# - name: Install node modules
# run: pnpm install --frozen-lockfile
# - uses: ./.github/actions/saucelabs-legacy
+4 -4
View File
@@ -25,12 +25,12 @@ jobs:
steps:
- name: 'Checkout code'
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: 'Run analysis'
uses: ossf/scorecard-action@62b2cac7ed8198b15735ed49ab1e5cf35480ba46 # v2.4.0
uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3
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@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
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@eb055d739abdc2e8de2e5f4ba1a8b246daa779aa # v3.26.0
uses: github/codeql-action/upload-sarif@0d579ffd059c29b07949a3cce3983f0780820c98 # v4.32.6
with:
sarif_file: results.sarif
-44
View File
@@ -1,44 +0,0 @@
name: Update ADEV Angular CLI help
on:
workflow_dispatch:
inputs: {}
push:
branches:
- 'main'
- '[0-9]+.[0-9]+.x'
# Declare default permissions as read only.
permissions:
contents: read
jobs:
update_cli_help:
name: Update Angular CLI help (if necessary)
if: github.repository == 'angular/angular'
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
# Setting `persist-credentials: false` prevents the github-action account from being the
# account that is attempted to be used for authentication, instead the remote is set to
# an authenticated URL.
persist-credentials: false
# This is needed as otherwise the PR creation will fail with `shallow update not allowed` when the forked branch is not in sync.
fetch-depth: 0
- name: Generate CLI help
run: node adev/scripts/update-cli-help/index.mjs
env:
ANGULAR_CLI_BUILDS_READONLY_GITHUB_TOKEN: ${{ secrets.ANGULAR_CLI_BUILDS_READONLY_GITHUB_TOKEN }}
- name: Create a PR (if necessary)
uses: angular/dev-infra/github-actions/create-pr-for-changes@03b8a7dffd1205e061f0bee949024ebefc2a6592
with:
branch-prefix: update-cli-help
pr-title: 'docs: update Angular CLI help [${{github.ref_name}}]'
pr-description: |
Updated Angular CLI help contents.
pr-labels: |
action: review
area: docs
angular-robot-token: ${{ secrets.ANGULAR_ROBOT_ACCESS_TOKEN }}
+4 -11
View File
@@ -4,11 +4,8 @@
/bazel-out
/integration/bazel/bazel-*
*.log
/node_modules/
# CircleCI temporary file for cache key computation.
# See `save_month_to_file` in `.circleci/config.yml`.
month.txt
node_modules/
modules/ssr-benchmarks/node_modules/
# Include when developing application packages.
pubspec.lock
@@ -19,9 +16,7 @@ pubspec.lock
!.devcontainer/recommended-devcontainer.json
!.devcontainer/recommended-Dockerfile
.settings/
.vscode/launch.json
.vscode/settings.json
.vscode/tasks.json
*.swo
*.swp
modules/.settings
@@ -57,10 +52,8 @@ baseline.json
# Husky
.husky/_
# Ignore cache created with the Angular CLI.
.angular/
# Ignore AIO files, useful when changing branches
aio/node_modules
aio/out-tsc
# pnpm store
.pnpm-store
+1 -1
View File
@@ -74,7 +74,7 @@ Fixes #<issue number>
# =============================
#
# The full specification of the Angular Commit Message Format can be found at
# https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit
# https://github.com/angular/angular/blob/main/contributing-docs/commit-message-guidelines.md
#
# The following is an excerpt of the specification with the most commonly needed info.
#
+1 -1
View File
@@ -1,6 +1,6 @@
set +e
yarn -s ng-dev commit-message pre-commit-validate --file $1 2>/dev/null
pnpm --silent ng-dev commit-message pre-commit-validate --file $1 2>/dev/null
if [ $? -ne 0 ]; then
echo "WARNING: failed to run commit message validation (ng-dev commit-mesage pre-commit-validate)"
fi
+1 -1
View File
@@ -1,6 +1,6 @@
set +e
yarn -s ng-dev format staged 2>/dev/null
pnpm --silent ng-dev format staged 2>/dev/null
if [ $? -ne 0 ]; then
echo "WARNING: failed to run file formatting (ng-dev format staged)"
fi
+1 -1
View File
@@ -1,6 +1,6 @@
set +e
yarn -s ng-dev commit-message restore-commit-message-draft $1 $2 2>/dev/null
pnpm --silent ng-dev commit-message restore-commit-message-draft $1 $2 2>/dev/null
if [ $? -ne 0 ]; then
echo "WARNING: failed to attempt to restore commit message draft (ng-dev commit-message restore-commit-message-draft)"
fi
+23
View File
@@ -0,0 +1,23 @@
/**
* The configuration for `ng-dev caretaker` commands.
*
* @type { import("@angular/ng-dev").CaretakerConfig }
*/
export const caretaker = {
g3SyncConfigPath: './.ng-dev/google-sync-config.json',
githubQueries: [
{
name: 'Merge Queue',
query: `is:pr is:open label:"action: merge"`,
},
{
name: 'Merge Assistance Queue',
query: `is:pr is:open label:"merge: caretaker note" label:"action: merge"`,
},
{
name: 'Initial Triage Queue',
query: `is:open no:milestone -draft:true`,
},
],
hasEmeaCaretaker: true,
};
-21
View File
@@ -1,21 +0,0 @@
import {CaretakerConfig} from '@angular/ng-dev';
/** The configuration for `ng-dev caretaker` commands. */
export const caretaker: CaretakerConfig = {
g3SyncConfigPath: './.ng-dev/google-sync-config.json',
githubQueries: [
{
name: 'Merge Queue',
query: `is:pr is:open status:success label:"action: merge"`,
},
{
name: 'Merge Assistance Queue',
query: `is:pr is:open label:"merge: caretaker note" label:"action: merge"`,
},
{
name: 'Initial Triage Queue',
query: `is:open no:milestone -draft:true`,
},
],
caretakerGroup: 'angular-caretaker',
};
+38
View File
@@ -0,0 +1,38 @@
/**
* The configuration for `ng-dev commit-message` commands.
*
* @type { import("@angular/ng-dev").CommitMessageConfig }
*/
export const commitMessage = {
maxLineLength: Infinity,
minBodyLength: 20,
minBodyLengthTypeExcludes: ['docs'],
// If you update this, also update the docs.
// https://github.com/angular/angular/blob/main/contributing-docs/commit-message-guidelines.md#scope
scopes: [
'animations',
'benchpress',
'common',
'compiler',
'compiler-cli',
'core',
'dev-infra',
'devtools',
'docs-infra',
'elements',
'forms',
'http',
'language-service',
'language-server',
'localize',
'migrations',
'platform-browser',
'platform-browser-dynamic',
'platform-server',
'router',
'service-worker',
'upgrade',
'vscode-extension',
'zone.js',
],
};
-38
View File
@@ -1,38 +0,0 @@
import {CommitMessageConfig} from '@angular/ng-dev';
/**
* The configuration for `ng-dev commit-message` commands.
*/
export const commitMessage: CommitMessageConfig = {
maxLineLength: Infinity,
minBodyLength: 20,
minBodyLengthTypeExcludes: ['docs'],
scopes: [
'animations',
'bazel',
'benchpress',
'changelog',
'common',
'compiler',
'compiler-cli',
'core',
'dev-infra',
'devtools',
'docs-infra',
'elements',
'forms',
'http',
'language-service',
'localize',
'migrations',
'packaging',
'platform-browser',
'platform-browser-dynamic',
'platform-server',
'router',
'service-worker',
'upgrade',
've',
'zone.js',
],
};
+8
View File
@@ -0,0 +1,8 @@
import {caretaker} from './caretaker.mjs';
import {commitMessage} from './commit-message.mjs';
import {format} from './format.mjs';
import {github} from './github.mjs';
import {pullRequest} from './pull-request.mjs';
import {release} from './release.mjs';
export {commitMessage, format, github, pullRequest, caretaker, release};
-15
View File
@@ -1,15 +0,0 @@
import {caretaker} from './caretaker.mjs';
import {commitMessage} from './commit-message.mjs';
import {format} from './format.mjs';
import {github} from './github.mjs';
import {pullRequest} from './pull-request.mjs';
import {release} from './release.mjs';
export {
commitMessage,
format,
github,
pullRequest,
caretaker,
release,
};
+7
View File
@@ -0,0 +1,7 @@
workflows:
build-adev:
name: Build adev
prepare:
- bazel clean
workflow:
- bazel build //adev:build
+9
View File
@@ -0,0 +1,9 @@
/**
* Configuration for the `ng-dev format` command.
*
* @type { import("@angular/ng-dev").FormatConfig }
*/
export const format = {
'prettier': true,
'buildifier': true,
};
-31
View File
@@ -1,31 +0,0 @@
import {FormatConfig} from '@angular/ng-dev';
/**
* Configuration for the `ng-dev format` command.
*/
export const format: FormatConfig = {
'prettier': {
'matchers': [
'**/*.{yaml,yml}',
'**/*.{js,ts}',
// Do not format d.ts files as they are generated
'!**/*.d.ts',
// Both third_party and .yarn are directories containing copied code which should
// not be modified.
'!third_party/**',
'!.yarn/**',
// Do not format the locale files which are checked-in for Google3, but generated using
// the `generate-locales-tool` from `packages/common/locales`.
'!packages/core/src/i18n/locale_en.ts',
'!packages/common/locales/closure-locale.ts',
'!packages/common/src/i18n/currencies.ts',
// Test cases contain non valid code.
'!packages/compiler-cli/test/compliance/test_cases/**/*.{js,ts}',
// Ignore generated javascript file(s)
'!.github/actions/deploy-docs-site/main.js',
],
},
'buildifier': true,
};
+13
View File
@@ -0,0 +1,13 @@
/**
* Github configuration for the `ng-dev` command. This repository is used as
* remote for the merge script and other utilities like `ng-dev pr rebase`.
*
* @type { import("@angular/ng-dev").GithubConfig }
*/
export const github = {
owner: 'angular',
name: 'angular',
mainBranchName: 'main',
mergeMode: 'caretaker-only',
requireReleaseModeForRelease: false,
};
-12
View File
@@ -1,12 +0,0 @@
import {GithubConfig} from '@angular/ng-dev';
/**
* Github configuration for the `ng-dev` command. This repository is used as
* remote for the merge script and other utilities like `ng-dev pr rebase`.
*/
export const github: GithubConfig = {
owner: 'angular',
name: 'angular',
mainBranchName: 'main',
useNgDevAuthService: true,
};
+7 -17
View File
@@ -1,23 +1,9 @@
{
"syncedFilePatterns": [
"LICENSE",
"modules/benchmarks/**",
"packages/**"
],
"separateFilePatterns": [
"packages/core/primitives/**"
],
"syncedFilePatterns": ["LICENSE", "modules/benchmarks/**", "packages/**"],
"separateFilePatterns": ["packages/core/primitives/**"],
"alwaysExternalFilePatterns": [
"packages/*",
"packages/bazel/*",
"packages/bazel/src/*",
"packages/bazel/src/api-extractor/**",
"packages/bazel/src/builders/**",
"packages/bazel/src/ng_module/**",
"packages/bazel/src/ng_package/**",
"packages/bazel/src/protractor/**",
"packages/bazel/src/schematics/**",
"packages/bazel/src/types_bundle/**",
"packages/bazel/**",
"packages/compiler-cli/linker/**",
"packages/compiler-cli/src/ngtsc/sourcemaps/**",
"packages/compiler-cli/src/ngtsc/testing/**",
@@ -26,12 +12,15 @@
"packages/compiler-cli/private/tooling.ts",
"packages/compiler-cli/private/babel.d.ts",
"packages/compiler-cli/src/bin/**",
"packages/core/schematics/utils/tsurge/helpers/angular_devkit/**",
"packages/docs/**",
"packages/elements/schematics/**",
"packages/examples/**",
"packages/forms/signals/src/api/rules/validation/standard_schema.ts",
"packages/localize/**",
"packages/private/**",
"packages/service-worker/**",
"packages/ssr/BUILD.bazel",
"packages/common/locales/generate-locales-tool/**",
"packages/common/locales/index.bzl",
"packages/http/**",
@@ -44,6 +33,7 @@
"**/rollup.config.js",
"**/BUILD.bazel",
"**/*.md",
"**/package.json",
"packages/**/integrationtest/**",
"packages/**/test/**",
"packages/zone.js/*",
+34
View File
@@ -0,0 +1,34 @@
/**
* Configuration for the merge tool in `ng-dev`. This sets up the labels which
* are respected by the merge script (e.g. the target labels).
*
* @type { import("@angular/ng-dev").PullRequestConfig }
*/
export const pullRequest = {
githubApiMerge: {
default: 'auto',
labels: [{pattern: 'merge: squash commits', method: 'squash'}],
},
requiredBaseCommits: {
// PRs that target either `main` or the patch branch, need to be rebased
// on top of the latest commit message validation fix.
// These SHAs are the commits that update the required license text in the header.
'main': '5aeb9a4124922d8ac08eb73b8f322905a32b0b3a',
'10.0.x': '27b95ba64a5d99757f4042073fd1860e20e3ed24',
},
// `docs-infra` are not affecting the public NPM packages.
targetLabelExemptScopes: ['docs-infra'],
// enables specific validations during the pull request merge process
validators: {
assertEnforceTested: true,
assertIsolatedSeparateFiles: true,
},
requiredStatuses: [
{type: 'check', name: 'test'},
{type: 'check', name: 'lint'},
{type: 'check', name: 'adev'},
{type: 'check', name: 'zone-js'},
{type: 'status', name: 'google-internal-tests'},
],
};
-25
View File
@@ -1,25 +0,0 @@
import {PullRequestConfig} from '@angular/ng-dev';
/**
* Configuration for the merge tool in `ng-dev`. This sets up the labels which
* are respected by the merge script (e.g. the target labels).
*/
export const pullRequest: PullRequestConfig = {
githubApiMerge: false,
requiredBaseCommits: {
// PRs that target either `main` or the patch branch, need to be rebased
// on top of the latest commit message validation fix.
// These SHAs are the commits that update the required license text in the header.
'main': '5aeb9a4124922d8ac08eb73b8f322905a32b0b3a',
'10.0.x': '27b95ba64a5d99757f4042073fd1860e20e3ed24',
},
// `dev-infra` and `docs-infra` are not affecting the public NPM packages. Similarly,
// the `bazel` package is not considered part of the public API so that features
// can land in patch branches.
targetLabelExemptScopes: ['dev-infra', 'docs-infra', 'bazel'],
// enables specific validations during the pull request merge process
validators: {
assertEnforceTested: true,
assertIsolatedSeparateFiles: true,
},
};
+44
View File
@@ -0,0 +1,44 @@
/**
* Configuration for the `ng-dev release` command.
*
* @type { import("@angular/ng-dev").ReleaseConfig }
*/
export const release = {
publishRegistry: 'https://wombat-dressing-room.appspot.com',
representativeNpmPackage: '@angular/core',
npmPackages: [
{name: '@angular/animations'},
{name: '@angular/common'},
{name: '@angular/compiler-cli'},
{name: '@angular/compiler'},
{name: '@angular/core'},
{name: '@angular/elements'},
{name: '@angular/forms'},
{name: '@angular/language-server'},
{name: '@angular/language-service'},
{name: '@angular/localize'},
{name: '@angular/platform-browser-dynamic'},
{name: '@angular/platform-browser'},
{name: '@angular/platform-server'},
{name: '@angular/router'},
{name: '@angular/service-worker'},
{name: '@angular/upgrade'},
],
buildPackages: async () => {
// The buildTargetPackages function is loaded at runtime as the loading the script
// causes an invocation of Bazel.
const {performNpmReleaseBuild} = await import('../scripts/build/package-builder.mts');
return performNpmReleaseBuild();
},
releaseNotes: {
hiddenScopes: [
'dev-infra',
'docs-infra',
'zone.js',
'devtools',
'vscode-extension',
'benchpress',
],
},
releasePrLabels: ['area: build & ci', 'action: merge', 'PullApprove: disable'],
};
-34
View File
@@ -1,34 +0,0 @@
import {ReleaseConfig} from '@angular/ng-dev';
/** Configuration for the `ng-dev release` command. */
export const release: ReleaseConfig = {
publishRegistry: 'https://wombat-dressing-room.appspot.com',
representativeNpmPackage: '@angular/core',
npmPackages: [
{name: '@angular/animations'},
{name: '@angular/common'},
{name: '@angular/compiler'},
{name: '@angular/compiler-cli'},
{name: '@angular/core'},
{name: '@angular/elements'},
{name: '@angular/forms'},
{name: '@angular/language-service'},
{name: '@angular/localize'},
{name: '@angular/platform-browser'},
{name: '@angular/platform-browser-dynamic'},
{name: '@angular/platform-server'},
{name: '@angular/router'},
{name: '@angular/service-worker'},
{name: '@angular/upgrade'},
],
buildPackages: async () => {
// The buildTargetPackages function is loaded at runtime as the loading the script
// causes an invocation of Bazel.
const {performNpmReleaseBuild} = await import('../scripts/build/package-builder.mjs');
return performNpmReleaseBuild();
},
releaseNotes: {
hiddenScopes: ['bazel', 'dev-infra', 'docs-infra', 'zone.js', 'devtools'],
},
releasePrLabels: ['area: build & ci', 'action: merge', 'PullApprove: disable'],
};
+1 -1
View File
@@ -5,6 +5,6 @@
"module": "Node16",
"noEmit": true,
"skipLibCheck": true,
"types": []
"types": ["node"]
}
}
+12 -1
View File
@@ -1 +1,12 @@
engine-strict = true
# Yarn Berry doesn't check engines at all, so pnpm shouldn't either.
engine-strict = false
# Disabling pnpm [hoisting](https://pnpm.io/npmrc#hoist) by setting `hoist=false` is recommended on
# projects using rules_js so that pnpm outside of Bazel lays out a node_modules tree similar to what
# rules_js lays out under Bazel (without a hidden node_modules/.pnpm/node_modules)
hoist=false
# Avoid pnpm auto-installing peer dependencies. We want to be explicit about our versions used
# for peer dependencies, avoiding potential mismatches. In addition, it ensures we can continue
# to rely on peer dependency placeholders substituted via Bazel.
auto-install-peers=false
+1 -1
View File
@@ -1 +1 @@
18.20.0
22.22.1
+70
View File
@@ -0,0 +1,70 @@
// TODO: Define these packages in a single common location.
const localAngularPackages = new Set([
'@angular/animations',
'@angular/common',
'@angular/compiler',
'@angular/compiler-cli',
'@angular/core',
'@angular/elements',
'@angular/forms',
'@angular/language-service',
'@angular/localize',
'@angular/platform-browser',
'@angular/platform-browser-dynamic',
'@angular/platform-server',
'@angular/router',
'@angular/service-worker',
'@angular/upgrade',
]);
const peerDepsToChange = new Set(['zone.js', 'rxjs']);
function readPackage(pkg, context) {
// TODO(devversion): This allows us to make compiler/TS a production dependency of compiler-cli
// because `rules_js` doesn't otherwise include the dependency in the `npm_package_store`.
// See: https://github.com/aspect-build/rules_js/issues/2226
if (pkg.name === '@angular/compiler-cli') {
pkg.dependencies = {
...pkg.dependencies,
'@angular/compiler': 'workspace:*',
'typescript': pkg.devDependencies['typescript'],
};
delete pkg.devDependencies['typescript'];
}
for (const [key, version] of Object.entries(pkg.peerDependencies)) {
// Any package that has a peerDependency on rxjs or zone.js, should instead treat the peerDependency as a
// regular dependency.
if (peerDepsToChange.has(key)) {
pkg.dependencies = {
...pkg.dependencies,
[key]: pkg.devDependencies[key] ?? version,
};
delete pkg.devDependencies[key];
continue;
}
// Change all locally generated packages to directly depend on the other local packages, instead
// of expecting them as peerDependencies automatically as we do not auto install peer deps. The
// package is also removed from peerDependencies as it was moved over and will just cause errors.
if (pkg.version === '0.0.0-PLACEHOLDER' && localAngularPackages.has(key)) {
pkg.dependencies = {
...pkg.dependencies,
[key]: 'workspace: *',
};
delete pkg.peerDependencies[key];
}
}
return pkg;
}
module.exports = {
hooks: {
readPackage,
},
};
+45
View File
@@ -0,0 +1,45 @@
pnpm-lock.yaml
# Do not format d.ts files as they are generated
**/*.d.ts
# Both third_party and .yarn are directories containing copied code which should
# not be modified.
third_party/**/*.js
third_party/**/*.css
third_party/**/*.md
third_party/**/*.json
# Do not format the locale files which are checked-in for Google3, but generated using
# the `generate-locales-tool` from `packages/common/locales`.
packages/core/src/i18n/locale_en.ts
packages/common/locales/closure-locale.ts
packages/common/src/i18n/currencies.ts
# Test cases contain non valid code.
packages/compiler-cli/test/compliance/test_cases/**/*.js
packages/compiler-cli/test/compliance/test_cases/**/*.ts
# Ignore generated javascript file(s)
.github/actions/deploy-docs-site/main.js
# Ignore testing data files for language service
vscode-ng-language-service/syntaxes/test/data/*.ts
vscode-ng-language-service/syntaxes/test/data/*.html
# Ignore goldens MD files
goldens/**/*.api.md
# Ignore golden symbol json files
packages/**/*.golden_symbols.json
# adev generated files
adev/src/content/aria/**/*.json
adev/src/content/cli/**/*.json
adev/src/content/cdk/**/*.json
# Antigravity rules
.agent/rules/agents.md
CHANGELOG.md
CHANGELOG_ARCHIVE.md
+17 -2
View File
@@ -2,9 +2,24 @@
"printWidth": 100,
"tabWidth": 2,
"useTabs": false,
"embeddedLanguageFormatting": "off",
"singleQuote": true,
"semi": true,
"quoteProps": "preserve",
"bracketSpacing": false
"bracketSpacing": false,
"trailingComma": "all",
"overrides": [
{
"files": ["./.prettierrc"],
"options": {
"parser": "json"
}
},
{
"files": ["*.html"],
"excludeFiles": ["**/test/**"],
"options": {
"parser": "angular"
}
}
]
}
+144 -519
View File
@@ -15,9 +15,6 @@
# - We trust that people do the right thing and won't approve changes they don't feel confident reviewing
# - We enforce that only approved PRs are merged ensuring that unreviewed code isn't accidentally merged
# - We distribute approval rights as much as possible to help us scale better
# - Groups have one or two global approvers groups as fallbacks:
# - @angular/fw-global-approvers: for approving minor changes, large-scale refactorings, and emergency situations.
# - @angular/fw-global-approvers-for-docs-only-changes: for approving minor documentation-only changes that don't require engineering review
# - A small number of file groups have very limited number of reviewers because incorrect changes to the files they guard would have serious consequences (e.g. security, public api)
#
# Configuration nuances:
@@ -37,27 +34,10 @@
# See reviewer list under `required-minimum-review` group. Team member names and
# usernames are managed there.
####################################################################################
# Approval Groups
####################################################################################
# =========================================================
# @angular/framework-global-approvers
# =========================================================
# Used for approving minor changes, large-scale refactorings, and in emergency situations.
#
# alxhub
# jelbourn
# josephperrott
#
# =========================================================
# @angular/framework-global-approvers-for-docs-only-changes
# =========================================================
# Used for approving minor documentation-only changes that don't require engineering review.
version: 3
availability:
users_unavailable: []
#availability:
# users_unavailable: []
# Meta field that goes unused by PullApprove to allow for defining aliases to be
# used throughout the config.
@@ -97,38 +77,12 @@ overrides:
- if: len(groups.active.exclude("required-minimum-review").exclude("global-*")) == 0 and len(groups.approved.include("global-*")) == 0
status: failure
explanation: 'At least one group must match this PR. Please update an existing review group, or create a new group.'
# If any global dev-infra approval is given the status should be passing.
- if: len(groups.approved.include("global-dev-infra-approvers")) == 1
status: success
explanation: 'Passing as globally approved by dev-infra'
# If any global docs approval is given the status should be passing.
- if: len(groups.approved.include("global-docs-approvers")) == 1
status: success
explanation: 'Passing as globally approved by docs'
# If any global approval is given the status should be passing.
- if: len(groups.approved.include("global-approvers")) == 1
status: success
explanation: 'Passing as globally approved by global approvers'
groups:
# =========================================================
# Framework: Animations
# =========================================================
fw-animations:
<<: *defaults
conditions:
- >
contains_any_globs(files, [
'packages/animations/**/{*,.*}',
'packages/platform-browser/animations/**/{*,.*}',
])
reviewers:
users:
- alxhub
- crisbeto
- ~jelbourn
- thePunderWoman
# =========================================================
# Framework: Compiler
# =========================================================
@@ -140,290 +94,71 @@ groups:
'packages/compiler/**/{*,.*}',
'packages/examples/compiler/**/{*,.*}',
'packages/compiler-cli/**/{*,.*}',
])
'packages/language-service/**/{*,.*}',
])
reviewers:
users:
- alxhub
- ~alxhub
- AndrewKushnir
- atscott
- crisbeto
- devversion
- dylhunn
- thePunderWoman
- kirjs
- JoostK
- ~amishne
- ~leonsenft
- ~mattrbeck
- ~JeanMeche
# =========================================================
# Framework: Migrations
# Framework: General (most code in our packages)
# =========================================================
fw-migrations:
<<: *defaults
conditions:
- files.include("packages/core/schematics/*")
reviewers:
users:
- alxhub
- crisbeto
- devversion
- dylhunn
- thePunderWoman
- AndrewKushnir
# =========================================================
# Framework: Core
# =========================================================
fw-core:
fw-general:
<<: *defaults
conditions:
- >
contains_any_globs(files.exclude("packages/core/schematics/*").exclude('packages/core/primitives/*'), [
'packages/core/**/{*,.*}',
'packages/examples/core/**/{*,.*}',
'packages/platform-browser/**/{*,.*}',
'packages/examples/platform-browser/**/{*,.*}',
'packages/platform-browser-dynamic/**/{*,.*}',
'packages/docs/**/{*,.*}',
])
reviewers:
users:
- alxhub
- AndrewKushnir
- atscott
- crisbeto
- devversion
- dylhunn
- thePunderWoman
- pkozlowski-opensource
# =========================================================
# Framework: Common
# =========================================================
fw-common:
<<: *defaults
conditions:
- >
contains_any_globs(files.exclude("packages/common/http/*"), [
contains_any_globs(files.exclude('packages/core/primitives/*'), [
'contributing-docs/public-api-surface.md',
'dev-app/**/{*,.*}',
'integration/**/{*,.*}',
'modules/**/{*,.*}',
'packages/animations/**/{*,.*}',
'packages/benchpress/**/{*,.*}',
'packages/common/**/{*,.*}',
'packages/examples/common/**/{*,.*}',
])
reviewers:
users:
- alxhub
- AndrewKushnir
- atscott
- dylhunn
- thePunderWoman
- pkozlowski-opensource
# =========================================================
# Framework: Http
# =========================================================
fw-http:
<<: *defaults
conditions:
- >
contains_any_globs(files, [
'packages/common/http/**/{*,.*}',
'packages/examples/http/**/{*,.*}',
])
reviewers:
users:
- alxhub
- AndrewKushnir
- atscott
- dylhunn
- thePunderWoman
- pkozlowski-opensource
# =========================================================
# Framework: Elements
# =========================================================
fw-elements:
<<: *defaults
conditions:
- >
contains_any_globs(files, [
'packages/core/**/{*,.*}',
'packages/docs/**/{*,.*}',
'packages/elements/**/{*,.*}',
])
reviewers:
users:
- alxhub
- AndrewKushnir
- andrewseguin
- atscott
- dylhunn
- thePunderWoman
- pkozlowski-opensource
# =========================================================
# Framework: Forms
# =========================================================
fw-forms:
<<: *defaults
conditions:
- >
contains_any_globs(files, [
'packages/examples/**/{*,.*}',
'packages/forms/**/{*,.*}',
'packages/examples/forms/**/{*,.*}',
])
reviewers:
users:
- AndrewKushnir
- dylhunn
# =========================================================
# Framework: i18n
# =========================================================
fw-i18n:
<<: *defaults
conditions:
- >
contains_any_globs(files, [
'packages/core/src/i18n/**/{*,.*}',
'packages/core/src/render3/i18n/**/{*,.*}',
'packages/core/src/render3/instructions/i18n.ts',
'packages/core/src/render3/interfaces/i18n.ts',
'packages/common/locales/**/{*,.*}',
'packages/common/src/i18n/**/{*,.*}',
'packages/common/src/pipes/date_pipe.ts',
'packages/common/src/pipes/i18n_plural_pipe.ts',
'packages/common/src/pipes/i18n_select_pipe.ts',
'packages/common/src/pipes/number_pipe.ts',
'packages/compiler/src/i18n/**/{*,.*}',
'packages/compiler/src/render3/view/i18n/**/{*,.*}',
'packages/compiler-cli/src/extract_i18n.ts',
'packages/localize/**/{*,.*}',
])
reviewers:
users:
- AndrewKushnir
- dgp1130
# =========================================================
# Framework: Platform Server
# =========================================================
fw-platform-server:
<<: *defaults
conditions:
- >
contains_any_globs(files, [
'packages/misc/**/{*,.*}',
'packages/platform-browser/**/{*,.*}',
'packages/platform-browser-dynamic/**/{*,.*}',
'packages/platform-server/**/{*,.*}',
])
reviewers:
users:
- alan-agius4
- alxhub
- AndrewKushnir
- atscott
- dylhunn
- thePunderWoman
- pkozlowski-opensource
# =========================================================
# Framework: Router
# =========================================================
fw-router:
<<: *defaults
conditions:
- >
contains_any_globs(files, [
'packages/ssr/**/{*,.*}',
'packages/router/**/{*,.*}',
'packages/examples/router/**/{*,.*}',
])
reviewers:
users:
- AndrewKushnir
- atscott
# =========================================================
# Framework: Service Worker
# =========================================================
fw-service-worker:
<<: *defaults
conditions:
- >
contains_any_globs(files, [
'packages/service-worker/**/{*,.*}',
'packages/examples/service-worker/**/{*,.*}',
])
reviewers:
users:
- alxhub
# =========================================================
# Framework: Upgrade
# =========================================================
fw-upgrade:
<<: *defaults
conditions:
- >
contains_any_globs(files, [
'packages/upgrade/**/{*,.*}',
'packages/common/upgrade/**/{*,.*}',
'packages/examples/upgrade/**/{*,.*}',
])
'vscode-ng-language-service/**/{*,.*}',
])
reviewers:
users:
- alxhub
- thePunderWoman
# =========================================================
# Framework: Testing
# =========================================================
fw-testing:
<<: *defaults
conditions:
- >
contains_any_globs(files.exclude('packages/compiler-cli/*').exclude('packages/language-service/*').exclude('packages/service-worker/*'), [
'packages/**/testing/**/{*,.*}',
])
reviewers:
users:
- alxhub
- ~alxhub
- AndrewKushnir
- atscott
- dylhunn
- crisbeto
- devversion
- kirjs
- thePunderWoman
- pkozlowski-opensource
- ~pkozlowski-opensource
- JeanMeche
- ~amishne
- ~leonsenft
- ~mattrbeck
# =========================================================
# Framework: Benchmarks
# =========================================================
fw-benchmarks:
<<: *defaults
conditions:
- >
contains_any_globs(files, [
'modules/benchmarks/**/{*,.*}'
])
reviewers:
users:
- alxhub
- AndrewKushnir
- atscott
- dylhunn
- thePunderWoman
- pkozlowski-opensource
# =========================================================
# Framework: Playground
# =========================================================
fw-playground:
<<: *defaults
conditions:
- >
contains_any_globs(files, [
'modules/playground/**/{*,.*}'
])
reviewers:
users:
- alxhub
- AndrewKushnir
- atscott
- dylhunn
- thePunderWoman
- pkozlowski-opensource
# =========================================================
# Framework: Security
# Framework: Security-sensitive files which require extra review
# =========================================================
fw-security:
<<: *defaults
@@ -437,49 +172,20 @@ groups:
'packages/tsconfig-tsec-base.json',
'packages/tsec-exemption.json',
'tools/tsec.bzl',
'adev/src/content/guide/security.md',
'adev/src/content/examples/security/**/{*,.*}',
])
reviewers:
users:
- alxhub
- jelbourn
- ~alxhub
- josephperrott
- pkozlowski-opensource
- ~pkozlowski-opensource
- alan-agius4
reviews:
request: -1 # request reviews from everyone
required: 2 # require at least 2 approvals
reviewed_for: required
# =========================================================
# Bazel
# =========================================================
bazel:
<<: *defaults
conditions:
- >
contains_any_globs(files, [
'packages/bazel/**/{*,.*}',
])
reviewers:
users:
- devversion
- josephperrott
# =========================================================
# Language Service
# =========================================================
language-service:
<<: *defaults
conditions:
- >
contains_any_globs(files, [
'packages/language-service/**/{*,.*}',
])
reviewers:
users:
- alxhub
- atscott
- dylhunn
# =========================================================
# zone.js
# =========================================================
@@ -487,84 +193,23 @@ groups:
<<: *defaults
conditions:
- >
contains_any_globs(files, [
contains_any_globs(files.exclude('yarn.lock'), [
'packages/zone.js/**/{*,.*}',
])
])
reviewers:
users:
- JiaLiPassion
# =========================================================
# in-memory-web-api
# =========================================================
in-memory-web-api:
conditions:
- >
contains_any_globs(files, [
'packages/misc/angular-in-memory-web-api/**/{*,.*}',
])
reviewers:
users:
- alxhub
- ~JiaLiPassion
- ~alxhub
- AndrewKushnir
- atscott
- crisbeto
- dylhunn
- thePunderWoman
- pkozlowski-opensource
# =========================================================
# Benchpress
# =========================================================
benchpress:
<<: *defaults
conditions:
- >
contains_any_globs(files, [
'packages/benchpress/**/{*,.*}'
])
reviewers:
users:
- devversion
- josephperrott
- pkozlowski-opensource
# =========================================================
# Integration Tests
# =========================================================
integration-tests:
<<: *defaults
conditions:
- >
contains_any_globs(files, [
'integration/**/{*,.*}'
])
reviewers:
users:
- alxhub
- AndrewKushnir
- atscott
- dylhunn
- kirjs
- thePunderWoman
- josephperrott
# =========================================================
# Docs: Packaging, Tooling, Releasing
# =========================================================
docs-packaging-and-releasing:
<<: *defaults
conditions:
- >
contains_any_globs(files, [
'contributing-docs/public-api-surface.md',
])
reviewers:
users:
- alxhub
- AndrewKushnir
- atscott
- thePunderWoman
- jelbourn
- ~pkozlowski-opensource
- ~amishne
- ~leonsenft
- ~mattrbeck
# =========================================================
# Tooling: Compiler API shared with Angular CLI
@@ -590,30 +235,39 @@ groups:
reviewed_for: required
# =========================================================
# Docs: Angular Dev Site
# Documentation content
# =========================================================
angular-dev:
<<: *defaults
conditions:
- >
contains_any_globs(files, [
'adev/**/{.*,*}',
'aio/**/{.*,*}'
])
'adev/**/{*,.*}',
'tools/manual_api_docs/blocks/**/*.md',
'tools/manual_api_docs/elements/**/*.md',
])
reviewers:
users:
- josephperrott
- jelbourn
- bencodezen
- thePunderWoman
- dylhunn
- alan-agius4
- ~alxhub
- AndrewKushnir
- alxhub
- crisbeto
- devversion
- atscott
- pkozlowski-opensource
- ~JeanMeche
- bencodezen
- crisbeto
- kirjs
- JeanMeche
- thePunderWoman
- devversion
- josephperrott
- ~pkozlowski-opensource
- ~mgechev
- MarkTechson
- ~hawkgs
- ~amishne
- ~leonsenft
- ~mattrbeck
- ~clydin
- ~dgp1130
# =========================================================
# Angular DevTools
@@ -628,12 +282,13 @@ groups:
reviewers:
users:
- AleksanderBodurri
- devversion
- ~devversion
- dgp1130
- josephperrott
- mgechev
- twerske
- ~JeanMeche
- hawkgs
- hybrist
- ~josephperrott
- JeanMeche
- milomg
# =========================================================
# Dev-infra
@@ -642,15 +297,19 @@ groups:
<<: *defaults
conditions:
- >
contains_any_globs(files.exclude('.pullapprove.yml'), [
contains_any_globs(files
.exclude('.pullapprove.yml')
.exclude('tools/manual_api_docs/blocks/**/*.md')
.exclude('tools/manual_api_docs/elements/**/*.md'),
[
'{*,.*}',
'.circleci/**/{*,.*}',
'.agent/**/{*,.*}',
'.devcontainer/**/{*,.*}',
'.github/**/{*,.*}',
'.husky/**/{*,.*}',
'.gemini/**/{*,.*}',
'.ng-dev/**/{*,.*}',
'.vscode/**/{*,.*}',
'.yarn/**/{*,.*}',
'contributing-docs/*.md',
'contributing-docs/images/**/{*,.*}',
'goldens/{*,.*}',
@@ -662,14 +321,11 @@ groups:
'packages/examples/{*,.*}',
'scripts/**/{*,.*}',
'third_party/**/{*,.*}',
'tools/bazel-repo-patches/**/{*,.*}',
'tools/circular_dependency_test/**/{*,.*}',
'tools/contributing-stats/**/{*,.*}',
'tools/esm-interop/**/{*,.*}',
'tools/gulp-tasks/**/{*,.*}',
'tools/legacy-saucelabs/**/{*,.*}',
'tools/manual_api_docs/**/{*,.*}',
'tools/npm-patches/**/{*,.*}',
'tools/pnpm-patches/**/{*,.*}',
'tools/rxjs/**/{*,.*}',
'tools/saucelabs-daemon/**/{*,.*}',
'tools/saucelabs/**/{*,.*}',
@@ -681,11 +337,27 @@ groups:
'tools/{*,.*}',
'**/*.bzl'
])
- author not in ["angular-robot"]
reviewers:
users:
- alan-agius4
- devversion
- josephperrott
# =========================================================
# Renovate Changes
# =========================================================
renovate-changes:
<<: *defaults
conditions:
- author in ["angular-robot"]
reviewers:
users:
- ~alan-agius4
teams:
- angular-caretaker
- framework-team
# =========================================================
# Public API
# =========================================================
@@ -697,22 +369,28 @@ groups:
- >
contains_any_globs(files.exclude("goldens/public-api/manage.js"), [
'goldens/public-api/**/{*,.*}',
])
])
reviewers:
users:
- AndrewKushnir
- alxhub
- ~alxhub
- atscott
- dylhunn
- ~jelbourn
- thePunderWoman
- pkozlowski-opensource
- ~pkozlowski-opensource
- kirjs
- crisbeto
- devversion
- JeanMeche
- ~hybrist
- ~iteriani
- ~tbondwilkinson
- ~rahatarmanahmed
- ~amishne
- ~leonsenft
- ~mattrbeck
reviews:
request: 3 # Request reviews from 3 people
required: 2 # Require that 2 people approve
request: 2
required: 1
reviewed_for: required
# ================================================
@@ -725,43 +403,41 @@ groups:
- *no-groups-above-this-rejected
- >
contains_any_globs(files, [
'goldens/size-tracking/**/{*,.*}'
'integration/**/size.json'
])
reviewers:
users:
- alxhub
- ~alxhub
- AndrewKushnir
- atscott
- dylhunn
- ~jelbourn
- kirjs
- thePunderWoman
- pkozlowski-opensource
- ~pkozlowski-opensource
- ~amishne
- ~leonsenft
- ~mattrbeck
reviews:
request: 2 # Request reviews from 2 people
required: 1 # Require that 1 person approve
reviewed_for: required
# ================================================
# Circular dependencies
# ================================================
circular-dependencies:
# =========================================================
# Agent Skills
# =========================================================
agent-skills:
<<: *defaults
conditions:
- *no-groups-above-this-pending
- *no-groups-above-this-rejected
- >
contains_any_globs(files, [
'goldens/circular-deps/packages.json'
'skills/{*,.*}',
'skills/**/{*,.*}',
])
reviewers:
users:
- alxhub
- AndrewKushnir
- atscott
- dylhunn
- ~jelbourn
- thePunderWoman
- pkozlowski-opensource
- marktechson
- kirjs
- ~JeanMeche
- ~dgp1130
####################################################################################
# Special Cases
@@ -776,14 +452,13 @@ groups:
- >
contains_any_globs(files, [
'.pullapprove.yml'
])
])
reviewers:
users:
- alxhub
- ~alxhub
- AndrewKushnir
- andrewseguin
- dgp1130
- ~jelbourn
- thePunderWoman
- josephperrott
@@ -801,16 +476,11 @@ groups:
])
reviewers:
users:
- pkozlowski-opensource # Pawel Kozlowski
- alxhub # Alex Rickabaugh
- ~pkozlowski-opensource # Pawel Kozlowski
- ~alxhub # Alex Rickabaugh
- thePunderWoman # Jessica Janiuk
- dylhunn # Dylan Hunn
- AndrewKushnir # Andrew Kushnir
- atscott # Andrew Scott
labels:
pending: 'requires: TGP'
approved: 'requires: TGP'
rejected: 'requires: TGP'
# External team required reviews
primitives-shared:
@@ -823,21 +493,11 @@ groups:
reviewers:
users:
- csmick # Cameron Smick
- lannka # Hongfei Ding
- eduhmc # Eduardo Huerta-Mercado
- ehlemur # Edward Lesmes
- ellenyuan # Ellen Yuan
- jatraman # Jatin Ramanathan
- jesse-good # Jesse Costello-Good
- mturco # Matt Turco
- neonstalwart # Ben Hockey
- iteriani # Thomas Nguyen
- tbondwilkinson # Tom Wilkinson
- rahatarmanahmed # Rahat Ahmed
labels:
pending: 'requires: TGP'
approved: 'requires: TGP'
rejected: 'requires: TGP'
- ENAML # Ethan Cline
####################################################################################
# Override managed result groups
@@ -858,44 +518,9 @@ groups:
global-approvers:
type: optional
reviewers:
teams:
- framework-global-approvers
reviews:
request: 0
required: 1
reviewed_for: required
# =========================================================
# Global Approvers For Docs
#
# All reviews performed for global docs approvals require
# using the `Reviewed-for:` specifier to set the approval
# specificity as documented at:
# https://docs.pullapprove.com/reviewed-for/
# =========================================================
global-docs-approvers:
type: optional
reviewers:
teams:
- framework-global-approvers-for-docs-only-changes
reviews:
request: 0
required: 1
reviewed_for: required
# =========================================================
# Global Approvers For Dev-Infra changes
#
# All reviews performed for global dev-infra approvals
# require using the `Reviewed-for:` specifier to set the
# approval specificity as documented at:
# https://docs.pullapprove.com/reviewed-for/
# =========================================================
global-dev-infra-approvers:
type: optional
reviewers:
teams:
- dev-infra-framework
users:
- alxhub
- josephperrott
reviews:
request: 0
required: 1
-2
View File
@@ -8,8 +8,6 @@ To use the recommended configurations follow the steps below:
- install the recommended extensions in `.vscode/extensions.json`
- copy (or link) `.vscode/recommended-settings.json` to `.vscode/settings.json`
- copy (or link) `.vscode/recommended-launch.json` to `.vscode/launch.json`
- copy (or link) `.vscode/recommended-tasks.json` to `.vscode/tasks.json`
- restart the editor
If you already have your custom workspace settings, you should instead manually merge the file contents.
+84
View File
@@ -0,0 +1,84 @@
// A launch configuration that compiles the extension and then opens it inside a new window
{
"version": "0.2.0",
"configurations": [
{
"type": "extensionHost",
"request": "launch",
"name": "VSCE: Launch Dev Client",
"runtimeExecutable": "${execPath}",
"args": [
"--disable-extensions",
"--extensionDevelopmentPath=${workspaceFolder}/vscode-ng-language-service"
],
"preLaunchTask": "VSCE: watch bundles"
},
{
"type": "extensionHost",
"request": "launch",
"name": "VSCE: Launch Prod Client",
"runtimeExecutable": "${execPath}",
"args": [
"--disable-extensions",
"--extensionDevelopmentPath=${workspaceFolder}/dist/bin/vscode-ng-language-service/development_package"
],
"preLaunchTask": "VSCE: package"
},
{
"name": "VSCE: Attach to Server",
"type": "node",
"request": "attach",
"port": 6009,
"restart": true,
"sourceMaps": true,
"skipFiles": ["<node_internals>/**"],
"sourceMapPathOverrides": {
"?:*/bin/*": "${workspaceFolder}/*"
},
"resolveSourceMapLocations": ["!**/node_modules/**"]
},
{
"name": "DEBUG: Attach to bazel test",
"type": "node",
"request": "attach",
"port": 9229,
"restart": true,
"timeout": 600000,
"sourceMaps": true,
"skipFiles": ["<node_internals>/**"],
"sourceMapPathOverrides": {
"?:*/bin/*": "${workspaceFolder}/*"
},
"resolveSourceMapLocations": ["!**/node_modules/**"]
},
{
"name": "DEBUG: Run bazel test (Custom Target)",
"type": "node",
"request": "launch",
"restart": true,
"timeout": 600000,
"runtimeExecutable": "pnpm",
"runtimeArgs": ["bazel", "test", "${input:bazelTarget}", "--config=debug"],
"console": "integratedTerminal",
"cwd": "${workspaceFolder}"
}
],
"compounds": [
{
"name": "VSCE: Dev Client + Attach to Server",
"configurations": ["VSCE: Launch Dev Client", "VSCE: Attach to Server"]
},
{
"name": "DEBUG: Run bazel test (Custom Target) + Attach",
"configurations": ["DEBUG: Attach to bazel test", "DEBUG: Run bazel test (Custom Target)"]
}
],
"inputs": [
{
"id": "bazelTarget",
"type": "promptString",
"description": "Enter the Bazel test target (e.g., //path/to/my:unit_test)",
"default": "//packages/..."
}
]
}
-75
View File
@@ -1,75 +0,0 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Attach to bazel test ... --config=debug",
"type": "node",
"request": "attach",
"port": 9229,
"address": "localhost",
"restart": false,
"sourceMaps": true,
"localRoot": "${workspaceRoot}",
"remoteRoot": "${workspaceRoot}",
"stopOnEntry": false,
"timeout": 600000,
"outFiles": ["${workspaceFolder}/dist/out/**/packages/**/*.js"]
},
{
"name": "Attach to bazel test ... --config=debug (no source maps)",
"type": "node",
"request": "attach",
"port": 9229,
"address": "localhost",
"restart": false,
"sourceMaps": false,
"localRoot": "${workspaceRoot}",
"remoteRoot": "${workspaceRoot}",
"stopOnEntry": false,
"timeout": 600000,
"outFiles": ["${workspaceFolder}/dist/out/**/packages/**/*.js"]
},
{
"name": "IVY:packages/core/test/acceptance",
"type": "node",
"request": "launch",
"program": "${workspaceFolder}/node_modules/.bin/bazelisk",
"args": ["test", "packages/core/test/acceptance", "--config=debug"],
"port": 9229,
"address": "localhost",
"restart": true,
"sourceMaps": true,
"timeout": 600000,
"outFiles": ["${workspaceFolder}/dist/out/**/packages/**/*.js"]
},
{
"name": "IVY:packages/core/test/render3",
"type": "node",
"request": "launch",
"program": "${workspaceFolder}/node_modules/.bin/bazelisk",
"args": ["test", "packages/core/test/render3", "--config=debug"],
"port": 9229,
"address": "localhost",
"restart": true,
"sourceMaps": true,
"timeout": 600000,
"outFiles": ["${workspaceFolder}/dist/out/**/packages/**/*.js"]
},
{
"name": "IVY:packages/core/test",
"type": "node",
"request": "launch",
"program": "${workspaceFolder}/node_modules/.bin/bazelisk",
"args": ["test", "packages/core/test", "--config=debug"],
"port": 9229,
"address": "localhost",
"restart": true,
"sourceMaps": true,
"timeout": 600000,
"outFiles": ["${workspaceFolder}/dist/out/**/packages/**/*.js"]
}
]
}
+6 -5
View File
@@ -1,9 +1,9 @@
{
"[javascript]": {
"editor.formatOnSave": true,
"editor.formatOnSave": true
},
"[typescript]": {
"editor.formatOnSave": true,
"editor.formatOnSave": true
},
// Exclude third party modules and build artifacts from the editor watchers/searches.
"files.watcherExclude": {
@@ -11,14 +11,15 @@
"**/.git/subtree-cache/**": true,
"**/node_modules/**": true,
"**/bazel-out/**": true,
"**/dist/**": true,
"**/dist/**": true
},
"search.exclude": {
"**/node_modules": true,
"**/bower_components": true,
"**/bazel-out": true,
"**/dist": true,
".history": true,
".history": true
},
"git.ignoreLimitWarning": true,
}
"gitlens.advanced.blame.customArguments": ["--ignore-revs-file .git-blame-ignore-revs"]
}
-109
View File
@@ -1,109 +0,0 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "IVY:packages/core/test/...",
"type": "shell",
"command": "${workspaceFolder}/node_modules/.bin/bazelisk",
"args": [
"test",
"packages/core/test",
"packages/core/test/acceptance",
"packages/core/test/render3",
],
"group": "test",
"presentation": {
"reveal": "always",
"panel": "dedicated",
},
},
{
"label": "VE:packages/core/test/...",
"type": "shell",
"command": "${workspaceFolder}/node_modules/.bin/bazelisk",
"args": [
"test",
"packages/core/test",
"packages/core/test/acceptance",
"packages/core/test/render3",
],
"group": "test",
"presentation": {
"reveal": "always",
"panel": "dedicated",
},
},
{
"label": "IVY:packages/core/test/acceptance",
"type": "shell",
"command": "${workspaceFolder}/node_modules/.bin/bazelisk",
"args": [
"test",
"packages/core/test/acceptance",
],
"group": "test",
"presentation": {
"reveal": "always",
"panel": "dedicated",
},
},
{
"label": "VE:packages/core/test/acceptance",
"type": "shell",
"command": "${workspaceFolder}/node_modules/.bin/bazelisk",
"args": [
"test",
"packages/core/test/acceptance",
],
"group": "test",
"presentation": {
"reveal": "always",
"panel": "dedicated",
},
},
{
"label": "IVY:packages/core/test",
"type": "shell",
"command": "${workspaceFolder}/node_modules/.bin/bazelisk",
"args": [
"test",
"packages/core/test",
],
"group": "test",
"presentation": {
"reveal": "always",
"panel": "dedicated",
},
},
{
"label": "VE:packages/core/test",
"type": "shell",
"command": "${workspaceFolder}/node_modules/.bin/bazelisk",
"args": [
"test",
"packages/core/test",
],
"group": "test",
"presentation": {
"reveal": "always",
"panel": "dedicated",
},
},
{
"label": "IVY:packages/core/test/render3",
"type": "shell",
"command": "${workspaceFolder}/node_modules/.bin/bazelisk",
"args": [
"test",
"packages/core/test/render3",
],
"group": "test",
"presentation": {
"reveal": "always",
"panel": "dedicated",
},
},
],
}
+32
View File
@@ -0,0 +1,32 @@
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "VSCE: watch bundles",
"command": "pnpm --filter=ng-template run watch",
"isBackground": true,
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"panel": "dedicated",
"reveal": "never"
},
"problemMatcher": {
"base": "$tsc-watch",
"background": {
"activeOnStart": true,
"beginsPattern": "^iBazel \\[\\d{1,2}:\\d{1,2}(?:AM|PM)\\]: Querying for files to watch.*",
"endsPattern": "^INFO: Build completed successfully, \\d+ total action(s)?"
}
}
},
{
"type": "shell",
"label": "VSCE: package",
"command": "pnpm --filter=ng-template run package"
}
]
}
-13
View File
@@ -1,13 +0,0 @@
# Yarn Vendoring
We utilize Yarn's `yarn-path` configuration in a shared `.yarnrc` file to enforce
everyone using the same version of Yarn. Yarn checks the `.yarnrc` file to
determine if yarn should delegate the command to a vendored version at the
provided path.
## How to update
To update to the latest version of Yarn as our vendored version:
- Run this command
```sh
yarn policies set-version latest
```
- Remove the previous version
-147529
View File
File diff suppressed because one or more lines are too long
-5
View File
@@ -1,5 +0,0 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
yarn-path ".yarn/releases/yarn-1.22.19.cjs"
+34
View File
@@ -0,0 +1,34 @@
---
trigger: always_on
---
This is the source code for the Angular framework. This guide outlines standard practices for AI agents working in this repository.
## Environment
- Use `pnpm` for package management.
- Use `pnpm bazel test //target` to run tests.
## Key Documentation
- [Building and Testing](contributing-docs/building-and-testing-angular.md): definitive guide for running targets.
- [Coding Standards](contributing-docs/coding-standards.md): style guide for TypeScript and other files.
- [Commit Guidelines](contributing-docs/commit-message-guidelines.md): format for commit messages and PR titles.
## Testing
- **Zoneless & Async-First:** Assume a zoneless environment where state changes schedule updates asynchronously.
- **Do NOT** use `fixture.detectChanges()` to manually trigger updates.
- **ALWAYS** use the "Act, Wait, Assert" pattern:
1. **Act:** Update state or perform an action.
2. **Wait:** `await fixture.whenStable()` to allow the framework to process the scheduled update.
3. **Assert:** Verify the output.
- To keep tests fast, minimize the need for waiting:
- Use `useAutoTick()` (from `packages/private/testing/src/utils.ts`) to fast-forward time via the mock clock.
- When waiting is necessary, use real async tests (`it('...', async () => { ... })`) along with:
- `await timeout(ms)` (from `packages/private/testing/src/utils.ts`) to wait a specific number of milliseconds.
- `await fixture.whenStable()` to wait for framework stability.
## Pull Requests
- Use the `gh` CLI (GitHub CLI) for creating and managing pull requests.

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