@thibezer/ui-components-kit 2.13.0 → 2.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +3 -1
  3. package/dist/canvas.cjs +64 -59
  4. package/dist/canvas.js +2151 -2079
  5. package/dist/components/ui-canvas-cad/cad-feicoes-edicao.d.ts +1 -0
  6. package/dist/components/ui-canvas-cad/cad-feicoes-selecao-regiao.d.ts +4 -1
  7. package/dist/components/ui-canvas-cad/cad-feicoes.d.ts +2 -1
  8. package/dist/components/ui-canvas-cad/ui-canvas-cad.d.ts +2 -0
  9. package/dist/components/ui-tabela/tabela-corpo.d.ts +5 -0
  10. package/dist/components/ui-tabela/tabela-foco.d.ts +28 -0
  11. package/dist/components/ui-tabela/tabela-orquestrador-dados.d.ts +3 -0
  12. package/dist/components/ui-tabela/tabela-renderizador.d.ts +3 -0
  13. package/dist/components/ui-tabela/tipos.d.ts +7 -1
  14. package/dist/components/ui-tabela/ui-tabela.d.ts +6 -1
  15. package/dist/custom-elements.json +18265 -18072
  16. package/dist/data.cjs +1 -1
  17. package/dist/data.js +1 -1
  18. package/dist/gerencigeo-canvas/canvas_interacao.d.ts +5 -1
  19. package/dist/gerencigeo-canvas/feature_selecao.d.ts +4 -0
  20. package/dist/gerencigeo-canvas/utils.d.ts +14 -0
  21. package/dist/index.cjs +1 -1
  22. package/dist/index.js +1 -1
  23. package/dist/leaflet-CEPcxGWV.cjs +1 -0
  24. package/dist/leaflet-DOq10gfg.js +84 -0
  25. package/dist/mapa.cjs +1 -1
  26. package/dist/mapa.js +1 -1
  27. package/dist/register.cjs +1 -1
  28. package/dist/register.js +1 -1
  29. package/dist/tabela.cjs +1 -1
  30. package/dist/tabela.js +1 -1
  31. package/dist/tipos-elementos.d.ts +1 -0
  32. package/dist/tipos-vue.d.ts +1 -0
  33. package/dist/ui-tabela-propriedades-8IAYmk3P.cjs +142 -0
  34. package/dist/ui-tabela-propriedades-BoYXzP5Z.js +3191 -0
  35. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.15.0 — 2026-11-05
4
+
5
+ ### `<ui-tabela>`: células interativas (botão, checkbox, campo editável) sem perder foco nem texto
6
+
7
+ - **Rolagem virtual preserva as linhas visíveis:** novo modo `renderBody('rolagem')` (usado pelo scroll e pela rolagem programática). Linhas com o mesmo item, a mesma posição e as mesmas colunas ficam intactas; só as que entram na janela são criadas. O campo em edição mantém o nó, o foco e o texto digitado, e o `render` roda só para as linhas novas.
8
+ - **Foco devolvido após renderização completa** (trocar `dados`, filtrar, ordenar): o foco volta ao mesmo controle da mesma linha (achada pelo objeto, pelo `data-id` ou pela posição), com texto digitado, checkbox marcado e seleção de texto de `input`/`textarea`/`select` nativos, se o dado não mudou nesse meio-tempo (senão o dado novo prevalece). A tabela nunca grava nos dados. Novo micro-módulo `tabela-foco.ts`.
9
+ - **Cliques em controles não selecionam a linha:** além de `button`, `input`, `select`, `textarea`, `a` e `summary`, agora também `label`, `contenteditable` e elementos com `role` de controle (`checkbox`, `switch`, `radio`, `textbox`, `combobox`, `slider`, `spinbutton`, `menuitem`, `tab`, `link`), como `<ui-checkbox>` e `<ui-switch>`.
10
+ - **`render(valor, item, indice, indiceDados)`:** novo 4º argumento com a posição do item em `dados` (estável ao ordenar e filtrar). `indice` continua sendo a posição exibida.
11
+ - **Leitor de tela:** a região de anúncio do filtro só é escrita quando o texto muda (antes era reescrita a cada quadro de rolagem com filtro ativo).
12
+ - **Atributos:** mudar `aria-label`, `texto-erro` ou `texto-carregando` não recria mais as linhas.
13
+ - Testes de regressão em `ui-tabela-robustez.test.ts`; README com o contrato de células interativas.
14
+
15
+ ## 2.14.0 — 2026-11-05
16
+
17
+ ### `<ui-canvas-cad>` & `gerencigeo-canvas`: auditoria, seleção avançada, navegação e HUD de coordenadas
18
+
19
+ - **Seleção aditiva e subtrativa:** Suporte a `Shift` (adicionar à seleção) e `Ctrl`/`Cmd` (remover/subtrair da seleção) tanto no clique em feições quanto na caixa de seleção por arraste (caixa vermelha estilizada para operação subtrativa).
20
+ - **Escape na Edição de Vértices:** Pressionar `Escape` com nó selecionado desmarca o nó; pressionar `Escape` sem nó selecionado cancela a edição e reverte a feição para a geometria original (`cancelar()`).
21
+ - **Navegação com Barra de Espaço (`Hand Tool`):** Segurar a barra de espaço permite pan fluido com botão esquerdo do mouse (ideal para notebooks e trackpads), respeitando campos digitáveis.
22
+ - **HUD de Coordenadas em Tempo Real:** Rodapé do canvas exibindo coordenadas UTM (Fuso, Hemisfério, Este e Norte formatados no padrão brasileiro) e coordenadas geográficas (Lat/Lon decimais), com suporte ao atributo `sem-hud-coordenadas`.
23
+ - **Desempenho & GC:** Otimização de Garbage Collection em `feature_snap.ts` eliminando alocações de arrays e tuplas intermediárias durante o hot-path do cursor; cancelamento de timers concorrentes no hover de feições.
24
+ - Testes abrangentes em `tests/canvas-melhorias-auditoria.test.ts`.
25
+
3
26
  ## 2.13.0 — 2026-11-05
4
27
 
5
28
  ### `<ui-canvas-cad>`: atributo `qualidade` (`alta` | `media` | `baixa`)
package/README.md CHANGED
@@ -505,7 +505,9 @@ const ok = await tabela.carregarDoEndpoint('/api/v1/vertices'); // true em suces
505
505
  | `ui-fetch-erro` | `{ url, erro, origem, status? }` | Falha. `origem`: `rede`, `http` (com `status`), `json` ou `render` |
506
506
  | `ui-fetch-cancelado` | `{ url }` | Requisição abortada ou substituída (fecha o par do `ui-fetch-start`) |
507
507
 
508
- Boas práticas: trate `dados` como imutável (atribua sempre um array novo), mantenha `chave-id` única e não nula, memorize `colunas` (atribuí-las de novo refaz a tabela) e coloque controles interativos das células com `data-prevent-select` se não quiser que o clique selecione a linha. `render` devolvendo `string` vira texto (não HTML); devolva um `HTMLElement` novo por chamada.
508
+ Boas práticas: trate `dados` como imutável (atribua sempre um array novo), mantenha `chave-id` única e não nula, memorize `colunas` (atribuí-las de novo refaz a tabela) e coloque controles interativos das células com `data-prevent-select` se não quiser que o clique selecione a linha (`button`, `input`, `select`, `textarea`, `a`, `label`, `contenteditable` e elementos com `role` de controle, como o `<ui-checkbox>` e o `<ui-switch>`, já são ignorados). `render` devolvendo `string` vira texto (não HTML); devolva um `HTMLElement` novo por chamada.
509
+
510
+ **Células interativas (`render`)**: `render(valor, item, indice, indiceDados)` pode devolver botão, checkbox ou campo editável. `indice` é a posição **exibida** (muda ao ordenar e filtrar); para editar ou remover use `item` ou `indiceDados`, a posição do item em `dados`. Com virtualização, a rolagem mantém as linhas que continuam visíveis (o campo em edição conserva foco e texto) e só renderiza as que entram. Trocar `dados`, filtrar ou ordenar recria as linhas e roda o `render` de novo: o foco volta ao mesmo controle da mesma linha, com o texto digitado (ou o checkbox marcado) e a seleção de texto, desde que o dado do item não tenha mudado nesse meio-tempo (senão o dado novo prevalece). A tabela nunca grava nos dados: grave o valor em `item` no seu handler (`input`/`change`). Vale para `input`, `textarea` e `select` nativos; componentes próprios (`<ui-campo-texto>` etc.) mantêm o foco, mas não o texto não gravado. `dados` guarda uma cópia do array (entradas nulas são descartadas): para refletir um `push`, atribua um array novo.
509
511
 
510
512
  ---
511
513