@1doc/1ds-react 2.9.0 → 2.11.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 +653 -0
- package/dist/components/Accordion/Accordion.css +13 -0
- package/dist/components/Accordion/Accordion.d.ts +9 -0
- package/dist/components/Accordion/Accordion.js +18 -5
- package/dist/components/AppSubheader/AppSubheader.css +10 -1
- package/dist/components/AttachmentCard/AttachmentCard.css +10 -8
- package/dist/components/AttachmentCard/AttachmentCard.d.ts +3 -0
- package/dist/components/AttachmentCard/AttachmentCard.js +8 -1
- package/dist/components/Badge/Badge.css +27 -5
- package/dist/components/Badge/Badge.d.ts +20 -4
- package/dist/components/Badge/Badge.js +6 -0
- package/dist/components/Button/Button.css +5 -0
- package/dist/components/Button/Button.d.ts +3 -0
- package/dist/components/Button/Button.js +1 -0
- package/dist/components/Calendar/Calendar.css +10 -0
- package/dist/components/Calendar/Calendar.d.ts +10 -6
- package/dist/components/Calendar/Calendar.js +6 -1
- package/dist/components/Coachmark/Coachmark.css +10 -0
- package/dist/components/Coachmark/Coachmark.d.ts +14 -1
- package/dist/components/Coachmark/Coachmark.js +51 -5
- package/dist/components/ColorPicker/ColorPicker.css +8 -1
- package/dist/components/ColorPicker/ColorPicker.d.ts +2 -2
- package/dist/components/DataTable/DataTable.css +216 -0
- package/dist/components/DataTable/DataTable.d.ts +70 -2
- package/dist/components/DataTable/DataTable.js +293 -6
- package/dist/components/DescriptionList/DescriptionList.css +14 -0
- package/dist/components/DescriptionList/DescriptionList.d.ts +3 -0
- package/dist/components/DescriptionList/DescriptionList.js +1 -0
- package/dist/components/EmptyState/EmptyState.d.ts +4 -2
- package/dist/components/EmptyState/EmptyState.js +2 -2
- package/dist/components/Input/Input.css +30 -0
- package/dist/components/Input/Input.d.ts +10 -0
- package/dist/components/Input/Input.js +3 -1
- package/dist/components/List/ListItem.d.ts +14 -2
- package/dist/components/List/ListItem.js +3 -2
- package/dist/components/Modal/Modal.css +19 -0
- package/dist/components/Modal/Modal.d.ts +7 -0
- package/dist/components/Modal/Modal.js +1 -0
- package/dist/components/RichTextEditor/RichTextEditor.css +47 -0
- package/dist/components/RichTextEditor/RichTextEditor.d.ts +22 -8
- package/dist/components/RichTextEditor/RichTextEditor.js +460 -3
- package/dist/components/SegmentedControl/SegmentedControl.css +70 -0
- package/dist/components/SegmentedControl/SegmentedControl.d.ts +5 -0
- package/dist/components/SegmentedControl/SegmentedControl.js +5 -1
- package/dist/components/Select/Select.css +122 -2
- package/dist/components/Select/Select.d.ts +33 -4
- package/dist/components/Select/Select.js +256 -35
- package/dist/components/StatCard/StatCard.css +73 -0
- package/dist/components/StatCard/StatCard.d.ts +12 -0
- package/dist/components/StatCard/StatCard.js +11 -1
- package/dist/components/Tabs/Tabs.css +11 -0
- package/dist/components/Tabs/Tabs.d.ts +7 -0
- package/dist/components/Tabs/Tabs.js +7 -1
- package/dist/components/Tag/Tag.css +3 -1
- package/dist/components/Toast/Toast.css +32 -0
- package/dist/components/Toast/Toast.d.ts +18 -0
- package/dist/components/Toast/Toast.js +14 -1
- package/dist/components/Toast/ToastStack.js +8 -1
- package/dist/teste/AccordionControlado.test.d.ts +1 -0
- package/dist/teste/AccordionControlado.test.js +73 -0
- package/dist/teste/AccordionTituloNeutro.test.d.ts +1 -0
- package/dist/teste/AccordionTituloNeutro.test.js +23 -0
- package/dist/teste/AppSubheaderRegiao.test.d.ts +1 -0
- package/dist/teste/AppSubheaderRegiao.test.js +13 -0
- package/dist/teste/AttachmentCardLista.test.d.ts +1 -0
- package/dist/teste/AttachmentCardLista.test.js +49 -0
- package/dist/teste/AttachmentCardSm.test.d.ts +1 -0
- package/dist/teste/AttachmentCardSm.test.js +26 -0
- package/dist/teste/BadgeAttachedTomEPadding.test.d.ts +1 -0
- package/dist/teste/BadgeAttachedTomEPadding.test.js +43 -0
- package/dist/teste/BadgeNeutroColado.test.d.ts +1 -0
- package/dist/teste/BadgeNeutroColado.test.js +11 -0
- package/dist/teste/BadgeTag.test.js +13 -0
- package/dist/teste/ButtonDensidade.test.d.ts +1 -0
- package/dist/teste/ButtonDensidade.test.js +28 -0
- package/dist/teste/CalendarCabecalho.test.d.ts +1 -0
- package/dist/teste/CalendarCabecalho.test.js +11 -0
- package/dist/teste/CalendarCompacto.test.d.ts +1 -0
- package/dist/teste/CalendarCompacto.test.js +29 -0
- package/dist/teste/CoachmarkSemVeu.test.d.ts +1 -0
- package/dist/teste/CoachmarkSemVeu.test.js +85 -0
- package/dist/teste/CoachmarkUmPasso.test.d.ts +1 -0
- package/dist/teste/CoachmarkUmPasso.test.js +34 -0
- package/dist/teste/ColorPickerXs.test.d.ts +1 -0
- package/dist/teste/ColorPickerXs.test.js +21 -0
- package/dist/teste/DataTableArvoreEVariantes.test.d.ts +1 -0
- package/dist/teste/DataTableArvoreEVariantes.test.js +190 -0
- package/dist/teste/DataTableCompactaETom.test.d.ts +1 -0
- package/dist/teste/DataTableCompactaETom.test.js +69 -0
- package/dist/teste/DescriptionListCompacta.test.d.ts +1 -0
- package/dist/teste/DescriptionListCompacta.test.js +22 -0
- package/dist/teste/EmptyStateTituloRico.test.d.ts +1 -0
- package/dist/teste/EmptyStateTituloRico.test.js +23 -0
- package/dist/teste/InputAgrupado.test.d.ts +1 -0
- package/dist/teste/InputAgrupado.test.js +24 -0
- package/dist/teste/InputGhost.test.d.ts +1 -0
- package/dist/teste/InputGhost.test.js +32 -0
- package/dist/teste/ListItemTooltipStandalone.test.d.ts +1 -0
- package/dist/teste/ListItemTooltipStandalone.test.js +39 -0
- package/dist/teste/ModalProporcoes1Doc.test.d.ts +1 -0
- package/dist/teste/ModalProporcoes1Doc.test.js +32 -0
- package/dist/teste/RichTextEditorAlinhaImagemTabela.test.d.ts +1 -0
- package/dist/teste/RichTextEditorAlinhaImagemTabela.test.js +212 -0
- package/dist/teste/RichTextEditorEstiloDeTexto.test.d.ts +1 -0
- package/dist/teste/RichTextEditorEstiloDeTexto.test.js +120 -0
- package/dist/teste/SegmentedControlContador.test.d.ts +1 -0
- package/dist/teste/SegmentedControlContador.test.js +39 -0
- package/dist/teste/SegmentedControlSuperficie.test.d.ts +1 -0
- package/dist/teste/SegmentedControlSuperficie.test.js +39 -0
- package/dist/teste/SelectAbertoControladoEFlutuante.test.d.ts +1 -0
- package/dist/teste/SelectAbertoControladoEFlutuante.test.js +145 -0
- package/dist/teste/SelectFiltroCorETamanho.test.d.ts +1 -0
- package/dist/teste/SelectFiltroCorETamanho.test.js +77 -0
- package/dist/teste/SelectItemComEscopo.test.d.ts +1 -0
- package/dist/teste/SelectItemComEscopo.test.js +54 -0
- package/dist/teste/SelectListaFiltro.test.d.ts +1 -0
- package/dist/teste/SelectListaFiltro.test.js +102 -0
- package/dist/teste/StatCardSecundariaETom.test.d.ts +1 -0
- package/dist/teste/StatCardSecundariaETom.test.js +45 -0
- package/dist/teste/StatCardTamanhoSm.test.d.ts +1 -0
- package/dist/teste/StatCardTamanhoSm.test.js +32 -0
- package/dist/teste/TabsCompacta.test.d.ts +1 -0
- package/dist/teste/TabsCompacta.test.js +35 -0
- package/dist/teste/TagPositivoTingido.test.d.ts +1 -0
- package/dist/teste/TagPositivoTingido.test.js +54 -0
- package/dist/teste/ToastAcaoEDetalhes.test.d.ts +1 -0
- package/dist/teste/ToastAcaoEDetalhes.test.js +94 -0
- package/dist/teste/lerArquivo.d.ts +1 -0
- package/dist/teste/lerArquivo.js +12 -0
- package/dist/utils/html-seguro.d.ts +19 -1
- package/dist/utils/html-seguro.js +113 -2
- package/dist/utils/toast.d.ts +10 -1
- package/dist/utils/toast.js +2 -1
- package/package.json +3 -3
- package/src/teste/AccordionControlado.test.tsx +87 -0
- package/src/teste/AccordionTituloNeutro.test.tsx +25 -0
- package/src/teste/AppSubheaderRegiao.test.tsx +17 -0
- package/src/teste/AttachmentCardLista.test.tsx +53 -0
- package/src/teste/AttachmentCardSm.test.tsx +29 -0
- package/src/teste/BadgeAttachedTomEPadding.test.tsx +60 -0
- package/src/teste/BadgeNeutroColado.test.tsx +15 -0
- package/src/teste/BadgeTag.test.tsx +21 -0
- package/src/teste/ButtonDensidade.test.tsx +40 -0
- package/src/teste/CalendarCabecalho.test.tsx +11 -0
- package/src/teste/CalendarCompacto.test.tsx +37 -0
- package/src/teste/CoachmarkSemVeu.test.tsx +101 -0
- package/src/teste/CoachmarkUmPasso.test.tsx +45 -0
- package/src/teste/ColorPickerXs.test.tsx +22 -0
- package/src/teste/DataTableArvoreEVariantes.test.tsx +240 -0
- package/src/teste/DataTableCompactaETom.test.tsx +85 -0
- package/src/teste/DescriptionListCompacta.test.tsx +24 -0
- package/src/teste/EmptyStateTituloRico.test.tsx +34 -0
- package/src/teste/InputAgrupado.test.tsx +26 -0
- package/src/teste/InputGhost.test.tsx +42 -0
- package/src/teste/ListItemTooltipStandalone.test.tsx +64 -0
- package/src/teste/ModalProporcoes1Doc.test.tsx +36 -0
- package/src/teste/RichTextEditorAlinhaImagemTabela.test.tsx +238 -0
- package/src/teste/RichTextEditorEstiloDeTexto.test.tsx +137 -0
- package/src/teste/SegmentedControlContador.test.tsx +43 -0
- package/src/teste/SegmentedControlSuperficie.test.tsx +52 -0
- package/src/teste/SelectAbertoControladoEFlutuante.test.tsx +180 -0
- package/src/teste/SelectFiltroCorETamanho.test.tsx +90 -0
- package/src/teste/SelectItemComEscopo.test.tsx +69 -0
- package/src/teste/SelectListaFiltro.test.tsx +120 -0
- package/src/teste/StatCardSecundariaETom.test.tsx +51 -0
- package/src/teste/StatCardTamanhoSm.test.tsx +42 -0
- package/src/teste/TabsCompacta.test.tsx +45 -0
- package/src/teste/TagPositivoTingido.test.tsx +60 -0
- package/src/teste/ToastAcaoEDetalhes.test.tsx +109 -0
- package/src/teste/lerArquivo.ts +13 -0
- package/src/utils/html-seguro.ts +105 -2
- package/src/utils/toast.ts +12 -2
|
@@ -35,7 +35,8 @@
|
|
|
35
35
|
padding: var(--umds-primitive-spacing-quarck);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
.umds-color-picker--sm .umds-color-picker__swatches
|
|
38
|
+
.umds-color-picker--sm .umds-color-picker__swatches,
|
|
39
|
+
.umds-color-picker--xs .umds-color-picker__swatches {
|
|
39
40
|
gap: var(--umds-primitive-spacing-quarck); /* 4px */
|
|
40
41
|
}
|
|
41
42
|
|
|
@@ -76,6 +77,12 @@
|
|
|
76
77
|
height: var(--umds-primitive-spacing-xxs);
|
|
77
78
|
}
|
|
78
79
|
|
|
80
|
+
/* xs: 20px, o tamanho do CrisDoc (16 + 4, dois degraus da escala somados; sem token próprio). */
|
|
81
|
+
.umds-color-picker--xs .umds-color-picker__swatch {
|
|
82
|
+
width: calc(var(--umds-primitive-spacing-xxxs) + var(--umds-primitive-spacing-quarck)); /* 20px */
|
|
83
|
+
height: calc(var(--umds-primitive-spacing-xxxs) + var(--umds-primitive-spacing-quarck));
|
|
84
|
+
}
|
|
85
|
+
|
|
79
86
|
.umds-color-picker__swatch--on-light {
|
|
80
87
|
/* stylelint-disable-next-line 1ds/cor-por-token -- par fixo da marcação sobre amostra clara (ver acima) */
|
|
81
88
|
color: var(--umds-primitive-gray-darkest);
|
|
@@ -44,7 +44,7 @@ export interface ColorPickerSwatch {
|
|
|
44
44
|
* @property {boolean} allowCustom - Liga o campo de cor livre (hexadecimal)
|
|
45
45
|
* @property {string} customLabel - Rótulo do campo de cor livre (padrão: "Cor livre (hexadecimal)")
|
|
46
46
|
* @property {string} customErrorMessage - Mensagem do hexadecimal inválido (padrão: "Use o formato #RRGGBB")
|
|
47
|
-
* @property {string} size - Tamanho da amostra: 'sm' (24px) | 'md' (32px)
|
|
47
|
+
* @property {string} size - Tamanho da amostra: 'xs' (20px, o do CrisDoc) | 'sm' (24px) | 'md' (32px). A marcação de selecionada (o anel duplo) é a mesma nos três.
|
|
48
48
|
* @property {boolean} disabled - Desabilita o grupo inteiro
|
|
49
49
|
* @property {string} id - Base dos ids internos; passe em SSR para os ids já saírem no HTML do servidor
|
|
50
50
|
* @property {string} className - Classes CSS adicionais
|
|
@@ -63,7 +63,7 @@ export interface ColorPickerProps {
|
|
|
63
63
|
allowCustom?: boolean;
|
|
64
64
|
customLabel?: string;
|
|
65
65
|
customErrorMessage?: string;
|
|
66
|
-
size?: "sm" | "md";
|
|
66
|
+
size?: "xs" | "sm" | "md";
|
|
67
67
|
disabled?: boolean;
|
|
68
68
|
id?: string;
|
|
69
69
|
className?: string;
|
|
@@ -207,11 +207,120 @@
|
|
|
207
207
|
padding: var(--umds-primitive-spacing-nano) var(--umds-primitive-spacing-nano); /* 6px: candidato a novo token; 8px */
|
|
208
208
|
}
|
|
209
209
|
|
|
210
|
+
/* Cabeçalho e linha de 44px (a altura de campo do DS). `height` na célula vale como mínimo: conteúdo mais
|
|
211
|
+
alto (avatar, botão) estica a linha. O documento imprime justo e fica fora. */
|
|
212
|
+
.umds-datatable--compact:not(.umds-datatable--document) .umds-datatable__th,
|
|
213
|
+
.umds-datatable--compact:not(.umds-datatable--document) .umds-datatable__td {
|
|
214
|
+
box-sizing: border-box;
|
|
215
|
+
height: var(--umds-semantic-field-height);
|
|
216
|
+
}
|
|
217
|
+
|
|
210
218
|
.umds-datatable--compact .umds-datatable__th--checkbox,
|
|
211
219
|
.umds-datatable--compact .umds-datatable__td--checkbox {
|
|
212
220
|
padding: var(--umds-primitive-spacing-nano) var(--umds-primitive-spacing-quarck) var(--umds-primitive-spacing-nano) var(--umds-primitive-spacing-nano); /* 6px: candidato a novo token; 4px; 8px */
|
|
213
221
|
}
|
|
214
222
|
|
|
223
|
+
/* ── Cabeçalho escuro (headerVariant="dark") ──
|
|
224
|
+
O navy do CrisDoc, com o texto claro do par `background-dark` / `neutral-light-pure`
|
|
225
|
+
(os dois viram juntos com o tema). Ordenação e foco no cabeçalho escuro usam o
|
|
226
|
+
texto claro, não o azul de ação, que não tem contraste sobre o navy. */
|
|
227
|
+
.umds-datatable--header-dark .umds-datatable__thead {
|
|
228
|
+
background: var(--umds-semantic-color-background-dark);
|
|
229
|
+
border-bottom-color: var(--umds-semantic-color-background-dark);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
.umds-datatable--header-dark .umds-datatable__th,
|
|
233
|
+
.umds-datatable--header-dark .umds-datatable__th--sortable:hover,
|
|
234
|
+
.umds-datatable--header-dark .umds-datatable__th--sorted {
|
|
235
|
+
color: var(--umds-semantic-color-neutral-light-pure);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.umds-datatable--header-dark .umds-datatable__sort-icon {
|
|
239
|
+
color: var(--umds-semantic-color-neutral-light-down);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.umds-datatable--header-dark .umds-datatable__sort-icon--active {
|
|
243
|
+
color: inherit;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
.umds-datatable--header-dark .umds-datatable__sort-button:focus-visible {
|
|
247
|
+
outline-color: var(--umds-semantic-color-neutral-light-pure);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/* ── Caixa alta no cabeçalho (headerUppercase) ── */
|
|
251
|
+
.umds-datatable--header-uppercase .umds-datatable__th {
|
|
252
|
+
text-transform: uppercase;
|
|
253
|
+
letter-spacing: var(--umds-primitive-font-letter-spacing-wide);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/* ── Cabeçalho só para o leitor de tela (hideHeader) ──
|
|
257
|
+
Visualmente oculto, não removido: as colunas continuam nomeadas. */
|
|
258
|
+
.umds-datatable--header-hidden .umds-datatable__thead {
|
|
259
|
+
position: absolute;
|
|
260
|
+
width: var(--umds-primitive-border-width-hairline);
|
|
261
|
+
height: var(--umds-primitive-border-width-hairline);
|
|
262
|
+
margin: calc(-1 * var(--umds-primitive-border-width-hairline));
|
|
263
|
+
padding: 0;
|
|
264
|
+
overflow: hidden;
|
|
265
|
+
clip-path: inset(50%);
|
|
266
|
+
white-space: nowrap;
|
|
267
|
+
border: 0;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/* ── Zebra (striped) ── */
|
|
271
|
+
.umds-datatable__row--striped,
|
|
272
|
+
.umds-datatable__row--striped.umds-datatable__row--group {
|
|
273
|
+
background: var(--umds-semantic-color-background-light);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
.umds-datatable__row--striped:hover {
|
|
277
|
+
background: var(--umds-semantic-color-neutral-light-medium);
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
.umds-datatable__row--striped.umds-datatable__row--selected {
|
|
281
|
+
background: var(--umds-semantic-color-primary-light);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/* ── Tom por linha (rowTone) ──
|
|
285
|
+
Fundo claro da cor semântica; a linha selecionada ou destacada vence o tom (por isso o :not). Fica depois da
|
|
286
|
+
zebra para vencê-la. `muted` só esmaece o texto. */
|
|
287
|
+
.umds-datatable__row--negative:not(.umds-datatable__row--selected),
|
|
288
|
+
.umds-datatable__row--negative:not(.umds-datatable__row--selected).umds-datatable__row--striped {
|
|
289
|
+
background: var(--umds-semantic-color-feedback-negative-light);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
.umds-datatable__row--positive:not(.umds-datatable__row--selected),
|
|
293
|
+
.umds-datatable__row--positive:not(.umds-datatable__row--selected).umds-datatable__row--striped {
|
|
294
|
+
background: var(--umds-semantic-color-feedback-positive-light);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
.umds-datatable__row--info:not(.umds-datatable__row--selected),
|
|
298
|
+
.umds-datatable__row--info:not(.umds-datatable__row--selected).umds-datatable__row--striped {
|
|
299
|
+
background: var(--umds-semantic-color-feedback-info-light);
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
.umds-datatable__row--negative:not(.umds-datatable__row--selected):hover {
|
|
303
|
+
background: color-mix(in srgb, var(--umds-semantic-color-feedback-negative-light) 85%, var(--umds-semantic-color-background-white));
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
.umds-datatable__row--positive:not(.umds-datatable__row--selected):hover {
|
|
307
|
+
background: color-mix(in srgb, var(--umds-semantic-color-feedback-positive-light) 85%, var(--umds-semantic-color-background-white));
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
.umds-datatable__row--info:not(.umds-datatable__row--selected):hover {
|
|
311
|
+
background: color-mix(in srgb, var(--umds-semantic-color-feedback-info-light) 85%, var(--umds-semantic-color-background-white));
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
.umds-datatable__row--muted .umds-datatable__td {
|
|
315
|
+
color: var(--umds-semantic-color-neutral-dark-down); /* #565656: 7,3:1 sobre branco */
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/* ── Linha destacada (selectedRowKeys / isRowSelected) ──
|
|
319
|
+
Além do fundo, uma barra de 4px à esquerda: o destaque não depende só da cor. */
|
|
320
|
+
.umds-datatable__row--highlighted > :first-child {
|
|
321
|
+
box-shadow: inset var(--umds-primitive-border-width-thick) 0 0 var(--umds-semantic-color-primary-pure);
|
|
322
|
+
}
|
|
323
|
+
|
|
215
324
|
/* ── Estado vazio ── */
|
|
216
325
|
.umds-datatable__td--empty {
|
|
217
326
|
padding: var(--umds-primitive-spacing-md) var(--umds-primitive-spacing-xxxs); /* 48px 16px */
|
|
@@ -233,6 +342,106 @@
|
|
|
233
342
|
color: var(--umds-semantic-color-neutral-light-down); /* #D5D5D5 */
|
|
234
343
|
}
|
|
235
344
|
|
|
345
|
+
.umds-datatable__empty-desc {
|
|
346
|
+
font-size: var(--umds-primitive-font-size-xxxs); /* 12px */
|
|
347
|
+
color: var(--umds-semantic-color-neutral-dark-down);
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/* ── Linhas hierárquicas (treeData) ──
|
|
351
|
+
`role="treegrid"`. A primeira coluna de dados leva o recuo por nível, os fios e o
|
|
352
|
+
botão de expandir/recolher. Os fios são colunas de 24px (o passo do recuo) desenhadas
|
|
353
|
+
por trás do conteúdo, de ponta a ponta da célula, então atravessam o padding e se
|
|
354
|
+
emendam de uma linha à outra. */
|
|
355
|
+
.umds-datatable__td--tree {
|
|
356
|
+
position: relative;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
.umds-datatable__tree-guides {
|
|
360
|
+
position: absolute;
|
|
361
|
+
top: 0;
|
|
362
|
+
bottom: 0;
|
|
363
|
+
left: var(--umds-primitive-spacing-xxxs);
|
|
364
|
+
display: flex;
|
|
365
|
+
pointer-events: none;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
.umds-datatable__guide {
|
|
369
|
+
position: relative;
|
|
370
|
+
flex: 0 0 var(--umds-primitive-spacing-xxs);
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
.umds-datatable__guide--line::before,
|
|
374
|
+
.umds-datatable__guide--tee::before,
|
|
375
|
+
.umds-datatable__guide--elbow::before {
|
|
376
|
+
content: "";
|
|
377
|
+
position: absolute;
|
|
378
|
+
top: 0;
|
|
379
|
+
bottom: 0;
|
|
380
|
+
left: 50%;
|
|
381
|
+
border-left: var(--umds-primitive-border-width-hairline) solid var(--umds-semantic-color-neutral-light-down);
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
.umds-datatable__guide--elbow::before {
|
|
385
|
+
bottom: 50%;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
.umds-datatable__guide--tee::after,
|
|
389
|
+
.umds-datatable__guide--elbow::after {
|
|
390
|
+
content: "";
|
|
391
|
+
position: absolute;
|
|
392
|
+
top: 50%;
|
|
393
|
+
left: 50%;
|
|
394
|
+
right: 0;
|
|
395
|
+
border-top: var(--umds-primitive-border-width-hairline) solid var(--umds-semantic-color-neutral-light-down);
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
.umds-datatable__tree-content {
|
|
399
|
+
position: relative;
|
|
400
|
+
display: flex;
|
|
401
|
+
align-items: center;
|
|
402
|
+
gap: var(--umds-primitive-spacing-quarck);
|
|
403
|
+
min-width: 0;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
.umds-datatable__tree-text {
|
|
407
|
+
min-width: 0;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
.umds-datatable__tree-toggle,
|
|
411
|
+
.umds-datatable__tree-spacer {
|
|
412
|
+
flex: 0 0 var(--umds-primitive-spacing-xxs);
|
|
413
|
+
width: var(--umds-primitive-spacing-xxs);
|
|
414
|
+
height: var(--umds-primitive-spacing-xxs);
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
.umds-datatable__tree-toggle {
|
|
418
|
+
display: inline-flex;
|
|
419
|
+
align-items: center;
|
|
420
|
+
justify-content: center;
|
|
421
|
+
margin: 0;
|
|
422
|
+
padding: 0;
|
|
423
|
+
border: none;
|
|
424
|
+
border-radius: var(--umds-primitive-border-radius-sm);
|
|
425
|
+
background: none;
|
|
426
|
+
color: var(--umds-semantic-color-neutral-dark-down);
|
|
427
|
+
cursor: pointer;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
.umds-datatable__tree-toggle:hover {
|
|
431
|
+
background: var(--umds-semantic-color-neutral-light-medium);
|
|
432
|
+
color: var(--umds-semantic-color-neutral-dark-pure);
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
.umds-datatable__tree-toggle:focus-visible {
|
|
436
|
+
outline: 2px solid var(--umds-semantic-color-primary-pure);
|
|
437
|
+
outline-offset: 2px;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
.umds-datatable--tree .umds-datatable__row:focus-visible {
|
|
441
|
+
outline: 2px solid var(--umds-semantic-color-primary-pure);
|
|
442
|
+
outline-offset: -2px;
|
|
443
|
+
}
|
|
444
|
+
|
|
236
445
|
/* ── Skeleton ── */
|
|
237
446
|
.umds-datatable__skeleton {
|
|
238
447
|
height: 16px;
|
|
@@ -301,6 +510,13 @@
|
|
|
301
510
|
overflow-wrap: anywhere;
|
|
302
511
|
}
|
|
303
512
|
|
|
513
|
+
/* Compacto na tabela de documento: fonte de 12px (a menor da escala) e célula de 4px × 8px. */
|
|
514
|
+
.umds-datatable--document.umds-datatable--compact .umds-datatable__th,
|
|
515
|
+
.umds-datatable--document.umds-datatable--compact .umds-datatable__td {
|
|
516
|
+
padding: var(--umds-primitive-spacing-quarck) var(--umds-primitive-spacing-nano);
|
|
517
|
+
font-size: var(--umds-primitive-font-size-xxxs);
|
|
518
|
+
}
|
|
519
|
+
|
|
304
520
|
@media print {
|
|
305
521
|
.umds-datatable--document {
|
|
306
522
|
overflow-x: visible;
|
|
@@ -35,7 +35,40 @@ export interface DataTableColumn {
|
|
|
35
35
|
* @property {Array<string|number>} selectedKeys - Chaves das linhas selecionadas (controlado;
|
|
36
36
|
* requer rowKey)
|
|
37
37
|
* @property {string} variant - 'default' (tabela de interface) | 'document' (tabela de CONTEÚDO de documento: sem ordenação, seleção nem clique de linha, bordas finas, cabeçalho repetido e linha inteira por página na impressão)
|
|
38
|
-
* @property {string} density - Densidade das células: 'default' | 'compact'
|
|
38
|
+
* @property {string} density - Densidade das células: 'default' | 'compact'. O compacto aperta o padding e
|
|
39
|
+
* fixa a altura do cabeçalho e da linha em 44px (a altura de campo do DS; o conteúdo maior que isso cresce a
|
|
40
|
+
* linha). Com `variant="document"`, o compacto também leva a fonte a 12px (a escala do DS não tem 13px).
|
|
41
|
+
* @property {string|function} rowTone - Tom por linha: nome do campo da linha que traz o tom, ou função
|
|
42
|
+
* `(row, rowIndex) => tom`. Tons: 'negative' (vermelho claro), 'positive' (verde claro), 'info' (laranja claro)
|
|
43
|
+
* e 'muted' (texto esmaecido). Sem tom, a linha segue o padrão; a linha selecionada ou destacada vence o tom.
|
|
44
|
+
* O tom é decoração: diga o estado também em texto ou ícone (a cor sozinha não basta).
|
|
45
|
+
* @property {string} headerVariant - Cabeçalho: 'default' (claro) | 'dark' (navy, texto claro; o cabeçalho
|
|
46
|
+
* escuro do CrisDoc). Cores pelos tokens `background-dark` e `neutral-light-pure`, então o tema acompanha.
|
|
47
|
+
* @property {boolean} headerUppercase - Rótulos do cabeçalho em caixa alta. Opt-in; vale para qualquer
|
|
48
|
+
* `headerVariant`.
|
|
49
|
+
* @property {boolean} striped - Zebra: as linhas ímpares (a segunda, a quarta…) ganham o fundo claro.
|
|
50
|
+
* @property {Array<string|number>} selectedRowKeys - Chaves das linhas DESTACADAS (requer rowKey). Só
|
|
51
|
+
* destaque visual (fundo, barra à esquerda e `aria-selected`), sem checkbox: serve à linha "aberta" de
|
|
52
|
+
* uma lista mestre-detalhe. Não confunda com `selectedKeys`, que é a seleção por checkbox.
|
|
53
|
+
* @property {function} isRowSelected - Destaque por função `(row, rowIndex) => boolean`, com o mesmo
|
|
54
|
+
* efeito de `selectedRowKeys`. Use quando a regra não cabe numa lista de chaves.
|
|
55
|
+
* @property {IconProp} emptyIcon - Ícone do estado vazio (objeto Font Awesome importado). Padrão: `faInbox`.
|
|
56
|
+
* @property {string} emptyDescription - Texto de apoio abaixo da `emptyMessage` do estado vazio
|
|
57
|
+
* @property {boolean} hideHeader - Esconde o cabeçalho SÓ NA TELA: as colunas continuam nomeadas para o
|
|
58
|
+
* leitor de tela (a linha de cabeçalho fica visualmente oculta, não removida)
|
|
59
|
+
* @property {boolean} treeData - Linhas hierárquicas: cada linha pode ter filhas em `row[childrenKey]`.
|
|
60
|
+
* A tabela vira `role="treegrid"` (`aria-level`, `aria-posinset`, `aria-setsize`, `aria-expanded` nas
|
|
61
|
+
* linhas), a primeira coluna ganha recuo por nível, fios e o botão de expandir/recolher. Teclado: ↓ ↑ andam
|
|
62
|
+
* entre as linhas visíveis, → expande (ou desce à primeira filha), ← recolhe (ou sobe ao pai), Home e End.
|
|
63
|
+
* Com `treeData`, `onRowClick`, `onSelect` e os índices dos callbacks contam as linhas VISÍVEIS.
|
|
64
|
+
* @property {string} childrenKey - Campo com as linhas filhas. Padrão: 'children'
|
|
65
|
+
* @property {Array<string|number>} expandedKeys - Chaves das linhas expandidas (controlado). A chave é o
|
|
66
|
+
* `rowKey` da linha; sem `rowKey`, o caminho de índices ("0", "0.1")
|
|
67
|
+
* @property {Array<string|number>} defaultExpandedKeys - Chaves expandidas na abertura (não controlado)
|
|
68
|
+
* @property {boolean} defaultExpandAll - Abre a árvore toda na primeira renderização (não controlado)
|
|
69
|
+
* @property {function} onExpand - Callback ao expandir ou recolher: `(chavesExpandidas, linha, expandida)`
|
|
70
|
+
* @property {string} expandLabel - Nome acessível do botão de expandir. Troque para traduzir.
|
|
71
|
+
* @property {string} collapseLabel - Nome acessível do botão de recolher. Troque para traduzir.
|
|
39
72
|
* @property {string} sortKey - Chave da coluna atualmente ordenada
|
|
40
73
|
* @property {string} sortDirection - Direção da ordenação: 'asc' | 'desc'
|
|
41
74
|
* @property {number} skeletonRows - Número de linhas skeleton exibidas no loading
|
|
@@ -54,7 +87,7 @@ export interface DataTableColumn {
|
|
|
54
87
|
* @slot cell-<key> - Só no Vue. Célula livre da coluna `<key>`: `<template #cell-nome="{ row, value, rowIndex }">`.
|
|
55
88
|
* @slot row-group - Só no Vue. Conteúdo da linha de grupo: `{ label, row, rowIndex }`.
|
|
56
89
|
* @quandoUsar Dados TABULARES que se comparam coluna a coluna, com ordenação, seleção e paginação. Semântica de tabela para leitor de tela. Com `variant="document"`, a tabela que faz parte do TEXTO de um documento que se imprime (itens de nota, cotações): sem interação, com bordas finas e quebra de página que não corta linha.
|
|
57
|
-
* @quandoNaoUsar Para hierarquia pai-filho — use `Tree`. Para cards em grade sem comparação coluna a coluna, use `Grid` com `Card`. Para pares rótulo/valor de um documento (sem cabeçalho de coluna), use `DescriptionList`.
|
|
90
|
+
* @quandoNaoUsar Para hierarquia pai-filho SEM colunas (navegação, seleção de pastas) — use `Tree`; com colunas de dado por linha, use `treeData`. Para cards em grade sem comparação coluna a coluna, use `Grid` com `Card`. Para pares rótulo/valor de um documento (sem cabeçalho de coluna), use `DescriptionList`.
|
|
58
91
|
*/
|
|
59
92
|
export interface DataTableProps {
|
|
60
93
|
columns: DataTableColumn[];
|
|
@@ -70,6 +103,40 @@ export interface DataTableProps {
|
|
|
70
103
|
/** `document`: tabela de conteúdo de documento, imprimível e sem interação. @default 'default' */
|
|
71
104
|
variant?: "default" | "document";
|
|
72
105
|
density?: "default" | "compact";
|
|
106
|
+
/** Tom por linha: nome do campo ou função `(row, rowIndex) => 'negative' | 'positive' | 'info' | 'muted'`. */
|
|
107
|
+
rowTone?: string | ((row: Record<string, any>, rowIndex: number) => string | undefined);
|
|
108
|
+
/** `dark`: cabeçalho navy com texto claro (o do CrisDoc). @default 'default' */
|
|
109
|
+
headerVariant?: "default" | "dark";
|
|
110
|
+
/** Rótulos do cabeçalho em caixa alta. @default false */
|
|
111
|
+
headerUppercase?: boolean;
|
|
112
|
+
/** Zebra nas linhas ímpares. @default false */
|
|
113
|
+
striped?: boolean;
|
|
114
|
+
/** Chaves das linhas destacadas (só visual, sem checkbox; requer `rowKey`). */
|
|
115
|
+
selectedRowKeys?: Array<string | number>;
|
|
116
|
+
/** Destaque de linha por função `(row, rowIndex) => boolean`. */
|
|
117
|
+
isRowSelected?: (row: Record<string, any>, rowIndex: number) => boolean;
|
|
118
|
+
/** Ícone do estado vazio (objeto Font Awesome importado). @default faInbox */
|
|
119
|
+
emptyIcon?: IconProp;
|
|
120
|
+
/** Texto de apoio abaixo de `emptyMessage`. */
|
|
121
|
+
emptyDescription?: string;
|
|
122
|
+
/** Esconde o cabeçalho só na tela; o leitor de tela continua lendo as colunas. @default false */
|
|
123
|
+
hideHeader?: boolean;
|
|
124
|
+
/** Linhas hierárquicas (`role="treegrid"`), com filhas em `row[childrenKey]`. @default false */
|
|
125
|
+
treeData?: boolean;
|
|
126
|
+
/** Campo das linhas filhas. @default 'children' */
|
|
127
|
+
childrenKey?: string;
|
|
128
|
+
/** Chaves das linhas expandidas (controlado). */
|
|
129
|
+
expandedKeys?: Array<string | number>;
|
|
130
|
+
/** Chaves expandidas na abertura (não controlado). */
|
|
131
|
+
defaultExpandedKeys?: Array<string | number>;
|
|
132
|
+
/** Abre a árvore toda na abertura (não controlado). @default false */
|
|
133
|
+
defaultExpandAll?: boolean;
|
|
134
|
+
/** Ao expandir ou recolher: `(chavesExpandidas, linha, expandida)`. */
|
|
135
|
+
onExpand?: (expandedKeys: Array<string | number>, row: Record<string, any>, expanded: boolean) => void;
|
|
136
|
+
/** Nome acessível do botão de expandir. Troque para traduzir. @default 'Expandir' */
|
|
137
|
+
expandLabel?: string;
|
|
138
|
+
/** Nome acessível do botão de recolher. Troque para traduzir. @default 'Recolher' */
|
|
139
|
+
collapseLabel?: string;
|
|
73
140
|
sortKey?: string;
|
|
74
141
|
sortDirection?: "asc" | "desc";
|
|
75
142
|
skeletonRows?: number;
|
|
@@ -83,5 +150,6 @@ export interface DataTableProps {
|
|
|
83
150
|
/** Nome acessível do checkbox de cada linha. Recebe o número da linha (a partir de 1). Troque para traduzir. @default (rowNumber) => 'Selecionar linha ' + rowNumber */
|
|
84
151
|
selectRowLabel?: (rowNumber: number) => string;
|
|
85
152
|
}
|
|
153
|
+
import { IconProp } from "../Icon/Icon";
|
|
86
154
|
declare function DataTable(props: DataTableProps): import("react/jsx-runtime").JSX.Element;
|
|
87
155
|
export default DataTable;
|