From 6caf31834c9a19fcba635f29847004da51f076f4 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:31:00 +0200 Subject: [PATCH 01/24] fix(cdk/a11y): remove deprecated factory functions Removes factory functions that we had marked as deprecated for v21. These functions aren't necessary since we switched to standalone. BREAKING CHANGE: * `LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY` has been removed. * `TREE_KEY_MANAGER_FACTORY` has been removed. * `TREE_KEY_MANAGER_FACTORY_PROVIDER` has been removed. --- goldens/cdk/a11y/index.api.md | 15 ---------- .../a11y/key-manager/noop-tree-key-manager.ts | 29 ++----------------- src/cdk/a11y/key-manager/tree-key-manager.ts | 21 +------------- .../live-announcer/live-announcer-tokens.ts | 11 +------ 4 files changed, 4 insertions(+), 72 deletions(-) diff --git a/goldens/cdk/a11y/index.api.md b/goldens/cdk/a11y/index.api.md index 316a8b14d8d2..ea7039d26cd3 100644 --- a/goldens/cdk/a11y/index.api.md +++ b/goldens/cdk/a11y/index.api.md @@ -401,9 +401,6 @@ export const LIVE_ANNOUNCER_DEFAULT_OPTIONS: InjectionToken; -// @public @deprecated -export function LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY(): null; - // @public (undocumented) export class LiveAnnouncer implements OnDestroy { constructor(...args: unknown[]); @@ -429,9 +426,6 @@ export interface LiveAnnouncerDefaultOptions { // @public @deprecated export const MESSAGES_CONTAINER_ID = "cdk-describedby-message-container"; -// @public @deprecated -export function NOOP_TREE_KEY_MANAGER_FACTORY(): TreeKeyManagerFactory; - // @public @deprecated export const NOOP_TREE_KEY_MANAGER_FACTORY_PROVIDER: Provider; @@ -465,15 +459,6 @@ export function removeAriaReferencedId(el: Element, attr: `aria-${string}`, id: // @public export const TREE_KEY_MANAGER: InjectionToken>; -// @public @deprecated -export function TREE_KEY_MANAGER_FACTORY(): TreeKeyManagerFactory; - -// @public @deprecated -export const TREE_KEY_MANAGER_FACTORY_PROVIDER: { - provide: InjectionToken>; - useFactory: typeof TREE_KEY_MANAGER_FACTORY; -}; - // @public export class TreeKeyManager implements TreeKeyManagerStrategy { constructor(items: Observable | QueryList | T[], config: TreeKeyManagerOptions); diff --git a/src/cdk/a11y/key-manager/noop-tree-key-manager.ts b/src/cdk/a11y/key-manager/noop-tree-key-manager.ts index e58e397e1e9e..b080a137da85 100644 --- a/src/cdk/a11y/key-manager/noop-tree-key-manager.ts +++ b/src/cdk/a11y/key-manager/noop-tree-key-manager.ts @@ -8,11 +8,7 @@ import {Subject} from 'rxjs'; import {TREE_KEY_MANAGER} from './tree-key-manager'; -import { - TreeKeyManagerFactory, - TreeKeyManagerItem, - TreeKeyManagerStrategy, -} from './tree-key-manager-strategy'; +import {TreeKeyManagerItem, TreeKeyManagerStrategy} from './tree-key-manager-strategy'; import {Provider} from '@angular/core'; // NoopTreeKeyManager is a "noop" implementation of TreeKeyMangerStrategy. Methods are noops. Does @@ -67,27 +63,6 @@ export class NoopTreeKeyManager implements TreeKey } } -/** - * @docs-private - * - * Opt-out of Tree of key manager behavior. - * - * When provided, Tree has same focus management behavior as before TreeKeyManager was introduced. - * - Tree does not respond to keyboard interaction - * - Tree node allows tabindex to be set by Input binding - * - Tree node allows tabindex to be set by attribute binding - * - * @deprecated NoopTreeKeyManager deprecated. Use TreeKeyManager or inject a - * TreeKeyManagerStrategy instead. To be removed in a future version. - * - * @breaking-change 21.0.0 - */ -export function NOOP_TREE_KEY_MANAGER_FACTORY< - T extends TreeKeyManagerItem, ->(): TreeKeyManagerFactory { - return () => new NoopTreeKeyManager(); -} - /** * @docs-private * @@ -105,5 +80,5 @@ export function NOOP_TREE_KEY_MANAGER_FACTORY< */ export const NOOP_TREE_KEY_MANAGER_FACTORY_PROVIDER: Provider = { provide: TREE_KEY_MANAGER, - useFactory: NOOP_TREE_KEY_MANAGER_FACTORY, + useFactory: () => () => new NoopTreeKeyManager(), }; diff --git a/src/cdk/a11y/key-manager/tree-key-manager.ts b/src/cdk/a11y/key-manager/tree-key-manager.ts index 28318cd1ee94..27d6f190b504 100644 --- a/src/cdk/a11y/key-manager/tree-key-manager.ts +++ b/src/cdk/a11y/key-manager/tree-key-manager.ts @@ -411,27 +411,8 @@ export class TreeKeyManager implements TreeKeyMana } } -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function TREE_KEY_MANAGER_FACTORY(): TreeKeyManagerFactory { - return (items, options) => new TreeKeyManager(items, options); -} - /** Injection token that determines the key manager to use. */ export const TREE_KEY_MANAGER = new InjectionToken>('tree-key-manager', { providedIn: 'root', - factory: TREE_KEY_MANAGER_FACTORY, + factory: () => (items, options) => new TreeKeyManager(items, options), }); - -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export const TREE_KEY_MANAGER_FACTORY_PROVIDER = { - provide: TREE_KEY_MANAGER, - useFactory: TREE_KEY_MANAGER_FACTORY, -}; diff --git a/src/cdk/a11y/live-announcer/live-announcer-tokens.ts b/src/cdk/a11y/live-announcer/live-announcer-tokens.ts index 8294bb4a7144..a36b21b8cb73 100644 --- a/src/cdk/a11y/live-announcer/live-announcer-tokens.ts +++ b/src/cdk/a11y/live-announcer/live-announcer-tokens.ts @@ -18,19 +18,10 @@ export const LIVE_ANNOUNCER_ELEMENT_TOKEN = new InjectionToken null, }, ); -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY(): null { - return null; -} - /** Object that can be used to configure the default options for the LiveAnnouncer. */ export interface LiveAnnouncerDefaultOptions { /** Default politeness for the announcements. */ From b776df937b0ee49f4c08ddddac70242ccf23e541 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:31:11 +0200 Subject: [PATCH 02/24] fix(material/autocomplete): remove deprecated factory functions Removes factory functions that we had marked as deprecated for v21. These functions aren't necessary since we switched to standalone. BREAKING CHANGE: * `MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY` has been removed. * `MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY` has been removed. * `MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER` has been removed. --- goldens/material/autocomplete/index.api.md | 13 ----------- .../autocomplete/autocomplete-module.ts | 6 +---- .../autocomplete/autocomplete-trigger.ts | 21 ----------------- src/material/autocomplete/autocomplete.ts | 23 ++++++------------- 4 files changed, 8 insertions(+), 55 deletions(-) diff --git a/goldens/material/autocomplete/index.api.md b/goldens/material/autocomplete/index.api.md index 734b7b16abcc..8eb6792b15fa 100644 --- a/goldens/material/autocomplete/index.api.md +++ b/goldens/material/autocomplete/index.api.md @@ -35,22 +35,9 @@ export function getMatAutocompleteMissingPanelError(): Error; // @public export const MAT_AUTOCOMPLETE_DEFAULT_OPTIONS: InjectionToken; -// @public @deprecated -export function MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY(): MatAutocompleteDefaultOptions; - // @public export const MAT_AUTOCOMPLETE_SCROLL_STRATEGY: InjectionToken<() => ScrollStrategy>; -// @public @deprecated -export function MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY(_overlay: unknown): () => ScrollStrategy; - -// @public @deprecated -export const MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER: { - provide: InjectionToken<() => ScrollStrategy>; - deps: any[]; - useFactory: typeof MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY; -}; - // @public export const MAT_AUTOCOMPLETE_VALUE_ACCESSOR: any; diff --git a/src/material/autocomplete/autocomplete-module.ts b/src/material/autocomplete/autocomplete-module.ts index 95f50a8936ab..a77056ed95ed 100644 --- a/src/material/autocomplete/autocomplete-module.ts +++ b/src/material/autocomplete/autocomplete-module.ts @@ -11,10 +11,7 @@ import {MatCommonModule, MatOptionModule} from '../core'; import {CdkScrollableModule} from '@angular/cdk/scrolling'; import {OverlayModule} from '@angular/cdk/overlay'; import {MatAutocomplete} from './autocomplete'; -import { - MatAutocompleteTrigger, - MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER, -} from './autocomplete-trigger'; +import {MatAutocompleteTrigger} from './autocomplete-trigger'; import {MatAutocompleteOrigin} from './autocomplete-origin'; @NgModule({ @@ -34,6 +31,5 @@ import {MatAutocompleteOrigin} from './autocomplete-origin'; MatAutocompleteTrigger, MatAutocompleteOrigin, ], - providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER], }) export class MatAutocompleteModule {} diff --git a/src/material/autocomplete/autocomplete-trigger.ts b/src/material/autocomplete/autocomplete-trigger.ts index 942637ca6c4e..486c7a60728a 100644 --- a/src/material/autocomplete/autocomplete-trigger.ts +++ b/src/material/autocomplete/autocomplete-trigger.ts @@ -97,27 +97,6 @@ export const MAT_AUTOCOMPLETE_SCROLL_STRATEGY = new InjectionToken<() => ScrollS }, ); -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY(_overlay: unknown): () => ScrollStrategy { - const injector = inject(Injector); - return () => createRepositionScrollStrategy(injector); -} - -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export const MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER = { - provide: MAT_AUTOCOMPLETE_SCROLL_STRATEGY, - deps: [] as any[], - useFactory: MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY, -}; - /** Base class with all of the `MatAutocompleteTrigger` functionality. */ @Directive({ selector: `input[matAutocomplete], textarea[matAutocomplete]`, diff --git a/src/material/autocomplete/autocomplete.ts b/src/material/autocomplete/autocomplete.ts index 54078571d1f0..82b5be53389e 100644 --- a/src/material/autocomplete/autocomplete.ts +++ b/src/material/autocomplete/autocomplete.ts @@ -88,25 +88,16 @@ export const MAT_AUTOCOMPLETE_DEFAULT_OPTIONS = new InjectionToken ({ + autoActiveFirstOption: false, + autoSelectActiveOption: false, + hideSingleSelectionIndicator: false, + requireSelection: false, + hasBackdrop: false, + }), }, ); -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY(): MatAutocompleteDefaultOptions { - return { - autoActiveFirstOption: false, - autoSelectActiveOption: false, - hideSingleSelectionIndicator: false, - requireSelection: false, - hasBackdrop: false, - }; -} - /** Autocomplete component. */ @Component({ selector: 'mat-autocomplete', From 7a32ac29714906293e43dff6e3d717da75adbd79 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:31:49 +0200 Subject: [PATCH 03/24] fix(material/button): remove deprecated factory functions Removes factory functions that we had marked as deprecated for v21. These functions aren't necessary since we switched to standalone. BREAKING CHANGE: * `MAT_FAB_DEFAULT_OPTIONS_FACTORY` has been removed. --- goldens/material/button/index.api.md | 3 --- src/material/button/fab.ts | 19 +++++-------------- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/goldens/material/button/index.api.md b/goldens/material/button/index.api.md index 0ef290fae0d3..a0f708ff1f48 100644 --- a/goldens/material/button/index.api.md +++ b/goldens/material/button/index.api.md @@ -20,9 +20,6 @@ export const MAT_BUTTON_CONFIG: InjectionToken; // @public export const MAT_FAB_DEFAULT_OPTIONS: InjectionToken; -// @public @deprecated -export function MAT_FAB_DEFAULT_OPTIONS_FACTORY(): MatFabDefaultOptions; - // @public export const MatAnchor: typeof MatButton; diff --git a/src/material/button/fab.ts b/src/material/button/fab.ts index 3c908e0ea111..9822e922f9be 100644 --- a/src/material/button/fab.ts +++ b/src/material/button/fab.ts @@ -36,24 +36,15 @@ export const MAT_FAB_DEFAULT_OPTIONS = new InjectionToken( 'mat-mdc-fab-default-options', { providedIn: 'root', - factory: MAT_FAB_DEFAULT_OPTIONS_FACTORY, + factory: () => defaults, }, ); -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_FAB_DEFAULT_OPTIONS_FACTORY(): MatFabDefaultOptions { - return { - // The FAB by default has its color set to accent. - color: 'accent', - }; -} - // Default FAB configuration. -const defaults = MAT_FAB_DEFAULT_OPTIONS_FACTORY(); +const defaults: MatFabDefaultOptions = { + // The FAB by default has its color set to accent. + color: 'accent', +}; /** * Material Design floating action button (FAB) component. These buttons represent the primary From aca7a2c63f694bf75ff556709cd1b19a84cdac7f Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:32:36 +0200 Subject: [PATCH 04/24] fix(material/button-toggle): remove deprecated factory functions Removes factory functions that we had marked as deprecated for v21. These functions aren't necessary since we switched to standalone. BREAKING CHANGE: * `MAT_BUTTON_TOGGLE_GROUP_DEFAULT_OPTIONS_FACTORY` has been removed. --- goldens/material/button-toggle/index.api.md | 3 --- src/material/button-toggle/button-toggle.ts | 19 +++++-------------- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/goldens/material/button-toggle/index.api.md b/goldens/material/button-toggle/index.api.md index d43e1df4fd0e..6d491d594b18 100644 --- a/goldens/material/button-toggle/index.api.md +++ b/goldens/material/button-toggle/index.api.md @@ -23,9 +23,6 @@ export const MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS: InjectionToken; -// @public @deprecated -export function MAT_BUTTON_TOGGLE_GROUP_DEFAULT_OPTIONS_FACTORY(): MatButtonToggleDefaultOptions; - // @public export const MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR: any; diff --git a/src/material/button-toggle/button-toggle.ts b/src/material/button-toggle/button-toggle.ts index 002b8a133b46..1d0e9765742e 100644 --- a/src/material/button-toggle/button-toggle.ts +++ b/src/material/button-toggle/button-toggle.ts @@ -82,23 +82,14 @@ export const MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS = new InjectionToken ({ + hideSingleSelectionIndicator: false, + hideMultipleSelectionIndicator: false, + disabledInteractive: false, + }), }, ); -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_BUTTON_TOGGLE_GROUP_DEFAULT_OPTIONS_FACTORY(): MatButtonToggleDefaultOptions { - return { - hideSingleSelectionIndicator: false, - hideMultipleSelectionIndicator: false, - disabledInteractive: false, - }; -} - /** * Injection token that can be used to reference instances of `MatButtonToggleGroup`. * It serves as alternative token to the actual `MatButtonToggleGroup` class which From fc011ec6617c90962269fcbc6a8879b5e8a78400 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:33:22 +0200 Subject: [PATCH 05/24] fix(material/checkbox): remove deprecated factory functions Removes factory functions that we had marked as deprecated for v21. These functions aren't necessary since we switched to standalone. BREAKING CHANGE: * `MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY` has been removed. --- goldens/material/checkbox/index.api.md | 3 --- src/material/checkbox/checkbox-config.ts | 21 +++++++-------------- src/material/checkbox/checkbox.ts | 9 +++------ src/material/checkbox/public-api.ts | 6 +++++- 4 files changed, 15 insertions(+), 24 deletions(-) diff --git a/goldens/material/checkbox/index.api.md b/goldens/material/checkbox/index.api.md index 27e043353587..292e4300ba67 100644 --- a/goldens/material/checkbox/index.api.md +++ b/goldens/material/checkbox/index.api.md @@ -21,9 +21,6 @@ import { Validator } from '@angular/forms'; // @public export const MAT_CHECKBOX_DEFAULT_OPTIONS: InjectionToken; -// @public @deprecated -export function MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY(): MatCheckboxDefaultOptions; - // @public (undocumented) export class MatCheckbox implements AfterViewInit, OnChanges, ControlValueAccessor, Validator, FocusableOption { constructor(...args: unknown[]); diff --git a/src/material/checkbox/checkbox-config.ts b/src/material/checkbox/checkbox-config.ts index 984894c101cf..6f5d0dc31c66 100644 --- a/src/material/checkbox/checkbox-config.ts +++ b/src/material/checkbox/checkbox-config.ts @@ -26,28 +26,21 @@ export interface MatCheckboxDefaultOptions { disabledInteractive?: boolean; } +export const checkboxDefaults: MatCheckboxDefaultOptions = { + color: 'accent', + clickAction: 'check-indeterminate', + disabledInteractive: false, +}; + /** Injection token to be used to override the default options for `mat-checkbox`. */ export const MAT_CHECKBOX_DEFAULT_OPTIONS = new InjectionToken( 'mat-checkbox-default-options', { providedIn: 'root', - factory: MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY, + factory: () => checkboxDefaults, }, ); -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY(): MatCheckboxDefaultOptions { - return { - color: 'accent', - clickAction: 'check-indeterminate', - disabledInteractive: false, - }; -} - /** * Checkbox click action when user click on input element. * noop: Do not toggle checked or indeterminate. diff --git a/src/material/checkbox/checkbox.ts b/src/material/checkbox/checkbox.ts index 2e1b2556eecc..fbfd984eb534 100644 --- a/src/material/checkbox/checkbox.ts +++ b/src/material/checkbox/checkbox.ts @@ -43,8 +43,8 @@ import { _animationsDisabled, } from '../core'; import { + checkboxDefaults, MAT_CHECKBOX_DEFAULT_OPTIONS, - MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY, MatCheckboxDefaultOptions, } from './checkbox-config'; import {_CdkPrivateStyleLoader} from '@angular/cdk/private'; @@ -72,9 +72,6 @@ export class MatCheckboxChange { checked: boolean; } -// Default checkbox configuration. -const defaults = MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY(); - @Component({ selector: 'mat-checkbox', templateUrl: 'checkbox.html', @@ -248,8 +245,8 @@ export class MatCheckbox constructor() { inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader); const tabIndex = inject(new HostAttributeToken('tabindex'), {optional: true}); - this._options = this._options || defaults; - this.color = this._options.color || defaults.color; + this._options = this._options || checkboxDefaults; + this.color = this._options.color || checkboxDefaults.color; this.tabIndex = tabIndex == null ? 0 : parseInt(tabIndex) || 0; this.id = this._uniqueId = inject(_IdGenerator).getId('mat-mdc-checkbox-'); this.disabledInteractive = this._options?.disabledInteractive ?? false; diff --git a/src/material/checkbox/public-api.ts b/src/material/checkbox/public-api.ts index d591ca5e5f81..6f8cb4c78bed 100644 --- a/src/material/checkbox/public-api.ts +++ b/src/material/checkbox/public-api.ts @@ -7,5 +7,9 @@ */ export * from './checkbox'; -export * from './checkbox-config'; +export { + MatCheckboxDefaultOptions, + MAT_CHECKBOX_DEFAULT_OPTIONS, + MatCheckboxClickAction, +} from './checkbox-config'; export * from './checkbox-module'; From 11c6e8c760cb0c7008f0f0cf0bf532466aab69d8 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:33:50 +0200 Subject: [PATCH 06/24] fix(material/core): remove deprecated factory functions Removes factory functions that we had marked as deprecated for v21. These functions aren't necessary since we switched to standalone. BREAKING CHANGE: * `MAT_DATE_LOCAL_FACTORY` has been removed. --- goldens/material/core/index.api.md | 3 --- src/material/core/datetime/date-adapter.ts | 11 +---------- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/goldens/material/core/index.api.md b/goldens/material/core/index.api.md index cc5512058715..eb428010e16e 100644 --- a/goldens/material/core/index.api.md +++ b/goldens/material/core/index.api.md @@ -154,9 +154,6 @@ export const MAT_DATE_FORMATS: InjectionToken; // @public export const MAT_DATE_LOCALE: InjectionToken<{}>; -// @public @deprecated -export function MAT_DATE_LOCALE_FACTORY(): {}; - // @public (undocumented) export const MAT_NATIVE_DATE_FORMATS: MatDateFormats; diff --git a/src/material/core/datetime/date-adapter.ts b/src/material/core/datetime/date-adapter.ts index fd995894afbd..de4837c62083 100644 --- a/src/material/core/datetime/date-adapter.ts +++ b/src/material/core/datetime/date-adapter.ts @@ -12,18 +12,9 @@ import {Observable, Subject} from 'rxjs'; /** InjectionToken for datepicker that can be used to override default locale code. */ export const MAT_DATE_LOCALE = new InjectionToken<{}>('MAT_DATE_LOCALE', { providedIn: 'root', - factory: MAT_DATE_LOCALE_FACTORY, + factory: () => inject(LOCALE_ID), }); -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_DATE_LOCALE_FACTORY(): {} { - return inject(LOCALE_ID); -} - const NOT_IMPLEMENTED = 'Method not implemented'; /** Adapts type `D` to be usable as a date by cdk-based components that work with dates. */ From 45e1bfbe68e2e88e91acb72e2138374fb6bcfcc8 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:35:34 +0200 Subject: [PATCH 07/24] fix(material/datepicker): remove deprecated factory functions Removes factory functions that we had marked as deprecated for v21. These functions aren't necessary since we switched to standalone. BREAKING CHANGE: * `MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY` has been removed. * `MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER` has been removed. * `MAT_RANGE_DATE_SELECTION_MODEL_FACTORY` has been removed. * `MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER` has been removed. * `MAT_SINGLE_DATE_SELECTION_MODEL_FACTORY` has been removed. * `MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER` has been removed. --- goldens/material/datepicker/index.api.md | 23 ---------- src/material/datepicker/date-range-picker.ts | 16 +++++-- .../date-range-selection-strategy.ts | 25 +---------- .../datepicker/date-selection-model.ts | 42 ++++--------------- src/material/datepicker/datepicker-base.ts | 21 ---------- src/material/datepicker/datepicker-module.ts | 7 +--- src/material/datepicker/public-api.ts | 11 +++-- 7 files changed, 33 insertions(+), 112 deletions(-) diff --git a/goldens/material/datepicker/index.api.md b/goldens/material/datepicker/index.api.md index 4c5bf24512c5..9afbaa8d798c 100644 --- a/goldens/material/datepicker/index.api.md +++ b/goldens/material/datepicker/index.api.md @@ -16,7 +16,6 @@ import { Directionality } from '@angular/cdk/bidi'; import { DoCheck } from '@angular/core'; import { ElementRef } from '@angular/core'; import { EventEmitter } from '@angular/core'; -import { FactoryProvider } from '@angular/core'; import { FocusOrigin } from '@angular/cdk/a11y'; import { FormGroupDirective } from '@angular/forms'; import * as i0 from '@angular/core'; @@ -92,34 +91,12 @@ export const MAT_DATE_RANGE_SELECTION_STRATEGY: InjectionToken ScrollStrategy>; -// @public @deprecated -export function MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY(_overlay: unknown): () => ScrollStrategy; - -// @public @deprecated -export const MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER: { - provide: InjectionToken<() => ScrollStrategy>; - deps: any[]; - useFactory: typeof MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY; -}; - // @public export const MAT_DATEPICKER_VALIDATORS: any; // @public export const MAT_DATEPICKER_VALUE_ACCESSOR: any; -// @public @deprecated -export function MAT_RANGE_DATE_SELECTION_MODEL_FACTORY(parent: MatSingleDateSelectionModel, adapter: DateAdapter): MatSingleDateSelectionModel; - -// @public @deprecated -export const MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER: FactoryProvider; - -// @public @deprecated -export function MAT_SINGLE_DATE_SELECTION_MODEL_FACTORY(parent: MatSingleDateSelectionModel, adapter: DateAdapter): MatSingleDateSelectionModel; - -// @public @deprecated -export const MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER: FactoryProvider; - // @public export class MatCalendar implements AfterContentInit, AfterViewChecked, OnDestroy, OnChanges { constructor(...args: unknown[]); diff --git a/src/material/datepicker/date-range-picker.ts b/src/material/datepicker/date-range-picker.ts index f833b24c9d1f..b9d8326e255c 100644 --- a/src/material/datepicker/date-range-picker.ts +++ b/src/material/datepicker/date-range-picker.ts @@ -6,10 +6,14 @@ * found in the LICENSE file at https://angular.dev/license */ -import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core'; +import {ChangeDetectionStrategy, Component, inject, ViewEncapsulation} from '@angular/core'; import {MatDatepickerBase, MatDatepickerContent, MatDatepickerControl} from './datepicker-base'; import {MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER, DateRange} from './date-selection-model'; -import {MAT_CALENDAR_RANGE_STRATEGY_PROVIDER} from './date-range-selection-strategy'; +import { + DefaultMatCalendarRangeStrategy, + MAT_DATE_RANGE_SELECTION_STRATEGY, +} from './date-range-selection-strategy'; +import {DateAdapter} from '../core'; /** * Input that can be associated with a date range picker. @@ -34,7 +38,13 @@ export interface MatDateRangePickerInput extends MatDatepickerControl { encapsulation: ViewEncapsulation.None, providers: [ MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER, - MAT_CALENDAR_RANGE_STRATEGY_PROVIDER, + { + provide: MAT_DATE_RANGE_SELECTION_STRATEGY, + useFactory: () => { + const parent = inject(MAT_DATE_RANGE_SELECTION_STRATEGY, {optional: true, skipSelf: true}); + return parent || new DefaultMatCalendarRangeStrategy(inject(DateAdapter)); + }, + }, {provide: MatDatepickerBase, useExisting: MatDateRangePicker}, ], }) diff --git a/src/material/datepicker/date-range-selection-strategy.ts b/src/material/datepicker/date-range-selection-strategy.ts index 8bd18c4c779d..b7faaf2b3ed9 100644 --- a/src/material/datepicker/date-range-selection-strategy.ts +++ b/src/material/datepicker/date-range-selection-strategy.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import {Injectable, InjectionToken, Optional, SkipSelf, FactoryProvider} from '@angular/core'; +import {Injectable, InjectionToken} from '@angular/core'; import {DateAdapter} from '../core'; import {DateRange} from './date-selection-model'; @@ -130,26 +130,3 @@ export class DefaultMatCalendarRangeStrategy implements MatDateRangeSelection return new DateRange(start, end); } } - -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_CALENDAR_RANGE_STRATEGY_PROVIDER_FACTORY( - parent: MatDateRangeSelectionStrategy, - adapter: DateAdapter, -) { - return parent || new DefaultMatCalendarRangeStrategy(adapter); -} - -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export const MAT_CALENDAR_RANGE_STRATEGY_PROVIDER: FactoryProvider = { - provide: MAT_DATE_RANGE_SELECTION_STRATEGY, - deps: [[new Optional(), new SkipSelf(), MAT_DATE_RANGE_SELECTION_STRATEGY], DateAdapter], - useFactory: MAT_CALENDAR_RANGE_STRATEGY_PROVIDER_FACTORY, -}; diff --git a/src/material/datepicker/date-selection-model.ts b/src/material/datepicker/date-selection-model.ts index 76d04b29273d..5f1f0b98435a 100644 --- a/src/material/datepicker/date-selection-model.ts +++ b/src/material/datepicker/date-selection-model.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import {FactoryProvider, Injectable, Optional, SkipSelf, OnDestroy} from '@angular/core'; +import {FactoryProvider, Injectable, OnDestroy, inject} from '@angular/core'; import {DateAdapter} from '../core'; import {Observable, Subject} from 'rxjs'; @@ -211,50 +211,26 @@ export class MatRangeDateSelectionModel extends MatDateSelectionModel, - adapter: DateAdapter, -) { - return parent || new MatSingleDateSelectionModel(adapter); -} - /** * Used to provide a single selection model to a component. * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 */ export const MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER: FactoryProvider = { provide: MatDateSelectionModel, - deps: [[new Optional(), new SkipSelf(), MatDateSelectionModel], DateAdapter], - useFactory: MAT_SINGLE_DATE_SELECTION_MODEL_FACTORY, + useFactory: () => { + const parent = inject(MatDateSelectionModel, {optional: true, skipSelf: true}); + return parent || new MatSingleDateSelectionModel(inject(DateAdapter)); + }, }; -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_RANGE_DATE_SELECTION_MODEL_FACTORY( - parent: MatSingleDateSelectionModel, - adapter: DateAdapter, -) { - return parent || new MatRangeDateSelectionModel(adapter); -} - /** * Used to provide a range selection model to a component. * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 */ export const MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER: FactoryProvider = { provide: MatDateSelectionModel, - deps: [[new Optional(), new SkipSelf(), MatDateSelectionModel], DateAdapter], - useFactory: MAT_RANGE_DATE_SELECTION_MODEL_FACTORY, + useFactory: () => { + const parent = inject(MatDateSelectionModel, {optional: true, skipSelf: true}); + return parent || new MatRangeDateSelectionModel(inject(DateAdapter)); + }, }; diff --git a/src/material/datepicker/datepicker-base.ts b/src/material/datepicker/datepicker-base.ts index 35075750eaa9..e8cef6970bfc 100644 --- a/src/material/datepicker/datepicker-base.ts +++ b/src/material/datepicker/datepicker-base.ts @@ -92,33 +92,12 @@ export const MAT_DATEPICKER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStr }, ); -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY(_overlay: unknown): () => ScrollStrategy { - const injector = inject(Injector); - return () => createRepositionScrollStrategy(injector); -} - /** Possible positions for the datepicker dropdown along the X axis. */ export type DatepickerDropdownPositionX = 'start' | 'end'; /** Possible positions for the datepicker dropdown along the Y axis. */ export type DatepickerDropdownPositionY = 'above' | 'below'; -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export const MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = { - provide: MAT_DATEPICKER_SCROLL_STRATEGY, - deps: [] as any[], - useFactory: MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY, -}; - /** * Component used as the content for the datepicker overlay. We use this instead of using * MatCalendar directly as the content so we can control the initial focus. This also gives us a diff --git a/src/material/datepicker/datepicker-module.ts b/src/material/datepicker/datepicker-module.ts index 46f241ea934a..6e6248c6b3d5 100644 --- a/src/material/datepicker/datepicker-module.ts +++ b/src/material/datepicker/datepicker-module.ts @@ -16,10 +16,7 @@ import {MatCommonModule} from '../core'; import {MatCalendar, MatCalendarHeader} from './calendar'; import {MatCalendarBody} from './calendar-body'; import {MatDatepicker} from './datepicker'; -import { - MatDatepickerContent, - MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER, -} from './datepicker-base'; +import {MatDatepickerContent} from './datepicker-base'; import {MatDatepickerInput} from './datepicker-input'; import {MatDatepickerIntl} from './datepicker-intl'; import {MatDatepickerToggle, MatDatepickerToggleIcon} from './datepicker-toggle'; @@ -78,6 +75,6 @@ import {MatDatepickerActions, MatDatepickerApply, MatDatepickerCancel} from './d MatDatepickerCancel, MatDatepickerApply, ], - providers: [MatDatepickerIntl, MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER], + providers: [MatDatepickerIntl], }) export class MatDatepickerModule {} diff --git a/src/material/datepicker/public-api.ts b/src/material/datepicker/public-api.ts index 4a4b33ddaee4..e9d153e3eb3d 100644 --- a/src/material/datepicker/public-api.ts +++ b/src/material/datepicker/public-api.ts @@ -17,8 +17,6 @@ export { } from './date-range-selection-strategy'; export { MAT_DATEPICKER_SCROLL_STRATEGY, - MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY, - MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER, MatDatepickerContent, DatepickerDropdownPositionX, DatepickerDropdownPositionY, @@ -37,7 +35,14 @@ export * from './month-view'; export * from './year-view'; export * from './date-range-input'; export {MatDateRangePicker} from './date-range-picker'; -export * from './date-selection-model'; +export { + DateRange, + ExtractDateTypeFromSelection, + DateSelectionModelChange, + MatDateSelectionModel, + MatSingleDateSelectionModel, + MatRangeDateSelectionModel, +} from './date-selection-model'; export {MatStartDate, MatEndDate} from './date-range-input-parts'; export {MatMultiYearView, yearsPerPage, yearsPerRow} from './multi-year-view'; export * from './datepicker-actions'; From 11eff4359627a534b6812bfd02a8f40b02dc9500 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:36:22 +0200 Subject: [PATCH 08/24] fix(material/icon): remove deprecated factory functions Removes factory functions that we had marked as deprecated for v21. These functions aren't necessary since we switched to standalone. BREAKING CHANGE: * `ICON_REGISTRY_PROVIDER` has been removed. * `ICON_REGISTRY_PROVIDER_FACTORY` has been removed. * `MAT_ICON_LOCATION_FACTORY` has been removed. --- goldens/material/icon/index.api.md | 14 ------------ src/material/icon/icon-registry.ts | 35 ------------------------------ src/material/icon/icon.ts | 27 +++++++++-------------- 3 files changed, 10 insertions(+), 66 deletions(-) diff --git a/goldens/material/icon/index.api.md b/goldens/material/icon/index.api.md index 5140ccaa3304..fe319accb9dd 100644 --- a/goldens/material/icon/index.api.md +++ b/goldens/material/icon/index.api.md @@ -15,7 +15,6 @@ import { InjectionToken } from '@angular/core'; import { Observable } from 'rxjs'; import { OnDestroy } from '@angular/core'; import { OnInit } from '@angular/core'; -import { Optional } from '@angular/core'; import { SafeHtml } from '@angular/platform-browser'; import { SafeResourceUrl } from '@angular/platform-browser'; @@ -31,16 +30,6 @@ export function getMatIconNameNotFoundError(iconName: string): Error; // @public export function getMatIconNoHttpProviderError(): Error; -// @public @deprecated -export const ICON_REGISTRY_PROVIDER: { - provide: typeof MatIconRegistry; - deps: (Optional[] | typeof DomSanitizer | typeof ErrorHandler)[]; - useFactory: typeof ICON_REGISTRY_PROVIDER_FACTORY; -}; - -// @public @deprecated -export function ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry: MatIconRegistry, httpClient: HttpClient, sanitizer: DomSanitizer, errorHandler: ErrorHandler, document?: any): MatIconRegistry; - // @public export interface IconOptions { viewBox?: string; @@ -56,9 +45,6 @@ export const MAT_ICON_DEFAULT_OPTIONS: InjectionToken; // @public export const MAT_ICON_LOCATION: InjectionToken; -// @public @deprecated -export function MAT_ICON_LOCATION_FACTORY(): MatIconLocation; - // @public export class MatIcon implements OnInit, AfterViewChecked, OnDestroy { constructor(...args: unknown[]); diff --git a/src/material/icon/icon-registry.ts b/src/material/icon/icon-registry.ts index 64223ed3c809..2555b6342ddb 100644 --- a/src/material/icon/icon-registry.ts +++ b/src/material/icon/icon-registry.ts @@ -11,11 +11,9 @@ import { ErrorHandler, Inject, Injectable, - InjectionToken, OnDestroy, Optional, SecurityContext, - SkipSelf, DOCUMENT, } from '@angular/core'; import {DomSanitizer, SafeHtml, SafeResourceUrl} from '@angular/platform-browser'; @@ -728,39 +726,6 @@ export class MatIconRegistry implements OnDestroy { } } -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function ICON_REGISTRY_PROVIDER_FACTORY( - parentRegistry: MatIconRegistry, - httpClient: HttpClient, - sanitizer: DomSanitizer, - errorHandler: ErrorHandler, - document?: any, -) { - return parentRegistry || new MatIconRegistry(httpClient, sanitizer, document, errorHandler); -} - -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export const ICON_REGISTRY_PROVIDER = { - // If there is already an MatIconRegistry available, use that. Otherwise, provide a new one. - provide: MatIconRegistry, - deps: [ - [new Optional(), new SkipSelf(), MatIconRegistry], - [new Optional(), HttpClient], - DomSanitizer, - ErrorHandler, - [new Optional(), DOCUMENT as InjectionToken], - ], - useFactory: ICON_REGISTRY_PROVIDER_FACTORY, -}; - /** Clones an SVGElement while preserving type information. */ function cloneSvg(svg: SVGElement): SVGElement { return svg.cloneNode(true) as SVGElement; diff --git a/src/material/icon/icon.ts b/src/material/icon/icon.ts index 48d540b60ae0..9544ea38eea4 100644 --- a/src/material/icon/icon.ts +++ b/src/material/icon/icon.ts @@ -54,7 +54,16 @@ export const MAT_ICON_DEFAULT_OPTIONS = new InjectionToken('mat-icon-location', { providedIn: 'root', - factory: MAT_ICON_LOCATION_FACTORY, + factory: () => { + const _document = inject(DOCUMENT); + const _location = _document ? _document.location : null; + + return { + // Note that this needs to be a function, rather than a property, because Angular + // will only resolve it once, but we want the current path on each call. + getPathname: () => (_location ? _location.pathname + _location.search : ''), + }; + }, }); /** @@ -65,22 +74,6 @@ export interface MatIconLocation { getPathname: () => string; } -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_ICON_LOCATION_FACTORY(): MatIconLocation { - const _document = inject(DOCUMENT); - const _location = _document ? _document.location : null; - - return { - // Note that this needs to be a function, rather than a property, because Angular - // will only resolve it once, but we want the current path on each call. - getPathname: () => (_location ? _location.pathname + _location.search : ''), - }; -} - /** SVG attributes that accept a FuncIRI (e.g. `url()`). */ const funcIriAttributes = [ 'clip-path', From fb1f0abd7af85781a10ae126a459d953c05cc805 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:36:53 +0200 Subject: [PATCH 09/24] fix(material/menu): remove deprecated factory functions Removes factory functions that we had marked as deprecated for v21. These functions aren't necessary since we switched to standalone. BREAKING CHANGE: * `MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER` has been removed. --- goldens/material/menu/index.api.md | 7 ------- src/material/menu/menu-module.ts | 2 -- src/material/menu/menu-trigger-base.ts | 21 --------------------- src/material/menu/menu.ts | 21 ++++++--------------- src/material/menu/public-api.ts | 6 +----- 5 files changed, 7 insertions(+), 50 deletions(-) diff --git a/goldens/material/menu/index.api.md b/goldens/material/menu/index.api.md index 6bcf558fedcc..4923a7188b06 100644 --- a/goldens/material/menu/index.api.md +++ b/goldens/material/menu/index.api.md @@ -39,13 +39,6 @@ export const MAT_MENU_PANEL: InjectionToken>; // @public export const MAT_MENU_SCROLL_STRATEGY: InjectionToken<() => ScrollStrategy>; -// @public @deprecated -export const MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER: { - provide: InjectionToken<() => ScrollStrategy>; - deps: any[]; - useFactory: typeof MAT_MENU_SCROLL_STRATEGY_FACTORY; -}; - // @public export class MatContextMenuTrigger extends MatMenuTriggerBase implements OnDestroy { constructor(); diff --git a/src/material/menu/menu-module.ts b/src/material/menu/menu-module.ts index 49e320ce1092..a8a7b228fd20 100644 --- a/src/material/menu/menu-module.ts +++ b/src/material/menu/menu-module.ts @@ -14,7 +14,6 @@ import {MatMenu} from './menu'; import {MatMenuItem} from './menu-item'; import {MatMenuContent} from './menu-content'; import {MatMenuTrigger} from './menu-trigger'; -import {MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER} from './menu-trigger-base'; import {MatContextMenuTrigger} from './context-menu-trigger'; @NgModule({ @@ -37,6 +36,5 @@ import {MatContextMenuTrigger} from './context-menu-trigger'; MatMenuTrigger, MatContextMenuTrigger, ], - providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER], }) export class MatMenuModule {} diff --git a/src/material/menu/menu-trigger-base.ts b/src/material/menu/menu-trigger-base.ts index ea9930fdf830..32006cd59702 100644 --- a/src/material/menu/menu-trigger-base.ts +++ b/src/material/menu/menu-trigger-base.ts @@ -54,27 +54,6 @@ export const MAT_MENU_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy> }, ); -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_MENU_SCROLL_STRATEGY_FACTORY(_overlay: unknown): () => ScrollStrategy { - const injector = inject(Injector); - return () => createRepositionScrollStrategy(injector); -} - -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export const MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER = { - provide: MAT_MENU_SCROLL_STRATEGY, - deps: [] as any[], - useFactory: MAT_MENU_SCROLL_STRATEGY_FACTORY, -}; - /** * Default top padding of the menu panel. * @deprecated No longer being used. Will be removed. diff --git a/src/material/menu/menu.ts b/src/material/menu/menu.ts index cffc817720fc..aa081b9440b5 100644 --- a/src/material/menu/menu.ts +++ b/src/material/menu/menu.ts @@ -78,24 +78,15 @@ export const MAT_MENU_DEFAULT_OPTIONS = new InjectionToken ({ + overlapTrigger: false, + xPosition: 'after', + yPosition: 'below', + backdropClass: 'cdk-overlay-transparent-backdrop', + }), }, ); -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_MENU_DEFAULT_OPTIONS_FACTORY(): MatMenuDefaultOptions { - return { - overlapTrigger: false, - xPosition: 'after', - yPosition: 'below', - backdropClass: 'cdk-overlay-transparent-backdrop', - }; -} - /** Name of the enter animation `@keyframes`. */ const ENTER_ANIMATION = '_mat-menu-enter'; diff --git a/src/material/menu/public-api.ts b/src/material/menu/public-api.ts index 8e394389e6b8..f861c34ee042 100644 --- a/src/material/menu/public-api.ts +++ b/src/material/menu/public-api.ts @@ -10,11 +10,7 @@ export {MatMenu, MAT_MENU_DEFAULT_OPTIONS, MatMenuDefaultOptions, MenuCloseReaso export * from './menu-item'; export * from './menu-content'; export {MatMenuTrigger} from './menu-trigger'; -export { - MAT_MENU_SCROLL_STRATEGY, - MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER, - MENU_PANEL_TOP_PADDING, -} from './menu-trigger-base'; +export {MAT_MENU_SCROLL_STRATEGY, MENU_PANEL_TOP_PADDING} from './menu-trigger-base'; export * from './menu-module'; export * from './menu-positions'; export * from './menu-panel'; From 95a7dfdca665f172d756c8ecda3b50b837e56dd6 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:37:51 +0200 Subject: [PATCH 10/24] fix(material/paginator): remove deprecated factory functions Removes factory functions that we had marked as deprecated for v21. These functions aren't necessary since we switched to standalone. BREAKING CHANGE: * `MAT_PAGINATOR_INTL_PROVIDER` has been removed. * `MAT_PAGINATOR_INTL_PROVIDER_FACTORY` has been removed. --- goldens/material/paginator/index.api.md | 11 ----------- src/material/paginator/paginator-intl.ts | 23 +--------------------- src/material/paginator/paginator-module.ts | 2 -- 3 files changed, 1 insertion(+), 35 deletions(-) diff --git a/goldens/material/paginator/index.api.md b/goldens/material/paginator/index.api.md index b5390709d446..d9ccd863740b 100644 --- a/goldens/material/paginator/index.api.md +++ b/goldens/material/paginator/index.api.md @@ -39,7 +39,6 @@ import { Observable } from 'rxjs'; import { OnChanges } from '@angular/core'; import { OnDestroy } from '@angular/core'; import { OnInit } from '@angular/core'; -import { Optional } from '@angular/core'; import { OriginConnectionPosition } from '@angular/cdk/overlay'; import { OverlayConnectionPosition } from '@angular/cdk/overlay'; import { OverlayRef } from '@angular/cdk/overlay'; @@ -53,16 +52,6 @@ import { ViewportRuler } from '@angular/cdk/scrolling'; // @public export const MAT_PAGINATOR_DEFAULT_OPTIONS: InjectionToken; -// @public @deprecated -export const MAT_PAGINATOR_INTL_PROVIDER: { - provide: typeof MatPaginatorIntl; - deps: Optional[][]; - useFactory: typeof MAT_PAGINATOR_INTL_PROVIDER_FACTORY; -}; - -// @public @deprecated -export function MAT_PAGINATOR_INTL_PROVIDER_FACTORY(parentIntl: MatPaginatorIntl): MatPaginatorIntl; - // @public export class MatPaginator implements OnInit, OnDestroy { constructor(...args: unknown[]); diff --git a/src/material/paginator/paginator-intl.ts b/src/material/paginator/paginator-intl.ts index 94a187c59554..1b43ee47a647 100644 --- a/src/material/paginator/paginator-intl.ts +++ b/src/material/paginator/paginator-intl.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import {Injectable, Optional, SkipSelf} from '@angular/core'; +import {Injectable} from '@angular/core'; import {Subject} from 'rxjs'; /** @@ -57,24 +57,3 @@ export class MatPaginatorIntl { return `${startIndex + 1} – ${endIndex} of ${length}`; }; } - -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_PAGINATOR_INTL_PROVIDER_FACTORY(parentIntl: MatPaginatorIntl) { - return parentIntl || new MatPaginatorIntl(); -} - -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export const MAT_PAGINATOR_INTL_PROVIDER = { - // If there is already an MatPaginatorIntl available, use that. Otherwise, provide a new one. - provide: MatPaginatorIntl, - deps: [[new Optional(), new SkipSelf(), MatPaginatorIntl]], - useFactory: MAT_PAGINATOR_INTL_PROVIDER_FACTORY, -}; diff --git a/src/material/paginator/paginator-module.ts b/src/material/paginator/paginator-module.ts index 7555721fb969..c5f3d99d265a 100644 --- a/src/material/paginator/paginator-module.ts +++ b/src/material/paginator/paginator-module.ts @@ -7,7 +7,6 @@ */ import {NgModule} from '@angular/core'; -import {MAT_PAGINATOR_INTL_PROVIDER} from './paginator-intl'; import {MatButtonModule} from '../button'; import {MatSelectModule} from '../select'; import {MatTooltipModule} from '../tooltip'; @@ -16,6 +15,5 @@ import {MatPaginator} from './paginator'; @NgModule({ imports: [MatButtonModule, MatSelectModule, MatTooltipModule, MatPaginator], exports: [MatPaginator], - providers: [MAT_PAGINATOR_INTL_PROVIDER], }) export class MatPaginatorModule {} From a1844c433cf325c0e09cc3ac2b6e7feda3064ed8 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:38:18 +0200 Subject: [PATCH 11/24] fix(material/progress-bar): remove deprecated factory functions Removes factory functions that we had marked as deprecated for v21. These functions aren't necessary since we switched to standalone. BREAKING CHANGE: * `MAT_PROGRESS_BAR_LOCATION_FACTORY` has been removed. --- goldens/material/progress-bar/index.api.md | 3 --- src/material/progress-bar/progress-bar.ts | 30 ++++++++++------------ 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/goldens/material/progress-bar/index.api.md b/goldens/material/progress-bar/index.api.md index 7fe9eb4907cd..efd7b0e099c4 100644 --- a/goldens/material/progress-bar/index.api.md +++ b/goldens/material/progress-bar/index.api.md @@ -18,9 +18,6 @@ export const MAT_PROGRESS_BAR_DEFAULT_OPTIONS: InjectionToken; -// @public @deprecated -export function MAT_PROGRESS_BAR_LOCATION_FACTORY(): MatProgressBarLocation; - // @public (undocumented) export class MatProgressBar implements AfterViewInit, OnDestroy { constructor(...args: unknown[]); diff --git a/src/material/progress-bar/progress-bar.ts b/src/material/progress-bar/progress-bar.ts index 190eeac642ff..cb086420c588 100644 --- a/src/material/progress-bar/progress-bar.ts +++ b/src/material/progress-bar/progress-bar.ts @@ -59,7 +59,19 @@ export const MAT_PROGRESS_BAR_DEFAULT_OPTIONS = new InjectionToken( 'mat-progress-bar-location', - {providedIn: 'root', factory: MAT_PROGRESS_BAR_LOCATION_FACTORY}, + { + providedIn: 'root', + factory: () => { + const _document = inject(DOCUMENT); + const _location = _document ? _document.location : null; + + return { + // Note that this needs to be a function, rather than a property, because Angular + // will only resolve it once, but we want the current path on each call. + getPathname: () => (_location ? _location.pathname + _location.search : ''), + }; + }, + }, ); /** @@ -70,22 +82,6 @@ export interface MatProgressBarLocation { getPathname: () => string; } -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_PROGRESS_BAR_LOCATION_FACTORY(): MatProgressBarLocation { - const _document = inject(DOCUMENT); - const _location = _document ? _document.location : null; - - return { - // Note that this needs to be a function, rather than a property, because Angular - // will only resolve it once, but we want the current path on each call. - getPathname: () => (_location ? _location.pathname + _location.search : ''), - }; -} - export type ProgressBarMode = 'determinate' | 'indeterminate' | 'buffer' | 'query'; @Component({ From e1946dfebcd07f6a60e5e8bac3a08c25a06e92be Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:38:47 +0200 Subject: [PATCH 12/24] fix(material/progress-spinner): remove deprecated factory functions Removes factory functions that we had marked as deprecated for v21. These functions aren't necessary since we switched to standalone. BREAKING CHANGE: * `MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY` has been removed. --- goldens/material/progress-spinner/index.api.md | 3 --- src/material/progress-spinner/progress-spinner.ts | 11 +---------- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/goldens/material/progress-spinner/index.api.md b/goldens/material/progress-spinner/index.api.md index 39d3cba1cc3e..743eef7bbb64 100644 --- a/goldens/material/progress-spinner/index.api.md +++ b/goldens/material/progress-spinner/index.api.md @@ -12,9 +12,6 @@ import { InjectionToken } from '@angular/core'; // @public export const MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS: InjectionToken; -// @public @deprecated -export function MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY(): MatProgressSpinnerDefaultOptions; - // @public (undocumented) export class MatProgressSpinner { constructor(...args: unknown[]); diff --git a/src/material/progress-spinner/progress-spinner.ts b/src/material/progress-spinner/progress-spinner.ts index ecec729e465a..9f7772a906f7 100644 --- a/src/material/progress-spinner/progress-spinner.ts +++ b/src/material/progress-spinner/progress-spinner.ts @@ -48,18 +48,9 @@ export interface MatProgressSpinnerDefaultOptions { export const MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS = new InjectionToken('mat-progress-spinner-default-options', { providedIn: 'root', - factory: MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY, + factory: () => ({diameter: BASE_SIZE}), }); -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY(): MatProgressSpinnerDefaultOptions { - return {diameter: BASE_SIZE}; -} - /** * Base reference size of the spinner. */ From c01d31f94da9b5d381c2eb2619cd22fd633bae8c Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:39:19 +0200 Subject: [PATCH 13/24] fix(material/radio): remove deprecated factory functions Removes factory functions that we had marked as deprecated for v21. These functions aren't necessary since we switched to standalone. BREAKING CHANGE: * `MAT_RADIO_DEFAULT_OPTIONS_FACTORY` has been removed. --- goldens/material/radio/index.api.md | 3 --- src/material/radio/radio.ts | 17 ++++------------- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/goldens/material/radio/index.api.md b/goldens/material/radio/index.api.md index 5af882a78f5f..aeac2d200d18 100644 --- a/goldens/material/radio/index.api.md +++ b/goldens/material/radio/index.api.md @@ -21,9 +21,6 @@ import { QueryList } from '@angular/core'; // @public (undocumented) export const MAT_RADIO_DEFAULT_OPTIONS: InjectionToken; -// @public @deprecated -export function MAT_RADIO_DEFAULT_OPTIONS_FACTORY(): MatRadioDefaultOptions; - // @public export const MAT_RADIO_GROUP: InjectionToken; diff --git a/src/material/radio/radio.ts b/src/material/radio/radio.ts index 7a545cdd0f33..5b81743aaaf1 100644 --- a/src/material/radio/radio.ts +++ b/src/material/radio/radio.ts @@ -94,22 +94,13 @@ export const MAT_RADIO_DEFAULT_OPTIONS = new InjectionToken ({ + color: 'accent', + disabledInteractive: false, + }), }, ); -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_RADIO_DEFAULT_OPTIONS_FACTORY(): MatRadioDefaultOptions { - return { - color: 'accent', - disabledInteractive: false, - }; -} - /** * A group of radio buttons. May contain one or more `` elements. */ From 75327e79a75c7d70b123d0e5128b44e49790e7e8 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:39:49 +0200 Subject: [PATCH 14/24] fix(material/select): remove deprecated factory functions Removes factory functions that we had marked as deprecated for v21. These functions aren't necessary since we switched to standalone. BREAKING CHANGE: * `MAT_SELECT_SCROLL_STRATEGY_PROVIDER` has been removed. * `MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY` has been removed. --- goldens/material/select/index.api.md | 10 ---------- src/material/select/select-module.ts | 3 +-- src/material/select/select.ts | 23 ----------------------- 3 files changed, 1 insertion(+), 35 deletions(-) diff --git a/goldens/material/select/index.api.md b/goldens/material/select/index.api.md index 4ae879767e90..8e28335de857 100644 --- a/goldens/material/select/index.api.md +++ b/goldens/material/select/index.api.md @@ -48,16 +48,6 @@ export const MAT_SELECT_CONFIG: InjectionToken; // @public export const MAT_SELECT_SCROLL_STRATEGY: InjectionToken<() => ScrollStrategy>; -// @public @deprecated -export const MAT_SELECT_SCROLL_STRATEGY_PROVIDER: { - provide: InjectionToken<() => ScrollStrategy>; - deps: any[]; - useFactory: typeof MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY; -}; - -// @public @deprecated -export function MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY(_overlay: unknown): () => ScrollStrategy; - // @public export const MAT_SELECT_TRIGGER: InjectionToken; diff --git a/src/material/select/select-module.ts b/src/material/select/select-module.ts index 73719296f87e..3a66dfca883e 100644 --- a/src/material/select/select-module.ts +++ b/src/material/select/select-module.ts @@ -11,7 +11,7 @@ import {NgModule} from '@angular/core'; import {MatCommonModule, MatOptionModule} from '../core'; import {MatFormFieldModule} from '../form-field'; import {CdkScrollableModule} from '@angular/cdk/scrolling'; -import {MatSelect, MatSelectTrigger, MAT_SELECT_SCROLL_STRATEGY_PROVIDER} from './select'; +import {MatSelect, MatSelectTrigger} from './select'; @NgModule({ imports: [OverlayModule, MatOptionModule, MatCommonModule, MatSelect, MatSelectTrigger], @@ -23,6 +23,5 @@ import {MatSelect, MatSelectTrigger, MAT_SELECT_SCROLL_STRATEGY_PROVIDER} from ' MatOptionModule, MatCommonModule, ], - providers: [MAT_SELECT_SCROLL_STRATEGY_PROVIDER], }) export class MatSelectModule {} diff --git a/src/material/select/select.ts b/src/material/select/select.ts index daa407e433af..1252711bb9d6 100644 --- a/src/material/select/select.ts +++ b/src/material/select/select.ts @@ -105,18 +105,6 @@ export const MAT_SELECT_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrateg }, ); -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY( - _overlay: unknown, -): () => ScrollStrategy { - const injector = inject(Injector); - return () => createRepositionScrollStrategy(injector); -} - /** Object that can be used to configure the default options for the select module. */ export interface MatSelectConfig { /** Whether option centering should be disabled. */ @@ -147,17 +135,6 @@ export interface MatSelectConfig { /** Injection token that can be used to provide the default options the select module. */ export const MAT_SELECT_CONFIG = new InjectionToken('MAT_SELECT_CONFIG'); -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export const MAT_SELECT_SCROLL_STRATEGY_PROVIDER = { - provide: MAT_SELECT_SCROLL_STRATEGY, - deps: [] as any[], - useFactory: MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY, -}; - /** * Injection token that can be used to reference instances of `MatSelectTrigger`. It serves as * alternative token to the actual `MatSelectTrigger` class which could cause unnecessary From e361978f20e8fb9d4b8425facedede48b775c6fb Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:40:17 +0200 Subject: [PATCH 15/24] fix(material/sidenav): remove deprecated factory functions Removes factory functions that we had marked as deprecated for v21. These functions aren't necessary since we switched to standalone. BREAKING CHANGE: * `MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY` has been removed. --- goldens/material/sidenav/index.api.md | 3 --- src/material/sidenav/drawer.ts | 11 +---------- src/material/sidenav/public-api.ts | 1 - 3 files changed, 1 insertion(+), 14 deletions(-) diff --git a/goldens/material/sidenav/index.api.md b/goldens/material/sidenav/index.api.md index 93b5c4b73ebd..39973db8ab4b 100644 --- a/goldens/material/sidenav/index.api.md +++ b/goldens/material/sidenav/index.api.md @@ -25,9 +25,6 @@ import { Subject } from 'rxjs'; // @public export const MAT_DRAWER_DEFAULT_AUTOSIZE: InjectionToken; -// @public @deprecated -export function MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY(): boolean; - // @public export class MatDrawer implements AfterViewInit, OnDestroy { constructor(...args: unknown[]); diff --git a/src/material/sidenav/drawer.ts b/src/material/sidenav/drawer.ts index f3b288ef7f9c..dcf25a6845e4 100644 --- a/src/material/sidenav/drawer.ts +++ b/src/material/sidenav/drawer.ts @@ -70,7 +70,7 @@ export const MAT_DRAWER_DEFAULT_AUTOSIZE = new InjectionToken( 'MAT_DRAWER_DEFAULT_AUTOSIZE', { providedIn: 'root', - factory: MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY, + factory: () => false, }, ); @@ -80,15 +80,6 @@ export const MAT_DRAWER_DEFAULT_AUTOSIZE = new InjectionToken( */ export const MAT_DRAWER_CONTAINER = new InjectionToken('MAT_DRAWER_CONTAINER'); -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY(): boolean { - return false; -} - @Component({ selector: 'mat-drawer-content', template: '', diff --git a/src/material/sidenav/public-api.ts b/src/material/sidenav/public-api.ts index b1b86b4a9675..867b82d25c9a 100644 --- a/src/material/sidenav/public-api.ts +++ b/src/material/sidenav/public-api.ts @@ -11,7 +11,6 @@ export { throwMatDuplicatedDrawerError, MatDrawerToggleResult, MAT_DRAWER_DEFAULT_AUTOSIZE, - MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY, MatDrawerContent, MatDrawer, MatDrawerContainer, From 22b073125c1ce2984d57720799e613da2a7a44c3 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:40:44 +0200 Subject: [PATCH 16/24] fix(material/snack-bar): remove deprecated factory functions Removes factory functions that we had marked as deprecated for v21. These functions aren't necessary since we switched to standalone. BREAKING CHANGE: * `MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY` has been removed. --- goldens/material/snack-bar/index.api.md | 3 --- src/material/snack-bar/snack-bar.ts | 11 +---------- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/goldens/material/snack-bar/index.api.md b/goldens/material/snack-bar/index.api.md index c1c501fa3c36..1bdf3f96c5a9 100644 --- a/goldens/material/snack-bar/index.api.md +++ b/goldens/material/snack-bar/index.api.md @@ -37,9 +37,6 @@ export const MAT_SNACK_BAR_DATA: InjectionToken; // @public export const MAT_SNACK_BAR_DEFAULT_OPTIONS: InjectionToken>; -// @public @deprecated -export function MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY(): MatSnackBarConfig; - // @public export class MatSnackBar implements OnDestroy { constructor(...args: unknown[]); diff --git a/src/material/snack-bar/snack-bar.ts b/src/material/snack-bar/snack-bar.ts index 0b42da9d7a09..5ebca0059f8f 100644 --- a/src/material/snack-bar/snack-bar.ts +++ b/src/material/snack-bar/snack-bar.ts @@ -33,21 +33,12 @@ import {ComponentPortal, TemplatePortal} from '@angular/cdk/portal'; import {takeUntil} from 'rxjs/operators'; import {_animationsDisabled} from '../core'; -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY(): MatSnackBarConfig { - return new MatSnackBarConfig(); -} - /** Injection token that can be used to specify default snack bar. */ export const MAT_SNACK_BAR_DEFAULT_OPTIONS = new InjectionToken( 'mat-snack-bar-default-options', { providedIn: 'root', - factory: MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY, + factory: () => new MatSnackBarConfig(), }, ); From d65fc84329dd3ff752d3590a655e3dda83cf4bb9 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:41:12 +0200 Subject: [PATCH 17/24] fix(material/sort): remove deprecated factory functions Removes factory functions that we had marked as deprecated for v21. These functions aren't necessary since we switched to standalone. BREAKING CHANGE: * `MAT_SORT_HEADER_INTL_PROVIDER` has been removed. * `MAT_SORT_HEADER_INTL_PROVIDER_FACTORY` has been removed. --- goldens/material/sort/index.api.md | 11 ----------- src/material/sort/sort-header-intl.ts | 23 +---------------------- src/material/sort/sort-module.ts | 2 -- 3 files changed, 1 insertion(+), 35 deletions(-) diff --git a/goldens/material/sort/index.api.md b/goldens/material/sort/index.api.md index 46e19b68dba1..3f99f68ae763 100644 --- a/goldens/material/sort/index.api.md +++ b/goldens/material/sort/index.api.md @@ -13,7 +13,6 @@ import { Observable } from 'rxjs'; import { OnChanges } from '@angular/core'; import { OnDestroy } from '@angular/core'; import { OnInit } from '@angular/core'; -import { Optional } from '@angular/core'; import { Subject } from 'rxjs'; // @public @deprecated @@ -30,16 +29,6 @@ export interface ArrowViewStateTransition { // @public export const MAT_SORT_DEFAULT_OPTIONS: InjectionToken; -// @public @deprecated -export const MAT_SORT_HEADER_INTL_PROVIDER: { - provide: typeof MatSortHeaderIntl; - deps: Optional[][]; - useFactory: typeof MAT_SORT_HEADER_INTL_PROVIDER_FACTORY; -}; - -// @public @deprecated -export function MAT_SORT_HEADER_INTL_PROVIDER_FACTORY(parentIntl: MatSortHeaderIntl): MatSortHeaderIntl; - // @public export class MatSort implements OnChanges, OnDestroy, OnInit { constructor(_defaultOptions?: MatSortDefaultOptions | undefined); diff --git a/src/material/sort/sort-header-intl.ts b/src/material/sort/sort-header-intl.ts index a8b666831890..c275a4cca2ed 100644 --- a/src/material/sort/sort-header-intl.ts +++ b/src/material/sort/sort-header-intl.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import {Injectable, SkipSelf, Optional} from '@angular/core'; +import {Injectable} from '@angular/core'; import {Subject} from 'rxjs'; /** @@ -21,24 +21,3 @@ export class MatSortHeaderIntl { */ readonly changes: Subject = new Subject(); } - -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_SORT_HEADER_INTL_PROVIDER_FACTORY(parentIntl: MatSortHeaderIntl) { - return parentIntl || new MatSortHeaderIntl(); -} - -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export const MAT_SORT_HEADER_INTL_PROVIDER = { - // If there is already an MatSortHeaderIntl available, use that. Otherwise, provide a new one. - provide: MatSortHeaderIntl, - deps: [[new Optional(), new SkipSelf(), MatSortHeaderIntl]], - useFactory: MAT_SORT_HEADER_INTL_PROVIDER_FACTORY, -}; diff --git a/src/material/sort/sort-module.ts b/src/material/sort/sort-module.ts index 2a5cbd6dc036..ba0725caa649 100644 --- a/src/material/sort/sort-module.ts +++ b/src/material/sort/sort-module.ts @@ -9,12 +9,10 @@ import {NgModule} from '@angular/core'; import {MatSortHeader} from './sort-header'; import {MatSort} from './sort'; -import {MAT_SORT_HEADER_INTL_PROVIDER} from './sort-header-intl'; import {MatCommonModule} from '../core'; @NgModule({ imports: [MatCommonModule, MatSort, MatSortHeader], exports: [MatSort, MatSortHeader], - providers: [MAT_SORT_HEADER_INTL_PROVIDER], }) export class MatSortModule {} From b9c8494ec59e1e4c71bf1401aab4be23b1893293 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:41:42 +0200 Subject: [PATCH 18/24] fix(material/stepper): remove deprecated factory functions Removes factory functions that we had marked as deprecated for v21. These functions aren't necessary since we switched to standalone. BREAKING CHANGE: * `MAT_STEPPER_INTL_PROVIDER` has been removed. * `MAT_STEPPER_INTL_PROVIDER_FACTORY` has been removed. --- goldens/material/stepper/index.api.md | 11 ----------- src/material/stepper/stepper-intl.ts | 22 +--------------------- src/material/stepper/stepper-module.ts | 3 +-- 3 files changed, 2 insertions(+), 34 deletions(-) diff --git a/goldens/material/stepper/index.api.md b/goldens/material/stepper/index.api.md index 12e2eb9d57ee..e9b9f7a85c3a 100644 --- a/goldens/material/stepper/index.api.md +++ b/goldens/material/stepper/index.api.md @@ -25,7 +25,6 @@ import * as i3 from '@angular/cdk/portal'; import { NgForm } from '@angular/forms'; import { OnDestroy } from '@angular/core'; import { OnInit } from '@angular/core'; -import { Optional } from '@angular/core'; import { QueryList } from '@angular/core'; import { StepperOrientation } from '@angular/cdk/stepper'; import { StepState } from '@angular/cdk/stepper'; @@ -33,16 +32,6 @@ import { Subject } from 'rxjs'; import { TemplatePortal } from '@angular/cdk/portal'; import { TemplateRef } from '@angular/core'; -// @public @deprecated -export const MAT_STEPPER_INTL_PROVIDER: { - provide: typeof MatStepperIntl; - deps: Optional[][]; - useFactory: typeof MAT_STEPPER_INTL_PROVIDER_FACTORY; -}; - -// @public @deprecated -export function MAT_STEPPER_INTL_PROVIDER_FACTORY(parentIntl: MatStepperIntl): MatStepperIntl; - // @public (undocumented) export class MatStep extends CdkStep implements ErrorStateMatcher, AfterContentInit, OnDestroy { color: ThemePalette; diff --git a/src/material/stepper/stepper-intl.ts b/src/material/stepper/stepper-intl.ts index 436fdeb883aa..30063db9f6d1 100644 --- a/src/material/stepper/stepper-intl.ts +++ b/src/material/stepper/stepper-intl.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import {Injectable, Optional, SkipSelf} from '@angular/core'; +import {Injectable} from '@angular/core'; import {Subject} from 'rxjs'; /** Stepper data that is required for internationalization. */ @@ -27,23 +27,3 @@ export class MatStepperIntl { /** Label that is used to indicate step as editable to screen readers. */ editableLabel: string = 'Editable'; } - -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_STEPPER_INTL_PROVIDER_FACTORY(parentIntl: MatStepperIntl) { - return parentIntl || new MatStepperIntl(); -} - -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export const MAT_STEPPER_INTL_PROVIDER = { - provide: MatStepperIntl, - deps: [[new Optional(), new SkipSelf(), MatStepperIntl]], - useFactory: MAT_STEPPER_INTL_PROVIDER_FACTORY, -}; diff --git a/src/material/stepper/stepper-module.ts b/src/material/stepper/stepper-module.ts index 5ce882afc479..36802120a22c 100644 --- a/src/material/stepper/stepper-module.ts +++ b/src/material/stepper/stepper-module.ts @@ -16,7 +16,6 @@ import {MatStepLabel} from './step-label'; import {MatStep, MatStepper} from './stepper'; import {MatStepperNext, MatStepperPrevious} from './stepper-button'; import {MatStepperIcon} from './stepper-icon'; -import {MAT_STEPPER_INTL_PROVIDER} from './stepper-intl'; import {MatStepContent} from './step-content'; @NgModule({ @@ -46,6 +45,6 @@ import {MatStepContent} from './step-content'; MatStepperIcon, MatStepContent, ], - providers: [MAT_STEPPER_INTL_PROVIDER, ErrorStateMatcher], + providers: [ErrorStateMatcher], }) export class MatStepperModule {} From aca50858dba3589d138bf8502f0e812ca34fd73e Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:42:06 +0200 Subject: [PATCH 19/24] fix(material/tabs): remove deprecated factory functions Removes factory functions that we had marked as deprecated for v21. These functions aren't necessary since we switched to standalone. BREAKING CHANGE: * `_MAT_INK_BAR_POSITIONER_FACTORY` has been removed. --- goldens/material/tabs/index.api.md | 3 --- src/material/tabs/ink-bar.ts | 24 ++++++++---------------- src/material/tabs/public-api.ts | 7 +------ 3 files changed, 9 insertions(+), 25 deletions(-) diff --git a/goldens/material/tabs/index.api.md b/goldens/material/tabs/index.api.md index 1517c7c19e75..a7cecce5b14c 100644 --- a/goldens/material/tabs/index.api.md +++ b/goldens/material/tabs/index.api.md @@ -32,9 +32,6 @@ import { TemplateRef } from '@angular/core'; // @public export const _MAT_INK_BAR_POSITIONER: InjectionToken<_MatInkBarPositioner>; -// @public @deprecated -export function _MAT_INK_BAR_POSITIONER_FACTORY(): _MatInkBarPositioner; - // @public export const MAT_TAB: InjectionToken; diff --git a/src/material/tabs/ink-bar.ts b/src/material/tabs/ink-bar.ts index cadbee81ec08..b07d8fafcc16 100644 --- a/src/material/tabs/ink-bar.ts +++ b/src/material/tabs/ink-bar.ts @@ -189,26 +189,18 @@ export interface _MatInkBarPositioner { (element: HTMLElement): {left: string; width: string}; } -/** - * The default positioner function for the MatInkBar. - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function _MAT_INK_BAR_POSITIONER_FACTORY(): _MatInkBarPositioner { - const method = (element: HTMLElement) => ({ - left: element ? (element.offsetLeft || 0) + 'px' : '0', - width: element ? (element.offsetWidth || 0) + 'px' : '0', - }); - - return method; -} - /** Injection token for the MatInkBar's Positioner. */ export const _MAT_INK_BAR_POSITIONER = new InjectionToken<_MatInkBarPositioner>( 'MatInkBarPositioner', { providedIn: 'root', - factory: _MAT_INK_BAR_POSITIONER_FACTORY, + factory: () => { + const method = (element: HTMLElement) => ({ + left: element ? (element.offsetLeft || 0) + 'px' : '0', + width: element ? (element.offsetWidth || 0) + 'px' : '0', + }); + + return method; + }, }, ); diff --git a/src/material/tabs/public-api.ts b/src/material/tabs/public-api.ts index 6ee1c59cafee..ed8772bac441 100644 --- a/src/material/tabs/public-api.ts +++ b/src/material/tabs/public-api.ts @@ -18,12 +18,7 @@ export {MatTabsConfig, MAT_TABS_CONFIG} from './tab-config'; export {MatTabContent, MAT_TAB_CONTENT} from './tab-content'; export {MatTabLabel, MAT_TAB, MAT_TAB_LABEL} from './tab-label'; export {MatTab, MAT_TAB_GROUP} from './tab'; -export { - MatInkBar, - _MatInkBarPositioner, - _MAT_INK_BAR_POSITIONER_FACTORY, - _MAT_INK_BAR_POSITIONER, -} from './ink-bar'; +export {MatInkBar, _MatInkBarPositioner, _MAT_INK_BAR_POSITIONER} from './ink-bar'; export {MatTabHeader} from './tab-header'; export { MatTabGroup, From 681916986383b1ea2e23f8648d48960eb1a4d364 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:43:02 +0200 Subject: [PATCH 20/24] fix(material/tooltip): remove deprecated factory functions Removes factory functions that we had marked as deprecated for v21. These functions aren't necessary since we switched to standalone. BREAKING CHANGE: * `MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY` has been removed. * `MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY` has been removed. * `MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER` has been removed. --- goldens/material/tooltip/index.api.md | 13 --------- src/material/tooltip/tooltip-module.ts | 7 +---- src/material/tooltip/tooltip.ts | 40 ++++---------------------- 3 files changed, 6 insertions(+), 54 deletions(-) diff --git a/goldens/material/tooltip/index.api.md b/goldens/material/tooltip/index.api.md index ba0580769d09..6e3aba623b08 100644 --- a/goldens/material/tooltip/index.api.md +++ b/goldens/material/tooltip/index.api.md @@ -29,22 +29,9 @@ export function getMatTooltipInvalidPositionError(position: string): Error; // @public export const MAT_TOOLTIP_DEFAULT_OPTIONS: InjectionToken; -// @public @deprecated -export function MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY(): MatTooltipDefaultOptions; - // @public export const MAT_TOOLTIP_SCROLL_STRATEGY: InjectionToken<() => ScrollStrategy>; -// @public @deprecated -export function MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY(_overlay: unknown): () => ScrollStrategy; - -// @public @deprecated -export const MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER: { - provide: InjectionToken<() => ScrollStrategy>; - deps: any[]; - useFactory: typeof MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY; -}; - // @public export class MatTooltip implements OnDestroy, AfterViewInit { constructor(...args: unknown[]); diff --git a/src/material/tooltip/tooltip-module.ts b/src/material/tooltip/tooltip-module.ts index 6ac91476bea1..6e630dfb24cf 100644 --- a/src/material/tooltip/tooltip-module.ts +++ b/src/material/tooltip/tooltip-module.ts @@ -11,15 +11,10 @@ import {A11yModule} from '@angular/cdk/a11y'; import {OverlayModule} from '@angular/cdk/overlay'; import {CdkScrollableModule} from '@angular/cdk/scrolling'; import {MatCommonModule} from '../core'; -import { - MatTooltip, - TooltipComponent, - MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER, -} from './tooltip'; +import {MatTooltip, TooltipComponent} from './tooltip'; @NgModule({ imports: [A11yModule, OverlayModule, MatCommonModule, MatTooltip, TooltipComponent], exports: [MatTooltip, TooltipComponent, MatCommonModule, CdkScrollableModule], - providers: [MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER], }) export class MatTooltipModule {} diff --git a/src/material/tooltip/tooltip.ts b/src/material/tooltip/tooltip.ts index 55e3e3e42272..7245a9bd7abf 100644 --- a/src/material/tooltip/tooltip.ts +++ b/src/material/tooltip/tooltip.ts @@ -90,46 +90,16 @@ export const MAT_TOOLTIP_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrate }, ); -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY(_overlay: unknown): () => ScrollStrategy { - const injector = inject(Injector); - return () => createRepositionScrollStrategy(injector, {scrollThrottle: SCROLL_THROTTLE_MS}); -} - -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export const MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER = { - provide: MAT_TOOLTIP_SCROLL_STRATEGY, - deps: [] as any[], - useFactory: MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY, -}; - -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY(): MatTooltipDefaultOptions { - return { - showDelay: 0, - hideDelay: 0, - touchendHideDelay: 1500, - }; -} - /** Injection token to be used to override the default options for `matTooltip`. */ export const MAT_TOOLTIP_DEFAULT_OPTIONS = new InjectionToken( 'mat-tooltip-default-options', { providedIn: 'root', - factory: MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY, + factory: () => ({ + showDelay: 0, + hideDelay: 0, + touchendHideDelay: 1500, + }), }, ); From 40dd741101e7c5fb72318f6a1fe5ab88b6d86622 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:47:28 +0200 Subject: [PATCH 21/24] fix(material-luxon-adapter): remove deprecated factory functions Removes factory functions that we had marked as deprecated for v21. These functions aren't necessary since we switched to standalone. BREAKING CHANGE: * `MAT_LUXON_DATE_ADAPTER_OPTIONS_FACTORY` has been removed. --- .../adapter/luxon-date-adapter.ts | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/src/material-luxon-adapter/adapter/luxon-date-adapter.ts b/src/material-luxon-adapter/adapter/luxon-date-adapter.ts index 30d473b764b8..b0a7b26cd805 100644 --- a/src/material-luxon-adapter/adapter/luxon-date-adapter.ts +++ b/src/material-luxon-adapter/adapter/luxon-date-adapter.ts @@ -41,22 +41,13 @@ export const MAT_LUXON_DATE_ADAPTER_OPTIONS = new InjectionToken ({ + useUtc: false, + defaultOutputCalendar: 'gregory', + }), }, ); -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_LUXON_DATE_ADAPTER_OPTIONS_FACTORY(): MatLuxonDateAdapterOptions { - return { - useUtc: false, - defaultOutputCalendar: 'gregory', - }; -} - /** Creates an array and fills it with values. */ function range(length: number, valueFunction: (index: number) => T): T[] { const valuesArray = Array(length); From b991a7f41eb2097ca90ae3549f6ca474405261aa Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:47:59 +0200 Subject: [PATCH 22/24] fix(material-moment-adapter): remove deprecated factory functions Removes factory functions that we had marked as deprecated for v21. These functions aren't necessary since we switched to standalone. BREAKING CHANGE: * `MAT_MOMENT_DATE_ADAPTER_OPTIONS_FACTORY` has been removed. --- .../adapter/moment-date-adapter.ts | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/material-moment-adapter/adapter/moment-date-adapter.ts b/src/material-moment-adapter/adapter/moment-date-adapter.ts index f1b4ac96aff5..29a8c557d9ed 100644 --- a/src/material-moment-adapter/adapter/moment-date-adapter.ts +++ b/src/material-moment-adapter/adapter/moment-date-adapter.ts @@ -40,21 +40,10 @@ export const MAT_MOMENT_DATE_ADAPTER_OPTIONS = new InjectionToken ({useUtc: false}), }, ); -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function MAT_MOMENT_DATE_ADAPTER_OPTIONS_FACTORY(): MatMomentDateAdapterOptions { - return { - useUtc: false, - }; -} - /** Creates an array and fills it with values. */ function range(length: number, valueFunction: (index: number) => T): T[] { const valuesArray = Array(length); From b15f3be01995232a2d2932b04d3d1913dbb4fff2 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:48:42 +0200 Subject: [PATCH 23/24] refactor(cdk/bidi): remove unnecessary factory Inlines a factory constant that doesn't need to be separate from its token definition. --- src/cdk/bidi/dir-document-token.ts | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/cdk/bidi/dir-document-token.ts b/src/cdk/bidi/dir-document-token.ts index 03296028378a..0c9601c6b68c 100644 --- a/src/cdk/bidi/dir-document-token.ts +++ b/src/cdk/bidi/dir-document-token.ts @@ -25,14 +25,5 @@ import {inject, InjectionToken, DOCUMENT} from '@angular/core'; */ export const DIR_DOCUMENT = new InjectionToken('cdk-dir-doc', { providedIn: 'root', - factory: DIR_DOCUMENT_FACTORY, + factory: () => inject(DOCUMENT), }); - -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function DIR_DOCUMENT_FACTORY(): Document { - return inject(DOCUMENT); -} From 10313d3bf962dfceab37bacc734268345a6cc11b Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Mon, 1 Sep 2025 09:49:08 +0200 Subject: [PATCH 24/24] refactor(cdk/overlay): remove unnecessary providers Removes a couple of providers that aren't necessary anymore after the switch to standalone. --- src/cdk/overlay/overlay-directives.ts | 28 +-------------------------- src/cdk/overlay/overlay-module.ts | 8 ++------ 2 files changed, 3 insertions(+), 33 deletions(-) diff --git a/src/cdk/overlay/overlay-directives.ts b/src/cdk/overlay/overlay-directives.ts index 48a1a1a57a95..e02271f23310 100644 --- a/src/cdk/overlay/overlay-directives.ts +++ b/src/cdk/overlay/overlay-directives.ts @@ -39,11 +39,7 @@ import { FlexibleConnectedPositionStrategy, FlexibleConnectedPositionStrategyOrigin, } from './position/flexible-connected-position-strategy'; -import { - createRepositionScrollStrategy, - RepositionScrollStrategy, - ScrollStrategy, -} from './scroll/index'; +import {createRepositionScrollStrategy, ScrollStrategy} from './scroll/index'; /** Default set of positions for the overlay. Follows the behavior of a dropdown. */ const defaultPositionList: ConnectedPosition[] = [ @@ -462,25 +458,3 @@ export class CdkConnectedOverlay implements OnDestroy, OnChanges { this.open = false; } } - -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export function CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY( - overlay: unknown, -): () => RepositionScrollStrategy { - const injector = inject(Injector); - return () => createRepositionScrollStrategy(injector); -} - -/** - * @docs-private - * @deprecated No longer used, will be removed. - * @breaking-change 21.0.0 - */ -export const CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER = { - provide: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY, - useFactory: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY, -}; diff --git a/src/cdk/overlay/overlay-module.ts b/src/cdk/overlay/overlay-module.ts index ef50725235cd..2924a7f9b9ae 100644 --- a/src/cdk/overlay/overlay-module.ts +++ b/src/cdk/overlay/overlay-module.ts @@ -11,16 +11,12 @@ import {PortalModule} from '../portal'; import {ScrollingModule} from '../scrolling'; import {NgModule} from '@angular/core'; import {Overlay} from './overlay'; -import { - CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER, - CdkConnectedOverlay, - CdkOverlayOrigin, -} from './overlay-directives'; +import {CdkConnectedOverlay, CdkOverlayOrigin} from './overlay-directives'; @NgModule({ imports: [BidiModule, PortalModule, ScrollingModule, CdkConnectedOverlay, CdkOverlayOrigin], exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule], - providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER], + providers: [Overlay], }) export class OverlayModule {}