Repository navigation
feat(table): adiciona diretiva p-table-header-template - #2979
Open
efdeiasoliveira wants to merge 1 commit into
Open
efdeiasoliveira wants to merge 1 commit into
efdeiasoliveira wants to merge 1 commit into
Conversation
Permite adicionar conteúdo personalizado abaixo do título das colunas do po-table, como campos de pesquisa por coluna, ícones ou ações. O template pode ser específico de uma coluna, informando p-property, ou genérico para todas as colunas. Cliques e o pressionar do mouse dentro do template não disparam a ordenação nem o drag and drop da coluna.
🔎 Análise de impactoRisco estimado: 🟡 Médio · Arquivos: 11 (+379/-3) Pontos de atenção
Unidades alteradas
Componentes impactadosDiretos (2): Indiretos (2)
Onde testarArquivos por unidade
Gerado automaticamente a partir do grafo de imports e seletores da branch base · PR #2979. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
po-table
#2978
PR Checklist [Revisor]
Qual o comportamento atual?
O cabeçalho das colunas do
po-tablenão aceita nenhum conteúdo além do título. Os templates que existem hoje (p-table-column-template,p-table-cell-templateep-table-row-template) atuam só nas linhas da tabela.Na prática, quem precisa de algo no cabeçalho, como uma pesquisa por coluna (bem comum em telas de consulta), acaba tendo que trocar o
po-tablepor uma tabela própria ou mexer no DOM do componente. Foi o que aconteceu com a gente numa ferramenta de consultas SQL: os usuários queriam filtrar direto pela coluna, como fazem no DBeaver, e não havia como fazer isso pelopo-table.Qual o novo comportamento?
Criei a diretiva
p-table-header-template, seguindo a mesma linha das diretivas de template que já existem. O conteúdo do template aparece logo abaixo do título da coluna:Alguns pontos sobre como fiz:
p-property, o template vale só para aquela coluna. Semp-property, vale para todas as colunas que não têm um template específico. O específico tem prioridade.$implicit), então dá para usarcolumn.property,column.labeletc.<th>das colunas é montado (com e sem drag and drop, com e sem virtual scroll). Por isso funciona em qualquer combinação dep-height,p-virtual-scrollep-draggable.click,mousedownetouchstart. Assim, clicar ou digitar dentro do template não ordena a coluna nem inicia o arraste. Clicar no título continua ordenando normalmente.input()com signals,inject(), semany), mas foi declarada noPoTableModulejunto das outras diretivas da tabela, para manter a consistência do componente.po-table-header-template. Não mexi no@po-ui/style; a ideia é que o espaçamento fique a cargo de quem usa. Se preferirem um estilo padrão, posso abrir o ajuste no repositório de estilos também.Também atualizei a descrição do
po-tablecitando o novo template e adicionei o samplesample-po-table-header-template, que mostra a pesquisa por coluna funcionando.Simulação
po-table: cada coluna mostra uma caixinha de pesquisa, e a colunastatusmostra um texto próprio (template específico). Digitar na caixinha filtra os itens, e clicar dentro dela não ordena a coluna.po-table.component.spec.ts:getHeaderTemplate(template específico, genérico e ausente);po-table-header-template.directive.spec.ts: criação da diretiva e leitura dop-property;po-table-header-template.integration.spec.ts: renderiza umpo-tablede verdade e confere que o template aparece no cabeçalho, que o específico tem prioridade, que clicar dentro do template não ordena e que clicar no título continua ordenando.Observações
Já validamos essa versão (gerada a partir da
v21.10.0) numa aplicação nossa de consultas SQL, com pesquisa por coluna, ordenação viap-sort-byep-draggableligados ao mesmo tempo, e o comportamento ficou bem estável.Rodando a suíte completa do
po-tablelocalmente (Windows + ChromeHeadless), alguns testes dedeleteItems/changesAfterDeletefalham comCannot read properties of undefined (reading 'nativeElement')e o navegador desconecta. Isso acontece igual nav21.10.0sem nenhuma alteração minha, então parece algo do ambiente local. Achei melhor avisar.Um exemplo de uso real, numa tela de consultas SQL: a lupa no cabeçalho da coluna
#mostra ou esconde uma caixinha de pesquisa embaixo de cada título (template genérico + template específico viap-property), junto comp-sortep-draggable.