Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Overlay] Add Interactive and InteractiveExceptId parameters #2580

Merged
merged 13 commits into from
Aug 30, 2024

Conversation

dvoituron
Copy link
Collaborator

@dvoituron dvoituron commented Aug 25, 2024

[Overlay] Add FullScreenInteractiveExceptElementId

Introduction

In some use cases (see #2567#issuecomment-2307956048, it's useful to allow the user to interact with components placed under the FluentOverlay (with the possible exception of certain zones). To manage this, we've added the pointer-events: none style, which disables event handling on the FluentOverlay and allows interaction with other elements on the web page. It is then necessary to add a global event document.addEventListener via the FluentOverlay.razor.js script (register it and remove it at the end of use).

Stay interactive

By using the InteractiveExceptId property, only the targeted element will not close the FluentOverlay panel. The user can click anywhere else to close the FluentOverlay.

In this example, the FluentOverlay will only close when the user clicks outside the white zone and the user can increment the counter before to close the Overlay

Simplified example

<FluentOverlay @bind-Visible=@visible
               FullScreen="true"
               Interactive="true"
               InteractiveExceptId="my-zone">
  <div id="my-zone">
    <p>Non-interactive zone</p>
    <FluentProgressRing />
  </div>
</FluentOverlay>

peek_3

Copy link

github-actions bot commented Aug 25, 2024

✅ All tests passed successfully

Details on your Workflow / Core Tests page.

Copy link

github-actions bot commented Aug 25, 2024

Summary - Unit Tests Code Coverage

Summary
Generated on: 8/30/2024 - 3:59:35 PM
Coverage date: 8/30/2024 - 3:59:23 PM - 8/30/2024 - 3:59:27 PM
Parser: MultiReport (2x Cobertura)
Assemblies: 1
Classes: 244
Files: 342
Line coverage: 61.1% (5344 of 8746)
Covered lines: 5344
Uncovered lines: 3402
Coverable lines: 8746
Total lines: 29793
Branch coverage: 52% (2603 of 5005)
Covered branches: 2603
Total branches: 5005
Method coverage: Feature is only available for sponsors
Tag: 1364_10635618322

Coverage

Microsoft.FluentUI.AspNetCore.Components - 61.1%
Name Line Branch
Microsoft.FluentUI.AspNetCore.Components 61.1% 52%
Microsoft.FluentUI.AspNetCore.Components.AccordionChangeEventArgs 0%
Microsoft.FluentUI.AspNetCore.Components.ActionButton`1 50%
Microsoft.FluentUI.AspNetCore.Components.ActionLink`1 0%
Microsoft.FluentUI.AspNetCore.Components.CalendarExtended 95% 86.6%
Microsoft.FluentUI.AspNetCore.Components.CalendarTitles 87% 76.6%
Microsoft.FluentUI.AspNetCore.Components.CheckboxChangeEventArgs 50%
Microsoft.FluentUI.AspNetCore.Components.ColumnBase`1 32.9% 10.2%
Microsoft.FluentUI.AspNetCore.Components.ColumnOptionsLabels 66.6%
Microsoft.FluentUI.AspNetCore.Components.ColumnResizeLabels 88.8%
Microsoft.FluentUI.AspNetCore.Components.ColumnResizeOptions`1 0% 0%
Microsoft.FluentUI.AspNetCore.Components.ColumnSortLabels 80%
Microsoft.FluentUI.AspNetCore.Components.CommunicationToast 0% 0%
Microsoft.FluentUI.AspNetCore.Components.CommunicationToastContent 0%
Microsoft.FluentUI.AspNetCore.Components.ComponentParameters 16.6% 0%
Microsoft.FluentUI.AspNetCore.Components.Components.DateTime.RangeOfDates 100% 50%
Microsoft.FluentUI.AspNetCore.Components.Components.Tooltip.TooltipGlobalOp
tions
40%
Microsoft.FluentUI.AspNetCore.Components.Components.Tooltip.TooltipOptions 100%
Microsoft.FluentUI.AspNetCore.Components.Components.Tooltip.TooltipService 72.5% 50%
Microsoft.FluentUI.AspNetCore.Components.CountdownTimer 0% 0%
Microsoft.FluentUI.AspNetCore.Components.DataGrid.Infrastructure.AsyncQuery
ExecutorSupplier
72.7% 71.4%
Microsoft.FluentUI.AspNetCore.Components.DataGrid.Infrastructure.ColumnsCol
lectedNotifier`1
87.5% 50%
Microsoft.FluentUI.AspNetCore.Components.DataGrid.Infrastructure.Defer 100%
Microsoft.FluentUI.AspNetCore.Components.DataGrid.Infrastructure.DisplayAtt
ributeExtensions
66.6% 50%
Microsoft.FluentUI.AspNetCore.Components.DataGrid.Infrastructure.InternalGr
idContext`1
90.9% 100%
Microsoft.FluentUI.AspNetCore.Components.DataGridCellFocusEventArgs 0%
Microsoft.FluentUI.AspNetCore.Components.DataGridRowFocusEventArgs 0%
Microsoft.FluentUI.AspNetCore.Components.DialogEventArgs 0%
Microsoft.FluentUI.AspNetCore.Components.DialogInstance 92.3% 75%
Microsoft.FluentUI.AspNetCore.Components.DialogParameters 92.5%
Microsoft.FluentUI.AspNetCore.Components.DialogParameters`1 100%
Microsoft.FluentUI.AspNetCore.Components.DialogReference 36.3% 37.5%
Microsoft.FluentUI.AspNetCore.Components.DialogResult 0% 0%
Microsoft.FluentUI.AspNetCore.Components.DialogService 4.1% 3.3%
Microsoft.FluentUI.AspNetCore.Components.Emoji 0% 0%
Microsoft.FluentUI.AspNetCore.Components.EmojiCompress 0% 0%
Microsoft.FluentUI.AspNetCore.Components.EmojiInfo 0%
Microsoft.FluentUI.AspNetCore.Components.Extensions.AdditionalAttributesExt
ensions
100% 100%
Microsoft.FluentUI.AspNetCore.Components.Extensions.BooleanExtensions 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Extensions.DateTimeExtensions 82.5% 85%
Microsoft.FluentUI.AspNetCore.Components.Extensions.EnumExtensions 70.5% 59%
Microsoft.FluentUI.AspNetCore.Components.Extensions.FluentInputExtensions 0% 0%
Microsoft.FluentUI.AspNetCore.Components.Extensions.UrlFormatterExtensions 100% 75%
Microsoft.FluentUI.AspNetCore.Components.FluentAccessibilityStatus 0% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentAccordion 60% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentAccordionItem 76% 35.7%
Microsoft.FluentUI.AspNetCore.Components.FluentAnchor 89.7% 67.8%
Microsoft.FluentUI.AspNetCore.Components.FluentAnchoredRegion 87.5% 60%
Microsoft.FluentUI.AspNetCore.Components.FluentAppBar 53.7% 35.2%
Microsoft.FluentUI.AspNetCore.Components.FluentAppBarItem 82.1% 60%
Microsoft.FluentUI.AspNetCore.Components.FluentAutocomplete`1 87.9% 76.4%
Microsoft.FluentUI.AspNetCore.Components.FluentBadge 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentBodyContent 100%
Microsoft.FluentUI.AspNetCore.Components.FluentBreadcrumb 100%
Microsoft.FluentUI.AspNetCore.Components.FluentBreadcrumbItem 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentButton 84.6% 64%
Microsoft.FluentUI.AspNetCore.Components.FluentCalendar 89% 82.6%
Microsoft.FluentUI.AspNetCore.Components.FluentCalendarBase 93.3% 81.2%
Microsoft.FluentUI.AspNetCore.Components.FluentCalendarDay 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentCalendarMonth 100% 66.6%
Microsoft.FluentUI.AspNetCore.Components.FluentCalendarYear 90.9% 60%
Microsoft.FluentUI.AspNetCore.Components.FluentCard 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentCheckbox 90.7% 87%
Microsoft.FluentUI.AspNetCore.Components.FluentCollapsibleRegion 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentCombobox`1 81.8% 70%
Microsoft.FluentUI.AspNetCore.Components.FluentComponentBase 90.9% 50%
Microsoft.FluentUI.AspNetCore.Components.FluentCounterBadge 93.1% 86.5%
Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid`1 60.3% 46.6%
Microsoft.FluentUI.AspNetCore.Components.FluentDataGridCell`1 72% 37.5%
Microsoft.FluentUI.AspNetCore.Components.FluentDataGridRow`1 55.7% 28.5%
Microsoft.FluentUI.AspNetCore.Components.FluentDatePicker 86.5% 56.5%
Microsoft.FluentUI.AspNetCore.Components.FluentDesignSystemProvider 100%
Microsoft.FluentUI.AspNetCore.Components.FluentDesignTheme 0% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentDialog 60.7% 67.5%
Microsoft.FluentUI.AspNetCore.Components.FluentDialogBody 100%
Microsoft.FluentUI.AspNetCore.Components.FluentDialogFooter 62.5% 43.3%
Microsoft.FluentUI.AspNetCore.Components.FluentDialogHeader 80.9% 81.8%
Microsoft.FluentUI.AspNetCore.Components.FluentDialogProvider 59.7% 52.1%
Microsoft.FluentUI.AspNetCore.Components.FluentDivider 86.3% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentDragContainer`1 69.2%
Microsoft.FluentUI.AspNetCore.Components.FluentDragEventArgs`1 0%
Microsoft.FluentUI.AspNetCore.Components.FluentDropZone`1 20% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentEditForm 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentEmoji`1 0% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentFlipper 100%
Microsoft.FluentUI.AspNetCore.Components.FluentFooter 100%
Microsoft.FluentUI.AspNetCore.Components.FluentGrid 71.4% 50%
Microsoft.FluentUI.AspNetCore.Components.FluentGridItem 87.2% 82.5%
Microsoft.FluentUI.AspNetCore.Components.FluentHeader 100%
Microsoft.FluentUI.AspNetCore.Components.FluentHighlighter 92.3% 20%
Microsoft.FluentUI.AspNetCore.Components.FluentHorizontalScroll 59.3% 20%
Microsoft.FluentUI.AspNetCore.Components.FluentIcon`1 87.8% 80.4%
Microsoft.FluentUI.AspNetCore.Components.FluentInputBase`1 70% 61%
Microsoft.FluentUI.AspNetCore.Components.FluentInputFile 88.4% 76.6%
Microsoft.FluentUI.AspNetCore.Components.FluentInputFileBuffer 100%
Microsoft.FluentUI.AspNetCore.Components.FluentInputFileEventArgs 91.6%
Microsoft.FluentUI.AspNetCore.Components.FluentInputLabel 100% 95%
Microsoft.FluentUI.AspNetCore.Components.FluentKeyCode 90.1% 90%
Microsoft.FluentUI.AspNetCore.Components.FluentKeyCodeEventArgs 100% 75%
Microsoft.FluentUI.AspNetCore.Components.FluentKeyCodeProvider 40% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentLabel 72.7% 21.4%
Microsoft.FluentUI.AspNetCore.Components.FluentLayout 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentListbox`1 93.3% 50%
Microsoft.FluentUI.AspNetCore.Components.FluentMain 100%
Microsoft.FluentUI.AspNetCore.Components.FluentMainLayout 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentMenu 35.7% 40.7%
Microsoft.FluentUI.AspNetCore.Components.FluentMenuButton 70.2% 8.3%
Microsoft.FluentUI.AspNetCore.Components.FluentMenuItem 0% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentMenuProvider 0% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentMessageBar 54.1% 25%
Microsoft.FluentUI.AspNetCore.Components.FluentMessageBarProvider 82.3% 66.6%
Microsoft.FluentUI.AspNetCore.Components.FluentMultiSplitter 81.7% 66.6%
Microsoft.FluentUI.AspNetCore.Components.FluentMultiSplitterEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.FluentMultiSplitterPane 97.1% 91%
Microsoft.FluentUI.AspNetCore.Components.FluentMultiSplitterResizeEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.FluentNavBase 55.1% 16.6%
Microsoft.FluentUI.AspNetCore.Components.FluentNavGroup 62.1% 36.6%
Microsoft.FluentUI.AspNetCore.Components.FluentNavLink 86.3% 50%
Microsoft.FluentUI.AspNetCore.Components.FluentNavMenu 59.6% 33.3%
Microsoft.FluentUI.AspNetCore.Components.FluentNavMenuGroup 0% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentNavMenuItemBase 0% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentNavMenuLink 0% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentNavMenuTree 0% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentNumberField`1 64.4% 47.9%
Microsoft.FluentUI.AspNetCore.Components.FluentOption`1 78.9% 58.3%
Microsoft.FluentUI.AspNetCore.Components.FluentOverflow 0% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentOverflowItem 0% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentOverlay 74.7% 56.2%
Microsoft.FluentUI.AspNetCore.Components.FluentPageScript 100%
Microsoft.FluentUI.AspNetCore.Components.FluentPaginator 0% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentPersona 100% 78.1%
Microsoft.FluentUI.AspNetCore.Components.FluentPopover 77% 65.9%
Microsoft.FluentUI.AspNetCore.Components.FluentPresenceBadge 60.3% 29.1%
Microsoft.FluentUI.AspNetCore.Components.FluentProfileMenu 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentProgress 85.7% 68.1%
Microsoft.FluentUI.AspNetCore.Components.FluentProgressRing 97.4% 92.8%
Microsoft.FluentUI.AspNetCore.Components.FluentPullToRefresh 93.9% 89.2%
Microsoft.FluentUI.AspNetCore.Components.FluentRadio`1 0% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentRadioContext 70% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentRadioGroup`1 83.3% 28.5%
Microsoft.FluentUI.AspNetCore.Components.FluentRating 82.6% 84.2%
Microsoft.FluentUI.AspNetCore.Components.FluentSearch 0% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentSelect`1 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentSkeleton 42.8% 50%
Microsoft.FluentUI.AspNetCore.Components.FluentSlider`1 60% 27.7%
Microsoft.FluentUI.AspNetCore.Components.FluentSliderLabel`1 63.1% 30%
Microsoft.FluentUI.AspNetCore.Components.FluentSortableList`1 80% 59%
Microsoft.FluentUI.AspNetCore.Components.FluentSortableListEventArgs 83.3%
Microsoft.FluentUI.AspNetCore.Components.FluentSpacer 100% 50%
Microsoft.FluentUI.AspNetCore.Components.FluentSplashScreen 0% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentSplitter 68.4% 40%
Microsoft.FluentUI.AspNetCore.Components.FluentStack 90.2% 60%
Microsoft.FluentUI.AspNetCore.Components.FluentSwitch 88.8% 50%
Microsoft.FluentUI.AspNetCore.Components.FluentTab 0% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentTabs 0% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentTextArea 84.2%
Microsoft.FluentUI.AspNetCore.Components.FluentTextField 88.5% 60%
Microsoft.FluentUI.AspNetCore.Components.FluentTimePicker 100% 90%
Microsoft.FluentUI.AspNetCore.Components.FluentToast 0% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentToastProvider 0% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentToolbar 100%
Microsoft.FluentUI.AspNetCore.Components.FluentTooltip 88.8% 64.2%
Microsoft.FluentUI.AspNetCore.Components.FluentTooltipProvider 0% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentTreeItem 85.3% 75%
Microsoft.FluentUI.AspNetCore.Components.FluentTreeView 91.3% 84.3%
Microsoft.FluentUI.AspNetCore.Components.FluentValidationMessage`1 0% 0%
Microsoft.FluentUI.AspNetCore.Components.FluentValidationSummary 100% 87.5%
Microsoft.FluentUI.AspNetCore.Components.FluentWizard 93.1% 83.3%
Microsoft.FluentUI.AspNetCore.Components.FluentWizardStep 97% 88.3%
Microsoft.FluentUI.AspNetCore.Components.FluentWizardStepArgs 100%
Microsoft.FluentUI.AspNetCore.Components.FluentWizardStepChangeEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.GlobalState 33.3% 50%
Microsoft.FluentUI.AspNetCore.Components.GridItemsProviderRequest`1 92.3% 41.6%
Microsoft.FluentUI.AspNetCore.Components.GridItemsProviderResult 100%
Microsoft.FluentUI.AspNetCore.Components.GridItemsProviderResult`1 100%
Microsoft.FluentUI.AspNetCore.Components.GridSort`1 35.1% 25.9%
Microsoft.FluentUI.AspNetCore.Components.HorizontalScrollEventArgs 0%
Microsoft.FluentUI.AspNetCore.Components.Icon 81.3% 85.2%
Microsoft.FluentUI.AspNetCore.Components.IconFromImage 100%
Microsoft.FluentUI.AspNetCore.Components.IconInfo 100%
Microsoft.FluentUI.AspNetCore.Components.Identifier 66.6% 62.5%
Microsoft.FluentUI.AspNetCore.Components.IdentifierContext 66.6% 41.6%
Microsoft.FluentUI.AspNetCore.Components.INavMenuItemsOwner 0%
Microsoft.FluentUI.AspNetCore.Components.Infrastructure.EventCallbackSubscr
ibable`1
83.3% 100%
Microsoft.FluentUI.AspNetCore.Components.Infrastructure.EventCallbackSubscr
iber`1
90% 75%
Microsoft.FluentUI.AspNetCore.Components.InputHelpers`1 36.9% 31.2%
Microsoft.FluentUI.AspNetCore.Components.InternalAppBarContext 100% 100%
Microsoft.FluentUI.AspNetCore.Components.InternalDialogContext 80%
Microsoft.FluentUI.AspNetCore.Components.InternalListContext`1 80% 66.6%
Microsoft.FluentUI.AspNetCore.Components.InternalToastContext 0%
Microsoft.FluentUI.AspNetCore.Components.KeyCodeService 60.3% 28.5%
Microsoft.FluentUI.AspNetCore.Components.LibraryConfiguration 88.2% 50%
Microsoft.FluentUI.AspNetCore.Components.ListComponentBase`1 62.7% 59.5%
Microsoft.FluentUI.AspNetCore.Components.LoadedEventArgs 0%
Microsoft.FluentUI.AspNetCore.Components.LuminanceChangedEventArgs 0%
Microsoft.FluentUI.AspNetCore.Components.MenuChangeEventArgs 0%
Microsoft.FluentUI.AspNetCore.Components.MenuService 0% 0%
Microsoft.FluentUI.AspNetCore.Components.Message 50% 0%
Microsoft.FluentUI.AspNetCore.Components.MessageBox 66.6% 0%
Microsoft.FluentUI.AspNetCore.Components.MessageBoxContent 0%
Microsoft.FluentUI.AspNetCore.Components.MessageOptions 76.9%
Microsoft.FluentUI.AspNetCore.Components.MessageService 33% 26.9%
Microsoft.FluentUI.AspNetCore.Components.NavMenuActionArgs 0% 0%
Microsoft.FluentUI.AspNetCore.Components.OfficeColorUtilities 0%
Microsoft.FluentUI.AspNetCore.Components.Option`1 0%
Microsoft.FluentUI.AspNetCore.Components.OptionsSearchEventArgs`1 100%
Microsoft.FluentUI.AspNetCore.Components.OverflowItem 100%
Microsoft.FluentUI.AspNetCore.Components.PaginationState 0% 0%
Microsoft.FluentUI.AspNetCore.Components.ProgressFileDetails 100%
Microsoft.FluentUI.AspNetCore.Components.ProgressToast 0% 0%
Microsoft.FluentUI.AspNetCore.Components.ProgressToastContent 0%
Microsoft.FluentUI.AspNetCore.Components.PropertyColumn`2 80% 52.6%
Microsoft.FluentUI.AspNetCore.Components.RenderFragmentDialog 100%
Microsoft.FluentUI.AspNetCore.Components.Resources.TimeAgoResource 76.1% 100%
Microsoft.FluentUI.AspNetCore.Components.SelectAllTemplateArgs 100%
Microsoft.FluentUI.AspNetCore.Components.SelectColumn`1 85.9% 79.4%
Microsoft.FluentUI.AspNetCore.Components.SelectDatesHoverEventArgs 0%
Microsoft.FluentUI.AspNetCore.Components.ServiceCollectionExtensions 80% 100%
Microsoft.FluentUI.AspNetCore.Components.SortedProperty 0%
Microsoft.FluentUI.AspNetCore.Components.SplashScreenContent 0% 0%
Microsoft.FluentUI.AspNetCore.Components.SplitterCollapsedEventArgs 0%
Microsoft.FluentUI.AspNetCore.Components.SplitterResizedEventArgs 0%
Microsoft.FluentUI.AspNetCore.Components.StandardLuminanceExtensions 0% 0%
Microsoft.FluentUI.AspNetCore.Components.StaticAssetServiceConfiguration 0% 0%
Microsoft.FluentUI.AspNetCore.Components.TabChangeEventArgs 0%
Microsoft.FluentUI.AspNetCore.Components.TemplateColumn`1 0% 0%
Microsoft.FluentUI.AspNetCore.Components.TimeAgoOptions 92.3%
Microsoft.FluentUI.AspNetCore.Components.ToastInstance 0% 0%
Microsoft.FluentUI.AspNetCore.Components.ToastParameters 0%
Microsoft.FluentUI.AspNetCore.Components.ToastParameters`1 0%
Microsoft.FluentUI.AspNetCore.Components.ToastResult 0% 0%
Microsoft.FluentUI.AspNetCore.Components.ToastService 0% 0%
Microsoft.FluentUI.AspNetCore.Components.TreeChangeEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.TreeViewItem 100%
Microsoft.FluentUI.AspNetCore.Components.TreeViewItemExpandedEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.UploadedFileDetails 0%
Microsoft.FluentUI.AspNetCore.Components.Utilities.CssBuilder 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Utilities.Debouncer 94.8% 37.5%
Microsoft.FluentUI.AspNetCore.Components.Utilities.InlineStyleBuilder 96.4% 87.5%
Microsoft.FluentUI.AspNetCore.Components.Utilities.JSModule 0% 0%
Microsoft.FluentUI.AspNetCore.Components.Utilities.RangeOf`1 96.7% 94.4%
Microsoft.FluentUI.AspNetCore.Components.Utilities.Splitter 82.8% 81.8%
Microsoft.FluentUI.AspNetCore.Components.Utilities.StyleBuilder 100% 91.6%
Microsoft.FluentUI.AspNetCore.Components.ZIndex 100%
System.Text.RegularExpressions.Generated 76.6% 51.4%

@RickyLin
Copy link
Contributor

RickyLin commented Aug 26, 2024

The FullScreenInteractiveExceptElementId property implies three things:

  1. The overlay is full screen
  2. The overlay is interactive
  3. Except for an element id

Is there a reasonable case that someone wants a full screen interactive overlay and no exceptions? If yes, then they can't achieve it with this property and probably we need a separate FullScreenInteractive property which is of type bool and current FullScreenInteractiveExceptElementId is for the exception element id only, null or empty means no exceptions.

Actually, there's a FullScreen property, so perhaps just have two more properties: Interactive of type bool and InteractiveExceptElementId of type string?, three properties, each one has simple and dedicated purpose.

@dvoituron
Copy link
Collaborator Author

If the dev want no exception, he can set an unknown ID. This ElementId will never found to have the expected result.

We don't check if the ID exists in the HTML DOM, we try to find it.

@RickyLin
Copy link
Contributor

I would say it's not straightforward and more like a workaround, but it does the trick.

@vnbaaij
Copy link
Collaborator

vnbaaij commented Aug 26, 2024

I think the functionality this offers is good but the name of the parameter is a bit verbose and unclear. Maybe change to something like DissmisExemptId?

@dvoituron
Copy link
Collaborator Author

I would say it's not straightforward and more like a workaround, but it does the trick.

I agree. I could add a paragraph in the documentation to explain that. And to add a global constant NoException = Identifier.NewId() to be more explicit for the dev.

@dvoituron
Copy link
Collaborator Author

I think the functionality this offers is good but the name of the parameter is a bit verbose and unclear. Maybe change to something like DissmisExemptId?

I was waiting for you on the name 😀. I couldn't think of a simple name. Your proposal is easier but remove the info of Fullscreen and Interactivity (maybe not interesting).

Other proposals ? InteractiveExceptId, ...

@vnbaaij
Copy link
Collaborator

vnbaaij commented Aug 26, 2024

I was waiting for you on the name 😀. I couldn't think of a simple name.

😂 I think the fact the name says you exempt an ID from dismissing (I misspelled earlier) the overlay kind of implies interactivity.
The full screen aspect can be clarified in xnl and developer docs

@RickyLin
Copy link
Contributor

RickyLin commented Aug 26, 2024

I still think it may be helpful to separate three concepts:

  1. Full Screen
  2. Interactive
  3. Interactive Except Element Id

Separating 1 and 2 can make the interactive available for non-full-screen as well if it could be a potential scenario.
Separating 2 and 3 can be intuitive for people who wants the interactive overlay only, simply set Interactive to true other than an NoException to InteractiveExceptionElementId because the Interactive emphasize interactive, can be true/false, the InteractiveExceptId emphasize an element id, set it a special NoException is not very intuitive for interactive only even if it's elaborated in document.

In my opinion, we separate all 3 concepts or separate 2 concepts, FullScreen and InteractiveExceptId. For the latter one, interactive can be available for non-full-screen scenario as well. Document is important but I guess many people don't read documents unless they can't figure out something directly. It would be great if people could infer the functionality by property names and don't need to depend on document.

@vnbaaij
Copy link
Collaborator

vnbaaij commented Aug 26, 2024

@RickyLin we can't separate the interactivity from the full screen part because it relies on a addEventListener on the document on the JS side.
Denis will spilt out the Interactive and the InteractivityExcludedElement concepts.

@vnbaaij vnbaaij added this to the v4.9.4 milestone Aug 26, 2024
@dvoituron
Copy link
Collaborator Author

Yep, Probably using Interactive = true and InteractiveExceptId = "my-id" will be easier for the dev (without this ID, the entire page will be interactive).

Of course, these properties will be dependent: InteractiveExceptId will be ignored if Interactive = false; and using Interactive will automatically set FullScreen = true .

Make sense?

@vnbaaij
Copy link
Collaborator

vnbaaij commented Aug 26, 2024

Yes, makes sense to me!

@RickyLin
Copy link
Contributor

It's nearly perfect for me. One last thought, for non-full-screen scenario, if we add event listener to the container element of the FluentOverlay based on its absolute position (nearest non-static positioned ancestor element?) instead of the document element, then it makes the same semantic for the full screen FluentOverlay and can decouple the FullScreen property.

@dvoituron
Copy link
Collaborator Author

One last thought, for non-full-screen scenario, if we add event listener to the container element

Mmm. Let me try if it's possible (but using the FluentOverlay element, not using the absolute position).

@dvoituron
Copy link
Collaborator Author

PR fixed (and description updated)

@dvoituron dvoituron enabled auto-merge (squash) August 27, 2024 19:46
@vnbaaij vnbaaij changed the title [Overlay] Add FullScreenInteractiveExceptElementId [Overlay] Add Interactive and InteractiveExceptId parameters Aug 30, 2024
@dvoituron dvoituron merged commit 6e1b785 into dev Aug 30, 2024
5 checks passed
@dvoituron dvoituron deleted the users/dvoituron/overlay-interactive branch August 30, 2024 15:55
dannyldj pushed a commit to dannyldj/fluentui-blazor that referenced this pull request Sep 26, 2024
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