havit / Havit.Blazor

Free Bootstrap 5 components for ASP.NET Blazor + optional enterprise-level stack for Blazor development (gRPC code-first, layered architecture, localization, auth, ...)
https://havit.blazor.eu
MIT License
475 stars 66 forks source link

[HxGrid] ProgressIndicator on Grid with InfiniteScroll #760

Closed JoseTheChamp closed 2 months ago

JoseTheChamp commented 6 months ago

I have a HxGrid with ContentNavigationMode of infiniteScroll. Grid now behaves correctly on first load (displays placeholders when loading) and also when requesting additional rows (also shows placeholders).

I need the grid to be capable to show HxProgressIndicator when there is a new request to the DataProvider which is triggered by a user changing the filter. Right now after new filter is submited, there is no indication that something is happening.

This following piece of code in HxGrid.razor, starting at line 56, currently disallows Grids with InfiniteScroll to show the indicator. It also conflicts with "shouldRenderLoadingDataWithPlaceholders". bool progressIndicatorInProgress = (InProgress ?? _dataProviderInProgress) && (ContentNavigationModeEffective != GridContentNavigationMode.InfiniteScroll) && !shouldRenderLoadingDataWithPlaceholders;

I am unsure what would be a correct solution for this issue.

hakenr commented 6 months ago

@crdo This was the progress-indicator we removed. :-D Let's chat in the office.

hakenr commented 2 months ago

The original issue was that the in-progress indicator was shown when Virtualize in the infinite-scroll grid was requesting additional rows during scrolling. This resulted in both the placeholders (rendered by Virtualize) and the HxProgressIndicator (rendered by HxGrid) being displayed.

In the end we want the HxProgressIndicator to activate when the virtualize.RefreshDataAsync() method is called (e.g., during sorting or explicit calls to RefreshDataAsync() on the grid itself), as these are instances when Virtualize does not use its placeholders.