igniteui-angular 21.1.0-rc.4 → 21.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/README.md +29 -0
  2. package/fesm2022/igniteui-angular-grids-core.mjs +5 -3
  3. package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
  4. package/fesm2022/igniteui-angular-grids-grid.mjs +6 -1
  5. package/fesm2022/igniteui-angular-grids-grid.mjs.map +1 -1
  6. package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs +1 -0
  7. package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs.map +1 -1
  8. package/fesm2022/igniteui-angular-grids-lite.mjs +2 -0
  9. package/fesm2022/igniteui-angular-grids-lite.mjs.map +1 -1
  10. package/fesm2022/igniteui-angular-simple-combo.mjs +1 -1
  11. package/fesm2022/igniteui-angular-simple-combo.mjs.map +1 -1
  12. package/lib/core/styles/components/grid/_grid-theme.scss +4 -1
  13. package/migrations/migration-collection.json +7 -0
  14. package/migrations/update-21_1_0_add-agent-skills/index.d.ts +3 -0
  15. package/migrations/update-21_1_0_add-agent-skills/index.js +46 -0
  16. package/package.json +4 -4
  17. package/skills/igniteui-angular-components/SKILL.md +71 -0
  18. package/skills/igniteui-angular-components/references/charts.md +447 -0
  19. package/skills/igniteui-angular-components/references/data-display.md +347 -0
  20. package/skills/igniteui-angular-components/references/directives.md +149 -0
  21. package/skills/igniteui-angular-components/references/feedback.md +141 -0
  22. package/skills/igniteui-angular-components/references/form-controls.md +298 -0
  23. package/skills/igniteui-angular-components/references/layout-manager.md +415 -0
  24. package/skills/igniteui-angular-components/references/layout.md +216 -0
  25. package/skills/igniteui-angular-components/references/setup.md +157 -0
  26. package/skills/igniteui-angular-grids/SKILL.md +110 -0
  27. package/skills/igniteui-angular-grids/references/data-operations.md +436 -0
  28. package/skills/igniteui-angular-grids/references/editing.md +480 -0
  29. package/skills/igniteui-angular-grids/references/features.md +218 -0
  30. package/skills/igniteui-angular-grids/references/paging-remote.md +388 -0
  31. package/skills/igniteui-angular-grids/references/state.md +448 -0
  32. package/skills/igniteui-angular-grids/references/structure.md +290 -0
  33. package/skills/igniteui-angular-grids/references/types.md +428 -0
  34. package/skills/igniteui-angular-theming/SKILL.md +530 -0
  35. package/styles/igniteui-angular-dark.css +1 -1
  36. package/styles/igniteui-angular.css +1 -1
  37. package/styles/igniteui-bootstrap-dark.css +1 -1
  38. package/styles/igniteui-bootstrap-light.css +1 -1
  39. package/styles/igniteui-dark-green.css +1 -1
  40. package/styles/igniteui-fluent-dark-excel.css +1 -1
  41. package/styles/igniteui-fluent-dark-word.css +1 -1
  42. package/styles/igniteui-fluent-dark.css +1 -1
  43. package/styles/igniteui-fluent-light-excel.css +1 -1
  44. package/styles/igniteui-fluent-light-word.css +1 -1
  45. package/styles/igniteui-fluent-light.css +1 -1
  46. package/styles/igniteui-indigo-dark.css +1 -1
  47. package/styles/igniteui-indigo-light.css +1 -1
  48. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  49. package/styles/maps/igniteui-angular.css.map +1 -1
  50. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  51. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  52. package/styles/maps/igniteui-dark-green.css.map +1 -1
  53. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  54. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  55. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  56. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  57. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  58. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  59. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  60. package/styles/maps/igniteui-indigo-light.css.map +1 -1
  61. package/types/igniteui-angular-grids-lite.d.ts +2 -0
@@ -0,0 +1,415 @@
1
+ # Layout Manager & Dock Manager
2
+
3
+ > **Part of the [`igniteui-angular-components`](../SKILL.md) skill hub.**
4
+ > For app setup, providers, and import patterns — see [`setup.md`](./setup.md).
5
+
6
+ ---
7
+
8
+ ## Layout Manager Directives
9
+
10
+ > **Docs:** [Layout Manager](https://www.infragistics.com/products/ignite-ui-angular/angular/components/layout)
11
+
12
+ 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.
13
+
14
+ ```typescript
15
+ import { IgxLayoutDirective, IgxFlexDirective } from 'igniteui-angular/directives';
16
+ ```
17
+
18
+ ```html
19
+ <!-- Basic row layout -->
20
+ <div igxLayout igxLayoutDir="row" igxLayoutJustify="space-between">
21
+ <div igxFlex>Item 1</div>
22
+ <div igxFlex>Item 2</div>
23
+ <div igxFlex>Item 3</div>
24
+ </div>
25
+ ```
26
+
27
+ ### Common Layout Patterns
28
+
29
+ #### App Shell (Sidebar + Content)
30
+
31
+ ```html
32
+ <div igxLayout igxLayoutDir="row" style="height: 100vh;">
33
+
34
+ <!-- Sidebar column -->
35
+ <div igxFlex igxFlexGrow="0" igxFlexShrink="0" igxFlexBasis="240px"
36
+ igxLayout igxLayoutDir="column" class="sidebar">
37
+ <div igxFlex>Nav item 1</div>
38
+ <div igxFlex>Nav item 2</div>
39
+ </div>
40
+
41
+ <!-- Main content column -->
42
+ <div igxFlex igxLayout igxLayoutDir="column" class="main">
43
+ <div igxFlex igxFlexGrow="0" class="header">Header</div>
44
+ <div igxFlex class="body">
45
+ <!-- Nested row -->
46
+ <div igxLayout igxLayoutDir="row">
47
+ <div igxFlex>Col 1</div>
48
+ <div igxFlex>Col 2</div>
49
+ <div igxFlex>Col 3</div>
50
+ </div>
51
+ </div>
52
+ <div igxFlex igxFlexGrow="0" class="footer">Footer</div>
53
+ </div>
54
+
55
+ </div>
56
+ ```
57
+
58
+ #### Centered Content
59
+
60
+ ```html
61
+ <div igxLayout igxLayoutDir="row" igxLayoutJustify="center" igxLayoutItemAlign="center"
62
+ style="height: 100vh;">
63
+ <div igxFlex igxFlexGrow="0">Centered content</div>
64
+ </div>
65
+ ```
66
+
67
+ #### Wrapping Tiles
68
+
69
+ ```html
70
+ <div igxLayout igxLayoutDir="row" igxLayoutWrap="wrap" igxLayoutJustify="flex-start">
71
+ @for (item of items; track item.id) {
72
+ <div igxFlex igxFlexBasis="200px" igxFlexGrow="0" class="tile">
73
+ {{ item.title }}
74
+ </div>
75
+ }
76
+ </div>
77
+ ```
78
+
79
+ ### `igxLayout` Directive Inputs
80
+
81
+ | Input | Values | Default | Description |
82
+ |---|---|---|---|
83
+ | `igxLayoutDir` | `'row'` \| `'column'` | `'row'` | Flex direction |
84
+ | `igxLayoutReverse` | `true` \| `false` | `false` | Reverse flow order |
85
+ | `igxLayoutWrap` | `'nowrap'` \| `'wrap'` \| `'wrap-reverse'` | `'nowrap'` | Child wrapping |
86
+ | `igxLayoutJustify` | `'flex-start'` \| `'center'` \| `'flex-end'` \| `'space-between'` \| `'space-around'` | `'flex-start'` | Main axis alignment |
87
+ | `igxLayoutItemAlign` | `'flex-start'` \| `'center'` \| `'flex-end'` \| `'stretch'` \| `'baseline'` | `'stretch'` | Cross axis alignment |
88
+
89
+ ### `igxFlex` Directive Inputs
90
+
91
+ | Input | Type | Default | Description |
92
+ |---|---|---|---|
93
+ | `igxFlexGrow` | `number` | `1` | How much the element grows to fill space |
94
+ | `igxFlexShrink` | `number` | `1` | How much the element shrinks when space is limited |
95
+ | `igxFlexBasis` | `string` | `'auto'` | Initial main-axis size (e.g., `'200px'`, `'30%'`) |
96
+ | `igxFlexOrder` | `number` | `0` | Visual order among siblings |
97
+
98
+ ### Key Rules for Layout Manager
99
+
100
+ - `igxLayout` affects its **immediate children only** — nest multiple `igxLayout` containers for deeper control
101
+ - Combine `igxLayoutDir="column"` on the outer container with `igxFlex` on children to create page shells
102
+ - `igxFlexGrow="0"` on headers/footers/sidebars prevents them from stretching; leave it at `1` (default) for the main content area
103
+ - This is a thin CSS Flexbox wrapper — the container element gets `display: flex` applied
104
+
105
+ ---
106
+
107
+ ## Dock Manager
108
+
109
+ > **Docs:** [Dock Manager (Angular)](https://www.infragistics.com/products/ignite-ui-angular/angular/components/dock-manager)
110
+ > **Full API Docs:** [Dock Manager Web Component](https://www.infragistics.com/products/ignite-ui-web-components/web-components/components/dock-manager.html)
111
+
112
+ 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.
113
+
114
+ ### Installation
115
+
116
+ ```bash
117
+ npm install igniteui-dockmanager
118
+ ```
119
+
120
+ ### Setup
121
+
122
+ Because Dock Manager is a Web Component, it requires two one-time setup steps:
123
+
124
+ **1. Register custom elements — `main.ts`:**
125
+
126
+ ```typescript
127
+ import { defineCustomElements } from 'igniteui-dockmanager/loader';
128
+
129
+ // Must be called before bootstrapApplication
130
+ defineCustomElements();
131
+ ```
132
+
133
+ **2. Add `CUSTOM_ELEMENTS_SCHEMA` to every standalone component that uses `<igc-dockmanager>`:**
134
+
135
+ ```typescript
136
+ import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
137
+
138
+ @Component({
139
+ selector: 'app-dock-manager',
140
+ templateUrl: './dock-manager.component.html',
141
+ schemas: [CUSTOM_ELEMENTS_SCHEMA]
142
+ })
143
+ export class DockManagerComponent { ... }
144
+ ```
145
+
146
+ ### Basic Usage
147
+
148
+ ```typescript
149
+ import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
150
+ import {
151
+ IgcDockManagerLayout,
152
+ IgcDockManagerPaneType,
153
+ IgcSplitPaneOrientation
154
+ } from 'igniteui-dockmanager';
155
+
156
+ @Component({
157
+ selector: 'app-dock-manager',
158
+ templateUrl: './dock-manager.component.html',
159
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
160
+ changeDetection: ChangeDetectionStrategy.OnPush
161
+ })
162
+ export class DockManagerComponent {
163
+ layout: IgcDockManagerLayout = {
164
+ rootPane: {
165
+ type: IgcDockManagerPaneType.splitPane,
166
+ orientation: IgcSplitPaneOrientation.horizontal,
167
+ panes: [
168
+ {
169
+ type: IgcDockManagerPaneType.contentPane,
170
+ contentId: 'sidebar',
171
+ header: 'Explorer'
172
+ },
173
+ {
174
+ type: IgcDockManagerPaneType.documentHost,
175
+ rootPane: {
176
+ type: IgcDockManagerPaneType.splitPane,
177
+ orientation: IgcSplitPaneOrientation.horizontal,
178
+ allowEmpty: true,
179
+ panes: [
180
+ {
181
+ type: IgcDockManagerPaneType.tabGroupPane,
182
+ panes: [
183
+ {
184
+ type: IgcDockManagerPaneType.contentPane,
185
+ header: 'File 1',
186
+ contentId: 'doc1',
187
+ documentOnly: true
188
+ },
189
+ {
190
+ type: IgcDockManagerPaneType.contentPane,
191
+ header: 'File 2',
192
+ contentId: 'doc2',
193
+ documentOnly: true
194
+ }
195
+ ]
196
+ }
197
+ ]
198
+ }
199
+ },
200
+ {
201
+ type: IgcDockManagerPaneType.splitPane,
202
+ orientation: IgcSplitPaneOrientation.vertical,
203
+ size: 280,
204
+ panes: [
205
+ {
206
+ type: IgcDockManagerPaneType.contentPane,
207
+ contentId: 'properties',
208
+ header: 'Properties'
209
+ },
210
+ {
211
+ type: IgcDockManagerPaneType.contentPane,
212
+ contentId: 'output',
213
+ header: 'Output',
214
+ isPinned: false // starts unpinned (auto-hidden)
215
+ }
216
+ ]
217
+ }
218
+ ]
219
+ },
220
+ floatingPanes: [
221
+ {
222
+ type: IgcDockManagerPaneType.splitPane,
223
+ orientation: IgcSplitPaneOrientation.horizontal,
224
+ floatingWidth: 300,
225
+ floatingHeight: 200,
226
+ floatingLocation: { x: 200, y: 150 },
227
+ panes: [
228
+ {
229
+ type: IgcDockManagerPaneType.contentPane,
230
+ contentId: 'search',
231
+ header: 'Search'
232
+ }
233
+ ]
234
+ }
235
+ ]
236
+ };
237
+ }
238
+ ```
239
+
240
+ ```html
241
+ <!-- Each slot value matches a contentId in the layout -->
242
+ <igc-dockmanager [layout]="layout" style="height: 100vh; display: block;">
243
+ <div slot="sidebar">File explorer content</div>
244
+ <div slot="doc1">Document 1 content</div>
245
+ <div slot="doc2">Document 2 content</div>
246
+ <div slot="properties">Properties panel</div>
247
+ <div slot="output">Output panel</div>
248
+ <div slot="search">Search panel</div>
249
+ </igc-dockmanager>
250
+ ```
251
+
252
+ ### Full Example (from user-provided code)
253
+
254
+ ```typescript
255
+ import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
256
+ import {
257
+ IgcDockManagerLayout,
258
+ IgcDockManagerPaneType,
259
+ IgcSplitPaneOrientation
260
+ } from 'igniteui-dockmanager';
261
+
262
+ @Component({
263
+ selector: 'app-dock-manager',
264
+ templateUrl: './dock-manager.component.html',
265
+ schemas: [CUSTOM_ELEMENTS_SCHEMA]
266
+ })
267
+ export class DockManagerComponent {
268
+ layout: IgcDockManagerLayout = {
269
+ rootPane: {
270
+ type: IgcDockManagerPaneType.splitPane,
271
+ orientation: IgcSplitPaneOrientation.horizontal,
272
+ panes: [
273
+ {
274
+ type: IgcDockManagerPaneType.splitPane,
275
+ orientation: IgcSplitPaneOrientation.vertical,
276
+ panes: [
277
+ { type: IgcDockManagerPaneType.contentPane, contentId: 'content1', header: 'Content Pane 1' },
278
+ { type: IgcDockManagerPaneType.contentPane, contentId: 'content2', header: 'Unpinned Pane 1', isPinned: false }
279
+ ]
280
+ },
281
+ {
282
+ type: IgcDockManagerPaneType.splitPane,
283
+ orientation: IgcSplitPaneOrientation.vertical,
284
+ size: 200,
285
+ panes: [
286
+ {
287
+ type: IgcDockManagerPaneType.documentHost,
288
+ size: 200,
289
+ rootPane: {
290
+ type: IgcDockManagerPaneType.splitPane,
291
+ orientation: IgcSplitPaneOrientation.horizontal,
292
+ allowEmpty: true,
293
+ panes: [
294
+ {
295
+ type: IgcDockManagerPaneType.tabGroupPane,
296
+ panes: [
297
+ { type: IgcDockManagerPaneType.contentPane, header: 'Document 1', contentId: 'content3', documentOnly: true },
298
+ { type: IgcDockManagerPaneType.contentPane, header: 'Document 2', contentId: 'content4', documentOnly: true }
299
+ ]
300
+ }
301
+ ]
302
+ }
303
+ },
304
+ { type: IgcDockManagerPaneType.contentPane, contentId: 'content5', header: 'Unpinned Pane 2', isPinned: false }
305
+ ]
306
+ },
307
+ {
308
+ type: IgcDockManagerPaneType.splitPane,
309
+ orientation: IgcSplitPaneOrientation.vertical,
310
+ panes: [
311
+ {
312
+ type: IgcDockManagerPaneType.tabGroupPane,
313
+ size: 200,
314
+ panes: [
315
+ { type: IgcDockManagerPaneType.contentPane, contentId: 'content6', header: 'Tab 1' },
316
+ { type: IgcDockManagerPaneType.contentPane, contentId: 'content7', header: 'Tab 2' },
317
+ { type: IgcDockManagerPaneType.contentPane, contentId: 'content8', header: 'Tab 3' },
318
+ { type: IgcDockManagerPaneType.contentPane, contentId: 'content9', header: 'Tab 4' },
319
+ { type: IgcDockManagerPaneType.contentPane, contentId: 'content10', header: 'Tab 5' }
320
+ ]
321
+ },
322
+ { type: IgcDockManagerPaneType.contentPane, contentId: 'content11', header: 'Content Pane 2' }
323
+ ]
324
+ }
325
+ ]
326
+ },
327
+ floatingPanes: [
328
+ {
329
+ type: IgcDockManagerPaneType.splitPane,
330
+ orientation: IgcSplitPaneOrientation.horizontal,
331
+ floatingHeight: 150,
332
+ floatingWidth: 250,
333
+ floatingLocation: { x: 300, y: 200 },
334
+ panes: [
335
+ { type: IgcDockManagerPaneType.contentPane, contentId: 'content12', header: 'Floating Pane' }
336
+ ]
337
+ }
338
+ ]
339
+ };
340
+ }
341
+ ```
342
+
343
+ ```html
344
+ <igc-dockmanager [layout]="layout" style="height: 600px;">
345
+ <div slot="content1" class="dockManagerContent">Content 1</div>
346
+ <div slot="content2" class="dockManagerContent">Content 2</div>
347
+ <div slot="content3" class="dockManagerContent">Content 3</div>
348
+ <div slot="content4" class="dockManagerContent">Content 4</div>
349
+ <div slot="content5" class="dockManagerContent">Content 5</div>
350
+ <div slot="content6" class="dockManagerContent">Content 6</div>
351
+ <div slot="content7" class="dockManagerContent">Content 7</div>
352
+ <div slot="content8" class="dockManagerContent">Content 8</div>
353
+ <div slot="content9" class="dockManagerContent">Content 9</div>
354
+ <div slot="content10" class="dockManagerContent">Content 10</div>
355
+ <div slot="content11" class="dockManagerContent">Content 11</div>
356
+ <div slot="content12" class="dockManagerContent">Content 12</div>
357
+ </igc-dockmanager>
358
+ ```
359
+
360
+ ### Pane Types
361
+
362
+ | `IgcDockManagerPaneType` | Purpose |
363
+ |---|---|
364
+ | `splitPane` | Splits space horizontally or vertically between child panes |
365
+ | `contentPane` | A single leaf pane that renders a slotted element via `contentId` |
366
+ | `tabGroupPane` | Groups multiple `contentPane` children as tabs |
367
+ | `documentHost` | A special area for `documentOnly: true` panes (like an editor area) |
368
+
369
+ ### `IgcSplitPaneOrientation`
370
+
371
+ | Value | Layout |
372
+ |---|---|
373
+ | `horizontal` | Children placed left-to-right |
374
+ | `vertical` | Children placed top-to-bottom |
375
+
376
+ ### Key `contentPane` Properties
377
+
378
+ | Property | Type | Description |
379
+ |---|---|---|
380
+ | `contentId` | `string` | Matches the `slot` attribute on the rendered HTML element |
381
+ | `header` | `string` | Tab/title bar label |
382
+ | `isPinned` | `boolean` | `false` = auto-hidden (collapsed to edge); default `true` |
383
+ | `documentOnly` | `boolean` | Restricts pane to `documentHost` areas only |
384
+ | `size` | `number` | Relative size within parent split |
385
+ | `allowClose` | `boolean` | Show close button (default `true`) |
386
+ | `allowPinning` | `boolean` | Allow user to pin/unpin (default `true`) |
387
+ | `allowFloating` | `boolean` | Allow user to float the pane (default `true`) |
388
+
389
+ ### Key `splitPane` / floating pane Properties
390
+
391
+ | Property | Type | Description |
392
+ |---|---|---|
393
+ | `orientation` | `IgcSplitPaneOrientation` | `horizontal` or `vertical` |
394
+ | `size` | `number` | Relative size in the parent split |
395
+ | `allowEmpty` | `boolean` | Allow pane to remain when all children are closed |
396
+ | `floatingWidth` | `number` | Initial width of floating pane (px) |
397
+ | `floatingHeight` | `number` | Initial height of floating pane (px) |
398
+ | `floatingLocation` | `{x, y}` | Initial top-left corner position of floating pane |
399
+
400
+ ### Key Rules for Dock Manager
401
+
402
+ 1. **Separate package** — `igniteui-dockmanager` is installed independently of `igniteui-angular`
403
+ 2. **Call `defineCustomElements()` in `main.ts`** before `bootstrapApplication` — without this the `<igc-dockmanager>` element renders as an unknown element
404
+ 3. **Add `CUSTOM_ELEMENTS_SCHEMA`** to every standalone component or NgModule that uses `<igc-dockmanager>`
405
+ 4. **Slot names = `contentId` values** — the `slot="..."` attribute on child elements must exactly match the `contentId` string in the layout
406
+ 5. **Premium component** — requires a licensed Ignite UI subscription; verify availability before recommending to users
407
+ 6. **Not part of `igniteui-angular`** — do not import from `igniteui-angular` entry points; all Dock Manager types come from `igniteui-dockmanager`
408
+
409
+ ## See Also
410
+
411
+ - [`setup.md`](./setup.md) — App providers, architecture, all entry points
412
+ - [`layout.md`](./layout.md) — Tabs, Stepper, Accordion, Splitter, Navigation Drawer
413
+ - [`data-display.md`](./data-display.md) — List, Tree, Card and other display components
414
+ - [`feedback.md`](./feedback.md) — Dialog, Snackbar, Toast, Banner
415
+ - [`directives.md`](./directives.md) — Button, Ripple, Tooltip, Drag and Drop
@@ -0,0 +1,216 @@
1
+ # Layout Components
2
+
3
+ > **Part of the [`igniteui-angular-components`](../SKILL.md) skill hub.**
4
+ > For app setup, providers, and import patterns — see [`setup.md`](./setup.md).
5
+
6
+ ## Tabs
7
+
8
+ > **Docs:** [Tabs Component](https://www.infragistics.com/products/ignite-ui-angular/angular/components/tabs)
9
+
10
+ ```typescript
11
+ import { IGX_TABS_DIRECTIVES } from 'igniteui-angular/tabs';
12
+ import { IgxIconComponent } from 'igniteui-angular/icon';
13
+ ```
14
+
15
+ ```html
16
+ <igx-tabs [(selectedIndex)]="activeTab">
17
+ <igx-tab-item>
18
+ <igx-tab-header>
19
+ <igx-icon igxTabHeaderIcon>info</igx-icon>
20
+ <span igxTabHeaderLabel>Info</span>
21
+ </igx-tab-header>
22
+ <igx-tab-content>Content for Info tab</igx-tab-content>
23
+ </igx-tab-item>
24
+ <igx-tab-item>
25
+ <igx-tab-header>
26
+ <span igxTabHeaderLabel>Settings</span>
27
+ </igx-tab-header>
28
+ <igx-tab-content>Settings content</igx-tab-content>
29
+ </igx-tab-item>
30
+ </igx-tabs>
31
+ ```
32
+
33
+ Key inputs: `[(selectedIndex)]`, `[tabAlignment]` (`'start'` | `'end'` | `'center'` | `'justify'`), `[disableAnimation]`.
34
+
35
+ ## Bottom Navigation
36
+
37
+ > **Docs:** [Bottom Navigation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/tabbar)
38
+
39
+ ```typescript
40
+ import { IgxBottomNavComponent, IgxBottomNavItemComponent, IgxBottomNavHeaderComponent, IgxBottomNavContentComponent } from 'igniteui-angular/bottom-nav';
41
+ ```
42
+
43
+ ```html
44
+ <igx-bottom-nav [(selectedIndex)]="activeNavItem">
45
+ <igx-bottom-nav-item>
46
+ <igx-bottom-nav-header>
47
+ <igx-icon>home</igx-icon>
48
+ <span>Home</span>
49
+ </igx-bottom-nav-header>
50
+ <igx-bottom-nav-content>Home content</igx-bottom-nav-content>
51
+ </igx-bottom-nav-item>
52
+ <igx-bottom-nav-item>
53
+ <igx-bottom-nav-header>
54
+ <igx-icon>settings</igx-icon>
55
+ <span>Settings</span>
56
+ </igx-bottom-nav-header>
57
+ <igx-bottom-nav-content>Settings content</igx-bottom-nav-content>
58
+ </igx-bottom-nav-item>
59
+ </igx-bottom-nav>
60
+ ```
61
+
62
+ ## Stepper
63
+
64
+ > **Docs:** [Stepper Component](https://www.infragistics.com/products/ignite-ui-angular/angular/components/stepper)
65
+
66
+ ```typescript
67
+ import { IGX_STEPPER_DIRECTIVES } from 'igniteui-angular/stepper';
68
+ ```
69
+
70
+ ```html
71
+ <igx-stepper [linear]="true" [orientation]="'horizontal'">
72
+ <igx-step [completed]="step1Done">
73
+ <div igxStepTitle>Account</div>
74
+ <div igxStepSubtitle>Create your account</div>
75
+ <div igxStepContent>
76
+ <!-- form fields -->
77
+ </div>
78
+ </igx-step>
79
+ <igx-step [optional]="true">
80
+ <div igxStepTitle>Profile</div>
81
+ <div igxStepSubtitle>Optional step</div>
82
+ <div igxStepContent>...</div>
83
+ </igx-step>
84
+ <igx-step>
85
+ <div igxStepTitle>Confirm</div>
86
+ <div igxStepContent>Review and submit</div>
87
+ </igx-step>
88
+ </igx-stepper>
89
+ ```
90
+
91
+ Key inputs: `[linear]`, `[orientation]` (`'horizontal'` | `'vertical'`), `[stepType]` (`'indicator'` | `'title'` | `'full'`), `[animationType]`.
92
+
93
+ Events: `(activeStepChanging)`, `(activeStepChanged)`.
94
+
95
+ Programmatic navigation:
96
+ ```typescript
97
+ stepper = viewChild.required(IgxStepperComponent);
98
+
99
+ next() { this.stepper().next(); }
100
+ prev() { this.stepper().prev(); }
101
+ navigateTo(index: number) { this.stepper().navigateTo(index); }
102
+ ```
103
+
104
+ ## Accordion
105
+
106
+ > **Docs:** [Accordion Component](https://www.infragistics.com/products/ignite-ui-angular/angular/components/accordion)
107
+
108
+ ```typescript
109
+ import { IgxAccordionComponent } from 'igniteui-angular/accordion';
110
+ import { IGX_EXPANSION_PANEL_DIRECTIVES } from 'igniteui-angular/expansion-panel';
111
+ ```
112
+
113
+ ```html
114
+ <igx-accordion [singleBranchExpand]="true">
115
+ <igx-expansion-panel>
116
+ <igx-expansion-panel-header>
117
+ <igx-expansion-panel-title>Panel 1</igx-expansion-panel-title>
118
+ <igx-expansion-panel-description>Subtitle text</igx-expansion-panel-description>
119
+ </igx-expansion-panel-header>
120
+ <igx-expansion-panel-body>
121
+ Content for panel 1
122
+ </igx-expansion-panel-body>
123
+ </igx-expansion-panel>
124
+ <igx-expansion-panel>
125
+ <igx-expansion-panel-header>
126
+ <igx-expansion-panel-title>Panel 2</igx-expansion-panel-title>
127
+ </igx-expansion-panel-header>
128
+ <igx-expansion-panel-body>Content for panel 2</igx-expansion-panel-body>
129
+ </igx-expansion-panel>
130
+ </igx-accordion>
131
+ ```
132
+
133
+ Standalone `igx-expansion-panel` (without accordion):
134
+ ```html
135
+ <igx-expansion-panel [(collapsed)]="isCollapsed">
136
+ <igx-expansion-panel-header>
137
+ <igx-expansion-panel-title>Settings</igx-expansion-panel-title>
138
+ </igx-expansion-panel-header>
139
+ <igx-expansion-panel-body>Content</igx-expansion-panel-body>
140
+ </igx-expansion-panel>
141
+ ```
142
+
143
+ ## Splitter
144
+
145
+ > **Docs:** [Splitter Component](https://www.infragistics.com/products/ignite-ui-angular/angular/components/splitter)
146
+
147
+ ```typescript
148
+ import { IgxSplitterComponent, IgxSplitterPaneComponent, SplitterType } from 'igniteui-angular/splitter';
149
+ ```
150
+
151
+ ```html
152
+ <!-- Horizontal split (side by side) -->
153
+ <igx-splitter [type]="SplitterType.Horizontal" style="height: 400px">
154
+ <igx-splitter-pane [size]="'30%'" [minSize]="'20%'">
155
+ Left panel content
156
+ </igx-splitter-pane>
157
+ <igx-splitter-pane>
158
+ Right panel content
159
+ </igx-splitter-pane>
160
+ </igx-splitter>
161
+
162
+ <!-- Vertical split (top/bottom) -->
163
+ <igx-splitter [type]="SplitterType.Vertical" style="height: 600px">
164
+ <igx-splitter-pane [size]="'50%'">Top panel</igx-splitter-pane>
165
+ <igx-splitter-pane>Bottom panel</igx-splitter-pane>
166
+ </igx-splitter>
167
+ ```
168
+
169
+ ## Navigation Drawer
170
+
171
+ > **Docs:** [Navigation Drawer](https://www.infragistics.com/products/ignite-ui-angular/angular/components/navdrawer)
172
+
173
+ ```typescript
174
+ import { IgxNavigationDrawerComponent, IgxNavDrawerItemDirective, IgxNavDrawerTemplateDirective, IgxNavDrawerMiniTemplateDirective } from 'igniteui-angular/navigation-drawer';
175
+ import { IgxIconComponent } from 'igniteui-angular/icon';
176
+ import { IgxRippleDirective } from 'igniteui-angular/directives';
177
+ ```
178
+
179
+ ```html
180
+ <igx-nav-drawer #drawer [isOpen]="drawerOpen" [pinThreshold]="1024" [pin]="isDesktop">
181
+ <ng-template igxDrawer>
182
+ <nav>
183
+ <span igxDrawerItem [isHeader]="true">Navigation</span>
184
+ <span igxDrawerItem igxRipple [active]="activeRoute === 'home'" routerLink="/home">
185
+ <igx-icon>home</igx-icon>
186
+ <span>Home</span>
187
+ </span>
188
+ <span igxDrawerItem igxRipple [active]="activeRoute === 'settings'" routerLink="/settings">
189
+ <igx-icon>settings</igx-icon>
190
+ <span>Settings</span>
191
+ </span>
192
+ </nav>
193
+ </ng-template>
194
+ <!-- Mini mode (icons only, shown when drawer is collapsed but pinned) -->
195
+ <ng-template igxDrawerMini>
196
+ <span igxDrawerItem igxRipple routerLink="/home"><igx-icon>home</igx-icon></span>
197
+ <span igxDrawerItem igxRipple routerLink="/settings"><igx-icon>settings</igx-icon></span>
198
+ </ng-template>
199
+ </igx-nav-drawer>
200
+
201
+ <button igxButton (click)="drawer.toggle()">Toggle Menu</button>
202
+ ```
203
+
204
+ Key inputs: `[isOpen]`, `[pin]` (dock to content), `[pinThreshold]` (auto-pin at viewport width), `[width]`, `[miniWidth]`.
205
+
206
+ Events: `(opened)`, `(closed)`, `(pinChange)`.
207
+
208
+ > **AGENT INSTRUCTION:** The Navigation Drawer uses the Ignite UI overlay/animation system — ensure `provideAnimations()` is in `app.config.ts`.
209
+
210
+ ## See Also
211
+
212
+ - [`setup.md`](./setup.md) — App providers, architecture, all entry points
213
+ - [`form-controls.md`](./form-controls.md) — Input Group, Combo, Select, Date/Time Pickers, Calendar, Checkbox, Radio, Switch, Slider
214
+ - [`data-display.md`](./data-display.md) — List, Tree, Card and other display components
215
+ - [`feedback.md`](./feedback.md) — Dialog, Snackbar, Toast, Banner
216
+ - [`directives.md`](./directives.md) — Button, Ripple, Tooltip, Drag and Drop