@@ -276,23 +276,23 @@ class QuickInput implements IQuickInput {
276
276
}
277
277
}
278
278
279
- class QuickPick extends QuickInput implements IQuickPick {
279
+ class QuickPick < T extends IQuickPickItem > extends QuickInput implements IQuickPick < T > {
280
280
281
281
private _value = '' ;
282
282
private _placeholder ;
283
283
private onDidChangeValueEmitter = new Emitter < string > ( ) ;
284
284
private onDidAcceptEmitter = new Emitter < string > ( ) ;
285
- private _items : IQuickPickItem [ ] = [ ] ;
285
+ private _items : T [ ] = [ ] ;
286
286
private itemsUpdated = false ;
287
287
private _canSelectMany = false ;
288
288
private _matchOnDescription = true ;
289
289
private _matchOnDetail = true ;
290
- private _activeItems : IQuickPickItem [ ] = [ ] ;
290
+ private _activeItems : T [ ] = [ ] ;
291
291
private activeItemsUpdated = false ;
292
- private onDidChangeActiveEmitter = new Emitter < IQuickPickItem [ ] > ( ) ;
293
- private _selectedItems : IQuickPickItem [ ] = [ ] ;
292
+ private onDidChangeActiveEmitter = new Emitter < T [ ] > ( ) ;
293
+ private _selectedItems : T [ ] = [ ] ;
294
294
private selectedItemsUpdated = false ;
295
- private onDidChangeSelectionEmitter = new Emitter < IQuickPickItem [ ] > ( ) ;
295
+ private onDidChangeSelectionEmitter = new Emitter < T [ ] > ( ) ;
296
296
private quickNavigate = false ;
297
297
298
298
constructor ( ui : QuickInputUI ) {
@@ -331,7 +331,7 @@ class QuickPick extends QuickInput implements IQuickPick {
331
331
return this . _items ;
332
332
}
333
333
334
- set items ( items : IQuickPickItem [ ] ) {
334
+ set items ( items : T [ ] ) {
335
335
this . _items = items ;
336
336
this . itemsUpdated = true ;
337
337
this . update ( ) ;
@@ -368,7 +368,7 @@ class QuickPick extends QuickInput implements IQuickPick {
368
368
return this . _activeItems ;
369
369
}
370
370
371
- set activeItems ( activeItems : IQuickPickItem [ ] ) {
371
+ set activeItems ( activeItems : T [ ] ) {
372
372
this . _activeItems = activeItems ;
373
373
this . activeItemsUpdated = true ;
374
374
this . update ( ) ;
@@ -380,7 +380,7 @@ class QuickPick extends QuickInput implements IQuickPick {
380
380
return this . _selectedItems ;
381
381
}
382
382
383
- set selectedItems ( selectedItems : IQuickPickItem [ ] ) {
383
+ set selectedItems ( selectedItems : T [ ] ) {
384
384
this . _selectedItems = selectedItems ;
385
385
this . selectedItemsUpdated = true ;
386
386
this . update ( ) ;
@@ -433,8 +433,8 @@ class QuickPick extends QuickInput implements IQuickPick {
433
433
if ( ! focusedItems . length && ! this . _activeItems . length ) {
434
434
return ;
435
435
}
436
- this . _activeItems = focusedItems ;
437
- this . onDidChangeActiveEmitter . fire ( focusedItems ) ;
436
+ this . _activeItems = focusedItems as T [ ] ;
437
+ this . onDidChangeActiveEmitter . fire ( focusedItems as T [ ] ) ;
438
438
} ) ,
439
439
this . ui . list . onDidChangeSelection ( selectedItems => {
440
440
if ( this . canSelectMany ) {
@@ -444,16 +444,16 @@ class QuickPick extends QuickInput implements IQuickPick {
444
444
if ( ! selectedItems . length && ! this . _selectedItems . length ) {
445
445
return ;
446
446
}
447
- this . _selectedItems = selectedItems ;
448
- this . onDidChangeSelectionEmitter . fire ( selectedItems ) ;
447
+ this . _selectedItems = selectedItems as T [ ] ;
448
+ this . onDidChangeSelectionEmitter . fire ( selectedItems as T [ ] ) ;
449
449
this . onDidAcceptEmitter . fire ( ) ;
450
450
} ) ,
451
451
this . ui . list . onChangedCheckedElements ( checkedItems => {
452
452
if ( ! this . canSelectMany ) {
453
453
return ;
454
454
}
455
- this . _selectedItems = checkedItems ;
456
- this . onDidChangeSelectionEmitter . fire ( checkedItems ) ;
455
+ this . _selectedItems = checkedItems as T [ ] ;
456
+ this . onDidChangeSelectionEmitter . fire ( checkedItems as T [ ] ) ;
457
457
} ) ,
458
458
) ;
459
459
}
@@ -893,12 +893,12 @@ export class QuickInputService extends Component implements IQuickInputService {
893
893
resolve ( undefined ) ;
894
894
return ;
895
895
}
896
- const input = this . createQuickPick ( ) ;
896
+ const input = this . createQuickPick < T > ( ) ;
897
897
const disposables = [
898
898
input ,
899
899
input . onDidAccept ( ( ) => {
900
900
if ( input . canSelectMany ) {
901
- resolve ( < any > input . selectedItems ) ; // TODO: generify interface to use T extends IQuickPickItem
901
+ resolve ( < any > input . selectedItems . slice ( ) ) ;
902
902
input . hide ( ) ;
903
903
} else {
904
904
const result = input . activeItems [ 0 ] ;
@@ -1005,9 +1005,9 @@ export class QuickInputService extends Component implements IQuickInputService {
1005
1005
1006
1006
backButton = backButton ;
1007
1007
1008
- createQuickPick ( ) : IQuickPick {
1008
+ createQuickPick < T extends IQuickPickItem > ( ) : IQuickPick < T > {
1009
1009
this . create ( ) ;
1010
- return new QuickPick ( this . ui ) ;
1010
+ return new QuickPick < T > ( this . ui ) ;
1011
1011
}
1012
1012
1013
1013
createInputBox ( ) : IInputBox {
0 commit comments