@@ -20,22 +20,27 @@ import {
2020 OnChanges ,
2121 OnDestroy ,
2222 ChangeDetectorRef ,
23+ Input ,
2324} from '@angular/core' ;
2425import {
26+ CanDisable ,
27+ CanDisableCtor ,
2528 CanDisableRipple ,
2629 CanDisableRippleCtor ,
2730 MatLine ,
2831 setLines ,
2932 mixinDisableRipple ,
33+ mixinDisabled ,
3034} from '@angular/material/core' ;
35+ import { coerceBooleanProperty } from '@angular/cdk/coercion' ;
3136import { Subject } from 'rxjs' ;
3237import { takeUntil } from 'rxjs/operators' ;
3338
3439// Boilerplate for applying mixins to MatList.
3540/** @docs -private */
3641class MatListBase { }
37- const _MatListMixinBase : CanDisableRippleCtor & typeof MatListBase =
38- mixinDisableRipple ( MatListBase ) ;
42+ const _MatListMixinBase : CanDisableRippleCtor & CanDisableCtor & typeof MatListBase =
43+ mixinDisabled ( mixinDisableRipple ( MatListBase ) ) ;
3944
4045// Boilerplate for applying mixins to MatListItem.
4146/** @docs -private */
@@ -52,12 +57,12 @@ const _MatListItemMixinBase: CanDisableRippleCtor & typeof MatListItemBase =
5257 } ,
5358 templateUrl : 'list.html' ,
5459 styleUrls : [ 'list.css' ] ,
55- inputs : [ 'disableRipple' ] ,
60+ inputs : [ 'disableRipple' , 'disabled' ] ,
5661 encapsulation : ViewEncapsulation . None ,
5762 changeDetection : ChangeDetectionStrategy . OnPush ,
5863} )
59- export class MatNavList extends _MatListMixinBase implements CanDisableRipple , OnChanges ,
60- OnDestroy {
64+ export class MatNavList extends _MatListMixinBase implements CanDisable , CanDisableRipple ,
65+ OnChanges , OnDestroy {
6166 /** Emits when the state of the list changes. */
6267 _stateChanges = new Subject < void > ( ) ;
6368
@@ -70,6 +75,7 @@ export class MatNavList extends _MatListMixinBase implements CanDisableRipple, O
7075 }
7176
7277 static ngAcceptInputType_disableRipple : boolean | string | null | undefined ;
78+ static ngAcceptInputType_disabled : boolean | string | null | undefined ;
7379}
7480
7581@Component ( {
@@ -80,11 +86,12 @@ export class MatNavList extends _MatListMixinBase implements CanDisableRipple, O
8086 'class' : 'mat-list mat-list-base'
8187 } ,
8288 styleUrls : [ 'list.css' ] ,
83- inputs : [ 'disableRipple' ] ,
89+ inputs : [ 'disableRipple' , 'disabled' ] ,
8490 encapsulation : ViewEncapsulation . None ,
8591 changeDetection : ChangeDetectionStrategy . OnPush ,
8692} )
87- export class MatList extends _MatListMixinBase implements CanDisableRipple , OnChanges , OnDestroy {
93+ export class MatList extends _MatListMixinBase implements CanDisable , CanDisableRipple , OnChanges ,
94+ OnDestroy {
8895 /** Emits when the state of the list changes. */
8996 _stateChanges = new Subject < void > ( ) ;
9097
@@ -119,6 +126,7 @@ export class MatList extends _MatListMixinBase implements CanDisableRipple, OnCh
119126 }
120127
121128 static ngAcceptInputType_disableRipple : boolean | string | null | undefined ;
129+ static ngAcceptInputType_disabled : boolean | string | null | undefined ;
122130}
123131
124132/**
@@ -157,6 +165,7 @@ export class MatListSubheaderCssMatStyler {}
157165 exportAs : 'matListItem' ,
158166 host : {
159167 'class' : 'mat-list-item' ,
168+ '[class.mat-list-item-disabled]' : 'disabled' ,
160169 // @breaking -change 8.0.0 Remove `mat-list-item-avatar` in favor of `mat-list-item-with-avatar`.
161170 '[class.mat-list-item-avatar]' : '_avatar || _icon' ,
162171 '[class.mat-list-item-with-avatar]' : '_avatar || _icon' ,
@@ -201,6 +210,14 @@ export class MatListItem extends _MatListItemMixinBase implements AfterContentIn
201210 }
202211 }
203212
213+ /** Whether the option is disabled. */
214+ @Input ( )
215+ get disabled ( ) { return this . _disabled || ! ! ( this . _list && this . _list . disabled ) ; }
216+ set disabled ( value : boolean ) {
217+ this . _disabled = coerceBooleanProperty ( value ) ;
218+ }
219+ private _disabled = false ;
220+
204221 ngAfterContentInit ( ) {
205222 setLines ( this . _lines , this . _element ) ;
206223 }
@@ -222,4 +239,5 @@ export class MatListItem extends _MatListItemMixinBase implements AfterContentIn
222239 }
223240
224241 static ngAcceptInputType_disableRipple : boolean | string | null | undefined ;
242+ static ngAcceptInputType_disabled : boolean | string | null | undefined ;
225243}
0 commit comments