karsten-design-system 1.0.89 → 1.0.90
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.
|
@@ -7,7 +7,7 @@ import { Paginator } from './paginator.js';
|
|
|
7
7
|
import { Button } from './button.js';
|
|
8
8
|
import { Input } from './input.js';
|
|
9
9
|
|
|
10
|
-
function CustomTable({ columns, data, totalRecords, actions = [], isOrdered = true, actionsHeaderClassName = '', actionsColumnsClassName = '', rowsPerPage = 10, onPageChange, isPaginated = true, isLoading = false, onFilterChange, }) {
|
|
10
|
+
function CustomTable({ columns, data, totalRecords, actions = [], isOrdered = true, actionsHeaderClassName = '', actionsColumnsClassName = '', rowsPerPage = 10, onPageChange, isPaginated = true, isLoading = false, onFilterChange, onSortChange, }) {
|
|
11
11
|
const [sortDirection, setSortDirection] = useState('ASC');
|
|
12
12
|
const [sortedData, setSortedData] = useState(data);
|
|
13
13
|
const [currentPage, setCurrentPage] = useState(1);
|
|
@@ -16,7 +16,12 @@ function CustomTable({ columns, data, totalRecords, actions = [], isOrdered = tr
|
|
|
16
16
|
const handleSort = (dataIndex) => {
|
|
17
17
|
const newDirection = sortDirection === 'ASC' ? 'DESC' : 'ASC';
|
|
18
18
|
setSortDirection(newDirection);
|
|
19
|
-
|
|
19
|
+
if (onSortChange) {
|
|
20
|
+
onSortChange(dataIndex, newDirection);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
setSortedData(sortData(data, dataIndex, newDirection));
|
|
24
|
+
}
|
|
20
25
|
};
|
|
21
26
|
useEffect(() => {
|
|
22
27
|
setSortedData(data);
|
|
@@ -32,7 +37,15 @@ function CustomTable({ columns, data, totalRecords, actions = [], isOrdered = tr
|
|
|
32
37
|
onFilterChange(filters);
|
|
33
38
|
}
|
|
34
39
|
};
|
|
35
|
-
return (jsxRuntimeExports.jsxs("div", { children: [jsxRuntimeExports.jsxs("table", { className: "w-100", children: [jsxRuntimeExports.jsx("thead", { children: jsxRuntimeExports.jsxs("tr", { className: "bg-gray-100", children: [columns.map((column) => (jsxRuntimeExports.jsxs("th", { className: "bg-primary first:rounded-ss-lg font-bold text-background text-sm uppercase p-3 text-left", children: [jsxRuntimeExports.jsx("div", { children: openFilter === column.dataIndex && (jsxRuntimeExports.jsxs("div", { className: "absolute mt-6 bg-background border rounded-md shadow-md p-4 z-10 w-60", children: [jsxRuntimeExports.jsxs("div", { className: "space-y-4 text-primary", children: [jsxRuntimeExports.jsxs("h1", { className: "text-primary text-sm", children: ["Filtro por ", column.label] }), jsxRuntimeExports.jsx("div", { className: "w-full", children: jsxRuntimeExports.jsx(Input, {
|
|
40
|
+
return (jsxRuntimeExports.jsxs("div", { children: [jsxRuntimeExports.jsxs("table", { className: "w-100", children: [jsxRuntimeExports.jsx("thead", { children: jsxRuntimeExports.jsxs("tr", { className: "bg-gray-100", children: [columns.map((column) => (jsxRuntimeExports.jsxs("th", { className: "bg-primary first:rounded-ss-lg font-bold text-background text-sm uppercase p-3 text-left", children: [jsxRuntimeExports.jsx("div", { children: openFilter === column.dataIndex && (jsxRuntimeExports.jsxs("div", { className: "absolute mt-6 bg-background border rounded-md shadow-md p-4 z-10 w-60", children: [jsxRuntimeExports.jsxs("div", { className: "space-y-4 text-primary", children: [jsxRuntimeExports.jsxs("h1", { className: "text-primary text-sm", children: ["Filtro por ", column.label] }), jsxRuntimeExports.jsx("div", { className: "w-full", children: jsxRuntimeExports.jsx(Input, { label: "Filtrar", value: filters[column.dataIndex] || "", onChange: (e) => setFilters((prev) => ({ ...prev, [column.dataIndex]: e })) }) })] }), jsxRuntimeExports.jsxs("div", { className: "flex justify-between mt-4", children: [jsxRuntimeExports.jsx(Button, { variant: "outline", onClick: () => {
|
|
41
|
+
const updatedFilters = { ...filters };
|
|
42
|
+
delete updatedFilters[column.dataIndex];
|
|
43
|
+
setFilters(updatedFilters);
|
|
44
|
+
setOpenFilter(null);
|
|
45
|
+
if (onFilterChange) {
|
|
46
|
+
onFilterChange(updatedFilters);
|
|
47
|
+
}
|
|
48
|
+
}, label: "Limpar", width: "10", size: "small" }), jsxRuntimeExports.jsx(Button, { variant: "primary", onClick: () => handleFilter(column.dataIndex), label: "Aplicar", width: "10", size: "small" })] })] })) }), column.label, isOrdered && (jsxRuntimeExports.jsx("i", { className: "pi pi-sort-alt pl-2 text-xs cursor-pointer", onClick: () => handleSort(column.dataIndex) })), column.filterable && (jsxRuntimeExports.jsx("i", { className: clsx("pl-2 text-xs cursor-pointer", filters[column.dataIndex] ? 'pi pi-filter-slash' : 'pi pi-filter'), onClick: () => setOpenFilter((prev) => prev === column.dataIndex ? null : column.dataIndex) }))] }, String(column.dataIndex)))), actions.length > 0 && (jsxRuntimeExports.jsx("th", { className: clsx('bg-primary rounded-se-lg font-bold text-background text-sm uppercase p-3 text-right pr-4', actionsHeaderClassName), children: "A\u00C7\u00D5ES" }))] }) }), jsxRuntimeExports.jsx("tbody", { children: isLoading ? (jsxRuntimeExports.jsx("tr", { children: jsxRuntimeExports.jsx("td", { colSpan: columns.length + (actions.length > 0 ? 1 : 0), className: "p-6 text-center bg-gray-50", children: jsxRuntimeExports.jsx("div", { className: "py-2 px-4 flex justify-center items-center gap-2", children: jsxRuntimeExports.jsx(Spinner, { size: "lg" }) }) }) })) : sortedData.length > 0 ? (sortedData.map((row, index) => (jsxRuntimeExports.jsxs("tr", { className: clsx(index % 2 === 0 ? 'bg-stoneBackground' : 'bg-background', 'text-primary text-base'), children: [columns.map((column) => {
|
|
36
49
|
const value = row[column.dataIndex];
|
|
37
50
|
return (jsxRuntimeExports.jsx("td", { className: clsx('p-3 text-sm text-left', typeof column.style === 'function' ? column.style(value, row) : column.style), children: column.render ? column.render(value, row) : String(value) }, String(column.dataIndex)));
|
|
38
51
|
}), actions.length > 0 && (jsxRuntimeExports.jsx("td", { className: clsx('text-sm text-right flex flex-row justify-end p-3 gap-2', actionsColumnsClassName), children: actions.map((action, idx) => (jsxRuntimeExports.jsx("span", { className: clsx('cursor-pointer', action.disabled && 'opacity-50 pointer-events-none cursor-not-allowed'), onClick: () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customTable.js","sources":["../../../../src/stories/components/customTable.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"customTable.js","sources":["../../../../src/stories/components/customTable.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SortDirection } from "../../types";
|
|
1
2
|
export type CustomColumn<T> = {
|
|
2
3
|
label: string;
|
|
3
4
|
dataIndex: keyof T;
|
|
@@ -24,5 +25,6 @@ export type CustomTableProps<T> = {
|
|
|
24
25
|
isPaginated?: boolean;
|
|
25
26
|
isLoading?: boolean;
|
|
26
27
|
onFilterChange?: (filters: Record<string, string>) => void;
|
|
28
|
+
onSortChange?: (dataIndex: keyof T, direction: SortDirection) => void;
|
|
27
29
|
};
|
|
28
|
-
export declare function CustomTable<T extends Record<string, any>>({ columns, data, totalRecords, actions, isOrdered, actionsHeaderClassName, actionsColumnsClassName, rowsPerPage, onPageChange, isPaginated, isLoading, onFilterChange, }: CustomTableProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
export declare function CustomTable<T extends Record<string, any>>({ columns, data, totalRecords, actions, isOrdered, actionsHeaderClassName, actionsColumnsClassName, rowsPerPage, onPageChange, isPaginated, isLoading, onFilterChange, onSortChange, }: CustomTableProps<T>): import("react/jsx-runtime").JSX.Element;
|