diff --git a/src/sql/azdata.proposed.d.ts b/src/sql/azdata.proposed.d.ts index eb9ab370d2..b8bc105470 100644 --- a/src/sql/azdata.proposed.d.ts +++ b/src/sql/azdata.proposed.d.ts @@ -224,8 +224,20 @@ declare module 'azdata' { * Layout of TabbedPanelComponent, can be used to initialize the component when using ModelBuilder */ export interface TabbedPanelLayout { + /** + * Tab orientation + */ orientation: TabOrientation; + + /** + * Whether to show the tab icon + */ showIcon: boolean; + + /** + * Whether to show the tab navigation pane even when there is only one tab + */ + alwaysShowTabs: boolean; } /** @@ -300,7 +312,7 @@ declare module 'azdata' { open(): Thenable; } - export function createModelViewDashboard(title: string): ModelViewDashboard; + export function createModelViewDashboard(title: string, options?: ModelViewDashboardOptions): ModelViewDashboard; } export interface DashboardTab extends Tab { @@ -321,5 +333,17 @@ declare module 'azdata' { */ tabs: DashboardTab[]; } + + export interface ModelViewDashboardOptions { + /** + * Whether to show the tab icon, default is true + */ + showIcon?: boolean; + + /** + * Whether to show the tab navigation pane even when there is only one tab, default is false + */ + alwaysShowTabs?: boolean; + } } diff --git a/src/sql/base/browser/ui/panel/panel.component.ts b/src/sql/base/browser/ui/panel/panel.component.ts index 1dd8dd6543..2510014791 100644 --- a/src/sql/base/browser/ui/panel/panel.component.ts +++ b/src/sql/base/browser/ui/panel/panel.component.ts @@ -28,7 +28,7 @@ export interface IPanelOptions { /** * Whether or not to show the tabs if there is only one tab present */ - showTabsWhenOne?: boolean; + alwaysShowTabs?: boolean; layout?: NavigationBarLayout; showIcon?: boolean; } @@ -39,7 +39,7 @@ export enum NavigationBarLayout { } const defaultOptions: IPanelOptions = { - showTabsWhenOne: true, + alwaysShowTabs: true, layout: NavigationBarLayout.horizontal, showIcon: false }; @@ -50,7 +50,7 @@ let idPool = 0; selector: 'panel', template: `
-
+
diff --git a/src/sql/workbench/api/common/extHostModelViewDialog.ts b/src/sql/workbench/api/common/extHostModelViewDialog.ts index 6ad4798717..90db838a59 100644 --- a/src/sql/workbench/api/common/extHostModelViewDialog.ts +++ b/src/sql/workbench/api/common/extHostModelViewDialog.ts @@ -459,7 +459,8 @@ class WizardImpl implements azdata.window.Wizard { class ModelViewDashboardImpl implements azdata.window.ModelViewDashboard { constructor( - private _editor: ModelViewEditorImpl + private _editor: ModelViewEditorImpl, + private _options?: azdata.ModelViewDashboardOptions ) { } registerTabs(handler: (view: azdata.ModelView) => Thenable<(azdata.DashboardTab | azdata.DashboardTabGroup)[]>): void { @@ -481,7 +482,8 @@ class ModelViewDashboardImpl implements azdata.window.ModelViewDashboard { const tabbedPanel = view.modelBuilder.tabbedPanel().withTabs(tabs).withLayout({ orientation: 'vertical', - showIcon: true + showIcon: this._options?.showIcon ?? true, + alwaysShowTabs: this._options?.alwaysShowTabs ?? false }).component(); return view.initializeModel(tabbedPanel); }); @@ -613,9 +615,9 @@ export class ExtHostModelViewDialog implements ExtHostModelViewDialogShape { return editor; } - public createModelViewDashboard(title: string, extension: IExtensionDescription): azdata.window.ModelViewDashboard { + public createModelViewDashboard(title: string, options: azdata.ModelViewDashboardOptions | undefined, extension: IExtensionDescription): azdata.window.ModelViewDashboard { const editor = this.createModelViewEditor(title, extension, { supportsSave: false }) as ModelViewEditorImpl; - return new ModelViewDashboardImpl(editor); + return new ModelViewDashboardImpl(editor, options); } public updateDialogContent(dialog: azdata.window.Dialog): void { diff --git a/src/sql/workbench/api/common/sqlExtHost.api.impl.ts b/src/sql/workbench/api/common/sqlExtHost.api.impl.ts index 815e1a179e..f24db7e28c 100644 --- a/src/sql/workbench/api/common/sqlExtHost.api.impl.ts +++ b/src/sql/workbench/api/common/sqlExtHost.api.impl.ts @@ -418,8 +418,8 @@ export function createAdsApiFactory(accessor: ServicesAccessor): IAdsExtensionAp createWizard(title: string): azdata.window.Wizard { return extHostModelViewDialog.createWizard(title); }, - createModelViewDashboard(title: string): azdata.window.ModelViewDashboard { - return extHostModelViewDialog.createModelViewDashboard(title, extension); + createModelViewDashboard(title: string, options?: azdata.ModelViewDashboardOptions): azdata.window.ModelViewDashboard { + return extHostModelViewDialog.createModelViewDashboard(title, options, extension); }, MessageLevel: sqlExtHostTypes.MessageLevel }; diff --git a/src/sql/workbench/api/common/sqlExtHostTypes.ts b/src/sql/workbench/api/common/sqlExtHostTypes.ts index 4fd1e5fc49..6bf492e7cf 100644 --- a/src/sql/workbench/api/common/sqlExtHostTypes.ts +++ b/src/sql/workbench/api/common/sqlExtHostTypes.ts @@ -840,4 +840,5 @@ export enum TabOrientation { export interface TabbedPanelLayout { orientation: TabOrientation; showIcon: boolean; + alwaysShowTabs: boolean; } diff --git a/src/sql/workbench/browser/modelComponents/tabbedPanel.component.ts b/src/sql/workbench/browser/modelComponents/tabbedPanel.component.ts index 21b6a98c32..feff21e625 100644 --- a/src/sql/workbench/browser/modelComponents/tabbedPanel.component.ts +++ b/src/sql/workbench/browser/modelComponents/tabbedPanel.component.ts @@ -57,7 +57,7 @@ export default class TabbedPanelComponent extends ContainerBase imple setLayout(layout: TabbedPanelLayout): void { this._panel.options = { - showTabsWhenOne: true, + alwaysShowTabs: layout.alwaysShowTabs, layout: layout.orientation === TabOrientation.Horizontal ? NavigationBarLayout.horizontal : NavigationBarLayout.vertical, showIcon: layout.showIcon }; diff --git a/src/sql/workbench/contrib/dashboard/browser/core/dashboardPage.component.ts b/src/sql/workbench/contrib/dashboard/browser/core/dashboardPage.component.ts index e29bb595b8..dcdcea3574 100644 --- a/src/sql/workbench/contrib/dashboard/browser/core/dashboardPage.component.ts +++ b/src/sql/workbench/contrib/dashboard/browser/core/dashboardPage.component.ts @@ -157,7 +157,7 @@ export abstract class DashboardPage extends AngularDisposable implements IConfig }); this.propertiesWidget = properties ? properties[0] : undefined; this._panel.options = { - showTabsWhenOne: true, + alwaysShowTabs: true, layout: NavigationBarLayout.vertical, showIcon: true }; diff --git a/src/sql/workbench/contrib/jobManagement/browser/agentView.component.ts b/src/sql/workbench/contrib/jobManagement/browser/agentView.component.ts index 8558582912..d9c311893e 100644 --- a/src/sql/workbench/contrib/jobManagement/browser/agentView.component.ts +++ b/src/sql/workbench/contrib/jobManagement/browser/agentView.component.ts @@ -46,7 +46,7 @@ export class AgentViewComponent { public readonly operatorsComponentTitle: string = nls.localize('jobview.Operators', "Operators"); public readonly panelOpt: IPanelOptions = { - showTabsWhenOne: true, + alwaysShowTabs: true, layout: NavigationBarLayout.horizontal, showIcon: true };