Soenneker.Quark.Table 3.0.3

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package Soenneker.Quark.Table --version 3.0.3
                    
NuGet\Install-Package Soenneker.Quark.Table -Version 3.0.3
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Soenneker.Quark.Table" Version="3.0.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Soenneker.Quark.Table" Version="3.0.3" />
                    
Directory.Packages.props
<PackageReference Include="Soenneker.Quark.Table" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Soenneker.Quark.Table --version 3.0.3
                    
#r "nuget: Soenneker.Quark.Table, 3.0.3"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Soenneker.Quark.Table@3.0.3
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Soenneker.Quark.Table&version=3.0.3
                    
Install as a Cake Addin
#tool nuget:?package=Soenneker.Quark.Table&version=3.0.3
                    
Install as a Cake Tool

alternate text is missing from this package README image alternate text is missing from this package README image alternate text is missing from this package README image alternate text is missing from this package README image

Soenneker.Quark.Table

A powerful, native Blazor table component with search, pagination, sorting, and server-side processing.

Features

  • 🔍 Search: Real-time search with debouncing
  • 📄 Pagination: First, previous, next, last, and direct page navigation
  • 🔄 Sorting: Multi-column sorting with visual indicators
  • Server-Side Processing: Efficient data loading with continuation tokens
  • 🎨 Customizable: Extensive styling and configuration options
  • 📱 Responsive: Mobile-friendly design
  • Accessible: Keyboard navigation and ARIA support
  • 🔧 Multiple Modes: Server-side, manual, and direct data modes

Installation

dotnet add package Soenneker.Quark.Table

Register services in your Program.cs:

using Soenneker.Quark.Table.Registrars;

builder.Services.AddQuarkTable();

Quick Start

Server-Side Mode

@using Soenneker.Quark.Table
@using Soenneker.Quark.Table.Dtos

<QuarkTable OnServerSideRequest="HandleServerSideRequest">
</QuarkTable>

@code {
    private async Task<QuarkTableResponse> HandleServerSideRequest(QuarkTableRequest request)
    {
        // Your server-side processing logic here
        var data = await GetDataAsync(request.Start, request.Length, request.Search?.Value);
        
        return QuarkTableResponse.Success(
            request.Draw, 
            totalRecords, 
            filteredRecords, 
            data
        );
    }
}

Manual Mode

<QuarkTable ManualMode="true"
            OnManualRequest="HandleManualRequest"
            TotalRecords="1000"
            ShowSearch="true"
            ShowPagination="true">
    <ManualHeader>
            <tr>
                <th>ID</th>
                <th>Name</th>
                <th>Email</th>
            </tr>
    </ManualHeader>
    <ManualBody>
            @foreach (var item in items)
            {
                <tr>
                    <td>@item.Id</td>
                    <td>@item.Name</td>
                    <td>@item.Email</td>
                </tr>
            }
    </ManualBody>
</QuarkTable>

@code {
    private async Task HandleManualRequest(QuarkTableRequest request)
    {
        // Handle the request manually
        // Update your data source based on request parameters
    }
}

Direct Data Mode

<QuarkTable DirectData="@tableData"
            ShowSearch="true"
            ShowPagination="true">
</QuarkTable>

@code {
    private List<List<string>> tableData = new()
    {
        new() { "ID", "Name", "Email" },
        new() { "1", "John Doe", "john@example.com" },
        new() { "2", "Jane Smith", "jane@example.com" }
    };
}

Key Parameters

Parameter Type Description
OnServerSideRequest Func<QuarkTableRequest, Task<QuarkTableResponse>> Server-side data processing callback
OnManualRequest EventCallback<QuarkTableRequest> Manual mode request callback
ManualMode bool Enable manual mode (default: false)
DirectData object Direct data for client-side processing
ManualHeader RenderFragment Custom header content for manual mode
ManualBody RenderFragment Custom body content for manual mode
ShowSearch bool Show search input (default: true)
ShowPagination bool Show pagination controls (default: true)
ShowPageSizeSelector bool Show page size selector (default: true)
Options QuarkTableOptions Table configuration options

Configuration Options

var options = new QuarkTableOptions
{
    Sortable = true,
    DefaultPageSize = 10,
    PageSizeOptions = [10, 25, 50, 100],
    ShowPageSizeSelector = true,
    ShowSearch = true,
    SearchPlaceholder = "Search...",
    SearchDebounceMs = 300,
    SearchPosition = SearchPosition.End,
    ShowPagination = true,
    MaxPageButtons = 5,
    ServerSide = true,
    ShowInfo = true
};

Data Transfer Objects

QuarkTableRequest

public class QuarkTableRequest
{
    public int Draw { get; set; }
    public int Start { get; set; }
    public int Length { get; set; }
    public QuarkTableSearch? Search { get; set; }
    public List<QuarkTableOrder>? Order { get; set; }
    public string? ContinuationToken { get; set; }
}

QuarkTableResponse

public class QuarkTableResponse
{
    public int Draw { get; set; }
    public int TotalRecords { get; set; }
    public int TotalFilteredRecords { get; set; }
    public object? Data { get; set; }
    public string? Error { get; set; }
    public string? ContinuationToken { get; set; }
    
    public static QuarkTableResponse Success(int draw, int totalRecords, int filteredRecords, object data, string? continuationToken = null);
    public static QuarkTableResponse Fail(int draw, string errorMessage);
}

Event Callbacks

<QuarkTable OnServerSideRequest="HandleServerSideRequest"
            OnSearch="HandleSearch"
            OnPageSizeChanged="HandlePageSizeChanged"
            OnGoToPage="HandleGoToPage"
            OnOrder="HandleOrder"
            OnInitialize="HandleInitialize">
    
</QuarkTable>

@code {
    private async Task HandleSearch(string searchTerm)
    {
        // Handle search term changes
    }

    private async Task HandlePageSizeChanged(int pageSize)
    {
        // Handle page size changes
    }

    private async Task HandleGoToPage(int page)
    {
        // Handle page navigation
    }

    private async Task HandleOrder(QuarkTableOrderEventArgs args)
    {
        // Handle column sorting
    }

    private async Task HandleInitialize()
    {
        // Handle component initialization
    }
}

Demo

Check out the live demo to see the component in action.

License

This project is licensed under the MIT License.

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.0.38 15 8/23/2025
3.0.37 23 8/22/2025
3.0.36 22 8/22/2025
3.0.35 92 8/21/2025
3.0.34 87 8/17/2025
3.0.33 98 8/15/2025
3.0.32 129 8/12/2025
3.0.31 126 8/12/2025
3.0.30 126 8/12/2025
3.0.29 127 8/12/2025
3.0.28 128 8/12/2025
3.0.27 129 8/12/2025
3.0.26 123 8/12/2025
3.0.25 129 8/12/2025
3.0.24 127 8/11/2025
3.0.23 131 8/11/2025
3.0.22 124 8/11/2025
3.0.21 202 8/7/2025
3.0.17 207 8/6/2025
3.0.16 200 8/6/2025
3.0.15 201 8/6/2025
3.0.14 201 8/6/2025
3.0.13 205 8/6/2025
3.0.12 214 8/6/2025
3.0.11 204 8/5/2025
3.0.10 209 8/5/2025
3.0.9 208 8/5/2025
3.0.8 208 8/5/2025
3.0.7 195 8/5/2025
3.0.6 188 8/5/2025
3.0.5 30 8/2/2025
3.0.4 34 8/1/2025
3.0.3 43 8/1/2025