Interface QuickPick<T>

A concrete QuickInput to let the user pick an item from a list of items of type T. The items can be filtered through a filter text field and there is an option canSelectMany to allow for selecting multiple items.

Note that in many cases the more convenient window.showQuickPick is easier to use. window.createQuickPick should be used when window.showQuickPick does not offer the required flexibility.

interface QuickPick<T> {
    activeItems: readonly T[];
    busy: boolean;
    buttons: readonly QuickInputButton[];
    canSelectMany: boolean;
    enabled: boolean;
    ignoreFocusOut: boolean;
    items: readonly T[];
    keepScrollPosition?: boolean;
    matchOnDescription: boolean;
    matchOnDetail: boolean;
    onDidAccept: Event<void>;
    onDidChangeActive: Event<readonly T[]>;
    onDidChangeSelection: Event<readonly T[]>;
    onDidChangeValue: Event<string>;
    onDidHide: Event<void>;
    onDidTriggerButton: Event<QuickInputButton>;
    onDidTriggerItemButton: Event<QuickPickItemButtonEvent<T>>;
    placeholder: undefined | string;
    selectedItems: readonly T[];
    step: undefined | number;
    title: undefined | string;
    totalSteps: undefined | number;
    value: string;
    dispose(): void;
    hide(): void;
    show(): void;
}

Type Parameters

Hierarchy (view full)

Implemented by

Properties

activeItems: readonly T[]

Active items. This can be read and updated by the extension.

busy: boolean

If the UI should show a progress indicator. Defaults to false.

Change this to true, e.g., while loading more data or validating user input.

buttons: readonly QuickInputButton[]

Buttons for actions in the UI.

canSelectMany: boolean

If multiple items can be selected at the same time. Defaults to false.

enabled: boolean

If the UI should allow for user input. Defaults to true.

Change this to false, e.g., while validating user input or loading data for the next step in user input.

ignoreFocusOut: boolean

If the UI should stay open even when loosing UI focus. Defaults to false.

items: readonly T[]

Items to pick from.

keepScrollPosition?: boolean
matchOnDescription: boolean

If the filter text should also be matched against the description of the items. Defaults to false.

matchOnDetail: boolean

If the filter text should also be matched against the detail of the items. Defaults to false.

onDidAccept: Event<void>

An event signaling when the user indicated acceptance of the selected item(s).

onDidChangeActive: Event<readonly T[]>

An event signaling when the active items have changed.

onDidChangeSelection: Event<readonly T[]>

An event signaling when the selected items have changed.

onDidChangeValue: Event<string>

An event signaling when the value of the filter text has changed.

onDidHide: Event<void>

An event signaling when this input UI is hidden.

There are several reasons why this UI might have to be hidden and the extension will be notified through QuickInput.onDidHide. (Examples include: an explicit call to QuickInput.hide, the user pressing Esc, some other input UI opening, etc.)

onDidTriggerButton: Event<QuickInputButton>

An event signaling when a button was triggered.

onDidTriggerItemButton: Event<QuickPickItemButtonEvent<T>>

An event signaling when a button in a particular QuickPickItem was triggered. This event does not fire for buttons in the title bar.

placeholder: undefined | string

Optional placeholder in the filter text.

selectedItems: readonly T[]

Selected items. This can be read and updated by the extension.

step: undefined | number

An optional current step count.

title: undefined | string

An optional title.

totalSteps: undefined | number

An optional total step count.

value: string

Current value of the filter text.

Methods

  • Dispose of this input UI and any associated resources. If it is still visible, it is first hidden. After this call the input UI is no longer functional and no additional methods or properties on it should be accessed. Instead a new input UI should be created.

    Returns void