2806 Commits

Author SHA1 Message Date
Bhuvansh855 0554bf5cf1 docs: improve introductory resource example
(cherry picked from commit c4cb66e602)
2026-06-30 18:00:07 -07:00
Kam 8dfad89a3d docs(docs-infra): show the schema function in the validation example
The "schema function" example on the Validation guide page pointed its
visibleLines and highlight ranges at the wrong source lines. The
collapsed view showed the component's imports and model signal instead
of the schema function, and the highlight marked unrelated lines, so
readers had to expand the example to find the code the section is about.

The example file was edited at some point and these line numbers were
not updated to follow it. Point visibleLines at the form() schema call
(lines 29-34) and highlight the three validator calls (lines 30, 31, 33)
so the relevant code is visible by default.

Fixes #69547

(cherry picked from commit b9125db156)
2026-06-30 17:57:59 -07:00
Kam 23fe1a9116 fix(docs-infra): improve code selection contrast in dark mode
The ::selection background mixes only 10% of the accent color into
--octonary-contrast. In dark mode --octonary-contrast resolves to
gray-900 (#151417), which is the same color code blocks use as their
background, so selected code renders ~90% code-background and is almost
invisible.

Add a .docs-dark-mode ::selection override that raises the tint to 30%
so highlighted text stays legible over the near-black surface. Light
mode is unchanged, as its selection already contrasts the white page.

Fixes #69507

(cherry picked from commit a9e3336aae)
2026-06-30 17:56:39 -07:00
Eduard Fischer-Szava 17966c2ff5 docs: fix incorrect @defer trigger names and a duplicate word in guides
The @defer guide reused the viewport section's prose in the
interaction and hover sections without updating it:

- interaction: the template reference variable is passed on the
  interaction trigger, not the viewport trigger.
- hover: the element is hovered over and the variable is passed on the
  hover trigger, not "watched to enter the viewport" / viewport.

Also removes a duplicate "keep the" in the routing
customizing-route-behavior guide.

Documentation-only; no code changes.

(cherry picked from commit 19a912a6ef)
2026-06-30 17:52:19 -07:00
Hien Pham 39f112decd docs: clear mock after each test and refine expectation for tax calculator call
- We need to clear the mock between different assertions
- We have either toHaveBeenCalledOnce or toHaveBeenCalledExactlyOnceWith matcher

(cherry picked from commit d748e8160d)
2026-06-30 17:51:40 -07:00
SkyZeroZx 7979ece76b docs: remove ChangeDetectionStrategy.OnPush from Signal Forms tutorial
(cherry picked from commit b6dbdcfe34)
2026-06-30 17:49:35 -07:00
Angular Robot 98ea50718a build: lock file maintenance
See associated pull request for more information.
2026-06-30 17:43:43 -07:00
Alan Agius 533e17f568 docs: remove fixed font-size from table headers in docs
Removes the fixed font size from table headers to ensure they scale properly and do not appear smaller than the table content.

(cherry picked from commit 7a7a612e48)
2026-06-30 17:41:31 -07:00
Alan Agius cfb5fbb933 docs: update service documentation to compare @Service and @Injectable decorators with a feature comparison table
Closes: #69563
(cherry picked from commit c92d38c097)
2026-06-30 17:40:55 -07:00
yamanerkam 9798af94e6 fix(docs-infra): don't auto-link code symbols used as link text
When an inline code symbol is used as the text of an explicit markdown
link (e.g. [`httpResource`](/guide/http/http-resource)), the codespan
renderer recognized it as an API symbol and wrapped it in a second
anchor pointing at the API reference. This produced nested <a> tags, so
the explicit link was effectively replaced by the API symbol link.

Disable auto-linking while rendering a link's inner tokens so the
explicit href is preserved, matching the pattern already used by the
heading and docs-card renderers.

Fixes #69549

(cherry picked from commit cbd97072f4)
2026-06-30 17:39:38 -07:00
marktechson 6c83124b46 docs: updated roadmap
(cherry picked from commit d791a7f496)
2026-06-30 17:24:08 -07:00
yamanerkam d34cd66e96 fix(docs-infra): align and highlight external-link icon in nav sidebar
The open_in_new icon on external navigation items stayed grey on hover
and sat inset from the chevron column, so it never matched the chevron
items visually.

- Add a hover rule so the icon brightens to --primary-contrast along
  with the label, matching the chevron/text behaviour.
- Override the 1rem max-width reserve inherited from
  .docs-faceted-list-item-text by chaining both classes the span carries
  (.docs-external-link.docs-faceted-list-item-text), so the icon lines up
  with the chevrons at the link's end-padding. Using :host was avoided
  because it breaks the nested `a:hover &` selector.

(cherry picked from commit 00226e7d80)
2026-06-30 17:23:30 -07:00
Shuaib Hasan Akib b235278699 fix(docs-infra): support header values containing apostrophes
Update the `headerRule` regex to capture the complete quoted header value. The previous pattern excluded quote characters from the content and failed to parse headers such as:

```angular-ts {avoid, header: "Can't inject interface"}
```

The new pattern matches everything between the opening and closing quote delimiters.

(cherry picked from commit 3f9d0ee985)
2026-06-30 17:22:40 -07:00
aparziale ca76b2cca1 docs(forms): correct signal field access in form model example
The `myForm` field is a callable `FieldTree`, so its value must be read
via `this.myForm().value()`. Fixes two examples that incorrectly used
`this.myForm.value()`.

(cherry picked from commit e653a7bf30)
2026-06-29 14:49:42 -07:00
Hien Pham 32c1f30a39 docs: update Vitest configuration option from configFile to runnerConfig
(cherry picked from commit d109cc5e9d)
2026-06-26 10:36:53 -07:00
Bhuvansh855 592e9d2e30 docs: reorder streaming resources description
(cherry picked from commit 9142712e06)
2026-06-26 10:35:33 -07:00
Bhuvansh855 dcb026bacb docs: document resource stream usage
(cherry picked from commit 9c9ead95d6)
2026-06-26 10:35:32 -07:00
Charles 60bb1a710f docs: streamline and update mcp server setup documentation
Update and streamline the Model Context Protocol (MCP) server setup guide. This includes revising tool descriptions, replacing multiple experimental tools with a single target runner option, updating configurations for supported IDEs, and removing obsolete setup sections.

(cherry picked from commit f7cb609770)
2026-06-26 10:34:41 -07:00
Karim Daher 9dff7f48c5 docs: disable overlay close-on-escape in Aria menubar examples
The Aria menubar examples render each menu in a `cdkConnectedOverlay`,
which detaches the top-most overlay on every Escape keypress
(`disableClose` defaults to `false`). The top-level menus are always
attached, so a detached overlay never reattaches and its `viewChild`
reference becomes `undefined`. Holding Escape detaches the overlays one by
one, permanently breaking menus such as "Insert" and "Format".

Set `cdkConnectedOverlayDisableClose` on the example overlays so the menu
pattern remains the single owner of open/close state, matching the
combobox and toolbar examples. Applied to the basic, disabled, and rtl
menubar examples (and their material/retro variants).

(cherry picked from commit db2101c994)
2026-06-26 10:33:26 -07:00
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 0cd3d50de3 fix(docs-infra): prevent inline code in table headers from wrapping mid-word
When a documentation table has a wide content column, the narrow header
columns get squeezed and inline-code header labels break mid-word at
their hyphens. On the MCP server tools page this rendered the `local-only`
and `read-only` column headers as `local-` / `only` and `read-` / `only`.

Apply `white-space: nowrap` to `code` inside `th` so header tokens stay on
a single line. The rule is scoped to headers, whose labels are always
short, so long code signatures in body cells continue to wrap and no
table gains a horizontal scrollbar.

(cherry picked from commit 50bb0d6bfe)
2026-06-22 16:05:49 -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 c6b0b87306 fix(docs-infra): align the page title with its edit action
The page title row (`.docs-page-title`) relied on the default flex
alignment, so the edit icon next to the title did not line up with the
title text. Add `align-items: baseline` so the icon sits on the title's
baseline.

(cherry picked from commit e77a8a0c7a)
2026-06-18 14:06:26 -04:00
yamanerkam 73880c55fd fix(docs-infra): correct select dropdown scrolling, sizing, and selection
Several issues in the shared docs `Select` component (used by the API
reference package filter):

- The options list never scrolled: its element used a class with no styles,
  so the intended max-height/overflow rule was dead. Point it at the styled
  class so long lists scroll within the popover.
- Selecting an option now closes the popup instead of leaving it open.
- Clip the trigger and popover corners (overflow: hidden) so their rounded
  borders render cleanly, and align the popover width with the trigger.
- Drop the selected-option checkmark. The component is single-select and
  already marks the selection with a highlight, so the tick was misleading.
- Remove the unused `disabled` input.

(cherry picked from commit ffcc8eee98)
2026-06-18 10:52:40 -04: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
Angular Robot 0f1cfe3082 build: update cross-repo angular dependencies to v22.0.2
See associated pull request for more information.
2026-06-17 08:05:50 -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
Kam eafdbe008a fix(docs-infra): use a facade for docs-video to fix Firefox embeds
Follow-up to #69205. After switching adev's COEP to `credentialless`, the
cross-origin YouTube iframe in `<docs-video>` loads in Chromium and Safari but
not Firefox, whose `credentialless` policy does not extend to nested frames. The
result was a COEP error screen instead of the player.

Render `<docs-video>` as a lightweight thumbnail facade instead of embedding the
iframe directly. The thumbnail is a cross-origin subresource, so it loads under
`credentialless` in every browser. `DocViewer` then upgrades the facade to the
inline player on hydration in browsers that can load the embed (Chromium,
Safari), preserving the previous behavior there. On Firefox the facade stays a
plain link that opens the video on YouTube (with autoplay), which replaces the
error screen.

The thumbnail uses `maxresdefault` and falls back to `hqdefault` when a video
has no max-resolution image.

(cherry picked from commit 43acead06d)
2026-06-15 15:58:04 +00:00