pivotick - v2.0.1
    Preparing search index...

    Interface DockTab

    A pane in the bottom dock — one entry in its tab strip.

    The dock owns the region: the grid row, its height, the resize divider and the fold. A tab owns what is in it — a body, and optionally its own header controls, which the dock swaps in and out as the active tab changes. With only one tab registered no strip is drawn at all; there is nothing to switch.

    Register one at any point in the graph's life with graph.UIManager.addDockTab(), or from a plugin's install via ctx.addDockTab(). Either returns a disposer.

    One tab is one pane, not one view of one. A pane with several views of its own — the data table's Nodes and Edges — is a single dock tab that draws its own switch in its toolbar and calls DockTabHandle.refresh to change body. So the dock's strip lists panes (Table, Events) and never flattens one pane's views out alongside another pane; the two levels are drawn differently for the same reason.

    The data table is itself just such a tab, so a registered tab is exactly as privileged as the built-in one.

    const dispose = graph.UIManager.addDockTab({
    label: 'Audit',
    render: () => myAuditPane(),
    toolbar: () => [clearButton],
    })
    interface DockTab {
        icon?: string;
        id?: string;
        label: string;
        onActivate?: (tab: DockTabHandle) => void;
        onDeactivate?: (tab: DockTabHandle) => void;
        order?: number;
        render: (tab: DockTabHandle) => HTMLElement;
        toolbar?: (tab: DockTabHandle) => HTMLElement | HTMLElement[];
    }

    Hierarchy (View Summary)

    Index

    Properties

    icon?: string

    A glyph drawn before the label in the strip, marking where the pane came from.

    An SVG string, injected with innerHTML and not sanitised — it must be trusted, exactly like PivotDefinition.icon. Useful when several tabs are the same kind of pane: four candidate reviews and a data table read as one list of five otherwise.

    id?: string

    Stable identity: what removeDockTab / activateDockTab take, and the data-tab written onto the strip's button.

    an auto-generated pvt-dock-tab-N

    label: string

    The strip's label, used verbatim (so it can be translated).

    onActivate?: (tab: DockTabHandle) => void

    Called when this tab comes to the front, and when it leaves. A tab that watches live data should stop working in onDeactivate and catch up in onActivate: nothing else tells it that it is off screen.

    onDeactivate?: (tab: DockTabHandle) => void
    order?: number

    Display order in the strip, ascending. Equal orders keep registration order — and since plugins install after the UI is built, a plugin's tabs land after the built-in ones without having to say so.

    0
    
    render: (tab: DockTabHandle) => HTMLElement

    Build the pane's body. Called once, lazily, the first time the tab comes to the front — a tab nobody opens costs nothing. The element is kept and re-attached on later activations, so it holds its own state (scroll position included).

    toolbar?: (tab: DockTabHandle) => HTMLElement | HTMLElement[]

    Build this tab's header controls, laid out as part of the dock's header row. Re-invoked on every activation, so the controls can reflect the tab's current state.

    A pane with several views of its own draws the switch here. Two public classes give it the same look the built-in table has — pvt-dock-views on the strip, pvt-dock-view on each button, active on the current one — so it stays a pill group beside the dock's own tabs and follows the theme.