Skip to content

[Inputs] Implement Autofocus for Fluent input components - #5515

Open
Denis Voituron (dvoituron) wants to merge 28 commits into
devfrom
users/dvoituron/autofocus
Open

Denis Voituron (dvoituron) wants to merge 28 commits into
devfrom
users/dvoituron/autofocus

Conversation

@dvoituron

@dvoituron Denis Voituron (dvoituron) commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator

[Inputs] Implement Autofocus for Fluent input components

Enhance multiple Fluent components with Autofocus capabilities, ensuring they automatically receive focus when rendered.

This includes updates to the OnAfterRenderAsync method and the introduction of an IFluentComponentAutofocus interface.

Tests validate the behavior across components, ensuring a consistent user experience.

Demo

peek_1.mp4

Unit Tests

Added

…nd implement autofocus in OnAfterRenderAsync
…tComponentAutofocus interface and overriding OnAfterRenderAsync
…se method is called on first render and add test for FluentTimePicker autofocus behavior
…behavior and ensure FASTElement initialization
…usBySelector and implementing FocusElementBySelectorAsync method for component-specific autofocus handling
…ialization sequence and updating focus methods to support selector-based targeting
…ests by generating stable IDs for invalid inputs and ensuring proper focus behavior
@github-actions

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

✅ All tests passed successfully

Details on your Workflow / Core Tests page.

@github-actions

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Summary - Unit Tests Code Coverage

Summary
Generated on: 10/23/2026 - 10:45:38
Parser: MultiReport (6x Cobertura)
Assemblies: 2
Classes: 373
Files: 440
Line coverage: 98.9% (13137 of 13275)
Covered lines: 13137
Uncovered lines: 138
Coverable lines: 13275
Total lines: 52282
Branch coverage: 93.7% (7990 of 8523)
Covered branches: 7990
Total branches: 8523
Method coverage: Feature is only available for sponsors
Tag: 8347_39940663245

Coverage

Microsoft.FluentUI.AspNetCore.Components - 98.9%
Name Line Branch
Microsoft.FluentUI.AspNetCore.Components 98.9% 93.8%
Microsoft.FluentUI.AspNetCore.Components.AdditionalAttributesExtensions 100% 100%
Microsoft.FluentUI.AspNetCore.Components.AdditionalAttributesExtensions.Add
itionalAttributeCondition
100% 100%
Microsoft.FluentUI.AspNetCore.Components.AdditionalAttributesExtensions.Add
itionalAttributeCondition.AdditionalAttributeConditionItem
100%
Microsoft.FluentUI.AspNetCore.Components.AutocompleteHeaderFooterContent<TO
ption>
100% 50%
Microsoft.FluentUI.AspNetCore.Components.CachedServices 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Calendar.CalendarExtended 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Calendar.CalendarTitles 97% 95.8%
Microsoft.FluentUI.AspNetCore.Components.Calendar.CalendarTValue 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Calendar.CalendarTValue 100% 100%
Microsoft.FluentUI.AspNetCore.Components.ColorPicker.ColorHelper 100% 100%
Microsoft.FluentUI.AspNetCore.Components.ColorPicker.DefaultColors 100%
Microsoft.FluentUI.AspNetCore.Components.ColorPicker.HsvColor 100% 100%
Microsoft.FluentUI.AspNetCore.Components.ColorPicker.WheelColor 100% 100%
Microsoft.FluentUI.AspNetCore.Components.ColumnBase 83.4% 79.1%
Microsoft.FluentUI.AspNetCore.Components.ColumnBase 100% 97.2%
Microsoft.FluentUI.AspNetCore.Components.ColumnHeaderCapabilities 100% 80%
Microsoft.FluentUI.AspNetCore.Components.ColumnKeyGridSort 100% 100%
Microsoft.FluentUI.AspNetCore.Components.ColumnMenuSettings 100%
Microsoft.FluentUI.AspNetCore.Components.ColumnReorderOptions 100%
Microsoft.FluentUI.AspNetCore.Components.ColumnResizeOptions 100% 100%
Microsoft.FluentUI.AspNetCore.Components.ColumnResizeOptions 100% 100%
Microsoft.FluentUI.AspNetCore.Components.ColumnSortMenuItems 100% 100%
Microsoft.FluentUI.AspNetCore.Components.ColumnSortMenuItems 100% 100%
Microsoft.FluentUI.AspNetCore.Components.ColumnSortOptions 100%
Microsoft.FluentUI.AspNetCore.Components.CustomEmoji 100% 100%
Microsoft.FluentUI.AspNetCore.Components.CustomIcon 100%
Microsoft.FluentUI.AspNetCore.Components.DataGrid.Infrastructure.Defer 100%
Microsoft.FluentUI.AspNetCore.Components.DataGrid.Infrastructure.Hierarchic
alSortHelper
100% 97.5%
Microsoft.FluentUI.AspNetCore.Components.DataGrid.Infrastructure.Hierarchic
alSortHelper
100% 97.5%
Microsoft.FluentUI.AspNetCore.Components.DataGrid.Infrastructure.InternalGr
idContext
100% 100%
Microsoft.FluentUI.AspNetCore.Components.DataGridSortColumn 100% 100%
Microsoft.FluentUI.AspNetCore.Components.DataGridSortEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.DateTimeProvider 100% 100%
Microsoft.FluentUI.AspNetCore.Components.DateTimeProviderContext 100% 92.8%
Microsoft.FluentUI.AspNetCore.Components.DefaultStyles 100%
Microsoft.FluentUI.AspNetCore.Components.DefaultValues 100% 96.1%
Microsoft.FluentUI.AspNetCore.Components.DefaultValues 100% 96.1%
Microsoft.FluentUI.AspNetCore.Components.DefaultValuesComponentBuilder<TCom
ponent, TValue>
100% 100%
Microsoft.FluentUI.AspNetCore.Components.DefaultValuesComponentBuilder<TCom
ponent>
100% 96.4%
Microsoft.FluentUI.AspNetCore.Components.Dialog.MessageBox.FluentMessageBox 100% 75%
Microsoft.FluentUI.AspNetCore.Components.Dialog.SplashScreen.DefaultSplashS
creenDialog
100% 100%
Microsoft.FluentUI.AspNetCore.Components.DialogEventArgs 100% 92.8%
Microsoft.FluentUI.AspNetCore.Components.DialogInstance 100% 100%
Microsoft.FluentUI.AspNetCore.Components.DialogOptions 94.1%
Microsoft.FluentUI.AspNetCore.Components.DialogOptionsFooter 100% 100%
Microsoft.FluentUI.AspNetCore.Components.DialogOptionsFooterAction 100% 100%
Microsoft.FluentUI.AspNetCore.Components.DialogOptionsHeader 100% 100%
Microsoft.FluentUI.AspNetCore.Components.DialogOptionsHeaderAction 100% 100%
Microsoft.FluentUI.AspNetCore.Components.DialogResult 100% 100%
Microsoft.FluentUI.AspNetCore.Components.DialogResult 100%
Microsoft.FluentUI.AspNetCore.Components.DialogService 100% 85.7%
Microsoft.FluentUI.AspNetCore.Components.DynamicComponentRenderer 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Emoji 100% 100%
Microsoft.FluentUI.AspNetCore.Components.EmojiCompress 100% 100%
Microsoft.FluentUI.AspNetCore.Components.EmojiExtensions 100% 50%
Microsoft.FluentUI.AspNetCore.Components.EmojiInfo 100%
Microsoft.FluentUI.AspNetCore.Components.Extensions.DateTimeExtensions 98.4% 90.3%
Microsoft.FluentUI.AspNetCore.Components.Extensions.DisplayAttributeExtensi
ons
100% 87.5%
Microsoft.FluentUI.AspNetCore.Components.Extensions.EnumExtensions 100% 92.3%
Microsoft.FluentUI.AspNetCore.Components.Extensions.FieldSizeExtensions 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Extensions.FluentInputExtensions 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FileSizeConverter 100%
Microsoft.FluentUI.AspNetCore.Components.FluentAccordion 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentAccordionItem 100% 95.8%
Microsoft.FluentUI.AspNetCore.Components.FluentAnchorButton 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentAppBar 97.3% 81.1%
Microsoft.FluentUI.AspNetCore.Components.FluentAppBarItem 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentAutocomplete<TOption, TValue
>
96.1% 92%
Microsoft.FluentUI.AspNetCore.Components.FluentAutocomplete<TOption, TValue
>
92.1% 85.7%
Microsoft.FluentUI.AspNetCore.Components.FluentAvatar 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentBadge 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentButton 100% 93.7%
Microsoft.FluentUI.AspNetCore.Components.FluentCalendar 97.5% 77.7%
Microsoft.FluentUI.AspNetCore.Components.FluentCalendar 97% 87.7%
Microsoft.FluentUI.AspNetCore.Components.FluentCalendarBase 100% 89.1%
Microsoft.FluentUI.AspNetCore.Components.FluentCalendarDay 100% 95.4%
Microsoft.FluentUI.AspNetCore.Components.FluentCalendarMonth 100% 85.7%
Microsoft.FluentUI.AspNetCore.Components.FluentCalendarYear 100% 91.6%
Microsoft.FluentUI.AspNetCore.Components.FluentCard 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentCheckbox 100% 97.5%
Microsoft.FluentUI.AspNetCore.Components.FluentColorPicker 97.3% 94.8%
Microsoft.FluentUI.AspNetCore.Components.FluentColorPickerInput 98.5% 94.7%
Microsoft.FluentUI.AspNetCore.Components.FluentCombobox<TOption, TValue> 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentCombobox<TOption, TValue> 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentComponentAutofocusExtensions 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentComponentBase 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentCompoundButton 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentCounterBadge 100% 95.2%
Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid 97.8% 95.5%
Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid 100% 95.9%
Microsoft.FluentUI.AspNetCore.Components.FluentDataGridCell 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentDataGridCell 100% 94.8%
Microsoft.FluentUI.AspNetCore.Components.FluentDataGridRow 96.9% 96.4%
Microsoft.FluentUI.AspNetCore.Components.FluentDataGridRow 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentDatePicker 100% 83.3%
Microsoft.FluentUI.AspNetCore.Components.FluentDatePicker 98.7% 96.1%
Microsoft.FluentUI.AspNetCore.Components.FluentDialog 97.7% 89.8%
Microsoft.FluentUI.AspNetCore.Components.FluentDialogBody 97.5% 94.4%
Microsoft.FluentUI.AspNetCore.Components.FluentDialogInstance 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentDialogProvider 95.3% 77.5%
Microsoft.FluentUI.AspNetCore.Components.FluentDivider 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentDragContainer 94.5% 95%
Microsoft.FluentUI.AspNetCore.Components.FluentDragContainer 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentDragGroup 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentDropZone 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentDropZone 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentEmoji 100% 95%
Microsoft.FluentUI.AspNetCore.Components.FluentErrorBoundary 94.7% 93.7%
Microsoft.FluentUI.AspNetCore.Components.FluentField 98.3% 95%
Microsoft.FluentUI.AspNetCore.Components.FluentFieldCondition 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentFieldConditionItem 100%
Microsoft.FluentUI.AspNetCore.Components.FluentFieldConditionOptions 100%
Microsoft.FluentUI.AspNetCore.Components.FluentFieldExtensions 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentFieldParameterSelector 97.7% 94.8%
Microsoft.FluentUI.AspNetCore.Components.FluentGrid 100% 90%
Microsoft.FluentUI.AspNetCore.Components.FluentGridItem 100% 98.4%
Microsoft.FluentUI.AspNetCore.Components.FluentHighlighter 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentIcon 100%
Microsoft.FluentUI.AspNetCore.Components.FluentIcon 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentImage 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentInputBase 83.3% 83.3%
Microsoft.FluentUI.AspNetCore.Components.FluentInputBase 93.9% 77.6%
Microsoft.FluentUI.AspNetCore.Components.FluentInputFile 98.6% 93.7%
Microsoft.FluentUI.AspNetCore.Components.FluentInputFileBuffer 100%
Microsoft.FluentUI.AspNetCore.Components.FluentInputFileErrorEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.FluentInputImmediateBase 100%
Microsoft.FluentUI.AspNetCore.Components.FluentInputImmediateBase 100%
Microsoft.FluentUI.AspNetCore.Components.FluentInputImmediateManager 97.6% 97%
Microsoft.FluentUI.AspNetCore.Components.FluentJSModule 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentKeyCode 100% 93.7%
Microsoft.FluentUI.AspNetCore.Components.FluentKeyCodeEventArgs 100% 77.7%
Microsoft.FluentUI.AspNetCore.Components.FluentKeyCodeProvider 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentLabel 100%
Microsoft.FluentUI.AspNetCore.Components.FluentLabelInfo 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentLayout 100% 93.7%
Microsoft.FluentUI.AspNetCore.Components.FluentLayoutHamburger 97.7% 89.4%
Microsoft.FluentUI.AspNetCore.Components.FluentLayoutItem 100% 91.6%
Microsoft.FluentUI.AspNetCore.Components.FluentLink 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentListBase<TOption, TValue> 100% 96.6%
Microsoft.FluentUI.AspNetCore.Components.FluentListBase<TOption, TValue> 94.6% 89.1%
Microsoft.FluentUI.AspNetCore.Components.FluentListbox<TOption, TValue> 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentListbox<TOption, TValue> 100% 91.6%
Microsoft.FluentUI.AspNetCore.Components.FluentLocalizerExtensions 100%
Microsoft.FluentUI.AspNetCore.Components.FluentLocalizerInternal 100%
Microsoft.FluentUI.AspNetCore.Components.FluentMenu 100% 90%
Microsoft.FluentUI.AspNetCore.Components.FluentMenuButton 100% 83.3%
Microsoft.FluentUI.AspNetCore.Components.FluentMenuItem 100% 93.1%
Microsoft.FluentUI.AspNetCore.Components.FluentMenuList 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentMessageBar 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentMessageBarProvider 100% 92.3%
Microsoft.FluentUI.AspNetCore.Components.FluentMultiSplitter 100% 93.7%
Microsoft.FluentUI.AspNetCore.Components.FluentMultiSplitterEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.FluentMultiSplitterPane 100% 86%
Microsoft.FluentUI.AspNetCore.Components.FluentMultiSplitterResizeEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.FluentNav 98.6% 95.8%
Microsoft.FluentUI.AspNetCore.Components.FluentNavBase 100%
Microsoft.FluentUI.AspNetCore.Components.FluentNavCategory 96.6% 91.2%
Microsoft.FluentUI.AspNetCore.Components.FluentNavItem 100% 91.4%
Microsoft.FluentUI.AspNetCore.Components.FluentNavSectionHeader 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentNumberInput 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentNumberInput 100% 97.2%
Microsoft.FluentUI.AspNetCore.Components.FluentNumberInputCultureInfo 100%
Microsoft.FluentUI.AspNetCore.Components.FluentOption 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentOption 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentOptionString 100%
Microsoft.FluentUI.AspNetCore.Components.FluentOverflow 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentOverflow 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentOverlay 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentPaginator 97.6% 76.9%
Microsoft.FluentUI.AspNetCore.Components.FluentPopover 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentPresenceBadge 98.7% 97.7%
Microsoft.FluentUI.AspNetCore.Components.FluentProfileMenu 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentProfilePopover 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentProgress 100%
Microsoft.FluentUI.AspNetCore.Components.FluentProgressBar 100% 87.5%
Microsoft.FluentUI.AspNetCore.Components.FluentProgressRing 100%
Microsoft.FluentUI.AspNetCore.Components.FluentProviders 100%
Microsoft.FluentUI.AspNetCore.Components.FluentPullToRefresh 99.3% 91.7%
Microsoft.FluentUI.AspNetCore.Components.FluentRadio 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentRadioGroup 100% 90%
Microsoft.FluentUI.AspNetCore.Components.FluentRadioGroup 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentRatingDisplay 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentSelect<TOption, TValue> 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentSelect<TOption, TValue> 96.5% 70%
Microsoft.FluentUI.AspNetCore.Components.FluentServiceBase 100%
Microsoft.FluentUI.AspNetCore.Components.FluentServiceBase 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentServiceProviderException<TPr
ovider>
100%
Microsoft.FluentUI.AspNetCore.Components.FluentSkeleton 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentSlider 100%
Microsoft.FluentUI.AspNetCore.Components.FluentSlider 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentSortableList 91.6% 87.5%
Microsoft.FluentUI.AspNetCore.Components.FluentSortableList 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentSortableListEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.FluentSpacer 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentSpinner 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentSplitButton 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentStack 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentStatus 100%
Microsoft.FluentUI.AspNetCore.Components.FluentSwitch 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentTab 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentTabs 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentText 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentTextArea 100% 78.5%
Microsoft.FluentUI.AspNetCore.Components.FluentTextInput 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentTimePicker.TimeEqualityCompa
rer
100% 58.3%
Microsoft.FluentUI.AspNetCore.Components.FluentTimePicker 100% 78.5%
Microsoft.FluentUI.AspNetCore.Components.FluentTimePicker 100% 91.8%
Microsoft.FluentUI.AspNetCore.Components.FluentToast 100% 92.8%
Microsoft.FluentUI.AspNetCore.Components.FluentToastProvider 99% 96.9%
Microsoft.FluentUI.AspNetCore.Components.FluentToggleButton 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentTooltip 97.9% 89.2%
Microsoft.FluentUI.AspNetCore.Components.FluentTooltipProvider 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentTreeItem 100% 96.3%
Microsoft.FluentUI.AspNetCore.Components.FluentTreeView 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentValidationMessage 100%
Microsoft.FluentUI.AspNetCore.Components.FluentValidationMessage 100% 94.4%
Microsoft.FluentUI.AspNetCore.Components.FluentValidationSummary 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentWizard 99.2% 88.6%
Microsoft.FluentUI.AspNetCore.Components.FluentWizardStep 97.8% 92.7%
Microsoft.FluentUI.AspNetCore.Components.FluentWizardStepArgs 100%
Microsoft.FluentUI.AspNetCore.Components.FluentWizardStepChangeEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.FluentWizardStepValidator 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FreeOptionOutput 100%
Microsoft.FluentUI.AspNetCore.Components.GridItemsProviderRequest<TGridItem
>
100% 93.7%
Microsoft.FluentUI.AspNetCore.Components.GridItemsProviderResult 100%
Microsoft.FluentUI.AspNetCore.Components.GridSort<TGridItem, U> 100% 100%
Microsoft.FluentUI.AspNetCore.Components.GridSort 100% 100%
Microsoft.FluentUI.AspNetCore.Components.HierarchicalGridItem<TItem, TGridI
tem>
100%
Microsoft.FluentUI.AspNetCore.Components.HierarchicalGridItem<TItem, TGridI
tem>
100% 100%
Microsoft.FluentUI.AspNetCore.Components.HierarchicalGridUtilities 100% 100%
Microsoft.FluentUI.AspNetCore.Components.HierarchicalGridUtilities<TGridIte
m, TItem>
100% 100%
Microsoft.FluentUI.AspNetCore.Components.HierarchicalSelectColumn<TGridItem
>
100% 95.2%
Microsoft.FluentUI.AspNetCore.Components.HierarchicalSelectColumn<TGridItem
>
100% 98.3%
Microsoft.FluentUI.AspNetCore.Components.HighlighterSplitter 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Icon 100% 95%
Microsoft.FluentUI.AspNetCore.Components.IconFromImage 100%
Microsoft.FluentUI.AspNetCore.Components.IconInfo 100%
Microsoft.FluentUI.AspNetCore.Components.IconsExtensions 100% 50%
Microsoft.FluentUI.AspNetCore.Components.IFluentComponentBase 100%
Microsoft.FluentUI.AspNetCore.Components.IFluentComponentChangeAfterKeyPres
s
100% 100%
Microsoft.FluentUI.AspNetCore.Components.IFluentLocalizer 100% 100%
Microsoft.FluentUI.AspNetCore.Components.IGridSort 100%
Microsoft.FluentUI.AspNetCore.Components.Infrastructure.EventCallbackSubscr
ibable
100% 100%
Microsoft.FluentUI.AspNetCore.Components.Infrastructure.EventCallbackSubscr
ibable
100%
Microsoft.FluentUI.AspNetCore.Components.Infrastructure.EventCallbackSubscr
iber
100% 87.5%
Microsoft.FluentUI.AspNetCore.Components.InputFileInstance 100% 100%
Microsoft.FluentUI.AspNetCore.Components.InputFileOptions 100%
Microsoft.FluentUI.AspNetCore.Components.InternalAppBarContext 100% 100%
Microsoft.FluentUI.AspNetCore.Components.InternalListContext 100%
Microsoft.FluentUI.AspNetCore.Components.JSObjectReferenceExtensions 100% 100%
Microsoft.FluentUI.AspNetCore.Components.JSObjectReferenceExtensions 100% 100%
Microsoft.FluentUI.AspNetCore.Components.JSRuntimeExtensions 100% 100%
Microsoft.FluentUI.AspNetCore.Components.JSRuntimeExtensions 100% 100%
Microsoft.FluentUI.AspNetCore.Components.KeyCodeService 100% 87.5%
Microsoft.FluentUI.AspNetCore.Components.KeyCodeService.KeyCodeListener 100% 100%
Microsoft.FluentUI.AspNetCore.Components.KeyPress 100%
Microsoft.FluentUI.AspNetCore.Components.LabelInfo 100%
Microsoft.FluentUI.AspNetCore.Components.LayoutHamburgerEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.LibraryToastOptions 100%
Microsoft.FluentUI.AspNetCore.Components.LibraryTooltipOptions 100%
Microsoft.FluentUI.AspNetCore.Components.Localization.LanguageResource 100% 100%
Microsoft.FluentUI.AspNetCore.Components.MarkupSanitizedOptions 100%
Microsoft.FluentUI.AspNetCore.Components.MessageBarEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.MessageBarInstance 100% 100%
Microsoft.FluentUI.AspNetCore.Components.MessageBarOptions 94.4%
Microsoft.FluentUI.AspNetCore.Components.MessageBarResult 100%
Microsoft.FluentUI.AspNetCore.Components.MessageBoxOptions 100%
Microsoft.FluentUI.AspNetCore.Components.Migration.AppearanceExtensions 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Migration.FluentInputAppearanceExt
ensions
100% 100%
Microsoft.FluentUI.AspNetCore.Components.Migration.TooltipPositionExtension 100% 100%
Microsoft.FluentUI.AspNetCore.Components.NotificationService 98.1% 97.4%
Microsoft.FluentUI.AspNetCore.Components.NotificationService 98.1% 97.4%
Microsoft.FluentUI.AspNetCore.Components.NotificationService 98.1% 97.4%
Microsoft.FluentUI.AspNetCore.Components.OptionsSearchEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.OverflowContext 100%
Microsoft.FluentUI.AspNetCore.Components.OverlayOptions 100%
Microsoft.FluentUI.AspNetCore.Components.PaginationState 100% 81.2%
Microsoft.FluentUI.AspNetCore.Components.PropertyColumn<TGridItem, TProp> 100% 75%
Microsoft.FluentUI.AspNetCore.Components.PropertyColumn<TGridItem, TProp> 100% 84.6%
Microsoft.FluentUI.AspNetCore.Components.RangeOfDates 100% 89.4%
Microsoft.FluentUI.AspNetCore.Components.SelectAllTemplateArgs 100%
Microsoft.FluentUI.AspNetCore.Components.SelectColumn.ItemKeyEqualityCompar
er
100% 100%
Microsoft.FluentUI.AspNetCore.Components.SelectColumn 94.8% 96.5%
Microsoft.FluentUI.AspNetCore.Components.SelectColumn 100% 97.1%
Microsoft.FluentUI.AspNetCore.Components.ServiceProviderExtensions 100%
Microsoft.FluentUI.AspNetCore.Components.SpacingExtensions 100% 97.3%
Microsoft.FluentUI.AspNetCore.Components.SplashScreenContent 100%
Microsoft.FluentUI.AspNetCore.Components.SplashScreenInstance 100%
Microsoft.FluentUI.AspNetCore.Components.SplashScreenOptions 100%
Microsoft.FluentUI.AspNetCore.Components.TemplateColumn 100% 100%
Microsoft.FluentUI.AspNetCore.Components.TemplateColumn 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Theme 100% 80%
Microsoft.FluentUI.AspNetCore.Components.Theme.ThemeBorders 100%
Microsoft.FluentUI.AspNetCore.Components.Theme.ThemeColors 100%
Microsoft.FluentUI.AspNetCore.Components.Theme.ThemeCurves 100%
Microsoft.FluentUI.AspNetCore.Components.Theme.ThemeFonts 100%
Microsoft.FluentUI.AspNetCore.Components.Theme.ThemeLines 100%
Microsoft.FluentUI.AspNetCore.Components.Theme.ThemeSpacings 100%
Microsoft.FluentUI.AspNetCore.Components.Theme.ThemeStrokes 100%
Microsoft.FluentUI.AspNetCore.Components.ThemeExtensions 93.3% 94.4%
Microsoft.FluentUI.AspNetCore.Components.ThemeService 100% 93.7%
Microsoft.FluentUI.AspNetCore.Components.ThemeSettings 100%
Microsoft.FluentUI.AspNetCore.Components.ToastEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.ToastInstance 100% 100%
Microsoft.FluentUI.AspNetCore.Components.ToastOptions 94.7%
Microsoft.FluentUI.AspNetCore.Components.ToastResult 100%
Microsoft.FluentUI.AspNetCore.Components.TooltipEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.TotalItemCountChangedEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.TreeViewItem 100% 100%
Microsoft.FluentUI.AspNetCore.Components.TreeViewItemExpandedEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.TreeViewThreeStateSelection 100% 94.1%
Microsoft.FluentUI.AspNetCore.Components.Utilities.AddTag 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Utilities.CssBuilder 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Utilities.Debounce 94.2% 100%
Microsoft.FluentUI.AspNetCore.Components.Utilities.Identifier 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Utilities.IdentifierContext 100% 75%
Microsoft.FluentUI.AspNetCore.Components.Utilities.InlineStyleBuilder 100% 93.7%
Microsoft.FluentUI.AspNetCore.Components.Utilities.MarkupStringSanitized 100% 93.3%
Microsoft.FluentUI.AspNetCore.Components.Utilities.MarkupStringSanitized.Pa
rsedContent
100%
Microsoft.FluentUI.AspNetCore.Components.Utilities.RangeOf 100% 97.2%
Microsoft.FluentUI.AspNetCore.Components.Utilities.StyleBuilder 100% 100%
Microsoft.FluentUI.AspNetCore.Components.ZIndex 100%
Microsoft.FluentUI.AspNetCore.Components.Charts - 100%
Name Line Branch
Microsoft.FluentUI.AspNetCore.Components.Charts 100% 89.1%
Microsoft.FluentUI.AspNetCore.Components.Charts.AreaChartSeries 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.ChartAxisValue 100% 85.7%
Microsoft.FluentUI.AspNetCore.Components.Charts.ChartAxisValueJsonConverter 100% 92.8%
Microsoft.FluentUI.AspNetCore.Components.Charts.DataVizPaletteExtensions 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.DonutDataPoint 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.FluentAreaChart 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.FluentCartesianChartBase 100% 85.7%
Microsoft.FluentUI.AspNetCore.Components.Charts.FluentChartBase 100% 90%
Microsoft.FluentUI.AspNetCore.Components.Charts.FluentDonutChart 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.FluentFunnelChart 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.FluentGanttChart 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.FluentGaugeChart 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.FluentGroupedVerticalBarCha
rt
100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.FluentHeatMapChart 100% 83.3%
Microsoft.FluentUI.AspNetCore.Components.Charts.FluentHorizontalBarChart 100% 75%
Microsoft.FluentUI.AspNetCore.Components.Charts.FluentHorizontalBarChartWit
hAxis
100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.FluentLineChart 100% 83.3%
Microsoft.FluentUI.AspNetCore.Components.Charts.FluentPolarChart 100% 60%
Microsoft.FluentUI.AspNetCore.Components.Charts.FluentSankeyChart 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.FluentScatterChart 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.FluentSparklineChart 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.FluentVerticalBarChart 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.FluentVerticalStackedBarCha
rt
100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.FunnelDataPoint 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.FunnelSubValue 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.GanttChartDataPoint 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.GaugeChartSegment 100% 75%
Microsoft.FluentUI.AspNetCore.Components.Charts.GroupedVerticalBarChartData 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.GroupedVerticalBarChartData
Point
100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.GroupedVerticalBarChartLine
DataPoint
100%
Microsoft.FluentUI.AspNetCore.Components.Charts.HeatMapChartData 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.HorizontalBarChartDataPoint 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.HorizontalBarChartSeries 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.HorizontalBarChartWithAxisD
ataPoint
100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.HorizontalBarChartWithAxisS
eries
100%
Microsoft.FluentUI.AspNetCore.Components.Charts.LineChartColorFillBar 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.LineChartLineOptions 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.LineChartSeries 100% 75%
Microsoft.FluentUI.AspNetCore.Components.Charts.PolarAxisOptions 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.PolarChartDataPoint 100% 50%
Microsoft.FluentUI.AspNetCore.Components.Charts.PolarChartSeries 100% 66.6%
Microsoft.FluentUI.AspNetCore.Components.Charts.PolarLineOptions 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.SankeyChartData 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.SankeyChartNode 100% 75%
Microsoft.FluentUI.AspNetCore.Components.Charts.ScatterChartSeries 100% 75%
Microsoft.FluentUI.AspNetCore.Components.Charts.SparklineChartData 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.SparklineChartSeries 100% 75%
Microsoft.FluentUI.AspNetCore.Components.Charts.VerticalBarChartDataPoint 100% 75%
Microsoft.FluentUI.AspNetCore.Components.Charts.VerticalStackedBarChartData 100%
Microsoft.FluentUI.AspNetCore.Components.Charts.VerticalStackedBarChartData
Point
100% 75%
Microsoft.FluentUI.AspNetCore.Components.Charts.VerticalStackedBarChartLine
DataPoint
100%

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Unresolved ID handling and calendar-view targeting issues prevent focus from working reliably with supported component configurations.

4 open issues
What changed in this PR

Adds shared first-render autofocus and programmatic focus support to Fluent UI Blazor inputs and buttons.

Changes:

  • Introduces a common focus interface, lifecycle helpers, and JavaScript focus utilities.
  • Connects component rendering to autofocus and waits for listbox initialization before focusing.
  • Adds focus tests and an interactive debug page.
File Description
tests/​Core/​Extensions/​FluentComponentAutofocusExtensionsTests.cs Tests focus helpers, validation, and error propagation.
tests/​Core/​Components/​List/​FluentListboxTests.razor Tests active-option focus and initialization ordering.
tests/​Core/​Components/​DateTimes/​FluentTimePickerTests.razor Tests autofocus across render styles.
tests/​Core/​Components/​DateTimes/​FluentCalendarTests.razor Tests selectable-day targeting.
tests/​Core/​Components/​Button/​FluentCompoundButtonTests.razor Tests autofocus and generated IDs.
tests/​Core/​Components/​Button/​FluentButtonTests.razor Tests manual focus and first-render autofocus.
tests/​Core/​Components/​Base/​InputBaseTests.cs Reuses shared component initialization data.
tests/​Core/​Components/​Base/​FluentInputBaseFocusTests.razor Tests shared focus behavior and selectors.
tests/​Core/​Components/​Base/​BaseHelpers.cs Centralizes generic component initialization.
tests/​Core/​Components/​Base/​AutofocusTests.cs Adds interface-wide focus tests.
src/​Core/​Extensions/​FluentComponentAutofocusExtensions.cs Centralizes autofocus and focus interop.
src/​Core/​Components/​TextInput/​FluentTextInput.razor.cs Calls the base autofocus lifecycle.
src/​Core/​Components/​TextArea/​FluentTextArea.razor.cs Calls the base autofocus lifecycle.
src/​Core/​Components/​Switch/​FluentSwitch.razor.cs Calls the base autofocus lifecycle.
src/​Core/​Components/​Radio/​FluentRadioGroup.razor.cs Calls the base autofocus lifecycle.
src/​Core/​Components/​NumberInput/​FluentNumberInput.razor.cs Calls the base autofocus lifecycle.
src/​Core/​Components/​List/​FluentListbox.razor.cs Focuses the active option after initialization.
src/​Core/​Components/​DateTime/​FluentTimePicker.razor.cs Calls the base autofocus lifecycle.
src/​Core/​Components/​DateTime/​FluentCalendar.razor.cs Adds a focusable-day selector.
src/​Core/​Components/​Checkbox/​FluentCheckbox.razor.cs Preserves initialization and invokes base autofocus.
src/​Core/​Components/​Button/​FluentToggleButton.razor Uses the renamed Autofocus property.
src/​Core/​Components/​Button/​FluentMenuButton.razor Uses the renamed Autofocus property.
src/​Core/​Components/​Button/​FluentCompoundButton.razor.cs Adds focus support and autofocus ID generation.
src/​Core/​Components/​Button/​FluentCompoundButton.razor Uses the renamed Autofocus property.
src/​Core/​Components/​Button/​FluentButton.razor.cs Adds focus support and autofocus ID generation.
src/​Core/​Components/​Button/​FluentButton.razor Uses the renamed Autofocus property.
src/​Core/​Components/​Base/​IFluentComponentAutofocus.cs Defines the shared focus contract.
src/​Core/​Components/​Base/​FluentInputBase.cs Implements shared input focus behavior.
src/​Core/​Components/​Base/​FluentComponentBase.cs Exposes the runtime to internal helpers.
src/​Core.Scripts/​src/​Utilities/​DomFunctions.ts Adds element and selector focus utilities.
src/​Core.Scripts/​src/​ExportedMethods.ts Exports the focus utilities for interop.
src/​Core.Scripts/​src/​Components/​List/​ListBoxContainer.ts Makes initialization awaitable and reuses instances.
examples/​Demo/​FluentUI.Demo.Client/​DebugPages/​AutofocusPage.razor Adds interactive autofocus demonstrations.

Review effort: Balanced

Comment thread src/Core.Scripts/src/Utilities/DomFunctions.ts Outdated
Comment thread src/Core/Components/Button/FluentButton.razor.cs
Comment thread src/Core/Components/Button/FluentCompoundButton.razor.cs
Comment thread src/Core/Components/DateTime/FluentCalendar.razor.cs Outdated
Comment thread src/Core/Components/Base/FluentComponentBase.cs Outdated
Comment thread src/Core/Components/Button/FluentButton.razor.cs
Comment thread src/Core/Components/DateTime/FluentCalendar.razor.cs Outdated
Comment thread src/Core/Components/List/FluentListbox.razor.cs Outdated

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants