Skip to content

Feat/picker matdialog e tokens - #3

Merged
mapompeo merged 2 commits into
masterfrom
feat/picker-matdialog-e-tokens
Aug 27, 2026
Merged

mapompeo merged 2 commits into
masterfrom
feat/picker-matdialog-e-tokens

Conversation

@mapompeo

Copy link
Copy Markdown
Owner

No description provided.

mapompeo and others added 2 commits August 27, 2026 19:36
O picker de pokémon tinha 2 modos: dropdown inline (compare, busca) e
popup modal (team, escolher/trocar), esse último com .pp-overlay/.pp-dialog
próprios — sem focus trap, sem fechar nativamente no Escape/clique-fora
(tinha reimplementação manual disso), sem restaurar foco ao fechar.

- PokemonPickerComponent perde os inputs modal/open e todo o branch de
  template do overlay; fica só o dropdown (usa o novo input alwaysOpen
  pra forçar o painel de resultados visível quando embutido no diálogo,
  em vez de show()/focus()).
- PokemonPickerDialogComponent (novo): casca fina que abre via
  MatDialog.open(), com o MESMO card visual de antes (fundo/raio/sombra/
  max-height/padding idênticos) — só a parte comportamental (overlay,
  backdrop, foco, Escape, animação) passa a ser do CDK por trás do
  MatDialog. panelClass 'pp-dialog-panel' neutraliza o container padrão
  do Material pra não competir com esse visual (mesmo padrão já usado
  pro .app-snackbar).
- team.component.ts troca pickerOpen/replacingIndex/pickerPreselect
  (signals + binding no template) por dialog.open(...).afterClosed().
  Precisou de um caso novo: como o diálogo agora sempre fecha ao
  selecionar (antes ficava aberto silenciosamente se o time estivesse
  cheio), adicionei um snackbar de 'time cheio' pra não regredir em
  silêncio nesse caso de borda.

Ganhos reais de acessibilidade testados manualmente no navegador:
- Tab fica preso dentro do diálogo (focus trap) — antes escapava pro
  resto da página por trás do overlay.
- Foco volta pro botão que abriu o diálogo ao fechar (Escape ou clique
  no backdrop) — antes se perdia.
- autoFocus do MatDialog substitui o setTimeout(...).focus() manual.

Validado: build + lint limpos; testado no navegador (abrir, focus trap,
Escape, clique no backdrop, seleção fecha e atualiza o time; modo
dropdown do compare intacto, sem regressão).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ros tokens

Nas 4 telas de feature que ainda tinham valor literal (pokemon-detail,
team, compare, pokemon-list): border-radius, font-weight, font-size e
duração/easing de transição que batiam exatamente com um token de
_tokens.scss viraram var(--dex-*).

Escopo deliberadamente limitado a essas 4 propriedades — cor já estava
100% tokenizada nesses arquivos (não sobrou nenhum hex/rgba literal), e
espaçamento (padding/margin/gap/width/height) ficou de fora: são números
ambíguos por natureza (um mesmo 8px pode ser rhythm de espaçamento ou só
o tamanho de um ícone/offset decorativo), e migrar tudo cegamente s
misturaria substituições corretas com atribuições de token sem sentido
semântico. Radius/peso/tamanho de fonte/duração não têm essa ambiguidade
— a própria propriedade CSS já garante o que o valor representa.

Também tokenizado: o cubic-bezier(0.4, 0, 0.2, 1) exato em
compare.component.scss, que já batia com --dex-ease-standard.

Validado com a mesma técnica do refactor de breakpoints: build antes/
depois do stash das mudanças, CSS final byte a byte idêntico — prova
formal de que a substituição não alterou nada visualmente. Lint limpo.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Aug 27, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
pokedex Ready Ready Preview Aug 27, 2026 11:11pm

@mapompeo
mapompeo merged commit b72a777 into master Aug 27, 2026
2 of 3 checks passed
@mapompeo
mapompeo deleted the feat/picker-matdialog-e-tokens branch August 27, 2026 23:12
mapompeo added a commit that referenced this pull request Aug 27, 2026
O npm ci do CI falhava com EUSAGE ('Missing: chokidar@5.0.0 from lock
file') desde o commit do ESLint (2ce2a76, PR #2) — o ng add ali rodou um
npm install que deixou o lockfile sutilmente inconsistente (script
allow-scripts pendente truncou parte da resolução de dependências
opcionais). Ficou silenciosamente quebrado em master desde então; PRs #2
e #3 também tiveram o build do CI falhando, só ninguém tinha reparado.

Fix: apaguei node_modules + package-lock.json e rodei npm install do
zero, depois validei com npm ci limpo (exatamente o que o CI roda) —
sem erro, build e lint passam.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

This branch was successfully deployed

1 active deployment
Preview — dd94d77f Deployed Aug 27, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant