Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Initial implementation for dotnet/aspnetcore#37908. This has evolved from the "grid" sample in our early rendering benchmark work, via the BlazeOrbital grid, into the current shape which is hopefully a lot more flexible while retaining the original performance.
The key techniques that QuickGrid uses to maximize performance are avoiding having child components for each cell, not having event handlers for each cell, and making careful use of
@key
and minimizing allocations. It should comfortably render tables around 10x100 with plain cell contents effortlessly. For much larger tables (or ones containing expensive child components), it makes it easy to enable UI virtualization, and can then comfortably scale up to 100,000 rows or whatever is the maximum supported by the browser.Scope
This is not intended to be a replacement for full-featured commercial grid products (such as those from component vendors). See the included README for details about what this is meant to achieve and what is the scope of this experimental package.
Still to do
There's still a chunk of work remaining in setting up a demo site and a wider range of examples, along with installation and usage steps. In the future, we may choose to add features. There are a few basic ones (editing, column grouping) that I think are worth considering.
However, as a design goal we should not aim to include every possible grid feature. People who need the most sophisticated grids can continue to use those from component vendors. Hopefully grids from component vendors can take advantage of some of the architectural patterns present in QuickGrid to improve their performance and their degree of being idiomatic for Blazor and .NET generally.
Review notes
Although this PR contains > 300 files, more than 200 of them are just country flag SVGs for the test data.
Nonetheless it's still a lot of code. I don't necessarily expect this to be reviewed with the same level of obsessive detail as we'd do for production-supported code. We can continue to change this (including in breaking ways) for quite a long time, maybe forever.