2247 Commits

Author SHA1 Message Date
Kam d2b613900c docs(forms): clarify debounce('blur') usage with custom FormValueControl
A custom FormValueControl only participates in debounce('blur') if it emits
the touch output on the native blur event. This was undocumented, and the
touch name reads like a focus event, so users wired it to (focus) and
blur-based debouncing silently did nothing.

Add a dedicated guide section with a working example, link the debounce API
reference to it, and clarify the touch JSDoc that it must fire on blur, not
focus.

Fixes #69370

(cherry picked from commit 12fcec8ce9)
2026-06-24 11:38:52 -04:00
SkyZeroZx cd8f472ab4 docs: add documentation for HttpClient response body size limit and related error NG02825
(cherry picked from commit e5098f00d5)
2026-06-24 11:29:25 -04:00
Modeste ASSIONGBON 9a81d30a58 docs: add doc to focusBoundControl feature
(cherry picked from commit edea40b5a0)
2026-06-24 11:26:32 -04:00
cexbrayat 2d4b57c906 docs: clarify signal forms limit metadata keys
Explain that MIN and MAX are selection keys which point to the type-specific limit metadata keys, such as MIN_NUMBER, MIN_DATE, MAX_NUMBER, and MAX_DATE.

Also list minDate() and maxDate() alongside min() and max() in the Signal Forms metadata docs, so the validator tables match the actual metadata model.

(cherry picked from commit a3a9308894)
2026-06-24 11:26:01 -04:00
Shuaib Hasan Akib 8da801f396 docs: standardize padding and margin for insert-container
(cherry picked from commit 64bb7adda0)
2026-06-24 11:25:27 -04:00
Saurabh Singh 03d1a6444a docs(core): document resource chaining with chain() in params context
Adds a 'Chaining resources' section to the resource guide covering:
- Basic usage of chain() to depend one resource on another
- Status propagation for all ResourceStatus values (idle, loading,
  reloading, error, resolved, local)
- Chaining vs reading .value() directly, shown as an avoid example
- Guidance on passing the chained value directly as params

Also adds an @see link from ResourceParamsContext to the new section.

Closes #69329

(cherry picked from commit 7057b1257f)
2026-06-24 11:23:53 -04:00
arturovt 3d536d7a84 docs: add error guide for NG05102
Adds an error reference page for NG05102 (UNSUPPORTED_EVENT_TARGET) explaining
what triggers it and how to fix it. Also marks the error code as negative (-5102)
so that in dev mode the error message automatically links to the new guide page
on angular.dev/errors, consistent with other documented runtime errors.

(cherry picked from commit ea177257e9)
2026-06-24 10:58:31 -04:00
SkyZeroZx 8cdc202dfc fix(http): prevent caching of responses with Set-Cookie headers
Skip HttpTransferCache serialization for HTTP responses that contain a
Set-Cookie header.

Cookie-setting responses commonly represent session-specific,
user-specific, or security-sensitive state. Serializing their bodies into
SSR TransferState can embed sensitive data into the generated HTML, where
it may be reused during hydration or replayed by a shared cache/CDN.

(cherry picked from commit f76e8a98c1)
2026-06-24 10:57:49 -04:00
yamanerkam 01cef1aec3 fix(docs-infra): keep footer headings on a single line
The "Community translations" column heading wrapped to two lines while
the other footer headings stayed on one. Add a `white-space: nowrap`
rule on the footer headings, scoped to the wide (4-column) layout. The
breakpoint is driven by a shared `$columns-breakpoint` variable so the
nowrap rule and the grid's 2-column collapse stay in sync.

(cherry picked from commit af14ce16cf)
2026-06-23 14:59:40 -04:00
yamanerkam 9e9b7e7eb4 docs: remove space before question mark in landing page heading
The bottom CTA heading on the landing page read "Want to learn more about
Angular ?" with a space before the question mark, while the matching heading
higher up the page correctly had no space. Removed the space so both read
"Want to learn more about Angular?".

(cherry picked from commit 7421124956)
2026-06-23 12:56:05 -04:00
arturovt f598dcfda0 docs: add error guide for NG05101
Adds a new error reference page for NG05101 (NO_PLUGIN_FOR_EVENT),
which is thrown when no registered EventManagerPlugin supports the
event name passed to addEventListener. The page covers the two common
causes: a typo in the event binding and a missing plugin provider.

(cherry picked from commit dead64fbdb)
2026-06-23 11:25:52 -04:00
SkyZeroZx 5979217e82 docs: Add docs for markAsTouched with skipDescendants
(cherry picked from commit 7fc46ed3a1)
2026-06-23 11:22:09 -04:00
Angular Robot 7766dc0ef4 build: lock file maintenance
See associated pull request for more information.
2026-06-23 10:44:38 -04:00
yamanerkam 261d487a76 docs: add missing space before decorator link in components guide
The `@Component` inline-code span was directly adjacent to the
`[decorator](...)` link, rendering as a mashed-together token in the
source. Added a space so it reads "A `@Component` [decorator] that..."
as intended.

(cherry picked from commit a4e9ff1e0c)
2026-06-23 09:48:20 -04:00
aparziale d817e56493 docs: show selected menu item visually in context menu example
Replace console.log with a lastAction signal and render the result in a styled <p> element with a fade-in animation.

(cherry picked from commit 69ac1d5ee8)
2026-06-22 16:46:57 -04:00
Kam c4d135df45 fix(docs-infra): remove white flash on example viewer tab labels
The code tabs rendered by the example viewer (e.g. the npm/pnpm/yarn/bun
install tabs) paint their active label as transparent text clipped to a
gradient. Material's MDC tab styles add `transition: color 0.15s linear`
to `.mdc-tab__text-label`, plus a 100ms delay on the active tab. Because
that transition animates `color` from the solid label color to
transparent, the solid color stays visible on top of the gradient for
~100ms when a tab is activated, which reads as a white flash.

Disable the transition on these labels so the color switches instantly,
and target `.mdc-tab__text-label` directly (instead of a generic `span`)
so `color: transparent` drives the gradient clip cleanly.

(cherry picked from commit 642165f6fc)
2026-06-22 16:28:01 -04:00
Matthieu Riegler 6342099e55 docs(docs-infra): use ^22.0 for the tutorials
fixes #69438
2026-06-22 16:10:50 -04:00
Kam 0db4bb0eb0 fix(docs-infra): restore adev build under stricter ts_project deps
The cross-repo dependency update in #69410 bumped rules_angular, whose
ts_project now requires every entry in `deps` to provide the JsInfo
provider. Two adev targets passed deps that don't, so `bazel build
//adev:build` fails analysis and the adev CI check has been red on main
since that PR.

Make generate_nav_items return JsInfo (with the generated routes.json as
its sources) so navigation-entries can keep importing routes.json through
its deps. Also drop the spurious deps entry on llms_lib: llms.mts reads
llms-list.md at runtime via readFile rather than importing it, and the
file is already provided to the binary via data.

Fixes #69429

(cherry picked from commit 350763d84a)
2026-06-19 11:37:22 +02:00
yamanerkam ece8ba4922 docs: use the @Service decorator in the first-app and signals tutorials
Update the services in the first-app and signals tutorials to use the
`@Service()` decorator instead of `@Injectable({providedIn: 'root'})`.
This affects `HousingService` (first-app steps 10-14) and `CartStore`
(signals step 7).

(cherry picked from commit e7a4e25318)
2026-06-18 10:48:06 -04:00
Matthieu Riegler 291d574b1d docs(docs-infra): remove deprecated ts flags
This fixes the playground & tutorials

(cherry picked from commit c23ddd6a99)
2026-06-18 15:29:44 +02:00
Angular Robot 8dec7753a3 build: lock file maintenance
See associated pull request for more information.

Closes #69368 as a pr takeover
2026-06-17 09:59:32 -07:00
rudzikdawid 35219dcac3 fix(docs-infra): increase SSR fetch limit to prevent 404 on page reload
Navigating to specific ARIA guide pages directly or via hard refresh
causes a 404 error because the payload exceeds the default SSR fetch
limit. This commit increases the maxResponseBodySize to 2MB.

(cherry picked from commit 02d6b436f1)
2026-06-17 15:03:59 +00:00
SkyZeroZx b32ee7ceb3 fix(core): treat iframe credentialless as security-sensitive
Mark the iframe `credentialless` attribute as security-sensitive so dynamic
bindings are handled consistently with other iframe attributes that affect the
initial navigation, such as `sandbox`, `allow`, `referrerPolicy`, `csp`, and
`fetchPriority`.

Because `credentialless` must be present before the iframe starts loading to
affect the navigation’s credential mode, late dynamic updates can leave the final
DOM looking correct while the initial request was not loaded credentiallessly.

(cherry picked from commit 0152e3cbdf)
2026-06-16 16:05:57 +00:00
yamanerkam f2c5045e0a docs: use the @Service decorator in the learn-angular DI tutorial
The "Creating an injectable service" tutorial introduced services with
`@Injectable({providedIn: 'root'})`, even though the essentials guide and
the in-depth dependency injection guides have already moved to the newer
`@Service` decorator. This left the tutorial out of step with the rest of
the documentation.

Update steps 19 and 20 to use `@Service()`. Because `@Service()` is an
ergonomic shorthand for `@Injectable({providedIn: 'root'})`, the examples
behave identically while teaching the recommended modern API. The step 19
README is reworked to match: it drops the now-unnecessary `providedIn`
configuration step and adds a note linking to the in-depth services guide
for the `autoProvided: false` opt-out.

(cherry picked from commit cbccd368af)
2026-06-16 15:49:09 +00:00
Kam 929a1553f2 fix(docs-infra): align homepage banner and search field
The homepage hero lays out the announcement banner and the search field on
the same flex row. The `.search-field` wrapper was a plain block, so its
`docs-text-field` kept its intrinsic height instead of filling the row,
leaving the two pills at different heights and vertically misaligned.

Make `.search-field` a flex container so the search control stretches to the
row height and matches the banner.

(cherry picked from commit 4ba8ba4ef2)
2026-06-15 16:15:33 +00:00
Kam fe7f9ed505 fix(docs-infra): center social and theme menus under their triggers on tablet
On tablet the social and theme mini-menus didn't line up with the buttons that
open them.

All three mini-menus now share one tablet positioning rule on `.adev-mini-menu`
that centers each panel under its trigger, with `--social`/`--theme`/`--version`
modifiers selecting the anchor; the version picker's on-screen behavior is
unchanged. The social trigger also gains `aria-controls` + a matching menu `id`
for a11y parity with the theme trigger.

(cherry picked from commit 50e7f3a1cd)
2026-06-15 15:59:22 +00:00
Matthieu Riegler bbd056919f docs: add item about the resource breaking change.
In #67382 we changed how values are resolved which ended up being a breaking change for some unit tests.

fixes #69360

(cherry picked from commit 3b8bb7219b)
2026-06-15 15:57:06 +00:00
kirjs 34f9539623 docs(forms): use touch.emit() in custom controls example
(cherry picked from commit c0e2364f12)
2026-06-15 15:56:17 +00:00
SkyZeroZx 6c1f3e9d49 fix(common): skip transfer cache for uncacheable HTTP traffic (#69316)
Do not store HTTP transfer cache entries when either the request or response
uses `Cache-Control: no-store`, `Cache-Control: private`, or
`Cache-Control: no-cache`.

Also skip transfer cache when requests use the Fetch API `cache` option with
`no-store` or `no-cache`.

Because transfer cache serializes SSR HTTP responses into the rendered HTML,
Angular now treats these directives conservatively to avoid exposing sensitive
or explicitly uncacheable data through `TransferState`.

PR Close #69316
2026-06-11 16:58:24 +00:00
SkyZeroZx 7ef1399068 fix(http): skip transfer cache for fetch credentialed requests (#69316)
Treat HttpClient requests using `credentials: 'include'` and `same-origin` as credentialed
when deciding whether a response can be stored in the HTTP transfer cache.

The transfer cache already skips requests with `withCredentials`, `Cookie`,
`Authorization`, or `Proxy-Authorization` because those responses may contain
user-specific data. Fetch-backed requests can express the same credentialed
behavior through the `credentials` option, so these responses must not be
serialized into the SSR HTML.

This keeps credentialed SSR responses out of TransferState and aligns the
cache eligibility check with the fetch request options supported by HttpClient.

PR Close #69316
2026-06-11 16:58:24 +00:00
Matthieu Riegler 033aa9720d docs(docs-infra): Update navigation status
(cherry picked from commit 59e2041847)
2026-06-11 16:24:32 +00:00
SkyZeroZx b416da67c1 docs: add caching guidance for resource data with SSR
(cherry picked from commit 274d1d2dcc)
2026-06-10 18:27:48 +00:00
aparziale 48996d3ab2 docs: update webpack-based system docs
Update webpack-based system docs

Fixes #69279

(cherry picked from commit 8854f2d476)
2026-06-10 17:54:46 +00:00
SkyZeroZx 1bd5a562f5 docs: deprecate XHR support for server-side rendering in HTTP docs and recommend Fetch
(cherry picked from commit 2066225244)
2026-06-10 17:20:43 +00:00
Jad Chahed a704b08379 docs: add Signal Forms and v22 guidance to AI best-practices and llms.txt
Update the AI codegen resources for Angular v22:
- best-practices.md: OnPush is the default in v22+ (don't set it explicitly),
  recommend Signal Forms, and recommend the @Service decorator.
- llms.txt: add a Signal Forms reference, the httpResource guide, and an
  Accessibility section linking the Angular Aria overview.

(cherry picked from commit 248e9c146d)
2026-06-09 21:00:00 +00:00
Kam 8ddda4d0aa fix(docs-infra): improve version picker dropdown positioning
Drops `position: absolute` from the version picker `<ul>` and tightens `max-height` to `70dvh` so the cdk-overlay-pane fits the viewport and the inner scroll reaches the last versions on mobile and desktop.

(cherry picked from commit 7d92cc8b46)
2026-06-09 16:58:26 +00:00
Kam 35a8c28656 docs: fix CurrencyPipe locale override example
The "Override current locale for CurrencyPipe" example used `{{ amount | currency: 'en-US' }}`, but the first `CurrencyPipe` argument is the currency code, not the locale, so `'en-US'` was treated as an invalid currency code (rendered literally as the symbol) and the locale was never overridden. Since `locale` is the fourth positional argument, the example now passes a valid currency code, display, and digits before it (`'USD' : 'symbol' : '1.2-2' : 'en-US'`), matching the parameter order shown on the CurrencyPipe API page.

(cherry picked from commit a82f822057)
2026-06-08 21:36:21 +00:00
Bhuvansh855 60d88b11bd docs: fix malformed prettier-ignore comment in whitespace guide
(cherry picked from commit 422e6893e4)
2026-06-08 19:59:29 +00:00
aparziale 54fa77adc1 docs: close menù with click outside container
close menù with click outside container

Fixes #69222

(cherry picked from commit dc8165e253)
2026-06-08 19:58:03 +00:00
Matthieu Riegler b310d718d9 docs: mention required behavior for booleans
fixes #68509

(cherry picked from commit 9cfd3f52e1)
2026-06-08 19:54:44 +00:00
Kam 70d038774c docs: trim transparent padding from v22 event hero image
The v22 event hero PNG shipped with a wide transparent margin baked into
its 960x540 canvas. Under the shared `img { width: 100% }` rule that empty
border stretched along with the artwork, leaving visible space around the
image. Trims the canvas to the artwork bounds (831x473) so it renders
flush; the retained pixels are unchanged and the file shrinks from about
795 KB to 568 KB.

(cherry picked from commit af7cb63151)
2026-06-05 17:56:32 +00:00
marktechson 879750a756 docs: update landing page with embed link and updated messaging
(cherry picked from commit 0197be381e)
2026-06-05 17:41:34 +00:00
Kam 652b76b57d docs: bump schematics-for-libraries example peer deps to v22
The my-lib schematics-for-libraries example still declared `^21.0.0`
peerDependencies, the only adev example left on the previous major. Bumps
`@angular/common`/`@angular/core` to `^22.0.0`, matching the current major
and this file's stable-`^N.0.0` bump pattern.

Also adds this example's package.json to .prettierignore: it contains
`// #docregion` markers consumed by the schematics-for-libraries guide, and
Prettier's json-stringify parser (used for any package.json) rejects those as
invalid JSON. Editing the file surfaced this pre-existing incompatibility in
the format check.

(cherry picked from commit 3960ad64e5)
2026-06-05 17:18:42 +00:00
Michael Small c00387b8d2 docs: mention parse of validateHttp
(cherry picked from commit e100c75e37)
2026-06-04 19:32:15 +00:00
Sreeved 93e5f95dd2 docs: fix typo in update card link description
(cherry picked from commit 82193a19ee)
2026-06-04 19:29:07 +00:00
Matthieu Riegler addedf3f95 docs: update support & release dates
(cherry picked from commit ebb76a4313)
2026-06-04 18:36:32 +00:00
Ben Hong 296f3481d5 docs: fix directives guide issues and inaccuracies
(cherry picked from commit c39b2a3b18)
2026-06-03 22:39:17 +00:00
marktechson 4e4242035b docs: update landing page for v22
(cherry picked from commit 20524958b7)
2026-06-03 17:54:55 +02:00
Pawel Kozlowski 0a3d22a571 docs: update version picker list for v22 release
(cherry picked from commit 95ede172a6)
2026-06-03 17:11:43 +02:00
Cheng-Hsuan Tsai 3401189488 docs: add Signal Forms integration example to Angular Aria Autocomplete guide
(cherry picked from commit b84e5ef183)
2026-06-03 11:23:27 +02:00