diff --git a/packages/splitview-demo/src/layout-grid/application.tsx b/packages/splitview-demo/src/layout-grid/application.tsx index 9e599c665..c932309c6 100644 --- a/packages/splitview-demo/src/layout-grid/application.tsx +++ b/packages/splitview-demo/src/layout-grid/application.tsx @@ -95,6 +95,7 @@ export const Application = () => { return ( { props.containerApi.setTabHeight(tabHeight); }; + const onRemove = () => { + props.containerApi.setTabHeight(undefined); + }; + return (
); diff --git a/packages/splitview/src/api/component.api.ts b/packages/splitview/src/api/component.api.ts index 25b5342ef..95fd67dfd 100644 --- a/packages/splitview/src/api/component.api.ts +++ b/packages/splitview/src/api/component.api.ts @@ -290,7 +290,7 @@ export class DockviewApi { return this.component.getTabHeight(); } - setTabHeight(height: number) { + setTabHeight(height: number | undefined) { this.component.setTabHeight(height); } diff --git a/packages/splitview/src/dockview/componentDockview.ts b/packages/splitview/src/dockview/componentDockview.ts index 4d97cf069..f40f29d69 100644 --- a/packages/splitview/src/dockview/componentDockview.ts +++ b/packages/splitview/src/dockview/componentDockview.ts @@ -82,7 +82,7 @@ export interface IComponentDockview extends IBaseGrid { fireMouseEvent(event: LayoutMouseEvent): void; createWatermarkComponent(): WatermarkPart; setAutoResizeToFit(enabled: boolean): void; - setTabHeight(height: number): void; + setTabHeight(height: number | undefined): void; getTabHeight(): number; totalPanels: number; // lifecycle @@ -162,9 +162,6 @@ export class ComponentDockview if (!this.options.components) { this.options.components = {}; } - if (typeof this.options.tabHeight !== 'number') { - this.options.tabHeight = DEFAULT_TAB_HEIGHT; - } if (!this.options.frameworkComponents) { this.options.frameworkComponents = {}; } @@ -428,7 +425,7 @@ export class ComponentDockview } const { grid, panels, options, activeGroup } = data; - if (typeof options.tabHeight === 'number') { + if (typeof options?.tabHeight === 'number') { this.setTabHeight(options.tabHeight); } @@ -464,7 +461,7 @@ export class ComponentDockview return true; } - public setTabHeight(height: number) { + public setTabHeight(height: number | undefined) { this.options.tabHeight = height; this.groups.forEach((value) => { value.value.tabHeight = height; diff --git a/packages/splitview/src/dockview/components/tab/defaultTab.scss b/packages/splitview/src/dockview/components/tab/defaultTab.scss index 8912a5cb6..2e686333d 100644 --- a/packages/splitview/src/dockview/components/tab/defaultTab.scss +++ b/packages/splitview/src/dockview/components/tab/defaultTab.scss @@ -31,7 +31,6 @@ padding-left: 10px; white-space: nowrap; text-overflow: elipsis; - font-size: 13px; .tab-content { flex-grow: 1; diff --git a/packages/splitview/src/groupview/titlebar/tabContainer.scss b/packages/splitview/src/groupview/titlebar/tabContainer.scss index 954416a7d..8ceac814b 100644 --- a/packages/splitview/src/groupview/titlebar/tabContainer.scss +++ b/packages/splitview/src/groupview/titlebar/tabContainer.scss @@ -4,6 +4,8 @@ overflow: overlay; flex-shrink: 0; box-sizing: border-box; + height: var(--title-height); + font-size: var(--title-font-size); &.hidden { display: none; @@ -27,7 +29,6 @@ flex-shrink: 0; flex-grow: 1; display: flex; - font-size: 13px; overflow-x: overlay; overflow-y: hidden; diff --git a/packages/splitview/src/groupview/titlebar/tabContainer.ts b/packages/splitview/src/groupview/titlebar/tabContainer.ts index e80feeb05..52e3b8cef 100644 --- a/packages/splitview/src/groupview/titlebar/tabContainer.ts +++ b/packages/splitview/src/groupview/titlebar/tabContainer.ts @@ -5,13 +5,7 @@ import { } from '../../lifecycle'; import { addDisposableListener, Emitter, Event } from '../../events'; import { ITab, Tab } from '../panel/tab/tab'; -import { - removeClasses, - addClasses, - toggleClass, - isInTree, - isAncestor, -} from '../../dom'; +import { removeClasses, addClasses, toggleClass } from '../../dom'; import { hasProcessed, Position } from '../droptarget/droptarget'; import { TabDropEvent } from '../events'; @@ -71,7 +65,16 @@ export class TabContainer extends CompositeDisposable implements ITabContainer { set height(value: number) { this._height = value; - this._element.style.height = `${this.height}px`; + if (typeof value !== 'number') { + // removeClasses(this.element, 'separator-border'); + this.element.style.removeProperty('--title-height'); + } else { + // addClasses(this.element, 'separator-border'); + // if (styles?.separatorBorder) { + this.element.style.setProperty('--title-height', `${value}px`); + // } + } + // this._element.style.height = `${this.height}px`; } public get element() { diff --git a/packages/splitview/src/react/dockview/dockview.tsx b/packages/splitview/src/react/dockview/dockview.tsx index e5e413f8d..7722e1ab6 100644 --- a/packages/splitview/src/react/dockview/dockview.tsx +++ b/packages/splitview/src/react/dockview/dockview.tsx @@ -37,6 +37,7 @@ export interface IDockviewComponentProps { enableExternalDragEvents?: boolean; onTabContextMenu?: (event: TabContextMenuEvent) => void; hideBorders?: boolean; + className?: string; } export const DockviewComponent: React.FunctionComponent = ( @@ -132,7 +133,11 @@ export const DockviewComponent: React.FunctionComponent }, [props.onTabContextMenu]); return ( -
+
{portals}
); diff --git a/packages/splitview/src/react/gridview/gridview.tsx b/packages/splitview/src/react/gridview/gridview.tsx index 898e3a7d7..79b536de9 100644 --- a/packages/splitview/src/react/gridview/gridview.tsx +++ b/packages/splitview/src/react/gridview/gridview.tsx @@ -24,6 +24,7 @@ export interface IGridviewComponentProps { onReady?: (event: GridviewReadyEvent) => void; components?: PanelCollection; hideBorders?: boolean; + className?: string; } export const GridviewComponent: React.FunctionComponent = ( @@ -61,7 +62,11 @@ export const GridviewComponent: React.FunctionComponent }, []); return ( -
+
{portals}
); diff --git a/packages/splitview/src/react/paneview/paneview.tsx b/packages/splitview/src/react/paneview/paneview.tsx index 0d034517b..89624390b 100644 --- a/packages/splitview/src/react/paneview/paneview.tsx +++ b/packages/splitview/src/react/paneview/paneview.tsx @@ -23,6 +23,7 @@ export interface IPaneviewComponentProps { onReady?: (event: PaneviewReadyEvent) => void; components?: PanelCollection; headerComponents?: PanelCollection; + className?: string; } export const PaneviewComponent: React.FunctionComponent = ( @@ -78,7 +79,11 @@ export const PaneviewComponent: React.FunctionComponent }, []); return ( -
+
{portals}
); diff --git a/packages/splitview/src/react/splitview/splitview.tsx b/packages/splitview/src/react/splitview/splitview.tsx index c42b676b9..e39d89e2a 100644 --- a/packages/splitview/src/react/splitview/splitview.tsx +++ b/packages/splitview/src/react/splitview/splitview.tsx @@ -25,6 +25,7 @@ export interface ISplitviewComponentProps { components: PanelCollection; proportionalLayout?: boolean; hideBorders?: boolean; + className?: string; } export const SplitviewComponent: React.FunctionComponent = ( @@ -65,7 +66,11 @@ export const SplitviewComponent: React.FunctionComponent +
{portals}
); diff --git a/packages/splitview/src/theme.scss b/packages/splitview/src/theme.scss index 56ef3a3a7..f049f53cb 100644 --- a/packages/splitview/src/theme.scss +++ b/packages/splitview/src/theme.scss @@ -21,10 +21,15 @@ --tab-dirty-icon: url('https://fonts.gstatic.com/s/i/materialicons/lens/v6/24px.svg'); // --separator-border: rgb(68, 68, 68); + + --title-font-size: 13px; + --title-height: 35px; } .visual-studio-theme { --active-tab-background-visible: dodgerblue; + --title-height: 18px; + --title-font-size: 11px; .groupview { &.active-group {