mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-09 09:42:34 -05:00
Merge from vscode 2e5312cd61ff99c570299ecc122c52584265eda2
This commit is contained in:
committed by
Anthony Dresser
parent
3603f55d97
commit
7f1d8fc32f
@@ -27,6 +27,7 @@ import { IListVirtualDelegate, IListRenderer } from 'vs/base/browser/ui/list/lis
|
||||
import { List, IListOptions, IListStyles } from 'vs/base/browser/ui/list/listWidget';
|
||||
import { IInputBoxStyles } from 'vs/base/browser/ui/inputbox/inputBox';
|
||||
import { Color } from 'vs/base/common/color';
|
||||
import { registerIcon, Codicon } from 'vs/base/common/codicons';
|
||||
|
||||
export interface IQuickInputOptions {
|
||||
idPrefix: string;
|
||||
@@ -67,8 +68,11 @@ const $ = dom.$;
|
||||
|
||||
type Writeable<T> = { -readonly [P in keyof T]: T[P] };
|
||||
|
||||
|
||||
const backButtonIcon = registerIcon('quick-input-back', Codicon.arrowLeft);
|
||||
|
||||
const backButton = {
|
||||
iconClass: 'codicon-arrow-left',
|
||||
iconClass: backButtonIcon.classNames,
|
||||
tooltip: localize('quickInput.back', "Back"),
|
||||
handle: -1 // TODO
|
||||
};
|
||||
@@ -662,14 +666,14 @@ class QuickPick<T extends IQuickPickItem> extends QuickInput implements IQuickPi
|
||||
this.ui.list.clearFocus();
|
||||
}
|
||||
}));
|
||||
this.visibleDisposables.add(this.ui.inputBox.onKeyDown(event => {
|
||||
this.visibleDisposables.add((this._hideInput ? this.ui.list : this.ui.inputBox).onKeyDown((event: KeyboardEvent | StandardKeyboardEvent) => {
|
||||
switch (event.keyCode) {
|
||||
case KeyCode.DownArrow:
|
||||
this.ui.list.focus(QuickInputListFocus.Next);
|
||||
if (this.canSelectMany) {
|
||||
this.ui.list.domFocus();
|
||||
}
|
||||
event.preventDefault();
|
||||
dom.EventHelper.stop(event, true);
|
||||
break;
|
||||
case KeyCode.UpArrow:
|
||||
if (this.ui.list.getFocusedElements().length) {
|
||||
@@ -680,21 +684,21 @@ class QuickPick<T extends IQuickPickItem> extends QuickInput implements IQuickPi
|
||||
if (this.canSelectMany) {
|
||||
this.ui.list.domFocus();
|
||||
}
|
||||
event.preventDefault();
|
||||
dom.EventHelper.stop(event, true);
|
||||
break;
|
||||
case KeyCode.PageDown:
|
||||
this.ui.list.focus(QuickInputListFocus.NextPage);
|
||||
if (this.canSelectMany) {
|
||||
this.ui.list.domFocus();
|
||||
}
|
||||
event.preventDefault();
|
||||
dom.EventHelper.stop(event, true);
|
||||
break;
|
||||
case KeyCode.PageUp:
|
||||
this.ui.list.focus(QuickInputListFocus.PreviousPage);
|
||||
if (this.canSelectMany) {
|
||||
this.ui.list.domFocus();
|
||||
}
|
||||
event.preventDefault();
|
||||
dom.EventHelper.stop(event, true);
|
||||
break;
|
||||
case KeyCode.RightArrow:
|
||||
if (!this._canAcceptInBackground) {
|
||||
@@ -711,6 +715,18 @@ class QuickPick<T extends IQuickPickItem> extends QuickInput implements IQuickPi
|
||||
this.onDidAcceptEmitter.fire({ inBackground: true });
|
||||
}
|
||||
|
||||
break;
|
||||
case KeyCode.Home:
|
||||
if (event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
|
||||
this.ui.list.focus(QuickInputListFocus.First);
|
||||
dom.EventHelper.stop(event, true);
|
||||
}
|
||||
break;
|
||||
case KeyCode.End:
|
||||
if (event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
|
||||
this.ui.list.focus(QuickInputListFocus.Last);
|
||||
dom.EventHelper.stop(event, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}));
|
||||
@@ -1077,10 +1093,10 @@ export class QuickInputController extends Disposable {
|
||||
private parentElement: HTMLElement;
|
||||
private styles: IQuickInputStyles;
|
||||
|
||||
private onShowEmitter = new Emitter<void>();
|
||||
private onShowEmitter = this._register(new Emitter<void>());
|
||||
readonly onShow = this.onShowEmitter.event;
|
||||
|
||||
private onHideEmitter = new Emitter<void>();
|
||||
private onHideEmitter = this._register(new Emitter<void>());
|
||||
readonly onHide = this.onHideEmitter.event;
|
||||
|
||||
private previousFocusElement?: HTMLElement;
|
||||
@@ -1287,9 +1303,10 @@ export class QuickInputController extends Disposable {
|
||||
return this.ui;
|
||||
}
|
||||
|
||||
pick<T extends IQuickPickItem, O extends IPickOptions<T>>(picks: Promise<QuickPickInput<T>[]> | QuickPickInput<T>[], options: O = <O>{}, token: CancellationToken = CancellationToken.None): Promise<O extends { canPickMany: true } ? T[] : T> {
|
||||
return new Promise<O extends { canPickMany: true } ? T[] : T>((doResolve, reject) => {
|
||||
let resolve = (result: any) => {
|
||||
pick<T extends IQuickPickItem, O extends IPickOptions<T>>(picks: Promise<QuickPickInput<T>[]> | QuickPickInput<T>[], options: O = <O>{}, token: CancellationToken = CancellationToken.None): Promise<(O extends { canPickMany: true } ? T[] : T) | undefined> {
|
||||
type R = (O extends { canPickMany: true } ? T[] : T) | undefined;
|
||||
return new Promise<R>((doResolve, reject) => {
|
||||
let resolve = (result: R) => {
|
||||
resolve = doResolve;
|
||||
if (options.onKeyMods) {
|
||||
options.onKeyMods(input.keyMods);
|
||||
@@ -1306,12 +1323,12 @@ export class QuickInputController extends Disposable {
|
||||
input,
|
||||
input.onDidAccept(() => {
|
||||
if (input.canSelectMany) {
|
||||
resolve(<any>input.selectedItems.slice());
|
||||
resolve(<R>input.selectedItems.slice());
|
||||
input.hide();
|
||||
} else {
|
||||
const result = input.activeItems[0];
|
||||
if (result) {
|
||||
resolve(<any>result);
|
||||
resolve(<R>result);
|
||||
input.hide();
|
||||
}
|
||||
}
|
||||
@@ -1326,7 +1343,7 @@ export class QuickInputController extends Disposable {
|
||||
if (!input.canSelectMany) {
|
||||
const result = items[0];
|
||||
if (result) {
|
||||
resolve(<any>result);
|
||||
resolve(<R>result);
|
||||
input.hide();
|
||||
}
|
||||
}
|
||||
@@ -1388,7 +1405,7 @@ export class QuickInputController extends Disposable {
|
||||
});
|
||||
}
|
||||
|
||||
input(options: IInputOptions = {}, token: CancellationToken = CancellationToken.None): Promise<string> {
|
||||
input(options: IInputOptions = {}, token: CancellationToken = CancellationToken.None): Promise<string | undefined> {
|
||||
return new Promise<string>((resolve, reject) => {
|
||||
if (token.isCancellationRequested) {
|
||||
resolve(undefined);
|
||||
|
||||
Reference in New Issue
Block a user