Files
BimAI/BimAI.UI.Shared/Components/ProductListComponent.razor

125 lines
5.3 KiB
Plaintext
Raw Permalink Normal View History

2025-07-17 14:29:02 +02:00
@using MudBlazor.Internal
<MudText Typo="Typo.h4" Class="mb-4">Lista Produktów</MudText>
<MudExpansionPanels Class="mb-4">
<MudExpansionPanel Icon="@Icons.Material.Filled.FilterList"
Text="Filtry"
Expanded="true">
<MudGrid>
<MudItem xs="12" sm="6" md="4">
<MudTextField @bind-Value="filterRequest.Search"
Label="Szukaj"
Placeholder="Nazwa, Kod, EAN..."
Immediate="true"
DebounceInterval="500"
OnDebounceIntervalElapsed="SearchProducts"
Clearable="true"/>
</MudItem>
<MudItem xs="12" sm="6" md="4">
<MudTextField @bind-Value="filterRequest.Name"
Label="Nazwa produktu"
Immediate="true"
DebounceInterval="500"
OnDebounceIntervalElapsed="SearchProducts"
Clearable="true"/>
</MudItem>
<MudItem xs="12" sm="6" md="4">
<MudTextField @bind-Value="filterRequest.Code"
Label="Kod produktu"
Immediate="true"
DebounceInterval="500"
OnDebounceIntervalElapsed="SearchProducts"
Clearable="true"/>
</MudItem>
<MudItem xs="12" sm="6" md="4">
2025-07-17 19:17:27 +02:00
<div style="display: flex; gap: 8px; align-items: flex-end;">
<div style="flex: 1;">
<MudTextField @bind-Value="filterRequest.Ean"
Label="EAN"
Immediate="true"
DebounceInterval="500"
OnDebounceIntervalElapsed="SearchProducts"
Clearable="true"/>
</div>
@if (ScannerService.IsAvailable)
{
<MudIconButton Icon="@Icons.Material.Filled.CameraAlt"
Color="Color.Primary"
OnClick="OnScannerClick"
Variant="Variant.Filled"
Size="Size.Medium"
Title="Skanuj kod EAN"/>
}
</div>
2025-07-17 14:29:02 +02:00
</MudItem>
<MudItem xs="12" sm="6" md="4">
<MudButton Variant="Variant.Outlined"
OnClick="ClearFilters"
StartIcon="Icons.Material.Filled.Clear">
Wyczyść filtry
</MudButton>
</MudItem>
</MudGrid>
</MudExpansionPanel>
</MudExpansionPanels>
<MudDivider Class="my-4"></MudDivider>
<MudTable Items="products.Items"
Dense="true"
Hover="true"
Loading="isLoading"
LoadingProgressColor="Color.Info">
<HeaderContent>
<MudTh>Nazwa</MudTh>
<MudTh>Kod</MudTh>
<MudTh>EAN</MudTh>
<MudTh>Akcje</MudTh>
</HeaderContent>
<RowTemplate>
<MudTd DataLabel="Nazwa">@context.Name</MudTd>
<MudTd DataLabel="Kod">@context.Code.Trim()</MudTd>
<MudTd DataLabel="EAN"></MudTd>
<MudTd DataLabel="Akcje">
<MudIconButton Icon="@Icons.Material.Filled.Edit"
Size="Size.Small"
OnClick="() => EditProduct(context.Id)"/>
<MudIconButton Icon="@Icons.Material.Filled.Delete"
Size="Size.Small"
Color="Color.Error"
OnClick="() => DeleteProduct(context.Id)"/>
</MudTd>
</RowTemplate>
<NoRecordsContent>
<MudText>Brak produktów do wyświetlenia</MudText>
</NoRecordsContent>
<LoadingContent>
Ładowanie...
</LoadingContent>
</MudTable>
@if (products.TotalCount > 0)
{
<MudGrid Class="mt-4" AlignItems="Center.Center">
<MudItem xs="12" sm="6">
<MudText Typo="Typo.body2">
Wyniki @((products.Page - 1) * products.PageSize + 1) - @Math.Min(products.Page * products.PageSize, products.TotalCount)
z @products.TotalCount
</MudText>
</MudItem>
<MudItem xs="12" sm="6" Class="d-flex justify-end">
<MudPagination Count="products.TotalPages"
Selected="products.Page"
SelectedChanged="OnPageChanged"
ShowFirstButton="true"
ShowLastButton="true"/>
</MudItem>
</MudGrid>
}