22 * Copyright (C) Microsoft Corporation. All rights reserved.
33 *--------------------------------------------------------*/
44
5- import vscode = require( ' vscode' ) ;
5+ import vscode = require( " vscode" ) ;
66import QuickPickItem = vscode . QuickPickItem ;
7- const figures = require ( ' figures' ) ;
7+ const figures : any = require ( " figures" ) ;
88
9- export interface Option {
9+ export interface ICheckboxOption {
1010 name : string ;
1111 isSelected : boolean ;
1212}
1313
1414export class CheckboxQuickPick {
15- private options : Option [ ] ;
15+ private options : ICheckboxOption [ ] ;
1616 private readonly confirm : string ;
1717 private readonly checkboxOn : string ;
1818 private readonly checkboxOff : string ;
1919 private readonly confirmPlaceHolder : string ;
2020
21- constructor ( options : Option [ ] ) {
21+ constructor ( options : ICheckboxOption [ ] ) {
2222 this . options = options ;
2323 this . confirm = figures . tick ;
2424 this . checkboxOn = "[ x ]" ;
2525 this . checkboxOff = "[ ]" ;
2626 this . confirmPlaceHolder = "Select " + this . confirm + " to confirm" ;
2727 }
2828
29- public show ( callback : ( options : Option [ ] ) => void ) {
30- let tempOptions = this . options . slice ( ) ;
29+ public show ( callback : ( options : ICheckboxOption [ ] ) => void ) : void {
30+ let tempOptions : ICheckboxOption [ ] = this . options . slice ( ) ;
3131 this . showInner ( tempOptions , callback ) ;
3232 }
3333
34- private showInner ( tempOptions : Option [ ] , callback : ( options : Option [ ] ) => void ) {
34+ private showInner ( tempOptions : ICheckboxOption [ ] , callback : ( options : ICheckboxOption [ ] ) => void ) : void {
3535 vscode . window . showQuickPick (
3636 this . getQuickPickItems ( tempOptions ) ,
3737 { ignoreFocusOut : true , placeHolder : this . confirmPlaceHolder } ) . then ( ( selection ) => {
@@ -45,18 +45,17 @@ export class CheckboxQuickPick {
4545 return ;
4646 }
4747
48- let index = this . getRuleIndex ( tempOptions , selection . description ) ;
49- // this.toggleOption(tempOptions[index]);
50- tempOptions [ index ] . isSelected = this . toggleState ( tempOptions [ index ] . isSelected ) ;
48+ let index : number = this . getRuleIndex ( tempOptions , selection . description ) ;
49+ this . toggleOption ( tempOptions [ index ] ) ;
5150 this . showInner ( tempOptions , callback ) ;
5251 } ) ;
5352 }
5453
55- private getRuleIndex ( options : Option [ ] , optionLabel : string ) {
54+ private getRuleIndex ( options : ICheckboxOption [ ] , optionLabel : string ) : number {
5655 return options . findIndex ( opt => opt . name == optionLabel ) ;
5756 }
5857
59- private getQuickPickItems ( tempOptions : Option [ ] ) : QuickPickItem [ ] {
58+ private getQuickPickItems ( tempOptions : ICheckboxOption [ ] ) : QuickPickItem [ ] {
6059 let quickPickItems : QuickPickItem [ ] = [ ] ;
6160 tempOptions . forEach ( option =>
6261 quickPickItems . push ( {
@@ -70,14 +69,14 @@ export class CheckboxQuickPick {
7069 return checkBox == this . checkboxOn ;
7170 }
7271
73- private toggleOption ( option : Option ) {
74- option . isSelected = this . toggleState ( option . isSelected ) ;
75- }
76-
7772 private toggleState ( state : boolean ) : boolean {
7873 return ! state ;
7974 }
8075
76+ private toggleOption ( option : ICheckboxOption ) : void {
77+ option . isSelected = this . toggleState ( option . isSelected ) ;
78+ }
79+
8180 private toggleCheckBox ( checkBox : string ) : string {
8281 return this . convertToCheckBox ( this . toggleState ( this . convertToState ( checkBox ) ) ) ;
8382 }
0 commit comments