TabController
Flex({ mode: 'fill })
sized(Container, 64)
Tab
Tab
Container
Pane
Pane
Pane
// setup state
const controller = new TabController();
const tab1 = new Tab("tab1", new Text(theme, "Label"), {
active: true,
onSelect() { controller.setActive("tab1"); } // explicit control
});
const tab2 = new Tab("tab2", new Text(theme, "Label")); // implicit control
controller.addTabs(tab1, tab2)
const pane1 = new Pane("tab1", new Text(theme, "Pane 1 Content")) // panes don't render if their related tab is inactive
const pane2 = new Pane("tab2", new Text(theme, "Pane 2 Content"))
controller.addPanes(pane1, pane2)
// setup rendering
const frame = new Flex({ mode: "fill" });
const sidebar = new Container()
sidebar.addChild(tab1)
sidebar.addChild(tab2)
const page = new Container()
page.addChild(pane1)
page.addChild(pane2)
frame.addChild(sized(sidebar))
frame.addChild(page)
architecture:
Example usage