@thibezer/ui-components-kit 2.6.0 → 2.7.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 +73 -0
- package/README.md +2 -2
- package/dist/acessibilidade-CSzX-DkG.cjs +1 -0
- package/dist/acessibilidade-CUlSXc2X.js +38 -0
- package/dist/camadas.cjs +94 -94
- package/dist/camadas.js +1218 -1124
- package/dist/campo-texto.cjs +1 -1
- package/dist/campo-texto.js +1 -1
- package/dist/canvas.cjs +66 -65
- package/dist/canvas.js +3769 -3389
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/components/ui-alerta/ui-toast.d.ts +4 -15
- package/dist/components/ui-avatar/ui-avatar.d.ts +11 -0
- package/dist/components/ui-badge/ui-badge.d.ts +2 -0
- package/dist/components/ui-barra-ferramentas/paleta-atalhos.d.ts +16 -0
- package/dist/components/ui-barra-ferramentas/paleta-pressao-longa.d.ts +24 -0
- package/dist/components/ui-barra-ferramentas/ribbon-render.d.ts +14 -0
- package/dist/components/ui-barra-ferramentas/ribbon-teclado.d.ts +17 -0
- package/dist/components/ui-barra-ferramentas/ui-paleta-ferramentas.d.ts +1 -7
- package/dist/components/ui-barra-ferramentas/ui-ribbon.d.ts +0 -1
- package/dist/components/ui-camadas/camadas-arraste-controles.d.ts +2 -0
- package/dist/components/ui-camadas/camadas-arvore-renderer.d.ts +4 -11
- package/dist/components/ui-camadas/camadas-colecao.d.ts +27 -0
- package/dist/components/ui-camadas/camadas-drag-drop.d.ts +13 -1
- package/dist/components/ui-camadas/camadas-drop-ops.d.ts +31 -0
- package/dist/components/ui-camadas/camadas-hierarquia.d.ts +10 -0
- package/dist/components/ui-camadas/camadas-lembranca.d.ts +34 -0
- package/dist/components/ui-camadas/camadas-render.d.ts +14 -0
- package/dist/components/ui-camadas/camadas-renomear.d.ts +12 -0
- package/dist/components/ui-camadas/camadas-selecao-api.d.ts +17 -0
- package/dist/components/ui-camadas/camadas-thumb.d.ts +1 -0
- package/dist/components/ui-camadas/ui-camadas.d.ts +3 -5
- package/dist/components/ui-canvas-cad/cad-acessibilidade.d.ts +15 -0
- package/dist/components/ui-canvas-cad/cad-atributos-sync.d.ts +2 -1
- package/dist/components/ui-canvas-cad/cad-broadcast.d.ts +1 -1
- package/dist/components/ui-canvas-cad/cad-evento-coordenadas.d.ts +22 -0
- package/dist/components/ui-canvas-cad/cad-eventos-canvas.d.ts +3 -8
- package/dist/components/ui-canvas-cad/cad-feicoes-camera.d.ts +26 -0
- package/dist/components/ui-canvas-cad/cad-feicoes-consulta.d.ts +21 -0
- package/dist/components/ui-canvas-cad/cad-feicoes-dados.d.ts +39 -0
- package/dist/components/ui-canvas-cad/cad-feicoes-desenho.d.ts +68 -0
- package/dist/components/ui-canvas-cad/cad-feicoes-edicao.d.ts +37 -0
- package/dist/components/ui-canvas-cad/cad-feicoes-operacoes.d.ts +48 -0
- package/dist/components/ui-canvas-cad/cad-feicoes-ponteiro.d.ts +24 -0
- package/dist/components/ui-canvas-cad/cad-feicoes-selecao-regiao.d.ts +22 -0
- package/dist/components/ui-canvas-cad/cad-feicoes-tipos.d.ts +53 -0
- package/dist/components/ui-canvas-cad/cad-feicoes-versoes.d.ts +33 -0
- package/dist/components/ui-canvas-cad/cad-feicoes.d.ts +26 -106
- package/dist/components/ui-canvas-cad/cad-inicializador.d.ts +3 -1
- package/dist/components/ui-canvas-cad/cad-leaflet-adaptador.d.ts +5 -0
- package/dist/components/ui-canvas-cad/cad-selecao-pontos.d.ts +5 -0
- package/dist/components/ui-canvas-cad/tipos.d.ts +37 -0
- package/dist/components/ui-canvas-cad/ui-canvas-cad.d.ts +4 -1
- package/dist/components/ui-checkbox/ui-checkbox.d.ts +4 -1
- package/dist/components/ui-cores/tipos.d.ts +2 -0
- package/dist/components/ui-cores/ui-controle-cores.d.ts +8 -3
- package/dist/components/ui-cores/ui-seletor-cor.d.ts +3 -1
- package/dist/components/ui-mapa/mapa-atributos.d.ts +14 -0
- package/dist/components/ui-mapa/mapa-basemaps.d.ts +7 -0
- package/dist/components/ui-mapa/mapa-icones.d.ts +4 -0
- package/dist/components/ui-mapa/mapa-leaflet.d.ts +5 -0
- package/dist/components/ui-mapa/mapa-vinculo-pai.d.ts +22 -0
- package/dist/components/ui-mapa/tipos.d.ts +13 -0
- package/dist/components/ui-mapa/ui-mapa-linha.d.ts +12 -5
- package/dist/components/ui-mapa/ui-mapa-marcador.d.ts +15 -6
- package/dist/components/ui-mapa/ui-mapa.d.ts +14 -1
- package/dist/components/ui-modal/modal-acessibilidade.d.ts +5 -5
- package/dist/components/ui-modal/modal-foco.d.ts +28 -0
- package/dist/components/ui-modal/ui-modal.d.ts +1 -11
- package/dist/components/ui-radio/radio-grupo-registry.d.ts +10 -0
- package/dist/components/ui-radio/ui-radio.d.ts +9 -2
- package/dist/components/ui-skeleton/ui-skeleton.d.ts +9 -0
- package/dist/components/ui-switch/ui-switch.d.ts +3 -1
- package/dist/components/ui-tabela/tabela-estados.d.ts +16 -0
- package/dist/components/ui-tabela/tabela-rolagem.d.ts +44 -0
- package/dist/components/ui-tabela/tabela-teclado.d.ts +16 -0
- package/dist/components/ui-tabela/ui-tabela.d.ts +1 -19
- package/dist/components/ui-tooltip/tooltip-popover.d.ts +7 -0
- package/dist/components/ui-tooltip/tooltip-posicionamento.d.ts +29 -0
- package/dist/components/ui-tooltip/ui-tooltip.d.ts +24 -1
- package/dist/core/opcoes.d.ts +9 -0
- package/dist/core/rotulo-controle.d.ts +13 -0
- package/dist/core/tipos-toast.d.ts +16 -0
- package/dist/core/ui-bus.d.ts +9 -1
- package/dist/core.cjs +1 -1
- package/dist/core.js +12 -11
- package/dist/cores.cjs +1 -1
- package/dist/cores.js +1 -1
- package/dist/custom-elements.json +19799 -14940
- package/dist/data.cjs +1 -1
- package/dist/data.js +2 -2
- package/dist/feedback.cjs +1 -1
- package/dist/feedback.js +21 -21
- package/dist/form-validacao-BlQFxUVj.js +104 -0
- package/dist/form-validacao-DIeyQVH5.cjs +1 -0
- package/dist/forms.cjs +1 -1
- package/dist/forms.js +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.js +46 -46
- package/dist/mapa.cjs +11 -16
- package/dist/mapa.js +242 -170
- package/dist/modal.cjs +1 -1
- package/dist/modal.js +1 -1
- package/dist/opcoes-CJYLi6kd.js +12 -0
- package/dist/opcoes-CkyDxBuQ.cjs +1 -0
- package/dist/register.cjs +1 -1
- package/dist/register.js +13 -14
- package/dist/tabela.cjs +1 -1
- package/dist/tabela.js +1 -1
- package/dist/tipos-elementos.d.ts +9 -3
- package/dist/tipos-vue.d.ts +9 -3
- package/dist/tools.cjs +1 -1
- package/dist/tools.js +1 -1
- package/dist/ui-badge-ChiiiO1r.js +197 -0
- package/dist/ui-badge-DUCxyAG6.cjs +28 -0
- package/dist/{zero-js-triggers-C_KrvFOQ.js → ui-bus-CUd99VJi.js} +36 -103
- package/dist/ui-bus-XqBLlTYQ.cjs +1 -0
- package/dist/ui-campo-texto-CHTfMO-H.cjs +16 -0
- package/dist/ui-campo-texto-gum_jDdI.js +380 -0
- package/dist/ui-card-BNYCQ7g-.js +119 -0
- package/dist/ui-card-BrjBL-yo.cjs +20 -0
- package/dist/ui-controle-cores-DgEza3wF.js +612 -0
- package/dist/ui-controle-cores-uY__TgwW.cjs +117 -0
- package/dist/ui-modal-BkYvNP0G.js +214 -0
- package/dist/ui-modal-CUNbpbZ1.cjs +18 -0
- package/dist/ui-paleta-ferramentas-Ksh6gMW3.js +890 -0
- package/dist/ui-paleta-ferramentas-bDLPbiGA.cjs +21 -0
- package/dist/ui-segmented-BOaGRQw4.cjs +19 -0
- package/dist/ui-segmented-kbO1BLVs.js +439 -0
- package/dist/ui-skeleton-B2Rgrv8o.js +648 -0
- package/dist/ui-skeleton-BilwGdOm.js +634 -0
- package/dist/ui-skeleton-DiOxTBZK.cjs +52 -0
- package/dist/ui-skeleton-SPYqku8P.cjs +52 -0
- package/dist/ui-skeleton-W9uwIceA.js +585 -0
- package/dist/ui-skeleton-gZrJipCC.cjs +52 -0
- package/dist/ui-switch-BX6U5Ykm.cjs +53 -0
- package/dist/ui-switch-DO5jR0hy.js +915 -0
- package/dist/ui-tabela-propriedades-D9Echt2X.js +2667 -0
- package/dist/ui-tabela-propriedades-DzZlyNZ_.cjs +141 -0
- package/dist/zero-js-triggers-CJT988bR.js +83 -0
- package/dist/zero-js-triggers-CgM9IIQB.cjs +1 -0
- package/package.json +10 -3
- package/dist/ui-botao-OGJV6Vfk.js +0 -165
- package/dist/ui-botao-psS1juof.cjs +0 -12
- package/dist/ui-paleta-ferramentas-CEZYcN4J.js +0 -624
- package/dist/ui-paleta-ferramentas-Dbj1kBS9.cjs +0 -18
- package/dist/ui-skeleton-DI4_9WOX.js +0 -428
- package/dist/ui-skeleton-elhKIh2B.cjs +0 -33
- package/dist/ui-tabela-propriedades-BBr5sqki.cjs +0 -145
- package/dist/ui-tabela-propriedades-Boy7I5yW.js +0 -2412
- package/dist/ui-toast-Bp_NlM5G.js +0 -156
- package/dist/ui-toast-DGTZKne5.cjs +0 -20
- package/dist/zero-js-triggers-C_gtaojZ.cjs +0 -1
|
@@ -79,11 +79,16 @@ export declare class UIControleCores extends SafeHTMLElement {
|
|
|
79
79
|
semCor(alvo?: AlvoCor): void;
|
|
80
80
|
/** Volta às cores de `padrao-preenchimento` e `padrao-traco`; emite `ui-cores-change` confirmado. */
|
|
81
81
|
restaurarPadrao(): void;
|
|
82
|
-
/** Abre o seletor de cor ancorado na amostra do alvo (que passa a ser o ativo). */
|
|
83
|
-
abrirSeletor(alvo?: AlvoCor): void;
|
|
84
|
-
/**
|
|
82
|
+
/** Abre o seletor de cor ancorado na amostra do alvo (que passa a ser o ativo). Com `focar`, leva o foco do teclado para o painel. */
|
|
83
|
+
abrirSeletor(alvo?: AlvoCor, focar?: boolean): void;
|
|
84
|
+
/**
|
|
85
|
+
* Fecha o seletor aberto por este controle. Com `confirmar` (padrão), grava o que foi editado;
|
|
86
|
+
* sem ele, cancela: as cores iniciais voltam (com um `ui-cores-change` não confirmado) e nada é confirmado.
|
|
87
|
+
*/
|
|
85
88
|
fecharSeletor(confirmar?: boolean): void;
|
|
86
89
|
private mudarAlvo;
|
|
90
|
+
/** Mantém a aba do seletor aberto igual ao alvo do controle. */
|
|
91
|
+
private sincronizarSeletor;
|
|
87
92
|
private aplicarDoSeletor;
|
|
88
93
|
private emitirCores;
|
|
89
94
|
private dica;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SafeHTMLElement } from '../../core/ssr-safe';
|
|
2
2
|
import { AlvoCor, DetalheSeletorCor, OpcoesSeletorCor, SeletorCorAberto, ValorCor } from './tipos';
|
|
3
3
|
/** Configuração aceita por `UISeletorCor.configurar()` (as opções de `abrirSeletorCor` sem âncora e callbacks). */
|
|
4
|
-
export type ConfiguracaoSeletorCor = Omit<OpcoesSeletorCor, 'ancora' | 'aoAlterar' | 'aoConfirmar' | 'aoCancelar' | 'aoTrocarAlvo'>;
|
|
4
|
+
export type ConfiguracaoSeletorCor = Omit<OpcoesSeletorCor, 'ancora' | 'focar' | 'aoAlterar' | 'aoConfirmar' | 'aoCancelar' | 'aoTrocarAlvo'>;
|
|
5
5
|
/**
|
|
6
6
|
* <ui-seletor-cor> — painel de cor no estilo Illustrator: abas Preenchimento/Traço, prévia
|
|
7
7
|
* antes × depois, hexadecimal, seletor do sistema, opacidade do preenchimento, cores do projeto,
|
|
@@ -51,6 +51,8 @@ export declare class UISeletorCor extends SafeHTMLElement {
|
|
|
51
51
|
private get opacidadeVisivel();
|
|
52
52
|
private renderizar;
|
|
53
53
|
private atualizarVisual;
|
|
54
|
+
/** `activeElement` lança em alguns DOMs simulados quando o foco está em outra árvore de sombra. */
|
|
55
|
+
private campoEmFoco;
|
|
54
56
|
private vincularEventos;
|
|
55
57
|
private emitir;
|
|
56
58
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { VistaMapa } from './tipos';
|
|
2
|
+
export declare const VISTA_PADRAO: VistaMapa;
|
|
3
|
+
export declare const COR_MARCADOR_PADRAO = "#00f5a0";
|
|
4
|
+
export declare const COR_LINHA_PADRAO = "#3388ff";
|
|
5
|
+
export declare const ESPESSURA_PADRAO = 3;
|
|
6
|
+
/** Lê lat/lng/zoom; cada campo inválido (ou fora de -90..90, -180..180, 0..22) cai no padrão. */
|
|
7
|
+
export declare function lerVista(lat: string | null, lng: string | null, zoom: string | null): VistaMapa;
|
|
8
|
+
export declare function lerInteiroPositivo(valor: string | null, padrao: number): number;
|
|
9
|
+
/** Aceita só cores CSS conhecidas (hex, rgb/hsl, nome); qualquer outra coisa vira `padrao`. Impede injeção em estilo/atributo. */
|
|
10
|
+
export declare function corSegura(cor: string | null | undefined, padrao: string): string;
|
|
11
|
+
/** Lista de camadas base pedidas, filtrada pelas conhecidas; vazia → `['osm']`. */
|
|
12
|
+
export declare function lerCamadas(texto: string | null, conhecidas: string[]): string[];
|
|
13
|
+
/** Interpreta `pontos` (JSON `[[lat, lng], ...]`); descarta pares inválidos e devolve `[]` se o JSON não for um array. */
|
|
14
|
+
export declare function lerPontos(texto: string | null): Array<[number, number]>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { LeafletModulo } from './tipos';
|
|
2
|
+
/** `L` se o Leaflet já estiver carregado (global ou importado), senão `null`. */
|
|
3
|
+
export declare function obterLeaflet(): LeafletModulo | null;
|
|
4
|
+
/** Carrega o Leaflet sob demanda; `null` se não estiver instalado. */
|
|
5
|
+
export declare function carregarLeafletTipado(): Promise<LeafletModulo | null>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { default as L } from 'leaflet';
|
|
2
|
+
export interface OpcoesVinculo {
|
|
3
|
+
/** Nome da tag, só para as mensagens de aviso. */
|
|
4
|
+
rotulo: string;
|
|
5
|
+
/** O mapa do pai está pronto: crie a camada. */
|
|
6
|
+
aoMapa: (mapa: L.Map) => void;
|
|
7
|
+
/** O mapa anterior se foi (o pai o recriou): descarte a camada antiga. */
|
|
8
|
+
aoPerderMapa: () => void;
|
|
9
|
+
}
|
|
10
|
+
export declare class VinculoMapaPai {
|
|
11
|
+
private host;
|
|
12
|
+
private opcoes;
|
|
13
|
+
private pai;
|
|
14
|
+
private timer;
|
|
15
|
+
private tentativas;
|
|
16
|
+
constructor(host: HTMLElement, opcoes: OpcoesVinculo);
|
|
17
|
+
conectar(): void;
|
|
18
|
+
desconectar(): void;
|
|
19
|
+
private aoPronto;
|
|
20
|
+
private agendar;
|
|
21
|
+
private tentar;
|
|
22
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tipos compartilhados do <ui-mapa> e de seus filhos.
|
|
3
|
+
* Responsabilidade única: descrever o módulo do Leaflet e a vista padrão sem recorrer a `any`.
|
|
4
|
+
*/
|
|
5
|
+
import type * as Leaflet from 'leaflet';
|
|
6
|
+
/** O módulo do Leaflet (o `L` global). */
|
|
7
|
+
export type LeafletModulo = typeof Leaflet;
|
|
8
|
+
export interface VistaMapa {
|
|
9
|
+
lat: number;
|
|
10
|
+
lng: number;
|
|
11
|
+
zoom: number;
|
|
12
|
+
}
|
|
13
|
+
export type FormatoMarcador = 'pin' | 'circle';
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
import { SafeHTMLElement } from '../../core/ssr-safe';
|
|
2
|
+
/**
|
|
3
|
+
* Polilinha dentro de um `<ui-mapa>`.
|
|
4
|
+
*
|
|
5
|
+
* @attr {string} pontos - JSON `[[lat, lng], ...]`; pares inválidos são ignorados.
|
|
6
|
+
* @attr {string} cor - Cor do traço (hex, rgb/hsl ou nome; outro valor usa a cor padrão).
|
|
7
|
+
* @attr {number} espessura - Espessura em pixels (inteiro positivo; padrão 3).
|
|
8
|
+
*/
|
|
2
9
|
export declare class UIMapaLinha extends SafeHTMLElement {
|
|
3
10
|
static get observedAttributes(): string[];
|
|
4
11
|
private polyline;
|
|
5
|
-
private
|
|
6
|
-
private _retryCount;
|
|
12
|
+
private vinculo;
|
|
7
13
|
connectedCallback(): void;
|
|
8
14
|
disconnectedCallback(): void;
|
|
9
|
-
attributeChangedCallback(name: string, oldVal: string, newVal: string): void;
|
|
10
|
-
private
|
|
11
|
-
private
|
|
15
|
+
attributeChangedCallback(name: string, oldVal: string | null, newVal: string | null): void;
|
|
16
|
+
private estilo;
|
|
17
|
+
private removerLinha;
|
|
18
|
+
private criarLinha;
|
|
12
19
|
}
|
|
@@ -1,15 +1,24 @@
|
|
|
1
1
|
import { SafeHTMLElement } from '../../core/ssr-safe';
|
|
2
|
+
/**
|
|
3
|
+
* Marcador dentro de um `<ui-mapa>`.
|
|
4
|
+
*
|
|
5
|
+
* @attr {number} lat - Latitude (inválida: o marcador não é criado).
|
|
6
|
+
* @attr {number} lng - Longitude.
|
|
7
|
+
* @attr {string} titulo - Texto do popup e nome acessível do marcador (aria-label e title).
|
|
8
|
+
* @attr {string} cor - Cor do ícone (hex, rgb/hsl ou nome; outro valor usa a cor padrão).
|
|
9
|
+
* @attr {'pin'|'circle'} formato - Forma do ícone (padrão `pin`).
|
|
10
|
+
*/
|
|
2
11
|
export declare class UIMapaMarcador extends SafeHTMLElement {
|
|
3
12
|
static get observedAttributes(): string[];
|
|
4
13
|
private marker;
|
|
5
|
-
private
|
|
6
|
-
private _retryCount;
|
|
7
|
-
private _parentMap;
|
|
14
|
+
private vinculo;
|
|
8
15
|
connectedCallback(): void;
|
|
9
16
|
disconnectedCallback(): void;
|
|
10
|
-
|
|
11
|
-
|
|
17
|
+
attributeChangedCallback(name: string, oldVal: string | null, newVal: string | null): void;
|
|
18
|
+
private removerMarcador;
|
|
12
19
|
private createPopupContent;
|
|
13
20
|
private createIcon;
|
|
14
|
-
|
|
21
|
+
/** O ícone é um `div`: o nome acessível vai em `aria-label` (o Leaflet já põe `role=button` e `tabindex=0`). */
|
|
22
|
+
private aplicarNomeAcessivel;
|
|
23
|
+
private criarMarcador;
|
|
15
24
|
}
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { default as L } from 'leaflet';
|
|
2
2
|
import { SafeHTMLElement } from '../../core/ssr-safe';
|
|
3
|
+
/**
|
|
4
|
+
* Mapa Leaflet encapsulado. Aceita `<ui-mapa-marcador>` e `<ui-mapa-linha>` como filhos.
|
|
5
|
+
*
|
|
6
|
+
* @attr {number} lat - Latitude do centro (-90..90; inválida cai no padrão).
|
|
7
|
+
* @attr {number} lng - Longitude do centro (-180..180; inválida cai no padrão).
|
|
8
|
+
* @attr {number} zoom - Zoom inicial (0..22; inválido cai no padrão).
|
|
9
|
+
* @attr {string} camadas - Camadas base separadas por vírgula (`osm`, `satelite`, `topografia`, `ruas`).
|
|
10
|
+
* @attr {string} aria-label - Nome acessível da região do mapa (padrão: "Mapa").
|
|
11
|
+
* @fires ui-mapa-pronto - O mapa foi criado (`detail.map`); é emitido de novo se o elemento for reconectado.
|
|
12
|
+
*/
|
|
3
13
|
export declare class UIMapa extends SafeHTMLElement {
|
|
4
14
|
static get observedAttributes(): string[];
|
|
5
15
|
private mapContainer;
|
|
@@ -7,10 +17,13 @@ export declare class UIMapa extends SafeHTMLElement {
|
|
|
7
17
|
private _initTimer;
|
|
8
18
|
private _resizeObserver?;
|
|
9
19
|
private _resizeTimer?;
|
|
20
|
+
private _invalidarTimer?;
|
|
10
21
|
constructor();
|
|
11
22
|
connectedCallback(): void;
|
|
12
23
|
disconnectedCallback(): void;
|
|
13
|
-
attributeChangedCallback(
|
|
24
|
+
attributeChangedCallback(name: string, oldVal: string | null, newVal: string | null): void;
|
|
25
|
+
/** Nome acessível da região: o `aria-label` do host ou "Mapa". */
|
|
26
|
+
private sincronizarRotulo;
|
|
14
27
|
private initMap;
|
|
15
28
|
getMap(): L.Map | null;
|
|
16
29
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Isolamento do <ui-modal> para tecnologias assistivas: `inert` em tudo o que está "atrás" do modal.
|
|
3
|
+
* Responsabilidade única: aplicar e desfazer o `inert`, preservando o que a página já tinha inerte.
|
|
3
4
|
*/
|
|
4
5
|
/**
|
|
5
|
-
* Aplica
|
|
6
|
+
* Aplica `inert` em todos os elementos da página que estejam "atrás" do modal,
|
|
6
7
|
* isolando o modal para tecnologias assistivas e interação de teclado/mouse.
|
|
8
|
+
* Devolve o conjunto afetado (os que já eram inertes ficam de fora, para não serem liberados depois).
|
|
7
9
|
*/
|
|
8
10
|
export declare function aplicarInertForaDoModal(modalElement: HTMLElement): Set<HTMLElement>;
|
|
9
|
-
/**
|
|
10
|
-
* Remove o estado 'inert' dos elementos afetados pelo modal quando este é fechado.
|
|
11
|
-
*/
|
|
11
|
+
/** Remove o estado `inert` dos elementos afetados pelo modal quando este é fechado. */
|
|
12
12
|
export declare function removerInertForaDoModal(elementosAfetados: Set<HTMLElement>): void;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Foco do <ui-modal>: localizar controles focáveis, foco inicial e armadilha de foco (Tab / Shift+Tab).
|
|
3
|
+
* Responsabilidade única: decisões sobre foco; não abre nem fecha o modal.
|
|
4
|
+
*/
|
|
5
|
+
export declare const SELETORES_FOCAVEIS = "a[href], button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"]), ui-campo-texto, ui-input, ui-botao, ui-botao-primario, ui-checkbox, ui-switch, ui-lista-flutuante, ui-radio, ui-select, ui-segmented";
|
|
6
|
+
/** Elemento realmente focado, atravessando Shadow DOMs (ex.: o <button> interno de um <ui-botao>). */
|
|
7
|
+
export declare function elementoAtivoProfundo(): HTMLElement | null;
|
|
8
|
+
/**
|
|
9
|
+
* `alvo` é `ativo` ou algum ancestral de `ativo`, subindo também pelos hosts de Shadow DOM.
|
|
10
|
+
* Necessário porque o foco costuma estar num botão interno de um componente (dentro do shadow do `alvo`).
|
|
11
|
+
*/
|
|
12
|
+
export declare function contemFoco(alvo: Node, ativo: Node | null): boolean;
|
|
13
|
+
export declare function ehFocavel(el: HTMLElement): boolean;
|
|
14
|
+
/** Focáveis do conteúdo projetado (corpo e rodapé), na ordem dos slots. */
|
|
15
|
+
export declare function focaveisDoConteudo(shadow: ShadowRoot): HTMLElement[];
|
|
16
|
+
/** Todos os focáveis do modal: os do próprio Shadow DOM (botão fechar, se visível) e depois os do conteúdo. */
|
|
17
|
+
export declare function focaveisDoModal(shadow: ShadowRoot): HTMLElement[];
|
|
18
|
+
/**
|
|
19
|
+
* Foco inicial: `[autofocus]`, senão o primeiro controle do conteúdo/rodapé.
|
|
20
|
+
* O botão "✕" não recebe o foco inicial, evitando fechar o modal com um Enter acidental;
|
|
21
|
+
* sem controles, o próprio diálogo é focado para que o leitor de tela anuncie o título.
|
|
22
|
+
*/
|
|
23
|
+
export declare function focarConteudoInicial(shadow: ShadowRoot, dialogo: HTMLElement): void;
|
|
24
|
+
/**
|
|
25
|
+
* Mantém o foco dentro do modal: no último controle, Tab volta ao primeiro; no primeiro, Shift+Tab vai ao último.
|
|
26
|
+
* Se o foco está fora do modal, é trazido de volta. Chame no `keydown` de Tab.
|
|
27
|
+
*/
|
|
28
|
+
export declare function prenderTab(e: KeyboardEvent, host: HTMLElement, shadow: ShadowRoot): void;
|
|
@@ -5,8 +5,8 @@ export declare class UIModal extends SafeHTMLElement {
|
|
|
5
5
|
private dialogElement;
|
|
6
6
|
private tituloElement;
|
|
7
7
|
private closeElement;
|
|
8
|
+
private ouvintes;
|
|
8
9
|
private _elementoGatilho;
|
|
9
|
-
private _focables;
|
|
10
10
|
private _tituloId;
|
|
11
11
|
/** Estado já aplicado (pilha, inert, scroll, eventos); difere de `aberto` durante uma transição. */
|
|
12
12
|
private _estaAberto;
|
|
@@ -26,19 +26,9 @@ export declare class UIModal extends SafeHTMLElement {
|
|
|
26
26
|
*/
|
|
27
27
|
private aoAbrir;
|
|
28
28
|
private aoFechar;
|
|
29
|
-
/**
|
|
30
|
-
* Foco inicial: `[autofocus]`, senão o primeiro controle do conteúdo/rodapé.
|
|
31
|
-
* O botão "✕" não recebe o foco inicial, evitando fechar o modal com um Enter acidental;
|
|
32
|
-
* sem controles, o próprio diálogo é focado para que o leitor de tela anuncie o título.
|
|
33
|
-
*/
|
|
34
|
-
private focarConteudoInicial;
|
|
35
29
|
private syncState;
|
|
36
30
|
private handleBackdropClick;
|
|
37
31
|
private handleCloseClick;
|
|
38
|
-
private static ehFocavel;
|
|
39
|
-
/** Focáveis do conteúdo projetado (corpo e rodapé), na ordem dos slots. */
|
|
40
|
-
private obterFocaveisDoConteudo;
|
|
41
|
-
private _atualizarFocables;
|
|
42
32
|
private handleKeyDown;
|
|
43
33
|
}
|
|
44
34
|
export declare class UIDialog extends UIModal {
|
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
import { UIRadio } from './ui-radio';
|
|
2
|
+
/**
|
|
3
|
+
* Grupos de radios por nome, dentro do escopo do formulário (ou da raiz, sem formulário).
|
|
4
|
+
* O registro de cada radio é guardado ao registrar: assim o cancelamento usa o nome e o escopo de ANTES,
|
|
5
|
+
* mesmo que o radio já tenha saído do formulário (disconnectedCallback roda depois da remoção) ou mudado de nome.
|
|
6
|
+
*/
|
|
2
7
|
export declare class RadioGrupoRegistry {
|
|
3
8
|
private static registry;
|
|
9
|
+
private static registros;
|
|
4
10
|
static getScopeNode(radio: HTMLElement): Node;
|
|
11
|
+
/** Registra (ou re-registra, se o nome ou o escopo mudaram) o radio no grupo do seu nome atual. */
|
|
5
12
|
static registrar(radio: UIRadio): void;
|
|
6
13
|
static desregistrar(radio: UIRadio): void;
|
|
14
|
+
/** Radios do mesmo grupo que `radio`, usando o registro (não o nome atual, que pode ainda não ter sido registrado). */
|
|
7
15
|
static obterRadiosDoGrupo(radio: UIRadio): UIRadio[];
|
|
8
16
|
static desmarcarOutros(radio: UIRadio): void;
|
|
17
|
+
/** Reavalia o tabindex (roving) dos radios; use depois de entrar, sair ou mudar de grupo. */
|
|
18
|
+
static atualizarGrupo(radios: UIRadio[]): void;
|
|
9
19
|
static tratarNavegacaoTeclado(e: KeyboardEvent, radioAtual: UIRadio): void;
|
|
10
20
|
}
|
|
@@ -3,11 +3,12 @@ export declare class UIRadio extends FormAssociatedElement {
|
|
|
3
3
|
static get observedAttributes(): string[];
|
|
4
4
|
containerElement: HTMLDivElement;
|
|
5
5
|
private labelElement;
|
|
6
|
+
private listeners;
|
|
6
7
|
private _defaultChecked;
|
|
7
8
|
constructor();
|
|
8
9
|
connectedCallback(): void;
|
|
9
10
|
disconnectedCallback(): void;
|
|
10
|
-
attributeChangedCallback(
|
|
11
|
+
attributeChangedCallback(nome: string, _old: string | null, _value: string | null): void;
|
|
11
12
|
get marcado(): boolean;
|
|
12
13
|
set marcado(val: boolean);
|
|
13
14
|
get name(): string;
|
|
@@ -18,10 +19,16 @@ export declare class UIRadio extends FormAssociatedElement {
|
|
|
18
19
|
atualizarValidade(): void;
|
|
19
20
|
focus(options?: FocusOptions): void;
|
|
20
21
|
selecionar(): void;
|
|
22
|
+
/**
|
|
23
|
+
* Roving tabindex: só um radio do grupo entra na ordem de Tab (o marcado; sem marcado, o primeiro habilitado).
|
|
24
|
+
* Isolado de `syncState` para reavaliar os vizinhos sem mexer no valor/validade do formulário.
|
|
25
|
+
*/
|
|
26
|
+
atualizarTabindex(): void;
|
|
21
27
|
syncState(): void;
|
|
22
28
|
formResetCallback(): void;
|
|
23
|
-
formStateRestoreCallback(state:
|
|
29
|
+
formStateRestoreCallback(state: unknown, _mode: 'restore' | 'autocomplete'): void;
|
|
24
30
|
private handleClick;
|
|
31
|
+
private handleHostClick;
|
|
25
32
|
private handleKeyDown;
|
|
26
33
|
private handleFocus;
|
|
27
34
|
private handleBlur;
|
|
@@ -4,9 +4,18 @@ export type AnimacaoSkeleton = 'shimmer' | 'pulso' | 'nenhum';
|
|
|
4
4
|
export declare class UISkeleton extends SafeHTMLElement {
|
|
5
5
|
static get observedAttributes(): string[];
|
|
6
6
|
private rootElement;
|
|
7
|
+
/** O que este componente escreveu em aria-hidden / role (para não sobrescrever o consumidor). */
|
|
8
|
+
private _ocultoAuto;
|
|
9
|
+
private _papelAuto;
|
|
10
|
+
private _sincronizando;
|
|
7
11
|
constructor();
|
|
8
12
|
connectedCallback(): void;
|
|
9
13
|
attributeChangedCallback(_name: string, _old: string | null, _value: string | null): void;
|
|
14
|
+
/**
|
|
15
|
+
* Decorativo por padrão (`aria-hidden`). Com `aria-label` vira uma região de status anunciável
|
|
16
|
+
* ("Carregando tabela"). O que o consumidor definiu em aria-hidden/role é preservado.
|
|
17
|
+
*/
|
|
18
|
+
private sincronizarAcessibilidade;
|
|
10
19
|
get variante(): VarianteSkeleton;
|
|
11
20
|
set variante(val: VarianteSkeleton);
|
|
12
21
|
get animado(): AnimacaoSkeleton;
|
|
@@ -22,10 +22,12 @@ export declare class UISwitch extends FormAssociatedElement {
|
|
|
22
22
|
set disabled(val: boolean);
|
|
23
23
|
get type(): string;
|
|
24
24
|
atualizarValidade(): void;
|
|
25
|
+
/** `focus()` no host leva o foco ao controle interno (necessário para o foco de validação do formulário). */
|
|
26
|
+
focus(options?: FocusOptions): void;
|
|
25
27
|
alternar(): void;
|
|
26
28
|
protected syncState(): void;
|
|
27
29
|
formResetCallback(): void;
|
|
28
|
-
formStateRestoreCallback(state:
|
|
30
|
+
formStateRestoreCallback(state: unknown, _mode: 'restore' | 'autocomplete'): void;
|
|
29
31
|
private handleClick;
|
|
30
32
|
private handleHostClick;
|
|
31
33
|
private handleKeyDown;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { UIFetchErroDetail } from './tipos';
|
|
2
|
+
export declare const TEXTO_ERRO_PADRAO = "N\u00E3o foi poss\u00EDvel carregar os dados.";
|
|
3
|
+
export declare const TEXTO_SEM_RESULTADOS_PADRAO = "Nenhum resultado para o filtro";
|
|
4
|
+
/** Mostra (ou oculta, com `null`) o aviso de erro com a ação "Tentar novamente". */
|
|
5
|
+
export declare function renderizarErroTabela(el: HTMLElement | null, erro: UIFetchErroDetail | null, textoErro: string | null, temUrlParaRepetir: boolean): void;
|
|
6
|
+
/** Anuncia ao leitor de tela o resultado do filtro (a região é limpa sem filtro ativo). */
|
|
7
|
+
export declare function anunciarResultadoFiltro(regiao: HTMLElement | null, quantidade: number, temFiltro: boolean, textoSemResultados: string): void;
|
|
8
|
+
export interface ElementosAria {
|
|
9
|
+
tabela: HTMLElement | null;
|
|
10
|
+
container: HTMLElement | null;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Nome acessível vem do host (`aria-label`): vai à tabela e, como região rolável nomeada, ao contêiner
|
|
14
|
+
* (leitores de tela anunciam o contêiner e o teclado alcança a rolagem). `aria-busy` acompanha o carregamento.
|
|
15
|
+
*/
|
|
16
|
+
export declare function sincronizarAriaTabela({ tabela, container }: ElementosAria, rotulo: string | null, carregando: boolean): void;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rolagem e foco de linhas da <ui-tabela>, inclusive com a janela virtual.
|
|
3
|
+
* Responsabilidade única: posicionar uma linha na área visível (abaixo do cabeçalho fixo) rolando só o container,
|
|
4
|
+
* nunca a página, e focar a linha renderizando a janela virtual quando preciso.
|
|
5
|
+
*/
|
|
6
|
+
/** Acesso ao que a rolagem precisa da tabela; tudo é lido na hora (os elementos são recriados). */
|
|
7
|
+
export interface PortasRolagem {
|
|
8
|
+
container: () => HTMLElement | null;
|
|
9
|
+
tbody: () => HTMLElement | null;
|
|
10
|
+
cabecalho: () => HTMLElement | null;
|
|
11
|
+
alturaLinha: () => number;
|
|
12
|
+
/** Renderiza a janela virtual (síncrono). */
|
|
13
|
+
renderizarCorpo: () => void;
|
|
14
|
+
/** A linha ativa (tabindex 0) mudou para `indice`. */
|
|
15
|
+
aoLinhaAtiva: (indice: number) => void;
|
|
16
|
+
}
|
|
17
|
+
/** Tempo máximo esperando o `scrollend` da rolagem suave antes de forçar a chegada. */
|
|
18
|
+
export declare const TEMPO_LIMITE_ROLAGEM_SUAVE_MS = 800;
|
|
19
|
+
/**
|
|
20
|
+
* Quanto o container precisa rolar para a linha ficar inteira na área útil: abaixo do cabeçalho
|
|
21
|
+
* fixo e acima da barra de rolagem horizontal. 0 = já visível. Linha maior que a área alinha pelo topo.
|
|
22
|
+
*/
|
|
23
|
+
export declare function deslocamentoAteLinha(container: HTMLElement, tr: HTMLElement, alturaCabecalho: number): number;
|
|
24
|
+
/** Rola só o container da tabela (nunca a página, ao contrário de `scrollIntoView`). */
|
|
25
|
+
export declare function rolarContainer(container: HTMLElement, topo: number, comportamento: 'smooth' | 'auto'): void;
|
|
26
|
+
export declare class RolagemLinhas {
|
|
27
|
+
private p;
|
|
28
|
+
private cancelarCorrecao;
|
|
29
|
+
constructor(p: PortasRolagem);
|
|
30
|
+
private alturaCabecalho;
|
|
31
|
+
/** Linhas inteiras que cabem na área visível (mínimo 1). */
|
|
32
|
+
linhasPorPagina(): number;
|
|
33
|
+
/** Foca a linha, renderizando a janela virtual se necessário, e a mantém visível abaixo do cabeçalho fixo. */
|
|
34
|
+
focar(indice: number): void;
|
|
35
|
+
/**
|
|
36
|
+
* Posiciona a linha exibida `indice` na área visível.
|
|
37
|
+
* Fora da janela virtual, rola até a posição estimada, renderiza a janela e corrige pela posição
|
|
38
|
+
* real da linha. No modo suave a correção ocorre ao fim da animação (`scrollend`, com timeout de
|
|
39
|
+
* segurança para navegadores sem o evento ou quando não há rolagem a fazer).
|
|
40
|
+
*/
|
|
41
|
+
posicionar(indice: number, comportamento: 'smooth' | 'auto'): boolean;
|
|
42
|
+
/** Cancela a correção pendente de uma rolagem suave (nova rolagem, desconexão). */
|
|
43
|
+
cancelar(): void;
|
|
44
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Teclado nas linhas da <ui-tabela>.
|
|
3
|
+
* Responsabilidade única: traduzir uma tecla em um destino de foco ou em "ativar a linha". Função pura; quem
|
|
4
|
+
* chama move o foco, renderiza a janela virtual e dispara o clique.
|
|
5
|
+
*/
|
|
6
|
+
export type AcaoTeclaLinha = {
|
|
7
|
+
tipo: 'mover';
|
|
8
|
+
indice: number;
|
|
9
|
+
} | {
|
|
10
|
+
tipo: 'ativar';
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Setas, Home/End e PageUp/PageDown movem o foco (limitados a `0..ultimo`); Enter e Espaço ativam a linha.
|
|
14
|
+
* Sem linhas (`ultimo < 0`) ou com índice inválido nenhuma tecla de movimento produz ação.
|
|
15
|
+
*/
|
|
16
|
+
export declare function acaoDaTeclaLinha(key: string, atual: number, ultimo: number, linhasPorPagina: number): AcaoTeclaLinha | null;
|
|
@@ -31,8 +31,7 @@ export declare class UITabela extends SafeHTMLElement {
|
|
|
31
31
|
private _indiceAtivo;
|
|
32
32
|
/** Altura real das linhas medida no DOM; null = usa a estimativa da densidade. */
|
|
33
33
|
private _alturaLinhaMedida;
|
|
34
|
-
|
|
35
|
-
private _cancelarCorrecaoRolagem;
|
|
34
|
+
private rolagem;
|
|
36
35
|
private remotaController;
|
|
37
36
|
private selecaoController;
|
|
38
37
|
private dadosController;
|
|
@@ -118,23 +117,6 @@ export declare class UITabela extends SafeHTMLElement {
|
|
|
118
117
|
* Enter/Espaço selecionam a linha (mesmo caminho do clique, emite `ui-linha-clique`).
|
|
119
118
|
*/
|
|
120
119
|
private handleTecladoCorpo;
|
|
121
|
-
private linhasPorPagina;
|
|
122
|
-
/** Foca a linha, renderizando a janela virtual se necessário, e a mantém visível abaixo do cabeçalho fixo. */
|
|
123
|
-
private focarLinha;
|
|
124
|
-
/**
|
|
125
|
-
* Quanto o container precisa rolar para a linha ficar inteira na área útil: abaixo do cabeçalho
|
|
126
|
-
* fixo e acima da barra de rolagem horizontal. 0 = já visível. Linha maior que a área alinha pelo topo.
|
|
127
|
-
*/
|
|
128
|
-
private deslocamentoAteLinha;
|
|
129
|
-
/** Rola só o container da tabela (nunca a página, ao contrário de `scrollIntoView`). */
|
|
130
|
-
private rolarContainer;
|
|
131
|
-
/**
|
|
132
|
-
* Posiciona a linha exibida `indice` na área visível.
|
|
133
|
-
* Fora da janela virtual, rola até a posição estimada, renderiza a janela e corrige pela posição
|
|
134
|
-
* real da linha. No modo suave a correção ocorre ao fim da animação (`scrollend`, com timeout de
|
|
135
|
-
* segurança para navegadores sem o evento ou quando não há rolagem a fazer).
|
|
136
|
-
*/
|
|
137
|
-
private posicionarLinha;
|
|
138
120
|
private obterContextoRenderizador;
|
|
139
121
|
private renderHeader;
|
|
140
122
|
renderBody(): void;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adaptador da Popover API para o balão do <ui-tooltip>.
|
|
3
|
+
* Responsabilidade única: abrir/fechar o balão na camada superior (top layer) quando o navegador suporta
|
|
4
|
+
* `popover`, sem casts soltos e sem engolir erros inesperados.
|
|
5
|
+
*/
|
|
6
|
+
export declare function mostrarPopover(el: HTMLElement): void;
|
|
7
|
+
export declare function ocultarPopover(el: HTMLElement): void;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Posicionamento do balão do <ui-tooltip>.
|
|
3
|
+
* Responsabilidade única: normalizar o lado pedido e calcular `top`/`left` (em px, relativos à janela) do balão,
|
|
4
|
+
* mantendo-o dentro da tela. Funções puras, sem acesso ao DOM.
|
|
5
|
+
*/
|
|
6
|
+
export type PosicaoTooltip = 'topo' | 'baixo' | 'esquerda' | 'direita';
|
|
7
|
+
export interface Retangulo {
|
|
8
|
+
top: number;
|
|
9
|
+
left: number;
|
|
10
|
+
right: number;
|
|
11
|
+
bottom: number;
|
|
12
|
+
width: number;
|
|
13
|
+
height: number;
|
|
14
|
+
}
|
|
15
|
+
export interface Viewport {
|
|
16
|
+
largura: number;
|
|
17
|
+
altura: number;
|
|
18
|
+
}
|
|
19
|
+
/** Distância entre o gatilho e o balão (seta + folga). */
|
|
20
|
+
export declare const DESLOCAMENTO_PX = 8;
|
|
21
|
+
/** Margem mínima até a borda da janela. */
|
|
22
|
+
export declare const MARGEM_TELA_PX = 8;
|
|
23
|
+
/** Aceita português e inglês, ignora caixa e espaços; qualquer outra coisa vira `topo`. */
|
|
24
|
+
export declare function normalizarPosicao(bruto: string | null | undefined): PosicaoTooltip;
|
|
25
|
+
/** Posição do balão em torno do gatilho, limitada à janela (balão maior que a janela fica na margem). */
|
|
26
|
+
export declare function calcularPosicaoBalao(gatilho: Retangulo, balao: Pick<Retangulo, 'width' | 'height'>, posicao: PosicaoTooltip, viewport: Viewport): {
|
|
27
|
+
top: number;
|
|
28
|
+
left: number;
|
|
29
|
+
};
|
|
@@ -1,10 +1,28 @@
|
|
|
1
1
|
import { SafeHTMLElement } from '../../core/ssr-safe';
|
|
2
|
+
/**
|
|
3
|
+
* Dica contextual (e popover) ao redor de um gatilho.
|
|
4
|
+
*
|
|
5
|
+
* @attr {string} texto - Texto do balão (alias `text`); também vira `aria-description` do gatilho.
|
|
6
|
+
* @attr {'topo'|'baixo'|'esquerda'|'direita'} posicao - Lado do balão (alias `position`, aceita top/bottom/left/right).
|
|
7
|
+
* @attr {'hover'|'clique'} gatilho - Como abre (alias `trigger`); em telas de toque o toque sempre alterna.
|
|
8
|
+
* @attr {boolean} aberto - Balão visível (alias `open`).
|
|
9
|
+
* @attr {boolean} disabled - Desativa o tooltip; fecha se estiver aberto.
|
|
10
|
+
* @slot - Elemento gatilho.
|
|
11
|
+
* @slot conteudo - Conteúdo rico do balão.
|
|
12
|
+
* @csspart balao - O balão.
|
|
13
|
+
* @csspart texto - O texto do balão.
|
|
14
|
+
* @csspart seta - A seta do balão.
|
|
15
|
+
*/
|
|
2
16
|
export declare class UITooltip extends SafeHTMLElement {
|
|
3
17
|
static get observedAttributes(): string[];
|
|
4
18
|
private containerElement;
|
|
5
19
|
private bubbleElement;
|
|
6
|
-
|
|
20
|
+
/** Ouvintes do host: valem enquanto o elemento está conectado. */
|
|
21
|
+
private ouvintesHost;
|
|
22
|
+
/** Ouvintes globais (documento/janela): valem só enquanto o balão está aberto. */
|
|
23
|
+
private ouvintesAberto;
|
|
7
24
|
private _timerOcultar;
|
|
25
|
+
private _quadro;
|
|
8
26
|
/** Gatilho que recebeu `aria-description` deste tooltip (para remover depois). */
|
|
9
27
|
private _gatilhoDescrito;
|
|
10
28
|
constructor();
|
|
@@ -17,8 +35,12 @@ export declare class UITooltip extends SafeHTMLElement {
|
|
|
17
35
|
set disabled(val: boolean);
|
|
18
36
|
mostrar(): void;
|
|
19
37
|
ocultar(): void;
|
|
38
|
+
private lerGatilho;
|
|
20
39
|
private posicionarBubble;
|
|
40
|
+
private cancelarQuadro;
|
|
21
41
|
private syncState;
|
|
42
|
+
private abrirBalao;
|
|
43
|
+
private fecharBalao;
|
|
22
44
|
private handleMouseEnter;
|
|
23
45
|
private handleMouseLeave;
|
|
24
46
|
private cancelarOcultar;
|
|
@@ -33,6 +55,7 @@ export declare class UITooltip extends SafeHTMLElement {
|
|
|
33
55
|
*/
|
|
34
56
|
private sincronizarDescricao;
|
|
35
57
|
private removerDescricao;
|
|
58
|
+
/** O clique do gatilho continua chegando aos ancestrais: o "clicar fora" já ignora cliques dentro do host. */
|
|
36
59
|
private handleClick;
|
|
37
60
|
private handleClickOutside;
|
|
38
61
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Escolha segura de opções vindas de atributos HTML.
|
|
3
|
+
* Responsabilidade única: transformar texto de atributo (hostil por definição) num valor de um conjunto
|
|
4
|
+
* conhecido, para que nunca vire nome de classe CSS arbitrário nem estado inesperado.
|
|
5
|
+
*/
|
|
6
|
+
/** Devolve `valor` (sem espaços, em minúsculas) se estiver em `permitidas`; senão `padrao`. */
|
|
7
|
+
export declare function escolherOpcao<T extends string>(valor: string | null | undefined, permitidas: readonly T[], padrao: T): T;
|
|
8
|
+
/** Como `escolherOpcao`, mas devolve `null` quando o valor não é reconhecido (opção opcional). */
|
|
9
|
+
export declare function escolherOpcaoOpcional<T extends string>(valor: string | null | undefined, permitidas: readonly T[]): T | null;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface OpcoesRotuloControle {
|
|
2
|
+
host: HTMLElement;
|
|
3
|
+
internals?: {
|
|
4
|
+
labels?: NodeList;
|
|
5
|
+
} | null;
|
|
6
|
+
/** Elemento interno com o papel (switch/checkbox/radio) que recebe o nome acessível. */
|
|
7
|
+
controle: HTMLElement;
|
|
8
|
+
/** Elemento interno que exibe o texto do rótulo; precisa ter `id`. */
|
|
9
|
+
rotulo: HTMLElement;
|
|
10
|
+
/** Valor do atributo `label` (texto puro, nunca HTML). */
|
|
11
|
+
texto: string | null;
|
|
12
|
+
}
|
|
13
|
+
export declare function sincronizarRotuloControle({ host, internals, controle, rotulo, texto }: OpcoesRotuloControle): void;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** Contratos do toast, no core (L1) para que o `UIBus` não dependa do componente (L3). */
|
|
2
|
+
export interface UIToastAcao {
|
|
3
|
+
rotulo: string;
|
|
4
|
+
onClick: (e: MouseEvent) => void;
|
|
5
|
+
tipo?: 'primario' | 'secundario' | 'destrutivo';
|
|
6
|
+
}
|
|
7
|
+
export interface UIToastOpcoes {
|
|
8
|
+
tipo?: 'sucesso' | 'erro' | 'alerta' | 'info';
|
|
9
|
+
titulo?: string;
|
|
10
|
+
mensagem: string;
|
|
11
|
+
duracao?: number;
|
|
12
|
+
posicao?: 'bottom-right' | 'top-right' | 'bottom-left' | 'top-left' | 'bottom-center' | 'top-center';
|
|
13
|
+
acao?: UIToastAcao;
|
|
14
|
+
fechavel?: boolean;
|
|
15
|
+
pausarNoHover?: boolean;
|
|
16
|
+
}
|