129 lines
3.6 KiB
TypeScript
129 lines
3.6 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
import 'vs/css!./media/quickInput';
|
|
import * as dom from 'vs/base/browser/dom';
|
|
import { InputBox, IRange, MessageType, IInputBoxStyles } from 'vs/base/browser/ui/inputbox/inputBox';
|
|
import { IDisposable, Disposable } from 'vs/base/common/lifecycle';
|
|
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
|
|
import Severity from 'vs/base/common/severity';
|
|
import { StandardMouseEvent } from 'vs/base/browser/mouseEvent';
|
|
|
|
const $ = dom.$;
|
|
|
|
export class QuickInputBox extends Disposable {
|
|
|
|
private container: HTMLElement;
|
|
private inputBox: InputBox;
|
|
|
|
constructor(
|
|
private parent: HTMLElement
|
|
) {
|
|
super();
|
|
this.container = dom.append(this.parent, $('.quick-input-box'));
|
|
this.inputBox = this._register(new InputBox(this.container, undefined));
|
|
}
|
|
|
|
onKeyDown = (handler: (event: StandardKeyboardEvent) => void): IDisposable => {
|
|
return dom.addDisposableListener(this.inputBox.inputElement, dom.EventType.KEY_DOWN, (e: KeyboardEvent) => {
|
|
handler(new StandardKeyboardEvent(e));
|
|
});
|
|
};
|
|
|
|
onMouseDown = (handler: (event: StandardMouseEvent) => void): IDisposable => {
|
|
return dom.addDisposableListener(this.inputBox.inputElement, dom.EventType.MOUSE_DOWN, (e: MouseEvent) => {
|
|
handler(new StandardMouseEvent(e));
|
|
});
|
|
};
|
|
|
|
onDidChange = (handler: (event: string) => void): IDisposable => {
|
|
return this.inputBox.onDidChange(handler);
|
|
};
|
|
|
|
get value() {
|
|
return this.inputBox.value;
|
|
}
|
|
|
|
set value(value: string) {
|
|
this.inputBox.value = value;
|
|
}
|
|
|
|
select(range: IRange | null = null): void {
|
|
this.inputBox.select(range);
|
|
}
|
|
|
|
isSelectionAtEnd(): boolean {
|
|
return this.inputBox.isSelectionAtEnd();
|
|
}
|
|
|
|
setPlaceholder(placeholder: string): void {
|
|
this.inputBox.setPlaceHolder(placeholder);
|
|
}
|
|
|
|
get placeholder() {
|
|
return this.inputBox.inputElement.getAttribute('placeholder') || '';
|
|
}
|
|
|
|
set placeholder(placeholder: string) {
|
|
this.inputBox.setPlaceHolder(placeholder);
|
|
}
|
|
|
|
get ariaLabel() {
|
|
return this.inputBox.getAriaLabel();
|
|
}
|
|
|
|
set ariaLabel(ariaLabel: string) {
|
|
this.inputBox.setAriaLabel(ariaLabel);
|
|
}
|
|
|
|
get password() {
|
|
return this.inputBox.inputElement.type === 'password';
|
|
}
|
|
|
|
set password(password: boolean) {
|
|
this.inputBox.inputElement.type = password ? 'password' : 'text';
|
|
}
|
|
|
|
set enabled(enabled: boolean) {
|
|
this.inputBox.setEnabled(enabled);
|
|
}
|
|
|
|
hasFocus(): boolean {
|
|
return this.inputBox.hasFocus();
|
|
}
|
|
|
|
setAttribute(name: string, value: string): void {
|
|
this.inputBox.inputElement.setAttribute(name, value);
|
|
}
|
|
|
|
removeAttribute(name: string): void {
|
|
this.inputBox.inputElement.removeAttribute(name);
|
|
}
|
|
|
|
showDecoration(decoration: Severity): void {
|
|
if (decoration === Severity.Ignore) {
|
|
this.inputBox.hideMessage();
|
|
} else {
|
|
this.inputBox.showMessage({ type: decoration === Severity.Info ? MessageType.INFO : decoration === Severity.Warning ? MessageType.WARNING : MessageType.ERROR, content: '' });
|
|
}
|
|
}
|
|
|
|
stylesForType(decoration: Severity) {
|
|
return this.inputBox.stylesForType(decoration === Severity.Info ? MessageType.INFO : decoration === Severity.Warning ? MessageType.WARNING : MessageType.ERROR);
|
|
}
|
|
|
|
setFocus(): void {
|
|
this.inputBox.focus();
|
|
}
|
|
|
|
layout(): void {
|
|
this.inputBox.layout();
|
|
}
|
|
|
|
style(styles: IInputBoxStyles): void {
|
|
this.inputBox.style(styles);
|
|
}
|
|
}
|