/*--------------------------------------------------------------------------------------------- * 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(); } 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'; } 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); } }