igniteui-cli 15.1.0 → 15.2.1-alpha.3
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.
- package/lib/PromptSession.d.ts +1 -1
- package/lib/PromptSession.js +2 -2
- package/lib/commands/ai-config.d.ts +3 -5
- package/lib/commands/ai-config.js +68 -23
- package/lib/commands/new.js +1 -1
- package/package.json +4 -4
- package/templates/blazor/igb/index.d.ts +1 -0
- package/templates/blazor/igb/index.js +12 -0
- package/templates/blazor/igb/projects/ai-config/files/AGENTS.md +65 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/AGENTS.md +65 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/README.md +61 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/SKILL.md +118 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/charts.md +302 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/data-display.md +350 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/feedback.md +178 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/form-controls.md +365 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/layout-manager.md +180 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/layout.md +322 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/mcp-setup.md +78 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/setup.md +214 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-generate-from-image-design/SKILL.md +284 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-generate-from-image-design/references/component-mapping.md +281 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-generate-from-image-design/references/gotchas.md +503 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/SKILL.md +188 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/data-operations.md +264 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/editing.md +297 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/features.md +447 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/mcp-setup.md +78 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/paging-remote.md +299 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/sizing.md +284 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/state.md +160 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/structure.md +497 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/types.md +553 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-theming/SKILL.md +259 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-theming/references/common-patterns.md +276 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-theming/references/mcp-setup.md +81 -0
- package/templates/blazor/igb/projects/ai-config/index.d.ts +22 -0
- package/templates/blazor/igb/projects/ai-config/index.js +62 -0
- package/templates/blazor/index.d.ts +3 -0
- package/templates/blazor/index.js +11 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
# Layout Manager Components - Dock Manager & Tile Manager
|
|
2
|
+
|
|
3
|
+
> **Part of the [`igniteui-blazor-components`](../SKILL.md) skill hub.**
|
|
4
|
+
> For project setup and module registration - see [`setup.md`](./setup.md).
|
|
5
|
+
|
|
6
|
+
## Contents
|
|
7
|
+
|
|
8
|
+
- [Dock Manager](#dock-manager)
|
|
9
|
+
- [Basic Setup](#basic-setup)
|
|
10
|
+
- [Pane Types](#pane-types)
|
|
11
|
+
- [Layout Serialization](#layout-serialization)
|
|
12
|
+
- [Events](#events)
|
|
13
|
+
- [Tile Manager](#tile-manager)
|
|
14
|
+
- [Key Rules](#key-rules)
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Overview
|
|
19
|
+
This reference gives high-level guidance on when to use each layout manager component, their key features, and common API members. For detailed documentation, call `get_doc` from `igniteui-cli`; use `search_api` and `get_api_reference` for Blazor API details.
|
|
20
|
+
|
|
21
|
+
## Dock Manager
|
|
22
|
+
|
|
23
|
+
> **Docs:** [Dock Manager](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/layouts/dock-manager)
|
|
24
|
+
|
|
25
|
+
Dock Manager provides an IDE-like dockable pane layout. Users can drag panes to dock, float, pin/unpin, and close them at runtime.
|
|
26
|
+
|
|
27
|
+
```csharp
|
|
28
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbDockManagerModule));
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Basic Setup
|
|
32
|
+
|
|
33
|
+
Dock Manager uses a C# layout object graph to define pane structure. Pane content is projected via named slots.
|
|
34
|
+
|
|
35
|
+
```razor
|
|
36
|
+
<IgbDockManager @ref="DockRef" Layout="DockLayout" style="height: 600px;">
|
|
37
|
+
<!-- Content slots - the slot name matches IgbContentPane.ContentId -->
|
|
38
|
+
<div slot="panel1">Panel 1 Content</div>
|
|
39
|
+
<div slot="panel2">Panel 2 Content</div>
|
|
40
|
+
<div slot="panel3">Panel 3 Content</div>
|
|
41
|
+
</IgbDockManager>
|
|
42
|
+
|
|
43
|
+
@code {
|
|
44
|
+
IgbDockManager DockRef { get; set; }
|
|
45
|
+
|
|
46
|
+
IgbDockManagerLayout DockLayout { get; set; } = new IgbDockManagerLayout
|
|
47
|
+
{
|
|
48
|
+
RootPane = new IgbSplitPane
|
|
49
|
+
{
|
|
50
|
+
PaneType = DockManagerPaneType.SplitPane,
|
|
51
|
+
Orientation = SplitPaneOrientation.Horizontal,
|
|
52
|
+
Panes = new()
|
|
53
|
+
{
|
|
54
|
+
new IgbTabGroupPane
|
|
55
|
+
{
|
|
56
|
+
PaneType = DockManagerPaneType.TabGroupPane,
|
|
57
|
+
Panes = new List<IgbContentPane>
|
|
58
|
+
{
|
|
59
|
+
new IgbContentPane
|
|
60
|
+
{
|
|
61
|
+
PaneType = DockManagerPaneType.ContentPane,
|
|
62
|
+
ContentId = "panel1",
|
|
63
|
+
Header = "Panel 1"
|
|
64
|
+
},
|
|
65
|
+
new IgbContentPane
|
|
66
|
+
{
|
|
67
|
+
PaneType = DockManagerPaneType.ContentPane,
|
|
68
|
+
ContentId = "panel2",
|
|
69
|
+
Header = "Panel 2"
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
new IgbContentPane
|
|
74
|
+
{
|
|
75
|
+
PaneType = DockManagerPaneType.ContentPane,
|
|
76
|
+
ContentId = "panel3",
|
|
77
|
+
Header = "Panel 3",
|
|
78
|
+
Size = 250
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Pane Types
|
|
87
|
+
|
|
88
|
+
| Class | Description |
|
|
89
|
+
|---|---|
|
|
90
|
+
| `IgbSplitPane` | Container that splits horizontally or vertically into child panes |
|
|
91
|
+
| `IgbTabGroupPane` | Container that groups content panes into tabs |
|
|
92
|
+
| `IgbContentPane` | Leaf pane with actual content (maps to a named slot) |
|
|
93
|
+
|
|
94
|
+
Key properties on `IgbContentPane`:
|
|
95
|
+
|
|
96
|
+
| Property | Type | Description |
|
|
97
|
+
|---|---|---|
|
|
98
|
+
| `ContentId` | `string` | Must match the `slot` name on the projected content element |
|
|
99
|
+
| `Header` | `string` | Pane tab header title |
|
|
100
|
+
| `Size` | `double` | Initial size (pixels or percentage depending on parent) |
|
|
101
|
+
| `AllowClose` | `bool` | Shows/hides the close button (default: `true`) |
|
|
102
|
+
| `AllowPinning` | `bool` | Allows pin/unpin (default: `true`) |
|
|
103
|
+
| `AllowMaximize` | `bool` | Allows maximize (default: `true`) |
|
|
104
|
+
| `AllowFloating` | `bool` | Allows tearing off into a floating window (default: `true`) |
|
|
105
|
+
| `IsPinned` | `bool` | Set to `false` to start as an unpinned (collapsed to edge) pane |
|
|
106
|
+
| `Floating` | `bool` | Starts as a floating window |
|
|
107
|
+
| `FloatingLocation` | `IgbDockManagerPoint` | Initial position of a floating pane |
|
|
108
|
+
| `FloatingWidth` | `double` | Initial width of a floating pane |
|
|
109
|
+
| `FloatingHeight` | `double` | Initial height of a floating pane |
|
|
110
|
+
|
|
111
|
+
Key properties on `IgbSplitPane`:
|
|
112
|
+
|
|
113
|
+
| Property | Type | Description |
|
|
114
|
+
|---|---|---|
|
|
115
|
+
| `Orientation` | `SplitPaneOrientation` | `Horizontal` or `Vertical` |
|
|
116
|
+
| `Panes` | pane collection | Child panes. Use the exact collection type and initialization style shown in the current MCP docs. |
|
|
117
|
+
| `Size` | `double` | Size in parent context |
|
|
118
|
+
|
|
119
|
+
### Layout Serialization
|
|
120
|
+
|
|
121
|
+
Persisting a Dock Manager layout is version-sensitive. The current `dock-manager` MCP overview documents the layout object graph, pane content slots, styling, and keyboard behavior; it does not show a verified Blazor serialization sample in this reference. Before generating persistence code, inspect the current installed API and use only the documented event signatures and methods for that version.
|
|
122
|
+
|
|
123
|
+
> **AGENT INSTRUCTION - Layout serialization:** The serialized JSON contains only pane structure and positions. It does **not** serialize the slot content. The slot content markup must remain static in the Razor template; only pane arrangement changes at runtime.
|
|
124
|
+
|
|
125
|
+
### Events
|
|
126
|
+
|
|
127
|
+
| Event | Description |
|
|
128
|
+
|---|---|
|
|
129
|
+
| `LayoutChange` | Fires when the layout is modified by user interaction (drag, close, resize) |
|
|
130
|
+
| `PaneClose` | Fires when a pane is closed; `e.Detail.Panes` contains the closed pane(s) |
|
|
131
|
+
| `ActivePaneChange` | Fires when the active (focused) pane changes |
|
|
132
|
+
| `Splitter Resize` | Fires while a splitter is being dragged |
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Tile Manager
|
|
137
|
+
|
|
138
|
+
> **Docs:** [Tile Manager](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/layouts/tile-manager)
|
|
139
|
+
|
|
140
|
+
Tile Manager provides a resizable, draggable tile/widget dashboard layout.
|
|
141
|
+
|
|
142
|
+
```csharp
|
|
143
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbTileManagerModule));
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
```razor
|
|
147
|
+
<IgbTileManager ColumnCount="4" Gap="8px" ResizeMode="@TileManagerResizeMode.Always" DragMode="@TileManagerDragMode.TileHeader">
|
|
148
|
+
<IgbTile ColSpan="2" RowSpan="1">
|
|
149
|
+
<span slot="title">Revenue Chart</span>
|
|
150
|
+
<!-- tile content -->
|
|
151
|
+
</IgbTile>
|
|
152
|
+
<IgbTile ColSpan="1" RowSpan="2">
|
|
153
|
+
<span slot="title">KPIs</span>
|
|
154
|
+
<!-- tile content -->
|
|
155
|
+
</IgbTile>
|
|
156
|
+
<IgbTile ColSpan="1">
|
|
157
|
+
<span slot="title">Recent Orders</span>
|
|
158
|
+
<!-- tile content -->
|
|
159
|
+
</IgbTile>
|
|
160
|
+
</IgbTileManager>
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Key attributes on `IgbTileManager`: `ColumnCount`, `Gap` (CSS length string such as `"8px"`), `MinColumnWidth`, `MinRowHeight`, `ResizeMode` (`TileManagerResizeMode.*`), `DragMode` (`TileManagerDragMode.*`).
|
|
164
|
+
|
|
165
|
+
Key attributes on `IgbTile`: `ColSpan`, `RowSpan`, `ColStart`, `RowStart`, `DisableFullscreen`, `DisableMaximize`, `DisableResize`.
|
|
166
|
+
|
|
167
|
+
Slots on `IgbTile`: `title` (header), `actions` (header action buttons), `fullscreen-action`, `maximize-action`, `side-adorner`, `corner-adorner`, `bottom-adorner`. Default slot = tile body content.
|
|
168
|
+
|
|
169
|
+
Methods on `IgbTileManager`: `SaveLayout()` and `LoadLayout(string)` persist tile order, size, and position. Tile content is not serialized.
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Key Rules
|
|
174
|
+
|
|
175
|
+
1. **`IgbContentPane.ContentId` must exactly match the `slot` attribute of the projected HTML element.** A mismatch causes the pane to render empty.
|
|
176
|
+
2. **Dock Manager must have an explicit height** (via CSS or inline style). Without a height it renders as 0px.
|
|
177
|
+
3. **Layout serialization only persists structure, not content.** Slot content is always defined in Razor markup.
|
|
178
|
+
4. **`IgbTileManager` uses CSS Grid internally.** Set `ColumnCount` to control the number of columns.
|
|
179
|
+
5. **Do not invent Dock Manager serialization APIs.** Use `dock-manager` and the installed API before writing persistence code.
|
|
180
|
+
6. **Tile Manager serialization uses `SaveLayout()` / `LoadLayout(string)`.** The saved payload stores tile layout properties, not tile content.
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
# Layout & Navigation Components
|
|
2
|
+
|
|
3
|
+
> **Part of the [`igniteui-blazor-components`](../SKILL.md) skill hub.**
|
|
4
|
+
> For project setup and module registration - see [`setup.md`](./setup.md).
|
|
5
|
+
|
|
6
|
+
## Contents
|
|
7
|
+
|
|
8
|
+
- [Tabs](#tabs)
|
|
9
|
+
- [Stepper](#stepper)
|
|
10
|
+
- [Accordion & Expansion Panel](#accordion--expansion-panel)
|
|
11
|
+
- [Navbar](#navbar)
|
|
12
|
+
- [Navigation Drawer](#navigation-drawer)
|
|
13
|
+
- [Tree](#tree)
|
|
14
|
+
- [Key Rules](#key-rules)
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Overview
|
|
19
|
+
This reference gives high-level guidance on layout and navigation components, their key features, and common API members. For detailed documentation, call `get_doc` from `igniteui-cli`; use `search_api` and `get_api_reference` for Blazor API details.
|
|
20
|
+
|
|
21
|
+
## Tabs
|
|
22
|
+
|
|
23
|
+
> **Docs:** [Tabs](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/layouts/tabs)
|
|
24
|
+
|
|
25
|
+
```csharp
|
|
26
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbTabsModule));
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
```razor
|
|
30
|
+
<IgbTabs>
|
|
31
|
+
<IgbTab Label="Tab 1">
|
|
32
|
+
<span>Content for tab 1</span>
|
|
33
|
+
</IgbTab>
|
|
34
|
+
<IgbTab Label="Tab 2">
|
|
35
|
+
<span>Content for tab 2</span>
|
|
36
|
+
</IgbTab>
|
|
37
|
+
<IgbTab>
|
|
38
|
+
<div slot="label">Tab 3</div>
|
|
39
|
+
<span>Content for tab 3</span>
|
|
40
|
+
</IgbTab>
|
|
41
|
+
</IgbTabs>
|
|
42
|
+
```
|
|
43
|
+
Tab text can be set either as simple string using the `Label` property or by assigning children to the `label` slot. Any remaining children in the default slot are rendered as the tab content.
|
|
44
|
+
|
|
45
|
+
For icon tabs, use the `label` slot inside `IgbTab`:
|
|
46
|
+
|
|
47
|
+
```razor
|
|
48
|
+
<IgbTab>
|
|
49
|
+
<IgbIcon slot="label" IconName="home" Collection="material" />
|
|
50
|
+
Home
|
|
51
|
+
</IgbTab>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Key attributes on `IgbTabs`: `Alignment` (`TabsAlignment.Start` / `End` / `Center` / `Justify`), `Activation` (`TabsActivation.Auto` / `Manual`). On `IgbTab`: `Label`, `Disabled`, `Selected`.
|
|
55
|
+
|
|
56
|
+
Events on `IgbTabs`: `Change` - fires when the selected tab changes.
|
|
57
|
+
|
|
58
|
+
CSS parts: `headers`, `headers-content`, `headers-wrapper`, `header`, `selected-indicator`, `content`.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Stepper
|
|
63
|
+
|
|
64
|
+
> **Docs:** [Stepper](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/layouts/stepper)
|
|
65
|
+
|
|
66
|
+
```csharp
|
|
67
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbStepperModule));
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
```razor
|
|
71
|
+
<IgbStepper Linear="true" Orientation="StepperOrientation.Horizontal" @ref="StepperRef">
|
|
72
|
+
<IgbStep>
|
|
73
|
+
<span slot="title">Personal Info</span>
|
|
74
|
+
<!-- step content -->
|
|
75
|
+
<IgbInput Label="Name" />
|
|
76
|
+
</IgbStep>
|
|
77
|
+
<IgbStep>
|
|
78
|
+
<span slot="title">Address</span>
|
|
79
|
+
<!-- step content -->
|
|
80
|
+
</IgbStep>
|
|
81
|
+
<IgbStep>
|
|
82
|
+
<span slot="title">Confirm</span>
|
|
83
|
+
<!-- step content -->
|
|
84
|
+
</IgbStep>
|
|
85
|
+
</IgbStepper>
|
|
86
|
+
|
|
87
|
+
@code {
|
|
88
|
+
IgbStepper StepperRef { get; set; }
|
|
89
|
+
|
|
90
|
+
void GoNext() => StepperRef.Next();
|
|
91
|
+
void GoPrev() => StepperRef.Prev();
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Key attributes on `IgbStepper`: `Linear` (prevents skipping steps), `Orientation` (`StepperOrientation.Horizontal` / `Vertical`), `StepType` (`StepperStepType.Indicator` / `Title` / `Full`), `TitlePosition` (`StepperTitlePosition.Bottom` / `Top` / `End` / `Start`), `HorizontalAnimation`, `VerticalAnimation`, `AnimationDuration`.
|
|
96
|
+
|
|
97
|
+
Key attributes on `IgbStep`: `Complete`, `Optional`, `Disabled`, `Invalid`, `Active`.
|
|
98
|
+
|
|
99
|
+
Slots on `IgbStep`: `indicator` (custom icon/number), `title`, `subtitle`.
|
|
100
|
+
|
|
101
|
+
Methods on `IgbStepper`: `Next()`, `Prev()`, `NavigateTo(index)`, `Reset()`.
|
|
102
|
+
|
|
103
|
+
Events: `ActiveStepChanging` (cancellable), `ActiveStepChanged`.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Accordion & Expansion Panel
|
|
108
|
+
|
|
109
|
+
> **Docs:** [Accordion](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/layouts/accordion), [Expansion Panel](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/layouts/expansion-panel)
|
|
110
|
+
|
|
111
|
+
```csharp
|
|
112
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbAccordionModule));
|
|
113
|
+
// IgbExpansionPanel is included in IgbAccordionModule
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
```razor
|
|
117
|
+
<!-- Accordion (wraps multiple expansion panels) -->
|
|
118
|
+
<IgbAccordion SingleExpand="true">
|
|
119
|
+
<IgbExpansionPanel>
|
|
120
|
+
<span slot="title">Section 1</span>
|
|
121
|
+
<span slot="subtitle">Optional subtitle</span>
|
|
122
|
+
<p>Content for section 1.</p>
|
|
123
|
+
</IgbExpansionPanel>
|
|
124
|
+
<IgbExpansionPanel Open="true">
|
|
125
|
+
<span slot="title">Section 2</span>
|
|
126
|
+
<p>Content for section 2.</p>
|
|
127
|
+
</IgbExpansionPanel>
|
|
128
|
+
</IgbAccordion>
|
|
129
|
+
|
|
130
|
+
<!-- Standalone expansion panel -->
|
|
131
|
+
<IgbExpansionPanel @ref="PanelRef">
|
|
132
|
+
<span slot="title">Details</span>
|
|
133
|
+
<p>Expanded content here.</p>
|
|
134
|
+
</IgbExpansionPanel>
|
|
135
|
+
|
|
136
|
+
@code {
|
|
137
|
+
IgbExpansionPanel PanelRef { get; set; }
|
|
138
|
+
void Toggle() => PanelRef.Toggle();
|
|
139
|
+
}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Key attributes on `IgbAccordion`: `SingleExpand` (only one panel open at a time). On `IgbExpansionPanel`: `Open`, `Disabled`.
|
|
143
|
+
|
|
144
|
+
Slots on `IgbExpansionPanel`: `title`, `subtitle`, `indicator` (custom expand icon).
|
|
145
|
+
|
|
146
|
+
Events on `IgbExpansionPanel`: `Opening` (cancellable), `Opened`, `Closing` (cancellable), `Closed`.
|
|
147
|
+
|
|
148
|
+
Methods: `Show()`, `Hide()`, `Toggle()`.
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Navbar
|
|
153
|
+
|
|
154
|
+
> **Docs:** [Navbar](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/menus/navbar)
|
|
155
|
+
|
|
156
|
+
```csharp
|
|
157
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbNavbarModule));
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
```razor
|
|
161
|
+
<IgbNavbar>
|
|
162
|
+
<IgbIconButton slot="start" IconName="menu" Collection="material" @onclick="() => DrawerRef.Toggle()" />
|
|
163
|
+
<h3>My Application</h3>
|
|
164
|
+
<IgbIconButton slot="end" IconName="search" Collection="material" />
|
|
165
|
+
<IgbIconButton slot="end" IconName="more_vert" Collection="material" />
|
|
166
|
+
</IgbNavbar>
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Slots: `start` (left content, e.g., menu button), `end` (right content, e.g., action icons). The default slot is used for the title.
|
|
170
|
+
|
|
171
|
+
CSS parts: `base`, `start`, `middle`, `end`.
|
|
172
|
+
|
|
173
|
+
Required theme CSS:
|
|
174
|
+
|
|
175
|
+
```html
|
|
176
|
+
<link href="_content/IgniteUI.Blazor/themes/light/bootstrap.css" rel="stylesheet" />
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
> **AGENT INSTRUCTION:** Register icons used by `IgbNavbar` and `IgbIconButton` before relying on them in samples. Call `await iconRef.EnsureReady()` before `RegisterIconAsync()` or `RegisterIconFromTextAsync()`.
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Navigation Drawer
|
|
184
|
+
|
|
185
|
+
> **Docs:** [Navigation Drawer](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/menus/navigation-drawer)
|
|
186
|
+
|
|
187
|
+
```csharp
|
|
188
|
+
builder.Services.AddIgniteUIBlazor(
|
|
189
|
+
typeof(IgbNavDrawerModule),
|
|
190
|
+
typeof(IgbNavDrawerItemModule),
|
|
191
|
+
typeof(IgbNavDrawerHeaderItemModule)
|
|
192
|
+
);
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
```razor
|
|
196
|
+
<IgbNavDrawer @ref="DrawerRef" Open="true">
|
|
197
|
+
<IgbNavDrawerHeaderItem>My App</IgbNavDrawerHeaderItem>
|
|
198
|
+
|
|
199
|
+
<IgbNavDrawerItem @ref="HomeItem" @onclick="() => Activate(HomeItem)">
|
|
200
|
+
<IgbIcon slot="icon" IconName="home" Collection="material" />
|
|
201
|
+
<span slot="content">Home</span>
|
|
202
|
+
</IgbNavDrawerItem>
|
|
203
|
+
|
|
204
|
+
<IgbNavDrawerItem @ref="SearchItem" @onclick="() => Activate(SearchItem)">
|
|
205
|
+
<IgbIcon slot="icon" IconName="search" Collection="material" />
|
|
206
|
+
<span slot="content">Search</span>
|
|
207
|
+
</IgbNavDrawerItem>
|
|
208
|
+
</IgbNavDrawer>
|
|
209
|
+
|
|
210
|
+
<IgbIconButton IconName="menu" Collection="material" @onclick="() => DrawerRef.Toggle()" />
|
|
211
|
+
|
|
212
|
+
@code {
|
|
213
|
+
IgbNavDrawer DrawerRef { get; set; }
|
|
214
|
+
IgbNavDrawerItem HomeItem { get; set; }
|
|
215
|
+
IgbNavDrawerItem SearchItem { get; set; }
|
|
216
|
+
|
|
217
|
+
List<IgbNavDrawerItem> AllItems => new() { HomeItem, SearchItem };
|
|
218
|
+
|
|
219
|
+
void Activate(IgbNavDrawerItem item)
|
|
220
|
+
{
|
|
221
|
+
item.Active = true;
|
|
222
|
+
foreach (var i in AllItems.Where(x => x != item))
|
|
223
|
+
i.Active = false;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
Navbar integration:
|
|
229
|
+
|
|
230
|
+
```razor
|
|
231
|
+
<IgbNavbar>
|
|
232
|
+
<IgbIconButton slot="start" IconName="menu" Collection="material" @onclick="() => DrawerRef.Show()" />
|
|
233
|
+
<span>Home</span>
|
|
234
|
+
</IgbNavbar>
|
|
235
|
+
|
|
236
|
+
<IgbNavDrawer @ref="DrawerRef" Open="true" Position="NavDrawerPosition.Start">
|
|
237
|
+
<IgbNavDrawerHeaderItem>Navigation</IgbNavDrawerHeaderItem>
|
|
238
|
+
|
|
239
|
+
<IgbNavDrawerItem @ref="HomeItem" @onclick="() => Activate(HomeItem)">
|
|
240
|
+
<IgbIcon slot="icon" IconName="home" Collection="material" />
|
|
241
|
+
<span slot="content">Home</span>
|
|
242
|
+
</IgbNavDrawerItem>
|
|
243
|
+
|
|
244
|
+
<IgbNavDrawerItem @ref="SearchItem" @onclick="() => Activate(SearchItem)">
|
|
245
|
+
<IgbIcon slot="icon" IconName="search" Collection="material" />
|
|
246
|
+
<span slot="content">Search</span>
|
|
247
|
+
</IgbNavDrawerItem>
|
|
248
|
+
</IgbNavDrawer>
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
Mini variant:
|
|
252
|
+
|
|
253
|
+
```razor
|
|
254
|
+
<IgbNavDrawer @ref="DrawerRef" Open="true">
|
|
255
|
+
<IgbNavDrawerHeaderItem>Navigation</IgbNavDrawerHeaderItem>
|
|
256
|
+
|
|
257
|
+
<IgbNavDrawerItem>
|
|
258
|
+
<IgbIcon slot="icon" IconName="home" Collection="material" />
|
|
259
|
+
<span slot="content">Home</span>
|
|
260
|
+
</IgbNavDrawerItem>
|
|
261
|
+
|
|
262
|
+
<div slot="mini">
|
|
263
|
+
<IgbNavDrawerItem>
|
|
264
|
+
<IgbIcon slot="icon" IconName="home" Collection="material" />
|
|
265
|
+
</IgbNavDrawerItem>
|
|
266
|
+
</div>
|
|
267
|
+
</IgbNavDrawer>
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
Key attributes on `IgbNavDrawer`: `Open`, `Position` (`NavDrawerPosition.Start` / `End` / `Top` / `Bottom`). Use the `mini` slot to provide collapsed icon-only content.
|
|
271
|
+
|
|
272
|
+
Methods: `Show()`, `Hide()`, `Toggle()`.
|
|
273
|
+
|
|
274
|
+
CSS parts: `base`, `main`, `mini`.
|
|
275
|
+
|
|
276
|
+
> **AGENT INSTRUCTION - IgbNavDrawer shadow DOM mechanics:**
|
|
277
|
+
>
|
|
278
|
+
> Regardless of `Open` state or `style` on the host, `::part(base)` is always rendered as `position: fixed; transform: translateX(-Npx)`. When the component considers itself closed it also sets `inert` on `::part(base)`. The host element itself contributes `width: 0` to the layout because the fixed part takes no space.
|
|
279
|
+
>
|
|
280
|
+
> This means:
|
|
281
|
+
> - `Open="true"` alone makes the panel visible but it still floats over content as an overlay.
|
|
282
|
+
> - `slot="mini"` content switches the component to a collapsible expand/collapse mode with an icon-only collapsed state.
|
|
283
|
+
> - To make the drawer occupy real space in the layout (pinned sidebar), the shadow DOM parts must be overridden in **global CSS** (not `.razor.css`): give the host an explicit width, override `::part(base)` to `position: relative; transform: none`, hide `::part(overlay)`, and remove the `inert` attribute via JS in `OnAfterRenderAsync`. Do **not** call `DrawerRef.Show()` in `OnAfterRenderAsync` - it throws "component not ready"; CSS handles visibility instead.
|
|
284
|
+
|
|
285
|
+
> **AGENT INSTRUCTION:** Icons used inside `IgbNavDrawerItem` must be registered via `IgbIcon.RegisterIconFromTextAsync()` or `RegisterIconAsync()` in `OnAfterRenderAsync(bool firstRender)` before they display. Call `await iconRef.EnsureReady()` first.
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## Tree
|
|
290
|
+
|
|
291
|
+
> **Docs:** [Tree](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/grids/tree)
|
|
292
|
+
|
|
293
|
+
```csharp
|
|
294
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbTreeModule));
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
```razor
|
|
298
|
+
<IgbTree Selection="TreeSelection.Multiple">
|
|
299
|
+
<IgbTreeItem Expanded="true" Label="Documents">
|
|
300
|
+
<IgbTreeItem Label="Report.docx" />
|
|
301
|
+
<IgbTreeItem Label="Notes.txt" />
|
|
302
|
+
</IgbTreeItem>
|
|
303
|
+
<IgbTreeItem Label="Downloads">
|
|
304
|
+
<IgbTreeItem Label="archive.zip" />
|
|
305
|
+
</IgbTreeItem>
|
|
306
|
+
</IgbTree>
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
Key attributes on `IgbTree`: `Selection` (`TreeSelection.None` / `Multiple` / `Cascade`). On `IgbTreeItem`: `Label`, `Expanded`, `Selected`, `Disabled`, `Active`.
|
|
310
|
+
|
|
311
|
+
Slots on `IgbTreeItem`: `label` (custom label content), `indicator` (expand/collapse icon override). Nest `IgbTreeItem` children directly inside a parent `IgbTreeItem`.
|
|
312
|
+
|
|
313
|
+
Events on `IgbTree`: `NodeSelectionChanging` (cancellable), `NodeSelectionChanged`, `NodeExpanded`, `NodeCollapsed`.
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
## Key Rules
|
|
318
|
+
|
|
319
|
+
1. **Stepper with `Linear="true"` prevents users from skipping steps.** Do not set `Linear` if free navigation is intended.
|
|
320
|
+
2. **Activate/deactivate `IgbNavDrawerItem` programmatically** by setting `item.Active` - there is no automatic selection tracking.
|
|
321
|
+
3. **Register icons via `RegisterIconFromTextAsync` in `OnAfterRenderAsync(bool firstRender)`**, and always call `await component.EnsureReady()` first.
|
|
322
|
+
4. **`IgbAccordion` with `SingleExpand="true"` closes other panels when one is opened.** This is the most common use case for accordions.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Setting Up the Ignite UI CLI MCP Server
|
|
2
|
+
|
|
3
|
+
> **Part of the [`igniteui-blazor-components`](../SKILL.md) skill hub.**
|
|
4
|
+
|
|
5
|
+
## Contents
|
|
6
|
+
|
|
7
|
+
- [VS Code](#vs-code)
|
|
8
|
+
- [Cursor](#cursor)
|
|
9
|
+
- [Claude Desktop](#claude-desktop)
|
|
10
|
+
- [WebStorm / JetBrains IDEs](#webstorm--jetbrains-ides)
|
|
11
|
+
- [Verifying the Setup](#verifying-the-setup)
|
|
12
|
+
|
|
13
|
+
The Ignite UI CLI MCP server enables AI assistants to discover Ignite UI components, access Blazor documentation, and support related Ignite UI workflows. It must be configured in your editor before these tools become available.
|
|
14
|
+
|
|
15
|
+
## VS Code
|
|
16
|
+
|
|
17
|
+
Create or edit `.vscode/mcp.json` in your project:
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"servers": {
|
|
22
|
+
"igniteui-cli": {
|
|
23
|
+
"command": "npx",
|
|
24
|
+
"args": ["-y", "igniteui-cli", "mcp"]
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
This works whether `igniteui-cli` is installed locally in `node_modules` or needs to be pulled from the npm registry; `npx -y` handles both cases.
|
|
31
|
+
|
|
32
|
+
## Cursor
|
|
33
|
+
|
|
34
|
+
Create or edit `.cursor/mcp.json`:
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"mcpServers": {
|
|
39
|
+
"igniteui-cli": {
|
|
40
|
+
"command": "npx",
|
|
41
|
+
"args": ["-y", "igniteui-cli", "mcp"]
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Claude Desktop
|
|
48
|
+
|
|
49
|
+
Edit the Claude Desktop config file:
|
|
50
|
+
|
|
51
|
+
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
52
|
+
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
53
|
+
|
|
54
|
+
```json
|
|
55
|
+
{
|
|
56
|
+
"mcpServers": {
|
|
57
|
+
"igniteui-cli": {
|
|
58
|
+
"command": "npx",
|
|
59
|
+
"args": ["-y", "igniteui-cli", "mcp"]
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## WebStorm / JetBrains IDEs
|
|
66
|
+
|
|
67
|
+
1. Go to **Settings -> Tools -> AI Assistant -> MCP Servers**
|
|
68
|
+
2. Click **+ Add MCP Server**
|
|
69
|
+
3. Set Command to `npx` and Arguments to `igniteui-cli mcp`
|
|
70
|
+
4. Click OK and restart the AI Assistant
|
|
71
|
+
|
|
72
|
+
## Verifying the Setup
|
|
73
|
+
|
|
74
|
+
After configuring the MCP server, ask your AI assistant:
|
|
75
|
+
|
|
76
|
+
> "List all available Ignite UI for Blazor components"
|
|
77
|
+
|
|
78
|
+
If the MCP server is running, the `list_components(framework: "blazor")` tool will return available Blazor component documentation entries.
|