Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
443f11e
build: update all github actions (#31953)
angular-robot Oct 1, 2025
c59a956
build: update rules_angular digest to c3721b6 (#31957)
angular-robot Oct 1, 2025
8e6f67d
fix(material/menu): prevent child menu reopening while parent is anim…
crisbeto Oct 1, 2025
53d1c6a
fix(material/paginator): trim extraneous announcements (#31943)
adolgachev Oct 1, 2025
ee422ae
docs: release notes for the v20.2.7 release
mmalerba Oct 1, 2025
fbf2cdd
release: cut the v21.0.0-next.6 release
mmalerba Oct 1, 2025
470c881
build: convert approve-api-golden and run-component-tests scripts to …
lekhmanrus Oct 2, 2025
de1f09c
fix(material/datepicker): error due to synchronous change detection
crisbeto Oct 2, 2025
fe8928e
refactor(material/datepicker): convert internal calendar state to sig…
crisbeto Oct 2, 2025
c8a4b74
build: create angular aria package (#31942)
wagnermaciel Oct 2, 2025
1f42a4f
docs: inject services with recommended API and use takeUntilDestroyed…
MeAkib Oct 2, 2025
bbb445d
feat(cdk/overlay): Allow passing separate X and Y values for the view…
LukeyBeachBoy Oct 2, 2025
1d38048
fix(material/menu): fix divider color property (#31815)
tonyruscoe Oct 2, 2025
e671c5f
build: fix snapshots job (#31977)
crisbeto Oct 2, 2025
be636ad
build: update cross-repo angular dependencies to v21.0.0-next.6 (#31974)
angular-robot Oct 2, 2025
9bad76b
fix(material-date-fns-adapter): parse time string containing only hou…
lekhmanrus Oct 2, 2025
dd3ce12
fix(material/timepicker): assign form control value before emitting e…
crisbeto Oct 3, 2025
3f67d4f
fix(material/datepicker): make date filter nullable (#31980)
crisbeto Oct 3, 2025
5765b3b
feat(material/bottom-sheet): add injector to MatBottomSheetConfig (#3…
lekhmanrus Oct 3, 2025
0475e25
build: update cross-repo angular dependencies to v21.0.0-next.6 (#31982)
angular-robot Oct 3, 2025
7681972
docs(material/list): single selection example (#31990)
lekhmanrus Oct 5, 2025
1472f84
build: remove unnecessary file from Stackblitz template
crisbeto Oct 3, 2025
fb0c2a3
build: fix Stackblitz examples on Firefox
crisbeto Oct 3, 2025
779d734
build: open correct file in Stackblitz editor
crisbeto Oct 3, 2025
bfc5b6c
build: test-based Stackblitz examples not working
crisbeto Oct 4, 2025
cf23c10
build: lock file maintenance (#31994)
angular-robot Oct 6, 2025
aee02ab
build: update github/codeql-action action to v3.30.6 (#31992)
angular-robot Oct 6, 2025
74708cc
build: update pnpm to v10.18.0 (#31986)
angular-robot Oct 6, 2025
3ec080d
build: update cross-repo angular dependencies (#32001)
angular-robot Oct 6, 2025
a7cc6ae
build: update dependency firebase-tools to v14.18.0 (#31985)
angular-robot Oct 6, 2025
02436c9
docs: replace '|' with '•' in title separator for consistency with An…
MeAkib Oct 8, 2025
5de00dd
build: update cross-repo angular dependencies (#32009)
angular-robot Oct 8, 2025
8a08782
build: update dependency jasmine-core to v5.12.0 (#32006)
angular-robot Oct 8, 2025
08c79ef
build: update pnpm to v10.18.1 (#32005)
angular-robot Oct 8, 2025
b2e14ac
build: update github/codeql-action action to v3.30.7 (#32017)
angular-robot Oct 8, 2025
27298f0
docs: release notes for the v20.2.8 release
crisbeto Oct 8, 2025
bc9fba1
release: cut the v21.0.0-next.7 release
crisbeto Oct 8, 2025
333d1b2
build: update github/codeql-action action to v4 (#32019)
angular-robot Oct 8, 2025
7da7949
release: cut the v21.0.0-next.8 release
crisbeto Oct 8, 2025
8cf2e9e
docs: switch datepicker examples to Luxon (#32008)
crisbeto Oct 8, 2025
a8ec416
docs: remove inaccurate note from focus monitor docs (#31991)
crisbeto Oct 8, 2025
7cb40ec
feat(material/sort): add content projection slot for custom icon (#32…
crisbeto Oct 8, 2025
65b3855
fix(material/snack-bar): add max height for snack bar (#32000)
crisbeto Oct 8, 2025
a4b1397
build: update cross-repo angular dependencies (#32028)
angular-robot Oct 8, 2025
888a62c
docs: use takeUntilDestroyed for cleanup instead of manual subscripti…
MeAkib Oct 8, 2025
35d0d19
docs: make nav tabs sticky for easier navigation while scrolling (#32…
MeAkib Oct 8, 2025
1bbbbd2
build: add package_deps to aria package (#32040)
crisbeto Oct 9, 2025
9d8d3ba
build: update dependency bazel to v7.6.2 (#32038)
angular-robot Oct 9, 2025
11e5a96
build: update cross-repo angular dependencies (#32041)
angular-robot Oct 9, 2025
71beab6
refactor: remove redundant 'this' for cleaner templates (#32035)
lekhmanrus Oct 9, 2025
09b037d
docs: add StackBlitz to provide live example (#32034)
MeAkib Oct 9, 2025
2622745
docs: menu items consistency (#32046)
lekhmanrus Oct 9, 2025
6e81dd9
docs: fix nav tabs overlapping (#32043)
lekhmanrus Oct 9, 2025
0ae49e7
build: update all non-major dependencies (#32049)
angular-robot Oct 10, 2025
84791db
docs: sync border-radius with by replacing --mat-sys-corner-large to …
MeAkib Oct 10, 2025
e049e10
fix(material/timepicker): add interface for timepicker input (#32050)
crisbeto Oct 10, 2025
f2b218e
build: update pnpm to v10.18.2 (#32055)
angular-robot Oct 12, 2025
98e07dd
build: update github/codeql-action action to v4.30.8 (#32061)
angular-robot Oct 12, 2025
48077ce
fix(cdk/testing): make setContenteditableValue required (#32058)
crisbeto Oct 12, 2025
c9075bb
fix(material/checkbox): use GrayText for disabled colors in high cont…
crisbeto Oct 14, 2025
729e857
build: update to latest version of lighthouse (#32063)
crisbeto Oct 14, 2025
23d10c0
build: update cross-repo angular dependencies (#32069)
angular-robot Oct 14, 2025
c432fe5
feat(material/table): add harness for "no data" row (#32075)
crisbeto Oct 15, 2025
3a1cd9e
refactor(aria/tree): remove tree group wrapper (#32079)
ok7sai Oct 15, 2025
d748e68
docs: release notes for the v20.2.9 release
andrewseguin Oct 15, 2025
626a1e8
release: cut the v21.0.0-next.9 release
andrewseguin Oct 15, 2025
1f03f70
fix(material/core): differentiate container colors in m2 (#32076)
andrewseguin Oct 15, 2025
7c3b21f
build: update cross-repo angular dependencies (#32077)
angular-robot Oct 15, 2025
399989c
build: update pnpm to v10.18.3 (#32081)
angular-robot Oct 15, 2025
ce291b7
build: update bazel dependencies (#31971)
angular-robot Oct 15, 2025
c5b2d85
refactor(multiple): remove unnecessary fields from examples (#32083)
crisbeto Oct 16, 2025
73656b2
build: update cross-repo angular dependencies to v21.0.0-next.8 (#32091)
angular-robot Oct 16, 2025
ad1e033
fix(aria/ui-patterns): internal conformance fixes (#32102)
wagnermaciel Oct 16, 2025
7c24fa8
build: update to latest luxon (#32098)
crisbeto Oct 17, 2025
f5aff35
build: fix leaking styles from aria (#32103)
crisbeto Oct 17, 2025
3ebff24
build: update cross-repo angular dependencies (#32099)
angular-robot Oct 17, 2025
d3d2db8
build: update all non-major dependencies (#32094)
angular-robot Oct 17, 2025
c8e6352
fix(material/core): rename corner extra-small to xs (#32101)
andrewseguin Oct 17, 2025
1ba5e42
refactor(cdk/overlay): clarify usage of dimensions v.s. placement
adolgachev Oct 14, 2025
7a4207d
feat(cdk/overlay): Add option to insert overlay after an element inst…
adolgachev Oct 14, 2025
543c836
feat(cdk/menu): add option to enable inlined overlay
adolgachev Oct 16, 2025
45fcf63
feat(material/autocomplete): add option to enable inlined overlay
adolgachev Oct 16, 2025
7dd5a98
feat(material/menu): add option to enable inlined overlay
adolgachev Oct 16, 2025
f904ea9
Merge branch 'angular:main' into menu
adolgachev Oct 19, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/cdk/menu/menu-trigger-base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,11 @@ export abstract class CdkMenuTriggerBase implements OnDestroy {
*/
menuPosition: ConnectedPosition[];

/**
* Whether to inline the overlay, instead of using the global overlay container.
*/
menuOverlayInlined: boolean;

/** Emits when the attached menu is requested to open */
readonly opened: EventEmitter<void> = new EventEmitter();

Expand Down
3 changes: 3 additions & 0 deletions src/cdk/menu/menu-trigger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import {
OnDestroy,
Renderer2,
SimpleChanges,
booleanAttribute,
} from '@angular/core';
import {InputModalityDetector} from '../a11y';
import {Directionality} from '../bidi';
Expand Down Expand Up @@ -68,6 +69,7 @@ import {eventDispatchesNativeClick} from './event-detection';
inputs: [
{name: 'menuTemplateRef', alias: 'cdkMenuTriggerFor'},
{name: 'menuPosition', alias: 'cdkMenuPosition'},
{name: 'menuOverlayInlined', alias: 'cdkMenuOverlayInlined', transform: booleanAttribute},
{name: 'menuData', alias: 'cdkMenuTriggerData'},
],
outputs: ['opened: cdkMenuOpened', 'closed: cdkMenuClosed'],
Expand Down Expand Up @@ -276,6 +278,7 @@ export class CdkMenuTrigger extends CdkMenuTriggerBase implements OnChanges, OnD
positionStrategy: this._getOverlayPositionStrategy(),
scrollStrategy: this.menuScrollStrategy(),
direction: this._directionality || undefined,
insertOverlayAfter: this.menuOverlayInlined ? this._elementRef : undefined,
});
}

Expand Down
4 changes: 4 additions & 0 deletions src/cdk/overlay/overlay-config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/

import {ElementRef} from '@angular/core';
import {PositionStrategy} from './position/position-strategy';
import {Direction, Directionality} from '../bidi';
import {ScrollStrategy, NoopScrollStrategy} from './scroll/index';
Expand All @@ -30,6 +31,9 @@ export class OverlayConfig {
/** Whether to disable any built-in animations. */
disableAnimations?: boolean;

/** If specified, insert overlay after this element, instead of using the global overlay container. */
insertOverlayAfter?: ElementRef;

/** The width of the overlay panel. If a number is provided, pixel units are assumed. */
width?: number | string;

Expand Down
12 changes: 10 additions & 2 deletions src/cdk/overlay/overlay.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,21 @@ export function createOverlayRef(injector: Injector, config?: OverlayConfig): Ov
const appRef = injector.get(ApplicationRef);
const directionality = injector.get(Directionality);

// Create the overlay pane and a parent which will then be attached to the document.
const host = doc.createElement('div');
const pane = doc.createElement('div');

pane.id = idGenerator.getId('cdk-overlay-');
pane.classList.add('cdk-overlay-pane');
host.appendChild(pane);
overlayContainer.getContainerElement().appendChild(host);

// Insert after the specified element, or onto the global overlay container.
if (config?.insertOverlayAfter) {
const element = config.insertOverlayAfter.nativeElement;
element.after(host);
element.parentElement.style.position = 'relative';
} else {
overlayContainer.getContainerElement().appendChild(host);
}

const portalOutlet = new DomPortalOutlet(pane, appRef, injector);
const overlayConfig = new OverlayConfig(config);
Expand Down
58 changes: 36 additions & 22 deletions src/cdk/overlay/position/flexible-connected-position-strategy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,11 @@ export type FlexibleConnectedPositionStrategyOrigin =
height?: number;
});

/** Equivalent of `DOMRect` without some of the properties we don't care about. */
type Dimensions = Omit<DOMRect, 'x' | 'y' | 'toJSON'>;
/** Refinement of `DOMRect` when only width/height and position (l, r, t, b) are needed. */
type Rect = Omit<DOMRect, 'x' | 'y' | 'toJSON'>;

/** Further refinement of above for when only the dimensions are needed. */
type Dimensions = Omit<Rect, 'left' | 'top' | 'right' | 'bottom'>;

/**
* Creates a flexible position strategy.
Expand Down Expand Up @@ -95,17 +98,17 @@ export class FlexibleConnectedPositionStrategy implements PositionStrategy {
/** Whether the overlay position is locked. */
private _positionLocked = false;

/** Cached origin dimensions */
private _originRect: Dimensions;
/** Cached origin placement and dimentsions. */
private _originRect: Rect;

/** Cached overlay dimensions */
private _overlayRect: Dimensions;
/** Cached overlay placement and dimensions */
private _overlayRect: Rect;

/** Cached viewport dimensions */
private _viewportRect: Dimensions;
/** Cached viewport placement and dimensions */
private _viewportRect: Rect;

/** Cached container dimensions */
private _containerRect: Dimensions;
/** Cached container placement and dimensions */
private _containerRect: Rect;

/** Amount of space that must be maintained between the overlay and the right edge of the viewport. */
private _viewportMargin: ViewportMargin = 0;
Expand Down Expand Up @@ -514,11 +517,7 @@ export class FlexibleConnectedPositionStrategy implements PositionStrategy {
/**
* Gets the (x, y) coordinate of a connection point on the origin based on a relative position.
*/
private _getOriginPoint(
originRect: Dimensions,
containerRect: Dimensions,
pos: ConnectedPosition,
): Point {
private _getOriginPoint(originRect: Rect, containerRect: Rect, pos: ConnectedPosition): Point {
let x: number;
if (pos.originX == 'center') {
// Note: when centering we should always use the `left`
Expand Down Expand Up @@ -582,6 +581,14 @@ export class FlexibleConnectedPositionStrategy implements PositionStrategy {
overlayStartY = pos.overlayY == 'top' ? 0 : -overlayRect.height;
}

// Adjust the overly position when it is placed inline relative to its parent.
const insertOverlayAfter = this._overlayRef.getConfig().insertOverlayAfter;
if (insertOverlayAfter) {
const rect = insertOverlayAfter!.nativeElement.getBoundingClientRect();
overlayStartX -= rect.left;
overlayStartY -= rect.top;
}

// The (x, y) coordinates of the overlay.
return {
x: originPoint.x + overlayStartX,
Expand All @@ -592,7 +599,7 @@ export class FlexibleConnectedPositionStrategy implements PositionStrategy {
/** Gets how well an overlay at the given point will fit within the viewport. */
private _getOverlayFit(
point: Point,
rawOverlayRect: Dimensions,
rawOverlayRect: Rect,
viewport: Dimensions,
position: ConnectedPosition,
): OverlayFit {
Expand Down Expand Up @@ -637,7 +644,7 @@ export class FlexibleConnectedPositionStrategy implements PositionStrategy {
* @param point The (x, y) coordinates of the overlay at some position.
* @param viewport The geometry of the viewport.
*/
private _canFitWithFlexibleDimensions(fit: OverlayFit, point: Point, viewport: Dimensions) {
private _canFitWithFlexibleDimensions(fit: OverlayFit, point: Point, viewport: Rect) {
if (this._hasFlexibleDimensions) {
const availableHeight = viewport.bottom - point.y;
const availableWidth = viewport.right - point.x;
Expand Down Expand Up @@ -667,7 +674,7 @@ export class FlexibleConnectedPositionStrategy implements PositionStrategy {
*/
private _pushOverlayOnScreen(
start: Point,
rawOverlayRect: Dimensions,
rawOverlayRect: Rect,
scrollPosition: ViewportScrollPosition,
): Point {
// If the position is locked and we've pushed the overlay already, reuse the previous push
Expand Down Expand Up @@ -890,7 +897,14 @@ export class FlexibleConnectedPositionStrategy implements PositionStrategy {
if (this._hasExactPosition()) {
styles.top = styles.left = '0';
styles.bottom = styles.right = styles.maxHeight = styles.maxWidth = '';
styles.width = styles.height = '100%';

if (this._overlayRef.getConfig().insertOverlayAfter) {
styles.width = coerceCssPixelValue(boundingBoxRect.width);
styles.height = coerceCssPixelValue(boundingBoxRect.height);
} else {
// TODO(andreyd): can most likley remove this for common case
styles.width = styles.height = '100%';
}
} else {
const maxHeight = this._overlayRef.getConfig().maxHeight;
const maxWidth = this._overlayRef.getConfig().maxWidth;
Expand Down Expand Up @@ -1113,7 +1127,7 @@ export class FlexibleConnectedPositionStrategy implements PositionStrategy {
}

/** Narrows the given viewport rect by the current _viewportMargin. */
private _getNarrowedViewportRect(): Dimensions {
private _getNarrowedViewportRect(): Rect {
// We recalculate the viewport rect here ourselves, rather than using the ViewportRuler,
// because we want to use the `clientWidth` and `clientHeight` as the base. The difference
// being that the client properties don't include the scrollbar, as opposed to `innerWidth`
Expand Down Expand Up @@ -1231,7 +1245,7 @@ export class FlexibleConnectedPositionStrategy implements PositionStrategy {
}

/** Returns the DOMRect of the current origin. */
private _getOriginRect(): Dimensions {
private _getOriginRect(): Rect {
const origin = this._origin;

if (origin instanceof ElementRef) {
Expand Down Expand Up @@ -1353,7 +1367,7 @@ function getPixelValue(input: number | string | null | undefined): number | null
* deviations in the `DOMRect` returned by the browser (e.g. when zoomed in with a percentage
* size, see #21350).
*/
function getRoundedBoundingClientRect(clientRect: Dimensions): Dimensions {
function getRoundedBoundingClientRect(clientRect: Rect): Rect {
return {
top: Math.floor(clientRect.top),
right: Math.floor(clientRect.right),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<!-- #docregion trigger -->
<button [cdkMenuTriggerFor]="menu" class="example-standalone-trigger">Click me!</button>
<button [cdkMenuTriggerFor]="menu" cdkMenuOverlayInlined class="example-standalone-trigger">Click me!</button>
<!-- #enddocregion trigger -->

<ng-template #menu>
Expand Down
4 changes: 3 additions & 1 deletion src/dev-app/autocomplete/autocomplete-demo.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#reactiveInput
matInput
[matAutocomplete]="reactiveAuto"
[matAutocompleteOverlayInlined]="true"
[formControl]="stateCtrl"
(input)="reactiveStates = filterStates(reactiveInput.value)"
(focus)="reactiveStates = filterStates(reactiveInput.value)">
Expand Down Expand Up @@ -71,7 +72,7 @@
@if (true) {
<mat-form-field [color]="templateStatesTheme">
<mat-label>State</mat-label>
<input matInput [matAutocomplete]="tdAuto" [(ngModel)]="currentState"
<input matInput [matAutocomplete]="tdAuto" [matAutocompleteOverlayInlined]="true" [(ngModel)]="currentState"
(ngModelChange)="tdStates = filterStates(currentState)" [disabled]="tdDisabled">
<mat-autocomplete #tdAuto="matAutocomplete"
[hideSingleSelectionIndicator]="templateHideSingleSelectionIndicator"
Expand Down Expand Up @@ -132,6 +133,7 @@
<input
matInput
[matAutocomplete]="groupedAuto"
[matAutocompleteOverlayInlined]="true"
[(ngModel)]="currentGroupedState"
(ngModelChange)="filteredGroupedStates = filterStateGroups(currentGroupedState)">
</mat-form-field>
Expand Down
4 changes: 3 additions & 1 deletion src/dev-app/autocomplete/autocomplete-demo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,9 @@ export class AutocompleteDemo {
<p>Choose a T-shirt size.</p>
<mat-form-field>
<mat-label>T-Shirt Size</mat-label>
<input matInput [matAutocomplete]="tdAuto" [(ngModel)]="currentSize" name="size">
<input
matInput [matAutocomplete]="tdAuto" [matAutocompleteOverlayInlined]="true"
[(ngModel)]="currentSize" name="size">
<mat-autocomplete #tdAuto="matAutocomplete">
@for (size of sizes; track size) {
<mat-option [value]="size">{{size}}</mat-option>
Expand Down
2 changes: 1 addition & 1 deletion src/dev-app/menu/menu-demo.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<p>You clicked on: {{ selected }}</p>

<mat-toolbar>
<button matIconButton [matMenuTriggerFor]="menu" aria-label="Open basic menu">
<button matIconButton [matMenuTriggerFor]="menu" matMenuTriggerOverlayInlined aria-label="Open basic menu">
<mat-icon>more_vert</mat-icon>
</button>
</mat-toolbar>
Expand Down
7 changes: 7 additions & 0 deletions src/material/autocomplete/autocomplete-trigger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,12 @@ export class MatAutocompleteTrigger
*/
@Input('matAutocompletePosition') position: 'auto' | 'above' | 'below' = 'auto';

/**
* Whether to inline the overlay, instead of using the global overlay container.
*/
@Input({alias: 'matAutocompleteOverlayInlined', transform: booleanAttribute})
overlayInlined: boolean;

/**
* Reference relative to which to position the autocomplete panel.
* Defaults to the autocomplete trigger element.
Expand Down Expand Up @@ -894,6 +900,7 @@ export class MatAutocompleteTrigger
backdropClass: this._defaults?.backdropClass || 'cdk-overlay-transparent-backdrop',
panelClass: this._overlayPanelClass,
disableAnimations: this._animationsDisabled,
insertOverlayAfter: this.overlayInlined ? this._getConnectedElement() : undefined,
});
}

Expand Down
6 changes: 6 additions & 0 deletions src/material/menu/menu-trigger-base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,11 @@ export abstract class MatMenuTriggerBase implements OnDestroy {
/** Data that will be passed to the menu panel. */
abstract menuData: any;

/**
* Whether to inline the overlay, instead of using the global overlay container.
*/
protected _menuOverlayInlined: boolean;

/** Whether focus should be restored when the menu is closed. */
abstract restoreFocus: boolean;

Expand Down Expand Up @@ -367,6 +372,7 @@ export abstract class MatMenuTriggerBase implements OnDestroy {
scrollStrategy: this._scrollStrategy(),
direction: this._dir || 'ltr',
disableAnimations: this._animationsDisabled,
insertOverlayAfter: this._menuOverlayInlined ? this._element : undefined,
});
}

Expand Down
12 changes: 12 additions & 0 deletions src/material/menu/menu-trigger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import {
OnDestroy,
Output,
Renderer2,
booleanAttribute,
} from '@angular/core';
import {OverlayRef} from '@angular/cdk/overlay';
import {Subscription} from 'rxjs';
Expand Down Expand Up @@ -67,6 +68,17 @@ export class MatMenuTrigger extends MatMenuTriggerBase implements AfterContentIn
@Input('matMenuTriggerData')
override menuData: any;

/**
* Whether to inline the overlay, instead of using the global overlay container.
*/
@Input({alias: 'matMenuTriggerOverlayInlined', transform: booleanAttribute})
get menuOverlayInlined(): boolean {
return this._menuOverlayInlined;
}
set menuOverlayInlined(menuOverlayInlined: boolean) {
this._menuOverlayInlined = menuOverlayInlined;
}

/**
* Whether focus should be restored when the menu is closed.
* Note that disabling this option can have accessibility implications
Expand Down
Loading