Layout Manager, Dock Manager & Tile Manager
July 29, 2026 · View on GitHub
Part of the
igniteui-angular-componentsskill hub. For app setup, providers, and import patterns — seesetup.md.
Contents
Layout Manager Directives
The Layout Manager is a pair of Angular directives (igxLayout / igxFlex) that wrap CSS Flexbox. Apply igxLayout to any container to control its children's flow; apply igxFlex to individual children to control their flex properties.
import { IgxLayoutDirective, IgxFlexDirective } from 'igniteui-angular/directives';
<!-- Basic row layout -->
<div igxLayout igxLayoutDir="row" igxLayoutJustify="space-between">
<div igxFlex>Item 1</div>
<div igxFlex>Item 2</div>
<div igxFlex>Item 3</div>
</div>
Common Layout Patterns
App Shell (Sidebar + Content)
<div igxLayout igxLayoutDir="row" style="height: 100vh;">
<!-- Sidebar column -->
<div igxFlex igxFlexGrow="0" igxFlexShrink="0" igxFlexBasis="240px"
igxLayout igxLayoutDir="column" class="sidebar">
<div igxFlex>Nav item 1</div>
<div igxFlex>Nav item 2</div>
</div>
<!-- Main content column -->
<div igxFlex igxLayout igxLayoutDir="column" class="main">
<div igxFlex igxFlexGrow="0" class="header">Header</div>
<div igxFlex class="body">
<!-- Nested row -->
<div igxLayout igxLayoutDir="row">
<div igxFlex>Col 1</div>
<div igxFlex>Col 2</div>
<div igxFlex>Col 3</div>
</div>
</div>
<div igxFlex igxFlexGrow="0" class="footer">Footer</div>
</div>
</div>
Other patterns (centering, wrapping tile grids) follow directly from the directive inputs below — e.g. igxLayoutJustify="center" igxLayoutItemAlign="center" to center, igxLayoutWrap="wrap" + fixed igxFlexBasis children for tile grids.
igxLayout Directive Inputs
| Input | Values | Default | Description |
|---|---|---|---|
igxLayoutDir | 'row' | 'column' | 'row' | Flex direction |
igxLayoutReverse | true | false | false | Reverse flow order |
igxLayoutWrap | 'nowrap' | 'wrap' | 'wrap-reverse' | 'nowrap' | Child wrapping |
igxLayoutJustify | 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around' | 'flex-start' | Main axis alignment |
igxLayoutItemAlign | 'flex-start' | 'center' | 'flex-end' | 'stretch' | 'baseline' | 'stretch' | Cross axis alignment |
igxFlex Directive Inputs
| Input | Type | Default | Description |
|---|---|---|---|
igxFlexGrow | number | 1 | How much the element grows to fill space |
igxFlexShrink | number | 1 | How much the element shrinks when space is limited |
igxFlexBasis | string | 'auto' | Initial main-axis size (e.g., '200px', '30%') |
igxFlexOrder | number | 0 | Visual order among siblings |
Key Rules for Layout Manager
igxLayoutaffects its immediate children only — nest multipleigxLayoutcontainers for deeper control- Combine
igxLayoutDir="column"on the outer container withigxFlexon children to create page shells igxFlexGrow="0"on headers/footers/sidebars prevents them from stretching; leave it at1(default) for the main content area- This is a thin CSS Flexbox wrapper — the container element gets
display: flexapplied
Dock Manager
The Dock Manager is a separate package (igniteui-dockmanager) and is implemented as a Web Component (<igc-dockmanager>). It provides IDE-style dockable, resizable, floating, and tabbed pane layouts. It is a premium (licensed) component.
Installation
npm install igniteui-dockmanager
Setup
Because Dock Manager is a Web Component, it requires two one-time setup steps:
1. Register custom elements — app.config.ts:
import { defineCustomElements } from 'igniteui-dockmanager/loader';
defineCustomElements();
2. Add CUSTOM_ELEMENTS_SCHEMA to every standalone component that uses <igc-dockmanager>:
import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
@Component({
selector: 'app-dock-manager',
templateUrl: './dock-manager.component.html',
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class DockManagerComponent { ... }
Basic Usage
import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import {
IgcDockManagerLayout,
IgcDockManagerPaneType,
IgcSplitPaneOrientation
} from 'igniteui-dockmanager';
@Component({
selector: 'app-dock-manager',
templateUrl: './dock-manager.component.html',
schemas: [CUSTOM_ELEMENTS_SCHEMA],
changeDetection: ChangeDetectionStrategy.OnPush
})
export class DockManagerComponent {
layout: IgcDockManagerLayout = {
rootPane: {
type: IgcDockManagerPaneType.splitPane,
orientation: IgcSplitPaneOrientation.horizontal,
panes: [
{
type: IgcDockManagerPaneType.contentPane,
contentId: 'sidebar',
header: 'Explorer'
},
{
type: IgcDockManagerPaneType.documentHost,
rootPane: {
type: IgcDockManagerPaneType.splitPane,
orientation: IgcSplitPaneOrientation.horizontal,
allowEmpty: true,
panes: [
{
type: IgcDockManagerPaneType.tabGroupPane,
panes: [
{
type: IgcDockManagerPaneType.contentPane,
header: 'File 1',
contentId: 'doc1',
documentOnly: true
},
{
type: IgcDockManagerPaneType.contentPane,
header: 'File 2',
contentId: 'doc2',
documentOnly: true
}
]
}
]
}
},
{
type: IgcDockManagerPaneType.splitPane,
orientation: IgcSplitPaneOrientation.vertical,
size: 280,
panes: [
{
type: IgcDockManagerPaneType.contentPane,
contentId: 'properties',
header: 'Properties'
},
{
type: IgcDockManagerPaneType.contentPane,
contentId: 'output',
header: 'Output',
isPinned: false // starts unpinned (auto-hidden)
}
]
}
]
},
floatingPanes: [
{
type: IgcDockManagerPaneType.splitPane,
orientation: IgcSplitPaneOrientation.horizontal,
floatingWidth: 300,
floatingHeight: 200,
floatingLocation: { x: 200, y: 150 },
panes: [
{
type: IgcDockManagerPaneType.contentPane,
contentId: 'search',
header: 'Search'
}
]
}
]
};
}
<!-- Each slot value matches a contentId in the layout -->
<igc-dockmanager [layout]="layout" style="height: 100vh; display: block;">
<div slot="sidebar">File explorer content</div>
<div slot="doc1">Document 1 content</div>
<div slot="doc2">Document 2 content</div>
<div slot="properties">Properties panel</div>
<div slot="output">Output panel</div>
<div slot="search">Search panel</div>
</igc-dockmanager>
Key Rules for Dock Manager
- Separate package —
igniteui-dockmanageris installed independently ofigniteui-angular - Call
defineCustomElements()fromigniteui-dockmanager/loaderinapp.config.ts— without this the<igc-dockmanager>element renders as an unknown element - Add
CUSTOM_ELEMENTS_SCHEMAto every standalone component or NgModule that uses<igc-dockmanager> - Slot names =
contentIdvalues — theslot="..."attribute on child elements must exactly match thecontentIdstring in the layout - Premium component — requires a licensed Ignite UI subscription; verify availability before recommending to users
- Not part of
igniteui-angular— do not import fromigniteui-angularentry points; all Dock Manager types come fromigniteui-dockmanager
Tile Manager
Docs: Tile Manager (Angular)
Full API Docs: Tile Manager Web Component
The Tile Manager is a layout Web Component that displays content in individual tiles users can rearrange and resize. It is implemented as an igc-tile-manager container with one or more igc-tile children.
Installation
npm install igniteui-webcomponents
Setup
Register the Tile Manager Web Component before bootstrap:
import { defineComponents, IgcTileManagerComponent } from 'igniteui-webcomponents';
defineComponents(IgcTileManagerComponent);
Add CUSTOM_ELEMENTS_SCHEMA to any component using <igc-tile-manager>:
import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
@Component({
selector: 'app-tile-manager',
templateUrl: './tile-manager.component.html',
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class TileManagerComponent { }
Usage
<igc-tile-manager column-count="2" gap="20px" min-column-width="220px" min-row-height="160px"
resize-mode="hover" drag-mode="tile-header">
<igc-tile col-span="2" disable-resize>
<span slot="title">Wide tile</span>
<p>Content spanning two columns</p>
</igc-tile>
<igc-tile row-span="2">
<span slot="title">Tall tile</span>
<p>Content spanning two rows</p>
</igc-tile>
</igc-tile-manager>
igc-tile-manager properties:
column-count: number of grid columns; if omitted or <1, as many columns as fit with a minimum width (200px) are createdgap/min-column-width/min-row-height: spacing and minimum track sizes (e.g.,"20px")resize-mode:"none"|"hover"|"always"— controls tile resizingdrag-mode:"tile"|"tile-header"— enables reordering
igc-tile properties:
row-start/col-startandrow-span/col-span: grid placement and spanningdisable-resize,disable-maximize/disable-fullscreen: opt out of resize / default header actions
Key Rules for Tile Manager
- Web Component package — Tile Manager ships via
igniteui-webcomponents, notigniteui-angular. - Register components — call
defineComponents(IgcTileManagerComponent)once before using<igc-tile-manager>. - Use
CUSTOM_ELEMENTS_SCHEMAon Angular components that host the Tile Manager. - Use slots — header content goes into
slot="title"; additional actions and custom adorners use the documented slots (fullscreen-action,maximize-action,actions,side-adorner,corner-adorner,bottom-adorner). - Treat it as a layout container — use Tile Manager when users need interactive, resizable and re-orderable tiles, not tabular data (use grids for that).
See Also
setup.md— App providers, architecture, all entry pointslayout.md— Tabs, Stepper, Accordion, Splitter, Navigation Drawerdata-display.md— List, Tree, Card and other display componentsfeedback.md— Dialog, Snackbar, Toast, Bannerdirectives.md— Button, Ripple, Tooltip, Drag and Drop