Navs
Nav
A navigation pane (Nav) provides links to the main areas of an app or site, and can also be used as a TreeView to show parent-child data in a tree. It renders a hierarchy of any depth, keeps its selection in sync with the current URL (matched exactly, by prefix, by wildcard or by regular expression) or leaves it to the app in the manual mode, and expands one branch at a time or all of them at once. The items can be grouped under expandable headers, reduced to a rail of icons, separated by rules, and rendered through templates, and the whole tree is reachable from the keyboard with the arrow keys, Home, End and type-ahead.
Notes
The BitNav is a Multi-API component
which can accept the list of Items in 3 different ways:
1. The BitNavItem class
2. A Custom Generic class
3. The BitNavOption component
Usage
Every example is live. Open its code to see exactly what produced the component running underneath.
Basic
FitWidth & FullWidth
Grouped
Separator
Manual Mode
IconOnly
SingleExpand
AllExpanded & NoCollapse
Chevron & Indentation
Custom Templates
Public API
Events
Selected Item:
Toggled Item: N/A
URL Matching
Color
External Icons
Size
Style & Class
RTL
API
Every parameter, public member, sub-class and enum this component exposes.
BitNav parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| Accent | BitColor? | null | The accent color of the nav. |
| AllExpanded | bool | false | Expands all items when they are first rendered. Items that arrive later are expanded as they arrive, while the items already on screen keep whatever the user has expanded or collapsed in the meantime. |
| ChevronDownIcon | BitIconInfo? | null | The icon for the chevron-down element of each nav item. Takes precedence over ChevronDownIconName when both are set. |
| ChevronDownIconName | string? | null | The custom icon name of the chevron-down element of each nav item. |
| ChildContent | RenderFragment? | null | Items to render as children. |
| Classes | BitNavClassStyles? | null | Custom CSS classes for different parts of the BitNav component. |
| CollapseAriaLabel | string? | null | The default aria-label of the expand/collapse button of an expanded item. The CollapseAriaLabel of the item takes precedence over this value, and when neither is provided the text of the item is used. |
| Color | BitColor? | null | The general color of the nav that is only used for colored parts like icons. |
| DefaultSelectedItem | TItem? | null | The initially selected item in manual mode. |
| ExpandAriaLabel | string? | null | The default aria-label of the expand/collapse button of a collapsed item. The ExpandAriaLabel of the item takes precedence over this value, and when neither is provided the text of the item is used. |
| FitWidth | bool | false | Renders the nav in a width to only fit its content. |
| FullWidth | bool | false | Renders the nav in full width of its container element. |
| HeaderTemplate | RenderFragment<TItem>? | null | Used to customize how content inside the group header is rendered. |
| HeaderTemplateRenderMode | BitNavItemTemplateRenderMode | BitNavItemTemplateRenderMode.Normal | The render mode of the custom HeaderTemplate. |
| IconOnly | bool | false | Only renders the icon of each nav item. |
| IndentPadding | int | 27 | The indentation padding in px for items without children (compensation space for chevron icon). |
| IndentReversedPadding | int | 4 | The indentation padding in px for items in reversed mode. |
| IndentValue | int | 16 | The indentation value in px for each level of depth of child item. |
| Items | IList<TItem> | new List<TItem>() | A collection of items to display in the BitNav component. |
| ItemTemplate | RenderFragment<TItem>? | null | Used to customize how content inside the item is rendered. |
| ItemTemplateRenderMode | BitNavItemTemplateRenderMode | BitNavItemTemplateRenderMode.Normal | The render mode of the custom ItemTemplate. |
| Match | BitNavMatch? | null | Gets or sets a value representing the global URL matching behavior of the nav. The Match of an item takes precedence over this value, and when neither is provided the URL of an item has to match the current one exactly. |
| Mode | BitNavMode | BitNavMode.Automatic | Determines how the navigation will be handled. |
| NameSelectors | BitNavNameSelectors<TItem>? | null | Names and selectors of the custom input type properties. |
| NoCollapse | bool | false | Hides all collapse/expand buttons and remove their spaces at the start of each node. |
| OnItemClick | EventCallback<TItem> | Callback invoked when an item is clicked. | |
| OnItemToggle | EventCallback<TItem> | Callback invoked when an item is expanded or collapsed. | |
| OnSelectItem | EventCallback<TItem> | Callback invoked when an item is selected. | |
| Options | RenderFragment? | null | Alias of ChildContent. |
| RenderType | BitNavRenderType | BitNavRenderType.Normal | The way to render nav items. |
| Reselectable | bool | false | Enables recalling the select events when the same item is selected. |
| ReversedChevron | bool | false | Reverses the location of the expander chevron. |
| SelectedItem | TItem? | null | Selected item to show in the BitNav. |
| Size | BitSize? | null | The size of the nav items. |
| SingleExpand | bool | false | Enables the single-expand mode in the BitNav. |
| Styles | BitNavClassStyles? | null | Custom CSS styles for different parts of the BitNav component. |
BitNav public members
| Name | Type | Default value | Description |
|---|---|---|---|
| CollapseAll | Action<TItem? item> | Collapses all items and children. | |
| CollapseItem | Func<TItem, Task> | Collapses an item, and does nothing when it is already collapsed. | |
| ExpandAll | Action<TItem? item> | Expands all items and children in non-SingleExpand mode. | |
| ExpandItem | Func<TItem, Task> | Expands an item, and does nothing when it is already expanded. | |
| FocusItem | Func<TItem, ValueTask> | Moves the focus to an item of the nav, opening the branches it is nested in when it is not rendered yet. | |
| IsItemExpanded | Func<TItem, bool> | Whether an item is currently expanded. | |
| SelectItem | Func<TItem?, Task> | Selects an item programmatically, exactly like a click on that item would in the manual mode. | |
| ToggleItem | Func<TItem, Task> | Toggles an item. |
BitComponentBase parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| AriaLabel | string? | null | Gets or sets the accessible label for the component, used by assistive technologies. |
| Class | string? | null | Gets or sets the CSS class name(s) to apply to the rendered element. |
| Dir | BitDir? | null | Gets or sets the text directionality for the component's content. |
| ForceAnimation | bool | false | Gets or sets a value indicating whether the component's animations play at their full duration even when reduced motion is requested. |
| HtmlAttributes | Dictionary<string, object> | new Dictionary<string, object>() | Captures additional HTML attributes to be applied to the rendered element, in addition to the component's parameters. |
| Id | string? | null | Gets or sets the unique identifier for the component's root element. |
| IsEnabled | bool | true | Gets or sets a value indicating whether the component is enabled and can respond to user interaction. |
| Style | string? | null | Gets or sets the CSS style string to apply to the rendered element. |
| TabIndex | string? | null | Gets or sets the tab order index for the component when navigating with the keyboard. |
| Visibility | BitVisibility | BitVisibility.Visible | Gets or sets the visibility state (visible, hidden, or collapsed) of the component. |
BitComponentBase public members
| Name | Type | Default value | Description |
|---|---|---|---|
| UniqueId | Guid | Guid.NewGuid() | Gets the readonly unique identifier for the component's root element, assigned when the component instance is constructed. |
| RootElement | ElementReference | Gets the reference to the root HTML element associated with this component. |
BitNavNameSelectors<TItem> properties
| Name | Type | Default value | Description |
|---|---|---|---|
| AriaCurrent | BitNameSelectorPair<TItem, BitNavAriaCurrent?> | new(nameof(BitNavItem.AriaCurrent)) | The AriaCurrent field name and selector of the custom input class. |
| AriaLabel | BitNameSelectorPair<TItem, string?> | new(nameof(BitNavItem.AriaLabel)) | The AriaLabel field name and selector of the custom input class. |
| Class | BitNameSelectorPair<TItem, string?> | new(nameof(BitNavItem.Class)) | The Class field name and selector of the custom input class. |
| ChildItems | BitNameSelectorPair<TItem, List<TItem>?> | new(nameof(BitNavItem.ChildItems)) | The ChildItems field name and selector of the custom input class. |
| CollapseAriaLabel | BitNameSelectorPair<TItem, string?> | new(nameof(BitNavItem.CollapseAriaLabel)) | The CollapseAriaLabel field name and selector of the custom input class. |
| Data | BitNameSelectorPair<TItem, object?> | new(nameof(BitNavItem.Data)) | The Data field name and selector of the custom input class. |
| Description | BitNameSelectorPair<TItem, string?> | new(nameof(BitNavItem.Description)) | The Description field name and selector of the custom input class. |
| ExpandAriaLabel | BitNameSelectorPair<TItem, string?> | new(nameof(BitNavItem.ExpandAriaLabel)) | The ExpandAriaLabel field name and selector of the custom input class. |
| ForceAnchor | BitNameSelectorPair<TItem, bool?> | new(nameof(BitNavItem.ForceAnchor)) | The ForceAnchor field name and selector of the custom input class. |
| Icon | BitNameSelectorPair<TItem, BitIconInfo?> | new(nameof(BitNavItem.Icon)) | The Icon field name and selector of the custom input class. |
| IconName | BitNameSelectorPair<TItem, string?> | new(nameof(BitNavItem.IconName)) | The IconName field name and selector of the custom input class. |
| IsEnabled | BitNameSelectorPair<TItem, bool?> | new(nameof(BitNavItem.IsEnabled)) | The IsEnabled field name and selector of the custom input class. |
| IsExpanded | BitNameSelectorPair<TItem, bool?> | new(nameof(BitNavItem.IsExpanded)) | The IsExpanded field name and selector of the custom input class. |
| IsSeparator | BitNameSelectorPair<TItem, bool?> | new(nameof(BitNavItem.IsSeparator)) | The IsSeparator field name and selector of the custom input class. |
| Key | BitNameSelectorPair<TItem, string?> | new(nameof(BitNavItem.Key)) | The Key field name and selector of the custom input class. |
| Match | BitNameSelectorPair<TItem, BitNavMatch?> | new(nameof(BitNavItem.Match)) | The Match field name and selector of the custom input class. |
| Style | BitNameSelectorPair<TItem, string?> | new(nameof(BitNavItem.Style)) | The Style field name and selector of the custom input class. |
| Target | BitNameSelectorPair<TItem, string?> | new(nameof(BitNavItem.Target)) | The Target field name and selector of the custom input class. |
| Template | BitNameSelectorPair<TItem, RenderFragment<TItem>?> | new(nameof(BitNavItem.Template)) | The Template field name and selector of the custom input class. |
| TemplateRenderMode | BitNameSelectorPair<TItem, BitNavItemTemplateRenderMode?> | new(nameof(BitNavItem.TemplateRenderMode)) | The TemplateRenderMode field name and selector of the custom input class. |
| Text | BitNameSelectorPair<TItem, string?> | new(nameof(BitNavItem.Text)) | The Text field name and selector of the custom input class. |
| Title | BitNameSelectorPair<TItem, string?> | new(nameof(BitNavItem.Title)) | The Title field name and selector of the custom input class. |
| Url | BitNameSelectorPair<TItem, string?> | new(nameof(BitNavItem.Url)) | The Url field name and selector of the custom input class. |
| AdditionalUrls | BitNameSelectorPair<TItem, IEnumerable<string>?> | new(nameof(BitNavItem.AdditionalUrls)) | The AdditionalUrls field name and selector of the custom input class. |
BitIconInfo properties
| Name | Type | Default value | Description |
|---|---|---|---|
| Name | string? | null | Gets or sets the name of the icon. |
| BaseClass | string? | null | Gets or sets the base CSS class for the icon. For built-in Fluent UI icons, this defaults to "bit-icon". For external icon libraries like FontAwesome, you might set this to "fa" or leave empty. |
| Prefix | string? | null | Gets or sets the CSS class prefix used before the icon name. For built-in Fluent UI icons, this defaults to "bit-icon--". For external icon libraries, you might set this to "fa-" or leave empty. |
BitColor enum
| Name | Value | Description |
|---|---|---|
| Primary | 0 | Info Primary general color. |
| Secondary | 1 | Secondary general color. |
| Tertiary | 2 | Tertiary general color. |
| Info | 3 | Info general color. |
| Success | 4 | Success general color. |
| Warning | 5 | Warning general color. |
| SevereWarning | 6 | SevereWarning general color. |
| Error | 7 | Error general color. |
| PrimaryBackground | 8 | Primary background color. |
| SecondaryBackground | 9 | Secondary background color. |
| TertiaryBackground | 10 | Tertiary background color. |
| PrimaryForeground | 11 | Primary foreground color. |
| SecondaryForeground | 12 | Secondary foreground color. |
| TertiaryForeground | 13 | Tertiary foreground color. |
| PrimaryBorder | 14 | Primary border color. |
| SecondaryBorder | 15 | Secondary border color. |
| TertiaryBorder | 16 | Tertiary border color. |
BitSize enum
| Name | Value | Description |
|---|---|---|
| Small | 0 | The small size. |
| Medium | 1 | The medium size. |
| Large | 2 | The large size. |
BitVisibility enum
| Name | Value | Description |
|---|---|---|
| Visible | 0 | The content of the component is visible. |
| Hidden | 1 | The content of the component is hidden, but the space it takes on the page remains (visibility:hidden). |
| Collapsed | 2 | The component is hidden (display:none). |
BitDir enum
| Name | Value | Description |
|---|---|---|
| Ltr | 0 | Ltr (left to right) is to be used for languages that are written from the left to the right (like English). |
| Rtl | 1 | Rtl (right to left) is to be used for languages that are written from the right to the left (like Arabic). |
| Auto | 2 | Auto lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then applies that directionality to the whole element. |
Feedback
Found a mistake, a gap, or something that could be clearer? Every page and every component is one click from its source.