@orangesix/react 1.0.3 → 1.0.7

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.
@@ -0,0 +1,136 @@
1
+ :root {
2
+ --table-frozen: #fff;
3
+ --table-sort-size: 12px;
4
+ --table-sort-active: #0D6EFD;
5
+ --table-checkbox-size: 17px;
6
+ --table-scrollbar: #e1e1e1;
7
+ --table-select: var(--bs-light, #e1e1e1);
8
+ --table-header: var(--bs-light, #f5f5f5);
9
+ --table-footer: var(--bs-light, #f5f5f5);
10
+ --table-paginator-color: var(--bs-secondary-300, #b9b9b9);
11
+ --table-paginator-active: var(--bs-primary, #0D6EFD);
12
+ }
13
+
14
+ .table-responsive {
15
+ width: 100%;
16
+ }
17
+
18
+ .table {
19
+ width: 100%;
20
+ margin-bottom: 0;
21
+
22
+ &-footer,
23
+ &-header {
24
+ width: 100%;
25
+ display: flex;
26
+ padding: 0;
27
+ margin: 0;
28
+ background: var(--table-header, #F5F5F5);
29
+ border-bottom: 1px solid #dee2e6;
30
+ }
31
+
32
+ &-footer {
33
+ border-top: 1px solid #dee2e6;
34
+ background: var(--table-footer, #F5F5F5);
35
+ }
36
+
37
+ &-sort {
38
+ cursor: pointer;
39
+ color: var(--bs-secondary, #5555);
40
+
41
+ svg {
42
+ width: var(--table-sort-size, 12px);
43
+ height: var(--table-sort-size, 12px);
44
+ }
45
+ }
46
+
47
+ &-sort-active {
48
+ span[data-pc-section='sort'] {
49
+ svg {
50
+ color: var(--bs-primary, #0D6EFD);
51
+ }
52
+ }
53
+ }
54
+
55
+ &-resizable {
56
+ text-overflow: ellipsis;
57
+ }
58
+ }
59
+
60
+ /**
61
+ * Personalização do style do PrimeReact
62
+ */
63
+ .p-datatable {
64
+
65
+ .p-datatable-wrapper {
66
+ &::-webkit-scrollbar {
67
+ height: 8px;
68
+ }
69
+
70
+ &::-webkit-scrollbar-thumb {
71
+ background: var(--table-scrollbar, #e1e1e1);
72
+ border-radius: 10px;
73
+ }
74
+ }
75
+
76
+ .p-datatable-tbody {
77
+ .p-highlight {
78
+ background: var(--table-select, #e1e1e1);
79
+
80
+ td {
81
+ font-weight: bolder;
82
+ }
83
+
84
+ td.p-frozen-column {
85
+ background: var(--table-select, #e1e1e1);
86
+ }
87
+ }
88
+
89
+ .p-row-toggler {
90
+ width: 14px;
91
+ height: 14px;
92
+ margin-left: 5px;
93
+ }
94
+ }
95
+
96
+ .p-frozen-column {
97
+ position: sticky;
98
+ }
99
+
100
+ .p-frozen-column[data-pc-section="bodycell"] {
101
+ background: var(--table-frozen, #fff)
102
+ }
103
+
104
+ .p-checkbox-box {
105
+ width: var(--table-checkbox-size, 17px);
106
+ height: var(--table-checkbox-size, 17px);
107
+ }
108
+
109
+ .p-checkbox.p-highlight .p-checkbox-box {
110
+ background: var(--bs-primary, #0D6EFD);
111
+ border-color: var(--bs-primary, #0D6EFD);
112
+ }
113
+
114
+ .p-checkbox:has(.p-checkbox-input:hover) .p-highlight .p-checkbox-box {
115
+ border-color: var(--bs-primary, #0D6EFD);
116
+ }
117
+
118
+ .p-paginator {
119
+
120
+ .p-paginator-first,
121
+ .p-paginator-page,
122
+ .p-paginator-last, {
123
+ font-size: .9em;
124
+ min-width: 28px;
125
+ height: 28px;
126
+ color: var(--table-paginator-color, #b9b9b9)
127
+ }
128
+
129
+ .p-paginator-page.p-highlight {
130
+ color: #fff;
131
+ border: none;
132
+ background: var(--table-paginator-active, #0D6EFD);
133
+ }
134
+ }
135
+ }
136
+
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("react"),t=require("primereact/utils"),a=require("primereact/column"),o=require("primereact/datatable");const r=({children:a,...o})=>{const r={size:`box-size-${o.size??"100"}`,direction:`box-direction-${o.direction??"row"}`,justify:void 0===o.justify?"":Array.isArray(o.justify)?o.justify?.join(" "):o.justify,align:void 0===o.align?"":Array.isArray(o.align)?o.align?.join(" "):o.align},n={className:t.classNames(["box",o.className??"",r.size,r.direction,r.justify,r.align]),style:o.css};return e.createElement("div",{...n},a)};function n(e){return{value:e.data,dataKey:"id",lazy:void 0!==e.lazy,resizableColumns:e.styleResizable??!1,columnResizeMode:"expand",emptyMessage:e.emptyMessage??"Não há informações disponíveis no momento.",header:e.templeteHeader,footer:e.templateFooter}}function l(e){return{sortField:e.lazy?.sortField,sortOrder:e.lazy?.sortOrder??null,onSort:void 0!==e.lazy?function(t){e.onSort&&e.onSort(t.sortField,t.sortOrder)}:void 0}}function i(e,t,a){return{groupRowsBy:e.rowGroup,rowGroupMode:e.rowGroupMode,rowGroupHeaderTemplate:e.rowGroupHeaderTemplate,rowGroupFooterTemplate:e.rowGroupFooterTemplate,expandableRowGroups:e.rowExpandable??!1,expandedRows:t,onRowToggle(e){a(e.data)}}}function s(e){return{metaKeySelection:void 0!==e.onSelection,selection:e.selection,selectionMode:void 0!==e.onSelection?e.selectionMode??"single":void 0,onSelectionChange:function(t){e.onSelection&&e.onSelection(t.value)}}}function d(t){return{paginator:t.paginator??!1,paginatorClassName:"pagination",totalRecords:t?.lazy?.paginationTotal??void 0,first:void 0===t?.lazy?.paginationPage?0:((t?.lazy?.paginationPage??0)-1)*(t.paginatorRow??10),rows:t.paginator?t.paginatorRow??10:void 0,rowsPerPageOptions:[5,10,15,20,50,100],paginatorTemplate:{layout:"RowsPerPageDropdown FirstPageLink PageLinks LastPageLink CurrentPageReport",CurrentPageReport:t=>e.createElement("p",{className:"text-secondary mx-2",style:{fontSize:".9em"}},"Total de registros: ",t.totalRecords),RowsPerPageDropdown:t=>e.createElement("select",{className:"form-select form-select-sm mx-2",style:{maxWidth:"60px"},value:t.value,onChange:e=>{const a={};a.value=Number(e.target.value),t.onChange(a)}},t.options.map((t=>e.createElement("option",{key:t.value,value:t.value},t.label))))},paginatorRight:t.templatePaginationRight,paginatorLeft:t.templatePaginationLeft,onPage:void 0!==t.lazy?function(e){let a=e.first/(t.paginatorRow??10);t.onPaginator&&t.onPaginator(a+1,e.rows)}:void 0}}function c(e){return{root:{className:"table-responsive"},table:{className:t.classNames(["table",e.styleHover?"table-hover":"",e.styleStriped?"table-striped":"","small"===e.styleSize?"table-sm":"","bordered"===e.styleType?"table-bordered":"borderless"===e.styleType?"table-borderless":""])},header:{className:"table-header"},footer:{className:"table-footer"},paginator:{root:{className:t.classNames(["p-0 d-flex mb-1 mt-2",`justify-content-${e.paginatorAlign??"center"}`]),style:{borderTop:"none"}},firstPageButton:{style:{borderTopLeftRadius:"3px",borderBottomLeftRadius:"3px"}},lastPageButton:{style:{borderTopRightRadius:"3px",borderBottomRightRadius:"3px"}}}}}function p(){return{sort:{className:"table-sort"},headerCell:e=>({className:t.classNames([e?.context.sorted?"table-sort-active":""])}),bodyCell:{className:"table-resizable"}}}exports.Table=function(t){const[u,m]=e.useState([]);return e.createElement(r,{className:"p-0",size:t.size??"100"},e.createElement(o.DataTable,{pt:{...c(t)},tableClassName:t.className,...n(t),...l(t),...s(t),...d(t),...i(t,u,m)},"checkbox"===t.selectionMode&&e.createElement(a.Column,{align:"center",headerStyle:{width:"2.5rem"},pt:{...p()},selectionMode:"multiple"}),t.column.map((t=>e.createElement(a.Column,{unstyled:!0,align:t.align,alignFrozen:t.frozen?"right":void 0,alignHeader:t.alignHeader,body:t.body,field:t.id,frozen:void 0!==t.frozen,header:t.header,key:t.id,pt:{...p()},sortable:t.sort??!1,style:t.style})))))};
2
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":["../../src/box/box.tsx","../../src/table/core/core.tsx","../../src/table/core/sort.tsx","../../src/table/core/group.tsx","../../src/table/core/selection.tsx","../../src/table/core/pagination.tsx","../../src/table/styled.ts","../../src/table/table.tsx"],"sourcesContent":["import { BoxProps } from \"./types\";\r\nimport React, { HTMLAttributes } from \"react\";\r\nimport { classNames } from \"primereact/utils\";\r\n\r\n/**\r\n * Componente - `Box`\r\n *\r\n * Um componente versátil que pode ser utilizado para criar seções ou caixas em uma página.\r\n * Permite personalizar o estilo e o conteúdo através de propriedades.\r\n *\r\n * Exemplo de uso:\r\n * ```tsx\r\n * <Box align=\"align-items-center\"\r\n * justify=\"justify-content-end\"\r\n * size=\"25\">\r\n * ...conteúdo HTML\r\n * </Box>\r\n * ```\r\n */\r\nexport const Box = ({ children, ...props }: BoxProps) => {\r\n const css = {\r\n size: `box-size-${(props.size ?? \"100\")}`,\r\n direction: `box-direction-${props.direction ?? \"row\"}`,\r\n justify: props.justify === undefined ? \"\" : Array.isArray(props.justify) ? props.justify?.join(\" \") : props.justify,\r\n align: props.align === undefined ? \"\" : Array.isArray(props.align) ? props.align?.join(\" \") : props.align\r\n };\r\n\r\n const attr: HTMLAttributes<\"div\"> & Omit<BoxProps, \"children\"> = {\r\n className: classNames([\r\n \"box\",\r\n props.className ?? \"\",\r\n css.size,\r\n css.direction,\r\n css.justify,\r\n css.align\r\n ]),\r\n style: props.css\r\n };\r\n\r\n return (\r\n <div {...attr as any}>{children}</div>\r\n );\r\n};","import { TableProps } from \"../types\";\r\nimport { DataTableBaseProps } from \"primereact/datatable\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Define as configurações do modo principal da tabela.\r\n */\r\nexport function tableCore(\r\n props: TableProps<any>\r\n): Partial<DataTableBaseProps<any>> {\r\n return {\r\n value: props.data as any,\r\n dataKey: \"id\",\r\n lazy: props.lazy !== undefined,\r\n resizableColumns: props.styleResizable ?? false,\r\n columnResizeMode: \"expand\",\r\n emptyMessage: props.emptyMessage ?? \"Não há informações disponíveis no momento.\",\r\n header: props.templeteHeader,\r\n footer: props.templateFooter\r\n };\r\n}","import { TableProps } from \"../types\";\r\nimport { DataTableProps, DataTableStateEvent } from \"primereact/datatable\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Define as configurações do modo de ordenação de resultado.\r\n */\r\nexport function tableSort(\r\n props: TableProps<any>\r\n): Partial<DataTableProps<any>> {\r\n\r\n function onSort(event: DataTableStateEvent) {\r\n if (props.onSort) {\r\n props.onSort(event.sortField, event.sortOrder);\r\n }\r\n }\r\n\r\n return {\r\n sortField: props.lazy?.sortField,\r\n sortOrder: props.lazy?.sortOrder ?? null,\r\n onSort: props.lazy !== undefined ? onSort : undefined\r\n };\r\n}","import React from \"react\";\r\nimport { TableProps } from \"../types\";\r\nimport { DataTableBaseProps, DataTableRowToggleEvent } from \"primereact/datatable\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Define as configurações de agrupamento da tabela.\r\n */\r\nexport function tableGroup(\r\n props: TableProps<any>,\r\n expandedRows: any,\r\n setExpandedRows: React.Dispatch<any>\r\n): Partial<DataTableBaseProps<any>> {\r\n return {\r\n groupRowsBy: props.rowGroup,\r\n rowGroupMode: props.rowGroupMode,\r\n rowGroupHeaderTemplate: props.rowGroupHeaderTemplate,\r\n rowGroupFooterTemplate: props.rowGroupFooterTemplate,\r\n expandableRowGroups: props.rowExpandable ?? false,\r\n expandedRows: expandedRows,\r\n onRowToggle(event: DataTableRowToggleEvent) {\r\n setExpandedRows(event.data);\r\n }\r\n };\r\n}","import { TableProps } from \"../types\";\r\nimport { DataTableProps, DataTableSelectionSingleChangeEvent } from \"primereact/datatable\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Define as configurações do modo de seleção de dados.\r\n */\r\nexport function tableSelection(\r\n props: TableProps<any>\r\n): Partial<DataTableProps<any>> {\r\n\r\n function onSelect(e: DataTableSelectionSingleChangeEvent<any>) {\r\n if (props.onSelection) {\r\n props.onSelection(e.value);\r\n }\r\n }\r\n\r\n return {\r\n metaKeySelection: props.onSelection !== undefined,\r\n selection: props.selection,\r\n selectionMode: props.onSelection !== undefined ? (props.selectionMode as any ?? \"single\") : undefined,\r\n onSelectionChange: onSelect,\r\n };\r\n}","import React from \"react\";\r\nimport { TableProps } from \"../types\";\r\nimport { PaginatorChangeEvent } from \"primereact/paginator\";\r\nimport { DataTableBaseProps, DataTableStateEvent } from \"primereact/datatable\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Define as configurações do modo de paginação de resultado.\r\n */\r\nexport function tablePagination(\r\n props: TableProps<any>\r\n): Partial<DataTableBaseProps<any>> {\r\n\r\n function onPage(event: DataTableStateEvent) {\r\n let paginationPage = event.first / (props.paginatorRow ?? 10);\r\n if (props.onPaginator) {\r\n props.onPaginator(paginationPage + 1, event.rows);\r\n }\r\n }\r\n\r\n return {\r\n paginator: props.paginator ?? false,\r\n paginatorClassName: \"pagination\",\r\n totalRecords: props?.lazy?.paginationTotal ?? undefined,\r\n first: props?.lazy?.paginationPage === undefined ? 0 : ((props?.lazy?.paginationPage ?? 0) - 1) * (props.paginatorRow ?? 10),\r\n rows: props.paginator ? (props.paginatorRow ?? 10) : undefined,\r\n rowsPerPageOptions: [5, 10, 15, 20, 50, 100],\r\n paginatorTemplate: {\r\n layout: \"RowsPerPageDropdown FirstPageLink PageLinks LastPageLink CurrentPageReport\",\r\n CurrentPageReport: options => {\r\n return (\r\n <p className=\"text-secondary mx-2\"\r\n style={{ fontSize: \".9em\" }}>Total de registros: {options.totalRecords}</p>\r\n );\r\n },\r\n RowsPerPageDropdown: options => {\r\n return (\r\n <select className=\"form-select form-select-sm mx-2\"\r\n style={{ maxWidth: \"60px\" }}\r\n value={options.value}\r\n onChange={(e) => {\r\n const event = {} as PaginatorChangeEvent;\r\n // @ts-ignore\r\n event.value = Number(e.target.value);\r\n options.onChange(event);\r\n }}>\r\n {options.options.map(obj => <option key={obj.value}\r\n value={obj.value}>{obj.label}</option>)}\r\n </select>\r\n );\r\n }\r\n },\r\n paginatorRight: props.templatePaginationRight,\r\n paginatorLeft: props.templatePaginationLeft,\r\n onPage: props.lazy !== undefined ? onPage : undefined,\r\n };\r\n}","import { TableProps } from \"./types\";\r\nimport { classNames } from \"primereact/utils\";\r\nimport { ColumnPassThroughOptions } from \"primereact/column\";\r\nimport { DataTablePassThroughOptions } from \"primereact/datatable\";\r\n\r\n/**\r\n * Realiza a personalização na TABLE\r\n */\r\nexport function bootstrapTableStyle(props: TableProps<any>): DataTablePassThroughOptions {\r\n return {\r\n root: {\r\n className: \"table-responsive\"\r\n },\r\n table: {\r\n className: classNames([\r\n \"table\",\r\n props.styleHover ? \"table-hover\" : \"\",\r\n props.styleStriped ? \"table-striped\" : \"\",\r\n props.styleSize === \"small\" ? \"table-sm\" : \"\",\r\n props.styleType === \"bordered\" ? \"table-bordered\" : props.styleType === \"borderless\" ? \"table-borderless\" : \"\",\r\n ]),\r\n },\r\n header: {\r\n className: \"table-header\",\r\n },\r\n footer: {\r\n className: \"table-footer\"\r\n },\r\n paginator: {\r\n root: {\r\n className: classNames([\r\n \"p-0 d-flex mb-1 mt-2\",\r\n `justify-content-${props.paginatorAlign ?? \"center\"}`\r\n ]),\r\n style: { borderTop: \"none\" }\r\n },\r\n firstPageButton: {\r\n style: { borderTopLeftRadius: \"3px\", borderBottomLeftRadius: \"3px\" }\r\n },\r\n lastPageButton: {\r\n style: { borderTopRightRadius: \"3px\", borderBottomRightRadius: \"3px\" }\r\n }\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * Realiza a personalização na COLUNA da tabela\r\n */\r\nexport function bootstrapColumnStyle(): ColumnPassThroughOptions {\r\n\r\n return {\r\n sort: {\r\n className: \"table-sort\"\r\n },\r\n headerCell: (options) => {\r\n return {\r\n className: classNames([\r\n options?.context.sorted ? \"table-sort-active\" : \"\",\r\n ])\r\n };\r\n },\r\n bodyCell: {\r\n className: \"table-resizable\"\r\n },\r\n };\r\n}","import { Box } from \"../box\";\r\nimport { TableProps } from \"./types\";\r\nimport React, { useState } from \"react\";\r\nimport { tableCore } from \"./core/core\";\r\nimport { tableSort } from \"./core/sort\";\r\nimport { tableGroup } from \"./core/group\";\r\nimport { Column } from \"primereact/column\";\r\nimport { DataTable } from \"primereact/datatable\";\r\nimport { tableSelection } from \"./core/selection\";\r\nimport { tablePagination } from \"./core/pagination\";\r\nimport { bootstrapColumnStyle, bootstrapTableStyle } from \"./styled\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Um componente versátil que pode ser utilizado para criar tabela de dados.\r\n * Permite personalizar o estilo e o conteúdo através de propriedades.\r\n */\r\nexport function Table<T = any>(props: TableProps<T>) {\r\n const [expandedRows, setExpandedRows] = useState([]);\r\n\r\n /*\r\n |------------------------------------------\r\n | render() - Renderização do componente\r\n |------------------------------------------\r\n */\r\n return (\r\n <Box className=\"p-0\"\r\n size={props.size ?? \"100\"}>\r\n {/*@ts-ignore*/}\r\n <DataTable<any>\r\n pt={{ ...bootstrapTableStyle(props) }}\r\n tableClassName={props.className}\r\n {...tableCore(props)}\r\n {...tableSort(props)}\r\n {...tableSelection(props)}\r\n {...tablePagination(props)}\r\n {...tableGroup(props, expandedRows, setExpandedRows)}>\r\n {props.selectionMode === \"checkbox\"\r\n && <Column align=\"center\"\r\n headerStyle={{ width: \"2.5rem\" }}\r\n pt={{ ...bootstrapColumnStyle() }}\r\n selectionMode=\"multiple\"/>}\r\n {props.column.map(obj => {\r\n return (\r\n <Column\r\n unstyled\r\n align={obj.align}\r\n alignFrozen={obj.frozen ? \"right\" : undefined}\r\n alignHeader={obj.alignHeader}\r\n body={obj.body}\r\n field={obj.id}\r\n frozen={obj.frozen !== undefined}\r\n header={obj.header}\r\n key={obj.id}\r\n pt={{ ...bootstrapColumnStyle() }}\r\n sortable={obj.sort ?? false}\r\n style={obj.style}/>\r\n );\r\n })}\r\n </DataTable>\r\n </Box>\r\n );\r\n}"],"names":["Box","children","props","css","size","direction","justify","undefined","Array","isArray","join","align","attr","className","classNames","style","React","createElement","tableCore","value","data","dataKey","lazy","resizableColumns","styleResizable","columnResizeMode","emptyMessage","header","templeteHeader","footer","templateFooter","tableSort","sortField","sortOrder","onSort","event","tableGroup","expandedRows","setExpandedRows","groupRowsBy","rowGroup","rowGroupMode","rowGroupHeaderTemplate","rowGroupFooterTemplate","expandableRowGroups","rowExpandable","onRowToggle","tableSelection","metaKeySelection","onSelection","selection","selectionMode","onSelectionChange","e","tablePagination","paginator","paginatorClassName","totalRecords","paginationTotal","first","paginationPage","paginatorRow","rows","rowsPerPageOptions","paginatorTemplate","layout","CurrentPageReport","options","fontSize","RowsPerPageDropdown","maxWidth","onChange","Number","target","map","obj","key","label","paginatorRight","templatePaginationRight","paginatorLeft","templatePaginationLeft","onPage","onPaginator","bootstrapTableStyle","root","table","styleHover","styleStriped","styleSize","styleType","paginatorAlign","borderTop","firstPageButton","borderTopLeftRadius","borderBottomLeftRadius","lastPageButton","borderTopRightRadius","borderBottomRightRadius","bootstrapColumnStyle","sort","headerCell","context","sorted","bodyCell","useState","DataTable","pt","tableClassName","Column","headerStyle","width","column","unstyled","alignFrozen","frozen","alignHeader","body","field","id","sortable"],"mappings":"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"}
@@ -0,0 +1,256 @@
1
+ import React, { CSSProperties } from 'react';
2
+ import { ColumnHeaderOptions, ColumnBodyOptions } from 'primereact/column';
3
+ import { SortOrder } from 'primereact/datatable';
4
+
5
+ interface TableColumnProps {
6
+
7
+ /**
8
+ * Propriedade de dados de uma linha.
9
+ */
10
+ id: string
11
+
12
+ /**
13
+ * Conteúdo do cabeçalho da tabela.
14
+ */
15
+ header: React.ReactNode | ((options: ColumnHeaderOptions) => React.ReactNode)
16
+
17
+ /**
18
+ * Alinha o conteúdo da coluna, os valores válidos são à esquerda, à direita e ao centro.
19
+ */
20
+ align?: null | "center" | "left" | "right"
21
+
22
+ /**
23
+ * Alinha o header da coluna, os valores válidos são à esquerda, à direita e ao centro.
24
+ */
25
+ alignHeader?: null | "center" | "left" | "right"
26
+
27
+ /**
28
+ * Classe de estilo do componente.
29
+ */
30
+ className?: string
31
+
32
+ /**
33
+ * Define se o campo vai ser ordernado
34
+ */
35
+ sort?: boolean
36
+
37
+ /**
38
+ * Conteúdo do corpo da coluna.
39
+ */
40
+ body?: (data: any, options: ColumnBodyOptions) => React.ReactNode
41
+
42
+ /**
43
+ * Define as propriedades `css` para cada coluna
44
+ */
45
+ style?: CSSProperties
46
+
47
+ /**
48
+ * Define se coluna vai ser congelada e qual posição
49
+ */
50
+ frozen?: boolean
51
+ }
52
+
53
+ interface TableSortProps {
54
+
55
+ /**
56
+ * Método para realizar ordernação manual
57
+ */
58
+ onSort?(field: string, order: SortOrder): void
59
+ }
60
+
61
+ interface TableGroupProps {
62
+ /**
63
+ * Define a representação do objeto de agrupamento
64
+ */
65
+ rowGroup?: string
66
+
67
+ /**
68
+ * Define o tipo de agrupamento da tabela
69
+ */
70
+ rowGroupMode?: "subheader" | "rowgroup"
71
+
72
+ /**
73
+ * Define se o agrupamento vai ser expandido ou não
74
+ */
75
+ rowExpandable?: boolean
76
+
77
+ /**
78
+ * Define o template do agrupamento - Header
79
+ */
80
+ rowGroupHeaderTemplate?: any
81
+
82
+ /**
83
+ * Define o template do agrupamento - Footer
84
+ */
85
+ rowGroupFooterTemplate?: any
86
+ }
87
+
88
+ /**
89
+ * Define as tipagens `default` de todos os componentes do pacote
90
+ */
91
+ interface ApiComponentProps {
92
+
93
+ /**
94
+ * Adiciona no atributo `class` do componente o valor atribuido nessa propriedade
95
+ */
96
+ className?: string
97
+
98
+ /**
99
+ * Define o tamanho da box do componente de acordo com o valores abaixo
100
+ */
101
+ size?: "5" | "10" | "12-5" | "15" | "17-5" | "20" | "22-5" | "25" | "30" | "33" | "35" | "40" | "45" | "50" | "55" | "60" | "65" | "70" | "75" | "80" | "85" | "90" | "95" | "100"
102
+
103
+ /**
104
+ * Define as propriedades css do component `style`
105
+ */
106
+ css?: CSSProperties
107
+ }
108
+
109
+ interface TableStyleProps {
110
+ /**
111
+ * Define estilo da tabela como listrada
112
+ */
113
+ styleStriped?: boolean
114
+
115
+ /**
116
+ * Define estilo da tabela quando passa mouse sobre a linha da tabela
117
+ */
118
+ styleHover?: boolean
119
+
120
+ /**
121
+ * Define se as coluna das tabela por ser redimensionadas
122
+ */
123
+ styleResizable?: boolean
124
+
125
+ /**
126
+ * Define estilo da tabela com bordar ou sem borda
127
+ */
128
+ styleType?: "bordered" | "borderless"
129
+
130
+ /**
131
+ * Define o tamanho da tabela.
132
+ */
133
+ styleSize?: "small"
134
+ }
135
+
136
+ interface TableTemplateProps {
137
+ /**
138
+ * Conteúdo do cabeçalho personalizado.
139
+ */
140
+ templeteHeader?: React.ReactNode
141
+
142
+ /**
143
+ * Conteúdo do rodapé personalizado.
144
+ */
145
+ templateFooter?: React.ReactNode
146
+
147
+ /**
148
+ * Contéudo personalizado do lado esquerdo do elemento de `paginação`
149
+ */
150
+ templatePaginationLeft?: React.ReactNode
151
+
152
+ /**
153
+ * Contéudo personalizado do lado direiro do elemento de `paginação`
154
+ */
155
+ templatePaginationRight?: React.ReactNode
156
+ }
157
+
158
+ interface TableSelectionProps {
159
+ /**
160
+ * Objeto selecionando dentro da tabela
161
+ */
162
+ selection?: any
163
+
164
+ /**
165
+ * Define qual tipo de seleção
166
+ */
167
+ selectionMode?: "single" | "checkbox"
168
+
169
+ /**
170
+ * Realiza a seleção do element
171
+ */
172
+ onSelection?(value: any): void
173
+ }
174
+
175
+ interface TablePaginationProps {
176
+
177
+ /**
178
+ * Define se tabela vai utilizar paginação de resultado
179
+ */
180
+ paginator?: boolean
181
+
182
+ /**
183
+ * Define o numero de elemento por página
184
+ */
185
+ paginatorRow?: 5 | 10 | 15 | 20 | 25 | 50 | 100
186
+
187
+ /**
188
+ * Define o alinhamento da paginação
189
+ */
190
+ paginatorAlign?: "end" | "center" | "start"
191
+
192
+ /**
193
+ * Método para realizar paginação manual
194
+ */
195
+ onPaginator?(number: number, elements: number): void
196
+ }
197
+
198
+ type TableLazyProps = {
199
+
200
+ /**
201
+ * Define qual campo vem com a ordernação padrão do back-end
202
+ */
203
+ sortField?: string
204
+
205
+ /**
206
+ * Define qual é o tipo de ordenação padrão do back-end
207
+ */
208
+ sortOrder?: SortOrder
209
+
210
+ /**
211
+ * Define qual é paginação inicial
212
+ */
213
+ paginationPage?: number
214
+
215
+ /**
216
+ * Define o número total de registro da tabela
217
+ */
218
+ paginationTotal?: number
219
+ }
220
+
221
+ interface TableProps<T> extends TableStyleProps, TableSelectionProps, TableTemplateProps, TableSortProps, TablePaginationProps, TableGroupProps, ApiComponentProps {
222
+
223
+ /**
224
+ * Uma matriz de objeto que renderiza o cabeçalho
225
+ */
226
+ column: Array<TableColumnProps>
227
+
228
+ /**
229
+ * Uma matriz de objetos a serem exibidos.
230
+ */
231
+ data: Array<T>
232
+
233
+ /**
234
+ * Texto a ser exibido quando não há dados.
235
+ */
236
+ emptyMessage?: string
237
+
238
+ /**
239
+ * Define se a gerenciamento da tabela vai ser manual ou dinamica
240
+ */
241
+ lazy?: TableLazyProps
242
+ }
243
+
244
+ /**
245
+ * Componente - `Table`
246
+ *
247
+ * Um componente versátil que pode ser utilizado para criar tabela de dados.
248
+ * Permite personalizar o estilo e o conteúdo através de propriedades.
249
+ */
250
+ declare function Table<T = any>(props: TableProps<T>): React.JSX.Element;
251
+
252
+ type ITableProps<T = any> = TableProps<T>;
253
+ type ITableColumnProps = TableColumnProps;
254
+ type ITableLazyProps = TableLazyProps;
255
+
256
+ export { type ITableColumnProps, type ITableLazyProps, type ITableProps, Table };
@@ -0,0 +1,2 @@
1
+ import e,{useState as t}from"react";import{classNames as o}from"primereact/utils";import{Column as a}from"primereact/column";import{DataTable as r}from"primereact/datatable";const n=({children:t,...a})=>{const r={size:`box-size-${a.size??"100"}`,direction:`box-direction-${a.direction??"row"}`,justify:void 0===a.justify?"":Array.isArray(a.justify)?a.justify?.join(" "):a.justify,align:void 0===a.align?"":Array.isArray(a.align)?a.align?.join(" "):a.align},n={className:o(["box",a.className??"",r.size,r.direction,r.justify,r.align]),style:a.css};return e.createElement("div",{...n},t)};function i(e){return{value:e.data,dataKey:"id",lazy:void 0!==e.lazy,resizableColumns:e.styleResizable??!1,columnResizeMode:"expand",emptyMessage:e.emptyMessage??"Não há informações disponíveis no momento.",header:e.templeteHeader,footer:e.templateFooter}}function l(e){return{sortField:e.lazy?.sortField,sortOrder:e.lazy?.sortOrder??null,onSort:void 0!==e.lazy?function(t){e.onSort&&e.onSort(t.sortField,t.sortOrder)}:void 0}}function s(e,t,o){return{groupRowsBy:e.rowGroup,rowGroupMode:e.rowGroupMode,rowGroupHeaderTemplate:e.rowGroupHeaderTemplate,rowGroupFooterTemplate:e.rowGroupFooterTemplate,expandableRowGroups:e.rowExpandable??!1,expandedRows:t,onRowToggle(e){o(e.data)}}}function d(e){return{metaKeySelection:void 0!==e.onSelection,selection:e.selection,selectionMode:void 0!==e.onSelection?e.selectionMode??"single":void 0,onSelectionChange:function(t){e.onSelection&&e.onSelection(t.value)}}}function p(t){return{paginator:t.paginator??!1,paginatorClassName:"pagination",totalRecords:t?.lazy?.paginationTotal??void 0,first:void 0===t?.lazy?.paginationPage?0:((t?.lazy?.paginationPage??0)-1)*(t.paginatorRow??10),rows:t.paginator?t.paginatorRow??10:void 0,rowsPerPageOptions:[5,10,15,20,50,100],paginatorTemplate:{layout:"RowsPerPageDropdown FirstPageLink PageLinks LastPageLink CurrentPageReport",CurrentPageReport:t=>e.createElement("p",{className:"text-secondary mx-2",style:{fontSize:".9em"}},"Total de registros: ",t.totalRecords),RowsPerPageDropdown:t=>e.createElement("select",{className:"form-select form-select-sm mx-2",style:{maxWidth:"60px"},value:t.value,onChange:e=>{const o={};o.value=Number(e.target.value),t.onChange(o)}},t.options.map((t=>e.createElement("option",{key:t.value,value:t.value},t.label))))},paginatorRight:t.templatePaginationRight,paginatorLeft:t.templatePaginationLeft,onPage:void 0!==t.lazy?function(e){let o=e.first/(t.paginatorRow??10);t.onPaginator&&t.onPaginator(o+1,e.rows)}:void 0}}function c(e){return{root:{className:"table-responsive"},table:{className:o(["table",e.styleHover?"table-hover":"",e.styleStriped?"table-striped":"","small"===e.styleSize?"table-sm":"","bordered"===e.styleType?"table-bordered":"borderless"===e.styleType?"table-borderless":""])},header:{className:"table-header"},footer:{className:"table-footer"},paginator:{root:{className:o(["p-0 d-flex mb-1 mt-2",`justify-content-${e.paginatorAlign??"center"}`]),style:{borderTop:"none"}},firstPageButton:{style:{borderTopLeftRadius:"3px",borderBottomLeftRadius:"3px"}},lastPageButton:{style:{borderTopRightRadius:"3px",borderBottomRightRadius:"3px"}}}}}function m(){return{sort:{className:"table-sort"},headerCell:e=>({className:o([e?.context.sorted?"table-sort-active":""])}),bodyCell:{className:"table-resizable"}}}function u(o){const[u,g]=t([]);return e.createElement(n,{className:"p-0",size:o.size??"100"},e.createElement(r,{pt:{...c(o)},tableClassName:o.className,...i(o),...l(o),...d(o),...p(o),...s(o,u,g)},"checkbox"===o.selectionMode&&e.createElement(a,{align:"center",headerStyle:{width:"2.5rem"},pt:{...m()},selectionMode:"multiple"}),o.column.map((t=>e.createElement(a,{unstyled:!0,align:t.align,alignFrozen:t.frozen?"right":void 0,alignHeader:t.alignHeader,body:t.body,field:t.id,frozen:void 0!==t.frozen,header:t.header,key:t.id,pt:{...m()},sortable:t.sort??!1,style:t.style})))))}export{u as Table};
2
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../../src/box/box.tsx","../../src/table/core/core.tsx","../../src/table/core/sort.tsx","../../src/table/core/group.tsx","../../src/table/core/selection.tsx","../../src/table/core/pagination.tsx","../../src/table/styled.ts","../../src/table/table.tsx"],"sourcesContent":["import { BoxProps } from \"./types\";\r\nimport React, { HTMLAttributes } from \"react\";\r\nimport { classNames } from \"primereact/utils\";\r\n\r\n/**\r\n * Componente - `Box`\r\n *\r\n * Um componente versátil que pode ser utilizado para criar seções ou caixas em uma página.\r\n * Permite personalizar o estilo e o conteúdo através de propriedades.\r\n *\r\n * Exemplo de uso:\r\n * ```tsx\r\n * <Box align=\"align-items-center\"\r\n * justify=\"justify-content-end\"\r\n * size=\"25\">\r\n * ...conteúdo HTML\r\n * </Box>\r\n * ```\r\n */\r\nexport const Box = ({ children, ...props }: BoxProps) => {\r\n const css = {\r\n size: `box-size-${(props.size ?? \"100\")}`,\r\n direction: `box-direction-${props.direction ?? \"row\"}`,\r\n justify: props.justify === undefined ? \"\" : Array.isArray(props.justify) ? props.justify?.join(\" \") : props.justify,\r\n align: props.align === undefined ? \"\" : Array.isArray(props.align) ? props.align?.join(\" \") : props.align\r\n };\r\n\r\n const attr: HTMLAttributes<\"div\"> & Omit<BoxProps, \"children\"> = {\r\n className: classNames([\r\n \"box\",\r\n props.className ?? \"\",\r\n css.size,\r\n css.direction,\r\n css.justify,\r\n css.align\r\n ]),\r\n style: props.css\r\n };\r\n\r\n return (\r\n <div {...attr as any}>{children}</div>\r\n );\r\n};","import { TableProps } from \"../types\";\r\nimport { DataTableBaseProps } from \"primereact/datatable\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Define as configurações do modo principal da tabela.\r\n */\r\nexport function tableCore(\r\n props: TableProps<any>\r\n): Partial<DataTableBaseProps<any>> {\r\n return {\r\n value: props.data as any,\r\n dataKey: \"id\",\r\n lazy: props.lazy !== undefined,\r\n resizableColumns: props.styleResizable ?? false,\r\n columnResizeMode: \"expand\",\r\n emptyMessage: props.emptyMessage ?? \"Não há informações disponíveis no momento.\",\r\n header: props.templeteHeader,\r\n footer: props.templateFooter\r\n };\r\n}","import { TableProps } from \"../types\";\r\nimport { DataTableProps, DataTableStateEvent } from \"primereact/datatable\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Define as configurações do modo de ordenação de resultado.\r\n */\r\nexport function tableSort(\r\n props: TableProps<any>\r\n): Partial<DataTableProps<any>> {\r\n\r\n function onSort(event: DataTableStateEvent) {\r\n if (props.onSort) {\r\n props.onSort(event.sortField, event.sortOrder);\r\n }\r\n }\r\n\r\n return {\r\n sortField: props.lazy?.sortField,\r\n sortOrder: props.lazy?.sortOrder ?? null,\r\n onSort: props.lazy !== undefined ? onSort : undefined\r\n };\r\n}","import React from \"react\";\r\nimport { TableProps } from \"../types\";\r\nimport { DataTableBaseProps, DataTableRowToggleEvent } from \"primereact/datatable\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Define as configurações de agrupamento da tabela.\r\n */\r\nexport function tableGroup(\r\n props: TableProps<any>,\r\n expandedRows: any,\r\n setExpandedRows: React.Dispatch<any>\r\n): Partial<DataTableBaseProps<any>> {\r\n return {\r\n groupRowsBy: props.rowGroup,\r\n rowGroupMode: props.rowGroupMode,\r\n rowGroupHeaderTemplate: props.rowGroupHeaderTemplate,\r\n rowGroupFooterTemplate: props.rowGroupFooterTemplate,\r\n expandableRowGroups: props.rowExpandable ?? false,\r\n expandedRows: expandedRows,\r\n onRowToggle(event: DataTableRowToggleEvent) {\r\n setExpandedRows(event.data);\r\n }\r\n };\r\n}","import { TableProps } from \"../types\";\r\nimport { DataTableProps, DataTableSelectionSingleChangeEvent } from \"primereact/datatable\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Define as configurações do modo de seleção de dados.\r\n */\r\nexport function tableSelection(\r\n props: TableProps<any>\r\n): Partial<DataTableProps<any>> {\r\n\r\n function onSelect(e: DataTableSelectionSingleChangeEvent<any>) {\r\n if (props.onSelection) {\r\n props.onSelection(e.value);\r\n }\r\n }\r\n\r\n return {\r\n metaKeySelection: props.onSelection !== undefined,\r\n selection: props.selection,\r\n selectionMode: props.onSelection !== undefined ? (props.selectionMode as any ?? \"single\") : undefined,\r\n onSelectionChange: onSelect,\r\n };\r\n}","import React from \"react\";\r\nimport { TableProps } from \"../types\";\r\nimport { PaginatorChangeEvent } from \"primereact/paginator\";\r\nimport { DataTableBaseProps, DataTableStateEvent } from \"primereact/datatable\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Define as configurações do modo de paginação de resultado.\r\n */\r\nexport function tablePagination(\r\n props: TableProps<any>\r\n): Partial<DataTableBaseProps<any>> {\r\n\r\n function onPage(event: DataTableStateEvent) {\r\n let paginationPage = event.first / (props.paginatorRow ?? 10);\r\n if (props.onPaginator) {\r\n props.onPaginator(paginationPage + 1, event.rows);\r\n }\r\n }\r\n\r\n return {\r\n paginator: props.paginator ?? false,\r\n paginatorClassName: \"pagination\",\r\n totalRecords: props?.lazy?.paginationTotal ?? undefined,\r\n first: props?.lazy?.paginationPage === undefined ? 0 : ((props?.lazy?.paginationPage ?? 0) - 1) * (props.paginatorRow ?? 10),\r\n rows: props.paginator ? (props.paginatorRow ?? 10) : undefined,\r\n rowsPerPageOptions: [5, 10, 15, 20, 50, 100],\r\n paginatorTemplate: {\r\n layout: \"RowsPerPageDropdown FirstPageLink PageLinks LastPageLink CurrentPageReport\",\r\n CurrentPageReport: options => {\r\n return (\r\n <p className=\"text-secondary mx-2\"\r\n style={{ fontSize: \".9em\" }}>Total de registros: {options.totalRecords}</p>\r\n );\r\n },\r\n RowsPerPageDropdown: options => {\r\n return (\r\n <select className=\"form-select form-select-sm mx-2\"\r\n style={{ maxWidth: \"60px\" }}\r\n value={options.value}\r\n onChange={(e) => {\r\n const event = {} as PaginatorChangeEvent;\r\n // @ts-ignore\r\n event.value = Number(e.target.value);\r\n options.onChange(event);\r\n }}>\r\n {options.options.map(obj => <option key={obj.value}\r\n value={obj.value}>{obj.label}</option>)}\r\n </select>\r\n );\r\n }\r\n },\r\n paginatorRight: props.templatePaginationRight,\r\n paginatorLeft: props.templatePaginationLeft,\r\n onPage: props.lazy !== undefined ? onPage : undefined,\r\n };\r\n}","import { TableProps } from \"./types\";\r\nimport { classNames } from \"primereact/utils\";\r\nimport { ColumnPassThroughOptions } from \"primereact/column\";\r\nimport { DataTablePassThroughOptions } from \"primereact/datatable\";\r\n\r\n/**\r\n * Realiza a personalização na TABLE\r\n */\r\nexport function bootstrapTableStyle(props: TableProps<any>): DataTablePassThroughOptions {\r\n return {\r\n root: {\r\n className: \"table-responsive\"\r\n },\r\n table: {\r\n className: classNames([\r\n \"table\",\r\n props.styleHover ? \"table-hover\" : \"\",\r\n props.styleStriped ? \"table-striped\" : \"\",\r\n props.styleSize === \"small\" ? \"table-sm\" : \"\",\r\n props.styleType === \"bordered\" ? \"table-bordered\" : props.styleType === \"borderless\" ? \"table-borderless\" : \"\",\r\n ]),\r\n },\r\n header: {\r\n className: \"table-header\",\r\n },\r\n footer: {\r\n className: \"table-footer\"\r\n },\r\n paginator: {\r\n root: {\r\n className: classNames([\r\n \"p-0 d-flex mb-1 mt-2\",\r\n `justify-content-${props.paginatorAlign ?? \"center\"}`\r\n ]),\r\n style: { borderTop: \"none\" }\r\n },\r\n firstPageButton: {\r\n style: { borderTopLeftRadius: \"3px\", borderBottomLeftRadius: \"3px\" }\r\n },\r\n lastPageButton: {\r\n style: { borderTopRightRadius: \"3px\", borderBottomRightRadius: \"3px\" }\r\n }\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * Realiza a personalização na COLUNA da tabela\r\n */\r\nexport function bootstrapColumnStyle(): ColumnPassThroughOptions {\r\n\r\n return {\r\n sort: {\r\n className: \"table-sort\"\r\n },\r\n headerCell: (options) => {\r\n return {\r\n className: classNames([\r\n options?.context.sorted ? \"table-sort-active\" : \"\",\r\n ])\r\n };\r\n },\r\n bodyCell: {\r\n className: \"table-resizable\"\r\n },\r\n };\r\n}","import { Box } from \"../box\";\r\nimport { TableProps } from \"./types\";\r\nimport React, { useState } from \"react\";\r\nimport { tableCore } from \"./core/core\";\r\nimport { tableSort } from \"./core/sort\";\r\nimport { tableGroup } from \"./core/group\";\r\nimport { Column } from \"primereact/column\";\r\nimport { DataTable } from \"primereact/datatable\";\r\nimport { tableSelection } from \"./core/selection\";\r\nimport { tablePagination } from \"./core/pagination\";\r\nimport { bootstrapColumnStyle, bootstrapTableStyle } from \"./styled\";\r\n\r\n/**\r\n * Componente - `Table`\r\n *\r\n * Um componente versátil que pode ser utilizado para criar tabela de dados.\r\n * Permite personalizar o estilo e o conteúdo através de propriedades.\r\n */\r\nexport function Table<T = any>(props: TableProps<T>) {\r\n const [expandedRows, setExpandedRows] = useState([]);\r\n\r\n /*\r\n |------------------------------------------\r\n | render() - Renderização do componente\r\n |------------------------------------------\r\n */\r\n return (\r\n <Box className=\"p-0\"\r\n size={props.size ?? \"100\"}>\r\n {/*@ts-ignore*/}\r\n <DataTable<any>\r\n pt={{ ...bootstrapTableStyle(props) }}\r\n tableClassName={props.className}\r\n {...tableCore(props)}\r\n {...tableSort(props)}\r\n {...tableSelection(props)}\r\n {...tablePagination(props)}\r\n {...tableGroup(props, expandedRows, setExpandedRows)}>\r\n {props.selectionMode === \"checkbox\"\r\n && <Column align=\"center\"\r\n headerStyle={{ width: \"2.5rem\" }}\r\n pt={{ ...bootstrapColumnStyle() }}\r\n selectionMode=\"multiple\"/>}\r\n {props.column.map(obj => {\r\n return (\r\n <Column\r\n unstyled\r\n align={obj.align}\r\n alignFrozen={obj.frozen ? \"right\" : undefined}\r\n alignHeader={obj.alignHeader}\r\n body={obj.body}\r\n field={obj.id}\r\n frozen={obj.frozen !== undefined}\r\n header={obj.header}\r\n key={obj.id}\r\n pt={{ ...bootstrapColumnStyle() }}\r\n sortable={obj.sort ?? false}\r\n style={obj.style}/>\r\n );\r\n })}\r\n </DataTable>\r\n </Box>\r\n );\r\n}"],"names":["Box","children","props","css","size","direction","justify","undefined","Array","isArray","join","align","attr","className","classNames","style","React","createElement","tableCore","value","data","dataKey","lazy","resizableColumns","styleResizable","columnResizeMode","emptyMessage","header","templeteHeader","footer","templateFooter","tableSort","sortField","sortOrder","onSort","event","tableGroup","expandedRows","setExpandedRows","groupRowsBy","rowGroup","rowGroupMode","rowGroupHeaderTemplate","rowGroupFooterTemplate","expandableRowGroups","rowExpandable","onRowToggle","tableSelection","metaKeySelection","onSelection","selection","selectionMode","onSelectionChange","e","tablePagination","paginator","paginatorClassName","totalRecords","paginationTotal","first","paginationPage","paginatorRow","rows","rowsPerPageOptions","paginatorTemplate","layout","CurrentPageReport","options","fontSize","RowsPerPageDropdown","maxWidth","onChange","Number","target","map","obj","key","label","paginatorRight","templatePaginationRight","paginatorLeft","templatePaginationLeft","onPage","onPaginator","bootstrapTableStyle","root","table","styleHover","styleStriped","styleSize","styleType","paginatorAlign","borderTop","firstPageButton","borderTopLeftRadius","borderBottomLeftRadius","lastPageButton","borderTopRightRadius","borderBottomRightRadius","bootstrapColumnStyle","sort","headerCell","context","sorted","bodyCell","Table","useState","DataTable","pt","tableClassName","Column","headerStyle","width","column","unstyled","alignFrozen","frozen","alignHeader","body","field","id","sortable"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ {
2
+ "main": "./index.cjs.js",
3
+ "module": "./index.esm.js",
4
+ "types": "./index.d.ts"
5
+ }