sussudio
Version:
An unofficial VS Code Internal API
74 lines (73 loc) • 2.87 kB
text/typescript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IContentActionHandler } from "../../formattedTextRenderer.mjs";
import { IContextViewProvider } from "../contextview/contextview.mjs";
import { IListStyles } from "../list/listWidget.mjs";
import { Widget } from "../widget.mjs";
import { Color } from "../../../common/color.mjs";
import { Event } from "../../../common/event.mjs";
import { IDisposable } from "../../../common/lifecycle.mjs";
import { IThemable } from "../../../common/styler.mjs";
import "../../../../css!./selectBox.mjs";
export interface ISelectBoxDelegate extends IDisposable {
readonly onDidSelect: Event<ISelectData>;
setOptions(options: ISelectOptionItem[], selected?: number): void;
select(index: number): void;
setAriaLabel(label: string): void;
focus(): void;
blur(): void;
setFocusable(focus: boolean): void;
render(container: HTMLElement): void;
style(styles: ISelectBoxStyles): void;
applyStyles(): void;
}
export interface ISelectBoxOptions {
useCustomDrawn?: boolean;
ariaLabel?: string;
ariaDescription?: string;
minBottomMargin?: number;
optionsAsChildren?: boolean;
}
export interface ISelectOptionItem {
text: string;
detail?: string;
decoratorRight?: string;
description?: string;
descriptionIsMarkdown?: boolean;
descriptionMarkdownActionHandler?: IContentActionHandler;
isDisabled?: boolean;
}
export interface ISelectBoxStyles extends IListStyles {
selectBackground?: Color;
selectListBackground?: Color;
selectForeground?: Color;
decoratorRightForeground?: Color;
selectBorder?: Color;
selectListBorder?: Color;
focusBorder?: Color;
}
export declare const defaultStyles: {
selectBackground: Color;
selectForeground: Color;
selectBorder: Color;
};
export interface ISelectData {
selected: string;
index: number;
}
export declare class SelectBox extends Widget implements ISelectBoxDelegate, IThemable {
private selectBoxDelegate;
constructor(options: ISelectOptionItem[], selected: number, contextViewProvider: IContextViewProvider, styles?: ISelectBoxStyles, selectBoxOptions?: ISelectBoxOptions);
get onDidSelect(): Event<ISelectData>;
setOptions(options: ISelectOptionItem[], selected?: number): void;
select(index: number): void;
setAriaLabel(label: string): void;
focus(): void;
blur(): void;
setFocusable(focusable: boolean): void;
render(container: HTMLElement): void;
style(styles: ISelectBoxStyles): void;
applyStyles(): void;
}