@nextelco/common-ui 2.1.93 → 2.1.94
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/dist/bundle.js +1 -1
- package/dist/style.css +1 -1
- package/dist/style.layered.css +1 -1
- package/dist/types/components/ui/Avisos.d.ts +35 -0
- package/dist/types/components/ui/BarraAcoes.d.ts +17 -0
- package/dist/types/components/ui/CabecalhoPagina.d.ts +32 -0
- package/dist/types/components/ui/Confirmacao.d.ts +29 -0
- package/dist/types/components/ui/FaixaAviso.d.ts +20 -0
- package/dist/types/components/ui/Paginas.test.d.ts +1 -0
- package/dist/types/components/ui/Passos.d.ts +28 -0
- package/dist/types/components/ui/Separadores.d.ts +23 -0
- package/dist/types/components/ui/TextoAuto.d.ts +21 -0
- package/dist/types/exports/ui.d.ts +16 -0
- package/package.json +3 -2
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
/** Um nível do caminho por cima do título. */
|
|
3
|
+
export interface NivelCaminho {
|
|
4
|
+
rotulo: ReactNode;
|
|
5
|
+
/** Ligação normal. Para o router da app, usar `onClick` (ex: `() => navigate('/x')`). */
|
|
6
|
+
href?: string;
|
|
7
|
+
onClick?: () => void;
|
|
8
|
+
}
|
|
9
|
+
export interface CabecalhoPaginaProps {
|
|
10
|
+
titulo: ReactNode;
|
|
11
|
+
descricao?: ReactNode;
|
|
12
|
+
/**
|
|
13
|
+
* Caminho até à página (área › lista › registo). O último nível é a página
|
|
14
|
+
* atual e não leva ligação, mesmo que a traga.
|
|
15
|
+
*/
|
|
16
|
+
caminho?: NivelCaminho[];
|
|
17
|
+
/** Botões da página (ex: "Novo", "Editar"). Ficam à direita e descem em ecrã estreito. */
|
|
18
|
+
acoes?: ReactNode;
|
|
19
|
+
/** Linha extra por baixo da descrição (etiquetas de estado, responsável…). */
|
|
20
|
+
extra?: ReactNode;
|
|
21
|
+
/** Rótulo acessível da navegação do caminho. */
|
|
22
|
+
rotuloCaminho?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Cabeçalho comum a todas as páginas: caminho, título com a barra turquesa,
|
|
26
|
+
* descrição e ações.
|
|
27
|
+
*
|
|
28
|
+
* Existe para o título deixar de ser desenhado à mão em cada ecrã — com
|
|
29
|
+
* tamanhos, cores e posições diferentes de página para página. O nome no menu,
|
|
30
|
+
* o título e o último nível do caminho devem ser o mesmo texto.
|
|
31
|
+
*/
|
|
32
|
+
export default function CabecalhoPagina({ titulo, descricao, caminho, acoes, extra, rotuloCaminho, }: CabecalhoPaginaProps): React.JSX.Element;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
export interface ConfirmacaoProps {
|
|
3
|
+
aberto: boolean;
|
|
4
|
+
titulo: ReactNode;
|
|
5
|
+
/** Explicação: o que vai acontecer, a que registo, se é reversível. */
|
|
6
|
+
children?: ReactNode;
|
|
7
|
+
onConfirmar: () => void;
|
|
8
|
+
onCancelar: () => void;
|
|
9
|
+
/** Texto do botão — o verbo da ação ("Eliminar", "Submeter"), não "OK". */
|
|
10
|
+
textoConfirmar?: string;
|
|
11
|
+
textoCancelar?: string;
|
|
12
|
+
/** `perigo` pinta a ação a vermelho e põe o foco em Cancelar. */
|
|
13
|
+
variante?: 'normal' | 'perigo';
|
|
14
|
+
/** A ação está a correr: botões desativados. */
|
|
15
|
+
aConfirmar?: boolean;
|
|
16
|
+
/** Uma segunda saída (ex: "Desativar" em vez de eliminar, "Eliminar só o contrato"). */
|
|
17
|
+
acaoSecundaria?: {
|
|
18
|
+
rotulo: string;
|
|
19
|
+
onClick: () => void;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Pedido de confirmação antes de uma ação. Substitui o `window.confirm()` do
|
|
24
|
+
* browser, que mostra o endereço do servidor, não diz que registo é e só tem
|
|
25
|
+
* "OK".
|
|
26
|
+
*
|
|
27
|
+
* Esc e clicar fora cancelam (exceto enquanto `aConfirmar`).
|
|
28
|
+
*/
|
|
29
|
+
export default function Confirmacao({ aberto, titulo, children, onConfirmar, onCancelar, textoConfirmar, textoCancelar, variante, aConfirmar, acaoSecundaria, }: ConfirmacaoProps): React.JSX.Element | null;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
export type TomFaixa = 'aviso' | 'info' | 'erro';
|
|
3
|
+
export interface FaixaAvisoProps {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
tom?: TomFaixa;
|
|
6
|
+
/** Ação à direita (ex: "Voltar ao meu perfil" no "Ver como"). */
|
|
7
|
+
acao?: {
|
|
8
|
+
rotulo: ReactNode;
|
|
9
|
+
onClick: () => void;
|
|
10
|
+
};
|
|
11
|
+
icone?: ReactNode;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Faixa no topo do conteúdo para um estado que afeta a página inteira: "Ver
|
|
15
|
+
* como" outro perfil, um serviço externo em baixo, dados possivelmente
|
|
16
|
+
* incompletos. Não é para resultados de ações — esses são avisos (`useAvisos`).
|
|
17
|
+
*
|
|
18
|
+
* Fica bem no slot `topBar` do Layout.
|
|
19
|
+
*/
|
|
20
|
+
export default function FaixaAviso({ children, tom, acao, icone }: FaixaAvisoProps): React.JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
export interface Passo<T extends string> {
|
|
3
|
+
id: T;
|
|
4
|
+
rotulo: ReactNode;
|
|
5
|
+
/** Passo já preenchido e válido (✓). */
|
|
6
|
+
concluido?: boolean;
|
|
7
|
+
/** Passo com erros por corrigir. */
|
|
8
|
+
erro?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface PassosProps<T extends string> {
|
|
11
|
+
passos: Passo<T>[];
|
|
12
|
+
atual: T;
|
|
13
|
+
/** Sem isto, os passos são só indicação (não se clica). */
|
|
14
|
+
onMudar?: (id: T) => void;
|
|
15
|
+
/**
|
|
16
|
+
* Todos os passos clicáveis. Num registo já existente (editar/visualizar)
|
|
17
|
+
* pode-se saltar para qualquer passo; num novo, só para os já concluídos.
|
|
18
|
+
*/
|
|
19
|
+
livre?: boolean;
|
|
20
|
+
rotulo?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Barra de passos para formulários longos (página própria, não pop-up).
|
|
24
|
+
*
|
|
25
|
+
* Mostra onde se está, o que já está feito e onde há erros — o que um
|
|
26
|
+
* formulário de seis secções seguidas não diz.
|
|
27
|
+
*/
|
|
28
|
+
export default function Passos<T extends string>({ passos, atual, onMudar, livre, rotulo }: PassosProps<T>): React.JSX.Element;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
export interface Separador<T extends string> {
|
|
3
|
+
id: T;
|
|
4
|
+
rotulo: ReactNode;
|
|
5
|
+
/** Número à frente do rótulo (ex: faturas por mapear). Omitir quando não interessa. */
|
|
6
|
+
contagem?: number;
|
|
7
|
+
desativado?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface SeparadoresProps<T extends string> {
|
|
10
|
+
itens: Separador<T>[];
|
|
11
|
+
ativo: T;
|
|
12
|
+
onMudar: (id: T) => void;
|
|
13
|
+
/** Rótulo acessível do conjunto (ex: "Estado das faturas"). */
|
|
14
|
+
rotulo?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Separadores de uma página, iguais em todo o portal.
|
|
18
|
+
*
|
|
19
|
+
* O ativo fica a navy com sublinhado (não turquesa: turquesa sobre branco não
|
|
20
|
+
* tem contraste para texto). Setas esquerda/direita, Home e End mudam de
|
|
21
|
+
* separador, como num tablist normal.
|
|
22
|
+
*/
|
|
23
|
+
export default function Separadores<T extends string>({ itens, ativo, onMudar, rotulo }: SeparadoresProps<T>): React.JSX.Element;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React, { type TextareaHTMLAttributes } from 'react';
|
|
2
|
+
export type TextoAutoProps = Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'rows'> & {
|
|
3
|
+
/** Altura mínima, em linhas. */
|
|
4
|
+
minLinhas?: number;
|
|
5
|
+
/** A partir daqui deixa de crescer e passa a ter scroll. */
|
|
6
|
+
maxLinhas?: number;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Caixa de texto que cresce com o conteúdo até `maxLinhas`; a partir daí tem
|
|
10
|
+
* scroll. Enter muda de linha (não submete).
|
|
11
|
+
*
|
|
12
|
+
* Vinda do Auditorias IT (comentários e descrições), onde uma textarea fixa ou
|
|
13
|
+
* cortava o texto ou ocupava meio ecrã vazia.
|
|
14
|
+
*/
|
|
15
|
+
declare const TextoAuto: React.ForwardRefExoticComponent<Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, "rows"> & {
|
|
16
|
+
/** Altura mínima, em linhas. */
|
|
17
|
+
minLinhas?: number;
|
|
18
|
+
/** A partir daqui deixa de crescer e passa a ter scroll. */
|
|
19
|
+
maxLinhas?: number;
|
|
20
|
+
} & React.RefAttributes<HTMLTextAreaElement>>;
|
|
21
|
+
export default TextoAuto;
|
|
@@ -1,2 +1,18 @@
|
|
|
1
1
|
export { Card, SectionGroup, Kpi, Badge, BadgeSla, ChipEstadoInterno, Btn, BtnGroup, Estado, Modal as ProefModal, Campo, CampoSelect, CampoPesquisa, CampoInterruptor, BarraFiltros, LinhaAlerta, ListaCampos, } from '../components/ui/Ui';
|
|
2
2
|
export type { BadgeTone, StatusSla, SeveridadeAlerta } from '../components/ui/Ui';
|
|
3
|
+
export { default as CabecalhoPagina } from '../components/ui/CabecalhoPagina';
|
|
4
|
+
export type { CabecalhoPaginaProps, NivelCaminho } from '../components/ui/CabecalhoPagina';
|
|
5
|
+
export { default as Separadores } from '../components/ui/Separadores';
|
|
6
|
+
export type { SeparadoresProps, Separador } from '../components/ui/Separadores';
|
|
7
|
+
export { default as Passos } from '../components/ui/Passos';
|
|
8
|
+
export type { PassosProps, Passo } from '../components/ui/Passos';
|
|
9
|
+
export { default as BarraAcoes } from '../components/ui/BarraAcoes';
|
|
10
|
+
export type { BarraAcoesProps } from '../components/ui/BarraAcoes';
|
|
11
|
+
export { default as FaixaAviso } from '../components/ui/FaixaAviso';
|
|
12
|
+
export type { FaixaAvisoProps, TomFaixa } from '../components/ui/FaixaAviso';
|
|
13
|
+
export { default as TextoAuto } from '../components/ui/TextoAuto';
|
|
14
|
+
export type { TextoAutoProps } from '../components/ui/TextoAuto';
|
|
15
|
+
export { default as Confirmacao } from '../components/ui/Confirmacao';
|
|
16
|
+
export type { ConfirmacaoProps } from '../components/ui/Confirmacao';
|
|
17
|
+
export { AvisosProvider, useAvisos } from '../components/ui/Avisos';
|
|
18
|
+
export type { AvisosApi, AvisosProviderProps, OpcoesAviso, TipoAviso } from '../components/ui/Avisos';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nextelco/common-ui",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.94",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/bundle.js",
|
|
6
6
|
"types": "dist/types/index.d.ts",
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
"pubOnlySameVersion": "npm run build && npm publish",
|
|
17
17
|
"test": "vitest run",
|
|
18
18
|
"test:watch": "vitest",
|
|
19
|
-
"test:ci": "vitest run --coverage"
|
|
19
|
+
"test:ci": "vitest run --coverage",
|
|
20
|
+
"release": "node scripts/release.mjs"
|
|
20
21
|
},
|
|
21
22
|
"keywords": [],
|
|
22
23
|
"author": "",
|