diff --git a/extensions/git/package.json b/extensions/git/package.json index 6f17ef9f1d1..b8b97f4f116 100644 --- a/extensions/git/package.json +++ b/extensions/git/package.json @@ -25,6 +25,7 @@ "contribViewsWelcome", "editSessionIdentityProvider", "quickDiffProvider", + "quickInputButtonLocation", "quickPickSortByLabel", "scmActionButton", "scmArtifactProvider", diff --git a/extensions/git/tsconfig.json b/extensions/git/tsconfig.json index 9b5ea7dd67e..eac688f81de 100644 --- a/extensions/git/tsconfig.json +++ b/extensions/git/tsconfig.json @@ -13,6 +13,7 @@ "../../src/vscode-dts/vscode.proposed.canonicalUriProvider.d.ts", "../../src/vscode-dts/vscode.proposed.editSessionIdentityProvider.d.ts", "../../src/vscode-dts/vscode.proposed.quickDiffProvider.d.ts", + "../../src/vscode-dts/vscode.proposed.quickInputButtonLocation.d.ts", "../../src/vscode-dts/vscode.proposed.quickPickSortByLabel.d.ts", "../../src/vscode-dts/vscode.proposed.scmActionButton.d.ts", "../../src/vscode-dts/vscode.proposed.scmArtifactProvider.d.ts", diff --git a/extensions/vscode-api-tests/package.json b/extensions/vscode-api-tests/package.json index 5c308453ec5..3f586a847ea 100644 --- a/extensions/vscode-api-tests/package.json +++ b/extensions/vscode-api-tests/package.json @@ -32,6 +32,7 @@ "notebookMessaging", "notebookMime", "portsAttributes", + "quickInputButtonLocation", "quickPickSortByLabel", "resolvers", "scmActionButton", diff --git a/src/vs/platform/extensions/common/extensionsApiProposals.ts b/src/vs/platform/extensions/common/extensionsApiProposals.ts index 1e7f95b5f8c..65bcacd26e6 100644 --- a/src/vs/platform/extensions/common/extensionsApiProposals.ts +++ b/src/vs/platform/extensions/common/extensionsApiProposals.ts @@ -331,6 +331,9 @@ const _allApiProposals = { quickDiffProvider: { proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.quickDiffProvider.d.ts', }, + quickInputButtonLocation: { + proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.quickInputButtonLocation.d.ts', + }, quickPickItemTooltip: { proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.quickPickItemTooltip.d.ts', }, diff --git a/src/vs/workbench/api/common/extHostQuickOpen.ts b/src/vs/workbench/api/common/extHostQuickOpen.ts index 55e4d8bbe96..4af39358c5d 100644 --- a/src/vs/workbench/api/common/extHostQuickOpen.ts +++ b/src/vs/workbench/api/common/extHostQuickOpen.ts @@ -391,6 +391,12 @@ export function createExtHostQuickOpen(mainContext: IMainContext, workspace: IEx } set buttons(buttons: QuickInputButton[]) { + if (buttons.some(button => + typeof button.location === 'number' || + typeof button.toggle === 'object' && typeof button.toggle.checked === 'boolean')) { + checkProposedApiEnabled(this._extension, 'quickInputButtonLocation'); + } + this._buttons = buttons.slice(); this._handlesToButtons.clear(); buttons.forEach((button, i) => { diff --git a/src/vscode-dts/vscode.d.ts b/src/vscode-dts/vscode.d.ts index d757d2474b3..1b1899c52be 100644 --- a/src/vscode-dts/vscode.d.ts +++ b/src/vscode-dts/vscode.d.ts @@ -13295,26 +13295,6 @@ declare module 'vscode' { validationMessage: string | InputBoxValidationMessage | undefined; } - /** - * Specifies the location where a {@link QuickInputButton} should be rendered. - */ - export enum QuickInputButtonLocation { - /** - * The button is rendered in the title bar. - */ - Title = 1, - - /** - * The button is rendered inline to the right of the input box. - */ - Inline = 2, - - /** - * The button is rendered at the far end inside the input box. - */ - Input = 3 - } - /** * A button for an action in a {@link QuickPick} or {@link InputBox}. */ @@ -13328,26 +13308,6 @@ declare module 'vscode' { * An optional tooltip displayed when hovering over the button. */ readonly tooltip?: string | undefined; - - /** - * The location where the button should be rendered. - * - * Defaults to {@link QuickInputButtonLocation.Title}. - * - * **Note:** This property is ignored if the button was added to a {@link QuickPickItem}. - */ - location?: QuickInputButtonLocation; - - /** - * When present, indicates that the button is a toggle button that can be checked or unchecked. - */ - readonly toggle?: { - /** - * Indicates whether the toggle button is currently checked. - * This property will be updated when the button is toggled. - */ - checked: boolean; - }; } /** diff --git a/src/vscode-dts/vscode.proposed.quickInputButtonLocation.d.ts b/src/vscode-dts/vscode.proposed.quickInputButtonLocation.d.ts new file mode 100644 index 00000000000..1f4e248548e --- /dev/null +++ b/src/vscode-dts/vscode.proposed.quickInputButtonLocation.d.ts @@ -0,0 +1,49 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +declare module 'vscode' { + + // https://github.com/microsoft/vscode/issues/175662 + + /** + * Specifies the location where a {@link QuickInputButton} should be rendered. + */ + export enum QuickInputButtonLocation { + /** + * The button is rendered in the title bar. + */ + Title = 1, + + /** + * The button is rendered inline to the right of the input box. + */ + Inline = 2, + + /** + * The button is rendered at the far end inside the input box. + */ + Input = 3 + } + + export interface QuickInputButton { + /** + * The location where the button should be rendered. + * + * Defaults to {@link QuickInputButtonLocation.Title}. + * + * **Note:** This property is ignored if the button was added to a {@link QuickPickItem}. + */ + location?: QuickInputButtonLocation; + + /** + * When present, indicates that the button is a toggle button that can be checked or unchecked. + * + * **Note:** This property is currently only applicable to buttons with {@link QuickInputButtonLocation.Input} location. + * It must be set for such buttons, and the state will be updated when the button is toggled. + * It cannot be set for buttons with other location values. + */ + readonly toggle?: { checked: boolean }; + } +}