Skip to content

Commit 189d98e

Browse files
authored
fix(expansion): disable header height transition if noop animations is set (#19373)
We recently refactored the header height transition from Angular animations to plain CSS (to support density styles). It looks like this means that we no longer respect the noop animations module for that animation. This commit fixes that.
1 parent a86064a commit 189d98e

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

src/material/expansion/expansion-panel-header.scss

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@
99
position: relative; // Necessary for the strong focus indication.
1010
transition: height $mat-expansion-panel-header-transition;
1111

12+
// If the `NoopAnimationsModule` is used, disable the height transition.
13+
&._mat-animation-noopable {
14+
transition: none;
15+
}
16+
1217
&:focus,
1318
&:hover {
1419
outline: none;

src/material/expansion/expansion-panel-header.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import {
2121
Optional,
2222
Inject,
2323
} from '@angular/core';
24+
import {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';
2425
import {merge, Subscription, EMPTY} from 'rxjs';
2526
import {filter} from 'rxjs/operators';
2627
import {matExpansionAnimations} from './expansion-animations';
@@ -57,6 +58,7 @@ import {MatAccordionTogglePosition} from './accordion-base';
5758
'[class.mat-expanded]': '_isExpanded()',
5859
'[class.mat-expansion-toggle-indicator-after]': `_getTogglePosition() === 'after'`,
5960
'[class.mat-expansion-toggle-indicator-before]': `_getTogglePosition() === 'before'`,
61+
'[class._mat-animation-noopable]': '_animationMode === "NoopAnimations"',
6062
'[style.height]': '_getHeaderHeight()',
6163
'(click)': '_toggle()',
6264
'(keydown)': '_keydown($event)',
@@ -71,7 +73,8 @@ export class MatExpansionPanelHeader implements OnDestroy, FocusableOption {
7173
private _focusMonitor: FocusMonitor,
7274
private _changeDetectorRef: ChangeDetectorRef,
7375
@Inject(MAT_EXPANSION_PANEL_DEFAULT_OPTIONS) @Optional()
74-
defaultOptions?: MatExpansionPanelDefaultOptions) {
76+
defaultOptions?: MatExpansionPanelDefaultOptions,
77+
@Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string) {
7578
const accordionHideToggleChange = panel.accordion ?
7679
panel.accordion._stateChanges.pipe(
7780
filter(changes => !!(changes['hideToggle'] || changes['togglePosition']))) :

tools/public_api_guard/material/expansion.d.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,12 @@ export declare class MatExpansionPanelDescription {
9696
}
9797

9898
export declare class MatExpansionPanelHeader implements OnDestroy, FocusableOption {
99+
_animationMode?: string | undefined;
99100
collapsedHeight: string;
100101
get disabled(): any;
101102
expandedHeight: string;
102103
panel: MatExpansionPanel;
103-
constructor(panel: MatExpansionPanel, _element: ElementRef, _focusMonitor: FocusMonitor, _changeDetectorRef: ChangeDetectorRef, defaultOptions?: MatExpansionPanelDefaultOptions);
104+
constructor(panel: MatExpansionPanel, _element: ElementRef, _focusMonitor: FocusMonitor, _changeDetectorRef: ChangeDetectorRef, defaultOptions?: MatExpansionPanelDefaultOptions, _animationMode?: string | undefined);
104105
_getExpandedState(): string;
105106
_getHeaderHeight(): string | null;
106107
_getPanelId(): string;
@@ -112,7 +113,7 @@ export declare class MatExpansionPanelHeader implements OnDestroy, FocusableOpti
112113
focus(origin?: FocusOrigin, options?: FocusOptions): void;
113114
ngOnDestroy(): void;
114115
static ɵcmp: i0.ɵɵComponentDefWithMeta<MatExpansionPanelHeader, "mat-expansion-panel-header", never, { "expandedHeight": "expandedHeight"; "collapsedHeight": "collapsedHeight"; }, {}, never, ["mat-panel-title", "mat-panel-description", "*"]>;
115-
static ɵfac: i0.ɵɵFactoryDef<MatExpansionPanelHeader, [{ host: true; }, null, null, null, { optional: true; }]>;
116+
static ɵfac: i0.ɵɵFactoryDef<MatExpansionPanelHeader, [{ host: true; }, null, null, null, { optional: true; }, { optional: true; }]>;
116117
}
117118

118119
export declare type MatExpansionPanelState = 'expanded' | 'collapsed';

0 commit comments

Comments
 (0)