@actionexec/dashboards 0.17.0 → 0.18.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/README.md CHANGED
@@ -56,6 +56,7 @@ datas ajustavel e download em PDF.
56
56
  | `token` | `string` | — | Token Bearer do demonstrativo (obrigatorio) |
57
57
  | `palette` | `string[]` | paleta Action | Paleta de 15 cores, no formato do dashboard — para quem embute os dois lado a lado |
58
58
  | `showDownload` | `boolean` | `true` | Exibe o botao de download do PDF |
59
+ | `layout` | `'auto' \| 'table' \| 'periods'` | `'auto'` | Como o documento se desenha: a folha de colunas (`table`), um periodo por vez com seletor (`periods`), ou a escolha pela largura do container raiz (`auto`: `periods` abaixo de 600 px, `table` acima; sem `ResizeObserver` fica em `table`) |
59
60
  | `className` | `string` | — | Classe CSS adicional no container raiz |
60
61
 
61
62
  Todos os valores sao computados no servidor: o componente nao agrega, nao
@@ -63,8 +64,25 @@ formata numero e nao avalia formula. E o que garante que o documento exibido aqu
63
64
  seja identico ao do construtor da plataforma e ao PDF baixado.
64
65
 
65
66
  A folha vive num viewport com scroll nos dois eixos (a barra horizontal fica na
66
- borda visivel, nao no fundo da tabela) e uma faixa de periodos no topo. Secoes
67
- com recuo se recolhem na tela; o PDF continua com o documento inteiro.
67
+ borda visivel, nao no fundo da tabela) e uma faixa de periodos no topo, que marca
68
+ a coluna mais a vista. Secoes com recuo se recolhem na tela; o PDF continua com o
69
+ documento inteiro.
70
+
71
+ **Abaixo de 600 px** (`layout="auto"` num celular, ou `layout="periods"`) a folha
72
+ da lugar a um periodo por vez: seletor com setas de 40 px e um `<select>` nativo
73
+ com todas as colunas (a de total por ultimo, quando o documento a tem), e uma
74
+ lista de duas colunas com o rotulo e o valor do periodo escolhido. Embaixo do
75
+ valor vai a variacao contra o periodo anterior (o percentual da analise
76
+ horizontal quando o documento a pede; senao, o valor anterior), que o toggle
77
+ "Comparar com o anterior" liga e desliga. Recolher e expandir secoes e o mesmo
78
+ estado nos dois modos: girar o celular nao desfaz o que o leitor abriu. O
79
+ container raiz recebe `stmt--table` ou `stmt--periods` conforme o modo em vigor.
80
+ O PDF nao muda com o modo.
81
+
82
+ Na folha em pane estreito (`layout="table"` abaixo de 600 px), a barra de
83
+ controles quebra linha, a legenda "Base" ganha uma linha propria e a coluna de
84
+ rotulos se limita a 40% do viewport da folha, quebrando o nome da conta. Quem
85
+ embute nao precisa mais de override proprio para isso.
68
86
 
69
87
  ### `ApiError`
70
88
 
@@ -1,3 +1,5 @@
1
+ /** Como o documento se desenha; ver `StatementProps.layout`. */
2
+ export type StatementLayoutMode = 'auto' | 'table' | 'periods';
1
3
  export interface StatementProps {
2
4
  /** Token Bearer de acesso ao demonstrativo. */
3
5
  token: string;
@@ -11,7 +13,17 @@ export interface StatementProps {
11
13
  palette?: string[];
12
14
  /** Botao de download do PDF. Default true. */
13
15
  showDownload?: boolean;
16
+ /**
17
+ * Como o documento se desenha. `'table'` e a folha: linhas por colunas de
18
+ * periodo, com a faixa de atalhos no topo. `'periods'` mostra um periodo por
19
+ * vez, numa lista de duas colunas com seletor: e o que cabe num celular,
20
+ * onde uma folha de 22 colunas nao cabe. `'auto'` (default) mede a largura
21
+ * do container raiz e usa `'periods'` abaixo de 600px; sem ResizeObserver
22
+ * (SSR, testes) fica em `'table'`. Recolher e expandir secoes e o MESMO
23
+ * estado nos dois modos, e o PDF nao muda com o modo.
24
+ */
25
+ layout?: StatementLayoutMode;
14
26
  /** Classe CSS adicional no container raiz. */
15
27
  className?: string;
16
28
  }
17
- export declare function Statement({ token, palette, showDownload, className }: StatementProps): import("react/jsx-runtime").JSX.Element;
29
+ export declare function Statement({ token, palette, showDownload, layout, className, }: StatementProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,22 @@
1
+ import type { StatementComputedLine } from '../types/statement';
2
+ export interface CollapseState {
3
+ /** Ids das linhas que o leitor pode recolher: as que têm filhas. */
4
+ collapsible: ReadonlySet<string>;
5
+ /** Ids recolhidos agora. */
6
+ collapsed: ReadonlySet<string>;
7
+ /** Ids escondidos porque algum ancestral está recolhido. */
8
+ hidden: ReadonlySet<string>;
9
+ /** Contas que cada seção guarda: a pista que a linha fechada mostra. */
10
+ accountCounts: ReadonlyMap<string, number>;
11
+ /** Há seção para recolher? Decide se os botões da barra aparecem. */
12
+ hasSections: boolean;
13
+ toggle: (id: string) => void;
14
+ /**
15
+ * Volta ao resumo de abertura, e não a "tudo recolhido": fechar também as
16
+ * seções que contêm outras esconderia os subtotais que o resumo existe
17
+ * para mostrar.
18
+ */
19
+ collapseToSummary: () => void;
20
+ expandAll: () => void;
21
+ }
22
+ export declare function useCollapse(lines: readonly StatementComputedLine[]): CollapseState;
@@ -0,0 +1,9 @@
1
+ import type { RefObject } from 'react';
2
+ /**
3
+ * Chave do período mais visível em `scrollRef`, ou null.
4
+ *
5
+ * `keys` dita a ordem de desempate e, mudando, reanexa o observador: as
6
+ * colunas são outras e os `th` também. Passe a lista memoizada; uma nova a
7
+ * cada render religaria o observador a cada render.
8
+ */
9
+ export declare function useCurrentPeriod(scrollRef: RefObject<HTMLElement | null>, keys: readonly string[]): string | null;
@@ -0,0 +1,9 @@
1
+ /** Abaixo disto o documento troca a folha pelo modo período. */
2
+ export declare const NARROW_PANE_PX = 600;
3
+ export interface UseNarrowPaneResult {
4
+ /** Ref callback para o elemento medido. */
5
+ ref: (element: HTMLDivElement | null) => void;
6
+ /** True quando `enabled` e a largura medida é menor que o limiar. */
7
+ narrow: boolean;
8
+ }
9
+ export declare function useNarrowPane(enabled: boolean, threshold?: number): UseNarrowPaneResult;
package/dist/index.d.ts CHANGED
@@ -3,5 +3,5 @@ export { Dashboard } from './Dashboard';
3
3
  export type { DashboardProps } from './Dashboard';
4
4
  export type { DashboardGeometry } from './utils/grid';
5
5
  export { Statement } from './Statement';
6
- export type { StatementProps } from './Statement';
6
+ export type { StatementProps, StatementLayoutMode } from './Statement';
7
7
  export { ApiError } from './api/fetcher';