提交 61e1f7f7 编写于 作者: C Christof Marti

Toggle only visible items (#45589)

上级 e563e40e
......@@ -105,7 +105,7 @@ export class QuickInputService extends Component implements IQuickInputService {
this.checkboxList = this.instantiationService.createInstance(QuickInputCheckboxList, this.container);
this.toUnbind.push(this.checkboxList);
this.toUnbind.push(this.checkboxList.onSelectionChanged(() => {
this.toUnbind.push(this.checkboxList.onAllSelectedChanged(() => {
this.selectAll.checked = this.checkboxList.getAllSelected();
}));
......
......@@ -143,8 +143,8 @@ export class QuickInputCheckboxList {
private container: HTMLElement;
private list: WorkbenchList<SelectableElement>;
private elements: SelectableElement[] = [];
private _onSelectionChanged = new Emitter<IPickOpenEntry>();
onSelectionChanged: Event<IPickOpenEntry> = this._onSelectionChanged.event;
private _onAllSelectedChanged = new Emitter<boolean>(); // TODO: Debounce
onAllSelectedChanged: Event<boolean> = this._onAllSelectedChanged.event;
private elementDisposables: IDisposable[] = [];
private disposables: IDisposable[] = [];
......@@ -168,11 +168,15 @@ export class QuickInputCheckboxList {
}
getAllSelected() {
return this.getSelectedElements().length === this.elements.length;
return !this.elements.some(element => !element.hidden && !element.selected);
}
setAllSelected(select: boolean) {
this.elements.forEach(element => element.selected = select);
this.elements.forEach(element => {
if (!element.hidden) {
element.selected = select;
}
});
}
setElements(elements: IPickOpenEntry[]): void {
......@@ -183,7 +187,7 @@ export class QuickInputCheckboxList {
selected: !!item.selected
}));
this.elementDisposables.push(...this.elements.map(element => element.onSelected(() => {
this._onSelectionChanged.fire(element.item);
this._onAllSelectedChanged.fire(this.getAllSelected());
})));
this.list.splice(0, this.list.length, this.elements);
this.list.setSelection([]);
......@@ -250,6 +254,8 @@ export class QuickInputCheckboxList {
this.list.setSelection([]);
this.list.focusFirst();
this.list.layout();
this._onAllSelectedChanged.fire(this.getAllSelected());
}
toggleCheckbox() {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册