venice-ui 3.0.43 → 3.0.45
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.
|
@@ -61,7 +61,8 @@ const Filters = ({ theme, themeVariant = 'default', size = 'md', labels = {
|
|
|
61
61
|
const resolvedTheme = resolvedThemeData.resolvedTheme;
|
|
62
62
|
const { componentsConfig } = resolvedThemeData;
|
|
63
63
|
const filterConfig = componentsConfig.filters;
|
|
64
|
-
console.log('
|
|
64
|
+
console.log('--------');
|
|
65
|
+
console.log('filter fullElements', fullElements);
|
|
65
66
|
// const normalizeDateValue = useCallback(
|
|
66
67
|
// (rawValue: any): number | undefined => {
|
|
67
68
|
// if (rawValue === undefined || rawValue === null || rawValue === '') {
|
|
@@ -77,7 +78,12 @@ const Filters = ({ theme, themeVariant = 'default', size = 'md', labels = {
|
|
|
77
78
|
// },
|
|
78
79
|
// [],
|
|
79
80
|
// )
|
|
80
|
-
const [source,
|
|
81
|
+
const [source, _setSource] = (0, react_1.useState)(fullElements || []);
|
|
82
|
+
const sourceRef = (0, react_1.useRef)(source);
|
|
83
|
+
const setSource = (data) => {
|
|
84
|
+
sourceRef.current = data;
|
|
85
|
+
_setSource(data);
|
|
86
|
+
};
|
|
81
87
|
(0, react_1.useEffect)(() => {
|
|
82
88
|
setSource(fullElements || []);
|
|
83
89
|
}, [fullElements]);
|
|
@@ -141,7 +147,7 @@ const Filters = ({ theme, themeVariant = 'default', size = 'md', labels = {
|
|
|
141
147
|
collapsible: true,
|
|
142
148
|
};
|
|
143
149
|
}
|
|
144
|
-
if (type === 'select') {
|
|
150
|
+
if (type === 'select' && h.name === 'joint_name') {
|
|
145
151
|
console.log('scope', values);
|
|
146
152
|
}
|
|
147
153
|
return {
|
|
@@ -360,13 +366,7 @@ const Filters = ({ theme, themeVariant = 'default', size = 'md', labels = {
|
|
|
360
366
|
handleSubmitFilters &&
|
|
361
367
|
handleSubmitFilters((source && source.length ? source : elements) || []);
|
|
362
368
|
}
|
|
363
|
-
}, [
|
|
364
|
-
externalClearSignal,
|
|
365
|
-
clearAll,
|
|
366
|
-
handleSubmitFilters,
|
|
367
|
-
source,
|
|
368
|
-
elements,
|
|
369
|
-
]);
|
|
369
|
+
}, [externalClearSignal, clearAll, handleSubmitFilters, source, elements]);
|
|
370
370
|
const mapListItems = (0, react_1.useCallback)((filterName, allowValues) => {
|
|
371
371
|
const sel = (activeFilters[filterName]?.value || []).map(String);
|
|
372
372
|
return (allowValues || []).map((v) => ({
|
|
@@ -55,67 +55,55 @@ const Table = ({ theme, themeVariant = 'default', headers, elements, hover = tru
|
|
|
55
55
|
const resolvedTheme = resolvedThemeData.resolvedTheme;
|
|
56
56
|
const { componentsConfig } = resolvedThemeData;
|
|
57
57
|
const tableConfig = componentsConfig.table;
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
if (!initialElementsRef.current &&
|
|
61
|
-
Array.isArray(elements) &&
|
|
62
|
-
elements.length > 0) {
|
|
63
|
-
initialElementsRef.current = elements.slice();
|
|
64
|
-
}
|
|
65
|
-
setTableProps((prev) => ({
|
|
66
|
-
...prev,
|
|
67
|
-
elements: Array.isArray(elements) ? elements : [],
|
|
68
|
-
}));
|
|
69
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
70
|
-
}, [elements]);
|
|
71
|
-
const checkHeaders = () => {
|
|
72
|
-
const tableHeaders = [...headers];
|
|
58
|
+
const tableHeaders = (0, react_1.useMemo)(() => {
|
|
59
|
+
const nextHeaders = [...headers];
|
|
73
60
|
if (moreActions.length > 0) {
|
|
74
|
-
|
|
61
|
+
nextHeaders.push({
|
|
75
62
|
name: 'option',
|
|
76
63
|
valueSource: 'empty',
|
|
77
64
|
action: true,
|
|
78
65
|
size: 'sm',
|
|
79
66
|
});
|
|
80
67
|
}
|
|
81
|
-
return
|
|
82
|
-
};
|
|
68
|
+
return nextHeaders;
|
|
69
|
+
}, [headers, moreActions]);
|
|
70
|
+
const fullElements = (0, react_1.useMemo)(() => {
|
|
71
|
+
return Array.isArray(elements) ? elements : [];
|
|
72
|
+
}, [elements]);
|
|
83
73
|
const [tableProps, setTableProps] = (0, react_1.useState)({
|
|
84
|
-
elements:
|
|
85
|
-
sort
|
|
86
|
-
headers:
|
|
74
|
+
elements: fullElements,
|
|
75
|
+
sort,
|
|
76
|
+
headers: tableHeaders,
|
|
87
77
|
});
|
|
88
78
|
(0, react_1.useEffect)(() => {
|
|
89
|
-
setTableProps({
|
|
90
|
-
...
|
|
91
|
-
elements:
|
|
92
|
-
|
|
93
|
-
|
|
79
|
+
setTableProps((prev) => ({
|
|
80
|
+
...prev,
|
|
81
|
+
elements: fullElements,
|
|
82
|
+
headers: tableHeaders,
|
|
83
|
+
}));
|
|
84
|
+
}, [fullElements, tableHeaders]);
|
|
94
85
|
const [selectedRow, setSelectedRow] = (0, react_1.useState)('');
|
|
86
|
+
const [currentPage, setCurrentPage] = (0, react_1.useState)(1);
|
|
87
|
+
const [currentPageSize, setCurrentPageSize] = (0, react_1.useState)(pageSize || 10);
|
|
88
|
+
const [noResultsMessage, setNoResultsMessage] = (0, react_1.useState)(null);
|
|
89
|
+
const [filtersClearSignal, setFiltersClearSignal] = (0, react_1.useState)(0);
|
|
95
90
|
const handleRowClick = (id) => {
|
|
96
91
|
if (selectable) {
|
|
97
92
|
setSelectedRow(id);
|
|
98
93
|
}
|
|
99
|
-
onRowClick
|
|
94
|
+
onRowClick?.(id);
|
|
100
95
|
};
|
|
101
96
|
const handleHeaderCellClick = (targetValue, order) => {
|
|
102
|
-
if (sortable) {
|
|
103
|
-
|
|
104
|
-
setTableProps({
|
|
105
|
-
...tableProps,
|
|
106
|
-
elements: (0, tableHelper_1.applySort)(newSort, tableProps.elements),
|
|
107
|
-
sort: newSort,
|
|
108
|
-
});
|
|
97
|
+
if (!sortable) {
|
|
98
|
+
return;
|
|
109
99
|
}
|
|
100
|
+
const newSort = (0, tableHelper_1.setSortParams)(targetValue, order, tableProps.sort);
|
|
101
|
+
setTableProps((prev) => ({
|
|
102
|
+
...prev,
|
|
103
|
+
elements: (0, tableHelper_1.applySort)(newSort, prev.elements),
|
|
104
|
+
sort: newSort,
|
|
105
|
+
}));
|
|
110
106
|
};
|
|
111
|
-
const [currentPage, setCurrentPage] = (0, react_1.useState)(1);
|
|
112
|
-
const [currentPageSize, setCurrentPageSize] = (0, react_1.useState)(pageSize || 10);
|
|
113
|
-
const totalPages = Math.ceil(tableProps.elements.length / currentPageSize);
|
|
114
|
-
const paginatedElements = tableProps.elements.slice((currentPage - 1) * currentPageSize, currentPage * currentPageSize);
|
|
115
|
-
(0, react_1.useEffect)(() => {
|
|
116
|
-
setCurrentPage(1);
|
|
117
|
-
}, [elements, currentPageSize]);
|
|
118
|
-
const [noResultsMessage, setNoResultsMessage] = (0, react_1.useState)(null);
|
|
119
107
|
const handleApplyFilters = (0, react_1.useCallback)((filteredElements) => {
|
|
120
108
|
setTableProps((prev) => ({
|
|
121
109
|
...prev,
|
|
@@ -125,22 +113,21 @@ const Table = ({ theme, themeVariant = 'default', headers, elements, hover = tru
|
|
|
125
113
|
setNoResultsMessage(filteredElements && filteredElements.length === 0
|
|
126
114
|
? config_2.wordbook.table.filterEmptyState
|
|
127
115
|
: null);
|
|
128
|
-
}, [
|
|
129
|
-
const [filtersClearSignal, setFiltersClearSignal] = (0, react_1.useState)(0);
|
|
116
|
+
}, []);
|
|
130
117
|
const handleClearFilters = (0, react_1.useCallback)(() => {
|
|
131
118
|
setFiltersClearSignal((s) => s + 1);
|
|
132
|
-
const full = initialElementsRef.current && initialElementsRef.current.length > 0
|
|
133
|
-
? initialElementsRef.current
|
|
134
|
-
: Array.isArray(elements)
|
|
135
|
-
? elements
|
|
136
|
-
: [];
|
|
137
119
|
setTableProps((prev) => ({
|
|
138
120
|
...prev,
|
|
139
|
-
elements:
|
|
121
|
+
elements: fullElements.slice(),
|
|
140
122
|
}));
|
|
141
123
|
setCurrentPage(1);
|
|
142
124
|
setNoResultsMessage(null);
|
|
143
|
-
}, [
|
|
125
|
+
}, [fullElements]);
|
|
126
|
+
(0, react_1.useEffect)(() => {
|
|
127
|
+
setCurrentPage(1);
|
|
128
|
+
}, [fullElements, currentPageSize]);
|
|
129
|
+
const totalPages = Math.ceil(tableProps.elements.length / currentPageSize);
|
|
130
|
+
const paginatedElements = tableProps.elements.slice((currentPage - 1) * currentPageSize, currentPage * currentPageSize);
|
|
144
131
|
const tableElements = (0, react_1.useMemo)(() => {
|
|
145
132
|
if (pagination) {
|
|
146
133
|
return paginatedElements;
|
|
@@ -153,26 +140,16 @@ const Table = ({ theme, themeVariant = 'default', headers, elements, hover = tru
|
|
|
153
140
|
(filtrable || pagination) && (react_1.default.createElement(Table_styles_1.TableHeader, { theme: resolvedTheme, config: tableConfig, right: pagination && !filtrable },
|
|
154
141
|
react_1.default.createElement(react_1.default.Fragment, null,
|
|
155
142
|
filtrable && (react_1.default.createElement(Table_styles_1.HeaderSection, null,
|
|
156
|
-
react_1.default.createElement(Filters_1.Filters, { labels: filterLabels, headers: headers, elements:
|
|
157
|
-
initialElementsRef.current.length > 0
|
|
158
|
-
? initialElementsRef.current
|
|
159
|
-
: elements, fullElements: initialElementsRef.current &&
|
|
160
|
-
initialElementsRef.current.length > 0
|
|
161
|
-
? initialElementsRef.current
|
|
162
|
-
: elements, handleSubmitFilters: handleApplyFilters, externalClearSignal: filtersClearSignal, onClear: handleClearFilters, calendarLabels: calendarLabels, calendarLocaleLabels: calendarLocaleLabels }))),
|
|
143
|
+
react_1.default.createElement(Filters_1.Filters, { labels: filterLabels, headers: headers, elements: fullElements, fullElements: fullElements, handleSubmitFilters: handleApplyFilters, externalClearSignal: filtersClearSignal, onClear: handleClearFilters, calendarLabels: calendarLabels, calendarLocaleLabels: calendarLocaleLabels }))),
|
|
163
144
|
pagination && (react_1.default.createElement(Table_styles_1.HeaderSection, { right: true },
|
|
164
145
|
react_1.default.createElement(Pagination_1.Pagination, { currentPage: currentPage, totalPages: totalPages, pageSize: currentPageSize, onPageChange: setCurrentPage, onPageSizeChange: setCurrentPageSize, label: paginationLabel?.label, availableValues: paginationCounters, zIndex: paginationZIndex })))))),
|
|
165
146
|
react_1.default.createElement(Table_styles_1.TableContentWrapper, { componentHeight: tableHeight },
|
|
166
147
|
react_1.default.createElement(Table_styles_1.TableContent, { theme: resolvedTheme, config: tableConfig, cellPadding: "0", cellSpacing: "0" },
|
|
167
148
|
react_1.default.createElement(Table_styles_1.TableHead, null,
|
|
168
149
|
react_1.default.createElement(Table_styles_1.TableHeaderRow, { theme: resolvedTheme, config: tableConfig }, tableProps.headers.map((header) => (react_1.default.createElement(HeaderCell_1.HeaderCell, { key: `header_${header.name}`, header: header, sortable: sortable, handleSort: handleHeaderCellClick, sort: tableProps.sort, size: header.size || 'md' }))))),
|
|
169
|
-
react_1.default.createElement(Table_styles_1.TableBody, null, tableElements.map((item) => {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
: undefined }, tableProps.headers.map((header, index) => {
|
|
173
|
-
return (react_1.default.createElement(Cell_1.Cell, { key: `cell_${header.name}_${item.id}`, header: header, moreActions: moreActions, item: item, theme: theme, selected: item.marked && index === 0, isDisabled: item.disabled }));
|
|
174
|
-
})));
|
|
175
|
-
})))),
|
|
150
|
+
react_1.default.createElement(Table_styles_1.TableBody, null, tableElements.map((item) => (react_1.default.createElement(Table_styles_1.TableRow, { theme: resolvedTheme, config: tableConfig, key: `table_row_${item.id}`, hover: hover, isDisabled: item.disabled, active: selectedRow === item.id, selectable: selectable, onClick: !item.disabled
|
|
151
|
+
? () => handleRowClick(item.id)
|
|
152
|
+
: undefined }, tableProps.headers.map((header, index) => (react_1.default.createElement(Cell_1.Cell, { key: `cell_${header.name}_${item.id}`, header: header, moreActions: moreActions, item: item, theme: theme, selected: item.marked && index === 0, isDisabled: item.disabled }))))))))),
|
|
176
153
|
noResultsMessage && (react_1.default.createElement("div", { style: { padding: '8px 12px', textAlign: 'center' } }, noResultsMessage))))));
|
|
177
154
|
};
|
|
178
155
|
exports.Table = Table;
|
|
@@ -25,7 +25,8 @@ export const Filters = ({ theme, themeVariant = 'default', size = 'md', labels =
|
|
|
25
25
|
const resolvedTheme = resolvedThemeData.resolvedTheme;
|
|
26
26
|
const { componentsConfig } = resolvedThemeData;
|
|
27
27
|
const filterConfig = componentsConfig.filters;
|
|
28
|
-
console.log('
|
|
28
|
+
console.log('--------');
|
|
29
|
+
console.log('filter fullElements', fullElements);
|
|
29
30
|
// const normalizeDateValue = useCallback(
|
|
30
31
|
// (rawValue: any): number | undefined => {
|
|
31
32
|
// if (rawValue === undefined || rawValue === null || rawValue === '') {
|
|
@@ -41,7 +42,12 @@ export const Filters = ({ theme, themeVariant = 'default', size = 'md', labels =
|
|
|
41
42
|
// },
|
|
42
43
|
// [],
|
|
43
44
|
// )
|
|
44
|
-
const [source,
|
|
45
|
+
const [source, _setSource] = useState(fullElements || []);
|
|
46
|
+
const sourceRef = useRef(source);
|
|
47
|
+
const setSource = (data) => {
|
|
48
|
+
sourceRef.current = data;
|
|
49
|
+
_setSource(data);
|
|
50
|
+
};
|
|
45
51
|
useEffect(() => {
|
|
46
52
|
setSource(fullElements || []);
|
|
47
53
|
}, [fullElements]);
|
|
@@ -105,7 +111,7 @@ export const Filters = ({ theme, themeVariant = 'default', size = 'md', labels =
|
|
|
105
111
|
collapsible: true,
|
|
106
112
|
};
|
|
107
113
|
}
|
|
108
|
-
if (type === 'select') {
|
|
114
|
+
if (type === 'select' && h.name === 'joint_name') {
|
|
109
115
|
console.log('scope', values);
|
|
110
116
|
}
|
|
111
117
|
return {
|
|
@@ -324,13 +330,7 @@ export const Filters = ({ theme, themeVariant = 'default', size = 'md', labels =
|
|
|
324
330
|
handleSubmitFilters &&
|
|
325
331
|
handleSubmitFilters((source && source.length ? source : elements) || []);
|
|
326
332
|
}
|
|
327
|
-
}, [
|
|
328
|
-
externalClearSignal,
|
|
329
|
-
clearAll,
|
|
330
|
-
handleSubmitFilters,
|
|
331
|
-
source,
|
|
332
|
-
elements,
|
|
333
|
-
]);
|
|
333
|
+
}, [externalClearSignal, clearAll, handleSubmitFilters, source, elements]);
|
|
334
334
|
const mapListItems = useCallback((filterName, allowValues) => {
|
|
335
335
|
const sel = (activeFilters[filterName]?.value || []).map(String);
|
|
336
336
|
return (allowValues || []).map((v) => ({
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { resolveThemeWithComponentsConfig } from '../../config';
|
|
2
|
-
import React, { useCallback, useEffect, useMemo,
|
|
2
|
+
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
3
3
|
import { applySort, setSortParams } from './tableHelper';
|
|
4
4
|
import { wordbook } from '../../config';
|
|
5
5
|
import { ThemeProvider } from 'styled-components';
|
|
@@ -19,67 +19,55 @@ export const Table = ({ theme, themeVariant = 'default', headers, elements, hove
|
|
|
19
19
|
const resolvedTheme = resolvedThemeData.resolvedTheme;
|
|
20
20
|
const { componentsConfig } = resolvedThemeData;
|
|
21
21
|
const tableConfig = componentsConfig.table;
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
if (!initialElementsRef.current &&
|
|
25
|
-
Array.isArray(elements) &&
|
|
26
|
-
elements.length > 0) {
|
|
27
|
-
initialElementsRef.current = elements.slice();
|
|
28
|
-
}
|
|
29
|
-
setTableProps((prev) => ({
|
|
30
|
-
...prev,
|
|
31
|
-
elements: Array.isArray(elements) ? elements : [],
|
|
32
|
-
}));
|
|
33
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
34
|
-
}, [elements]);
|
|
35
|
-
const checkHeaders = () => {
|
|
36
|
-
const tableHeaders = [...headers];
|
|
22
|
+
const tableHeaders = useMemo(() => {
|
|
23
|
+
const nextHeaders = [...headers];
|
|
37
24
|
if (moreActions.length > 0) {
|
|
38
|
-
|
|
25
|
+
nextHeaders.push({
|
|
39
26
|
name: 'option',
|
|
40
27
|
valueSource: 'empty',
|
|
41
28
|
action: true,
|
|
42
29
|
size: 'sm',
|
|
43
30
|
});
|
|
44
31
|
}
|
|
45
|
-
return
|
|
46
|
-
};
|
|
32
|
+
return nextHeaders;
|
|
33
|
+
}, [headers, moreActions]);
|
|
34
|
+
const fullElements = useMemo(() => {
|
|
35
|
+
return Array.isArray(elements) ? elements : [];
|
|
36
|
+
}, [elements]);
|
|
47
37
|
const [tableProps, setTableProps] = useState({
|
|
48
|
-
elements:
|
|
49
|
-
sort
|
|
50
|
-
headers:
|
|
38
|
+
elements: fullElements,
|
|
39
|
+
sort,
|
|
40
|
+
headers: tableHeaders,
|
|
51
41
|
});
|
|
52
42
|
useEffect(() => {
|
|
53
|
-
setTableProps({
|
|
54
|
-
...
|
|
55
|
-
elements:
|
|
56
|
-
|
|
57
|
-
|
|
43
|
+
setTableProps((prev) => ({
|
|
44
|
+
...prev,
|
|
45
|
+
elements: fullElements,
|
|
46
|
+
headers: tableHeaders,
|
|
47
|
+
}));
|
|
48
|
+
}, [fullElements, tableHeaders]);
|
|
58
49
|
const [selectedRow, setSelectedRow] = useState('');
|
|
50
|
+
const [currentPage, setCurrentPage] = useState(1);
|
|
51
|
+
const [currentPageSize, setCurrentPageSize] = useState(pageSize || 10);
|
|
52
|
+
const [noResultsMessage, setNoResultsMessage] = useState(null);
|
|
53
|
+
const [filtersClearSignal, setFiltersClearSignal] = useState(0);
|
|
59
54
|
const handleRowClick = (id) => {
|
|
60
55
|
if (selectable) {
|
|
61
56
|
setSelectedRow(id);
|
|
62
57
|
}
|
|
63
|
-
onRowClick
|
|
58
|
+
onRowClick?.(id);
|
|
64
59
|
};
|
|
65
60
|
const handleHeaderCellClick = (targetValue, order) => {
|
|
66
|
-
if (sortable) {
|
|
67
|
-
|
|
68
|
-
setTableProps({
|
|
69
|
-
...tableProps,
|
|
70
|
-
elements: applySort(newSort, tableProps.elements),
|
|
71
|
-
sort: newSort,
|
|
72
|
-
});
|
|
61
|
+
if (!sortable) {
|
|
62
|
+
return;
|
|
73
63
|
}
|
|
64
|
+
const newSort = setSortParams(targetValue, order, tableProps.sort);
|
|
65
|
+
setTableProps((prev) => ({
|
|
66
|
+
...prev,
|
|
67
|
+
elements: applySort(newSort, prev.elements),
|
|
68
|
+
sort: newSort,
|
|
69
|
+
}));
|
|
74
70
|
};
|
|
75
|
-
const [currentPage, setCurrentPage] = useState(1);
|
|
76
|
-
const [currentPageSize, setCurrentPageSize] = useState(pageSize || 10);
|
|
77
|
-
const totalPages = Math.ceil(tableProps.elements.length / currentPageSize);
|
|
78
|
-
const paginatedElements = tableProps.elements.slice((currentPage - 1) * currentPageSize, currentPage * currentPageSize);
|
|
79
|
-
useEffect(() => {
|
|
80
|
-
setCurrentPage(1);
|
|
81
|
-
}, [elements, currentPageSize]);
|
|
82
|
-
const [noResultsMessage, setNoResultsMessage] = useState(null);
|
|
83
71
|
const handleApplyFilters = useCallback((filteredElements) => {
|
|
84
72
|
setTableProps((prev) => ({
|
|
85
73
|
...prev,
|
|
@@ -89,22 +77,21 @@ export const Table = ({ theme, themeVariant = 'default', headers, elements, hove
|
|
|
89
77
|
setNoResultsMessage(filteredElements && filteredElements.length === 0
|
|
90
78
|
? wordbook.table.filterEmptyState
|
|
91
79
|
: null);
|
|
92
|
-
}, [
|
|
93
|
-
const [filtersClearSignal, setFiltersClearSignal] = useState(0);
|
|
80
|
+
}, []);
|
|
94
81
|
const handleClearFilters = useCallback(() => {
|
|
95
82
|
setFiltersClearSignal((s) => s + 1);
|
|
96
|
-
const full = initialElementsRef.current && initialElementsRef.current.length > 0
|
|
97
|
-
? initialElementsRef.current
|
|
98
|
-
: Array.isArray(elements)
|
|
99
|
-
? elements
|
|
100
|
-
: [];
|
|
101
83
|
setTableProps((prev) => ({
|
|
102
84
|
...prev,
|
|
103
|
-
elements:
|
|
85
|
+
elements: fullElements.slice(),
|
|
104
86
|
}));
|
|
105
87
|
setCurrentPage(1);
|
|
106
88
|
setNoResultsMessage(null);
|
|
107
|
-
}, [
|
|
89
|
+
}, [fullElements]);
|
|
90
|
+
useEffect(() => {
|
|
91
|
+
setCurrentPage(1);
|
|
92
|
+
}, [fullElements, currentPageSize]);
|
|
93
|
+
const totalPages = Math.ceil(tableProps.elements.length / currentPageSize);
|
|
94
|
+
const paginatedElements = tableProps.elements.slice((currentPage - 1) * currentPageSize, currentPage * currentPageSize);
|
|
108
95
|
const tableElements = useMemo(() => {
|
|
109
96
|
if (pagination) {
|
|
110
97
|
return paginatedElements;
|
|
@@ -117,25 +104,15 @@ export const Table = ({ theme, themeVariant = 'default', headers, elements, hove
|
|
|
117
104
|
(filtrable || pagination) && (React.createElement(TableHeader, { theme: resolvedTheme, config: tableConfig, right: pagination && !filtrable },
|
|
118
105
|
React.createElement(React.Fragment, null,
|
|
119
106
|
filtrable && (React.createElement(HeaderSection, null,
|
|
120
|
-
React.createElement(Filters, { labels: filterLabels, headers: headers, elements:
|
|
121
|
-
initialElementsRef.current.length > 0
|
|
122
|
-
? initialElementsRef.current
|
|
123
|
-
: elements, fullElements: initialElementsRef.current &&
|
|
124
|
-
initialElementsRef.current.length > 0
|
|
125
|
-
? initialElementsRef.current
|
|
126
|
-
: elements, handleSubmitFilters: handleApplyFilters, externalClearSignal: filtersClearSignal, onClear: handleClearFilters, calendarLabels: calendarLabels, calendarLocaleLabels: calendarLocaleLabels }))),
|
|
107
|
+
React.createElement(Filters, { labels: filterLabels, headers: headers, elements: fullElements, fullElements: fullElements, handleSubmitFilters: handleApplyFilters, externalClearSignal: filtersClearSignal, onClear: handleClearFilters, calendarLabels: calendarLabels, calendarLocaleLabels: calendarLocaleLabels }))),
|
|
127
108
|
pagination && (React.createElement(HeaderSection, { right: true },
|
|
128
109
|
React.createElement(Pagination, { currentPage: currentPage, totalPages: totalPages, pageSize: currentPageSize, onPageChange: setCurrentPage, onPageSizeChange: setCurrentPageSize, label: paginationLabel?.label, availableValues: paginationCounters, zIndex: paginationZIndex })))))),
|
|
129
110
|
React.createElement(TableContentWrapper, { componentHeight: tableHeight },
|
|
130
111
|
React.createElement(TableContent, { theme: resolvedTheme, config: tableConfig, cellPadding: "0", cellSpacing: "0" },
|
|
131
112
|
React.createElement(TableHead, null,
|
|
132
113
|
React.createElement(TableHeaderRow, { theme: resolvedTheme, config: tableConfig }, tableProps.headers.map((header) => (React.createElement(HeaderCell, { key: `header_${header.name}`, header: header, sortable: sortable, handleSort: handleHeaderCellClick, sort: tableProps.sort, size: header.size || 'md' }))))),
|
|
133
|
-
React.createElement(TableBody, null, tableElements.map((item) => {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
: undefined }, tableProps.headers.map((header, index) => {
|
|
137
|
-
return (React.createElement(Cell, { key: `cell_${header.name}_${item.id}`, header: header, moreActions: moreActions, item: item, theme: theme, selected: item.marked && index === 0, isDisabled: item.disabled }));
|
|
138
|
-
})));
|
|
139
|
-
})))),
|
|
114
|
+
React.createElement(TableBody, null, tableElements.map((item) => (React.createElement(TableRow, { theme: resolvedTheme, config: tableConfig, key: `table_row_${item.id}`, hover: hover, isDisabled: item.disabled, active: selectedRow === item.id, selectable: selectable, onClick: !item.disabled
|
|
115
|
+
? () => handleRowClick(item.id)
|
|
116
|
+
: undefined }, tableProps.headers.map((header, index) => (React.createElement(Cell, { key: `cell_${header.name}_${item.id}`, header: header, moreActions: moreActions, item: item, theme: theme, selected: item.marked && index === 0, isDisabled: item.disabled }))))))))),
|
|
140
117
|
noResultsMessage && (React.createElement("div", { style: { padding: '8px 12px', textAlign: 'center' } }, noResultsMessage))))));
|
|
141
118
|
};
|