@thibezer/ui-components-kit 2.4.0 → 2.5.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.
- package/CHANGELOG.md +23 -26
- package/README.md +31 -2
- package/dist/canvas.cjs +59 -59
- package/dist/canvas.js +1395 -1725
- package/dist/components/ui-canvas-cad/cad-feicoes.d.ts +1 -15
- package/dist/components/ui-canvas-cad/cad-ferramentas-barra.d.ts +1 -8
- package/dist/components/ui-canvas-cad/cad-snap.d.ts +0 -2
- package/dist/components/ui-canvas-cad/ui-canvas-cad.d.ts +0 -7
- package/dist/components/ui-tabela/tabela-corpo.d.ts +4 -0
- package/dist/components/ui-tabela/tabela-dom.d.ts +3 -0
- package/dist/components/ui-tabela/tabela-header.d.ts +3 -1
- package/dist/components/ui-tabela/tabela-interacao.d.ts +3 -1
- package/dist/components/ui-tabela/tabela-ordenacao.d.ts +5 -3
- package/dist/components/ui-tabela/tabela-orquestrador-dados.d.ts +13 -1
- package/dist/components/ui-tabela/tabela-redimensionamento.d.ts +11 -2
- package/dist/components/ui-tabela/tabela-remota.d.ts +17 -4
- package/dist/components/ui-tabela/tabela-renderizador.d.ts +2 -0
- package/dist/components/ui-tabela/tabela-selecao.d.ts +2 -0
- package/dist/components/ui-tabela/tipos.d.ts +15 -0
- package/dist/components/ui-tabela/ui-tabela.d.ts +28 -4
- package/dist/custom-elements.json +2855 -2466
- package/dist/data.cjs +1 -1
- package/dist/data.js +54 -50
- package/dist/gerencigeo-canvas/canvas_interacao.d.ts +0 -2
- package/dist/gerencigeo-canvas/feature_desenho.d.ts +0 -2
- package/dist/gerencigeo-canvas/feature_desenho_controle.d.ts +0 -3
- package/dist/gerencigeo-canvas/feature_editor_vertices.d.ts +4 -51
- package/dist/index.cjs +1 -1
- package/dist/index.js +93 -89
- package/dist/register.cjs +1 -1
- package/dist/register.js +1 -1
- package/dist/tabela.cjs +1 -1
- package/dist/tabela.js +42 -38
- package/dist/tipos-elementos.d.ts +11 -6
- package/dist/tipos-vue.d.ts +10 -6
- package/dist/ui-botao-OGJV6Vfk.js +165 -0
- package/dist/ui-botao-psS1juof.cjs +12 -0
- package/dist/ui-tabela-propriedades-BecPqC-e.cjs +141 -0
- package/dist/ui-tabela-propriedades-BokvDD3b.js +2648 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,31 +1,28 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 2.
|
|
4
|
-
|
|
5
|
-
### `<ui-
|
|
6
|
-
|
|
7
|
-
**
|
|
8
|
-
|
|
9
|
-
- **
|
|
10
|
-
- **
|
|
11
|
-
- **
|
|
12
|
-
- **
|
|
13
|
-
- **
|
|
14
|
-
- **
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
**
|
|
20
|
-
|
|
21
|
-
- **
|
|
22
|
-
- **
|
|
23
|
-
- **
|
|
24
|
-
- **
|
|
25
|
-
-
|
|
26
|
-
- **Ferramentas de desenho avisam no HUD** quando recusam o clique (círculo abaixo de 2 m, cantos alinhados, centro repetido) ou quando Enter/duplo clique chega com pontos de menos.
|
|
27
|
-
- A dica do HUD de edição cita Shift (que precisa ser apertado **durante** o arraste).
|
|
28
|
-
- O HUD de edição passa a ter vários botões (Desfazer, Refazer, Excluir nó, Cancelar, Concluir): quem buscava o botão pelo seletor `#cm-vertex-edit-hud button` deve usar `[data-acao="concluir"]`.
|
|
3
|
+
## 2.5.0
|
|
4
|
+
|
|
5
|
+
### `<ui-tabela>`: robustez, modo remoto e ordenação
|
|
6
|
+
|
|
7
|
+
- **Render protegido**: exceção em `coluna.render` deixa só a célula vazia (com `console.error`); o scroll virtual não trava mais após um erro de render.
|
|
8
|
+
- **Modo remoto**: `fetchOpcoes` (headers, credentials...), `fetcher` (substitui o `fetch`), `carregarDoEndpoint()`/`recarregar()` resolvem `true`/`false` (antes `void`; nunca rejeitam) e `carregarDoEndpoint(url)` passa a guardar a URL como `src`. `ui-fetch-erro` ganha `origem` (`rede`, `http`, `json`, `render`) e `status`. Novo evento `ui-fetch-cancelado`. Abortar (desconexão ou nova requisição) libera `carregando`; mesma URL em andamento é reaproveitada (sem requisição duplicada ao registrar o elemento depois do HTML).
|
|
9
|
+
- **Ordenação**: `ui-sort` agora é cancelável (`preventDefault()` desfaz); atributo/propriedade `ordenacao-remota` para ordenar no servidor. `TabelaColuna.tipo` (`numero`, `data`, `booleano`, `texto`) e `TabelaColuna.comparador`. `Date`, `dd/mm/aaaa` (com `tipo: 'data'`) e booleanos ordenam pelo valor; `Intl.Collator` reutilizado; **nulos ficam sempre no fim** (antes iam para o início em `desc`).
|
|
10
|
+
- **Filtro**: ignora acentos; datas entram na busca; `TabelaColuna.textoFiltro` torna pesquisável o texto formatado por `render`; filtra antes de ordenar (mais rápido).
|
|
11
|
+
- **Dados do consumidor**: `colunas` é copiado (redimensionar não altera nem falha com objetos congelados/reativos/compartilhados; `tabela.colunas` devolve a cópia interna); entradas `null`/`undefined` em `dados` são descartadas.
|
|
12
|
+
- **Seleção**: `id` nulo não marca várias linhas; a identidade do objeto tem prioridade sobre a chave; novo `ui-selecao-atualizada` quando os dados recarregados trazem outro objeto do mesmo registro.
|
|
13
|
+
- **Cliques**: botões dentro do shadow DOM de custom elements na célula não selecionam a linha (`composedPath`).
|
|
14
|
+
- **Redimensionamento**: clique na alça sem arrastar não emite `ui-column-resize` (antes `"undefined"`); desconectar durante o arraste não bloqueia mais a ordenação; o popover só emite se a largura mudou.
|
|
15
|
+
- Eventos do `<ui-tabela>` documentados no README.
|
|
16
|
+
|
|
17
|
+
### `<ui-tabela>`: estética, usabilidade e acessibilidade
|
|
18
|
+
|
|
19
|
+
- **Cabeçalho**: sem as larguras fixas de 90px/70px; o vão texto-seta vem de `--ui-tabela-th-gap` (6px) e a seta de `--ui-tabela-th-icone` (16px). Só colunas ordenáveis têm ícone (dois chevrons, o ativo em destaque); `aria-sort="none"` nas ordenáveis inativas. O `sticky` ficou só nos `<th>`.
|
|
20
|
+
- **Tokens**: `--ui-tabela-zebra`, `--ui-tabela-hover`, `--ui-tabela-selecionada(-hover)`, `--ui-tabela-cor-foco`. Zebrado visível nos dois temas; texto do botão "Aplicar" usa `--ui-cor-texto-sobre-primaria`. `tabular-nums` e `--ui-fonte-base`.
|
|
21
|
+
- **Estados**: erro de carregamento visível (`part="erro"`, `role="alert"`, "Tentar novamente"; atributo `texto-erro`); overlay de carregamento com a cor do tema, `role="status"` e `texto-carregando`; vazio mantém o cabeçalho e o filtro sem resultado usa `texto-sem-resultados` (também anunciado a leitores de tela).
|
|
22
|
+
- **Linhas**: `cursor: pointer`, hover só com `(hover: hover)`, foco de teclado (cor do texto) distinto da seleção (primária), texto das células não é selecionado ao clicar (opt-in: `selecionar-texto`).
|
|
23
|
+
- **ARIA**: `role="grid"`, `aria-rowcount/colcount`, `aria-rowindex`, `aria-selected` (mantém `aria-current`), espaçadores `aria-hidden`, contêiner `role="region"` com o `aria-label`.
|
|
24
|
+
- **Redimensionamento**: toque/caneta (Pointer Events), traço visível em repouso, alça focável (`role="separator"`; ←/→ ajustam, Shift = passo maior, Enter abre o diálogo) e clique na alça não ordena. Diálogo de largura com rótulo, campo numérico, validação inline, posição dentro da janela e retorno do foco.
|
|
25
|
+
- `prefers-reduced-motion` (sem transições; spinner lento) e alvos de toque maiores com `pointer: coarse`. Removido o CSS morto do menu de contexto.
|
|
29
26
|
|
|
30
27
|
## 2.3.0 — 2026-10-14
|
|
31
28
|
|
package/README.md
CHANGED
|
@@ -453,6 +453,35 @@ tabela.filtrar('M-01'); // Filtra instantaneamente em todas as colunas
|
|
|
453
453
|
tabela.recarregar(); // Recarrega os dados da API remota
|
|
454
454
|
```
|
|
455
455
|
|
|
456
|
+
**Autenticação e opções do `fetch`** (o `src` sozinho faz um `GET` sem headers):
|
|
457
|
+
|
|
458
|
+
```javascript
|
|
459
|
+
tabela.fetchOpcoes = { headers: { Authorization: `Bearer ${token}` }, credentials: 'include' };
|
|
460
|
+
// ou troque a função de busca (renovação de token, mocks):
|
|
461
|
+
tabela.fetcher = (url, init) => meuFetchAutenticado(url, init);
|
|
462
|
+
|
|
463
|
+
const ok = await tabela.carregarDoEndpoint('/api/v1/vertices'); // true em sucesso; nunca rejeita
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
**Ordenação no servidor**: `<ui-tabela ordenacao-remota>` (ou `tabela.ordenacaoRemota = true`) atualiza o indicador e emite `ui-sort`, mas não reordena; busque os dados já ordenados. Sem o atributo, chame `evento.preventDefault()` em `ui-sort` para recusar a ordenação.
|
|
467
|
+
|
|
468
|
+
**Eventos de `<ui-tabela>`** (todos `bubbles` e `composed`; só `ui-sort` é cancelável):
|
|
469
|
+
|
|
470
|
+
| Evento | `detail` | Quando |
|
|
471
|
+
|---|---|---|
|
|
472
|
+
| `ui-sort` (cancelável) | `{ idColuna, direcao }` | Clique no cabeçalho ordenável. `direcao: 'original'` com `idColuna: null` = ordenação removida |
|
|
473
|
+
| `ui-column-resize` | `{ idColuna, largura }` (`"120px"` ou `"auto"`) | Fim do arraste, popover ou duplo clique; não dispara em clique sem arrastar |
|
|
474
|
+
| `ui-linha-clique` | `{ item, indice }` | Clique/Enter/Espaço numa linha. `indice` é a posição **exibida** (após ordenar/filtrar): use `item` |
|
|
475
|
+
| `ui-linha-selecionada` | `{ item, indice }` | `rolarPara(..., { selecionar: true })` |
|
|
476
|
+
| `ui-selecao-removida` | `{ item }` | O item selecionado saiu dos `dados` |
|
|
477
|
+
| `ui-selecao-atualizada` | `{ item, anterior }` | Os dados foram recarregados e o registro selecionado agora é outro objeto |
|
|
478
|
+
| `ui-fetch-start` | `{ url }` | Início da requisição do `src` |
|
|
479
|
+
| `ui-fetch-sucesso` | `{ url, total, dados }` | Dados recebidos |
|
|
480
|
+
| `ui-fetch-erro` | `{ url, erro, origem, status? }` | Falha. `origem`: `rede`, `http` (com `status`), `json` ou `render` |
|
|
481
|
+
| `ui-fetch-cancelado` | `{ url }` | Requisição abortada ou substituída (fecha o par do `ui-fetch-start`) |
|
|
482
|
+
|
|
483
|
+
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.
|
|
484
|
+
|
|
456
485
|
---
|
|
457
486
|
|
|
458
487
|
## 💻 Exemplos de Uso por Tecnologia
|
|
@@ -694,7 +723,7 @@ window.addEventListener('message', (event) => {
|
|
|
694
723
|
| `<ui-tooltip>` | Dica contextual inteligente (Hover PC / Toque Mobile). O texto vira `aria-description` do gatilho (lido pelo leitor de tela, também repassado pelo `<ui-botao>`); **Esc** fecha sem mover o foco; o balão não some ao levar o ponteiro até ele. | `texto`, `posicao`, `gatilho` | - |
|
|
695
724
|
| `<ui-skeleton>` | Placeholder de carregamento animado com pulsos. | `tipo`, `largura`, `altura`, `animado` | - |
|
|
696
725
|
| `<ui-stat>` | Cartão KPI de estatísticas, métricas e tendências. | `rotulo`, `valor`, `variacao`, `tendencia` (`alta`, `baixa`, `neutro`) | - |
|
|
697
|
-
| `<ui-tabela>` | Tabela orientada a dados, virtualizada tipo Excel. **Teclado**: cabeçalhos ordenáveis são botões (Tab + Enter/Espaço, com `aria-sort`); nas linhas, ↑/↓, Home/End e PageUp/PageDown movem o foco e Enter/Espaço selecionam (`aria-current`). A seleção é mantida ao ordenar e filtrar. Nome acessível via `aria-label`. | `colunas`, `dados`, `src`, `densidade`, `aria-label` | `ui-sort`, `ui-column-resize`, `ui-linha-clique` |
|
|
726
|
+
| `<ui-tabela>` | Tabela orientada a dados, virtualizada tipo Excel. **Teclado**: cabeçalhos ordenáveis são botões (Tab + Enter/Espaço, com `aria-sort`); nas linhas, ↑/↓, Home/End e PageUp/PageDown movem o foco e Enter/Espaço selecionam (`aria-current`). A seleção é mantida ao ordenar e filtrar. Nome acessível via `aria-label`. | `colunas`, `dados`, `src`, `densidade`, `aria-label` | `ui-sort`, `ui-column-resize`, `ui-linha-clique` (demais eventos: ver seção 4) |
|
|
698
727
|
| `<ui-tabela-propriedades>` | Inspetor de propriedades técnicas padrão AutoCAD & Revit com cálculos matemáticos inline (+, -, *, /, ^, %), arraste de valor contínuo (scrubbing), splitter redimensionável e editores CAD. | `categorias`, `tipo-objeto`, `splitter-pos`, `modo-aplicar`, `filtro` | `ui-propriedade-alterada`, `ui-aplicar`, `ui-desfazer`, `ui-editar-tipo`, `ui-acao-clique`, `ui-quick-select`, `ui-calculadora` |
|
|
699
728
|
| `<ui-ribbon>` | Barra de ferramentas em abas e grupos (estilo AutoCAD / Word / Excel): botões grandes e pequenos em colunas de 3, toggles, menus suspensos, abas contextuais, modo recolhido (duplo clique na aba) e navegação por teclado (roving tabindex). | `abas`, `aba-ativa`, `recolhido`, `compacto` | `ui-ferramenta`, `ui-aba-change` |
|
|
700
729
|
| `<ui-paleta-ferramentas>` | Paleta de ferramentas (estilo Illustrator / Photoshop): seleção exclusiva, grupos com flyout (clique longo, botão direito ou seta), 1 ou 2 colunas, vertical/horizontal e atalhos de teclado que percorrem o grupo. | `ferramentas`, `valor`, `orientacao`, `colunas`, `tamanho`, `atalhos` | `ui-change`, `ui-selecionar`, `ui-ferramenta` |
|
|
@@ -702,7 +731,7 @@ window.addEventListener('message', (event) => {
|
|
|
702
731
|
| `<ui-seletor-cor>` | Painel de cor flutuante: abas Preenchimento/Traço (ou cor única), prévia antes × depois, hexadecimal, seletor do sistema, opacidade, cores do projeto, paleta e "sem cor". Abra com `abrirSeletorCor({ ancora, ... })`: um por vez, Esc/clique fora confirmam, Cancelar restaura, `X` alterna o alvo. | `abrirSeletorCor()`, `fecharSeletorCor()`, `configurar()`, `modo` (`duplo`, `simples`), `alvo`, `preenchimento`, `traco`, `cor`, `opacidade`, `mostrarOpacidade`, `misto`, `coresProjeto`, `paleta` | `ui-cor-input`, `ui-cor-confirmar`, `ui-cor-cancelar`, `ui-alvo-change` |
|
|
703
732
|
| `<ui-mapa>` | Mapa geográfico interativo com camadas OpenStreetMap. | `lat`, `lng`, `zoom`, `camadas` | - |
|
|
704
733
|
| `<ui-camadas>` | Painel de camadas vetoriais CAD/GIS com hierarquia em árvore, barra de arraste vertical (`redimensionavel`), estabilidade de altura sem colapso, drag-and-drop, métricas geodésicas e persistência no LocalStorage. | `redimensionavel`, `altura`, `min-altura`, `max-altura`, `flutuante`, `colapsado`, `camada-ativa`, `persistir` | `ui-redimensionar-altura`, `ui-camada-selecionada`, `ui-camada-visibilidade`, `ui-camadas-reordenadas`, `ui-acao-massa` |
|
|
705
|
-
| `<ui-canvas-cad>` | Mesa CAD/GIS para poligonais, vértices geodésicos e **feições genéricas** (ponto, linha, polígono, círculo, texto) que você cria: seleção por clique e caixa, popup, edição de vértices
|
|
734
|
+
| `<ui-canvas-cad>` | Mesa CAD/GIS para poligonais, vértices geodésicos e **feições genéricas** (ponto, linha, polígono, círculo, texto) que você cria: seleção por clique e caixa, popup, edição de vértices, snap, 15 ferramentas de desenho/medição, oficial × prévia, cursores remotos e culling/clusters para 100 mil feições. Linha multiparte, feição `oculta`, selo de texto e contorno de ponto. Nenhuma camada vem pronta. Guia: [`docs/guia-migracao-mapengine.md`](docs/guia-migracao-mapengine.md). | `pontos`, `segmentos`, `ferramentas`, `sem-camadas-padrao`, `sem-painel-camadas`, `sem-barra-rapida`, `sem-atalho-snap`, `aceitar-origem`, `inicializarAgora()`, `definirFeicoes()`, `aplicarLote()`, `definirFerramenta()`, `editarVertices()`, `definirMargensHud()`, `definirEstilosExternos()`, `fitBounds()` | `ui-ponto-selecionado`, `cad-selecao`, `cad-feicao-selecionada`, `cad-feicao-criada`, `cad-feicao-atualizada`, `cad-feicao-hover`, `cad-feicao-menu`, `cad-snap`, `cad-previas` e outros (ver `docs/canvas-cad-eventos.md`) |
|
|
706
735
|
|
|
707
736
|
#### `<ui-canvas-cad>`: montar só com API pública (2.1)
|
|
708
737
|
|