pixelize-design-library 1.1.33 → 1.1.35
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/App.js +1 -1
- package/dist/Components/KaTable/CustomHeader.d.ts +12 -1
- package/dist/Components/KaTable/CustomHeader.js +38 -75
- package/dist/Components/KaTable/KaTable.d.ts +1 -1
- package/dist/Components/KaTable/KaTable.js +48 -13
- package/dist/Components/KaTable/KaTableProps.d.ts +4 -3
- package/dist/Components/KaTable/SelectionHeader.js +4 -2
- package/dist/Components/KaTable/ka-table.css +3 -9
- package/dist/Components/KaTable/useMergedChildComponents.d.ts +13 -1
- package/dist/Components/KaTable/useMergedChildComponents.js +53 -28
- package/dist/Components/SideBar/SideBar.js +58 -40
- package/dist/Components/Table/Components/Pagination.d.ts +15 -0
- package/dist/Components/Table/Components/Pagination.js +42 -0
- package/dist/Components/Table/Components/TableBody.d.ts +12 -0
- package/dist/Components/Table/Components/TableBody.js +35 -0
- package/dist/Components/Table/Components/TableHeader.d.ts +18 -0
- package/dist/Components/Table/Components/TableHeader.js +115 -0
- package/dist/Components/Table/Components/TableLoading.d.ts +3 -0
- package/dist/Components/Table/Components/TableLoading.js +31 -0
- package/dist/Components/Table/Table.css +29 -0
- package/dist/Components/Table/Table.d.ts +1 -1
- package/dist/Components/Table/Table.js +231 -217
- package/dist/Components/Table/TableProps.d.ts +20 -17
- package/dist/Constants/Sidebar.d.ts +15 -0
- package/dist/Constants/Sidebar.js +18 -0
- package/dist/Layout.js +5 -1
- package/dist/Pages/KaTableExample.js +19 -2
- package/dist/Pages/katable.d.ts +3 -0
- package/dist/Pages/katable.js +194 -0
- package/dist/Pages/table.d.ts +2 -0
- package/dist/Pages/table.js +59 -0
- package/dist/Theme/fonts.d.ts +1 -0
- package/dist/Theme/fonts.js +8 -3
- package/dist/Utils/common.d.ts +7 -0
- package/dist/Utils/common.js +64 -0
- package/dist/Utils/table.d.ts +9 -0
- package/dist/Utils/table.js +64 -0
- package/dist/bootstrap.js +1 -2
- package/package.json +2 -1
- package/dist/Theme/Default/fonts.d.ts +0 -35
- package/dist/Theme/Default/fonts.js +0 -37
|
@@ -10,6 +10,29 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
};
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
13
36
|
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
14
37
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
15
38
|
if (ar || !(i in from)) {
|
|
@@ -23,44 +46,53 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
23
46
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
47
|
};
|
|
25
48
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
var react_1 =
|
|
49
|
+
var react_1 = __importStar(require("react"));
|
|
27
50
|
var react_2 = require("@chakra-ui/react");
|
|
28
51
|
var react_3 = require("@chakra-ui/react");
|
|
29
52
|
var react_4 = require("react");
|
|
30
|
-
var
|
|
53
|
+
var Pagination_1 = __importDefault(require("./Components/Pagination"));
|
|
54
|
+
var table_1 = require("../../Utils/table");
|
|
55
|
+
var TableHeader_1 = __importDefault(require("./Components/TableHeader"));
|
|
56
|
+
var TableBody_1 = __importDefault(require("./Components/TableBody"));
|
|
57
|
+
var useCustomTheme_1 = require("../../Theme/useCustomTheme");
|
|
58
|
+
var TableLoading_1 = __importDefault(require("./Components/TableLoading"));
|
|
59
|
+
// import "./Table.css";
|
|
60
|
+
var defaultPageSize = 5;
|
|
31
61
|
function Table(_a) {
|
|
32
|
-
var
|
|
33
|
-
var
|
|
34
|
-
var
|
|
35
|
-
var
|
|
36
|
-
var
|
|
62
|
+
var _b;
|
|
63
|
+
var data = _a.data, columns = _a.columns, handleExportChange = _a.handleExportChange, onSelection = _a.onSelection, exportOptions = _a.exportOptions, exportLabel = _a.exportLabel, isLoading = _a.isLoading, _c = _a.isVisiblity, isVisiblity = _c === void 0 ? true : _c, _d = _a.isCheckbox, isCheckbox = _d === void 0 ? false : _d, headerBgColor = _a.headerBgColor, freezedBgColor = _a.freezedBgColor, headerTextColor = _a.headerTextColor, freezedTextColor = _a.freezedTextColor, tableBorderColor = _a.tableBorderColor, _e = _a.noBorders, noBorders = _e === void 0 ? false : _e;
|
|
64
|
+
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
65
|
+
var _f = (0, react_4.useState)([]), selection = _f[0], setSelection = _f[1];
|
|
66
|
+
var _g = (0, react_4.useState)(0), currentPage = _g[0], setCurrentPage = _g[1];
|
|
67
|
+
var _h = (0, react_4.useState)(defaultPageSize), rowsPerPage = _h[0], setRowsPerPage = _h[1];
|
|
37
68
|
var _j = (0, react_4.useState)(false), isPopoverOpen = _j[0], setPopoverOpen = _j[1];
|
|
38
69
|
var _k = (0, react_4.useState)(null), activeHeader = _k[0], setActiveHeader = _k[1];
|
|
39
70
|
var _l = (0, react_4.useState)({}), searchTerms = _l[0], setSearchTerms = _l[1];
|
|
40
71
|
var _m = (0, react_4.useState)({}), searchOperation = _m[0], setSearchOperation = _m[1];
|
|
41
72
|
var _o = (0, react_4.useState)({}), betweenValues = _o[0], setBetweenValues = _o[1];
|
|
42
|
-
var _p = (0, react_4.useState)(
|
|
43
|
-
var _q = (0, react_4.useState)(headers.reduce(function (acc, curr) {
|
|
73
|
+
var _p = (0, react_4.useState)(columns.reduce(function (acc, curr) {
|
|
44
74
|
var _a;
|
|
45
75
|
return (__assign(__assign({}, acc), (_a = {}, _a[curr.label] = true, _a)));
|
|
46
|
-
}, {})), visibleColumns =
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
76
|
+
}, {})), visibleColumns = _p[0], setVisibleColumns = _p[1];
|
|
77
|
+
var _q = (0, react_4.useState)([]), columnWidths = _q[0], setColumnWidths = _q[1];
|
|
78
|
+
var headerRefs = (0, react_1.useRef)([]);
|
|
79
|
+
var _r = (0, react_4.useState)([]), columnsSort = _r[0], setColumnsSort = _r[1];
|
|
80
|
+
(0, react_1.useEffect)(function () {
|
|
81
|
+
// Measure widths after the component mounts
|
|
82
|
+
var widths = headerRefs.current.map(function (ref) { return (ref === null || ref === void 0 ? void 0 : ref.offsetWidth) || 0; });
|
|
83
|
+
setColumnWidths(widths);
|
|
84
|
+
}, [columns, visibleColumns]);
|
|
50
85
|
var handlePageSizeChange = function (event) {
|
|
51
|
-
|
|
86
|
+
var value = Number(event.target.value);
|
|
87
|
+
setRowsPerPage(value !== 0 ? value : defaultPageSize);
|
|
52
88
|
setCurrentPage(0);
|
|
53
89
|
};
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
if (a[sortField] > b[sortField])
|
|
61
|
-
return sortDirection === "asc" ? 1 : -1;
|
|
62
|
-
return 0;
|
|
63
|
-
});
|
|
90
|
+
// const sortedData = [...data].sort((a, b) => {
|
|
91
|
+
// if (!sortField) return 0;
|
|
92
|
+
// if (a[sortField] < b[sortField]) return sortDirection === "asc" ? -1 : 1;
|
|
93
|
+
// if (a[sortField] > b[sortField]) return sortDirection === "asc" ? 1 : -1;
|
|
94
|
+
// return 0;
|
|
95
|
+
// });
|
|
64
96
|
var getValue = function (header) {
|
|
65
97
|
var value = data.reduce(function (acc, item) {
|
|
66
98
|
var itemValue = item[header];
|
|
@@ -73,12 +105,23 @@ function Table(_a) {
|
|
|
73
105
|
}, []);
|
|
74
106
|
return value;
|
|
75
107
|
};
|
|
76
|
-
var handleSort = function (field, sort) {
|
|
108
|
+
var handleSort = (0, react_1.useCallback)(function (field, sort) {
|
|
77
109
|
if (!sort)
|
|
78
110
|
return;
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
111
|
+
var newSortState = __spreadArray([], columnsSort, true);
|
|
112
|
+
var existingIndex = newSortState.findIndex(function (sort) { return sort.column === field; });
|
|
113
|
+
if (existingIndex === -1) {
|
|
114
|
+
newSortState.push({
|
|
115
|
+
column: field,
|
|
116
|
+
direction: "asc", // Default to ascending when adding a column
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
var existingSort = newSortState[existingIndex];
|
|
121
|
+
existingSort.direction = sort;
|
|
122
|
+
}
|
|
123
|
+
setColumnsSort(newSortState);
|
|
124
|
+
}, [columnsSort]);
|
|
82
125
|
var handleSearchOperation = function (header, operation) {
|
|
83
126
|
setSearchOperation(function (prev) {
|
|
84
127
|
var _a;
|
|
@@ -86,8 +129,8 @@ function Table(_a) {
|
|
|
86
129
|
});
|
|
87
130
|
var list_ofdata = getValue(header);
|
|
88
131
|
if (operation === "between") {
|
|
89
|
-
var smallestValue_1 = String(Math.min.apply(
|
|
90
|
-
var highestValue_1 = String(Math.max.apply(
|
|
132
|
+
var smallestValue_1 = String(Math.min(Number.apply(void 0, list_ofdata)));
|
|
133
|
+
var highestValue_1 = String(Math.max(Number.apply(void 0, list_ofdata)));
|
|
91
134
|
setBetweenValues(function (prev) {
|
|
92
135
|
var _a;
|
|
93
136
|
return (__assign(__assign({}, prev), (_a = {}, _a[header] = { min: smallestValue_1, max: highestValue_1 }, _a)));
|
|
@@ -107,7 +150,7 @@ function Table(_a) {
|
|
|
107
150
|
else {
|
|
108
151
|
setSearchTerms(function (prev) {
|
|
109
152
|
var _a;
|
|
110
|
-
return (__assign(__assign({}, prev), (_a = {}, _a[header] = list_ofdata[0], _a)));
|
|
153
|
+
return (__assign(__assign({}, prev), (_a = {}, _a[header] = list_ofdata[0].toString(), _a)));
|
|
111
154
|
});
|
|
112
155
|
}
|
|
113
156
|
}
|
|
@@ -136,60 +179,75 @@ function Table(_a) {
|
|
|
136
179
|
var closePopover = function () {
|
|
137
180
|
setPopoverOpen(false);
|
|
138
181
|
};
|
|
139
|
-
var
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
var operation = searchOperation[key] || "notBlank";
|
|
144
|
-
switch (operation) {
|
|
145
|
-
case "contains":
|
|
146
|
-
return value.includes(term);
|
|
147
|
-
case "notContains":
|
|
148
|
-
return !value.includes(term);
|
|
149
|
-
case "equals":
|
|
150
|
-
return value === term;
|
|
151
|
-
case "notEquals":
|
|
152
|
-
return value !== term;
|
|
153
|
-
case "beginsWith":
|
|
154
|
-
return value.startsWith(term);
|
|
155
|
-
case "endsWith":
|
|
156
|
-
return value.endsWith(term);
|
|
157
|
-
case "greaterThan":
|
|
158
|
-
return Number(value) > Number(term);
|
|
159
|
-
case "greaterThanOrEqual":
|
|
160
|
-
return Number(value) >= Number(term);
|
|
161
|
-
case "lessThan":
|
|
162
|
-
return Number(value) < Number(term);
|
|
163
|
-
case "lessThanOrEqual":
|
|
164
|
-
return Number(value) <= Number(term);
|
|
165
|
-
case "between": {
|
|
166
|
-
var _a = betweenValues[key] || {}, min = _a.min, max = _a.max;
|
|
167
|
-
return Number(value) >= Number(min) && Number(value) <= Number(max);
|
|
168
|
-
}
|
|
169
|
-
case "blank":
|
|
170
|
-
return value === "";
|
|
171
|
-
case "notBlank":
|
|
172
|
-
return value !== "";
|
|
173
|
-
default:
|
|
174
|
-
return true;
|
|
182
|
+
var handleCheckbox = function (id) {
|
|
183
|
+
if (id === 0) {
|
|
184
|
+
if (selection.length === data.length) {
|
|
185
|
+
setSelection([]);
|
|
175
186
|
}
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
var pages = Math.ceil(filteredData.length / rowsPerPage);
|
|
179
|
-
var startRow = currentPage * rowsPerPage;
|
|
180
|
-
var endRow = startRow + rowsPerPage;
|
|
181
|
-
var getFieldType = function (header) {
|
|
182
|
-
for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {
|
|
183
|
-
var row = data_1[_i];
|
|
184
|
-
if (row[header] !== null) {
|
|
185
|
-
return typeof row[header];
|
|
187
|
+
else {
|
|
188
|
+
setSelection(data.map(function (item) { return item.id; }));
|
|
186
189
|
}
|
|
187
190
|
}
|
|
188
|
-
|
|
191
|
+
else if (selection.includes(id)) {
|
|
192
|
+
setSelection(selection.filter(function (item) { return item !== id; }));
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
setSelection(__spreadArray(__spreadArray([], selection, true), [id], false));
|
|
196
|
+
}
|
|
189
197
|
};
|
|
198
|
+
(0, react_1.useEffect)(function () {
|
|
199
|
+
onSelection && onSelection(selection);
|
|
200
|
+
}, [selection, onSelection]);
|
|
201
|
+
// const filteredData = sortedData.filter((item) => {
|
|
202
|
+
// return Object.keys(searchTerms).every((key) => {
|
|
203
|
+
// const term = String(searchTerms[key]).toLowerCase();
|
|
204
|
+
// const value = String(item[key]).toLowerCase();
|
|
205
|
+
// const operation = searchOperation[key] || "notBlank";
|
|
206
|
+
// switch (operation) {
|
|
207
|
+
// case "contains":
|
|
208
|
+
// return value.includes(term);
|
|
209
|
+
// case "notContains":
|
|
210
|
+
// return !value.includes(term);
|
|
211
|
+
// case "equals":
|
|
212
|
+
// return value === term;
|
|
213
|
+
// case "notEquals":
|
|
214
|
+
// return value !== term;
|
|
215
|
+
// case "beginsWith":
|
|
216
|
+
// return value.startsWith(term);
|
|
217
|
+
// case "endsWith":
|
|
218
|
+
// return value.endsWith(term);
|
|
219
|
+
// case "greaterThan":
|
|
220
|
+
// return Number(value) > Number(term);
|
|
221
|
+
// case "greaterThanOrEqual":
|
|
222
|
+
// return Number(value) >= Number(term);
|
|
223
|
+
// case "lessThan":
|
|
224
|
+
// return Number(value) < Number(term);
|
|
225
|
+
// case "lessThanOrEqual":
|
|
226
|
+
// return Number(value) <= Number(term);
|
|
227
|
+
// case "between": {
|
|
228
|
+
// const { min, max } = betweenValues[key] || {};
|
|
229
|
+
// return Number(value) >= Number(min) && Number(value) <= Number(max);
|
|
230
|
+
// }
|
|
231
|
+
// case "blank":
|
|
232
|
+
// return value === "";
|
|
233
|
+
// case "notBlank":
|
|
234
|
+
// return value !== "";
|
|
235
|
+
// default:
|
|
236
|
+
// return true;
|
|
237
|
+
// }
|
|
238
|
+
// });
|
|
239
|
+
// });
|
|
240
|
+
var pages = Math.ceil(data.length / rowsPerPage);
|
|
241
|
+
var startRow = currentPage * rowsPerPage;
|
|
242
|
+
var endRow = startRow + rowsPerPage;
|
|
243
|
+
// const hasSelection = selection.length > 0;
|
|
244
|
+
// const indeterminate = hasSelection && selection.length < data.length;
|
|
245
|
+
var tableData = (0, react_1.useMemo)(function () {
|
|
246
|
+
return (0, table_1.SortMultiColumnData)(data, columnsSort);
|
|
247
|
+
}, [data, columnsSort]);
|
|
190
248
|
var searchFeatures = function (header) {
|
|
191
249
|
var _a, _b;
|
|
192
|
-
var fieldType = getFieldType(header);
|
|
250
|
+
var fieldType = (0, table_1.getFieldType)(header, data);
|
|
193
251
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
194
252
|
react_1.default.createElement(react_2.Select, { value: searchOperation[header] || "notBlank", onChange: function (e) { return handleSearchOperation(header, e.target.value); }, style: { background: "#3182ce", color: "white" } },
|
|
195
253
|
react_1.default.createElement("option", { value: "equals" }, "Equals"),
|
|
@@ -245,145 +303,101 @@ function Table(_a) {
|
|
|
245
303
|
return (__assign(__assign({}, prev), (_a = {}, _a[header] = !prev[header], _a)));
|
|
246
304
|
});
|
|
247
305
|
};
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
306
|
+
// const handleMouseEnter = (index: number) => setHoveredHeaderIndex(index);
|
|
307
|
+
// const handleMouseLeave = () => {
|
|
308
|
+
// setHoveredHeaderIndex(null);
|
|
309
|
+
// closePopover();
|
|
310
|
+
// };
|
|
311
|
+
// const removeSearchOptionTerm = (key: any) => {
|
|
312
|
+
// const newSearchTerms = { ...searchTerms };
|
|
313
|
+
// const newSearchOperation = { ...searchOperation };
|
|
314
|
+
// const newBetweenValues = { ...betweenValues };
|
|
315
|
+
// delete newSearchTerms[key];
|
|
316
|
+
// delete newSearchOperation[key];
|
|
317
|
+
// delete newBetweenValues[key];
|
|
318
|
+
// setSearchTerms(newSearchTerms);
|
|
319
|
+
// setSearchOperation(newSearchOperation);
|
|
320
|
+
// setBetweenValues(newBetweenValues);
|
|
321
|
+
// };
|
|
322
|
+
// const SearchOptions = () => {
|
|
323
|
+
// return (
|
|
324
|
+
// <Wrap>
|
|
325
|
+
// {searchOperation &&
|
|
326
|
+
// Object.keys(searchOperation).map((key, index) => {
|
|
327
|
+
// return (
|
|
328
|
+
// <Tag
|
|
329
|
+
// size="sm"
|
|
330
|
+
// key={index}
|
|
331
|
+
// borderRadius="full"
|
|
332
|
+
// variant="solid"
|
|
333
|
+
// colorScheme="gray"
|
|
334
|
+
// m={1}
|
|
335
|
+
// >
|
|
336
|
+
// <Box display="flex" alignItems="center">
|
|
337
|
+
// <TagLabel>{key}</TagLabel>
|
|
338
|
+
// <TagLabel mx={2}>{searchOperation[key]}</TagLabel>
|
|
339
|
+
// {searchOperation[key] === "between" ? (
|
|
340
|
+
// <TagLabel>
|
|
341
|
+
// {betweenValues[key]?.min} - {betweenValues[key]?.max}
|
|
342
|
+
// </TagLabel>
|
|
343
|
+
// ) : (
|
|
344
|
+
// <TagLabel>{searchTerms[key]}</TagLabel>
|
|
345
|
+
// )}
|
|
346
|
+
// </Box>
|
|
347
|
+
// <TagCloseButton onClick={() => removeSearchOptionTerm(key)} />
|
|
348
|
+
// </Tag>
|
|
349
|
+
// );
|
|
350
|
+
// })}
|
|
351
|
+
// </Wrap>
|
|
352
|
+
// );
|
|
353
|
+
// };
|
|
354
|
+
// const Export = ({
|
|
355
|
+
// exportOptions,
|
|
356
|
+
// }: {
|
|
357
|
+
// exportOptions: TableProps["exportOptions"];
|
|
358
|
+
// }) => {
|
|
359
|
+
// return (
|
|
360
|
+
// <Select
|
|
361
|
+
// placeholder="Exports"
|
|
362
|
+
// width={160}
|
|
363
|
+
// onChange={(e) => {
|
|
364
|
+
// handleExportChange && handleExportChange(e.target.value);
|
|
365
|
+
// }}
|
|
366
|
+
// value={exportLabel}
|
|
367
|
+
// key={exportLabel}
|
|
368
|
+
// >
|
|
369
|
+
// {exportOptions?.map((option) => (
|
|
370
|
+
// <option key={option.id} value={option.id}>
|
|
371
|
+
// {option.label}
|
|
372
|
+
// </option>
|
|
373
|
+
// ))}
|
|
374
|
+
// </Select>
|
|
375
|
+
// );
|
|
376
|
+
// };
|
|
377
|
+
var RenderTable = function (_a) {
|
|
378
|
+
var _b, _c, _d;
|
|
379
|
+
var columns = _a.columns;
|
|
380
|
+
return (react_1.default.createElement(react_3.Table, { variant: "simple", size: "sm", overflowX: "scroll", minW: "100%", className: "sticky-columns" },
|
|
381
|
+
react_1.default.createElement(react_3.Thead, null,
|
|
382
|
+
react_1.default.createElement(TableHeader_1.default, { columns: columns, isCheckbox: isCheckbox, headerBgColor: headerBgColor !== null && headerBgColor !== void 0 ? headerBgColor : theme.colors.backgroundColor.muted, headerTextColor: headerTextColor !== null && headerTextColor !== void 0 ? headerTextColor : (_b = theme.colors) === null || _b === void 0 ? void 0 : _b.gray[600], freezedBgColor: freezedBgColor !== null && freezedBgColor !== void 0 ? freezedBgColor : theme.colors.backgroundColor.secondary, freezedTextColor: freezedTextColor !== null && freezedTextColor !== void 0 ? freezedTextColor : (_c = theme.colors) === null || _c === void 0 ? void 0 : _c.gray[600], visibleColumns: visibleColumns, handleSort: handleSort, activeHeader: activeHeader, isPopoverOpen: isPopoverOpen, closePopover: closePopover, searchFeatures: searchFeatures, handleHeaderClick: handleHeaderClick, headerRefs: headerRefs, columnWidths: columnWidths, columnsSort: columnsSort, noBorders: noBorders, handleCheckbox: handleCheckbox, checked: selection.length === data.length
|
|
383
|
+
? true
|
|
384
|
+
: selection.length === 0
|
|
385
|
+
? false
|
|
386
|
+
: "indeterminate" })),
|
|
387
|
+
react_1.default.createElement(react_3.Tbody, null,
|
|
388
|
+
react_1.default.createElement(TableBody_1.default, { data: tableData, columns: columns, startRow: startRow, endRow: endRow, visibleColumns: visibleColumns, isCheckbox: isCheckbox, columnWidths: columnWidths, noBorders: noBorders, freezedBgColor: freezedBgColor !== null && freezedBgColor !== void 0 ? freezedBgColor : theme.colors.backgroundColor.secondary, freezedTextColor: freezedTextColor !== null && freezedTextColor !== void 0 ? freezedTextColor : (_d = theme.colors) === null || _d === void 0 ? void 0 : _d.gray[600], handleCheckbox: handleCheckbox, selections: selection }))));
|
|
272
389
|
};
|
|
273
|
-
|
|
274
|
-
react_1.default.createElement(
|
|
275
|
-
|
|
276
|
-
var _a, _b;
|
|
277
|
-
return (react_1.default.createElement(react_2.Tag, { size: "sm", key: index, borderRadius: "full", variant: "solid", colorScheme: "gray", m: 1 },
|
|
278
|
-
react_1.default.createElement(react_2.Box, { display: "flex", alignItems: "center" },
|
|
279
|
-
react_1.default.createElement(react_2.TagLabel, null, key),
|
|
280
|
-
react_1.default.createElement(react_2.TagLabel, { mx: 2 }, searchOperation[key]),
|
|
281
|
-
searchOperation[key] === "between" ? (react_1.default.createElement(react_2.TagLabel, null, (_a = betweenValues[key]) === null || _a === void 0 ? void 0 :
|
|
282
|
-
_a.min,
|
|
283
|
-
" - ", (_b = betweenValues[key]) === null || _b === void 0 ? void 0 :
|
|
284
|
-
_b.max)) : (react_1.default.createElement(react_2.TagLabel, null, searchTerms[key]))),
|
|
285
|
-
react_1.default.createElement(react_2.TagCloseButton, { onClick: function () { return removeSearchOptionTerm(key); } })));
|
|
286
|
-
})),
|
|
287
|
-
react_1.default.createElement(react_2.Box, { display: "flex", justifyContent: "flex-end" }, exportOptions && exportOptions.length > 0 && (react_1.default.createElement(react_2.Select, { placeholder: "Exports", width: 160, onChange: function (e) {
|
|
288
|
-
handleExportChange && handleExportChange(e.target.value);
|
|
289
|
-
}, value: exportLabel, key: exportLabel }, exportOptions.map(function (option) { return (react_1.default.createElement("option", { key: option.id, value: option.id }, option.label)); })))),
|
|
390
|
+
if (isLoading)
|
|
391
|
+
return react_1.default.createElement(TableLoading_1.default, null);
|
|
392
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
290
393
|
react_1.default.createElement("br", null),
|
|
291
|
-
react_1.default.createElement(react_2.TableContainer,
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
color: tableHeaderColor,
|
|
300
|
-
fontSize: "medium",
|
|
301
|
-
fontWeight: 600,
|
|
302
|
-
position: isFrozen ? "sticky" : undefined,
|
|
303
|
-
left: isFrozen
|
|
304
|
-
? "".concat(leftOffset === 0 ? leftOffset : leftOffset - 4, "px")
|
|
305
|
-
: undefined,
|
|
306
|
-
zIndex: isFrozen ? 2 : 1,
|
|
307
|
-
background: tableHeaderBgColor,
|
|
308
|
-
textAlign: "center",
|
|
309
|
-
width: "300px",
|
|
310
|
-
}, onMouseEnter: function () { return handleMouseEnter(index); }, onMouseLeave: handleMouseLeave },
|
|
311
|
-
react_1.default.createElement(react_2.Button, { onClick: function () {
|
|
312
|
-
return handleSort(header.label, header.sort ? header.sort : false);
|
|
313
|
-
}, style: {
|
|
314
|
-
textTransform: "capitalize",
|
|
315
|
-
color: "white",
|
|
316
|
-
background: "none",
|
|
317
|
-
paddingRight: "0px",
|
|
318
|
-
} },
|
|
319
|
-
header.label,
|
|
320
|
-
react_1.default.createElement("span", { style: { width: "20px" } }, sortField === header.label &&
|
|
321
|
-
(sortDirection === "asc" ? (react_1.default.createElement(icons_1.ArrowUpIcon, { w: 15, h: 15 })) : (react_1.default.createElement(icons_1.ArrowDownIcon, { w: 15, h: 15 }))))),
|
|
322
|
-
react_1.default.createElement("div", { style: { display: "inline-block", width: "10px" } },
|
|
323
|
-
react_1.default.createElement(react_2.Popover, { isOpen: activeHeader === header.label &&
|
|
324
|
-
isPopoverOpen &&
|
|
325
|
-
header.search, onClose: closePopover, placement: "bottom-start", closeOnBlur: false },
|
|
326
|
-
react_1.default.createElement(react_2.PopoverTrigger, null,
|
|
327
|
-
react_1.default.createElement("span", null,
|
|
328
|
-
react_1.default.createElement(icons_1.HamburgerIcon, { w: 15, h: 15, onClick: function () {
|
|
329
|
-
return handleHeaderClick(header.label, header.search ? header.search : false);
|
|
330
|
-
}, style: {
|
|
331
|
-
cursor: "pointer",
|
|
332
|
-
display: hoveredHeaderIndex === index &&
|
|
333
|
-
header.search
|
|
334
|
-
? "inline"
|
|
335
|
-
: "none",
|
|
336
|
-
} }))),
|
|
337
|
-
react_1.default.createElement(react_2.PopoverContent, { width: 200, zIndex: 3 },
|
|
338
|
-
react_1.default.createElement(react_2.PopoverBody, { background: "#deeefd" }, searchFeatures(header.label))))))));
|
|
339
|
-
}))),
|
|
340
|
-
react_1.default.createElement(react_3.Tbody, null, filteredData.slice(startRow, endRow).map(function (row, index) { return (react_1.default.createElement(react_3.Tr, { key: index + 1, style: {
|
|
341
|
-
backgroundColor: index % 2 === 0 ? "#f7f7f7" : "white",
|
|
342
|
-
}, border: "none" }, headers.map(function (header, headerIndex) {
|
|
343
|
-
var isFrozen = header.columnFreeze;
|
|
344
|
-
var leftOffset = calculateLeftOffset(headers, headerIndex);
|
|
345
|
-
return (visibleColumns[header.label] && (react_1.default.createElement(react_3.Td, { key: headerIndex + 1, style: {
|
|
346
|
-
border: "none",
|
|
347
|
-
textAlign: "center",
|
|
348
|
-
position: isFrozen ? "sticky" : undefined,
|
|
349
|
-
left: isFrozen
|
|
350
|
-
? "".concat(leftOffset === 0 ? leftOffset : leftOffset - 4, "px")
|
|
351
|
-
: undefined,
|
|
352
|
-
zIndex: isFrozen ? 1 : 0,
|
|
353
|
-
backgroundColor: index % 2 === 0 ? "#f7f7f7" : "white",
|
|
354
|
-
// overflow: "hidden",
|
|
355
|
-
textOverflow: "ellipsis",
|
|
356
|
-
} }, typeof header.accessor_function === "function" &&
|
|
357
|
-
header.accessor_key in row
|
|
358
|
-
? header.accessor_function(row[header.accessor_key])
|
|
359
|
-
: row[header.accessor_key])));
|
|
360
|
-
}))); })))),
|
|
361
|
-
react_1.default.createElement(react_2.Flex, { justify: "flex-end", align: "center", mt: 4 },
|
|
362
|
-
isVisiblity && (react_1.default.createElement(react_2.Flex, { mr: 4 },
|
|
363
|
-
react_1.default.createElement(react_2.Menu, null,
|
|
364
|
-
react_1.default.createElement(react_2.MenuButton, { as: react_2.Button, rightIcon: react_1.default.createElement(icons_1.ChevronDownIcon, null), colorScheme: "blue", variant: "outline" }, "Visiblity"),
|
|
365
|
-
react_1.default.createElement(react_2.MenuList, { height: 150, overflow: "scroll", zIndex: "2" }, headers.map(function (header, index) { return (react_1.default.createElement(react_2.MenuItem, { key: index },
|
|
366
|
-
react_1.default.createElement(react_2.Checkbox, { isChecked: visibleColumns[header.label], onChange: function () {
|
|
367
|
-
return handleColumnVisibilityChange(header.label);
|
|
368
|
-
} }, header.label))); }))))),
|
|
369
|
-
react_1.default.createElement(react_2.Text, { mr: 4 },
|
|
370
|
-
startRow + 1,
|
|
371
|
-
" to ",
|
|
372
|
-
endRow,
|
|
373
|
-
" of ",
|
|
374
|
-
filteredData.length),
|
|
375
|
-
react_1.default.createElement(react_2.Select, { onChange: handlePageSizeChange, value: rowsPerPage, mr: 4, width: 20 }, pageSizeOptions.map(function (size, index) { return (react_1.default.createElement("option", { key: index, value: size }, size)); })),
|
|
376
|
-
react_1.default.createElement(react_2.Flex, null,
|
|
377
|
-
react_1.default.createElement(react_2.Button, { mx: 1, disabled: currentPage === 0, onClick: function () { return setCurrentPage(0); } }, "<<"),
|
|
378
|
-
react_1.default.createElement(react_2.Button, { mx: 1, disabled: currentPage === 0, onClick: function () { return currentPage > 0 && setCurrentPage(currentPage - 1); } }, "<"),
|
|
379
|
-
react_1.default.createElement(react_2.Text, { mx: 1, mt: 2 },
|
|
380
|
-
"Page ",
|
|
381
|
-
currentPage + 1,
|
|
382
|
-
" of ",
|
|
383
|
-
pages),
|
|
384
|
-
react_1.default.createElement(react_2.Button, { mx: 1, disabled: currentPage > pages, onClick: function () {
|
|
385
|
-
return currentPage < pages - 1 && setCurrentPage(currentPage + 1);
|
|
386
|
-
} }, ">"),
|
|
387
|
-
react_1.default.createElement(react_2.Button, { mx: 1, disabled: currentPage >= pages - 1, onClick: function () { return setCurrentPage(pages - 1); } }, ">>")))));
|
|
394
|
+
react_1.default.createElement(react_2.TableContainer, { sx: {
|
|
395
|
+
borderRadius: "10px 0 0 10px",
|
|
396
|
+
borderWidth: "0px 0px 0px 5px",
|
|
397
|
+
borderColor: tableBorderColor !== null && tableBorderColor !== void 0 ? tableBorderColor : (_b = theme.colors) === null || _b === void 0 ? void 0 : _b.gray[500],
|
|
398
|
+
boxShadow: theme.shadows.lg,
|
|
399
|
+
} },
|
|
400
|
+
react_1.default.createElement(RenderTable, { columns: columns })),
|
|
401
|
+
react_1.default.createElement(Pagination_1.default, { columns: columns, currentPage: currentPage, setCurrentPage: setCurrentPage, rowsPerPage: rowsPerPage, pages: pages, paginationText: "".concat(startRow + 1, " to ").concat(endRow, " of ").concat(data.length), handlePageSizeChange: handlePageSizeChange, dataLength: data.length, visibleColumns: visibleColumns, handleColumnVisibilityChange: handleColumnVisibilityChange, isVisiblity: true })));
|
|
388
402
|
}
|
|
389
403
|
exports.default = Table;
|
|
@@ -1,34 +1,37 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
2
|
export type TableProps = {
|
|
3
3
|
data: DataObject[];
|
|
4
|
-
|
|
5
|
-
tableHeaderBgColor?: string;
|
|
6
|
-
tableHeaderColor?: string;
|
|
4
|
+
columns: TableHeaderProps[];
|
|
7
5
|
handleExportChange?: (value: string) => void | undefined;
|
|
8
6
|
exportOptions?: ExportOption[];
|
|
9
7
|
exportLabel?: string;
|
|
10
8
|
isLoading?: boolean;
|
|
11
|
-
loadingType?: "skeleton" | "spinner";
|
|
12
|
-
loadingContaxt?: ReactNode;
|
|
13
|
-
loadingBoxStyle?: React.CSSProperties;
|
|
14
9
|
isVisiblity?: boolean;
|
|
10
|
+
isCheckbox?: boolean;
|
|
11
|
+
headerBgColor?: string;
|
|
12
|
+
freezedBgColor?: string;
|
|
13
|
+
headerTextColor?: string;
|
|
14
|
+
freezedTextColor?: string;
|
|
15
|
+
tableBorderColor?: string;
|
|
16
|
+
noBorders?: boolean;
|
|
17
|
+
onSelection?: (selected: (string | number)[]) => void;
|
|
15
18
|
};
|
|
16
19
|
export type DataObject = {
|
|
17
|
-
id: number;
|
|
18
|
-
name: string;
|
|
19
|
-
email: string;
|
|
20
|
-
role: string;
|
|
21
20
|
[key: string]: string | number;
|
|
22
21
|
};
|
|
23
|
-
export type
|
|
22
|
+
export type TableHeaderProps = {
|
|
24
23
|
label: string;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
id: string;
|
|
25
|
+
isSort?: boolean;
|
|
26
|
+
isSearch?: boolean;
|
|
27
|
+
isFreeze?: boolean;
|
|
28
|
+
node?: (data: DataObject) => JSX.Element | string | number | undefined;
|
|
30
29
|
};
|
|
31
30
|
export type ExportOption = {
|
|
32
31
|
label: string;
|
|
33
32
|
id: string;
|
|
34
33
|
};
|
|
34
|
+
export type ColumnSortingProps = {
|
|
35
|
+
column: string;
|
|
36
|
+
direction: "asc" | "desc" | "none";
|
|
37
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const FlexCss: {
|
|
2
|
+
"&::-webkit-scrollbar": {
|
|
3
|
+
width: string;
|
|
4
|
+
};
|
|
5
|
+
"&::-webkit-scrollbar-track": {
|
|
6
|
+
background: string;
|
|
7
|
+
};
|
|
8
|
+
"&::-webkit-scrollbar-thumb": {
|
|
9
|
+
background: string;
|
|
10
|
+
transition: string;
|
|
11
|
+
};
|
|
12
|
+
"&:hover::-webkit-scrollbar-thumb": {
|
|
13
|
+
background: string;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FlexCss = void 0;
|
|
4
|
+
exports.FlexCss = {
|
|
5
|
+
"&::-webkit-scrollbar": {
|
|
6
|
+
width: "3px",
|
|
7
|
+
},
|
|
8
|
+
"&::-webkit-scrollbar-track": {
|
|
9
|
+
background: "transparent",
|
|
10
|
+
},
|
|
11
|
+
"&::-webkit-scrollbar-thumb": {
|
|
12
|
+
background: "transparent",
|
|
13
|
+
transition: "background 0.5s",
|
|
14
|
+
},
|
|
15
|
+
"&:hover::-webkit-scrollbar-thumb": {
|
|
16
|
+
background: "#888",
|
|
17
|
+
},
|
|
18
|
+
};
|
package/dist/Layout.js
CHANGED
|
@@ -58,6 +58,7 @@ var toster_1 = __importDefault(require("./Pages/toster"));
|
|
|
58
58
|
var input_1 = __importDefault(require("./Pages/input"));
|
|
59
59
|
var KaTableExample_1 = __importDefault(require("./Pages/KaTableExample"));
|
|
60
60
|
var alertdialog_1 = __importDefault(require("./Pages/alertdialog"));
|
|
61
|
+
var table_1 = require("./Pages/table");
|
|
61
62
|
var Layout = function () {
|
|
62
63
|
var _a = (0, react_2.useState)(window.location.pathname), currentPath = _a[0], setCurrentPath = _a[1];
|
|
63
64
|
var navigate = function (path) {
|
|
@@ -135,6 +136,8 @@ var Layout = function () {
|
|
|
135
136
|
return react_2.default.createElement(toster_1.default, null);
|
|
136
137
|
case "/input":
|
|
137
138
|
return react_2.default.createElement(input_1.default, null);
|
|
139
|
+
case "/table":
|
|
140
|
+
return react_2.default.createElement(table_1.TableExample, null);
|
|
138
141
|
case "/":
|
|
139
142
|
default:
|
|
140
143
|
}
|
|
@@ -171,7 +174,8 @@ var Layout = function () {
|
|
|
171
174
|
react_2.default.createElement(react_1.Button, { onClick: function () { return navigate("/modal"); } }, "Modal"),
|
|
172
175
|
react_2.default.createElement(react_1.Button, { onClick: function () { return navigate("/checkbox"); } }, "Checkbox"),
|
|
173
176
|
react_2.default.createElement(react_1.Button, { onClick: function () { return navigate("/toster"); } }, "Toster"),
|
|
174
|
-
react_2.default.createElement(react_1.Button, { onClick: function () { return navigate("/input"); } }, "Input")
|
|
177
|
+
react_2.default.createElement(react_1.Button, { onClick: function () { return navigate("/input"); } }, "Input"),
|
|
178
|
+
react_2.default.createElement(react_1.Button, { onClick: function () { return navigate("/table"); } }, "Table")),
|
|
175
179
|
react_2.default.createElement("br", null),
|
|
176
180
|
react_2.default.createElement("br", null),
|
|
177
181
|
renderPage()));
|