@@ -38,9 +38,7 @@ export class MdcListItemChange {
3838 moduleId : module . id ,
3939 selector : '[mdcListGroup], mdc-list-group' ,
4040 exportAs : 'mdcListGroup' ,
41- host : {
42- 'class' : 'mdc-list-group'
43- } ,
41+ host : { 'class' : 'mdc-list-group' } ,
4442 template : `
4543 <h3 class="mdc-list-group__subheader" *ngIf="subheader">{{subheader}}</h3>
4644 <ng-content></ng-content>
@@ -57,9 +55,7 @@ export class MdcListGroup {
5755@Directive ( {
5856 selector : '[mdcListGroupSubheader], mdc-list-group-subheader' ,
5957 exportAs : 'mdcListGroupSubheader' ,
60- host : {
61- 'class' : 'mdc-list-group__subheader'
62- }
58+ host : { 'class' : 'mdc-list-group__subheader' }
6359} )
6460export class MdcListGroupSubheader {
6561 constructor ( public elementRef : ElementRef ) { }
@@ -211,22 +207,30 @@ export class MdcList implements AfterViewInit, OnDestroy {
211207 listItem . getListItemElement ( ) . click ( ) ;
212208 }
213209 } ,
214- toggleCheckbox : ( index : number ) => {
215- let checkboxOrRadioExists = false ;
216- const listItem = this . _listItems . toArray ( ) [ index ] ;
217- const elementsToToggle = [ ] . slice . call ( listItem . getListItemElement ( ) . querySelectorAll ( strings . CHECKBOX_RADIO_SELECTOR ) ) ;
218- elementsToToggle . forEach ( ( element : any ) => {
210+ hasCheckboxAtIndex : ( index : number ) => {
211+ const listItem = this . _listItems . toArray ( ) [ index ] . getListItemElement ( ) ;
212+ return ! ! listItem . querySelector ( strings . CHECKBOX_SELECTOR ) ;
213+ } ,
214+ hasRadioAtIndex : ( index : number ) => {
215+ const listItem = this . _listItems . toArray ( ) [ index ] . getListItemElement ( ) ;
216+ return ! ! listItem . querySelector ( strings . RADIO_SELECTOR ) ;
217+ } ,
218+ isCheckboxCheckedAtIndex : ( index : number ) => {
219+ const listItem = this . _listItems . toArray ( ) [ index ] . getListItemElement ( ) ;
220+ const toggleEl = listItem . querySelector ( strings . CHECKBOX_SELECTOR ) ;
221+ return toggleEl . checked ;
222+ } ,
223+ setCheckedCheckboxOrRadioAtIndex : ( index : number , isChecked : boolean ) => {
224+ const listItem = this . _listItems . toArray ( ) [ index ] . getListItemElement ( ) ;
225+ const toggleEl = listItem . querySelector ( strings . CHECKBOX_RADIO_SELECTOR ) ;
226+ toggleEl . checked = isChecked ;
227+
228+ if ( this . _platform . isBrowser ) {
219229 const event = document . createEvent ( 'Event' ) ;
220230 event . initEvent ( 'change' , true , true ) ;
221-
222- if ( ! element . checked || element . type !== 'radio' ) {
223- element . checked = ! element . checked ;
224- element . dispatchEvent ( event ) ;
225- }
226- checkboxOrRadioExists = true ;
227- } ) ;
228- return checkboxOrRadioExists ;
229- } ,
231+ toggleEl . dispatchEvent ( event ) ;
232+ }
233+ }
230234 } ;
231235 }
232236
0 commit comments