DevArch.Blazor.Components 0.3.1
DevArch.Blazor.Components
Componentes Blazor padronizados (Radzen) para listagem e cadastro, independentes de qualquer projeto específico.
Instalação
// Program.cs — TFeedback é a implementação de IUiFeedback do host (toasts)
builder.Services.AddDevArchComponents<MeuUiFeedback>();
O host deve carregar o tema/CSS do Radzen normalmente; a lib não embute assets.
ListagemGrid<TItem>
Grid paginado server-side com seleção por checkbox, persistência de settings em localStorage (com versionamento), popup de configurações, botões CRUD e ações plugáveis.
<ListagemGrid TItem="MeuDto"
CarregarDados="carregador"
ChaveItem="@(x => x.Id)"
ChaveSettings="MinhaListagem"
OnAdicionar="Adicionar" OnEditar="Editar" ShowDeleteButton="false"
Acoes="acoes">
<ColumnsContent>
<RadzenDataGridColumn TItem="MeuDto" Title="Nome" Property="Nome" />
</ColumnsContent>
</ListagemGrid>
CarregarDados:Func<ParametrosListagem, Task<ResultadoPagina<TItem>>>— a página monta o delegate chamando seu backend (MediatR, HTTP…). Alternativa manual:Dados/Count/OnLoadData.Acoes: lista deAcaoListagem<TItem>— ações globais (EscopoAcao.Global) ou vinculadas à seleção (Selecao/SelecaoUnica), comVisivel,Habilitada, recarga e limpeza de seleção automáticas configuráveis.FiltrosContent: filtros externos acima do grid;HeaderContent: botões extras no header.VersaoSettings: incremente para invalidar settings persistidas de layouts antigos.- Filtro de período (de/até) nativo: colunas filtráveis do tipo data/datetime (
DateOnly,DateTime,DateTimeOffset, nullable ou não) ganham automaticamente um filtro de período em dois estágios no lugar do filtro padrão do Radzen: minimizado, um botão compacto que mostra o resumo (05/10/26 – 07/10/26, comxpara limpar); maximizado, um popup com os date pickers De / Até e os botões Aplicar / Limpar. A coluna passa aFilterOperator.Custome o filtro vira expressão Dynamic LINQ inclusiva por dia (Prop >= DateOnly.Parse("2026-01-10") && Prop <= ...; para datetime,Prop >= DateTime(2026,1,10) && Prop < DateTime(2026,2,1)), enviada emParametrosListagem.Filtrocomo qualquer outro filtro. Colunas comFilterTemplatepróprio ouFilterable="false"são preservadas;FiltroPeriodoAutomatico="false"desliga o padrão no grid. A lógica de montagem está emFiltroPeriodoExpressao(pura, testável); o componente éFiltroPeriodoData<TItem>. - Exportação XLSX (MiniExcel): habilitada por padrão em toda listagem — exporta todas as linhas do filtro/ordenação atuais, com as colunas visíveis como cabeçalho.
PermitirExportar="false"desabilita;NomeArquivoExportacaodefine o nome do arquivo;OnExportarsubstitui a exportação padrão por uma customizada.
EditorCadastro<TModel>
Esqueleto do ciclo Carregar/Salvar/Sair de páginas ou dialogs de cadastro.
<EditorCadastro TModel="MeuDto" Id="Id" IsDialog="IsDialog" RotaListagem="/minha-listagem"
CarregarAsync="Carregar" SalvarAsync="Salvar">
<ChildContent Context="model">
<RadzenTextBox @bind-Value="model.Nome" />
</ChildContent>
</EditorCadastro>
CarregarAsync(chamado quandoId > 0) retornanullem falha — o consumidor mostra a mensagem; o editor apenas fecha/navega.SalvarAsyncretornaResultadoOperacao— falha vira aviso e mantém aberto; sucesso fecha o dialog (true) ou navega paraRotaListagem.PodeSalvarfaz gating do botão Salvar (permissões).
DialogAcao
Dialog de confirmação/ação: conteúdo + Confirmar/Cancelar, com ConfirmarAsync retornando ResultadoOperacao (falha mantém aberto).
Publicação
Version no csproj (SemVer manual). Do repositório raiz: ./publicar-componentes.sh (exige BAGET_API_KEY).
No packages depend on DevArch.Blazor.Components.
.NET 10.0
- MiniExcel (>= 1.41.2)
- Radzen.Blazor (>= 11.0.4)