@giro-ds/react 7.0.0 → 9.0.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/dist/index.cjs +137 -63
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +127 -20
- package/dist/index.esm.js +136 -65
- package/dist/index.esm.js.map +1 -1
- package/dist/styles.css +2 -2
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import React__default, { ReactNode, ReactElement, ComponentPropsWithoutRef, CSSP
|
|
|
3
3
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
4
|
import { Matcher } from 'react-day-picker';
|
|
5
5
|
import { RowData, ColumnDef } from '@tanstack/react-table';
|
|
6
|
+
export { ColumnDef as TableColumnDefinition, createColumnHelper as createTableColumnHelper } from '@tanstack/react-table';
|
|
6
7
|
import { Toast as Toast$1 } from 'radix-ui';
|
|
7
8
|
|
|
8
9
|
/** Tamanho do componente: 'sm' (pequeno) ou 'lg' (grande) */
|
|
@@ -522,25 +523,27 @@ interface DrawerProps extends BaseProps {
|
|
|
522
523
|
closeOnEscape?: boolean;
|
|
523
524
|
/** Classe CSS opcional */
|
|
524
525
|
className?: string;
|
|
526
|
+
/** Conteúdo fixo exibido abaixo da área rolável, sem acompanhar o scroll */
|
|
527
|
+
footer?: ReactNode;
|
|
525
528
|
}
|
|
526
529
|
|
|
527
530
|
declare const Drawer: React__default.FC<DrawerProps>;
|
|
528
531
|
|
|
529
532
|
interface FilterItem$2 {
|
|
530
|
-
id?:
|
|
533
|
+
id?: BaseProps['id'];
|
|
531
534
|
text: string;
|
|
532
535
|
subText?: string;
|
|
533
536
|
icon?: ReactNode;
|
|
534
|
-
disabled?:
|
|
537
|
+
disabled?: BaseProps['disabled'];
|
|
535
538
|
}
|
|
536
|
-
type FilterType = '
|
|
539
|
+
type FilterType = 'single' | 'multiple' | 'calendar';
|
|
537
540
|
/**
|
|
538
541
|
* Props do componente Filter
|
|
539
542
|
* @example
|
|
540
543
|
* ```tsx
|
|
541
544
|
* <Filter
|
|
542
545
|
* items={filterItems}
|
|
543
|
-
* type="
|
|
546
|
+
* type="multiple"
|
|
544
547
|
* placeholder="Filtrar por categoria"
|
|
545
548
|
* onApplyFilter={(ids) => handleFilter(ids)}
|
|
546
549
|
* buttonText="Filtros"
|
|
@@ -598,7 +601,27 @@ interface FilterProps extends BaseProps {
|
|
|
598
601
|
/** Idioma do calendário */
|
|
599
602
|
locale?: Locale;
|
|
600
603
|
/** Classe CSS opcional */
|
|
601
|
-
className?:
|
|
604
|
+
className?: BaseProps['className'];
|
|
605
|
+
/**
|
|
606
|
+
* Modo de exibição do filtro
|
|
607
|
+
* - `'simple'`: filtro simples com popover (padrão)
|
|
608
|
+
* - `'combined'`: filtro combinado com painel lateral onde o conteúdo é composto via children
|
|
609
|
+
*/
|
|
610
|
+
mode?: 'simple' | 'combined';
|
|
611
|
+
/** Largura do painel lateral no modo combined (ex: '400px', '50vw'). Quando omitido, usa o tamanho padrão do Drawer */
|
|
612
|
+
drawerWidth?: string;
|
|
613
|
+
/** Título do painel lateral (padrão: 'Filtrar') */
|
|
614
|
+
title?: string;
|
|
615
|
+
/** Número de filtros ativos exibido como badge no botão */
|
|
616
|
+
activeCount?: number;
|
|
617
|
+
/** Conteúdo customizado no cabeçalho do Drawer */
|
|
618
|
+
drawerHeaderContent?: ReactNode;
|
|
619
|
+
/** Conteúdo do painel lateral no modo combined */
|
|
620
|
+
children?: ReactNode;
|
|
621
|
+
/** Callback ao aplicar no modo combined: () => void */
|
|
622
|
+
onApply?: () => void;
|
|
623
|
+
/** Callback ao limpar no modo combined: () => void */
|
|
624
|
+
onClear?: () => void;
|
|
602
625
|
}
|
|
603
626
|
|
|
604
627
|
declare const Filter: React__default.FC<FilterProps>;
|
|
@@ -973,6 +996,18 @@ interface SearchProps extends BaseProps, NativeInputProps {
|
|
|
973
996
|
onClick?: (e: React$1.MouseEvent<HTMLDivElement>) => void;
|
|
974
997
|
/** Callback executado ao pressionar mouse no componente: (e) => void */
|
|
975
998
|
onMouseDown?: (e: React$1.MouseEvent<HTMLDivElement>) => void;
|
|
999
|
+
/**
|
|
1000
|
+
* Modo de pesquisa:
|
|
1001
|
+
* - `'instant'` (padrão): dispara a busca a cada tecla digitada
|
|
1002
|
+
* - `'on-enter'`: dispara a busca somente ao pressionar Enter
|
|
1003
|
+
*/
|
|
1004
|
+
searchMode?: 'instant' | 'on-enter';
|
|
1005
|
+
/**
|
|
1006
|
+
* Callback executado quando a busca é acionada.
|
|
1007
|
+
* - No modo `'instant'`: chamado a cada mudança de valor
|
|
1008
|
+
* - No modo `'on-enter'`: chamado somente ao pressionar Enter
|
|
1009
|
+
*/
|
|
1010
|
+
onSearch?: (value: string) => void;
|
|
976
1011
|
/** ID para testes automatizados */
|
|
977
1012
|
'data-testid'?: string;
|
|
978
1013
|
/** Classe CSS opcional */
|
|
@@ -1166,7 +1201,7 @@ interface BaseFilterItem$1 {
|
|
|
1166
1201
|
tooltip?: string;
|
|
1167
1202
|
}
|
|
1168
1203
|
interface CheckboxFilterItem$1 extends BaseFilterItem$1 {
|
|
1169
|
-
type: '
|
|
1204
|
+
type: 'multiple' | 'single';
|
|
1170
1205
|
items: FilterItem$2[];
|
|
1171
1206
|
selectedIds?: string[];
|
|
1172
1207
|
onSelectionChange?: (selectedIds: string[]) => void;
|
|
@@ -1238,12 +1273,12 @@ interface BaseFilterItem {
|
|
|
1238
1273
|
onToggle?: (isOpen: boolean) => void;
|
|
1239
1274
|
}
|
|
1240
1275
|
/**
|
|
1241
|
-
* Props de filtro do tipo
|
|
1276
|
+
* Props de filtro do tipo multiple, single ou ícone.
|
|
1242
1277
|
* Renderiza uma lista de opções selecionáveis.
|
|
1243
1278
|
*/
|
|
1244
1279
|
interface CheckboxFilterItem extends BaseFilterItem {
|
|
1245
1280
|
/** Tipo do filtro */
|
|
1246
|
-
type: '
|
|
1281
|
+
type: 'multiple' | 'single';
|
|
1247
1282
|
/** Lista de itens disponíveis para seleção */
|
|
1248
1283
|
items: FilterItem$2[];
|
|
1249
1284
|
/** IDs dos itens atualmente selecionados */
|
|
@@ -1277,21 +1312,57 @@ interface CalendarFilterItem extends BaseFilterItem {
|
|
|
1277
1312
|
/** Placeholder exibido quando nenhuma data está selecionada */
|
|
1278
1313
|
placeholder?: string;
|
|
1279
1314
|
}
|
|
1315
|
+
/**
|
|
1316
|
+
* Props de filtro do tipo combined.
|
|
1317
|
+
* Abre um painel lateral (Drawer) com conteúdo composto via children.
|
|
1318
|
+
*/
|
|
1319
|
+
interface CombinedFilterItem extends BaseFilterItem {
|
|
1320
|
+
/** Tipo do filtro */
|
|
1321
|
+
type: 'combined';
|
|
1322
|
+
/** Título do painel lateral (padrão: 'Filtrar') */
|
|
1323
|
+
title?: string;
|
|
1324
|
+
/** Largura do painel lateral (ex: '400px', '50vw') */
|
|
1325
|
+
drawerWidth?: string;
|
|
1326
|
+
/** Número de filtros ativos exibido como badge no botão */
|
|
1327
|
+
activeCount?: number;
|
|
1328
|
+
/** Conteúdo customizado no cabeçalho do Drawer */
|
|
1329
|
+
drawerHeaderContent?: ReactNode;
|
|
1330
|
+
/** Conteúdo do painel lateral */
|
|
1331
|
+
children?: ReactNode;
|
|
1332
|
+
/** Callback ao clicar em Aplicar */
|
|
1333
|
+
onApply?: () => void;
|
|
1334
|
+
/** Callback ao clicar em Limpar */
|
|
1335
|
+
onClear?: () => void;
|
|
1336
|
+
/** Variante visual do botão (padrão: 'outlined') */
|
|
1337
|
+
variant?: Variant;
|
|
1338
|
+
}
|
|
1280
1339
|
/**
|
|
1281
1340
|
* Union type representando um item de filtro da tabela.
|
|
1282
|
-
* Pode ser do tipo
|
|
1341
|
+
* Pode ser do tipo multiple/single, calendário ou combined (Drawer).
|
|
1283
1342
|
*/
|
|
1284
|
-
type FilterItem = CheckboxFilterItem | CalendarFilterItem;
|
|
1343
|
+
type FilterItem = CheckboxFilterItem | CalendarFilterItem | CombinedFilterItem;
|
|
1285
1344
|
/**
|
|
1286
1345
|
* Props do cabeçalho do TableV2, com busca global e filtros.
|
|
1287
1346
|
*/
|
|
1288
1347
|
interface TableV2HeaderProps {
|
|
1289
1348
|
/** Placeholder do campo de busca global */
|
|
1290
1349
|
searchPlaceholder?: string;
|
|
1291
|
-
/** Exibe o campo de busca (padrão: true) */
|
|
1292
|
-
showSearch?: boolean;
|
|
1293
1350
|
/** Items de filtro (Status, Data de início, etc.) */
|
|
1294
1351
|
filterItems?: FilterItem[];
|
|
1352
|
+
/** Modo de busca: 'instant' chama onSearchChange a cada tecla; 'on-enter' chama apenas ao pressionar Enter (padrão) */
|
|
1353
|
+
searchMode?: 'instant' | 'on-enter';
|
|
1354
|
+
/**
|
|
1355
|
+
* Valor controlado do campo de busca.
|
|
1356
|
+
* Permite que o pai redefina o texto exibido no campo (ex: ao limpar filtros).
|
|
1357
|
+
*/
|
|
1358
|
+
searchValue?: string;
|
|
1359
|
+
/**
|
|
1360
|
+
* Callback chamado quando o valor da busca é confirmado.
|
|
1361
|
+
* A presença deste callback é o que exibe o campo de busca —
|
|
1362
|
+
* quando não fornecido, o campo de busca não é renderizado.
|
|
1363
|
+
* A paginação é automaticamente resetada para a página 1 ao buscar.
|
|
1364
|
+
*/
|
|
1365
|
+
onSearchChange?: (value: string) => void;
|
|
1295
1366
|
}
|
|
1296
1367
|
/**
|
|
1297
1368
|
* Props do rodapé do TableV2, com controles de paginação.
|
|
@@ -1307,6 +1378,14 @@ interface TableV2FooterProps {
|
|
|
1307
1378
|
onPageChange?: (page: number) => void;
|
|
1308
1379
|
/** Callback chamado quando o tamanho da página muda */
|
|
1309
1380
|
onPageSizeChange?: (pageSize: number) => void;
|
|
1381
|
+
/**
|
|
1382
|
+
* Página atual (1-based) para controle externo da paginação.
|
|
1383
|
+
* Quando fornecido, sincroniza o estado interno com este valor,
|
|
1384
|
+
* permitindo que o pai redefina a página — por exemplo, ao aplicar
|
|
1385
|
+
* um filtro externo que deva redefinir para a página 1.
|
|
1386
|
+
* Funciona tanto no modo client-side quanto no modo `manualPagination`.
|
|
1387
|
+
*/
|
|
1388
|
+
currentPage?: number;
|
|
1310
1389
|
}
|
|
1311
1390
|
/**
|
|
1312
1391
|
* Props para personalização do estado vazio da tabela.
|
|
@@ -1319,6 +1398,27 @@ interface EmptyStateProps {
|
|
|
1319
1398
|
/** Texto descritivo exibido no estado vazio */
|
|
1320
1399
|
emptyText?: ReactNode;
|
|
1321
1400
|
}
|
|
1401
|
+
/**
|
|
1402
|
+
* Props de configuração de seleção de linhas do TableV2.
|
|
1403
|
+
*/
|
|
1404
|
+
interface TableV2RowSelectionProps<T = Record<string, unknown>> {
|
|
1405
|
+
/**
|
|
1406
|
+
* Keys das linhas selecionadas (modo controlado).
|
|
1407
|
+
* Quando fornecido, o componente não gerencia o estado de seleção internamente —
|
|
1408
|
+
* o pai é responsável por atualizar este array via `onRowChange`.
|
|
1409
|
+
*/
|
|
1410
|
+
selectedRowKeys?: (string | number)[];
|
|
1411
|
+
/**
|
|
1412
|
+
* Desabilita a seleção de uma linha específica.
|
|
1413
|
+
* Pode ser um booleano global ou uma função chamada por linha.
|
|
1414
|
+
*/
|
|
1415
|
+
disabled?: boolean | ((row: T, index: number) => boolean);
|
|
1416
|
+
/** Callback chamado quando a seleção de linhas muda.
|
|
1417
|
+
* Recebe os dados das linhas selecionadas e suas keys (índices). */
|
|
1418
|
+
onRowChange?: (selectedRows: T[], selectedKeys: (string | number)[]) => void;
|
|
1419
|
+
/** Desabilita o checkbox "selecionar todos" */
|
|
1420
|
+
disableSelectAll?: boolean;
|
|
1421
|
+
}
|
|
1322
1422
|
/**
|
|
1323
1423
|
* Definição de uma ação em massa disponível na barra de seleção.
|
|
1324
1424
|
*/
|
|
@@ -1354,7 +1454,7 @@ interface TableV2BulkActionsProps<T = Record<string, unknown>> {
|
|
|
1354
1454
|
* columns={columns}
|
|
1355
1455
|
* data={data}
|
|
1356
1456
|
* enableSorting
|
|
1357
|
-
*
|
|
1457
|
+
* rowSelection={{ onRowChange: (rows, keys) => console.log(rows, keys) }}
|
|
1358
1458
|
* loading={isLoading}
|
|
1359
1459
|
* />
|
|
1360
1460
|
* ```
|
|
@@ -1364,14 +1464,21 @@ interface TableV2Props<T = Record<string, unknown>> extends EmptyStateProps {
|
|
|
1364
1464
|
columns: ColumnDef<T, any>[];
|
|
1365
1465
|
/** Dados exibidos na tabela */
|
|
1366
1466
|
data: T[];
|
|
1367
|
-
/**
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1467
|
+
/**
|
|
1468
|
+
* Configuração de seleção de linhas via checkbox.
|
|
1469
|
+
* A presença deste objeto habilita a seleção. Use `disabled` para controlar
|
|
1470
|
+
* linhas específicas e `onRowChange` para reagir às mudanças.
|
|
1471
|
+
* @example
|
|
1472
|
+
* ```tsx
|
|
1473
|
+
* rowSelection={{
|
|
1474
|
+
* disabled: (row) => row.status !== 'pronto_para_fechar',
|
|
1475
|
+
* onRowChange: (rows, keys) => handleRowChange(rows, keys),
|
|
1476
|
+
* }}
|
|
1477
|
+
* ```
|
|
1478
|
+
*/
|
|
1479
|
+
rowSelection?: TableV2RowSelectionProps<T>;
|
|
1371
1480
|
/** Habilita ordenação de colunas ao clicar no cabeçalho */
|
|
1372
1481
|
enableSorting?: boolean;
|
|
1373
|
-
/** Callback chamado quando a seleção de linhas muda */
|
|
1374
|
-
onRowSelectionChange?: (selectedRows: T[]) => void;
|
|
1375
1482
|
/** Configuração das ações em massa exibidas quando há linhas selecionadas */
|
|
1376
1483
|
bulkActions?: TableV2BulkActionsProps<T>;
|
|
1377
1484
|
/** Header acima da tabela com busca + filtros */
|
|
@@ -1390,7 +1497,7 @@ interface TableV2Props<T = Record<string, unknown>> extends EmptyStateProps {
|
|
|
1390
1497
|
};
|
|
1391
1498
|
}
|
|
1392
1499
|
|
|
1393
|
-
declare const TableV2: <T>({ columns, data,
|
|
1500
|
+
declare const TableV2: <T>({ columns, data, rowSelection: rowSelectionConfig, enableSorting, bulkActions, header, footer, loading, emptyIcon, emptyTitle, emptyText, onRow, className, }: TableV2Props<T>) => react_jsx_runtime.JSX.Element;
|
|
1394
1501
|
|
|
1395
1502
|
/**
|
|
1396
1503
|
* Props do componente TextArea
|